ZGlmZiAtLWdpdCBhL3Bva3kvLmdpdGlnbm9yZSBiL3Bva3kvLmdpdGlnbm9yZQppbmRleCBhZDFjYjgzLi42ZGRlNTQwIDEwMDY0NAotLS0gYS9wb2t5Ly5naXRpZ25vcmUKKysrIGIvcG9reS8uZ2l0aWdub3JlCkBAIC04LDYgKzgsNyBAQAogc2NyaXB0cy9vZS1naXQtcHJveHktc29ja3MKIHNvdXJjZXMvCiBtZXRhLSovCitidWlsZHRvb2xzLwogIW1ldGEtc2tlbGV0b24KICFtZXRhLXNlbGZ0ZXN0CiBob2ItaW1hZ2UtKi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9NRU1PUklBTSBiL3Bva3kvTUVNT1JJQU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzY2U0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvTUVNT1JJQU0KQEAgLTAsMCArMSw1IEBACitTb21lIHByb2plY3QgY29udHJpYnV0b3JzIHdobyBhcmUgc2FkbHkgbm8gbG9uZ2VyIHdpdGggdXM6CisKK0dyZWcgR2lsYmVydCAodHJla2UpIC0gQWhlYWQgb2YgaGlzIHRpbWUgd2l0aCBsaWNlbnNpbmcKK1Rob21hcyBXb29kICh0aG9zKSAtIENyZWF0b3Igb2YgdGhlIG9yaWdpbmFsIHNhdG8KK1Njb3R0IFJpZmVuYmFyayAoc2NvdHRyaWYpIC0gT3VyIGxvbmcgc3RhbmRpbmcgdGVjaHdyaXRlciB3aG9zZSB3b3JkcyBsaXZlIG9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UKaW5kZXggNjZkMDhmOC4uNmM3MzcxMCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMjYsNyArMjYsNyBAQAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6CiAgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycwppbmRleCBhODg0ZGMxLi4xNDlmMWIxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKQEAgLTUyLDcgKzUyLDkgQEAKIAogICAgICMgTmVlZCB0byByZS1ydW4gbG9nZ2VyX2NyZWF0ZSB3aXRoIGNvbG9yIGFyZ3VtZW50CiAgICAgIyAod2lsbCBiZSB0aGUgc2FtZSBsb2dnZXIgc2luY2UgaXQgaGFzIHRoZSBzYW1lIG5hbWUpCi0gICAgYmIubXNnLmxvZ2dlcl9jcmVhdGUoJ2JpdGJha2UtbGF5ZXJzJywgb3V0cHV0PXN5cy5zdGRvdXQsIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yKQorICAgIGJiLm1zZy5sb2dnZXJfY3JlYXRlKCdiaXRiYWtlLWxheWVycycsIG91dHB1dD1zeXMuc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPWxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQogCiAgICAgcGx1Z2lucyA9IFtdCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlciBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKaW5kZXggMWU2NDFlOC4uOTdjYzBmZCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgorKysgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCkBAIC02NSw3ICs2NSw2IEBACiAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKICAgICBjb25sb2dmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihsb2dmaWxlbmFtZSkKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlbG9nKQogICAgIGNvbnNvbGVsb2cuc2V0Rm9ybWF0dGVyKGNvbmxvZ2Zvcm1hdCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQogCkBAIC00MTQsNyArNDEzLDcgQEAKIAogICAgIGRlZiBoYW5kbGVfd29ya2VyZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi53b3JrZXJkYXRhID0gcGlja2xlLmxvYWRzKGRhdGEpCi0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGRlYnVnIl0KKyAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGxldmVsIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0dmVyYm9zZSJdCiAgICAgICAgIGJiLm1zZy5sb2dnZXJWZXJib3NlTG9ncyA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdHZlcmJvc2Vsb2dzIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0ZG9tYWluIl0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlcgppbmRleCBjMzQ3MmRmLi42YjkwZWUxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC04LDEyICs4LDEzIEBACiAjCiAKIEhFTFA9IgotVXNhZ2U6IHNvdXJjZSB0b2FzdGVyIHN0YXJ0fHN0b3AgW3dlYnBvcnQ9PGFkZHJlc3M6cG9ydD5dIFtub3dlYl0gW25vYnVpbGRdIFt0b2FzdGVyZGlyXQorVXNhZ2UgMTogc291cmNlIHRvYXN0ZXIgc3RhcnR8c3RvcCBbd2VicG9ydD08YWRkcmVzczpwb3J0Pl0gW25vd2ViXSBbbm9idWlsZF0gW3RvYXN0ZXJkaXJdCiAgICAgT3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAgICBbbm9idWlsZF0gU2V0dXAgdGhlIGVudmlyb25tZW50IGZvciBjYXB0dXJpbmcgYnVpbGRzIHdpdGggdG9hc3RlciBidXQgZGlzYWJsZSBtYW5hZ2VkIGJ1aWxkcwogICAgICAgICBbbm93ZWJdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRvbid0IHN0YXJ0IHRoZSB3ZWIgc2VydmVyCiAgICAgICAgIFt3ZWJwb3J0XSBTZXQgdGhlIGRldmVsb3BtZW50IHNlcnZlciAoZGVmYXVsdDogbG9jYWxob3N0OjgwMDApCiAgICAgICAgIFt0b2FzdGVyZGlyXSBTZXQgYWJzb2x1dGUgcGF0aCB0byBiZSB1c2VkIGFzIFRPQVNURVJfRElSIChkZWZhdWx0OiBCVUlMRERJUi8uLi8pCitVc2FnZSAyOiBzb3VyY2UgdG9hc3RlciBtYW5hZ2UgW2NyZWF0ZXN1cGVydXNlcnxsc3VwZGF0ZXN8bWlncmF0ZXxtYWtlbWlncmF0aW9uc3xjaGVja3NldHRpbmdzfGNvbGxlY3RzdGF0aWN8Li4uXQogIgogCiBjdXN0b21fZXh0ZW50aW9uKCkKQEAgLTIwOCwxMyArMjA5LDIxIEBACiAgICAgdG9hc3RlcmRpcj0qKQogICAgICAgICAgICAgVE9BU1RFUkRJUj0iJHtwYXJhbSMqPX0iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICAgICAgQ01EPSRwYXJhbQorICAgICAgICAgICAgbWFuYWdlX2NtZD0iIgorICAgIDs7CiAgICAgLS1oZWxwKQogICAgICAgICAgICAgZWNobyAiJEhFTFAiCiAgICAgICAgICAgICByZXR1cm4gMAogICAgIDs7CiAgICAgKikKLSAgICAgICAgICAgIGVjaG8gIiRIRUxQIgotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGlmIFsgIm1hbmFnZSIgPT0gIiRDTUQiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgbWFuYWdlX2NtZD0iJG1hbmFnZV9jbWQgJHBhcmFtIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVjaG8gIiRIRUxQIgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZmkKICAgICA7OwogCiAgICAgZXNhYwpAQCAtMzA2LDYgKzMxNSwxMCBAQAogICAgICAgICBzdG9wX3N5c3RlbQogICAgICAgICBlY2hvICJTdWNjZXNzZnVsICR7Q01EfS4iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICBjZCAkQkJCQVNFRElSL2xpYi90b2FzdGVyCisgICAgICAgICRNQU5BR0UgJG1hbmFnZV9jbWQKKyAgICA7OwogZXNhYwogY3VzdG9tX2V4dGVudGlvbiB0b2FzdGVyX3Bvc3RwZW5kICRDTUQgJEFERFJfUE9SVAogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvY29udHJpYi9hdXRvYnVpbGRlcmxvZy5qc29uIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTNhNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICAgInZlcnNpb24iOiAxLAorICAgICJsb2dnZXJzIjogeworICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfSwKKyAgICAgICAgIkJpdEJha2UuUnVuUXVldWUuSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCmluZGV4IDQ2ZGFmZWUuLjZjNTIzNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFByaW9yIHRvIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcywgQml0YmFrZSBsb29rcworICAgICAgICAgICAgUHJpb3IgdG8gcGFyc2luZyBjb25maWd1cmF0aW9uIGZpbGVzLCBCaXRCYWtlIGxvb2tzCiAgICAgICAgICAgICBhdCBjZXJ0YWluIHZhcmlhYmxlcywgaW5jbHVkaW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zMzksNyArMzM5LDcgQEAKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9IQVNIQ09ORklHX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0hBU0hDT05GSUdfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgYW5kIHRoZW4gY2hlY2tpbmcgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMuCiAgICAgICAgICAgICBJZiB0aGF0IGNoZWNrc3VtIG1hdGNoZXMgd2hhdCBpcyBpbiB0aGUgY2FjaGUgYW5kIHRoZSByZWNpcGUKLSAgICAgICAgICAgIGFuZCBjbGFzcyBmaWxlcyBoYXZlIG5vdCBjaGFuZ2VkLCBCaXRiYWtlIGlzIGFibGUgdG8gdXNlCisgICAgICAgICAgICBhbmQgY2xhc3MgZmlsZXMgaGF2ZSBub3QgY2hhbmdlZCwgQml0QmFrZSBpcyBhYmxlIHRvIHVzZQogICAgICAgICAgICAgdGhlIGNhY2hlLgogICAgICAgICAgICAgQml0QmFrZSB0aGVuIHJlbG9hZHMgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBlCiAgICAgICAgICAgICBpbnN0ZWFkIG9mIHJlcGFyc2luZyBpdCBmcm9tIHNjcmF0Y2guCkBAIC00MjksNyArNDI5LDcgQEAKICAgICAgICAgICAgIFRoZSBkZWZhdWx0CiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICBCaXRiYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCisgICAgICAgICAgICBCaXRCYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCiAgICAgICAgICAgICByZXNvbHZlcyB0aGVtIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgdXNpbmcgdGhpcyBwcm9jZXNzLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTgyMSw3ICs4MjEsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSXQgaXMgd29ydGggbm90aW5nIHRoYXQgQml0QmFrZSdzICItUyIgb3B0aW9uIGxldHMgeW91Ci0gICAgICAgICAgICBkZWJ1ZyBCaXRiYWtlJ3MgcHJvY2Vzc2luZyBvZiBzaWduYXR1cmVzLgorICAgICAgICAgICAgZGVidWcgQml0QmFrZSdzIHByb2Nlc3Npbmcgb2Ygc2lnbmF0dXJlcy4KICAgICAgICAgICAgIFRoZSBvcHRpb25zIHBhc3NlZCB0byAtUyBhbGxvdyBkaWZmZXJlbnQgZGVidWdnaW5nIG1vZGVzCiAgICAgICAgICAgICB0byBiZSB1c2VkLCBlaXRoZXIgdXNpbmcgQml0QmFrZSdzIG93biBkZWJ1ZyBmdW5jdGlvbnMKICAgICAgICAgICAgIG9yIHBvc3NpYmx5IHRob3NlIGRlZmluZWQgaW4gdGhlIG1ldGFkYXRhL3NpZ25hdHVyZSBoYW5kbGVyCkBAIC05MjksNCArOTI5LDEwMSBAQAogICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJsb2dnaW5nIj4KKyAgICAgICAgPHRpdGxlPkxvZ2dpbmc8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgaG93CisgICAgICAgICAgICB2ZXJib3NlIGJ1aWxkcyBhcmUgd2hlbiBleGVjdXRlLCBiaXRiYWtlIGFsc28gc3VwcG9ydHMgdXNlciBkZWZpbmVkCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuaHRtbCc+UHl0aG9uIGxvZ2dpbmc8L3VsaW5rPgorICAgICAgICAgICAgZmFjaWxpdGllcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0idmFyLWJiLUJCX0xPR0NPTkZJRyI+PGZpbGVuYW1lPkJCX0xPR0NPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuIFRoaXMgdmFyaWFibGUgZGVmaW5lcyBhIGpzb24gb3IgeWFtbAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLmh0bWwnPmxvZ2dpbmcgY29uZmlndXJhdGlvbjwvdWxpbms+CisgICAgICAgICAgICB0aGF0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBtZXJnZWQgaW50byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgVGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtZXJnZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gd2lsbCBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpZiB0b3AgbGV2ZWwga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gaXMgc2V0IHRvIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmFsc2U8L2ZpbGVuYW1lPi4gSW4gdGhpcyBjYXNlLCBhbGwgb3RoZXIgcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhIHRvcCBsZXZlbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmVyc2lvbjwvZmlsZW5hbWU+IHdoaWNoIG11c3QgbWF0Y2ggdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbnkga2V5cyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+aGFuZGxlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1hdHRlcnM8L2ZpbGVuYW1lPiwgb3IgPGZpbGVuYW1lPmZpbHRlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgaW50byB0aGUgc2FtZSBzZWN0aW9uIGluIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHVzZXIgc3BlY2lmaWVkIGtleXMgdGFraW5nCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgb25lIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QuIEluCisgICAgICAgICAgICAgICAgICAgIHByYWN0aWNlLCB0aGlzIG1lYW5zIHRoYXQgaWYgYm90aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gc3BlY2lmeSBhIGhhbmRsZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15aGFuZGxlcjwvZmlsZW5hbWU+LCB0aGUgdXNlciBkZWZpbmVkIG9uZSB3aWxsCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgdGhlIGRlZmF1bHQuIFRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbmFkdmVydGVudGx5CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIsIGFsbCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBvbmVzIGFyZSBuYW1lZCB3aXRoIGEgcHJlZml4IG9mCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Qml0QmFrZS48L2ZpbGVuYW1lPiIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIGEgbG9nZ2VyIGlzIGRlZmluZWQgYnkgdGhlIHVzZXIgd2l0aCB0aGUga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GYWxzZTwvZmlsZW5hbWU+LCB0aGF0IGxvZ2dlciB3aWxsIGJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgdXNlciBjb25maWd1cmF0aW9uLiBJbiB0aGlzIGNhc2UsIG5vIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIHdpbGwgYXBwbHkgdG8gdGhhdCBsb2dnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGwgdXNlciBkZWZpbmVkIDxmaWxlbmFtZT5maWx0ZXI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhbmRsZXJzPC9maWxlbmFtZT4gcHJvcGVydGllcyBmb3IgYSBnaXZlbiBsb2dnZXIKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgd2l0aCBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsb2dnZXIuIEZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBjb25maWd1cmF0aW9uIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgYSBmaWx0ZXIgY2FsbGVkIDxmaWxlbmFtZT5teUZpbHRlcjwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qml0QmFrZS5TaWdHZW48L2ZpbGVuYW1lPiwgYW5kIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYWRkcyBhIGZpbHRlciBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJpdEJha2UuZGVmYXVsdEZpbHRlcjwvZmlsZW5hbWU+LCBib3RoIGZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBsb2dnZXIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHVzZXIgbG9nZ2luZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlIHdoaWNoIGxvZ3MgYWxsIEhhc2ggRXF1aXZhbGVuY2UgcmVsYXRlZCBtZXNzYWdlcyBvZiBWRVJCT1NFIG9yCisgICAgICAgICAgICBoaWdoZXIgdG8gYSBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+aGFzaGVxdWl2LmxvZzwvZmlsZW5hbWU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgeworICAgICAgICAidmVyc2lvbiI6IDEsCisgICAgICAgICJoYW5kbGVycyI6IHsKKyAgICAgICAgICAgICJhdXRvYnVpbGRlcmxvZyI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJsb2dmaWxlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiREVCVUciLAorICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ICJoYXNoZXF1aXYubG9nIiwKKyAgICAgICAgICAgICAgICAibW9kZSI6ICJ3IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZm9ybWF0dGVycyI6IHsKKyAgICAgICAgICAgICAgICAibG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKG5hbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLlNpZ0dlbi5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiYXV0b2J1aWxkZXJsb2ciXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiVkVSQk9TRSIsCisgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJhdXRvYnVpbGRlcmxvZyJdCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggNjg0MDQwOC4uZDFiZmMyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbApAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdGJha2UgbWFpbnRhaW5zIGEKKyAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdEJha2UgbWFpbnRhaW5zIGEKICAgICAgICAgICAgIGNhY2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgZnJvbSB0aGUgbmV0d29yay4KICAgICAgICAgICAgIEFueSBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgbm90IGxvY2FsIChpLmUuCiAgICAgICAgICAgICBkb3dubG9hZGVkIGZyb20gdGhlIEludGVybmV0KSBhcmUgcGxhY2VkIGludG8gdGhlIGRvd25sb2FkCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwKaW5kZXggMzkwNjZlNC4uMTFlYjM2YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICAgICAgSGF2aW5nIGEgcHJvamVjdCBkaXJlY3RvcnkgaXMgYSBnb29kIHdheSB0byBpc29sYXRlIHlvdXIKICAgICAgICAgICAgICAgICBwcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBoYXZlIG5vdGhpbmcgYnV0IGEgcHJvamVjdCBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHNlZSB3aGF0CiAgICAgICAgICAgICAgICAgaXQgZG9lczoKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB3aGF0IHRlbGxzIEJpdEJha2Ugd2hlcmUgdG8gbG9vayBmb3IgdGhvc2UgZmlsZXMuCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGlzIG5vdCBzZXQgYW5kIHlvdSBuZWVkIHRvIHNldCBpdC4KLSAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0YmFrZSBjYW5ub3QKKyAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0QmFrZSBjYW5ub3QKICAgICAgICAgICAgICAgICBmaW5kIGFueSBjb25maWd1cmF0aW9uIGZpbGVzICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICBvciByZWNpcGUgZmlsZXMgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgYXQgYWxsLgogICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyBjYW5ub3QgZmluZCB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CkBAIC0yMjUsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHNoZWxsIHdvdWxkLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gZGVmaW5lZCwgcnVuCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhZ2FpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICAgICAgICBleGFtcGxlLCBjbGljayBvbiB0aGUgbGlua3MgdG8gdGFrZSB5b3UgdG8gdGhlIGRlZmluaXRpb25zIGluCiAgICAgICAgICAgICAgICAgdGhlIGdsb3NzYXJ5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEFmdGVyIG1ha2luZyBzdXJlIHRoYXQgdGhlIDxmaWxlbmFtZT5jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSBleGlzdHMsIHlvdSBjYW4gcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29tbWFuZCBhZ2FpbjoKQEAgLTM2NCw3ICszNjQsNyBAQAogICAgICAgICAgICAgICAgIG1vcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGJ1aWxkIGVudmlyb25tZW50cyBCaXRCYWtlIGlzCiAgICAgICAgICAgICAgICAgc3VwcG9ydGluZy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzLCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGNvbW1hbmQgYWdhaW46CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB2YXJpYWJsZXMsIGZvbGxvdyB0aGUgbGlua3MKICAgICAgICAgICAgICAgICB0byB0aGUgZ2xvc3NhcnkuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIE5vdyB0aGF0IGEgQml0QmFrZSB0YXJnZXQgZXhpc3RzLCBydW4gdGhlIGNvbW1hbmQgYW5kIHByb3ZpZGUKICAgICAgICAgICAgICAgICB0aGF0IHRhcmdldDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIGluZm9ybWF0aW9uIGZvcgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b3U8L2ZpbGVuYW1lPiBpbiB0aGUgZmlsZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZSBXaXRoIGEgVGFyZ2V0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgTm93IHRoYXQgeW91IGhhdmUgc3VwcGxpZWQgdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmaWxlLCBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgcHJvdmlkZQogICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQ6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKaW5kZXggOGYyYTk2MC4uZjU1MjZjMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbApAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIChlLmcuIEN5Z3dpbiwgdGhlIEJTRHMsIGFuZCBzbyBmb3J0aCkuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc2VsZiBjb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKKyAgICAgICAgICAgICAgICAgICAgQmUgc2VsZi1jb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKICAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZCBtYWNoaW5lJ3Mgcm9vdAogICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTIyMSw2ICsyMjEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlbTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHRvIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gYXNzZW1ibGUgdGhlIGdlbmVyYXRlZCBhcnRpZmFjdHMgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgb25lIG9yIG1vcmUgaW5zdGFsbGFibGUgcGFja2FnZXM8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXJlIG9uIHRoZSB0YXJnZXQgbWFjaGluZSB0byBpbnN0YWxsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBvciBwYWNrYWdlcyBjcmVhdGVkPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yMjksNyArMjMxLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiBCaXRCYWtlLCBvciBhbnkgcHJvamVjdCB1dGlsaXppbmcgQml0QmFrZQogICAgICAgICAgICAgICAgIGFzIGl0cyBidWlsZCBzeXN0ZW0sIGZpbGVzIHdpdGggdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiBhcmUgcmVmZXJyZWQgdG8gYXMgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gYXJlIHJlZmVycmVkIHRvIGFzIDxmaXJzdHRlcm0+cmVjaXBlczwvZmlyc3R0ZXJtPi4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIGFsc28gY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSByZWNpcGVzLgogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzaW5jZSB0aGUgc2FtZSB3b3JkIGlzIHVzZWQgdG8gZGVzY3JpYmUgcGFja2FnZWQKQEAgLTI1Miw5ICsyNTQsOSBAQAogICAgICAgICAgICAgICAgIHZhcmlvdXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBnb3Zlcm4gdGhlIHByb2plY3QncyBidWlsZAogICAgICAgICAgICAgICAgIHByb2Nlc3MuCiAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZmFsbCBpbnRvIHNldmVyYWwgYXJlYXMgdGhhdCBkZWZpbmUKLSAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBvcHRpb25zLCBjb21waWxlciB0dW5pbmcgb3B0aW9ucywgZ2VuZXJhbCBjb21tb24KLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24sIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHBvc3NpYmxlIGNvbXBpbGVyIHR1bmluZywgZ2VuZXJhbCBjb21tb24KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgdXNlciBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgIFRoZSBtYWluIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB0aGUgc2FtcGxlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgbG9jYXRlZCB3aXRoaW4gdGhlIEJpdEJha2Ugc291cmNlIHRyZWUKQEAgLTI5Miw3ICsyOTQsNyBAQAogICAgICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YKICAgICAgICAgICAgICAgICBjdXN0b21pemF0aW9ucyBmcm9tIGVhY2ggb3RoZXIuCiAgICAgICAgICAgICAgICAgV2hpbGUgeW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllcgotICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyIHlvdSBvcmdhbml6ZQorICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyCiAgICAgICAgICAgICAgICAgeW91ciBtZXRhZGF0YSwgdGhlIGVhc2llciBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTMwMCw4ICszMDIsOCBAQAogICAgICAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IHlvdSBjYW4gdXNlIGxheWVycyB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLAogICAgICAgICAgICAgICAgIGNvbnNpZGVyIGN1c3RvbWl6YXRpb25zIHlvdSBtaWdodCBtYWtlIHRvIHN1cHBvcnQgYSBzcGVjaWZpYyB0YXJnZXQgbWFjaGluZS4KICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBjdXN0b21pemF0aW9ucyB0eXBpY2FsbHkgcmVzaWRlIGluIGEgc3BlY2lhbCBsYXllciwKLSAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgIExheWVyLgorICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJhbCBsYXllciwgY2FsbGVkIGEgPGZpcnN0dGVybT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2U8L2ZpcnN0dGVybT4gKEJTUCkKKyAgICAgICAgICAgICAgICBsYXllci4KICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIG1hY2hpbmUgY3VzdG9taXphdGlvbnMgc2hvdWxkIGJlIGlzb2xhdGVkIGZyb20KICAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCBtZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LCBmb3IKICAgICAgICAgICAgICAgICBleGFtcGxlLgpAQCAtNDQ4LDcgKzQ1MCw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2luZyB0aGUgQml0QmFrZSB0aGF0IENvbWVzIFdpdGggWW91cgogICAgICAgICAgICAgICAgICAgICBCdWlsZCBDaGVja291dDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBIGZpbmFsIHBvc3NpYmlsaXR5IGZvciBnZXR0aW5nIGEgY29weSBvZiBCaXRCYWtlIGlzIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBjb21lcyB3aXRoIHlvdXIgY2hlY2tvdXQgb2YgYSBsYXJnZXIgQml0YmFrZS1iYXNlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGNvbWVzIHdpdGggeW91ciBjaGVja291dCBvZiBhIGxhcmdlciBCaXRCYWtlLWJhc2VkIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgc3VjaCBhcyBQb2t5LgogICAgICAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBtYW51YWxseSBjaGVja2luZyBvdXQgaW5kaXZpZHVhbCBsYXllcnMgYW5kCiAgICAgICAgICAgICAgICAgICAgIGdsdWluZyB0aGVtIHRvZ2V0aGVyIHlvdXJzZWxmLCB5b3UgY2FuIGNoZWNrCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKaW5kZXggNDIxMzY0Yy4uMTBiNTg4MyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNSw3ICs1LDcgQEAKICAgICA8dGl0bGU+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEJpdGJha2UgZmlsZXMgaGF2ZSB0aGVpciBvd24gc3ludGF4LgorICAgICAgICBCaXRCYWtlIGZpbGVzIGhhdmUgdGhlaXIgb3duIHN5bnRheC4KICAgICAgICAgVGhlIHN5bnRheCBoYXMgc2ltaWxhcml0aWVzIHRvIHNldmVyYWwKICAgICAgICAgb3RoZXIgbGFuZ3VhZ2VzIGJ1dCBhbHNvIGhhcyBzb21lIHVuaXF1ZSBmZWF0dXJlcy4KICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgYXZhaWxhYmxlIHN5bnRheCBhbmQgb3BlcmF0b3JzCkBAIC0yOTQsMTcgKzI5NCwyMCBAQAogICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHZhcmlhYmxlIGlzIGFjdHVhbGx5IHVzZWQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBUID0gIjEyMyIKLSAgICAgQSA6PSAiJHtCfSAke0F9IHRlc3QgJHtUfSIKKyAgICAgQSA6PSAidGVzdCAke1R9IgogICAgICBUID0gIjQ1NiIKLSAgICAgQiA9ICIke1R9IGJ2YWwiCisgICAgIEIgOj0gIiR7VH0gJHtDfSIKICAgICAgQyA9ICJjdmFsIgogICAgICBDIDo9ICIke0N9YXBwZW5kIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gY29udGFpbnMKLSAgICAgICAgICAgICAgICAidGVzdCAxMjMiIGJlY2F1c2UgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtBfTwvZmlsZW5hbWU+IGF0IHRoZSB0aW1lIG9mIHBhcnNpbmcgYXJlIHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICB3aGljaCBsZWF2ZXMgInRlc3QgMTIzIi4KLSAgICAgICAgICAgICAgICBBbmQsIHRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgInRlc3QgMTIzIiwgZXZlbiB0aG91Z2ggdGhlIGZpbmFsIHZhbHVlIG9mIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyAiNDU2Ii4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiB3aWxsIGVuZCB1cCBjb250YWluaW5nICI0NTYgY3ZhbGFwcGVuZCIuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHJlZmVyZW5jZXMgdG8gdW5kZWZpbmVkIHZhcmlhYmxlcyBhcmUgcHJlc2VydmVkIGFzIGlzCisgICAgICAgICAgICAgICAgZHVyaW5nIChpbW1lZGlhdGUpZXhwYW5zaW9uLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIEdOVSBNYWtlLCB3aGVyZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZXhwYW5kIHRvIG5vdGhpbmcuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5DPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBjb250YWlucyAiY3ZhbGFwcGVuZCIgc2luY2UgPGZpbGVuYW1lPiR7Q308L2ZpbGVuYW1lPiBpbW1lZGlhdGVseQogICAgICAgICAgICAgICAgIGV4cGFuZHMgdG8gImN2YWwiLgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTQxNCw3ICsxNDE3LDcgQEAKICAgICAgICAgPC9zZWN0aW9uPgogCiAgICAgICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLXN0eWxlLXB5dGhvbi1mdW5jdGlvbnMtdmVyc3VzLXB5dGhvbi1mdW5jdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPkJpdGJha2UtU3R5bGUgUHl0aG9uIEZ1bmN0aW9ucyBWZXJzdXMgUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZS1TdHlsZSBQeXRob24gRnVuY3Rpb25zIFZlcnN1cyBQeXRob24gRnVuY3Rpb25zPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlcyBiZXR3ZWVuCkBAIC0xODY0LDcgKzE4NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzaW5nIHlvdXIgPGZpbGVuYW1lPiRIT01FLy5jY2FjaGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kICJ3aGl0ZWxpc3RzIiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWNrIHRvIGFsbG93IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWtlIHRvIGFsbG93IHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGludG8gdGhlIGRhdGFzdG9yZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgZXhwb3J0IEJCX0VOVl9FWFRSQVdISVRFPSIkQkJfRU5WX0VYVFJBV0hJVEUgQ0NBQ0hFX0RJUiIKQEAgLTE4OTUsNyArMTg5OCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBTb21ldGltZXMsIGl0IGlzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIG9idGFpbiBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgIGZyb20gdGhlIG9yaWdpbmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBCaXRiYWtlIHNhdmVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW52aXJvbm1lbnQgaW50bworICAgICAgICAgICAgICAgIEJpdEJha2Ugc2F2ZXMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudCBpbnRvCiAgICAgICAgICAgICAgICAgYSBzcGVjaWFsIHZhcmlhYmxlIG5hbWVkCiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX09SSUdFTlYnPjxmaWxlbmFtZT5CQl9PUklHRU5WPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjYxNiw3ICsyNjE5LDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBhY2Nlc3MgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgIEJpdEJha2UgZGF0YXN0b3JlIHVzaW5nIFB5dGhvbiBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIEJpdGJha2UgZGF0YXN0b3JlIGhhcyBhbiBBUEkgdGhhdCBhbGxvd3MgeW91IHRoaXMKKyAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBkYXRhc3RvcmUgaGFzIGFuIEFQSSB0aGF0IGFsbG93cyB5b3UgdGhpcwogICAgICAgICAgICAgICAgIGFjY2Vzcy4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhdmFpbGFibGUgb3BlcmF0aW9uczoKICAgICAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggYWNhNjc0MS4uYzRiZDFmMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTUzOSw2ICs1MzksMTcgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0NPTkZJRyc+PGdsb3NzdGVybT5CQl9MT0dDT05GSUc8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgY29uZmlnIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uIFNlZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJsb2dnaW5nIj5Mb2dnaW5nPC9saW5rPiBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0ZNVCc+PGdsb3NzdGVybT5CQl9MT0dGTVQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE3ODAsNyArMTc5MSw3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJpdGJha2Ugbm9ybWFsbHkgaXNzdWVzIGEgd2FybmluZyB3aGVuIGJ1aWxkaW5nIHR3bworICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG5vcm1hbGx5IGlzc3VlcyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyB0d28KICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHJlY2lwZXMgd2hlcmUgZWFjaCBwcm92aWRlcyB0aGUgc2FtZSBvdXRwdXQuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2NlbmFyaW8gaXMgdXN1YWxseSBzb21ldGhpbmcgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgd2FudC4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKaW5kZXggZDI2ZTk4MS4uYmMyMGNlMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKQEAgLTEwLDcgKzEwLDYgQEAKIAogCiBpbXBvcnQgY29weQotaW1wb3J0IHR5cGVzCiBJbW11dGFibGVUeXBlcyA9ICgKICAgICBib29sLAogICAgIGNvbXBsZXgsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQppbmRleCBjMTQ0MzExLi5iOTY0NjZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKQEAgLTksMTEgKzksMTEgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGltcG9ydCBzeXMKLWlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6Ci0gICAgcmFpc2UgUnVudGltZUVycm9yKCJTb3JyeSwgcHl0aG9uIDMuNC4wIG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gb2YgYml0YmFrZSIpCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDUsIDApOgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29ycnksIHB5dGhvbiAzLjUuMCBvciBsYXRlciBpcyByZXF1aXJlZCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGJpdGJha2UiKQogCiAKIGNsYXNzIEJCSGFuZGxlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgpAQCAtNDMsNyArNDMsMTMgQEAKICAgICAgICAgTG9nZ2VyLl9faW5pdF9fKHNlbGYsIG5hbWUpCiAKICAgICBkZWYgYmJkZWJ1ZyhzZWxmLCBsZXZlbCwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMSwgbXNnLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGxvZ2xldmVsID0gbG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMQorICAgICAgICBpZiBub3QgYmIuZXZlbnQud29ya2VyX3BpZDoKKyAgICAgICAgICAgIGlmIHNlbGYubmFtZSBpbiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgYW5kIGxvZ2xldmVsID4gKGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWluc1tzZWxmLm5hbWVdKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGxvZ2xldmVsID4gYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIHNlbGYubG9nKGxvZ2xldmVsLCBtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBwbGFpbihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLmxvZyhsb2dnaW5nLklORk8gKyAxLCBtc2csICphcmdzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CmluZGV4IDMwYTJiYTIuLjIzYjZlZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHNobGV4CiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRpbWUKIGltcG9ydCBzdGF0CkBAIC01NywxNCArNTYsMTcgQEAKIGNsYXNzIFRhc2tCYXNlKGV2ZW50LkV2ZW50KToKICAgICAiIiJCYXNlIGNsYXNzIGZvciB0YXNrIGV2ZW50cyIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIGQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgZCk6CiAgICAgICAgIHNlbGYuX3Rhc2sgPSB0CisgICAgICAgIHNlbGYuX2ZuID0gZm4KICAgICAgICAgc2VsZi5fcGFja2FnZSA9IGQuZ2V0VmFyKCJQRiIpCiAgICAgICAgIHNlbGYuX21jID0gZC5nZXRWYXIoIkJCX0NVUlJFTlRfTUMiKQogICAgICAgICBzZWxmLnRhc2tmaWxlID0gZC5nZXRWYXIoIkZJTEUiKQogICAgICAgICBzZWxmLnRhc2tuYW1lID0gc2VsZi5fdGFzawogICAgICAgICBzZWxmLmxvZ2ZpbGUgPSBsb2dmaWxlCiAgICAgICAgIHNlbGYudGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYucG4gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBzZWxmLnB2ID0gZC5nZXRWYXIoIlBWIikKICAgICAgICAgZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5fbWVzc2FnZSA9ICJyZWNpcGUgJXM6IHRhc2sgJXM6ICVzIiAlIChkLmdldFZhcigiUEYiKSwgdCwgc2VsZi5nZXREaXNwbGF5TmFtZSgpKQogCkBAIC04MSw4ICs4Myw4IEBACiAKIGNsYXNzIFRhc2tTdGFydGVkKFRhc2tCYXNlKToKICAgICAiIiJUYXNrIGV4ZWN1dGlvbiBzdGFydGVkIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIHRhc2tmbGFncywgZCk6Ci0gICAgICAgIHN1cGVyKFRhc2tTdGFydGVkLCBzZWxmKS5fX2luaXRfXyh0LCBsb2dmaWxlLCBkKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgdGFza2ZsYWdzLCBkKToKKyAgICAgICAgc3VwZXIoVGFza1N0YXJ0ZWQsIHNlbGYpLl9faW5pdF9fKHQsIGZuLCBsb2dmaWxlLCBkKQogICAgICAgICBzZWxmLnRhc2tmbGFncyA9IHRhc2tmbGFncwogCiBjbGFzcyBUYXNrU3VjY2VlZGVkKFRhc2tCYXNlKToKQEAgLTkxLDkgKzkzLDkgQEAKIGNsYXNzIFRhc2tGYWlsZWQoVGFza0Jhc2UpOgogICAgICIiIlRhc2sgZXhlY3V0aW9uIGZhaWxlZCIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGxvZ2ZpbGUsIG1ldGFkYXRhLCBlcnJwcmludGVkID0gRmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrLCBmbiwgbG9nZmlsZSwgbWV0YWRhdGEsIGVycnByaW50ZWQgPSBGYWxzZSk6CiAgICAgICAgIHNlbGYuZXJycHJpbnRlZCA9IGVycnByaW50ZWQKLSAgICAgICAgc3VwZXIoVGFza0ZhaWxlZCwgc2VsZikuX19pbml0X18odGFzaywgbG9nZmlsZSwgbWV0YWRhdGEpCisgICAgICAgIHN1cGVyKFRhc2tGYWlsZWQsIHNlbGYpLl9faW5pdF9fKHRhc2ssIGZuLCBsb2dmaWxlLCBtZXRhZGF0YSkKIAogY2xhc3MgVGFza0ZhaWxlZFNpbGVudChUYXNrQmFzZSk6CiAgICAgIiIiVGFzayBleGVjdXRpb24gZmFpbGVkIChzaWxlbnRseSkiIiIKQEAgLTEwMyw4ICsxMDUsOCBAQAogCiBjbGFzcyBUYXNrSW52YWxpZChUYXNrQmFzZSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFzaywgbWV0YWRhdGEpOgotICAgICAgICBzdXBlcihUYXNrSW52YWxpZCwgc2VsZikuX19pbml0X18odGFzaywgTm9uZSwgbWV0YWRhdGEpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGZuLCBtZXRhZGF0YSk6CisgICAgICAgIHN1cGVyKFRhc2tJbnZhbGlkLCBzZWxmKS5fX2luaXRfXyh0YXNrLCBmbiwgTm9uZSwgbWV0YWRhdGEpCiAgICAgICAgIHNlbGYuX21lc3NhZ2UgPSAiTm8gc3VjaCB0YXNrICclcyciICUgdGFzawogCiBjbGFzcyBUYXNrUHJvZ3Jlc3MoZXZlbnQuRXZlbnQpOgpAQCAtNTcyLDcgKzU3NCw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza1N0YXJ0ZWQodGFzaywgbG9nZm4sIGZsYWdzLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBldmVudC5maXJlKFRhc2tTdGFydGVkKHRhc2ssIGZuLCBsb2dmbiwgZmxhZ3MsIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IChiYi5CQkhhbmRsZWRFeGNlcHRpb24sIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNTgzLDE1ICs1ODUsMTUgQEAKICAgICAgICAgICAgIGZvciBmdW5jIGluIChwb3N0ZnVuY3Mgb3IgJycpLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgZXhlY19mdW5jKGZ1bmMsIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IGJiLkJCSGFuZGxlZEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrRmFpbGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICBpZiBxdWlldGVycjoKLSAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgZm4sIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVycnByaW50ZWQgPSBlcnJjaGsudHJpZ2dlcmVkCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleGMpKQotICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBlcnJwcmludGVkKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBmbiwgbG9nZm4sIGxvY2FsZGF0YSwgZXJycHJpbnRlZCksIGxvY2FsZGF0YSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZmluYWxseToKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCkBAIC02MTQsNyArNjE2LDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiWmVybyBzaXplIGxvZ2ZuICVzLCByZW1vdmluZyIsIGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCi0gICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogCiAgICAgaWYgbm90IGxvY2FsZGF0YS5nZXRWYXJGbGFnKHRhc2ssICdub3N0YW1wJywgRmFsc2UpIGFuZCBub3QgbG9jYWxkYXRhLmdldFZhckZsYWcodGFzaywgJ3NlbGZzdGFtcCcsIEZhbHNlKToKICAgICAgICAgbWFrZV9zdGFtcCh0YXNrLCBsb2NhbGRhdGEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQppbmRleCBiNmY3ZGE1Li5kMWJlODM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTE3LDExICsxNywxMSBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcGlja2xlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogaW1wb3J0IGJiLnV0aWxzCitpbXBvcnQgcmUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuQ2FjaGUiKQogCkBAIC0yMDgsMTAgKzIwOCwxMCBAQAogCiAgICAgICAgICMgQ29sbGVjdCBmaWxlcyB3ZSBtYXkgbmVlZCBmb3IgcG9zc2libGUgd29ybGQtZGVwCiAgICAgICAgICMgY2FsY3VsYXRpb25zCi0gICAgICAgIGlmIHNlbGYubm90X3dvcmxkOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJFWENMVURFIEZST00gV09STEQ6ICVzIiwgZm4pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBzZWxmLm5vdF93b3JsZDoKICAgICAgICAgICAgIGNhY2hlZGF0YS5wb3NzaWJsZV93b3JsZC5hcHBlbmQoZm4pCisgICAgICAgICNlbHNlOgorICAgICAgICAjICAgIGxvZ2dlci5kZWJ1ZygyLCAiRVhDTFVERSBGUk9NIFdPUkxEOiAlcyIsIGZuKQogCiAgICAgICAgICMgY3JlYXRlIGEgY29sbGVjdGlvbiBvZiBhbGwgdGFyZ2V0cyBmb3Igc2FuaXR5IGNoZWNraW5nCiAgICAgICAgICMgdGFza3MsIHN1Y2ggYXMgdXBzdHJlYW0gdmVyc2lvbnMsIGxpY2Vuc2UsIGFuZCB0b29scyBmb3IKQEAgLTM3MCw2ICszNzAsNyBAQAogICAgICAgICBzZWxmLmRhdGFfZm4gPSBOb25lCiAgICAgICAgIHNlbGYuY2FjaGVjbGVhbiA9IFRydWUKICAgICAgICAgc2VsZi5kYXRhX2hhc2ggPSBkYXRhX2hhc2gKKyAgICAgICAgc2VsZi5maWxlbGlzdF9yZWdleCA9IHJlLmNvbXBpbGUocicoPzooPzw9OlRydWUpfCg/PD06RmFsc2UpKVxzKycpCiAKICAgICAgICAgaWYgc2VsZi5jYWNoZWRpciBpbiBbTm9uZSwgJyddOgogICAgICAgICAgICAgc2VsZi5oYXNfY2FjaGUgPSBGYWxzZQpAQCAtNjA4LDIwICs2MDksMTIgQEAKICAgICAgICAgaWYgaGFzYXR0cihpbmZvX2FycmF5WzBdLCAnZmlsZV9jaGVja3N1bXMnKToKICAgICAgICAgICAgIGZvciBfLCBmbCBpbiBpbmZvX2FycmF5WzBdLmZpbGVfY2hlY2tzdW1zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgZmwgPSBmbC5zdHJpcCgpCi0gICAgICAgICAgICAgICAgd2hpbGUgZmw6Ci0gICAgICAgICAgICAgICAgICAgICMgQSAuc3BsaXQoKSB3b3VsZCBiZSBzaW1wbGVyIGJ1dCBtZWFucyBzcGFjZXMgb3IgY29sb25zIGluIGZpbGVuYW1lcyB3b3VsZCBicmVhawotICAgICAgICAgICAgICAgICAgICBhID0gZmwuZmluZCgiOlRydWUiKQotICAgICAgICAgICAgICAgICAgICBiID0gZmwuZmluZCgiOkZhbHNlIikKLSAgICAgICAgICAgICAgICAgICAgaWYgKChhIDwgMCkgYW5kIGIpIG9yICgoYiA+IDApIGFuZCAoYiA8IGEpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6Yis2XQotICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFtiKzc6XQotICAgICAgICAgICAgICAgICAgICBlbGlmICgoYiA8IDApIGFuZCBhKSBvciAoKGEgPiAwKSBhbmQgKGEgPCBiKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmErNV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYSs2Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZsID0gZmwuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBpZiAiKiIgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBub3QgZmw6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBIYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgc3BhY2VzIGFuZCBjb2xvbnMgaW4gZmlsZW5hbWVzCisgICAgICAgICAgICAgICAgZmxpc3QgPSBzZWxmLmZpbGVsaXN0X3JlZ2V4LnNwbGl0KGZsKQorICAgICAgICAgICAgICAgIGZvciBmIGluIGZsaXN0OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZiBvciAiKiIgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGYsIGV4aXN0ID0gZi5zcGxpdCgiOiIpCiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdCA9PSAiVHJ1ZSIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhmKSkgb3IgKGV4aXN0ID09ICJGYWxzZSIgYW5kIG9zLnBhdGguZXhpc3RzKGYpKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NoZWNrc3VtLnB5CmluZGV4IDViYzhhOGYuLjFkNTBhMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jaGVja3N1bS5weQpAQCAtOSw3ICs5LDYgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgc3RhdAotaW1wb3J0IHBpY2tsZQogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKQEAgLTc0LDcgKzczLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdFswXVtoXSA9IHNvdXJjZVswXVtoXQogCi0gICAgZGVmIGdldF9jaGVja3N1bXMoc2VsZiwgZmlsZWxpc3QsIHBuKToKKyAgICBkZWYgZ2V0X2NoZWNrc3VtcyhzZWxmLCBmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICAgICAiIiJHZXQgY2hlY2tzdW1zIGZvciBhIGxpc3Qgb2YgZmlsZXMiIiIKIAogICAgICAgICBkZWYgY2hlY2tzdW1fZmlsZShmKToKQEAgLTkwLDcgKzg5LDggQEAKICAgICAgICAgICAgIGlmIHB0aCA9PSAiLyI6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlJlZnVzaW5nIHRvIGNoZWNrc3VtIC8iKQogICAgICAgICAgICAgZGlyY2hlY2tzdW1zID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHB0aCk6CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwdGgsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgICAgICAgICAgW2RpcnMucmVtb3ZlKGQpIGZvciBkIGluIGxpc3QoZGlycykgaWYgZCBpbiBsb2NhbGRpcnNleGNsdWRlXQogICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBmdWxscHRoID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gY2hlY2tzdW1fZmlsZShmdWxscHRoKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5CmluZGV4IGZkMmM0NzMuLjI1YTdhYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkKQEAgLTI1LDEzICsyNSwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvZGVnZW4KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgYmIucHlzaCBhcyBweXNoCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IGJiLnV0aWxzLCBiYi5kYXRhCiBpbXBvcnQgaGFzaGxpYgogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCi1mcm9tIGJiLnB5c2ggaW1wb3J0IHB5c2h5YWNjLCBweXNobGV4LCBzaGVycm9ycworZnJvbSBiYi5weXNoIGltcG9ydCBweXNoeWFjYywgcHlzaGxleAogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuQ29kZVBhcnNlcicpCkBAIC01OCwzMCArNTYsMTAgQEAKIAogICAgIHJldHVybiBjb2Rlc3RyCiAKLQotIyBCYXNpY2FsbHkgcGlja2xlLCBpbiBweXRob24gMi43LjMgYXQgbGVhc3QsIGRvZXMgYmFkbHkgd2l0aCBkYXRhIGR1cGxpY2F0aW9uIAotIyB1cG9uIHBpY2tsaW5nIGFuZCB1bnBpY2tsaW5nLiBDb21iaW5lIHRoaXMgd2l0aCBkdXBsaWNhdGUgb2JqZWN0cyBhbmQgdGhpbmdzCi0jIGFyZSBhIG1lc3MuCi0jCi0jIFdoZW4gdGhlIHNldHMgYXJlIG9yaWdpbmFsbHkgY3JlYXRlZCwgcHl0aG9uIGNhbGxzIGludGVybigpIG9uIHRoZSBzZXQga2V5cwotIyB3aGljaCBzaWduaWZpY2FudGx5IGltcHJvdmVzIG1lbW9yeSB1c2FnZS4gU2FkbHkgdGhlIHBpY2tsZS91bnBpY2tsZSBwcm9jZXNzCi0jIGRvZXNuJ3QgY2FsbCBpbnRlcm4oKSBvbiB0aGUga2V5cyBhbmQgcmVzdWx0cyBpbiB0aGUgc2FtZSBzdHJpbmdzIGJlaW5nIGR1cGxpY2F0ZWQKLSMgaW4gbWVtb3J5LiBUaGlzIGFsc28gbWVhbnMgcGlja2xlIHdpbGwgc2F2ZSB0aGUgc2FtZSBzdHJpbmcgbXVsdGlwbGUgdGltZXMgaW4KLSMgdGhlIGNhY2hlIGZpbGUuCi0jCi0jIEJ5IGhhdmluZyBzaGVsbCBhbmQgcHl0aG9uIGNhY2hlbGluZSBvYmplY3RzIHdpdGggc2V0c3RhdGUvZ2V0c3RhdGUsIHdlIGZvcmNlCi0jIHRoZSBvYmplY3QgY3JlYXRpb24gdGhyb3VnaCBvdXIgb3duIHJvdXRpbmUgd2hlcmUgd2UgY2FuIGNhbGwgaW50ZXJuICh2aWEgaW50ZXJuU2V0KS4KLSMKLSMgV2UgYWxzbyB1c2UgaGFzaGFibGUgZnJvemVuc2V0cyBhbmQgZW5zdXJlIHdlIHVzZSByZWZlcmVuY2VzIHRvIHRoZXNlIHNvIHRoYXQKLSMgZHVwbGljYXRlcyBjYW4gYmUgcmVtb3ZlZCwgYm90aCBpbiBtZW1vcnkgYW5kIGluIHRoZSByZXN1bHRpbmcgcGlja2xlZCBkYXRhLgotIwotIyBCeSBwbGF5aW5nIHRoZXNlIGdhbWVzLCB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgZmlsZSBzaHJpbmtzIGRyYW1hdGljYWxseQotIyBtZWFuaW5nIGZhc3RlciBsb2FkIHRpbWVzIGFuZCB0aGUgcmVsb2FkZWQgY2FjaGUgZmlsZXMgYWxzbyBjb25zdW1lIG11Y2ggbGVzcwotIyBtZW1vcnkuIFNtYWxsZXIgY2FjaGUgZmlsZXMsIGZhc3RlciBsb2FkIHRpbWVzIGFuZCBsb3dlciBtZW1vcnkgdXNhZ2UgaXMgZ29vZC4KLSMKICMgQSBjdXN0b20gZ2V0c3RhdGUvc2V0c3RhdGUgdXNpbmcgdHVwbGVzIGlzIGFjdHVhbGx5IHdvcnRoIDE1JSBjYWNoZXNpemUgYnkKICMgYXZvaWRpbmcgZHVwbGljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcyEKIAorCiBjbGFzcyBTZXRDYWNoZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5zZXRjYWNoZSA9IHt9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKaW5kZXggMzc4ZjM4OS4uNmFiZjM4NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQpAQCAtNjUsNyArNjUsNyBAQAogICAgICAgICAgICAgIyBDYW4gcnVuIHN5bmNocm9ub3VzIGNvbW1hbmRzIHN0cmFpZ2h0IGF3YXkKICAgICAgICAgICAgIGNvbW1hbmRfbWV0aG9kID0gZ2V0YXR0cihzZWxmLmNtZHNfc3luYywgY29tbWFuZCkKICAgICAgICAgICAgIGlmIHJvX29ubHk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpIG9yIEZhbHNlID09IGdldGF0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKSBvciBub3QgZ2V0YXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCAiTm90IGFibGUgdG8gZXhlY3V0ZSBub3QgcmVhZG9ubHkgY29tbWFuZHMgaW4gcmVhZG9ubHkgbW9kZSIKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCkBAIC00MTQsNyArNDE0LDExIEBACiAgICAgZ2V0QWxsQXBwZW5kcy5yZWFkb25seSA9IFRydWUKIAogICAgIGRlZiBmaW5kUHJvdmlkZXJzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKG1jKQogICAgIGZpbmRQcm92aWRlcnMucmVhZG9ubHkgPSBUcnVlCiAKICAgICBkZWYgZmluZEJlc3RQcm92aWRlcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgpAQCAtNDQ2LDU0ICs0NTAsMzggQEAKICAgICAgICAgcmV0dXJuIGFsbF9wLCBiZXN0CiAgICAgZ2V0UnVudGltZVByb3ZpZGVycy5yZWFkb25seSA9IFRydWUKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JGaW5kVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckNtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHZhbHVlLCBvdmVycmlkZWRhdGEgPSBkYXRhc3RvcmUuX2ZpbmRWYXIobmFtZSkKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICBjb250ZW50ID0gdmFsdWUuZ2V0KCdfY29udGVudCcsIE5vbmUpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnRlbnQsIGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KToKLSAgICAgICAgICAgICAgICAjIFZhbHVlIGlzIGEgZGF0YXN0b3JlIChlLmcuIEJCX09SSUdFTlYpIC0gbmVlZCB0byBoYW5kbGUgdGhpcyBjYXJlZnVsbHkKLSAgICAgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuY2hlY2tfc3RvcmUoY29udGVudCwgVHJ1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geydfY29udGVudCc6IERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX29yaWd0eXBlJzogJ0RhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJzogb3ZlcnJpZGVkYXRhfQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNvbnRlbnQsIHNldCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsnX2NvbnRlbnQnOiBsaXN0KGNvbnRlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3JpZ3R5cGUnOiAnc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX292ZXJyaWRlcyc6IG92ZXJyaWRlZGF0YX0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10gPSBvdmVycmlkZWRhdGEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlID0ge30KLSAgICAgICAgICAgIHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddID0gb3ZlcnJpZGVkYXRhCi0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckZpbmRWYXIucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0KKyAgICAgICAgcmV0ID0gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JHZXRLZXlzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6CisgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuc3RvcmUocmV0KQorICAgICAgICAgICAgcmV0dXJuIERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KQorCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0Q21kKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBsaXN0KGRhdGFzdG9yZS5rZXlzKCkpCi0gICAgZGF0YVN0b3JlQ29ubmVjdG9yR2V0S2V5cy5yZWFkb25seSA9IFRydWUKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yR2V0VmFySGlzdG9yeShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICBkID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdLnZhcmhpc3RvcnkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoZCwgbWV0aG9kKSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdENtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBkYXRhc3RvcmUudmFyaGlzdG9yeS52YXJpYWJsZShuYW1lKQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckdldFZhckhpc3RvcnkucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIG1ldGhvZCA9IHBhcmFtc1sxXQorICAgICAgICBhcmdzID0gcGFyYW1zWzJdCisgICAgICAgIGt3YXJncyA9IHBhcmFtc1szXQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzBdCi0gICAgICAgIHZhcm5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZXhwciA9IHBhcmFtc1syXQotCi0gICAgICAgIGNvbmZpZ19kYXRhID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLnJlY2VpdmVfZGF0YXN0b3JlKGNvbmZpZ19kYXRhX2RpY3QpCi0KLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgY29uZmlnX2RhdGEpCi0gICAgICAgIHJldHVybiB2YXJwYXJzZS5weXRob25fc3ViKGV4cHIpCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0uaW5jaGlzdG9yeQorICAgICAgICByZXR1cm4gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JSZWxlYXNlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KQEAgLTUwMSwzMSArNDg5LDYgQEAKICAgICAgICAgICAgIHJhaXNlIENvbW1hbmRFcnJvcignZGF0YVN0b3JlQ29ubmVjdG9yUmVsZWFzZTogaW52YWxpZCBpbmRleCAlZCcgJSBkc2luZGV4KQogICAgICAgICBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMucmVsZWFzZShkc2luZGV4KQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvclNldFZhckZsYWcoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgdmFsdWUgPSBwYXJhbXNbM10KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGRhdGFzdG9yZS5zZXRWYXJGbGFnKG5hbWUsIGZsYWcsIHZhbHVlKQotCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckRlbFZhcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGlmIGxlbihwYXJhbXMpID4gMjoKLSAgICAgICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgICAgIGRhdGFzdG9yZS5kZWxWYXJGbGFnKG5hbWUsIGZsYWcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhc3RvcmUuZGVsVmFyKG5hbWUpCi0KLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yUmVuYW1lVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgbmFtZSA9IHBhcmFtc1sxXQotICAgICAgICBuZXduYW1lID0gcGFyYW1zWzJdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICBkYXRhc3RvcmUucmVuYW1lVmFyKG5hbWUsIG5ld25hbWUpCi0KICAgICBkZWYgcGFyc2VSZWNpcGVGaWxlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgICIiIgogICAgICAgICBQYXJzZSB0aGUgc3BlY2lmaWVkIHJlY2lwZSBmaWxlICh3aXRoIG9yIHdpdGhvdXQgYmJhcHBlbmRzKQpAQCAtNTM2LDggKzQ5OSw3IEBACiAgICAgICAgIGFwcGVuZHMgPSBwYXJhbXNbMV0KICAgICAgICAgYXBwZW5kbGlzdCA9IHBhcmFtc1syXQogICAgICAgICBpZiBsZW4ocGFyYW1zKSA+IDM6Ci0gICAgICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzNdCi0gICAgICAgICAgICBjb25maWdfZGF0YSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlcy5yZWNlaXZlX2RhdGFzdG9yZShjb25maWdfZGF0YV9kaWN0KQorICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbcGFyYW1zWzNdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBOb25lCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKaW5kZXggZTY0NDJiZi4uZTUyN2UyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTEwLDcgKzEwLDYgQEAKICMKIAogaW1wb3J0IHN5cywgb3MsIGdsb2IsIG9zLnBhdGgsIHJlLCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpAQCAtMTgsMTQgKzE3LDExIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQogaW1wb3J0IGJiLCBiYi5leGNlcHRpb25zLCBiYi5jb21tYW5kCiBmcm9tIGJiIGltcG9ydCB1dGlscywgZGF0YSwgcGFyc2UsIGV2ZW50LCBjYWNoZSwgcHJvdmlkZXJzLCB0YXNrZGF0YSwgcnVucXVldWUsIGJ1aWxkCiBpbXBvcnQgcXVldWUKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgZXJybm8KIGltcG9ydCBwcnNlcnYuc2VydgogaW1wb3J0IHB5aW5vdGlmeQogaW1wb3J0IGpzb24KQEAgLTE2OSw4ICsxNjUsOCBAQAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MSAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5jb25maWd3YXRjaGVyLmJic2VlbiA9IFtdCi0gICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYndhdGNoZWRmaWxlcyA9IFtdCisgICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYnNlZW4gPSBzZXQoKQorICAgICAgICBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBzZXQoKQogICAgICAgICBzZWxmLmNvbmZpZ25vdGlmaWVyID0gcHlpbm90aWZ5Lk5vdGlmaWVyKHNlbGYuY29uZmlnd2F0Y2hlciwgc2VsZi5jb25maWdfbm90aWZpY2F0aW9ucykKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeTIgJXMiICUgdGltZS50aW1lKCkpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQpAQCAtMTgwLDggKzE3Niw4IEBACiAgICAgICAgIHNlbGYud2F0Y2hlciA9IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXIoKQogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MyAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHNlbGYud2F0Y2hlci5iYnNlZW4gPSBbXQotICAgICAgICBzZWxmLndhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBbXQorICAgICAgICBzZWxmLndhdGNoZXIuYmJzZWVuID0gc2V0KCkKKyAgICAgICAgc2VsZi53YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gc2V0KCkKICAgICAgICAgc2VsZi5ub3RpZmllciA9IHB5aW5vdGlmeS5Ob3RpZmllcihzZWxmLndhdGNoZXIsIHNlbGYubm90aWZpY2F0aW9ucykKIAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5IGNvbXBsZXRlICVzIiAlIHRpbWUudGltZSgpKQpAQCAtMjc4LDE0ICsyNzQsMTQgQEAKICAgICAgICAgaWYgbm90IHdhdGNoZXI6CiAgICAgICAgICAgICB3YXRjaGVyID0gc2VsZi53YXRjaGVyCiAgICAgICAgIGZvciBpIGluIGRlcHM6Ci0gICAgICAgICAgICB3YXRjaGVyLmJid2F0Y2hlZGZpbGVzLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQoaVswXSkKICAgICAgICAgICAgIGlmIGRpcnM6CiAgICAgICAgICAgICAgICAgZiA9IGlbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZiA9IG9zLnBhdGguZGlybmFtZShpWzBdKQogICAgICAgICAgICAgaWYgZiBpbiB3YXRjaGVyLmJic2VlbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYXBwZW5kKGYpCisgICAgICAgICAgICB3YXRjaGVyLmJic2Vlbi5hZGQoZikKICAgICAgICAgICAgIHdhdGNodGFyZ2V0ID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFdlIHRyeSBhbmQgYWRkIHdhdGNoZXMgZm9yIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3QgYnV0IGlmIHRoZXkgZGlkLCB3b3VsZCBpbmZsdWVuY2UKQEAgLTI5NCw3ICsyOTAsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5hZGRfd2F0Y2goZiwgc2VsZi53YXRjaG1hc2ssIHF1aWV0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBpZiB3YXRjaHRhcmdldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJ3YXRjaGVkZmlsZXMuYXBwZW5kKHdhdGNodGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQod2F0Y2h0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PRU5UJyBpbiBzdHIoZSk6CkBAIC0zMDIsNyArMjk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmRpcm5hbWUoZikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYgaW4gd2F0Y2hlci5iYnNlZW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJzZWVuLmFwcGVuZChmKQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYWRkKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PU1BDJyBpbiBzdHIoZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcmxvZy5lcnJvcigiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2Ugb3IgZXhjZWVkcyBmcy5pbm90aWZ5Lm1heF91c2VyX3dhdGNoZXM/IikKQEAgLTEwMjcsMTYgKzEwMjMsMTYgQEAKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKGZpbGVwYXR0ZXJuLCBtYXRjaGVzKSwgc2VsZi5kYXRhKQogCiAgICAgZGVmIGZpbmRQcm92aWRlcnMoc2VsZiwgbWM9JycpOgotICAgICAgICByZXR1cm4gYmIucHJvdmlkZXJzLmZpbmRQcm92aWRlcnMoc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCisgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZFByb3ZpZGVycyhzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKIAogICAgIGRlZiBmaW5kQmVzdFByb3ZpZGVyKHNlbGYsIHBuLCBtYz0nJyk6CiAgICAgICAgIGlmIHBuIGluIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wcm92aWRlcnM6CiAgICAgICAgICAgICBmaWxlbmFtZXMgPSBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJvdmlkZXJzW3BuXQotICAgICAgICAgICAgZWxpZ2libGUsIGZvdW5kVW5pcXVlID0gYmIucHJvdmlkZXJzLmZpbHRlclByb3ZpZGVycyhmaWxlbmFtZXMsIHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSkKKyAgICAgICAgICAgIGVsaWdpYmxlLCBmb3VuZFVuaXF1ZSA9IGJiLnByb3ZpZGVycy5maWx0ZXJQcm92aWRlcnMoZmlsZW5hbWVzLCBwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10pCiAgICAgICAgICAgICBmaWxlbmFtZSA9IGVsaWdpYmxlWzBdCiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgZmlsZW5hbWUKICAgICAgICAgZWxpZiBwbiBpbiBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuOgotICAgICAgICAgICAgcmV0dXJuIGJiLnByb3ZpZGVycy5maW5kQmVzdFByb3ZpZGVyKHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKKyAgICAgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgTm9uZQogCkBAIC0xMjA4LDcgKzEyMDQsNyBAQAogICAgICAgICAgICAgZm9yIGMgaW4gY29sbGVjdGlvbl9saXN0OgogICAgICAgICAgICAgICAgIGNhbGNfbGF5ZXJfcHJpb3JpdHkoYykKICAgICAgICAgICAgICAgICByZWdleCA9IHNlbGYuZGF0YS5nZXRWYXIoIkJCRklMRV9QQVRURVJOXyVzIiAlIGMpCi0gICAgICAgICAgICAgICAgaWYgcmVnZXggPT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZWdleCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBwYXJzZWxvZy5lcnJvcigiQkJGSUxFX1BBVFRFUk5fJXMgbm90IGRlZmluZWQiICUgYykKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTMxNCw3ICsxMzEwLDcgQEAKICAgICAgICAgc2VsZi5wYXJzZUNvbmZpZ3VyYXRpb24oKQogCiAgICAgICAgICMgSWYgd2UgYXJlIHRvbGQgdG8gZG8gdGhlIE5vbmUgdGFzayB0aGVuIHF1ZXJ5IHRoZSBkZWZhdWx0IHRhc2sKLSAgICAgICAgaWYgKHRhc2sgPT0gTm9uZSk6CisgICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgIHRhc2sgPSBzZWxmLmNvbmZpZ3VyYXRpb24uY21kCiAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgogICAgICAgICAgICAgdGFzayA9ICJkb18lcyIgJSB0YXNrCkBAIC0xNDU4LDcgKzE0NTQsNyBAQAogICAgICAgICBzZWxmLmJ1aWxkU2V0VmFycygpCiAKICAgICAgICAgIyBJZiB3ZSBhcmUgdG9sZCB0byBkbyB0aGUgTm9uZSB0YXNrIHRoZW4gcXVlcnkgdGhlIGRlZmF1bHQgdGFzawotICAgICAgICBpZiAodGFzayA9PSBOb25lKToKKyAgICAgICAgaWYgdGFzayBpcyBOb25lOgogICAgICAgICAgICAgdGFzayA9IHNlbGYuY29uZmlndXJhdGlvbi5jbWQKIAogICAgICAgICBpZiBub3QgdGFzay5zdGFydHN3aXRoKCJkb18iKToKQEAgLTE2NjksNiArMTY2NSw4IEBACiAgICAgICAgIHNlbGYuY29tbWFuZC5yZXNldCgpCiAgICAgICAgIHNlbGYuZGF0YWJ1aWxkZXIucmVzZXQoKQogICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLmRhdGFidWlsZGVyLmRhdGEKKyAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gRmFsc2UKIAogCiBjbGFzcyBDb29rZXJFeGl0KGJiLmV2ZW50LkV2ZW50KToKQEAgLTE2OTEsNyArMTY4OSw3IEBACiAgICAgZGVmIGNhbGNfYmJmaWxlX3ByaW9yaXR5KCBzZWxmLCBmaWxlbmFtZSwgbWF0Y2hlZCA9IE5vbmUgKToKICAgICAgICAgZm9yIF8sIF8sIHJlZ2V4LCBwcmkgaW4gc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXM6CiAgICAgICAgICAgICBpZiByZWdleC5tYXRjaChmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaWYgbWF0Y2hlZCAhPSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG1hdGNoZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWdleCBpbiBtYXRjaGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hZGQocmVnZXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByaQpAQCAtMTc4OCw3ICsxNzg2LDcgQEAKICAgICAgICAgICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIG9sZGVyIHN0eWxlIHNpbmdsZSByZWdleCwgaXQncyBwb3NzaWJsZSBmb3IgQkJNQVNLCiAgICAgICAgICAgICAgICAgIyB0byBlbmQgdXAgYmVnaW5uaW5nIHdpdGggJ3wnLCB3aGljaCBtYXRjaGVzIGFuZCBtYXNrcyBfZXZlcnl0aGluZ18uCiAgICAgICAgICAgICAgICAgaWYgbWFzay5zdGFydHN3aXRoKCJ8Iik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rsb2cud2FybigiQkJNQVNLIGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBiZWdpbm5pbmcgd2l0aCAnfCcsIGZpeGluZzogJXMiICUgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdGxvZy53YXJuaW5nKCJCQk1BU0sgY29udGFpbnMgcmVndWxhciBleHByZXNzaW9uIGJlZ2lubmluZyB3aXRoICd8JywgZml4aW5nOiAlcyIgJSBtYXNrKQogICAgICAgICAgICAgICAgICAgICBtYXNrID0gbWFza1sxOl0KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlLmNvbXBpbGUobWFzaykKQEAgLTE5NDQsNyArMTk0Miw4IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5wYXJzZSgqam9iKQotCisgICAgICAgICAgICAgICAgIyBDbGVhciB0aGUgc2lnZ2VuIGNhY2hlIGFmdGVyIHBhcnNpbmcgdG8gY29udHJvbCBtZW1vcnkgdXNhZ2UsIGl0cyBodWdlCisgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnBvc3RwYXJzaW5nX2NsZWFuX2NhY2hlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHMucHV0KHJlc3VsdCwgdGltZW91dD0wLjI1KQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkZ1bGw6CkBAIC0xOTUyLDYgKzE5NTEsNyBAQAogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGZpbGVuYW1lLCBhcHBlbmRzKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2ZpbHRlciA9IGJiLmV2ZW50LkxvZ0hhbmRsZXIuZmlsdGVyCiAgICAgICAgICAgICAjIFJlY29yZCB0aGUgZmlsZW5hbWUgd2UncmUgcGFyc2luZyBpbnRvIGFueSBldmVudHMgZ2VuZXJhdGVkCiAgICAgICAgICAgICBkZWYgcGFyc2VfZmlsdGVyKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICAgICAgICAgcmVjb3JkLnRhc2twaWQgPSBiYi5ldmVudC53b3JrZXJfcGlkCkBAIC0xOTc0LDYgKzE5NzQsOCBAQAogICAgICAgICAjIGEgU3lzdGVtRXhpdCBldmVudCBmb3IgZXhhbXBsZS4KICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAgcmV0dXJuIFRydWUsIFBhcnNpbmdGYWlsdXJlKGV4YywgZmlsZW5hbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiYi5ldmVudC5Mb2dIYW5kbGVyLmZpbHRlciA9IG9yaWdmaWx0ZXIKIAogY2xhc3MgQ29va2VyUGFyc2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tlciwgZmlsZWxpc3QsIG1hc2tlZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkKaW5kZXggMGQ3NWQwYy4uYjA2ODNjNSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQpAQCAtNzksNyArNzksNyBAQAogICAgIHJldHVybiBkLmV4cGFuZChzLCB2YXJuYW1lKQogCiBkZWYgZXhwYW5kS2V5cyhhbHRlcmRhdGEsIHJlYWRkYXRhID0gTm9uZSk6Ci0gICAgaWYgcmVhZGRhdGEgPT0gTm9uZToKKyAgICBpZiByZWFkZGF0YSBpcyBOb25lOgogICAgICAgICByZWFkZGF0YSA9IGFsdGVyZGF0YQogCiAgICAgdG9kb2xpc3QgPSB7fQpAQCAtMzY1LDcgKzM2NSw3IEBACiAgICAgI2JiLm5vdGUoIlZhcmlhYmxlICVzIHJlZmVyZW5jZXMgJXMgYW5kIGNhbGxzICVzIiAlIChrZXksIHN0cihkZXBzKSwgc3RyKGV4ZWNzKSkpCiAgICAgI2Quc2V0VmFyRmxhZyhrZXksICJ2YXJkZXBzIiwgZGVwcykKIAotZGVmIGdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKToKK2RlZiBnZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgd2hpdGVsaXN0KToKIAogICAgIGtleXMgPSBzZXQoa2V5IGZvciBrZXkgaW4gZCBpZiBub3Qga2V5LnN0YXJ0c3dpdGgoIl9fIikpCiAgICAgc2hlbGxkZXBzID0gc2V0KGtleSBmb3Iga2V5IGluIGQuZ2V0VmFyKCJfX2V4cG9ydGxpc3QiLCBGYWxzZSkgaWYgZC5nZXRWYXJGbGFnKGtleSwgImV4cG9ydCIsIEZhbHNlKSBhbmQgbm90IGQuZ2V0VmFyRmxhZyhrZXksICJ1bmV4cG9ydCIsIEZhbHNlKSkKQEAgLTM4MCw3ICszODAsNyBAQAogICAgICAgICBuZXdkZXBzID0gZGVwc1t0YXNrXQogICAgICAgICBzZWVuID0gc2V0KCkKICAgICAgICAgd2hpbGUgbmV3ZGVwczoKLSAgICAgICAgICAgIG5leHRkZXBzID0gbmV3ZGVwcworICAgICAgICAgICAgbmV4dGRlcHMgPSBuZXdkZXBzIC0gd2hpdGVsaXN0CiAgICAgICAgICAgICBzZWVuIHw9IG5leHRkZXBzCiAgICAgICAgICAgICBuZXdkZXBzID0gc2V0KCkKICAgICAgICAgICAgIGZvciBkZXAgaW4gbmV4dGRlcHM6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKaW5kZXggZGQ1YzYxOC4uN2YxYjZkYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQpAQCAtMTA3LDEwICsxMDcsNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb2RlID0gbWF0Y2guZ3JvdXAoKVszOi0xXQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBzZWxmLmQ6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kWyJfcmVtb3RlX2RhdGEiXQotICAgICAgICAgICAgICAgIHJldHVybiBjb25uZWN0b3IuZXhwYW5kUHl0aG9uUmVmKHNlbGYudmFybmFtZSwgY29kZSwgc2VsZi5kKQotCiAgICAgICAgICAgICBpZiBzZWxmLnZhcm5hbWU6CiAgICAgICAgICAgICAgICAgdmFybmFtZSA9ICdWYXIgPCVzPicgJSBzZWxmLnZhcm5hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjgsMTIgKzI2NCw3IEBACiAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1tuZXd2YXJdLmFwcGVuZChpLmNvcHkoKSkKIAogICAgIGRlZiB2YXJpYWJsZShzZWxmLCB2YXIpOgotICAgICAgICByZW1vdGVfY29ubmVjdG9yID0gc2VsZi5kYXRhcm9vdC5nZXRWYXIoJ19yZW1vdGVfZGF0YScsIEZhbHNlKQotICAgICAgICBpZiByZW1vdGVfY29ubmVjdG9yOgotICAgICAgICAgICAgdmFyaGlzdG9yeSA9IHJlbW90ZV9jb25uZWN0b3IuZ2V0VmFySGlzdG9yeSh2YXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YXJoaXN0b3J5ID0gW10KLQorICAgICAgICB2YXJoaXN0b3J5ID0gW10KICAgICAgICAgaWYgdmFyIGluIHNlbGYudmFyaWFibGVzOgogICAgICAgICAgICAgdmFyaGlzdG9yeS5leHRlbmQoc2VsZi52YXJpYWJsZXNbdmFyXSkKICAgICAgICAgcmV0dXJuIHZhcmhpc3RvcnkKQEAgLTMzOCwxMSArMzI5LDEyIEBACiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgIHJldHVybiBsaW5lcwogCi0gICAgZGVmIGdldF92YXJpYWJsZV9pdGVtc19maWxlcyhzZWxmLCB2YXIsIGQpOgorICAgIGRlZiBnZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoc2VsZiwgdmFyKToKICAgICAgICAgIiIiCiAgICAgICAgIFVzZSB2YXJpYWJsZSBoaXN0b3J5IHRvIG1hcCBpdGVtcyBhZGRlZCB0byBhIGxpc3QgdmFyaWFibGUgYW5kCiAgICAgICAgIHRoZSBmaWxlcyBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuCiAgICAgICAgICIiIgorICAgICAgICBkID0gc2VsZi5kYXRhcm9vdAogICAgICAgICBoaXN0b3J5ID0gc2VsZi52YXJpYWJsZSh2YXIpCiAgICAgICAgIGZpbmFsaXRlbXMgPSAoZC5nZXRWYXIodmFyKSBvciAnJykuc3BsaXQoKQogICAgICAgICBmaWxlbWFwID0ge30KQEAgLTQ3MCwxMCArNDYyLDYgQEAKICAgICAgICAgICAgIGlmIHZhciBpbiBkZXN0OgogICAgICAgICAgICAgICAgIHJldHVybiBkZXN0W3Zhcl0sIHNlbGYub3ZlcnJpZGVkYXRhLmdldCh2YXIsIE5vbmUpCiAKLSAgICAgICAgICAgIGlmICJfcmVtb3RlX2RhdGEiIGluIGRlc3Q6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gZGVzdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdG9yLmdldFZhcih2YXIpCi0KICAgICAgICAgICAgIGlmICJfZGF0YSIgbm90IGluIGRlc3Q6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGRlc3QgPSBkZXN0WyJfZGF0YSJdCkBAIC00OTgsMTIgKzQ4Niw2IEBACiAgICAgICAgIGlmICdwYXJzaW5nJyBpbiBsb2dpbmZvOgogICAgICAgICAgICAgcGFyc2luZz1UcnVlCiAKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnNldFZhcih2YXIsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCiAKQEAgLTYwNywxMSArNTg5LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFJlbmFtZSB0aGUgdmFyaWFibGUga2V5IHRvIG5ld2tleQogICAgICAgICAiIiIKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnJlbmFtZVZhcihrZXksIG5ld2tleSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGtleSA9PSBuZXdrZXk6CisgICAgICAgICAgICBiYi53YXJuKCJDYWxsaW5nIHJlbmFtZVZhciB3aXRoIGVxdWl2YWxlbnQga2V5cyAoJXMpIGlzIGludmFsaWQiICUga2V5KQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdmFsID0gc2VsZi5nZXRWYXIoa2V5LCAwLCBwYXJzaW5nPVRydWUpCiAgICAgICAgIGlmIHZhbCBpcyBub3QgTm9uZToKQEAgLTY1OCwxMSArNjM4LDYgQEAKIAogICAgIGRlZiBkZWxWYXIoc2VsZiwgdmFyLCAqKmxvZ2luZm8pOgogICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZSA9IHt9Ci0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5kZWxWYXIodmFyKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2dpbmZvWydkZXRhaWwnXSA9ICIiCiAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAnZGVsJwpAQCAtNjkwLDExICs2NjUsNiBAQAogCiAgICAgZGVmIHNldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCB2YWx1ZSwgKipsb2dpbmZvKToKICAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQotICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICByZXMgPSBjb25uZWN0b3Iuc2V0VmFyRmxhZyh2YXIsIGZsYWcsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCkBAIC04NDUsMTEgKzgxNSw2IEBACiAKICAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCB2YXIsIGZsYWcsICoqbG9naW5mbyk6CiAgICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLmRlbFZhckZsYWcodmFyLCBmbGFnKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2NhbF92YXIsIF8gPSBzZWxmLl9maW5kVmFyKHZhcikKICAgICAgICAgaWYgbm90IGxvY2FsX3ZhcjoKQEAgLTk2Nyw3ICs5MzIsNyBAQAogCiAgICAgZGVmIGxvY2Fsa2V5cyhzZWxmKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnLCAnX3JlbW90ZV9kYXRhJ106CisgICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnXToKICAgICAgICAgICAgICAgICB5aWVsZCBrZXkKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKQEAgLTk3Niw3ICs5NDEsNyBAQAogICAgICAgICBkZWYga2V5bGlzdChkKTogICAgICAgIAogICAgICAgICAgICAga2xpc3QgPSBzZXQoKQogICAgICAgICAgICAgZm9yIGtleSBpbiBkOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIiwgIl9yZW1vdGVfZGF0YSJdOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIl06CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYga2V5IGluIGRlbGV0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05OTAsMTMgKzk1NSw2IEBACiAgICAgICAgICAgICBpZiAiX2RhdGEiIGluIGQ6CiAgICAgICAgICAgICAgICAga2xpc3QgfD0ga2V5bGlzdChkWyJfZGF0YSJdKQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBkOgotICAgICAgICAgICAgICAgIGNvbm5lY3RvciA9IGRbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiBjb25uZWN0b3IuZ2V0S2V5cygpOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGVsZXRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGtsaXN0LmFkZChrZXkpCi0KICAgICAgICAgICAgIHJldHVybiBrbGlzdAogCiAgICAgICAgIHNlbGYubmVlZF9vdmVycmlkZXMoKQpAQCAtMTA0Miw3ICsxMDAwLDEwIEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgdmFsdWUgPSBkLmdldFZhcihrZXksIEZhbHNlKSBvciAiIgotICAgICAgICAgICAgZGF0YS51cGRhdGUoe2tleTp2YWx1ZX0pCisgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0eXBlKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWUuZ2V0X2hhc2goKX0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWV9KQogCiAgICAgICAgICAgICB2YXJmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5LCBpbnRlcm5hbGZsYWdzID0gVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCB2YXJmbGFnczoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CmluZGV4IGQ0NDYyMWUuLmQxMzU5ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtMTAsOCArMTAsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYXRleGl0CkBAIC0zNDcsNyArMzQ2LDcgQEAKIAogZGVmIGdldE5hbWUoZSk6CiAgICAgIiIiUmV0dXJucyB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGNsYXNzIGluc3RhbmNlIiIiCi0gICAgaWYgZ2V0YXR0cihlLCAiX19uYW1lX18iLCBOb25lKSA9PSBOb25lOgorICAgIGlmIGdldGF0dHIoZSwgIl9fbmFtZV9fIiwgTm9uZSkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIGUuX19jbGFzc19fLl9fbmFtZV9fCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGUuX19uYW1lX18KQEAgLTUwOSw3ICs1MDgsNyBAQAogICAgICAgICBleHRyYSA9ICcnCiAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFzb25zOgogICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKHNlbGYuX2Nsb3NlX21hdGNoZXMpCisgICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihzb3J0ZWQoc2V0KHNlbGYuX2Nsb3NlX21hdGNoZXMpKSkKIAogICAgICAgICBpZiBzZWxmLl9kZXBlbmRlZXM6CiAgICAgICAgICAgICBtc2cgPSAiTm90aGluZyAlc1BST1ZJREVTICclcycgKGJ1dCAlcyAlc0RFUEVORFMgb24gb3Igb3RoZXJ3aXNlIHJlcXVpcmVzIGl0KSVzIiAlIChyLCBzZWxmLl9pdGVtLCAiLCAiLmpvaW4oc2VsZi5fZGVwZW5kZWVzKSwgciwgZXh0cmEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IDA3ZGU2YzIuLmViMTEyZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC0zMyw2ICszMyw5IEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkZldGNoZXIiKQogCitDSEVDS1NVTV9MSVNUID0gWyAibWQ1IiwgInNoYTI1NiIsICJzaGExIiwgInNoYTM4NCIsICJzaGE1MTIiIF0KK1NIT1dOX0NIRUNLU1VNX0xJU1QgPSBbInNoYTI1NiJdCisKIGNsYXNzIEJCRmV0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICAiIiJDbGFzcyBhbGwgZmV0Y2ggZXhjZXB0aW9ucyBpbmhlcml0IGZyb20iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CkBAIC0xMzEsMTAgKzEzNCw5IEBACiAgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmKQogCiBjbGFzcyBNaXNzaW5nQ2hlY2tzdW1FdmVudChiYi5ldmVudC5FdmVudCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWQ1c3VtLCBzaGEyNTZzdW0pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsICoqY2hlY2tzdW1zKToKICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5jaGVja3N1bXMgPSB7J21kNXN1bSc6IG1kNXN1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTI1NnN1bSc6IHNoYTI1NnN1bX0KKyAgICAgICAgc2VsZi5jaGVja3N1bXMgPSBjaGVja3N1bXMKICAgICAgICAgYmIuZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKIAogCkBAIC00ODQsMTcgKzQ4NiwyMiBAQAogICAgIENhbGxlZCB0byBpbml0aWFsaXplIHRoZSBmZXRjaGVycyBvbmNlIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgaXMga25vd24uCiAgICAgQ2FsbHMgYmVmb3JlIHRoaXMgbXVzdCBub3QgaGl0IHRoZSBjYWNoZS4KICAgICAiIiIKKworICAgIHJldnMgPSBiYi5wZXJzaXN0X2RhdGEucGVyc2lzdCgnQkJfVVJJX0hFQURSRVZTJywgZCkKKyAgICB0cnk6CisgICAgICAgICMgZmV0Y2hlcl9pbml0IGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgc28gbWFrZSBzdXJlIHdlIG9ubHkgc2F2ZSB0aGUKKyAgICAgICAgIyByZXZzIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAgaWYgbm90IGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2czoKKyAgICAgICAgICAgIGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2cyA9IGRpY3QocmV2cykKKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKwogICAgICMgV2hlbiB0byBkcm9wIFNDTSBoZWFkIHJldmlzaW9ucyBjb250cm9sbGVkIGJ5IHVzZXIgcG9saWN5CiAgICAgc3JjcmV2X3BvbGljeSA9IGQuZ2V0VmFyKCdCQl9TUkNSRVZfUE9MSUNZJykgb3IgImNsZWFyIgogICAgIGlmIHNyY3Jldl9wb2xpY3kgPT0gImNhY2hlIjoKICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJLZWVwaW5nIFNSQ1JFViBjYWNoZSBkdWUgdG8gY2FjaGUgcG9saWN5IG9mOiAlcyIsIHNyY3Jldl9wb2xpY3kpCiAgICAgZWxpZiBzcmNyZXZfcG9saWN5ID09ICJjbGVhciI6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiQ2xlYXJpbmcgU1JDUkVWIGNhY2hlIGR1ZSB0byBjYWNoZSBwb2xpY3kgb2Y6ICVzIiwgc3JjcmV2X3BvbGljeSkKLSAgICAgICAgcmV2cyA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMgPSByZXZzLml0ZW1zKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwogICAgICAgICByZXZzLmNsZWFyKCkKICAgICBlbHNlOgogICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkIFNSQ1JFViBjYWNoZSBwb2xpY3kgb2Y6ICVzIiAlIHNyY3Jldl9wb2xpY3kpCkBAIC01MTMsMjIgKzUyMCwxMiBAQAogCiBkZWYgZmV0Y2hlcl9jb21wYXJlX3JldmlzaW9ucyhkKToKICAgICAiIiIKLSAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RhbnQgY2FjaGUgd2l0aCBjdXJyZW50IHZhbHVlcyBhbmQKLSAgICByZXR1cm4gdHJ1ZS9mYWxzZSBvbiB3aGV0aGVyIHRoZXkndmUgY2hhbmdlZC4KKyAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RlbnQgY2FjaGUgd2l0aCB0aGUgc2F2ZWQgdmFsdWVzIGZyb20KKyAgICB3aGVuIGJpdGJha2Ugd2FzIHN0YXJ0ZWQgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkLgogICAgICIiIgogCi0gICAgZGF0YSA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKS5pdGVtcygpCi0gICAgZGF0YTIgPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKLQotICAgIGNoYW5nZWQgPSBGYWxzZQotICAgIGZvciBrZXkgaW4gZGF0YToKLSAgICAgICAgaWYga2V5IG5vdCBpbiBkYXRhMiBvciBkYXRhMltrZXldICE9IGRhdGFba2V5XToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXMgY2hhbmdlZCIsIGtleSkKLSAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICIlcyBkaWQgbm90IGNoYW5nZSIsIGtleSkKLSAgICByZXR1cm4gRmFsc2UKKyAgICBoZWFkcmV2cyA9IGRpY3QoYmIucGVyc2lzdF9kYXRhLnBlcnNpc3QoJ0JCX1VSSV9IRUFEUkVWUycsIGQpKQorICAgIHJldHVybiBoZWFkcmV2cyAhPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKIAogZGVmIG1pcnJvcl9mcm9tX3N0cmluZyhkYXRhKToKICAgICBtaXJyb3JzID0gKGRhdGEgb3IgIiIpLnJlcGxhY2UoJ1xcbicsJyAnKS5zcGxpdCgpCkBAIC01NTIsNzEgKzU0OSw4NCBAQAogICAgIGRvd25sb2FkaW5nLiBTZWUgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcxLgogICAgICIiIgogCi0gICAgX01ENV9LRVkgPSAibWQ1IgotICAgIF9TSEEyNTZfS0VZID0gInNoYTI1NiIKLQogICAgIGlmIHVkLmlnbm9yZV9jaGVja3N1bXMgb3Igbm90IHVkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bSh1ZCk6CiAgICAgICAgIHJldHVybiB7fQogCi0gICAgaWYgX01ENV9LRVkgaW4gcHJlY29tcHV0ZWQ6Ci0gICAgICAgIG1kNWRhdGEgPSBwcmVjb21wdXRlZFtfTUQ1X0tFWV0KLSAgICBlbHNlOgotICAgICAgICBtZDVkYXRhID0gYmIudXRpbHMubWQ1X2ZpbGUodWQubG9jYWxwYXRoKQorICAgIGRlZiBjb21wdXRlX2NoZWNrc3VtX2luZm8oY2hlY2tzdW1faWQpOgorICAgICAgICBjaGVja3N1bV9uYW1lID0gZ2V0YXR0cih1ZCwgIiVzX25hbWUiICUgY2hlY2tzdW1faWQpCiAKLSAgICBpZiBfU0hBMjU2X0tFWSBpbiBwcmVjb21wdXRlZDoKLSAgICAgICAgc2hhMjU2ZGF0YSA9IHByZWNvbXB1dGVkW19TSEEyNTZfS0VZXQotICAgIGVsc2U6Ci0gICAgICAgIHNoYTI1NmRhdGEgPSBiYi51dGlscy5zaGEyNTZfZmlsZSh1ZC5sb2NhbHBhdGgpCisgICAgICAgIGlmIGNoZWNrc3VtX2lkIGluIHByZWNvbXB1dGVkOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IHByZWNvbXB1dGVkW2NoZWNrc3VtX2lkXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IGdldGF0dHIoYmIudXRpbHMsICIlc19maWxlIiAlIGNoZWNrc3VtX2lkKSh1ZC5sb2NhbHBhdGgpCiAKLSAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCkgYW5kIG5vdCB1ZC5tZDVfZXhwZWN0ZWQgYW5kIG5vdCB1ZC5zaGEyNTZfZXhwZWN0ZWQ6Ci0gICAgICAgICMgSWYgc3RyaWN0IGNoZWNraW5nIGVuYWJsZWQgYW5kIG5laXRoZXIgc3VtIGRlZmluZWQsIHJhaXNlIGVycm9yCisgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZ2V0YXR0cih1ZCwgIiVzX2V4cGVjdGVkIiAlIGNoZWNrc3VtX2lkKQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiaWQiOiBjaGVja3N1bV9pZCwKKyAgICAgICAgICAgICJuYW1lIjogY2hlY2tzdW1fbmFtZSwKKyAgICAgICAgICAgICJkYXRhIjogY2hlY2tzdW1fZGF0YSwKKyAgICAgICAgICAgICJleHBlY3RlZCI6IGNoZWNrc3VtX2V4cGVjdGVkCisgICAgICAgIH0KKworICAgIGNoZWNrc3VtX2luZm9zID0gW10KKyAgICBmb3IgY2hlY2tzdW1faWQgaW4gQ0hFQ0tTVU1fTElTVDoKKyAgICAgICAgY2hlY2tzdW1faW5mb3MuYXBwZW5kKGNvbXB1dGVfY2hlY2tzdW1faW5mbyhjaGVja3N1bV9pZCkpCisKKyAgICBjaGVja3N1bV9kaWN0ID0ge2NpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisgICAgY2hlY2tzdW1fZXZlbnQgPSB7IiVzc3VtIiAlIGNpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisKKyAgICBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3M6CisgICAgICAgIGlmIGNpWyJpZCJdIGluIFNIT1dOX0NIRUNLU1VNX0xJU1Q6CisgICAgICAgICAgICBjaGVja3N1bV9saW5lcyA9IFsiU1JDX1VSSVslc10gPSBcIiVzXCIiICUgKGNpWyJuYW1lIl0sIGNpWyJkYXRhIl0pXQorCisgICAgIyBJZiBubyBjaGVja3N1bSBoYXMgYmVlbiBwcm92aWRlZAorICAgIGlmIHVkLm1ldGhvZC5yZWNvbW1lbmRzX2NoZWNrc3VtKHVkKSBhbmQgYWxsKGNpWyJleHBlY3RlZCJdIGlzIE5vbmUgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zKToKKyAgICAgICAgbWVzc2FnZXMgPSBbXQogICAgICAgICBzdHJpY3QgPSBkLmdldFZhcigiQkJfU1RSSUNUX0NIRUNLU1VNIikgb3IgIjAiCi0gICAgICAgIGlmIHN0cmljdCA9PSAiMSI6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNoZWNrc3VtIHNwZWNpZmllZCBmb3IgJXMsIHBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQubG9jYWxwYXRoLCB1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKSkKLSAgICAgICAgICAgIHJhaXNlIE5vQ2hlY2tzdW1FcnJvcignTWlzc2luZyBTUkNfVVJJIGNoZWNrc3VtJywgdWQudXJsKQogCi0gICAgICAgIGJiLmV2ZW50LmZpcmUoTWlzc2luZ0NoZWNrc3VtRXZlbnQodWQudXJsLCBtZDVkYXRhLCBzaGEyNTZkYXRhKSwgZCkKKyAgICAgICAgIyBJZiBzdHJpY3QgY2hlY2tpbmcgZW5hYmxlZCBhbmQgbmVpdGhlciBzdW0gZGVmaW5lZCwgcmFpc2UgZXJyb3IKKyAgICAgICAgaWYgc3RyaWN0ID09ICIxIjoKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiTm8gY2hlY2tzdW0gc3BlY2lmaWVkIGZvciAnJXMnLCBwbGVhc2UgYWRkIGF0ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICAgICAgbWVzc2FnZXMuZXh0ZW5kKGNoZWNrc3VtX2xpbmVzKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJcbiIuam9pbihtZXNzYWdlcykpCisgICAgICAgICAgICByYWlzZSBOb0NoZWNrc3VtRXJyb3IoIk1pc3NpbmcgU1JDX1VSSSBjaGVja3N1bSIsIHVkLnVybCkKKworICAgICAgICBiYi5ldmVudC5maXJlKE1pc3NpbmdDaGVja3N1bUV2ZW50KHVkLnVybCwgKipjaGVja3N1bV9ldmVudCksIGQpCiAKICAgICAgICAgaWYgc3RyaWN0ID09ICJpZ25vcmUiOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBfTUQ1X0tFWTogbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrc3VtX2RpY3QKIAogICAgICAgICAjIExvZyBtaXNzaW5nIHN1bXMgc28gdXNlciBjYW4gbW9yZSBlYXNpbHkgYWRkIHRoZW0KLSAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3NpbmcgbWQ1IFNSQ19VUkkgY2hlY2tzdW0gZm9yICVzLCBjb25zaWRlciBhZGRpbmcgdG8gdGhlIHJlY2lwZTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUklbJXNdID0gIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAgIHVkLmxvY2FscGF0aCwgdWQubWQ1X25hbWUsIG1kNWRhdGEpCi0gICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIHNoYTI1NiBTUkNfVVJJIGNoZWNrc3VtIGZvciAlcywgY29uc2lkZXIgYWRkaW5nIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyInLAotICAgICAgICAgICAgICAgICAgICAgICB1ZC5sb2NhbHBhdGgsIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKQorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIk1pc3NpbmcgY2hlY2tzdW0gZm9yICclcycsIGNvbnNpZGVyIGFkZGluZyBhdCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICBtZXNzYWdlcy5leHRlbmQoY2hlY2tzdW1fbGluZXMpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJcbiIuam9pbihtZXNzYWdlcykpCiAKICAgICAjIFdlIHdhbnQgdG8gYWxlcnQgdGhlIHVzZXIgaWYgYSBjaGVja3N1bSBpcyBkZWZpbmVkIGluIHRoZSByZWNpcGUgYnV0CiAgICAgIyBpdCBkb2VzIG5vdCBtYXRjaC4KLSAgICBtc2cgPSAiIgotICAgIG1pc21hdGNoID0gRmFsc2UKLSAgICBpZiB1ZC5tZDVfZXhwZWN0ZWQgYW5kIHVkLm1kNV9leHBlY3RlZCAhPSBtZDVkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnbWQ1JywgbWQ1ZGF0YSwgdWQubWQ1X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgbWVzc2FnZXMgPSBbXQorICAgIG1lc3NhZ2VzLmFwcGVuZCgiQ2hlY2tzdW0gbWlzbWF0Y2ghIikKKyAgICBiYWRfY2hlY2tzdW0gPSBOb25lCiAKLSAgICBpZiB1ZC5zaGEyNTZfZXhwZWN0ZWQgYW5kIHVkLnNoYTI1Nl9leHBlY3RlZCAhPSBzaGEyNTZkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnc2hhMjU2Jywgc2hhMjU2ZGF0YSwgdWQuc2hhMjU2X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zOgorICAgICAgICBpZiBjaVsiZXhwZWN0ZWQiXSBhbmQgY2lbImV4cGVjdGVkIl0gIT0gY2lbImRhdGEiXToKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIiAlICh1ZC5sb2NhbHBhdGgsIGNpWyJpZCJdLCBjaVsiZGF0YSJdLCBjaVsiZXhwZWN0ZWQiXSkpCisgICAgICAgICAgICBiYWRfY2hlY2tzdW0gPSBjaVsiZGF0YSJdCiAKLSAgICBpZiBtaXNtYXRjaDoKLSAgICAgICAgbXNnID0gbXNnICsgJ1xuSWYgdGhpcyBjaGFuZ2UgaXMgZXhwZWN0ZWQgKGUuZy4geW91IGhhdmUgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiB3aXRob3V0IHVwZGF0aW5nIHRoZSBjaGVja3N1bXMpIHRoZW4geW91IGNhbiB1c2UgdGhlc2UgbGluZXMgd2l0aGluIHRoZSByZWNpcGU6XG5TUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIlxuT3RoZXJ3aXNlIHlvdSBzaG91bGQgcmV0cnkgdGhlIGRvd25sb2FkIGFuZC9vciBjaGVjayB3aXRoIHVwc3RyZWFtIHRvIGRldGVybWluZSBpZiB0aGUgZmlsZSBoYXMgYmVjb21lIGNvcnJ1cHRlZCBvciBvdGhlcndpc2UgdW5leHBlY3RlZGx5IG1vZGlmaWVkLlxuJyAlICh1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwgdWQuc2hhMjU2X25hbWUsIHNoYTI1NmRhdGEpCisgICAgaWYgYmFkX2NoZWNrc3VtOgorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIklmIHRoaXMgY2hhbmdlIGlzIGV4cGVjdGVkIChlLmcuIHlvdSBoYXZlIHVwZ3JhZGVkICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgInRvIGEgbmV3IHZlcnNpb24gd2l0aG91dCB1cGRhdGluZyB0aGUgY2hlY2tzdW1zKSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIHlvdSBjYW4gdXNlIHRoZXNlIGxpbmVzIHdpdGhpbiB0aGUgcmVjaXBlOiIpCisgICAgICAgIG1lc3NhZ2VzLmV4dGVuZChjaGVja3N1bV9saW5lcykKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJPdGhlcndpc2UgeW91IHNob3VsZCByZXRyeSB0aGUgZG93bmxvYWQgYW5kL29yICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrIHdpdGggdXBzdHJlYW0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGhhcyAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJiZWNvbWUgY29ycnVwdGVkIG9yIG90aGVyd2lzZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQuIikKKyAgICAgICAgcmFpc2UgQ2hlY2tzdW1FcnJvcigiXG4iLmpvaW4obWVzc2FnZXMpLCB1ZC51cmwsIGJhZF9jaGVja3N1bSkKIAotICAgIGlmIGxlbihtc2cpOgotICAgICAgICByYWlzZSBDaGVja3N1bUVycm9yKCdDaGVja3N1bSBtaXNtYXRjaCElcycgJSBtc2csIHVkLnVybCwgbWQ1ZGF0YSkKLQotICAgIHJldHVybiB7Ci0gICAgICAgIF9NRDVfS0VZOiBtZDVkYXRhLAotICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgIH0KLQorICAgIHJldHVybiBjaGVja3N1bV9kaWN0CiAKIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkLCBvcmlndWQ9Tm9uZSk6CiAgICAgIiIiCkBAIC0xMDgxLDcgKzEwOTEsNyBAQAogCiAgICAgZm9yIGluZGV4LCB1cmkgaW4gZW51bWVyYXRlKHVyaXMpOgogICAgICAgICByZXQgPSB0cnlfbWlycm9yX3VybChmZXRjaCwgb3JpZ3VkLCB1ZHNbaW5kZXhdLCBsZCwgY2hlY2spCi0gICAgICAgIGlmIHJldCAhPSBGYWxzZToKKyAgICAgICAgaWYgcmV0OgogICAgICAgICAgICAgcmV0dXJuIHJldAogICAgIHJldHVybiBOb25lCiAKQEAgLTExOTcsMTQgKzEyMDcsMTQgQEAKIAogICAgIHJldHVybiAiICIuam9pbihmaWxlbGlzdCkKIAotZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4pOgorZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgdGhlIGNoZWNrc3VtcyBmb3IgYSBsaXN0IG9mIGxvY2FsIGZpbGVzCiAKICAgICBSZXR1cm5zIHRoZSBjaGVja3N1bXMgZm9yIGEgbGlzdCBvZiBsb2NhbCBmaWxlcywgY2FjaGluZyB0aGUgcmVzdWx0cyBhcwogICAgIGl0IHByb2NlZWRzCiAKICAgICAiIiIKLSAgICByZXR1cm4gX2NoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZmlsZWxpc3QsIHBuKQorICAgIHJldHVybiBfY2hlY2tzdW1fY2FjaGUuZ2V0X2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpCiAKIAogY2xhc3MgRmV0Y2hEYXRhKG9iamVjdCk6CkBAIC0xMjMwLDI0ICsxMjQwLDI2IEBACiAgICAgICAgICAgICBzZWxmLnBzd2QgPSBzZWxmLnBhcm1bInBzd2QiXQogICAgICAgICBzZWxmLnNldHVwID0gRmFsc2UKIAotICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5tZDVfbmFtZSA9ICIlcy5tZDVzdW0iICUgc2VsZi5wYXJtWyJuYW1lIl0KLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAiJXMuc2hhMjU2c3VtIiAlIHNlbGYucGFybVsibmFtZSJdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9uYW1lID0gIm1kNXN1bSIKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAic2hhMjU2c3VtIgotICAgICAgICBpZiBzZWxmLm1kNV9uYW1lIGluIHNlbGYucGFybToKLSAgICAgICAgICAgIHNlbGYubWQ1X2V4cGVjdGVkID0gc2VsZi5wYXJtW3NlbGYubWQ1X25hbWVdCi0gICAgICAgIGVsaWYgc2VsZi50eXBlIG5vdCBpbiBbImh0dHAiLCAiaHR0cHMiLCAiZnRwIiwgImZ0cHMiLCAic2Z0cCIsICJzMyJdOgotICAgICAgICAgICAgc2VsZi5tZDVfZXhwZWN0ZWQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9leHBlY3RlZCA9IGQuZ2V0VmFyRmxhZygiU1JDX1VSSSIsIHNlbGYubWQ1X25hbWUpCi0gICAgICAgIGlmIHNlbGYuc2hhMjU2X25hbWUgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5zaGEyNTZfZXhwZWN0ZWQgPSBzZWxmLnBhcm1bc2VsZi5zaGEyNTZfbmFtZV0KLSAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06Ci0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9leHBlY3RlZCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgc2VsZi5zaGEyNTZfbmFtZSkKKyAgICAgICAgZGVmIGNvbmZpZ3VyZV9jaGVja3N1bShjaGVja3N1bV9pZCk6CisgICAgICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUgPSAiJXMuJXNzdW0iICUgKHNlbGYucGFybVsibmFtZSJdLCBjaGVja3N1bV9pZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSA9ICIlc3N1bSIgJSBjaGVja3N1bV9pZAorCisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICIlc19uYW1lIiAlIGNoZWNrc3VtX2lkLCBjaGVja3N1bV9uYW1lKQorCisgICAgICAgICAgICBpZiBjaGVja3N1bV9uYW1lIGluIHNlbGYucGFybToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9leHBlY3RlZCA9IHNlbGYucGFybVtjaGVja3N1bV9uYW1lXQorICAgICAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fZXhwZWN0ZWQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgY2hlY2tzdW1fbmFtZSkKKworICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAiJXNfZXhwZWN0ZWQiICUgY2hlY2tzdW1faWQsIGNoZWNrc3VtX2V4cGVjdGVkKQorCisgICAgICAgIGZvciBjaGVja3N1bV9pZCBpbiBDSEVDS1NVTV9MSVNUOgorICAgICAgICAgICAgY29uZmlndXJlX2NoZWNrc3VtKGNoZWNrc3VtX2lkKQorCiAgICAgICAgIHNlbGYuaWdub3JlX2NoZWNrc3VtcyA9IEZhbHNlCiAKICAgICAgICAgc2VsZi5uYW1lcyA9IHNlbGYucGFybS5nZXQoIm5hbWUiLCdkZWZhdWx0Jykuc3BsaXQoJywnKQpAQCAtMTM1MSw3ICsxMzYzLDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgIyBXZSBjYW5ub3QgY29tcHV0ZSBjaGVja3N1bXMgZm9yIGRpcmVjdG9yaWVzCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpID09IFRydWU6CisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHVybGRhdGEubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM2NSw2ICsxMzc3LDE4IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmeSB0aGUgZG9uZXN0YW1wIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorCisgICAgZGVmIHVwZGF0ZV9kb25lc3RhbXAoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZQorICAgICAgICAiIiIKKyAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBkKQorCiAgICAgZGVmIF9zdHJpcF9sZWFkaW5nX3NsYXNoZXMoc2VsZiwgcmVscGF0aCk6CiAgICAgICAgICIiIgogICAgICAgICBSZW1vdmUgbGVhZGluZyBzbGFzaCBhcyBvcy5wYXRoLmpvaW4gY2FuJ3QgY29wZQpAQCAtMTUzOSw2ICsxNTYzLDEyIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkLCBtaXJyb3JzLCBjaGVjaz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgdG8gdXNlIGEgbWlycm9yCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gYm9vbCh0cnlfbWlycm9ycyhmZXRjaCwgZCwgdXJsZGF0YSwgbWlycm9ycywgY2hlY2spKQorCiAgICAgZGVmIGNoZWNrc3RhdHVzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoZSBzdGF0dXMgb2YgYSBVUkwKQEAgLTE1NjcsOCArMTU5Nyw3IEBACiAgICAgICAgIHJldHVybiBUcnVlLCBzdHIobGF0ZXN0X3JldikKIAogICAgIGRlZiBnZW5lcmF0ZV9yZXZpc2lvbl9rZXkoc2VsZiwgdWQsIGQsIG5hbWUpOgotICAgICAgICBrZXkgPSBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCi0gICAgICAgIHJldHVybiAiJXMtJXMiICUgKGtleSwgZC5nZXRWYXIoIlBOIikgb3IgIiIpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCiAKICAgICBkZWYgbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiIKQEAgLTE1NzgsNiArMTYwNywxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuICgnJywgJycpCiAKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIgorICAgICAgICBJcyB0aGUgZG93bmxvYWQgZG9uZSA/CisgICAgICAgICIiIgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgdWQubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiBjbGFzcyBGZXRjaChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmxzLCBkLCBjYWNoZSA9IFRydWUsIGxvY2Fsb25seSA9IEZhbHNlLCBjb25uZWN0aW9uX2NhY2hlID0gTm9uZSk6CiAgICAgICAgIGlmIGxvY2Fsb25seSBhbmQgY2FjaGU6CkBAIC0xNTkyLDggKzE2MzEsMTEgQEAKIAogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgbWMgPSBkLmdldFZhcignX19CQk1VTFRJQ09ORklHJykgb3IgIiIKLSAgICAgICAgaWYgY2FjaGUgYW5kIGZuIGFuZCBtYyArIGZuIGluIHVybGRhdGFfY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLnVkID0gdXJsZGF0YV9jYWNoZVttYyArIGZuICsgc3RyKGlkKGQpKV0KKyAgICAgICAga2V5ID0gTm9uZQorICAgICAgICBpZiBjYWNoZSBhbmQgZm46CisgICAgICAgICAgICBrZXkgPSBtYyArIGZuICsgc3RyKGlkKGQpKQorICAgICAgICBpZiBrZXkgaW4gdXJsZGF0YV9jYWNoZToKKyAgICAgICAgICAgIHNlbGYudWQgPSB1cmxkYXRhX2NhY2hlW2tleV0KIAogICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgICBpZiB1cmwgbm90IGluIHNlbGYudWQ6CkBAIC0xNjA0LDggKzE2NDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51ZFt1cmxdID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGlmIGZuIGFuZCBjYWNoZToKLSAgICAgICAgICAgIHVybGRhdGFfY2FjaGVbbWMgKyBmbiArIHN0cihpZChkKSldID0gc2VsZi51ZAorICAgICAgICBpZiBrZXk6CisgICAgICAgICAgICB1cmxkYXRhX2NhY2hlW2tleV0gPSBzZWxmLnVkCiAKICAgICBkZWYgbG9jYWxwYXRoKHNlbGYsIHVybCk6CiAgICAgICAgIGlmIHVybCBub3QgaW4gc2VsZi51cmxzOgpAQCAtMTY0MSw3ICsxNjgzLDcgQEAKICAgICAgICAgICAgIHVkID0gc2VsZi51ZFt1XQogICAgICAgICAgICAgdWQuc2V0dXBfbG9jYWxwYXRoKHNlbGYuZCkKICAgICAgICAgICAgIG0gPSB1ZC5tZXRob2QKLSAgICAgICAgICAgIGxvY2FscGF0aCA9ICIiCisgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgaWYgdWQubG9ja2ZpbGU6CiAgICAgICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZSh1ZC5sb2NrZmlsZSkKQEAgLTE2NDksMjggKzE2OTEsMjggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgbmV0d29yaykKIAotICAgICAgICAgICAgICAgIGlmIHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgotICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKyAgICAgICAgICAgICAgICBpZiBtLnZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgorICAgICAgICAgICAgICAgICAgICBkb25lID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsaWYgbS50cnlfcHJlbWlycm9yKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBQUkVNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdQUkVNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiBsb2NhbHBhdGg6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCisgICAgICAgICAgICAgICAgICAgIGlmIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlYXJseSBjaGVja3N1bSB2ZXJpZmljYXRpb24gc28gdGhhdCBpZiB0aGUgY2hlY2tzdW0gb2YgdGhlIHByZW1pcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGVudHMgbWlzbWF0Y2ggdGhlIGZldGNoZXIgY2FuIHN0aWxsIHRyeSB1cHN0cmVhbSBhbmQgbWlycm9ycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0udXBkYXRlX2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IENoZWNrc3VtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ2hlY2tzdW0gZmFpbHVyZSBlbmNvdW50ZXJlZCB3aXRoIHByZW1pcnJvciBkb3dubG9hZCBvZiAlcyAtIHdpbGwgYXR0ZW1wdCBvdGhlciBzb3VyY2VzLiIgJSB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBzdHIoZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgICAgIGlmIHByZW1pcnJvcm9ubHk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCiAKICAgICAgICAgICAgICAgICBmaXJzdGVyciA9IE5vbmUKLSAgICAgICAgICAgICAgICB2ZXJpZmllZF9zdGFtcCA9IHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIGFuZCAobm90IHZlcmlmaWVkX3N0YW1wIG9yIG0ubmVlZF91cGRhdGUodWQsIHNlbGYuZCkpOgorICAgICAgICAgICAgICAgIHZlcmlmaWVkX3N0YW1wID0gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRvbmUgYW5kIChub3QgdmVyaWZpZWRfc3RhbXAgb3IgbS5uZWVkX3VwZGF0ZSh1ZCwgc2VsZi5kKSk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0cnVzdGVkX25ldHdvcmsoc2VsZi5kLCB1ZC51cmwpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFVudHJ1c3RlZFVybCh1ZC51cmwpCkBAIC0xNjc4LDEwICsxNzIwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBtLmRvd25sb2FkKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG0sICJidWlsZF9taXJyb3JfZGF0YSIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uYnVpbGRfbWlycm9yX2RhdGEodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHVkLmxvY2FscGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICMgZWFybHkgY2hlY2tzdW0gdmVyaWZ5LCBzbyB0aGF0IGlmIGNoZWNrc3VtIG1pc21hdGNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGZldGNoZXIgc3RpbGwgaGF2ZSBjaGFuY2UgdG8gZmV0Y2ggZnJvbSBtaXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTE3MDMsMTQgKzE3NDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmNsZWFuKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignTUlSUk9SUycpKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCiAKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIG9yICgobm90IG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpIGFuZCBsb2NhbHBhdGguZmluZCgiKiIpID09IC0xKToKKyAgICAgICAgICAgICAgICBpZiBub3QgZG9uZSBvciBub3QgbS5kb25lKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZmlyc3RlcnIpKQogICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVbmFibGUgdG8gZmV0Y2ggVVJMIGZyb20gYW55IHNvdXJjZS4iLCB1KQogCi0gICAgICAgICAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBpbiBbZXJybm8uRVNUQUxFXToKQEAgLTE3NDEsMTQgKzE3ODMsMTQgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVGVzdGluZyBVUkwgJXMiLCB1KQogICAgICAgICAgICAgIyBGaXJzdCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIFBSRU1JUlJPUlMKICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignUFJFTUlSUk9SUycpKQotICAgICAgICAgICAgcmV0ID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycywgVHJ1ZSkKKyAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgIyBOZXh0IHRyeSBjaGVja2luZyBmcm9tIHRoZSBvcmlnaW5hbCB1cmksIHUKICAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKHNlbGYsIHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICAgICAgIyBGaW5hbGx5LCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIE1JUlJPUlMKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKIAogICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVUkwgJXMgZG9lc24ndCB3b3JrIiAlIHUsIHUpCkBAIC0xODUzLDYgKzE4OTUsNyBAQAogZnJvbSAuIGltcG9ydCByZXBvCiBmcm9tIC4gaW1wb3J0IGNsZWFyY2FzZQogZnJvbSAuIGltcG9ydCBucG0KK2Zyb20gLiBpbXBvcnQgbnBtc3cKIAogbWV0aG9kcy5hcHBlbmQobG9jYWwuTG9jYWwoKSkKIG1ldGhvZHMuYXBwZW5kKHdnZXQuV2dldCgpKQpAQCAtMTg3MSwzICsxOTE0LDQgQEAKIG1ldGhvZHMuYXBwZW5kKHJlcG8uUmVwbygpKQogbWV0aG9kcy5hcHBlbmQoY2xlYXJjYXNlLkNsZWFyQ2FzZSgpKQogbWV0aG9kcy5hcHBlbmQobnBtLk5wbSgpKQorbWV0aG9kcy5hcHBlbmQobnBtc3cuTnBtU2hyaW5rV3JhcCgpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5CmluZGV4IGM1NmQ4NzUuLjU2NmFjZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ienIucHkKQEAgLTE0LDggKzE0LDYgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkKaW5kZXggZTI5MzRlZi4uNDlkN2FlMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY2xlYXJjYXNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2NsZWFyY2FzZS5weQpAQCAtNDksNyArNDksNiBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBiYgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTIzOCw3ICsyMzcsNyBAQAogCiAgICAgICAgICMgQ2xlYW4gY2xlYXJjYXNlIG1ldGEtZGF0YSBiZWZvcmUgdGFyCiAKLSAgICAgICAgcnVuZmV0Y2hjbWQoJ3RhciAtY3pmICIlcyIgLicgJSAodWQubG9jYWxwYXRoKSwgZCwgY2xlYW51cCA9IFt1ZC5sb2NhbHBhdGhdKQorICAgICAgICBydW5mZXRjaGNtZCgndGFyIC1jemYgIiVzIiAuJyAlICh1ZC5sb2NhbHBhdGgpLCBkLCBjbGVhbnVwID0gW3VkLmxvY2FscGF0aF0sIHdvcmtkaXIgPSB1ZC52aWV3ZGlyKQogCiAgICAgICAgICMgQ2xlYW4gdXAgc28gd2UgY2FuIGNyZWF0ZSBhIG5ldyB2aWV3IG5leHQgdGltZQogICAgICAgICBzZWxmLmNsZWFuKHVkLCBkKTsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weQppbmRleCAxYjM1YmE0Li4yOTEyM2E0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kLCBGZXRjaEVycm9yLCBNaXNzaW5nUGFyYW1ldGVyRXJyb3IsIGxvZ2dlcgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKaW5kZXggZmE0MWIwNy4uNWIzNzkzYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQpAQCAtNTk0LDcgKzU5NCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gYSB1bmlxdWUga2V5IGZvciB0aGUgdXJsCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gImdpdDoiICsgdWQuaG9zdCArIHVkLnBhdGgucmVwbGFjZSgnLycsICcuJykgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCisgICAgICAgICMgQ29sbGFwc2UgYWRqYWNlbnQgc2xhc2hlcworICAgICAgICBzbGFzaF9yZSA9IHJlLmNvbXBpbGUociIvKyIpCisgICAgICAgIHJldHVybiAiZ2l0OiIgKyB1ZC5ob3N0ICsgc2xhc2hfcmUuc3ViKCIuIiwgdWQucGF0aCkgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCiAKICAgICBkZWYgX2xzcmVtb3RlKHNlbGYsIHVkLCBkLCBzZWFyY2gpOgogICAgICAgICAiIiIKQEAgLTY3MSw3ICs2NzMsNyBAQAogCiAgICAgICAgICAgICAjIHNlYXJjaCBmb3IgdmVyc2lvbiBpbiB0aGUgbGluZQogICAgICAgICAgICAgdGFnID0gdGFncmVnZXguc2VhcmNoKHRhZ19oZWFkKQotICAgICAgICAgICAgaWYgdGFnID09IE5vbmU6CisgICAgICAgICAgICBpZiB0YWcgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICB0YWcgPSB0YWcuZ3JvdXAoJ3B2ZXInKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQppbmRleCAxZDQ5N2RjLi44MGE4MDhkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQpAQCAtOCwxMSArOCw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIuZ2l0IGltcG9ydCBHaXQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIAogY2xhc3MgR2l0QU5ORVgoR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQppbmRleCBjNjIyNzcxLi5lNzA4MzAwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQpAQCAtMjAsMTEgKzIwLDEyIEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYgogaW1wb3J0IGNvcHkKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQogZnJvbSAgIGJiLmZldGNoMi5naXQgaW1wb3J0IEdpdAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2gKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEJCRmV0Y2hFeGNlcHRpb24KIAogY2xhc3MgR2l0U00oR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1BWJywgZC5nZXRWYXIoJ1NSQ1BWJykpCiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1JFVl9GT1JNQVQnLCBtb2R1bGUpCiAKLSAgICAgICAgICAgIGZ1bmN0aW9uKHVkLCB1cmwsIG1vZHVsZSwgcGF0aHNbbW9kdWxlXSwgbGQpCisgICAgICAgICAgICBmdW5jdGlvbih1ZCwgdXJsLCBtb2R1bGUsIHBhdGhzW21vZHVsZV0sIHdvcmtkaXIsIGxkKQogCiAgICAgICAgIHJldHVybiBzdWJtb2R1bGVzICE9IFtdCiAKQEAgLTE1Myw3ICsxNTQsNyBAQAogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6Ci0gICAgICAgIGRlZiBkb3dubG9hZF9zdWJtb2R1bGUodWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIGRvd25sb2FkX3N1Ym1vZHVsZSh1ZCwgdXJsLCBtb2R1bGUsIG1vZHBhdGgsIHdvcmtkaXIsIGQpOgogICAgICAgICAgICAgdXJsICs9ICI7YmFyZWNsb25lPTE7bm9icmFuY2g9MSIKIAogICAgICAgICAgICAgIyBJcyB0aGUgZm9sbG93aW5nIHN0aWxsIG5lZWRlZD8KQEAgLTE2NCwxNiArMTY1LDI1IEBACiAgICAgICAgICAgICAgICAgbmV3ZmV0Y2guZG93bmxvYWQoKQogICAgICAgICAgICAgICAgICMgRHJvcCBhIG51Z2dldCB0byBhZGQgZWFjaCBvZiB0aGUgc3JjcmV2cyB3ZSd2ZSBmZXRjaGVkICh1c2VkIGJ5IG5lZWRfdXBkYXRlKQogICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBjb25maWcgLS1hZGQgYml0YmFrZS5zcmNyZXYgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1ZC5iYXNlY21kLCB1ZC5yZXZpc2lvbnNbdWQubmFtZXNbMF1dKSwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW3VkLm5hbWVzWzBdXSksIGQsIHdvcmtkaXI9d29ya2RpcikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ2dpdHNtOiBzdWJtb2R1bGUgZG93bmxvYWQgZmFpbGVkOiAlcyAlcycgJSAodHlwZShlKS5fX25hbWVfXywgc3RyKGUpKSkKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIEdpdC5kb3dubG9hZChzZWxmLCB1ZCwgZCkKLSAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHVkLmNsb25lZGlyLCBkb3dubG9hZF9zdWJtb2R1bGUsIGQpCisKKyAgICAgICAgIyBJZiB3ZSdyZSB1c2luZyBhIHNoYWxsb3cgbWlycm9yIHRhcmJhbGwgaXQgbmVlZHMgdG8gYmUgdW5wYWNrZWQKKyAgICAgICAgIyB0ZW1wb3JhcmlseSBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRoZSAuZ2l0bW9kdWxlcyBmaWxlCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KSBhbmQgc2VsZi5uZWVkX3VwZGF0ZSh1ZCwgZCk6CisgICAgICAgICAgICB0bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kLmdldFZhcigiRExfRElSIikpCisgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC14emYgJXMiICUgdWQuZnVsbHNoYWxsb3csIGQsIHdvcmtkaXI9dG1wZGlyKQorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHRtcGRpciwgZG93bmxvYWRfc3VibW9kdWxlLCBkKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfc3VibW9kdWxlcyh1ZCwgdWQuY2xvbmVkaXIsIGRvd25sb2FkX3N1Ym1vZHVsZSwgZCkKIAogICAgIGRlZiB1bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpOgotICAgICAgICBkZWYgdW5wYWNrX3N1Ym1vZHVsZXModWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIHVucGFja19zdWJtb2R1bGVzKHVkLCB1cmwsIG1vZHVsZSwgbW9kcGF0aCwgd29ya2RpciwgZCk6CiAgICAgICAgICAgICB1cmwgKz0gIjtiYXJlY2xvbmU9MTtub2JyYW5jaD0xIgogCiAgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgd2UgY2xvbmUgb3ZlciB0aGUgYmFyZSBzdWJtb2R1bGVzLi4uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CmluZGV4IGUyMTExNWQuLjhmNTAzNzAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CkBAIC0xMyw4ICsxMyw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogaW1wb3J0IGVycm5vCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQppbmRleCA5NzAwZTYxLi40Nzg5ODUwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CkBAIC0xLDMwMSArMSwyOTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAiIiIKLUJpdEJha2UgJ0ZldGNoJyBOUE0gaW1wbGVtZW50YXRpb24KK0JpdEJha2UgJ0ZldGNoJyBucG0gaW1wbGVtZW50YXRpb24KIAotVGhlIE5QTSBmZXRjaGVyIGlzIHVzZWQgdG8gcmV0cmlldmUgZmlsZXMgZnJvbSB0aGUgbnBtanMgcmVwb3NpdG9yeQorbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtOi8vc29tZS5yZWdpc3RyeS51cmw7T3B0aW9uQT14eHg7T3B0aW9uQj14eHg7Li4uIgogCi1Vc2FnZSBpbiB0aGUgcmVjaXBlOgorU3VwcG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CiAKLSAgICBTUkNfVVJJID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy87bmFtZT0ke1BOfTt2ZXJzaW9uPSR7UFZ9IgotICAgIFN1cG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CistIHBhY2thZ2UKKyAgIFRoZSBucG0gcGFja2FnZSBuYW1lLiBUaGlzIGlzIGEgbWFuZGF0b3J5IHBhcmFtZXRlci4KIAotICAgIC0gbmFtZQotICAgIC0gdmVyc2lvbgorLSB2ZXJzaW9uCisgICAgVGhlIG5wbSBwYWNrYWdlIHZlcnNpb24uIFRoaXMgaXMgYSBtYW5kYXRvcnkgcGFyYW1ldGVyLgogCi0gICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLyR7UE59Ly0vJHtQTn0tJHtQVn0udGd6ICB3b3VsZCBiZWNvbWUgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JHtQTn07dmVyc2lvbj0ke1BWfQotICAgIFRoZSBmZXRjaGVyIGFsbCB0cmlnZ2VycyBvZmYgdGhlIGV4aXN0ZW5jZSBvZiB1ZC5sb2NhbHBhdGguIElmIHRoYXQgZXhpc3RzIGFuZCBoYXMgdGhlICIuZG9uZSIgc3RhbXAsIGl0cyBhc3N1bWVkIHRoZSBmZXRjaCBpcyBnb29kL2RvbmUKKy0gZG93bmxvYWRmaWxlbmFtZQorICAgIFNwZWNpZmllcyB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIHN0b3JpbmcgdGhlIGRvd25sb2FkZWQgZmlsZS4KIAorLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgcGFja2FnZSAoZGVmYXVsdDogbnBtKS4KICIiIgogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLnBhcnNlLCB1cmxsaWIuZXJyb3IKK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHNpZ25hbAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaGxleAoraW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgYmIKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBDaGVja3N1bUVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgbG9nZ2VyCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBVbnBhY2tFcnJvcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgUGFyYW1ldGVyRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IE1pc3NpbmdQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFBhcmFtZXRlckVycm9yCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgVVJJCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgY2hlY2tfbmV0d29ya19hY2Nlc3MKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAorZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCiAKLWRlZiBzdWJwcm9jZXNzX3NldHVwKCk6Ci0gICAgIyBQeXRob24gaW5zdGFsbHMgYSBTSUdQSVBFIGhhbmRsZXIgYnkgZGVmYXVsdC4gVGhpcyBpcyB1c3VhbGx5IG5vdCB3aGF0Ci0gICAgIyBub24tUHl0aG9uIHN1YnByb2Nlc3NlcyBleHBlY3QuCi0gICAgIyBTSUdQSVBFIGVycm9ycyBhcmUga25vd24gaXNzdWVzIHdpdGggZ3ppcC9iYXNoCi0gICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHUElQRSwgc2lnbmFsLlNJR19ERkwpCitkZWYgbnBtX3BhY2thZ2UocGFja2FnZSk6CisgICAgIiIiQ29udmVydCB0aGUgbnBtIHBhY2thZ2UgbmFtZSB0byByZW1vdmUgdW5zdXBwb3J0ZWQgY2hhcmFjdGVyIiIiCisgICAgIyBTY29wZWQgcGFja2FnZSBuYW1lcyAod2l0aCB0aGUgQCkgdXNlIHRoZSBzYW1lIG5hbWluZyBjb252ZW50aW9uCisgICAgIyBhcyB0aGUgJ25wbSBwYWNrJyBjb21tYW5kLgorICAgIGlmIHBhY2thZ2Uuc3RhcnRzd2l0aCgiQCIpOgorICAgICAgICByZXR1cm4gcmUuc3ViKCIvIiwgIi0iLCBwYWNrYWdlWzE6XSkKKyAgICByZXR1cm4gcGFja2FnZQorCitkZWYgbnBtX2ZpbGVuYW1lKHBhY2thZ2UsIHZlcnNpb24pOgorICAgICIiIkdldCB0aGUgZmlsZW5hbWUgb2YgYSBucG0gcGFja2FnZSIiIgorICAgIHJldHVybiBucG1fcGFja2FnZShwYWNrYWdlKSArICItIiArIHZlcnNpb24gKyAiLnRneiIKKworZGVmIG5wbV9sb2NhbGZpbGUocGFja2FnZSwgdmVyc2lvbik6CisgICAgIiIiR2V0IHRoZSBsb2NhbCBmaWxlbmFtZSBvZiBhIG5wbSBwYWNrYWdlIiIiCisgICAgcmV0dXJuIG9zLnBhdGguam9pbigibnBtMiIsIG5wbV9maWxlbmFtZShwYWNrYWdlLCB2ZXJzaW9uKSkKKworZGVmIG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KToKKyAgICAiIiIKKyAgICBHZXQgdGhlIGNoZWNrc3VtIG5hbWUgYW5kIGV4cGVjdGVkIHZhbHVlIGZyb20gdGhlIHN1YnJlc291cmNlIGludGVncml0eQorICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvU1JJLworICAgICIiIgorICAgIGFsZ28sIHZhbHVlID0gaW50ZWdyaXR5LnNwbGl0KCItIiwgbWF4c3BsaXQ9MSkKKyAgICByZXR1cm4gIiVzc3VtIiAlIGFsZ28sIGJhc2U2NC5iNjRkZWNvZGUodmFsdWUpLmhleCgpCisKK2RlZiBucG1fdW5wYWNrKHRhcmJhbGwsIGRlc3RkaXIsIGQpOgorICAgICIiIlVucGFjayBhIG5wbSB0YXJiYWxsIiIiCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgY21kID0gInRhciAtLWV4dHJhY3QgLS1nemlwIC0tZmlsZT0lcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKQorICAgIGNtZCArPSAiIC0tbm8tc2FtZS1vd25lciIKKyAgICBjbWQgKz0gIiAtLXN0cmlwLWNvbXBvbmVudHM9MSIKKyAgICBydW5mZXRjaGNtZChjbWQsIGQsIHdvcmtkaXI9ZGVzdGRpcikKKworY2xhc3MgTnBtRW52aXJvbm1lbnQob2JqZWN0KToKKyAgICAiIiIKKyAgICBVc2luZyBhIG5wbSBjb25maWcgZmlsZSBzZWVtcyBtb3JlIHJlbGlhYmxlIHRoYW4gdXNpbmcgY2xpIGFyZ3VtZW50cy4KKyAgICBUaGlzIGNsYXNzIGFsbG93cyB0byBjcmVhdGUgYSBjb250cm9sbGVkIGVudmlyb25tZW50IGZvciBucG0gY29tbWFuZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGNvbmZpZ3M9Tm9uZSk6CisgICAgICAgIHNlbGYuZCA9IGQKKyAgICAgICAgc2VsZi5jb25maWdzID0gY29uZmlncworCisgICAgZGVmIHJ1bihzZWxmLCBjbWQsIGFyZ3M9Tm9uZSwgY29uZmlncz1Ob25lLCB3b3JrZGlyPU5vbmUpOgorICAgICAgICAiIiJSdW4gbnBtIGNvbW1hbmQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50IiIiCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgZCA9IGJiLmRhdGEuY3JlYXRlQ29weShzZWxmLmQpCisgICAgICAgICAgICBkLnNldFZhcigiSE9NRSIsIHRtcGRpcikKKworICAgICAgICAgICAgY2ZnZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICJucG1yYyIpCisKKyAgICAgICAgICAgIGlmIG5vdCB3b3JrZGlyOgorICAgICAgICAgICAgICAgIHdvcmtkaXIgPSB0bXBkaXIKKworICAgICAgICAgICAgZGVmIF9ydW4oY21kKToKKyAgICAgICAgICAgICAgICBjbWQgPSAiTlBNX0NPTkZJR19VU0VSQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgY21kID0gIk5QTV9DT05GSUdfR0xPQkFMQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bmZldGNoY21kKGNtZCwgZCwgd29ya2Rpcj13b3JrZGlyKQorCisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5jb25maWdzOgorICAgICAgICAgICAgICAgICAgICBfcnVuKCJucG0gY29uZmlnIHNldCAlcyAlcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpKQorCisgICAgICAgICAgICBpZiBjb25maWdzOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgIF9ydW4oIm5wbSBjb25maWcgc2V0ICVzICVzIiAlIChrZXksIHNobGV4LnF1b3RlKHZhbHVlKSkpCisKKyAgICAgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJnczoKKyAgICAgICAgICAgICAgICAgICAgY21kICs9ICIgLS0lcz0lcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpCisKKyAgICAgICAgICAgIHJldHVybiBfcnVuKGNtZCkKIAogY2xhc3MgTnBtKEZldGNoTWV0aG9kKToKLQotICAgICIiIkNsYXNzIHRvIGZldGNoIHVybHMgdmlhICducG0nIiIiCi0gICAgZGVmIGluaXQoc2VsZiwgZCk6Ci0gICAgICAgIHBhc3MKKyAgICAiIiJDbGFzcyB0byBmZXRjaCBhIHBhY2thZ2UgZnJvbSBhIG5wbSByZWdpc3RyeSIiIgogCiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIiIiCi0gICAgICAgIENoZWNrIHRvIHNlZSBpZiBhIGdpdmVuIHVybCBjYW4gYmUgZmV0Y2hlZCB3aXRoIG5wbQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHVkLnR5cGUgaW4gWyducG0nXQotCi0gICAgZGVmIGRlYnVnKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTnBtRmV0Y2g6ICVzIiwgbXNnKQotCi0gICAgZGVmIGNsZWFuKHNlbGYsIHVkLCBkKToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJDYWxsaW5nIGNsZWFudXAgJXMiICUgdWQucGtnbmFtZSkKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLmxvY2FscGF0aCwgRmFsc2UpCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5wa2dkYXRhZGlyLCBUcnVlKQotICAgICAgICBiYi51dGlscy5yZW1vdmUodWQuZnVsbG1pcnJvciwgRmFsc2UpCisgICAgICAgICIiIkNoZWNrIGlmIGEgZ2l2ZW4gdXJsIGNhbiBiZSBmZXRjaGVkIHdpdGggbnBtIiIiCisgICAgICAgIHJldHVybiB1ZC50eXBlIGluIFsibnBtIl0KIAogICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgotICAgICAgICAiIiIKLSAgICAgICAgaW5pdCBOUE0gc3BlY2lmaWMgdmFyaWFibGUgd2l0aGluIHVybCBkYXRhCi0gICAgICAgICIiIgotICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVkLmJhc2VuYW1lID0gdWQucGFybVsnZG93bmxvYWRmaWxlbmFtZSddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1ZC5iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodWQucGF0aCkKKyAgICAgICAgIiIiSW5pdCBucG0gc3BlY2lmaWMgdmFyaWFibGVzIHdpdGhpbiB1cmwgZGF0YSIiIgorICAgICAgICB1ZC5wYWNrYWdlID0gTm9uZQorICAgICAgICB1ZC52ZXJzaW9uID0gTm9uZQorICAgICAgICB1ZC5yZWdpc3RyeSA9IE5vbmUKIAotICAgICAgICAjIGNhbid0IGNhbGwgaXQgdWQubmFtZSBvdGhlcndpc2UgZmV0Y2hlciBiYXNlIGNsYXNzIHdpbGwgc3RhcnQgZG9pbmcgc2hhMXN0dWZmCi0gICAgICAgICMgVE9ETzogZmluZCBhIHdheSB0byBnZXQgYW4gc2hhMS9zaGEyNTYgbWFuaWZlc3Qgb2YgcGtnICYgYWxsIGRlcHMKLSAgICAgICAgdWQucGtnbmFtZSA9IHVkLnBhcm0uZ2V0KCJuYW1lIiwgTm9uZSkKLSAgICAgICAgaWYgbm90IHVkLnBrZ25hbWU6Ci0gICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiTlBNIGZldGNoZXIgcmVxdWlyZXMgYSBuYW1lIHBhcmFtZXRlciIsIHVkLnVybCkKLSAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIiwgTm9uZSkKKyAgICAgICAgIyBHZXQgdGhlICdwYWNrYWdlJyBwYXJhbWV0ZXIKKyAgICAgICAgaWYgInBhY2thZ2UiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5wYWNrYWdlID0gdWQucGFybS5nZXQoInBhY2thZ2UiKQorCisgICAgICAgIGlmIG5vdCB1ZC5wYWNrYWdlOgorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3BhY2thZ2UnIHJlcXVpcmVkIiwgdWQudXJsKQorCisgICAgICAgICMgR2V0IHRoZSAndmVyc2lvbicgcGFyYW1ldGVyCisgICAgICAgIGlmICJ2ZXJzaW9uIiBpbiB1ZC5wYXJtOgorICAgICAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIikKKwogICAgICAgICBpZiBub3QgdWQudmVyc2lvbjoKLSAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJOUE0gZmV0Y2hlciByZXF1aXJlcyBhIHZlcnNpb24gcGFyYW1ldGVyIiwgdWQudXJsKQotICAgICAgICB1ZC5iYm5wbW1hbmlmZXN0ID0gIiVzLSVzLmRlcHMuanNvbiIgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKLSAgICAgICAgdWQuYmJucG1tYW5pZmVzdCA9IHVkLmJibnBtbWFuaWZlc3QucmVwbGFjZSgnLycsICctJykKLSAgICAgICAgdWQucmVnaXN0cnkgPSAiaHR0cDovLyVzIiAlICh1ZC51cmwucmVwbGFjZSgnbnBtOi8vJywgJycsIDEpLnNwbGl0KCc7JykpWzBdCi0gICAgICAgIHByZWZpeGRpciA9ICJucG0vJXMiICUgdWQucGtnbmFtZQotICAgICAgICB1ZC5wa2dkYXRhZGlyID0gZC5leHBhbmQoIiR7RExfRElSfS8lcyIgJSBwcmVmaXhkaXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5wa2dkYXRhZGlyKToKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkYXRhZGlyKQotICAgICAgICB1ZC5sb2NhbHBhdGggPSBkLmV4cGFuZCgiJHtETF9ESVJ9L25wbS8lcyIgJSB1ZC5iYm5wbW1hbmlmZXN0KQorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3ZlcnNpb24nIHJlcXVpcmVkIiwgdWQudXJsKQogCi0gICAgICAgIHNlbGYuYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF93Z2V0Iikgb3IgIi91c3IvYmluL2VudiB3Z2V0IC1PIC10IDIgLVQgMzAgLW52IC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAiCi0gICAgICAgIHVkLnByZWZpeGRpciA9IHByZWZpeGRpcgorICAgICAgICBpZiBub3QgaXNfc2VtdmVyKHVkLnZlcnNpb24pIGFuZCBub3QgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCiAKLSAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSAoKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIpICE9ICIwIikKLSAgICAgICAgbWlycm9ydGFyYmFsbCA9ICducG1fJXMtJXMudGFyLnh6JyAlICh1ZC5wa2duYW1lLCB1ZC52ZXJzaW9uKQotICAgICAgICBtaXJyb3J0YXJiYWxsID0gbWlycm9ydGFyYmFsbC5yZXBsYWNlKCcvJywgJy0nKQotICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KKyAgICAgICAgIyBFeHRyYWN0IHRoZSAncmVnaXN0cnknIHBhcnQgb2YgdGhlIHVybAorICAgICAgICB1ZC5yZWdpc3RyeSA9IHJlLnN1YihyIl5ucG06Ly8iLCAiaHR0cDovLyIsIHVkLnVybC5zcGxpdCgiOyIpWzBdKQorCisgICAgICAgICMgVXNpbmcgdGhlICdkb3dubG9hZGZpbGVuYW1lJyBwYXJhbWV0ZXIgYXMgbG9jYWwgZmlsZW5hbWUKKyAgICAgICAgIyBvciB0aGUgbnBtIHBhY2thZ2UgbmFtZS4KKyAgICAgICAgaWYgImRvd25sb2FkZmlsZW5hbWUiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBkLmV4cGFuZCh1ZC5wYXJtWyJkb3dubG9hZGZpbGVuYW1lIl0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKHVkLnBhY2thZ2UsIHVkLnZlcnNpb24pCisKKyAgICAgICAgIyBHZXQgdGhlIGJhc2UgJ25wbScgY29tbWFuZAorICAgICAgICB1ZC5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX25wbSIpIG9yICJucG0iCisKKyAgICAgICAgIyBUaGlzIGZldGNoZXIgcmVzb2x2ZXMgYSBVUkkgZnJvbSBhIG5wbSBwYWNrYWdlIG5hbWUgYW5kIHZlcnNpb24gYW5kCisgICAgICAgICMgdGhlbiBmb3J3YXJkcyBpdCB0byBhIHByb3h5IGZldGNoZXIuIEEgcmVzb2x2ZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICAgICMgcmVzb2x2ZWQgVVJJIGlzIGNyZWF0ZWQgdG8gYXZvaWQgdW53YW50ZWQgbmV0d29yayBhY2Nlc3MgKGlmIHRoZSBmaWxlCisgICAgICAgICMgYWxyZWFkeSBleGlzdHMpLiBUaGUgbWFuYWdlbWVudCBvZiB0aGUgZG9uZXN0YW1wIGZpbGUsIHRoZSBsb2NrZmlsZQorICAgICAgICAjIGFuZCB0aGUgY2hlY2tzdW1zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIHByb3h5IGZldGNoZXIuCisgICAgICAgIHVkLnByb3h5ID0gTm9uZQorICAgICAgICB1ZC5uZWVkZG9uZXN0YW1wID0gRmFsc2UKKyAgICAgICAgdWQucmVzb2x2ZWZpbGUgPSBzZWxmLmxvY2FscGF0aCh1ZCwgZCkgKyAiLnJlc29sdmVkIgorCisgICAgZGVmIF9yZXNvbHZlX3Byb3h5X3VybChzZWxmLCB1ZCwgZCk6CisgICAgICAgIGRlZiBfbnBtX3ZpZXcoKToKKyAgICAgICAgICAgIGNvbmZpZ3MgPSBbXQorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJqc29uIiwgInRydWUiKSkKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVnaXN0cnkiLCB1ZC5yZWdpc3RyeSkpCisgICAgICAgICAgICBwa2d2ZXIgPSBzaGxleC5xdW90ZSh1ZC5wYWNrYWdlICsgIkAiICsgdWQudmVyc2lvbikKKyAgICAgICAgICAgIGNtZCA9IHVkLmJhc2VjbWQgKyAiIHZpZXcgJXMiICUgcGtndmVyCisgICAgICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkKQorICAgICAgICAgICAgY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgY21kLCB1ZC5yZWdpc3RyeSkKKyAgICAgICAgICAgIHZpZXdfc3RyaW5nID0gZW52LnJ1bihjbWQsIGNvbmZpZ3M9Y29uZmlncykKKworICAgICAgICAgICAgaWYgbm90IHZpZXdfc3RyaW5nOgorICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIlVuYXZhaWxhYmxlIHBhY2thZ2UgJXMiICUgcGtndmVyLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2aWV3ID0ganNvbi5sb2Fkcyh2aWV3X3N0cmluZykKKworICAgICAgICAgICAgICAgIGVycm9yID0gdmlldy5nZXQoImVycm9yIikKKyAgICAgICAgICAgICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcihlcnJvci5nZXQoInN1bW1hcnkiKSwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgaWYgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIG5wbSBwYWNrYWdlICVzIGlzIHVzaW5nIHRoZSBsYXRlc3QgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24gYXZhaWxhYmxlLiBUaGlzIGNvdWxkIGxlYWQgdG8gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1yZXByb2R1Y2libGUgYnVpbGRzLiIgJSBwa2d2ZXIpCisgICAgICAgICAgICAgICAgZWxpZiB1ZC52ZXJzaW9uICE9IHZpZXcuZ2V0KCJ2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gdmlldworCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCB2aWV3IGZyb20gbnBtOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBkZWYgX2dldF91cmwodmlldyk6CisgICAgICAgICAgICB0YXJiYWxsX3VybCA9IHZpZXcuZ2V0KCJkaXN0Iiwge30pLmdldCgidGFyYmFsbCIpCisKKyAgICAgICAgICAgIGlmIHRhcmJhbGxfdXJsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCAnZGlzdC50YXJiYWxsJyBpbiB2aWV3IiwgdWQudXJsKQorCisgICAgICAgICAgICB1cmkgPSBVUkkodGFyYmFsbF91cmwpCisgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSB1ZC5sb2NhbGZpbGUKKworICAgICAgICAgICAgaW50ZWdyaXR5ID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJpbnRlZ3JpdHkiKQorICAgICAgICAgICAgc2hhc3VtID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJzaGFzdW0iKQorCisgICAgICAgICAgICBpZiBpbnRlZ3JpdHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSwgY2hlY2tzdW1fZXhwZWN0ZWQgPSBucG1faW50ZWdyaXR5KGludGVncml0eSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zW2NoZWNrc3VtX25hbWVdID0gY2hlY2tzdW1fZXhwZWN0ZWQKKyAgICAgICAgICAgIGVsaWYgc2hhc3VtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbInNoYTFzdW0iXSA9IHNoYXN1bQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkICdkaXN0LmludGVncml0eScgaW4gdmlldyIsIHVkLnVybCkKKworICAgICAgICAgICAgcmV0dXJuIHN0cih1cmkpCisKKyAgICAgICAgdXJsID0gX2dldF91cmwoX25wbV92aWV3KCkpCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZSh1ZC5yZXNvbHZlZmlsZSkpCisgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1cmwpCisKKyAgICBkZWYgX3NldHVwX3Byb3h5KHNlbGYsIHVkLCBkKToKKyAgICAgICAgaWYgdWQucHJveHkgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVzb2x2ZV9wcm94eV91cmwodWQsIGQpCisKKyAgICAgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHVybCA9IGYucmVhZCgpCisKKyAgICAgICAgICAgICMgQXZvaWQgY29uZmxpY3RzIGJldHdlZW4gdGhlIGVudmlyb25tZW50IGRhdGEgYW5kOgorICAgICAgICAgICAgIyAtIHRoZSBwcm94eSB1cmwgY2hlY2tzdW0KKyAgICAgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorICAgICAgICAgICAgdWQucHJveHkgPSBGZXRjaChbdXJsXSwgZGF0YSkKKworICAgIGRlZiBfZ2V0X3Byb3h5X21ldGhvZChzZWxmLCB1ZCwgZCk6CisgICAgICAgIHNlbGYuX3NldHVwX3Byb3h5KHVkLCBkKQorICAgICAgICBwcm94eV91cmwgPSB1ZC5wcm94eS51cmxzWzBdCisgICAgICAgIHByb3h5X3VkID0gdWQucHJveHkudWRbcHJveHlfdXJsXQorICAgICAgICBwcm94eV9kID0gdWQucHJveHkuZAorICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X3VkLm1ldGhvZCwgcHJveHlfdWQsIHByb3h5X2QKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnZlcmlmeV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCisKKyAgICBkZWYgdXBkYXRlX2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlVwZGF0ZSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICBwcm94eV9tLnVwZGF0ZV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCiAKICAgICBkZWYgbmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICIiIkZvcmNlIGEgZmV0Y2gsIGV2ZW4gaWYgbG9jYWxwYXRoIGV4aXN0cyA/IiIiCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiB1ZC52ZXJzaW9uID09ICJsYXRlc3QiOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICByZXR1cm4gcHJveHlfbS5uZWVkX3VwZGF0ZShwcm94eV91ZCwgcHJveHlfZCkKIAotICAgIGRlZiBfcnVucGFjayhzZWxmLCB1ZCwgZCwgcGtnZnVsbG5hbWU6IHN0ciwgcXVpZXQ9RmFsc2UpIC0+IHN0cjoKLSAgICAgICAgIiIiCi0gICAgICAgIFJ1bnMgbnBtIHBhY2sgb24gYSBmdWxsIHBhY2thZ2UgbmFtZS4KLSAgICAgICAgUmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGRvd25sb2FkZWQgcGFja2FnZQotICAgICAgICAiIiIKLSAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHBrZ2Z1bGxuYW1lLCB1ZC5yZWdpc3RyeSkKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgZGxkaXIgPSBvcy5wYXRoLmpvaW4oZGxkaXIsIHVkLnByZWZpeGRpcikKLQotICAgICAgICBjb21tYW5kID0gIm5wbSBwYWNrIHt9IC0tcmVnaXN0cnkge30iLmZvcm1hdChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRmV0Y2hpbmcge30gdXNpbmcgY29tbWFuZCAne30nIGluIHt9Ii5mb3JtYXQocGtnZnVsbG5hbWUsIGNvbW1hbmQsIGRsZGlyKSkKLSAgICAgICAgZmlsZW5hbWUgPSBydW5mZXRjaGNtZChjb21tYW5kLCBkLCBxdWlldCwgd29ya2Rpcj1kbGRpcikKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnJzdHJpcCgpCi0KLSAgICBkZWYgX3VucGFja2RlcChzZWxmLCB1ZCwgcGtnLCBkYXRhLCBkZXN0ZGlyLCBkbGRpciwgZCk6Ci0gICAgICAgIGZpbGUgPSBkYXRhW3BrZ11bJ3RneiddCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiZmlsZSB0byBleHRyYWN0IGlzICVzIiAlIGZpbGUpCi0gICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy50Z3onKSBvciBmaWxlLmVuZHN3aXRoKCcudGFyLmd6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci5aJyk6Ci0gICAgICAgICAgICBjbWQgPSAndGFyIHh6IC0tc3RyaXAgMSAtLW5vLXNhbWUtb3duZXIgLS13YXJuaW5nPW5vLXVua25vd24ta2V5d29yZCAtZiAlcy8lcycgJSAoZGxkaXIsIGZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiTlBNIHBhY2thZ2UgJXMgZG93bmxvYWRlZCBub3QgYSB0YXJiYWxsISIgJSBmaWxlKQotCi0gICAgICAgICMgQ2hhbmdlIHRvIHN1YmRpciBiZWZvcmUgZXhlY3V0aW5nIGNvbW1hbmQKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RkaXIpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGRpcikKLSAgICAgICAgcGF0aCA9IGQuZ2V0VmFyKCdQQVRIJykKLSAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgIGNtZCA9ICJQQVRIPVwiJXNcIiAlcyIgJSAocGF0aCwgY21kKQotICAgICAgICBiYi5ub3RlKCJVbnBhY2tpbmcgJXMgdG8gJXMvIiAlIChmaWxlLCBkZXN0ZGlyKSkKLSAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgcHJlZXhlY19mbj1zdWJwcm9jZXNzX3NldHVwLCBzaGVsbD1UcnVlLCBjd2Q9ZGVzdGRpcikKLQotICAgICAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFVucGFja0Vycm9yKCJVbnBhY2sgY29tbWFuZCAlcyBmYWlsZWQgd2l0aCByZXR1cm4gdmFsdWUgJXMiICUgKGNtZCwgcmV0KSwgdWQudXJsKQotCi0gICAgICAgIGlmICdkZXBzJyBub3QgaW4gZGF0YVtwa2ddOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZvciBkZXAgaW4gZGF0YVtwa2ddWydkZXBzJ106Ci0gICAgICAgICAgICBzZWxmLl91bnBhY2tkZXAodWQsIGRlcCwgZGF0YVtwa2ddWydkZXBzJ10sICIlcy9ub2RlX21vZHVsZXMvJXMiICUgKGRlc3RkaXIsIGRlcCksIGRsZGlyLCBkKQotCi0KLSAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgd2l0aCBvcGVuKCIlcy9ucG0vJXMiICUgKGRsZGlyLCB1ZC5iYm5wbW1hbmlmZXN0KSkgYXMgZGF0YWZpbGU6Ci0gICAgICAgICAgICB3b3Jrb2JqID0ganNvbi5sb2FkKGRhdGFmaWxlKQotICAgICAgICBkbGRpciA9ICIlcy8lcyIgJSAob3MucGF0aC5kaXJuYW1lKHVkLmxvY2FscGF0aCksIHVkLnBrZ25hbWUpCi0KLSAgICAgICAgaWYgJ3N1YmRpcicgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVucGFja2RpciA9ICclcy8lcycgJSAoZGVzdGRpciwgdWQucGFybS5nZXQoJ3N1YmRpcicpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5wYWNrZGlyID0gJyVzL25wbXBrZycgJSBkZXN0ZGlyCi0KLSAgICAgICAgc2VsZi5fdW5wYWNrZGVwKHVkLCB1ZC5wa2duYW1lLCB3b3Jrb2JqLCB1bnBhY2tkaXIsIGRsZGlyLCBkKQotCi0gICAgZGVmIF9wYXJzZV92aWV3KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgICcnJwotICAgICAgICBQYXJzZSB0aGUgb3V0cHV0IG9mIG5wbSB2aWV3IC0tanNvbjsgdGhlIGxhc3QgSlNPTiByZXN1bHQKLSAgICAgICAgaXMgYXNzdW1lZCB0byBiZSB0aGUgb25lIHRoYXQgd2UncmUgaW50ZXJlc3RlZCBpbi4KLSAgICAgICAgJycnCi0gICAgICAgIHBkYXRhID0ganNvbi5sb2FkcyhvdXRwdXQpOwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gcGRhdGFbLTFdCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJldHVybiBwZGF0YQotCi0gICAgZGVmIF9nZXRkZXBlbmRlbmNpZXMoc2VsZiwgcGtnLCBkYXRhLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9RmFsc2UsIGZldGNoZWRsaXN0PU5vbmUpOgotICAgICAgICBpZiBmZXRjaGVkbGlzdCBpcyBOb25lOgotICAgICAgICAgICAgZmV0Y2hlZGxpc3QgPSBbXQotICAgICAgICBwa2dmdWxsbmFtZSA9IHBrZwotICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgbm90ICcvJyBpbiB2ZXJzaW9uOgotICAgICAgICAgICAgcGtnZnVsbG5hbWUgKz0gIkAnJXMnIiAlIHZlcnNpb24KLSAgICAgICAgaWYgcGtnZnVsbG5hbWUgaW4gZmV0Y2hlZGxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkNhbGxpbmcgZ2V0ZGVwcyBvbiAlcyIgJSBwa2cpCi0gICAgICAgIGZldGNoY21kID0gIm5wbSB2aWV3ICVzIC0tanNvbiAtLXJlZ2lzdHJ5ICVzIiAlIChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIG91dHB1dCA9IHJ1bmZldGNoY21kKGZldGNoY21kLCBkLCBUcnVlKQotICAgICAgICBwZGF0YSA9IHNlbGYuX3BhcnNlX3ZpZXcob3V0cHV0KQotICAgICAgICBpZiBub3QgcGRhdGE6Ci0gICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJUaGUgY29tbWFuZCAnJXMnIHJldHVybmVkIG5vIG91dHB1dCIgJSBmZXRjaGNtZCkKLSAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICBwa2dfb3MgPSBwZGF0YS5nZXQoJ29zJywgTm9uZSkKLSAgICAgICAgICAgIGlmIHBrZ19vczoKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwa2dfb3MsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICBwa2dfb3MgPSBbcGtnX29zXQotICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyEnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgKG5vdCBibGFja2xpc3QgYW5kICdsaW51eCcgbm90IGluIHBrZ19vcykgb3IgJyFsaW51eCcgaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlNraXBwaW5nICVzIHNpbmNlIGl0J3MgaW5jb21wYXRpYmxlIHdpdGggTGludXgiICUgcGtnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2dmdWxsbmFtZSkKLSAgICAgICAgZGF0YVtwa2ddID0ge30KLSAgICAgICAgZGF0YVtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIGZldGNoZWRsaXN0LmFwcGVuZChwa2dmdWxsbmFtZSkKLQotICAgICAgICBkZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ2RlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnb3B0aW9uYWxEZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShvcHRpb25hbERlcGVuZGVuY2llcykKLSAgICAgICAgZGVwc2ZvdW5kID0ge30KLSAgICAgICAgb3B0ZGVwc2ZvdW5kID0ge30KLSAgICAgICAgZGF0YVtwa2ddWydkZXBzJ10gPSB7fQotICAgICAgICBmb3IgZGVwIGluIGRlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGlmIGRlcCBpbiBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBvcHRkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgZm9yIGRlcCwgdmVyc2lvbiBpbiBvcHRkZXBzZm91bmQuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyhkZXAsIGRhdGFbcGtnXVsnZGVwcyddLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9VHJ1ZSwgZmV0Y2hlZGxpc3Q9ZmV0Y2hlZGxpc3QpCi0gICAgICAgIGZvciBkZXAsIHZlcnNpb24gaW4gZGVwc2ZvdW5kLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXMoZGVwLCBkYXRhW3BrZ11bJ2RlcHMnXSwgdmVyc2lvbiwgZCwgdWQsIGZldGNoZWRsaXN0PWZldGNoZWRsaXN0KQotCi0gICAgZGVmIF9nZXRzaHJpbmtlZGRlcGVuZGVuY2llcyhzZWxmLCBwa2csIGRhdGEsIHZlcnNpb24sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIHRvcGxldmVsPVRydWUpOgotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBzaHJpbmt3cmFwIGZpbGUgaXMgJXMiICUgZGF0YSkKLSAgICAgICAgaWYgdG9wbGV2ZWw6Ci0gICAgICAgICAgICBuYW1lID0gZGF0YS5nZXQoJ25hbWUnLCBOb25lKQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgbmFtZSAhPSBwa2c6Ci0gICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBkYXRhLmdldCgnZGVwZW5kZW5jaWVzJywgW10pOgotICAgICAgICAgICAgICAgICAgICBpZiBvYmogPT0gcGtnOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgcGtnbmFtZVdpdGhWZXJzaW9uID0gInt9QHt9Ii5mb3JtYXQocGtnLCB2ZXJzaW9uKQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkdldCBkZXBlbmRlbmNpZXMgZm9yIHt9Ii5mb3JtYXQocGtnbmFtZVdpdGhWZXJzaW9uKSkKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2duYW1lV2l0aFZlcnNpb24pCi0gICAgICAgIG1hbmlmZXN0W3BrZ10gPSB7fQotICAgICAgICBtYW5pZmVzdFtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIG1hbmlmZXN0W3BrZ11bJ2RlcHMnXSA9IHt9Ci0KLSAgICAgICAgaWYgcGtnIGluIGxvY2tkb3duOgotICAgICAgICAgICAgc2hhMV9leHBlY3RlZCA9IGxvY2tkb3duW3BrZ11bdmVyc2lvbl0KLSAgICAgICAgICAgIHNoYTFfZGF0YSA9IGJiLnV0aWxzLnNoYTFfZmlsZSgibnBtLyVzLyVzIiAlICh1ZC5wa2duYW1lLCBtYW5pZmVzdFtwa2ddWyd0Z3onXSkpCi0gICAgICAgICAgICBpZiBzaGExX2V4cGVjdGVkICE9IHNoYTFfZGF0YToKLSAgICAgICAgICAgICAgICBtc2cgPSAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAobWFuaWZlc3RbcGtnXVsndGd6J10sICdzaGExJywgc2hhMV9kYXRhLCBzaGExX2V4cGVjdGVkKQotICAgICAgICAgICAgICAgIHJhaXNlIENoZWNrc3VtRXJyb3IoJ0NoZWNrc3VtIG1pc21hdGNoISVzJyAlIG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTm8gbG9ja2Rvd24gZGF0YSBmb3IgJXNAJXMiICUgKHBrZywgdmVyc2lvbikpCi0KLSAgICAgICAgaWYgJ2RlcGVuZGVuY2llcycgaW4gZGF0YToKLSAgICAgICAgICAgIGZvciBvYmogaW4gZGF0YVsnZGVwZW5kZW5jaWVzJ106Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJGb3VuZCBkZXAgaXMgJXMiICUgc3RyKG9iaikpCi0gICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3RbcGtnXVsnZGVwcyddLCBGYWxzZSkKKyAgICBkZWYgdHJ5X21pcnJvcnMoc2VsZiwgZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKToKKyAgICAgICAgIiIiVHJ5IHRvIHVzZSBhIG1pcnJvciIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnRyeV9taXJyb3JzKGZldGNoLCBwcm94eV91ZCwgcHJveHlfZCwgbWlycm9ycykKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CiAgICAgICAgICIiIkZldGNoIHVybCIiIgotICAgICAgICBqc29uZGVwb2JqID0ge30KLSAgICAgICAgc2hyaW5rb2JqID0ge30KLSAgICAgICAgbG9ja2Rvd24gPSB7fQorICAgICAgICBzZWxmLl9zZXR1cF9wcm94eSh1ZCwgZCkKKyAgICAgICAgdWQucHJveHkuZG93bmxvYWQoKQogCi0gICAgICAgIGlmIG5vdCBvcy5saXN0ZGlyKHVkLnBrZ2RhdGFkaXIpIGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKLSAgICAgICAgICAgIGRlc3QgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0KQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteEpmICVzIiAlICh1ZC5mdWxsbWlycm9yKSwgZCwgd29ya2Rpcj1kZXN0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgcm9vdGRpciwgZCk6CisgICAgICAgICIiIlVucGFjayB0aGUgZG93bmxvYWRlZCBhcmNoaXZlIiIiCisgICAgICAgIGRlc3RzdWZmaXggPSB1ZC5wYXJtLmdldCgiZGVzdHN1ZmZpeCIsICJucG0iKQorICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKHJvb3RkaXIsIGRlc3RzdWZmaXgpCisgICAgICAgIG5wbV91bnBhY2sodWQubG9jYWxwYXRoLCBkZXN0ZGlyLCBkKQogCi0gICAgICAgIGlmIHVkLnBhcm0uZ2V0KCJub3ZlcmlmeSIsIE5vbmUpICE9ICcxJzoKLSAgICAgICAgICAgIHNod3JmID0gZC5nZXRWYXIoJ05QTV9TSFJJTktXUkFQJykKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTlBNIHNocmlua3dyYXAgZmlsZSBpcyAlcyIgJSBzaHdyZikKLSAgICAgICAgICAgIGlmIHNod3JmOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNod3JmKSBhcyBkYXRhZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoJ0Vycm9yIGxvYWRpbmcgTlBNX1NIUklOS1dSQVAgZmlsZSAiJXMiIGZvciAlczogJXMnICUgKHNod3JmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQotICAgICAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaHJpbmt3cmFwIGZpbGUgaW4gTlBNX1NIUklOS1dSQVAgZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlbGlhYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKLSAgICAgICAgICAgIGxja2RmID0gZC5nZXRWYXIoJ05QTV9MT0NLRE9XTicpCi0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBsb2NrZG93biBmaWxlIGlzICVzIiAlIGxja2RmKQotICAgICAgICAgICAgaWYgbGNrZGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGNrZGYpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd24gPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9MT0NLRE9XTiBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAobGNrZGYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCi0gICAgICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIGxvY2tkb3duIGZpbGUgaW4gTlBNX0xPQ0tET1dOIGZvciAlcywgdGhpcyB3aWxsIGxlYWQgdG8gdW5yZXByb2R1Y2libGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQorICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgc2VsZi5fc2V0dXBfcHJveHkodWQsIGQpCisgICAgICAgICAgICB1ZC5wcm94eS5jbGVhbigpCisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodWQucmVzb2x2ZWZpbGUpCiAKLSAgICAgICAgaWYgKCduYW1lJyBub3QgaW4gc2hyaW5rb2JqKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyh1ZC5wa2duYW1lLCBqc29uZGVwb2JqLCB1ZC52ZXJzaW9uLCBkLCB1ZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2dldHNocmlua2VkZGVwZW5kZW5jaWVzKHVkLnBrZ25hbWUsIHNocmlua29iaiwgdWQudmVyc2lvbiwgZCwgdWQsIGxvY2tkb3duLCBqc29uZGVwb2JqKQotCi0gICAgICAgIHdpdGggb3Blbih1ZC5sb2NhbHBhdGgsICd3JykgYXMgb3V0ZmlsZToKLSAgICAgICAgICAgIGpzb24uZHVtcChqc29uZGVwb2JqLCBvdXRmaWxlKQotCi0gICAgZGVmIGJ1aWxkX21pcnJvcl9kYXRhKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIyBHZW5lcmF0ZSBhIG1pcnJvciB0YXJiYWxsIGlmIG5lZWRlZAotICAgICAgICBpZiB1ZC53cml0ZV90YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpOgotICAgICAgICAgICAgIyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBzeW1saW5rIHBvaW50cyB0byByZWFkLW9ubHkgZmlsZXN5c3RlbSB3aXRoIFBSRU1JUlJPUgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsodWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKHVkLmZ1bGxtaXJyb3IpCi0KLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiQ3JlYXRpbmcgdGFyYmFsbCBvZiBucG0gZGF0YSIpCi0gICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC1jSmYgJXMgbnBtLyVzIG5wbS8lcyIgJSAodWQuZnVsbG1pcnJvciwgdWQuYmJucG1tYW5pZmVzdCwgdWQucGtnbmFtZSksIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZGlyPWRsZGlyKQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRvdWNoICVzLmRvbmUiICUgKHVkLmZ1bGxtaXJyb3IpLCBkLCB3b3JrZGlyPWRsZGlyKQorICAgIGRlZiBkb25lKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiSXMgdGhlIGRvd25sb2FkIGRvbmUgPyIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHByb3h5X20sIHByb3h5X3VkLCBwcm94eV9kID0gc2VsZi5fZ2V0X3Byb3h5X21ldGhvZCh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X20uZG9uZShwcm94eV91ZCwgcHJveHlfZCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtc3cucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzNTExZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5CkBAIC0wLDAgKzEsMjU1IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIiIiCitCaXRCYWtlICdGZXRjaCcgbnBtIHNocmlua3dyYXAgaW1wbGVtZW50YXRpb24KKworbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtc3c6Ly9zb21lLnJlZ2lzdHJ5LnVybDtPcHRpb25BPXh4eDtPcHRpb25CPXh4eDsuLi4iCisKK1N1cHBvcnRlZCBTUkNfVVJJIG9wdGlvbnMgYXJlOgorCistIGRldgorICAgU2V0IHRvIDEgdG8gYWxzbyBpbnN0YWxsIGRldkRlcGVuZGVuY2llcy4KKworLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgZGVwZW5kZW5jaWVzIChkZWZhdWx0OiAke1N9KS4KKyIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBiYgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBucG1faW50ZWdyaXR5Citmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IG5wbV9sb2NhbGZpbGUKK2Zyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX3VucGFjaworZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCisKK2RlZiBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBjYWxsYmFjaz1Ob25lLCBkZXY9RmFsc2UpOgorICAgICIiIgorICAgICAgICBSdW4gYSBjYWxsYmFjayBmb3IgZWFjaCBkZXBlbmRlbmNpZXMgb2YgYSBzaHJpbmt3cmFwIGZpbGUuCisgICAgICAgIFRoZSBjYWxsYmFjayBpcyB1c2luZyB0aGUgZm9ybWF0OgorICAgICAgICAgICAgY2FsbGJhY2sobmFtZSwgcGFyYW1zLCBkZXB0cmVlKQorICAgICAgICB3aXRoOgorICAgICAgICAgICAgbmFtZSA9IHRoZSBwYWNrYWdlIG5hbWUgKHN0cmluZykKKyAgICAgICAgICAgIHBhcmFtcyA9IHRoZSBwYWNrYWdlIHBhcmFtZXRlcnMgKGRpY3Rpb25hcnkpCisgICAgICAgICAgICBkZXB0cmVlID0gdGhlIHBhY2thZ2UgZGVwZW5kZW5jeSB0cmVlIChhcnJheSBvZiBzdHJpbmdzKQorICAgICIiIgorICAgIGRlZiBfd2Fsa19kZXBzKGRlcHMsIGRlcHRyZWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBkZXBzOgorICAgICAgICAgICAgc3VidHJlZSA9IFsqZGVwdHJlZSwgbmFtZV0KKyAgICAgICAgICAgIF93YWxrX2RlcHMoZGVwc1tuYW1lXS5nZXQoImRlcGVuZGVuY2llcyIsIHt9KSwgc3VidHJlZSkKKyAgICAgICAgICAgIGlmIGNhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGRlcHNbbmFtZV0uZ2V0KCJkZXYiLCBGYWxzZSkgYW5kIG5vdCBkZXY6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxpZiBkZXBzW25hbWVdLmdldCgiYnVuZGxlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhuYW1lLCBkZXBzW25hbWVdLCBzdWJ0cmVlKQorCisgICAgX3dhbGtfZGVwcyhzaHJpbmt3cmFwLmdldCgiZGVwZW5kZW5jaWVzIiwge30pLCBbXSkKKworY2xhc3MgTnBtU2hyaW5rV3JhcChGZXRjaE1ldGhvZCk6CisgICAgIiIiQ2xhc3MgdG8gZmV0Y2ggYWxsIHBhY2thZ2UgZnJvbSBhIHNocmlua3dyYXAgZmlsZSIiIgorCisgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgYSBnaXZlbiB1cmwgY2FuIGJlIGZldGNoZWQgd2l0aCBucG1zdyIiIgorICAgICAgICByZXR1cm4gdWQudHlwZSBpbiBbIm5wbXN3Il0KKworICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJJbml0IG5wbXN3IHNwZWNpZmljIHZhcmlhYmxlcyB3aXRoaW4gdXJsIGRhdGEiIiIKKworICAgICAgICAjIEdldCB0aGUgJ3Nocmlua3dyYXAnIHBhcmFtZXRlcgorICAgICAgICB1ZC5zaHJpbmt3cmFwX2ZpbGUgPSByZS5zdWIociJebnBtc3c6Ly8iLCAiIiwgdWQudXJsLnNwbGl0KCI7IilbMF0pCisKKyAgICAgICAgIyBHZXQgdGhlICdkZXYnIHBhcmFtZXRlcgorICAgICAgICB1ZC5kZXYgPSBiYi51dGlscy50b19ib29sZWFuKHVkLnBhcm0uZ2V0KCJkZXYiKSwgRmFsc2UpCisKKyAgICAgICAgIyBSZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgdWQuZGVwcyA9IFtdCisKKyAgICAgICAgZGVmIF9yZXNvbHZlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgICAgIHVybCA9IE5vbmUKKyAgICAgICAgICAgIGxvY2FscGF0aCA9IE5vbmUKKyAgICAgICAgICAgIGV4dHJhcGF0aHMgPSBbXQorICAgICAgICAgICAgZGVzdHN1YmRpcnMgPSBbb3MucGF0aC5qb2luKCJub2RlX21vZHVsZXMiLCBkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0KKyAgICAgICAgICAgIGRlc3RzdWZmaXggPSBvcy5wYXRoLmpvaW4oKmRlc3RzdWJkaXJzKQorCisgICAgICAgICAgICBpbnRlZ3JpdHkgPSBwYXJhbXMuZ2V0KCJpbnRlZ3JpdHkiLCBOb25lKQorICAgICAgICAgICAgcmVzb2x2ZWQgPSBwYXJhbXMuZ2V0KCJyZXNvbHZlZCIsIE5vbmUpCisgICAgICAgICAgICB2ZXJzaW9uID0gcGFyYW1zLmdldCgidmVyc2lvbiIsIE5vbmUpCisKKyAgICAgICAgICAgICMgSGFuZGxlIHJlZ2lzdHJ5IHNvdXJjZXMKKyAgICAgICAgICAgIGlmIGlzX3NlbXZlcih2ZXJzaW9uKSBhbmQgcmVzb2x2ZWQgYW5kIGludGVncml0eToKKyAgICAgICAgICAgICAgICBsb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKG5hbWUsIHZlcnNpb24pCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkocmVzb2x2ZWQpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1siZG93bmxvYWRmaWxlbmFtZSJdID0gbG9jYWxmaWxlCisKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9uYW1lLCBjaGVja3N1bV9leHBlY3RlZCA9IG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbY2hlY2tzdW1fbmFtZV0gPSBjaGVja3N1bV9leHBlY3RlZAorCisgICAgICAgICAgICAgICAgdXJsID0gc3RyKHVyaSkKKworICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIGxvY2FsZmlsZSkKKworICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVzb2x2ZSBmaWxlIHRvIG1pbWljIHRoZSBucG0gZmV0Y2hlciBhbmQgYWxsb3cKKyAgICAgICAgICAgICAgICAjIHJlLXVzYWJpbGl0eSBvZiB0aGUgZG93bmxvYWRlZCBmaWxlLgorICAgICAgICAgICAgICAgIHJlc29sdmVmaWxlID0gbG9jYWxwYXRoICsgIi5yZXNvbHZlZCIKKworICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUocmVzb2x2ZWZpbGUpKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihyZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHVybCkKKworICAgICAgICAgICAgICAgIGV4dHJhcGF0aHMuYXBwZW5kKHJlc29sdmVmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBodHRwIHRhcmJhbGwgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImh0dHAiKSBhbmQgaW50ZWdyaXR5OgorICAgICAgICAgICAgICAgIGxvY2FsZmlsZSA9IG9zLnBhdGguam9pbigibnBtMiIsIG9zLnBhdGguYmFzZW5hbWUodmVyc2lvbikpCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkodmVyc2lvbikKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSBsb2NhbGZpbGUKKworICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUsIGNoZWNrc3VtX2V4cGVjdGVkID0gbnBtX2ludGVncml0eShpbnRlZ3JpdHkpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1tjaGVja3N1bV9uYW1lXSA9IGNoZWNrc3VtX2V4cGVjdGVkCisKKyAgICAgICAgICAgICAgICB1cmwgPSBzdHIodXJpKQorCisgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbG9jYWxmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBnaXQgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImdpdCIpOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyIiIiCisgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgZ2l0XCsKKyAgICAgICAgICAgICAgICAgICAgKD9QPHByb3RvY29sPlthLXpdKykKKyAgICAgICAgICAgICAgICAgICAgOi8vCisgICAgICAgICAgICAgICAgICAgICg/UDx1cmw+W14jXSspCisgICAgICAgICAgICAgICAgICAgIFwjCisgICAgICAgICAgICAgICAgICAgICg/UDxyZXY+WzAtOWEtZl0rKQorICAgICAgICAgICAgICAgICAgICAkCisgICAgICAgICAgICAgICAgICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2godmVyc2lvbikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgZ2l0IHVybDogJXMiICUgdmVyc2lvbiwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgZ3JvdXBzID0gbWF0Y2guZ3JvdXBkaWN0KCkKKworICAgICAgICAgICAgICAgIHVyaSA9IFVSSSgiZ2l0Oi8vIiArIHN0cihncm91cHNbInVybCJdKSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJwcm90b2NvbCJdID0gc3RyKGdyb3Vwc1sicHJvdG9jb2wiXSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJyZXYiXSA9IHN0cihncm91cHNbInJldiJdKQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbImRlc3RzdWZmaXgiXSA9IGRlc3RzdWZmaXgKKworICAgICAgICAgICAgICAgIHVybCA9IHN0cih1cmkpCisKKyAgICAgICAgICAgICMgbG9jYWwgdGFyYmFsbCBzb3VyY2VzIGFuZCBsb2NhbCBsaW5rIHNvdXJjZXMgYXJlIHVuc3VwcG9ydGVkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJVbnN1cHBvcnRlZCBkZXBlbmRlbmN5OiAlcyIgJSBuYW1lLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHVkLmRlcHMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAidXJsIjogdXJsLAorICAgICAgICAgICAgICAgICJsb2NhbHBhdGgiOiBsb2NhbHBhdGgsCisgICAgICAgICAgICAgICAgImV4dHJhcGF0aHMiOiBleHRyYXBhdGhzLAorICAgICAgICAgICAgICAgICJkZXN0c3VmZml4IjogZGVzdHN1ZmZpeCwKKyAgICAgICAgICAgIH0pCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHVkLnNocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgc2hyaW5rd3JhcCBmaWxlOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBfcmVzb2x2ZV9kZXBlbmRlbmN5LCB1ZC5kZXYpCisKKyAgICAgICAgIyBBdm9pZCBjb25mbGljdHMgYmV0d2VlbiB0aGUgZW52aXJvbm1lbnQgZGF0YSBhbmQ6CisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIHJldmlzaW9uCisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIGNoZWNrc3VtCisgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgZGF0YS5kZWxWYXIoIlNSQ1JFViIpCisgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorCisgICAgICAgICMgVGhpcyBmZXRjaGVyIHJlc29sdmVzIG11bHRpcGxlIFVSSXMgZnJvbSBhIHNocmlua3dyYXAgZmlsZSBhbmQgdGhlbgorICAgICAgICAjIGZvcndhcmRzIGl0IHRvIGEgcHJveHkgZmV0Y2hlci4gVGhlIG1hbmFnZW1lbnQgb2YgdGhlIGRvbmVzdGFtcCBmaWxlLAorICAgICAgICAjIHRoZSBsb2NrZmlsZSBhbmQgdGhlIGNoZWNrc3VtcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBwcm94eSBmZXRjaGVyLgorICAgICAgICB1ZC5wcm94eSA9IEZldGNoKFtkZXBbInVybCJdIGZvciBkZXAgaW4gdWQuZGVwc10sIGRhdGEpCisgICAgICAgIHVkLm5lZWRkb25lc3RhbXAgPSBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIGhhbmRsZSk6CisgICAgICAgIHJldHVybnMgPSBbXQorICAgICAgICBmb3IgcHJveHlfdXJsIGluIHVkLnByb3h5LnVybHM6CisgICAgICAgICAgICBwcm94eV91ZCA9IHVkLnByb3h5LnVkW3Byb3h5X3VybF0KKyAgICAgICAgICAgIHByb3h5X2QgPSB1ZC5wcm94eS5kCisgICAgICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgICAgIHJldHVybnMuYXBwZW5kKGhhbmRsZShwcm94eV91ZC5tZXRob2QsIHByb3h5X3VkLCBwcm94eV9kKSkKKyAgICAgICAgcmV0dXJuIHJldHVybnMKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICByZXR1cm4gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiB1cGRhdGVfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICBtLnVwZGF0ZV9kb25lc3RhbXAodWQsIGQpCisgICAgICAgIHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKQorCisgICAgZGVmIG5lZWRfdXBkYXRlKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiRm9yY2UgYSBmZXRjaCwgZXZlbiBpZiBsb2NhbHBhdGggZXhpc3RzID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0ubmVlZF91cGRhdGUodWQsIGQpCisgICAgICAgIHJldHVybiBhbGwoc2VsZi5fZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIF9oYW5kbGUpKQorCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1ZCwgZCwgbWlycm9ycyk6CisgICAgICAgICIiIlRyeSB0byB1c2UgYSBtaXJyb3IiIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0udHJ5X21pcnJvcnMoZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkZldGNoIHVybCIiIgorICAgICAgICB1ZC5wcm94eS5kb3dubG9hZCgpCisKKyAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCByb290ZGlyLCBkKToKKyAgICAgICAgIiIiVW5wYWNrIHRoZSBkb3dubG9hZGVkIGRlcGVuZGVuY2llcyIiIgorICAgICAgICBkZXN0ZGlyID0gZC5nZXRWYXIoIlMiKQorICAgICAgICBkZXN0c3VmZml4ID0gdWQucGFybS5nZXQoImRlc3RzdWZmaXgiKQorICAgICAgICBpZiBkZXN0c3VmZml4OgorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihyb290ZGlyLCBkZXN0c3VmZml4KQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICBiYi51dGlscy5jb3B5ZmlsZSh1ZC5zaHJpbmt3cmFwX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkZXN0ZGlyLCAibnBtLXNocmlua3dyYXAuanNvbiIpKQorCisgICAgICAgIGF1dG8gPSBbZGVwWyJ1cmwiXSBmb3IgZGVwIGluIHVkLmRlcHMgaWYgbm90IGRlcFsibG9jYWxwYXRoIl1dCisgICAgICAgIG1hbnVhbCA9IFtkZXAgZm9yIGRlcCBpbiB1ZC5kZXBzIGlmIGRlcFsibG9jYWxwYXRoIl1dCisKKyAgICAgICAgaWYgYXV0bzoKKyAgICAgICAgICAgIHVkLnByb3h5LnVucGFjayhkZXN0ZGlyLCBhdXRvKQorCisgICAgICAgIGZvciBkZXAgaW4gbWFudWFsOgorICAgICAgICAgICAgZGVwZGVzdGRpciA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBkZXBbImRlc3RzdWZmaXgiXSkKKyAgICAgICAgICAgIG5wbV91bnBhY2soZGVwWyJsb2NhbHBhdGgiXSwgZGVwZGVzdGRpciwgZCkKKworICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgdWQucHJveHkuY2xlYW4oKQorCisgICAgICAgICMgQ2xlYW4gZXh0cmEgZmlsZXMKKyAgICAgICAgZm9yIGRlcCBpbiB1ZC5kZXBzOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gZGVwWyJleHRyYXBhdGhzIl06CisgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHBhdGgpCisKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIklzIHRoZSBkb3dubG9hZCBkb25lID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0uZG9uZSh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIGFsbChzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkKaW5kZXggM2U1NjcxNS4uOGYwOTFlZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weQpAQCAtNyw4ICs3LDYgQEAKIAogIiIiCiAKLWltcG9ydCAgb3MKLWltcG9ydCAgc3lzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0ICBiYgogZnJvbSAgICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCkBAIC00Myw3ICs0MSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwdiA9IGQuZ2V0VmFyKCJQViIsIEZhbHNlKQogICAgICAgICAgICAgcmV2ID0gYmIuZmV0Y2gyLnNyY3Jldl9pbnRlcm5hbF9oZWxwZXIodWQsIGQpCi0gICAgICAgICAgICBpZiByZXYgYW5kIHJldiAhPSBUcnVlOgorICAgICAgICAgICAgaWYgcmV2OgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gcmV2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKaW5kZXggNTRkMDAxZS4uZjU3YzJhNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKQEAgLTExLDcgKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICAgICAgaWYgY29tbWFuZCA9PSAnY2hhbmdlcyc6CiAgICAgICAgICAgICBwNGNtZCA9ICclcyVzIGNoYW5nZXMgLW0gMSAvLyVzJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgcGF0aG5yZXYpCiAgICAgICAgIGVsaWYgY29tbWFuZCA9PSAncHJpbnQnOgotICAgICAgICAgICAgaWYgZGVwb3RfZmlsZW5hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGRlcG90X2ZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHA0Y21kID0gJyVzJXMgcHJpbnQgLW8gInA0LyVzIiAiJXMiJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgZmlsZW5hbWUsIGRlcG90X2ZpbGVuYW1lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdObyBkZXBvdCBmaWxlIG5hbWUgcHJvdmlkZWQgdG8gcDQgJXMnICUgY29tbWFuZCwgdWQudXJsKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5CmluZGV4IGY1YmUwNjAuLjVlOTgyZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3NzaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zc2gucHkKQEAgLTMyLDggKzMyLDYgQEAKIAogaW1wb3J0IHJlLCBvcwogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIAogCkBAIC02MCw3ICs1OCw3IEBACiAgICAgJycnQ2xhc3MgdG8gZmV0Y2ggYSBtb2R1bGUgb3IgbW9kdWxlcyB2aWEgU2VjdXJlIFNoZWxsJycnCiAKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdXJsZGF0YSwgZCk6Ci0gICAgICAgIHJldHVybiBfX3BhdHRlcm5fXy5tYXRjaCh1cmxkYXRhLnVybCkgIT0gTm9uZQorICAgICAgICByZXR1cm4gX19wYXR0ZXJuX18ubWF0Y2godXJsZGF0YS51cmwpIGlzIG5vdCBOb25lCiAKICAgICBkZWYgc3VwcG9ydHNfY2hlY2tzdW0oc2VsZiwgdXJsZGF0YSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5CmluZGV4IDk2ZDY2NmIuLjk3MWE1YWQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkKQEAgLTExLDggKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGltcG9ydCByZQogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTQ5LDcgKzQ3LDcgQEAKICAgICAgICAgc3ZuZGlyID0gZC5nZXRWYXIoIlNWTkRJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL3N2biIpCiAgICAgICAgIHJlbHBhdGggPSBzZWxmLl9zdHJpcF9sZWFkaW5nX3NsYXNoZXModWQucGF0aCkKICAgICAgICAgdWQucGtnZGlyID0gb3MucGF0aC5qb2luKHN2bmRpciwgdWQuaG9zdCwgcmVscGF0aCkKLSAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQubW9kdWxlKQorICAgICAgICB1ZC5tb2RkaXIgPSBvcy5wYXRoLmpvaW4odWQucGtnZGlyLCB1ZC5wYXRoX3NwZWMpCiAgICAgICAgICMgUHJvdGVjdHMgdGhlIHJlcG9zaXRvcnkgZnJvbSBjb25jdXJyZW50IHVwZGF0ZXMsIGUuZy4gZnJvbSB0d28KICAgICAgICAgIyByZWNpcGVzIGZldGNoaW5nIGRpZmZlcmVudCByZXZpc2lvbnMgYXQgdGhlIHNhbWUgdGltZQogICAgICAgICB1ZC5zdm5sb2NrID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgInN2bi5sb2NrIikKQEAgLTEyNCwzMCArMTIyLDMwIEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih1ZC5tb2RkaXIsICcuc3ZuJyksIG9zLlJfT0spOgotICAgICAgICAgICAgICAgIHN2bnVwZGF0ZWNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgInVwZGF0ZSIpCisgICAgICAgICAgICAgICAgc3ZuY21kID0gc2VsZi5fYnVpbGRzdm5jb21tYW5kKHVkLCBkLCAidXBkYXRlIikKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXBkYXRlICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGF0dGVtcHQgdG8gcnVuIHN2biB1cGdyYWRlIGZpcnN0IGluIGNhc2UgaXRzIGFuIG9sZGVyIHdvcmtpbmcgZm9ybWF0CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiB1cGdyYWRlIiwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEZldGNoRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBzdm51cGRhdGVjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bnVwZGF0ZWNtZCwgdWQudXJsKQotICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bnVwZGF0ZWNtZCwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuY21kKQorICAgICAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm5jbWQsIHVkLnVybCkKKyAgICAgICAgICAgICAgICBydW5mZXRjaGNtZChzdm5jbWQsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdm5mZXRjaGNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgImZldGNoIikKKyAgICAgICAgICAgICAgICBzdm5jbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJmZXRjaCIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBjaGVjayBvdXQgc291cmNlcyB0aGVyZQogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkaXIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuZmV0Y2hjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmZldGNoY21kLCB1ZC51cmwpCi0gICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuZmV0Y2hjbWQsIGQsIHdvcmtkaXI9dWQucGtnZGlyKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmNtZCkKKyAgICAgICAgICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgc3ZuY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuY21kLCBkLCB3b3JrZGlyPXVkLnBrZ2RpcikKIAogICAgICAgICAgICAgaWYgbm90ICgiZXh0ZXJuYWxzIiBpbiB1ZC5wYXJtIGFuZCB1ZC5wYXJtWyJleHRlcm5hbHMiXSA9PSAibm93YXJuIik6CiAgICAgICAgICAgICAgICAgIyBXYXJuIHRoZSB1c2VyIGlmIHRoaXMgaGFkIGV4dGVybmFscyAod29uJ3QgY2F0Y2ggdGhlbSBhbGwpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gcnVuZmV0Y2hjbWQoInN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgfHwgdHJ1ZSIsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuZmV0Y2hjbWQuc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuY21kLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlcyBjb250YWlucyBzdm46ZXh0ZXJuYWxzLiIgJSB1ZC51cmwpCiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGVzZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHJlY2lwZSBTUkNfVVJJIGFzIG5lY2Vzc2FyeS4iKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2Fybigic3ZuIGZldGNoIGhhcyBpZ25vcmVkIGV4dGVybmFsczpcbiVzIiAlIG91dHB1dCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CmluZGV4IDcyNTU4NmQuLmY3ZDFkZTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQpAQCAtMTIsMTEgKzEyLDEwIEBACiAjCiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAoraW1wb3J0IHNobGV4CiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBlcnJubwogaW1wb3J0IGJiCiBpbXBvcnQgYmIucHJvZ3Jlc3MKQEAgLTI3LDcgKzI2LDYgQEAKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCiBmcm9tICAgYmIudXRpbHMgaW1wb3J0IGV4cG9ydF9wcm94aWVzCiBmcm9tICAgYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCiBmcm9tICAgYnM0IGltcG9ydCBTb3VwU3RyYWluZXIKQEAgLTk0LDkgKzkyLDkgQEAKICAgICAgICAgZmV0Y2hjbWQgPSBzZWxmLmJhc2VjbWQKIAogICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlKSkKLSAgICAgICAgICAgIGZldGNoY21kICs9ICIgLU8gIiArIGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlCisgICAgICAgICAgICBsb2NhbHBhdGggPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCB1ZC5sb2NhbGZpbGUpCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGxvY2FscGF0aCkpCisgICAgICAgICAgICBmZXRjaGNtZCArPSAiIC1PICVzIiAlIHNobGV4LnF1b3RlKGxvY2FscGF0aCkKIAogICAgICAgICBpZiB1ZC51c2VyIGFuZCB1ZC5wc3dkOgogICAgICAgICAgICAgZmV0Y2hjbWQgKz0gIiAtLXVzZXI9JXMgLS1wYXNzd29yZD0lcyAtLWF1dGgtbm8tY2hhbGxlbmdlIiAlICh1ZC51c2VyLCB1ZC5wc3dkKQpAQCAtMzAyLDYgKzMwMCw3IEBACiAgICAgICAgICAgICAjIFNvbWUgc2VydmVycyAoRnVzaW9uRm9yZ2UsIGFzIHVzZWQgb24gQWxpb3RoKSByZXF1aXJlIHRoYXQgdGhlCiAgICAgICAgICAgICAjIG9wdGlvbmFsIEFjY2VwdCBoZWFkZXIgaXMgc2V0LgogICAgICAgICAgICAgci5hZGRfaGVhZGVyKCJBY2NlcHQiLCAiKi8qIikKKyAgICAgICAgICAgIHIuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuMTIpIEdlY2tvLzIwMTAxMDI3IFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjEyIikKICAgICAgICAgICAgIGRlZiBhZGRfYmFzaWNfYXV0aChsb2dpbl9zdHIsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICcnJ0FkZHMgQmFzaWMgYXV0aCB0byBodHRwIHJlcXVlc3QsIHBhc3MgaW4gbG9naW46cGFzc3dvcmQgYXMgc3RyaW5nJycnCiAgICAgICAgICAgICAgICAgaW1wb3J0IGJhc2U2NApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvbW9uaXRvcmRpc2sucHkKaW5kZXggMWEyNWIwMC4uZTdjMDcyNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21vbml0b3JkaXNrLnB5CkBAIC00LDcgKzQsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgbG9nZ2luZywgcmUsIHN5cworaW1wb3J0IG9zLCBsb2dnaW5nLCByZQogaW1wb3J0IGJiCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5Nb25pdG9yIikKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQppbmRleCA2MjE2ZWIzLi5jMGIzNDRlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQpAQCAtMTMsOSArMTMsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBsb2dnaW5nLmNvbmZpZwogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnkKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMTAwLDYgKzk5LDkgQEAKICAgICBkZWYgZW5hYmxlX2NvbG9yKHNlbGYpOgogICAgICAgICBzZWxmLmNvbG9yX2VuYWJsZWQgPSBUcnVlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgZm10PSclcycgY29sb3I9JXMiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9mbXQsICJUcnVlIiBpZiBzZWxmLmNvbG9yX2VuYWJsZWQgZWxzZSAiRmFsc2UiKQorCiBjbGFzcyBCQkxvZ0ZpbHRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBsZXZlbCwgZGVidWdfZG9tYWlucyk6CiAgICAgICAgIHNlbGYuc3RkbGV2ZWwgPSBsZXZlbApAQCAtMTE4LDYwICsxMjAsNTkgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZEVycihCQkxvZ0ZpbHRlcik6Ci0gICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPj0gbG9nZ2luZy5FUlJPUjoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQorY2xhc3MgTG9nRmlsdGVyR0VRTGV2ZWwobG9nZ2luZy5GaWx0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZXZlbCk6CisgICAgICAgIHNlbGYuc3RybGV2ZWwgPSBzdHIobGV2ZWwpCisgICAgICAgIHNlbGYubGV2ZWwgPSBzdHJpbmdUb0xldmVsKGxldmVsKQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZE91dChCQkxvZ0ZpbHRlcik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIGxldmVsID49ICVzICglZCkiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnN0cmxldmVsLCBzZWxmLmxldmVsKQorCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPCBsb2dnaW5nLkVSUk9SOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAocmVjb3JkLmxldmVsbm8gPj0gc2VsZi5sZXZlbCkKKworY2xhc3MgTG9nRmlsdGVyTFRMZXZlbChsb2dnaW5nLkZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsKToKKyAgICAgICAgc2VsZi5zdHJsZXZlbCA9IHN0cihsZXZlbCkKKyAgICAgICAgc2VsZi5sZXZlbCA9IHN0cmluZ1RvTGV2ZWwobGV2ZWwpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgbGV2ZWwgPCAlcyAoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5zdHJsZXZlbCwgc2VsZi5sZXZlbCkKKworICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgcmV0dXJuIChyZWNvcmQubGV2ZWxubyA8IHNlbGYubGV2ZWwpCiAKICMgTWVzc2FnZSBjb250cm9sIGZ1bmN0aW9ucwogIwogCi1sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IDAKK2xvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IEJCTG9nRm9ybWF0dGVyLk5PVEUKIGxvZ2dlckRlZmF1bHRWZXJib3NlID0gRmFsc2UKIGxvZ2dlclZlcmJvc2VMb2dzID0gRmFsc2UKLWxvZ2dlckRlZmF1bHREb21haW5zID0gW10KK2xvZ2dlckRlZmF1bHREb21haW5zID0ge30KIAogZGVmIGluaXRfbXNnY29uZmlnKHZlcmJvc2UsIGRlYnVnLCBkZWJ1Z19kb21haW5zPU5vbmUpOgogICAgICIiIgogICAgIFNldCBkZWZhdWx0IHZlcmJvc2l0eSBhbmQgZGVidWcgbGV2ZWxzIGNvbmZpZyB0aGUgbG9nZ2VyCiAgICAgIiIiCi0gICAgYmIubXNnLmxvZ2dlckRlZmF1bHREZWJ1Z0xldmVsID0gZGVidWcKICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdFZlcmJvc2UgPSB2ZXJib3NlCiAgICAgaWYgdmVyYm9zZToKICAgICAgICAgYmIubXNnLmxvZ2dlclZlcmJvc2VMb2dzID0gVHJ1ZQotICAgIGlmIGRlYnVnX2RvbWFpbnM6Ci0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucyA9IGRlYnVnX2RvbWFpbnMKLSAgICBlbHNlOgotICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgPSBbXQotCi1kZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgotICAgIGRlYnVnID0gbG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwKLSAgICB2ZXJib3NlID0gbG9nZ2VyRGVmYXVsdFZlcmJvc2UKLSAgICBkb21haW5zID0gbG9nZ2VyRGVmYXVsdERvbWFpbnMKIAogICAgIGlmIGRlYnVnOgotICAgICAgICBsZXZlbCA9IEJCTG9nRm9ybWF0dGVyLkRFQlVHIC0gZGVidWcgKyAxCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5ERUJVRyAtIGRlYnVnICsgMQogICAgIGVsaWYgdmVyYm9zZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCiAgICAgZWxzZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCiAKLSAgICBkZWJ1Z19kb21haW5zID0ge30KLSAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZG9tYWlucyk6Ci0gICAgICAgIGRsZXZlbCA9IGxlbih0dXBsZShpdGVyYXRvcikpCi0gICAgICAgIGRlYnVnX2RvbWFpbnNbIkJpdEJha2UuJXMiICUgZG9tYWluYXJnXSA9IGxvZ2dpbmcuREVCVUcgLSBkbGV2ZWwgKyAxCi0gICAgcmV0dXJuIGxldmVsLCBkZWJ1Z19kb21haW5zCisgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0ge30KKyAgICBpZiBkZWJ1Z19kb21haW5zOgorICAgICAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZGVidWdfZG9tYWlucyk6CisgICAgICAgICAgICBkbGV2ZWwgPSBsZW4odHVwbGUoaXRlcmF0b3IpKQorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zWyJCaXRCYWtlLiVzIiAlIGRvbWFpbmFyZ10gPSBsb2dnaW5nLkRFQlVHIC0gZGxldmVsICsgMQorCitkZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgorICAgIHJldHVybiBsb2dnZXJEZWZhdWx0TG9nTGV2ZWwsIGxvZ2dlckRlZmF1bHREb21haW5zCiAKIGRlZiBhZGREZWZhdWx0bG9nRmlsdGVyKGhhbmRsZXIsIGNscyA9IEJCTG9nRmlsdGVyLCBmb3JjZWxldmVsPU5vbmUpOgogICAgIGxldmVsLCBkZWJ1Z19kb21haW5zID0gY29uc3RydWN0TG9nT3B0aW9ucygpCkBAIC0xODEsNiArMTgyLDE5IEBACiAKICAgICBjbHMoaGFuZGxlciwgbGV2ZWwsIGRlYnVnX2RvbWFpbnMpCiAKK2RlZiBzdHJpbmdUb0xldmVsKGxldmVsKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbnQobGV2ZWwpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIobG9nZ2luZywgbGV2ZWwpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisKKyAgICByZXR1cm4gZ2V0YXR0cihCQkxvZ0Zvcm1hdHRlciwgbGV2ZWwpCisKICMKICMgTWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbnMKICMKQEAgLTIxNCwzICsyMjgsMTA1IEBACiAgICAgICAgICAgICBpZiBoYW5kbGVyLnN0cmVhbSBpbiBbc3lzLnN0ZGVyciwgc3lzLnN0ZG91dF06CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKKworZGVmIG1lcmdlTG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIHVzZXJjb25maWcpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkobG9nY29uZmlnKQorICAgIHVzZXJjb25maWcgPSBjb3B5LmRlZXBjb3B5KHVzZXJjb25maWcpCisKKyAgICAjIE1lcmdlIGNvbmZpZyB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGlmIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykgIT0gbG9nY29uZmlnWyd2ZXJzaW9uJ106CisgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIkJhZCB1c2VyIGNvbmZpZ3VyYXRpb24gdmVyc2lvbi4gRXhwZWN0ZWQgJXIsIGdvdCAlciIgJSAobG9nY29uZmlnWyd2ZXJzaW9uJ10sIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykpKQorCisgICAgIyBTZXQgc29tZSBkZWZhdWx0cyB0byBtYWtlIG1lcmdpbmcgZWFzaWVyCisgICAgdXNlcmNvbmZpZy5zZXRkZWZhdWx0KCJsb2dnZXJzIiwge30pCisKKyAgICAjIElmIGEgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIgaXMgZGVmaW5lZCBpbiB0aGUgdXNlcgorICAgICMgY29uZmlnLCBpdCB3aWxsIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIGluIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGZvciBrIGluICgiaGFuZGxlcnMiLCAiZm9ybWF0dGVycyIsICJmaWx0ZXJzIik6CisgICAgICAgIGxvZ2NvbmZpZy5zZXRkZWZhdWx0KGssIHt9KS51cGRhdGUodXNlcmNvbmZpZy5nZXQoaywge30pKQorCisgICAgc2Vlbl9sb2dnZXJzID0gc2V0KCkKKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICAjIElmIHRoZSBtZXJnZSBvcHRpb24gaXMgc2V0LCBtZXJnZSB0aGUgaGFuZGxlcnMgYW5kCisgICAgICAgICMgZmlsdGVycy4gT3RoZXJ3aXNlLCBpZiBpdCBpcyBGYWxzZSwgdGhpcyBsb2dnZXIgd29uJ3QgZ2V0CisgICAgICAgICMgYWRkIHRvIHRoZSBzZXQgb2Ygc2VlbiBsb2dnZXJzIGFuZCB3aWxsIHJlcGxhY2UgdGhlCisgICAgICAgICMgZXhpc3Rpbmcgb25lCisgICAgICAgIGlmIGwuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICB1bG9nZ2VyID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdLnNldGRlZmF1bHQobmFtZSwge30pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImhhbmRsZXJzIiwgW10pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImZpbHRlcnMiLCBbXSkKKworICAgICAgICAgICAgIyBNZXJnZSBsaXN0cworICAgICAgICAgICAgbC5zZXRkZWZhdWx0KCJoYW5kbGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiaGFuZGxlcnMiXSkKKyAgICAgICAgICAgIGwuc2V0ZGVmYXVsdCgiZmlsdGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiZmlsdGVycyJdKQorCisgICAgICAgICAgICAjIFJlcGxhY2Ugb3RoZXIgcHJvcGVydGllcyBpZiBwcmVzZW50CisgICAgICAgICAgICBpZiAibGV2ZWwiIGluIHVsb2dnZXI6CisgICAgICAgICAgICAgICAgbFsibGV2ZWwiXSA9IHVsb2dnZXJbImxldmVsIl0KKworICAgICAgICAgICAgaWYgInByb3BhZ2F0ZSIgaW4gdWxvZ2dlcjoKKyAgICAgICAgICAgICAgICBsWyJwcm9wYWdhdGUiXSA9IHVsb2dnZXJbInByb3BhZ2F0ZSJdCisKKyAgICAgICAgICAgIHNlZW5fbG9nZ2Vycy5hZGQobmFtZSkKKworICAgICMgQWRkIGFsbCBsb2dnZXJzIHByZXNlbnQgaW4gdGhlIHVzZXIgY29uZmlnLCBidXQgbm90IGFueSB0aGF0CisgICAgIyBoYXZlIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKyAgICBmb3IgbmFtZSBpbiBzZXQodXNlcmNvbmZpZ1sibG9nZ2VycyJdLmtleXMoKSkgLSBzZWVuX2xvZ2dlcnM6CisgICAgICAgIGxvZ2NvbmZpZ1sibG9nZ2VycyJdW25hbWVdID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdW25hbWVdCisKKyAgICByZXR1cm4gbG9nY29uZmlnCisKK2RlZiBzZXRMb2dnaW5nQ29uZmlnKGRlZmF1bHRjb25maWcsIHVzZXJjb25maWdmaWxlPU5vbmUpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkoZGVmYXVsdGNvbmZpZykKKworICAgIGlmIHVzZXJjb25maWdmaWxlOgorICAgICAgICB3aXRoIG9wZW4odXNlcmNvbmZpZ2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcueW1sJykgb3IgdXNlcmNvbmZpZ2ZpbGUuZW5kc3dpdGgoJy55YW1sJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHlhbWwKKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0geWFtbC5sb2FkKGYpCisgICAgICAgICAgICBlbGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuanNvbicpIG9yIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuY2ZnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGpzb24KKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0ganNvbi5sb2FkKGYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIlVucmVjb2duaXplZCBmaWxlIGZvcm1hdDogJXMiICUgdXNlcmNvbmZpZ2ZpbGUpCisKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWcuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICAgICAgbG9nY29uZmlnID0gbWVyZ2VMb2dnaW5nQ29uZmlnKGxvZ2NvbmZpZywgdXNlcmNvbmZpZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBlbnRpcmUgZGVmYXVsdCBjb25maWcKKyAgICAgICAgICAgICAgICBsb2djb25maWcgPSB1c2VyY29uZmlnCisKKyAgICAjIENvbnZlcnQgYWxsIGxldmVsIHBhcmFtZXRlcnMgdG8gaW50ZWdlcnMgaW4gY2FzZSB1c2VycyB3YW50IHRvIHVzZSB0aGUKKyAgICAjIGJpdGJha2UgZGVmaW5lZCBsZXZlbCBuYW1lcworICAgIGZvciBoIGluIGxvZ2NvbmZpZ1siaGFuZGxlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBoOgorICAgICAgICAgICAgaFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGhbImxldmVsIl0pCisKKyAgICBmb3IgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgbFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGxbImxldmVsIl0pCisKKyAgICBjb25mID0gbG9nZ2luZy5jb25maWcuZGljdENvbmZpZ0NsYXNzKGxvZ2NvbmZpZykKKyAgICBjb25mLmNvbmZpZ3VyZSgpCisKKyAgICAjIFRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBsb2dnaW5nIGRvbWFpbnMgdGhleSB3YW50IGF0IGEgaGlnaGVyIGRlYnVnCisgICAgIyBsZXZlbCB0aGFuIHRoZSBzdGFuZGFyZC4KKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJCaXRCYWtlLiIpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBub3QgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjdXJsZXZlbCA9IGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucy5nZXQobmFtZSkKKyAgICAgICAgIyBOb3RlOiBsZXZlbCBwYXJhbWV0ZXIgc2hvdWxkIGFscmVhZHkgYmUgYSBpbnQgYmVjYXVzZSBvZiBjb252ZXJzaW9uCisgICAgICAgICMgYWJvdmUKKyAgICAgICAgbmV3bGV2ZWwgPSBpbnQobFsibGV2ZWwiXSkKKyAgICAgICAgaWYgY3VybGV2ZWwgaXMgTm9uZSBvciBuZXdsZXZlbCA8IGN1cmxldmVsOgorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zW25hbWVdID0gbmV3bGV2ZWwKKworICAgICAgICAjIFRPRE86IEkgZG9uJ3QgdGhpbmsgdGhhdCBzZXR0aW5nIHRoZSBnbG9iYWwgbG9nIGxldmVsIHNob3VsZCBiZSBuZWNlc3NhcnkKKyAgICAgICAgI2lmIG5ld2xldmVsIDwgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgIyAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gbmV3bGV2ZWwKKworICAgIHJldHVybiBjb25mCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CmluZGV4IGYwOTExZTYuLmViOGNmYTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CkBAIC05LDExICs5LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKLWltcG9ydCBpdGVydG9vbHMKIGZyb20gYmIgaW1wb3J0IG1ldGhvZHBvb2wKIGZyb20gYmIucGFyc2UgaW1wb3J0IGxvZ2dlcgogCkBAIC05Myw3ICs4OSw3IEBACiAgICAgICAgIHNlbGYuZ3JvdXBkID0gZ3JvdXBkCiAKICAgICBkZWYgZ2V0RnVuYyhzZWxmLCBrZXksIGRhdGEpOgotICAgICAgICBpZiAnZmxhZycgaW4gc2VsZi5ncm91cGQgYW5kIHNlbGYuZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIHNlbGYuZ3JvdXBkIGFuZCBzZWxmLmdyb3VwZFsnZmxhZyddIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyRmxhZyhrZXksIHNlbGYuZ3JvdXBkWydmbGFnJ10sIGV4cGFuZD1GYWxzZSwgbm93ZWFrZGVmYXVsdD1UcnVlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyKGtleSwgRmFsc2UsIG5vd2Vha2RlZmF1bHQ9VHJ1ZSwgcGFyc2luZz1UcnVlKQpAQCAtMTA2LDM2ICsxMDIsMzYgQEAKICAgICAgICAgICAgICdmaWxlJzogc2VsZi5maWxlbmFtZSwKICAgICAgICAgICAgICdsaW5lJzogc2VsZi5saW5lbm8sCiAgICAgICAgIH0KLSAgICAgICAgaWYgImV4cCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImV4cCJdICE9IE5vbmU6CisgICAgICAgIGlmICJleHAiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJleHAiXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGRhdGEuc2V0VmFyRmxhZyhrZXksICJleHBvcnQiLCAxLCBvcCA9ICdleHBvcnRlZCcsICoqbG9naW5mbykKIAogICAgICAgICBvcCA9ICJzZXQiCi0gICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdICE9IE5vbmU6CisgICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFsID0gc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkKICAgICAgICAgICAgIG9wID0gInNldD8iCi0gICAgICAgICAgICBpZiB2YWwgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHZhbCA9IGdyb3VwZFsidmFsdWUiXQotICAgICAgICBlbGlmICJjb2xvbiIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImNvbG9uIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiY29sb24iIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJjb2xvbiJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZSA9IGRhdGEuY3JlYXRlQ29weSgpCiAgICAgICAgICAgICBvcCA9ICJpbW1lZGlhdGUiCiAgICAgICAgICAgICB2YWwgPSBlLmV4cGFuZChncm91cGRbInZhbHVlIl0sIGtleSArICJbOj1dIikKLSAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJhcHBlbmQiCiAgICAgICAgICAgICB2YWwgPSAiJXMgJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZXBlbmQiXSAhPSBOb25lOgorICAgICAgICBlbGlmICJwcmVwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlcGVuZCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAicHJlcGVuZCIKICAgICAgICAgICAgIHZhbCA9ICIlcyAlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQotICAgICAgICBlbGlmICJwb3N0ZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicG9zdGRvdCJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgInBvc3Rkb3QiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJwb3N0ZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwb3N0ZG90IgogICAgICAgICAgICAgdmFsID0gIiVzJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwcmVkb3QiCiAgICAgICAgICAgICB2YWwgPSAiJXMlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdmFsID0gZ3JvdXBkWyJ2YWx1ZSJdCiAKICAgICAgICAgZmxhZyA9IE5vbmUKLSAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmbGFnID0gZ3JvdXBkWydmbGFnJ10KICAgICAgICAgZWxpZiBncm91cGRbImxhenlxdWVzIl06CiAgICAgICAgICAgICBmbGFnID0gIl9kZWZhdWx0dmFsIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQppbmRleCA2ZjdjZjgyLi42ZTIxNmVmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQpAQCAtMTMsOSArMTMsNyBAQAogIwogCiBpbXBvcnQgcmUsIGJiLCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYi5idWlsZCwgYmIudXRpbHMKLWZyb20gYmIgaW1wb3J0IGRhdGEKIAogZnJvbSAuIGltcG9ydCBDb25mSGFuZGxlcgogZnJvbSAuLiBpbXBvcnQgcmVzb2x2ZV9maWxlLCBhc3QsIGxvZ2dlciwgUGFyc2VFcnJvcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQppbmRleCBkZThmODdhLi43MzU3YWIyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQpAQCAtMTc5LDYgKzE3OSw5IEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ09ubHkgc3RyaW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkJykKIAorICAgICAgICAjIEVuc3VyZSB0aGUgZW50aXJlIHRyYW5zYWN0aW9uIChpbmNsdWRpbmcgU0VMRUNUKSBleGVjdXRlcyB1bmRlciB3cml0ZSBsb2NrCisgICAgICAgIGN1cnNvci5leGVjdXRlKCJCRUdJTiBFWENMVVNJVkUiKQorCiAgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBmcm9tICVzIHdoZXJlIGtleT0/OyIgJSBzZWxmLnRhYmxlLCBba2V5XSkKICAgICAgICAgcm93ID0gY3Vyc29yLmZldGNob25lKCkKICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvZ3Jlc3MucHkKaW5kZXggNDAyMmNhYS4uOWM3NTViNyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb2dyZXNzLnB5CkBAIC03LDcgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIGltcG9ydCBpbnNwZWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CmluZGV4IGY4MDk2M2MuLjgxNDU5YzMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CkBAIC05MiwxMSArOTIsMTEgQEAKICAgICBDaGVjayBpZiB0aGUgdmVyc2lvbiBwZSxwdixwciBpcyB0aGUgcHJlZmVycmVkIG9uZS4KICAgICBJZiB0aGVyZSBpcyBwcmVmZXJyZWQgdmVyc2lvbiBkZWZpbmVkIGFuZCBlbmRzIHdpdGggJyUnLCB0aGVuIHB2IGhhcyB0byBzdGFydCB3aXRoIHRoYXQgdmVyc2lvbiBhZnRlciByZW1vdmluZyB0aGUgJyUnCiAgICAgIiIiCi0gICAgaWYgKHByID09IHByZWZlcnJlZF9yIG9yIHByZWZlcnJlZF9yID09IE5vbmUpOgotICAgICAgICBpZiAocGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgPT0gTm9uZSk6CisgICAgaWYgcHIgPT0gcHJlZmVycmVkX3Igb3IgcHJlZmVycmVkX3IgaXMgTm9uZToKKyAgICAgICAgaWYgcGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHByZWZlcnJlZF92ID09IHB2OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiBwcmVmZXJyZWRfdiAhPSBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKKyAgICAgICAgICAgIGlmIHByZWZlcnJlZF92IGlzIG5vdCBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkKaW5kZXggNzM5MWUxYi4uNmM5ODY0ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9yZW1vdGVkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcmVtb3RlZGF0YS5weQpAQCAtMTcsMTYgKzE3LDE2IEBACiAgICAgICAgIHNlbGYuY29va2VyID0gY29va2VyCiAgICAgICAgIHNlbGYuZGF0YXN0b3JlcyA9IHt9CiAgICAgICAgIHNlbGYubG9ja2VkID0gW10KKyAgICAgICAgc2VsZi5kYXRhc3RvcmVzWzBdID0gc2VsZi5jb29rZXIuZGF0YQogICAgICAgICBzZWxmLm5leHRpbmRleCA9IDEKIAogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YXN0b3JlcykKIAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvb2tlci5kYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzW2tleV0KKyAgICAgICAgIyBDb29rZXIgY291bGQgaGF2ZSBjaGFuZ2VkIGl0cyBkYXRhc3RvcmUgZnJvbSB1bmRlciB1cworICAgICAgICBzZWxmLmRhdGFzdG9yZXNbMF0gPSBzZWxmLmNvb2tlci5kYXRhCisgICAgICAgIHJldHVybiBzZWxmLmRhdGFzdG9yZXNba2V5XQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzLml0ZW1zKCkKQEAgLTYzLDQ0ICs2MywzIEBACiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RyaWVkIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFzdG9yZSAlZCcgJSBpZHgpCiAgICAgICAgIGRlbCBzZWxmLmRhdGFzdG9yZXNbaWR4XQogCi0gICAgZGVmIHJlY2VpdmVfZGF0YXN0b3JlKHNlbGYsIHJlbW90ZV9kYXRhKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIGRhdGFzdG9yZSBvYmplY3Qgc2VudCBmcm9tIHRoZSBjbGllbnQgKGFzIHByZXBhcmVkIGJ5IHRyYW5zbWl0X2RhdGFzdG9yZSgpKSIiIgotICAgICAgICBkY3QgPSBkaWN0KHJlbW90ZV9kYXRhKQotICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQotICAgICAgICBkLmRpY3QgPSBkY3QKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBkc2luZGV4ID0gZGN0WydfcmVtb3RlX2RhdGEnXVsnX2NvbnRlbnQnXQotICAgICAgICAgICAgICAgIGRlbCBkY3RbJ19yZW1vdGVfZGF0YSddCi0gICAgICAgICAgICAgICAgaWYgZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmNvb2tlci5kYXRhLmRpY3QKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmRhdGFzdG9yZXNbZHNpbmRleF0uZGljdAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmICdfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGlkY3QgPSBkaWN0KGRjdFsnX2RhdGEnXSkKLSAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBpZGN0Ci0gICAgICAgICAgICAgICAgZGN0ID0gaWRjdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gZAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB0cmFuc21pdF9kYXRhc3RvcmUoZCk6Ci0gICAgICAgICIiIlByZXBhcmUgYSBkYXRhc3RvcmUgb2JqZWN0IGZvciBzZW5kaW5nIG92ZXIgSVBDIGZyb20gdGhlIGNsaWVudCBlbmQiIiIKLSAgICAgICAgIyBGSVhNRSBjb250ZW50IG1pZ2h0IGJlIGEgZGljdCwgbmVlZCB0byB0dXJuIHRoYXQgaW50byBhIGxpc3QgYXMgd2VsbAotICAgICAgICBkZWYgY29weV9kaWN0cyhkY3QpOgotICAgICAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGRzaW5kZXggPSBkY3RbJ19yZW1vdGVfZGF0YSddWydfY29udGVudCddLmRzaW5kZXgKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGN0WydfcmVtb3RlX2RhdGEnXSA9IHsnX2NvbnRlbnQnOiBkc2luZGV4fQotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KG5ld2RjdC5pdGVtcygpKQotICAgICAgICAgICAgZWxpZiAnX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGNvcHlfZGljdHMoZGN0WydfZGF0YSddKQotICAgICAgICAgICAgICAgIGlmIG5ld2RhdGE6Ci0gICAgICAgICAgICAgICAgICAgIG5ld2RjdFsnX2RhdGEnXSA9IG5ld2RhdGEKLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdChuZXdkY3QuaXRlbXMoKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIG1haW5fZGljdCA9IGNvcHlfZGljdHMoZC5kaWN0KQotICAgICAgICByZXR1cm4gbWFpbl9kaWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCAyNjQ5MmU3Li4xNmYwNzZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTEyLDE0ICsxMiwxMiBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN0YXQKLWltcG9ydCBmY250bAogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgYmIKLWZyb20gYmIgaW1wb3J0IG1zZywgZGF0YSwgZXZlbnQKK2Zyb20gYmIgaW1wb3J0IG1zZywgZXZlbnQKIGZyb20gYmIgaW1wb3J0IG1vbml0b3JkaXNrCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHBpY2tsZQpAQCAtMjksNiArMjcsNyBAQAogCiBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlJ1blF1ZXVlIikKK2hhc2hlcXVpdl9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5SdW5RdWV1ZS5IYXNoRXF1aXYiKQogCiBfX2ZpbmRfc2hhMjU2X18gPSByZS5jb21waWxlKCByJyg/aSkoPzwhW2EtejAtOV0pW2EtZjAtOV17NjR9KD8hW2EtejAtOV0pJyApCiAKQEAgLTE0OCw4ICsxNDcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBpZCBvZiB0aGUgZmlyc3QgdGFzayB3ZSBmaW5kIHRoYXQgaXMgYnVpbGRhYmxlCiAgICAgICAgICIiIgorICAgICAgICAjIE9uY2UgdGFza3MgYXJlIHJ1bm5pbmcgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGVtIGFnYWluCisgICAgICAgIHNlbGYuYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEucnVucV9ydW5uaW5nKQogICAgICAgICBidWlsZGFibGUgPSBzZXQoc2VsZi5idWlsZGFibGUpCi0gICAgICAgIGJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKICAgICAgICAgYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEuaG9sZG9mZl90YXNrcykKICAgICAgICAgYnVpbGRhYmxlLmludGVyc2VjdGlvbl91cGRhdGUoc2VsZi5ycS50YXNrc19jb3ZlcmVkIHwgc2VsZi5ycS50YXNrc19ub3Rjb3ZlcmVkKQogICAgICAgICBpZiBub3QgYnVpbGRhYmxlOgpAQCAtMjA3LDggKzIwNyw2IEBACiAKICAgICBkZWYgbmV3YnVpbGRhYmxlKHNlbGYsIHRhc2spOgogICAgICAgICBzZWxmLmJ1aWxkYWJsZS5hZGQodGFzaykKLSAgICAgICAgIyBPbmNlIHRhc2tzIGFyZSBydW5uaW5nIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlbSBhZ2FpbgotICAgICAgICBzZWxmLmJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKIAogICAgIGRlZiByZW1vdmVidWlsZGFibGUoc2VsZiwgdGFzayk6CiAgICAgICAgIHNlbGYuYnVpbGRhYmxlLnJlbW92ZSh0YXNrKQpAQCAtOTIzLDkgKzkyMSwxMSBAQAogICAgICAgICAgICAgcnVucV9idWlsZCA9IHt9CiAKICAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsOgorICAgICAgICAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgorICAgICAgICAgICAgICAgICAgICB0YXNrID0gImRvX3swfSIuZm9ybWF0KHRhc2spCiAgICAgICAgICAgICAgICAgcnVuYWxsX3RpZHMgPSBzZXQoKQogICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzKToKLSAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9IGZuX2Zyb21fdGlkKHRpZCkgKyAiOmRvXyVzIiAlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9ICJ7MH06ezF9Ii5mb3JtYXQoZm5fZnJvbV90aWQodGlkKSwgdGFzaykKICAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBkZWxjb3VudDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbd2FudHRpZF0gPSBkZWxjb3VudFt3YW50dGlkXQogICAgICAgICAgICAgICAgICAgICBpZiB3YW50dGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CkBAIC05NTIsNyArOTUyLDkgQEAKICAgICAgICAgICAgIHJ1bnFfYnVpbGQgPSB7fQogCiAgICAgICAgICAgICBmb3IgdGFzayBpbiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bm9ubHk6Ci0gICAgICAgICAgICAgICAgcnVub25seV90aWRzID0geyBrOiB2IGZvciBrLCB2IGluIHNlbGYucnVudGFza2VudHJpZXMuaXRlbXMoKSBpZiB0YXNrbmFtZV9mcm9tX3RpZChrKSA9PSAiZG9fJXMiICUgdGFzayB9CisgICAgICAgICAgICAgICAgaWYgbm90IHRhc2suc3RhcnRzd2l0aCgiZG9fIik6CisgICAgICAgICAgICAgICAgICAgIHRhc2sgPSAiZG9fezB9Ii5mb3JtYXQodGFzaykKKyAgICAgICAgICAgICAgICBydW5vbmx5X3RpZHMgPSB7IGs6IHYgZm9yIGssIHYgaW4gc2VsZi5ydW50YXNrZW50cmllcy5pdGVtcygpIGlmIHRhc2tuYW1lX2Zyb21fdGlkKGspID09IHRhc2sgfQogCiAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHJ1bm9ubHlfdGlkcyk6CiAgICAgICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKHRpZCwxKQpAQCAtMTEyNSwxNCArMTEyNywxNCBAQAogICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKICAgICAgICAgIyBJdGVyYXRlIG92ZXIgdGhlIHRhc2sgbGlzdCBsb29raW5nIGZvciB0YXNrcyB3aXRoIGEgJ3NldHNjZW5lJyBmdW5jdGlvbgotICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcyA9IFtdCisgICAgICAgIHNlbGYucnVucV9zZXRzY2VuZV90aWRzID0gc2V0KCkKICAgICAgICAgaWYgbm90IHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ubm9zZXRzY2VuZToKICAgICAgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKICAgICAgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgXykgPSBzcGxpdF90aWRfbWNmbih0aWQpCiAgICAgICAgICAgICAgICAgc2V0c2NlbmV0aWQgPSB0aWQgKyAiX3NldHNjZW5lIgogICAgICAgICAgICAgICAgIGlmIHNldHNjZW5ldGlkIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYXBwZW5kKHRpZCkKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcy5hZGQodGlkKQogCiAgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIApAQCAtMTE4MiwxMCArMTE4NCw4IEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5ydW50YXNrZW50cmllcykKIAogICAgIGRlZiBwcmVwYXJlX3Rhc2tfaGFzaChzZWxmLCB0aWQpOgotICAgICAgICBwcm9jZGVwID0gW10KLSAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgIHByb2NkZXAuYXBwZW5kKGRlcCkKLSAgICAgICAgc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgcHJvY2RlcCwgc2VsZi5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucHJlcF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCisgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCiAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF91bmloYXNoKHRpZCkKIAogICAgIGRlZiBkdW1wX2RhdGEoc2VsZik6CkBAIC0xMjU1LDcgKzEyNTUsNyBAQAogICAgICAgICAgICAgImZha2Vyb290ZGlycyIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdGRpcnMsCiAgICAgICAgICAgICAiZmFrZXJvb3Rub2VudiIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdG5vZW52LAogICAgICAgICAgICAgInNpZ2RhdGEiIDogYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNrZGF0YSgpLAotICAgICAgICAgICAgImxvZ2RlZmF1bHRkZWJ1ZyIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwsCisgICAgICAgICAgICAibG9nZGVmYXVsdGxldmVsIiA6IGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwsCiAgICAgICAgICAgICAibG9nZGVmYXVsdHZlcmJvc2UiIDogYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlLAogICAgICAgICAgICAgImxvZ2RlZmF1bHR2ZXJib3NlbG9ncyIgOiBiYi5tc2cubG9nZ2VyVmVyYm9zZUxvZ3MsCiAgICAgICAgICAgICAibG9nZGVmYXVsdGRvbWFpbiIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMsCkBAIC0xNzExLDYgKzE3MTEsNyBAQAogICAgICAgICBzZWxmLnJ1bnFfYnVpbGRhYmxlID0gc2V0KCkKICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcgPSBzZXQoKQogICAgICAgICBzZWxmLnJ1bnFfY29tcGxldGUgPSBzZXQoKQorICAgICAgICBzZWxmLnJ1bnFfdGFza3NydW4gPSBzZXQoKQogCiAgICAgICAgIHNlbGYuYnVpbGRfc3RhbXBzID0ge30KICAgICAgICAgc2VsZi5idWlsZF9zdGFtcHMyID0gW10KQEAgLTE4OTYsNiArMTg5Nyw3IEBACiAgICAgICAgIHNlbGYuc3RhdHMudGFza0NvbXBsZXRlZCgpCiAgICAgICAgIGJiLmV2ZW50LmZpcmUocnVuUXVldWVUYXNrQ29tcGxldGVkKHRhc2ssIHNlbGYuc3RhdHMsIHNlbGYucnEpLCBzZWxmLmNmZ0RhdGEpCiAgICAgICAgIHNlbGYudGFza19jb21wbGV0ZW91dHJpZ2h0KHRhc2spCisgICAgICAgIHNlbGYucnVucV90YXNrc3J1bi5hZGQodGFzaykKIAogICAgIGRlZiB0YXNrX2ZhaWwoc2VsZiwgdGFzaywgZXhpdGNvZGUpOgogICAgICAgICAiIiIKQEAgLTE5NjIsMTIgKzE5NjQsMTcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgc2VsZi5ycS5yZWFkX3dvcmtlcnMoKQotICAgICAgICBzZWxmLnByb2Nlc3NfcG9zc2libGVfbWlncmF0aW9ucygpCisgICAgICAgIGlmIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBvciBzZWxmLnBlbmRpbmdfbWlncmF0aW9uczoKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKCkKKworICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAic29ydGVkX3NldHNjZW5lX3RpZHMiKToKKyAgICAgICAgICAgICMgRG9uJ3Qgd2FudCB0byBzb3J0IHRoaXMgc2V0IGV2ZXJ5IGV4ZWN1dGlvbgorICAgICAgICAgICAgc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkcyA9IHNvcnRlZChzZWxmLnJxZGF0YS5ydW5xX3NldHNjZW5lX3RpZHMpCiAKICAgICAgICAgdGFzayA9IE5vbmUKICAgICAgICAgaWYgbm90IHNlbGYuc3Fkb25lIGFuZCBzZWxmLmNhbl9zdGFydF90YXNrKCk6CiAgICAgICAgICAgICAjIEZpbmQgdGhlIG5leHQgc2V0c2NlbmUgdG8gcnVuCi0gICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc29ydGVkKHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkcyk6CisgICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkczoKICAgICAgICAgICAgICAgICBpZiBuZXh0dGFzayBpbiBzZWxmLnNxX2J1aWxkYWJsZSBhbmQgbmV4dHRhc2sgbm90IGluIHNlbGYuc3FfcnVubmluZyBhbmQgc2VsZi5zcWRhdGEuc3RhbXBzW25leHR0YXNrXSBub3QgaW4gc2VsZi5idWlsZF9zdGFtcHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnNxZGF0YS51bnNraXBwYWJsZSBhbmQgbGVuKHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKSA+IDAgYW5kIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkKSBhbmQgc2VsZi5jaGVja19kZXBlbmRlbmNpZXMobmV4dHRhc2ssIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnJxZGF0YS50YXJnZXRfdGlkczoKQEAgLTIwNTIsNyArMjA1OSw3IEBACiAgICAgICAgIHNlbGYudXBkYXRlX2hvbGRvZmZ0YXNrcygpCiAKICAgICAgICAgaWYgbm90IHNlbGYuc3FfbGl2ZSBhbmQgbm90IHNlbGYuc3Fkb25lIGFuZCBub3Qgc2VsZi5zcV9kZWZlcnJlZCBhbmQgbm90IHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBhbmQgbm90IHNlbGYuaG9sZG9mZl90YXNrczoKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQogCiAgICAgICAgICAgICBlcnIgPSBzZWxmLnN1bW1hcmlzZV9zY2VuZXF1ZXVlX2Vycm9ycygpCiAgICAgICAgICAgICBpZiBlcnI6CkBAIC0yMDkwLDYgKzIwOTcsNyBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiU3RhbXAgY3VycmVudCB0YXNrICVzIiwgdGFzaykKIAogICAgICAgICAgICAgICAgIHNlbGYudGFza19za2lwKHRhc2ssICJleGlzdGluZyIpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3Rhc2tzcnVuLmFkZCh0YXNrKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS50YXNrX2RlcHNbdGFza2ZuXQpAQCAtMjI0OCw2ICsyMjU2LDcgQEAKICAgICBkZWYgcHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKHNlbGYpOgogCiAgICAgICAgIGNoYW5nZWQgPSBzZXQoKQorICAgICAgICB0b3Byb2Nlc3MgPSBzZXQoKQogICAgICAgICBmb3IgdGlkLCB1bmloYXNoIGluIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZS5jb3B5KCk6CiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW5xX3J1bm5pbmcgYW5kIHRpZCBub3QgaW4gc2VsZi5ydW5xX2NvbXBsZXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMjU1LDQyICsyMjY0LDYzIEBACiAgICAgICAgICAgICBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUucmVtb3ZlKCh0aWQsIHVuaWhhc2gpKQogCiAgICAgICAgICAgICBpZiB1bmloYXNoICE9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgdG8gJXMiICUgKHRpZCwgdW5paGFzaCkpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJUYXNrICVzIHVuaWhhc2ggY2hhbmdlZCB0byAlcyIgJSAodGlkLCB1bmloYXNoKSkKICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSB1bmloYXNoCiAgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgICAgICAgICB0b3Byb2Nlc3MuYWRkKHRpZCkKIAotICAgICAgICAgICAgICAgICMgV29yayBvdXQgYWxsIHRhc2tzIHdoaWNoIGRlcGVuZCBvbiB0aGlzIG9uZQotICAgICAgICAgICAgICAgIHRvdGFsID0gc2V0KCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcykKLSAgICAgICAgICAgICAgICB3aGlsZSBuZXh0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKLSAgICAgICAgICAgICAgICAgICAgdG90YWwgPSB0b3RhbCB8bmV4dAotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG50aWQgaW4gY3VycmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbbnRpZF0ucmV2ZGVwcwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5kaWZmZXJlbmNlX3VwZGF0ZSh0b3RhbCkKKyAgICAgICAgIyBXb3JrIG91dCBhbGwgdGFza3Mgd2hpY2ggZGVwZW5kIHVwb24gdGhlc2UKKyAgICAgICAgdG90YWwgPSBzZXQoKQorICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgZm9yIHAgaW4gdG9wcm9jZXNzOgorICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5yZXZkZXBzCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIHRvdGFsID0gdG90YWwgfCBuZXh0CisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBudGlkIGluIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1tudGlkXS5yZXZkZXBzCisgICAgICAgICAgICBuZXh0LmRpZmZlcmVuY2VfdXBkYXRlKHRvdGFsKQogCi0gICAgICAgICAgICAgICAgIyBOb3cgaXRlcmF0ZSB0aG9zZSB0YXNrcyBpbiBkZXBlbmRlbmN5IG9yZGVyIHRvIHJlZ2VuZXJhdGUgdGhlaXIgdGFza2hhc2gvdW5paGFzaAotICAgICAgICAgICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICAgICAgICAgIG5leHQgPSBzZXQoc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5yZXZkZXBzKQotICAgICAgICAgICAgICAgIHdoaWxlIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXh0LmNvcHkoKQotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2RlcCA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZGVwLmFwcGVuZChkZXApCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHByb2NkZXAsIHNlbGYucnFkYXRhLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlndW5pID0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJUYXNrICVzIGhhc2ggY2hhbmdlczogJXMtPiVzICVzLT4lcyIgJSAodGlkLCBvcmlnaGFzaCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoLCBvcmlndW5pLCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnJldmRlcHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQuYWRkKHRpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmludGVyc2VjdGlvbl91cGRhdGUodG90YWwpCisgICAgICAgICMgTm93IGl0ZXJhdGUgdGhvc2UgdGFza3MgaW4gZGVwZW5kZW5jeSBvcmRlciB0byByZWdlbmVyYXRlIHRoZWlyIHRhc2toYXNoL3VuaWhhc2gKKyAgICAgICAgbmV4dCA9IHNldCgpCisgICAgICAgIGZvciBwIGluIHRvdGFsOgorICAgICAgICAgICAgaWYgbGVuKHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3BdLmRlcGVuZHMpID09IDA6CisgICAgICAgICAgICAgICAgbmV4dC5hZGQocCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbcF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICBuZXh0LmFkZChwKQorCisgICAgICAgICMgV2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgaW4gdG90YWwsIHdlIGNhbiBwcm9jZXNzIGl0LiBEcm9wIGl0ZW1zIGZyb20gdG90YWwgd2hlbiBoYW5kbGVkCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIG5leHQgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5kZXBlbmRzKSBhbmQgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAorICAgICAgICAgICAgICAgIG5ld2hhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICAgICAgICAgIG9yaWd1bmkgPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gKKyAgICAgICAgICAgICAgICBuZXd1bmkgPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQorICAgICAgICAgICAgICAgICMgRklYTUUsIG5lZWQgdG8gY2hlY2sgaXQgY2FuIGNvbWUgZnJvbSBzc3RhdGUgYXQgYWxsIGZvciBkZXRlcm1pbmlzbT8KKyAgICAgICAgICAgICAgICByZW1hcHBlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgbmV3dW5pID09IG9yaWd1bmk6CisgICAgICAgICAgICAgICAgICAgICMgTm90aGluZyB0byBkbywgd2UgbWF0Y2gsIHNraXAgY29kZSBiZWxvdworICAgICAgICAgICAgICAgICAgICByZW1hcHBlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIHRpZCBpbiBzZWxmLnNjZW5lcXVldWVfY292ZXJlZCBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgorICAgICAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nLiBSZXBvcnQgdGhlIG5ldyB0YXNraGFzaAorICAgICAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucmVwb3J0X3VuaWhhc2hfZXF1aXYodGlkLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmksIHNlbGYucnFkYXRhLmRhdGFDYWNoZXMpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2ggKHJlbWFwKSIgJSAodGlkKSkKKyAgICAgICAgICAgICAgICAgICAgcmVtYXBwZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVtYXBwZWQ6CisgICAgICAgICAgICAgICAgICAgICNsb2dnZXIuZGVidWcoMSwgIlRhc2sgJXMgaGFzaCBjaGFuZ2VzOiAlcy0+JXMgJXMtPiVzIiAlICh0aWQsIG9yaWdoYXNoLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBuZXdoYXNoCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaCA9IG5ld3VuaQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLmFkZCh0aWQpCisKKyAgICAgICAgICAgICAgICBuZXh0IHw9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcworICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCisgICAgICAgICAgICAgICAgbmV4dC5pbnRlcnNlY3Rpb25fdXBkYXRlKHRvdGFsKQogCiAgICAgICAgIGlmIGNoYW5nZWQ6CiAgICAgICAgICAgICBmb3IgbWMgaW4gc2VsZi5ycS53b3JrZXI6CkBAIC0yMjk4LDcgKzIzMjgsNyBAQAogICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYucnEuZmFrZXdvcmtlcjoKICAgICAgICAgICAgICAgICBzZWxmLnJxLmZha2V3b3JrZXJbbWNdLnByb2Nlc3Muc3RkaW4ud3JpdGUoYiI8bmV3dGFza2hhc2hlcz4iICsgcGlja2xlLmR1bXBzKGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2hhc2hlcygpKSArIGIiPC9uZXd0YXNraGFzaGVzPiIpCiAKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBwcHJpbnQucGZvcm1hdCgiVGFza3MgY2hhbmdlZDpcbiVzIiAlIChjaGFuZ2VkKSkpCisgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsIHBwcmludC5wZm9ybWF0KCJUYXNrcyBjaGFuZ2VkOlxuJXMiICUgKGNoYW5nZWQpKSkKIAogICAgICAgICBmb3IgdGlkIGluIGNoYW5nZWQ6CiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkczoKQEAgLTIzMDYsMjQgKzIzMzYsMTggQEAKICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnM6CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMuYWRkKHRpZCkKIAorICAgICAgICB1cGRhdGVfdGFza3MgPSBbXQogICAgICAgICBmb3IgdGlkIGluIHNlbGYucGVuZGluZ19taWdyYXRpb25zLmNvcHkoKToKLSAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZzoKKyAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZyBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgogICAgICAgICAgICAgICAgICMgVG9vIGxhdGUsIHRhc2sgYWxyZWFkeSBydW5uaW5nLCBub3QgbXVjaCB3ZSBjYW4gZG8gbm93CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zY2VuZXF1ZXVlX2NvdmVyZWQgb3IgdGlkIGluIHNlbGYuc3FfbGl2ZToKLSAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nCi0gICAgICAgICAgICAgICAgIyBQb3RlbnRpYWxseSByaXNreSwgc2hvdWxkIHdlIHJlcG9ydCB0aGlzIGhhc2ggYXMgYSBtYXRjaD8KLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2giICUgKHRpZCkpCi0gICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCiAgICAgICAgICAgICB2YWxpZCA9IFRydWUKICAgICAgICAgICAgICMgQ2hlY2sgbm8gdGFza3MgdGhpcyBjb3ZlcnMgYXJlIHJ1bm5pbmcKICAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5zcWRhdGEuc3FfY292ZXJlZF90YXNrc1t0aWRdOgogICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnJ1bnFfcnVubmluZyBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiVGFzayAlcyBpcyBydW5uaW5nIHdoaWNoIGJsb2NrcyBzZXRzY2VuZSBmb3IgJXMgZnJvbSBydW5uaW5nIiAlIChkZXAsIHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMiwgIlRhc2sgJXMgaXMgcnVubmluZyB3aGljaCBibG9ja3Mgc2V0c2NlbmUgZm9yICVzIGZyb20gcnVubmluZyIgJSAoZGVwLCB0aWQpKQogICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiBub3QgdmFsaWQ6CkBAIC0yMzM1LDYgKzIzNTksMTIgQEAKICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZS5yZW1vdmUodGlkKQogICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnNxZGF0YS5zcV9jb3ZlcmVkX3Rhc2tzW3RpZF06CisgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYucnVucV9jb21wbGV0ZSBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfdGFza3NydW46CisgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJUYXNrICVzIG1hcmtlZCBhcyBjb21wbGV0ZWQgYnV0IG5vdyBuZWVkaW5nIHRvIHJlcnVuPyBBYm9ydGluZyBidWlsZC4iICUgZGVwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxlZF90aWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnEuc3RhdGUgPSBydW5RdWV1ZUNsZWFuVXAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYucnVucV9jb21wbGV0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYudGFza3Nfc2NlbmVxdWV1ZV9kb25lIGFuZCBkZXAgbm90IGluIHNlbGYuc3FkYXRhLnVuc2tpcHBhYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXNrc19zY2VuZXF1ZXVlX2RvbmUucmVtb3ZlKGRlcCkKQEAgLTIzNDMsNyArMjM3MywxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLnJlbW92ZSh0aWQpCiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcV9ydW5uaW5nOgogICAgICAgICAgICAgICAgIHNlbGYuc3FfcnVubmluZy5yZW1vdmUodGlkKQotICAgICAgICAgICAgaWYgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgorICAgICAgICAgICAgaGFyZGRlcGZhaWwgPSBGYWxzZQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zcWRhdGEuc3FfaGFyZGRlcHM6CisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnNxX2hhcmRkZXBzW3RdIGFuZCB0IGluIHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkOgorICAgICAgICAgICAgICAgICAgICBoYXJkZGVwZmFpbCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBoYXJkZGVwZmFpbCBhbmQgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgogICAgICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5zcV9idWlsZGFibGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLmFkZCh0aWQpCiAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdKSA9PSAwOgpAQCAtMjM2NywxMyArMjQwMiwxNyBAQAogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuYnVpbGRfc3RhbXBzOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmJ1aWxkX3N0YW1wc1t0aWRdCiAKLSAgICAgICAgICAgIG9yaWd2YWxpZCA9IEZhbHNlCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcWRhdGEudmFsaWQ6Ci0gICAgICAgICAgICAgICAgb3JpZ3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgdXBkYXRlX3Rhc2tzLmFwcGVuZCgodGlkLCBoYXJkZGVwZmFpbCwgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkKSkKKworICAgICAgICBpZiB1cGRhdGVfdGFza3M6CiAgICAgICAgICAgICBzZWxmLnNxZG9uZSA9IEZhbHNlCi0gICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0aWRdLCBzZWxmLnNxZGF0YSwgc2VsZi5ycWRhdGEsIHNlbGYucnEsIHNlbGYuY29va2VyLCBzZWxmLnN0YW1wY2FjaGUsIHNlbGYsIHN1bW1hcnk9RmFsc2UpCisgICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0WzBdIGZvciB0IGluIHVwZGF0ZV90YXNrc10sIHNlbGYuc3FkYXRhLCBzZWxmLnJxZGF0YSwgc2VsZi5ycSwgc2VsZi5jb29rZXIsIHNlbGYuc3RhbXBjYWNoZSwgc2VsZiwgc3VtbWFyeT1GYWxzZSkKKworICAgICAgICBmb3IgKHRpZCwgaGFyZGRlcGZhaWwsIG9yaWd2YWxpZCkgaW4gdXBkYXRlX3Rhc2tzOgogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkIGFuZCBub3Qgb3JpZ3ZhbGlkOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICBpZiBoYXJkZGVwZmFpbDoKKyAgICAgICAgICAgICAgICBzZWxmLnNxX3Rhc2tfZmFpbG91dHJpZ2h0KHRpZCkKIAogICAgICAgICBpZiBjaGFuZ2VkOgogICAgICAgICAgICAgc2VsZi5ob2xkb2ZmX25lZWRfdXBkYXRlID0gVHJ1ZQpAQCAtMjUxMCw2ICsyNTQ5LDggQEAKICAgICAgICAgICAgICAgICBtc2cgPSAnVGFzayAlcy4lcyBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkJyAlIChwbiwgdGFza25hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1zZyA9ICdUYXNrICVzLiVzIGF0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseScgJSAocG4sIHRhc2tuYW1lKQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQ6CisgICAgICAgICAgICAgICAgbXNnID0gbXNnICsgIlxuVGFzayAlcywgdW5paGFzaCAlcywgdGFza2hhc2ggJXMiICUgKHQsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLnVuaWhhc2gsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLmhhc2gpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnICsgJ1xuVGhpcyBpcyB1c3VhbGx5IGR1ZSB0byBtaXNzaW5nIHNldHNjZW5lIHRhc2tzLiBUaG9zZSBtaXNzaW5nIGluIHRoaXMgYnVpbGQgd2VyZTogJXMnICUgcHByaW50LnBmb3JtYXQoc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNzYwLDcgKzI4MDEsNyBAQAogICAgICAgICAgICAgICAgIHNxZGF0YS5oYXNoZXNbaF0gPSB0aWQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FycS5zcV9kZWZlcnJlZFt0aWRdID0gc3FkYXRhLmhhc2hlc1toXQotICAgICAgICAgICAgICAgIGJiLndhcm4oIkRlZmVycmluZyAlcyBhZnRlciAlcyIgJSAodGlkLCBzcWRhdGEuaGFzaGVzW2hdKSkKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJEZWZlcnJpbmcgJXMgYWZ0ZXIgJXMiICUgKHRpZCwgc3FkYXRhLmhhc2hlc1toXSkpCiAKIAogY2xhc3MgVGFza0ZhaWx1cmUoRXhjZXB0aW9uKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weQppbmRleCBjMDU0YzNjLi40NDJlYTdiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5CkBAIC03LDkgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCB4bWxycGMuY2xpZW50CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkKaW5kZXggNTRmYTMyZi4uMmZhNzFiZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQpAQCAtNyw5ICs3LDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW5zcGVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQppbmRleCBhNGJiMWZmLi40YzhkODFjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IGhhc2hzZXJ2CiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlNpZ0dlbicpCitoYXNoZXF1aXZfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuU2lnR2VuLkhhc2hFcXVpdicpCiAKIGRlZiBpbml0KGQpOgogICAgIHNpZ2dlbnMgPSBbb2JqIGZvciBvYmogaW4gZ2xvYmFscygpLnZhbHVlcygpCkBAIC00MCwxOCArNDEsMjYgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYmFzZWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2toYXNoID0ge30KKyAgICAgICAgc2VsZi51bmloYXNoID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHt9Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHt9CisgICAgICAgIHNlbGYudGlkdG9wbiA9IHt9CisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldCgpCiAKICAgICBkZWYgZmluYWxpc2Uoc2VsZiwgZm4sIGQsIHZhcmllbnQpOgogICAgICAgICByZXR1cm4KIAorICAgIGRlZiBwb3N0cGFyc2luZ19jbGVhbl9jYWNoZShzZWxmKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2hbdGlkXQogCisgICAgZGVmIHByZXBfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgICAgICByZXR1cm4KKwogICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgogICAgICAgICBzZWxmLnRhc2toYXNoW3RpZF0gPSBoYXNobGliLnNoYTI1Nih0aWQuZW5jb2RlKCJ1dGYtOCIpKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gc2VsZi50YXNraGFzaFt0aWRdCkBAIC03NiwxOSArODUsMTkgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0X3Rhc2tkYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYucnVudGFza2RlcHMsIHNlbGYudGFza2hhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYuc2V0c2NlbmV0YXNrcykKKyAgICAgICAgcmV0dXJuIChzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzKQogCiAgICAgZGVmIHNldF90YXNrZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5ydW50YXNrZGVwcywgc2VsZi50YXNraGFzaCwgc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlcywgc2VsZi50YWludHMsIHNlbGYuYmFzZWhhc2gsIHNlbGYudW5pdGFza2hhc2hlcywgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQorICAgICAgICBzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQogCiAgICAgZGVmIHJlc2V0KHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLl9faW5pdF9fKGRhdGEpCiAKICAgICBkZWYgZ2V0X3Rhc2toYXNoZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMKKyAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2gsIHNlbGYudW5paGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4KIAogICAgIGRlZiBzZXRfdGFza2hhc2hlcyhzZWxmLCBoYXNoZXMpOgotICAgICAgICBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMgPSBoYXNoZXMKKyAgICAgICAgc2VsZi50YXNraGFzaCwgc2VsZi51bmloYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiA9IGhhc2hlcwogCiAgICAgZGVmIHNhdmVfdW5pdGFza2hhc2hlcyhzZWxmKToKICAgICAgICAgcmV0dXJuCkBAIC0xMDQsMTMgKzExMywxNCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5iYXNlaGFzaCA9IHt9CiAgICAgICAgIHNlbGYudGFza2hhc2ggPSB7fQorICAgICAgICBzZWxmLnVuaWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2tkZXBzID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYuZ2VuZGVwcyA9IHt9CiAgICAgICAgIHNlbGYubG9va3VwY2FjaGUgPSB7fQotICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSB7fQorICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXQoKQogICAgICAgICBzZWxmLmJhc2V3aGl0ZWxpc3QgPSBzZXQoKGRhdGEuZ2V0VmFyKCJCQl9IQVNIQkFTRV9XSElURUxJU1QiKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgc2VsZi50YXNrd2hpdGVsaXN0ID0gTm9uZQogICAgICAgICBzZWxmLmluaXRfcnVuZGVwY2hlY2soZGF0YSkKQEAgLTEyMSw4ICsxMzEsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tzdW1fY2FjaGUgPSBOb25lCiAKLSAgICAgICAgc2VsZi51bmloYXNoX2NhY2hlID0gYmIuY2FjaGUuU2ltcGxlQ2FjaGUoIjEiKQorICAgICAgICBzZWxmLnVuaWhhc2hfY2FjaGUgPSBiYi5jYWNoZS5TaW1wbGVDYWNoZSgiMyIpCiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHNlbGYudW5paGFzaF9jYWNoZS5pbml0X2NhY2hlKGRhdGEsICJiYl91bmloYXNoZXMuZGF0Iiwge30pCisgICAgICAgIHNlbGYubG9jYWxkaXJzZXhjbHVkZSA9IChkYXRhLmdldFZhcigiQkJfU0lHTkFUVVJFX0xPQ0FMX0RJUlNfRVhDTFVERSIpIG9yICJDVlMgLmJ6ciAuZ2l0IC5oZyAub3NjIC5wNCAucmVwbyAuc3ZuIikuc3BsaXQoKQorICAgICAgICBzZWxmLnRpZHRvcG4gPSB7fQogCiAgICAgZGVmIGluaXRfcnVuZGVwY2hlY2soc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYudGFza3doaXRlbGlzdCA9IGRhdGEuZ2V0VmFyKCJCQl9IQVNIVEFTS19XSElURUxJU1QiKSBvciBOb25lCkBAIC0xMzQsNyArMTQ2LDcgQEAKICAgICBkZWYgX2J1aWxkX2RhdGEoc2VsZiwgZm4sIGQpOgogCiAgICAgICAgIGlnbm9yZV9taXNtYXRjaCA9ICgoZC5nZXRWYXIoIkJCX0hBU0hfSUdOT1JFX01JU01BVENIIikgb3IgJycpID09ICcxJykKLSAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCkKKyAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgc2VsZi5iYXNld2hpdGVsaXN0KQogCiAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2VsZi5iYXNld2hpdGVsaXN0LCBmbikKIApAQCAtMTU3LDcgKzE2OSw3IEBACiAgICAgICAgIHJldHVybiB0YXNrZGVwcwogCiAgICAgZGVmIHNldF9zZXRzY2VuZV90YXNrcyhzZWxmLCBzZXRzY2VuZV90YXNrcyk6Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldHNjZW5lX3Rhc2tzCisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldChzZXRzY2VuZV90YXNrcykKIAogICAgIGRlZiBmaW5hbGlzZShzZWxmLCBmbiwgZCwgdmFyaWFudCk6CiAKQEAgLTE4MCw2ICsxOTIsMTQgQEAKICAgICAgICAgZm9yIHRhc2sgaW4gdGFza2RlcHM6CiAgICAgICAgICAgICBkLnNldFZhcigiQkJfQkFTRUhBU0hfdGFzay0lcyIgJSB0YXNrLCBzZWxmLmJhc2VoYXNoW2ZuICsgIjoiICsgdGFza10pCiAKKyAgICBkZWYgcG9zdHBhcnNpbmdfY2xlYW5fY2FjaGUoc2VsZik6CisgICAgICAgICMKKyAgICAgICAgIyBBZnRlciBwYXJzaW5nIHdlIGNhbiByZW1vdmUgc29tZSB0aGluZ3MgZnJvbSBtZW1vcnkgdG8gcmVkdWNlIG91ciBtZW1vcnkgZm9vdHByaW50CisgICAgICAgICMKKyAgICAgICAgc2VsZi5nZW5kZXBzID0ge30KKyAgICAgICAgc2VsZi5sb29rdXBjYWNoZSA9IHt9CisgICAgICAgIHNlbGYudGFza2RlcHMgPSB7fQorCiAgICAgZGVmIHJ1bmRlcF9jaGVjayhzZWxmLCBmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICAgICAjIFJldHVybiBUcnVlIGlmIHdlIHNob3VsZCBrZWVwIHRoZSBkZXBlbmRlbmN5LCBGYWxzZSB0byBkcm9wIGl0CiAgICAgICAgICMgV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHBhY2thZ2VzIG5vdCBpbiB0aGUgd2hpdGVsaXN0CkBAIC0xOTgsMTUgKzIxOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gdGFpbnQKIAotICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKIAogICAgICAgICAobWMsIF8sIHRhc2ssIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKIAotICAgICAgICBkYXRhID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCi0gICAgICAgIHNlbGYuYmFzZWhhc2hbdGlkXSA9IGRhdGEKKyAgICAgICAgc2VsZi5iYXNlaGFzaFt0aWRdID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCiAgICAgICAgIHNlbGYucnVudGFza2RlcHNbdGlkXSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXNbdGlkXSA9IFtdCiAgICAgICAgIHJlY2lwZW5hbWUgPSBkYXRhQ2FjaGUucGtnX2ZuW2ZuXQorCisgICAgICAgIHNlbGYudGlkdG9wblt0aWRdID0gcmVjaXBlbmFtZQorCiAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcHMsIGtleT1jbGVhbl9iYXNlcGF0aCk6CiAgICAgICAgICAgICAoZGVwbWMsIF8sIGRlcHRhc2tuYW1lLCBkZXBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbihkZXApCiAgICAgICAgICAgICBpZiBtYyAhPSBkZXBtYzoKQEAgLTIxNiwzMyArMjM4LDU2IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXMgaXMgbm90IGluIHRhc2toYXNoLCBjYWxsZXIgaXNuJ3QgY2FsbGluZyBpbiBkZXBlbmRlbmN5IG9yZGVyPyIgJSBkZXApCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYuZ2V0X3VuaWhhc2goZGVwKQogICAgICAgICAgICAgc2VsZi5ydW50YXNrZGVwc1t0aWRdLmFwcGVuZChkZXApCiAKICAgICAgICAgaWYgdGFzayBpbiBkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dOgogICAgICAgICAgICAgaWYgc2VsZi5jaGVja3N1bV9jYWNoZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSkKKyAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSwgc2VsZi5sb2NhbGRpcnNleGNsdWRlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBiYi5mZXRjaDIuZ2V0X2ZpbGVfY2hlY2tzdW1zKGRhdGFDYWNoZS5maWxlX2NoZWNrc3Vtc1tmbl1bdGFza10sIHJlY2lwZW5hbWUpCisgICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gYmIuZmV0Y2gyLmdldF9maWxlX2NoZWNrc3VtcyhkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dW3Rhc2tdLCByZWNpcGVuYW1lLCBzZWxmLmxvY2FsZGlyc2V4Y2x1ZGUpCiAgICAgICAgICAgICBmb3IgKGYsY3MpIGluIGNoZWNrc3VtczoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzW3RpZF0uYXBwZW5kKChmLGNzKSkKLSAgICAgICAgICAgICAgICBpZiBjczoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcwogCiAgICAgICAgIHRhc2tkZXAgPSBkYXRhQ2FjaGUudGFza19kZXBzW2ZuXQogICAgICAgICBpZiAnbm9zdGFtcCcgaW4gdGFza2RlcCBhbmQgdGFzayBpbiB0YXNrZGVwWydub3N0YW1wJ106CiAgICAgICAgICAgICAjIE5vc3RhbXAgdGFza3MgbmVlZCBhbiBpbXBsaWNpdCB0YWludCBzbyB0aGF0IHRoZXkgZm9yY2UgYW55IGRlcGVuZGVudCB0YXNrcyB0byBydW4KLSAgICAgICAgICAgIGltcG9ydCB1dWlkCi0gICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHRhaW50Ci0gICAgICAgICAgICBzZWxmLnRhaW50c1t0aWRdID0gIm5vc3RhbXA6IiArIHRhaW50CisgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi50YWludHMgYW5kIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlc2V0IHRhaW50IHZhbHVlIHVwb24gZXZlcnkgY2FsbAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW1wb3J0IHV1aWQKKyAgICAgICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCisgICAgICAgICAgICAgICAgc2VsZi50YWludHNbdGlkXSA9ICJub3N0YW1wOiIgKyB0YWludAogCiAgICAgICAgIHRhaW50ID0gc2VsZi5yZWFkX3RhaW50KGZuLCB0YXNrLCBkYXRhQ2FjaGUuc3RhbXBbZm5dKQogICAgICAgICBpZiB0YWludDoKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgdGFpbnQKICAgICAgICAgICAgIHNlbGYudGFpbnRzW3RpZF0gPSB0YWludAogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVzIGlzIHRhaW50ZWQgZnJvbSBhIGZvcmNlZCBydW4iICUgdGlkKQogCisgICAgICAgIHJldHVybgorCisgICAgZGVmIGdldF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6CisKKyAgICAgICAgZGF0YSA9IHNlbGYuYmFzZWhhc2hbdGlkXQorICAgICAgICBmb3IgZGVwIGluIHNlbGYucnVudGFza2RlcHNbdGlkXToKKyAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnVuaWhhc2g6CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bmloYXNoW2RlcF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnRhc2toYXNoW2RlcF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudW5paGFzaFtkZXBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi5nZXRfdW5paGFzaChkZXApCisKKyAgICAgICAgZm9yIChmLCBjcykgaW4gc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlc1t0aWRdOgorICAgICAgICAgICAgaWYgY3M6CisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcworCisgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhaW50czoKKyAgICAgICAgICAgIGlmIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudGFpbnRzW3RpZF1bODpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi50YWludHNbdGlkXQorCiAgICAgICAgIGggPSBoYXNobGliLnNoYTI1NihkYXRhLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAgc2VsZi50YXNraGFzaFt0aWRdID0gaAogICAgICAgICAjZC5zZXRWYXIoIkJCX1RBU0tIQVNIX3Rhc2stJXMiICUgdGFzaywgdGFza2hhc2hbdGFza10pCkBAIC0zNzEsNTAgKzQxNiw2NiBAQAogICAgICAgICBiYi5idWlsZC53cml0ZV90YWludCh0YXNrLCBkLCBmbikKIAogY2xhc3MgU2lnbmF0dXJlR2VuZXJhdG9yVW5pSGFzaE1peEluKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmV4dHJhbWV0aG9kID0ge30KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhKQorCiAgICAgZGVmIGdldF90YXNrZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QpICsgc3VwZXIoKS5nZXRfdGFza2RhdGEoKQorICAgICAgICByZXR1cm4gKHNlbGYuc2VydmVyLCBzZWxmLm1ldGhvZCwgc2VsZi5leHRyYW1ldGhvZCkgKyBzdXBlcigpLmdldF90YXNrZGF0YSgpCiAKICAgICBkZWYgc2V0X3Rhc2tkYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QgPSBkYXRhWzoyXQotICAgICAgICBzdXBlcigpLnNldF90YXNrZGF0YShkYXRhWzI6XSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYubWV0aG9kLCBzZWxmLmV4dHJhbWV0aG9kID0gZGF0YVs6M10KKyAgICAgICAgc3VwZXIoKS5zZXRfdGFza2RhdGEoZGF0YVszOl0pCiAKICAgICBkZWYgY2xpZW50KHNlbGYpOgogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2xpZW50JywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2NsaWVudCA9IGhhc2hzZXJ2LmNyZWF0ZV9jbGllbnQoc2VsZi5zZXJ2ZXIpCiAgICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQKIAotICAgIGRlZiBfX2dldF90YXNrX3VuaWhhc2hfa2V5KHNlbGYsIHRpZCk6Ci0gICAgICAgICMgVE9ETzogVGhlIGtleSBvbmx5ICpuZWVkcyogdG8gYmUgdGhlIHRhc2toYXNoLCB0aGUgdGlkIGlzIGp1c3QKLSAgICAgICAgIyBjb252ZW5pZW50Ci0gICAgICAgIHJldHVybiAnJXM6JXMnICUgKHRpZC5yc3BsaXQoIi8iLCAxKVsxXSwgc2VsZi50YXNraGFzaFt0aWRdKQotCiAgICAgZGVmIGdldF9zdGFtcGZpbGVfaGFzaChzZWxmLCB0aWQpOgogICAgICAgICBpZiB0aWQgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICMgSWYgYSB1bmlxdWUgaGFzaCBpcyByZXBvcnRlZCwgdXNlIGl0IGFzIHRoZSBzdGFtcGZpbGUgaGFzaC4gVGhpcwogICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgaWYgYSB0YXNrIHdvbid0IGJlIHJlLXJ1biBpZiB0aGUgdGFza2hhc2ggY2hhbmdlcywKICAgICAgICAgICAgICMgYnV0IGl0IHdvdWxkIHJlc3VsdCBpbiB0aGUgc2FtZSBvdXRwdXQgaGFzaAotICAgICAgICAgICAgdW5paGFzaCA9IHNlbGYudW5pdGFza2hhc2hlcy5nZXQoc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCksIE5vbmUpCisgICAgICAgICAgICB1bmloYXNoID0gc2VsZi5fZ2V0X3VuaWhhc2godGlkKQogICAgICAgICAgICAgaWYgdW5paGFzaCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zdGFtcGZpbGVfaGFzaCh0aWQpCiAKICAgICBkZWYgc2V0X3VuaWhhc2goc2VsZiwgdGlkLCB1bmloYXNoKToKLSAgICAgICAgc2VsZi51bml0YXNraGFzaGVzW3NlbGYuX19nZXRfdGFza191bmloYXNoX2tleSh0aWQpXSA9IHVuaWhhc2gKKyAgICAgICAgKG1jLCBmbiwgdGFza25hbWUsIHRhc2tmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCisgICAgICAgIGtleSA9IG1jICsgIjoiICsgc2VsZi50aWR0b3BuW3RpZF0gKyAiOiIgKyB0YXNrbmFtZQorICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXNba2V5XSA9IChzZWxmLnRhc2toYXNoW3RpZF0sIHVuaWhhc2gpCisgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gdW5paGFzaAorCisgICAgZGVmIF9nZXRfdW5paGFzaChzZWxmLCB0aWQsIGNoZWNra2V5PU5vbmUpOgorICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYudGlkdG9wbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQorICAgICAgICBrZXkgPSBtYyArICI6IiArIHNlbGYudGlkdG9wblt0aWRdICsgIjoiICsgdGFza25hbWUKKyAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLnVuaXRhc2toYXNoZXM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBub3QgY2hlY2trZXk6CisgICAgICAgICAgICBjaGVja2tleSA9IHNlbGYudGFza2hhc2hbdGlkXQorICAgICAgICAoa2V5LCB1bmloYXNoKSA9IHNlbGYudW5pdGFza2hhc2hlc1trZXldCisgICAgICAgIGlmIGtleSAhPSBjaGVja2tleToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgdGFza2hhc2ggPSBzZWxmLnRhc2toYXNoW3RpZF0KIAogICAgICAgICAjIElmIGl0cyBub3QgYSBzZXRzY2VuZSB0YXNrIHdlIGNhbiByZXR1cm4KICAgICAgICAgaWYgc2VsZi5zZXRzY2VuZXRhc2tzIGFuZCB0aWQgbm90IGluIHNlbGYuc2V0c2NlbmV0YXNrczoKKyAgICAgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHRhc2toYXNoCiAKLSAgICAgICAga2V5ID0gc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCkKLQogICAgICAgICAjIFRPRE86IFRoaXMgY2FjaGUgY2FuIGdyb3cgdW5ib3VuZGVkLiBJdCBwcm9iYWJseSBvbmx5IG5lZWRzIHRvIGtlZXAKICAgICAgICAgIyBmb3IgZWFjaCB0YXNrCi0gICAgICAgIHVuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgdW5paGFzaCA9ICBzZWxmLl9nZXRfdW5paGFzaCh0aWQpCiAgICAgICAgIGlmIHVuaWhhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnVuaWhhc2hbdGlkXSA9IHVuaWhhc2gKICAgICAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICAgICAgIyBJbiB0aGUgYWJzZW5jZSBvZiBiZWluZyBhYmxlIHRvIGRpc2NvdmVyIGEgdW5pcXVlIGhhc2ggZnJvbSB0aGUKQEAgLTQzMywxOSArNDk0LDIzIEBACiAgICAgICAgIHVuaWhhc2ggPSB0YXNraGFzaAogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLmdldF91bmloYXNoKHNlbGYubWV0aG9kLCBzZWxmLnRhc2toYXNoW3RpZF0pCisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisgICAgICAgICAgICBkYXRhID0gc2VsZi5jbGllbnQoKS5nZXRfdW5paGFzaChtZXRob2QsIHNlbGYudGFza2hhc2hbdGlkXSkKICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgdW5paGFzaCA9IGRhdGEKICAgICAgICAgICAgICAgICAjIEEgdW5pcXVlIGhhc2ggZXF1YWwgdG8gdGhlIHRhc2toYXNoIGlzIG5vdCB2ZXJ5IGludGVyZXN0aW5nLAogICAgICAgICAgICAgICAgICMgc28gaXQgaXMgcmVwb3J0ZWQgaXQgYXQgZGVidWcgbGV2ZWwgMi4gSWYgdGhleSBkaWZmZXIsIHRoYXQKICAgICAgICAgICAgICAgICAjIGlzIG11Y2ggbW9yZSBpbnRlcmVzdGluZywgc28gaXQgaXMgcmVwb3J0ZWQgYXQgZGVidWcgbGV2ZWwgMQotICAgICAgICAgICAgICAgIGJiLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgJ05vIHJlcG9ydGVkIHVuaWhhc2ggZm9yICVzOiVzIGZyb20gJXMnICUgKHRpZCwgdGFza2hhc2gsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDIsICdObyByZXBvcnRlZCB1bmloYXNoIGZvciAlczolcyBmcm9tICVzJyAlICh0aWQsIHRhc2toYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgIGV4Y2VwdCBoYXNoc2Vydi5jbGllbnQuSGFzaENvbm5lY3Rpb25FcnJvciBhcyBlOgogICAgICAgICAgICAgYmIud2FybignRXJyb3IgY29udGFjdGluZyBIYXNoIEVxdWl2YWxlbmNlIFNlcnZlciAlczogJXMnICUgKHNlbGYuc2VydmVyLCBzdHIoZSkpKQogCi0gICAgICAgIHNlbGYudW5pdGFza2hhc2hlc1trZXldID0gdW5paGFzaAorICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgc2VsZi51bmloYXNoW3RpZF0gPSB1bmloYXNoCiAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgcmVwb3J0X3VuaWhhc2goc2VsZiwgcGF0aCwgdGFzaywgZCk6CkBAIC00NTcsMTMgKzUyMiwxNyBAQAogICAgICAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ1QnKQogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdCQl9GSUxFTkFNRScpCiAgICAgICAgIHRpZCA9IGZuICsgJzpkb18nICsgdGFzawotICAgICAgICBrZXkgPSB0aWQucnNwbGl0KCIvIiwgMSlbMV0gKyAnOicgKyB0YXNraGFzaAorICAgICAgICBrZXkgPSB0aWQgKyAnOicgKyB0YXNraGFzaAogCiAgICAgICAgIGlmIHNlbGYuc2V0c2NlbmV0YXNrcyBhbmQgdGlkIG5vdCBpbiBzZWxmLnNldHNjZW5ldGFza3M6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBpZiBsb2NrZWQgc2lncyBhcmUgaW4gYWN0aW9uLiBEZXRlY3QgYW5kIGp1c3QgYWJvcnQKKyAgICAgICAgaWYgdGFza2hhc2ggIT0gc2VsZi50YXNraGFzaFt0aWRdOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgIyBTYW5pdHkgY2hlY2tzCi0gICAgICAgIGNhY2hlX3VuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgY2FjaGVfdW5paGFzaCA9IHNlbGYuX2dldF91bmloYXNoKHRpZCwgY2hlY2trZXk9dGFza2hhc2gpCiAgICAgICAgIGlmIGNhY2hlX3VuaWhhc2ggaXMgTm9uZToKICAgICAgICAgICAgIGJiLmZhdGFsKCclcyBub3QgaW4gdW5paGFzaCBjYWNoZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGVycm9yJyAlIGtleSkKIApAQCAtNTAyLDE0ICs1NzEsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YVsndGFzayddID0gdGFzawogICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhWydvdXRoYXNoX3NpZ2luZm8nXSA9IHNpZ2ZpbGUucmVhZCgpLmRlY29kZSgndXRmLTgnKQogCi0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIHNlbGYubWV0aG9kLCBvdXRoYXNoLCB1bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYubWV0aG9kCisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZCArIHNlbGYuZXh0cmFtZXRob2RbdGlkXQorCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIG1ldGhvZCwgb3V0aGFzaCwgdW5paGFzaCwgZXh0cmFfZGF0YSkKICAgICAgICAgICAgICAgICBuZXdfdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQogCiAgICAgICAgICAgICAgICAgaWYgbmV3X3VuaWhhc2ggIT0gdW5paGFzaDoKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIucnVucXVldWUudGFza1VuaUhhc2hVcGRhdGUoZm4gKyAnOmRvXycgKyB0YXNrLCBuZXdfdW5paGFzaCksIGQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X3VuaWhhc2godGlkLCBuZXdfdW5paGFzaCkKKyAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0JCX1VOSUhBU0gnLCBuZXdfdW5paGFzaCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnUmVwb3J0ZWQgdGFzayAlcyBhcyB1bmloYXNoICVzIHRvICVzJyAlICh0YXNraGFzaCwgdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsICdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMnICUgKHRhc2toYXNoLCB1bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi53YXJuKCdFcnJvciBjb250YWN0aW5nIEhhc2ggRXF1aXZhbGVuY2UgU2VydmVyICVzOiAlcycgJSAoc2VsZi5zZXJ2ZXIsIHN0cihlKSkpCiAgICAgICAgIGZpbmFsbHk6CkBAIC01MjQsNiArNTk5LDM2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiByZXBvcnRfdW5paGFzaF9lcXVpdihzZWxmLCB0aWQsIHRhc2toYXNoLCB3YW50ZWRfdW5paGFzaCwgY3VycmVudF91bmloYXNoLCBkYXRhY2FjaGVzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHt9CisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLnJlcG9ydF91bmloYXNoX2VxdWl2KHRhc2toYXNoLCBtZXRob2QsIHdhbnRlZF91bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMgKCVzKScgJSAodGlkLCB3YW50ZWRfdW5paGFzaCwgc2VsZi5zZXJ2ZXIsIHN0cihkYXRhKSkpCisKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJTZXJ2ZXIgdW5hYmxlIHRvIGhhbmRsZSB1bmloYXNoIHJlcG9ydCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZpbmFsdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQorCisgICAgICAgICAgICBpZiBmaW5hbHVuaWhhc2ggPT0gY3VycmVudF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoICVzIHVuY2hhbmdlZCBieSBzZXJ2ZXInICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgIGVsaWYgZmluYWx1bmloYXNoID09IHdhbnRlZF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgJXMgLT4gJXMgYXMgd2FudGVkJyAlICh0aWQsIGN1cnJlbnRfdW5paGFzaCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgZmluYWx1bmloYXNoKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgVE9ETzogV2hhdCB0byBkbyBoZXJlPworICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIHJlcG9ydGVkIGFzIHVud2FudGVkIGhhc2ggJXMnICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKworICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLndhcm4oJ0Vycm9yIGNvbnRhY3RpbmcgSGFzaCBFcXVpdmFsZW5jZSBTZXJ2ZXIgJXM6ICVzJyAlIChzZWxmLnNlcnZlciwgc3RyKGUpKSkKKworICAgICAgICByZXR1cm4gRmFsc2UKIAogIwogIyBEdW1teSBjbGFzcyB1c2VkIGZvciBiaXRiYWtlLXNlbGZ0ZXN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQppbmRleCA4YzI1ZTA5Li5kMTNhMTI0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Ob1Byb3ZpZGVyKGl0ZW0sIGRlcGVuZGVlcz1zZWxmLmdldF9kZXBlbmRlZXMoaXRlbSksIHJlYXNvbnM9WyJObyBlbGlnaWJsZSBQUk9WSURFUnMgZXhpc3QgZm9yICclcyciICUgaXRlbV0pLCBjZmdEYXRhKQogICAgICAgICAgICAgcmFpc2UgYmIucHJvdmlkZXJzLk5vUHJvdmlkZXIoaXRlbSkKIAotICAgICAgICBpZiBsZW4oZWxpZ2libGUpID4gMSBhbmQgZm91bmRVbmlxdWUgPT0gRmFsc2U6CisgICAgICAgIGlmIGxlbihlbGlnaWJsZSkgPiAxIGFuZCBub3QgZm91bmRVbmlxdWU6CiAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZWxmLmNvbnNpZGVyX21zZ3NfY2FjaGU6CiAgICAgICAgICAgICAgICAgcHJvdmlkZXJzX2xpc3QgPSBbXQogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBlbGlnaWJsZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKaW5kZXggMDkwOTE2ZS4uNzRjOTAzZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKQEAgLTUsNyArNSw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBiYiwgYmIuY29va2VyCiBpbXBvcnQgcmUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKaW5kZXggYjRhZjRiYi4uYmY2ZTc5ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKQEAgLTcsNyArNyw3IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCisKIAogY2xhc3MgQ09XVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5CmluZGV4IDNlNDk5ODQuLjVmMTk1MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2RhdGEucHkKQEAgLTQ3Niw3ICs0NzYsNyBAQAogY2xhc3MgVGFza0hhc2godW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Rhc2toYXNoZXMoc2VsZik6CiAgICAgICAgIGRlZiBnZXR0YXNrX2Jhc2hoYXNoKHRhc2tuYW1lLCBkKToKLSAgICAgICAgICAgIHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQpCisgICAgICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkLCBzZXQoKSkKICAgICAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2V0KCksICJzb21lZmlsZSIpCiAgICAgICAgICAgICBiYi53YXJuKHN0cihsb29rdXBjYWNoZSkpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWhhc2hbInNvbWVmaWxlOiIgKyB0YXNrbmFtZV0KQEAgLTU0NCwxNDIgKzU0NCwzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZC5nZXRWYXJGbGFnKCdIRUxMTycsICdvdGhlcicpLCAncGxhbmV0JykKIAogCi0jIFJlbW90ZSBkYXRhc3RvcmUgdGVzdHMKLSMgVGhlc2UgcmVhbGx5IG9ubHkgdGVzdCB0aGUgaW50ZXJmYWNlLCBzaW5jZSBpbiBhY3R1YWwgdXNhZ2Ugd2UgaGF2ZSBhCi0jIHRpbmZvaWwgY29ubmVjdG9yIHRoYXQgZG9lcyBldmVyeXRoaW5nIG92ZXIgUlBDLCBhbmQgdGhpcyBkb2Vzbid0IHRlc3QKLSMgdGhhdC4KLQotY2xhc3MgVGVzdENvbm5lY3RvcjoKLSAgICBkID0gTm9uZQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc2VsZi5kID0gZAotICAgIGRlZiBnZXRWYXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmQuX2ZpbmRWYXIobmFtZSkKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLmQua2V5cygpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5kLnZhcmhpc3RvcnkudmFyaWFibGUobmFtZSkKLSAgICBkZWYgZXhwYW5kUHl0aG9uUmVmKHNlbGYsIHZhcm5hbWUsIGV4cHIsIGQpOgotICAgICAgICBsb2NhbGRhdGEgPSBzZWxmLmQuY3JlYXRlQ29weSgpCi0gICAgICAgIGZvciBrZXkgaW4gZC5sb2NhbGtleXMoKToKLSAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoZC5nZXRWYXIoa2V5KSkKLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgbG9jYWxkYXRhKQotICAgICAgICByZXR1cm4gdmFycGFyc2UucHl0aG9uX3N1YihleHByKQotICAgIGRlZiBzZXRWYXIoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmQuc2V0VmFyKG5hbWUsIHZhbHVlKQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIG5hbWUsIGZsYWcsIHZhbHVlKToKLSAgICAgICAgc2VsZi5kLnNldFZhckZsYWcobmFtZSwgZmxhZywgdmFsdWUpCi0gICAgZGVmIGRlbFZhcihzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5kLmRlbFZhcihuYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCBuYW1lLCBmbGFnKToKLSAgICAgICAgc2VsZi5kLmRlbFZhckZsYWcobmFtZSwgZmxhZykKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZGVmIHJlbmFtZVZhcihzZWxmLCBuYW1lLCBuZXduYW1lKToKLSAgICAgICAgc2VsZi5kLnJlbmFtZVZhcihuYW1lLCBuZXduYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotY2xhc3MgUmVtb3RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZW1vdGUoc2VsZik6Ci0KLSAgICAgICAgZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBkMS5lbmFibGVUcmFja2luZygpCi0gICAgICAgIGQyID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgZDIuZW5hYmxlVHJhY2tpbmcoKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKGQxKQotCi0gICAgICAgIGQyLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi0gICAgICAgIGQxLnNldFZhcignSEVMTE8nLCAnd29ybGQnKQotICAgICAgICBkMS5zZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScsICdmbGFndmFsdWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignSEVMTE8nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5leHBhbmQoJyR7SEVMTE99JyksICd3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDIuZXhwYW5kKCcke0BkLmdldFZhcigiSEVMTE8iKX0nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignZmxhZ25hbWUnLCBkMi5nZXRWYXJGbGFncygnT1RIRVInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5nZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpLCBkMi52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpKQotICAgICAgICAjIFRlc3Qgc2V0VmFyIG9uIGNsaWVudCBzaWRlIGFmZmVjdHMgc2VydmVyCi0gICAgICAgIGQyLnNldFZhcignSEVMTE8nLCAnb3RoZXItd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLmdldFZhcignSEVMTE8nKSwgJ290aGVyLXdvcmxkJykKLSAgICAgICAgIyBUZXN0IHNldFZhckZsYWcgb24gY2xpZW50IHNpZGUgYWZmZWN0cyBzZXJ2ZXIKLSAgICAgICAgZDIuc2V0VmFyRmxhZygnSEVMTE8nLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS5nZXRWYXJGbGFnKCdIRUxMTycsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgIyBUZXN0IGNsaWVudCBzaWRlIGRhdGEgaXMgaW5jb3Jwb3JhdGVkIGluIHB5dGhvbiBleHBhbnNpb24gKHdoaWNoIGlzIGRvbmUgb24gc2VydmVyKQotICAgICAgICBkMi5zZXRWYXIoJ0ZPTycsICdiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmV4cGFuZCgnJHtAZC5nZXRWYXIoIkZPTyIpfScpLCAnYmFyJykKLSAgICAgICAgIyBUZXN0IG92ZXJyaWRlcyB3b3JrCi0gICAgICAgIGQxLnNldFZhcignRk9PX3Rlc3QnLCAnYmF6JykKLSAgICAgICAgZDEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOnRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignRk9PJyksICdiYXonKQotCi0KLSMgUmVtb3RlIGVxdWl2YWxlbnRzIG9mIGxvY2FsIHRlc3QgY2xhc3NlcwotIyBOb3RlIHRoYXQgdGhlc2UgYXJlbid0IHBlcmZlY3Qgc2luY2Ugd2Ugb25seSB0ZXN0IGluIG9uZSBkaXJlY3Rpb24KLQotY2xhc3MgUmVtb3RlRGF0YUV4cGFuc2lvbnMoRGF0YUV4cGFuc2lvbnMpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDFbImZvbyJdID0gInZhbHVlX29mX2ZvbyIKLSAgICAgICAgc2VsZi5kMVsiYmFyIl0gPSAidmFsdWVfb2ZfYmFyIgotICAgICAgICBzZWxmLmQxWyJ2YWx1ZV9vZl9mb28iXSA9ICJ2YWx1ZV9vZl8ndmFsdWVfb2ZfZm9vJyIKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVOZXN0ZWRFeHBhbnNpb25zKFRlc3ROZXN0ZWRFeHBhbnNpb25zKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxWyJmb28iXSA9ICJmb28iCi0gICAgICAgIHNlbGYuZDFbImJhciJdID0gImJhciIKLSAgICAgICAgc2VsZi5kMVsidmFsdWVfb2ZfZm9vYmFyIl0gPSAiMTg3IgotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdChUZXN0Q29uY2F0KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiRk9PIiwgImZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJWQUwiLCAidmFsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkJBUiIsICJiYXIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdE92ZXJyaWRlKFRlc3RDb25jYXRPdmVycmlkZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiVkFMIiwgInZhbCIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJCQVIiLCAiYmFyIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVPdmVycmlkZXMoVGVzdE92ZXJyaWRlcyk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIk9WRVJSSURFUyIsICJmb286YmFyOmxvY2FsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIlRFU1QiLCAidGVzdHZhbHVlIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVLZXlFeHBhbnNpb24oVGVzdEtleUV4cGFuc2lvbik6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiQkFSIiwgImZvbyIpCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlRmxhZ3MoVGVzdEZsYWdzKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiZm9vIiwgInZhbHVlIG9mIGZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyRmxhZygiZm9vIiwgImZsYWcxIiwgInZhbHVlIG9mIGZsYWcxIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXJGbGFnKCJmb28iLCAiZmxhZzIiLCAidmFsdWUgb2YgZmxhZzIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkzNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9hcHBsZS9jdXBzL3JlbGVhc2VzCkBAIC0wLDAgKzEsMjQwMCBAQAorCisKKworCisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9naXRodWItY2xvdWQuczMuYW1hem9uYXdzLmNvbSI+CisgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgorCisKKworICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi03bXR1bkhxcC9CdzBORDlha2pKTUU4WENoMFdQbTNIQVhPU2VYN3NrTDBxR0FocGRmemtRdlljdWpZY3dOUFRwV0tlS01GVUdaR3R2bkVrY2N6Rmd3UT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtOWI1MzE0MjEzZTM3MDU2ZWQ4N2IwNDE4MDU2YzRmMmMuY3NzIiAvPgorICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi1DbW9lZ2l6V0NVUjFqQzk0WTJldWtWUUlGeEo5R3hZZXJ6OXE3ZEJ3SW1MbHg4T0R3WWtYQU1JaENmVG5BNDVFcDYrK3JjTy9adEtWTHZGQk04ZGFwQT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL3NpdGUtNGU5ZjI3ZmEzMzM0MTc0M2Y3MzBhZTdiMGUzM2VmZjUuY3NzIiAvPgorICAgIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLUJ2bklDS0ZqSXZUNjlvNjFkeVlsbFh0YU9uR1ZiN0lmajVjM2xrM3dqN3RramF0MklDdU4rWFJ3eWs4dHFQM2RqN0lGaEVRenhEZHhTSGFKM3hqM013PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvZ2l0aHViLWZmOTg2ODc0Y2Y3ZTI4Y2JjZDVkNDQ4Y2RjYTcyNDVkLmNzcyIgLz4KKyAgICAKKyAgICAKKyAgICAKKyAgICAKKworCisgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgorICAKKyAgPHRpdGxlPlJlbGVhc2VzIMK3IGFwcGxlL2N1cHMgwrcgR2l0SHViPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KKyAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KKyAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CisgIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgorCisgICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZTpzcmMiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA2MzkxNDU/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkBnaXRodWIiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiAvPjxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9ImFwcGxlL2N1cHMiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgorICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDYzOTE0NT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9mZmljaWFsIENVUFMgU291cmNlcy4gQ29udHJpYnV0ZSB0byBhcHBsZS9jdXBzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KKworICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS8iPgorICAKKyAgCisKKyAgICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIGRhdGEtcGpheC10cmFuc2llbnQ+CisKKworCisgIAorCisgIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3JlbGVhc2VzIiBkYXRhLXBqYXgtdHJhbnNpZW50PgorCisgICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgorICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KKworICAgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImFtcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tZ2FfaWQiIGNvbnRlbnQ9IiIgY2xhc3M9ImpzLW9jdG8tZ2EtaWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdmlzaXRvcl9pZCIgY29udGVudD0iMzg2ODQ0MDEwODM2NTEzNjgzNyIgLz4KKworPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvcmVsZWFzZXMvaW5kZXgiIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CisKKworCisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KKworCis8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KKworCisKKyAgCisKKyAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KKyAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgorCisgICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CisKKyAgICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik5tUTNNMkZqWW1aaU5ESm1aVGc0WWpnelptUmtPV0psTmpRellqVTJNR0ZtTkRRNU9UTTRaR1ZtTWpjeU1UTm1NR1pqT0dWbE9EZzFOV00wTkdKbU9IeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lPRGN1T0RFdU1qUTBMakUyTVNJc0luSmxjWFZsYzNSZmFXUWlPaUpGTUVOQ09qSXlNelE0T2pVd09FUTVRam8zTkVRM1FqQTZOVVJHUVRRelF6UWlMQ0owYVcxbGMzUmhiWEFpT2pFMU56WTJPREkwTXpjc0ltaHZjM1FpT2lKbmFYUm9kV0l1WTI5dEluMD0iPgorCisgICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iTUFSS0VUUExBQ0VfRkVBVFVSRURfQkxPR19QT1NUUyxNQVJLRVRQTEFDRV9JTlZPSUNFRF9CSUxMSU5HLE1BUktFVFBMQUNFX1NPQ0lBTF9QUk9PRl9DVVNUT01FUlMsTUFSS0VUUExBQ0VfVFJFTkRJTkdfU09DSUFMX1BST09GLE1BUktFVFBMQUNFX1JFQ09NTUVOREFUSU9OUyxNQVJLRVRQTEFDRV9QRU5ESU5HX0lOU1RBTExBVElPTlMiPgorCisgICAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI5OTc5OTA1MDQyNTAxMWZlNmJjNzE3OTFlODYwYmQ1MGI0NmNjNmE3Ij4KKworICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iMmQyOWViMDExYzRlNTZiNTY4MjM5M2Q2ZjQ1Yzg2YjkiPgorICAKKworICAgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIiB0aXRsZT0iY3VwcyBSZWxlYXNlIE5vdGVzIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcy5hdG9tIiAvPgorICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiIHRpdGxlPSJjdXBzIFRhZ3MiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3RhZ3MuYXRvbSIgLz4KKyAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvY29tbWl0cy9tYXN0ZXIuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBjdXBzOm1hc3RlciIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgorCisgIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9hcHBsZS9jdXBzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy5naXQiPgorCisgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjEwNjM5MTQ1IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9ImFwcGxlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJhcHBsZS9jdXBzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CisKKworCisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KKworICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KKyAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vZmF2aWNvbi5pY28iPgorCis8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CisKKworCisKKworICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CisKKyAgPC9oZWFkPgorCisgIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtcmVzcG9uc2l2ZSI+CisgICAgCisKKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KKyAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CisgICAgPHNwYW4gY2xhc3M9IlByb2dyZXNzIHByb2dyZXNzLXBqYXgtbG9hZGVyIHBvc2l0aW9uLWZpeGVkIHdpZHRoLWZ1bGwganMtcGpheC1sb2FkZXItYmFyIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJwcm9ncmVzcy1wamF4LWxvYWRlci1iYXIgdG9wLTAgbGVmdC0wIiBzdHlsZT0id2lkdGg6IDAlOyI+PC9zcGFuPgorICAgIDwvc3Bhbj4KKworICAgIAorICAgIAorICAgIAorCisKKyAgICAgICAgPGhlYWRlciBjbGFzcz0iSGVhZGVyLW9sZCBoZWFkZXItbG9nZ2VkLW91dCBqcy1kZXRhaWxzLWNvbnRhaW5lciBEZXRhaWxzIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTIiIHJvbGU9ImJhbm5lciI+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWxnLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcC1yZXNwb25zaXZlIj4KKyAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcmsiPgorICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwMDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CisgICAgICAgIDwvYT4KKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctbm9uZSBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCB3aWR0aC1maXQgcC0yIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICA8YSBjbGFzcz0iSGVhZGVyLWxpbmsiIGhyZWY9Ii9hcHBsZSI+YXBwbGU8L2E+CisgICAgLworICAgIDxhIGNsYXNzPSJIZWFkZXItbGluayIgaHJlZj0iL2FwcGxlL2N1cHMiPmN1cHM8L2E+CisKKworICAgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8iCisgICAgICAgICAgICAgIGNsYXNzPSJkLWlubGluZS1ibG9jayBkLWxnLW5vbmUgZjUgdGV4dC13aGl0ZSBuby11bmRlcmxpbmUgYm9yZGVyIGJvcmRlci1ncmF5LWRhcmsgcm91bmRlZC0yIHB4LTIgcHktMSBtci0zIG1yLXNtLTUiCisgICAgICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXImcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9IjI0NjM0NDVjMDQ1YzZiZTg2YTdiNDhlNmMwYWY5NmQwYmE3Nzc4OTJkNmQyMzZmMjc4MjYzMjNiMzVjZWY1ZDciCisgICAgICAgICAgICAgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj4KKyAgICAgICAgICAgICAgU2lnbiZuYnNwO3VwCisgICAgICAgICAgICA8L2E+CisKKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBkLWxnLW5vbmUgbXQtMSBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgorICAgICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRocmVlLWJhcnMgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjQxIDlILjU5QzAgOSAwIDguNTkgMCA4YzAtLjU5IDAtMSAuNTktMUgxMS40Yy41OSAwIC41OS40MS41OSAxIDAgLjU5IDAgMS0uNTkgMWguMDF6bTAtNEguNTlDMCA1IDAgNC41OSAwIDRjMC0uNTkgMC0xIC41OS0xSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxaC4wMXpNLjU5IDExSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxSC41OUMwIDEzIDAgMTIuNTkgMCAxMmMwLS41OSAwLTEgLjU5LTF6Ii8+PC9zdmc+CisgICAgICAgICAgPC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IHBvc2l0aW9uLWZpeGVkIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgaGVpZ2h0LWZpdCBwb3NpdGlvbi1sZy1yZWxhdGl2ZSBkLWxnLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBkLWxnLW5vbmUgZmxleC1qdXN0aWZ5LWVuZCBib3JkZXItYm90dG9tIGJnLWdyYXktbGlnaHQgcC0zIj4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KKyAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICAgIDwvYnV0dG9uPgorICAgICAgPC9kaXY+CisKKyAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCBweC0zIHB4LWxnLTAgbWItNSBtYi1sZy0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgorICAgICAgICAgIDx1bCBjbGFzcz0iZC1sZy1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2FjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEFjdGlvbnMiPkFjdGlvbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcGFja2FnZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBQYWNrYWdlcyI+UGFja2FnZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2hvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+SG9zdGluZzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jdXN0b21lci1zdG9yaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEN1c3RvbWVyIHN0b3JpZXMiPkN1c3RvbWVyIHN0b3JpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICA8bGkgY2xhc3M9ImJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyI+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2VudGVycHJpc2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgZC1sZy1mbGV4IGZsZXgtbGctbm93cmFwIGZsZXgtbGctaXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgorICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayI+CisgICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXhwbG9yZSI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisKKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yIGJvcmRlci1sZy10b3AgcHQtbGctMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIj4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgUHJpY2luZworICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1hYnNvbHV0ZSBwb3NpdGlvbi1sZy1yZWxhdGl2ZSI+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgcC1sZy00IHBvc2l0aW9uLXJlbGF0aXZlIHBvc2l0aW9uLWxnLWFic29sdXRlIGxlZnQtMCBsZWZ0LWxnLW40Ij4KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CisKKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgcGxhbnMiPkNvbXBhcmUgcGxhbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZW50ZXJwcmlzZS5naXRodWIuY29tL2NvbnRhY3QiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbnRhY3QgU2FsZXMiPkNvbnRhY3QgU2FsZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2RldGFpbHM+CisgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9uYXY+CisKKyAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0zIHB4LWxnLTAgdGV4dC1jZW50ZXIgdGV4dC1sZy1sZWZ0Ij4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbWItMyBtYi1sZy0wIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggZmxleC1zZWxmLXN0cmV0Y2ggZmxleC1sZy1zZWxmLWF1dG8gbXItMCBtci1sZy0zIG1iLTMgbWItbGctMCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgorICByb2xlPSJjb21ib2JveCIKKyAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCisgIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgorICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgorICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKKz4KKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgorICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiByb2xlPSJzZWFyY2giIGFyaWEtbGFiZWw9IlNpdGUiIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iNDQxMzc4NTIiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9hcHBsZS9jdXBzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9hcHBsZS9jdXBzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgorICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaW5wdXQtc20gaGVhZGVyLXNlYXJjaC13cmFwcGVyIHAtMCBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgorICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKKyAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKKyAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgorICAgICAgICAgIG5hbWU9InEiCisgICAgICAgICAgdmFsdWU9IiIKKyAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgorICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCisgICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKKyAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgorICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgorICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKKyAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCisgICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49MFFtTVN1WkhtODRjUE5WR1E3UllBWGdQUmlVZk9jak5PQzF2WE9oVm55em0yQjNKU0h6MWZjSUpCWnhNQUtXVWlCWGpsVndMa2NITEpQWnkyZ3krbWc9PSIKKyAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKKyAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKKyAgICAgICAgICA+CisgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KKworICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CisgICAgICAgICAgICAgIAorPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgorICAKKworPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKzwvdWw+CisKKzx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgorICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KKyAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgorICA8L2xpPgorPC91bD4KKworPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CisgIAorCis8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKyAgCisKKzxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgorICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwMC0xIDF2MTRhMSAxIDAgMDAxIDFoMTNhMSAxIDAgMDAxLTFWMWExIDEgMCAwMC0xLTF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwMDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwMDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CisgICAgPC9kaXY+CisKKyAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CisKKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgorICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKKyAgICAgIDwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgorICAgICAgICBBbGwgR2l0SHViCisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgorICAgICAgSnVtcCB0bworICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKyAgPC9hPgorPC9saT4KKworCis8L3VsPgorCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvbGFiZWw+Cis8L2Zvcm0+ICA8L2Rpdj4KKzwvZGl2PgorCisgICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMlMkZyZWxlYXNlcyIKKyAgICAgICAgICBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIgorICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXIgbWVudSZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7Om51bGwsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O1NJR05fVVAmcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iZTRlMzQyNTVjODQ4NWQ2OTE1ZDE0NDhhODZlYTk3MjNjM2IyZTkyZTk1NzZlNzE4NDVhZjczNTg3MGRhOGQ3MCIKKyAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gaW4sIHRleHQ6c2lnbi1pbiI+CisgICAgICAgICAgU2lnbiZuYnNwO2luCisgICAgICAgIDwvYT4KKyAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8mYW1wO3NvdXJjZV9yZXBvPWFwcGxlJTJGY3VwcyIKKyAgICAgICAgICAgIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiCisgICAgICAgICAgICBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3NpdGUgaGVhZGVyIG1lbnUmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImU0ZTM0MjU1Yzg0ODVkNjkxNWQxNDQ4YTg2ZWE5NzIzYzNiMmU5MmU5NTc2ZTcxODQ1YWY3MzU4NzBkYThkNzAiCisgICAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+CisgICAgICAgICAgICBTaWduJm5ic3A7dXAKKyAgICAgICAgICA8L2E+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2hlYWRlcj4KKworICA8L2Rpdj4KKworICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CisKKworICAgIDxkaXYgaWQ9ImpzLWZsYXNoLWNvbnRhaW5lciI+CisKKzwvZGl2PgorCisKKworICA8ZGl2IGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgZGF0YS1jb21taXQtaG92ZXJjYXJkcy1lbmFibGVkPgorICAgICAgICA8ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvU29mdHdhcmVTb3VyY2VDb2RlIiBjbGFzcz0iIj4KKyAgICA8bWFpbiAgPgorICAgICAgCisKKworICAKKworCisKKyAgCisKKworCisKKworCisKKworCisgIDxkaXYgY2xhc3M9IiBwYWdlaGVhZCByZXBvaGVhZCByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgcHQtMCBwdC1sZy00ICI+CisgICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyLWxnIHAtcmVzcG9uc2l2ZSBkLW5vbmUgZC1sZy1ibG9jayI+CisKKyAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CisKKworCisKKyAgPGxpPgorICAgIAorICA8YSBjbGFzcz0idG9vbHRpcHBlZCB0b29sdGlwcGVkLXMgYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIG1lbnUgd2F0Y2gmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iNTVlNjFjZTgwNzUyMDk0MjcyNGQzN2Q0OGQzZDE5YzNkYTRiYWVlY2IyZWM4OWJjZTRmNmRhMGNlYjkxYTYyZCIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1leWUgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguMDYgMkMzIDIgMCA4IDAgOHMzIDYgOC4wNiA2QzEzIDE0IDE2IDggMTYgOHMtMy02LTcuOTQtNnpNOCAxMmMtMi4yIDAtNC0xLjc4LTQtNCAwLTIuMiAxLjgtNCA0LTQgMi4yMiAwIDQgMS44IDQgNCAwIDIuMjItMS43OCA0LTQgNHptMi00YzAgMS4xMS0uODkgMi0yIDItMS4xMSAwLTItLjg5LTItMiAwLTEuMTEuODktMiAyLTIgMS4xMSAwIDIgLjg5IDIgMnoiLz48L3N2Zz4KKyAgICBXYXRjaAorPC9hPiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvYXBwbGUvY3Vwcy93YXRjaGVycyIKKyAgICAgICBhcmlhLWxhYmVsPSI4OCB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgIDg4CisgICAgPC9hPgorCisgIDwvbGk+CisKKyAgPGxpPgorICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3N0YXIgYnV0dG9uJnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6NDQxMzc4NTIsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O0xPR19JTiZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSJmOTcwNGE3MTViZTQ2YTU2NzQ3OTk3MzU3MzQ3N2E1ODM1MDFhMTk3NmY5OWRlYjBjY2RkMGIxZWQzYjc0ZTViIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRmFwcGxlJTJGY3VwcyI+CisgICAgICA8c3ZnIGFyaWEtbGFiZWw9InN0YXIiIGhlaWdodD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc3RhciB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CisKKyAgICAgIFN0YXIKKzwvYT4KKyAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL2FwcGxlL2N1cHMvc3RhcmdhemVycyIKKyAgICAgIGFyaWEtbGFiZWw9Ijg4MyB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICA4ODMKKyAgICA8L2E+CisKKyAgPC9saT4KKworICA8bGk+CisgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlcG8gZGV0YWlscyBmb3JrIGJ1dHRvbiZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7OjQ0MTM3ODUyLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iYjUyN2IyZmVhMGNkOGU5NDg3MDA0Nzk3MmFjZDg3MzU4Y2Y2YTczNWRhMjU0YjAwZWIwNWMxNWQ2NzZmNzUwMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAwLTEgMy43MlY2TDUgOCAzIDZWNC43MkExLjk5MyAxLjk5MyAwIDAwMiAxYTEuOTkzIDEuOTkzIDAgMDAtMSAzLjcyVjYuNWwzIDN2MS43OEExLjk5MyAxLjk5MyAwIDAwNSAxNWExLjk5MyAxLjk5MyAwIDAwMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAwOCAxek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zIDEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMtMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz4KKyAgICAgICAgRm9yaworPC9hPgorICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKKyAgICAgICBhcmlhLWxhYmVsPSIyNjAgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICAyNjAKKyAgICA8L2E+CisgIDwvbGk+Cis8L3VsPgorCisgICAgICA8aDEgY2xhc3M9InB1YmxpYyAiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgorICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL2FwcGxlL2hvdmVyY2FyZCIgaHJlZj0iL2FwcGxlIj5hcHBsZTwvYT48L3NwYW4+PCEtLQorLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCistLT48c3Ryb25nIGl0ZW1wcm9wPSJuYW1lIj48YSBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBocmVmPSIvYXBwbGUvY3VwcyI+Y3VwczwvYT48L3N0cm9uZz4KKyAgCisKKzwvaDE+CisKKyAgICA8L2Rpdj4KKyAgICAKKzxuYXYgY2xhc3M9Imh4X3JlcG9uYXYgcmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lci1sZyBwLXJlc3BvbnNpdmUgZC1ub25lIGQtbGctYmxvY2siCisgICAgIGl0ZW1zY29wZQorICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCisgICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKKyAgICAgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciI+CisKKyAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzZWxlY3RlZCByZXBvbmF2LWl0ZW0iIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGMiIGFyaWEtY3VycmVudD0icGFnZSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19zb3VyY2UgcmVwb19kb3dubG9hZHMgcmVwb19jb21taXRzIHJlcG9fcmVsZWFzZXMgcmVwb190YWdzIHJlcG9fYnJhbmNoZXMgcmVwb19wYWNrYWdlcyAvYXBwbGUvY3VwcyIgaHJlZj0iL2FwcGxlL2N1cHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jb2RlIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDNMOCA0LjUgMTEuNSA4IDggMTEuNSA5LjUgMTMgMTQgOCA5LjUgM3ptLTUgMEwwIDhsNC41IDVMNiAxMS41IDIuNSA4IDYgNC41IDQuNSAzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgPC9zcGFuPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBpIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1pc3N1ZS1vcGVuZWQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDIuM2MzLjE0IDAgNS43IDIuNTYgNS43IDUuN3MtMi41NiA1LjctNS43IDUuN0E1LjcxIDUuNzEgMCAwMTEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+PC9kaXY+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KKzwvYT4gICAgPC9zcGFuPgorCisgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wdWxscyBjaGVja3MgL2FwcGxlL2N1cHMvcHVsbHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bGxzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LXB1bGwtcmVxdWVzdCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDExLjI4VjVjLS4wMy0uNzgtLjM0LTEuNDctLjk0LTIuMDZDOS40NiAyLjM1IDguNzggMi4wMyA4IDJIN1YwTDQgM2wzIDNWNGgxYy4yNy4wMi40OC4xMS42OS4zMS4yMS4yLjMuNDIuMzEuNjl2Ni4yOEExLjk5MyAxLjk5MyAwIDAwMTAgMTVhMS45OTMgMS45OTMgMCAwMDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMDAyIDE1YTEuOTkzIDEuOTkzIDAgMDAxLTMuNzJWNC43MmMuNTktLjM0IDEtLjk4IDEtMS43MnptLS44IDEwYzAgLjY2LS41NSAxLjItMS4yIDEuMi0uNjUgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMnpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz48L2Rpdj4KKyAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjY8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjMiPgorPC9hPiAgPC9zcGFuPgorCisKKyAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvYXBwbGUvY3Vwcy9wcm9qZWN0cyIgaHJlZj0iL2FwcGxlL2N1cHMvcHJvamVjdHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgUHJvamVjdHMKKyAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIiA+MDwvc3Bhbj4KKzwvYT4KKworICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLWhvdGtleT0iZyB3IiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3dpa2kgL2FwcGxlL2N1cHMvd2lraSIgaHJlZj0iL2FwcGxlL2N1cHMvd2lraSI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWlubGluZSI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWJvb2siIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDVoNHYxSDNWNXptMCAzaDRWN0gzdjF6bTAgMmg0VjlIM3Yxem0xMS01aC00djFoNFY1em0wIDJoLTR2MWg0Vjd6bTAgMmgtNHYxaDRWOXptMi02djljMCAuNTUtLjQ1IDEtMSAxSDkuNWwtMSAxLTEtMUgyYy0uNTUgMC0xLS40NS0xLTFWM2MwLS41NS40NS0xIDEtMWg1LjVsMSAxIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF6bS04IC41TDcuNSAzSDJ2OWg2VjMuNXptNy0uNUg5LjVsLS41LjVWMTJoNlYzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgV2lraQorPC9hPgorICAgIDxhIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zaGllbGQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDJsNy0yIDcgMnY2LjAyQzE0IDEyLjY5IDguNjkgMTYgNyAxNmMtMS42OSAwLTctMy4zMS03LTcuOThWMnptMSAuNzVMNyAxbDYgMS43NXY1LjI2OEMxMyAxMi4xMDQgOC40NDkgMTUgNyAxNWMtMS40NDkgMC02LTIuODk2LTYtNi45ODJWMi43NXptMSAuNzVMNyAydjEyYy0xLjIwNyAwLTUtMi40ODItNS01Ljk4NVYzLjV6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBTZWN1cml0eQorPC9hPgorICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIHBlb3BsZSAvYXBwbGUvY3Vwcy9wdWxzZSIgaHJlZj0iL2FwcGxlL2N1cHMvcHVsc2UiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1ncmFwaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE2IDE0djFIMFYwaDF2MTRoMTV6TTUgMTNIM1Y4aDJ2NXptNCAwSDdWM2gydjEwem00IDBoLTJWNmgydjd6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBJbnNpZ2h0cworPC9hPgorCis8L25hdj4KKworICA8ZGl2IGNsYXNzPSJyZXBvbmF2LXdyYXBwZXIgcmVwb25hdi1zbWFsbCBkLWxnLW5vbmUiPgorICA8bmF2IGNsYXNzPSJyZXBvbmF2IGpzLXJlcG9uYXYgdGV4dC1jZW50ZXIgbm8td3JhcCIKKyAgICAgICBpdGVtc2NvcGUKKyAgICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9hcHBsZS9jdXBzIiBocmVmPSIvYXBwbGUvY3VwcyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgorICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+SXNzdWVzPC9zcGFuPgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjIiPgorPC9hPiAgICAgIDwvc3Bhbj4KKworICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9hcHBsZS9jdXBzL3B1bGxzIiBocmVmPSIvYXBwbGUvY3Vwcy9wdWxscyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+Njwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KKzwvYT4gICAgPC9zcGFuPgorCisgICAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL2FwcGxlL2N1cHMvcHJvamVjdHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3Byb2plY3RzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHJvamVjdHM8L3NwYW4+CisgICAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjA8L3NwYW4+CisgICAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSI0Ij4KKzwvYT4gICAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb193aWtpIC9hcHBsZS9jdXBzL3dpa2kiIGhyZWY9Ii9hcHBsZS9jdXBzL3dpa2kiPgorICAgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5XaWtpPC9zcGFuPgorICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNSI+Cis8L2E+ICAgICAgPC9zcGFuPgorCisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+U2VjdXJpdHk8L3NwYW4+CisgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNiI+Cis8L2E+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icHVsc2UgL2FwcGxlL2N1cHMvcHVsc2UiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bHNlIj4KKyAgICAgICAgUHVsc2UKKzwvYT4KKworICA8L25hdj4KKzwvZGl2PgorCisKKyAgPC9kaXY+Cis8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgY2xlYXJmaXggbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgcC1yZXNwb25zaXZlIj4KKyAgPGRpdiBjbGFzcz0icmVwb3NpdG9yeS1jb250ZW50ICI+CisKKyAgICAKKyAgICAKKyAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEgaGlkZS1zbSI+CisgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CisgICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KKyAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9wcm9tcHRfZGlzbWlzc2Fscy9zaWdudXAiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX21ldGhvZCIgdmFsdWU9InB1dCIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJrRGFYL3NGM0FvU2cvM21HVGc3Tnc0RWdHb3hCQ3ZvcThhZGwwcmRXOFFmcFVRbm1wT2VxM0V4U1lrUVlRbDZVZmlSR0dRbGF5OUh6b1ZWblY5cGphUT09IiAvPgorICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CisgICAgICAgICAgICAgIERpc21pc3MKKyAgICAgICAgICAgIDwvYnV0dG9uPgorPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkJlIG5vdGlmaWVkIG9mIG5ldyByZWxlYXNlczwvaDM+CisgICAgICAgICAgPHAgY2xhc3M9ImNvbC04IG14LWF1dG8iPkNyZWF0ZSB5b3VyIGZyZWUgR2l0SHViIGFjY291bnQgdG9kYXkgdG8gc3Vic2NyaWJlIHRvIHRoaXMgcmVwb3NpdG9yeSBmb3IgbmV3IHJlbGVhc2VzIGFuZCBidWlsZCBzb2Z0d2FyZSBhbG9uZ3NpZGUgNDAgbWlsbGlvbiBkZXZlbG9wZXJzLjwvcD4KKyAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlbGVhc2VzIHNpZ251cCBwcm9tcHQmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImMyYTlmODcwZGRmOTk2OGNjNjk3ODI0NjRjNjgzOTFmOWU2YWU3NjQ2NTAxZDEzYmNmY2NlNjg0NThiZjgyZTUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtcmVsZWFzZXMiPlNpZ24gdXA8L2E+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKworICA8ZGl2IGNsYXNzPSJzdWJuYXYiPgorICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LW1kLXJvdyBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LW1kLWl0ZW1zLWNlbnRlciI+CisgIDxkaXYgY2xhc3M9InN1Ym5hdi1saW5rcyBmbG9hdC1sZWZ0IiByb2xlPSJuYXZpZ2F0aW9uIj4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHN1Ym5hdi1pdGVtIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcmVsZWFzZXMgL2FwcGxlL2N1cHMvcmVsZWFzZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzIj5SZWxlYXNlczwvYT4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHN1Ym5hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3RhZ3MgL2FwcGxlL2N1cHMvdGFncyIgaHJlZj0iL2FwcGxlL2N1cHMvdGFncyI+VGFnczwvYT4KKyAgPC9kaXY+Cis8L2Rpdj4KKworCisgIDwvZGl2PgorCisgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci10b3AgY2xlYXJmaXgiPgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLWxhdGVzdCI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICA8YSBjbGFzcz0iYm9yZGVyLTAgTGFiZWwtLW91dGxpbmUtZ3JlZW4iIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2xhdGVzdCI+TGF0ZXN0IHJlbGVhc2U8L2E+CisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjE8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWQxODFjMjRlNGIxMzBkMjk4MTc4NWQ0NDQ4OGJlZjhjZmRhNWY2ZCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMSI+djIuMy4xPC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICAgIDxhIGNsYXNzPSJib3JkZXItMCBMYWJlbC0tb3V0bGluZS1ncmVlbiIgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvbGF0ZXN0Ij5MYXRlc3QgcmVsZWFzZTwvYT4KKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMy4xIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zLjEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjMuMTwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9lZDE4MWMyNGU0YjEzMGQyOTgxNzg1ZDQ0NDg4YmVmOGNmZGE1ZjZkIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTEyLTEzVDE0OjUxOjExWiIgY2xhc3M9Im5vLXdyYXAiPkRlYyAxMywgMjAxOTwvcmVsYXRpdmUtdGltZT4KKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjEgaXMgYSBnZW5lcmFsIGJ1ZyBmaXggcmVsZWFzZSwgaW5jbHVkaW5nIGEgZml4IGZvciBDVkUtMjAxOS0yMjI4LiAgQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDY4MzQ1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSI+IzU2NjE8L2E+LCA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTQ5NzM4NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Njc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiPiM1Njc0PC9hPiwgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIwNDcwMTg5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIj4jNTY4MjwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOS0yMjI4OiBUaGUgPGNvZGU+aXBwU2V0VmFsdWV0YWc8L2NvZGU+IGZ1bmN0aW9uIGRpZCBub3QgdmFsaWRhdGUgdGhlIGRlZmF1bHQ8YnI+CitsYW5ndWFnZSB2YWx1ZS48L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSB3ZWIgaW50ZXJmYWNlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzM5MjU2MTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjEiPiM1NjIxPC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY2FjaGUgY29kZSBub3cgbG9va3MgdXAgcGFnZSBzaXplcyB1c2luZyB0aGVpciBkaW1lbnNpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3OTg3NzY4MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyI+IzU2MzM8L2E+KTwvbGk+Cis8bGk+UFBEIGZpbGVzIGNvbnRhaW5pbmcgImN1c3RvbSIgb3B0aW9uIGtleXdvcmRzIGRpZCBub3Qgd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg2MDI0NTkxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5Ij4jNTYzOTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+T24gV2luZG93cywgVExTIGNlcnRpZmljYXRlcyBnZW5lcmF0ZWQgb24gRmVicnVhcnkgMjkgd291bGQgbGlrZWx5IGZhaWw8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg3MjE1OTcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjQzIj4jNTY0MzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIERpZ2VzdE9wdGlvbnMgZGlyZWN0aXZlIGZvciB0aGUgPGNvZGU+Y2xpZW50LmNvbmY8L2NvZGU+IGZpbGUgdG8gY29udHJvbCB3aGV0aGVyPGJyPgorTUQ1LWJhc2VkIERpZ2VzdCBhdXRoZW50aWNhdGlvbiBpcyBhbGxvd2VkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODk3MjU4ODciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciPiM1NjQ3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBoYW5kbGluZyBvZiBwcmludGVyIHJlc291cmNlIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0OTUyNjkzNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjUyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiPiM1NjUyPC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkFkZGVkIHBhaW50IGNhbiBsYWJlbHMgdG8gRHltbyBkcml2ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDc1NDI0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiI+IzU2NjI8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcGV2ZXByaW50ZXI8L2NvZGU+IHByb2dyYW0gbm93IHN1cHBvcnRzIGF1dGhlbnRpY2F0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MjkwOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiPiM1NjY1PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBwcm9ncmFtIG5vdyBhZHZlcnRpc2VzIEROUy1TRCBzZXJ2aWNlcyBvbiB0aGUgY29ycmVjdDxicj4KK2ludGVyZmFjZXMsIGFuZCBwcm92aWRlcyBhIHdheSB0byB0dXJuIHRoZW0gb2ZmIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MzAwNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiPiM1NjY2PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT4tLXdpdGgtZGJ1c2RpcjwvY29kZT4gb3B0aW9uIHdhcyBpZ25vcmVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDk2MTE4MzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiPiM1NjcxPC9hPik8L2xpPgorPGxpPlNhbmRib3hlZCBhcHBsaWNhdGlvbnMgd2VyZSBub3QgYWJsZSB0byBnZXQgdGhlIGRlZmF1bHQgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTE5MTc5NjAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3Ni9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2Ij4jNTY3NjwvYT4pPC9saT4KKzxsaT5Mb2cgZmlsZSBhY2Nlc3MgY29udHJvbHMgd2VyZSBub3QgcHJlc2VydmVkIGJ5IDxjb2RlPmN1cHNjdGw8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTkyMzAxNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2NzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2NzciPiM1Njc3PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBlcnJvciBpbiB0aGUgam9icyB3ZWIgaW50ZXJmYWNlIHRlbXBsYXRlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1Mjk5ODkyODgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTQiPiM1Njk0PC9hPik8L2xpPgorPGxpPkZpeGVkIGFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gPGNvZGU+aXBwRW51bVN0cmluZzwvY29kZT4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzMjg2MjM0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTY5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTY5NSI+IzU2OTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBuZXcgY29tcGlsZXIgd2FybmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzNDU0NTQxOSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTcwMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTcwMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTcwMCI+IzU3MDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdGhlIEFwcGxlIFJhc3RlciBzdXBwb3J0IChyZGFyOi8vNTUzMDExMTQpPC9saT4KKzxsaT5UaGUgSVBQIGJhY2tlbmQgZGlkIG5vdCBkZXRlY3QgYWxsIGNhc2VzIHdoZXJlIGEgam9iIHNob3VsZCBiZSByZXRyaWVkIHVzaW5nPGJyPgorYSByYXN0ZXIgZm9ybWF0IChyZGFyOi8vNTYwMjEwOTEpPC9saT4KKzxsaT5GaXhlZCBzcGVsbGluZyBvZiAiZm9sZC1hY2NvcmRpb24iLjwvbGk+Cis8bGk+Rml4ZWQgdGhlIGRlZmF1bHQgY29tbW9uIG5hbWUgZm9yIFRMUyBjZXJ0aWZpY2F0ZXMgdXNlZCBieSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPi48L2xpPgorPGxpPkZpeGVkIHRoZSBvcHRpb24gbmFtZXMgdXNlZCBmb3IgSVBQIEV2ZXJ5d2hlcmUgZmluaXNoaW5nIG9wdGlvbnMuPC9saT4KKzxsaT5BZGRlZCBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIHJvbGwgb2YgdGhlIERZTU8gVHdpbi9EVU8gbGFiZWwgcHJpbnRlcnMuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIG9wZW4KKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMS9jdXBzLTIuMy4xLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj43Ljc2IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMy4xL2N1cHMtMi4zLjEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjMuMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMyIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMyI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEzPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzBhZDZhYzU1ZGEyNjg2YzZmYTI0YjA1YmRlNWU5MDM2ZmQ0ZGI1ZDEiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEzIj52Mi4yLjEzPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTMiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTMiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTM8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMGFkNmFjNTVkYTI2ODZjNmZhMjRiMDViZGU1ZTkwMzZmZDRkYjVkMSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0xMi0xM1QxNDo0OTo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgMTMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTMuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTMgaXMgdGhlIGxhc3QgZ2VuZXJhbCBidWcgZml4IHJlbGVhc2UgaW4gdGhlIDIuMi54IHNlcmllcyBhbmQgaW5jbHVkZXM8YnI+CithIGZpeCBmb3IgQ1ZFLTIwMTktMjIyOC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktMjIyODogVGhlIDxjb2RlPmlwcFNldFZhbHVldGFnPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IHZhbGlkYXRlIHRoZSBkZWZhdWx0PGJyPgorbGFuZ3VhZ2UgdmFsdWUuPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc3BlbGxpbmcgb2YgImZvbGQtYWNjb3JkaW9uIi48L2xpPgorPGxpPkZpeGVkIHRoZSBkZWZhdWx0IGNvbW1vbiBuYW1lIGZvciBUTFMgY2VydGlmaWNhdGVzIHVzZWQgYnkgPGNvZGU+aXBwc2VydmVyPC9jb2RlPi48L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIDxjb2RlPmlwcEVudW1TdHJpbmc8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzI4NjIzNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTUiPiM1Njk1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgbmV3IGNvbXBpbGVyIHdhcm5pbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzQ1NDU0MTkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU3MDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU3MDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU3MDAiPiM1NzAwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRoZSBBcHBsZSBSYXN0ZXIgc3VwcG9ydCAocmRhcjovLzU1MzAxMTE0KTwvbGk+Cis8bGk+VGhlIElQUCBiYWNrZW5kIGRpZCBub3QgZGV0ZWN0IGFsbCBjYXNlcyB3aGVyZSBhIGpvYiBzaG91bGQgYmUgcmV0cmllZCB1c2luZzxicj4KK2EgcmFzdGVyIGZvcm1hdCAocmRhcjovLzU2MDIxMDkxKTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTMvY3Vwcy0yLjIuMTMtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkzIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMy9jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTMuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC0iPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVlNmJlOWM8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMCI+djIuMy4wPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjMuMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMy4wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lZTZiZTljPC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wOC0yM1QxODoxNzoyMVoiIGNsYXNzPSJuby13cmFwIj5BdWcgMjMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjMuMC4uLm1hc3RlciI+CisgICAgNjUgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjAgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQsIHdoaWNoIGFkb3B0cyB0aGUgbmV3IENVUFMgbGljZW5zZSwgYWRkcyBzdXBwb3J0IGZvciBJUFAgcHJlc2V0cyBhbmQgZmluaXNoaW5nIHRlbXBsYXRlcywgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLCBhbmQgaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5BZGRlZCBhIEdQTDIvTEdQTDIgZXhjZXB0aW9uIHRvIHRoZSBuZXcgQ1VQUyBsaWNlbnNlIHRlcm1zLjwvbGk+Cis8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODM2NDE4OTgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzciPiM1NjM3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBzY2hlZHVsZXIgam9iIGNsZWFudXAgY29kZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUwMjc5MjE2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTg4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTg4Ij4jNTU4ODwvYT4pPC9saT4KKzxsaT5GaXhlZCBidWlsZHMgd2hlbiB0aGVyZSBpcyBubyBUTFMgbGlicmFyeSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUxNTc4MTg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkwIj4jNTU5MDwvYT4pPC9saT4KKzxsaT5FbGltaW5hdGVkIHNvbWUgbmV3IEdDQyBjb21waWxlciB3YXJuaW5ncyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUzMzI4NzQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkxIj4jNTU5MTwvYT4pPC9saT4KKzxsaT5SZW1vdmVkIGRlYWQgY29kZSBmcm9tIHRoZSBzY2hlZHVsZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MzMyOTg3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU5My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU5MyI+IzU1OTM8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBwb3RlbnRpYWwgZXhjZXNzIGxvZ2dpbmcgZnJvbSB0aGUgc2NoZWR1bGVyIHdoZW4gcmVtb3Zpbmcgam9iIGZpbGVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1NjI4NDQwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyI+IzU1OTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGluIDxjb2RlPmh0dHBHZXRTdWJGaWVsZDI8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTY1MzQxMzciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTk4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiPiM1NTk4PC9hPik8L2xpPgorPGxpPkFkZGVkIEZJUFMtMTQwIHdvcmthcm91bmRzIGZvciBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTgwMTU5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiPiM1NjAxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MTE3MjMxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIyIj4jNTYyMjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBwcm92aWRlcyBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkZXNjcmlwdGlvbjxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTkwNzQ3MzMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiPiM1NjAzPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IGxvZ3Mgam9icyBoZWxkIGZvciBhdXRoZW50aWNhdGlvbiB1c2luZyB0aGUgZXJyb3IgbGV2ZWwgc288YnI+CitpdCBpcyBjbGVhciB3aGF0IGhhcHBlbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5scGFkbWluPC9jb2RlPiBjb21tYW5kIGRpZCBub3QgYWx3YXlzIHVwZGF0ZSB0aGUgUFBEIGZpbGUgZm9yIGNoYW5nZXMgdG8gdGhlPGJyPgorPGNvZGU+Y3Vwc0lQUFN1cHBsaWVzPC9jb2RlPiBhbmQgPGNvZGU+Y3Vwc1NOTVBTdXBwbGllczwvY29kZT4ga2V5d29yZHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ2NTcyNzE5NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYxMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYxMCI+IzU2MTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBub3cgdXNlcyBib3RoIHRoZSBncm91cCdzIG1lbWJlcnNoaXAgbGlzdCBhcyB3ZWxsIGFzIHRoZTxicj4KK3ZhcmlvdXMgT1Mtc3BlY2lmaWMgbWVtYmVyc2hpcCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB1c2VyIGJlbG9uZ3M8YnI+Cit0byBhIG5hbWVkIGdyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Njg0NjM2NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTMiPiM1NjEzPC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlya3MgcnVsZSBmb3IgSFAgTGFzZXJKZXQgMTAxNSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDcwNjU5MzEzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3Ij4jNTYxNzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBwYXJzZXIgaXNzdWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzQzMTQwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjMiPiM1NjIzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE3MDkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjI0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjI0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjI0Ij4jNTYyNDwvYT4pPC9saT4KKzxsaT5UaGUgSVBQIHBhcnNlciBubyBsb25nZXIgYWxsb3dzIGludmFsaWQgbWVtYmVyIGF0dHJpYnV0ZXMgaW4gY29sbGVjdGlvbnM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc3OTc5ODg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIj4jNTYzMDwvYT4pPC9saT4KKzxsaT5UaGUgY29uZmlndXJlIHNjcmlwdCBub3cgdHJlYXRzIHRoZSAid2hlZWwiIGdyb3VwIGFzIGEgcG90ZW50aWFsIHN5c3RlbTxicj4KK2dyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODQ1MzUxMzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzgiPiM1NjM4PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgVVNCIHByaW50aW5nIGlzc3VlIG9uIG1hY09TIChyZGFyOi8vMzE0MzM5MzEpPC9saT4KKzxsaT5GaXhlZCBJUFAgYnVmZmVyIG92ZXJmbG93IChyZGFyOi8vNTAwMzU0MTEpPC9saT4KKzxsaT5GaXhlZCBtZW1vcnkgZGlzY2xvc3VyZSBpc3N1ZSBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM4NTMpPC9saT4KKzxsaT5GaXhlZCBEb1MgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIgKHJkYXI6Ly81MTM3MzkyOSk8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggdW5zdXBwb3J0ZWQgInNpZGVzIiB2YWx1ZXMgaW4gdGhlIElQUCBiYWNrZW5kPGJyPgorKHJkYXI6Ly81MTc3NTMyMik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgcmVzdGFydCBjb250aW51b3VzbHkgd2hlbiBpZGxlIGFuZCBwcmludGVycyB3ZXJlIG5vdDxicj4KK3NoYXJlZCAocmRhcjovLzUyNTYxMTk5KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCA8Y29kZT5FWFBFQ1QgIW5hbWUgV0lUSC1WQUxVRSAuLi48L2NvZGU+IHRlc3RzLjwvbGk+Cis8bGk+Rml4ZWQgYSBjb21tYW5kIG9yZGVyaW5nIGlzc3VlIGluIHRoZSBaZWJyYSBaUEwgZHJpdmVyLjwvbGk+Cis8bGk+Rml4ZWQgYSBtZW1vcnkgbGVhayBpbiA8Y29kZT5wcGRPcGVuPC9jb2RlPi48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zLjAvY3Vwcy0yLjMuMC1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+Ny43NSBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMC9jdXBzLTIuMy4wLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMy4wLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTIiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTIiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMjwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9jOGNiNjQwMGUzMTc2MzNmNjZjZGM4Nzg4NDkxNWQ1NDcxMGI1M2EwIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMiI+djIuMi4xMjwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEyIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEyPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2M4Y2I2NDAwZTMxNzYzM2Y2NmNkYzg3ODg0OTE1ZDU0NzEwYjUzYTAiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDgtMTVUMjI6NTI6NDRaIiBjbGFzcz0ibm8td3JhcCI+QXVnIDE1LCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4yLjEyLi4ubWFzdGVyIj4KKyAgICA3OTMgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4yLjEyIGlzIG5vdyBhdmFpbGFibGUgYW5kIGluY2x1ZGVzIHNlY3VyaXR5LCBjb21wYXRpYmlsaXR5LCBhbmQgZ2VuZXJhbCBidWcgZml4ZXMuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc2N0bDwvY29kZT4gY29tbWFuZCBub3cgcHJldmVudHMgc2V0dGluZyAiY3Vwcy1maWxlcy5jb25mIiBkaXJlY3RpdmVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMzgyOTI1NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCI+IzU1MzA8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgc3lzdGVtZCBzZXJ2aWNlIGZpbGUgZm9yIGN1cHNkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjY0NzkwNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1NTEiPiM1NTUxPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzQ2hlY2tEZXN0U3VwcG9ydGVkPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNoZWNrIG9jdGV0U3RyaW5nIHZhbHVlczxicj4KK2NvcnJlY3RseSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODIwODYyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU3Ij4jNTU1NzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5SZXN0b3JlZCBtaW5pbWFsIHN1cHBvcnQgZm9yIHRoZSA8Y29kZT5FbXVsYXRvcnM8L2NvZGU+IGtleXdvcmQgaW4gUFBEIGZpbGVzIHRvIGFsbG93PGJyPgorb2xkIFNhbXN1bmcgcHJpbnRlciBkcml2ZXJzIHRvIGNvbnRpbnVlIHRvIHdvcmsgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzMjIxNDU2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiI+IzU1NjI8L2E+KTwvbGk+Cis8bGk+VGltZWQgb3V0IGpvYiBzdWJtaXNzaW9uIG5vdyB5aWVsZHMgYW4gZXJyb3IgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzNzM5MDU2NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCI+IzU1NzA8L2E+KTwvbGk+Cis8bGk+VGhlIGZvb3RlciBpbiB0aGUgd2ViIGludGVyZmFjZSBjb3ZlcmVkIHNvbWUgY29udGVudCBvbiBzbWFsbCBkaXNwbGF5czxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDAzNjU4MDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiPiM1NTc0PC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IGVuZm9yY2VzIHJlYWQgbGltaXRzLCBpbXByb3ZpbmcgcHJpbnQgc3BlZWQ8YnI+CitpbiBtYW55IGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDUzMTUwNTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiPiM1NTgzPC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvbGQgcmVsZWFzZXMgb2YgQ1VQUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ5MzYxMDY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3Ij4jNTU4NzwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBpbiB0aGUgc2NoZWR1bGVyIGpvYiBjbGVhbnVwIGNvZGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MDI3OTIxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU4OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU4OCI+IzU1ODg8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5BZGRlZCBGSVBTLTE0MCB3b3JrYXJvdW5kcyBmb3IgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU4MDE1OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIj4jNTYwMTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDExNzIzMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyMiI+IzU2MjI8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgcHJvdmlkZXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVzY3JpcHRpb248YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5MDc0NzMzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIj4jNTYwMzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBhZG1pbjwvY29kZT4gY29tbWFuZCBkaWQgbm90IGFsd2F5cyB1cGRhdGUgdGhlIFBQRCBmaWxlIGZvciBjaGFuZ2VzIHRvIHRoZTxicj4KKzxjb2RlPmN1cHNJUFBTdXBwbGllczwvY29kZT4gYW5kIDxjb2RlPmN1cHNTTk1QU3VwcGxpZXM8L2NvZGU+IGtleXdvcmRzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NjU3MjcxOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTAiPiM1NjEwPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IHVzZXMgYm90aCB0aGUgZ3JvdXAncyBtZW1iZXJzaGlwIGxpc3QgYXMgd2VsbCBhcyB0aGU8YnI+Cit2YXJpb3VzIE9TLXNwZWNpZmljIG1lbWJlcnNoaXAgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdXNlciBiZWxvbmdzPGJyPgordG8gYSBuYW1lZCBncm91cCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDY4NDYzNjc4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjEzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjEzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjEzIj4jNTYxMzwvYT4pPC9saT4KKzxsaT5BZGRlZCBVU0IgcXVpcmtzIHJ1bGUgZm9yIEhQIExhc2VySmV0IDEwMTUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3MDY1OTMxMyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyI+IzU2MTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgcGFyc2VyIGlzc3VlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE0MDc0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIzIj4jNTYyMzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDMxNzA5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyNCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyNCI+IzU2MjQ8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBwYXJzZXIgbm8gbG9uZ2VyIGFsbG93cyBpbnZhbGlkIG1lbWJlciBhdHRyaWJ1dGVzIGluIGNvbGxlY3Rpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3Nzk3OTg4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCI+IzU2MzA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgSVBQIGJ1ZmZlciBvdmVyZmxvdyAocmRhcjovLzUwMDM1NDExKTwvbGk+Cis8bGk+Rml4ZWQgbWVtb3J5IGRpc2Nsb3N1cmUgaXNzdWUgaW4gdGhlIHNjaGVkdWxlciAocmRhcjovLzUxMzczODUzKTwvbGk+Cis8bGk+Rml4ZWQgRG9TIGlzc3VlcyBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM5MjkpPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIHdvdWxkIHJlc3RhcnQgY29udGludW91c2x5IHdoZW4gaWRsZSBhbmQgcHJpbnRlcnMgd2VyZSBub3Q8YnI+CitzaGFyZWQgKHJkYXI6Ly81MjU2MTE5OSk8L2xpPgorPGxpPkZpeGVkIGEgY29tbWFuZCBvcmRlcmluZyBpc3N1ZSBpbiB0aGUgWmVicmEgWlBMIGRyaXZlci48L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gPGNvZGU+cHBkT3BlbjwvY29kZT4uPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMi9jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuOTMgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjEyL2N1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjEyLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNyYzEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNyYzEiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM3JjMTwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC80ZDAzYzRjYTkwZDhjMWMwZDUzMDM0Mjc4NThlNTM3ZmQzYzQxNWU0IiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM3JjMSI+djIuM3JjMTwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zcmMxIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zcmMxIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zcmMxPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzRkMDNjNGNhOTBkOGMxYzBkNTMwMzQyNzg1OGU1MzdmZDNjNDE1ZTQiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDUtMjFUMTc6MDc6NTBaIiBjbGFzcz0ibm8td3JhcCI+TWF5IDIxLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zcmMxLi4ubWFzdGVyIj4KKyAgICAxMjIgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zcmMxIGlzIG5vdyBhdmFpbGFibGUgZm9yIGRvd25sb2FkLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZSBjYW5kaWRhdGUgZm9yIENVUFMgMi4zLjAgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+VGhlIDxjb2RlPmN1cHMtY29uZmlnPC9jb2RlPiBzY3JpcHQgbm8gbG9uZ2VyIGFkZHMgZXh0cmEgbGlicmFyaWVzIHdoZW4gbGlua2luZyBhZ2FpbnN0PGJyPgorc2hhcmVkIGxpYnJhcmllcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzAzNjU2MTU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MjYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MjYxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MjYxIj4jNTI2MTwvYT4pPC9saT4KKzxsaT5UaGUgc3VwcGxpZWQgZXhhbXBsZSBwcmludCBkb2N1bWVudHMgaGF2ZSBiZWVuIG9wdGltaXplZCBmb3Igc2l6ZTxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTM4MTA0MDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MjkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MjkiPiM1NTI5PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzY3RsPC9jb2RlPiBjb21tYW5kIG5vdyBwcmV2ZW50cyBzZXR0aW5nICJjdXBzLWZpbGVzLmNvbmYiIGRpcmVjdGl2ZXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEzODI5MjU0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIj4jNTUzMDwvYT4pPC9saT4KKzxsaT5UaGUgImZvcmJpZGRlbiIgbWVzc2FnZSBpbiB0aGUgd2ViIGludGVyZmFjZSBpcyBub3cgZXhwbGFpbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjQ1MzQzNDgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciPiM1NTQ3PC9hPik8L2xpPgorPGxpPlRoZSBmb290ZXIgaW4gdGhlIHdlYiBpbnRlcmZhY2UgY292ZXJlZCBzb21lIGNvbnRlbnQgb24gc21hbGwgZGlzcGxheXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQwMzY1ODAxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0Ij4jNTU3NDwvYT4pPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyBlbmZvcmNlcyByZWFkIGxpbWl0cywgaW1wcm92aW5nIHByaW50IHNwZWVkPGJyPgoraW4gbWFueSBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ1MzE1MDU1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIj4jNTU4MzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4gY29tbWFuZCBub3cgbG9va3MgZm9yIHByaW50IGNvbW1hbmRzIGluIHRoZSAiY29tbWFuZCI8YnI+CitzdWJkaXJlY3RvcnkuPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwdG9vbDwvY29kZT4gY29tbWFuZCBub3cgc3VwcG9ydHMgPGNvZGU+JGRhdGUtY3VycmVudDwvY29kZT4gYW5kIDxjb2RlPiRkYXRlLXN0YXJ0PC9jb2RlPiB2YXJpYWJsZXM8YnI+Cit0byBpbnNlcnQgdGhlIGN1cnJlbnQgYW5kIHN0YXJ0aW5nIGRhdGUgYW5kIHRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIElTTy04NjAxPGJyPgorcmVsYXRpdmUgdGltZSB2YWx1ZXMgc3VjaCBhcyAiUFQzMFMiIGZvciAzMCBzZWNvbmRzIGluIHRoZSBmdXR1cmUuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM3JjMS9jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjcuNTYgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zcmMxL2N1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM3JjMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zcmMxLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiOCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I4Ij4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+MDQ1MGRkZDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM2I4Ij52Mi4zYjg8L2E+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgPHNwYW4gY2xhc3M9ImQtbWQtbm9uZSBmbGV4LXNocmluay0wIG1sLTIgbXQtMiBtdC1tZC0wIExhYmVsIExhYmVsLS1vdXRsaW5lIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I4IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjgiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPjA0NTBkZGQ8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTA1LTAyVDE3OjEwOjE2WiIgY2xhc3M9Im5vLXdyYXAiPk1heSAyLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjguLi5tYXN0ZXIiPgorICAgIDE2NSBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiOCBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIGVpZ2h0aCBiZXRhIG9mIHRoZSBDVVBTIDIuMyBzZXJpZXMgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuICBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPk1lZGlhIHNpemUgbWF0Y2hpbmcgbm93IHVzZXMgYSB0b2xlcmFuY2Ugb2YgMC41bW0gKHJkYXI6Ly8zMzgyMjAyNCk8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgaGFuZyB3aXRoIGEgYmFkIFBQRCBmaWxlIChyZGFyOi8vNDE0OTUwMTYpPC9saT4KKzxsaT5GaXhlZCBhIHBvdGVudGlhbCBjcmFzaCBidWcgaW4gY3Vwcy1kcml2ZXJkIChyZGFyOi8vNDY2MjU1NzkpPC9saT4KKzxsaT5GaXhlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBsYXJnZSBQUERzIChyZGFyOi8vNDcwNDA3NTkpPC9saT4KKzxsaT5GaXhlZCBhIG1lbW9yeSByZWFsbG9jYXRpb24gYnVnIGluIEhUVFAgaGVhZGVyIHZhbHVlIGV4cGFuc2lvbjxicj4KKyhyZGFyOi8vcHJvYmxlbS81MDAwMDc0OSk8L2xpPgorPGxpPlRpbWVkIG91dCBqb2Igc3VibWlzc2lvbiBub3cgeWllbGRzIGFuIGVycm9yIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MzczOTA1NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiPiM1NTcwPC9hPik8L2xpPgorPGxpPlJlc3RvcmVkIG1pbmltYWwgc3VwcG9ydCBmb3IgdGhlIDxjb2RlPkVtdWxhdG9yczwvY29kZT4ga2V5d29yZCBpbiBQUEQgZmlsZXMgdG8gYWxsb3c8YnI+CitvbGQgU2Ftc3VuZyBwcmludGVyIGRyaXZlcnMgdG8gY29udGludWUgdG8gd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDMyMjE0NTY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIj4jNTU2MjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc0NoZWNrRGVzdFN1cHBvcnRlZDwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjaGVjayBvY3RldFN0cmluZyB2YWx1ZXM8YnI+Citjb3JyZWN0bHkgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyMDg2MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1NyI+IzU1NTc8L2E+KTwvbGk+Cis8bGk+QWRkZWQgc3VwcG9ydCBmb3IgPGNvZGU+VXNlckFnZW50VG9rZW5zPC9jb2RlPiBkaXJlY3RpdmUgaW4gImNsaWVudC5jb25mIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5MDYyMzk5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1Ij4jNTU1NTwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBzeXN0ZW1kIHNlcnZpY2UgZmlsZSBmb3IgY3Vwc2QgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyNjQ3OTA0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1MSI+IzU1NTE8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2Ugbm8gbG9uZ2VyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbG9nIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDg5MjM2NDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MTMiPiM1NTEzPC9hPik8L2xpPgorPGxpPk5vbi1LZXJiZXJpemVkIHByaW50aW5nIHRvIFdpbmRvd3MgdmlhIElQUCB3YXMgYnJva2VuIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDk3Nzk0MTQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiPiM1NTE1PC9hPik8L2xpPgorPGxpPkVsaW1pbmF0ZWQgdXNlIG9mIHByaXZhdGUgaGVhZGVycyBhbmQgc29tZSBkZXByZWNhdGVkIG1hY09TIEFQSXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMDI2MDEwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiI+IzU1MTY8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBhZHZlcnRpc2VzIHRoZSBIVFRQIG1ldGhvZHMgaXQgc3VwcG9ydHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxODAxNjkxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCI+IzU1NDA8L2E+KTwvbGk+Cis8bGk+TG9jYWxpemF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTkxMDExNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ2MSI+IzU0NjE8L2E+LCBJc3N1ZXMgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk2MTA5NDc1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDcxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDcxIj4jNTQ3MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5OTUxNTA3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ4MSI+IzU0ODE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE0Nzc1NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODYiPiM1NDg2PC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1NjAyNjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODkiPiM1NDg5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTgwNzU2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIj4jNTQ5MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTU4MzE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ5Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ5MiI+IzU0OTI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1ODcxMjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTMiPiM1NDkzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTkxODkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDk0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDk0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDk0Ij4jNTQ5NDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTk3NjE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSI+IzU0OTU8L2E+LDxicj4KK0lzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjUxNjMwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyI+IzU0OTc8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDI1NTIyMDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTkiPiM1NDk5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAyNTUyNjYxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTAwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTAwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTAwIj4jNTUwMDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjU1Mzc2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwMSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUwMSI+IzU1MDE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDMzOTYwMDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MDQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MDQiPiM1NTA0PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgZGlkIG5vdCBhbHdheXMgaWRsZSBleGl0IGFzIHF1aWNrbHkgYXMgaXQgY291bGQuPC9saT4KKzxsaT5BZGRlZCBhIG5ldyA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBjb21tYW5kIGJhc2VkIG9uIHRoZSBvbGQgaXBwc2VydmVyIHNhbXBsZSBjb2RlLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiOC9jdXBzLTIuM2I4LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljg5IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I4L2N1cHMtMi4zYjgtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiOC56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjgudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMSIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjExPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2U0YTBhYTg2Yzk2YjVkZGRhMzc3MGM0NjcwOWY0ZGVlOWE1OTA3MWYiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjExIj52Mi4yLjExPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTE8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZTRhMGFhODZjOTZiNWRkZGEzNzcwYzQ2NzA5ZjRkZWU5YTU5MDcxZiIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wMy0yMlQyMDowNzowMloiIGNsYXNzPSJuby13cmFwIj5NYXIgMjIsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTEuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTEgaXMgYSBidWcgZml4IHJlbGVhc2UgdGhhdCBhZGRyZXNzZXMgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIsPGJyPgorSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+UnVubmluZyBwcGRtZXJnZSB3aXRoIHRoZSBzYW1lIGlucHV0IGFuZCBvdXRwdXQgZmlsZW5hbWVzIGRpZCBub3Qgd29yayBhczxicj4KK2FkdmVydGlzZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTI4MzgwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSI+IzU0NTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Tm9uLUtlcmJlcml6ZWQgcHJpbnRpbmcgdG8gV2luZG93cyB2aWEgSVBQIHdhcyBicm9rZW4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwOTc3OTQxNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSI+IzU1MTU8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5NZWRpYSBzaXplIG1hdGNoaW5nIG5vdyB1c2VzIGEgdG9sZXJhbmNlIG9mIDAuNW1tIChyZGFyOi8vMzM4MjIwMjQpPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIHdvdWxkIGhhbmcgd2l0aCBhIGJhZCBQUEQgZmlsZSAocmRhcjovLzQxNDk1MDE2KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggYnVnIGluIGN1cHMtZHJpdmVyZCAocmRhcjovLzQ2NjI1NTc5KTwvbGk+Cis8bGk+Rml4ZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggbGFyZ2UgUFBEcyAocmRhcjovLzQ3MDQwNzU5KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGFsd2F5cyBpZGxlIGV4aXQgYXMgcXVpY2tseSBhcyBpdCBjb3VsZC48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjExL2N1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS45MiBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTEvY3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjExLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtcHJlcmVsZWFzZSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICA8L3NwYW4+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I3IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjciPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5iMWU3YWZkPC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zYjciPnYyLjNiNzwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjciIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNyI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YjFlN2FmZDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTgtMTItMTRUMTU6MjU6NDBaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDE0LCAyMDE4PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjcuLi5tYXN0ZXIiPgorICAgIDM1MCBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiNyBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCAicG9saXNoIiBpc3N1ZXMuPC9wPgorPHA+Q2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5GaXhlZCBzb21lIGJ1aWxkIGZhaWx1cmVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODg5MTcwMjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NTEiPiM1NDUxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzkxMTQzNTg0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDYzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDYzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDYzIj4jNTQ2MzwvYT4pPC9saT4KKzxsaT5SdW5uaW5nIHBwZG1lcmdlIHdpdGggdGhlIHNhbWUgaW5wdXQgYW5kIG91dHB1dCBmaWxlbmFtZXMgZGlkIG5vdCB3b3JrIGFzPGJyPgorYWR2ZXJ0aXNlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzg5MjgzODA2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1Ij4jNTQ1NTwvYT4pPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I3L2N1cHMtMi4zYjctc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuNzcgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zYjcvY3Vwcy0yLjNiNy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM2I3LnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1wcmVyZWxlYXNlIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJmbGV4LXNocmluay0wIExhYmVsIExhYmVsLS1vdXRsaW5lIG1iLW1kLTIgbXItMiBtci1tZC0wIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjYiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNiI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmMxM2UyZjQ8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjNiNiI+djIuM2I2PC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgICAgPC9zcGFuPgorCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiNiIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I2Ij4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5jMTNlMmY0PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1NToxNVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM2I2Li4ubWFzdGVyIj4KKyAgICAzNTggY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zYjYgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCDigJxwb2xpc2jigJ0gaXNzdWVzLiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTQ4NzQ0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzOSI+IzUzMzk8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzgzNzEwNzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDgiPiM1MzQ4PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ2MDMxMDM4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIj4jNTM2MjwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2Njc4NzIxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQwOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQwOCI+IzU0MDg8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjgwNDUwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MTAiPiM1NDEwPC9hPik8L2xpPgorPGxpPkRvY3VtZW50YXRpb24gdXBkYXRlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4MzUzMjgyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzY5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzY5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzY5Ij4jNTM2OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2MzQwNDQ4NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiI+IzU0MDI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjM0MDU3NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiPiM1NDAzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzY0NTUyNzcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0Ij4jNTQwNDwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOC00NzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPkFsbCB1c2VyIGNvbW1hbmRzIG5vdyBzdXBwb3J0IHRoZSA8Y29kZT4tLWhlbHA8L2NvZGU+IG9wdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMwNTQwOTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzI2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzI2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzI2Ij4jNTMyNjwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBjb21tYW5kIG5vdyB3b3JrcyB3aXRoIElQUCBFdmVyeXdoZXJlIHByaW50ZXJzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gYWRkZWQgYXMgbG9jYWwgcXVldWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIyNDA0NzYzNjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiPiM1MDQ1PC9hPik8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbm9uLXdvcmtpbmcgcHJpbnRlciBpbiBzb21lIGVycm9yIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMTg5NDY1OTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MzA1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiPiM1MzA1PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgY3Jhc2ggaWYgYW4gZW1wdHkgPGNvZGU+QWNjZXNzTG9nPC9jb2RlPiBkaXJlY3RpdmUgd2FzIHNwZWNpZmllZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzIwMjA1ODIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5Ij4jNTMwOTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgaWRsZS1leGl0IG9uIHNvbWUgTGludXggZGlzdHJpYnV0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI2NjgxNDgxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMxOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5Ij4jNTMxOTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGhlIGNoYW5nZXMgdG8gaXBwVmFsaWRhdGVBdHRyaWJ1dGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyOTg0OTIyOCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiI+IzUzMjI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzA3OTU5MTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzMzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzMzAiPiM1MzMwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSBFcHNvbiBkb3QgbWF0cml4IGRyaXZlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI5OTMzNzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIj4jNTMyMzwvYT4pPC9saT4KKzxsaT5BdXRvbWF0aWMgZGVidWcgbG9nZ2luZyBvZiBqb2IgZXJyb3JzIGRpZCBub3Qgd29yayB3aXRoIHN5c3RlbWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTI1MDUwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzNyI+IzUzMzc8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2UgZGlkIG5vdCBsaXN0IHRoZSBJUFAgRXZlcnl3aGVyZSAiZHJpdmVyIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMxMzEyNzEyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4Ij4jNTMzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgcmVwb3J0IGFsbCBvZiB0aGUgc3VwcG9ydGVkIGpvYiBvcHRpb25zIGFuZCB2YWx1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMzI3Njc4MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCI+IzUzNDA8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vdyBwcm9wZXJseSBzdXBwb3J0cyBmYWNlLXVwIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzcwODM0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDUiPiM1MzQ1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgdHlwb3MgaW4gdGhlIGxhYmVsIHByaW50ZXIgZHJpdmVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzM5MTg1NTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzUwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzUwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzUwIj4jNTM1MDwvYT4pPC9saT4KKzxsaT5TZXR0aW5nIHRoZSA8Y29kZT5Db21tdW5pdHk8L2NvZGU+IG5hbWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiA8Y29kZT5zbm1wLmNvbmY8L2NvZGU+IG5vdyBkaXNhYmxlcyBTTk1QIHN1cHBseSBsZXZlbCBtb25pdG9yaW5nIGJ5IGFsbCB0aGUgc3RhbmRhcmQgbmV0d29yayBiYWNrZW5kcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQwNjI0MDkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0Ij4jNTM1NDwvYT4pPC9saT4KKzxsaT5NdWx0aS1maWxlIGpvYnMgY291bGQgZ2V0IHN0dWNrIGlmIHRoZSBiYWNrZW5kIGZhaWxlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MDY5Nzg3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5Ij4jNTM1OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3MTA5Mjk1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQxMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQxMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQxMyI+IzU0MTM8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vIGxvbmdlciBkb2VzIGxvY2FsIGZpbHRlcmluZyB3aGVuIHByaW50aW5nIHRvIGEgc2hhcmVkIENVUFMgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MzcxMDY0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIj4jNTM2MTwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIG5vdyBjb3JyZWN0bHkgcmVwb3J0cyBJUFAgZXJyb3JzIHdoZW4gY29uZmlndXJpbmcgYW4gSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4NDU0NjY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIj4jNTM3MDwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIG1lbW9yeSBsZWFrcyBkaXNjb3ZlcmVkIGJ5IENvdmVyaXR5IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTA4MTcwNTYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNzUiPiM1Mzc1PC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY29tcGlsZXIgaW5jb3JyZWN0bHkgdGVybWluYXRlZCBKQ0wgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzUzOTIzNDUzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5Ij4jNTM3OTwvYT4pPC9saT4KKzxsaT5UaGUgY3Vwc3Rlc3RwcGQgdXRpbGl0eSBkaWQgbm90IGdlbmVyYXRlIGVycm9ycyBmb3IgbWlzc2luZy9taXNtYXRjaGVkIENsb3NlVUkvSkNMQ2xvc2VVSSBrZXl3b3JkcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU0MzY2MDE4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIj4jNTM4MTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vdyByZXBvcnRzIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgdGhlIGxvZyBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjA4MzAzNjIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzOTgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzOTgiPiM1Mzk4PC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlyayBydWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3NDc4OTMxMiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MjAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCI+IzU0MjA8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODMzNTMxNDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiPiM1NDQzPC9hPik8L2xpPgorPGxpPlRoZSBnZW5lcmF0ZWQgUFBEIGZpbGVzIGZvciBJUFAgRXZlcnl3aGVyZSBwcmludGVycyBkaWQgbm90IGNvbnRhaW4gdGhlIGN1cHNNYW51YWxDb3BpZXMga2V5d29yZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzc5MTY4NzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIj4jNTQzMzwvYT4pPC9saT4KKzxsaT5LZXJiZXJvcyBjcmVkZW50aWFscyBtaWdodCBiZSB0cnVuY2F0ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTk5MjU3MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQzNSI+IzU0MzU8L2E+KTwvbGk+Cis8bGk+VGhlIGhhbmRsaW5nIG9mIDxjb2RlPk1heEpvYlRpbWUgMDwvY29kZT4gZGlkIG5vdCBtYXRjaCB0aGUgZG9jdW1lbnRhdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgxMjQ3ODYzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4Ij4jNTQzODwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBhZGRpbmcgYSBxdWV1ZSB3aXRoIHRoZSA8Y29kZT4tRTwvY29kZT4gb3B0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE5NDIwNjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiPiM1NDQwPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzYWRkc21iPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwMjE0NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSI+IzU0NDk8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHN0ZXN0ZHNjPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwNzUxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCI+IzU0NTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciB3YXMgYmVpbmcgYmFja2dyb3VuZGVkIG9uIG1hY09TLCBjYXVzaW5nIGFwcGxpY2F0aW9ucyB0byBzcGluIChyZGFyOi8vNDA0MzYwODApPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgdmFsaWRhdGUgdGhhdCByZXF1aXJlZCBpbml0aWFsIHJlcXVlc3QgYXR0cmlidXRlcyB3ZXJlIGluIHRoZSBvcGVyYXRpb24gZ3JvdXAgKHJkYXI6Ly80MTA5ODE3OCk8L2xpPgorPGxpPkF1dGhlbnRpY2F0aW9uIGluIHRoZSB3ZWIgaW50ZXJmYWNlIGRpZCBub3Qgd29yayBvbiBtYWNPUyAocmRhcjovLzQxNDQ0NDczKTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCBIVFRQIERpZ2VzdCBhdXRoZW50aWNhdGlvbiAocmRhcjovLzQxNzA5MDg2KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBjb3VsZCBjcmFzaCB3aGVuIGpvYiBoaXN0b3J5IHdhcyBwdXJnZWQgKHJkYXI6Ly80MjE5ODA1Nyk8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIHdoZW4gbWFwcGluZyBQUEQgZHVwbGV4IG9wdGlvbnMgdG8gSVBQIGF0dHJpYnV0ZXMgKHJkYXI6Ly80NjE4Mzk3Nik8L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgZm9yIHNvbWUgSVBQIChleHRlbnNpb24pIHN5bnRheGVzLjwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHNjZ2k8L2NvZGU+LCA8Y29kZT5jdXBzbWltZTwvY29kZT4sIGFuZCA8Y29kZT5jdXBzcHBkYzwvY29kZT4gc3VwcG9ydCBsaWJyYXJpZXMgYXJlIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgc2hhcmVkIGxpYnJhcmllcy48L2xpPgorPGxpPlRoZSA8Y29kZT5zbm1wPC9jb2RlPiBiYWNrZW5kIGlzIG5vdyBkZXByZWNhdGVkLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiNi9jdXBzLTIuM2I2LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljc3IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I2L2N1cHMtMi4zYjYtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjYudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEwPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzI1YjIzMzgzNDZlZjNhYmJiOTNlYTg4NDc2ODg3Y2JhN2IyYjg2ZjgiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEwIj52Mi4yLjEwPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMjViMjMzODM0NmVmM2FiYmI5M2VhODg0NzY4ODdjYmE3YjJiODZmOCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1Nzo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuMi4xMC4uLm1hc3RlciI+CisgICAgNzkzIGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMi4xMCBpcyBhIGJ1ZyBmaXggcmVsZWFzZSB0aGF0IGFkZHJlc3NlcyBpc3N1ZXMgaW4gdGhlIHNjaGVkdWxlciwgSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5DVkUtMjAxOC00MzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPlRoZSA8Y29kZT5scG9wdGlvbnM8L2NvZGU+IGNvbW1hbmQgbm93IHdvcmtzIHdpdGggSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBhZGRlZCBhcyBsb2NhbCBxdWV1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjI0MDQ3NjM2MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSI+IzUwNDU8L2E+KTwvbGk+Cis8bGk+QWRkZWQgVVNCIHF1aXJrIHJ1bGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgzMzUzMTQzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIj4jNTQ0MzwvYT4pPC9saT4KKzxsaT5UaGUgZ2VuZXJhdGVkIFBQRCBmaWxlcyBmb3IgSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgZGlkIG5vdCBjb250YWluIHRoZSBjdXBzTWFudWFsQ29waWVzIGtleXdvcmQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTE2ODcwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyI+IzU0MzM8L2E+KTwvbGk+Cis8bGk+S2VyYmVyb3MgY3JlZGVudGlhbHMgbWlnaHQgYmUgdHJ1bmNhdGVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzk5OTI1NzIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MzUiPiM1NDM1PC9hPik8L2xpPgorPGxpPlRoZSBoYW5kbGluZyBvZiA8Y29kZT5NYXhKb2JUaW1lIDA8L2NvZGU+IGRpZCBub3QgbWF0Y2ggdGhlIGRvY3VtZW50YXRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTI0Nzg2MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCI+IzU0Mzg8L2E+KTwvbGk+Cis8bGk+SW5jb3Jwb3JhdGVkIHRoZSBwYWdlIGFjY291bnRpbmcgY2hhbmdlcyBmcm9tIENVUFMgMi4zIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE1MzE1NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDM5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiPiM1NDM5PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGFkZGluZyBhIHF1ZXVlIHdpdGggdGhlIDxjb2RlPi1FPC9jb2RlPiBvcHRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTk0MjA2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCI+IzU0NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBjcmFzaCBidWcgd2hlbiBtYXBwaW5nIFBQRCBkdXBsZXggb3B0aW9ucyB0byBJUFAgYXR0cmlidXRlcyAocmRhcjovLzQ2MTgzOTc2KTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTAvY3Vwcy0yLjIuMTAtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkyIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMC9jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMC50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworICA8L2Rpdj4KKworICA8ZGl2IGRhdGEtcGpheCBjbGFzcz0icGFnaW5hdGUtY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJwYWdpbmF0aW9uIj48c3BhbiBjbGFzcz0iZGlzYWJsZWQiPlByZXZpb3VzPC9zcGFuPjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzP2FmdGVyPXYyLjIuMTAiPk5leHQ8L2E+PC9kaXY+CisgIDwvZGl2PgorCisKKyAgPC9kaXY+Cis8L2Rpdj4KKworICAgIDwvbWFpbj4KKyAgPC9kaXY+CisgIAorCisgIDwvZGl2PgorCisgICAgICAgIAorPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyB3aWR0aC1mdWxsIHAtcmVzcG9uc2l2ZSIgcm9sZT0iY29udGVudGluZm8iPgorICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBmbGV4LWxnLXJvdyBmbGV4LXdyYXAgZmxleC1sZy1ub3dyYXAgZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWxnLWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgorICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj4mY29weTsgMjAxOSBHaXRIdWIsIEluYy48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0ZXJtcywgdGV4dDp0ZXJtcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvdGVybXMiPlRlcm1zPC9hPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHByaXZhY3ksIHRleHQ6cHJpdmFjeSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvcHJpdmFjeSI+UHJpdmFjeTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlY3VyaXR5Ij5TZWN1cml0eTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWJzdGF0dXMuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gaGVscCwgdGV4dDpoZWxwIiBocmVmPSJodHRwczovL2hlbHAuZ2l0aHViLmNvbSI+SGVscDwvYT48L2xpPgorICAgIDwvdWw+CisKKyAgICA8YSBhcmlhLWxhYmVsPSJIb21lcGFnZSIgdGl0bGU9IkdpdEh1YiIgY2xhc3M9ImZvb3Rlci1vY3RpY29uIGQtbm9uZSBkLWxnLWJsb2NrIG14LWxnLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbSI+CisgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAwMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KKzwvYT4KKyAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgorICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuYmxvZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBibG9nLCB0ZXh0OmJsb2ciPkJsb2c8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KKworICAgIDwvdWw+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KKyAgICA8c3BhbiBjbGFzcz0iZjYgdGV4dC1ncmF5LWxpZ2h0Ij48L3NwYW4+CisgIDwvZGl2PgorPC9kaXY+CisKKworCisgIDxkaXYgaWQ9ImFqYXgtZXJyb3ItbWVzc2FnZSIgY2xhc3M9ImFqYXgtZXJyb3ItbWVzc2FnZSBmbGFzaCBmbGFzaC1lcnJvciI+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgorICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgPC9idXR0b24+CisgICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCisgIDwvZGl2PgorCisKKyAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLW1kckJhc1lHK1FqZ1MzOTFQU3lWa1ByMDZpbzNnV3BsQ1ZiUHNjZ3VldE5FSHhJRXQrbVp3Q2VDeFBSOWVNTmZkYTZxTnVpYk5GcUJvNWFrMitPL2hnPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvY29tcGF0LWJvb3RzdHJhcC05OWRhYzE2YS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBpbnRlZ3JpdHk9InNoYTUxMi1ReGNJWjVwYTRqOFA1ZUw2RkxRYVUvRkFJZm9kV2t6VjJyZis3T2x5aWlpSU05WmFHM01PRHZnUW1lK0xWRFVQTUJkbWpZWVorc3ZTbEZ1NXlqRmhSdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtNDMxNzA4NjcuanMiPjwvc2NyaXB0PgorICAgIAorICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1wV2IrWEVSWjhCNzRwclc4eVBOZU9NZkZFZk1mbzhEdmJPNGtEQS9EelBrMTB1R2lWWVBDQjUxc1JSd2lzZ0tyUHlmWHRDK0lnYzVrOUJmVXBlcG10UT09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2dpdGh1Yi1ib290c3RyYXAtYTU2NmZlNWMuanMiPjwvc2NyaXB0PgorICAgIAorICAgIAorICAgIAorICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIGZsYXNoIGZsYXNoLXdhcm4gZmxhc2gtYmFubmVyIiBoaWRkZW4KKyAgICA+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPHNwYW4gY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2gtc2lnbmVkLWluIiBoaWRkZW4+WW91IHNpZ25lZCBpbiB3aXRoIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ianMtc3RhbGUtc2Vzc2lvbi1mbGFzaC1zaWduZWQtb3V0IiBoaWRkZW4+WW91IHNpZ25lZCBvdXQgaW4gYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgorICA8L2Rpdj4KKyAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KKyAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsgaHhfcnNtIiBvcGVuPgorICAgIDxzdW1tYXJ5IHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CisgICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCBoeF9yc20tZGlhbG9nIGh4X3JzbS1tb2RhbCI+CisgICAgICA8YnV0dG9uIGNsYXNzPSJCb3gtYnRuLW9jdGljb24gbS0wIGJ0bi1vY3RpY29uIHBvc2l0aW9uLWFic29sdXRlIHJpZ2h0LTAgdG9wLTAiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIiBkYXRhLWNsb3NlLWRpYWxvZz4KKyAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICA8L2J1dHRvbj4KKyAgICAgIDxkaXYgY2xhc3M9Im9jdG9jYXQtc3Bpbm5lciBteS02IGpzLWRldGFpbHMtZGlhbG9nLXNwaW5uZXIiPjwvZGl2PgorICAgIDwvZGV0YWlscy1kaWFsb2c+CisgIDwvZGV0YWlscz4KKzwvdGVtcGxhdGU+CisKKyAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CisgIDxkaXYgY2xhc3M9IlBvcG92ZXItbWVzc2FnZSBQb3BvdmVyLW1lc3NhZ2UtLWJvdHRvbS1sZWZ0IFBvcG92ZXItbWVzc2FnZS0tbGFyZ2UgQm94IGJveC1zaGFkb3ctbGFyZ2UiIHN0eWxlPSJ3aWR0aDozNjBweDsiPgorICA8L2Rpdj4KKzwvZGl2PgorCisgIDxkaXYgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJqcy1nbG9iYWwtc2NyZWVuLXJlYWRlci1ub3RpY2Ugc3Itb25seSI+PC9kaXY+CisKKyAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWE2ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDUwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjQiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZGViaWFuL3Bvb2wvbWFpbi9kLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViIj5kYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLWRvY181LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC05K2RlYjh1MV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kZWJpYW4udGFyLnh6Ij5kYjUuM181LjMuMjgrZGZzZzEtMC41LmRlYmlhbi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC41LmRzYyI+ZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC42LmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZGViaWFuLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZHNjIj5kYjUuM181LjMuMjgrZGZzZzEtMC42LmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4xSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS5vcmlnLnRhci54eiI+ZGI1LjNfNS4zLjI4K2Rmc2cxLm9yaWcudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAwMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOC05K2RlYjh1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYyI+ZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4ySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZGViaWFuLnRhci54eiI+ZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kc2MiPmRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZHNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4Lm9yaWcudGFyLnh6Ij5kYjUuM181LjMuMjgub3JpZy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTI3IDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzczSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzI1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzExSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDUwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC41X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC42X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNl9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+bGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4LTEyK2RlYjl1MV9hbGwuZGViIj5saWJkYjUuMy1qYXZhXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkxMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODA4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzEySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODI2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTUySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTE1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU2MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTcySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE1SzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNCI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUgU2VydmVyIGF0IGZ0cC5kZWJpYW4ub3JnIFBvcnQgODA8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmZiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L2gxPgorPHRhYmxlPjx0cj48dGg+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2Rvd25sb2Fkcy9lbmNoYW50LyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJNRDVTVU0iPk1ENVNVTTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjAxLUFwci0yMDEwIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJlbmNoYW50LTEuNi4wLnRhci5neiI+ZW5jaGFudC0xLjYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wMS1BcHItMjAxMCAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzxhZGRyZXNzPkFwYWNoZS8yLjIuMTUgKEZlZG9yYSkgU2VydmVyIGF0IHd3dy5hYmlzb3VyY2UuY29tIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92Mi44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhMDc3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNzc0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92Mi44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YyLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iLSoiPi0qPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0wNyAxMjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjAiPkNNYWtlQ2hhbmdlTG9nLTIuOC4wPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0xNyAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjIiPkNNYWtlQ2hhbmdlTG9nLTIuOC4yPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjMiPkNNYWtlQ2hhbmdlTG9nLTIuOC4zPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjQiPkNNYWtlQ2hhbmdlTG9nLTIuOC40PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNiAwOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjUiPkNNYWtlQ2hhbmdlTG9nLTIuOC41PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjYiPkNNYWtlQ2hhbmdlTG9nLTIuOC42PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMDBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjciPkNNYWtlQ2hhbmdlTG9nLTIuOC43PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMTVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjgiPkNNYWtlQ2hhbmdlTG9nLTIuOC44PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNDRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjkiPkNNYWtlQ2hhbmdlTG9nLTIuOC45PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEwIj5DTWFrZUNoYW5nZUxvZy0yLjguMTA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4NUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMSI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTYgMDk6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xMSAwODo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEyLjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMi4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wOCAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDhLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VWUzEwRmluZE1ha2UuY21ha2UiPkNNYWtlVlMxMEZpbmRNYWtlLmNtYWtlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0yNyAwOTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA4IDEwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMC1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4wLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuWiI+Y21ha2UtMi44LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuZ3oiPmNtYWtlLTIuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLnppcCI+Y21ha2UtMi44LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMS1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4xLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuWiI+Y21ha2UtMi44LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuZ3oiPmNtYWtlLTIuOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLnppcCI+Y21ha2UtMi44LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMi1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4yLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuWiI+Y21ha2UtMi44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuZ3oiPmNtYWtlLTIuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLnppcCI+Y21ha2UtMi44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMy1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLloiPmNtYWtlLTIuOC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLmd6Ij5jbWFrZS0yLjguMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy56aXAiPmNtYWtlLTIuOC4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnNoIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5aIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5neiI+Y21ha2UtMi44LjQtU3VuT1Mtc3BhcmMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5aIj5jbWFrZS0yLjguNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5neiI+Y21ha2UtMi44LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQuemlwIj5jbWFrZS0yLjguNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtMS50YXIuYnoyIj5jbWFrZS0yLjguNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC41LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjUtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC41LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC41LVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjUtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuWiI+Y21ha2UtMi44LjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuZ3oiPmNtYWtlLTIuOC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LnppcCI+Y21ha2UtMi44LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LTEudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC42LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuWiI+Y21ha2UtMi44LjYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuZ3oiPmNtYWtlLTIuOC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LnppcCI+Y21ha2UtMi44LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjctMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LTEudGFyLmJ6MiI+Y21ha2UtMi44LjctMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTAzIDE2OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC43LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjctSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljctd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44Ljctd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuWiI+Y21ha2UtMi44LjcudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuZ3oiPmNtYWtlLTIuOC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LnppcCI+Y21ha2UtMi44LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguOC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC44LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguOC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjgtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguOC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljgtd2luMzIteDg2LnppcCI+Y21ha2UtMi44Ljgtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5aIj5jbWFrZS0yLjguOC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5neiI+Y21ha2UtMi44LjgudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjguemlwIj5jbWFrZS0yLjguOC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC45LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjktRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguOS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC45LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC45LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguOS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguOS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLloiPmNtYWtlLTIuOC45LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLmd6Ij5jbWFrZS0yLjguOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS56aXAiPmNtYWtlLTIuOC45LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnppcCI+Y21ha2UtMi44LjEwLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnppcCI+Y21ha2UtMi44LjEwLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnppcCI+Y21ha2UtMi44LjEwLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuWiI+Y21ha2UtMi44LjEwLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLnppcCI+Y21ha2UtMi44LjEwLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5aIj5jbWFrZS0yLjguMTAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5neiI+Y21ha2UtMi44LjEwLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjIuemlwIj5jbWFrZS0yLjguMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAudGFyLloiPmNtYWtlLTIuOC4xMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC50YXIuZ3oiPmNtYWtlLTIuOC4xMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuemlwIj5jbWFrZS0yLjguMTAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS50YXIuWiI+Y21ha2UtMi44LjExLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEuemlwIj5jbWFrZS0yLjguMTEtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIuemlwIj5jbWFrZS0yLjguMTEtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy50YXIuWiI+Y21ha2UtMi44LjExLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMuemlwIj5jbWFrZS0yLjguMTEtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQuemlwIj5jbWFrZS0yLjguMTEtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5aIj5jbWFrZS0yLjguMTEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5neiI+Y21ha2UtMi44LjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEuemlwIj5jbWFrZS0yLjguMTEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLloiPmNtYWtlLTIuOC4xMS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi56aXAiPmNtYWtlLTIuOC4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS50YXIuWiI+Y21ha2UtMi44LjExLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLnRhci5neiI+Y21ha2UtMi44LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS56aXAiPmNtYWtlLTIuOC4xMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS56aXAiPmNtYWtlLTIuOC4xMi1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi56aXAiPmNtYWtlLTIuOC4xMi1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS43SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnppcCI+Y21ha2UtMi44LjEyLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnppcCI+Y21ha2UtMi44LjEyLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuWiI+Y21ha2UtMi44LjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLnppcCI+Y21ha2UtMi44LjEyLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5aIj5jbWFrZS0yLjguMTIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5neiI+Y21ha2UtMi44LjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjIuemlwIj5jbWFrZS0yLjguMTIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIudGFyLloiPmNtYWtlLTIuOC4xMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuemlwIj5jbWFrZS0yLjguMTIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODNkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbApAQCAtMCwwICsxLDIwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4wPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC0xLnRhci5iejIiPmNtYWtlLTMuMC4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEudGFyLloiPmNtYWtlLTMuMC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEuemlwIj5jbWFrZS0zLjAuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi56aXAiPmNtYWtlLTMuMC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy56aXAiPmNtYWtlLTMuMC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM0LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnppcCI+Y21ha2UtMy4wLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzUtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzUtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUudGFyLloiPmNtYWtlLTMuMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUuemlwIj5jbWFrZS0zLjAuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi50YXIuWiI+Y21ha2UtMy4wLjAtcmM2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi56aXAiPmNtYWtlLTMuMC4wLXJjNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLloiPmNtYWtlLTMuMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLmd6Ij5jbWFrZS0zLjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC56aXAiPmNtYWtlLTMuMC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS0xLnRhci5iejIiPmNtYWtlLTMuMC4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuWiI+Y21ha2UtMy4wLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuZ3oiPmNtYWtlLTMuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLnppcCI+Y21ha2UtMy4wLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5aIj5jbWFrZS0zLjAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5neiI+Y21ha2UtMy4wLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjIuemlwIj5jbWFrZS0zLjAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM1ZDM0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTU2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5aIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5neiI+Y21ha2UtMy4xLjAtRGFyd2luNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS56aXAiPmNtYWtlLTMuMS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMyLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnRhci5aIj5jbWFrZS0zLjEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnppcCI+Y21ha2UtMy4xLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy56aXAiPmNtYWtlLTMuMS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLloiPmNtYWtlLTMuMS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLmd6Ij5jbWFrZS0zLjEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC56aXAiPmNtYWtlLTMuMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS0xLnRhci5iejIiPmNtYWtlLTMuMS4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5aIj5jbWFrZS0zLjEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5neiI+Y21ha2UtMy4xLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEuemlwIj5jbWFrZS0zLjEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuWiI+Y21ha2UtMy4xLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuZ3oiPmNtYWtlLTMuMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLnppcCI+Y21ha2UtMy4xLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLloiPmNtYWtlLTMuMS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLmd6Ij5jbWFrZS0zLjEuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy56aXAiPmNtYWtlLTMuMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNjU0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEwL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEudGFyLloiPmNtYWtlLTMuMTAuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnppcCI+Y21ha2UtMy4xMC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIuemlwIj5jbWFrZS0zLjEwLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEwLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy56aXAiPmNtYWtlLTMuMTAuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQudGFyLloiPmNtYWtlLTMuMTAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnppcCI+Y21ha2UtMy4xMC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmM1LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmM1LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS50YXIuWiI+Y21ha2UtMy4xMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmM1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUuemlwIj5jbWFrZS0zLjEwLjAtcmM1LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC50YXIuWiI+Y21ha2UtMy4xMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLnRhci5neiI+Y21ha2UtMy4xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC56aXAiPmNtYWtlLTMuMTAuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS50YXIuWiI+Y21ha2UtMy4xMC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLnRhci5neiI+Y21ha2UtMy4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS56aXAiPmNtYWtlLTMuMTAuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi50YXIuWiI+Y21ha2UtMy4xMC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLnRhci5neiI+Y21ha2UtMy4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi56aXAiPmNtYWtlLTMuMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy50YXIuWiI+Y21ha2UtMy4xMC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLnRhci5neiI+Y21ha2UtMy4xMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy56aXAiPmNtYWtlLTMuMTAuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjlkNzQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMTwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLnRhci5aIj5jbWFrZS0zLjExLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS56aXAiPmNtYWtlLTMuMTEuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzIudGFyLloiPmNtYWtlLTMuMTEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnppcCI+Y21ha2UtMy4xMS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMS4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMuemlwIj5jbWFrZS0zLjExLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LnRhci5aIj5jbWFrZS0zLjExLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC56aXAiPmNtYWtlLTMuMTEuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnRhci5aIj5jbWFrZS0zLjExLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAudGFyLmd6Ij5jbWFrZS0zLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnppcCI+Y21ha2UtMy4xMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnRhci5aIj5jbWFrZS0zLjExLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEudGFyLmd6Ij5jbWFrZS0zLjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnppcCI+Y21ha2UtMy4xMS4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnRhci5aIj5jbWFrZS0zLjExLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjIudGFyLmd6Ij5jbWFrZS0zLjExLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnppcCI+Y21ha2UtMy4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnRhci5aIj5jbWFrZS0zLjExLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMudGFyLmd6Ij5jbWFrZS0zLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnppcCI+Y21ha2UtMy4xMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnRhci5aIj5jbWFrZS0zLjExLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQudGFyLmd6Ij5jbWFrZS0zLjExLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnppcCI+Y21ha2UtMy4xMS40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NzdlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEyL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEudGFyLloiPmNtYWtlLTMuMTIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnppcCI+Y21ha2UtMy4xMi4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMi4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIuemlwIj5jbWFrZS0zLjEyLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTIuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTIuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEyLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy56aXAiPmNtYWtlLTMuMTIuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnRhci5aIj5jbWFrZS0zLjEyLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAudGFyLmd6Ij5jbWFrZS0zLjEyLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnppcCI+Y21ha2UtMy4xMi4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnRhci5aIj5jbWFrZS0zLjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEudGFyLmd6Ij5jbWFrZS0zLjEyLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnppcCI+Y21ha2UtMy4xMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnRhci5aIj5jbWFrZS0zLjEyLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjIudGFyLmd6Ij5jbWFrZS0zLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnppcCI+Y21ha2UtMy4xMi4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnRhci5aIj5jbWFrZS0zLjEyLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMudGFyLmd6Ij5jbWFrZS0zLjEyLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnppcCI+Y21ha2UtMy4xMi4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnRhci5aIj5jbWFrZS0zLjEyLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnppcCI+Y21ha2UtMy4xMi40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MGE3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEzL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEudGFyLloiPmNtYWtlLTMuMTMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnppcCI+Y21ha2UtMy4xMy4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMy4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIuemlwIj5jbWFrZS0zLjEzLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTMuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEzLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy56aXAiPmNtYWtlLTMuMTMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnRhci5aIj5jbWFrZS0zLjEzLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAudGFyLmd6Ij5jbWFrZS0zLjEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnppcCI+Y21ha2UtMy4xMy4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnRhci5aIj5jbWFrZS0zLjEzLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEudGFyLmd6Ij5jbWFrZS0zLjEzLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnppcCI+Y21ha2UtMy4xMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnRhci5aIj5jbWFrZS0zLjEzLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjIudGFyLmd6Ij5jbWFrZS0zLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnppcCI+Y21ha2UtMy4xMy4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnRhci5aIj5jbWFrZS0zLjEzLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMudGFyLmd6Ij5jbWFrZS0zLjEzLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnppcCI+Y21ha2UtMy4xMy4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnRhci5aIj5jbWFrZS0zLjEzLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnppcCI+Y21ha2UtMy4xMy40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnRhci5aIj5jbWFrZS0zLjEzLjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUudGFyLmd6Ij5jbWFrZS0zLjEzLjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnppcCI+Y21ha2UtMy4xMy41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzljMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEudGFyLloiPmNtYWtlLTMuMTQuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnppcCI+Y21ha2UtMy4xNC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE0LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xNC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIuemlwIj5jbWFrZS0zLjE0LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLnRhci5aIj5jbWFrZS0zLjE0LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy56aXAiPmNtYWtlLTMuMTQuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQudGFyLloiPmNtYWtlLTMuMTQuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnppcCI+Y21ha2UtMy4xNC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAudGFyLloiPmNtYWtlLTMuMTQuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC50YXIuZ3oiPmNtYWtlLTMuMTQuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAuemlwIj5jbWFrZS0zLjE0LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEudGFyLloiPmNtYWtlLTMuMTQuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS50YXIuZ3oiPmNtYWtlLTMuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEuemlwIj5jbWFrZS0zLjE0LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIudGFyLloiPmNtYWtlLTMuMTQuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi50YXIuZ3oiPmNtYWtlLTMuMTQuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIuemlwIj5jbWFrZS0zLjE0LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMudGFyLloiPmNtYWtlLTMuMTQuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy50YXIuZ3oiPmNtYWtlLTMuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMuemlwIj5jbWFrZS0zLjE0LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQudGFyLloiPmNtYWtlLTMuMTQuNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC50YXIuZ3oiPmNtYWtlLTMuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQuemlwIj5jbWFrZS0zLjE0LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC41LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUudGFyLloiPmNtYWtlLTMuMTQuNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS50YXIuZ3oiPmNtYWtlLTMuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUuemlwIj5jbWFrZS0zLjE0LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC42LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYudGFyLloiPmNtYWtlLTMuMTQuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi50YXIuZ3oiPmNtYWtlLTMuMTQuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYuemlwIj5jbWFrZS0zLjE0LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC43LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcudGFyLloiPmNtYWtlLTMuMTQuNy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy50YXIuZ3oiPmNtYWtlLTMuMTQuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcuemlwIj5jbWFrZS0zLjE0LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3MjY3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTUvaW5kZXguaHRtbApAQCAtMCwwICsxLDE1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xNS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEuemlwIj5jbWFrZS0zLjE1LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLnRhci5aIj5jbWFrZS0zLjE1LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi56aXAiPmNtYWtlLTMuMTUuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTUuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMudGFyLloiPmNtYWtlLTMuMTUuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnppcCI+Y21ha2UtMy4xNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC50YXIuWiI+Y21ha2UtMy4xNS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQuemlwIj5jbWFrZS0zLjE1LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC50YXIuWiI+Y21ha2UtMy4xNS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLnRhci5neiI+Y21ha2UtMy4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC56aXAiPmNtYWtlLTMuMTUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS50YXIuWiI+Y21ha2UtMy4xNS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLnRhci5neiI+Y21ha2UtMy4xNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS56aXAiPmNtYWtlLTMuMTUuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi50YXIuWiI+Y21ha2UtMy4xNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLnRhci5neiI+Y21ha2UtMy4xNS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi56aXAiPmNtYWtlLTMuMTUuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy50YXIuWiI+Y21ha2UtMy4xNS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLnRhci5neiI+Y21ha2UtMy4xNS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy56aXAiPmNtYWtlLTMuMTUuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC50YXIuWiI+Y21ha2UtMy4xNS40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LnRhci5neiI+Y21ha2UtMy4xNS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC56aXAiPmNtYWtlLTMuMTUuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS50YXIuWiI+Y21ha2UtMy4xNS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LnRhci5neiI+Y21ha2UtMy4xNS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS56aXAiPmNtYWtlLTMuMTUuNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS42LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi50YXIuWiI+Y21ha2UtMy4xNS42LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LnRhci5neiI+Y21ha2UtMy4xNS42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi56aXAiPmNtYWtlLTMuMTUuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGY5YjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzMiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEuemlwIj5jbWFrZS0zLjE2LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnppcCI+Y21ha2UtMy4xNi4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy56aXAiPmNtYWtlLTMuMTYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQuemlwIj5jbWFrZS0zLjE2LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC50YXIuZ3oiPmNtYWtlLTMuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAuemlwIj5jbWFrZS0zLjE2LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTMyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEudGFyLmd6Ij5jbWFrZS0zLjE2LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLnppcCI+Y21ha2UtMy4xNi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGM2YzdmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjI8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtMS50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnRhci5aIj5jbWFrZS0zLjIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnppcCI+Y21ha2UtMy4yLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnRhci5aIj5jbWFrZS0zLjIuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnppcCI+Y21ha2UtMy4yLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuWiI+Y21ha2UtMy4yLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuZ3oiPmNtYWtlLTMuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLnppcCI+Y21ha2UtMy4yLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLTEudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjIuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLloiPmNtYWtlLTMuMi4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLmd6Ij5jbWFrZS0zLjIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS56aXAiPmNtYWtlLTMuMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4yLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5aIj5jbWFrZS0zLjIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5neiI+Y21ha2UtMy4yLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjIuemlwIj5jbWFrZS0zLjIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuWiI+Y21ha2UtMy4yLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuZ3oiPmNtYWtlLTMuMi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLnppcCI+Y21ha2UtMy4yLjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTM3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMzwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4zPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC0xLnRhci5iejIiPmNtYWtlLTMuMy4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEucGF0Y2giPmNtYWtlLTMuMy4wLXJjMS0xLnBhdGNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEuc2giPmNtYWtlLTMuMy4wLXJjMS0xLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnRhci5aIj5jbWFrZS0zLjMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnppcCI+Y21ha2UtMy4zLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi56aXAiPmNtYWtlLTMuMy4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMudGFyLloiPmNtYWtlLTMuMy4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMuemlwIj5jbWFrZS0zLjMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjNC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnppcCI+Y21ha2UtMy4zLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuWiI+Y21ha2UtMy4zLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuZ3oiPmNtYWtlLTMuMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLnppcCI+Y21ha2UtMy4zLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLloiPmNtYWtlLTMuMy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLmd6Ij5jbWFrZS0zLjMuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS56aXAiPmNtYWtlLTMuMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi0xLnRhci5iejIiPmNtYWtlLTMuMy4yLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5aIj5jbWFrZS0zLjMuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5neiI+Y21ha2UtMy4zLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjIuemlwIj5jbWFrZS0zLjMuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My40L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiNTZkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My40PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjQ8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEudGFyLloiPmNtYWtlLTMuNC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEuemlwIj5jbWFrZS0zLjQuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi50YXIuWiI+Y21ha2UtMy40LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLnRhci5neiI+Y21ha2UtMy40LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi56aXAiPmNtYWtlLTMuNC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnRhci5aIj5jbWFrZS0zLjQuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnppcCI+Y21ha2UtMy40LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuWiI+Y21ha2UtMy40LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuZ3oiPmNtYWtlLTMuNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLnppcCI+Y21ha2UtMy40LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuWiI+Y21ha2UtMy40LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuZ3oiPmNtYWtlLTMuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLnppcCI+Y21ha2UtMy40LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuWiI+Y21ha2UtMy40LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuZ3oiPmNtYWtlLTMuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLnppcCI+Y21ha2UtMy40LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuWiI+Y21ha2UtMy40LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuZ3oiPmNtYWtlLTMuNC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLnppcCI+Y21ha2UtMy40LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9mb2xkZXIuZ2lmIiBhbHQ9IltESVJdIj48L3RkPjx0ZD48YSBocmVmPSJjeWd3aW4vIj5jeWd3aW4vPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZDRmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbApAQCAtMCwwICsxLDExMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuNTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My41PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMyAxMzoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS50YXIuWiI+Y21ha2UtMy41LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLnRhci5neiI+Y21ha2UtMy41LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS56aXAiPmNtYWtlLTMuNS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi50YXIuWiI+Y21ha2UtMy41LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLnRhci5neiI+Y21ha2UtMy41LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi56aXAiPmNtYWtlLTMuNS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy50YXIuWiI+Y21ha2UtMy41LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLnRhci5neiI+Y21ha2UtMy41LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy56aXAiPmNtYWtlLTMuNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5aIj5jbWFrZS0zLjUuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5neiI+Y21ha2UtMy41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAuemlwIj5jbWFrZS0zLjUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjUuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuWiI+Y21ha2UtMy41LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuZ3oiPmNtYWtlLTMuNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLnppcCI+Y21ha2UtMy41LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLloiPmNtYWtlLTMuNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLmd6Ij5jbWFrZS0zLjUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi56aXAiPmNtYWtlLTMuNS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvZm9sZGVyLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iY3lnd2luLyI+Y3lnd2luLzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNhM2E1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjY8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEudGFyLloiPmNtYWtlLTMuNi4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEuemlwIj5jbWFrZS0zLjYuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIudGFyLloiPmNtYWtlLTMuNi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIuemlwIj5jbWFrZS0zLjYuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMudGFyLloiPmNtYWtlLTMuNi4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMuemlwIj5jbWFrZS0zLjYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQuemlwIj5jbWFrZS0zLjYuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5aIj5jbWFrZS0zLjYuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5neiI+Y21ha2UtMy42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAuemlwIj5jbWFrZS0zLjYuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5aIj5jbWFrZS0zLjYuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5neiI+Y21ha2UtMy42LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEuemlwIj5jbWFrZS0zLjYuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5aIj5jbWFrZS0zLjYuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5neiI+Y21ha2UtMy42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjIuemlwIj5jbWFrZS0zLjYuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5aIj5jbWFrZS0zLjYuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5neiI+Y21ha2UtMy42LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMuemlwIj5jbWFrZS0zLjYuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImN5Z3dpbi8iPmN5Z3dpbi88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My43L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxMmY5MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjc8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNy4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnRhci5aIj5jbWFrZS0zLjcuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnppcCI+Y21ha2UtMy43LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnRhci5aIj5jbWFrZS0zLjcuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnppcCI+Y21ha2UtMy43LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnRhci5aIj5jbWFrZS0zLjcuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnppcCI+Y21ha2UtMy43LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy43LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuWiI+Y21ha2UtMy43LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuZ3oiPmNtYWtlLTMuNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLnppcCI+Y21ha2UtMy43LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy43LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLloiPmNtYWtlLTMuNy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLmd6Ij5jbWFrZS0zLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS56aXAiPmNtYWtlLTMuNy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy43LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy43LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5aIj5jbWFrZS0zLjcuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5neiI+Y21ha2UtMy43LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjIuemlwIj5jbWFrZS0zLjcuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZjOGNhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjguMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS50YXIuWiI+Y21ha2UtMy44LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLnRhci5neiI+Y21ha2UtMy44LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS56aXAiPmNtYWtlLTMuOC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAxMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi50YXIuWiI+Y21ha2UtMy44LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLnRhci5neiI+Y21ha2UtMy44LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi56aXAiPmNtYWtlLTMuOC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy50YXIuWiI+Y21ha2UtMy44LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLnRhci5neiI+Y21ha2UtMy44LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy56aXAiPmNtYWtlLTMuOC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC50YXIuWiI+Y21ha2UtMy44LjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC56aXAiPmNtYWtlLTMuOC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLloiPmNtYWtlLTMuOC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLmd6Ij5jbWFrZS0zLjguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC56aXAiPmNtYWtlLTMuOC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjguMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5aIj5jbWFrZS0zLjguMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5neiI+Y21ha2UtMy44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEuemlwIj5jbWFrZS0zLjguMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuWiI+Y21ha2UtMy44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuZ3oiPmNtYWtlLTMuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLnppcCI+Y21ha2UtMy44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MTgyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbApAQCAtMCwwICsxLDE4MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuOTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My45PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEudGFyLloiPmNtYWtlLTMuOS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEuemlwIj5jbWFrZS0zLjkuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIudGFyLloiPmNtYWtlLTMuOS4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIuemlwIj5jbWFrZS0zLjkuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMudGFyLloiPmNtYWtlLTMuOS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMuemlwIj5jbWFrZS0zLjkuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQudGFyLloiPmNtYWtlLTMuOS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQuemlwIj5jbWFrZS0zLjkuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM1LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUudGFyLloiPmNtYWtlLTMuOS4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUuemlwIj5jbWFrZS0zLjkuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM2LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYudGFyLloiPmNtYWtlLTMuOS4wLXJjNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYuemlwIj5jbWFrZS0zLjkuMC1yYzYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5aIj5jbWFrZS0zLjkuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5neiI+Y21ha2UtMy45LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAuemlwIj5jbWFrZS0zLjkuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuWiI+Y21ha2UtMy45LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuZ3oiPmNtYWtlLTMuOS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLnppcCI+Y21ha2UtMy45LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLloiPmNtYWtlLTMuOS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLmd6Ij5jbWFrZS0zLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi56aXAiPmNtYWtlLTMuOS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5aIj5jbWFrZS0zLjkuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5neiI+Y21ha2UtMy45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMuemlwIj5jbWFrZS0zLjkuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuWiI+Y21ha2UtMy45LjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuZ3oiPmNtYWtlLTMuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LnppcCI+Y21ha2UtMy45LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLloiPmNtYWtlLTMuOS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLmd6Ij5jbWFrZS0zLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS56aXAiPmNtYWtlLTMuOS41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuNi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5aIj5jbWFrZS0zLjkuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5neiI+Y21ha2UtMy45LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYuemlwIj5jbWFrZS0zLjkuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2Q5MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzkgICAgICAgLQ0KKzxhIGhyZWY9InNoYTI1NnN1bXMuYXNjIj5zaGEyNTZzdW1zLmFzYzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTA6NTMgICAgMjk0Mg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy4xLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjIzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4yLnRhci5neiI+dXRpbC1saW51eC0yLjIzLjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIueHoiPnV0aWwtbGludXgtMi4yMy4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5neiI+dXRpbC1saW51eC0yLjIzLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yMy50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci54eiI+dXRpbC1saW51eC0yLjIzLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgM00NCis8YSBocmVmPSJ2Mi4yMy1DaGFuZ2VMb2ciPnYyLjIzLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgMTlLDQorPGEgaHJlZj0idjIuMjMtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idjIuMjMtUmVsZWFzZU5vdGVzIj52Mi4yMy1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDUzSw0KKzxhIGhyZWY9InYyLjIzLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yMy1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMS1DaGFuZ2VMb2ciPnYyLjIzLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1NYXItMjAxMyAxMjo0OCAgICAzNjFLDQorPGEgaHJlZj0idjIuMjMtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMi1DaGFuZ2VMb2ciPnYyLjIzLXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC1BcHItMjAxMyAyMjoxNCAgICAgODBLDQorPGEgaHJlZj0idjIuMjMtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nIj52Mi4yMy4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDEzSw0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgODM2DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMiPnYyLjIzLjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1OCAgICAxNDQ4DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU4ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZyI+djIuMjMuMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAyM0sNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZy5zaWduIj52Mi4yMy4yLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzIj52Mi4yMy4yLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgMjU4Mg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgODM2DQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+DQorPGhlYWQ+PHRpdGxlPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC88L3RpdGxlPjwvaGVhZD4NCis8Ym9keT4NCis8aDE+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0LzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0ibGliYmxraWQtZG9jcy8iPmxpYmJsa2lkLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNSAgICAgICAtDQorPGEgaHJlZj0ibGlibW91bnQtZG9jcy8iPmxpYm1vdW50LWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1MyAgICAyNzU4DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI0LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIueHoiPnV0aWwtbGludXgtMi4yNC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDNNDQorPGEgaHJlZj0idjIuMjQtQ2hhbmdlTG9nIj52Mi4yNC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDIySw0KKzxhIGhyZWY9InYyLjI0LUNoYW5nZUxvZy5zaWduIj52Mi4yNC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InYyLjI0LVJlbGVhc2VOb3RlcyI+djIuMjQtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA0NEsNCis8YSBocmVmPSJ2Mi4yNC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjQtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzEtQ2hhbmdlTG9nIj52Mi4yNC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgMjkySw0KKzxhIGhyZWY9InYyLjI0LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzItQ2hhbmdlTG9nIj52Mi4yNC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgIDQySw0KKzxhIGhyZWY9InYyLjI0LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZyI+djIuMjQuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzIj52Mi4yNC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgNDQ0OQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNCAxMzozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2ciPnYyLjI0LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgNDdLDQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3RlcyI+djIuMjQuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE4ICAgIDU3NDgNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTE2YzNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjUzICAgIDI3NTgNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS4xLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUuMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4yLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI1LjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci5neiI+dXRpbC1saW51eC0yLjI1LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci54eiI+dXRpbC1saW51eC0yLjI1LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgNE0NCis8YSBocmVmPSJ2Mi4yNS1DaGFuZ2VMb2ciPnYyLjI1LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgNDFLDQorPGEgaHJlZj0idjIuMjUtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUtUmVsZWFzZU5vdGVzIj52Mi4yNS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDYxSw0KKzxhIGhyZWY9InYyLjI1LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMS1DaGFuZ2VMb2ciPnYyLjI1LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC1KdW4tMjAxNCAxMzozMyAgICA0ODlLDQorPGEgaHJlZj0idjIuMjUtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMi1DaGFuZ2VMb2ciPnYyLjI1LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgMjdLDQorPGEgaHJlZj0idjIuMjUtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nIj52Mi4yNS4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgNTgxNg0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMiPnYyLjI1LjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo1MiAgICAzMjIwDQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDAzLVNlcC0yMDE0IDEwOjUyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4xLXJjMS1DaGFuZ2VMb2ciPnYyLjI1LjEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgMjJLDQorPGEgaHJlZj0idjIuMjUuMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2ciPnYyLjI1LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgMjZLDQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjUuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3RlcyI+djIuMjUuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgIDMwMTYNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTkxNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6MzggICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQzICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI2LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NDkgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci54eiI+dXRpbC1saW51eC0yLjI2LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIueHoiPnV0aWwtbGludXgtMi4yNi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjYtQ2hhbmdlTG9nIj52Mi4yNi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDMwSw0KKzxhIGhyZWY9InYyLjI2LUNoYW5nZUxvZy5zaWduIj52Mi4yNi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LVJlbGVhc2VOb3RlcyI+djIuMjYtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA1MUsNCis8YSBocmVmPSJ2Mi4yNi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjYtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzEtQ2hhbmdlTG9nIj52Mi4yNi1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgMzYwSw0KKzxhIGhyZWY9InYyLjI2LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzItQ2hhbmdlTG9nIj52Mi4yNi1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NTAgICAgIDUxSw0KKzxhIGhyZWY9InYyLjI2LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA0LUZlYi0yMDE1IDExOjUwICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZyI+djIuMjYuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAzMksNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNi4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzIj52Mi4yNi4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgMjk0NA0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1NYXItMjAxNSAxNDoyMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2ciPnYyLjI2LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgNThLDQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3RlcyI+djIuMjYuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgIDU4MzQNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGViMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDEgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDMgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI3LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjctcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjctcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjcuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci54eiI+dXRpbC1saW51eC0yLjI3LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI3LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjcudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI3LUNoYW5nZUxvZyI+djIuMjctQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4yNy1DaGFuZ2VMb2cuc2lnbiI+djIuMjctQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy1SZWxlYXNlTm90ZXMiPnYyLjI3LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgMzVLDQorPGEgaHJlZj0idjIuMjctUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI3LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMxLUNoYW5nZUxvZyI+djIuMjctcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgIDI2M0sNCis8YSBocmVmPSJ2Mi4yNy1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxNSAxMTowMSAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMyLUNoYW5nZUxvZyI+djIuMjctcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUF1Zy0yMDE1IDExOjA0ICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNy1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2ciPnYyLjI3LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgMThLDQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjcuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3RlcyI+djIuMjcuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgIDIxMDcNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJhNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI4LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjguMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjguMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI4LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjguMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjguMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIueHoiPnV0aWwtbGludXgtMi4yOC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDRNDQorPGEgaHJlZj0idjIuMjgtQ2hhbmdlTG9nIj52Mi4yOC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDEzSw0KKzxhIGhyZWY9InYyLjI4LUNoYW5nZUxvZy5zaWduIj52Mi4yOC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LVJlbGVhc2VOb3RlcyI+djIuMjgtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICAzM0sNCis8YSBocmVmPSJ2Mi4yOC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjgtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzEtQ2hhbmdlTG9nIj52Mi4yOC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgMjY5Sw0KKzxhIGhyZWY9InYyLjI4LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzItQ2hhbmdlTG9nIj52Mi4yOC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgIDUySw0KKzxhIGhyZWY9InYyLjI4LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LU1hci0yMDE2IDA5OjA0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZyI+djIuMjguMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAzN0sNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzIj52Mi4yOC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgMzc0OA0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1BdWctMjAxNiAxMDowOSAgICAgODE5DQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2ciPnYyLjI4LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICA4OTAwDQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjguMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3RlcyI+djIuMjguMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgIDExNjENCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTZhMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI5LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjktcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjktcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjkuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci54eiI+dXRpbC1saW51eC0yLjI5LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjkuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIueHoiPnV0aWwtbGludXgtMi4yOS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjktQ2hhbmdlTG9nIj52Mi4yOS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjI5LUNoYW5nZUxvZy5zaWduIj52Mi4yOS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LVJlbGVhc2VOb3RlcyI+djIuMjktUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICAyNksNCis8YSBocmVmPSJ2Mi4yOS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjktUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzEtQ2hhbmdlTG9nIj52Mi4yOS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgMjE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzItQ2hhbmdlTG9nIj52Mi4yOS1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE2IDEzOjEzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZyI+djIuMjkuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICA0N0sNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOS4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzIj52Mi4yOS4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgNTA2Nw0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNyAxNDowMiAgICAgODE5DQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2ciPnYyLjI5LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgMTRLDQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjkuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3RlcyI+djIuMjkuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgIDIwMTINCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQxYmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NDkgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUyICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMwLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEyOjAyICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci54eiI+dXRpbC1saW51eC0yLjMwLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIueHoiPnV0aWwtbGludXgtMi4zMC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDRNDQorPGEgaHJlZj0idjIuMzAtQ2hhbmdlTG9nIj52Mi4zMC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjMwLUNoYW5nZUxvZy5zaWduIj52Mi4zMC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLVJlbGVhc2VOb3RlcyI+djIuMzAtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICAzNEsNCis8YSBocmVmPSJ2Mi4zMC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzAtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzEtQ2hhbmdlTG9nIj52Mi4zMC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgMzE4Sw0KKzxhIGhyZWY9InYyLjMwLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzItQ2hhbmdlTG9nIj52Mi4zMC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjMwLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZyI+djIuMzAuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAyMEsNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzIj52Mi4zMC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgMTkwMQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KdWwtMjAxNyAwOTozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2ciPnYyLjMwLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgMTNLDQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3RlcyI+djIuMzAuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgIDE2MDQNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdlNGUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE3ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjIwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMxLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci54eiI+dXRpbC1saW51eC0yLjMxLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMxLUNoYW5nZUxvZyI+djIuMzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICAxNUsNCis8YSBocmVmPSJ2Mi4zMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS1SZWxlYXNlTm90ZXMiPnYyLjMxLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgMzFLDQorPGEgaHJlZj0idjIuMzEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMxLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMxLUNoYW5nZUxvZyI+djIuMzEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgIDI5MEsNCis8YSBocmVmPSJ2Mi4zMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1TZXAtMjAxNyAxMDozOSAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMyLUNoYW5nZUxvZyI+djIuMzEtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLU9jdC0yMDE3IDE2OjAzICAgICAxMksNCis8YSBocmVmPSJ2Mi4zMS1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2ciPnYyLjMxLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAgMjdLDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3RlcyI+djIuMzEuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgIDMxNzUNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzczZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjMwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMyLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzItcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzItcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzIuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci54eiI+dXRpbC1saW51eC0yLjMyLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMyLUNoYW5nZUxvZyI+djIuMzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICAzNksNCis8YSBocmVmPSJ2Mi4zMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi1SZWxlYXNlTm90ZXMiPnYyLjMyLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgMjFLDQorPGEgaHJlZj0idjIuMzItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMyLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMxLUNoYW5nZUxvZyI+djIuMzItcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgIDE3NEsNCis8YSBocmVmPSJ2Mi4zMi1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1GZWItMjAxOCAxMjoyNSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMyLUNoYW5nZUxvZyI+djIuMzItcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxLU1hci0yMDE4IDEzOjM4ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zMi1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2ciPnYyLjMyLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAgMzFLDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzIuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3RlcyI+djIuMzIuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgIDM0MjUNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDk1MzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDE0OjAxICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjMzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIueHoiPnV0aWwtbGludXgtMi4zMy50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDRNDQorPGEgaHJlZj0idjIuMzMtQ2hhbmdlTG9nIj52Mi4zMy1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgNzk3Nw0KKzxhIGhyZWY9InYyLjMzLUNoYW5nZUxvZy5zaWduIj52Mi4zMy1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLVJlbGVhc2VOb3RlcyI+djIuMzMtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICAyN0sNCis8YSBocmVmPSJ2Mi4zMy1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzMtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzEtQ2hhbmdlTG9nIj52Mi4zMy1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgMjEwSw0KKzxhIGhyZWY9InYyLjMzLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzItQ2hhbmdlTG9nIj52Mi4zMy1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgIDE4Sw0KKzxhIGhyZWY9InYyLjMzLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE4IDExOjQ0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZyI+djIuMzMuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAxN0sNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMy4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzIj52Mi4zMy4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgMTg5OQ0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1KYW4tMjAxOSAxMDoyOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2ciPnYyLjMzLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMjFLDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3RlcyI+djIuMzMuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgIDI1NjYNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlkOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjUxICAgIDE3NzQNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM0LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDEwTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci5neiI+dXRpbC1saW51eC0yLjM0LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci54eiI+dXRpbC1saW51eC0yLjM0LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgNU0NCis8YSBocmVmPSJ2Mi4zNC1DaGFuZ2VMb2ciPnYyLjM0LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgMTRLDQorPGEgaHJlZj0idjIuMzQtQ2hhbmdlTG9nLnNpZ24iPnYyLjM0LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idjIuMzQtUmVsZWFzZU5vdGVzIj52Mi4zNC1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDI3Sw0KKzxhIGhyZWY9InYyLjM0LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zNC1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMS1DaGFuZ2VMb2ciPnYyLjM0LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxOSAxMDoyNCAgICAxNjdLDQorPGEgaHJlZj0idjIuMzQtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMi1DaGFuZ2VMb2ciPnYyLjM0LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgNTdLDQorPGEgaHJlZj0idjIuMzQtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTcxNGQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA1ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjExICAgIDEyNDINCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgICA1TQ0KKzxhIGhyZWY9InYyLjM1LVJlbGVhc2VOb3RlcyI+djIuMzUtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zNS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzUtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zNS1yYzEtQ2hhbmdlTG9nIj52Mi4zNS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgMjI4Sw0KKzxhIGhyZWY9InYyLjM1LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzUtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2VnbGliYy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjY3OTQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3JlbGVhc2VzL2VnbGliYy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9lZ2xpYmMvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDE4OjAxICAgICAgICAgICAgMTczMTA2NTYNCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAxNy1PY3QtMjAxMiAyMTo1MyAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDIxOjUzICAgICAgICAgICAgICAgICAgNzINCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA0LUphbi0yMDEzIDA1OjQ0ICAgICAgICAgICAgMTc1NjU1MTkNCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5hc2MiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLmFzYzwvYT4gICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NSAgICAgICAgICAgICAgICAgMzAyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIubWQ1Ij5lZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5tZDU8L2E+ICAgICAgICAgICAgICAgICAgMDQtSmFuLTIwMTMgMDU6NDQgICAgICAgICAgICAgICAgICA2NA0KKzxhIGhyZWY9ImVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTEiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTE8L2E+ICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NCAgICAgICAgICAgICAgICAgIDcyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIiPmVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAyMS1BdWctMjAxMyAwNTozNiAgICAgICAgICAgIDE3ODYyNzczDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuYXNjIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5hc2M8L2E+ICAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgIDMwMg0KKzxhIGhyZWY9ImVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyLm1kNSI+ZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIubWQ1PC9hPiAgICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDEzIDA1OjM2ICAgICAgICAgICAgICAgICAgNjQNCis8YSBocmVmPSJlZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExPC9hPiAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgICA3Mg0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyIj5lZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgMDgtRmViLTIwMTQgMTA6MDYgICAgICAgICAgICAxODg3MzYyMA0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLmFzYyI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuYXNjPC9hPiAgICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAyODUNCis8YSBocmVmPSJlZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAwOC1GZWItMjAxNCAxMDowNiAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAgNzINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvZ251LWNvbmZpZy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MWFhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvZ251LWNvbmZpZy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9nbnUtY29uZmlnLzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0iU0hBMjU2U1VNIj5TSEEyNTZTVU08L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTIgMTc6MjMgICAgICAgICAgICAgICAgIDE5MA0KKzxhIGhyZWY9ImdudS1jb25maWctMjAxMjA4MTQudGFyLmJ6MiI+Z251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDE4LVNlcC0yMDEyIDA5OjI4ICAgICAgICAgICAgICAgNDMwMjYNCis8YSBocmVmPSJnbnUtY29uZmlnLXlvY3RvLTIwMTExMTExLnRneiI+Z251LWNvbmZpZy15b2N0by0yMDExMTExMS50Z3o8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA4LU1heS0yMDEyIDIxOjExICAgICAgICAgICAgICAgNDg3NjINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmUwZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApAQCAtMCwwICsxLDYwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlcjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL3JlbGVhc2VzL2luZGl2aWR1YWwvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAxLTE4IDIzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDEtMTggMjM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAzLTIwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDMtMjAgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTAyIDAwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDQtMDIgMDA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTIyIDIzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMjIgMjM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA3LTA4IDAwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDctMDggMDA6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAxLTIzIDA2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDEtMjMgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTAyIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTEtMDIgMDM6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuMC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy4wLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy4wLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjMuMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA4LTAxIDA1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDgtMDEgMDU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTAxIDAzOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDktMDEgMDM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTEyLTEyIDIwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMC45MC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMTItMTIgMjA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTEwIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTAgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTExIDE1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTEgMTU6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTA2IDA5OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOS0wNiAwOToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDMgMjM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0wMyAyMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMjMgMTk6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0yMyAxOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMTAgMTk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMC0xMCAxOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMDUgMjA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0wNSAyMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMjYgMDc6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0yNiAwNzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMDMgMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0wMyAwODowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMTAgMDY6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0xMCAwNjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMjUgMjA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0yNSAyMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNS0wOSAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDUtMDkgMDU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjkgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA2LTI5IDIzOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNC0xNCAyMDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA0LTE0IDIwOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA3LTI2IDIxOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0yNiAyMTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDctMDcgMjM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0wNyAyMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOC0yNiAwNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMjYgMDU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA4LTAxIDA2OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMDEgMDY6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDMgMDc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTAzIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yOCAwMjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTI4IDAyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xMiAwNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMTIgMDQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA0OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTE5IDAyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xOSAwMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDIgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0wMiAwNjoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0wNiAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMDYgMDU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjAgMDU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTIwIDA1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0yMyAwNTo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIzIDA1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0yNyAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTI3IDA1OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTExIDA2OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0xMSAwNjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0yNiAwMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjYgMDE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTAzIDAzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMDMgMDM6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMjMgMDA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAxLTIzIDAwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA1IDA4OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wNSAwODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMDggMDE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMS0wOCAwMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0wNSAwMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMDUgMDA6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTIgMDc6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTEyIDA3OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xNiAwMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTE2IDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTEyIDAyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0xMiAwMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yMSAwMDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMjEgMDA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy42LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTE3IDAxOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTcgMDE6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy43LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy43LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTA0IDA3OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDc6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIxIDE2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMjEgMTY6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTIwIDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjAgMDM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTI3IDA1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yNyAwNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0wNCAwMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTAyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDIgMDc6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMDIgMDA6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTAyIDAwOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTIxIDAyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMSAwMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMTEgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0xMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMDEgMDU6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNy0wMSAwNToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0wMSAyMToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMDEgMjE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMTUgMTg6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTE1IDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0yMSAwMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA4LTIxIDAwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0yNCAwMzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTI0IDAzOjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTE0IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0xNCAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNCAxOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDQgMTk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTMxIDIzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMzEgMjM6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDEtMDggMjE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTA4IDIxOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTMxIDAxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMS0zMSAwMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMTMgMjA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0xMyAyMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0wNCAyMzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMDQgMjM6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTA0IDIwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMDQgMjA6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAzLTE3IDIxOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMTcgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTI2IDA1OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0yNiAwNTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDQtMTYgMDE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTE2IDAxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAwMDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMDA6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDIwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAyMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xOSAwNzoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTkgMDc6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjYudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAyLTExIDAxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0wMSAxODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTAxIDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wNCAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTA0IDA0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI3IDAxOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yNyAwMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjQgMDc6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI0IDA3OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMS0wNCAxNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMDQgMTc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE3IDAyOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xNyAwMjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDU6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjAgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTIwIDIzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE4IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xOCAwMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMjcgMjI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0yNyAyMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDM6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMi0xMSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMDUgMDU6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTA1IDA1OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xMyAyMjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTMgMjI6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTI5IDIwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yOSAyMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMDkgMDE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTA5IDAxOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTI3IDA1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yNyAwNToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTAgMDg6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xMCAwODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTcgMjI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xNyAyMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMjYgMDU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0yNiAwNTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDggMDA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOCAwMDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMjEgMjE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDktMDUgMjE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA5LTA1IDIxOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5iejIub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xNCAwNDo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuZ3oub2xkIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmd6Lm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMDQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAxLTI1IDA2OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMS0yNSAwNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wOCAwNjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMDggMDY6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOSAyMDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE5IDIwOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNCAwNTo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAyLTE0IDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTA2IDA2OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wNiAwNjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA3OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDU6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Lm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuZ3oub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTI1IDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0yNSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTMgMDM6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEzIDAzOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDU6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA1OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTMgMDM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTEzIDAzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xNCAwMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNiAwNDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMDYgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMjQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTI0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA1IDAwOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNSAwMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xOSAwMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMTkgMDA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTE0IDAxOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMTQgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTI0IDA2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjQgMDY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTExIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTEgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTE5IDIyOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTkgMjI6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTUuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0yNyAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMjcgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTQgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMjcgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yNCAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI0IDIxOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0wOCAyMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTA4IDIxOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNSAwNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTA1IDA1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuOTkuOTA0LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTA3IDIzOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMTcgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0yMSAwOToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEwIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTIwIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTExIDAwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOSAwNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjMgMTk6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDQgMTc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTAgMjI6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTYgMTY6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjggMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuOTkuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTAyIDAyOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxODoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wOSAyMToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wOCAyMzo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0xMSAyMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0wNCAxOTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0xOSAxNzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xNiAyMDo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAyLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTI4IDE2OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTE1IDE3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTExIDIxOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAyIDIzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTE1IDE4OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDIyOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDE3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjYudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTIwIDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjcudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAyIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjI4NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yODcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yOCAxODoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAzLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTAyIDE5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xMCAxOTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMjQgMjE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTAgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDcgMTY6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMTUgMTY6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTQ6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzAgMTg6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjIgMjM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIxNSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPGFkZHJlc3M+QXBhY2hlLzIuNC4zOCAoRGViaWFuKSBTZXJ2ZXIgYXQgd3d3Lngub3JnIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyZDIzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzgzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXM8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9zb2Z0d2FyZS9wdWxzZWF1ZGlvLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImJhZC8iPmJhZC88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI2IDE3OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mzg3SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3oiPnBvbHlwYXVkaW8tMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDYwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3oiPnBvbHlwYXVkaW8tMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3oiPnBvbHlwYXVkaW8tMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDg2SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC40LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5neiI+cG9seXBhdWRpby0wLjUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUyNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3oiPnBvbHlwYXVkaW8tMC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3oiPnBvbHlwYXVkaW8tMC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDQ4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC42LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC42LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3oiPnBvbHlwYXVkaW8tMC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI0SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC43LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC43LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5neiI+cG9seXBhdWRpby0wLjguMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3oiPnBvbHlwYXVkaW8tMC44LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5neiI+cG9seXBhdWRpby0wLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5neiI+cG9seXBhdWRpby0wLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMzAgMTY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDctMjQgMTI6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDkgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMDYgMDE6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMTIgMjM6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDQtMTMgMjM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjMgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYtdGVzdDEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTAgMDA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTEgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTkgMDA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMzAgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTEgMDU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjMgMDQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMjYgMDE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMjMgMjE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMDIgMjE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTYgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMjkgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMTUgMTE6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHoiPnB1bHNlYXVkaW8tMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHoiPnB1bHNlYXVkaW8tMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHoiPnB1bHNlYXVkaW8tMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHoiPnB1bHNlYXVkaW8tMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHoiPnB1bHNlYXVkaW8tMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHoiPnB1bHNlYXVkaW8tNC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHoiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHoiPnB1bHNlYXVkaW8tNS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHoiPnB1bHNlYXVkaW8tNi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3ouc2hhMXN1bSI+cHVsc2VhdWRpby03LjAudGFyLmd6LnNoYTFzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoiPnB1bHNlYXVkaW8tNy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtIj5wdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTFzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExc3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTguMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci5neiI+cHVsc2VhdWRpby0xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci54eiI+cHVsc2VhdWRpby0xMC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci5neiI+cHVsc2VhdWRpby0xMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci54eiI+cHVsc2VhdWRpby0xMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci5neiI+cHVsc2VhdWRpby0xMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci54eiI+cHVsc2VhdWRpby0xMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci5neiI+cHVsc2VhdWRpby0xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci54eiI+cHVsc2VhdWRpby0xMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4yLnRhci5neiI+cHVsc2VhdWRpby0xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjIudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIueHoiPnB1bHNlYXVkaW8tMTIuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjIudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi4yLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA4OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMS50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMS50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLmd6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4yLnRhci5nei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4yLnRhci54ei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIueHouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4zLnRhci5neiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjMudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjMudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEzLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTMuMC50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci54eiI+cHVsc2VhdWRpby0xMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTMuMC50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUvMi40LjM4IChEZWJpYW4pIFNlcnZlciBhdCBmcmVlZGVza3RvcC5vcmcgUG9ydCA0NDM8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggODNmYWQzZi4uZDBjMTYxYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CkBAIC05LDEyICs5LDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBvcwogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBpbXBvcnQgYmIKK2Zyb20gYmIudGVzdHMuc3VwcG9ydC5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQogCiBkZWYgc2tpcElmTm9OZXR3b3JrKCk6CiAgICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKQEAgLTExODAsMjcgKzExODAsNDYgQEAKICAgICB9CiAKICAgICB0ZXN0X3dnZXRfdXJpcyA9IHsKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmVyc2lvbnMgaW5zaWRlIGRpcmVjdG9yeSBuYW1lCi0gICAgICAgICgidXRpbC1saW51eCIsICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy91dGlsLWxpbnV4LTIuMjQuMi50YXIuYnoyIiwgIiIsICIiKQorICAgICAgICAjCisgICAgICAgICMgaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvdXRpbC1saW51eC0yLjI0LjIudGFyLmJ6MgorICAgICAgICAoInV0aWwtbGludXgiLCAiL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL3V0aWwtbGludXgtMi4yNC4yLnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyLjI0LjIiLAotICAgICAgICAoImVuY2hhbnQiLCAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9lbmNoYW50LTEuNi4wLnRhci5negorICAgICAgICAoImVuY2hhbnQiLCAiL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS42LjAiLAotICAgICAgICAoImNtYWtlIiwgImh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6CisgICAgICAgICgiY21ha2UiLCAiL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi44LjEyLjEiLAorICAgICAgICAjCiAgICAgICAgICMgcGFja2FnZXMgd2l0aCB2ZXJzaW9ucyBvbmx5IGluIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgICAgICgiZWdsaWMiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2VnbGliYy9lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6MiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9lZ2xpYmMvZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIKKyAgICAgICAgKCJlZ2xpYyIsICIvcmVsZWFzZXMvZWdsaWJjL2VnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi4xOSIsCi0gICAgICAgICgiZ251LWNvbmZpZyIsICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyCisgICAgICAgICgiZ251LWNvbmZpZyIsICIvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyMDEyMDgxNCIsCisgICAgICAgICMKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoICI5OSIgaW4gdGhlIG5hbWUgb2YgcG9zc2libGUgdmVyc2lvbgotICAgICAgICAoInB1bHNlYXVkaW8iLCAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9wdWxzZWF1ZGlvLTQuMC50YXIueHoKKyAgICAgICAgKCJwdWxzZWF1ZGlvIiwgIi9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjUuMCIsCi0gICAgICAgICgieHNlcnZlci14b3JnIiwgImh0dHA6Ly94b3JnLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIveG9yZy1zZXJ2ZXItMS4xNS4xLnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci94b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MgorICAgICAgICAoInhzZXJ2ZXIteG9yZyIsICIvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL3hvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS4xNS4xIiwKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmFsaWQgVVBTVFJFQU1fQ0hFQ0tfVVJJIGFuZCBVUFNUUkVBTV9DSEVDS19SRUdFWAotICAgICAgICAoImN1cHMiLCAiaHR0cDovL3d3dy5jdXBzLm9yZy9zb2Z0d2FyZS8xLjcuMi9jdXBzLTEuNy4yLXNvdXJjZS50YXIuYnoyIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzIiwgIig/UDxuYW1lPmN1cHNcLSkoP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKVwtc291cmNlXC50YXJcLmd6IikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly93d3cuY3Vwcy5vcmcvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MgorICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzCisgICAgICAgICgiY3VwcyIsICIvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MiIsICIvYXBwbGUvY3Vwcy9yZWxlYXNlcyIsICIoP1A8bmFtZT5jdXBzXC0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLXNvdXJjZVwudGFyXC5neiIpCiAgICAgICAgICAgICA6ICIyLjAuMCIsCi0gICAgICAgICgiZGIiLCAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICJodHRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKKyAgICAgICAgIyBodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6CisgICAgICAgICMgaHR0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy8KKyAgICAgICAgKCJkYiIsICIvYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICIvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKICAgICAgICAgICAgIDogIjUuMy4xMCIsCiAgICAgfQogCkBAIC0xMjE3LDE4ICsxMjM2LDI4IEBACiAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCiAKLSAgICBAc2tpcElmTm9OZXR3b3JrKCkKICAgICBkZWYgdGVzdF93Z2V0X2xhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYpOgotICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBrWzJdKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfUkVHRVgiLCBrWzNdKQotICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKLSAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQotICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24gZm9yICVzIiAlIGtbMF0pCi0gICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIHRlc3RkYXRhID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpICsgIi9mZXRjaC10ZXN0ZGF0YSIKKyAgICAgICAgc2VydmVyID0gSFRUUFNlcnZpY2UodGVzdGRhdGEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHBvcnQgPSBzZXJ2ZXIucG9ydAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQorICAgICAgICAgICAgICAgIGNoZWNrdXJpID0gIiIKKyAgICAgICAgICAgICAgICBpZiBrWzJdOgorICAgICAgICAgICAgICAgICAgICBjaGVja3VyaSA9ICJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBwb3J0ICsga1syXQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1VSSSIsIGNoZWNrdXJpKQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKKyAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgcG9ydCArIGtbMV0KKyAgICAgICAgICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEodXJsLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQorICAgICAgICAgICAgICAgIHIgPSBiYi51dGlscy52ZXJjbXBfc3RyaW5nKHYsIHZlcnN0cmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXJ2ZXIuc3RvcCgpCiAKIAogY2xhc3MgRmV0Y2hDaGVja1N0YXR1c1Rlc3QoRmV0Y2hlclRlc3QpOgpAQCAtMTY2Miw2ICsxNjkxLDQ3IEBACiAgICAgICAgICMgVmVyaWZ5IHRoZSBzdWJtb2R1bGUgaXMgYWxzbyBzaGFsbG93CiAgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSwgY3dkPW9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQogCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zdWJtb2R1bGVfbWlycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNtZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2dpdHN1Ym1vZHVsZScpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzbWRpcikKKyAgICAgICAgc2VsZi5naXQoJ2luaXQnLCBjd2Q9c21kaXIpCisgICAgICAgICMgTWFrZSB0aGlzIGxvb2sgbGlrZSBpdCB3YXMgY2xvbmVkIGZyb20gYSByZW1vdGUuLi4KKyAgICAgICAgc2VsZi5naXQoJ2NvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnVybCAiJXMiJyAlIHNtZGlyLCBjd2Q9c21kaXIpCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5mZXRjaCAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhc3ViJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdic3ViJywgY3dkPXNtZGlyKQorCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgaW5pdCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ3N1Ym1vZHVsZSBhZGQgZmlsZTovLyVzJyAlIHNtZGlyLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgdXBkYXRlJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29tbWl0IC1tIHN1Ym1vZHVsZSAtYScsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICB1cmkgPSAnZ2l0c206Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdlbmVyYXRlIHRoZSBzaGFsbG93IHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoKHVyaSkKKworICAgICAgICAjIFNldCB1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBvcy5yZW5hbWUoc2VsZi5kbGRpciwgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2dpdHNtOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKworICAgICAgICAjIEZldGNoIGZyb20gdGhlIG1pcnJvcgorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5kbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5mZXRjaF9hbmRfdW5wYWNrKHVyaSkKKworICAgICAgICAjIFZlcmlmeSB0aGUgbWFpbiByZXBvc2l0b3J5IGlzIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBnaXRzdWJtb2R1bGUgZGlyZWN0b3J5IGlzIHByZXNlbnQKKyAgICAgICAgYXNzZXJ0IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIHN1Ym1vZHVsZSBpcyBhbHNvIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxLCBjd2Q9b3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCiAKICAgICBpZiBhbnkob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHAsICdnaXQtYW5uZXgnKSkgZm9yIHAgaW4gb3MuZW52aXJvbi5nZXQoJ1BBVEgnKS5zcGxpdCgnOicpKToKICAgICAgICAgZGVmIHRlc3Rfc2hhbGxvd19hbm5leChzZWxmKToKQEAgLTIwMDgsMyArMjA3OCw0MzcgQEAKICAgICAgICAgdWQubWV0aG9kLl9maW5kX2dpdF9sZnMgPSBsYW1iZGEgZDogRmFsc2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmdpdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJykpCisKK2NsYXNzIE5QTVRlc3QoRmV0Y2hlclRlc3QpOgorICAgIGRlZiBza2lwSWZOb05wbSgpOgorICAgICAgICBpbXBvcnQgc2h1dGlsCisgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goJ25wbScpOgorICAgICAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoJ25wbSBub3QgaW5zdGFsbGVkLCB0ZXN0cyBiZWluZyBza2lwcGVkJykKKyAgICAgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCArICcuZG9uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9iYWRfY2hlY2tzdW0oc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4odWQubG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGE1MTIoYmFkKS5oZXhkaWdlc3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoICsgJ19iYWQtY2hlY2tzdW1fJyArIGJhZHN1bSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfRkVUQ0hfUFJFTUlSUk9ST05MWScsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgU2V0dXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgb3MucmVwbGFjZSh1ZC5sb2NhbHBhdGgsIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ01JUlJPUlMnLCAnaHR0cHM/JDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisgICAgICAgICMgVXBkYXRlIHRoZSByZXNvbHZlZCB1cmwgdG8gYW4gaW52YWxpZCB1cmwKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICB1cmwgPSBmLnJlYWQoKQorICAgICAgICB1cmkgPSBVUkkodXJsKQorICAgICAgICB1cmkucGF0aCA9ICcvaW52YWxpZCcKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHN0cih1cmkpKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fZGVzdHN1ZmZpeF9kb3dubG9hZGZpbGVuYW1lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wO2Rlc3RzdWZmaXg9Zm9vL2Jhcjtkb3dubG9hZGZpbGVuYW1lPWZvby1iYXIudGd6JworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ2Zvby1iYXIudGd6JykpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgZGVmIHRlc3RfbnBtX25vX25ldHdvcmtfbm9fdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk5ldHdvcmtBY2Nlc3MpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9ub19uZXR3b3JrX3dpdGhfdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfYWx0ZXJuYXRlKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkuZnJlYWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2xhdGVzdChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj1sYXRlc3QnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5LmludmFsaWQub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuRmV0Y2hFcnJvcik6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3BhY2thZ2VfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L2ludmFsaWQ7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2ludmFsaWQoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249aW52YWxpZCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuUGFyYW1ldGVyRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9yZWdpc3RyeV9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5NYWxmb3JtZWRVcmwpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9wYWNrYWdlX25vbmUoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fdmVyc2lvbl9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgZGVmIGNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoc2VsZiwgZGF0YSk6CisgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZGF0YScpCisgICAgICAgIHN3ZmlsZSA9IG9zLnBhdGguam9pbihkYXRhZGlyLCAnbnBtLXNocmlua3dyYXAuanNvbicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkYXRhZGlyKQorICAgICAgICB3aXRoIG9wZW4oc3dmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBqc29uLmR1bXAoZGF0YSwgZikKKyAgICAgICAgIyBBbHNvIGNvbmZpZ3VyZSB0aGUgUyBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5zZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnUycpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1MnLCBzZWxmLnNkaXIpCisgICAgICAgIHJldHVybiBzd2ZpbGUKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3coc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScsCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnRlbnQtdHlwZS8tL2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICdnaXQraHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUuZ2l0I2FlYzExNzdjN2RhNjdlM2IzMjczZGY5NmNmNDc2ODI0ZGJjOWFlMDknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20nOiAnZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llLmdpdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICdnaXQyJywgJ2dpdGh1Yi5jb20uanNodHRwLmNvb2tpZS5naXQnKSkpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5zZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2FycmF5LWZsYXR0ZW4nLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAnbm9kZV9tb2R1bGVzJywgJ2Nvb2tpZScsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2RldihzZWxmKToKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4wLjQnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGVudC10eXBlLy0vY29udGVudC10eXBlLTEuMC40LnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAnZGV2JzogVHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgIyBGZXRjaCB3aXRoIGRldiBkaXNhYmxlZAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICAjIEZldGNoIHdpdGggZGV2IGVuYWJsZWQKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlICsgJztkZXY9MSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2Rlc3RzdWZmaXgoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZSArICc7ZGVzdHN1ZmZpeD1mb28vYmFyJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBkZWYgdGVzdF9ucG1zd19ub19uZXR3b3JrX25vX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfbm9fbmV0d29ya193aXRoX3RhcmJhbGwoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X25wbV9yZXVzYWJpbGl0eShzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHdpdGggbnBtc3cKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBEaXNhYmxlIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4gd2l0aCBucG0KKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJywgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfYmFkX2NoZWNrc3VtKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBmZXRjaCB3aXRoIGJhZCBjaGVja3N1bQorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLWdmTkVwMmhxZ0xURktUNlAzQXNCWU1nc0JxZz0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgICMgRmV0Y2ggY29ycmVjdGx5IHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4obG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGExKGJhZCkuaGV4ZGlnZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCArICdfYmFkLWNoZWNrc3VtXycgKyBiYWRzdW0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW2ZldGNoZXIudXJsc1swXV0KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAjIFNldHVwIHRoZSBtaXJyb3IKKyAgICAgICAgbWlycm9yZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ21pcnJvcicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihtaXJyb3JkaXIpCisgICAgICAgIG9zLnJlcGxhY2UodWQubG9jYWxwYXRoLCBvcy5wYXRoLmpvaW4obWlycm9yZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkpKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2h0dHBzPyQ6Ly8uKi8uKiBmaWxlOi8vJXMvXG4nICUgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9GRVRDSF9QUkVNSVJST1JPTkxZJywgJzEnKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRoIGludmFsaWQgdXJsCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vaW52YWxpZCcsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ydW5xdWV1ZS5weQppbmRleCA1ZTY0MzkxLi40YmExMmEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcnVucXVldWUucHkKQEAgLTcsNyArNyw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGJiCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTI1NSw3ICsyNTQsNyBAQAogICAgICAgICAgICAgY21kID0gWyJiaXRiYWtlIiwgImExIiwgImIxIl0KICAgICAgICAgICAgIHRhc2tzID0gc2VsZi5ydW5fYml0YmFrZWNtZChjbWQsIHRlbXBkaXIsIHNzdGF0ZXZhbGlkLCBleHRyYWVudj1leHRyYWVudiwgY2xlYW51cD1UcnVlKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBbJ2ExOnBvcHVsYXRlX3N5c3Jvb3QnLCAnYTE6cGFja2FnZScsICdhMTpwYWNrYWdlX3dyaXRlX3JwbV9zZXRzY2VuZScsICdhMTpwYWNrYWdlZGF0YV9zZXRzY2VuZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZSddCisgICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZScsICdhMTpidWlsZCddCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh0YXNrcyksIHNldChleHBlY3RlZCkpCiAKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd24odGVtcGRpcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9zdXBwb3J0L2h0dHBzZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmNzY2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitpbXBvcnQgaHR0cC5zZXJ2ZXIKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBvcworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHNpZ25hbAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJbgorCitjbGFzcyBIVFRQU2VydmVyKFRocmVhZGluZ01peEluLCBodHRwLnNlcnZlci5IVFRQU2VydmVyKToKKworICAgIGRlZiBzZXJ2ZXJfc3RhcnQoc2VsZiwgcm9vdF9kaXIsIGxvZ2dlcik6CisgICAgICAgIG9zLmNoZGlyKHJvb3RfZGlyKQorICAgICAgICBzZWxmLnNlcnZlX2ZvcmV2ZXIoKQorCitjbGFzcyBIVFRQUmVxdWVzdEhhbmRsZXIoaHR0cC5zZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKKworICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXRfc3RyLCAqYXJncyk6CisgICAgICAgIHBhc3MKKworY2xhc3MgSFRUUFNlcnZpY2Uob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJywgcG9ydD0wLCBsb2dnZXI9Tm9uZSk6CisgICAgICAgIHNlbGYucm9vdF9kaXIgPSByb290X2RpcgorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgcHJpbnQoc2VsZi5yb290X2RpcikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdF9kaXIpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiTm90IHN0YXJ0aW5nIEhUVFBTZXJ2aWNlIGZvciBkaXJlY3RvcnkgJXMgd2hpY2ggZG9lc24ndCBleGlzdCIgJSAoc2VsZi5yb290X2RpcikpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLnNlcnZlciA9IEhUVFBTZXJ2ZXIoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2VydmVyLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYucHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNlcnZlci5zZXJ2ZXJfc3RhcnQsIGFyZ3M9W3NlbGYucm9vdF9kaXIsIHNlbGYubG9nZ2VyXSkKKworICAgICAgICAjIFRoZSBzaWduYWwgaGFuZGxlciBmcm9tIHRlc3RpbWFnZS5iYmNsYXNzIGNhbiBjYXVzZSBkZWFkbG9ja3MgaGVyZQorICAgICAgICAjIGlmIHRoZSBIVFRQU2VydmVyIGlzIHRlcm1pbmF0ZWQgYmVmb3JlIGl0IGNhbiByZXN0b3JlIHRoZSBzdGFuZGFyZCAKKyAgICAgICAgI3NpZ25hbCBiZWhhdmlvdXIKKyAgICAgICAgb3JpZyA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfREZMKQorICAgICAgICBzZWxmLnByb2Nlc3Muc3RhcnQoKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBvcmlnKQorCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAic2VydmVyIik6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJwcm9jZXNzIik6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5qb2luKCkKKyAgICAgICAgaWYgc2VsZi5sb2dnZXI6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wcGVkIEhUVFBTZXJ2aWNlIG9uICVzOiVzIiAlIChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDVjOTEwYjQuLmE3ZmYzM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy91dGlscy5weQpAQCAtNjIyLDMgKzYyMiw0NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvaG9tZS91c2VyL290aGVycGF0aC9sYXllcjYnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyMyddLCBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjEnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyNCcsICcvaG9tZS91c2VyL3BhdGgvbGF5ZXI3J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL2hvbWUvdXNlci9wYXRoL2xheWVyNyddKQorCisKK2NsYXNzIEdldFJlZmVyZW5jZWRWYXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCisKKyAgICBkZWYgY2hlY2tfcmVmZXJlbmNlZChzZWxmLCBleHByZXNzaW9uLCBleHBlY3RlZF9sYXllcnMpOgorICAgICAgICB2YXJzID0gYmIudXRpbHMuZ2V0X3JlZmVyZW5jZWRfdmFycyhleHByZXNzaW9uLCBzZWxmLmQpCisKKyAgICAgICAgIyBEbyB0aGUgZWFzeSBjaGVjayBmaXJzdCAtIGlzIGV2ZXJ5IHZhcmlhYmxlIGFjY291bnRlZCBmb3I/CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSBzZXQudW5pb24oc2V0KCksICpleHBlY3RlZF9sYXllcnMpCisgICAgICAgIGdvdF92YXJzID0gc2V0KHZhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoZ290X3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgIyBOb3cgdGVzdCB0aGUgb3JkZXIgb2YgdGhlIGxheWVycworICAgICAgICBzdGFydCA9IDAKKyAgICAgICAgZm9yIGksIGV4cGVjdGVkX2xheWVyIGluIGVudW1lcmF0ZShleHBlY3RlZF9sYXllcnMpOgorICAgICAgICAgICAgZ290X2xheWVyID0gc2V0KHZhcnNbc3RhcnQ6bGVuKGV4cGVjdGVkX2xheWVyKStzdGFydF0pCisgICAgICAgICAgICBzdGFydCArPSBsZW4oZXhwZWN0ZWRfbGF5ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKGdvdF9sYXllciwgZXhwZWN0ZWRfbGF5ZXIpCisKKyAgICBkZWYgdGVzdF9ub192YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiIsIFtdKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiAiLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIgbm8gdmFycyBoZXJlISAiLCBbXSkKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIke1ZBUn0iLCBbeyJWQVIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtWQVJ9ICR7VkFSfSIsIFt7IlZBUiJ9XSkKKworICAgIGRlZiB0ZXN0X3R3b19sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiVkFSIiwgIiR7Qn0iKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7VkFSfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtAZC5nZXRWYXIoJ1ZBUicpfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisKKyAgICBkZWYgdGVzdF9tb3JlX2NvbXBsaWNhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmRbIlNSQ19VUkkiXSA9ICIke1FUX0dJVH0vJHtRVF9NT0RVTEV9LmdpdDtuYW1lPSR7UVRfTU9EVUxFfTske1FUX01PRFVMRV9CUkFOQ0hfUEFSQU19O3Byb3RvY29sPSR7UVRfR0lUX1BST1RPQ09MfSIKKyAgICAgICAgc2VsZi5kWyJRVF9HSVQiXSA9ICJnaXQ6Ly9jb2RlLnF0LmlvLyR7UVRfR0lUX1BST0pFQ1R9IgorICAgICAgICBzZWxmLmRbIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iXSA9ICJicmFuY2g9JHtRVF9NT0RVTEVfQlJBTkNIfSIKKyAgICAgICAgc2VsZi5kWyJRVF9NT0RVTEUiXSA9ICIke0JQTn0iCisgICAgICAgIHNlbGYuZFsiQlBOIl0gPSAic29tZXRoaW5nIHRvIGRvIHdpdGggJHtQTn0gYW5kICR7U1BFQ0lBTF9QS0dTVUZGSVh9IgorCisgICAgICAgIGxheWVycyA9IFt7IlNSQ19VUkkifSwgeyJRVF9HSVQiLCAiUVRfTU9EVUxFIiwgIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iLCAiUVRfR0lUX1BST1RPQ09MIn0sIHsiUVRfR0lUX1BST0pFQ1QiLCAiUVRfTU9EVUxFX0JSQU5DSCIsICJCUE4ifSwgeyJQTiIsICJTUEVDSUFMX1BLR1NVRkZJWCJ9XQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7U1JDX1VSSX0iLCBsYXllcnMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggMGExYjkxMy4uOGM5YjZiOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHJlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgZGVmYXVsdGRpY3QKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAKIGltcG9ydCBiYi5jYWNoZQogaW1wb3J0IGJiLmNvb2tlcgpAQCAtMjEsOCArMjIsOCBAQAogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgYmIuY29tbWFuZAogaW1wb3J0IGJiLnJlbW90ZWRhdGEKLWZyb20gYmIuY29va2VyZGF0YSBpbXBvcnQgQ29va2VyQ29uZmlndXJhdGlvbiwgQ29uZmlnUGFyYW1ldGVycwotZnJvbSBiYi5tYWluIGltcG9ydCBzZXR1cF9iaXRiYWtlLCBCaXRCYWtlQ29uZmlnUGFyYW1ldGVycywgQkJNYWluRXhjZXB0aW9uCitmcm9tIGJiLmNvb2tlcmRhdGEgaW1wb3J0IENvb2tlckNvbmZpZ3VyYXRpb24KK2Zyb20gYmIubWFpbiBpbXBvcnQgc2V0dXBfYml0YmFrZSwgQml0QmFrZUNvbmZpZ1BhcmFtZXRlcnMKIGltcG9ydCBiYi5mZXRjaDIKIAogCkBAIC00NCw2NiArNDUsNjkgQEAKIGNsYXNzIFRpbmZvaWxDb21tYW5kRmFpbGVkKEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHJ1bl9jb21tYW5kIGZhaWxzIiIiCiAKK2NsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0b3J5OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsLCBkc2luZGV4KToKKyAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAorICAgICAgICBzZWxmLmRzaW5kZXggPSBkc2luZGV4CisKKyAgICBkZWYgcmVtb3RlQ29tbWFuZChzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvclZhckhpc3RDbWQnLCBzZWxmLmRzaW5kZXgsIGNtZCwgYXJncywga3dhcmdzKQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVmFyaWFibGVIaXN0b3J5IGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCitjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCwgZHNpbmRleCk6CisgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgc2VsZi5kc2luZGV4ID0gZHNpbmRleAorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JJbmNIaXN0Q21kJywgc2VsZi5kc2luZGV4LCBjbWQsIGFyZ3MsIGt3YXJncykKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YV9zbWFydC5JbmNsdWRlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiSW5jbHVkZUhpc3RvcnkgaGFzIG5vIHN1Y2ggbWV0aG9kICVzIiAlIG5hbWUpCisKKyAgICAgICAgbmV3ZnVuYyA9IHBhcnRpYWwoc2VsZi5yZW1vdGVDb21tYW5kLCBuYW1lKQorICAgICAgICBzZXRhdHRyKHNlbGYsIG5hbWUsIG5ld2Z1bmMpCisgICAgICAgIHJldHVybiBuZXdmdW5jCisKIGNsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3I6Ci0gICAgIiIiQ29ubmVjdG9yIG9iamVjdCB1c2VkIHRvIGVuYWJsZSBhY2Nlc3MgdG8gZGF0YXN0b3JlIG9iamVjdHMgdmlhIHRpbmZvaWwiIiIKKyAgICAiIiIKKyAgICBDb25uZWN0b3Igb2JqZWN0IHVzZWQgdG8gZW5hYmxlIGFjY2VzcyB0byBkYXRhc3RvcmUgb2JqZWN0cyB2aWEgdGluZm9pbAorICAgIE1ldGhvZCBjYWxscyBhcmUgdHJhbnNtaXR0ZWQgdG8gdGhlIHJlbW90ZSBkYXRhc3RvcmUgZm9yIHByb2Nlc3NpbmcsIGlmIGEgZGF0YXN0b3JlIGlzCisgICAgcmV0dXJuZWQgd2UgcmV0dXJuIGEgY29ubmVjdG9yIG9iamVjdCBmb3IgdGhlIG5ldyBzdG9yZQorICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIGRzaW5kZXgpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuZHNpbmRleCA9IGRzaW5kZXgKLSAgICBkZWYgZ2V0VmFyKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRmluZFZhcicsIHNlbGYuZHNpbmRleCwgbmFtZSkKLSAgICAgICAgb3ZlcnJpZGVzID0gTm9uZQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX29yaWd0eXBlJyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZVsnX2NvbnRlbnQnXSA9IHNlbGYudGluZm9pbC5fcmVjb252ZXJ0X3R5cGUodmFsdWVbJ19jb250ZW50J10sIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10pCi0gICAgICAgICAgICAgICAgZGVsIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10KLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX292ZXJyaWRlcycgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgb3ZlcnJpZGVzID0gdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgICAgICAgICBkZWwgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgcmV0dXJuIHZhbHVlLCBvdmVycmlkZXMKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckdldEtleXMnLCBzZWxmLmRzaW5kZXgpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JHZXRWYXJIaXN0b3J5Jywgc2VsZi5kc2luZGV4LCBuYW1lKQotICAgIGRlZiBleHBhbmRQeXRob25SZWYoc2VsZiwgdmFybmFtZSwgZXhwciwgZCk6Ci0gICAgICAgIGRzID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzLnRyYW5zbWl0X2RhdGFzdG9yZShkKQotICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZicsIGRzLCB2YXJuYW1lLCBleHByKQorICAgICAgICBzZWxmLnZhcmhpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yVmFySGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorICAgICAgICBzZWxmLmluY2hpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckNtZCcsIHNlbGYuZHNpbmRleCwgY21kLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZi50aW5mb2lsLCByZXQuZHNpbmRleCkKICAgICAgICAgcmV0dXJuIHJldAotICAgIGRlZiBzZXRWYXIoc2VsZiwgdmFybmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnc2V0VmFyaWFibGUnLCB2YXJuYW1lLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIHZhcm5hbWUsIGZsYWduYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JTZXRWYXJGbGFnJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBkZWYgZGVsVmFyKHNlbGYsIHZhcm5hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gaW5kaWNhdGUgdGhhdCBzZXR0aW5nIHNob3VsZAotICAgICAgICAgICAgIyBiZSByZWRpcmVjdGVkIHRvIGxvY2FsIHNpZGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZGVmIGRlbFZhckZsYWcoc2VsZiwgdmFybmFtZSwgZmxhZ25hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiByZW5hbWVWYXIoc2VsZiwgbmFtZSwgbmV3bmFtZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JSZW5hbWVWYXInLCBzZWxmLmRzaW5kZXgsIG5hbWUsIG5ld25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YS5fZGljdF90eXBlLCBuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJEYXRhIHN0b3JlIGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBrZXlzID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JDbWQnLCBzZWxmLmRzaW5kZXgsICJrZXlzIiwgW10sIHt9KQorICAgICAgICBmb3IgayBpbiBrZXlzOgorICAgICAgICAgICAgeWllbGQgawogCiBjbGFzcyBUaW5mb2lsQ29va2VyQWRhcHRlcjoKICAgICAiIiIKQEAgLTEyNywxMiArMTMxLDEzIEBACiAKICAgICBjbGFzcyBUaW5mb2lsUmVjaXBlQ2FjaGVBZGFwdGVyOgogICAgICAgICAiIiIgY29va2VyLnJlY2lwZWNhY2hlIGFkYXB0ZXIgIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIG1jPScnKToKICAgICAgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgICAgIHNlbGYubWMgPSBtYwogICAgICAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQogCiAgICAgICAgIGRlZiBnZXRfcGtnX3BuX2ZuKHNlbGYpOgotICAgICAgICAgICAgcGtnX3BuID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVzJykgb3IgW10pCisgICAgICAgICAgICBwa2dfcG4gPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZXMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIHBrZ19mbiA9IHt9CiAgICAgICAgICAgICBmb3IgcG4sIGZubGlzdCBpbiBwa2dfcG4uaXRlbXMoKToKICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZm5saXN0OgpAQCAtMTUxLDI3ICsxNTYsMjcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmdldF9wa2dfcG5fZm4oKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWNoZVtuYW1lXQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdkZXBzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnKSBvciBbXSkKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVuZGVwcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lRGVwZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVucmVjcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lUmVjb21tZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZVJlY29tbWVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX3BlcHZwcic6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2luaGVyaXRzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnYmJmaWxlX3ByaW9yaXR5JzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX2RwJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnZm5fcHJvdmlkZXMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzX2R5bmFtaWMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVBhY2thZ2VzRHluYW1pYycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3Jwcm92aWRlcnMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UlByb3ZpZGVycycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSUHJvdmlkZXJzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQogCkBAIC0xODIsOCArMTg3LDkgQEAKICAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAogICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzZWxmLlRpbmZvaWxDb29rZXJDb2xsZWN0aW9uQWRhcHRlcih0aW5mb2lsKQogICAgICAgICBzZWxmLnJlY2lwZWNhY2hlcyA9IHt9Ci0gICAgICAgICMgRklYTUUgYWxsIG1hY2hpbmVzCiAgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzWycnXSA9IHNlbGYuVGluZm9pbFJlY2lwZUNhY2hlQWRhcHRlcih0aW5mb2lsKQorICAgICAgICBmb3IgbWMgaW4gKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQk1VTFRJQ09ORklHJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1ttY10gPSBzZWxmLlRpbmZvaWxSZWNpcGVDYWNoZUFkYXB0ZXIodGluZm9pbCwgbWMpCiAgICAgICAgIHNlbGYuX2NhY2hlID0ge30KICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICMgR3JhYiB0aGVzZSBvbmx5IHdoZW4gdGhleSBhcmUgcmVxdWVzdGVkIHNpbmNlIHRoZXkgYXJlbid0IGFsd2F5cyB1c2VkCkBAIC00MTAsOSArNDE2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnJ1bl9hY3Rpb25zKGNvbmZpZ19wYXJhbXMpCiAgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVzX3BhcnNlZCA9IFRydWUKIAotICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBjb25uZWN0b3IgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmNvbmZpZ19kYXRhLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQorICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZiwgMCkKICAgICAgICAgICAgIHNlbGYuY29va2VyID0gVGluZm9pbENvb2tlckFkYXB0ZXIoc2VsZikKICAgICAgICAgICAgIHNlbGYuY29va2VyX2RhdGEgPSBzZWxmLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddCiAgICAgICAgIGVsc2U6CkBAIC01MDEsMTEgKzUwNSwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KHNlbGYucnVuX2NvbW1hbmQoJ2dldFNraXBwZWRSZWNpcGVzJykpCiAKLSAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnJ1bl9jb21tYW5kKCdhbGxQcm92aWRlcnMnKSkKKyAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZiwgbWM9JycpOgorICAgICAgICByZXR1cm4gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi5ydW5fY29tbWFuZCgnYWxsUHJvdmlkZXJzJywgbWMpKQogCi0gICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZFByb3ZpZGVycycpCisgICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYsIG1jPScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2ZpbmRQcm92aWRlcnMnLCBtYykKIAogICAgIGRlZiBmaW5kX2Jlc3RfcHJvdmlkZXIoc2VsZiwgcG4pOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZEJlc3RQcm92aWRlcicsIHBuKQpAQCAtNjI0LDkgKzYyOCw2IEBACiAgICAgICAgICAgICBhcHBlbmRzOiBUcnVlIHRvIGFwcGx5IGJiYXBwZW5kcywgRmFsc2Ugb3RoZXJ3aXNlCiAgICAgICAgICAgICBhcHBlbmRsaXN0OiBvcHRpb25hbCBsaXN0IG9mIGJiYXBwZW5kIGZpbGVzIHRvIGFwcGx5LCBpZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gZmlsdGVyIHRoZW0KLSAgICAgICAgICAgIGNvbmZpZ19kYXRhOiBjdXN0b20gY29uZmlnIGRhdGFzdG9yZSB0byB1c2UuIE5PVEU6IGlmIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgY29uZmlnX2RhdGEgdGhlbiB5b3UgY2Fubm90IHVzZSBhIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBmbi4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYudHJhY2tpbmc6CiAgICAgICAgICAgICAjIEVuYWJsZSBoaXN0b3J5IHRyYWNraW5nIGp1c3QgZm9yIHRoZSBwYXJzZSBvcGVyYXRpb24KQEAgLTYzNSw4ICs2MzYsOCBAQAogICAgICAgICAgICAgaWYgYXBwZW5kcyBhbmQgYXBwZW5kbGlzdCA9PSBbXToKICAgICAgICAgICAgICAgICBhcHBlbmRzID0gRmFsc2UKICAgICAgICAgICAgIGlmIGNvbmZpZ19kYXRhOgotICAgICAgICAgICAgICAgIGRjdHIgPSBiYi5yZW1vdGVkYXRhLlJlbW90ZURhdGFzdG9yZXMudHJhbnNtaXRfZGF0YXN0b3JlKGNvbmZpZ19kYXRhKQotICAgICAgICAgICAgICAgIGRzY29uID0gc2VsZi5ydW5fY29tbWFuZCgncGFyc2VSZWNpcGVGaWxlJywgZm4sIGFwcGVuZHMsIGFwcGVuZGxpc3QsIGRjdHIpCisgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGNvbmZpZ19kYXRhKQorICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBjb25maWdfZGF0YS5kc2luZGV4KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0KQogICAgICAgICAgICAgaWYgZHNjb246CkBAIC03MjMsMjEgKzcyNCw5IEBACiAgICAgICAgICAgICAjIEJvcnJvd2VkIGZyb20ga25vdHR5LCBpbnN0ZWFkIHNvbWV3aGF0IGhhY2tpbHkgd2UgdXNlIHRoZSBoZWxwZXIKICAgICAgICAgICAgICMgYXMgdGhlIG9iamVjdCB0byBzdG9yZSAic2h1dGRvd24iIG9uCiAgICAgICAgICAgICBoZWxwZXIgPSBiYi51aS51aWhlbHBlci5CQlVJSGVscGVyKCkKLSAgICAgICAgICAgICMgV2Ugc2V0IHVwIGxvZ2dpbmcgb3B0aW9uYWxseSBpbiB0aGUgY29uc3RydWN0b3Igc28gbm93IHdlIG5lZWQgdG8KLSAgICAgICAgICAgICMgZ3JhYiB0aGUgaGFuZGxlcnMgdG8gcGFzcyB0byBUZXJtaW5hbEZpbHRlcgotICAgICAgICAgICAgY29uc29sZSA9IE5vbmUKLSAgICAgICAgICAgIGVycmNvbnNvbGUgPSBOb25lCi0gICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICBlbGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKLSAgICAgICAgICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQogICAgICAgICAgICAgaGVscGVyLnNodXRkb3duID0gMAogICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IE5vbmUKLSAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIGNvbnNvbGUsIGVycmNvbnNvbGUsIGZvcm1hdCwgcXVpZXQ9c2VsZi5xdWlldCkKKyAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIHNlbGYubG9nZ2VyLmhhbmRsZXJzLCBxdWlldD1zZWxmLnF1aWV0KQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTg1OSw5ICs4NDgsNyBAQAogICAgICAgICAgICAgbmV3b2JqID0gb3JpZ3R5cGUob2JqKQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmV3b2JqLCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgotICAgICAgICAgICAgY29ubmVjdG9yID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBuZXdvYmouZHNpbmRleCkKLSAgICAgICAgICAgIG5ld29iaiA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBuZXdvYmouc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCisgICAgICAgICAgICBuZXdvYmogPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIG5ld29iai5kc2luZGV4KQogCiAgICAgICAgIHJldHVybiBuZXdvYmoKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQppbmRleCA1Y2JjYTk3Li44MmM2MmUzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQpAQCAtOTM1LDcgKzkzNSw3IEBACiAKICAgICAgICAgICAgICMgb25seSByZXNldCB0aGUgYnVpbGQgbmFtZSBpZiB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIgaXMgYWN0dWFsbHkKICAgICAgICAgICAgICMgYSB2YWxpZCB2YWx1ZSBmb3IgdGhlIGJ1aWxkX25hbWUgZmllbGQKLSAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnVpbGRfaW5mb1snYnVpbGRfbmFtZSddID0gYnVpbGRfbmFtZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCiAKQEAgLTExOTQsNyArMTE5NCw3IEBACiAgICAgICAgIGV2ZGF0YSA9IEJ1aWxkSW5mb0hlbHBlci5fZ2V0X2RhdGFfZnJvbV9ldmVudChldmVudCkKIAogICAgICAgICBmb3IgdCBpbiBzZWxmLmludGVybmFsX3N0YXRlWyd0YXJnZXRzJ106Ci0gICAgICAgICAgICBpZiB0LmlzX2ltYWdlID09IFRydWU6CisgICAgICAgICAgICBpZiB0LmlzX2ltYWdlOgogICAgICAgICAgICAgICAgIG91dHB1dF9maWxlcyA9IGxpc3QoZXZkYXRhLmtleXMoKSkKICAgICAgICAgICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dF9maWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgdC50YXJnZXQgaW4gb3V0cHV0IGFuZCAncm9vdGZzJyBpbiBvdXRwdXQgYW5kIG5vdCBvdXRwdXQuZW5kc3dpdGgoIi5tYW5pZmVzdCIpOgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfUFJFQlVJTFQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhc2tfaW5mb3JtYXRpb25bJ3Rhc2tfZXhlY3V0ZWQnXSA9IFRydWUKLSAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWMgPT0gVHJ1ZToKKyAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWM6CiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsndGFza19leGVjdXRlZCddID0gRmFsc2UKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfRU1QVFkKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydzY3JpcHRfdHlwZSddID0gVGFzay5DT0RJTkdfTkEKQEAgLTE3NzYsNyArMTc3Niw3IEBACiAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9uc191bmlxdWUgPSB7fQogICAgICAgICBpbWFnZV9mc3R5cGVzID0gc2VsZi5zZXJ2ZXIucnVuQ29tbWFuZCgKICAgICAgICAgICAgIFsnZ2V0VmFyaWFibGUnLCAnSU1BR0VfRlNUWVBFUyddKVswXQotICAgICAgICBpZiBpbWFnZV9mc3R5cGVzICE9IE5vbmU6CisgICAgICAgIGlmIGltYWdlX2ZzdHlwZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbWFnZV90eXBlc19zdHIgPSBpbWFnZV9mc3R5cGVzLnN0cmlwKCkKICAgICAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9ucyA9IHJlLnN1YihyJyB7Mix9JywgJyAnLCBpbWFnZV90eXBlc19zdHIpCiAgICAgICAgICAgICBpbWFnZV9maWxlX2V4dGVuc2lvbnNfdW5pcXVlID0gc2V0KGltYWdlX2ZpbGVfZXh0ZW5zaW9ucy5zcGxpdCgnICcpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQppbmRleCAzNTczNmFkLi44N2U4NzNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQpAQCAtMTIsNyArMTIsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwcm9ncmVzc2JhcgogaW1wb3J0IHNpZ25hbApAQCAtMzUsMTUgKzM0LDE1IEBACiAgICAgICAgIHNlbGYubXNnID0gbXNnCiAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSBleHRyYXBvcwogICAgICAgICBpZiBub3Qgd2lkZ2V0czoKLSAgICAgICAgICAgIHdpZGdldHMgPSBbcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnICcsCi0gICAgICAgICAgICBwcm9ncmVzc2Jhci5FVEEoKV0KLSAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA0CisgICAgICAgICAgICB3aWRnZXRzID0gWyc6ICcsIHByb2dyZXNzYmFyLlBlcmNlbnRhZ2UoKSwgJyAnLCBwcm9ncmVzc2Jhci5CYXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyAnLCBwcm9ncmVzc2Jhci5FVEEoKV0KKyAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA1CiAKICAgICAgICAgaWYgcmVzaXplX2hhbmRsZXI6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHJlc2l6ZV9oYW5kbGVyCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1dJTkNIKQotICAgICAgICBwcm9ncmVzc2Jhci5Qcm9ncmVzc0Jhci5fX2luaXRfXyhzZWxmLCBtYXh2YWwsIFtzZWxmLm1zZyArICI6ICJdICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKKyAgICAgICAgcHJvZ3Jlc3NiYXIuUHJvZ3Jlc3NCYXIuX19pbml0X18oc2VsZiwgbWF4dmFsLCBbc2VsZi5tc2ddICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKIAogICAgIGRlZiBfaGFuZGxlX3Jlc2l6ZShzZWxmLCBzaWdudW09Tm9uZSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgIHByb2dyZXNzYmFyLlByb2dyZXNzQmFyLl9oYW5kbGVfcmVzaXplKHNlbGYsIHNpZ251bSwgZnJhbWUpCkBAIC0xMTAsMTIgKzEwOSwxMSBAQAogCiAKIGNsYXNzIEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihsb2dnaW5nLkZpbHRlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRmLCBmb3JtYXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Zik6CiAgICAgICAgIHNlbGYudGYgPSB0ZgotICAgICAgICBzZWxmLmZvcm1hdCA9IGZvcm1hdAogCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBzZWxmLmZvcm1hdC5OT1RFIGFuZCAocmVjb3JkLm1zZy5zdGFydHN3aXRoKCJSdW5uaW5nIikgb3IgcmVjb3JkLm1zZy5zdGFydHN3aXRoKCJyZWNpcGUgIikpOgorICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKHJlY29yZC5tc2cuc3RhcnRzd2l0aCgiUnVubmluZyIpIG9yIHJlY29yZC5tc2cuc3RhcnRzd2l0aCgicmVjaXBlICIpKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLnRmLmNsZWFyRm9vdGVyKCkKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE1MSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgIGNyID0gKDI1LCA4MCkKICAgICAgICAgcmV0dXJuIGNyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBjb25zb2xlLCBlcnJjb25zb2xlLCBmb3JtYXQsIHF1aWV0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBoYW5kbGVycywgcXVpZXQpOgogICAgICAgICBzZWxmLm1haW4gPSBtYWluCiAgICAgICAgIHNlbGYuaGVscGVyID0gaGVscGVyCiAgICAgICAgIHNlbGYuY3V1ID0gTm9uZQpAQCAtMTgxLDcgKzE3OSwxMSBAQAogICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQURSQUlOLCBuZXcpCiAgICAgICAgICAgICBjdXJzZXMuc2V0dXB0ZXJtKCkKICAgICAgICAgICAgIGlmIGN1cnNlcy50aWdldG51bSgiY29sb3JzIikgPiAyOgotICAgICAgICAgICAgICAgIGZvcm1hdC5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgIGZvciBoIGluIGhhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBoLmZvcm1hdHRlci5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmVkID0gY3Vyc2VzLnRpZ2V0c3RyKCJlZCIpCiAgICAgICAgICAgICBpZiBzZWxmLmVkOgogICAgICAgICAgICAgICAgIHNlbGYuY3V1ID0gY3Vyc2VzLnRpZ2V0c3RyKCJjdXUiKQpAQCAtMTk3LDEwICsxOTksOSBAQAogICAgICAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNlCiAgICAgICAgICAgICBiYi5ub3RlKCJVbmFibGUgdG8gdXNlIGludGVyYWN0aXZlIG1vZGUgZm9yIHRoaXMgdGVybWluYWwsIHVzaW5nIGZhbGxiYWNrIikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBjb25zb2xlOgotICAgICAgICAgICAgY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCi0gICAgICAgIGlmIGVycmNvbnNvbGU6Ci0gICAgICAgICAgICBlcnJjb25zb2xlLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZiwgZm9ybWF0KSkKKworICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgIGguYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmKSkKIAogICAgICAgICBzZWxmLm1haW5fcHJvZ3Jlc3MgPSBOb25lCiAKQEAgLTI1NSwxOSArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGFjdGl2ZXRhc2tzW3RdLmdldCgic3RhcnR0aW1lIiwgTm9uZSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGJhciBvciBwYmFyLmJvdW5jaW5nICE9IChwcm9ncmVzcyA8IDApOgogICAgICAgICAgICAgICAgICAgICBpZiBwcm9ncmVzcyA8IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykgIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgdCksIDEwMCwgd2lkZ2V0cz1bcHJvZ3Jlc3NiYXIuQm91bmNpbmdTbGlkZXIoKSwgJyddLCBleHRyYXBvcz0yLCByZXNpemVfaGFuZGxlcj1zZWxmLnNpZ3dpbmNoX2hhbmRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSksIDEwMCwgd2lkZ2V0cz1bJyAnLCBwcm9ncmVzc2Jhci5Cb3VuY2luZ1NsaWRlcigpLCAnJ10sIGV4dHJhcG9zPTMsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSAiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCB0KSwgMTAwLCB3aWRnZXRzPVtwcm9ncmVzc2Jhci5QZXJjZW50YWdlKCksICcgJywgcHJvZ3Jlc3NiYXIuQmFyKCksICcnXSwgZXh0cmFwb3M9NCwgcmVzaXplX2hhbmRsZXI9c2VsZi5zaWd3aW5jaF9oYW5kbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCBhY3RpdmV0YXNrc1t0XVsicGlkIl0pLCAxMDAsIHdpZGdldHM9WycgJywgcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnJ10sIGV4dHJhcG9zPTUsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZXRhc2tzW3RdWyJwcm9ncmVzc2JhciJdID0gcGJhcgogICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgocGJhciwgcHJvZ3Jlc3MsIHJhdGUsIHN0YXJ0X3RpbWUpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzdGFydF90aW1lID0gYWN0aXZldGFza3NbdF0uZ2V0KCJzdGFydHRpbWUiLCBOb25lKQogICAgICAgICAgICAgICAgIGlmIHN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgiJXMgLSAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHNlbGYuZWxhcHNlZChjdXJyZW50dGltZSAtIHN0YXJ0X3RpbWUpLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAtICVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgc2VsZi5lbGFwc2VkKGN1cnJlbnR0aW1lIC0gc3RhcnRfdGltZSksIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHQpKQorICAgICAgICAgICAgICAgICAgICB0YXNrcy5hcHBlbmQoIiVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgYWN0aXZldGFza3NbdF1bInBpZCJdKSkKIAogICAgICAgICBpZiBzZWxmLm1haW4uc2h1dGRvd246CiAgICAgICAgICAgICBjb250ZW50ID0gIldhaXRpbmcgZm9yICVzIHJ1bm5pbmcgdGFza3MgdG8gZmluaXNoOiIgJSBsZW4oYWN0aXZldGFza3MpCkBAIC0zNjMsNyArMzY0LDExIEBACiAgICAgaWYgZXJyb3I6CiAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGdldCB0aGUgdmFsdWUgb2YgQkJfQ09OU09MRUxPRyB2YXJpYWJsZTogJXMiICUgZXJyb3IpCiAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCi0gICAgcmV0dXJuIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUKKyAgICBsb2djb25maWdmaWxlLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFtjbWQsICJCQl9MT0dDT05GSUciXSkKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBCQl9MT0dDT05GSUcgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlCiAKIF9ldnRfbGlzdCA9IFsgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCiAgICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrRmFpbGVkIiwgImJiLmJ1aWxkLlRhc2tCYXNlIiwgImJiLmV2ZW50LlBhcnNlU3RhcnRlZCIsCkBAIC0zODAsNyArMzg1LDE0OCBAQAogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKIAotICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUgPSBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlciwgcGFyYW1zLm9ic2VydmVfb25seSkKKyAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlID0gX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIHBhcmFtcy5vYnNlcnZlX29ubHkpCisKKyAgICBsb2dsZXZlbCwgXyA9IGJiLm1zZy5jb25zdHJ1Y3RMb2dPcHRpb25zKCkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6CisgICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwgPSBsb2dsZXZlbAorICAgIGVsaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAyOgorICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLkVSUk9SCisgICAgZWxzZToKKyAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5XQVJOSU5HCisKKyAgICBsb2djb25maWcgPSB7CisgICAgICAgICJ2ZXJzaW9uIjogMSwKKyAgICAgICAgImhhbmRsZXJzIjogeworICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZG91dEZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5lcnJjb25zb2xlIjogeworICAgICAgICAgICAgICAgICJjbGFzcyI6ICJsb2dnaW5nLlN0cmVhbUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICJmb3JtYXR0ZXIiOiAiQml0QmFrZS5jb25zb2xlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRlcnIiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZGVyckZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoaXMgaGFuZGxlciBjYW4gYmUgdXNlZCBpZiBzcGVjaWZpYyBsb2dnZXJzIHNob3VsZCBwcmludCBvbgorICAgICAgICAgICAgIyB0aGUgY29uc29sZSBhdCBhIGxvd2VyIHNldmVyaXR5IHRoYW4gdGhlIGRlZmF1bHQuIEl0IHdpbGwKKyAgICAgICAgICAgICMgZGlzcGxheSBhbnkgbWVzc2FnZXMgc2VudCB0byBpdCB0aGF0IGFyZSBsb3dlciB0aGFuIHRoZW4KKyAgICAgICAgICAgICMgQml0QmFrZS5jb25zb2xlIGxvZ2dpbmcgbGV2ZWwgKHNvIGFzIHRvIHByZXZlbnQgZHVwbGljYXRpb24gb2YKKyAgICAgICAgICAgICMgbWVzc2FnZXMpLiBOb3RoaW5nIGlzIGF0dGFjaGVkIHRvIHRoaXMgaGFuZGxlciBieSBkZWZhdWx0CisgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIl0sCisgICAgICAgICAgICAgICAgIi4iOiB7CisgICAgICAgICAgICAgICAgICAgICJpc19jb25zb2xlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm1hdHRlcnMiOiB7CisgICAgICAgICAgICAjIFRoaXMgZm9ybWF0IGluc3RhbmNlIHdpbGwgZ2V0IGNvbG9yIG91dHB1dCBlbmFibGVkIGJ5IHRoZQorICAgICAgICAgICAgIyB0ZXJtaW5hbAorICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIgOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5CQkxvZ0Zvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoZSBmaWxlIGxvZyByZXF1aXJlcyBhIHNlcGFyYXRlIGluc3RhbmNlIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQKKyAgICAgICAgICAgICMgY29sb3IgZW5hYmxlZAorICAgICAgICAgICAgIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkJCTG9nRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0IjogIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmlsdGVycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLnN0ZG91dEZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkxvZ0ZpbHRlckxUTGV2ZWwiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6ICJFUlJPUiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5zdGRlcnJGaWx0ZXIiOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5Mb2dGaWx0ZXJHRVFMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogIkVSUk9SIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIjogeworICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImxvZ2dlcnMiOiB7CisgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbIkJpdEJha2UuY29uc29sZSIsICJCaXRCYWtlLmVycmNvbnNvbGUiXSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRpc2FibGVfZXhpc3RpbmdfbG9nZ2VycyI6IEZhbHNlCisgICAgfQorCisgICAgIyBFbmFibGUgdGhlIGNvbnNvbGUgbG9nIGZpbGUgaWYgZW5hYmxlZAorICAgIGlmIGNvbnNvbGVsb2dmaWxlIGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd19lbnZpcm9ubWVudCBhbmQgbm90IHBhcmFtcy5vcHRpb25zLnNob3dfdmVyc2lvbnM6CisgICAgICAgIGxvZ2NvbmZpZyA9IGJiLm1zZy5tZXJnZUxvZ2dpbmdDb25maWcobG9nY29uZmlnLCB7CisgICAgICAgICAgICAgICAgInZlcnNpb24iOiAxLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyIgOiB7CisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLmNvbnNvbGVsb2ciOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAjIEp1c3QgbGlrZSB2ZXJiY29uc29sZSwgYW55dGhpbmcgc2VudCBoZXJlIHdpbGwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZpbGUsIHVubGVzcyBpdCB3b3VsZCBnbyB0byBCaXRCYWtlLmNvbnNvbGVsb2cKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UudmVyYmNvbnNvbGVsb2ciIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuRmlsZUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmxvZ2ZpbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpbHRlcnMiOiBbIkJpdEJha2UudmVyYmNvbnNvbGVsb2dGaWx0ZXIiXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZWxvZ0ZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJsb2dnZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS5jb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgIyBPdGhlciBpbnRlcmVzdGluZyB0aGluZ3MgdGhhdCB3ZSB3YW50IHRvIGtlZXAgYW4gZXllIG9uCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGxvZyBmaWxlcyBpbiBjYXNlIHNvbWVvbmUgaGFzIGFuIGlzc3VlLCBidXQgbm90CisgICAgICAgICAgICAgICAgICAgICMgbmVjZXNzYXJpbHkgc2hvdyB0byB0aGUgdXNlciBvbiB0aGUgY29uc29sZQorICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZWxvZyJdLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGNvbnNvbGVsb2dmaWxlKSkKKyAgICAgICAgbG9nbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY29uc29sZWxvZ2ZpbGUpLCAnY29uc29sZS1sYXRlc3QubG9nJykKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCisgICAgICAgIHRyeToKKyAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKGNvbnNvbGVsb2dmaWxlKSwgbG9nbGluaykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHBhc3MKKworICAgIGNvbmYgPSBiYi5tc2cuc2V0TG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIGxvZ2NvbmZpZ2ZpbGUpCiAKICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5kIHN5cy5zdGRvdXQuaXNhdHR5KCk6CiAgICAgICAgIGxvZ19leGVjX3R0eSA9IFRydWUKQEAgLTM4OSwyMyArNTM1LDkgQEAKIAogICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQogCi0gICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKLSAgICBmb3JtYXRfc3RyID0gIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgotICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBOb25lCi0gICAgZWxpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA+IDI6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IKLSAgICBlbHNlOgotICAgICAgICBmb3JjZWxldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkcKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRPdXQsIGZvcmNlbGV2ZWwpCi0gICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoZXJyY29uc29sZSwgYmIubXNnLkJCTG9nRmlsdGVyU3RkRXJyKQotICAgIGNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKLSAgICBlcnJjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCi0gICAgaWYgbm90IGJiLm1zZy5oYXNfY29uc29sZV9oYW5kbGVyKGxvZ2dlcik6Ci0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCisgICAgIyBMb29rIGZvciB0aGUgc3BlY2lhbGx5IGRlc2lnbmF0ZWQgaGFuZGxlcnMgd2hpY2ggbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlCisgICAgIyB0ZXJtaW5hbCBoYW5kbGVyCisgICAgY29uc29sZV9oYW5kbGVycyA9IFtoIGZvciBoIGluIGNvbmYuY29uZmlnWydoYW5kbGVycyddLnZhbHVlcygpIGlmIGdldGF0dHIoaCwgJ2lzX2NvbnNvbGUnLCBGYWxzZSldCiAKICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJLbm90dHlVSSIpCiAKQEAgLTQxMywyNCArNTQ1LDE0IEBACiAgICAgICAgIHNlcnZlci50ZXJtaW5hdGVTZXJ2ZXIoKQogICAgICAgICByZXR1cm4KIAotICAgIGNvbnNvbGVsb2cgPSBOb25lCi0gICAgaWYgY29uc29sZWxvZ2ZpbGUgYW5kIG5vdCBwYXJhbXMub3B0aW9ucy5zaG93X2Vudmlyb25tZW50IGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd192ZXJzaW9uczoKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSkpCi0gICAgICAgIGNvbmxvZ2Zvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihjb25zb2xlbG9nZmlsZSkKLSAgICAgICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5zZXRGb3JtYXR0ZXIoY29ubG9nZm9ybWF0KQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQotICAgICAgICBsb2dsaW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSksICdjb25zb2xlLWxhdGVzdC5sb2cnKQotICAgICAgICBiYi51dGlscy5yZW1vdmUobG9nbGluaykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoY29uc29sZWxvZ2ZpbGUpLCBsb2dsaW5rKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgcGFzcwotCiAgICAgbGxldmVsLCBkZWJ1Z19kb21haW5zID0gYmIubXNnLmNvbnN0cnVjdExvZ09wdGlvbnMoKQogICAgIHNlcnZlci5ydW5Db21tYW5kKFsic2V0RXZlbnRNYXNrIiwgc2VydmVyLmdldEV2ZW50SGFuZGxlKCksIGxsZXZlbCwgZGVidWdfZG9tYWlucywgX2V2dF9saXN0XSkKIAorICAgICMgVGhlIGxvZ2dpbmdfdHJlZSBtb2R1bGUgaXMgKmV4dHJlbWVseSogaGVscGZ1bCBpbiBkZWJ1Z2dpbmcgbG9nZ2luZworICAgICMgZG9tYWlucy4gVW5jb21tZW50IGhlcmUgdG8gZHVtcCB0aGUgbG9nZ2luZyB0cmVlIHdoZW4gYml0YmFrZSBzdGFydHMKKyAgICAjaW1wb3J0IGxvZ2dpbmdfdHJlZQorICAgICNsb2dnaW5nX3RyZWUucHJpbnRvdXQoKQorCiAgICAgdW5pdmVyc2UgPSBGYWxzZQogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCkBAIC00NDgsNyArNTcwLDcgQEAKICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6ICVzIiAlIChjbWRsaW5lLCBlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIHJldCAhPSBUcnVlOgorICAgICAgICBlbGlmIG5vdCByZXQ6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6IHJldHVybmVkICVzIiAlIChjbWRsaW5lLCByZXQpKQogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNDY1LDcgKzU4Nyw3IEBACiAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKICAgICBsYXN0cHJpbnQgPSB0aW1lLnRpbWUoKQogCi0gICAgdGVybWZpbHRlciA9IHRmKG1haW4sIGhlbHBlciwgY29uc29sZSwgZXJyY29uc29sZSwgZm9ybWF0LCBwYXJhbXMub3B0aW9ucy5xdWlldCkKKyAgICB0ZXJtZmlsdGVyID0gdGYobWFpbiwgaGVscGVyLCBjb25zb2xlX2hhbmRsZXJzLCBwYXJhbXMub3B0aW9ucy5xdWlldCkKICAgICBhdGV4aXQucmVnaXN0ZXIodGVybWZpbHRlci5maW5pc2gpCiAKICAgICB3aGlsZSBUcnVlOgpAQCAtNDc3LDcgKzU5OSw4IEBACiAgICAgICAgICAgICBpZiBldmVudCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIG1haW4uc2h1dGRvd24gPiAxOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIudXBkYXRlRm9vdGVyKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2Vwcm9ncmVzczoKKyAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci51cGRhdGVGb290ZXIoKQogICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQogICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MDMsMjYgKzYyNiwyNiBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgogICAgICAgICAgICAgICAgIGxhc3RwcmludCA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKLSAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGZvcm1hdC5FUlJPUjoKKyAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQogICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxCi0gICAgICAgICAgICAgICAgZWxpZiBldmVudC5sZXZlbG5vID09IGZvcm1hdC5XQVJOSU5HOgorICAgICAgICAgICAgICAgIGVsaWYgZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgPSB3YXJuaW5ncyArIDEKIAogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCiAgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KICAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBmb3JtYXQuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKGV2ZW50LmxldmVsbm8gPT0gZm9ybWF0Lk5PVEUgYW5kIGxsZXZlbCAhPSBmb3JtYXQuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vIDw9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5OT1RFIGFuZCAoZXZlbnQubGV2ZWxubyA8IGxsZXZlbCBvciAoZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgbGxldmVsICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5WRVJCT1NFKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgICMgUHJlZml4IHRhc2sgbWVzc2FnZXMgd2l0aCByZWNpcGUvdGFzawotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkIGluIGhlbHBlci5ydW5uaW5nX3Rhc2tzIGFuZCBldmVudC5sZXZlbG5vICE9IGZvcm1hdC5QTEFJTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbZXZlbnQudGFza3BpZF0KKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucGlkbWFwIGFuZCBldmVudC5sZXZlbG5vICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5QTEFJTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbaGVscGVyLnBpZG1hcFtldmVudC50YXNrcGlkXV0KICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IHRhc2tpbmZvWyd0aXRsZSddICsgJzogJyArIGV2ZW50Lm1zZwogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICdmbicpOgogICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSBldmVudC5mbiArICc6ICcgKyBldmVudC5tc2cKLSAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKGV2ZW50Lm5hbWUpLmhhbmRsZShldmVudCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50KToKQEAgLTUzOSw2ICs2NjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCiAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IG5ld19wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgZXZlbnQudG90YWwpLnN0YXJ0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CkBAIC01ODksNiArNzEzLDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEV4aXQpOgogICAgICAgICAgICAgICAgIGlmIG5vdCByZXR1cm5fdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IGV2ZW50LmV4aXRjb2RlCisgICAgICAgICAgICAgICAgbWFpbi5zaHV0ZG93biA9IDIKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgKGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCwgYmIuY29va2VyLkNvb2tlckV4aXQpKToKICAgICAgICAgICAgICAgICBtYWluLnNodXRkb3duID0gMgpAQCAtNjM4LDYgKzc2Myw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCk6CiAgICAgICAgICAgICAgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAxOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIuY2xlYXJGb290ZXIoKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBuZXdfcHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIGV2ZW50LnRvdGFsKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3Muc3RhcnQoRmFsc2UpCiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTc0NSw4ICs4NzEsNiBAQAogICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgcGFzcwogCi0gICAgaWYgY29uc29sZWxvZzoKLSAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5jbG9zZSgpCisgICAgbG9nZ2luZy5zaHV0ZG93bigpCiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkKaW5kZXggYzQyMjczMi4uZGE0ZmJlYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQpAQCAtMzcsNyArMzcsNyBAQAogCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lLCBzdWJwcm9jZXNzCitpbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lCiAKIHRyeToKICAgICBpbXBvcnQgY3Vyc2VzCkBAIC00Niw3ICs0Niw2IEBACiAKIGltcG9ydCBiYgogaW1wb3J0IHhtbHJwYy5jbGllbnQKLWZyb20gYmIgaW1wb3J0IHVpCiBmcm9tIGJiLnVpIGltcG9ydCB1aWhlbHBlcgogCiBwYXJzZXNwaW4gPSBpdGVydG9vbHMuY3ljbGUoIHInfC8tXFwnICkKQEAgLTIzOSw3ICsyMzgsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmQhICVzIiAlIHJldCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQppbmRleCA1MGE5NDNjLi44ZmZmMjQ0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CkBAIC0xMSwxMCArMTEsOCBAQAogaW1wb3J0IGdpCiBnaS5yZXF1aXJlX3ZlcnNpb24oJ0d0aycsICczLjAnKQogZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdkaywgR09iamVjdAotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbHJwYyBpbXBvcnQgY2xpZW50Ci1pbXBvcnQgdGltZQogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMjAyLDcgKzIwMCw3IEBACiAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgZWxpZiBub3QgcmV0OgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiByZXR1cm5lZCAlcyIgJSAoY21kbGluZSwgcmV0KSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZXhjZXB0IGNsaWVudC5GYXVsdCBhcyB4OgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90ZWFtY2l0eS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NDI5MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKQEAgLTAsMCArMSwzOTggQEAKKyMKKyMgVGVhbUNpdHkgVUkgSW1wbGVtZW50YXRpb24KKyMKKyMgSW1wbGVtZW50cyBhIFRlYW1DaXR5IGZyb250ZW5kIGZvciB0aGUgQml0QmFrZSB1dGlsaXR5LCB2aWEgc2VydmljZSBtZXNzYWdlcy4KKyMgU2VlIGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC90ZWFtY2l0eS9idWlsZC1zY3JpcHQtaW50ZXJhY3Rpb24td2l0aC10ZWFtY2l0eS5odG1sCisjCisjIEJhc2VkIG9uIG5jdXJzZXMucHkgYW5kIGtub3R0eS5weSwgdmFyaW91c2x5IGJ5IE1pY2hhZWwgTGF1ZXIgYW5kIFJpY2hhcmQgUHVyZGllCisjCisjIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsICdNaWNrZXknIExhdWVyCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDEyIFJpY2hhcmQgUHVyZGllCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgQXV0aG9yOiBDaHJpcyBMYXBsYW50ZSA8Y2hyaXMubGFwbGFudGVAYWdpbGVudC5jb20+CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG1hdGgKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgeG1scnBjLmNsaWVudAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKKworaW1wb3J0IGJiCitpbXBvcnQgYmIuYnVpbGQKK2ltcG9ydCBiYi5jb21tYW5kCitpbXBvcnQgYmIuY29va2VyCitpbXBvcnQgYmIuZXZlbnQKK2ltcG9ydCBiYi5leGNlcHRpb25zCitpbXBvcnQgYmIucnVucXVldWUKK2Zyb20gYmIudWkgaW1wb3J0IHVpaGVscGVyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKKworCitjbGFzcyBUZWFtQ2l0eVVJOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fYmxvY2tfc3RhY2sgPSBbXQorICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVzY2FwZV9zZXJ2aWNlX3ZhbHVlKGNscywgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgRXNjYXBlIGEgdmFsdWUgZm9yIGluY2x1c2lvbiBpbiBhIHNlcnZpY2UgbWVzc2FnZS4gVGVhbUNpdHkgdXNlcyB0aGUgdmVydGljYWwgcGlwZSBjaGFyYWN0ZXIgZm9yIGVzY2FwaW5nLgorICAgICAgICBTZWU6IGh0dHBzOi8vY29uZmx1ZW5jZS5qZXRicmFpbnMuY29tL2Rpc3BsYXkvVENEMTAvQnVpbGQrU2NyaXB0K0ludGVyYWN0aW9uK3dpdGgrVGVhbUNpdHkjQnVpbGRTY3JpcHRJbnRlcmFjdGlvbndpdGhUZWFtQ2l0eS1Fc2NhcGVkdmFsdWVzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcmUuc3ViKHIiKFsnfFxbXF1dKSIsIHIifFwxIiwgdmFsdWUpLnJlcGxhY2UoIlxuIiwgInxuIikucmVwbGFjZSgiXHIiLCAifHIiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVtaXRfc2VydmljZV9tZXNzYWdlKGNscywgbWVzc2FnZV90eXBlLCAqKmt3YXJncyk6CisgICAgICAgIHByaW50KGNscy5mb3JtYXRfc2VydmljZV9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgKiprd2FyZ3MpLCBmbHVzaD1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsICoqa3dhcmdzKToKKyAgICAgICAgcGF5bG9hZCA9ICIgIi5qb2luKFsiezB9PSd7MX0nIi5mb3JtYXQoaywgY2xzLmVzY2FwZV9zZXJ2aWNlX3ZhbHVlKHYpKSBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKV0pCisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gezF9XSIuZm9ybWF0KG1lc3NhZ2VfdHlwZSwgcGF5bG9hZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlbWl0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsIG1lc3NhZ2UpOgorICAgICAgICBwcmludChjbHMuZm9ybWF0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UobWVzc2FnZV90eXBlLCBtZXNzYWdlKSwgZmx1c2g9VHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmb3JtYXRfc2ltcGxlX3NlcnZpY2VfbWVzc2FnZShjbHMsIG1lc3NhZ2VfdHlwZSwgbWVzc2FnZSk6CisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gJ3sxfSddIi5mb3JtYXQobWVzc2FnZV90eXBlLCBjbHMuZXNjYXBlX3NlcnZpY2VfdmFsdWUobWVzc2FnZSkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZm9ybWF0X2J1aWxkX21lc3NhZ2UoY2xzLCB0ZXh0LCBzdGF0dXMpOgorICAgICAgICByZXR1cm4gY2xzLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXRleHQsIHN0YXR1cz1zdGF0dXMpCisKKyAgICBkZWYgYmxvY2tfc3RhcnQoc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX2Jsb2NrX3N0YWNrLmFwcGVuZChuYW1lKQorICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja09wZW5lZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBibG9ja19lbmQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX3N0YWNrOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2Jsb2NrX3N0YWNrLnBvcCgpCisgICAgICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja0Nsb3NlZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBwcm9ncmVzcyhzZWxmLCBtZXNzYWdlLCBwZXJjZW50LCBleHRyYT1Ob25lKToKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgcGVyY2VudCA9ICJ7MDogPjMuMGZ9Ii5mb3JtYXQocGVyY2VudCkKKworICAgICAgICByZXBvcnQgPSBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZSBcCisgICAgICAgICAgICAgICAgb3IgKHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGVbMF0gPT0gbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsxXSAhPSBwZXJjZW50CisgICAgICAgICAgICAgICAgICAgIGFuZCAobm93IC0gc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsyXSkubWljcm9zZWNvbmRzID49IDUwMDApIFwKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlWzBdICE9IG1lc3NhZ2U6CisgICAgICAgICAgICByZXBvcnQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gKG1lc3NhZ2UsIHBlcmNlbnQsIG5vdykKKworICAgICAgICBpZiByZXBvcnQgb3IgcGVyY2VudCBpbiBbMCwgMTAwXToKKyAgICAgICAgICAgIHNlbGYuZW1pdF9zaW1wbGVfc2VydmljZV9tZXNzYWdlKCJwcm9ncmVzc01lc3NhZ2UiLCAiezB9OiB7MX0lezJ9Ii5mb3JtYXQobWVzc2FnZSwgcGVyY2VudCwgZXh0cmEgb3IgIiIpKQorCisKK2NsYXNzIFRlYW1jaXR5TG9nRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZCk6CisgICAgICAgIGRldGFpbHMgPSAiIgorICAgICAgICBpZiBoYXNhdHRyKHJlY29yZCwgJ2JiX2V4Y19mb3JtYXR0ZWQnKToKKyAgICAgICAgICAgIGRldGFpbHMgPSAnJy5qb2luKHJlY29yZC5iYl9leGNfZm9ybWF0dGVkKQorICAgICAgICBlbGlmIGhhc2F0dHIocmVjb3JkLCAnYmJfZXhjX2luZm8nKToKKyAgICAgICAgICAgIGV0eXBlLCB2YWx1ZSwgdGIgPSByZWNvcmQuYmJfZXhjX2luZm8KKyAgICAgICAgICAgIGZvcm1hdHRlZCA9IGJiLmV4Y2VwdGlvbnMuZm9ybWF0X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD01KQorICAgICAgICAgICAgZGV0YWlscyA9ICcnLmpvaW4oZm9ybWF0dGVkKQorCisgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIFtiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IsIGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5DUklUSUNBTF06CisgICAgICAgICAgICAjIEVSUk9SIGdldHMgYSBzZXBhcmF0ZSBlcnJvckRldGFpbHMgZmllbGQKKyAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cmVjb3JkLmdldE1lc3NhZ2UoKSwgc3RhdHVzPSJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXRhaWxzPWRldGFpbHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXlsb2FkID0gcmVjb3JkLmdldE1lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGV0YWlsczoKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9ICJcbiIgKyBkZXRhaWxzCisgICAgICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgbXNnID0gcGF5bG9hZAorICAgICAgICAgICAgZWxpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKKyAgICAgICAgICAgICAgICBtc2cgPSBUZWFtQ2l0eVVJLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXBheWxvYWQsIHN0YXR1cz0iV0FSTklORyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cGF5bG9hZCwgc3RhdHVzPSJOT1JNQUwiKQorCisgICAgICAgIHJldHVybiBtc2cKKworCitfZXZ0X2xpc3QgPSBbImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCisgICAgICAgICAgICAgImJiLmJ1aWxkLlRhc2tGYWlsZWQiLCAiYmIuYnVpbGQuVGFza0Jhc2UiLCAiYmIuZXZlbnQuUGFyc2VTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyIsICJiYi5ldmVudC5QYXJzZUNvbXBsZXRlZCIsICJiYi5ldmVudC5DYWNoZUxvYWRTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkIiwgImJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmNvbW1hbmQuQ29tbWFuZEV4aXQiLCAiYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkIiwgImJiLmNvb2tlci5Db29rZXJFeGl0IiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMiLCAiYmIuZXZlbnQuTm9Qcm92aWRlciIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza1N0YXJ0ZWQiLAorICAgICAgICAgICAgICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTdGFydGVkIiwgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza0ZhaWxlZCIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmV2ZW50LkJ1aWxkQmFzZSIsICJiYi5idWlsZC5UYXNrU3RhcnRlZCIsICJiYi5idWlsZC5UYXNrU3VjY2VlZGVkIiwgImJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQiLAorICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQiLCAiYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzIiwgImJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCJdCisKKworZGVmIF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKToKKyAgICAjIEdldCB2YWx1ZXMgb2YgdmFyaWFibGVzIHdoaWNoIGNvbnRyb2wgb3VyIG91dHB1dAorICAgIGluY2x1ZGVsb2dzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1MgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIGxvZ2xpbmVzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HU19MSU5FUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1NfTElORVMgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMKKworCitkZWYgbWFpbihzZXJ2ZXIsIGV2ZW50SGFuZGxlciwgcGFyYW1zKToKKyAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKKworICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcyA9IF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKQorCisgICAgdWkgPSBUZWFtQ2l0eVVJKCkKKworICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQorCisgICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQorICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKKyAgICBmb3JtYXQgPSBUZWFtY2l0eUxvZ0Zvcm1hdHRlcigpCisgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPT0gMDoKKyAgICAgICAgZm9yY2VsZXZlbCA9IE5vbmUKKyAgICBlbGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID4gMjoKKyAgICAgICAgZm9yY2VsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUgorICAgIGVsc2U6CisgICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGNvbnNvbGUsIGJiLm1zZy5CQkxvZ0ZpbHRlclN0ZE91dCwgZm9yY2VsZXZlbCkKKyAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihlcnJjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRFcnIpCisgICAgY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQorICAgIGVycmNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKKyAgICBpZiBub3QgYmIubXNnLmhhc19jb25zb2xlX2hhbmRsZXIobG9nZ2VyKToKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoZXJyY29uc29sZSkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnJlbW90ZV9zZXJ2ZXIgYW5kIHBhcmFtcy5vcHRpb25zLmtpbGxfc2VydmVyOgorICAgICAgICBzZXJ2ZXIudGVybWluYXRlU2VydmVyKCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBwYXJhbXMub2JzZXJ2ZV9vbmx5OgorICAgICAgICBsb2dnZXIuZXJyb3IoIk9ic2VydmUtb25seSBtb2RlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBVSSIpCisgICAgICAgIHJldHVybiAxCisKKyAgICBsbGV2ZWwsIGRlYnVnX2RvbWFpbnMgPSBiYi5tc2cuY29uc3RydWN0TG9nT3B0aW9ucygpCisgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzZXRFdmVudE1hc2siLCBzZXJ2ZXIuZ2V0RXZlbnRIYW5kbGUoKSwgbGxldmVsLCBkZWJ1Z19kb21haW5zLCBfZXZ0X2xpc3RdKQorCisgICAgdHJ5OgorICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCisgICAgICAgIGNtZGxpbmUgPSBwYXJhbXMucGFyc2VBY3Rpb25zKCkKKyAgICAgICAgaWYgbm90IGNtZGxpbmU6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk5vIHRhc2sgZ2l2ZW4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaWYgJ21zZycgaW4gY21kbGluZSBhbmQgY21kbGluZVsnbXNnJ106CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoY21kbGluZVsnbXNnJ10pCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBjbWRsaW5lID0gY21kbGluZVsnYWN0aW9uJ10KKyAgICAgICAgcmV0LCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKGNtZGxpbmUpCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJ7MH06IHsxfSIuZm9ybWF0KGNtZGxpbmUsIGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgbm90IHJldDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmU6IHswfSIuZm9ybWF0KHJlKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJYTUxSUEMgRmF1bHQgZ2V0dGluZyBjb21tYW5kbGluZTogezB9Ii5mb3JtYXQoeCkpCisgICAgICAgIHJldHVybiAxCisKKyAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IE5vbmUKKyAgICBpc190YXNrc19ydW5uaW5nID0gRmFsc2UKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQorICAgICAgICAgICAgaWYgbm90IGV2ZW50OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGhlbHBlci5ldmVudEhhbmRsZXIoZXZlbnQpCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tCYXNlKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhldmVudC5fbWVzc2FnZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlcG9ydCBzc3RhdGUgZmFpbHVyZXMgYXMgZXJyb3JzLCBzaW5jZSBZb2N0byB3aWxsIGp1c3QgcnVuIHRoZSB0YXNrcyBmb3IgcmVhbAorICAgICAgICAgICAgICAgIGlmIGV2ZW50Lm1zZyA9PSAiTm8gc3VpdGFibGUgc3RhZ2luZyBwYWNrYWdlIGZvdW5kIiBvciAoZXZlbnQubXNnLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAiRmV0Y2hlciBmYWlsdXJlOiBVbmFibGUgdG8gZmluZCBmaWxlIikgYW5kICJkb3dubG9hZGZpbGVuYW1lIiBpbiBldmVudC5tc2cgYW5kICJzc3RhdGUiIGluIGV2ZW50Lm1zZyk6CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCisgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIGxsZXZlbCAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIFByZWZpeCB0YXNrIG1lc3NhZ2VzIHdpdGggcmVjaXBlL3Rhc2sKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucnVubmluZ190YXNrcyBhbmQgZXZlbnQubGV2ZWxubyAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNraW5mbyA9IGhlbHBlci5ydW5uaW5nX3Rhc2tzW2V2ZW50LnRhc2twaWRdCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSB0YXNraW5mb1sndGl0bGUnXSArICc6ICcgKyBldmVudC5tc2cKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAnZm4nKToKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCisgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJMb2dmaWxlIGZvciBmYWlsZWQgc2V0c2NlbmUgdGFzayBpcyAlcyIgJSBldmVudC5sb2dmaWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBydCA9ICJ7MH0tezF9OnsyfSIuZm9ybWF0KGV2ZW50LnBuLCBldmVudC5wdi5yZXBsYWNlKCJBVVRPSU5DIiwgIjAiKSwgZXZlbnQudGFzaykKKworICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBldmVudC5sb2dmaWxlCisgICAgICAgICAgICAgICAgaWYgbm90IGxvZ2ZpbGUgb3Igbm90IG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJidWlsZFByb2JsZW0iLCBkZXNjcmlwdGlvbj0iezB9XG5Vbmtub3duIGZhaWx1cmUgKG5vIGxvZyBmaWxlIGF2YWlsYWJsZSkiLmZvcm1hdChydCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVGb3JjZVNodXRkb3duIl0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBkZXRhaWxzID0gZGVxdWUobWF4bGVuPWxvZ2xpbmVzKQorICAgICAgICAgICAgICAgIGVycm9yX2xpbmVzID0gW10KKyAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbG9ncyBhbmQgbm90IGV2ZW50LmVycnByaW50ZWQ6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuYXBwZW5kKCcgfCAlcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogYSBsZXNzIHN0dXBpZCBjaGVjayBmb3IgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhc2sgPT0gImRvX2NvbXBpbGUiKSBhbmQgKCJlcnJvcjoiIGluIGxpbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9saW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICAgICAgICAgIGlmIGVycm9yX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJjb21waWxhdGlvblN0YXJ0ZWQiLCBjb21waWxlcj1ydCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3JfbGluZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD1saW5lLCBzdGF0dXM9IkVSUk9SIikKKyAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiY29tcGlsYXRpb25GaW5pc2hlZCIsIGNvbXBpbGVyPXJ0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoImJ1aWxkUHJvYmxlbSIsIGRlc2NyaXB0aW9uPXJ0KQorCisgICAgICAgICAgICAgICAgZXJyID0gIkxvZ2ZpbGUgb2YgZmFpbHVyZSBzdG9yZWQgaW46ICVzIiAlIGxvZ2ZpbGUKKyAgICAgICAgICAgICAgICBpZiBkZXRhaWxzOgorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiezB9IHRhc2sgbG9nIi5mb3JtYXQocnQpKQorICAgICAgICAgICAgICAgICAgICAjIFRlYW1DaXR5IHNlZW1zIHRvIGNob2tlIG9uIHNlcnZpY2UgbWVzc2FnZXMgbG9uZ2VyIHRoYW4gYWJvdXQgNjM4MDAgY2hhcmFjdGVycywgc28gaWYgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBkZXRhaWxzIGlzIGxvbmdlciB0aGFuLCBzYXksIDYwMDAwLCBiYXRjaCBpdCB1cCBpbnRvIHNldmVyYWwgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGRldGFpbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxfbGVuID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSBkZXF1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBkZXRhaWxzIGFuZCBkZXRhaWxfbGVuIDwgNjAwMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBUaGlzIGNvZGUgZG9lc24ndCBib3RoZXIgdG8gaGFuZGxlIGxpbmVzIHRoYXQgdGhlbXNlbHZlcyBhcmUgZXh0cmVtZWx5IGxvbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGRldGFpbHMucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2guYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsX2xlbiArPSBsZW4obGluZSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3RfbWVzc2FnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC5hcHBlbmRsZWZ0KCJMb2cgZGF0YSBmb2xsb3dzOiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9ZXJyLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD0iW2NvbnRpbnVlZF0iLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PWVyciwgc3RhdHVzPSJFUlJPUiIsIGVycm9yRGV0YWlscz0iIikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnByb2Nlc3NuYW1lIGluIFsiSW5pdGlhbGlzaW5nIHRhc2tzIiwgIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSJdOgorICAgICAgICAgICAgICAgICAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IGV2ZW50LnRvdGFsCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KGV2ZW50LnByb2Nlc3NuYW1lKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKToKKyAgICAgICAgICAgICAgICBpZiBldmVudC5wcm9jZXNzbmFtZSBpbiBbIkluaXRpYWxpc2luZyB0YXNrcyIsICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiXToKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgdWkuYmxvY2tfZW5kKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQucHJvY2Vzc25hbWUgaW4gWyJJbml0aWFsaXNpbmcgdGFza3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5Il0gYW5kIGFjdGl2ZV9wcm9jZXNzX3RvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCBldmVudC5wcm9ncmVzcyAqIDEwMCAvIGFjdGl2ZV9wcm9jZXNzX3RvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgdWkuYmxvY2tfc3RhcnQoIkxvYWRpbmcgY2FjaGUiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKCJMb2FkaW5nIGNhY2hlIiwgbWF0aC5mbG9vcihldmVudC5jdXJyZW50ICogMTAwIC8gZXZlbnQudG90YWwpKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiTG9hZGluZyBjYWNoZSIsIDEwMCkKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VTdGFydGVkKToKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiUGFyc2luZyByZWNpcGVzIGFuZCBjaGVja2luZyB1cHN0cmVhbSByZXZpc2lvbnMiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQudG90YWwgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlBhcnNpbmcgcmVjaXBlcyIsIG1hdGguZmxvb3IoZXZlbnQuY3VycmVudCAqIDEwMCAvIGV2ZW50LnRvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgMTAwKQorICAgICAgICAgICAgICAgIHVpLmJsb2NrX2VuZCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKHN0cihldmVudCkpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvb2tlci5Db29rZXJFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUnVubmluZyBzZXRzY2VuZSB0YXNrcyIsICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdGF0cy5jb21wbGV0ZWQgKyBldmVudC5zdGF0cy5hY3RpdmUgKyBldmVudC5zdGF0cy5mYWlsZWQgKyAxKSAqIDEwMCAvIGV2ZW50LnN0YXRzLnRvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fdG90YWwgPSBldmVudC5zdGF0cy50b3RhbCAtIGV2ZW50LnN0YXRzLnNraXBwZWQKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX2NvbXBsZXRlID0gZXZlbnQuc3RhdHMuY29tcGxldGVkICsgZXZlbnQuc3RhdHMuYWN0aXZlIC0gZXZlbnQuc3RhdHMuc2tpcHBlZCArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBzb21ldGltZXMgdGhpcyBnaXZlcyBvdmVyIDEwMCUKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlJ1bm5pbmcgcnVucXVldWUgdGFza3MiLCAocHNldWRvX2NvbXBsZXRlKSAqIDEwMCAvIHBzZXVkb190b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICh7MH0vezF9KSIuZm9ybWF0KHBzZXVkb19jb21wbGV0ZSwgcHNldWRvX3RvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Mb2dFeGVjVFRZKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGlvZXJyb3I6CisgICAgICAgICAgICAjIGlnbm9yZSBpbnRlcnJ1cHRlZCBpbworICAgICAgICAgICAgaWYgaW9lcnJvci5hcmdzWzBdID09IDQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleCkpCisKKyAgICAgICAgIyBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDI6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJUaGlyZCBLZXlib2FyZCBJbnRlcnJ1cHQsIGV4aXQuXG4iKQorICAgICAgICAjICAgICAgICAgZXhpdGZsYWcgPSBUcnVlCisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDE6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJTZWNvbmQgS2V5Ym9hcmQgSW50ZXJydXB0LCBzdG9wcGluZy4uLlxuIikKKyAgICAgICAgIyAgICAgICAgIF8sIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzdG9wOiAlcyIgJSBlcnJvcikKKyAgICAgICAgIyAgICAgaWYgc2h1dGRvd24gPT0gMDoKKyAgICAgICAgIyAgICAgICAgIG13LmFwcGVuZFRleHQoIktleWJvYXJkIEludGVycnVwdCwgY2xvc2luZyBkb3duLi4uXG4iKQorICAgICAgICAjICAgICAgICAgXywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbInN0YXRlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzaHV0ZG93bjogJXMiICUgZXJyb3IpCisgICAgICAgICMgICAgIHNodXRkb3duID0gc2h1dGRvd24gKyAxCisgICAgICAgICMgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKaW5kZXggNTE4OTJjOS4uOTI2MGY1ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICBpZiBlcnJvcjoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogJXMiICUgKGNtZGxpbmUsIGVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsaWYgcmV0ICE9IFRydWU6CisgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogcmV0dXJuZWQgJXMiICUgKGNtZGxpbmUsIHJldCkpCiAgICAgICAgICAgICByZXR1cm4gMQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkKaW5kZXggZmVkYjA1MC4uMTNkMGQ0YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWV2ZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWlldmVudC5weQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuRXZlbnRIYW5kbGUgPSByZXQKICAgICAgICAgICAgICAgICBlcnJvciA9ICIiCiAKLSAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgZXJybXNnID0gIkNvdWxkIG5vdCByZWdpc3RlciBVSSBldmVudCBoYW5kbGVyLiBFcnJvcjogJXMsIGhvc3QgJXMsICJcCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQppbmRleCBjOGRkN2RmLi40OGQ4MDhhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKQEAgLTE1LDM5ICsxNSw0OCBAQAogICAgICAgICAjIFJ1bm5pbmcgUElEcyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIHRhc2tzIHdlcmUgZXhlY3V0ZWQgaW4KICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMgPSBbXQogICAgICAgICBzZWxmLmZhaWxlZF90YXNrcyA9IFtdCisgICAgICAgIHNlbGYucGlkbWFwID0ge30KICAgICAgICAgc2VsZi50YXNrbnVtYmVyX2N1cnJlbnQgPSAwCiAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IDAKIAogICAgIGRlZiBldmVudEhhbmRsZXIoc2VsZiwgZXZlbnQpOgorICAgICAgICAjIFBJRHMgYXJlIGEgYmFkIGlkZWEgYXMgdGhleSBjYW4gYmUgcmV1c2VkIGJlZm9yZSB3ZSBwcm9jZXNzIGFsbCBVSSBldmVudHMuCisgICAgICAgICMgV2UgbWFpbnRhaW4gYSAnZnV6enknIG1hdGNoIGZvciBUYXNrUHJvZ3Jlc3Mgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIG1hdGNoCisgICAgICAgIGRlZiByZW1vdmV0aWQocGlkLCB0aWQpOgorICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKHRpZCkKKyAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXQorICAgICAgICAgICAgaWYgc2VsZi5waWRtYXBbcGlkXSA9PSB0aWQ6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYucGlkbWFwW3BpZF0KKyAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKKwogICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6CisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzawogICAgICAgICAgICAgaWYgZXZlbnQuX21jICE9ICJkZWZhdWx0IjoKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpLCAncGlkJyA6IGV2ZW50LnBpZCB9CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdID0geyAndGl0bGUnIDogIiVzICVzIiAlIChldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZChldmVudC5waWQpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3RpZF0gPSB7ICd0aXRsZScgOiAiJXMgJXMiICUgKGV2ZW50Ll9wYWNrYWdlLCBldmVudC5fdGFzayksICdzdGFydHRpbWUnIDogdGltZS50aW1lKCksICdwaWQnIDogZXZlbnQucGlkIH0KKyAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICBzZWxmLnBpZG1hcFtldmVudC5waWRdID0gdGlkCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6Ci0gICAgICAgICAgICBkZWwgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLnJlbW92ZShldmVudC5waWQpCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzaworICAgICAgICAgICAgcmVtb3ZldGlkKGV2ZW50LnBpZCwgdGlkKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgotICAgICAgICAgICAgZGVsIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdCi0gICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5yZW1vdmUoZXZlbnQucGlkKQorICAgICAgICAgICAgdGlkID0gZXZlbnQuX2ZuICsgIjoiICsgZXZlbnQuX3Rhc2sKKyAgICAgICAgICAgIHJlbW92ZXRpZChldmVudC5waWQsIHRpZCkKICAgICAgICAgICAgICMgRG9uJ3QgYWRkIHRvIHRoZSBmYWlsZWQgdGFza3MgbGlzdCBzaW5jZSB0aGlzIGlzIGUuZy4gYSBzZXRzY2VuZSB0YXNrIGZhaWx1cmUKLSAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKLSAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXQotICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKGV2ZW50LnBpZCkKKyAgICAgICAgICAgIHRpZCA9IGV2ZW50Ll9mbiArICI6IiArIGV2ZW50Ll90YXNrCisgICAgICAgICAgICByZW1vdmV0aWQoZXZlbnQucGlkLCB0aWQpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZF90YXNrcy5hcHBlbmQoIHsgJ3RpdGxlJyA6ICIlcyAlcyIgJSAoZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKX0pCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CiAgICAgICAgICAgICBzZWxmLnRhc2tudW1iZXJfY3VycmVudCA9IGV2ZW50LnN0YXRzLmNvbXBsZXRlZCArIGV2ZW50LnN0YXRzLmFjdGl2ZSArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKICAgICAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IGV2ZW50LnN0YXRzLnRvdGFsCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1Byb2dyZXNzKToKLSAgICAgICAgICAgIGlmIGV2ZW50LnBpZCA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF1bJ3Byb2dyZXNzJ10gPSBldmVudC5wcm9ncmVzcwotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydyYXRlJ10gPSBldmVudC5yYXRlCisgICAgICAgICAgICBpZiBldmVudC5waWQgPiAwIGFuZCBldmVudC5waWQgaW4gc2VsZi5waWRtYXA6CisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3NlbGYucGlkbWFwW2V2ZW50LnBpZF1dWydwcm9ncmVzcyddID0gZXZlbnQucHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3Nbc2VsZi5waWRtYXBbZXZlbnQucGlkXV1bJ3JhdGUnXSA9IGV2ZW50LnJhdGUKICAgICAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDhkNDBiY2QuLjVmNTc2N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtMjQsNyArMjQsNiBAQAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGVycm5vCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgYXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb3B5CiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGdldHN0YXR1c291dHB1dApAQCAtNDI4LDEwICs0MjcsMTEgQEAKICAgICAgICAgZm9yIGxvY2tmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlKSkKIAotICAgIHlpZWxkCi0KLSAgICBmb3IgbG9jayBpbiBsb2NrczoKLSAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBmb3IgbG9jayBpbiBsb2NrczoKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKIAogQGNvbnRleHRtYW5hZ2VyCiBkZWYgdGltZW91dChzZWNvbmRzKToKQEAgLTU1Niw2ICs1NTYsMjAgQEAKICAgICBpbXBvcnQgaGFzaGxpYgogICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMSgpLCBmaWxlbmFtZSkKIAorZGVmIHNoYTM4NF9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFNIQTM4NCBjaGVja3N1bSBvZiB0aGUgZmlsZW5hbWUKKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMzg0KCksIGZpbGVuYW1lKQorCitkZWYgc2hhNTEyX2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgU0hBNTEyIGNoZWNrc3VtIG9mIHRoZSBmaWxlbmFtZQorICAgICIiIgorICAgIGltcG9ydCBoYXNobGliCisgICAgcmV0dXJuIF9oYXNoZXIoaGFzaGxpYi5zaGE1MTIoKSwgZmlsZW5hbWUpCisKIGRlZiBwcmVzZXJ2ZWRfZW52dmFyc19leHBvcnRlZCgpOgogICAgICIiIlZhcmlhYmxlcyB3aGljaCBhcmUgdGFrZW4gZnJvbSB0aGUgZW52aXJvbm1lbnQgYW5kIHBsYWNlZCBpbiBhbmQgZXhwb3J0ZWQKICAgICBmcm9tIHRoZSBtZXRhZGF0YSIiIgpAQCAtODUwLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBpZiBkZXN0ZXhpc3RzIGFuZCBub3Qgc3RhdC5TX0lTRElSKGRzdGF0W3N0YXQuU1RfTU9ERV0pOgogICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQogICAgICAgICAgICAgb3Muc3ltbGluayh0YXJnZXQsIGRlc3QpCi0gICAgICAgICAgICAjb3MubGNob3duKGRlc3Qsc3N0YXRbc3RhdC5TVF9VSURdLHNzdGF0W3N0YXQuU1RfR0lEXSkKKyAgICAgICAgICAgIG9zLmxjaG93bihkZXN0LHNzdGF0W3N0YXQuU1RfVUlEXSxzc3RhdFtzdGF0LlNUX0dJRF0pCiAgICAgICAgICAgICByZXR1cm4gb3MubHN0YXQoZGVzdCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoImNvcHlmaWxlOiBmYWlsZWQgdG8gY3JlYXRlIHN5bWxpbmsgJXMgdG8gJXMgKCVzKSIgJSAoZGVzdCwgdGFyZ2V0LCBlKSkKQEAgLTEwMjUsNiArMTAzOSw0MyBAQAogICAgICAgICBjaGVja3ZhbHVlcyA9IHNldChjaGVja3ZhbHVlcykKICAgICByZXR1cm4gJyAnLmpvaW4oc29ydGVkKGNoZWNrdmFsdWVzICYgdmFsKSkKIAorCitkZWYgZ2V0X3JlZmVyZW5jZWRfdmFycyhzdGFydF9leHByLCBkKToKKyAgICAiIiIKKyAgICA6cmV0dXJuOiBuYW1lcyBvZiB2YXJzIHJlZmVyZW5jZWQgaW4gc3RhcnRfZXhwciAocmVjdXJzaXZlbHkpLCBpbiBxdWFzaS1CRlMgb3JkZXIgKHZhcmlhYmxlcyB3aXRoaW4gdGhlIHNhbWUgbGV2ZWwKKyAgICBhcmUgb3JkZXJlZCBhcmJpdHJhcmlseSkKKyAgICAiIiIKKworICAgIHNlZW4gPSBzZXQoKQorICAgIHJldCA9IFtdCisKKyAgICAjIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgcXVldWUgaXMgdGhlIHVuZXhwYW5kZWQgc3RhcnQgZXhwcmVzc2lvbgorICAgIHF1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUoW3N0YXJ0X2V4cHJdKQorICAgICMgU3Vic2VxdWVudCBlbnRyaWVzIHdpbGwgYmUgdmFyaWFibGUgbmFtZXMsIHNvIHdlIG5lZWQgdG8gdHJhY2sgd2hldGhlciBvciBub3QgZW50cnkgcmVxdWlyZXMgZ2V0VmFyCisgICAgaXNfZmlyc3QgPSBUcnVlCisKKyAgICBlbXB0eV9kYXRhID0gYmIuZGF0YS5pbml0KCkKKyAgICB3aGlsZSBxdWV1ZToKKyAgICAgICAgZW50cnkgPSBxdWV1ZS5wb3BsZWZ0KCkKKyAgICAgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgICAgICAjIEVudHJ5IGlzIHRoZSBzdGFydCBleHByZXNzaW9uIC0gbm8gZXhwYW5zaW9uIG5lZWRlZAorICAgICAgICAgICAgaXNfZmlyc3QgPSBGYWxzZQorICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGVudHJ5CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB2YXJpYWJsZSBuYW1lIC0gbmVlZCB0byBnZXQgdGhlIHZhbHVlCisgICAgICAgICAgICBleHByZXNzaW9uID0gZC5nZXRWYXIoZW50cnksIEZhbHNlKQorICAgICAgICAgICAgcmV0LmFwcGVuZChlbnRyeSkKKworICAgICAgICAjIGV4cGFuZFdpdGhSZWZzIGlzIGhvdyB3ZSBhY3R1YWxseSBnZXQgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGVzIGluIHRoZSBleHByZXNzaW9uLiBXZSBjYWxsIGl0IHVzaW5nIGFuIGVtcHR5CisgICAgICAgICMgZGF0YSBzdG9yZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0aGUgdmFyaWFibGVzIGRpcmVjdGx5IHVzZWQgaW4gdGhlIGV4cHJlc3Npb24uIEl0IHJldHVybnMgYSBzZXQsIHdoaWNoIGlzIHdoYXQKKyAgICAgICAgIyBkb29tcyB1cyB0byBvbmx5IGV2ZXIgYmUgInF1YXNpLUJGUyIgcmF0aGVyIHRoYW4gZnVsbCBCRlMuCisgICAgICAgIG5ld192YXJzID0gZW1wdHlfZGF0YS5leHBhbmRXaXRoUmVmcyhleHByZXNzaW9uLCBOb25lKS5yZWZlcmVuY2VzIC0gc2V0KHNlZW4pCisKKyAgICAgICAgcXVldWUuZXh0ZW5kKG5ld192YXJzKQorICAgICAgICBzZWVuLnVwZGF0ZShuZXdfdmFycykKKyAgICByZXR1cm4gcmV0CisKKwogZGVmIGNwdV9jb3VudCgpOgogICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKIApAQCAtMTU2MCwzICsxNjExLDI5IEBACiAgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGJiLmJ1aWxkLmxvZ2Zvcm1hdHRlci5mb3JtYXQocmVjb3JkKSkKICAgICBkZWYgY29udGFpbnMoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJldHVybiAobWVzc2FnZSBpbiBzZWxmLm1lc3NhZ2VzKQorCitkZWYgaXNfc2VtdmVyKHZlcnNpb24pOgorICAgICIiIgorICAgICAgICBJcyB0aGUgdmVyc2lvbiBzdHJpbmcgZm9sbG93aW5nIHRoZSBzZW12ZXIgc2VtYW50aWM/CisKKyAgICAgICAgaHR0cHM6Ly9zZW12ZXIub3JnL3NwZWMvdjIuMC4wLmh0bWwKKyAgICAiIiIKKyAgICByZWdleCA9IHJlLmNvbXBpbGUoCisgICAgciIiIgorICAgIF4KKyAgICAoMHxbMS05XVxkKilcLigwfFsxLTldXGQqKVwuKDB8WzEtOV1cZCopCisgICAgKD86LSgKKyAgICAgICAgKD86MHxbMS05XVxkKnxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKQorICAgICAgICAoPzpcLig/OjB8WzEtOV1cZCp8XGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikpKgorICAgICkpPworICAgICg/OlwrKAorICAgICAgICBbMC05YS16QS1aLV0rCisgICAgICAgICg/OlwuWzAtOWEtekEtWi1dKykqCisgICAgKSk/CisgICAgJAorICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgIGlmIHJlZ2V4Lm1hdGNoKHZlcnNpb24pIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKaW5kZXggYzU2NTdkMy4uNmM3NmVmMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBkZWYgdGluZm9pbF9pbml0KHNlbGYsIHRpbmZvaWwpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuYmJsYXllcnMgPSAoc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJMQVlFUlMnKSBvciAiIikuc3BsaXQoKQotICAgICAgICBsYXllcmNvbmZzID0gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgICAgIGxheWVyY29uZnMgPSBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoJ0JCRklMRV9DT0xMRUNUSU9OUycpCiAgICAgICAgIHNlbGYuYmJmaWxlX2NvbGxlY3Rpb25zID0ge2xheWVyOiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHBhdGgpKSBmb3IgbGF5ZXIsIHBhdGggaW4gbGF5ZXJjb25mcy5pdGVtcygpfQogCiAgICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5CmluZGV4IDU3Y2Q5MDIuLjk1YjY3YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICBUaGlzIGNsYXNzIGluaGVyaXRzIEFjdGlvblBsdWdpbiB0byBnZXQgZG9fYWRkX2xheWVyLgogICAgICIiIgogCi0gICAgZGVmIGdldF9mZXRjaF9sYXllcihzZWxmLCBmZXRjaGRpciwgdXJsLCBzdWJkaXIsIGZldGNoX2xheWVyKToKKyAgICBkZWYgZ2V0X2ZldGNoX2xheWVyKHNlbGYsIGZldGNoZGlyLCB1cmwsIHN1YmRpciwgZmV0Y2hfbGF5ZXIsIGJyYW5jaCwgc2hhbGxvdz1GYWxzZSk6CiAgICAgICAgIGxheWVybmFtZSA9IHNlbGYuZ2V0X2xheWVyX25hbWUodXJsKQogICAgICAgICBpZiBvcy5wYXRoLnNwbGl0ZXh0KGxheWVybmFtZSlbMV0gPT0gJy5naXQnOgogICAgICAgICAgICAgbGF5ZXJuYW1lID0gb3MucGF0aC5zcGxpdGV4dChsYXllcm5hbWUpWzBdCkBAIC0zMiw5ICszMiwxNSBAQAogICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguam9pbihyZXBvZGlyLCBzdWJkaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXBvZGlyKToKICAgICAgICAgICAgIGlmIGZldGNoX2xheWVyOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbChbJ2dpdCcsICdjbG9uZScsIHVybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgY21kID0gWydnaXQnLCAnY2xvbmUnXQorICAgICAgICAgICAgICAgIGlmIHNoYWxsb3c6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctLWRlcHRoJywgJzEnXSkKKyAgICAgICAgICAgICAgICBpZiBicmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctYicgLCBicmFuY2hdKQorICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoW3VybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGRvd25sb2FkICVzIiAlIHVybCkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZG93bmxvYWQgJXMgKCVzKSIgJSAodXJsLCBicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJkaXIsIGxheWVybmFtZSwgbGF5ZXJkaXIKQEAgLTE3MSw3ICsxNzcsOSBAQAogICAgICAgICAgICAgICAgIHN1YmRpciwgbmFtZSwgbGF5ZXJkaXIgPSBzZWxmLmdldF9mZXRjaF9sYXllcihmZXRjaGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLmxheWVyLnZjc191cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC52Y3Nfc3ViZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2guYWN0dWFsX2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc2hhbGxvdykKICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgICAgICAgICAgIyBFcnJvciBhbHJlYWR5IHNob3duCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCkBAIC0yMDQsNiArMjEyLDcgQEAKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2ggPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1mZXRjaCcsIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaCwgcGFyc2VyZWNpcGVzPUZhbHNlKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1uJywgJy0tc2hvdy1vbmx5JywgaGVscD0nc2hvdyBkZXBlbmRlbmNpZXMgYW5kIGRvIG5vdGhpbmcgZWxzZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icmFuY2gnLCBoZWxwPSdicmFuY2ggbmFtZSB0byBmZXRjaCcpCisgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaGFsbG93JywgaGVscD0nZG8gb25seSBzaGFsbG93IGNsb25lcyAoLS1kZXB0aD0xKScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pZ25vcmUnLCBoZWxwPSdhc3N1bWUgdGhlIHNwZWNpZmllZCBsYXllcnMgZG8gbm90IG5lZWQgdG8gYmUgZmV0Y2hlZC9hZGRlZCAoc2VwYXJhdGUgbXVsdGlwbGUgbGF5ZXJzIHdpdGggY29tbWFzLCBubyBzcGFjZXMpJywgbWV0YXZhcj0nTEFZRVInKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJ2xheWVybmFtZScsIG5hcmdzPScrJywgaGVscD0nbGF5ZXIgdG8gZmV0Y2gnKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQppbmRleCA3ZGI0OWM4Li5lMmNjMzEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKQEAgLTQ2LDcgKzQ2LDcgQEAKIGFyZSBvdmVybGF5ZWQgd2lsbCBhbHNvIGJlIGxpc3RlZCwgd2l0aCBhICIgKHNraXBwZWQpIiBzdWZmaXguCiAiIiIKIAotICAgICAgICBpdGVtc19saXN0ZWQgPSBzZWxmLmxpc3RfcmVjaXBlcygnT3ZlcmxheWVkIHJlY2lwZXMnLCBOb25lLCBUcnVlLCBhcmdzLnNhbWVfdmVyc2lvbiwgYXJncy5maWxlbmFtZXMsIEZhbHNlLCBUcnVlLCBOb25lLCBGYWxzZSwgTm9uZSkKKyAgICAgICAgaXRlbXNfbGlzdGVkID0gc2VsZi5saXN0X3JlY2lwZXMoJ092ZXJsYXllZCByZWNpcGVzJywgTm9uZSwgVHJ1ZSwgYXJncy5zYW1lX3ZlcnNpb24sIGFyZ3MuZmlsZW5hbWVzLCBGYWxzZSwgVHJ1ZSwgTm9uZSwgRmFsc2UsIE5vbmUsIGFyZ3MubWMpCiAKICAgICAgICAgIyBDaGVjayBmb3Igb3ZlcmxheWVkIC5iYmNsYXNzIGZpbGVzCiAgICAgICAgIGNsYXNzZXMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsaXN0KQpAQCAtMTEyLDkgKzExMiw5IEBACiAgICAgICAgICAgICB0aXRsZSA9ICdNYXRjaGluZyByZWNpcGVzOicKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRpdGxlID0gJ0F2YWlsYWJsZSByZWNpcGVzOicKLSAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCkKKyAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCwgYXJncy5tYykKIAotICAgIGRlZiBsaXN0X3JlY2lwZXMoc2VsZiwgdGl0bGUsIHBuc3BlYywgc2hvd19vdmVybGF5ZWRfb25seSwgc2hvd19zYW1lX3Zlcl9vbmx5LCBzaG93X2ZpbGVuYW1lcywgc2hvd19yZWNpcGVzX29ubHksIHNob3dfbXVsdGlfcHJvdmlkZXJfb25seSwgc2VsZWN0ZWRfbGF5ZXIsIGJhcmUsIGluaGVyaXRzKToKKyAgICBkZWYgbGlzdF9yZWNpcGVzKHNlbGYsIHRpdGxlLCBwbnNwZWMsIHNob3dfb3ZlcmxheWVkX29ubHksIHNob3dfc2FtZV92ZXJfb25seSwgc2hvd19maWxlbmFtZXMsIHNob3dfcmVjaXBlc19vbmx5LCBzaG93X211bHRpX3Byb3ZpZGVyX29ubHksIHNlbGVjdGVkX2xheWVyLCBiYXJlLCBpbmhlcml0cywgbWMpOgogICAgICAgICBpZiBpbmhlcml0czoKICAgICAgICAgICAgIGJicGF0aCA9IHN0cihzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQlBBVEgnKSkKICAgICAgICAgICAgIGZvciBjbGFzc25hbWUgaW4gaW5oZXJpdHM6CkBAIC0xMjMsMTQgKzEyMywxOCBAQAogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNsYXNzIG5hbWVkICVzIGZvdW5kIGluIEJCUEFUSCcsIGNsYXNzZmlsZSkKICAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX3BuCi0gICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMoKQotICAgICAgICBhbGxwcm92aWRlcnMgPSBzZWxmLnRpbmZvaWwuZ2V0X2FsbF9wcm92aWRlcnMoKQorICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuCisgICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMobWMpCisgICAgICAgIGFsbHByb3ZpZGVycyA9IHNlbGYudGluZm9pbC5nZXRfYWxsX3Byb3ZpZGVycyhtYykKIAogICAgICAgICAjIEVuc3VyZSB3ZSBsaXN0IHNraXBwZWQgcmVjaXBlcwogICAgICAgICAjIFdlIGFyZSBsYXJnZWx5IGd1ZXNzaW5nIGFib3V0IFBOLCBQViBhbmQgdGhlIHByZWZlcnJlZCB2ZXJzaW9uIGhlcmUsCiAgICAgICAgICMgYnV0IHdlIGhhdmUgbm8gY2hvaWNlIHNpbmNlIHNraXBwZWQgcmVjaXBlcyBhcmUgbm90IGZ1bGx5IHBhcnNlZAogICAgICAgICBza2lwbGlzdCA9IGxpc3Qoc2VsZi50aW5mb2lsLmNvb2tlci5za2lwbGlzdC5rZXlzKCkpCisgICAgICAgIG1jc3BlYyA9ICdtYzolczonICUgbWMKKyAgICAgICAgaWYgbWM6CisgICAgICAgICAgICBza2lwbGlzdCA9IFtzW2xlbihtY3NwZWMpOl0gZm9yIHMgaW4gc2tpcGxpc3QgaWYgcy5zdGFydHN3aXRoKG1jc3BlYyldCisKICAgICAgICAgZm9yIGZuIGluIHNraXBsaXN0OgogICAgICAgICAgICAgcmVjaXBlX3BhcnRzID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZuKSlbMF0uc3BsaXQoJ18nKQogICAgICAgICAgICAgcCA9IHJlY2lwZV9wYXJ0c1swXQpAQCAtMTg3LDcgKzE5MSw3IEBACiAgICAgICAgICAgICAgICAgIyBXZSBvbmx5IGRpc3BsYXkgb25jZSBwZXIgcmVjaXBlLCB3ZSBzaG91bGQgcHJlZmVyIG5vbiBleHRlbmRlZCB2ZXJzaW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAjIHJlY2lwZSBpZiBwcmVzZW50IChzbyBlLmcuIGluIE9wZW5FbWJlZGRlZCwgb3BlbnNzbCByYXRoZXIgdGhhbiBuYXRpdmVzZGstb3BlbnNzbAogICAgICAgICAgICAgICAgICMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHNvcnQgZmlyc3QpLgotICAgICAgICAgICAgICAgIGlmIHJlYWxmblsxXSBhbmQgcmVhbGZuWzBdIGluIHNlbGYudGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm46CisgICAgICAgICAgICAgICAgaWYgcmVhbGZuWzFdIGFuZCByZWFsZm5bMF0gaW4gc2VsZi50aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19mbjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmIGluaGVyaXRzOgpAQCAtNDk2LDYgKzUwMCw3IEBACiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZCA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LW92ZXJsYXllZCcsIHNlbGYuZG9fc2hvd19vdmVybGF5ZWQpCiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFyc2VyX3Nob3dfb3ZlcmxheWVkLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zYW1lLXZlcnNpb24nLCBoZWxwPSdvbmx5IGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgd2hlcmUgdGhlIHZlcnNpb24gaXMgdGhlIHNhbWUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgICAgICBwYXJzZXJfc2hvd19vdmVybGF5ZWQuYWRkX2FyZ3VtZW50KCctLW1jJywgaGVscD0ndXNlIHNwZWNpZmllZCBtdWx0aWNvbmZpZycsIGRlZmF1bHQ9JycpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LXJlY2lwZXMnLCBzZWxmLmRvX3Nob3dfcmVjaXBlcykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKQEAgLTUwNCw2ICs1MDksNyBAQAogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbmhlcml0cycsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgbmFtZWQgY2xhc3MoZXMpIC0gc2VwYXJhdGUgbXVsdGlwbGUgY2xhc3NlcyB1c2luZyAsICh3aXRob3V0IHNwYWNlcyknLCBtZXRhdmFyPSdDTEFTUycsIGRlZmF1bHQ9JycpCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCctbCcsICctLWxheWVyJywgaGVscD0nb25seSBsaXN0IHJlY2lwZXMgZnJvbSB0aGUgc2VsZWN0ZWQgbGF5ZXInLCBkZWZhdWx0PScnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iYXJlJywgaGVscD0nb3V0cHV0IGp1c3QgbmFtZXMgd2l0aG91dCB0aGUgIihza2lwcGVkKSIgbWFya2VyJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy0tbWMnLCBoZWxwPSd1c2Ugc3BlY2lmaWVkIG11bHRpY29uZmlnJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJ3Buc3BlYycsIG5hcmdzPScqJywgaGVscD0nb3B0aW9uYWwgcmVjaXBlIG5hbWUgc3BlY2lmaWNhdGlvbiAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQogCiAgICAgICAgIHBhcnNlcl9zaG93X2FwcGVuZHMgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnc2hvdy1hcHBlbmRzJywgc2VsZi5kb19zaG93X2FwcGVuZHMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CmluZGV4IGY2ZmRmZDUwLi5lMzU3MjViIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weQpAQCAtNDI3LDcgKzQyNyw3IEBACiAgICAgICAgIGlmIHNlbGYuaXNfeG1sOgogICAgICAgICAgICAgIyBQcmludCB0aGUgWE1MIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICBlbmNvZGluZ19wYXJ0ID0gJycKLSAgICAgICAgICAgIGlmIGV2ZW50dWFsX2VuY29kaW5nICE9IE5vbmU6CisgICAgICAgICAgICBpZiBldmVudHVhbF9lbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbmNvZGluZ19wYXJ0ID0gJyBlbmNvZGluZz0iJXMiJyAlIGV2ZW50dWFsX2VuY29kaW5nCiAgICAgICAgICAgICBwcmVmaXggPSAnPD94bWwgdmVyc2lvbj0iMS4wIiVzPz5cbicgJSBlbmNvZGluZ19wYXJ0CiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9idWlsZGVyL19odG1sNWxpYi5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CmluZGV4IDJiN2E3MGEuLjllOTIxNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CkBAIC0yLDcgKzIsNiBAQAogICAgICdIVE1MNVRyZWVCdWlsZGVyJywKICAgICBdCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBiczQuYnVpbGRlciBpbXBvcnQgKAogICAgIFBFUk1JU1NJVkUsCkBAIC0zMjIsNyArMzIxLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZWxlbWVudC5jb250ZW50cwogCiAgICAgZGVmIGdldE5hbWVUdXBsZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2UgPT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2UgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBuYW1lc3BhY2VzWyJodG1sIl0sIHNlbGYubmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZXNwYWNlLCBzZWxmLm5hbWUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weQppbmRleCA4MDVhYTkwLi43YWQ5ZTBkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9kYW1taXQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5CkBAIC04LDEyICs4LDEwIEBACiAiIiIKIF9fbGljZW5zZV9fID0gIk1JVCIKIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IGNvZGVjcwogZnJvbSBodG1sLmVudGl0aWVzIGltcG9ydCBjb2RlcG9pbnQybmFtZQogaW1wb3J0IHJlCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHN0cmluZwogCiAjIEltcG9ydCBhIGxpYnJhcnkgdG8gYXV0b2RldGVjdCBjaGFyYWN0ZXIgZW5jb2RpbmdzLgogY2hhcmRldF90eXBlID0gTm9uZQpAQCAtMzgsMTIgKzM2LDYgQEAKICAgICAgICAgZGVmIGNoYXJkZXRfZGFtbWl0KHMpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotIyBBdmFpbGFibGUgZnJvbSBodHRwOi8vY2prcHl0aG9uLmkxOG4ub3JnLy4KLXRyeToKLSAgICBpbXBvcnQgaWNvbnZfY29kZWMKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIHhtbF9lbmNvZGluZ19yZSA9IHJlLmNvbXBpbGUoCiAgICAgcidePFw/LiplbmNvZGluZz1bXCciXSguKj8pW1wnIl0uKlw/PicuZW5jb2RlKCksIHJlLkkpCiBodG1sX21ldGFfcmUgPSByZS5jb21waWxlKApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2VsZW1lbnQucHkKaW5kZXggMzc3NWE2MC4uNjhiZTQyZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5CkBAIC0xLDYgKzEsNSBAQAogX19saWNlbnNlX18gPSAiTUlUIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0aW5nLnB5CmluZGV4IDNhMmYyNjAuLjk1M2JjYTggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGNvcHkKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGZyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkKaW5kZXggNWI5ZjY3Ny4uZDFkNzZhMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9kb2NzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weQpAQCAtNywxOSArNywxNSBAQAogICAgICdhZGRpdGlvbmFsX3Rlc3RzJywKICAgICBdCiAKLWltcG9ydCBhdGV4aXQKIGltcG9ydCBkb2N0ZXN0Ci1pbXBvcnQgb3MKICNmcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0ICgKICMgICAgcmVzb3VyY2VfZmlsZW5hbWUsIHJlc291cmNlX2V4aXN0cywgcmVzb3VyY2VfbGlzdGRpciwgY2xlYW51cF9yZXNvdXJjZXMpCi1pbXBvcnQgdW5pdHRlc3QKIAogRE9DVEVTVF9GTEFHUyA9ICgKICAgICBkb2N0ZXN0LkVMTElQU0lTIHwKICAgICBkb2N0ZXN0Lk5PUk1BTElaRV9XSElURVNQQUNFIHwKICAgICBkb2N0ZXN0LlJFUE9SVF9ORElGRikKIAotCiAjIGRlZiBhZGRpdGlvbmFsX3Rlc3RzKCk6CiAjICAgICAiUnVuIHRoZSBkb2MgdGVzdHMgKFJFQURNRS50eHQgYW5kIGRvY3MvKiwgaWYgYW55IGV4aXN0KSIKICMgICAgIGRvY3Rlc3RfZmlsZXMgPSBbCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggYjQ1ZTM1Zi4uMzBhMjVlNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIHRvIGVuc3VyZSB0aGF0IHRoZSBodG1sLnBhcnNlciB0cmVlIGJ1aWxkZXIgZ2VuZXJhdGVzIGdvb2QKIHRyZWVzLiIiIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgcGlja2xlCiBmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBTb3VwVGVzdCwgSFRNTFRyZWVCdWlsZGVyU21va2VUZXN0CiBmcm9tIGJzNC5idWlsZGVyIGltcG9ydCBIVE1MUGFyc2VyVHJlZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weQppbmRleCA2YzJhMWQ3Li42YjZjZGQwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2x4bWwucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdHMgdG8gZW5zdXJlIHRoYXQgdGhlIGx4bWwgdHJlZSBidWlsZGVyIGdlbmVyYXRlcyBnb29kIHRyZWVzLiIiIgogCi1pbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogCiB0cnk6CkBAIC0xNCwxMyArMTMsOCBAQAogaWYgTFhNTF9QUkVTRU5UOgogICAgIGZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IExYTUxUcmVlQnVpbGRlciwgTFhNTFRyZWVCdWlsZGVyRm9yWE1MCiAKLWZyb20gYnM0IGltcG9ydCAoCi0gICAgQmVhdXRpZnVsU291cCwKLSAgICBCZWF1dGlmdWxTdG9uZVNvdXAsCi0gICAgKQotZnJvbSBiczQuZWxlbWVudCBpbXBvcnQgQ29tbWVudCwgRG9jdHlwZSwgU291cFN0cmFpbmVyCitmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU3RvbmVTb3VwCiBmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBza2lwSWYKLWZyb20gYnM0LnRlc3RzIGltcG9ydCB0ZXN0X2h0bWxwYXJzZXIKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0ICgKICAgICBIVE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QsCiAgICAgWE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkKaW5kZXggZjg3OTQ5ZS4uNmFkM2NiMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9zb3VwLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weQpAQCAtMSwxNiArMSwxMiBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICIiIlRlc3RzIG9mIEJlYXV0aWZ1bCBTb3VwIGFzIGEgd2hvbGUuIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCi1mcm9tIGJzNCBpbXBvcnQgKAotICAgIEJlYXV0aWZ1bFNvdXAsCi0gICAgQmVhdXRpZnVsU3RvbmVTb3VwLAotKQorZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gYnM0LmVsZW1lbnQgaW1wb3J0ICgKICAgICBDaGFyc2V0TWV0YUF0dHJpYnV0ZVZhbHVlLAogICAgIENvbnRlbnRNZXRhQXR0cmlidXRlVmFsdWUsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkKaW5kZXggNmQzZTY3Zi4uOGU1YzY2NCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF90cmVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weQpAQCAtOSwxNiArOSwxMiBAQAogbWV0aG9kcyB0ZXN0ZWQgaGVyZS4KICIiIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCi1mcm9tIGJzNC5idWlsZGVyIGltcG9ydCAoCi0gICAgYnVpbGRlcl9yZWdpc3RyeSwKLSAgICBIVE1MUGFyc2VyVHJlZUJ1aWxkZXIsCi0pCitmcm9tIGJzNC5idWlsZGVyIGltcG9ydCBidWlsZGVyX3JlZ2lzdHJ5CiBmcm9tIGJzNC5lbGVtZW50IGltcG9ydCAoCiAgICAgUFkzSywKICAgICBDRGF0YSwKQEAgLTI5LDEwICsyNSw3IEBACiAgICAgU291cFN0cmFpbmVyLAogICAgIFRhZywKICkKLWZyb20gYnM0LnRlc3RpbmcgaW1wb3J0ICgKLSAgICBTb3VwVGVzdCwKLSAgICBza2lwSWYsCi0pCitmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBTb3VwVGVzdAogCiBYTUxfQlVJTERFUl9QUkVTRU5UID0gKGJ1aWxkZXJfcmVnaXN0cnkubG9va3VwKCJ4bWwiKSBpcyBub3QgTm9uZSkKIExYTUxfUFJFU0VOVCA9IChidWlsZGVyX3JlZ2lzdHJ5Lmxvb2t1cCgibHhtbCIpIGlzIG5vdCBOb25lKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9oYXNoc2Vydi9jbGllbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQppbmRleCBmNjU5NTY2Li40NjA4NWQ2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQpAQCAtMyw3ICszLDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHNvY2tldApAQCAtMTQ4LDYgKzE0NywxNCBAQAogICAgICAgICBtWyd1bmloYXNoJ10gPSB1bmloYXNoCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J3JlcG9ydCc6IG19KQogCisgICAgZGVmIHJlcG9ydF91bmloYXNoX2VxdWl2KHNlbGYsIHRhc2toYXNoLCBtZXRob2QsIHVuaWhhc2gsIGV4dHJhPXt9KToKKyAgICAgICAgc2VsZi5fc2V0X21vZGUoc2VsZi5NT0RFX05PUk1BTCkKKyAgICAgICAgbSA9IGV4dHJhLmNvcHkoKQorICAgICAgICBtWyd0YXNraGFzaCddID0gdGFza2hhc2gKKyAgICAgICAgbVsnbWV0aG9kJ10gPSBtZXRob2QKKyAgICAgICAgbVsndW5paGFzaCddID0gdW5paGFzaAorICAgICAgICByZXR1cm4gc2VsZi5zZW5kX21lc3NhZ2UoeydyZXBvcnQtZXF1aXYnOiBtfSkKKwogICAgIGRlZiBnZXRfc3RhdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3NldF9tb2RlKHNlbGYuTU9ERV9OT1JNQUwpCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J2dldC1zdGF0cyc6IE5vbmV9KQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9oYXNoc2Vydi9zZXJ2ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQppbmRleCAwYWZmNzc2Li5jYzdlNDgyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQpAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgICAgICAgICBoYW5kbGVycyA9IHsKICAgICAgICAgICAgICAgICAnZ2V0Jzogc2VsZi5oYW5kbGVfZ2V0LAogICAgICAgICAgICAgICAgICdyZXBvcnQnOiBzZWxmLmhhbmRsZV9yZXBvcnQsCisgICAgICAgICAgICAgICAgJ3JlcG9ydC1lcXVpdic6IHNlbGYuaGFuZGxlX2VxdWl2cmVwb3J0LAogICAgICAgICAgICAgICAgICdnZXQtc3RyZWFtJzogc2VsZi5oYW5kbGVfZ2V0X3N0cmVhbSwKICAgICAgICAgICAgICAgICAnZ2V0LXN0YXRzJzogc2VsZi5oYW5kbGVfZ2V0X3N0YXRzLAogICAgICAgICAgICAgICAgICdyZXNldC1zdGF0cyc6IHNlbGYuaGFuZGxlX3Jlc2V0X3N0YXRzLApAQCAtMzAzLDYgKzMwNCw0MSBAQAogCiAgICAgICAgIHNlbGYud3JpdGVfbWVzc2FnZShkKQogCisgICAgYXN5bmMgZGVmIGhhbmRsZV9lcXVpdnJlcG9ydChzZWxmLCBkYXRhKToKKyAgICAgICAgd2l0aCBjbG9zaW5nKHNlbGYuZGIuY3Vyc29yKCkpIGFzIGN1cnNvcjoKKyAgICAgICAgICAgIGluc2VydF9kYXRhID0geworICAgICAgICAgICAgICAgICdtZXRob2QnOiBkYXRhWydtZXRob2QnXSwKKyAgICAgICAgICAgICAgICAnb3V0aGFzaCc6ICIiLAorICAgICAgICAgICAgICAgICd0YXNraGFzaCc6IGRhdGFbJ3Rhc2toYXNoJ10sCisgICAgICAgICAgICAgICAgJ3VuaWhhc2gnOiBkYXRhWyd1bmloYXNoJ10sCisgICAgICAgICAgICAgICAgJ2NyZWF0ZWQnOiBkYXRldGltZS5ub3coKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgayBpbiAoJ293bmVyJywgJ1BOJywgJ1BWJywgJ1BSJywgJ3Rhc2snLCAnb3V0aGFzaF9zaWdpbmZvJyk6CisgICAgICAgICAgICAgICAgaWYgayBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBpbnNlcnRfZGF0YVtrXSA9IGRhdGFba10KKworICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoJycnSU5TRVJUIE9SIElHTk9SRSBJTlRPIHRhc2tzX3YyICglcykgVkFMVUVTICglcyknJycgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKHNvcnRlZChpbnNlcnRfZGF0YS5rZXlzKCkpKSwKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oJzonICsgayBmb3IgayBpbiBzb3J0ZWQoaW5zZXJ0X2RhdGEua2V5cygpKSkpLAorICAgICAgICAgICAgICAgIGluc2VydF9kYXRhKQorCisgICAgICAgICAgICBzZWxmLmRiLmNvbW1pdCgpCisKKyAgICAgICAgICAgICMgRmV0Y2ggdGhlIHVuaWhhc2ggdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGZvciB0aGUgdGFza2hhc2guIElmIHRoZQorICAgICAgICAgICAgIyB1bmloYXNoIG1hdGNoZXMsIGl0IG1lYW5zIHRoaXMgcm93IHdhcyBpbnNlcnRlZCAob3IgdGhlIG1hcHBpbmcKKyAgICAgICAgICAgICMgd2FzIGFscmVhZHkgdmFsaWQpCisgICAgICAgICAgICByb3cgPSBzZWxmLnF1ZXJ5X2VxdWl2YWxlbnQoZGF0YVsnbWV0aG9kJ10sIGRhdGFbJ3Rhc2toYXNoJ10pCisKKyAgICAgICAgICAgIGlmIHJvd1sndW5paGFzaCddID09IGRhdGFbJ3VuaWhhc2gnXToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIHRhc2toYXNoIGVxdWl2YWxlbmNlIGZvciAlcyB3aXRoIHVuaWhhc2ggJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd0YXNraGFzaCddLCByb3dbJ3VuaWhhc2gnXSkKKworICAgICAgICAgICAgZCA9IHtrOiByb3dba10gZm9yIGsgaW4gKCd0YXNraGFzaCcsICdtZXRob2QnLCAndW5paGFzaCcpfQorCisgICAgICAgIHNlbGYud3JpdGVfbWVzc2FnZShkKQorCisKICAgICBhc3luYyBkZWYgaGFuZGxlX2dldF9zdGF0cyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICdyZXF1ZXN0cyc6IHNlbGYucmVxdWVzdF9zdGF0cy50b2RpY3QoKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5CmluZGV4IDYwNGE5NjEuLjY1YjIzZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weQpAQCAtNCw5ICs0LDggQEAKICMKIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBqc29uCiAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGljdAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVucXVvdGUsIHVybHBhcnNlCiAKQEAgLTk0LDcgKzkzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBpbmRleAogCiAgICAgICAgIGNvbGxlY3Rpb25zID0gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpCi0gICAgICAgIGxheWVyY29uZnMgPSBkLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBkKQorICAgICAgICBsYXllcmNvbmZzID0gZC52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9pdGVtc19maWxlcygnQkJGSUxFX0NPTExFQ1RJT05TJykKICAgICAgICAgYmJmaWxlX2NvbGxlY3Rpb25zID0ge2xheWVyOiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHBhdGgpKSBmb3IgbGF5ZXIsIHBhdGggaW4gbGF5ZXJjb25mcy5pdGVtcygpfQogCiAgICAgICAgIChfLCBiYl9icmFuY2gsIF8sIF8pID0gc2VsZi5fZ2V0X2JpdGJha2VfaW5mbygpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3BsdWdpbi5weQppbmRleCA3MDE1YTFhLi5jYWRkYTM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkKQEAgLTcsMTAgKzcsNyBAQAogIyAgIFBsdWdpbiBiYXNlIGNsYXNzCiAjICAgVXRpbGl0eSBGdW5jdGlvbnMgZm9yIHdvcmtpbmcgb24gbGF5ZXJpbmRleCBkYXRhCiAKLWltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IGJiLm1zZwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZS5sYXllcmluZGV4bGliLnBsdWdpbicpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvY29va2VyLnB5CmluZGV4IDFmYTEwMmUuLjFkMDY4NWUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQpAQCAtMywxNSArMywxMiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBiYgogCiBpbXBvcnQgbGF5ZXJpbmRleGxpYgogZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAogCi1pbXBvcnQgbG9nZ2luZwogCiBjbGFzcyBMYXllckluZGV4Q29va2VyVGVzdChMYXllcnNUZXN0KToKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2xheWVyaW5kZXhvYmoucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQppbmRleCAwYzVlYzg4Li5kZTFlNDc0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQpAQCAtMywxNCArMyw4IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBvcwotaW1wb3J0IGJiCi0KIGZyb20gbGF5ZXJpbmRleGxpYi50ZXN0cy5jb21tb24gaW1wb3J0IExheWVyc1Rlc3QKIAotaW1wb3J0IGxvZ2dpbmcKIAogY2xhc3MgTGF5ZXJJbmRleE9iamVjdHNUZXN0KExheWVyc1Rlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9yZXN0YXBpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKaW5kZXggNmQ4ZGMwMC4uZTVjY2FmZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKQEAgLTQsMTQgKzQsMTEgQEAKICMKIAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvcwotaW1wb3J0IGJiCiAKIGltcG9ydCBsYXllcmluZGV4bGliCiBmcm9tIGxheWVyaW5kZXhsaWIudGVzdHMuY29tbW9uIGltcG9ydCBMYXllcnNUZXN0CiAKLWltcG9ydCBsb2dnaW5nCiAKIGRlZiBza2lwSWZOb05ldHdvcmsoKToKICAgICBpZiBvcy5lbnZpcm9uLmdldCgiQkJfU0tJUF9ORVRURVNUUyIpID09ICJ5ZXMiOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weSBiL3Bva3kvYml0YmFrZS9saWIvcGx5L3lhY2MucHkKaW5kZXggZDUwODg2ZS4uNTYxNzg0ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5CkBAIC00ODgsNyArNDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyAtLSEgREVCVUcKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgICAgICBpZiB0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0IGlzIE5vbmU6CiAKICAgICAgICAgICAgICAgICAjIC0tISBERUJVRwogICAgICAgICAgICAgICAgIGRlYnVnLmVycm9yKCdFcnJvciAgOiAlcycsCkBAIC03NjYsNyArNzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbiA9IHN5bXN0YWNrWy0xXQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihuLCJ2YWx1ZSIsTm9uZSkKIAotICAgICAgICAgICAgaWYgdCA9PSBOb25lOgorICAgICAgICAgICAgaWYgdCBpcyBOb25lOgogCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHNvbWUga2luZCBvZiBwYXJzaW5nIGVycm9yIGhlcmUuICBUbyBoYW5kbGUKICAgICAgICAgICAgICAgICAjIHRoaXMsIHdlIGFyZSBnb2luZyB0byBwdXNoIHRoZSBjdXJyZW50IHRva2VuIG9udG8KQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG4gPSBzeW1zdGFja1stMV0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIobiwidmFsdWUiLE5vbmUpCiAKLSAgICAgICAgICAgIGlmIHQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHQgaXMgTm9uZToKIAogICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBzb21lIGtpbmQgb2YgcGFyc2luZyBlcnJvciBoZXJlLiAgVG8gaGFuZGxlCiAgICAgICAgICAgICAgICAgIyB0aGlzLCB3ZSBhcmUgZ29pbmcgdG8gcHVzaCB0aGUgY3VycmVudCB0b2tlbiBvbnRvCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9kYi5weSBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CmluZGV4IDExN2Q4YzAuLmNiMmEyNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgIGRhdGE9c2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgIGRhdGE9c2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgcHJzZXJ2Lk5vdEZvdW5kRXJyb3IKQEAgLTk5LDcgKzk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnRhYmxlLCBzZWxmLnRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0sIHZlcnNpb24sIHBrZ2FyY2gpKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICAgICAgcm93PWRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1swXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBwcnNlcnYuTm90Rm91bmRFcnJvcgpAQCAtMTMyLDcgKzEzMiw3IEBACiAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgIHJvdyA9IGRhdGEuZmV0Y2hvbmUoKQotICAgICAgICBpZiByb3cgIT0gTm9uZToKKyAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFsPXJvd1swXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgI25vIHZhbHVlIGZvdW5kLCB0cnkgdG8gaW5zZXJ0CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgICAgICByb3cgPSBkYXRhLmZldGNob25lKCkKLSAgICAgICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHZhbCA9IHJvd1swXQogICAgICAgICByZXR1cm4gdmFsCiAKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgICAgICBkYXRhID0gc2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT8gQU5EIHZhbHVlPj0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLHBrZ2FyY2gsY2hlY2tzdW0sdmFsdWUpKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weSBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKaW5kZXggYjg1NGJhMS4uMjVkY2Y4YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CkBAIC0yOTIsMTAgKzI5Miw5IEBACiAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0cmVhbWhhbmRsZXIpCiAKICAgICAgICAgIyB3cml0ZSBwaWRmaWxlCi0gICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkgCi0gICAgICAgIHBmID0gb3BlbihzZWxmLnBpZGZpbGUsICd3JykKLSAgICAgICAgcGYud3JpdGUoIiVzXG4iICUgcGlkKQotICAgICAgICBwZi5jbG9zZSgpCisgICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucGlkZmlsZSwgJ3cnKSBhcyBwZjoKKyAgICAgICAgICAgIHBmLndyaXRlKCIlc1xuIiAlIHBpZCkKIAogICAgICAgICBzZWxmLndvcmtfZm9yZXZlcigpCiAgICAgICAgIHNlbGYuZGVscGlkKCkKQEAgLTM1Myw5ICszNTIsOCBAQAogICAgIGlwID0gc29ja2V0LmdldGhvc3RieW5hbWUoaG9zdCkKICAgICBwaWRmaWxlID0gUElEUFJFRklYICUgKGlwLCBwb3J0KQogICAgIHRyeToKLSAgICAgICAgcGYgPSBvcGVuKHBpZGZpbGUsJ3InKQotICAgICAgICBwaWQgPSBpbnQocGYucmVhZGxpbmUoKS5zdHJpcCgpKQotICAgICAgICBwZi5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihwaWRmaWxlKSBhcyBwZjoKKyAgICAgICAgICAgIHBpZCA9IGludChwZi5yZWFkbGluZSgpLnN0cmlwKCkpCiAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgIHBpZCA9IE5vbmUKIApAQCAtNDQ5LDI5ICs0NDcsMzUgQEAKIGRlZiBhdXRvX3N0YXJ0KGQpOgogICAgIGdsb2JhbCBzaW5nbGV0b24KIAotICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlcgotICAgIGF1dG9fc2h1dGRvd24oKQotCiAgICAgaG9zdF9wYXJhbXMgPSBsaXN0KGZpbHRlcihOb25lLCAoZC5nZXRWYXIoJ1BSU0VSVl9IT1NUJykgb3IgJycpLnNwbGl0KCc6JykpKQogICAgIGlmIG5vdCBob3N0X3BhcmFtczoKKyAgICAgICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyCisgICAgICAgIGF1dG9fc2h1dGRvd24oKQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgaWYgbGVuKGhvc3RfcGFyYW1zKSAhPSAyOgorICAgICAgICAjIFNodXRkb3duIGFueSBleGlzdGluZyBQUiBTZXJ2ZXIKKyAgICAgICAgYXV0b19zaHV0ZG93bigpCiAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgnXG4nLmpvaW4oWydQUlNFUlZfSE9TVDogaW5jb3JyZWN0IGZvcm1hdCcsCiAgICAgICAgICAgICAgICAgJ1VzYWdlOiBQUlNFUlZfSE9TVCA9ICI8aG9zdG5hbWU+Ojxwb3J0PiInXSkpCiAgICAgICAgIHJhaXNlIFBSU2VydmljZUNvbmZpZ0Vycm9yCiAKLSAgICBpZiBpc19sb2NhbF9zcGVjaWFsKGhvc3RfcGFyYW1zWzBdLCBpbnQoaG9zdF9wYXJhbXNbMV0pKSBhbmQgbm90IHNpbmdsZXRvbjoKKyAgICBpZiBpc19sb2NhbF9zcGVjaWFsKGhvc3RfcGFyYW1zWzBdLCBpbnQoaG9zdF9wYXJhbXNbMV0pKToKICAgICAgICAgaW1wb3J0IGJiLnV0aWxzCiAgICAgICAgIGNhY2hlZGlyID0gKGQuZ2V0VmFyKCJQRVJTSVNURU5UX0RJUiIpIG9yIGQuZ2V0VmFyKCJDQUNIRSIpKQogICAgICAgICBpZiBub3QgY2FjaGVkaXI6CiAgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlBsZWFzZSBzZXQgdGhlICdQRVJTSVNURU5UX0RJUicgb3IgJ0NBQ0hFJyB2YXJpYWJsZSIpCiAgICAgICAgICAgICByYWlzZSBQUlNlcnZpY2VDb25maWdFcnJvcgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY2FjaGVkaXIpCiAgICAgICAgIGRiZmlsZSA9IG9zLnBhdGguam9pbihjYWNoZWRpciwgInByc2Vydi5zcWxpdGUzIikKICAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguam9pbihjYWNoZWRpciwgInByc2Vydi5sb2ciKQotICAgICAgICBzaW5nbGV0b24gPSBQUlNlcnZTaW5nbGV0b24ob3MucGF0aC5hYnNwYXRoKGRiZmlsZSksIG9zLnBhdGguYWJzcGF0aChsb2dmaWxlKSwgKCJsb2NhbGhvc3QiLDApKQotICAgICAgICBzaW5nbGV0b24uc3RhcnQoKQorICAgICAgICBpZiBzaW5nbGV0b246CisgICAgICAgICAgICBpZiBzaW5nbGV0b24uZGJmaWxlICE9IGRiZmlsZToKKyAgICAgICAgICAgICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlciBhcyBkb2Vzbid0IG1hdGNoIGNvbmZpZworICAgICAgICAgICAgICAgYXV0b19zaHV0ZG93bigpCisgICAgICAgIGlmIG5vdCBzaW5nbGV0b246CisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY2FjaGVkaXIpCisgICAgICAgICAgICBzaW5nbGV0b24gPSBQUlNlcnZTaW5nbGV0b24ob3MucGF0aC5hYnNwYXRoKGRiZmlsZSksIG9zLnBhdGguYWJzcGF0aChsb2dmaWxlKSwgKCJsb2NhbGhvc3QiLDApKQorICAgICAgICAgICAgc2luZ2xldG9uLnN0YXJ0KCkKICAgICBpZiBzaW5nbGV0b246CiAgICAgICAgIGhvc3QsIHBvcnQgPSBzaW5nbGV0b24uZ2V0aW5mbygpCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvcHlpbm90aWZ5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKaW5kZXggMTUyOGEyMi4uNmFlNDBhMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKQEAgLTEyNzQsNyArMTI3NCw3IEBACiAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIG9yICdweWlub3RpZnknCiAgICAgICAgICAgICBwaWRfZmlsZSA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBiYXNlbmFtZSArICcucGlkJykKIAotICAgICAgICBpZiBwaWRfZmlsZSAhPSBGYWxzZSBhbmQgb3MucGF0aC5sZXhpc3RzKHBpZF9maWxlKToKKyAgICAgICAgaWYgcGlkX2ZpbGUgYW5kIG9zLnBhdGgubGV4aXN0cyhwaWRfZmlsZSk6CiAgICAgICAgICAgICBlcnIgPSAnQ2Fubm90IGRhZW1vbml6ZTogcGlkIGZpbGUgJXMgYWxyZWFkeSBleGlzdHMuJyAlIHBpZF9maWxlCiAgICAgICAgICAgICByYWlzZSBOb3RpZmllckVycm9yKGVycikKIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAKICAgICAgICAgZm9ya19kYWVtb24oKQogCiAgICAgICAgICMgV3JpdGUgcGlkCi0gICAgICAgIGlmIHBpZF9maWxlICE9IEZhbHNlOgorICAgICAgICBpZiBwaWRfZmlsZToKICAgICAgICAgICAgIGZsYWdzID0gb3MuT19XUk9OTFl8b3MuT19DUkVBVHxvcy5PX05PRk9MTE9XfG9zLk9fRVhDTAogICAgICAgICAgICAgZmRfcGlkID0gb3Mub3BlbihwaWRfZmlsZSwgZmxhZ3MsIDBvMDYwMCkKICAgICAgICAgICAgIG9zLndyaXRlKGZkX3BpZCwgIGJ5dGVzKHN0cihvcy5nZXRwaWQoKSkgKyAnXG4nLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CmluZGV4IDhlYjFlMzQuLmVmZDY3YTggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3IvdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKQEAgLTYsNyArNiw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgdXJsCiAKIGltcG9ydCBibGRjb2xsZWN0b3Iudmlld3MKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3Ivdmlld3MucHkKaW5kZXggYzcwOGI0MS4uMDRjZDhiMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5CkBAIC02LDE2ICs2LDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNhY2hlIGltcG9ydCBjYWNoZV9jb250cm9sCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQotZnJvbSBkamFuZ28uY29yZS5wYWdpbmF0b3IgaW1wb3J0IFBhZ2luYXRvciwgRW1wdHlQYWdlLCBQYWdlTm90QW5JbnRlZ2VyCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VCYWRSZXF1ZXN0LCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQotZnJvbSBkamFuZ28udXRpbHMuaHRtbCBpbXBvcnQgZXNjYXBlCi1mcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEKLWZyb20gZGphbmdvLnV0aWxzIGltcG9ydCBmb3JtYXRzCi1mcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBqc29uIGFzIGpzb25maWx0ZXIKLWltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2FkbWluLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKaW5kZXggZTg1YzMwZS4uMTc1NGJjMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKQEAgLTMsNyArMyw2IEBACiAjCiAKIGZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0IGFkbWluCi1mcm9tIGRqYW5nby5jb250cmliLmFkbWluLmZpbHRlcnMgaW1wb3J0IFJlbGF0ZWRGaWVsZExpc3RGaWx0ZXIKIGZyb20gLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudAogCiBjbGFzcyBCdWlsZEVudmlyb25tZW50QWRtaW4oYWRtaW4uTW9kZWxBZG1pbik6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKaW5kZXggMzAxZGYxOC4uNzFjMjg4ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weQpAQCAtOCwxMCArOCw4IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHJlCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQotZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZQorZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJCaXRiYWtlCiAKICMgbG9hZCBCaXRiYWtlIGNvbXBvbmVudHMKIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weQppbmRleCAzOWVhNzM2Li43NTY3NGNjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CkBAIC03LDI3ICs3LDI0IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGltZQotZnJvbSBkamFuZ28uZGIgaW1wb3J0IHRyYW5zYWN0aW9uCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEKLWZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkUmVxdWVzdCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZSwgQnVpbGQKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFRvYXN0ZXJTZXR0aW5nCitmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCdWlsZFJlcXVlc3QsIEJ1aWxkCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUmVjaXBlLCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdCwgVG9hc3RlclNldHRpbmcKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgc2lnbmFsX3J1bmJ1aWxkcwogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB0b2FzdGVybWFpbiBpbXBvcnQgc2V0dGluZ3MKIAotZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uLCBCdWlsZFNldHVwRXhjZXB0aW9uLCBCaXRiYWtlQ29udHJvbGxlcgorZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uLCBCdWlsZFNldHVwRXhjZXB0aW9uCiAKIGltcG9ydCBsb2dnaW5nCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCiAKIGluc3RhbGxfZGlyID0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfRElSJykKIAotZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludCwgcGZvcm1hdAorZnJvbSBwcHJpbnQgaW1wb3J0IHBmb3JtYXQKIAogY2xhc3MgTG9jYWxob3N0QkVDb250cm9sbGVyKEJ1aWxkRW52aXJvbm1lbnRDb250cm9sbGVyKToKICAgICAiIiIgSW1wbGVtZW50YXRpb24gb2YgdGhlIEJ1aWxkRW52aXJvbm1lbnRDb250cm9sbGVyIGZvciB0aGUgbG9jYWxob3N0OwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CmluZGV4IGZlMmM0ZGMuLjIwZjlkY2UgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkKQEAgLTIsMTEgKzIsOSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogCiBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQgaW1wb3J0IGNhbGxfY29tbWFuZAotZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgZ2V0QnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uCiBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QsIEJ1aWxkRW52aXJvbm1lbnQsIEJSRXJyb3IKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgVG9hc3RlclNldHRpbmcsIEJ1aWxkLCBMYXllcgogCkBAIC04MCw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9jb25mID0gb3MuZW52aXJvbi5nZXQoIlRFTVBMQVRFQ09ORiIsICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX3htbF9vbmx5ID0gb3MuZW52aXJvbi5nZXQoIkNVU1RPTV9YTUxfT05MWSIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIFRvYXN0ZXJTZXR0aW5nLm9iamVjdHMuZmlsdGVyKG5hbWU9J0NVU1RPTV9YTUxfT05MWScpLmNvdW50KCkgPiAwIG9yIChub3QgY3VzdG9tX3htbF9vbmx5ID09IE5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX1hNTF9PTkxZJykuY291bnQoKSA+IDAgb3IgY3VzdG9tX3htbF9vbmx5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhlIGN1c3RvbSBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgInBva3kiIGluIHRlbXBsYXRlX2NvbmY6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL3J1bmJ1aWxkcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CmluZGV4IDUwZWM0MDkuLjE5ZjY1OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CkBAIC0xNjgsMTcgKzE2OCwxNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNsZWFudXAoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBjbGVhbnVwIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBjbGVhbnVwIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hcmNoaXZlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oInJ1bmJ1aWxkczogYXJjaGl2ZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJ1bmJ1aWxkczogYXJjaGl2ZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc2NoZWR1bGUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBzY2hlZHVsZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJ1bmJ1aWxkczogc2NoZWR1bGUgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKIAogICAgIGRlZiBoYW5kbGUoc2VsZiwgKipvcHRpb25zKToKICAgICAgICAgcGlkZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIsICIuIiksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CmluZGV4IDY3ZGIzNzguLjdlZTE5ZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CkBAIC0zNyw3ICszNyw3IEBACiAgICAgICAgICAgICAgICAgKCdnaXR1cmwnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdjb21taXQnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdkaXJwYXRoJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtODAsMzQgKzgwLDM0IEBACiAgICAgICAgICAgICAgICAgKCdzdGF0ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wLCBjaG9pY2VzPVsoMCwgYidjcmVhdGVkJyksICgxLCBiJ3F1ZXVlZCcpLCAoMiwgYidpbiBwcm9ncmVzcycpLCAoMywgYidjb21wbGV0ZWQnKSwgKDQsIGInZmFpbGVkJyksICg1LCBiJ2RlbGV0ZWQnKSwgKDYsIGInYXJjaGl2ZScpXSkpLAogICAgICAgICAgICAgICAgICgnY3JlYXRlZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd1cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuT25lVG9PbmVGaWVsZChudWxsPVRydWUsIHRvPSdvcm0uQnVpbGQnKSksCi0gICAgICAgICAgICAgICAgKCdlbnZpcm9ubWVudCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkRW52aXJvbm1lbnQnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5PbmVUb09uZUZpZWxkKG51bGw9VHJ1ZSwgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnZW52aXJvbm1lbnQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZEVudmlyb25tZW50JywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicnZhcmlhYmxlJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicnRhcmdldCcsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJsYXllcicsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJlcnJvcicsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJiaXRiYWtlJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuT25lVG9PbmVGaWVsZCh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5PbmVUb09uZUZpZWxkKHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5CmluZGV4IGJjZmZjZjUuLmMyZjMwMmQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkKQEAgLTQsOSArNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1vZGVscwotZnJvbSBkamFuZ28uY29yZS52YWxpZGF0b3JzIGltcG9ydCBNYXhWYWx1ZVZhbGlkYXRvciwgTWluVmFsdWVWYWxpZGF0b3IKIGZyb20gZGphbmdvLnV0aWxzLmVuY29kaW5nIGltcG9ydCBmb3JjZV90ZXh0Ci1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFZhcmlhYmxlLCBQcm9qZWN0VGFyZ2V0LCBCdWlsZCwgTGF5ZXJfVmVyc2lvbgorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgTGF5ZXJfVmVyc2lvbgogCiBpbXBvcnQgbG9nZ2luZwogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInRvYXN0ZXIiKQpAQCAtODYsOSArODUsOSBAQAogCiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gKCJicnRhcmdldF9fdGFyZ2V0IiwgImJ1aWxkX19wcm9qZWN0X19uYW1lIikKIAotICAgIHByb2plY3QgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKLSAgICBidWlsZCAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkLCBudWxsID0gVHJ1ZSkgICAgICMgVE9ETzogdG9hc3RlcnVpIHNob3VsZCBzZXQgdGhpcyB3aGVuIEJ1aWxkIGlzIGNyZWF0ZWQKLSAgICBlbnZpcm9ubWVudCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkRW52aXJvbm1lbnQsIG51bGwgPSBUcnVlKQorICAgIHByb2plY3QgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQorICAgIGJ1aWxkICAgICAgID0gbW9kZWxzLk9uZVRvT25lRmllbGQoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbCA9IFRydWUpICAgICAjIFRPRE86IHRvYXN0ZXJ1aSBzaG91bGQgc2V0IHRoaXMgd2hlbiBCdWlsZCBpcyBjcmVhdGVkCisgICAgZW52aXJvbm1lbnQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZEVudmlyb25tZW50LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGwgPSBUcnVlKQogICAgIHN0YXRlICAgICAgID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzID0gUkVRVUVTVF9TVEFURSwgZGVmYXVsdCA9IFJFUV9DUkVBVEVEKQogICAgIGNyZWF0ZWQgICAgID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkID0gVHJ1ZSkKICAgICB1cGRhdGVkICAgICA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93ID0gVHJ1ZSkKQEAgLTEzMiwzMiArMTMxLDMyIEBACiAKIAogY2xhc3MgQlJMYXllcihtb2RlbHMuTW9kZWwpOgotICAgIHJlcSA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBnaXR1cmwgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0LCBudWxsPVRydWUpCiAgICAgbG9jYWxfc291cmNlX2RpciA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBjb21taXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0LCBudWxsPVRydWUpCiAgICAgZGlycGF0aCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgbnVsbD1UcnVlKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKIAogY2xhc3MgQlJCaXRiYWtlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZFJlcXVlc3QpICAgICMgb25seSBvbmUgYml0YmFrZSBmb3IgYSByZXF1ZXN0CisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkgICAgIyBvbmx5IG9uZSBiaXRiYWtlIGZvciBhIHJlcXVlc3QKICAgICBnaXR1cmwgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aCA9MjU0KQogICAgIGNvbW1pdCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0gMjU0KQogICAgIGRpcnBhdGggICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0gMjU0KQogCiBjbGFzcyBCUlZhcmlhYmxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QpCisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lICAgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdmFsdWUgICAgICAgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rID0gVHJ1ZSkKIAogY2xhc3MgQlJUYXJnZXQobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIHRhcmdldCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0YXNrICAgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIG51bGw9VHJ1ZSkKIAogY2xhc3MgQlJFcnJvcihtb2RlbHMuTW9kZWwpOgotICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZXJydHlwZSAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGVycm1zZyAgICAgID0gbW9kZWxzLlRleHRGaWVsZCgpCiAgICAgdHJhY2ViYWNrICAgPSBtb2RlbHMuVGV4dEZpZWxkKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCmluZGV4IGE3MjNmNWEuLmZkOTNmNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbApAQCAtOCw5ICs4LDkgQEAKIAogICA8IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuNDI8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS40NjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5IRUFEPC9maWVsZD4KQEAgLTMwLDExICszMCwxMSBAQAogCiAgIDwhLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5PcGVuZW1iZWRkZWQgV2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBEdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD13YXJyaW9yXCImZ3Q7T3BlbkVtYmVkZGVkIFdhcnJpb3ImbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9ZHVuZmVsbFwiJmd0O09wZW5FbWJlZGRlZCBEdW5mZWxsJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bG9jYWw8L2ZpZWxkPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggNzk5MjM4My4uOTAyYmM4OCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5iaXRiYWtlPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgpAQCAtMzUsMTEgKzM1LDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMi43ICJXYXJyaW9yIjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMy4xICJEdW5mZWxsIjwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj53YXJyaW9yPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD13YXJyaW9yIiZndDtZb2N0byBQcm9qZWN0IFdhcnJpb3IgYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1kdW5mZWxsIiZndDtZb2N0byBQcm9qZWN0IER1bmZlbGwgYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5sb2NhbDwvZmllbGQ+CkBAIC0xMzAsNyArMTMwLDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4xPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjIiPgpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEtcG9reTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjYiPgpAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTAiPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKaW5kZXggNWI1YWJiYi4uYTRkYmNhYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CkBAIC04LDcgKzgsNyBAQAogCiBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKIAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclNvdXJjZSwgTGF5ZXIsIFJlbGVhc2UsIExheWVyX1ZlcnNpb24KK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXIsIFJlbGVhc2UsIExheWVyX1ZlcnNpb24KIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeSwgTWFjaGluZSwgUmVjaXBlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IERpc3RybwogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUb2FzdGVyU2V0dGluZwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKaW5kZXggNzYwNDYyZi4uYThhYzIzYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgICAgICAgICAoJ2FyZWEnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ3ZhcmlhYmxlJyldKSksCiAgICAgICAgICAgICAgICAgKCdrZXknLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd0ZXh0JywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcsIHRvPSdvcm0uQnVpbGQnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0naGVscHRleHRfYnVpbGQnLCB0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtOTQsOCArOTQsOCBAQAogICAgICAgICAgICAgICAgICgnZGlycGF0aCcsIG1vZGVscy5DaGFyRmllbGQoZGVmYXVsdD1Ob25lLCBtYXhfbGVuZ3RoPTI1NSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwcmlvcml0eScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdsb2NhbF9wYXRoJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoZGVmYXVsdD1iJy8nLCBtYXhfbGVuZ3RoPTEwMjQpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicsIHRvPSdvcm0uTGF5ZXInKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9idWlsZCcsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5CdWlsZCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicsIHRvPSdvcm0uTGF5ZXInLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xMTIsOSArMTEyLDkgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3VwX2lkJywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nZGVwZW5kZWVzJywgdG89J29ybS5MYXllcl9WZXJzaW9uJykpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlbmNpZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlbmNpZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICAgICAgICAgICAgICAoJ21lc3NhZ2UnLCBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgncGF0aG5hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGluZW5vJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTEzNiw4ICsxMzYsOCBAQAogICAgICAgICAgICAgICAgICgndXBfZGF0ZScsIG1vZGVscy5EYXRlVGltZUZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE1NCw3ICsxNTQsNyBAQAogICAgICAgICAgICAgICAgICgnaW5zdGFsbGVkX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAogICAgICAgICAgICAgICAgICgnc2VjdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGljZW5zZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCwgYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE2Miw4ICsxNjIsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZGVwX3R5cGUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ2RlcGVuZHMnKSwgKDEsIGInZGVwZW5kcycpLCAoMywgYidyZWNvbW1lbmRzJyksICgyLCBiJ3JlY29tbWVuZHMnKSwgKDQsIGInc3VnZ2VzdHMnKSwgKDUsIGIncHJvdmlkZXMnKSwgKDYsIGIncmVwbGFjZXMnKSwgKDcsIGInY29uZmxpY3RzJyldKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnLCB0bz0nb3JtLlBhY2thZ2UnKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScsIHRvPSdvcm0uUGFja2FnZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwYXRoJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTg1LDcgKzE4NSw3IEBACiAgICAgICAgICAgICAgICAgKCd1cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgndXNlcl9pZCcsIG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdpc19kZWZhdWx0JywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xOTMsOCArMTkzLDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ29wdGlvbmFsJywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyY29tbWl0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0JykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJjb21taXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTIwMyw3ICsyMDMsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd0YXNrJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0JykpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkpLAogICAgICAgICAgICAgICAgICgndmFsdWUnLCBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjMyLDggKzIzMiw4IEBACiAgICAgICAgICAgICAgICAgKCdmaWxlX3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgncGF0aGZsYWdzJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTIwMCwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnaXNfaW1hZ2UnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNDEsOCArMjQxLDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2RlcF90eXBlJywgbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPVsoMCwgYidkZXBlbmRzJyksICgxLCBiJ3JkZXBlbmRzJyldKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5SZWNpcGUnKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJykpLAorICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfZGVwZW5kcycsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjUzLDcgKzI1Myw3IEBACiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2JyYW5jaF9uYW1lJywgbW9kZWxzLkNoYXJGaWVsZChkZWZhdWx0PWInJywgbWF4X2xlbmd0aD01MCkpLAogICAgICAgICAgICAgICAgICgnaGVscHRleHQnLCBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYml0YmFrZV92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CaXRiYWtlVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2xheWVyX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKGRlZmF1bHQ9YicnLCBtYXhfbGVuZ3RoPTEwMCkpLAotICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlbGVhc2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNjksOCArMjY5LDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3ByaW9yaXR5JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTApKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJTb3VyY2UnKSksCi0gICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllclNvdXJjZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgICAgICAgICAgICAgICgnaXNfaW1hZ2UnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ltYWdlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAogICAgICAgICAgICAgICAgICgnbGljZW5zZV9tYW5pZmVzdF9wYXRoJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwMCwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yOTUsOSArMjk1LDkgQEAKICAgICAgICAgICAgICAgICAoJ3Blcm1pc3Npb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTYpKSwKICAgICAgICAgICAgICAgICAoJ293bmVyJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEyOCkpLAogICAgICAgICAgICAgICAgICgnZ3JvdXAnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KSksCi0gICAgICAgICAgICAgICAgKCdkaXJlY3RvcnknLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RpcmVjdG9yeV9zZXQnLCB0bz0nb3JtLlRhcmdldF9GaWxlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdzeW1fdGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdzeW1saW5rX3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgnZGlyZWN0b3J5JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkaXJlY3Rvcnlfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdzeW1fdGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdzeW1saW5rX3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zMDYsMTUgKzMwNiwxNSBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX25hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdUYXJnZXRfSW5zdGFsbGVkX1BhY2thZ2UnLAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGR0YXJnZXRsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCi0gICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTMzNyw4ICszMzcsOCBAQAogICAgICAgICAgICAgICAgICgnc3N0YXRlX3Jlc3VsdCcsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wLCBjaG9pY2VzPVsoMCwgYidOb3QgQXBwbGljYWJsZScpLCAoMSwgYidGaWxlIG5vdCBpbiBjYWNoZScpLCAoMiwgYidGYWlsZWQnKSwgKDMsIGInU3VjY2VlZGVkJyldKSksCiAgICAgICAgICAgICAgICAgKCdtZXNzYWdlJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI0MCkpLAogICAgICAgICAgICAgICAgICgnbG9nZmlsZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcsIHRvPSdvcm0uQnVpbGQnKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tzJywgdG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza3MnLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIG9wdGlvbnM9ewogICAgICAgICAgICAgICAgICdvcmRlcmluZyc6ICgnb3JkZXInLCAncmVjaXBlJyksCkBAIC0zNDgsOCArMzQ4LDggQEAKICAgICAgICAgICAgIG5hbWU9J1Rhc2tfRGVwZW5kZW5jeScsCiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5UYXNrJykpLAotICAgICAgICAgICAgICAgICgndGFzaycsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycsIHRvPSdvcm0uVGFzaycpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlRhc2snLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Rhc2snLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX3Rhc2snLCB0bz0nb3JtLlRhc2snLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zNzAsNyArMzcwLDcgQEAKICAgICAgICAgICAgICAgICAoJ2NoYW5nZWQnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2h1bWFuX3JlYWRhYmxlX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjAwKSksCiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd2YXJpYWJsZV9idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zODEsMjggKzM4MSwyOCBAQAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2xpbmVfbnVtYmVyJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ29wZXJhdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD02NCkpLAotICAgICAgICAgICAgICAgICgndmFyaWFibGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZoaXN0b3J5JywgdG89J29ybS5WYXJpYWJsZScpKSwKKyAgICAgICAgICAgICAgICAoJ3ZhcmlhYmxlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd2aGlzdG9yeScsIHRvPSdvcm0uVmFyaWFibGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdwcm9qZWN0JywKICAgICAgICAgICAgIG5hbWU9J3JlbGVhc2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jeScsCiAgICAgICAgICAgICBuYW1lPSd0YXJnZXQnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdwYWNrYWdlJywKICAgICAgICAgICAgIG5hbWU9J3JlY2lwZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xvZ21lc3NhZ2UnLAogICAgICAgICAgICAgbmFtZT0ndGFzaycsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShibGFuaz1UcnVlLCB0bz0nb3JtLlRhc2snLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoYmxhbms9VHJ1ZSwgdG89J29ybS5UYXNrJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFsdGVyVW5pcXVlVG9nZXRoZXIoCiAgICAgICAgICAgICBuYW1lPSdsYXllcnNvdXJjZScsCkBAIC00MTEsMzIgKzQxMSwzMiBAQAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdsYXllcl9zb3VyY2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyX3ZlcnNpb24nLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvamVjdCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvamVjdCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyX3ZlcnNpb24nLAogICAgICAgICAgICAgbmFtZT0ndXBfYnJhbmNoJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5CcmFuY2gnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJyYW5jaCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyJywKICAgICAgICAgICAgIG5hbWU9J2xheWVyX3NvdXJjZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmFuY2gnLAogICAgICAgICAgICAgbmFtZT0nbGF5ZXJfc291cmNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9VHJ1ZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PVRydWUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdJbXBvcnRlZExheWVyU291cmNlJywKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAyX2N1c3RvbWltYWdlcmVjaXBlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKaW5kZXggOWNlYzgyZS4uMDljMmJmZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKQEAgLTE0LDEwICsxNCwxMCBAQAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKAogICAgICAgICAgICAgbmFtZT0nQ3VzdG9tSW1hZ2VSZWNpcGUnLAogICAgICAgICAgICAgZmllbGRzPVsKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgICAgICgnbGFzdF91cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2Jhc2VfcmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnLCB0bz0nb3JtLlJlY2lwZScpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdiYXNlX3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYmFzZWRfb25fcmVjaXBlJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICBiYXNlcz0oJ29ybS5yZWNpcGUnLCksCiAgICAgICAgICksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkKaW5kZXggYjAyN2Y2Ni4uOGNiODFkNyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDNfY3VzdG9taW1hZ2VwYWNrYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weQpAQCAtMTQsNyArMTQsNyBAQAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKAogICAgICAgICAgICAgbmFtZT0nQ3VzdG9tSW1hZ2VQYWNrYWdlJywKICAgICAgICAgICAgIGZpZWxkcz1bCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUGFja2FnZScpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2VfcHRyJywgbW9kZWxzLk9uZVRvT25lRmllbGQocGFyZW50X2xpbms9VHJ1ZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHNlcmlhbGl6ZT1GYWxzZSwgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICAgICAgKCdyZWNpcGVfYXBwZW5kcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdhcHBlbmRzX3NldCcsIHRvPSdvcm0uQ3VzdG9tSW1hZ2VSZWNpcGUnKSksCiAgICAgICAgICAgICAgICAgKCdyZWNpcGVfZXhjbHVkZXMnLCBtb2RlbHMuTWFueVRvTWFueUZpZWxkKHJlbGF0ZWRfbmFtZT0nZXhjbHVkZXNfc2V0JywgdG89J29ybS5DdXN0b21JbWFnZVJlY2lwZScpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9pbmNsdWRlcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdpbmNsdWRlc19zZXQnLCB0bz0nb3JtLkN1c3RvbUltYWdlUmVjaXBlJykpLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDRfcHJvdmlkZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQppbmRleCBkZmRlMmQxLi44NDQ5NjA0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQpAQCAtMTYsMTIgKzE2LDEyIEBACiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkpLAotICAgICAgICAgICAgICAgICgncmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3JlY2lwZV9kZXBlbmRlbmN5JywKICAgICAgICAgICAgIG5hbWU9J3ZpYScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm92aWRlcycpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkobnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvdmlkZXMnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgIF0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weQppbmRleCAzMzY3NTgyLi40MWE1NDdhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwOF9yZWZhY3Rvcl9hcnRpZmFjdF9tb2RlbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQoYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQoYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuUmVtb3ZlRmllbGQoCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkKaW5kZXggNzU1MDY5Ni4uM2YzYTJlMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTFfZGVsZXRlX2xheWVyc291cmNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weQpAQCAtMSw3ICsxLDcgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKIAotZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMKIAogCiBjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTJfdXNlX3JlbGVhc2VfaW5zdGVhZF9vZl91cF9icmFuY2gucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQppbmRleCAwZTZiYjgzLi40Yjk2YmYwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdyZWxlYXNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLlJ1blB5dGhvbihicmFuY2hfdG9fcmVsZWFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9jb2RlPW1pZ3JhdGlvbnMuUnVuUHl0aG9uLm5vb3ApLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5CmluZGV4IGQzYzU5MDEuLjczMWMwZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgICAgICAgICAoJ3VwX2RhdGUnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbmFtZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE5X2RqYW5nb18yXzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2YWVmMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE5X2RqYW5nb18yXzIucHkKQEAgLTAsMCArMSwyMyBAQAorIyBHZW5lcmF0ZWQgYnkgRGphbmdvIDIuMi43IG9uIDIwMTktMTEtMTkgMDM6MzgKKworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworaW1wb3J0IGRqYW5nby5kYi5tb2RlbHMuZGVsZXRpb24KKworCitjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgorCisgICAgZGVwZW5kZW5jaWVzID0gWworICAgICAgICAoJ29ybScsICcwMDE4X3Byb2plY3Rfc3BlY2lmaWMnKSwKKyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gWworICAgICAgICBtaWdyYXRpb25zLlJlbW92ZUZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nZGlzdHJvJywKKyAgICAgICAgICAgIG5hbWU9J3VwX2lkJywKKyAgICAgICAgKSwKKyAgICAgICAgbWlncmF0aW9ucy5BbHRlckZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAorICAgICAgICAgICAgbmFtZT0ncmVjaXBlc19wYXJzZWQnLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpLAorICAgICAgICApLAorICAgIF0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKaW5kZXggYmI2YjVkZS4uN2Y3ZTkyMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKQEAgLTEzLDcgKzEzLDcgQEAKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSBkamFuZ28udXRpbHMuZW5jb2RpbmcgaW1wb3J0IGZvcmNlX2J5dGVzCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiAKIGZyb20gZGphbmdvLmNvcmUgaW1wb3J0IHZhbGlkYXRvcnMKIGZyb20gZGphbmdvLmNvbmYgaW1wb3J0IHNldHRpbmdzCkBAIC0xNzgsOCArMTc4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2VfX2JyYW5jaF9uYW1lJ10KICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBzaG9ydF9kZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD01MCwgYmxhbms9VHJ1ZSkKLSAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUpCi0gICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KCJSZWxlYXNlIiwgbnVsbD1UcnVlKQorICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdCaXRiYWtlVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQorICAgIHJlbGVhc2UgPSBtb2RlbHMuRm9yZWlnbktleSgiUmVsZWFzZSIsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIGNyZWF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQ9VHJ1ZSkKICAgICB1cGRhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkKICAgICAjIFRoaXMgaXMgYSBob3JyaWJsZSBoYWNrOyBzaW5jZSBUb2FzdGVyIGhhcyBubyAiVXNlciIgbW9kZWwgYXZhaWxhYmxlIHdoZW4KQEAgLTQ2OSw3ICs0NjksNyBAQAogCiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWydtYWNoaW5lJywgJ2Nvb2tlcl9sb2dfcGF0aCcsICJ0YXJnZXRfX3RhcmdldCIsICJ0YXJnZXRfX3RhcmdldF9pbWFnZV9maWxlX19maWxlX25hbWUiXQogCi0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpICAgICAgICAgICAgIyBtdXN0IGhhdmUgYSBwcm9qZWN0CisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkgICAgICAgICAgICAjIG11c3QgaGF2ZSBhIHByb2plY3QKICAgICBtYWNoaW5lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBkaXN0cm8gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGRpc3Ryb192ZXJzaW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKQEAgLTc3NywxMyArNzc3LDEzIEBACiAgICAgICAgIHJldHVybiAiJWQgJXMgJXMiICUgKHNlbGYuaWQsIHNlbGYucHJvamVjdCwgIiwiLmpvaW4oW3QudGFyZ2V0IGZvciB0IGluIHNlbGYudGFyZ2V0X3NldC5hbGwoKV0pKQogCiBjbGFzcyBQcm9qZWN0VGFyZ2V0KG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICB0YXJnZXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpCiAKIGNsYXNzIFRhcmdldChtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsndGFyZ2V0JywgJ2ZpbGVfbmFtZSddCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCkKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgdGFyZ2V0ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0YXNrID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKQogICAgIGlzX2ltYWdlID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0ID0gRmFsc2UpCkBAIC05NDQsNyArOTQ0LDcgQEAKIAogIyBrZXJuZWwgYXJ0aWZhY3RzIGZvciBhIHRhcmdldDogYnpJbWFnZSBhbmQgbW9kdWxlcyoKIGNsYXNzIFRhcmdldEtlcm5lbEZpbGUobW9kZWxzLk1vZGVsKToKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC05NTQsNyArOTU0LDcgQEAKIAogIyBTREsgYXJ0aWZhY3RzIGZvciBhIHRhcmdldDogc2ggYW5kIG1hbmlmZXN0IGZpbGVzCiBjbGFzcyBUYXJnZXRTREtGaWxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQorICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKCkKICAgICBmaWxlX3NpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKIApAQCAtOTczLDcgKzk3Myw3IEBACiAgICAgICAgICd1YmlmcycsICd3aWMnLCAnd2ljLmJ6MicsICd3aWMuZ3onLCAnd2ljLmx6bWEnCiAgICAgfQogCi0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQorICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU0KQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC0xMDA3LDE1ICsxMDA3LDE1IEBACiAgICAgICAgICggSVRZUEVfQkxPQ0sgLCdibG9jaycpLAogICAgICAgICApCiAKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKCkKICAgICBzaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAgICAgaW5vZGV0eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzID0gSVRZUEVTKQogICAgIHBlcm1pc3Npb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTYpCiAgICAgb3duZXIgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KQogICAgIGdyb3VwID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEyOCkKLSAgICBkaXJlY3RvcnkgPSBtb2RlbHMuRm9yZWlnbktleSgnVGFyZ2V0X0ZpbGUnLCByZWxhdGVkX25hbWU9ImRpcmVjdG9yeV9zZXQiLCBudWxsPVRydWUpCi0gICAgc3ltX3RhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIHJlbGF0ZWRfbmFtZT0ic3ltbGlua19zZXQiLCBudWxsPVRydWUpCisgICAgZGlyZWN0b3J5ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9ImRpcmVjdG9yeV9zZXQiLCBudWxsPVRydWUpCisgICAgc3ltX3RhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSJzeW1saW5rX3NldCIsIG51bGw9VHJ1ZSkKIAogCiBjbGFzcyBUYXNrKG1vZGVscy5Nb2RlbCk6CkBAIC0xMTAyLDEzICsxMTAyLDEzIEBACiAgICAgZGVmIGdldF9kZXNjcmlwdGlvbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hlbHB0ZXh0CiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J3Rhc2tfYnVpbGQnKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJykKICAgICBvcmRlciA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlKQogICAgIHRhc2tfZXhlY3V0ZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpICMgVHJ1ZSBtZWFucyBFeGVjdXRlZCwgRmFsc2UgbWVhbnMgTm90L0V4ZWN1dGVkCiAgICAgb3V0Y29tZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1UQVNLX09VVENPTUUsIGRlZmF1bHQ9T1VUQ09NRV9OQSkKICAgICBzc3RhdGVfY2hlY2tzdW0gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQogICAgIHBhdGhfdG9fc3N0YXRlX29iaiA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9NTAwLCBibGFuaz1UcnVlKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCByZWxhdGVkX25hbWU9J3Rhc2tzJykKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tzJykKICAgICB0YXNrX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHNvdXJjZV91cmwgPSBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkKICAgICB3b3JrX2RpcmVjdG9yeSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQpAQCAtMTE0NywxMyArMTE0NywxMyBAQAogCiAKIGNsYXNzIFRhc2tfRGVwZW5kZW5jeShtb2RlbHMuTW9kZWwpOgotICAgIHRhc2sgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX3Rhc2snKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQorICAgIHRhc2sgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycpCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc19kZXBlbmRzJykKIAogY2xhc3MgUGFja2FnZShtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsnbmFtZScsICd2ZXJzaW9uJywgJ3JldmlzaW9uJywgJ3JlY2lwZV9fbmFtZScsICdyZWNpcGVfX3ZlcnNpb24nLCAncmVjaXBlX19saWNlbnNlJywgJ3JlY2lwZV9fbGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19icmFuY2gnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19jb21taXQnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19sb2NhbF9wYXRoJywgJ2luc3RhbGxlZF9uYW1lJ10KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KCdCdWlsZCcsIG51bGw9VHJ1ZSkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgbnVsbD1UcnVlKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0J1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCisgICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1JlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGluc3RhbGxlZF9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgZGVmYXVsdD0nJykKICAgICB2ZXJzaW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgYmxhbms9VHJ1ZSkKQEAgLTEyODksMTkgKzEyODksMTkgQEAKICAgICAgICAgVFlQRV9SQ09ORkxJQ1RTIDogICAoImNvbmZsaWN0cyIsICIlcyBjb25mbGljdHMgd2l0aCAlcywgd2hpY2ggd2lsbCBub3QgYmUgaW5zdGFsbGVkIGlmIHRoaXMgcGFja2FnZSBpcyBub3QgZmlyc3QgcmVtb3ZlZCIpLAogICAgIH0KIAotICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCByZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfdGFyZ2V0JykgICAjIHNvZnQgZGVwZW5kZW5jeQorICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJykKKyAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcpICAgIyBzb2Z0IGRlcGVuZGVuY3kKICAgICBkZXBfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1ERVBFTkRTX1RZUEUpCi0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBudWxsPVRydWUpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKICAgICBvYmplY3RzID0gUGFja2FnZV9EZXBlbmRlbmN5TWFuYWdlcigpCiAKIGNsYXNzIFRhcmdldF9JbnN0YWxsZWRfUGFja2FnZShtb2RlbHMuTW9kZWwpOgotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKLSAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScpCiAKIAogY2xhc3MgUGFja2FnZV9GaWxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJykKKyAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2J1aWxkZmlsZWxpc3RfcGFja2FnZScpCiAgICAgcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQogICAgIHNpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKIApAQCAtMTMxOCw3ICsxMzE4LDcgQEAKIAogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQogICAgIHZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkX25hbWU9J3JlY2lwZV9sYXllcl92ZXJzaW9uJykKICAgICBzdW1tYXJ5ID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQpAQCAtMTM1Niw3ICsxMzU2LDcgQEAKIAogY2xhc3MgUHJvdmlkZXMobW9kZWxzLk1vZGVsKToKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUpCisgICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAKIGNsYXNzIFJlY2lwZV9EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6CiAgICAgVFlQRV9ERVBFTkRTID0gMApAQCAtMTM2Niw5ICsxMzY2LDkgQEAKICAgICAgICAgKFRZUEVfREVQRU5EUywgImRlcGVuZHMiKSwKICAgICAgICAgKFRZUEVfUkRFUEVORFMsICJyZGVwZW5kcyIpLAogICAgICkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJykKLSAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQotICAgIHZpYSA9IG1vZGVscy5Gb3JlaWduS2V5KFByb3ZpZGVzLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19yZWNpcGUnKQorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJykKKyAgICB2aWEgPSBtb2RlbHMuRm9yZWlnbktleShQcm92aWRlcywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKICAgICBkZXBfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1ERVBFTkRTX1RZUEUpCiAgICAgb2JqZWN0cyA9IFJlY2lwZV9EZXBlbmRlbmN5TWFuYWdlcigpCiAKQEAgLTEzNzcsNyArMTM3Nyw3IEBACiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyJuYW1lIiwgImRlc2NyaXB0aW9uIiwgImxheWVyX3ZlcnNpb25fX2xheWVyX19uYW1lIl0KICAgICB1cF9kYXRlID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbCA9IFRydWUsIGRlZmF1bHQgPSBOb25lKQogCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJykKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQogCkBAIC0xNDA4LDcgKzE0MDgsNyBAQAogICAgICIiIiBBIHJlbGVhc2UgaXMgYSBwcm9qZWN0IHRlbXBsYXRlLCB1c2VkIHRvIHByZS1wb3B1bGF0ZSBQcm9qZWN0IHNldHRpbmdzIHdpdGggYSBjb25maWd1cmF0aW9uIHNldCAiIiIKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTMyLCB1bmlxdWUgPSBUcnVlKQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKLSAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShCaXRiYWtlVmVyc2lvbikKKyAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShCaXRiYWtlVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGJyYW5jaF9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwLCBkZWZhdWx0ID0gIiIpCiAgICAgaGVscHRleHQgPSBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSkKIApAQCAtMTQxOSw3ICsxNDE5LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCiBjbGFzcyBSZWxlYXNlRGVmYXVsdExheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBsYXllcl9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgZGVmYXVsdD0iIikKIAogCkBAIC0xNDc0LDEwICsxNDc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXllcl9fZGVzY3JpcHRpb24iLCAibGF5ZXJfX3Zjc191cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCIsICJyZWxlYXNlX19uYW1lIiwgImNvbW1pdCIsICJicmFuY2giXQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9idWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkKIAotICAgIGxheWVyID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXIsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicpCisgICAgbGF5ZXIgPSBtb2RlbHMuRm9yZWlnbktleShMYXllciwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fbGF5ZXInKQogCiAgICAgbGF5ZXJfc291cmNlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUxheWVyU291cmNlLlNPVVJDRV9UWVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0wKQpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKICAgICB1cF9kYXRlID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbD1UcnVlLCBkZWZhdWx0PXRpbWV6b25lLm5vdykKIAogICAgICMgVG8gd2hpY2ggbWV0YWRhdGEgcmVsZWFzZSBkb2VzIHRoaXMgbGF5ZXIgdmVyc2lvbiBiZWxvbmcgdG8KLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICBicmFuY2ggPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9ODApCiAgICAgY29tbWl0ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKQEAgLTE0OTksNyArMTQ5OSw3IEBACiAgICAgbG9jYWxfcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MTAyNCwgZGVmYXVsdD0iLyIpCiAKICAgICAjIFNldCBpZiB0aGlzIGxheWVyIGlzIHJlc3RyaWN0ZWQgdG8gYSBwYXJ0aWN1bGFyIHByb2plY3QKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1Byb2plY3QnLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1Byb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQogCiAgICAgIyBjb2RlIGxpZnRlZCwgd2l0aCBhZGFwdGF0aW9ucywgZnJvbSB0aGUgbGF5ZXJpbmRleC13ZWIgYXBwbGljYXRpb24KICAgICAjIGh0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9sYXllcmluZGV4LXdlYi8KQEAgLTE2MDgsMTQgKzE2MDgsMTQgQEAKIAogY2xhc3MgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeShtb2RlbHMuTW9kZWwpOgogCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZF9uYW1lPSJkZXBlbmRlbmNpZXMiKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLAorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfbmFtZT0iZGVwZW5kZWVzIikKIAogY2xhc3MgUHJvamVjdExheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCi0gICAgbGF5ZXJjb21taXQgPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBudWxsPVRydWUpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICBsYXllcmNvbW1pdCA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG9wdGlvbmFsID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0ID0gVHJ1ZSkKIAogICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKQEAgLTE2MzAsOCArMTYzMCw4IEBACiAgICAgTEFZRVJfTkFNRSA9ICJ0b2FzdGVyLWN1c3RvbS1pbWFnZXMiCiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ25hbWUnXQotICAgIGJhc2VfcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCByZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScpCi0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgYmFzZV9yZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnKQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbGFzdF91cGRhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICBkZWYgZ2V0X2xhc3Rfc3VjY2Vzc2Z1bF9idWlsdF90YXJnZXQoc2VsZik6CkBAIC0xNjQ3LDE0ICsxNjQ3LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICAjIENoZWNrIGlmIHdlJ3JlIGFsZHJlYWR5IHVwLXRvLWRhdGUgb3Igbm90CiAgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0X2xhc3Rfc3VjY2Vzc2Z1bF9idWlsdF90YXJnZXQoKQotICAgICAgICBpZiB0YXJnZXQgPT0gTm9uZToKKyAgICAgICAgaWYgdGFyZ2V0IGlzIE5vbmU6CiAgICAgICAgICAgICAjIFNvIHdlJ3ZlIG5ldmVyIGFjdHVhbGx5IGJ1aWx0IHRoaXMgQ3VzdG9tIHJlY2lwZSBidXQgd2hhdCBhYm91dAogICAgICAgICAgICAgIyB0aGUgcmVjaXBlIGl0J3MgYmFzZWQgb24/CiAgICAgICAgICAgICB0YXJnZXQgPSBcCiAgICAgICAgICAgICAgICAgVGFyZ2V0Lm9iamVjdHMuZmlsdGVyKFEoYnVpbGRfX291dGNvbWU9QnVpbGQuU1VDQ0VFREVEKSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoYnVpbGRfX3Byb2plY3Q9c2VsZi5wcm9qZWN0KSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEodGFyZ2V0PXNlbGYuYmFzZV9yZWNpcGUubmFtZSkpLmxhc3QoKQotICAgICAgICAgICAgaWYgdGFyZ2V0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiB0YXJnZXQuYnVpbGQuY29tcGxldGVkX29uID09IHNlbGYubGFzdF91cGRhdGVkOgpAQCAtMTc4NCwxNCArMTc4NCwxNCBAQAogICAgICAgICByZXR1cm4gcmVjaXBlX2NvbnRlbnRzCiAKIGNsYXNzIFByb2plY3RWYXJpYWJsZShtb2RlbHMuTW9kZWwpOgotICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0KQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdmFsdWUgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rID0gVHJ1ZSkKIAogY2xhc3MgVmFyaWFibGUobW9kZWxzLk1vZGVsKToKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ3ZhcmlhYmxlX25hbWUnLCAndmFyaWFibGVfdmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmhpc3RvcnlfX2ZpbGVfbmFtZScsICJkZXNjcmlwdGlvbiJdCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSd2YXJpYWJsZV9idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJykKICAgICB2YXJpYWJsZV9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YXJpYWJsZV92YWx1ZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkKICAgICBjaGFuZ2VkID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQpAQCAtMTc5OSw3ICsxNzk5LDcgQEAKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkKIAogY2xhc3MgVmFyaWFibGVIaXN0b3J5KG1vZGVscy5Nb2RlbCk6Ci0gICAgdmFyaWFibGUgPSBtb2RlbHMuRm9yZWlnbktleShWYXJpYWJsZSwgcmVsYXRlZF9uYW1lPSd2aGlzdG9yeScpCisgICAgdmFyaWFibGUgPSBtb2RlbHMuRm9yZWlnbktleShWYXJpYWJsZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3ZoaXN0b3J5JykKICAgICB2YWx1ZSAgID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1KQogICAgIGxpbmVfbnVtYmVyID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpCkBAIC0xODA5LDcgKzE4MDksNyBAQAogICAgIFZBUklBQkxFID0gMAogICAgIEhFTFBURVhUX0FSRUEgPSAoKFZBUklBQkxFLCAndmFyaWFibGUnKSwgKQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJykKICAgICBhcmVhID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUhFTFBURVhUX0FSRUEpCiAgICAga2V5ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0ZXh0ID0gbW9kZWxzLlRleHRGaWVsZCgpCkBAIC0xODI5LDggKzE4MjksOCBAQAogICAgICAgICAoRVhDRVBUSU9OLCAidG9hc3RlciBleGNlcHRpb24iKQogICAgICkKIAotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQpCi0gICAgdGFzayAgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBibGFuayA9IFRydWUsIG51bGw9VHJ1ZSkKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgdGFzayAgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIGJsYW5rID0gVHJ1ZSwgbnVsbD1UcnVlKQogICAgIGxldmVsID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUxPR19MRVZFTCwgZGVmYXVsdD1JTkZPKQogICAgIG1lc3NhZ2UgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkKICAgICBwYXRobmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQpAQCAtMTg1OSw3ICsxODU5LDcgQEAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbIm5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiXQogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsID0gVHJ1ZSwgZGVmYXVsdCA9IE5vbmUpCiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weQppbmRleCA2Yzk0Njg0Li42NDRkNDVmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci9zZWxlbml1bV9oZWxwZXJzX2Jhc2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5CkBAIC0xOSw3ICsxOSw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gZGphbmdvLmNvbnRyaWIuc3RhdGljZmlsZXMudGVzdGluZyBpbXBvcnQgU3RhdGljTGl2ZVNlcnZlclRlc3RDYXNlCiBmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJkcml2ZXIKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5kZXNpcmVkX2NhcGFiaWxpdGllcyBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGllcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfYnVpbGRzX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQppbmRleCBmYmE2MjdiLi44NDIzZDNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQpAQCAtOSw3ICs5LDcgQEAKIAogaW1wb3J0IHJlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9wcm9qZWN0c19wYWdlLnB5CmluZGV4IGFmZDJkMzUuLjE1YjAzNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weQpAQCAtOSw3ICs5LDcgQEAKIAogaW1wb3J0IHJlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weQppbmRleCBkOTcyYWZmLi5lZmNkODliIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIAogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfYXJ0aWZhY3RzLnB5CmluZGV4IGUyNjIzZTguLmM2MjI2ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiAKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfcmVjaXBlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CmluZGV4IGM1NDJkNDUuLjlkODViYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBSZWNpcGUsIFRhc2ssIExheWVyLCBMYXllcl9WZXJzaW9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkKaW5kZXggMjJhY2I0Ny4uN2ZkZjc1ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3Rhc2tzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgUmVjaXBlLCBUYXNrLCBMYXllciwgTGF5ZXJfVmVyc2lvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5CmluZGV4IGU4YjQyOTUuLmU2MTYzYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfanNfdW5pdF90ZXN0cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkKQEAgLTExLDcgKzExLDcgQEAKIFJ1biB0aGUganMgdW5pdCB0ZXN0cwogIiIiCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogaW1wb3J0IGxvZ2dpbmcKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYW5kaW5nX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQppbmRleCAwNzkwMTk4Li44YmI2NGI5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24KICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGF5ZXJkZXRhaWxzX3BhZ2UucHkKaW5kZXggZjgxZTY5Ni4uNzFiZGQyYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdCwgTGF5ZXJTb3VyY2UsIFJlbGVhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weQppbmRleCAxNWQyNWRjLi43ODQ0YWFhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X21vc3RfcmVjZW50X2J1aWxkc19zdGF0ZXMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnNfYmFzZSBpbXBvcnQgV2FpdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfY3VzdG9tX2ltYWdlX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQppbmRleCAwYWEzYjdhLi45OTA2YWU0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgUmVsZWFzZSwgUHJvamVjdCwgUHJvamVjdExheWVyLCBMYXllcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5CmluZGV4IDhlNTZiYjAuLmUyMGExZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X3Byb2plY3RfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnVpIGltcG9ydCBTZWxlY3QKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRFbGVtZW50U3RhdGVFeGNlcHRpb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weQppbmRleCA0N2ZiMTBiLi41MTcxN2U3IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfYnVpbGRzX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5CmluZGV4IDI4MTZlYjkuLjk0NGJjYjIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9jb25maWdfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkKQEAgLTcsMTAgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCByZQotCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBQcm9qZWN0VmFyaWFibGUKQEAgLTIxNiw0ICsyMTMsNSBAQAogCiAgICAgICAgIGhpZGRlbl9lbGVtZW50ID0gc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdoaW50RXJyb3Itc3N0YXRlX2RpcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGlkZGVuX2VsZW1lbnQuaXNfZGlzcGxheWVkKCksIEZhbHNlLAotICAgICAgICAgICAgJ3NzdGF0ZSBkaXJlY3RvcnkgcGF0aCB2YWxpZCBidXQgdHJlYXRlZCBhcyBpbnZhbGlkJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICAgICAgICAnc3N0YXRlIGRpcmVjdG9yeSBwYXRoIHZhbGlkIGJ1dCB0cmVhdGVkIGFzIGludmFsaWQnKQorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CmluZGV4IDhiNWUxYjYuLjU0NjI5M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3Rfc2FtcGxlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKaW5kZXggZjRhZDY3MC4uYjAwNjdjMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGFuZCBzaG91bGQgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgc2FtcGxlLgogIiIiCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBjbGFzcyBUZXN0U2FtcGxlKFNlbGVuaXVtVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90YXNrX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQppbmRleCAyNmYzZGNhLi4wMTFiNTg1IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgTGF5ZXIsIExheWVyX1ZlcnNpb24sIFJlY2lwZSwgVGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3RvYXN0ZXJ0YWJsZV91aS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CmluZGV4IGVmNzhjYmIuLmU4MmQ1ZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgUmVsZWFzZSwgUHJvamVjdCwgQnVpbGQKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weQppbmRleCA1NmM4NGZiLi41NjgzZTM4IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Z1bmN0aW9uYWxfYmFzaWMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5CkBAIC03LDcgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCB0aW1lCiBpbXBvcnQgcmUKIGZyb20gdGVzdHMuZnVuY3Rpb25hbC5mdW5jdGlvbmFsX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtRnVuY3Rpb25hbFRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy92aWV3cy90ZXN0X3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKaW5kZXggNjhkOWU5ZC4uNzM1ZDU5NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKQEAgLTExLDcgKzExLDcgQEAKIAogZnJvbSBkamFuZ28udGVzdCBpbXBvcnQgVGVzdENhc2UKIGZyb20gZGphbmdvLnRlc3QuY2xpZW50IGltcG9ydCBSZXF1ZXN0RmFjdG9yeQotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFBhY2thZ2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQppbmRleCA4YjQ5YjNlLi5iNGNkYzMzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQganNvbgogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXIKLWZyb20gc2h1dGlsIGltcG9ydCBjb3B5ZmlsZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RUYXJnZXQsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyVmVyc2lvbkRlcGVuZGVuY3ksIExheWVyU291cmNlLCBQcm9qZWN0TGF5ZXIKQEAgLTI1LDEyICsyNCwxMCBAQAogCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UsIEpzb25SZXNwb25zZQogZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgVmlldwotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUSwgRgogZnJvbSBkamFuZ28uZGIgaW1wb3J0IEVycm9yCiBmcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBmaWx0ZXJlZF9maWxlc2l6ZWZvcm1hdAotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1pbXBvcnQgcHl0egogCiAjIGRldmVsb3BtZW50L2RlYnVnZ2luZyBzdXBwb3J0CiB2ZXJib3NlID0gMgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5CmluZGV4IGIzZWEyMjIuLjUyOGRkMzIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKQEAgLTcsMTUgKzcsMTAgQEAKICMKIAogZnJvbSB0b2FzdGVyZ3VpLndpZGdldHMgaW1wb3J0IFRvYXN0ZXJUYWJsZQotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBSZWNpcGUsIFByb2plY3RMYXllciwgTGF5ZXJfVmVyc2lvbiwgTWFjaGluZSwgUHJvamVjdAorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBSZWNpcGUsIFByb2plY3RMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgUGFja2FnZSwgVGFyZ2V0LCBCdWlsZCwgTG9nTWVzc2FnZSwgVGFzawogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVBhY2thZ2UsIFBhY2thZ2VfRGVwZW5kZW5jeU1hbmFnZXIKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEsIE1heCwgU3VtLCBDb3VudCwgV2hlbiwgQ2FzZSwgVmFsdWUsIEludGVnZXJGaWVsZAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCB1cmwKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlLCByZXNvbHZlCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFRlbXBsYXRlVmlldworZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRLCBTdW0sIENvdW50LCBXaGVuLCBDYXNlLCBWYWx1ZSwgSW50ZWdlckZpZWxkCiAKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXIKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXJBY3Rpb25Ub2dnbGUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3Mvb2JqZWN0c190b19kaWN0aW9uYXJpZXNfZmlsdGVyLnB5CmluZGV4IDA0OGQ1MzMuLmUyNDIyMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weQpAQCAtMyw3ICszLDYgQEAKICMKIAogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCi1pbXBvcnQganNvbgogCiByZWdpc3RlciA9IHRlbXBsYXRlLkxpYnJhcnkoKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3RfdXJsX3RhZy5weQppbmRleCA3MWUwOTI1Li43YjZmMTViIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkKQEAgLTMsNyArMyw3IEBACiAjCiAKIGZyb20gZGphbmdvIGltcG9ydCB0ZW1wbGF0ZQotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIAogcmVnaXN0ZXIgPSB0ZW1wbGF0ZS5MaWJyYXJ5KCkKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5CmluZGV4IDFkYmFiM2IuLmM0MzJmNTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0dGFncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkKQEAgLTYsNyArNiw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCiBmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgKIGltcG9ydCByZQogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCkBAIC00NCw3ICs0NCw3IEBACiAgICAgIyBpdCBtYW51YWxseSBoZXJlCiAgICAgcmV0dXJuIG1hcmtfc2FmZShKc29uTGliLmR1bXBzKHZhbHVlLCBpbmRlbnQ9MiwgZGVmYXVsdCA9IGRlZmF1bHQsIGVuc3VyZV9hc2NpaT1GYWxzZSkucmVwbGFjZSgnPC8nLCAnPFxcLycpKQogCi1AcmVnaXN0ZXIuYXNzaWdubWVudF90YWcKK0ByZWdpc3Rlci5zaW1wbGVfdGFnCiBkZWYgcXVlcnkocXMsICoqa3dhcmdzKToKICAgICAiIiIgdGVtcGxhdGUgdGFnIHdoaWNoIGFsbG93cyBxdWVyeXNldCBmaWx0ZXJpbmcuIFVzYWdlOgogICAgICAgICAgIHslIHF1ZXJ5IGJvb2tzIGF1dGhvcj1hdXRob3IgYXMgbXlib29rcyAlfQpAQCAtODMsNyArODMsNyBAQAogZGVmIG11bHRpcGx5KHZhbHVlLCBhcmcpOgogICAgIHJldHVybiBpbnQodmFsdWUpICogaW50KGFyZykKIAotQHJlZ2lzdGVyLmFzc2lnbm1lbnRfdGFnCitAcmVnaXN0ZXIuc2ltcGxlX3RhZwogZGVmIGRhdGVjb21wdXRlKGRlbHRhLCBzdGFydCA9IHRpbWV6b25lLm5vdygpKToKICAgICByZXR1cm4gc3RhcnQgKyB0aW1lZGVsdGEoZGVsdGEpCiAKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICIiIklmIHBhY2thZ2UuaW5zdGFsbGVkX3NpemUgbm90IG51bGwgYW5kIG5vdCBlbXB0eSByZXR1cm4gaXQsCiAgICAgICAgZWxzZSByZXR1cm4gcGFja2FnZS5zaXplCiAgICAgIiIiCi0gICAgcmV0dXJuIHNpemUgaWYgKGluc3RhbGxlZF9zaXplID09IDApIG9yIChpbnN0YWxsZWRfc2l6ZSA9PSAiIikgb3IgKGluc3RhbGxlZF9zaXplID09IE5vbmUpIGVsc2UgaW5zdGFsbGVkX3NpemUKKyAgICByZXR1cm4gc2l6ZSBpZiAoaW5zdGFsbGVkX3NpemUgPT0gMCkgb3IgKGluc3RhbGxlZF9zaXplID09ICIiKSBvciAoaW5zdGFsbGVkX3NpemUgaXMgTm9uZSkgZWxzZSBpbnN0YWxsZWRfc2l6ZQogCiBAcmVnaXN0ZXIuZmlsdGVyCiBkZWYgZmlsdGVyZWRfcGFja2FnZXZlcnNpb24odmVyc2lvbiwgcmV2aXNpb24pOgpAQCAtMjI4LDcgKzIyOCw3IEBACiAgICAgICAgIGZvcm1hdHRlZCBuaWNlbHkuCiAgICAgIiIiCiAgICAgc2l6ZSA9IHBhY2thZ2Vfb2JqZWN0Lmluc3RhbGxlZF9zaXplCi0gICAgaWYgc2l6ZSA9PSBOb25lIG9yIHNpemUgPT0gJyc6CisgICAgaWYgc2l6ZSBpcyBOb25lIG9yIHNpemUgPT0gJyc6CiAgICAgICAgIHNpemUgPSBwYWNrYWdlX29iamVjdC5zaXplCiAKICAgICByZXR1cm4gJ3s6LjElfScuZm9ybWF0KGZsb2F0KHNpemUpL2Zsb2F0KHRvdGFsX3NpemUpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKaW5kZXggZmQ3NTBmZi4uYTFlNmZlOSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAKIGZyb20gdG9hc3Rlcmd1aS53aWRnZXRzIGltcG9ydCBUb2FzdGVyVHlwZUFoZWFkCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby5jb3JlLmNhY2hlIGltcG9ydCBjYWNoZQogCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CmluZGV4IDY3M2Q5YWUuLmQyZGY0ZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQpAQCAtNiwxMCArNiw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKLWZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFJlZGlyZWN0VmlldywgVGVtcGxhdGVWaWV3Citmcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAorZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgUmVkaXJlY3RWaWV3CiAKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZUJhZFJlcXVlc3QKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgdGFibGVzCiBmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IGJ1aWxkdGFibGVzCiBmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IHR5cGVhaGVhZHMKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKaW5kZXggZDdhY2FmZi4uOWE1ZTQ4ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKQEAgLTE5LDggKzE5LDggQEAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgVGFyZ2V0S2VybmVsRmlsZSwgVGFyZ2V0U0RLRmlsZSwgVGFyZ2V0X0ltYWdlX0ZpbGUKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQml0YmFrZVZlcnNpb24sIEN1c3RvbUltYWdlUmVjaXBlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlLCByZXNvbHZlCi1mcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE11bHRpcGxlT2JqZWN0c1JldHVybmVkLCBPYmplY3REb2VzTm90RXhpc3QKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKK2Zyb20gZGphbmdvLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0RG9lc05vdEV4aXN0CiBmcm9tIGRqYW5nby5jb3JlLnBhZ2luYXRvciBpbXBvcnQgUGFnaW5hdG9yLCBFbXB0eVBhZ2UsIFBhZ2VOb3RBbkludGVnZXIKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZU5vdEZvdW5kLCBKc29uUmVzcG9uc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQpAQCAtNTEsNyArNTEsNyBAQAogICAgIGRlZiBnZXRfbWltZXR5cGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIGd1ZXNzID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUocGF0aCwgc2VsZi5fc3RyaWN0KQogICAgICAgICBndWVzc2VkX3R5cGUgPSBndWVzc1swXQotICAgICAgICBpZiBndWVzc2VkX3R5cGUgPT0gTm9uZToKKyAgICAgICAgaWYgZ3Vlc3NlZF90eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICBndWVzc2VkX3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwogICAgICAgICByZXR1cm4gZ3Vlc3NlZF90eXBlCiAKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgIHJldHVybiB7ImlkIjogeC5waywKICAgICAgICAgICAgICJuYW1lIjogeC5sYXllci5uYW1lLAogICAgICAgICAgICAgInRvb2x0aXAiOiAiJXMgfCAlcyIgJSAoeC5sYXllci52Y3NfdXJsLHguZ2V0X3Zjc19yZWZlcmVuY2UoKSksCi0gICAgICAgICAgICAiZGV0YWlsIjogIiglcyIgJSB4LmxheWVyLnZjc191cmwgKyAoIikiIGlmIHgucmVsZWFzZSA9PSBOb25lIGVsc2UgIiB8ICIreC5nZXRfdmNzX3JlZmVyZW5jZSgpKyIpIiksCisgICAgICAgICAgICAiZGV0YWlsIjogIiglcyIgJSB4LmxheWVyLnZjc191cmwgKyAoIikiIGlmIHgucmVsZWFzZSBpcyBOb25lIGVsc2UgIiB8ICIreC5nZXRfdmNzX3JlZmVyZW5jZSgpKyIpIiksCiAgICAgICAgICAgICAiZ2l0dXJsIjogeC5sYXllci52Y3NfdXJsLAogICAgICAgICAgICAgImxheWVyZGV0YWlsdXJsIiA6IHJldmVyc2UoJ2xheWVyZGV0YWlscycsIGFyZ3M9KHByai5pZCx4LnBrKSksCiAgICAgICAgICAgICAicmV2aXNpb24iIDogeC5nZXRfdmNzX3JlZmVyZW5jZSgpLApAQCAtMzUyLDcgKzM1Miw3IEBACiAjIHNldCBjb29raWVzIGZvciBwYXJhbWV0ZXJzLiB0aGlzIGlzIHVzZWZ1bGwgaW4gY2FzZSBwYXJhbWV0ZXJzIGFyZSBzZXQKICMgbWFudWFsbHkgZnJvbSB0aGUgR0VUIHZhbHVlcyBvZiB0aGUgbGluawogZGVmIF9zZXRfcGFyYW1ldGVyc192YWx1ZXMocGFnZXNpemUsIG9yZGVyYnksIHJlcXVlc3QpOgotICAgIGZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXNvbHZlCisgICAgZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmVzb2x2ZQogICAgIGN1cnJlbnRfdXJsID0gcmVzb2x2ZShyZXF1ZXN0LnBhdGhfaW5mbykudXJsX25hbWUKICAgICByZXF1ZXN0LnNlc3Npb25bJyVzX2NvdW50JyAlIGN1cnJlbnRfdXJsXSA9IHBhZ2VzaXplCiAgICAgcmVxdWVzdC5zZXNzaW9uWyclc19vcmRlcmJ5JyAlIGN1cnJlbnRfdXJsXSA9b3JkZXJieQpAQCAtNjY0LDcgKzY2NCw2IEBACiAgICAgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCkKICAgICByZXR1cm4gcmVzcG9uc2UKIAotZnJvbSBkamFuZ28uY29yZS5zZXJpYWxpemVycy5qc29uIGltcG9ydCBEamFuZ29KU09ORW5jb2RlcgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCiBkZWYgeGhyX2RpcmluZm8ocmVxdWVzdCwgYnVpbGRfaWQsIHRhcmdldF9pZCk6CiAgICAgdG9wID0gcmVxdWVzdC5HRVQuZ2V0KCdzdGFydCcsICcvJykKQEAgLTcxOSw3ICs3MTgsNyBAQAogICAgICAgICAgICAgICAgIHJlc29sdmVkX2lkID0gby5zeW1fdGFyZ2V0X2lkCiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aCA9IG8ucGF0aAogICAgICAgICAgICAgICAgIGlmIHRhcmdldF9wYWNrYWdlcy5jb3VudCgpOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSByZXNvbHZlZF9pZCAhPSAiIiBhbmQgcmVzb2x2ZWRfaWQgIT0gTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgcmVzb2x2ZWRfaWQgIT0gIiIgYW5kIHJlc29sdmVkX2lkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgdGYgPSBUYXJnZXRfRmlsZS5vYmplY3RzLmdldChwaz1yZXNvbHZlZF9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkX3BhdGggPSB0Zi5wYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZF9pZCA9IHRmLnN5bV90YXJnZXRfaWQKQEAgLTczMSwxMCArNzMwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVsncGFja2FnZV9pZCddID0gc3RyKHAuaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVsncGFja2FnZSddID0gcC5uYW1lCiAgICAgICAgICAgICAgICAgIyBkb24ndCB1c2UgcmVzb2x2ZWQgcGF0aCBmcm9tIGFib3ZlLCBzaG93IGltbWVkaWF0ZSBsaW5rLXRvCi0gICAgICAgICAgICAgICAgaWYgby5zeW1fdGFyZ2V0X2lkICE9ICIiIGFuZCBvLnN5bV90YXJnZXRfaWQgIT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiBvLnN5bV90YXJnZXRfaWQgIT0gIiIgYW5kIG8uc3ltX3RhcmdldF9pZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2xpbmtfdG8nXSA9IFRhcmdldF9GaWxlLm9iamVjdHMuZ2V0KHBrPW8uc3ltX3RhcmdldF9pZCkucGF0aAogICAgICAgICAgICAgZW50cnlbJ3NpemUnXSA9IGZpbHRlcmVkX2ZpbGVzaXplZm9ybWF0KG8uc2l6ZSkKLSAgICAgICAgICAgIGlmIGVudHJ5WydsaW5rX3RvJ10gIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGVudHJ5WydsaW5rX3RvJ10gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgZW50cnlbJ3Blcm1pc3Npb24nXSA9IG5vZGVfc3RyW28uaW5vZGV0eXBlXSArIG8ucGVybWlzc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbnRyeVsncGVybWlzc2lvbiddID0gbm9kZV9zdHJbby5pbm9kZXR5cGVdICsgby5wZXJtaXNzaW9uCkBAIC03NTYsNyArNzU1LDcgQEAKICAgICBvYmplY3RzID0gX2dldF9kaXJfZW50cmllcyhidWlsZF9pZCwgdGFyZ2V0X2lkLCAnLycpCiAgICAgcGFja2FnZXNfc3VtID0gUGFja2FnZS5vYmplY3RzLmZpbHRlcihpZF9faW49VGFyZ2V0X0luc3RhbGxlZF9QYWNrYWdlLm9iamVjdHMuZmlsdGVyKHRhcmdldF9pZD10YXJnZXRfaWQpLnZhbHVlcygncGFja2FnZV9pZCcpKS5hZ2dyZWdhdGUoU3VtKCdpbnN0YWxsZWRfc2l6ZScpKQogICAgIGRpcl9saXN0ID0gTm9uZQotICAgIGlmIGZpbGVfcGF0aCAhPSBOb25lOgorICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgIiIiCiAgICAgICAgIExpbmsgZnJvbSB0aGUgaW5jbHVkZWQgcGFja2FnZSBkZXRhaWwgZmlsZSBsaXN0IHBhZ2UgYW5kIGlzCiAgICAgICAgIHJlcXVlc3Rpbmcgb3BlbmluZyB0aGUgZGlyIGluZm8gdG8gYSBzcGVjaWZpYyBmaWxlIHBhdGguCkBAIC0xMDMwLDE1ICsxMDI5LDE1IEBACiAKIGRlZiBfZ2V0X3BhY2thZ2VfYWxpYXMocGFja2FnZSk6CiAgICAgYWxpYXMgPSBwYWNrYWdlLmluc3RhbGxlZF9uYW1lCi0gICAgaWYgYWxpYXMgIT0gTm9uZSBhbmQgYWxpYXMgIT0gJycgYW5kIGFsaWFzICE9IHBhY2thZ2UubmFtZToKKyAgICBpZiBhbGlhcyBpcyBub3QgTm9uZSBhbmQgYWxpYXMgIT0gJycgYW5kIGFsaWFzICE9IHBhY2thZ2UubmFtZToKICAgICAgICAgcmV0dXJuIGFsaWFzCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICcnCiAKIGRlZiBfZ2V0X2Z1bGxwYWNrYWdlc3BlYyhwYWNrYWdlKToKICAgICByID0gcGFja2FnZS5uYW1lCi0gICAgdmVyc2lvbl9nb29kID0gcGFja2FnZS52ZXJzaW9uICE9IE5vbmUgYW5kICBwYWNrYWdlLnZlcnNpb24gIT0gJycKLSAgICByZXZpc2lvbl9nb29kID0gcGFja2FnZS5yZXZpc2lvbiAhPSBOb25lIGFuZCBwYWNrYWdlLnJldmlzaW9uICE9ICcnCisgICAgdmVyc2lvbl9nb29kID0gcGFja2FnZS52ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCAgcGFja2FnZS52ZXJzaW9uICE9ICcnCisgICAgcmV2aXNpb25fZ29vZCA9IHBhY2thZ2UucmV2aXNpb24gaXMgbm90IE5vbmUgYW5kIHBhY2thZ2UucmV2aXNpb24gIT0gJycKICAgICBpZiB2ZXJzaW9uX2dvb2Qgb3IgcmV2aXNpb25fZ29vZDoKICAgICAgICAgciArPSAnXycKICAgICAgICAgaWYgdmVyc2lvbl9nb29kOgpAQCAtMTE5Miw3ICsxMTkxLDcgQEAKICAgICAgICAgcmV0dXJuIF9yZWRpcmVjdF9wYXJhbWV0ZXJzKCAncGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcycsIHJlcXVlc3QuR0VULCBtYW5kYXRvcnlfcGFyYW1ldGVycywgYnVpbGRfaWQgPSBidWlsZF9pZCwgdGFyZ2V0X2lkID0gdGFyZ2V0X2lkLCBwYWNrYWdlX2lkID0gcGFja2FnZV9pZCkKICAgICAoZmlsdGVyX3N0cmluZywgc2VhcmNoX3Rlcm0sIG9yZGVyaW5nX3N0cmluZykgPSBfc2VhcmNoX3R1cGxlKHJlcXVlc3QsIFBhY2thZ2VfRmlsZSkKIAotICAgIHF1ZXJ5c2V0ID0gUGFja2FnZV9EZXBlbmRlbmN5Lm9iamVjdHMuc2VsZWN0X3JlbGF0ZWQoJ2RlcGVuZHNfb25fX25hbWUnLCAnZGVwZW5kc19vbl9fc2l6ZScpLmZpbHRlcihkZXBlbmRzX29uPXBhY2thZ2VfaWQsIHRhcmdldF9pZD10YXJnZXRfaWQsIGRlcF90eXBlPVBhY2thZ2VfRGVwZW5kZW5jeS5UWVBFX1RSREVQRU5EUykKKyAgICBxdWVyeXNldCA9IFBhY2thZ2VfRGVwZW5kZW5jeS5vYmplY3RzLnNlbGVjdF9yZWxhdGVkKCdkZXBlbmRzX29uJykuZmlsdGVyKGRlcGVuZHNfb249cGFja2FnZV9pZCwgdGFyZ2V0X2lkPXRhcmdldF9pZCwgZGVwX3R5cGU9UGFja2FnZV9EZXBlbmRlbmN5LlRZUEVfVFJERVBFTkRTKQogICAgIG9iamVjdHMgPSBfZ2V0X3F1ZXJ5c2V0KFBhY2thZ2VfRGVwZW5kZW5jeSwgcXVlcnlzZXQsIGZpbHRlcl9zdHJpbmcsIHNlYXJjaF90ZXJtLCBvcmRlcmluZ19zdHJpbmcsICdwYWNrYWdlX19uYW1lJykKIAogICAgIHBhY2thZ2UgPSBQYWNrYWdlLm9iamVjdHMuZ2V0KHBrPXBhY2thZ2VfaWQpCkBAIC0xMzQwLDcgKzEzMzksNyBAQAogCiBpbXBvcnQgdG9hc3Rlcm1haW4uc2V0dGluZ3MKIAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFByb2plY3RUYXJnZXQsIFByb2plY3RWYXJpYWJsZQorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFByb2plY3RWYXJpYWJsZQogZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgIEJ1aWxkRW52aXJvbm1lbnQKIAogIyB3ZSBoYXZlIGEgc2V0IG9mIGZ1bmN0aW9ucyBpZiB3ZSdyZSBpbiBtYW5hZ2VkIG1vZGUsIG9yCkBAIC0xMzQ5LDEwICsxMzQ4LDggQEAKIGlmIFRydWU6CiAgICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLm1vZGVscyBpbXBvcnQgVXNlcgogICAgIGZyb20gZGphbmdvLmNvbnRyaWIuYXV0aCBpbXBvcnQgYXV0aGVudGljYXRlLCBsb2dpbgotICAgIGZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5kZWNvcmF0b3JzIGltcG9ydCBsb2dpbl9yZXF1aXJlZAogCi0gICAgZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclNvdXJjZSwgVG9hc3RlclNldHRpbmcsIFJlbGVhc2UsIE1hY2hpbmUsIExheWVyVmVyc2lvbkRlcGVuZGVuY3kKLSAgICBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QKKyAgICBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBUb2FzdGVyU2V0dGluZywgUmVsZWFzZQogCiAgICAgaW1wb3J0IHRyYWNlYmFjawogCkBAIC0xMzY3LDggKzEzNjQsOCBAQAogCiAgICAgICAgIHRlbXBsYXRlID0gIm5ld3Byb2plY3QuaHRtbCIKICAgICAgICAgY29udGV4dCA9IHsKLSAgICAgICAgICAgICdlbWFpbCc6IHJlcXVlc3QudXNlci5lbWFpbCBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCi0gICAgICAgICAgICAndXNlcm5hbWUnOiByZXF1ZXN0LnVzZXIudXNlcm5hbWUgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKSBlbHNlICcnLAorICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkIGVsc2UgJycsCisgICAgICAgICAgICAndXNlcm5hbWUnOiByZXF1ZXN0LnVzZXIudXNlcm5hbWUgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKICAgICAgICAgICAgICdyZWxlYXNlcyc6IFJlbGVhc2Uub2JqZWN0cy5vcmRlcl9ieSgiZGVzY3JpcHRpb24iKSwKICAgICAgICAgfQogCkBAIC0xMzk0LDcgKzEzOTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHNldCBhbGVydCBmb3IgbWlzc2luZyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKCJGaWVsZHMgbWlzc2luZzogJXMiICUgIiwgIi5qb2luKG1pc3NpbmcpKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkOgogICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aGVudGljYXRlKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIHBhc3N3b3JkID0gJ25vcGFzcycpCiAgICAgICAgICAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgZW1haWwgPSByZXF1ZXN0LlBPU1QuZ2V0KCdlbWFpbCcsICcnKSwgcGFzc3dvcmQgPSAibm9wYXNzIikKQEAgLTE0NDEsOCArMTQzOCw4IEBACiAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPXBpZCkKICAgICAgICAgdGVtcGxhdGUgPSAibmV3cHJvamVjdF9zcGVjaWZpYy5odG1sIgogICAgICAgICBjb250ZXh0ID0gewotICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKLSAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCisgICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKKyAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAogICAgICAgICAgICAgJ3JlbGVhc2VzJzogUmVsZWFzZS5vYmplY3RzLm9yZGVyX2J5KCJkZXNjcmlwdGlvbiIpLAogICAgICAgICAgICAgJ3Byb2plY3RuYW1lJzogcHJvamVjdC5uYW1lLAogICAgICAgICAgICAgJ3Byb2plY3RfcGsnOiBwcm9qZWN0LnBrLApAQCAtMTQ3Miw3ICsxNDY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBzZXQgYWxlcnQgZm9yIG1pc3NpbmcgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZFBhcmFtZXRlckV4Y2VwdGlvbigiRmllbGRzIG1pc3Npbmc6ICVzIiAlICIsICIuam9pbihtaXNzaW5nKSkKIAotICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZDoKICAgICAgICAgICAgICAgICAgICAgdXNlciA9IGF1dGhlbnRpY2F0ZSh1c2VybmFtZSA9IHJlcXVlc3QuUE9TVC5nZXQoJ3VzZXJuYW1lJywgJ19hbm9udXNlcicpLCBwYXNzd29yZCA9ICdub3Bhc3MnKQogICAgICAgICAgICAgICAgICAgICBpZiB1c2VyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmNyZWF0ZV91c2VyKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIGVtYWlsID0gcmVxdWVzdC5QT1NULmdldCgnZW1haWwnLCAnJyksIHBhc3N3b3JkID0gIm5vcGFzcyIpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQppbmRleCA2NDVmNDU4Li5jZWZmNTI5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKQEAgLTIyLDcgKzIyLDcgQEAKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IHNlY3RvaG1zLCBnZXRfdGFza3MKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGpzb24gYXMgdGVtcGxhdGVfanNvbgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSnNvblJlc3BvbnNlCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBqc29uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGRlbGV0ZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CmluZGV4IGMyZDc3M2EuLjkzOTE5ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CkBAIC0yLDEyICsyLDEwIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQnVpbGQKIGZyb20gZGphbmdvLmRiIGltcG9ydCBPcGVyYXRpb25hbEVycm9yCi1pbXBvcnQgb3MKLQogCiAKIGNsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRpbXBvcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQppbmRleCA0MDhhZDQ0Li41OWRhNmZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQpAQCAtMzEsMTIgKzMxLDEwIEBACiAKICMgLi4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgYnVpbGRpbXBvcnQgLS1uYW1lPXRlc3QgLS1wYXRoPWBwd2RgIC0tY2FsbGJhY2s9IiIgLS1jb21tYW5kPWltcG9ydAogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgotZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdE1hbmFnZXIsIFByb2plY3QsIFJlbGVhc2UsIFByb2plY3RWYXJpYWJsZQorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFJlbGVhc2UsIFByb2plY3RWYXJpYWJsZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgTGF5ZXJTb3VyY2UsIFByb2plY3RMYXllcgogZnJvbSB0b2FzdGVyZ3VpLmFwaSBpbXBvcnQgc2Nhbl9sYXllcl9jb250ZW50Ci1mcm9tIGRqYW5nby5kYiBpbXBvcnQgT3BlcmF0aW9uYWxFcnJvcgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTE2LDYgKzExNCwxNSBAQAogICAgICAgICAgICAgaGVscD0nY29tbWFuZCAoY29uZmlndXJlLHJlY29uZmlndXJlLGltcG9ydCknLAogICAgICAgICAgICAgKQogCisgICAgZGVmIGdldF92YXIoc2VsZiwgdmFybmFtZSk6CisgICAgICAgIHZhbHVlID0gc2VsZi52YXJzLmdldCh2YXJuYW1lLCAnJykKKyAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICB2YXJyZWZzID0gcmUuZmluZGFsbCgnXCR7KFtefV0qKX0nLCB2YWx1ZSkKKyAgICAgICAgICAgIGZvciByZWYgaW4gdmFycmVmczoKKyAgICAgICAgICAgICAgICBpZiByZWYgaW4gc2VsZi52YXJzOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyR7JXN9JyAlIHJlZiwgc2VsZi52YXJzW3JlZl0pCisgICAgICAgIHJldHVybiB2YWx1ZQorCiAgICAgIyBFeHRyYWN0IHRoZSBiYiB2YXJpYWJsZXMgZnJvbSBhIGNvbmYgZmlsZQogICAgIGRlZiBzY2FuX2NvbmYoc2VsZixmbik6CiAgICAgICAgIHZhcnMgPSBzZWxmLnZhcnMKQEAgLTI0Myw3ICsyNTAsNyBAQAogICAgICMgQXBwbHkgdGFibGUgb2YgYWxsIGxheWVyIHZlcnNpb25zCiAgICAgZGVmIGV4dHJhY3RfYmJsYXllcnMoc2VsZik6CiAgICAgICAgICMgc2V0IHVwIHRoZSBjb25zdGFudHMKLSAgICAgICAgYmJsYXllcl9zdHIgPSBzZWxmLnZhcnNbJ0JCTEFZRVJTJ10KKyAgICAgICAgYmJsYXllcl9zdHIgPSBzZWxmLmdldF92YXIoJ0JCTEFZRVJTJykKICAgICAgICAgVE9BU1RFUl9ESVIgPSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9ESVInKQogICAgICAgICBJTlNUQUxMX0NMT05FX1BSRUZJWCA9IG9zLnBhdGguZGlybmFtZShUT0FTVEVSX0RJUikgKyAiLyIKICAgICAgICAgVE9BU1RFUl9DTE9ORV9QUkVGSVggPSBUT0FTVEVSX0RJUiArICIvX3RvYXN0ZXJfY2xvbmVzLyIKQEAgLTQyMyw2ICs0MzAsNyBAQAogCiAgICAgIyBTY2FuIHRoZSBwcm9qZWN0J3MgY29uZiBmaWxlcyAoaWYgYW55KQogICAgIGRlZiBzY2FuX2NvbmZfdmFyaWFibGVzKHNlbGYscHJvamVjdF9wYXRoKToKKyAgICAgICAgc2VsZi52YXJzWydUT1BESVInXSA9IHByb2plY3RfcGF0aAogICAgICAgICAjIHNjYW4gdGhlIHByb2plY3QncyBzZXR0aW5ncywgYWRkIGFueSBuZXcgbGF5ZXJzIG9yIHZhcmlhYmxlcwogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSgiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLnNjYW5fY29uZigiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCkKQEAgLTQ2OCw3ICs0NzYsNiBAQAogICAgICAgICAgICAgICAgICAgICByZWxlYXNlX25hbWUgPSAnTm9uZScgaWYgbm90IHBsLmxheWVyY29tbWl0LnJlbGVhc2UgZWxzZSBwbC5sYXllcmNvbW1pdC5yZWxlYXNlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiBBRlRFUiA6UHJvamVjdExheWVyPSVzLCVzLCVzLCVzIiAlIChwbC5sYXllcmNvbW1pdC5sYXllci5uYW1lLHJlbGVhc2VfbmFtZSxwbC5sYXllcmNvbW1pdC5icmFuY2gscGwubGF5ZXJjb21taXQuY29tbWl0KSkKIAotCiAgICAgZGVmIGhhbmRsZShzZWxmLCAqYXJncywgKipvcHRpb25zKToKICAgICAgICAgcHJvamVjdF9uYW1lID0gb3B0aW9uc1snbmFtZSddCiAgICAgICAgIHByb2plY3RfcGF0aCA9IG9wdGlvbnNbJ3BhdGgnXQpAQCAtNTA3LDcgKzUxNCw3IEBACiAgICAgICAgIGRlZmF1bHRfcmVsZWFzZSA9IFJlbGVhc2Uub2JqZWN0cy5nZXQoaWQ9MSkKIAogICAgICAgICAjIFNBTklUWTogaWYgJ3JlY29uZmlnJyBidXQgcHJvamVjdCBkb2VzIG5vdCBleGlzdCAoZGVsZXRlZCBleHRlcm5hbGx5KSwgc3dpdGNoIHRvICdpbXBvcnQnCi0gICAgICAgIGlmICgicmVjb25maWd1cmUiID09IG9wdGlvbnNbJ2NvbW1hbmQnXSkgYW5kIChOb25lID09IHByb2plY3QpOgorICAgICAgICBpZiAoInJlY29uZmlndXJlIiA9PSBvcHRpb25zWydjb21tYW5kJ10pIGFuZCBwcm9qZWN0IGlzIE5vbmU6CiAgICAgICAgICAgICBvcHRpb25zWydjb21tYW5kJ10gPSAnaW1wb3J0JwogCiAgICAgICAgICMgJ0NvbmZpZ3VyZSc6CkBAIC01NTMsNiArNTYwLDcgQEAKICAgICAgICAgICAgICMgcHJlc2V0IHRoZSBtb2RlIGFuZCBkZWZhdWx0IGltYWdlIHJlY2lwZQogICAgICAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0lTTkVXLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ORVcpCiAgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfREVGQVVMVElNQUdFLCJjb3JlLWltYWdlLW1pbmltYWwiKQorCiAgICAgICAgICAgICAjIEFzc2VydCBhbnkgZXh0ZW5kZWQvY3VzdG9tIGFjdGlvbnMgb3IgdmFyaWFibGVzIGZvciBuZXcgbm9uLVRvYXN0ZXIgcHJvamVjdHMKICAgICAgICAgICAgIGlmIG5vdCBsZW4oc2VsZi50b2FzdGVyX3ZhcnMpOgogICAgICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CmluZGV4IDFlZDIwMjIuLjNhZDUyODkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQpAQCAtMiw5ICsyLDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJ1aWxkCi1pbXBvcnQgb3MKIAogCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQppbmRleCA3NDUwMWZhLi5hNGIzNzBjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vc2V0dGluZ3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CkBAIC0xODksMTUgKzE4OSwxNiBAQAogICAgIH0sCiBdCiAKLU1JRERMRVdBUkVfQ0xBU1NFUyA9ICgKK01JRERMRVdBUkUgPSBbCiAgICAgJ2RqYW5nby5taWRkbGV3YXJlLmNvbW1vbi5Db21tb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMubWlkZGxld2FyZS5TZXNzaW9uTWlkZGxld2FyZScsCiAgICAgJ2RqYW5nby5taWRkbGV3YXJlLmNzcmYuQ3NyZlZpZXdNaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIuYXV0aC5taWRkbGV3YXJlLkF1dGhlbnRpY2F0aW9uTWlkZGxld2FyZScsCiAgICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzLm1pZGRsZXdhcmUuTWVzc2FnZU1pZGRsZXdhcmUnLAotICAgICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgZm9yIHNpbXBsZSBjbGlja2phY2tpbmcgcHJvdGVjdGlvbjoKLSAgICAjICdkamFuZ28ubWlkZGxld2FyZS5jbGlja2phY2tpbmcuWEZyYW1lT3B0aW9uc01pZGRsZXdhcmUnLAotKQorICAgICdkamFuZ28uY29udHJpYi5hdXRoLm1pZGRsZXdhcmUuQXV0aGVudGljYXRpb25NaWRkbGV3YXJlJywKKyAgICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMubWlkZGxld2FyZS5NZXNzYWdlTWlkZGxld2FyZScsCisgICAgJ2RqYW5nby5jb250cmliLnNlc3Npb25zLm1pZGRsZXdhcmUuU2Vzc2lvbk1pZGRsZXdhcmUnLAorXQogCiBDQUNIRVMgPSB7CiAgICAgIyAgICAgICAgJ2RlZmF1bHQnOiB7CkBAIC0yNDgsNyArMjQ5LDcgQEAKIGlmIG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RFVkVMJywgTm9uZSkgaXMgbm90IE5vbmU6CiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgZnJlc2gKLSAgICAgICAgTUlERExFV0FSRV9DTEFTU0VTID0gKCJmcmVzaC5taWRkbGV3YXJlLkZyZXNoTWlkZGxld2FyZSIsKSArIE1JRERMRVdBUkVfQ0xBU1NFUworICAgICAgICBNSURETEVXQVJFID0gWyJmcmVzaC5taWRkbGV3YXJlLkZyZXNoTWlkZGxld2FyZSIsXSArIE1JRERMRVdBUkUKICAgICAgICAgSU5TVEFMTEVEX0FQUFMgPSBJTlNUQUxMRURfQVBQUyArICgnZnJlc2gnLCkKICAgICAgICAgRlJFU0hfRU5BQkxFRCA9IFRydWUKICAgICBleGNlcHQ6CkBAIC0yNTgsOCArMjU5LDggQEAKIGlmIG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RFVkVMJywgTm9uZSkgaXMgbm90IE5vbmU6CiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgZGVidWdfdG9vbGJhciwgZGVidWdfcGFuZWwKLSAgICAgICAgTUlERExFV0FSRV9DTEFTU0VTID0gKCdkZWJ1Z19wYW5lbC5taWRkbGV3YXJlLkRlYnVnUGFuZWxNaWRkbGV3YXJlJywpICsgTUlERExFV0FSRV9DTEFTU0VTCi0gICAgICAgICNNSURETEVXQVJFX0NMQVNTRVMgPSBNSURETEVXQVJFX0NMQVNTRVMgKyAoJ2RlYnVnX3Rvb2xiYXIubWlkZGxld2FyZS5EZWJ1Z1Rvb2xiYXJNaWRkbGV3YXJlJywpCisgICAgICAgIE1JRERMRVdBUkUgPSBbJ2RlYnVnX3BhbmVsLm1pZGRsZXdhcmUuRGVidWdQYW5lbE1pZGRsZXdhcmUnLF0gKyBNSURETEVXQVJFCisgICAgICAgICNNSURETEVXQVJFID0gTUlERExFV0FSRSArIFsnZGVidWdfdG9vbGJhci5taWRkbGV3YXJlLkRlYnVnVG9vbGJhck1pZGRsZXdhcmUnLF0KICAgICAgICAgSU5TVEFMTEVEX0FQUFMgPSBJTlNUQUxMRURfQVBQUyArICgnZGVidWdfdG9vbGJhcicsJ2RlYnVnX3BhbmVsJywpCiAgICAgICAgIERFQlVHX1BBTkVMX0VOQUJMRUQgPSBUcnVlCiAKQEAgLTM1Miw1ICszNTMsMyBAQAogY29ubmVjdGlvbl9jcmVhdGVkLmNvbm5lY3QoYWN0aXZhdGVfc3luY2hyb25vdXNfb2ZmKQogIwogCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQppbmRleCBhYzc3YmMzLi41ZmI1MjBiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiB1cmxwYXR0ZXJucyA9IFsKICAgICAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSB0aGUgYWRtaW46Ci0gICAgdXJsKHInXmFkbWluLycsIGluY2x1ZGUoYWRtaW4uc2l0ZS51cmxzKSksCisgICAgdXJsKHInXmFkbWluLycsIGFkbWluLnNpdGUudXJscyksCiBdICsgdXJscGF0dGVybnMKIAogIyBBdXRvbWF0aWNhbGx5IGRpc2NvdmVyIHVybHMucHkgaW4gdmFyaW91cyBhcHBzLCBiZXNpZGUgb3VyIG93bgpAQCAtNjksNyArNjksNyBAQAogICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIHRoaXMgbW9kdWxlIG5hbWUgaW4KICAgICAgICAgY29uZmxpY3QgPSBGYWxzZQogICAgICAgICBmb3IgcCBpbiB1cmxwYXR0ZXJuczoKLSAgICAgICAgICAgIGlmIHAucmVnZXgucGF0dGVybiA9PSAnXicgKyBtb2R1bGVuYW1lICsgJy8nOgorICAgICAgICAgICAgaWYgcC5wYXR0ZXJuLnJlZ2V4LnBhdHRlcm4gPT0gJ14nICsgbW9kdWxlbmFtZSArICcvJzoKICAgICAgICAgICAgICAgICBjb25mbGljdCA9IFRydWUKICAgICAgICAgaWYgbm90IGNvbmZsaWN0OgogICAgICAgICAgICAgdXJscGF0dGVybnMuaW5zZXJ0KDAsIHVybChyJ14nICsgbW9kdWxlbmFtZSArICcvJywgaW5jbHVkZSAoIG1vZHVsZW5hbWUgKyAnLnVybHMnKSkpCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggNTI1YTczMC4uMTU2NDRiZiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtNzYsNiArNzYsMTEgQEAKICMgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuMiB2ZXJzaW9uIG9mIHRoZSBQREYgYW5kIEhUTUwgWVAgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCiAjIGZvciB0aGUgJ2RlbnppbCcgYnJhbmNoLgogIworIyBJTiBNRU1PUklBTTogVGhpcyBjb21tZW50IGlzIHRvIHJlbWVtYmVyIFNjb3R0IFJpZmVuYmFyayAoc2NvdHRyaWYpLCB3aG9tIHdlIGxvc3QKKyMgaW4gSmFudWFyeSwgMjAyMC4gU2NvdHQgd2FzIHRoZSBwcmltYXJ5IHRlY2huaWNhbCB3cml0ZXIgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZvcgorIyBvdmVyIDkgeWVhcnMuIEluIHRoYXQgdGltZSwgaGUgY29udHJpYnV0ZWQgbWFueSB0aG91c2FuZHMgb2YgcGF0Y2hlcywgYnVpbHQgdGhpcworIyBkb2N1bWVudGF0aW9uIHRyZWUsIGFuZCBlbmFibGVkIHRlbnMgb2YgdGhvdXNhbmRzIG9mIGRldmVsb3BlcnMgdG8gc3VjY2VlZCB3aXRoCisjIGVtYmVkZGVkIExpbnV4LiBIZSByYW4gdGhpcyBNYWtlZmlsZSBtYW55IHRob3VzYW5kcyBvZiB0aW1lcy4gR29kc3BlZWQsIER1ZGUuCiAKIGlmZXEgKCQoRE9DKSxicmllZi15b2N0b3Byb2plY3RxcykKIFhTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzIFwKQEAgLTQxNCw4ICs0MTksOCBAQAogICAgICAgICAgICAgZWNobyAiICI7IFwKICAgICAgICAgICAgIGVjaG8gIioqKioqKioqIFB1Ymxpc2hpbmcgIiQoRE9DKSIuaHRtbCI7IFwKICAgICAgICAgICAgIGVjaG8gIiAiOyBcCi0gICAgICAgICAgICBzY3AgLXIgJChNQU5VQUxTKSAkKFNUWUxFU0hFRVQpIGRvY3MueXA6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCi0gICAgICAgICAgICBjZCAkKERPQyk7IHNjcCAtciAkKEZJR1VSRVMpIGRvY3MueXA6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCisgICAgICAgICAgICBzY3AgLXIgJChNQU5VQUxTKSAkKFNUWUxFU0hFRVQpIHd3dy55b2N0b3Byb2plY3Qub3JnOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAorICAgICAgICAgICAgY2QgJChET0MpOyBzY3AgLXIgJChGSUdVUkVTKSB3d3cueW9jdG9wcm9qZWN0Lm9yZzovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKIAllbHNlIFwKICAgICAgICAgICBlY2hvICIgIjsgXAogICAgICAgICAgIGVjaG8gJChET0MpIi5odG1sIG1pc3NpbmcuICBHZW5lcmF0ZSB0aGUgZmlsZSBmaXJzdCB0aGVuIHRyeSBhZ2Fpbi4iOyBcCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbAppbmRleCAxZGFlYjI1Li4zYzgzYWZkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwKQEAgLTU1LDEwICs1NSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgYSBidWlsZCBob3N0IHRoYXQgaXMgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBXU0x2MiwgaWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2Utd3NsJz5TZXR0aW5nIFVwIHRvIFVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXg8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9ub3RlPgpAQCAtOTksMTcgKzEwNywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCAxLjguMy4xIG9yIGdyZWF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yNyBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjggb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjIDUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCiAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvIHRoYXQgeW91IGNhbiBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMjY2LDcgKzI3Nyw3IEBACiAgICAgICAgICBtZXRhLXRvb2xjaGFpbgogICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAogCi0gICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4NicKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LApAQCAtMzMyLDcgKzM0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIFFFTVUsIHdoaWNoIGlzIGEgUXVpY2sgRU1VbGF0b3IgdGhhdCBzaGlwcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCBydW5uaW5nIFFFTVUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9IiZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSI+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZGQwYzc2YS4uYTE4OTYwNgotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCkBAIC0yMiwzMyArMjIsMjcgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCiAgICAgICAgIDxyZXZoaXN0b3J5PgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MC45PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjQgTm92ZW1iZXIgMjAxMDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IGRyYWZ0IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxMDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBBcHJpbCAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjMgTWF5IDIwMTE8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC03MiwxMSArNjYsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEzMyw5ICsxMjIsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTU3LDcgKzE1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNzQsMTggKzE2OCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbAppbmRleCA1OGY1NzMzLi45NmMwNDU1IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCkBAIC0xOSw3ICsxOSw3IEBACiA8L3BhcmE+CiAKIDxwYXJhPgotICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIExheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cworICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIGxheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cwogICAgIHNvIHRoYXQgQlNQcyBmb2xsb3cgYSBjb21tb25seSB1bmRlcnN0b29kIGxheW91dCwgZGlzY3Vzc2VzIGhvdyB0byBjdXN0b21pemUKICAgICBhIHJlY2lwZSBmb3IgYSBCU1AsIGFkZHJlc3NlcyBCU1AgbGljZW5zaW5nLCBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdAogICAgIHNob3dzIHlvdSBob3cgdG8gY3JlYXRlIGEKQEAgLTM0LDcgKzM0LDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgQSBCU1AgY29uc2lzdHMgb2YgYSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBiYXNlIGRpcmVjdG9yeS4KICAgICAgICAgQ29sbGVjdGl2ZWx5LCB5b3UgY2FuIHRoaW5rIG9mIHRoZSBiYXNlIGRpcmVjdG9yeSwgaXRzIGZpbGUgc3RydWN0dXJlLAotICAgICAgICBhbmQgdGhlIGNvbnRlbnRzIGFzIGEgQlNQIExheWVyLgorICAgICAgICBhbmQgdGhlIGNvbnRlbnRzIGFzIGEgPGZpcnN0dGVybT5CU1AgbGF5ZXI8L2ZpcnN0dGVybT4uCiAgICAgICAgIEFsdGhvdWdoIG5vdCBhIHN0cmljdCByZXF1aXJlbWVudCwgQlNQIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyB3ZWxsLWVzdGFibGlzaGVkIG5hbWluZyBjb252ZW50aW9uOgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02OSw5ICs2OSw5IEBACiAgICAgICAgIEVhY2ggcmVwb3NpdG9yeSBpcyBhIEJTUCBsYXllciBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGk8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikuCi0gICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24gYQotICAgICAgICBsYXllciByZXZlYWxzIGluZm9ybWF0aW9uIHRoYXQgaW5jbHVkZXMgdHdvIGxpbmtzIGZyb20gd2hpY2ggeW91IGNhbiBjaG9vc2UKLSAgICAgICAgdG8gc2V0IHVwIGEgY2xvbmUgb2YgdGhlIGxheWVyJ3MgcmVwb3NpdG9yeSBvbiB5b3VyIGxvY2FsIGhvc3Qgc3lzdGVtLgorICAgICAgICBFYWNoIG9mIHRoZXNlIGxheWVycyBpcyBhIHJlcG9zaXRvcnkgdW50byBpdHNlbGYgYW5kIGNsaWNraW5nIG9uCisgICAgICAgIHRoZSBsYXllciBuYW1lIGRpc3BsYXlzIHR3byBVUkxzIGZyb20gd2hpY2ggeW91IGNhbgorICAgICAgICBjbG9uZSB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgc3lzdGVtLgogICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIFJhc3BiZXJyeSBQaSBCU1AgbGF5ZXI6CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQpAQCAtODMsMTIgKzgzLDEzIEBACiAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIGlzIHBhcnQgb2YgdGhlCiAgICAgICAgIHNoaXBwZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgogICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXIgbWFpbnRhaW5zIHNldmVyYWwKLSAgICAgICAgQlNQcyBzdWNoIGFzIHRoZSBCZWFnbGVib25lLCBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZgorICAgICAgICAicmVmZXJlbmNlIiBCU1BzIGluY2x1ZGluZyB0aGUgQVJNLWJhc2VkIEJlYWdsZWJvbmUsIE1JUFMtYmFzZWQKKyAgICAgICAgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKICAgICAgICAgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBJQSBtYWNoaW5lcy4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBCU1AgZGV2ZWxvcG1lbnQgd29ya2Zsb3csIHNlZSB0aGUKKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHR5cGljYWwgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCiAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvbGluaz4iCiAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcwpAQCAtOTgsMTIgKzk5LDEyIEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBsYXllcidzIGJhc2UgZGlyZWN0b3J5CisgICAgICAgIFRoZSBCU1AgbGF5ZXIncyBiYXNlIGRpcmVjdG9yeQogICAgICAgICAoPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+KQotICAgICAgICBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIEJTUCBMYXllci4KKyAgICAgICAgaXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoYXQgTGF5ZXIuCiAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHlvdXIKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKICAgICAgICAgd2hpY2ggaXMgZXN0YWJsaXNoZWQgYWZ0ZXIgeW91IHJ1biB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50CiAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgpAQCAtMTUzLDYgKzE1NCwyMCBAQAogICAgICAgICBsYXllci4KICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+IGxheWVyIGNvbnRhaW5zCiAgICAgICAgIG1hbnkgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IGxheWVycy4KKyAgICAgICAgSW4gY2FzZXMgbGlrZSB0aGlzLCB5b3UgbmVlZCB0byBpbmNsdWRlIHRoZSBuYW1lcyBvZiB0aGUgYWN0dWFsCisgICAgICAgIGxheWVycyB5b3Ugd2FudCB0byB3b3JrIHdpdGgsIHN1Y2ggYXM6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJMQVlFUlMgPz0gIiBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YSBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1wb2t5IFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXlvY3RvLWJzcCBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1teWxheWVyIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZSBcCisgICAgICAgLi4uL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybCBcCisgICAgICAgLi4uL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZyBcCisgICAgICAgIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgYW5kIHNvIG9uLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzUxLDI1ICszNjYsMjQgQEAKICAgICAgICAgbGF5ZXIgY29tYmluZWQgd2l0aCBhIGJ1aWxkIHN5c3RlbSBhbmQgb3RoZXIgdG9vbHMuCiAgICAgICAgIFJlYWxpemUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIGRpc3RpbmN0aW9uCiAgICAgICAgIHRoYXQgdGhlIEJTUCBsYXllciwgYSBidWlsZCBzeXN0ZW0sIGFuZCB0b29scyBhcmUKLSAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIHRvIGJlIGNvbWJpbmVkIGluCisgICAgICAgIHNlcGFyYXRlIGNvbXBvbmVudHMgdGhhdCBjb3VsZCBiZSBjb21iaW5lZCBpbgogICAgICAgICBjZXJ0YWluIGVuZCBwcm9kdWN0cy4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgQmVmb3JlIGxvb2tpbmcgYXQgdGhlIGNvbW1vbiBmb3JtIGZvciB0aGUgZmlsZSBzdHJ1Y3R1cmUKLSAgICAgICAgaW5zaWRlIGEgQlNQIExheWVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZQorICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgcmVjb21tZW5kZWQgZm9ybSBmb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKKyAgICAgICAgaW5zaWRlIGEgQlNQIGxheWVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZQogICAgICAgICByZXF1aXJlbWVudHMgZG8gZXhpc3QgaW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvCi0gICAgICAgIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIGJlIGNvbnNpZGVyZWQgPGZpcnN0dGVybT5jb21wbGlhbnQ8L2ZpcnN0dGVybT4gd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgRm9yIHRoYXQgbGlzdCBvZiByZXF1aXJlbWVudHMsIHNlZSB0aGUKICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L2xpbms+IgogICAgICAgICBzZWN0aW9uLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQotICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIuCisgICAgICAgIEJlbG93IGlzIHRoZSB0eXBpY2FsIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGEgQlNQIGxheWVyLgogICAgICAgICBXaGlsZSB0aGlzIGJhc2ljIGZvcm0gcmVwcmVzZW50cyB0aGUgc3RhbmRhcmQsCi0gICAgICAgIHJlYWxpemUgdGhhdCB0aGUgYWN0dWFsIGZpbGUgc3RydWN0dXJlcyBmb3Igc3BlY2lmaWMKKyAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgbGF5b3V0IGZvciBpbmRpdmlkdWFsCiAgICAgICAgIEJTUHMgY291bGQgZGlmZmVyLgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi8KQEAgLTU2Nyw3ICs1ODEsNyBAQAogICAgICAgICAgICAgZm9yIHRoZSBCU1AuCiAgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZwogICAgICAgICAgICAgb24gdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgYWxsIGxpY2Vuc2luZworICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQLCBhbGwgbGljZW5zaW5nCiAgICAgICAgICAgICByZXF1aXJlbWVudHMgYXJlIGhhbmRsZWQgd2l0aCB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgIDwvcGFyYT4KQEAgLTgwMiw3ICs4MTYsNyBAQAogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG1hbnkgPGZpbGVuYW1lPnR1bmUtKjwvZmlsZW5hbWU+IGZpbGVzCiAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+dHVuZS1hcm0xMTM2amYtcy5pbmM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT50dW4tMTU4Ni1ubHAuaW5jPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgIDxmaWxlbmFtZT50dW5lLTE1ODYtbmxwLmluYzwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpCiAgICAgICAgICAgICByZXNpZGUgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlPC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeS4KQEAgLTgzNCw3ICs4NDgsNyBAQAogICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBkaXJlY3RvcnkgY29udGFpbnMgbWlzY2VsbGFuZW91cyByZWNpcGUKICAgICAgICAgICAgIGZpbGVzIGZvciB0aGUgQlNQLgogICAgICAgICAgICAgTW9zdCBub3RhYmx5IHdvdWxkIGJlIHRoZSBmb3JtZmFjdG9yIGZpbGVzLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQIHRoZXJlIGlzIHRoZQorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQLCB0aGVyZSBpcyB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsCiAgICAgICAgICAgICB3aGljaCBpcyBhbiBhcHBlbmQgZmlsZSB1c2VkIHRvIGF1Z21lbnQgdGhlIHJlY2lwZQogICAgICAgICAgICAgdGhhdCBzdGFydHMgdGhlIGJ1aWxkLgpAQCAtOTAxLDcgKzkxNSw3IEBACiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcyB3b3VsZCBiZSBhCiAgICAgICAgICAgICBkZXZlbG9wZXItc3VwcGxpZWQga2VybmVsIHJlY2lwZS4KICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgQlNQIGhpZXJhcmNoeSBjYW4gY29udGFpbiBib3RoIHRoZXNlCi0gICAgICAgICAgICB0eXBlcyBvZiBmaWxlcywgYWx0aG91Z2ggaW4gcHJhY3RpY2UsIGl0IGlzIGxpa2VseSB0aGF0CisgICAgICAgICAgICB0eXBlcyBvZiBmaWxlcyBhbHRob3VnaCwgaW4gcHJhY3RpY2UsIGl0IGlzIGxpa2VseSB0aGF0CiAgICAgICAgICAgICB5b3Ugd291bGQgaGF2ZSBvbmUgb3IgdGhlIG90aGVyLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTk3Niw3ICs5OTAsNyBAQAogICAgIDx0aXRsZT5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGhpZ2gtbGV2ZWwgcHJvY2VkdXJlIHlvdSBjYW4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgaGlnaC1sZXZlbCBwcm9jZWR1cmUgeW91IGNhbgogICAgICAgICBmb2xsb3cgdG8gY3JlYXRlIGEgQlNQLgogICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCiAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gcmVwb3NpdG9yeSwgd2hpY2gKQEAgLTEwNzUsMTAgKzEwODksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTMwMiw3ICsxMzEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICBvciB0aGUgU291cmNlIERpcmVjdG9yeSAoPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBtYWtlIHN1cmUgeW91IHBsYWNlIHJlbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gYXBwcm9wcmlhdGVseSByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIGFwcHJvcHJpYXRlbHktcmVsYXRlZAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMKICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHJlY2lwZSdzIGZ1bmN0aW9uLCBvciB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgYSBzdWJkaXJlY3RvcnkgY29udGFpbmluZyBhIHNldCBvZiBjbG9zZWx5LXJlbGF0ZWQKQEAgLTEzMTksNyArMTMyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBsaWNlbnNlIGNvdmVycyB0aGUgQlNQIE1ldGFkYXRhIGFzIGEgd2hvbGUuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggbGljZW5zZSB0byB1c2Ugc2luY2Ugbm8KLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsaWNlbnNlIGV4aXN0cyB3aGVuIG9uZSBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgZXhpc3RzIHdoZW4gb25lIGlzIG5vdCBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL21ldGEtcmFzcGJlcnJ5cGkvdHJlZS9DT1BZSU5HLk1JVCc+PGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBpbiB0aGUKQEAgLTEzNDIsMTIgKzEzNTIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIHRoZSBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWxsIHRoZSBkZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB3aGljaCBhIEJTUCBsYXllciBkZXBlbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgQlNQLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVkIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgpAQCAtMTYxMCw3ICsxNjE4LDcgQEAKICAgICA8dGl0bGU+QlNQIExpY2Vuc2luZyBDb25zaWRlcmF0aW9uczwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgSW4gc29tZSBjYXNlcywgYSBCU1AgY29udGFpbnMgc2VwYXJhdGVseSBsaWNlbnNlZAorICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5LWxpY2Vuc2VkCiAgICAgICAgIEludGVsbGVjdHVhbCBQcm9wZXJ0eSAoSVApIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgogICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhcmUgcmVxdWlyZWQgdG8gYWNjZXB0IHRoZSB0ZXJtcwogICAgICAgICBvZiBhIGNvbW1lcmNpYWwgb3Igb3RoZXIgdHlwZSBvZiBsaWNlbnNlIHRoYXQgcmVxdWlyZXMKQEAgLTE2MjMsNyArMTYzMSw3IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjb3VsZCBmaW5kIHRoYXQgc29tZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgWW91IGNvdWxkIGZpbmQgdGhhdCBzb21lIHNlcGFyYXRlbHktbGljZW5zZWQgY29tcG9uZW50cwogICAgICAgICB0aGF0IGFyZSBlc3NlbnRpYWwgZm9yIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhlIHN5c3RlbSBtaWdodAogICAgICAgICBub3QgaGF2ZSBhbiB1bmVuY3VtYmVyZWQgKG9yIGZyZWUpIHN1YnN0aXR1dGUuCiAgICAgICAgIFdpdGhvdXQgdGhlc2UgZXNzZW50aWFsIGNvbXBvbmVudHMsIHRoZSBzeXN0ZW0gd291bGQgYmUKQEAgLTE2MzEsNyArMTYzOSw3IEBACiAgICAgICAgIFRoZW4gYWdhaW4sIHlvdSBtaWdodCBmaW5kIHRoYXQgb3RoZXIgbGljZW5zZWQgY29tcG9uZW50cwogICAgICAgICB0aGF0IGFyZSBzaW1wbHkgJ2dvb2QtdG8taGF2ZScgb3IgcHVyZWx5IGVsZWN0aXZlIGRvIGhhdmUKICAgICAgICAgYW4gdW5lbmN1bWJlcmVkLCBmcmVlIHJlcGxhY2VtZW50IGNvbXBvbmVudCB0aGF0IHlvdSBjYW4KLSAgICAgICAgdXNlIHJhdGhlciB0aGFuIGFncmVlaW5nIHRvIHRoZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIHVzZSByYXRoZXIgdGhhbiBhZ3JlZWluZyB0byB0aGUgc2VwYXJhdGVseS1saWNlbnNlZAogICAgICAgICBjb21wb25lbnQuCiAgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodAogICAgICAgICBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQgdGhhdCBpcyBub3QgaWRlbnRpY2FsIGJ1dApAQCAtMTc0NCw3ICsxNzUyLDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKICAgICAgICAgYXV0b21hdGVzIGNyZWF0aW5nIGEgQlNQIGxheWVyLgotICAgICAgICBXaGF0IG1ha2VzIGEgbGF5ZXIgYSAiQlNQIGxheWVyIiwgaXMgdGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZQorICAgICAgICBXaGF0IG1ha2VzIGEgbGF5ZXIgYSAiQlNQIGxheWVyIiBpcyB0aGUgcHJlc2VuY2Ugb2YgYXQgbGVhc3Qgb25lIG1hY2hpbmUKICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgogICAgICAgICBBZGRpdGlvbmFsbHksIGEgQlNQIGxheWVyIHVzdWFsbHkgaGFzIGEga2VybmVsIHJlY2lwZQogICAgICAgICBvciBhbiBhcHBlbmQgZmlsZSB0aGF0IGxldmVyYWdlcyBvZmYgYW4gZXhpc3Rpbmcga2VybmVsIHJlY2lwZS4KQEAgLTE4NjgsMTEgKzE4NzYsMTQgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQorICAgICAgICAgICAgT25lIG9yIG1vcmUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQogICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXI6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmUxPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lMjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTM8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIC4uLiBtb3JlIC4uLgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlCiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYmVhZ2xlYm9hcmQub3JnL2JvbmUnPkJlYWdsZUJvbmUgYW5kIEJlYWdsZUJvbmUgQmxhY2sgZGV2ZWxvcG1lbnQgYm9hcmRzPC91bGluaz4KQEAgLTE5MjMsOCArMTkzNCw4IEBACiAgICAgIElNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIHpJbWFnZSBhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBUaGUgdmFyaWFibGVzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBtYWNoaW5lIGRlZmluZQotICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBwcm9wZXJ0aWVzLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG1hY2hpbmUtZGVwZW5kZW50IHBhY2thZ2VzLCBtYWNoaW5lCisgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHByb3BlcnRpZXM7CisgICAgICAgICAgICBmb3IgZXhhbXBsZSwgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMsIG1hY2hpbmUKICAgICAgICAgICAgIHR1bmluZ3MsIHRoZSB0eXBlIG9mIGtlcm5lbCB0byBidWlsZCwgYW5kCiAgICAgICAgICAgICBVLUJvb3QgY29uZmlndXJhdGlvbnMuCiAgICAgICAgIDwvcGFyYT4KQEAgLTE5MzUsNyArMTk0Niw3IEBACiAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEJlYWdsZUJvbmUKICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkcy4KICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBtdWNoIG1vcmUgY2FuIGJlIGRlZmluZWQgYXMgcGFydCBvZgotICAgICAgICAgICAgYSBtYWNoaW5lcyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBhIG1hY2hpbmUncyBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgICAgICBJbiBnZW5lcmFsLCB5b3UgY2FuIGxlYXJuIGFib3V0IHJlbGF0ZWQgdmFyaWFibGVzCiAgICAgICAgICAgICB0aGF0IHRoaXMgZXhhbXBsZSBkb2VzIG5vdCBoYXZlIGJ5IGxvY2F0aW5nIHRoZQogICAgICAgICAgICAgdmFyaWFibGVzIGluIHRoZQpAQCAtMjE4Miw3ICsyMTkzLDYgQEAKICAgICAgS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NS4wL3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4wL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi0gICAgIEtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY1LjAvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAogICAgICBLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKQEAgLTIxOTIsMTkgKzIyMDIsMTYgQEAKICAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKICAgICAgU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKICAgICAgU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKLSAgICAgU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI4YjYyYWY3ZjI1MmFmMTA1ODgyNzY4MDJjNGM2ZDdjNTAyZTg3NWJlIgogCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi0gICAgIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjAuMyIKICAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMC4zIgogICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4wLjMiCiAgICAgIExJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjAuMyIKLSAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNS4wLjMiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBUaGlzIHBhcnRpY3VsYXIgYXBwZW5kIGZpbGUgd29ya3MgZm9yIGFsbCB0aGUKICAgICAgICAgICAgIG1hY2hpbmVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKaW5kZXggMDA3NDFlZS4uZTljZTE4MiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbApAQCAtMTg0LDYgKzE4NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEFZRVJERVBFTkRTJz48ZmlsZW5hbWU+TEFZRVJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIGxheWVycyBvbiB3aGljaCB0aGlzIGxheWVyIGRlcGVuZHMgKGlmIGFueSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSU0VSSUVTX0NPTVBBVCc+PGZpbGVuYW1lPkxBWUVSU0VSSUVTX0NPTVBBVDwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPllvY3RvIFByb2plY3Q8L3VsaW5rPgpAQCAtMzE1LDEyICszMTksMjYgQEAKICAgICAgREVQRU5EU19hcHBlbmRfb25lID0gIiBmb28iCiAgICAgIERFUEVORFNfcHJlcGVuZF9vbmUgPSAiZm9vICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgbGluZSBmcm9tIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGdudXRscywgd2hpY2ggYWRkcyBkZXBlbmRlbmNpZXMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3Atc3RhbmRhbG9uZSIgd2hlbiBidWlsZGluZyB3aXRoIHRoZSBtdXNsIEMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gYWN0dWFsIGV4YW1wbGUsIGhlcmUncyBhIHNuaXBwZXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyBrZXJuZWwgaW5jbHVkZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by5pbmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmVpbiB0aGUga2VybmVsIGNvbXBpbGUgYW5kIGxpbmsgb3B0aW9ucyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWQgaW4gdGhlIGNhc2Ugb2YgYSBzdWJzZXQgb2YgdGhlIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorICAgICBERVBFTkRTX2FwcGVuZF9hYXJjaDY0ID0gIiBsaWJnY2MiCisgICAgIEtFUk5FTF9DQ19hcHBlbmRfYWFyY2g2NCA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfYWFyY2g2NCA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKKyAgICAgREVQRU5EU19hcHBlbmRfbmlvczIgPSAiIGxpYmdjYyIKKyAgICAgS0VSTkVMX0NDX2FwcGVuZF9uaW9zMiA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfbmlvczIgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorCisgICAgIERFUEVORFNfYXBwZW5kX2FyYyA9ICIgbGliZ2NjIgorICAgICBLRVJORUxfQ0NfYXBwZW5kX2FyYyA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfYXJjID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKworICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBmZWF0dXJlcy9kZWJ1Zy9wcmludGsuc2NjIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZvaWRpbmcgIis9IiBhbmQgIj0rIiBhbmQgdXNpbmcKQEAgLTU4MCwxMSArNTk4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+IHdvcmtzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9zaWduYXR1cmVzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gYmUgc3VyZSB0aGF0IEJTUCBhbmQgRElTVFJPIGxheWVycyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21lIHdpdGggcmVjaXBlcyB0aGF0IGNoYW5nZSBzaWduYXR1cmVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9sYXllcnNlcmllc19jb21wYXQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyBsYXllciBjb21wYXRpYmlsaXR5IGlzIHNldCBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfYnNwX2RlZmluZXNfbWFjaGluZXM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyBpZiBhIEJTUCBsYXllciBoYXMgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTU5NCwxMSArNjIwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSB3aGVuIHRoZSBsYXllciBpcyBhZGRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfbWFjaGluZV93b3JsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWVzIHRoYXQgPGZpbGVuYW1lPmJpdGJha2Ugd29ybGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggbWFjaGluZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfbWFjaGluZV9zaWduYXR1cmVzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCBidWlsZGluZyBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3RzIG9ubHkgdGhlIHNpZ25hdHVyZSBvZiB0YXNrcyBzcGVjaWZpYyB0byB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX2RlZmluZXNfZGlzdHJvczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIGlmIGEgRElTVFJPIGxheWVyIGhhcyBkaXN0cm8gY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryby50ZXN0X2Rpc3Ryb19ub19zZXRfZGlzdHJvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryby50ZXN0X2Rpc3Ryb19ub19zZXRfZGlzdHJvczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIHRvIGVuc3VyZSBhIERJU1RSTyBsYXllciBkb2VzIG5vdCBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHdoZW4gdGhlIGxheWVyIGlzIGFkZGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTM5Nyw3ICsxNDM0LDcgQEAKICAgICAgICAgICAgICAgICBwYWNrYWdlIHNwZWNpZmllZCBpbiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdCBwYWNrYWdlczwvZmlsZW5hbWU+IHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluaGVyaXQgcGFja2FnZWdyb3VwPC9maWxlbmFtZT4gbGluZSBzaG91bGQgYmUKICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBuZWFyIHRoZSB0b3Agb2YgdGhlIHJlY2lwZSwgY2VydGFpbmx5IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gc3RhdGVtZW50LgogICAgICAgICAgICAgICAgIDwvbm90ZT4KQEAgLTE0MTcsMjggKzE0NTQsMzIgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNob3J0LCBmYWJyaWNhdGVkIGV4YW1wbGUgc2hvd2luZyB0aGUgc2FtZSBiYXNpYwotICAgICAgICAgICAgICAgIHBpZWNlczoKKyAgICAgICAgICAgICAgICBwaWVjZXMgZm9yIGEgaHlwb3RoZXRpY2FsIHBhY2thZ2Vncm91cCBkZWZpbmVkIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b20uYmI8L2ZpbGVuYW1lPiwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gaXMgdGhlIHN0YW5kYXJkIHdheSB0bworICAgICAgICAgICAgICAgIGFiYnJldmlhdGUgdGhlIHJlZmVyZW5jZSB0byB0aGUgZnVsbCBwYWNrYWdlZ3JvdXAgbmFtZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY3VzdG9tPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBERVNDUklQVElPTiA9ICJNeSBDdXN0b20gUGFja2FnZSBHcm91cHMiCiAKICAgICAgaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAogICAgICBQQUNLQUdFUyA9ICJcCi0gICAgICAgICBwYWNrYWdlZ3JvdXAtY3VzdG9tLWFwcHMgXAotICAgICAgICAgcGFja2FnZWdyb3VwLWN1c3RvbS10b29scyBcCisgICAgICAgICAke1BOfS1hcHBzIFwKKyAgICAgICAgICR7UE59LXRvb2xzIFwKICAgICAgICAgICIKIAotICAgICBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLWFwcHMgPSAiXAorICAgICBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKICAgICAgICAgIGRyb3BiZWFyIFwKICAgICAgICAgIHBvcnRtYXAgXAogICAgICAgICAgcHNwbGFzaCIKIAotICAgICBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzID0gIlwKKyAgICAgUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAiXAogICAgICAgICAgb3Byb2ZpbGUgXAogICAgICAgICAgb3Byb2ZpbGV1aS1zZXJ2ZXIgXAogICAgICAgICAgbHR0bmctdG9vbHMiCiAKLSAgICAgUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWN1c3RvbS10b29scyA9ICJcCisgICAgIFJSRUNPTU1FTkRTXyR7UE59LXRvb2xzID0gIlwKICAgICAgICAgIGtlcm5lbC1tb2R1bGUtb3Byb2ZpbGUiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTkwMCw5ICsxOTQxLDkgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlIG11c3QKICAgICAgICAgICAgICAgICBkZWZpbmUgZWFjaCB1bmlxdWUgbG9jYXRpb24gZm9yIHlvdXIgc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gbm90IGhhcmQtY29kZSBwYXRobmFtZXMgaW4gYW4gVVJMIHVzZWQKKyAgICAgICAgICAgICAgICBJdCBpcyBnb29kIHByYWN0aWNlIHRvIG5vdCBoYXJkLWNvZGUgdmVyc2lvbiBudW1iZXJzIGluIGEgVVJMIHVzZWQKICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIGhhcmQtY29kZSB0aGVzZSBwYXRocywgdXNlCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gaGFyZC1jb2RlIHRoZXNlIHZhbHVlcywgdXNlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgIHdoaWNoIGNhdXNlcyB0aGUgZmV0Y2ggcHJvY2VzcyB0byB1c2UgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluCiAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBmaWxlbmFtZS4KQEAgLTE5MTMsMTMgKzE5NTQsMTMgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMWEyMC5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuNS5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgcmVjaXBlIHdoZXJlIHRoZSBzb3VyY2UgY29tZXMgZnJvbSBhIHNpbmdsZSB0YXJiYWxsLgogICAgICAgICAgICAgICAgIE5vdGljZSB0aGUgdXNlIG9mIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYmVybGlvcy5kZS9wdWIvY2RyZWNvcmQvYWxwaGEvY2RydG9vbHMtJHtQVn0udGFyLmJ6MiIKKyAgICAgU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTE5NzgsMTYgKzIwMTksMTcgQEAKICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBwcm92aWRlIGEgbmFtZSBmb3IgZWFjaCBVUkwgYXMgcGFydCBvZgogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGFuZCB0aGVuIHJlZmVyZW5jZSB0aGF0IG5hbWUKICAgICAgICAgICAgICAgICBpbiB0aGUgc3Vic2VxdWVudCBjaGVja3N1bSBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgY29tYmluaW5nIGxpbmVzIGZyb20gdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC5pbmM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0XzIuMjQuMS5iYjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYS9hcG1kL2FwbWRfMy4yLjIub3JpZy50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgICAgICAke0RFQklBTl9NSVJST1J9L21haW4vYS9hcG1kL2FwbWRfJHtQVn0uZGlmZi5nejtuYW1lPXBhdGNoIgorICAgICBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtJHtQVn0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgICAgICAgJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9zY20vZ2l0L2dpdC1tYW5wYWdlcy0ke1BWfS50YXIuZ3o7bmFtZT1tYW5wYWdlcyIKIAotICAgICBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJiMWU2MzA5ZTgzMzFlMGY0ZTZlZmQzMTFjMmQ5N2ZhOCIKLSAgICAgU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiN2Y3ZDlmNjBiNzc2NmI4NTI4ODFkNDBiOGZmOTFkOGUzOWZjY2IwZDFkOTEzMTAyYTVjNzVhMmRiYjUyMzMyZCIKLQotICAgICBTUkNfVVJJW3BhdGNoLm1kNXN1bV0gPSAiNTdlMWI2ODkyNjRlYTgwZjc4MzUzNTE5ZWVjZTBjOTIiCi0gICAgIFNSQ19VUklbcGF0Y2guc2hhMjU2c3VtXSA9ICI3OTA1ZmY5NmJlOTNkNzI1NTQ0ZDAwNDBlNDI1YzQyZjljMDU1ODBkYjNjMjcyZjExY2ZmNzViOWFhODlkNDMwIgorICAgICBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNjZiZGU5NmFkYmJjMTFjODg0M2Q0ZjhmNGY5ODExYiIKKyAgICAgU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQ1MzM0OTU2MzAxYzg2ODQxZWIxZTViMWJiMjA4ODRhNmJhZDg5YTEwYTY3NjJjOTU4MjIwYzdjZjY0ZGEwMiIKKyAgICAgU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjMxYzIyNzJhODk3OTAyMjQ5N2JhM2Q0MjAyZGYxNDVkIgorICAgICBTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiOWE3YWUzYTA5M2JlYTM5NzcwZWI5NmNhM2U1YjQwYmZmN2FmMGI5ZjYxMjNmMDg5ZDc4MjFkMGU1YjhlMTIzMCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTMyNDIsOCArMzI4NCw2IEBACiAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkZWZpbmVkIGluIHRoZSBwb3N0LWluc3RhbGxhdGlvbiBmdW5jdGlvbiBpcwogICAgICAgICAgICAgICAgIGNhbGxlZCB3aGVuIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4KICAgICAgICAgICAgICAgICBJZiB0aGUgc2NyaXB0IHN1Y2NlZWRzLCB0aGUgcGFja2FnZSBpcyBtYXJrZWQgYXMgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgIElmIHRoZSBzY3JpcHQgZmFpbHMsIHRoZSBwYWNrYWdlIGlzIG1hcmtlZCBhcyB1bnBhY2tlZCBhbmQKLSAgICAgICAgICAgICAgICB0aGUgc2NyaXB0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIGltYWdlIGJvb3RzIGFnYWluLgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICBBbnkgUlBNIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdCB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldAogICAgICAgICAgICAgICAgICAgICBzaG91bGQgcmV0dXJuIGEgMCBleGl0IGNvZGUuCkBAIC0zMjYyLDcgKzMzMDIsNyBAQAogICAgICAgICAgICAgICAgIG1hcmsgcG9zdCBpbnN0YWxscyB0byBkZWZlciB0byB0aGUgdGFyZ2V0LgogICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+IG9yCiAgICAgICAgICAgICAgICAgY2FsbAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICAgICAgICAgIChpbmNsdWRpbmcgZXhpdCAxKSB0cmlnZ2VycyBhbiBlcnJvciBkdXJpbmcgdGhlCkBAIC03NjA5LDcgKzc2NDksNiBAQAogICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBXaWMgaW1hZ2VzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBsaXN0IGltYWdlcwotICAgICAgIG1wYzgzMTVlLXJkYiAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgogICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgogICAgICAgIGJlYWdsZWJvbmUteW9jdG8gICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUKICAgICAgICBlZGdlcm91dGVyICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBFZGdlcm91dGVyCkBAIC03Nzk3LDcgKzc4MzYsNiBAQAogICAgICAgICAgICAgICAgIGZpbGVzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgbGlzdCBpbWFnZXMKLSAgICAgICBtcGM4MzE1ZS1yZGIgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBNUEM4MzE1RS1SREIKICAgICAgICBnZW5lcmljeDg2ICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKICAgICAgICBiZWFnbGVib25lLXlvY3RvICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCiAgICAgICAgZWRnZXJvdXRlciAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgRWRnZXJvdXRlcgpAQCAtMTA1NTAsNyArMTA1ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgTlBNIGZldGNoZXIgdG8KICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSByZWNpcGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGFkZCAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y3V0ZS1maWxlczt2ZXJzaW9uPTEuMC4yIgorICAgICAkIGRldnRvb2wgYWRkICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1jdXRlLWZpbGVzO3ZlcnNpb249MS4wLjIiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgcnVucwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPiBhbmQgdXNlcyB0aGUKQEAgLTEwNTc1LDI1ICsxMDYxMywxMyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgInNocmlua3dyYXAiIGFuZAotICAgICAgICAgICAgICAgICAgICAibG9ja2Rvd24iIGZpbGVzIGZvciB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBjcmVhdGVzIGEgInNocmlua3dyYXAiIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICBTaHJpbmt3cmFwIGZpbGVzIGNhcHR1cmUgdGhlIHZlcnNpb24gb2YgYWxsIGRlcGVuZGVudAogICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICBNYW55IHBhY2thZ2VzIGRvIG5vdCBwcm92aWRlIHNocmlua3dyYXAgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gY3JlYXRlIGEgc2hyaW5rd3JhcAogICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGl0IHJ1bnMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVwbGFjZSB0aGUgc2hyaW5rd3JhcCBmaWxlIHdpdGggeW91ciBvd24gZmlsZQotICAgICAgICAgICAgICAgICAgICBieSBzZXR0aW5nIHRoZSA8ZmlsZW5hbWU+TlBNX1NIUklOS1dSQVA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgTG9ja2Rvd24gZmlsZXMgY29udGFpbiB0aGUgY2hlY2tzdW0gZm9yIGVhY2ggbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiB5b3VyIHVzZXJzIGRvd25sb2FkIHRoZSBzYW1lIGZpbGVzIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgd2l0aCBhIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgTG9ja2Rvd24gZmlsZXMgZW5zdXJlIHRoYXQgZGVwZW5kZW5jaWVzIGhhdmUgbm90IGJlZW4KLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCBhbmQgdGhhdCB5b3VyIE5QTSByZWdpc3RyeSBpcyBzdGlsbCBwcm92aWRpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgY3JlYXRlZCBmb3IgZWFjaCBzdWItbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwb2xpY3kgaXMgdGhlIG9ubHkgcHJhY3RpY2FsIHdheSB0byBoYXZlIHRoZQpAQCAtMTA2MDgsMjMgKzEwNjM0LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIGN1dGUtZmlsZXMKICAgICAgU1VNTUFSWSA9ICJUdXJuIGFueSBmb2xkZXIgb24geW91ciBjb21wdXRlciBpbnRvIGEgY3V0ZSBmaWxlIGJyb3dzZXIsIGF2YWlsYWJsZSBvbiB0aGUgbG9jYWwgbmV0d29yay4iCi0gICAgIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICZhbXA7IFVua25vd24gJmFtcDsgTUlUICZhbXA7IElTQyIKKyAgICAgTElDRU5TRSA9ICJNSVQgJmFtcDsgSVNDICZhbXA7IFVua25vd24iCiAgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcxZDk4YzBhMWRiNDI5NTY3ODdiMTkwOWM3NGE4NmNhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm9kZV9tb2R1bGVzL2NvbnRlbnQtZGlzcG9zaXRpb24vTElDRU5TRTttZDU9YzZlMGNlMWU2ODhjNWZmMTZkYjA2YjcyNTllOWNkMjAgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvZXhwcmVzcy9MSUNFTlNFO21kNT01NTEzYzAwYTVjMzZjZDM2MWRhODYzZGQ5YWE4ODc1ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy90b2lkZW50aWZpZXIvTElDRU5TRTttZDU9MWEyNjEwNzFhMDQ0ZDAyZWI2ZjJiYjQ3ZjUxYTM1MDIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvZGVidWcvTElDRU5TRTttZDU9ZGRkODE1YTQ3NWU3MzM4YjBiZTdhMTRkOGVlMzVhOTkgXAogICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgogCi0gICAgIFNSQ19VUkkgPSAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y3V0ZS1maWxlczt2ZXJzaW9uPSR7UFZ9IgotICAgICBOUE1fU0hSSU5LV1JBUCA6PSAiJHtUSElTRElSfS8ke1BOfS9ucG0tc2hyaW5rd3JhcC5qc29uIgotICAgICBOUE1fTE9DS0RPV04gOj0gIiR7VEhJU0RJUn0vJHtQTn0vbG9ja2Rvd24uanNvbiIKLSAgICAgaW5oZXJpdCBucG0KLSAgICAgIyBNdXN0IGJlIHNldCBhZnRlciBpbmhlcml0IG5wbSBzaW5jZSB0aGF0IGl0c2VsZiBzZXRzIFMKLSAgICAgUyA9ICIke1dPUktESVJ9L25wbXBrZyIKKyAgICAgU1JDX1VSSSA9ICIgXAorICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLztwYWNrYWdlPWN1dGUtZmlsZXM7dmVyc2lvbj0ke1BWfSBcCisgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24gXAorICAgICAiCiAKLSAgICAgTElDRU5TRV8ke1BOfS1jb250ZW50LWRpc3Bvc2l0aW9uID0gIk1JVCIKLSAgICAgLi4uCi0gICAgIExJQ0VOU0VfJHtQTn0tZXhwcmVzcyA9ICJNSVQiCisgICAgIFMgPSAiJHtXT1JLRElSfS9ucG0iCisKKyAgICAgaW5oZXJpdCBucG0KKwogICAgICBMSUNFTlNFXyR7UE59ID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hY2NlcHRzID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hcnJheS1mbGF0dGVuID0gIk1JVCIKKyAgICAgLi4uCisgICAgIExJQ0VOU0VfJHtQTn0tdmFyeSA9ICJNSVQiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhyZWUga2V5IHBvaW50cyBleGlzdCBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KQEAgLTEwNzE3LDExICsxMDc0NiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBsb29rcyBsaWtlIHRoZQogICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmFnbHYvY3V0ZS1maWxlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y29tbWFuZGVyO3ZlcnNpb249Mi45LjA7c3ViZGlyPW5vZGVfbW9kdWxlcy9jb21tYW5kZXIgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9ZXhwcmVzczt2ZXJzaW9uPTQuMTQuMDtzdWJkaXI9bm9kZV9tb2R1bGVzL2V4cHJlc3MgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y29udGVudC1kaXNwb3NpdGlvbjt2ZXJzaW9uPTAuMy4wO3N1YmRpcj1ub2RlX21vZHVsZXMvY29udGVudC1kaXNwb3NpdGlvbiBcCi0gICAgICAgICAgICAgICAiCisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vbWFydGluYWdsdi9jdXRlLWZpbGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24gXAorICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG1haW4gbW9kdWxlIGlzIHRha2VuIGZyb20gdGhlIEdpdAogICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBkZXBlbmRlbnRzIGFyZSB0YWtlbiBmcm9tIHRoZSBOUE0gcmVnaXN0cnkuCkBAIC0xMDgyMiw3ICsxMDg1MCw3IEBACiAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kIGZvcm0gdG8gZmV0Y2ggYWxsIHRoZQogICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBzb3VyY2VzIHdpdGhvdXQgc3RhcnRpbmcgdGhlIGJ1aWxkOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBydW5hbGw9ImZldGNoIgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IC0tcnVuYWxsPWZldGNoCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoaXMgdmFyaWF0aW9uIG9mIHRoZSBCaXRCYWtlIGNvbW1hbmQgZ3VhcmFudGVlcyB0aGF0IHlvdQogICAgICAgICAgICAgICAgIGhhdmUgYWxsIHRoZSBzb3VyY2VzIGZvciB0aGF0IEJpdEJha2UgdGFyZ2V0IHNob3VsZCB5b3UKQEAgLTEwODQ1LDE1ICsxMDg3Myw2IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgU3lzVmluaXQgYXMgdGhlIGluaXRpYWxpemF0aW9uCi0gICAgICAgICAgICBtYW5hZ2VyLgotICAgICAgICAgICAgSG93ZXZlciwgc3VwcG9ydCBhbHNvIGV4aXN0cyBmb3Igc3lzdGVtZCwKLSAgICAgICAgICAgIHdoaWNoIGlzIGEgZnVsbCByZXBsYWNlbWVudCBmb3IgaW5pdCB3aXRoCi0gICAgICAgICAgICBwYXJhbGxlbCBzdGFydGluZyBvZiBzZXJ2aWNlcywgcmVkdWNlZCBzaGVsbCBvdmVyaGVhZCBhbmQgb3RoZXIKLSAgICAgICAgICAgIGZlYXR1cmVzIHRoYXQgYXJlIHVzZWQgYnkgbWFueSBkaXN0cmlidXRpb25zLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaXRoaW4gdGhlIHN5c3RlbSwgU3lzVmluaXQgdHJlYXRzIHN5c3RlbSBjb21wb25lbnRzIGFzIHNlcnZpY2VzLgogICAgICAgICAgICAgVGhlc2Ugc2VydmljZXMgYXJlIG1haW50YWluZWQgYXMgc2hlbGwgc2NyaXB0cyBzdG9yZWQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9pbml0LmQvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgpAQCAtMTExNjQsMTggKzExMTgzLDE4IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSB0aGUgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbSwgc2ltcGx5IGFkZCB0aGUKLSAgICAgICAgICAgICAgICAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSB0byB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgIFVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHN0YXRlbWVudHMgaW4geW91cgotICAgICAgICAgICAgICAgIGltYWdlIHJlY2lwZSBvciBmcm9tIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIHJlYWQtb25seSByb290IGZpbGVzeXN0ZW06CisgICAgICAgICAgICAgICAgInJlYWQtb25seS1yb290ZnMiIGZlYXR1cmUgdG8geW91ciBpbWFnZSwgbm9ybWFsbHkgaW4gb25lIG9mIHR3byB3YXlzLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCB3YXkgaXMgdG8gYWRkIHRoZSAicmVhZC1vbmx5LXJvb3RmcyIgaW1hZ2UgZmVhdHVyZQorICAgICAgICAgICAgICAgIGluIHRoZSBpbWFnZSdzIHJlY2lwZSBmaWxlIHZpYSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCisgICAgIElNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlLCB5b3UgY2FuIGFkZCB0aGUgc2FtZSBmZWF0dXJlIGZyb20gd2l0aGluIHlvdXIKKyAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3RvcnkncyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLCBhcyBpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIgorICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJyZWFkLW9ubHktcm9vdGZzIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTIwMzgsMTUgKzEyMDU3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJ1biB0ZXN0cyBvbiBoYXJkd2FyZSwgeW91IG5lZWQgdG8gc2V0CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICBGb3IgUUVNVSwgeW91IGRvIG5vdCBoYXZlIHRvIGNoYW5nZSBhbnl0aGluZywgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgIlFlbXVUYXJnZXQiLgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAicWVtdSIuCiAgICAgICAgICAgICAgICAgICAgIEZvciBydW5uaW5nIHRlc3RzIG9uIGhhcmR3YXJlLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZXhpc3Q6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJTaW1wbGVSZW1vdGVUYXJnZXQiOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlICJTaW1wbGVSZW1vdGVUYXJnZXQiIGlmIHlvdSBhcmUgZ29pbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNpbXBsZXJlbW90ZSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgInNpbXBsZXJlbW90ZSIgaWYgeW91IGFyZSBnb2luZyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0ZXN0cyBvbiBhIHRhcmdldCBzeXN0ZW0gdGhhdCBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyB0aGUgaW1hZ2UgdG8gYmUgdGVzdGVkIGFuZCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgbmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSAiU2ltcGxlUmVtb3RlVGFyZ2V0IiBpbiBjb25qdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlICJzaW1wbGVyZW1vdGUiIGluIGNvbmp1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBlaXRoZXIgcmVhbCBoYXJkd2FyZSBvciBhbiBpbWFnZSBydW5uaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgc2VwYXJhdGVseSBzdGFydGVkIFFFTVUgb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdmlydHVhbCBtYWNoaW5lIG1hbmFnZXIuCkBAIC0xMjIyMSw3ICsxMjI0MCw3IEBACiAgICAgICAgICAgICAgICAgPHRpdGxlPlBvd2VyIENvbnRyb2w8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IGhhcmR3YXJlIHRhcmdldHMgb3RoZXIgdGhhbiBTaW1wbGVSZW1vdGVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IGhhcmR3YXJlIHRhcmdldHMgb3RoZXIgdGhhbiAic2ltcGxlcmVtb3RlIiwKICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjb250cm9sIHBvd2VyOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTI2MTgsNyArMTI2MzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBjb250cm9sbGVyIG9iamVjdCB1c2VkIHRvIGRlcGxveQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXJ0IGFuIGltYWdlIG9uIGEgcGFydGljdWxhciB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIFFlbXVUYXJnZXQsIFNpbXBsZVJlbW90ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBRZW11LCBTaW1wbGVSZW1vdGUsIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtZGJvb3RUYXJnZXQpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdXN1YWxseSB1c2UgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbAppbmRleCBmNWEwZDY0Li41Y2NjMGRmIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKQEAgLTE1MSwxMyArMTUxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHN0YXJ0cyBRRU1VIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IHNldCB0byAicWVtdXg4NiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBzZXQgdG8gInFlbXV4ODYtNjQiLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIGEgc3RhbmRhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gYXV0b21hdGljYWxseSBmaW5kcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ6SW1hZ2UtcWVtdXg4Ni02NC5iaW48L2ZpbGVuYW1lPiBpbWFnZSBmaWxlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni0yMDE0MDcwNzA3NDYxMS5yb290ZnMuZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LTIwMjAwMjE4MDAyODUwLnJvb3Rmcy5leHQ0PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYnVpbGQgY3JlYXRlZCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAkIHJ1bnFlbXUgcWVtdXg4Ni02NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCwgaG93ZXZlciwgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIHRoZSBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByb290IGZpbGVzeXN0ZW0gdHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2IGNvcmUtaW1hZ2UtbWluaW1hbCBleHQzCisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0IGNvcmUtaW1hZ2UtbWluaW1hbCBleHQ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaW5zdGFsbGVkIChzZWUgdGhlIHByZXZpb3VzIGRlc2NyaXB0aW9uIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPiBvcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYgcmFtZnMgYXVkaW8KKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgcmFtZnMgYXVkaW8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0yMDAsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT4sIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT4gb3B0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IGV4dDMKKyAgICAgJCBydW5xZW11IGV4dDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0yMDksOSArMjA5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlcm1pbmVzIHRoZSBRRU1VCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlICg8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+KSB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicWVtdXg4Ni02NCIgYW5kIHRoZSByb290IGZpbGVzeXN0ZW0gdHlwZSB0byBiZSAidm1kayIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgL2hvbWUvc2NvdHQtbGVub3ZvL3ZtL2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYy52bWRrCisgICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljLnZtZGsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMjk2LDcgKzI5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIGl0IHRvIGEgZGlyZWN0b3J5IG5hbWVkCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0LW5mczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJ1bnFlbXUtZXh0cmFjdC1zZGsgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2Utc2F0by1xZW11eDg2LnRhci5iejIgdGVzdC1uZnMKKyAgICAgcnVucWVtdS1leHRyYWN0LXNkayAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1zYXRvLXFlbXV4ODYtNjQudGFyLmJ6MiB0ZXN0LW5mcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTMxMCw3ICszMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcnVucWVtdSBxZW11eDg2IC4vdGVzdC1uZnMKKyAgICAgcnVucWVtdSBxZW11eDg2LTY0IC4vdGVzdC1uZnMKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDU5ZmZhNDkuLjhjYjU2MzEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC03LDcgKzcsNyBAQAogPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogPHBhcmE+Ci0gICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgcmVsYXRlZCB0byBnZXR0aW5nIHNldCB1cCB0byB1c2UgdGhlCisgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGd1aWRhbmNlIG9uIGhvdyB0byBwcmVwYXJlIHRvIHVzZSB0aGUKICAgICBZb2N0byBQcm9qZWN0LgogICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgY3JlYXRpbmcgYSB0ZWFtIGVudmlyb25tZW50IHRoYXQgZGV2ZWxvcHMgdXNpbmcgdGhlCiAgICAgWW9jdG8gUHJvamVjdCwgaG93IHRvIHNldCB1cCBhCkBAIC0yNCw5ICsyNCw5IEBACiAgICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBob3cgdG8gc2NhbGUgaXQgZm9yIGEKICAgICAgICAgbGFyZ2UgdGVhbSBvZiBkZXZlbG9wZXJzLgogICAgICAgICBZb3UgY2FuIGFkYXB0IHRoZSBZb2N0byBQcm9qZWN0IHRvIG1hbnkgZGlmZmVyZW50IHVzZSBjYXNlcyBhbmQKLSAgICAgICAgc2NlbmFyaW9zLgotICAgICAgICBIb3dldmVyLCB0aGlzIGZsZXhpYmlsaXR5IGNvdWxkIGNhdXNlIGRpZmZpY3VsdGllcyBpZiB5b3UgYXJlIHRyeWluZwotICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGFjcm9zcyBhIGxhcmdlIHRlYW0uCisgICAgICAgIHNjZW5hcmlvczsKKyAgICAgICAgaG93ZXZlciwgdGhpcyBmbGV4aWJpbGl0eSBjb3VsZCBjYXVzZSBkaWZmaWN1bHRpZXMgaWYgeW91IGFyZSB0cnlpbmcKKyAgICAgICAgdG8gY3JlYXRlIGEgd29ya2luZyBzZXR1cCB0aGF0IHNjYWxlcyBlZmZlY3RpdmVseS4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTM1LDE3ICszNSwxNyBAQAogICAgICAgICB0aGF0IGNhbiBoZWxwIHlvdSBnZXQgdGhlIHJlc3VsdHMgeW91IHdhbnQuCiAgICAgICAgIFRoZSBwcm9jZWR1cmUgaXMgaGlnaC1sZXZlbCBhbmQgcHJlc2VudHMgc29tZSBvZiB0aGUgcHJvamVjdCdzIG1vc3QKICAgICAgICAgc3VjY2Vzc2Z1bCBleHBlcmllbmNlcywgcHJhY3RpY2VzLCBzb2x1dGlvbnMsIGFuZCBhdmFpbGFibGUKLSAgICAgICAgdGVjaG5vbG9naWVzIHRoYXQgaGF2ZSBwcm92ZWQgdG8gd29yayB3ZWxsIGluIHRoZSBwYXN0LgotICAgICAgICBLZWVwIGluIG1pbmQsIHRoZSBwcm9jZWR1cmUgaGVyZSBpcyBhIHN0YXJ0aW5nIHBvaW50LgorICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCBoYXZlIHByb3ZlZCB0byB3b3JrIHdlbGwgaW4gdGhlIHBhc3Q7CisgICAgICAgIGhvd2V2ZXIsIGtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIHNpbXBseSBhIHN0YXJ0aW5nIHBvaW50LgogICAgICAgICBZb3UgY2FuIGJ1aWxkIG9mZiB0aGVzZSBzdGVwcyBhbmQgY3VzdG9taXplIHRoZSBwcm9jZWR1cmUgdG8gZml0IGFueQogICAgICAgICBwYXJ0aWN1bGFyIHdvcmtpbmcgZW52aXJvbm1lbnQgYW5kIHNldCBvZiBwcmFjdGljZXMuCiAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0ZXJtaW5lIFdobyBpcyBHb2luZyB0byBiZSBEZXZlbG9waW5nOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gaXMgZ29pbmcgdG8gYmUgZG9pbmcgYW55dGhpbmcKKyAgICAgICAgICAgICAgICBZb3UgZmlyc3QgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZwogICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIGRldGVybWluZSB0aGVpciByb2xlcy4KICAgICAgICAgICAgICAgICBNYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGlzIGVzc2VudGlhbCB0byBjb21wbGV0aW5nCi0gICAgICAgICAgICAgICAgc3RlcHMgdHdvIGFuZCB0aHJlZSwgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgorICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgc3RlcHMsIHdoaWNoIGFyZSB0byBnZXQgeW91ciBlcXVpcG1lbnQgdG9nZXRoZXIKICAgICAgICAgICAgICAgICBhbmQgc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQncyBoYXJkd2FyZSB0b3BvbG9neS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTY0LDggKzY0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIG1hbmFnZXMgQXV0b2J1aWxkZXJzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4gRGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGVudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhbGwgc2l0dWF0aW9ucyBtaWdodCBuZWVkIGEgQnVpbGQgRW5naW5lZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgRW5naW5lZXI6PC9lbXBoYXNpcz4KQEAgLTg4LDYgKzg4LDExIEBACiAgICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAogICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHN1ZmZpY2llbnQgcHJvY2Vzc2luZyBwb3dlciwgeW91IG1pZ2h0IGFsc28gY29uc2lkZXIKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBjb250YWluZXJzIHRvIGJlIHJ1bgorICAgICAgICAgICAgICAgICAgICB1bmRlciBEb2NrZXIsIHdoaWNoIGlzIGRlc2NyaWJlZCBsYXRlci4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmQgdGhlIEhhcmR3YXJlIFRvcG9sb2d5IG9mIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgpAQCAtMTE0LDEwICsxMTksMTAgQEAKICAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUgY29udHJvbCBvZiBhbiBTQ00KICAgICAgICAgICAgICAgICBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgICAgIGlzIGFkdmlzYWJsZS4KLSAgICAgICAgICAgICAgICBPZiB0aGUgU0NNcyBCaXRCYWtlIHN1cHBvcnRzLCB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5CisgICAgICAgICAgICAgICAgT2YgYWxsIG9mIHRoZSBTQ01zIHN1cHBvcnRlZCBieSBCaXRCYWtlLCB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5CiAgICAgICAgICAgICAgICAgcmVjb21tZW5kcyB1c2luZwogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2t1cCwKKyAgICAgICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2sgdXAsCiAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byB3b3JrIHJlbW90ZWx5LCBhbmQgdGhlbiBjb25uZWN0cyBiYWNrIHRvIHRoZQogICAgICAgICAgICAgICAgIGluZnJhc3RydWN0dXJlLgogICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtMzAyLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAogICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCi0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gYSBnb29kIGlkZWEgdG8gaGF2ZSB3ZWxsLXN0cnVjdHVyZWQKICAgICAgICAgICAgICAgICBjb21taXQgbWVzc2FnZXMsIHdoaWNoIGFyZSB1c3VhbGx5IGEgcGFydCBvZiBhIHByb2plY3QncwogICAgICAgICAgICAgICAgIGd1aWRlbGluZXMuCiAgICAgICAgICAgICAgICAgR29vZCBjb21taXQgbWVzc2FnZXMgYXJlIGVzc2VudGlhbCB3aGVuIGxvb2tpbmcgYmFjayBpbiB0aW1lIGFuZApAQCAtMzk0LDE2ICszOTksMTggQEAKICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHByb2NlZHVyZXMgdG8gc2V0IHVwIGEgc3lzdGVtIHRvIGJlIHVzZWQgYXMgeW91cgogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CiAgICAgICAgIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgWW91ciBidWlsZCBob3N0IGNhbiBiZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIChyZWNvbW1lbmRlZCkgb3IgaXQgY2FuCisgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBjYW4gYmUgYSBuYXRpdmUgTGludXggbWFjaGluZSAocmVjb21tZW5kZWQpLCBpdCBjYW4KICAgICAgICAgYmUgYSBtYWNoaW5lIChMaW51eCwgTWFjLCBvciBXaW5kb3dzKSB0aGF0IHVzZXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICB3aGljaCBsZXZlcmFnZXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+IG9yIGl0IGNhbgorICAgICAgICBiZSBhIFdpbmRvd3MgbWFjaGluZSBjYXBhYmxlIG9mIHJ1bm5pbmcgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIChXU0wpLgogICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEgYnVpbGQgaG9zdCB0aGF0IGlzIHVzaW5nIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXg8L3VsaW5rPgotICAgICAgICAgICAgKFdTTCkuCi0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTC4KKyAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggdjE8L3VsaW5rPi4KKyAgICAgICAgICBJdCBpcyBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZCB3aXRoIFdTTHYyLgorICAgICAgICAgIElmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZSB0bworICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbCc+V1NMdjI8L3VsaW5rPi4KICAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIApAQCAtNDQyLDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgaGF2ZSBhIHJlYXNvbmFibHkgY3VycmVudCBMaW51eC1iYXNlZCBob3N0CiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgaGF2ZSB0aGUgYmVzdCByZXN1bHRzIHdpdGggYSByZWNlbnQgcmVsZWFzZSBvZgotICAgICAgICAgICAgICAgICAgICBGZWRvcmEsIG9wZW5TVVNFLCBEZWJpYW4sIFVidW50dSwgb3IgQ2VudE9TIGFzIHRoZXNlCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBSSEVMIG9yIENlbnRPUyBhcyB0aGVzZQogICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBhcmUgZnJlcXVlbnRseSB0ZXN0ZWQgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgICAgICBhbmQgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXIgdmFsaWRhdGlvbiBhbmQgdGhlaXIKQEAgLTQ2MCwyMyArNDY3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZWV0IE1pbmltYWwgVmVyc2lvbiBSZXF1aXJlbWVudHM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2hvdWxkIGJlIGFibGUgdG8gcnVuIG9uIGFueQogICAgICAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCi0gICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBhbmQgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MuCiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yOCBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2MgNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTE3LDcgKzUyNyw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaXRoCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvY3JvcHMvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKICAgICAgICAgICAgIHlvdSBjYW4gY3JlYXRlIGEgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0CkBAIC02NTQsMTUgKzY2NCwxNDcgQEAKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10by11c2Utd3NsJz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCAoV1NMdjIpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGggPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1hYm91dCc+CisgICAgICAgICAgICBXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggKFdTTHYyKTwvdWxpbms+LCB5b3UgY2FuIGNyZWF0ZSBhCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZAorICAgICAgICAgICAgb24gV2luZG93cy4gWW91IGNhbiBzZXQgdXAgYSBMaW51eCBkaXN0cmlidXRpb24gaW5zaWRlIFdpbmRvd3MKKyAgICAgICAgICAgIGluIHdoaWNoIHlvdSBjYW4gZGV2ZWxvcCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gcHJlcGFyZSBhIFdpbmRvd3MgbWFjaGluZSB1c2luZyBXU0x2MgorICAgICAgICAgICAgYXMgeW91ciBZb2N0byBQcm9qZWN0IGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBzdXJlIHlvdXIgV2luZG93cyAxMCBtYWNoaW5lIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2Mjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFdTTHYyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBXaW5kb3dzIDEwIGJ1aWxkcyA+IDE4OTE3LiBUbworICAgICAgICAgICAgICAgICAgICBjaGVjayB3aGljaCBidWlsZCB2ZXJzaW9uIHlvdSBhcmUgcnVubmluZywgeW91IG1heSBvcGVuIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBwcm9tcHQgb24gV2luZG93cyBhbmQgZXhlY3V0ZSB0aGUgY29tbWFuZCAidmVyIi4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFVzZXJzXG15dXNlcj4gdmVyCisKKyAgICBNaWNyb3NvZnQgV2luZG93cyBbVmVyc2lvbiAxMC4wLjE5MDQxLjE1M10KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2MiB5b3UgbWF5IGNvbnRpbnVlLAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHN1YmplY3Qgb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdworICAgICAgICAgICAgICAgICAgICB0byB1cGdyYWRlIHRvIFdTTHYyIHZpc2l0IDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbCc+V2luZG93cyAxMCBXU0x2MjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgdGhlIExpbnV4IGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBpbnNpZGUgV2luZG93cyAxMDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBrbm93IHlvdXIgdmVyc2lvbiBvZiBXaW5kb3dzIDEwIHN1cHBvcnRzIFdTTHYyLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBNaWNyb3NvZnQgU3RvcmUuCisgICAgICAgICAgICAgICAgICAgIE9wZW4gdGhlIE1pY3Jvc29mdCBTdG9yZSBhbmQgc2VhcmNoIGZvciBMaW51eC4gV2hpbGUgdGhlcmUKKyAgICAgICAgICAgICAgICAgICAgYXJlIHNldmVyYWwgTGludXggZGlzdHJpYnV0aW9ucyBhdmFpbGFibGUsIHRoZSBhc3N1bXB0aW9uCisgICAgICAgICAgICAgICAgICAgIGlzIHRoYXQgeW91ciBwaWNrIHdpbGwgYmUgb25lIG9mIHRoZSBkaXN0cmlidXRpb25zIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICBieSB0aGUgWW9jdG8gUHJvamVjdCBhcyBzdGF0ZWQgb24gdGhlIGluc3RydWN0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBuYXRpdmUgTGludXggaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHlvdXIgc2VsZWN0aW9uLCBzaW1wbHkgY2xpY2sgIkdldCIgdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgeW91ciBMaW51eCBkaXN0cmlidXRpb24gaXMgdXNpbmcgV1NMdjI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIFdpbmRvd3MgUG93ZXJTaGVsbCBhbmQgcnVuOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gd3NsIC1sIC12CisgICAgTkFNRSAgICAgIFNUQVRFICAgICAgICAgICBWRVJTSU9OCisgICAgKlVidW50dSAgICBSdW5uaW5nICAgICAgICAgMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIHZlcnNpb24gY29sdW1uIHdoaWNoIHNheXMgdGhlIFdTTCB2ZXJzaW9uIGJlaW5nIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24sIG9uIGNvbXBhdGlibGUgc3lzdGVtcywgdGhpcyBjYW4gYmUgY2hhbmdlZCBiYWNrCisgICAgICAgICAgICAgICAgICAgIGF0IGFueSBwb2ludCBpbiB0aW1lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IE9yaWVudCBZb3Vyc2VsZiBvbiBXU0w6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bmZhbWlsaWFyIHdpdGggV1NMLCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItYWJvdXQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggeW91ciBXU0wgRGlzdGlidXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgV2luZG93cyBzdGFydCBtZW51IHNpbXBseSBsYXVuY2ggeW91ciBXU0wgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGp1c3QgbGlrZSBhbnkgb3RoZXIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGltaXplIHlvdXIgV1NMdjIgc3RvcmFnZSBvZnRlbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEdWUgdG8gdGhlIHdheSBzdG9yYWdlIGlzIGhhbmRsZWQgb24gV1NMdjIsIHRoZSBzdG9yYWdlCisgICAgICAgICAgICAgICAgICAgIHNwYWNlIHVzZWQgYnkgdGhlIHVuZGVseWluZyBMaW51eCBkaXN0cmlidXRpb24gaXMgbm90CisgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RlZCBpbW1lZGF0ZWx5LCBhbmQgc2luY2UgYml0YmFrZSBoZWF2aWx5IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgYWZ0ZXIgc2V2ZXJhbCBidWlsZHMsIHlvdSBtYXkgYmUgdW5hd2FyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgYXJlIHJ1bm5pbmcgb3V0IG9mIHNwYWNlLiBXU0x2MiB1c2VzIGEgVkhEWCBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCB0aGlzIGlzc3VlIGNhbiBiZSBlYXNpbHkgYXZvaWRlZCBieSBtYW51YWxseQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6aW5nIHRoaXMgZmlsZSBvZnRlbiwgdGhpcyBjYW4gYmUgZG9uZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHdheToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBsb2NhdGlvbiBvZiB5b3VyIFZIRFggZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcnN0IHlvdSBuZWVkIHRvIGZpbmQgdGhlIGRpc3RybyBhcHAgcGFja2FnZSBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB0aGlzIG9wZW4gYSBXaW5kb3dzIFBvd2Vyc2hlbGwgYXMgQWRtaW5pc3RyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBydW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IEdldC1BcHB4UGFja2FnZSAtTmFtZSAiKlVidW50dSoiIHwgU2VsZWN0IFBhY2thZ2VGYW1pbHlOYW1lCisgICAgUGFja2FnZUZhbWlseU5hbWUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLQorICAgIENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdyByZXBsYWNlIHRoZSA8cmVwbGFjZWFibGU+UGFja2FnZUZhbWlseU5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIDxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4gb24gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gZmluZCB5b3VyIFZIRFggZmlsZTogPGZpbGVuYW1lPkM6XFVzZXJzXHVzZXJcQXBwRGF0YVxMb2NhbFxQYWNrYWdlc1xQYWNrYWdlRmFtaWx5TmFtZVxMb2NhbFN0YXRlXDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIGxzIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXAorICAgIE1vZGUgICAgICAgICAgICAgICAgIExhc3RXcml0ZVRpbWUgICAgICAgICBMZW5ndGggTmFtZQorICAgIC1hLS0tLSAgICAgICAgIDMvMTQvMjAyMCAgIDk6NTIgUE0gICAgNTc0MTg5NzMxODQgZXh0NC52aGR4ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIFZIRFggZmlsZSBwYXRoIGlzOiA8ZmlsZW5hbWU+QzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcZXh0NC52aGR4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3B0aW1pemUgeW91ciBWSERYIGZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgV2luZG93cyBQb3dlcnNoZWxsIGFzIEFkbWluaXN0cmF0b3IgdG8gb3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIFZIRFggZmlsZSwgc2h1dHRpbmcgZG93biBXU0wgZmlyc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IHdzbCAtLXNodXRkb3duCisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gb3B0aW1pemUtdmhkIC1QYXRoIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXGV4dDQudmhkeCAtTW9kZSBmdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcHJvZ3Jlc3MgYmFyIHNob3VsZCBiZSBzaG93biB3aGlsZSBvcHRpbWl6aW5nIHRoZSBWSERYIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0b3JhZ2Ugc2hvdWxkIG5vdyBiZSByZWZsZWN0ZWQgY29ycmVjdGx5IG9uIHRoZSBXaW5kb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwbG9yZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFdTTHYyIGRvZXMgbm90IGhhdmUgb3V0LW9mLXRoZS1ib3gKKyAgICAgICAgICAgICAgYWNjZXNzIHRvIGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyB0aG9zZSBjb25uZWN0ZWQgdGhyb3VnaCBhCisgICAgICAgICAgICAgIFVTQiBwb3J0LCBidXQgaXQgYXV0b21hdGljYWxseSBtb3VudHMgeW91ciA8ZmlsZW5hbWU+Qzo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICBkcml2ZSBvbiA8ZmlsZW5hbWU+L21udC9jLzwvZmlsZW5hbWU+IChhbmQgb3RoZXJzKSwgd2hpY2gKKyAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdG8gc2hhcmUgZGVwbG95IGFydGlmYWN0cyB0byBiZSBsYXRlciBmbGFzaGVkIG9uCisgICAgICAgICAgICAgIGhhcmR3YXJlIHRocm91Z2ggV2luZG93cywgYnV0IHlvdXIgYnVpbGQgZGlyZWN0b3J5IHNob3VsZCBub3QKKyAgICAgICAgICAgICAgcmVzaWRlIGluc2lkZSB0aGlzIG1vdW50cG9pbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIFdTTHYyIHNldCB1cCwgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSB0bworICAgICAgICAgICAgZGV2ZWxvcCBqdXN0IGFzIGlmIHlvdSB3ZXJlIHJ1bm5pbmcgb24gYSBuYXRpdmUgTGludXggbWFjaGluZS4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgVG9hc3RlciBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKIDxzZWN0aW9uIGlkPSdsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+CiAgICAgPHRpdGxlPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUgYW5kIGFjY2VzcyB0aGUKLSAgICAgICAgc291cmNlIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBZb3UgZXN0YWJsaXNoIGFuZCB1c2UgdGhlc2UgbG9jYWwgZmlsZXMgdG8gd29yayBvbiBwcm9qZWN0cy4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHNob3dzIHlvdSBob3cgdG8gbG9jYXRlLCBmZXRjaCBhbmQgY29uZmlndXJlIHRoZSBzb3VyY2UKKyAgICAgICAgZmlsZXMgeW91J2xsIG5lZWQgdG8gd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xMDE5LDIwICsxMTYxLDE4IEBACiAgICAgICAgICAgIC4KICAgICAgICAgICAgLgogICAgICAgICAgICAuCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcHlybwotICAgICAgIHJlbW90ZXMvb3JpZ2luL3B5cm8tbmV4dAotICAgICAgIHJlbW90ZXMvb3JpZ2luL3JvY2tvCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcm9ja28tbmV4dAotICAgICAgIHJlbW90ZXMvb3JpZ2luL3N1bW8KLSAgICAgICByZW1vdGVzL29yaWdpbi9zdW1vLW5leHQKICAgICAgICByZW1vdGVzL29yaWdpbi90aHVkCiAgICAgICAgcmVtb3Rlcy9vcmlnaW4vdGh1ZC1uZXh0CiAgICAgICAgcmVtb3Rlcy9vcmlnaW4vd2FycmlvcgorICAgICAgIHJlbW90ZXMvb3JpZ2luL3dhcnJpb3ItbmV4dAorICAgICAgIHJlbW90ZXMvb3JpZ2luL3pldXMKKyAgICAgICByZW1vdGVzL29yaWdpbi96ZXVzLW5leHQKKyAgICAgICAuLi4gYW5kIHNvIG9uIC4uLgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ2hlY2tvdXQgdGhlIGRldmVsb3BtZW50IGJyYW5jaCBpbiB3aGljaCB5b3Ugd2FudCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hlY2sgb3V0IHRoZSBkZXZlbG9wbWVudCBicmFuY2ggaW4gd2hpY2ggeW91IHdhbnQgdG8gd29yay4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGFjY2VzcyB0aGUgZmlsZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgICAgICZESVNUUk87IFJlbGVhc2UgKCZESVNUUk9fTkFNRTspLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMTE4LDcgKzEyNTgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIG91dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPX1JFTF9UQUc7IC1iIG15X3lvY3RvXyZESVNUUk87CiAgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbXlfeW9jdG9fJkRJU1RSTzsnCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMDRmYTFlNC4uNmY4NjQ1NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMjIsMTggKzIyLDE3IEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIAogICAgICAgICA8cmV2aGlzdG9yeT4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjYgT2N0b2JlciAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgpAQCAtNTcsMTEgKzU2LDYgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTQ8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CkBAIC0xMTgsOSArMTEyLDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTE0NCw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTYxLDE4ICsxNjAsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKaW5kZXggMmVhNWQzZi4uYzFjMmQ2ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbApAQCAtODksOCArODksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBhcmUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IEZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvICJxZW11eDg2Iiwgd2hpY2ggaXMgZmluZSBpZiB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIFFFTVUgZW11bGF0b3IgaW4gMzItYml0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYtNjQiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiA2NC1iaXQgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4KQEAgLTEwNCwxMCArMTA0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSB3ZSB3aXNoIHRvIGJ1aWxkIGZvciBxZW11eDg2IHNvCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBtdXN0IHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gInFlbXV4ODYiIGFuZCBhbHNvIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIi4gQXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyB0aGlzIGJ5IGFwcGVuZGluZyB0byA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkUgPSAicWVtdXg4NiIKICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zMTQsOCArMzE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvICJxZW11eDg2Iiwgd2hpY2ggaXMgZmluZSBpZiB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIFFFTVUgZW11bGF0b3IgaW4gMzItYml0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYtNjQiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiA2NC1iaXQgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQKQEAgLTMyOSwxMCArMzMxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSB3ZSB3aXNoIHRvIGJ1aWxkIGZvciBxZW11eDg2IHNvCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBtdXN0IHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gInFlbXV4ODYiIGFuZCBhbHNvIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIi4gQXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyB0aGlzIGJ5IGFwcGVuZGluZyB0byA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkUgPSAicWVtdXg4NiIKICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC02NTUsMjYgKzY1OSwyMiBAQAogICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgogICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgogICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgotICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjJkMWQwMTAyNDA4NDZkN2JmZjE1ZDFmY2MwY2I2ZWI4YTIyZmM3OGEiCiAKIAogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgotICAgICBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi43IgogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi43IgogICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xMi4xMCIKICAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTIuMTAiCi0gICAgIExJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTIuMTAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoaXMgYXBwZW5kIGZpbGUgY29udGFpbnMgc3RhdGVtZW50cyB1c2VkIHRvIHN1cHBvcnQKICAgICAgICAgICAgICAgICBzZXZlcmFsIEJTUHMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCkBAIC05NDgsMTIgKzk0OCwxNCBAQAogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgS0JVSUxEX0RFRkNPTkZJR188cmVwbGFjZWFibGU+S01BQ0hJTkU8L3JlcGxhY2VhYmxlPiA/PSA8cmVwbGFjZWFibGU+ZGVmY29uZmlnX2ZpbGU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhcHBlbmRzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aAotICAgICAgICAgICAgICAgICJjb21tb24tcGMiIGFuZCBwcm92aWRlcyB0aGUgcGF0aCB0byB0aGUgImluLXRyZWUiCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYXNzaWducyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JVSUxEX0RFRkNPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgInJhc3BiZXJyeXBpMiIgYW5kIHByb3ZpZGVzIHRoZSBwYXRoIHRvIHRoZSAiaW4tdHJlZSIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHRvIGJlIHVzZWQgZm9yIGEgUmFzcGJlcnJ5IFBpIDIsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gdGhlIEJyb2FkY29tIDI3MDgvMjcwOSBjaGlwc2V0OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JVSUxEX0RFRkNPTkZJR19jb21tb24tcGMgPz0gIi9ob21lL3Njb3R0cmlmL2NvbmZpZ2ZpbGVzL215X2RlZmNvbmZpZ19maWxlIgorICAgICBLQlVJTERfREVGQ09ORklHX3Jhc3BiZXJyeXBpMiA/PSAiYmNtMjcwOV9kZWZjb25maWciCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbAppbmRleCA2ZDY3NWE2Li42MmM2ODUyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKQEAgLTU0Myw3ICs1NDMsNiBAQAogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMva2dkYi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTMyL2hhcmR3YXJlLmNmZwotICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2ZzbC1tcGM4MzE1ZS1yZGIvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11YXJtYTkvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhNjQvaGFyZHdhcmUuY2ZnCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNGM1ODgxYi4uOTk4ZmU0MQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzQsNyArMzMsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS40PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNTwvcmV2bnVtYmVyPgpAQCAtNDIsMTEgKzQxLDYgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTQ8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CkBAIC0xMDMsOSArOTcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTI3LDcgKzEyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNDQsMTggKzE0MywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2Q5YTNkYS4uZTczMGY3MgotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKQEAgLTMzLDExICszMywxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTQ1LDcgKzQ0LDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjA8L3Jldm51bWJlcj4KQEAgLTg5LDkgKzg4LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTEzLDcgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xMzAsMTggKzEzNCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbAppbmRleCAyZjFiZDE2Li4zNmViZjhhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIGFzIGl0cyBvcGVyYXRpbmcgc3lzdGVtIGFzIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KICAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIE1hYyBvciBXaW5kb3dzLWJhc2VkIHN5c3RlbSwgeW91IGNhbiBzZXQgaXQgdXAKICAgICAgICAgYXMgdGhlIGRldmVsb3BtZW50IGhvc3QgYnkgdXNpbmcKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCiAgICAgICAgIE9uY2UgeW91IHRha2UgdGhlIHN0ZXBzIHRvIHNldCB1cCBhIENST1BTIG1hY2hpbmUsIHlvdSBlZmZlY3RpdmVseQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCmluZGV4IGRiZjYyY2MuLjFiNjBhMzAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKQEAgLTIyNSw5ICsyMjUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgaGVscHMgeW91IHRyYW5zaXRpb24gZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5aW5nIG91dCB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2luZyBpdCBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvd2hhdC1pLXdpc2gtaWQta25vd24vJz5XaGF0IEkgd2lzaCBJJ2QgS25vd248L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50Lyc+VHJhbnNpdGlvbmluZyB0byBhIEN1c3RvbSBFbnZpcm9ubWVudCBmb3IgU3lzdGVtcyBEZXZlbG9wbWVudDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvdHJhbnNpdGlvbmluZy10by1hLWN1c3RvbS1lbnZpcm9ubWVudC8nPlRyYW5zaXRpb25pbmcgdG8gYSBDdXN0b20gRW52aXJvbm1lbnQgZm9yIFN5c3RlbXMgRGV2ZWxvcG1lbnQ8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50cyBvbiB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTQzNyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtY3JvcHMtb3ZlcnZpZXcnPgogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST1BTOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvJz5DUk9QUzwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBvcGVuIHNvdXJjZSwgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGxldmVyYWdlcwogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCkBAIC04ODMsNyArODgzLDcgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DUk9zcyBQbGF0Zm9ybVMgKENST1BTKTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyLyc+Q1JPUFM8L3VsaW5rPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHRoYXQgaXMgbm90IHJ1bm5pbmcgTGludXggKGUuZy4KQEAgLTkwOCw2ICs5MDgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPldpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCAoV1NMdjIpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCB2MiB0byBzZXQgdXAgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMdjEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICB3aXRoIFdTTHYyLCBpZiB5b3Ugc3RpbGwgZGVjaWRlIHRvIHVzZSBXU0wgcGxlYXNlIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgICB0byBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IGFsbG93cyBXaW5kb3dzIDEwIHRvIHJ1biBhIHJlYWwKKyAgICAgICAgICAgICAgICAgICAgTGludXgga2VybmVsIGluc2lkZSBvZiBhIGxpZ2h0d2VpZ2h0IHV0aWxpdHkgdmlydHVhbAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIChWTSkgdXNpbmcgdmlydHVhbGl6YXRpb24gdGVjaG5vbG9neS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgQnVpbGQgSG9zdCB3aXRoCisgICAgICAgICAgICAgICAgICAgIFdTTHYyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS13c2wnPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3Rlcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHdoYXQgeW91ciBCdWlsZCBIb3N0IGlzIHJ1bm5pbmcsIHlvdSBjYW4KICAgICAgICAgICAgICAgICAgICAgdXNlIFRvYXN0ZXIgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGM3NzE2ZTQuLjIxMGQ2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzksNyArMzgsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNzwvcmV2bnVtYmVyPgpAQCAtNDgsOSArNDcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtNzQsNyArNzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtOTEsMTggKzk1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50IGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggN2FmNDdkZi4uYTU0NzkzOQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50CkBAIC0xLDE5ICsxLDIxIEBACi08IUVOVElUWSBESVNUUk8gIjMuMCI+Ci08IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMzAiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJ6ZXVzIj4KLTwhRU5USVRZIERJU1RST19OQU1FICJaZXVzIj4KLTwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgIndhcnJpb3IiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTUlOVVNfT05FICJXYXJyaW9yIj4KLTwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIzLjAiPgotPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIyLjciPgotPCFFTlRJVFkgRElTVFJPX1JFTF9UQUcgInlvY3RvLTMuMCI+Ci08IUVOVElUWSBNRVRBSU5URUxWRVJTSU9OICI5LjAiPgotPCFFTlRJVFkgUkVMX01PTlRIX1lFQVIgIk9jdG9iZXIgMjAxOSI+Cis8IUVOVElUWSBESVNUUk8gIjMuMSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMzEiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJkdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJEdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgInpldXMiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTUlOVVNfT05FICJaZXVzIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIzLjEiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIzLjAuMiI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMy4xIj4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjEyLjAiPgorPCFFTlRJVFkgUkVMX01PTlRIX1lFQVIgIkFwcmlsIDIwMjAiPgogPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTiAiMjIuMC4wIj4KLTwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjIyMDAiPgorPCFFTlRJVFkgUE9LWVZFUlNJT04gIjIzLjAuMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIyMzAwIj4KIDwhRU5USVRZIFlPQ1RPX1BPS1kgInBva3ktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOyI+Ci08IUVOVElUWSBDT1BZUklHSFRfWUVBUiAiMjAxMC0yMDE5Ij4KKzwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMjAiPgorPCFFTlRJVFkgT1JHTkFNRSAiVGhlIFlvY3RvIFByb2plY3QiPgorPCFFTlRJVFkgT1JHRU1BSUwgImRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZyI+CiA8IUVOVElUWSBZT0NUT19ETF9VUkwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyI+CiA8IUVOVElUWSBZT0NUT19IT01FX1VSTCAiaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0xJU1RTX1VSTCAiaHR0cDovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmciPgpAQCAtNTgsMjIgKzYwLDMwIEBACiA8IUVOVElUWSBPRV9JTklUX1BBVEggIiZZT0NUT19QT0tZOy9vZS1pbml0LWJ1aWxkLWVudiI+CiA8IUVOVElUWSBPRV9JTklUX0ZJTEUgIm9lLWluaXQtYnVpbGQtZW52Ij4KIDwhRU5USVRZIFVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayB3Z2V0IGdpdC1jb3JlIGRpZmZzdGF0IHVuemlwIHRleGluZm8gZ2NjLW11bHRpbGliIFwKLSAgICAgYnVpbGQtZXNzZW50aWFsIGNocnBhdGggc29jYXQgY3BpbyBweXRob24gcHl0aG9uMyBweXRob24zLXBpcCBweXRob24zLXBleHBlY3QgXAorICAgICBidWlsZC1lc3NlbnRpYWwgY2hycGF0aCBzb2NhdCBjcGlvIHB5dGhvbjMgcHl0aG9uMy1waXAgcHl0aG9uMy1wZXhwZWN0IFwKICAgICAgeHotdXRpbHMgZGViaWFudXRpbHMgaXB1dGlscy1waW5nIHB5dGhvbjMtZ2l0IHB5dGhvbjMtamluamEyIGxpYmVnbDEtbWVzYSBsaWJzZGwxLjItZGV2IFwKICAgICAgcHlsaW50MyB4dGVybSI+CiA8IUVOVElUWSBGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbjMgdW56aXAgcGVybCBwYXRjaCBcCiAgICAgIGRpZmZ1dGlscyBkaWZmc3RhdCBnaXQgY3BwIGdjYyBnY2MtYysrIGdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBcCiAgICAgIGNjYWNoZSBwZXJsLURhdGEtRHVtcGVyIHBlcmwtVGV4dC1QYXJzZVdvcmRzIHBlcmwtVGhyZWFkLVF1ZXVlIHBlcmwtYmlnbnVtIHNvY2F0IFwKICAgICAgcHl0aG9uMy1wZXhwZWN0IGZpbmR1dGlscyB3aGljaCBmaWxlIGNwaW8gcHl0aG9uIHB5dGhvbjMtcGlwIHh6IHB5dGhvbjMtR2l0UHl0aG9uIFwKLSAgICAgcHl0aG9uMy1qaW5qYTIgU0RMLWRldmVsIHh0ZXJtIj4KKyAgICAgcHl0aG9uMy1qaW5qYTIgU0RMLWRldmVsIHh0ZXJtIHJwY2dlbiI+CiA8IUVOVElUWSBPUEVOU1VTRV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAicHl0aG9uIGdjYyBnY2MtYysrIGdpdCBjaHJwYXRoIG1ha2Ugd2dldCBweXRob24teG1sIFwKICAgICAgZGlmZnN0YXQgbWFrZWluZm8gcHl0aG9uLWN1cnNlcyBwYXRjaCBzb2NhdCBweXRob24zIHB5dGhvbjMtY3Vyc2VzIHRhciBweXRob24zLXBpcCBcCi0gICAgIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBweXRob24zLUppbmphMiBNZXNhLWxpYkVHTDEKLSAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gbGliU0RMLWRldmVsIHh0ZXJtIj4KLTwhRU5USVRZIENFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiLXkgZXBlbC1yZWxlYXNlCisgICAgIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBweXRob24zLUppbmphMiBNZXNhLWxpYkVHTDEgbGliU0RMLWRldmVsIHh0ZXJtIHJwY2dlbgorICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiI+Cis8IUVOVElUWSBDRU5UT1M3X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICIteSBlcGVsLXJlbGVhc2UKICAgICAgJCBzdWRvIHl1bSBtYWtlY2FjaGUKLSAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbiB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbjMgdW56aXAgcGVybCBwYXRjaCBcCiAgICAgIGRpZmZ1dGlscyBkaWZmc3RhdCBnaXQgY3BwIGdjYyBnY2MtYysrIGdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBzb2NhdCBcCi0gICAgIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMzQtcGlwIHh6IFwKKyAgICAgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zNi1waXAgeHogXAogICAgICB3aGljaCBTREwtZGV2ZWwgeHRlcm0KICAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gamluamEyIj4KKzwhRU5USVRZIENFTlRPUzhfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgIi15IGVwZWwtcmVsZWFzZQorICAgICAkIHN1ZG8gZG5mIGNvbmZpZy1tYW5hZ2VyIC0tc2V0LWVuYWJsZWQgUG93ZXJUb29scworICAgICAkIHN1ZG8gZG5mIG1ha2VjYWNoZQorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIGNjYWNoZSBcCisgICAgIHNvY2F0IHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMy1waXAgXAorICAgICBweXRob24zLUdpdFB5dGhvbiBweXRob24zLWppbmphMiBweXRob24zLXBleHBlY3QgeHogd2hpY2ggU0RMLWRldmVsIHh0ZXJtIFwKKyAgICAgcnBjZ2VuIj4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sCmluZGV4IDU5OTliMjkuLjlhNDI3M2EgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbApAQCAtMjE4Miw3ICsyMTgyLDcgQEAKICAgICAgICAgICAgICAgbWV0YS10b29sY2hhaW4KICAgICAgICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAogCi0gICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4NicKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JwogCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBPbmNlIHlvdSd2ZSBkb25lIHRoYXQsIHlvdSBjYW4gY2QgdG8gd2hhdGV2ZXIgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGMxZjQ2MWYuLmZhMWZhOGEKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CkBAIC00MiwxMSArNDEsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEwMyw5ICs5NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMjksNyArMTI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE0NiwxOCArMTQ1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKaW5kZXggNDlmZjg2Mi4uZDk0Y2IzMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbApAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICAgICAgPHBhcmEgaWQ9J2ZhcS1ub3QtbWVldGluZy1yZXF1aXJlbWVudHMnPgogICAgICAgICAgICAgICAgIE15IGRldmVsb3BtZW50IHN5c3RlbSBkb2VzIG5vdCBtZWV0IHRoZQogICAgICAgICAgICAgICAgIHJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIHZlcnNpb25zLgotICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIEkgZG8gbm90IGhhdmUgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgSSBkbyBub3QgaGF2ZSBQeXRob24gMy41LjAgb3IgZ3JlYXRlci4KICAgICAgICAgICAgICAgICBDYW4gSSBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3Q/CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvcXVlc3Rpb24+CkBAIC00Myw3ICs0Myw3IEBACiAgICAgICAgICAgICAgICAgc3lzdGVtIGEgY291cGxlIGRpZmZlcmVudCB3YXlzIChpLmUuIGJ1aWxkaW5nIGEgdGFyYmFsbCBvcgogICAgICAgICAgICAgICAgIGRvd25sb2FkaW5nIGEgdGFyYmFsbCkuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBzdGVwcyBvbiBob3cgdG8gdXBkYXRlIHlvdXIgYnVpbGQgdG9vbHMuCiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvYW5zd2VyPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKaW5kZXggOGQ1MGFiOS4uOTQyMmI1YSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCkBAIC02ODAsNyArNjgwLDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgcmVxdWlyZW1lbnQsIHNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTE3NTQsNyArMTc1NCw3IEBACiAgICAgICAgICAgICBHaXQgdGhhdCBtZWV0cyB0aGlzIHJlcXVpcmVtZW50LCB5b3UgY2FuIHVzZSB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5idWlsZHRvb2xzLXRhcmJhbGw8L2ZpbGVuYW1lPiB0aGF0IGRvZXMuCiAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0yMTEwLDcgKzIxMTAsNyBAQAogICAgICAgICAgICAgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBpbmhlcml0IGJsdWV0b290aAotICAgICBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9CisgICAgIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICcke0JMVUVafScsICcnLCBkKX0iCiAgICAgIFBBQ0tBR0VDT05GSUdbYmx1ZXo0XSA9ICItLWVuYWJsZS1ibHVldG9vdGgsLS1kaXNhYmxlLWJsdWV0b290aCxibHVlejQiCiAgICAgIFBBQ0tBR0VDT05GSUdbYmx1ZXo1XSA9ICItLWVuYWJsZS1ibHVlejUsLS1kaXNhYmxlLWJsdWV6NSxibHVlejUiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CkBAIC0zMjE1LDcgKzMyMTUsNyBAQAogICAgICAgICAgICAgICAgICAgICByZWNlbnQgdmVyc2lvbiwgeW91IGNhbiBpbnN0YWxsIHRoZSBidWlsZHRvb2xzLCB3aGljaAogICAgICAgICAgICAgICAgICAgICB3aWxsIHByb3ZpZGUgaXQuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGR0b29scyB0YXJiYWxsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zNjI0LDcgKzM2MjQsNyBAQAogICAgICAgICAgICAgaW1hZ2UgdHlwZXMsIHRoaXMgcGFydCBvZiB0aGUga2VybmVsIGltYWdlIGJhc2UgbmFtZSBhcyBiZWVuCiAgICAgICAgICAgICByZW1vdmVkIGxlYXZpbmcgb25seSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9CisgICAgIEtFUk5FTF9JTUFHRV9CQVNFX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBJZiB5b3UgaGF2ZSByZWNpcGVzIG9yIGNsYXNzZXMgdGhhdCB1c2UKICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfSU1BR0VfQkFTRV9OQU1FPC9maWxlbmFtZT4gZGlyZWN0bHksIHlvdSBtaWdodApAQCAtNTYwMSw3ICs1NjAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gdGltZSwgdXNlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIG9yIGNhbGwKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0LWludGVyY2VwdHMgZGVmZXJfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIEFueSBmYWlsdXJlIG9mIGEgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgc2NyaXB0IChpbmNsdWRpbmcgPGZpbGVuYW1lPmV4aXQgMTwvZmlsZW5hbWU+KQpAQCAtNjE5Miw3ICs2MTkyLDcgQEAKICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGV4cGxpY2l0bHkgZGVmZXIgYSBwb3N0aW5zdGFsbCB0byBmaXJzdCBib290IG9uCiAgICAgICAgICAgICB0aGUgdGFyZ2V0IHJhdGhlciB0aGFuIGF0IHJvb3RmcyBjcmVhdGlvbiB0aW1lLCB1c2UKICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+IG9yIGNhbGwKLSAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPiBmcm9tCisgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPiBmcm9tCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgIEFueSBmYWlsdXJlIG9mIGEgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4gc2NyaXB0CiAgICAgICAgICAgICAoaW5jbHVkaW5nIGV4aXQgMSkgdHJpZ2dlcnMgYW4gZXJyb3IgZHVyaW5nIHRoZQpAQCAtNzA5NSw2ICs3MDk1LDIwNyBAQAogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTMuMS1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1taW5pbXVtLXN5c3RlbS1yZXF1aXJlbWVudHMnPgorICAgICAgICA8dGl0bGU+TWluaW11bSBzeXN0ZW0gcmVxdWlyZW1lbnRzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgLyByZXF1aXJlbWVudHMgb2YgYnVpbGQgaG9zdCBjb21wb25lbnRzIGhhdmUgYmVlbiB1cGRhdGVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Z2NjIDUuMDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5weXRob24gMy41PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnRhciAxLjI4PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5ycGNnZW48L2ZpbGVuYW1lPiBpcyBub3cgcmVxdWlyZWQgb24gdGhlIGhvc3QgKHBhcnQgb2YgdGhlIDxmaWxlbmFtZT5saWJjLWRldi1iaW48L2ZpbGVuYW1lPiBwYWNrYWdlIG9uIFVidW50dSwgRGViaWFuIGFuZCByZWxhdGVkIGRpc3RyaWJ1dGlvbnMsIGFuZCB0aGUgPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4gcGFja2FnZSBvbiBSUE0tYmFzZWQgZGlzdHJpYnV0aW9ucykuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGUgPGZpbGVuYW1lPm1ha2VpbmZvPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5wb2QybWFuPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRvb2xzIGFyZSA8ZW1waGFzaXM+bm8gbG9uZ2VyPC9lbXBoYXNpcz4gcmVxdWlyZWQgb24gdGhlIGhvc3QuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1tcGM4MzE1ZS1yZGItcmVtb3ZlZCc+CisgICAgICAgIDx0aXRsZT5tcGM4MzE1ZS1yZGIgbWFjaGluZSByZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBNUEM4MzE1RS1SREIgbWFjaGluZSBpcyBvbGQvb2Jzb2xldGUgYW5kIHVub2J0YWluYWJsZSwgdGh1cyBnaXZlbiB0aGUgbWFpbnRlbmFuY2UgYnVyZGVuCisgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPm1wYzgzMTVlLXJkYjwvZmlsZW5hbWU+IG1hY2hpbmUgY29uZmlndXJhdGlvbiB0aGF0IHN1cHBvcnRlZCBpdCBoYXMgYmVlbiByZW1vdmVkCisgICAgICAgICAgICBpbiB0aGlzIHJlbGVhc2UuIFRoZSByZW1vdmFsIGRvZXMgbGVhdmUgYSBnYXAgaW4gb2ZmaWNpYWwgUG93ZXJQQyByZWZlcmVuY2UgaGFyZHdhcmUKKyAgICAgICAgICAgIHN1cHBvcnQ7IHRoaXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUgaWYgYSBzdWl0YWJsZSBtYWNoaW5lIHdpdGggYWNjb21wYW55aW5nIHN1cHBvcnQgcmVzb3VyY2VzCisgICAgICAgICAgICBpcyBmb3VuZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1weXRob24tMi1yZW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPlB5dGhvbiAyIHJlbW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRHVlIHRvIHRoZSBleHBpcmF0aW9uIG9mIHVwc3RyZWFtIHN1cHBvcnQgaW4gSmFudWFyeSAyMDIwLCBzdXBwb3J0IGZvciBQeXRob24gMiBoYXMgbm93IGJlZW4gcmVtb3ZlZDsgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIFB5dGhvbiAzIGluc3RlYWQuIElmIGFic29sdXRlbHkgbmVlZGVkIHRoZXJlIGlzIGEgbWV0YS1weXRob24yIGNvbW11bml0eSBsYXllciBjb250YWluaW5nIFB5dGhvbiAyLCByZWxhdGVkIGNsYXNzZXMgYW5kIHZhcmlvdXMgUHl0aG9uIDItYmFzZWQgbW9kdWxlcywgaG93ZXZlciBpdCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3VwcG9ydGVkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcmVwcm9kdWNpYmxlLWJ1aWxkcyc+CisgICAgICAgIDx0aXRsZT5SZXByb2R1Y2libGUgYnVpbGRzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gb3JkZXIgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZGlmZmVyZW5jZXMgaW4gb3V0cHV0IGZpbGVzIChhaWRpbmcgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eSksIHRoZSBQb2t5IGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uICg8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+RElTVFJPPC9saW5rPiA9ICJwb2t5IjwvZmlsZW5hbWU+KSBub3cgaW5oZXJpdHMgdGhlIDxmaWxlbmFtZT5yZXByb2R1Y2libGVfYnVpbGQ8L2ZpbGVuYW1lPiBjbGFzcyBieSBkZWZhdWx0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXB0ZXN0LWZlYXR1cmUtaW1wYWN0Jz4KKyAgICAgICAgPHRpdGxlPkltcGFjdCBvZiBwdGVzdCBmZWF0dXJlIGlzIG5vdyBtb3JlIHNpZ25pZmljYW50PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBQb2t5IGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uICg8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+RElTVFJPPC9saW5rPiA9ICJwb2t5IjwvZmlsZW5hbWU+KSBlbmFibGVzIHB0ZXN0cyBieSBkZWZhdWx0IHRvIGVuYWJsZSBydW50aW1lIHRlc3Rpbmcgb2YgdmFyaW91cyBjb21wb25lbnRzLiBJbiB0aGlzIHJlbGVhc2UsIGEgZGVwZW5kZW5jeSBuZWVkZWQgdG8gYmUgYWRkZWQgdGhhdCBoYXMgcmVzdWx0ZWQgaW4gYSBzaWduaWZpY2FudCBpbmNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgdGhhdCB3aWxsIGJlIGJ1aWx0IGp1c3Qgd2hlbiBidWlsZGluZyBhIHNpbXBsZSBpbWFnZSBzdWNoIGFzIGNvcmUtaW1hZ2UtbWluaW1hbC4gSWYgeW91IGRvIG5vdCBuZWVkIHJ1bnRpbWUgdGVzdHMgZW5hYmxlZCBmb3IgY29yZSBjb21wb25lbnRzLCB0aGVuIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlbW92ZSAicHRlc3QiIGZyb20gPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPiB0byBzYXZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGJ1aWxkIHRpbWUgZS5nLiBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyBpbiB5b3VyIGNvbmZpZ3VyYXRpb246CisKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgIERJU1RST19GRUFUVVJFU19yZW1vdmUgPSAicHRlc3QiCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1yZW1vdmVkLXJlY2lwZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCByZWNpcGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKworICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNoa2NvbmZpZzwvZmlsZW5hbWU+OiBvYnNvbGV0ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y29uc29sZS10b29sczwvZmlsZW5hbWU+OiBvYnNvbGV0ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZW5jaGFudDwvZmlsZW5hbWU+OiByZXBsYWNlZCBieSA8ZmlsZW5hbWU+ZW5jaGFudDI8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Zm9vbWF0aWMtZmlsdGVyczwvZmlsZW5hbWU+OiBvYnNvbGV0ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliaWRuPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYm1vZHVsZW1kPC9maWxlbmFtZT46IHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5saWJtb2R1bGVtZC12MTwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saW51eC15b2N0bzwvZmlsZW5hbWU+OiBkcm9wIDQuMTksIDUuMiB2ZXJzaW9uIHJlY2lwZXMgKDUuNCBub3cgcHJvdmlkZWQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5uc3ByPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5zczwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob248L2ZpbGVuYW1lPjogUHl0aG9uIDIgcmVtb3ZlZCAoUHl0aG9uIDMgcHJlZmVycmVkKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uLXNldHVwdG9vbHM8L2ZpbGVuYW1lPjogUHl0aG9uIDIgdmVyc2lvbiByZW1vdmVkIChweXRob24zLXNldHVwdG9vbHMgcHJlZmVycmVkKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c3lzcHJvZjwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT50ZXhpMmh0bWw8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnUtYm9vdC1mdy11dGlsczwvZmlsZW5hbWU+OiBmdW5jdGlvbmFsbHkgcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmxpYnVib290ZW52PC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtZmVhdHVyZXMtY2hlY2snPgorICAgICAgICA8dGl0bGU+ZmVhdHVyZXNfY2hlY2sgY2xhc3MgcmVwbGFjZXMgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZGlzdHJvX2ZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT4gY2xhc3MgaGFzIGhhZCBpdHMgZnVuY3Rpb25hbGl0eSBleHBhbmRlZCwgbm93IHN1cHBvcnRpbmcgPGZpbGVuYW1lPkFOWV9PRl9NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5SRVFVSVJFRF9NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5DT05GTElDVF9NQUNISU5FX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5BTllfT0ZfQ09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPlJFUVVJUkVEX0NPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5DT05GTElDVF9DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+LiBBcyBhIHJlc3VsdCB0aGUgY2xhc3MgaGFzIG5vdyBiZWVuIHJlbmFtZWQgdG8gPGZpbGVuYW1lPmZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT47IHRoZSA8ZmlsZW5hbWU+ZGlzdHJvX2ZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT4gY2xhc3Mgc3RpbGwgZXhpc3RzIGJ1dCBnZW5lcmF0ZXMgYSB3YXJuaW5nIGFuZCByZWRpcmVjdHMgdG8gdGhlIG5ldyBjbGFzcy4gSW4gcHJlcGFyYXRpb24gZm9yIGEgZnV0dXJlIHJlbW92YWwgb2YgdGhlIG9sZCBjbGFzcyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1cGRhdGUgcmVjaXBlcyBjdXJyZW50bHkgaW5oZXJpdGluZyA8ZmlsZW5hbWU+ZGlzdHJvX2ZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT4gdG8gaW5oZXJpdCA8ZmlsZW5hbWU+ZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiBpbnN0ZWFkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcmVtb3ZlZC1jbGFzc2VzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgY2xhc3NlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNsYXNzZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5kaXN0dXRpbHMtYmFzZTwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYmMtY29tbW9uPC9maWxlbmFtZT46IG1lcmdlZCBpbnRvIHRoZSBnbGliYyByZWNpcGUgYXMgbm90aGluZyBlbHNlIHVzZWQgaXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob24tZGlyPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9ubmF0aXZlPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+c2V0dXB0b29sczwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnRpbmRlcmNsaWVudDwvZmlsZW5hbWU+OiBkcm9wcGVkIGFzIGl0IHdhcyBvYnNvbGV0ZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtc3JjLXVyaS1jaGVja3N1bXMnPgorICAgICAgICA8dGl0bGU+U1JDX1VSSSBjaGVja3N1bSBiZWhhdmlvdXI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJldmlvdXNseSwgcmVjaXBlcyBieSB0cmFkaXRpb24gaW5jbHVkZWQgYm90aCBTSEEyNTYgYW5kIE1ENSBjaGVja3N1bXMgZm9yIHJlbW90ZWx5IGZldGNoZWQgZmlsZXMgaW4gPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+LCBldmVuIHRob3VnaCBvbmx5IG9uZSBpcyBhY3R1YWxseSBtYW5kYXRlZC4gSG93ZXZlciwgdGhlIE1ENSBjaGVja3N1bSBkb2VzIG5vdCBhZGQgbXVjaCBnaXZlbiBpdHMgaW5oZXJlbnQgd2Vha25lc3M7IHRodXMgd2hlbiBhIGNoZWNrc3VtIGZhaWxzIG9ubHkgdGhlIFNIQTI1NiBzdW0gd2lsbCBub3cgYmUgcHJpbnRlZC4gVGhlIG1kNXN1bSB3aWxsIHN0aWxsIGJlIHZlcmlmaWVkIGlmIGl0IGlzIHNwZWNpZmllZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbnBtJz4KKyAgICAgICAgPHRpdGxlPm5wbSBmZXRjaGVyIGNoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIG5wbSBmZXRjaGVyIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmV3b3JrZWQgaW4gdGhpcyByZWxlYXNlLiBUaGUgbnBtIGZldGNoZXIgbm93IG9ubHkgZmV0Y2hlcyB0aGUgcGFja2FnZSBzb3VyY2UgaXRzZWxmIGFuZCBubyBsb25nZXIgdGhlIGRlcGVuZGVuY2llczsgdGhlcmUgaXMgbm93IGFsc28gYW4gbnBtc3cgZmV0Y2hlciB3aGljaCBleHBsaWNpdGx5IGZldGNoZXMgdGhlIHNocmlua3dyYXAgZmlsZSBhbmQgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyByZW1vdmVzIHRoZSBzbGlnaHRseSBhd2t3YXJkIDxmaWxlbmFtZT5OUE1fTE9DS0RPV048L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPk5QTV9TSFJJTktXUkFQPC9maWxlbmFtZT4gdmFyaWFibGVzIHdoaWNoIHBvaW50ZWQgdG8gbG9jYWwgZmlsZXM7IHRoZSBsb2NrZG93biBmaWxlIGlzIG5vIGxvbmdlciBuZWVkZWQgYXQgYWxsLiBBZGRpdGlvbmFsbHksIHRoZSBwYWNrYWdlIG5hbWUgaW4gPGZpbGVuYW1lPm5wbTovLzwvZmlsZW5hbWU+IGVudHJpZXMgaW4gPGxpbmsgbGlua2VuZD0ndmFyLVNSQ19VUkknPjxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT48L2xpbms+IGlzIG5vdyBzcGVjaWZpZWQgdXNpbmcgYSA8ZmlsZW5hbWU+cGFja2FnZTwvZmlsZW5hbWU+IHBhcmFtZXRlciBpbnN0ZWFkIG9mIHRoZSBlYXJsaWVyIDxmaWxlbmFtZT5uYW1lPC9maWxlbmFtZT4gd2hpY2ggb3ZlcmxhcHBlZCB3aXRoIHRoZSBnZW5lcmljIDxmaWxlbmFtZT5uYW1lPC9maWxlbmFtZT4gcGFyYW1ldGVyLiBBbGwgcmVjaXBlcyB1c2luZyB0aGUgbnBtIGZldGNoZXIgd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgYXMgYSByZXN1bHQuIAorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQW4gZXhhbXBsZSBvZiB0aGUgbmV3IHNjaGVtZToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KK1NSQ19VUkkgPSAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xIFwKKyAgICAgICAgICAgbnBtc3c6Ly8ke1RISVNESVJ9L25wbS1zaHJpbmt3cmFwLmpzb24iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICBBbm90aGVyIGV4YW1wbGUgd2hlcmUgdGhlIHNvdXJjZXMgYXJlIGZldGNoZWQgZnJvbSBnaXQgcmF0aGVyIHRoYW4gYW4gbnBtIHJlcG9zaXRvcnk6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZm9vL2Jhci5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vbnBtLXNocmlua3dyYXAuanNvbiIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGRldnRvb2wgYW5kIHJlY2lwZXRvb2wgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0byBtYXRjaCB3aXRoIHRoZSBucG0gZmV0Y2hlciBjaGFuZ2VzLiBPdGhlciB0aGFuIHByb2R1Y2luZyB3b3JraW5nIGFuZCBtb3JlIGNvbXBsZXRlIHJlY2lwZXMgZm9yIG5wbSBzb3VyY2VzLCB0aGVyZSBpcyBhbHNvIGEgbWlub3IgY2hhbmdlIHRvIHRoZSBjb21tYW5kIGxpbmUgZm9yIGRldnRvb2w6IHRoZSA8ZmlsZW5hbWU+LS1mZXRjaC1kZXY8L2ZpbGVuYW1lPiBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byA8ZmlsZW5hbWU+LS1ucG0tZGV2PC9maWxlbmFtZT4gYXMgaXQgaXMgbnBtLXNwZWNpZmljLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXBhY2thZ2luZy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlBhY2thZ2luZyBjaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5pbnRsdG9vbDwvZmlsZW5hbWU+IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtc2RrPC9maWxlbmFtZT4gYXMgaXQgaXMgcmFyZWx5IG5lZWRlZCB0byBidWlsZCBtb2Rlcm4gc29mdHdhcmUgLSBnZXR0ZXh0IGNhbiBkbyBtb3N0IG9mIHRoZSB0aGluZ3MgaXQgdXNlZCB0byBiZSBuZWVkZWQgZm9yLiA8ZmlsZW5hbWU+aW50bHRvb2w8L2ZpbGVuYW1lPiBoYXMgYWxzbyBiZWVuIHJlbW92ZWQgZnJvbSA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtc2VsZi1ob3N0ZWQ8L2ZpbGVuYW1lPiBhcyBpdCBpcyBub3QgbmVlZGVkIHRvIGZvciBzdGFuZGFyZCBidWlsZHMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmdpdDogPGZpbGVuYW1lPmdpdC1hbTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Z2l0LWRpZmZ0b29sPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5naXQtc3VibW9kdWxlPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+Z2l0LXJlcXVlc3QtcHVsbDwvZmlsZW5hbWU+IGFyZSBubyBsb25nZXIgcGVybC1iYXNlZCwgc28gYXJlIG5vdyBpbnN0YWxsZWQgd2l0aCB0aGUgbWFpbiA8ZmlsZW5hbWU+Z2l0PC9maWxlbmFtZT4gcGFja2FnZSBpbnN0ZWFkIG9mIHdpdGhpbiA8ZmlsZW5hbWU+Z2l0LXBlcmx0b29sczwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4gYmluYXJ5IGJ1aWx0IGFzIHBhcnQgb2YgZ2xpYmMgaGFzIG5vdyBiZWVuIG1vdmVkIHRvIGl0cyBvd24gPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4gcGFja2FnZSAobm90ZSBubyA8ZmlsZW5hbWU+Z2xpYmMtPC9maWxlbmFtZT4gcHJlZml4KS4gVGhpcyBwYWNrYWdlIGlzIGluIHRoZSA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPiBvZiB0aGUgbWFpbiA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBwYWNrYWdlIGlmIDxmaWxlbmFtZT5sZGNvbmZpZzwvZmlsZW5hbWU+IGlzIHByZXNlbnQgaW4gPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19GRUFUVVJFUyc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFUzwvZmlsZW5hbWU+PC9saW5rPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYmV2ZW50PC9maWxlbmFtZT4gbm93IHNwbGl0cyBlYWNoIHNoYXJlZCBsaWJyYXJ5IGludG8gaXRzIG93biBwYWNrYWdlIChhcyBEZWJpYW4gZG9lcykuIFNpbmNlIHRoZXNlIGFyZSBzaGFyZWQgbGlicmFyaWVzIGFuZCB3aWxsIGJlIHB1bGxlZCBpbiB0aHJvdWdoIHRoZSBub3JtYWwgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZywgdGhlcmUgc2hvdWxkIGJlIG5vIGltcGFjdCB0byBleGlzdGluZyBjb25maWd1cmF0aW9ucyBvdGhlciB0aGFuIGxlc3MgdW5uZWNlc3NhcnkgbGlicmFyaWVzIGJlaW5nIGluc3RhbGxlZCBpbiBzb21lIGNhc2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5saW51eC1maXJtd2FyZSBub3cgaGFzIGEgbmV3IHBhY2thZ2UgZm9yIDxmaWxlbmFtZT5iY200MzY2YzwvZmlsZW5hbWU+IGFuZCBpbmNsdWRlcyBhdmFpbGFibGUgTlZSQU0gY29uZmlnIGZpbGVzIGludG8gdGhlIDxmaWxlbmFtZT5iY200MzM0MDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmNtNDMzNjI8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJjbTQzNDMwPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5iY200MzU2LXBjaWU8L2ZpbGVuYW1lPiBwYWNrYWdlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmhhcmZidXp6PC9maWxlbmFtZT4gbm93IHNwbGl0cyB0aGUgbmV3IDxmaWxlbmFtZT5saWJoYXJmYnV6ei1zdWJzZXQuc288L2ZpbGVuYW1lPiBsaWJyYXJ5IGludG8gaXRzIG93biBwYWNrYWdlIHRvIHJlZHVjZSB0aGUgbWFpbiBwYWNrYWdlIHNpemUgaW4gY2FzZXMgd2hlcmUgPGZpbGVuYW1lPmxpYmhhcmZidXp6LXN1YnNldC5zbzwvZmlsZW5hbWU+IGlzIG5vdCBuZWVkZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1wYWNrYWdlLXFhLXdhcm5pbmdzJz4KKyAgICAgICAgPHRpdGxlPkFkZGl0aW9uYWwgd2FybmluZ3M8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2FybmluZ3Mgd2lsbCBub3cgYmUgc2hvd24gYXQgPGZpbGVuYW1lPmRvX3BhY2thZ2VfcWE8L2ZpbGVuYW1lPiB0aW1lIGluIHRoZSBmb2xsb3dpbmcgY2lyY3Vtc3RhbmNlczoKKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWNpcGUgaW5zdGFsbHMgPGZpbGVuYW1lPi5kZXNrdG9wPC9maWxlbmFtZT4gZmlsZXMgY29udGFpbmluZyA8ZmlsZW5hbWU+TWltZVR5cGU8L2ZpbGVuYW1lPiBrZXlzIGJ1dCBkb2VzIG5vdCBpbmhlcml0IHRoZSBuZXcgPGZpbGVuYW1lPm1pbWUteGRnPC9maWxlbmFtZT4gY2xhc3M8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWNpcGUgaW5zdGFsbHMgPGZpbGVuYW1lPi54bWw8L2ZpbGVuYW1lPiBmaWxlcyBpbnRvIDxmaWxlbmFtZT4ke2RhdGFkaXJ9L21pbWUvcGFja2FnZXM8L2ZpbGVuYW1lPiBidXQgZG9lcyBub3QgaW5oZXJpdCB0aGUgPGZpbGVuYW1lPm1pbWU8L2ZpbGVuYW1lPiBjbGFzczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXg4Ni1saXZlLXdpYyc+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gaW1hZ2UgdHlwZSBub3cgdXNlZCBpbnN0ZWFkIG9mIDxmaWxlbmFtZT5saXZlPC9maWxlbmFtZT4gYnkgZGVmYXVsdCBmb3IgeDg2PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmM8L2ZpbGVuYW1lPiAoaW5oZXJpdGVkIGJ5IG1vc3QgeDg2IG1hY2hpbmUgY29uZmlndXJhdGlvbnMpIG5vdyBzcGVjaWZpZXMgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGluc3RlYWQgb2YgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPiBieSBkZWZhdWx0IGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPi4gVGhlIDxmaWxlbmFtZT5saXZlPC9maWxlbmFtZT4gaW1hZ2UgdHlwZSB3aWxsIGxpa2VseSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2Ugc28gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBpbnN0ZWFkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgICAgICAgICAgICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW1pc2MnPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBjaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSB1bmRvY3VtZW50ZWQgPGZpbGVuYW1lPlNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTPC9maWxlbmFtZT4gdmFyaWFibGUgaGFzIG5vdyBiZWVuIHJlbW92ZWQgaW4gZmF2b3VyIG9mIGEgbmV3IDxmaWxlbmFtZT5BVkFJTEFCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aGljaCBpcyBkeW5hbWljYWxseSBzZXQgYmFzZWQgdXBvbiBsaWNlbnNlIGZpbGVzIGZvdW5kIGluIDxmaWxlbmFtZT4ke0NPTU1PTl9MSUNFTlNFX0RJUn08L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPiR7TElDRU5TRV9QQVRIfTwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgdHVuZSBkZWZpbml0aW9uIGZvciBiaWctZW5kaWFuIG1pY3JvYmxhemUgbWFjaGluZXMgaXMgbm93IDxmaWxlbmFtZT5taWNyb2JsYXplPC9maWxlbmFtZT4gaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bWljcm9ibGF6ZWViPC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiBubyBsb25nZXIgaGFzIGJ1aWx0LWluIHN5c2NhbGxzLiA8ZmlsZW5hbWU+bGliZ2xvc3M8L2ZpbGVuYW1lPiBzaG91bGQgdGhlbiBwcm92aWRlIHRoZSBzeXNjYWxscywgPGZpbGVuYW1lPmNydDAubzwvZmlsZW5hbWU+IGFuZCBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgbm8gbG9uZ2VyIHBhcnQgb2YgPGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IGl0c2VsZi4gSWYgeW91IGFyZSB1c2luZyA8ZmlsZW5hbWU+VENMSUJDID0gIm5ld2xpYiI8L2ZpbGVuYW1lPiB0aGlzIG5vdyBtZWFucyB0aGF0IHlvdSBtdXN0IGxpbmsgYXBwbGljYXRpb25zIHdpdGggYm90aCA8ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5saWJnbG9zczwvZmlsZW5hbWU+LCB3aGVyZWFzIGJlZm9yZSA8ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gd291bGQgcnVuIGluIG1hbnkgY29uZmlndXJhdGlvbnMgYnkgaXRzZWxmLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKzwvc2VjdGlvbj4KKworCiA8L2NoYXB0ZXI+CiA8IS0tCiB2aW06IGV4cGFuZHRhYiB0dz04MCB0cz00CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbAppbmRleCA0NGJhNjdjLi4yOTRiMjk3IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKQEAgLTIxMCw2ICsyMTAsMTIgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnVzYmhvc3Q6PC9lbXBoYXNpcz4gSW5jbHVkZSBVU0IgSG9zdAogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0IChhbGxvd3MgdG8gY29ubmVjdCBleHRlcm5hbCBrZXlib2FyZCwgbW91c2UsCiAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UsIG5ldHdvcmsgZXRjKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPnVzcm1lcmdlOjwvZW1waGFzaXM+IE1lcmdlcyB0aGUgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vYmluPC9maWxlbmFtZT4sIDxmaWxlbmFtZT4vc2JpbjwvZmlsZW5hbWU+LCAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9saWI8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT4vbGliNjQ8L2ZpbGVuYW1lPiAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgaW50byB0aGVpciByZXNwZWN0aXZlIGNvdW50ZXJwYXJ0cyBpbiB0aGUgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyPC9maWxlbmFtZT4gZGlyZWN0b3J5IHRvIHByb3ZpZGUgYmV0dGVyIHBhY2thZ2UgCisgICAgICAgICAgICAgICAgICAgYW5kIGFwcGxpY2F0aW9uIGNvbXBhdGliaWxpdHkuPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz53YXlsYW5kOjwvZW1waGFzaXM+IEluY2x1ZGUgdGhlCiAgICAgICAgICAgICAgICAgICAgIFdheWxhbmQgZGlzcGxheSBzZXJ2ZXIgcHJvdG9jb2wgYW5kIHRoZSBsaWJyYXJ5IHRoYXQKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgaXQuPC9wYXJhPjwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYjQ0MmY3MC4uOWE5MTRmMQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KIAogICAgICAgICA8L2F1dGhvcmdyb3VwPgpAQCAtMzQsMjIgKzMzLDE3IEBACiAgICAgICAgIDxyZXZoaXN0b3J5PgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+NC4wK2dpdDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjI0IE5vdmVtYmVyIDIwMTA8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDAuOSBSZWxlYXNlPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxMDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2U8L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IEFwcmlsIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yMyBNYXkgMjAxMTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IE9jdG9iZXIgMjAxMTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KQEAgLTczLDExICs2Nyw2IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE0PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgpAQCAtMTM0LDkgKzEyMywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xNTgsNyArMTUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE3NSwxOCArMTY5LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbAppbmRleCA4ZTBjOWY1Li4yN2YxN2RkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbApAQCAtOCwxMSArOCwxMSBAQAogCiA8cGFyYT4KICAgICBUaGUgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4KLSAgICBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXBvbmVudHMuCi0gICAgVW5kZXJzdGFuZGluZyB0aGVtIGFuZCBrbm93aW5nIHdoZXJlIHRoZXkgYXJlIGxvY2F0ZWQgaXMga2V5IHRvIHVzaW5nIHRoZQotICAgIFlvY3RvIFByb2plY3Qgd2VsbC4KKyAgICBjb25zaXN0cyBvZiBudW1lcm91cyBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzOworICAgIHVuZGVyc3RhbmRpbmcgdGhlaXIgbG9jYXRpb25zIGFuZCBjb250ZW50cyBpcyBrZXkgdG8gdXNpbmcgdGhlCisgICAgWW9jdG8gUHJvamVjdCBlZmZlY3RpdmVseS4KICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBTb3VyY2UgRGlyZWN0b3J5IGFuZCBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dAotICAgIHRoZSB2YXJpb3VzIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KKyAgICB0aG9zZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCiA8L3BhcmE+CiAKIDxwYXJhPgpAQCAtMjIsMTIgKzIyLDEyIEBACiAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiA8L3BhcmE+CiAKLTxub3RlPgotICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMgdGhhdAotICAgIGNvbnRhaW4gc3BhY2VzLgotICAgIEJlIHN1cmUgdGhhdCB0aGUgU291cmNlIERpcmVjdG9yeSB5b3UgdXNlIGRvZXMgbm90IGNvbnRhaW4gdGhlc2UgdHlwZXMKLSAgICBvZiBuYW1lcy4KLTwvbm90ZT4KKyAgICA8bm90ZT4KKyAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0aGF0CisgICAgICAgIGNvbnRhaW4gc3BhY2VzLgorICAgICAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluIHRoZXNlIHR5cGVzCisgICAgICAgIG9mIG5hbWVzLgorICAgIDwvbm90ZT4KIAogPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1jb3JlJz4KICAgICA8dGl0bGU+VG9wLUxldmVsIENvcmUgQ29tcG9uZW50czwvdGl0bGU+CkBAIC00OCwxOCArNDgsMTggQEAKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J21ldGFkYXRhJz5NZXRhZGF0YTwvbGluaz4KICAgICAgICAgICAgIGludGVycHJldGVyLCByZWFkcyB0aGUgWW9jdG8gUHJvamVjdCBNZXRhZGF0YSBhbmQgcnVucyB0aGUgdGFza3MKICAgICAgICAgICAgIGRlZmluZWQgYnkgdGhhdCBkYXRhLgotICAgICAgICAgICAgRmFpbHVyZXMgYXJlIHVzdWFsbHkgZnJvbSB0aGUgTWV0YWRhdGEgYW5kIG5vdCBmcm9tIEJpdEJha2UgaXRzZWxmLgotICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBtb3N0IHVzZXJzIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IEJpdEJha2UuCisgICAgICAgICAgICBGYWlsdXJlcyBhcmUgdXN1YWxseSBjYXVzZWQgYnkgZXJyb3JzIGluIHlvdXIgTWV0YWRhdGEgYW5kIG5vdCBmcm9tIEJpdEJha2UgaXRzZWxmOworICAgICAgICAgICAgY29uc2VxdWVudGx5LCBtb3N0IHVzZXJzIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IEJpdEJha2UuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdoZW4geW91IHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kLCB0aGUKLSAgICAgICAgICAgIG1haW4gQml0QmFrZSBleGVjdXRhYmxlLCB3aGljaCByZXNpZGVzIGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSwgc3RhcnRzLgorICAgICAgICAgICAgbWFpbiBCaXRCYWtlIGV4ZWN1dGFibGUgKHdoaWNoIHJlc2lkZXMgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3J5KSBzdGFydHMuCiAgICAgICAgICAgICBTb3VyY2luZyB0aGUgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IChpLmUuCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikKLSAgICAgICAgICAgIHBsYWNlcyB0aGUgPGZpbGVuYW1lPnNjcmlwdHM8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2JpbjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIChpbiB0aGF0IG9yZGVyKSBpbnRvCisgICAgICAgICAgICBwbGFjZXMgdGhlIDxmaWxlbmFtZT5zY3JpcHRzLzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluLzwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzIChpbiB0aGF0IG9yZGVyKSBpbnRvCiAgICAgICAgICAgICB0aGUgc2hlbGwncyA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgICAgIGJ5IHByb3ZpZGluZyBhIGRpcmVjdG9yeSBuYW1lIHdoZW4geW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgdGhlIHNldHVwIHNjcmlwdC4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBzZXBhcmF0aW5nIG91dHB1dCBmcm9tIHlvdXIgbG9jYWwKLSAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgZmlsZXMsIHNlZSB0aGUKKyAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkgZmlsZXMgKGNvbW1vbmx5IGRlc2NyaWJlZCBhcyBhbiAib3V0IG9mIHRyZWUiIGJ1aWxkKSwgc2VlIHRoZQogICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgpAQCAtMTA0LDggKzEwNCw4IEBACiAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBob2xkcyB0aGUgc291cmNlIGZvciB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICBhcyB3ZWxsIGFzIHRlbXBsYXRlcyBhbmQgdG9vbHMgdGhhdCBhbGxvdyB5b3UgdG8gZ2VuZXJhdGUgUERGIGFuZCBIVE1MCiAgICAgICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgbWFudWFscy4KLSAgICAgICAgICAgIEVhY2ggbWFudWFsIGlzIGNvbnRhaW5lZCBpbiBhIHN1Yi1mb2xkZXIuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZpbGVzIGZvciB0aGlzIG1hbnVhbCByZXNpZGUgaW4KKyAgICAgICAgICAgIEVhY2ggbWFudWFsIGlzIGNvbnRhaW5lZCBpbiBpdHMgb3duIHN1Yi1mb2xkZXI7CisgICAgICAgICAgICBmb3IgZXhhbXBsZSwgdGhlIGZpbGVzIGZvciB0aGlzIHJlZmVyZW5jZSBtYW51YWwgcmVzaWRlIGluCiAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPnJlZi1tYW51YWwvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTE0LDkgKzExNCw5IEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgbWV0YWRhdGEuCisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgbWluaW1hbCwgdW5kZXJseWluZyBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YS4KICAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgaG9sZHMgcmVjaXBlcywgY29tbW9uIGNsYXNzZXMsIGFuZCBtYWNoaW5lCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBlbXVsYXRlZCB0YXJnZXRzICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3Igc3RyaWN0bHkgZW11bGF0ZWQgdGFyZ2V0cyAoPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11YXJtPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aC4pCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xMjUsOCArMTI1LDggQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhLXBva3kvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBQb2t5Ci0gICAgICAgICAgICByZWZlcmVuY2UgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgRGVzaWduZWQgYWJvdmUgdGhlIDxmaWxlbmFtZT5tZXRhLzwvZmlsZW5hbWU+IGNvbnRlbnQsIHRoaXMgZGlyZWN0b3J5CisgICAgICAgICAgICBhZGRzIGp1c3QgZW5vdWdoIG1ldGFkYXRhIHRvIGRlZmluZSB0aGUgUG9reSByZWZlcmVuY2UgZGlzdHJpYnV0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCkBAIC0xNDgsOSArMTQ4LDYgQEAKICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGFkZHMgYWRkaXRpb25hbCByZWNpcGVzIGFuZCBhcHBlbmQgZmlsZXMKICAgICAgICAgICAgIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBzZWxmdGVzdHMgdG8gdmVyaWZ5IHRoZSBiZWhhdmlvcgogICAgICAgICAgICAgb2YgdGhlIGJ1aWxkIHN5c3RlbS4KLSAgICAgICAgPC9wYXJhPgotCi0gICAgICAgIDxwYXJhPgogICAgICAgICAgICAgWW91IGRvIG5vdCBoYXZlIHRvIGFkZCB0aGlzIGxheWVyIHRvIHlvdXIKICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSB1bmxlc3MgeW91IHdhbnQgdG8gcnVuIHRoZQogICAgICAgICAgICAgc2VsZnRlc3RzLgpAQCAtMTcyLDcgKzE2OSw3IEBACiAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB2YXJpb3VzIGludGVncmF0aW9uIHNjcmlwdHMgdGhhdCBpbXBsZW1lbnQKICAgICAgICAgICAgIGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIFlvY3RvIFByb2plY3QgZW52aXJvbm1lbnQgKGUuZy4gUUVNVSBzY3JpcHRzKS4KICAgICAgICAgICAgIFRoZSA8bGluayBsaW5rZW5kPSJzdHJ1Y3R1cmUtY29yZS1zY3JpcHQiPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgc2NyaXB0IGFwcGVuZHMgdGhpcyBkaXJlY3RvcnkgdG8gdGhlIHNoZWxsJ3MKKyAgICAgICAgICAgIHNjcmlwdCBwcmVwZW5kcyB0aGlzIGRpcmVjdG9yeSB0byB0aGUgc2hlbGwncwogICAgICAgICAgICAgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KICAgICAgICAgPC9wYXJhPgogCkBAIC0yMDIsNyArMTk5LDggQEAKICAgICAgICAgICAgIHVwLCBhCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KICAgICAgICAgICAgIGlzIGNyZWF0ZWQsIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgYmVjb21lcyB0aGUgQnVpbGQgRGlyZWN0b3J5LAotICAgICAgICAgICAgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggYSBsaXN0IG9mIGNvbW1vbiBCaXRCYWtlIHRhcmdldHMuCisgICAgICAgICAgICBhbmQgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBzb21lIHNpbXBsZSBzdWdnZXN0aW9ucyBhcyB0byB3aGF0IHRvIGRvCisgICAgICAgICAgICBuZXh0LCBpbmNsdWRpbmcgYSBsaXN0IG9mIHNvbWUgcG9zc2libGUgdGFyZ2V0cyB0byBidWlsZC4KICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKQEAgLTIxNywxNCArMjE1LDE0IEBACiAgICAgICAgICBtZXRhLXRvb2xjaGFpbgogICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAogCi0gICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4NicKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgVGhlIHNjcmlwdCBnZXRzIGl0cyBkZWZhdWx0IGxpc3Qgb2YgY29tbW9uIHRhcmdldHMgZnJvbSB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQorICAgICAgICAgICAgVGhlIGRlZmF1bHQgb3V0cHV0IG9mIHRoZSA8ZmlsZW5hbWU+b2UtaW5pdC1idWlsZC1lbnY8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgIGlzIGZyb20gdGhlIDxmaWxlbmFtZT5jb25mLW5vdGVzLnR4dDwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzIGZvdW5kIGluIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reTwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aXRoaW4gdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICAgICAgICAgIFNob3VsZCB5b3UgaGF2ZSBjdXN0b20gZGlzdHJpYnV0aW9ucywgaXQgaXMgdmVyeSBlYXN5IHRvIG1vZGlmeQotICAgICAgICAgICAgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdG8gaW5jbHVkZSB5b3VyIHRhcmdldHMgZm9yIHlvdXIKKyAgICAgICAgICAgIElmIHlvdSBkZXNpZ24gYSBjdXN0b20gZGlzdHJpYnV0aW9uLCB5b3UgY2FuIGluY2x1ZGUgeW91ciBvd24gdmVyc2lvbgorICAgICAgICAgICAgb2YgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdG8gbWVudGlvbiB0aGUgdGFyZ2V0cyBkZWZpbmVkIGJ5IHlvdXIKICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKQEAgLTIzNCwyMCArMjMyLDIwIEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBCeSBkZWZhdWx0LCBydW5uaW5nIHRoaXMgc2NyaXB0IHdpdGhvdXQgYSBCdWlsZCBEaXJlY3RvcnkKLSAgICAgICAgICAgIGFyZ3VtZW50IGNyZWF0ZXMgdGhlIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+IGRpcmVjdG9yeQorICAgICAgICAgICAgYXJndW1lbnQgY3JlYXRlcyB0aGUgPGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+IGRpcmVjdG9yeQogICAgICAgICAgICAgaW4geW91ciBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogICAgICAgICAgICAgSWYgeW91IHByb3ZpZGUgYSBCdWlsZCBEaXJlY3RvcnkgYXJndW1lbnQgd2hlbiB5b3UKICAgICAgICAgICAgIDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUgc2NyaXB0LCB5b3UgZGlyZWN0IHRoZSBPcGVuRW1iZWRkZWQKICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBCdWlsZCBEaXJlY3Rvcnkgb2YgeW91ciBjaG9pY2UuCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNyZWF0ZXMgYSBCdWlsZCBEaXJlY3RvcnkgbmFtZWQKLSAgICAgICAgICAgIDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5teWJ1aWxkcy88L2ZpbGVuYW1lPiB0aGF0IGlzIG91dHNpZGUgb2YgdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzb3VyY2UgJk9FX0lOSVRfRklMRTsgfi9teWJ1aWxkcwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgdGVtcGxhdGUgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgZmlsZXMsIHdoaWNoIGFyZSBmb3VuZCBieSBkZWZhdWx0IGluIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKICAgICAgICAgICAgIFNvdXJjZSBEaXJlY3RvcnkuCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCkBAIC0yODAsMjggKzI3OCwyNiBAQAogICAgIDxwYXJhPgogICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoZQogICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4KLSAgICAgICAgd2hlbiB5b3UgcnVuIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHRzIChpLmUuCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KKyAgICAgICAgd2hlbiB5b3UgcnVuIHRoZSBidWlsZCBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQKKyAgICAgICAgPGxpbmsKK2xpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICBJZiB5b3UgZG8gbm90IGdpdmUgdGhlIEJ1aWxkIERpcmVjdG9yeSBhIHNwZWNpZmljIG5hbWUgd2hlbiB5b3UgcnVuCi0gICAgICAgIGEgc2V0dXAgc2NyaXB0LCB0aGUgbmFtZSBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgdGhlIHNldHVwIHNjcmlwdCwgdGhlIG5hbWUgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPmJ1aWxkLzwvZmlsZW5hbWU+LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZQotICAgICAgICBwb2ludHMgdG8gdGhlIEJ1aWxkIERpcmVjdG9yeS4KKyAgICAgICAgRm9yIHN1YnNlcXVlbnQgcGFyc2luZyBhbmQgcHJvY2Vzc2luZywgdGhlIG5hbWUgb2YgdGhlIEJ1aWxkCisgICAgICAgIGRpcmVjdG9yeSBpcyBhdmFpbGFibGUgdmlhIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE9QRElSJz48ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlLgogICAgIDwvcGFyYT4KIAogICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtYnVpbGRoaXN0b3J5Jz4KLSAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPjwvdGl0bGU+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvYnVpbGRoaXN0b3J5LzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhpcyBkaXJlY3Rvcnkgd2hlbiB5b3UKLSAgICAgICAgICAgIGVuYWJsZSB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlLgotICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSB0cmFja3MgYnVpbGQgaW5mb3JtYXRpb24gaW50byBpbWFnZSwgcGFja2FnZXMsIGFuZAorICAgICAgICAgICAgZW5hYmxlIGJ1aWxkIGhpc3RvcnkgdmlhIHRoZSA8ZmlsZW5hbWU+YnVpbGRoaXN0b3J5PC9maWxlbmFtZT4gY2xhc3MgZmlsZS4KKyAgICAgICAgICAgIFRoZSBkaXJlY3Rvcnkgb3JnYW5pemVzIGJ1aWxkIGluZm9ybWF0aW9uIGludG8gaW1hZ2UsIHBhY2thZ2VzLCBhbmQKICAgICAgICAgICAgIFNESyBzdWJkaXJlY3Rvcmllcy4KICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgYnVpbGQgaGlzdG9yeSBmZWF0dXJlLCBzZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbWFpbnRhaW5pbmctYnVpbGQtb3V0cHV0LXF1YWxpdHknPk1haW50YWluaW5nIEJ1aWxkIE91dHB1dCBRdWFsaXR5PC91bGluaz4iCkBAIC0zMjAsMTQgKzMxNiwxNCBAQAogICAgICAgICAgICAgQW55IHZhcmlhYmxlIHNldCBoZXJlIG92ZXJyaWRlcyBhbnkgdmFyaWFibGUgc2V0IGVsc2V3aGVyZSB3aXRoaW4KICAgICAgICAgICAgIHRoZSBlbnZpcm9ubWVudCB1bmxlc3MgdGhhdCB2YXJpYWJsZSBpcyBoYXJkLWNvZGVkIHdpdGhpbiBhIGZpbGUKICAgICAgICAgICAgIChlLmcuIGJ5IHVzaW5nICc9JyBpbnN0ZWFkIG9mICc/PScpLgotICAgICAgICAgICAgU29tZSB2YXJpYWJsZXMgYXJlIGhhcmQtY29kZWQgZm9yIHZhcmlvdXMgcmVhc29ucyBidXQgdGhlc2UKKyAgICAgICAgICAgIFNvbWUgdmFyaWFibGVzIGFyZSBoYXJkLWNvZGVkIGZvciB2YXJpb3VzIHJlYXNvbnMgYnV0IHN1Y2gKICAgICAgICAgICAgIHZhcmlhYmxlcyBhcmUgcmVsYXRpdmVseSByYXJlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBFZGl0IHRoaXMgZmlsZSB0byBzZXQgdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L2xpbms+PC9maWxlbmFtZT4KLSAgICAgICAgICAgIGZvciB3aGljaCB5b3Ugd2FudCB0byBidWlsZCwgd2hpY2ggcGFja2FnZSB0eXBlcyB5b3Ugd2lzaCB0byB1c2UKKyAgICAgICAgICAgIEF0IGEgbWluaW11bSwgeW91IHdvdWxkIG5vcm1hbGx5IGVkaXQgdGhpcyBmaWxlIHRvIHNlbGVjdCB0aGUgdGFyZ2V0CisgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPk1BQ0hJTkU8L2xpbms+PC9maWxlbmFtZT4sCisgICAgICAgICAgICB3aGljaCBwYWNrYWdlIHR5cGVzIHlvdSB3aXNoIHRvIHVzZQogICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1QQUNLQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5QQUNLQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPjwvbGluaz4pLAogICAgICAgICAgICAgYW5kIHRoZSBsb2NhdGlvbiBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGFjY2VzcyBkb3dubG9hZGVkIGZpbGVzCiAgICAgICAgICAgICAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ETF9ESVInPkRMX0RJUjwvbGluaz48L2ZpbGVuYW1lPikuCkBAIC0zMzgsMTYgKzMzNCwxNiBAQAogICAgICAgICAgICAgc3RhcnQgdGhlIGJ1aWxkLCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIGl0IGZyb20KICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IHdoZW4KICAgICAgICAgICAgIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlIHRvcC1sZXZlbCBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCi0gICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCisgICAgICAgICAgICBzZXR1cCBzY3JpcHQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgc291cmNlIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgdXNlZAogICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgPGZpbGVuYW1lPiRURU1QTEFURUNPTkY8L2ZpbGVuYW1lPiBzY3JpcHQgdmFyaWFibGUsCi0gICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+CiAgICAgICAgICAgICB3aGVuIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAotICAgICAgICAgICAgZW52aXJvbm1lbnQgYW5kIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmY8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICBlbnZpcm9ubWVudCwgYW5kIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmYvPC9maWxlbmFtZT4gd2hlbgogICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBlbnZpcm9ubWVudC4KICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHNjcmlwdCB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSBvZiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUsIHRoaXMgaW1wbGllcyB0aGF0CkBAIC0zOTUsMTEgKzM5MSwxMiBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGUgc291cmNlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgdXNlZAorICAgICAgICAgICAgQXMgd2l0aCB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLAorICAgICAgICAgICAgdGhlIHNvdXJjZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIHVzZWQKICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlIDxmaWxlbmFtZT4kVEVNUExBVEVDT05GPC9maWxlbmFtZT4gc2NyaXB0IHZhcmlhYmxlLAotICAgICAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPgogICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIGVudmlyb25tZW50IGFuZCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS9jb25mPC9maWxlbmFtZT4gd2hlbgorICAgICAgICAgICAgZW52aXJvbm1lbnQsIGFuZCB0byA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IHdoZW4KICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlLCB0aGlzIGltcGxpZXMgdGhhdApAQCAtNDE4LDEzICs0MTUsMTMgQEAKICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgdGhlIFlvY3RvIFByb2plY3QgdmVyc2lvbiBvZiB0aGUKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC1jb25mLXNhbml0eV9pbmZvJz4KLSAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9jb25mL3Nhbml0eV9pbmZvPC9maWxlbmFtZT48L3RpdGxlPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL2NhY2hlL3Nhbml0eV9pbmZvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhpcyBmaWxlIGluZGljYXRlcyB0aGUgc3RhdGUgb2YgdGhlIHNhbml0eSBjaGVja3MgYW5kIGlzIGNyZWF0ZWQKQEAgLTU3Miw4ICs1NjksMTEgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC90bXAvZGVwbG95L2ltYWdlcy88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSByZWNlaXZlcyBjb21wbGV0ZSBmaWxlc3lzdGVtIGltYWdlcy4KLSAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZsYXNoIHRoZSByZXN1bHRpbmcgaW1hZ2UgZnJvbSBhIGJ1aWxkIG9udG8gYSBkZXZpY2UsIGxvb2sgaGVyZSBmb3IgdGhlIGltYWdlLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgcG9wdWxhdGVkIHdpdGggdGhlIGJhc2ljIG91dHB1dCBvYmplY3RzIG9mIHRoZQorICAgICAgICAgICAgYnVpbGQgKHRoaW5rIG9mIHRoZW0gYXMgdGhlICJnZW5lcmF0ZWQgYXJ0aWZhY3RzIiBvZiB0aGUgYnVpbGQgcHJvY2VzcyksCisgICAgICAgICAgICBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgdGhlIGJvb3QgbG9hZGVyIGltYWdlLCBrZXJuZWwsIHJvb3QgZmlsZXN5c3RlbSBhbmQgbW9yZS4KKyAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIGZsYXNoIHRoZSByZXN1bHRpbmcgaW1hZ2UgZnJvbSBhIGJ1aWxkIG9udG8gYSBkZXZpY2UsCisgICAgICAgICAgICBsb29rIGhlcmUgZm9yIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cy4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgpAQCAtNjA0LDcgKzYwNCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoaXMgZGlyZWN0b3J5IHRvIGhvbGQKLSAgICAgICAgICAgIHRvb2xjaGFpbiBpbnN0YWxsZXIgc2NyaXB0cywgd2hpY2ggd2hlbiBleGVjdXRlZCwgaW5zdGFsbCB0aGUKKyAgICAgICAgICAgIHRvb2xjaGFpbiBpbnN0YWxsZXIgc2NyaXB0cyB3aGljaCwgd2hlbiBleGVjdXRlZCwgaW5zdGFsbCB0aGUKICAgICAgICAgICAgIHN5c3Jvb3QgdGhhdCBtYXRjaGVzIHlvdXIgdGFyZ2V0IGhhcmR3YXJlLgogICAgICAgICAgICAgWW91IGNhbiBmaW5kIG91dCBtb3JlIGFib3V0IHRoZXNlIGluc3RhbGxlcnMgaW4gdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWJ1aWxkaW5nLWFuLXNkay1pbnN0YWxsZXInPkJ1aWxkaW5nIGFuIFNESyBJbnN0YWxsZXI8L3VsaW5rPiIKQEAgLTEwMzgsNyArMTAzOCw3IEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWdyYXBoaWNzLzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIFggYW5kIG90aGVyIGdyYXBoaWNhbGx5IHJlbGF0ZWQgc3lzdGVtIGxpYnJhcmllcworICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgWCBhbmQgb3RoZXIgZ3JhcGhpY2FsbHkgcmVsYXRlZCBzeXN0ZW0gbGlicmFyaWVzLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKaW5kZXggOWMyMTk4YS4uN2QzYzcxOSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbApAQCAtOCwxMiArOCwxMiBAQAogICAgIDxwYXJhPgogICAgICAgICBXZWxjb21lIHRvIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwhCiAgICAgICAgIFRoaXMgbWFudWFsIHByb3ZpZGVzIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgcmVsZWFzZQotICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgVGhlIG1hbnVhbCBpcyBiZXN0IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZworICAgICAgICBvZiB0aGUgWW9jdG8gUHJvamVjdCwgYW5kCisgICAgICAgIGlzIG1vc3QgZWZmZWN0aXZlbHkgdXNlZCBhZnRlciB5b3UgaGF2ZSBhbiB1bmRlcnN0YW5kaW5nCiAgICAgICAgIG9mIHRoZSBiYXNpY3Mgb2YgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgIFRoZSBtYW51YWwgaXMgbmVpdGhlciBtZWFudCB0byBiZSByZWFkIGFzIGEgc3RhcnRpbmcgcG9pbnQgdG8gdGhlCi0gICAgICAgIFlvY3RvIFByb2plY3Qgbm9yIHJlYWQgZnJvbSBzdGFydCB0byBmaW5pc2guCi0gICAgICAgIFVzZSB0aGlzIG1hbnVhbCB0byBmaW5kIHZhcmlhYmxlIGRlZmluaXRpb25zLCBjbGFzcworICAgICAgICBZb2N0byBQcm9qZWN0LCBub3IgcmVhZCBmcm9tIHN0YXJ0IHRvIGZpbmlzaC4KKyAgICAgICAgUmF0aGVyLCB1c2UgdGhpcyBtYW51YWwgdG8gZmluZCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKICAgICAgICAgZGVzY3JpcHRpb25zLCBhbmQgc28gZm9ydGggYXMgbmVlZGVkIGR1cmluZyB0aGUgY291cnNlIG9mIHVzaW5nCiAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0LgogICAgIDwvcGFyYT4KQEAgLTY2LDEyICs2NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbmRvd3NfU3Vic3lzdGVtX2Zvcl9MaW51eCc+V2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIChXU0wpLgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgYQotICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0naGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIHJ1bm5pbmcgV1NMLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAsIGJ1dCB2YWxpZGF0aW9uIGlzIG5vdCBwZXJmb3JtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYnVpbGQgaG9zdHMgdXNpbmcgV1NMdjIuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBXU0x2MiwgaWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMsIHBsZWFzZSBnbyB0bwpAQCAtMTE3LDcgKzEyMCw3IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIGxpc3Qgb2YgcGFja2FnZXMgeW91IG5lZWQgb24gdGhlIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGNhbgogICAgICAgICAgICAgYmUgbGFyZ2Ugd2hlbiBjb3ZlcmluZyBhbGwgYnVpbGQgc2NlbmFyaW9zIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHJlcXVpcmVkIHBhY2thZ2VzIGFjY29yZGluZyB0bworICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyByZXF1aXJlZCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8KICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbiBhbmQgZnVuY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMTI3LDE5ICsxMzAsMjkgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KICAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBVYnVudHUgb3IgRGViaWFuIExpbnV4IGRpc3RyaWJ1dGlvbjoKLSAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3NzNC1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZCwgeW91Ci0gICAgICAgICAgICAgICAgICAgIG1pZ2h0IGV4cGVyaWVuY2UgUUVNVSBidWlsZCBmYWlsdXJlcyBkdWUgdG8gdGhlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oPC9maWxlbmFtZT4gb24KLSAgICAgICAgICAgICAgICAgICAgdGhlIERlYmlhbiBzeXN0ZW0uCi0gICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zIGV4aXN0OgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9zczQtZGV2PC9maWxlbmFtZT4gcGFja2FnZSBpbnN0YWxsZWQsIHlvdQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZ2h0IGV4cGVyaWVuY2UgUUVNVSBidWlsZCBmYWlsdXJlcyBkdWUgdG8gdGhlIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIGl0cyBvd24gY3VzdG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaDwvZmlsZW5hbWU+IG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERlYmlhbiBzeXN0ZW0uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uLCBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbHV0aW9ucyBleGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc3VkbyBhcHQtZ2V0IGJ1aWxkLWRlcCBxZW11CiAgICAgICQgc3VkbyBhcHQtZ2V0IHJlbW92ZSBvc3M0LWRldgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIERlYmlhbi04LCA8ZmlsZW5hbWU+cHl0aG9uMy1naXQ8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnB5bGludDM8L2ZpbGVuYW1lPiBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSB2aWEgPGZpbGVuYW1lPmFwdC1nZXQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBwaXAzIGluc3RhbGwgR2l0UHl0aG9uIHB5bGludD09MS45LjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KQEAgLTIwNSwxOCArMjE4LDE4IEBACiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KIAotICAgICAgICA8c2VjdGlvbiBpZD0nY2VudG9zLXBhY2thZ2VzJz4KLSAgICAgICAgICAgIDx0aXRsZT5DZW50T1MgUGFja2FnZXM8L3RpdGxlPgorICAgICAgICA8c2VjdGlvbiBpZD0nY2VudG9zLTctcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNlbnRPUy03IFBhY2thZ2VzPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgotICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIENlbnRPUyBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgQ2VudE9TLTcgTGludXggZGlzdHJpYnV0aW9uOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAkIHN1ZG8geXVtIGluc3RhbGwgJkNFTlRPUzdfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CkBAIC0yMjksMjkgKzI0Miw4MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWFrZWNhY2hlPC9maWxlbmFtZT4gY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc3VkbyB5dW0gaW5zdGFsbCBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKICAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bwotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtOC1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2VudE9TLTggUGFja2FnZXM8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgQ2VudE9TLTggTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIHRvIGJ1aWxkIGFuIGltYWdlIGZvciBhIGhlYWRsZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCAmQ0VOVE9TOF9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0cmEgUGFja2FnZXMgZm9yIEVudGVycHJpc2UgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGEgY29sbGVjdGlvbiBvZiBwYWNrYWdlcyBmcm9tIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHQgb24gUkhFTC9DZW50T1MgZm9yIGVhc3kgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBwYWNrYWdlcyBub3QgaW5jbHVkZWQgaW4gZW50ZXJwcmlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGludXggYnkgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRlbHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBvd2VyVG9vbHM8L2ZpbGVuYW1lPiByZXBvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcyBhZGRpdGlvbmFsIHBhY2thZ2VzIHN1Y2ggYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ycGNnZW48L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXhpbmZvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RG9jdW1lbnRhdGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgbmVlZGVkIGlmIHlvdSBhcmUgZ29pbmcgdG8gYnVpbGQgb3V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1hbnVhbHM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBkb2Nib29rLXN0eWxlLWRzc3NsIGRvY2Jvb2stc3R5bGUteHNsIFwKKyAgICAgZG9jYm9vay1kdGRzIGRvY2Jvb2stdXRpbHMgZm9wIGxpYnhzbHQgZGJsYXRleCB4bWx0bworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPgotICAgICAgICA8dGl0bGU+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz4KKyAgICAgICAgPHRpdGxlPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhlIGJ1aWxkIHN5c3RlbSwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbQpAQCAtMjU5LDggKzMyNCw4IEBACiAgICAgICAgICAgICBQeXRob246CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5HaXQgMS44LjMuMSBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnRhciAxLjI3IG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjggb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy41LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KIApAQCAtMjcyLDYgKzMzNyw4OSBAQAogICAgICAgICAgICAgdGFyYmFsbCBvciB1c2UgQml0QmFrZSB0byBidWlsZCB0aGUgdGFyYmFsbC4KICAgICAgICAgPC9wYXJhPgogCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSW4gYWRkaXRpb24sIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gbXVzdCBtZWV0IHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGdjYzoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmdjYyA1LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCB0aGlzIHJlcXVpcmVtZW50LAorICAgICAgICAgICAgeW91IGNhbiByZXNvbHZlIHRoaXMgYnkgaW5zdGFsbGluZyBhIDxmaWxlbmFtZT5idWlsZHRvb2xzLWV4dGVuZGVkPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHRhcmJhbGwgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHRvb2xzLCB0aGUgZXF1aXZhbGVudCBvZiA8ZmlsZW5hbWU+YnVpbGR0b29scy1lc3NlbnRpYWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8c2VjdGlvbiBpZD0naW5zdGFsbGluZy1hLXByZS1idWlsdC1idWlsZHRvb2xzLXRhcmJhbGwtd2l0aC1pbnN0YWxsLWJ1aWxkdG9vbHMtc2NyaXB0Jz4KKyAgICAgICAgICAgIDx0aXRsZT5JbnN0YWxsaW5nIGEgUHJlLUJ1aWx0IDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4gVGFyYmFsbCB3aXRoIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQ8L3RpdGxlPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluc3RhbGwtYnVpbGR0b29sczwvZmlsZW5hbWU+IHNjcmlwdCBpcyB0aGUgZWFzaWVzdAorICAgICAgICAgICAgICAgIG9mIHRoZSB0aHJlZSBtZXRob2RzIGJ5IHdoaWNoIHlvdSBjYW4gZ2V0IHRoZXNlIHRvb2xzLiBJdCBkb3dubG9hZHMKKyAgICAgICAgICAgICAgICBhIHByZS1idWlsdCBidWlsZHRvb2xzIGluc3RhbGxlciBhbmQgYXV0b21hdGljYWxseSBpbnN0YWxscyB0aGUgdG9vbHMKKyAgICAgICAgICAgICAgICBmb3IgeW91OgorICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZSB0aGUgPGZpbGVuYW1lPmluc3RhbGwtYnVpbGR0b29sczwvZmlsZW5hbWU+IHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzIC0td2l0aG91dC1leHRlbmRlZC1idWlsZHRvb2xzIFwKKyAgICAgICAtLWJhc2UtdXJsICZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvIFwKKyAgICAgICAtLXJlbGVhc2UgeW9jdG8tJkRJU1RSTzsgXAorICAgICAgIC0taW5zdGFsbGVyLXZlcnNpb24gJkRJU1RSTzsKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24sIHRoZSBidWlsZHRvb2xzIHRhcmJhbGwgd2lsbCBiZSBkb3dubG9hZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNoZWNrc3VtIG9mIHRoZSBkb3dubG9hZCB3aWxsIGJlIHZlcmlmaWVkLCB0aGUgaW5zdGFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHJ1biBmb3IgeW91LCBhbmQgc29tZSBiYXNpYyBjaGVja3Mgd2lsbCBiZSBydW4gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIG1ha2Ugc3VyZSB0aGUgaW5zdGFsbGF0aW9uIGlzIGZ1bmN0aW9uYWwuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBUbyBhdm9pZCB0aGUgbmVlZCBvZiA8ZmlsZW5hbWU+c3VkbzwvZmlsZW5hbWU+IHByaXZpbGVnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmluc3RhbGwtYnVpbGR0b29sczwvZmlsZW5hbWU+IHNjcmlwdCB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IHRlbGwgdGhlIGluc3RhbGxlciB0byBpbnN0YWxsIGluOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+L3BhdGgvdG8vPC9yZXBsYWNlYWJsZT5wb2t5L2J1aWxkdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gbmVlZHMgdGhlIGFkZGl0aW9uYWwgdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGluIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICB0YXJiYWxsLCB5b3UgY2FuIGluc3RlYWQgZXhlY3V0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBwb2t5CisgICAgICQgc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNvdXJjZSA8cmVwbGFjZWFibGU+L3BhdGgvdG8vPC9yZXBsYWNlYWJsZT5wb2t5L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAteDg2XzY0LXBva3lzZGstbGludXgKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCisgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gdXNlIHRoZSByaWdodCBmaWxlIChpLmUuIGk1ODYgb3IgeDg2XzY0KS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgdGhlIHRvb2xzIGFyZSBhZGRlZCB0byA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKKyAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgorICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKKyAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5idWlsZHRvb2xzLWV4dGVuZGVkPC9maWxlbmFtZT4gdGFyYmFsbCwgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICB3b3JraW5nIHZlcnNpb25zIG9mIHRvb2xzIGluY2x1ZGluZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWw8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKwogICAgICAgICA8c2VjdGlvbiBpZD0nZG93bmxvYWRpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsJz4KICAgICAgICAgICAgIDx0aXRsZT5Eb3dubG9hZGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGw8L3RpdGxlPgogCkBAIC0yODEsMTQgKzQyOSwxOCBAQAogICAgICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRlIGFuZCBkb3dubG9hZCB0aGUgPGZpbGVuYW1lPiouc2g8L2ZpbGVuYW1lPiBhdAotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMveW9jdG8veW9jdG8tJkRJU1RSTzsvYnVpbGR0b29scy8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX1JFTEVBU0VfRExfVVJMOy9idWlsZHRvb2xzLyc+PC91bGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIHNjcmlwdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIHRyYWRpdGlvbmFsIGluc3RhbGxlcjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgZXh0ZW5kZWQgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBjaG9vc2UgdGhlIGZvbGxvd2luZzoKQEAgLTMxMSw3ICs0NjMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMzI3LDcgKzQ4Myw3IEBACiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgYW5kIHRoZW4KICAgICAgICAgICAgICAgICB0YWtlIHN0ZXBzIHRvIHRyYW5zZmVyIGFuZCBydW4gaXQgb24gYQogICAgICAgICAgICAgICAgIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbWFsIEdpdCwgdGFyLCBhbmQgUHl0aG9uCi0gICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgIChvciBnY2MpIHJlcXVpcmVtZW50cy4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CkBAIC0zNDUsNiArNTAxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBidWlsZHRvb2xzLXRhcmJhbGwKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIHJ1biB0aGUgQml0QmFrZSBjb21tYW5kIHRvIGJ1aWxkIHRoZSBleHRlbmRlZCB0YXJiYWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICQgYml0YmFrZSBidWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0RLTUFDSElORSc+PGZpbGVuYW1lPlNES01BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KQEAgLTM1OCwyMSArNTE4LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW5zdGFsbGVyIGZpbGUgaGFzIHRoZSBzdHJpbmcgImJ1aWxkdG9vbHMiCi0gICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAob3IgImJ1aWxkdG9vbHMtZXh0ZW5kZWQiKSBpbiB0aGUgbmFtZS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2ZlciB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUgZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCB0byB0aGUgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBvciBQeXRob24gcmVxdWlyZW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgb3IgUHl0aG9uIChvciBnY2MpIHJlcXVpcmVtZW50cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBPbiB0aGUgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRoZSA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICAgICAgICB0byBpbnN0YWxsIHRoZSB0b29scy4KLSAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSB0cmFkaXRpb25hbCBpbnN0YWxsZXI6CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAogICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIGV4dGVuZGVkIGluc3RhbGxlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24sIGEgcHJvbXB0IGFwcGVhcnMgdGhhdCBhbGxvd3MgeW91IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBjaG9vc2UgdGhlIGZvbGxvd2luZzoKQEAgLTM4NCwxMCArNTQ4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIHRvb2xzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBieSB1c2luZyBhCiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eAorICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAteDg2XzY0LXBva3ktbGludXgKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gc3VwcGx5IHlvdXIgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBhbmQgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gdXNlIHRoZSByaWdodCBmaWxlIChpLmUuIGk1ODUgb3IgeDg2LTY0KS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cmUgdG8gdXNlIHRoZSByaWdodCBmaWxlIChpLmUuIGk1ODYgb3IgeDg2XzY0KS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgc291cmNlZCB0aGUgc2V0dXAgc2NyaXB0LApAQCAtMzk1LDcgKzU1OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uIEFuZCBpbiB0aGUgY2FzZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5idWlsZHRvb2xzLWV4dGVuZGVkPC9maWxlbmFtZT4gdGFyYmFsbCwgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZyB2ZXJzaW9ucyBvZiB0b29scyBpbmNsdWRpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBhbmQgdGhlIG90aGVyIHRvb2xzIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWw8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbAppbmRleCBmOTg1NDY4Li43MjJmYTdlIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKQEAgLTQxLDExICs0MSwxMyBAQAogICAgICAgICAgICAgICAgIFRoYXQgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggYW55CiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ1c3lib3hfMS4yMS48L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT54PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoZSByZWNpcGUuCi0gICAgICAgICAgICAgICAgU28sIHRoZSBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCB0aGUgZm9sbG93aW5nIHJlY2lwZSBuYW1lczoKKyAgICAgICAgICAgICAgICBTbywgdGhlIGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlY2lwZSBuYW1lczoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGJ1c3lib3hfMS4yMS4xLmJiCiAgICAgIGJ1c3lib3hfMS4yMS4yLmJiCiAgICAgIGJ1c3lib3hfMS4yMS4zLmJiCisgICAgIGJ1c3lib3hfMS4yMS4xMC5iYgorICAgICBidXN5Ym94XzEuMjEuMjUuYmIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CiAgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIKQEAgLTExNSw3ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW4geW91ciBob21lIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkgPGZpbGVuYW1lPm15YnVpbGRzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICRjZCAkSE9NRQorICAgICAkIGNkICRIT01FCiAgICAgICQgc291cmNlICRIT01FL3Bva3kvJk9FX0lOSVRfRklMRTsgJEhPTUUvbXlidWlsZHMvWVAtJlBPS1lWRVJTSU9OOwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xNDEsNyArMTQzLDcgQEAKICAgICAgICAgICAgICAgICBUaGUgc3lzdGVtIHVzZWQgdG8gYnVpbGQgaW1hZ2VzIGluIGEgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgIERldmVsb3BtZW50IGVudmlyb25tZW50LgogICAgICAgICAgICAgICAgIFRoZSBidWlsZCBzeXN0ZW0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIHRoZQotICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgICAgICAgICAgPGZpcnN0dGVybT5kZXZlbG9wbWVudCBob3N0PC9maXJzdHRlcm0+LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DbGFzc2VzOjwvZW1waGFzaXM+CkBAIC0zOTMsNyArMzk1LDcgQEAKICAgICAgICAgICAgICAgICBQb2t5IGlzIG5vdCBhIHByb2R1Y3QgbGV2ZWwgZGlzdHJvLgogICAgICAgICAgICAgICAgIFJhdGhlciwgaXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBjdXN0b21pemF0aW9uLgogICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBQb2t5IGJlZ2FuIGFuIG9wZW4tc291cmNlCisgICAgICAgICAgICAgICAgICAgIFBva3kgYmVnYW4gYXMgYW4gb3Blbi1zb3VyY2UKICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCBpbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IE9wZW5lZEhhbmQuCiAgICAgICAgICAgICAgICAgICAgIE9wZW5lZEhhbmQgZGV2ZWxvcGVkIFBva3kgZnJvbSB0aGUgZXhpc3RpbmcKICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBjcmVhdGUgYSBjb21tZXJjaWFsbHkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggMDJhYmM1OS4uYjQ0ZmRjYiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTM2Nyw3ICszNjcsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQVNTVU1FX1NITElCUyc+PGdsb3NzdGVybT5BU1NVTUVfU0hMSUJTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBBU1NVTUVfU0hMSUJTW2RvY10gPSBQcm92aWRlcyBhZGRpdGlvbmFsIHNobGlicyBwcm92aWRlciBtYXBwaW5nIGluZm9ybWF0aW9uLCB3aGljaCBhZGRzIHRvIG9yIG92ZXJ3cml0ZXMgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHN5c3RlbS4iCisgICAgICAgICAgICAgICAgQVNTVU1FX1NITElCU1tkb2NdID0gIlByb3ZpZGVzIGFkZGl0aW9uYWwgc2hsaWJzIHByb3ZpZGVyIG1hcHBpbmcgaW5mb3JtYXRpb24sIHdoaWNoIGFkZHMgdG8gb3Igb3ZlcndyaXRlcyB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTQ5NSw2ICs0OTUsMzAgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFWQUlMQUJMRV9MSUNFTlNFUyc+PGdsb3NzdGVybT5BVkFJTEFCTEVfTElDRU5TRVM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEFWQUlMQUJMRV9MSUNFTlNFU1tkb2NdID0gIkxpc3Qgb2YgbGljZW5zZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSBDT01NT05fTElDRU5TRV9ESVIgYW5kIExJQ0VOU0VfUEFUSC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorCisgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgbGljZW5zZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBieSA8bGluayBsaW5rZW5kPSd2YXItQ09NTU9OX0xJQ0VOU0VfRElSJz48ZmlsZW5hbWU+Q09NTU9OX0xJQ0VOU0VfRElSPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItTElDRU5TRV9QQVRIJz48ZmlsZW5hbWU+TElDRU5TRV9QQVRIPC9maWxlbmFtZT48L2xpbms+LgorCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IGFsbCBjaGFuZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+Q09NTU9OX0xJQ0VOU0VfRElSPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+TElDRU5TRV9QQVRIPC9maWxlbmFtZT4gaGF2ZSBiZWVuIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSA8ZmlsZW5hbWU+QVZBSUxBQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbiA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1saWNlbnNlJz5saWNlbnNlLmJiY2xhc3M8L2xpbms+KS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFWQUlMVFVORVMnPjxnbG9zc3Rlcm0+QVZBSUxUVU5FUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgQVZBSUxUVU5FU1tkb2NdID0gIlRoZSBsaXN0IG9mIGRlZmluZWQgQ1BVIGFuZCBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIChBQkkpIHR1bmluZ3MgKGkuZS4gICJ0dW5lcyIpIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtLiIKQEAgLTE0MjMsNyArMTQ0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdCB0byBleHBvcnQgdGhlIHZhcmlhYmxlIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIGVudmlyb25tZW50OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIGV4cG9ydCBCQlNFUlZFUj1sb2NhbGhvc3Q6JHBvcnQiCisgICAgIGV4cG9ydCBCQlNFUlZFUj1sb2NhbGhvc3Q6JHBvcnQKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMzc4Niw3ICszODEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZXItY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBiZXN0IHRvIGp1c3QgcmVmZXJlbmNlIHRoZSB2YXJpYWJsZSB0byBzZWUgd2hpY2ggZGlzdHJvIGZlYXR1cmVzIGFyZQogICAgICAgICAgICAgICAgICAgICBiZWluZyBiYWNrZmlsbGVkIGZvciBhbGwgZGlzdHJvIGNvbmZpZ3VyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIDxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4gc2VjdGlvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIEJhY2tmaWxsaW5nPC9saW5rPiIgc2VjdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtNjc1MCw2ICs2Nzc0LDI1IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gcHJvZHVjZSBhIGZ1bmN0aW9uYWwgc3lzdGVtCiAgICAgICAgICAgICAgICAgICAgIGltYWdlLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KKworICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5UaXBzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGEgbGlzdCBvZiBsaWNlbnNlcyB0aGF0IGFyZSBhbGxvd2VkCisgICAgICAgICAgICAgICAgICAgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgbGljZW5zZXMgdGhhdCBhcmUgZXhjbHVkZWQuIFRvIGRvCisgICAgICAgICAgICAgICAgICAgIHRoaXMsIGRlZmluZSBhCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIDxmaWxlbmFtZT5DT01QQVRJQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4gd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgb2YgdGhlIGxpY2VuY2VzIHRoYXQgYXJlIGFsbG93ZWQuIFRoZW4KKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIDxmaWxlbmFtZT5JTkNPTVBBVElCTEVfTElDRU5TRTwvZmlsZW5hbWU+IGFzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOQ09NUEFUSUJMRV9MSUNFTlNFID0gIiR7QCcgJy5qb2luKHNvcnRlZChzZXQoZC5nZXRWYXIoJ0FWQUlMQUJMRV9MSUNFTlNFUycpLnNwbGl0KCkpIC0gc2V0KGQuZ2V0VmFyKCdDT01QQVRJQkxFX0xJQ0VOU0VTJykuc3BsaXQoKSkpKX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB3aWxsIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPiBjb250YWluaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBuYW1lcyBvZiBhbGwgbGljZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgZnJvbSA8bGluayBsaW5rZW5kPSd2YXItQVZBSUxBQkxFX0xJQ0VOU0VTJz48ZmlsZW5hbWU+QVZBSUxBQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCB0aGUgb25lcyBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPkNPTVBBVElCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPiwgdGh1cyBvbmx5CisgICAgICAgICAgICAgICAgICAgIGFsbG93aW5nIHRoZSBsYXR0ZXIgbGljZW5jZXMgdG8gYmUgdXNlZC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKQEAgLTc0MjgsNyArNzQ3MSw2IEBACiAgICAgIEtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKICAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgotICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPktCUkFOQ0g8L2ZpbGVuYW1lPiBzdGF0ZW1lbnRzIGlkZW50aWZ5CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIGJyYW5jaCB0byB1c2Ugd2hlbiBidWlsZGluZyBmb3IgZWFjaApAQCAtODc0Niw3ICs4Nzg4LDYgQEAKICAgICAgTUFDSElORSA/PSAiZ2VuZXJpY3g4NiIKICAgICAgTUFDSElORSA/PSAiZ2VuZXJpY3g4Ni02NCIKICAgICAgTUFDSElORSA/PSAiYmVhZ2xlYm9uZSIKLSAgICAgTUFDSElORSA/PSAibXBjODMxNWUtcmRiIgogICAgICBNQUNISU5FID89ICJlZGdlcm91dGVyIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIFRoZSBsYXN0IGZpdmUgYXJlIFlvY3RvIFByb2plY3QgcmVmZXJlbmNlIGhhcmR3YXJlIGJvYXJkcywgd2hpY2gKQEAgLTEwMzc2LDEyICsxMDQxNywyMCBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IGJsb2NrcyBhcmUgZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICBpbiByZWNpcGVzIHdoZW4geW91IHNwZWNpZnkgZmVhdHVyZXMgYW5kIHRoZW4gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgIHRoYXQgZGVmaW5lIGZlYXR1cmUgYmVoYXZpb3JzLgotICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyBibG9jayBzdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGJhc2ljIGJsb2NrIHN0cnVjdHVyZSAoYnJva2VuIG92ZXIgbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAgbGluZXMgZm9yIHJlYWRhYmlsaXR5KToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQQUNLQUdFQ09ORklHID8/PSAiZjEgZjIgZjMgLi4uIgotICAgICBQQUNLQUdFQ09ORklHW2YxXSA9ICItLXdpdGgtZjEsLS13aXRob3V0LWYxLGJ1aWxkLWRlcHMtZjEscnQtZGVwcy1mMSxydC1yZWNzLWYxIgotICAgICBQQUNLQUdFQ09ORklHW2YyXSA9ICItLXdpdGgtZjIsLS13aXRob3V0LWYyLGJ1aWxkLWRlcHMtZjIscnQtZGVwcy1mMixydC1yZWNzLWYyIgotICAgICBQQUNLQUdFQ09ORklHW2YzXSA9ICItLXdpdGgtZjMsLS13aXRob3V0LWYzLGJ1aWxkLWRlcHMtZjMscnQtZGVwcy1mMyxydC1yZWNzLWYzIgorICAgICBQQUNLQUdFQ09ORklHW2YxXSA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQtZGVwcy1mb3ItZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS1kZXBzLWZvci1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lLXJlY29tbWVuZHMtZm9yLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Vjb25maWctY29uZmxpY3RzLWZvci1mMSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMl0gPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBhbmQgc28gb24gYW5kIHNvIG9uIC4uLgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMDM5MCw3ICsxMDQzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGl0c2VsZiBzcGVjaWZpZXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgdG8gZW5hYmxlLgogICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgdGhlIGZlYXR1cmVzLCB5b3UgY2FuIGRldGVybWluZSB0aGUgYmVoYXZpb3Igb2YKLSAgICAgICAgICAgICAgICAgICAgZWFjaCBmZWF0dXJlIGJ5IHByb3ZpZGluZyB1cCB0byBmaXZlIG9yZGVyLWRlcGVuZGVudAorICAgICAgICAgICAgICAgICAgICBlYWNoIGZlYXR1cmUgYnkgcHJvdmlkaW5nIHVwIHRvIHNpeCBvcmRlci1kZXBlbmRlbnQKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzLCB3aGljaCBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcy4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBvbWl0IGFueSBhcmd1bWVudCB5b3UgbGlrZSBidXQgbXVzdCByZXRhaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRpbmcgY29tbWFzLgpAQCAtMTA0MjAsNiArMTA0NjksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgYWRkZWQgaWYgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BbnkgY29uZmxpY3RpbmcgKHRoYXQgaXMsIG11dHVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVzaXZlKSA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEwNDI3LDI1ICsxMDQ4MCwyMyBAQAogICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gYmxvY2sgdGFrZW4gZnJvbSB0aGUKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYnJzdmc8L2ZpbGVuYW1lPiByZWNpcGUuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSB0aGUgZmVhdHVyZSBpcyA8ZmlsZW5hbWU+Y3JvY288L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlIHRoZSBmZWF0dXJlIGlzIDxmaWxlbmFtZT5ndGs8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaGFzIHRocmVlIGFyZ3VtZW50cyB0aGF0IGRldGVybWluZSB0aGUgZmVhdHVyZSdzCiAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yLgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFBBQ0tBR0VDT05GSUcgPz89ICJjcm9jbyIKLSAgICAgUEFDS0FHRUNPTkZJR1tjcm9jb10gPSAiLS13aXRoLWNyb2NvLC0td2l0aG91dC1jcm9jbyxsaWJjcm9jbyIKKyAgICAgUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGszLC0td2l0aG91dC1ndGszLGd0ayszIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjcm9jbzwvZmlsZW5hbWU+IGFyZ3VtZW50cyBhcHBseSBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+LS13aXRoLWd0azM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ayszPC9maWxlbmFtZT4gYXJndW1lbnRzIGFwcGx5IG9ubHkgaWYKICAgICAgICAgICAgICAgICAgICAgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCA8ZmlsZW5hbWU+LS13aXRoLWd0azM8L2ZpbGVuYW1lPiBpcwogICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmd1bWVudCBsaXN0IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliY3JvY288L2ZpbGVuYW1lPiBpcyBhZGRlZCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrKzM8L2ZpbGVuYW1lPiBpcyBhZGRlZCB0bwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+REVQRU5EUzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGZlYXR1cmUgaXMgZGlzYWJsZWQgc2F5IHRocm91Z2gKICAgICAgICAgICAgICAgICAgICAgYSA8ZmlsZW5hbWU+LmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSBpbiBhbm90aGVyIGxheWVyLCB0aGVuCi0gICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgYXJndW1lbnQgPGZpbGVuYW1lPi0td2l0aG91dC1jcm9jbzwvZmlsZW5hbWU+IGlzCi0gICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IHJhdGhlciB0aGFuCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4tLXdpdGgtY3JvY288L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgdGhlIHNlY29uZCBhcmd1bWVudCA8ZmlsZW5hbWU+LS13aXRob3V0LWd0azM8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTEwNTQsNyArMTExMDUsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItUE4nPjxnbG9zc3Rlcm0+UE48L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFBOW2RvY10gPSAiUE4gcmVmZXJzIHRvIGEgcmVjaXBlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXMgaW5wdXQgdG8gY3JlYXRlIGEgcGFja2FnZS4KKyAgICAgICAgICAgICAgICBQTltkb2NdID0gIlBOIHJlZmVycyB0byBhIHJlY2lwZSBuYW1lIGluIHRoZSBjb250ZXh0IG9mIGEgZmlsZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFzIGlucHV0IHRvIGNyZWF0ZSBhIHBhY2thZ2UuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTE1MDEsMjMgKzExNTUyLDM1IEBACiAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIGEgcmVjaXBlJ3Mgb3duCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItUE4nPlBOPC9saW5rPjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIGlzIGltcGxpY2l0bHkgYWxyZWFkeSBpbiBpdHMgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgbGlzdCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IG5lZWQgdG8gbWVudGlvbiB0aGF0IGl0IHByb3ZpZGVzIGl0c2VsZi4KICAgICAgICAgICAgICAgICAgICAgSWYgYSByZWNpcGUgdXNlcyA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiwgdGhlCiAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgYWxpYXNlcyBhcmUgc3lub255bXMgZm9yIHRoZSByZWNpcGUgYW5kIGNhbgotICAgICAgICAgICAgICAgICAgICBiZSB1c2VmdWwgc2F0aXNmeWluZyBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgYmUgdXNlZnVsIGZvciBzYXRpc2Z5aW5nIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzIGR1cmluZwogICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+REVQRU5EUzwvbGluaz48L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudCBmcm9tIGEgcmVjaXBlCi0gICAgICAgICAgICAgICAgICAgIGZpbGUgPGZpbGVuYW1lPmxpYmF2XzAuOC4xMS5iYjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgZnJvbSB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIGZpbGUgPGZpbGVuYW1lPmV1ZGV2XzMuMi45LmJiPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJPVklERVMgKz0gImxpYnBvc3Rwcm9jIgorICAgICBQUk9WSURFUyA9ICJ1ZGV2IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgcmVzdWx0cyBpbgotICAgICAgICAgICAgICAgICAgICB0aGUgImxpYmF2IiByZWNpcGUgYWxzbyBiZWluZyBrbm93biBhcyAibGlicG9zdHByb2MiLgorICAgICAgICAgICAgICAgICAgICB0aGUgImV1ZGV2IiByZWNpcGUgYWxzbyBiZWluZyBhdmFpbGFibGUgYXMgc2ltcGx5ICJ1ZGV2Ii4KKworICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdmVuIHRoYXQgYSByZWNpcGUncyBvd24gcmVjaXBlIG5hbWUgaXMgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRseSBpbiBpdHMgb3duIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyB1bm5lY2Vzc2FyeSB0byBhZGQgYWxpYXNlcyB3aXRoIHRoZSAiKz0iIG9wZXJhdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBzaW1wbGUgYXNzaWdubWVudCB3aWxsIGJlIHN1ZmZpY2llbnQuIEluIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jkcywgd2hpbGUgeW91IGNvdWxkIHdyaXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUk9WSURFUyArPSAidWRldiIKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhYm92ZSwgdGhlICIrPSIgaXMgb3ZlcmtpbGwgYW5kIHVubmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xMzM4Myw4ICsxMzQ0Niw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TS0lQX0ZJTEVERVBTJz48Z2xvc3N0ZXJtPlNLSVBfRklMRURFUFM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFNLSVBfRklMRURFUFNbZG9jXSA9ICJFbmFibGVzIHlvdSB0byByZW1vdmUgYWxsIGZpbGVzIGZyb20KLSAgICAgICAgICAgICAgICB0aGUgIlByb3ZpZGVzIiBzZWN0aW9uIG9mIGFuIFJQTSBwYWNrYWdlLiIKKyAgICAgICAgICAgICAgICBTS0lQX0ZJTEVERVBTW2RvY10gPSAiRW5hYmxlcyB5b3UgdG8gcmVtb3ZlIGFsbCBmaWxlcyBmcm9tIHRoZSAnUHJvdmlkZXMnIHNlY3Rpb24gb2YgYW4gUlBNIHBhY2thZ2UuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTUzMzEsNyArMTUzOTMsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVENMSUJDJz48Z2xvc3N0ZXJtPlRDTElCQzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgVENMSUJDW2RvY10gPSAiU3BlY2lmaWVzIEdOVSBzdGFuZGFyZCBDIGxpYnJhcnkgKGxpYmMpIHZhcmlhbnQgdG8gdXNlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gWW91IGNhbiBzZWxlY3QgJ2dsaWJjJywgJ211c2wnIG9yICJuZXdsaWIuIgorICAgICAgICAgICAgICAgIFRDTElCQ1tkb2NdID0gIlNwZWNpZmllcyBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdnbGliYycsICdtdXNsJyBvciAnbmV3bGliJy4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xNTY0Niw5ICsxNTcwOCw5IEBACiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgogICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIHRhcmdldCBjb250cm9sbGVyIHRvIHVzZSB3aGVuIHJ1bm5pbmcgdGVzdHMKICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBhIHRlc3QgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gdXNlIGlzICJRZW11VGFyZ2V0IjoKKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgY29udHJvbGxlciB0byB1c2UgaXMgInFlbXUiOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFRFU1RfVEFSR0VUID0gIlFlbXVUYXJnZXQiCisgICAgIFRFU1RfVEFSR0VUID0gInFlbXUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTE1NjY3LDIxICsxNTcyOSwyMSBAQAogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgd2l0aAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VEVTVF9UQVJHRVQ8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlFlbXVUYXJnZXQiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJxZW11Ijo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3RzIGEgUUVNVSBpbWFnZSBhbmQgcnVucyB0aGUgdGVzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNxZW11LWltYWdlLWVuYWJsaW5nLXRlc3RzJz5FbmFibGluZyBSdW50aW1lIFRlc3RzIG9uIFFFTVU8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iU2ltcGxlUmVtb3RlVGFyZ2V0Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnMgdGhlIHRlc3RzIG9uIHRhcmdldCBoYXJkd2FyZSB0aGF0IGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cCBhbmQgcnVubmluZy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaGFyZHdhcmUgY2FuIGJlIG9uIHRoZSBuZXR3b3JrIG9yIGl0IGNhbiBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZGV2aWNlIHJ1bm5pbmcgYW4gaW1hZ2Ugb24gUUVNVS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbXVzdCBhbHNvIHNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUX1RBUkdFVF9JUCc+PGZpbGVuYW1lPlRFU1RfVEFSR0VUX0lQPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgdXNlICJTaW1wbGVSZW1vdGVUYXJnZXQiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHVzZSAic2ltcGxlcmVtb3RlIi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBhcmd1bWVudCBpcyBkZWZpbmVkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL3NpbXBsZXJlbW90ZS5weTwvZmlsZW5hbWU+LgpAQCAtMTY0NzMsNyArMTY1MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBBcHBlbmRzIGEgc3RyaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBsb2NhbCB2ZXJzaW9uIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICBVLUJvb3QgaW1hZ2UuCiAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBhc3N1bWluZyB0aGUgdmVyc2lvbiBvZiB0aGUgVS1Cb290IGltYWdlCi0gICAgICAgICAgICAgICAgICAgIGJ1aWx0IHdhcyAiMjAxMy4xMCwgdGhlIGZ1bGwgdmVyc2lvbiBzdHJpbmcgcmVwb3J0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgYnVpbHQgd2FzICIyMDEzLjEwIiwgdGhlIGZ1bGwgdmVyc2lvbiBzdHJpbmcgcmVwb3J0ZWQgYnkKICAgICAgICAgICAgICAgICAgICAgVS1Cb290IHdvdWxkIGJlICIyMDEzLjEwLXlvY3RvIiBnaXZlbiB0aGUgZm9sbG93aW5nCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTY3NzEsMTggKzE2ODMzLDIxIEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1VU0VSQUREX0VSUk9SX0RZTkFNSUMnPjxnbG9zc3Rlcm0+VVNFUkFERF9FUlJPUl9EWU5BTUlDPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgIFVTRVJBRERfRVJST1JfRFlOQU1JQ1tkb2NdID0gIklmIHNldCB0byAnZXJyb3InLCBmb3JjZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlciBpZGVudGlmaWNhdGlvbiAodWlkKSBhbmQgZ3JvdXAgaWRlbnRpZmljYXRpb24gKGdpZCkgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCBpbiBmaWxlcy9wYXNzd2QgYW5kIGZpbGVzL2dyb3VwIGZpbGVzLiBJZiBzZXQgdG8gJ3dhcm4nLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZC4iCisgICAgICAgICAgICAgICBVU0VSQUREX0VSUk9SX0RZTkFNSUNbZG9jXSA9ICJJZiBzZXQgdG8gJ2Vycm9yJywgZm9yY2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaWRlbnRpZmljYXRpb24gKHVpZCkgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uIChnaWQpIHZhbHVlcyBhcmUgbm90IGRlZmluZWQgaW4gYW55IG9mIHRoZSBmaWxlcyBsaXN0ZWQgaW4gVVNFUkFERF9VSURfVEFCTEVTIGFuZCBVU0VSQUREX0dJRF9UQUJMRVMuIElmIHNldCB0byAnd2FybicsIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZCBpbnN0ZWFkLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAiZXJyb3IiLCBmb3JjZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8KLSAgICAgICAgICAgICAgICAgICAgcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlciBpZGVudGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+KSBhbmQgZ3JvdXAgaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPikgdmFsdWVzIGFyZSBub3QgZGVmaW5lZAotICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+ZmlsZXMvcGFzc3dkPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5maWxlcy9ncm91cDwvZmlsZW5hbWU+IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gIndhcm4iLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZC4KKworICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gPGZpbGVuYW1lPmVycm9yPC9maWxlbmFtZT4sIGZvcmNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uICg8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4pIGFuZCBncm91cAorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiAoPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+KSB2YWx1ZXMgYXJlIG5vdAorICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGluIGFueSBvZiB0aGUgZmlsZXMgbGlzdGVkCisgICAgICAgICAgICAgICAgICAgIGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQUREX1VJRF9UQUJMRVMnPjxmaWxlbmFtZT5VU0VSQUREX1VJRF9UQUJMRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQUREX0dJRF9UQUJMRVMnPjxmaWxlbmFtZT5VU0VSQUREX0dJRF9UQUJMRVM8L2ZpbGVuYW1lPjwvbGluaz4uIElmCisgICAgICAgICAgICAgICAgICAgIHNldCB0byA8ZmlsZW5hbWU+d2FybjwvZmlsZW5hbWU+LCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQKKyAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE2ODA5LDYgKzE2ODc0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1VU0VSQUREX0dJRF9UQUJMRVMnPjxmaWxlbmFtZT5VU0VSQUREX0dJRF9UQUJMRVM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGVyZSBpcyBhIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3IgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIDxmaWxlbmFtZT5VU0VSQUREX0VSUk9SX0RZTkFNSUM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+ZXJyb3I8L2ZpbGVuYW1lPiBhbmQgc2V0dGluZyBpdAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+d2FybjwvZmlsZW5hbWU+LiBXaGVuIGl0IGlzIHNldAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+d2FybjwvZmlsZW5hbWU+LCB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgcmVwb3J0IGEKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZyBmb3IgZXZlcnkgdW5kZWZpbmVkIDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+IGluIGFueSByZWNpcGUuIEJ1dCB3aGVuIGl0IGlzIHNldAorICAgICAgICAgICAgICAgICAgICB0byA8ZmlsZW5hbWU+ZXJyb3I8L2ZpbGVuYW1lPiwgaXQgd2lsbCBvbmx5IHJlcG9ydCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJlY2lwZXMgdGhhdCBhcmUgYWN0dWFsbHkgYnVpbHQuIFRoaXMgc2F2ZXMgeW91IGZyb20KKyAgICAgICAgICAgICAgICAgICAgaGF2aW5nIHRvIGFkZCBzdGF0aWMgSURzIGZvciByZWNpcGVzIHRoYXQgeW91IGtub3cgd2lsbAorICAgICAgICAgICAgICAgICAgICBuZXZlciBiZSBidWlsdC4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKQEAgLTE3MTA4LDcgKzE3MTg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLXBhcnRpdGlvbmVkLWltYWdlcy11c2luZy13aWMnPkNyZWF0aW5nIFBhcnRpdGlvbmVkIEltYWdlcyBVc2luZyBXaWM8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBraWNrc3RhcnQgZmlsZSBmb3JtYXQsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1raWNrc3RhcnQnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1raWNrc3RhcnQnPk9wZW5FbWJlZGRlZCBLaWNrc3RhcnQgKDxmaWxlbmFtZT4ud2tzPC9maWxlbmFtZT4pIFJlZmVyZW5jZTwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTE3MTc4LDggKzE3MjU3LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVhTRVJWRVInPjxnbG9zc3Rlcm0+WFNFUlZFUjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICBYU0VSVkVSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgIHRvIHByb3ZpZGUgYW4gWCBzZXJ2ZXIgYW5kIGRyaXZlcnMgZm9yIHRoZSBjdXJyZW50IG1hY2hpbmUuIgorICAgICAgICAgICAgICAgWFNFUlZFUltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFja2FnZXMgdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkIHRvIHByb3ZpZGUgYW4gWCBzZXJ2ZXIgYW5kIGRyaXZlcnMgZm9yIHRoZSBjdXJyZW50IG1hY2hpbmUuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbAppbmRleCA3NjVjMGYyLi44NmI2ZDdkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbApAQCAtMjk3LDggKzI5Nyw3IEBACiAKICAgICAgICAgIDxyZXBsYWNlYWJsZT5hcmNoPC9yZXBsYWNlYWJsZT4gaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlOgogICAgICAgICAgICAgICAgICAgIGJlYWdsZWJvbmUteW9jdG8sIGJlYWdsZWJvbmUteW9jdG8tbHNiLCBlZGdlcm91dGVyLCBlZGdlcm91dGVyLWxzYiwKLSAgICAgICAgICAgICAgICAgICBnZW5lcmljeDg2LCBnZW5lcmljeDg2LTY0LCBnZW5lcmljeDg2LTY0LWxzYiwgZ2VuZXJpY3g4Ni1sc2IsCi0gICAgICAgICAgICAgICAgICAgbXBjODMxNWUtcmRiLCBtcGM4MzE1ZS1yZGItbHNiLCBhbmQgcWVtdSouCisgICAgICAgICAgICAgICAgICAgZ2VuZXJpY3g4NiwgZ2VuZXJpY3g4Ni02NCwgZ2VuZXJpY3g4Ni02NC1sc2IsIGdlbmVyaWN4ODYtbHNiIGFuZCBxZW11Ki4KIAogPCEtLT4KICAgICAgICAgIDxyZXBsYWNlYWJsZT5kYXRlX3RpbWU8L3JlcGxhY2VhYmxlPiBpcyBhIGRhdGUgYW5kIHRpbWUgc3RhbXAuCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOGQ1ZjZlYy4uNTM3NjYzZAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzQsNyArMzMsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNjwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMjwvcmV2bnVtYmVyPgpAQCAtNjgsOSArNjcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC05Miw3ICs5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xMDksMTggKzExMywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZDdiNGJjZS4uZTZkNDI0NQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5LcmlzdGk8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+a3Jpc3RpQGJ1enpjb2xsZWN0aXZlbWFya2V0aW5nLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTM0LDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjA8L3Jldm51bWJlcj4KQEAgLTc4LDkgKzc3LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTAyLDcgKzEwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xMTksMTggKzEyMywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCmluZGV4IDM3NGQ4ZTcuLmIxZWE5ZWQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZApAQCAtMSwzNiArMSwzNiBAQAogIyBQcm9jZXNzZXMgYml0YmFrZS11c2VyLW1hbnVhbCAoPHdvcmQ+LTx3b3JkPi08d29yZD4gc3R5bGUpLgogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgdGhyZWUtd29yZCBmb2xkZXJzLCB3aGljaCBjdXJyZW50bHkgaXMgb25seSB0aGUgQml0QmFrZSBVc2VyIE1hbnVhbC4KICMgV2UgdXNlZCB0byBoYXZlIHRoZSAieW9jdG8tcHJvamVjdC1xcyIgYW5kICJwb2t5LXJlZi1tYW51YWwiIGZvbGRlcnMgYnV0IG5vIGxvbmdlciBkby4KLSMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9bYS16XSotW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCisjIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvW2Etel0qLVthLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3NlcyBhbGwgb3RoZXIgbWFudWFscyAoPHdvcmQ+LTx3b3JkPiBzdHlsZSkuCiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCBmb2xkZXJzIHRoYXQgdXNlIHR3byB3b3JkLCB3aGljaCBpcyB0aGUgc3RhbmRhcmQgbm93IChlLmcuICJyZWYtbWFudWFsIikuCiAjIEhlcmUgaXMgdGhlIG9uZS1saW5lcjoKLSMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZworIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL1thLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9ic3AtZ3VpZGUvYnNwLWd1aWRlLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKICMgUHJvY2VzcyBjYXNlcyB3aGVyZSBqdXN0IGFuIGV4dGVybmFsIG1hbnVhbCBpcyByZWZlcmVuY2VkIHdpdGhvdXQgYW4gaWQgYW5jaG9yCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPkJpdEJha2UgVXNlciBNYW51YWw8L2E+QEJpdEJha2UgVXNlciBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC9hPkBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC9hPkBZb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+Qml0QmFrZSBVc2VyIE1hbnVhbDwvYT5AQml0QmFrZSBVc2VyIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L2E+QFlvY3RvIHByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L2E+QFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESylAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9ic3AtZ3VpZGUvYnNwLWd1aWRlLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L2E+QFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPlRvYXN0ZXIgVXNlciBNYW51YWw8L2E+QFRvYXN0ZXIgVXNlciBNYW51YWxAZwogCiAjIFByb2Nlc3MgYSBzaW5nbGUsIHJvdWdlIG9jY3VycmVuY2Ugb2YgYSBsaW5rZWQgcmVmZXJlbmNlIHRvIHRoZSBNZWdhLU1hbnVhbC4KLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvbWVnYS1tYW51YWwvbWVnYS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvbWVnYS1tYW51YWwvbWVnYS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsQGcKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kgYi9wb2t5L21ldGEtcG9reS9SRUFETUUucG9reQppbmRleCAyMjA0ODAxLi4yYmEzYjVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9SRUFETUUucG9reQorKysgYi9wb2t5L21ldGEtcG9reS9SRUFETUUucG9reQpAQCAtNTMsMTEgKzUzLDExIEBACiAKIGRvY3VtZW50YXRpb246CiAgICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3lvY3RvLWRvY3MvCi0gICAgTWFpbGluZyBsaXN0OiB5b2N0b0B5b2N0b3Byb2plY3Qub3JnCisgICAgTWFpbGluZyBsaXN0OiBkb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmcKIAogbWV0YS1wb2t5LCBtZXRhLXlvY3RvLWJzcDoKICAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS15b2N0bygtYnNwKQotICAgIE1haWxpbmcgbGlzdDogcG9reUB5b2N0b3Byb2plY3Qub3JnCisgICAgTWFpbGluZyBsaXN0OiBwb2t5QGxpc3RzLnlvY3RvcHJvamVjdC5vcmcKIAogRXZlcnl0aGluZyBlbHNlIHNob3VsZCBiZSBzZW50IHRvIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBtYWlsaW5nIGxpc3QuICBJZiBpbgogZG91YnQsIGNoZWNrIHRoZSBvZS1jb3JlIGdpdCByZXBvc2l0b3J5IGZvciB0aGUgY29udGVudCB5b3UgaW50ZW5kIHRvIG1vZGlmeS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYwppbmRleCA5OTI2YzFiLi4wYjA0MTJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCkBAIC0yLDcgKzIsNyBAQAogRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcGFtIgogCiAjIFVzZSB0aGUgTFRTSSBLZXJuZWwKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI0LjE5JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjQlIgogCiAjIEVuc3VyZSB0aGUga2VybmVsIG5mcyBzZXJ2ZXIgaXMgZW5hYmxlZAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0byA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKaW5kZXggNjE5NDE0Mi4uOTE3NzllNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgpAQCAtMSwxMSArMSwxMSBAQAogRElTVFJPID0gInBva3kiCiBESVNUUk9fTkFNRSA9ICJQb2t5IChZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBEaXN0cm8pIgotRElTVFJPX1ZFUlNJT04gPSAiMy4wIgotRElTVFJPX0NPREVOQU1FID0gInpldXMiCitESVNUUk9fVkVSU0lPTiA9ICIzLjEiCitESVNUUk9fQ09ERU5BTUUgPSAiZHVuZmVsbCIKIFNES19WRU5ET1IgPSAiLXBva3lzZGsiCiBTREtfVkVSU0lPTiA9ICIke0BkLmdldFZhcignRElTVFJPX1ZFUlNJT04nKS5yZXBsYWNlKCdzbmFwc2hvdC0ke0RBVEV9JywgJ3NuYXBzaG90Jyl9IgogCi1NQUlOVEFJTkVSID0gIlBva3kgPHBva3lAeW9jdG9wcm9qZWN0Lm9yZz4iCitNQUlOVEFJTkVSID0gIlBva3kgPHBva3lAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZz4iCiAKIFRBUkdFVF9WRU5ET1IgPSAiLXBva3kiCiAKQEAgLTIxLDcgKzIxLDcgQEAKIAogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSAke1BPS1lfREVGQVVMVF9ESVNUUk9fRkVBVFVSRVN9IgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjQlIgogCiBTREtfTkFNRSA9ICIke0RJU1RST30tJHtUQ0xJQkN9LSR7U0RLTUFDSElORX0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9LSR7TUFDSElORX0iCiBTREtQQVRIID0gIi9vcHQvJHtESVNUUk99LyR7U0RLX1ZFUlNJT059IgpAQCAtNTIsMTMgKzUyLDE0IEBACiBTQU5JVFlfVEVTVEVEX0RJU1RST1MgPz0gIiBcCiAgICAgICAgICAgICBwb2t5LTIuNyBcbiBcCiAgICAgICAgICAgICBwb2t5LTMuMCBcbiBcCisgICAgICAgICAgICBwb2t5LTMuMSBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTYuMDQgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE4LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xOS4wNCBcbiBcCi0gICAgICAgICAgICBmZWRvcmEtMjggXG4gXAotICAgICAgICAgICAgZmVkb3JhLTI5IFxuIFwKICAgICAgICAgICAgIGZlZG9yYS0zMCBcbiBcCisgICAgICAgICAgICBmZWRvcmEtMzEgXG4gXAogICAgICAgICAgICAgY2VudG9zLTcgXG4gXAorICAgICAgICAgICAgY2VudG9zLTggXG4gXAogICAgICAgICAgICAgZGViaWFuLTggXG4gXAogICAgICAgICAgICAgZGViaWFuLTkgXG4gXAogICAgICAgICAgICAgZGViaWFuLTEwIFxuIFwKQEAgLTg3LDMgKzg4LDggQEAKIHJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCiBJTkhFUklUICs9ICJ1bmluYXRpdmUiCisKK0lOSEVSSVQgKz0gInJlcHJvZHVjaWJsZV9idWlsZCIKKworQkJfU0lHTkFUVVJFX0hBTkRMRVIgPz0gIk9FRXF1aXZIYXNoIgorQkJfSEFTSFNFUlZFID8/PSAiYXV0byIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgppbmRleCBhNGIzZDFlLi4yMzRiZTEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCkBAIC05LDcgKzksNyBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG8gPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0byA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfeW9jdG8gPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJkdW5mZWxsIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCmluZGV4IDJlMGJiNDEuLmI1NTVmMWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQpAQCAtMzEsNyArMzEsNiBAQAogI01BQ0hJTkUgPz0gImJlYWdsZWJvbmUteW9jdG8iCiAjTUFDSElORSA/PSAiZ2VuZXJpY3g4NiIKICNNQUNISU5FID89ICJnZW5lcmljeDg2LTY0IgotI01BQ0hJTkUgPz0gIm1wYzgzMTVlLXJkYiIKICNNQUNISU5FID89ICJlZGdlcm91dGVyIgogIwogIyBUaGlzIHNldHMgdGhlIGRlZmF1bHQgbWFjaGluZSB0byBiZSBxZW11eDg2LTY0IGlmIG5vIG90aGVyIG1hY2hpbmUgaXMgc2VsZWN0ZWQ6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgppbmRleCAwODE4MWE4Li5hNGJkNDYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKQEAgLTksNCArOSw0IEBACiBCQkZJTEVfUEFUVEVSTl9zZWxmdGVzdCA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3NlbGZ0ZXN0ID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9zZWxmdGVzdCA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3NlbGZ0ZXN0ID0gImR1bmZlbGwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2xpY2Vuc2UvaW5jb21wYXRpYmxlLWxpY2Vuc2VzLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9saWNlbnNlL2luY29tcGF0aWJsZS1saWNlbnNlcy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE1NDVlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9saWNlbnNlL2luY29tcGF0aWJsZS1saWNlbnNlcy5iYgpAQCAtMCwwICsxLDMgQEAKK1NVTU1BUlkgPSAiUmVjaXBlIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyIKK0RFU0NSSVBUSU9OID0gIklzIGxpY2Vuc2VkIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyB0byBiZSB1c2VkIGZvciB0ZXN0aW5nIgorTElDRU5TRSA9ICJHUEwtMi4wICYgR1BMLTMuMCAmIExHUEwtMy4wIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1jaG93bi9zZWxmdGVzdC1jaG93bi5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtY2hvd24vc2VsZnRlc3QtY2hvd24uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiZjk0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtY2hvd24vc2VsZnRlc3QtY2hvd24uYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJzZWxmdGVzdCBjaG93biIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgorCitMSUNFTlNFID0gIk1JVCIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IHVzZXJhZGQgYWxsYXJjaAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItdSAxMjM0IC1NIHRlc3QiCitURVNURElSID0gIiR7RH0ke3N5c2NvbmZkaXJ9L3NlbGZ0ZXN0LWNob3duIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgICAke1RFU1RESVJ9CisJaW5zdGFsbCAtZCAgICR7VEVTVERJUn0vZGlyCisJdG91Y2ggICAgICAgICR7VEVTVERJUn0vZmlsZQorCWxuIC1zIC4vZmlsZSAke1RFU1RESVJ9L3N5bWxpbmsKKworCWNob3duICAgIHRlc3Q6dGVzdCAke1RFU1RESVJ9L2ZpbGUKKwljaG93biAtUiB0ZXN0OnRlc3QgJHtURVNURElSfS9kaXIKKwljaG93biAtaCB0ZXN0OnRlc3QgJHtURVNURElSfS9zeW1saW5rCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc2VsZnRlc3QtY2hvd24vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMV8xLjAuYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDFfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTY4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDFfMS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0xJQ0VOU0UgPSAiQ0xPU0VEIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL3N5c3Jvb3QtdGVzdCIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitURVNUU1RSSU5HID89ICIxIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwllY2hvICIjIHRlc3QgJHtURVNUU1RSSU5HfSIgPiAke0R9JHtpbmNsdWRlZGlyfS9zeXNyb290LXRlc3QuaAorfQorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMl8xLjAuYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDJfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MTcyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDJfMS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0xJQ0VOU0UgPSAiQ0xPU0VEIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL3N5c3Jvb3QtdGVzdCIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgorCitURVNUU1RSSU5HID89ICIyIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwllY2hvICIjIHRlc3QgJHtURVNUU1RSSU5HfSIgPiAke0R9JHtpbmNsdWRlZGlyfS9zeXNyb290LXRlc3QuaAorfQorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdF8xLjAuYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3RfMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MDQ4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3RfMS4wLmJiCkBAIC0wLDAgKzEsNiBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsIHByb3ZpZGVyIHN5c3Jvb3QgdGVzdCIKK0xJQ0VOU0UgPSAiQ0xPU0VEIgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0RFUEVORFMgPSAidmlydHVhbC9zeXNyb290LXRlc3QiCisKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggN2Q3MzgxYS4uNWU0NDlhNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCkBAIC0xNCw0ICsxNCw0IEBACiAKIExBWUVSREVQRU5EU19za2VsZXRvbiA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9za2VsZXRvbiA9ICJkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMtYmFyZW1ldGFsL2JhcmVtZXRhbC1leGFtcGxlcy9iYXJlbWV0YWwtaGVsbG93b3JsZF9naXQuYmIgYi9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODRhOTBmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMtYmFyZW1ldGFsL2JhcmVtZXRhbC1leGFtcGxlcy9iYXJlbWV0YWwtaGVsbG93b3JsZF9naXQuYmIKQEAgLTAsMCArMSwxMDYgQEAKK1NVTU1BUlkgPSAiQmFyZW1ldGFsIGV4YW1wbGVzIHRvIHdvcmsgd2l0aCB0aGUgc2V2ZXJhbCBRRU1VIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGVkIG9uIE9wZW5FbWJlZGRlZCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hZWhzMjkvYmFyZW1ldGFsLWhlbGxvcWVtdSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzkzNDY2NDBhMjNjNzAxZTRmNDU5ZTA1ZjU2ZjQ0NDkiCisKK1NSQ1JFViA9ICI5OWY0ZmE0YTNiMjY2YjQyYjUyYWYzMDI2MTBiMGY0ZjQyOWJhNWUzIgorUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWVoczI5L2JhcmVtZXRhbC1oZWxsb3FlbXUuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvIgorCisjIFRoZXNlIGV4YW1wbGVzIGFyZSBub3QgbWVhbnQgdG8gYmUgYnVpbHQgd2hlbiB1c2luZyBlaXRoZXIgbXVzbCBvciBnbGliYworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9saWJjLWdsaWJjX2NsYXNzLXRhcmdldCA9ICJudWxsIgorCisjIFRoaXMgd2lsbCBiZSB0cmFuc2xhdGVkIGF1dG9tYXRpY2FsbHkgdG8gdGhlIGFyY2hpdGVjdHVyZSBhbmQKKyMgbWFjaGluZSB0aGF0IFFFTVUgdXNlcyBvbiBPRSwgZS5nLiAtbWFjaGluZSB2aXJ0IC1jcHUgY29ydGV4LWE1NworIyBidXQgdGhlIGV4YW1wbGVzIGNhbiBhbHNvIGJlIHJ1biBvbiBvdGhlciBhcmNoaXRlY3R1cmVzL21hY2hpbmVzCisjIHN1Y2ggYXMgdmV4cHJlc3MtYTE1IGJ5IG92ZXJyaWRpbmcgdGhlIHNldHRpbmcgb24gdGhlIG1hY2hpbmUuY29uZgorQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm12NXxxZW11YXJtfHFlbXVhcm02NCIKKworQkFSRU1FVEFMX1FFTVVBUkNIID89ICIiCitCQVJFTUVUQUxfUUVNVUFSQ0hfcWVtdWFybXY1ID0gInZlcnNhdGlsZSIKK0JBUkVNRVRBTF9RRU1VQVJDSF9xZW11YXJtID0gImFybSIKK0JBUkVNRVRBTF9RRU1VQVJDSF9xZW11YXJtNjQgPSAiYWFyY2g2NCIKKworCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBRRU1VQVJDSD0ke0JBUkVNRVRBTF9RRU1VQVJDSH0gVj0xIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9YnVpbGQvaGVsbG9fYmFyZW1ldGFsXyR7QkFSRU1FVEFMX1FFTVVBUkNIfS5iaW4gJHtEfS8ke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmJpbgorICAgIGluc3RhbGwgLW0gNzU1ICR7Qn1idWlsZC9oZWxsb19iYXJlbWV0YWxfJHtCQVJFTUVUQUxfUUVNVUFSQ0h9LmVsZiAke0R9LyR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uZWxmCit9CisKKyMgQm9ycm93ZWQgZnJvbSBtZXRhLWZyZWVydG9zCitpbmhlcml0IHJvb3Rmcy1wb3N0Y29tbWFuZHMKK2luaGVyaXQgZGVwbG95CitJTUdERVBMT1lESVIgPz0gIiR7V09SS0RJUn0vZGVwbG95LSR7UE59LWltYWdlLWNvbXBsZXRlIgorZG9fZGVwbG95W2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0RFUExPWV9ESVJfSU1BR0V9IgorZG9fcm9vdGZzW2RpcnNdID0gIiR7REVQTE9ZRElSfSAke0RFUExPWV9ESVJfSU1BR0V9IgorREVQTE9ZRElSID0gIiR7SU1HREVQTE9ZRElSfSIKK0lNQUdFX0xJTktfTkFNRSA/PSAiYmFyZW1ldGFsLWhlbGxvd29ybGQtaW1hZ2UtJHtNQUNISU5FfSIKK0lNQUdFX05BTUVfU1VGRklYID89ICIiCisKK2RvX2RlcGxveSgpeworICAgIGluc3RhbGwgJHtEfS8ke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmJpbiAke0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmJpbgorICAgIGluc3RhbGwgJHtEfS8ke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmVsZiAke0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmVsZgorfQorCitkb19pbWFnZSgpeworICAgIDoKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5iaW4gXAorICAgICR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uZWxmIFwKKyIKKworcHl0aG9uIGRvX3Jvb3RmcygpeworICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcworICAgIGZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorCisgICAgIyBXcml0ZSBlbXB0eSBtYW5pZmVzdCB0ZXN0ZGF0ZSBmaWxlCisgICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdERVBMT1lESVInKQorICAgIGxpbmtfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9MSU5LX05BTUUnKQorICAgIG1hbmlmZXN0X25hbWUgPSBkLmdldFZhcignSU1BR0VfTUFOSUZFU1QnKQorCisgICAgUGF0aChtYW5pZmVzdF9uYW1lKS50b3VjaCgpCisgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3RfbmFtZSkgYW5kIGxpbmtfbmFtZToKKyAgICAgICAgbWFuaWZlc3RfbGluayA9IGRlcGxveV9kaXIgKyAiLyIgKyBsaW5rX25hbWUgKyAiLm1hbmlmZXN0IgorICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMobWFuaWZlc3RfbGluayk6CisgICAgICAgICAgICBvcy5yZW1vdmUobWFuaWZlc3RfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKG1hbmlmZXN0X25hbWUpLCBtYW5pZmVzdF9saW5rKQorICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhkLCBkLmdldFZhcignUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnKSkKK30KKworIyBRRU1VIGdlbmVyaWMgRnJlZVJUT1MgcGFyYW1ldGVycworUUJfREVGQVVMVF9LRVJORUwgPSAiJHtJTUFHRV9MSU5LX05BTUV9LmJpbiIKK1FCX01FTSA9ICItbSAyNTYiCitRQl9PUFRfQVBQRU5EID0gIi1ub2dyYXBoaWMiCitRQl9ERUZBVUxUX0ZTVFlQRSA9ICJiaW4iCitRQl9EVEIgPSAiIgorCisjIFRoaXMgbmV4dCBwYXJ0IGlzIG5lY2Vzc2FyeSB0byB0cmljayB0aGUgYnVpbGQgc3lzdGVtIGludG8gdGhpbmtpbmcKKyMgaXRzIGJ1aWxkaW5nIGFuIGltYWdlIHJlY2lwZSBzbyBpdCBnZW5lcmF0ZXMgdGhlIHFlbXVib290LmNvbmYKK2FkZHRhc2sgZG9fZGVwbG95IGFmdGVyIGRvX3dyaXRlX3FlbXVib290X2NvbmYgYmVmb3JlIGRvX2J1aWxkCithZGR0YXNrIGRvX3Jvb3RmcyBiZWZvcmUgZG9fZGVwbG95IGFmdGVyIGRvX2luc3RhbGwKK2FkZHRhc2sgZG9faW1hZ2UgYWZ0ZXIgZG9fcm9vdGZzIGJlZm9yZSBkb19idWlsZAoraW5oZXJpdCBxZW11Ym9vdAorCisjIEJhc2VkIG9uIGltYWdlLmJiY2xhc3MgdG8gbWFrZSBzdXJlIHdlIGJ1aWxkIHFlbXUKK3B5dGhvbigpeworICAgICMgZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QgZG9lc250IGV4aXN0IGZvciBhbGwgcmVjaXBlcywgYnV0IHdlIG5lZWQgaXQgdG8gaGF2ZQorICAgICMgL3Vzci9iaW4gb24gcmVjaXBlLXN5c3Jvb3QgKHFlbXUpIHBvcHVsYXRlZAorICAgIGRlZiBleHRyYWltYWdlX2dldGRlcGVuZHModGFzayk6CisgICAgICAgIGRlcHMgPSAiIgorICAgICAgICBmb3IgZGVwIGluIChkLmdldFZhcignRVhUUkFfSU1BR0VERVBFTkRTJykgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIG9ubHkgYWRkIGl0IGZvciBxZW11CisgICAgICAgICAgICBpZiAncWVtdScgaW4gZGVwOgorICAgICAgICAgICAgICAgIGRlcHMgKz0gIiAlczolcyIgJSAoZGVwLCB0YXNrKQorICAgICAgICByZXR1cm4gZGVwcworICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2UnLCAnZGVwZW5kcycsIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcygnZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QnKSkKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX3BvcHVsYXRlX3N5c3Jvb3QnKSkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKaW5kZXggZDhkMmEwYy4uNTk5NmJlNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUKQEAgLTI4LDcgKzI4LDYgQEAKIFRoZSBmb2xsb3dpbmcgYm9hcmRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG1ldGEteW9jdG8tYnNwIGxheWVyOgogCiAgICogVGV4YXMgSW5zdHJ1bWVudHMgQmVhZ2xlYm9uZSAoYmVhZ2xlYm9uZS15b2N0bykKLSAgKiBGcmVlc2NhbGUgTVBDODMxNUUtUkRCIChtcGM4MzE1ZS1yZGIpCiAgICogVWJpcXVpdGkgTmV0d29ya3MgRWRnZVJvdXRlciBMaXRlIChlZGdlcm91dGVyKQogICAqIEdlbmVyYWwgSUEgcGxhdGZvcm1zIChnZW5lcmljeDg2IGFuZCBnZW5lcmljeDg2LTY0KQogCkBAIC0xNTUsMTQ3ICsxNTQsNiBAQAogCiAgIDMuIEluc2VydCB0aGUgU0QgY2FyZCBpbnRvIHRoZSBCZWFnbGVib25lIGFuZCBib290IHRoZSBib2FyZC4KIAotRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1UaGUgTVBDODMxNSBQb3dlclBDIHJlZmVyZW5jZSBwbGF0Zm9ybSAoTVBDODMxNUUtUkRCKSBpcyBhaW1lZCBhdCBoYXJkd2FyZSBhbmQKLXNvZnR3YXJlIGRldmVsb3BtZW50IG9mIG5ldHdvcmsgYXR0YWNoZWQgc3RvcmFnZSAoTkFTKSBhbmQgZGlnaXRhbCBtZWRpYSBzZXJ2ZXIKLWFwcGxpY2F0aW9ucy4gVGhlIE1QQzgzMTVFLVJEQiBmZWF0dXJlcyB0aGUgUG93ZXJRVUlDQyBJSSBQcm8gcHJvY2Vzc29yLCB3aGljaAotaW5jbHVkZXMgYSBidWlsdC1pbiBzZWN1cml0eSBhY2NlbGVyYXRvci4KLQotKE5vdGU6IHlvdSBtYXkgZmluZCBpdCBlYXNpZXIgdG8gb3JkZXIgTVBDODMxNUUtUkRCQTsgdGhpcyBhcHBlYXJzIHRvIGJlIHRoZQotc2FtZSBib2FyZCBpbiBhbiBlbmNsb3N1cmUgd2l0aCBhY2Nlc3Nvcmllcy4gSW4gYW55IGNhc2UgaXQgaXMgZnVsbHkKLWNvbXBhdGlibGUgd2l0aCB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuIGhlcmUuKQotCi1TZXR1cCBpbnN0cnVjdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Zb3Ugd2lsbCBuZWVkIHRoZSBmb2xsb3dpbmc6Ci0qIE5GUyByb290IHNldHVwIG9uIHlvdXIgd29ya3N0YXRpb24KLSogVEZUUCBzZXJ2ZXIgaW5zdGFsbGVkIG9uIHlvdXIgd29ya3N0YXRpb24KLSogU3RyYWlnaHQtdGhydSA5LWNvbmR1Y3RvciBzZXJpYWwgY2FibGUgKERCOSwgTS9GKSBjb25uZWN0ZWQgZnJvbSB5b3VyIAotICBQQyB0byBVQVJUMQotKiBFdGhlcm5ldCBjb25uZWN0ZWQgdG8gdGhlIGZpcnN0IGV0aGVybmV0IHBvcnQgb24gdGhlIGJvYXJkCi0KLS0tLSBQcmVwYXJhdGlvbiAtLS0KLQotTm90ZTogaWYgeW91IGhhdmUgYWx0ZXJlZCB5b3VyIGJvYXJkJ3MgZXRoZXJuZXQgTUFDIGFkZHJlc3MoZXMpIGZyb20gdGhlCi1kZWZhdWx0cywgb3IgeW91IG5lZWQgdG8gZG8gc28gYmVjYXVzZSB5b3Ugd2FudCBtdWx0aXBsZSBib2FyZHMgb24gdGhlIHNhbWUKLW5ldHdvcmssIHRoZW4geW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlcyBpbiB0aGUgZHRzIGZpbGUgKHBhdGNoCi1saW51eC9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjODMxNWVyZGIuZHRzIHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSkuIElmCi15b3UgaGF2ZSBsZWZ0IHRoZW0gYXQgdGhlIGZhY3RvcnkgZGVmYXVsdCB0aGVuIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBkbwotYW55dGhpbmcgaGVyZS4KLQotTm90ZTogVG8gYm9vdCBmcm9tIFVTQiBkaXNrIHlvdSBuZWVkIHUtYm9vdCB0aGF0IHN1cHBvcnRzICdleHQybG9hZCB1c2InCi1jb21tYW5kLiBZb3UgbmVlZCB0byBzZXR1cCBURlRQIHNlcnZlciwgbG9hZCB1LWJvb3QgZnJvbSB0aGVyZSBhbmQKLWZsYXNoIGl0IHRvIE5PUiBmbGFzaC4KLQotQmV3YXJlISBGbGFzaGluZyBib290bG9hZGVyIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cyBvcGVyYXRpb24gdGhhdCBjYW4KLWJyaWNrIHlvdXIgZGV2aWNlIGlmIGRvbmUgaW5jb3JyZWN0bHkuIFBsZWFzZSwgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kCi13aGF0IGJlbG93IGNvbW1hbmRzIG1lYW4gYmVmb3JlIGV4ZWN1dGluZyB0aGVtLgotCi1Mb2FkIHRoZSBuZXcgdS1ib290LmJpbiBmcm9tIFRGVFAgc2VydmVyIHRvIG1lbW9yeSBhZGRyZXNzIDIwMDAwMAotPT4gdGZ0cCAyMDAwMDAgdS1ib290LmJpbgotCi1EaXNhYmxlIGZsYXNoIHByb3RlY3Rpb24KLT0+IHByb3RlY3Qgb2ZmIGFsbAotCi1FcmFzZSB0aGUgb2xkIHUtYm9vdCBmcm9tIGZlMDAwMDAwIHRvIGZlMDZmZmZmIGluIE5PUiBmbGFzaC4KLVRoZSBzaXplIGlzIDB4NzAwMDAgKDQ1ODc1MiBieXRlcykKLT0+IGVyYXNlIGZlMDAwMDAwIGZlMDZmZmZmCi0KLUNvcHkgdGhlIG5ldyB1LWJvb3QgZnJvbSBhZGRyZXNzIDIwMDAwMCB0byBmZTAwMDAwMAotdGhlIHNpemUgaXMgMHg3MDAwMC4gSXQgaGFzIHRvIGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdS1ib290LmJpbiBzaXplCi09PiBjcC5iIDIwMDAwMCBmZTAwMDAwMCA3MDAwMAotCi1FbmFibGUgZmxhc2ggcHJvdGVjdGlvbiBhZ2FpbgotPT4gcHJvdGVjdCBvbiBhbGwKLQotUmVzZXQgdGhlIGJvYXJkCi09PiByZXNldAotCi0tLS0gQm9vdGluZyBmcm9tIFVTQiBkaXNrIC0tLQotCi0gMS4gRmxhc2ggcGFydGl0aW9uZWQgaW1hZ2UgdG8gdGhlIFVTQiBkaXNrCi0KLSAgICAjIGRkIGlmPWNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIud2ljIG9mPS9kZXYvc2RiCi0KLSAyLiBQbHVnIFVTQiBkaXNrIGludG8gdGhlIE1QQzgzMTUgYm9hcmQKLQotIDMuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAotICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAotICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgotCi0gICQgcGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwCi0KLSA0LiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCi0gICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCi0KLSA1LiBPcHRpb25hbC4gTG9hZCB0aGUgdS1ib290LmJpbiBmcm9tIHRoZSBVU0IgZGlzazoKLQotID0+IHVzYiBzdGFydAotID0+IGV4dDJsb2FkIHVzYiAwOjEgMjAwMDAwIHUtYm9vdC5iaW4KLQotICAgIGFuZCBmbGFzaCBpdCB0byBOT1IgZmxhc2ggYXMgZGVzY3JpYmVkIGFib3ZlLgotCi0gNi4gTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIG9mIHRoZSBVU0IgZGlzazoKLQotID0+IHVzYiBzdGFydAotID0+IGV4dDJsb2FkIHVzYiAwOjEgMTAwMDAwMCB1SW1hZ2UKLSA9PiBleHQybG9hZCB1c2IgMDoxIDIwMDAwMDAgZHRiCi0KLSA3LiBTZXQgYm9vdGFyZ3MgYW5kIGJvb3QgdXAgdGhlIGRldmljZQotCi0gPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGIyIHJ3IHJvb3R3YWl0IGNvbnNvbGU9dHR5UzAsMTE1MjAwCi0gPT4gYm9vdG0gMTAwMDAwMCAtIDIwMDAwMDAKLQotCi0tLS0gQm9vdGluZyBmcm9tIE5GUyByb290IC0tLQotCi1Mb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiAoZGV2aWNlIHRyZWUgYmxvYiksIGFuZCBib290IHRoZSBzeXN0ZW0gYXMgZm9sbG93czoKLQotIDEuIEdldCB0aGUga2VybmVsICh1SW1hZ2UtbXBjODMxNWUtcmRiLmJpbikgYW5kIGR0YiAodUltYWdlLW1wYzgzMTVlLXJkYi5kdGIpCi0gICAgZmlsZXMgZnJvbSB0aGUgdG1wL2RlcGxveSBkaXJlY3RvcnksIGFuZCBtYWtlIHRoZW0gYXZhaWxhYmxlIG9uIHlvdXIgVEZUUAotICAgIHNlcnZlci4KLQotIDIuIENvbm5lY3QgdGhlIGJvYXJkJ3MgZmlyc3Qgc2VyaWFsIHBvcnQgdG8geW91ciB3b3Jrc3RhdGlvbiBhbmQgdGhlbiBzdGFydCB1cAotICAgIHlvdXIgZmF2b3VyaXRlIHNlcmlhbCB0ZXJtaW5hbCBzbyB0aGF0IHlvdSB3aWxsIGJlIGFibGUgdG8gaW50ZXJhY3Qgd2l0aAotICAgIHRoZSBzZXJpYWwgY29uc29sZS4gSWYgeW91IGRvbid0IGhhdmUgYSBmYXZvdXJpdGUsIHBpY29jb20gaXMgc3VnZ2VzdGVkOgotCi0gICQgcGljb2NvbSAvZGV2L3R0eVVTQjAgLWIgMTE1MjAwCi0KLSAzLiBQb3dlciB1cCBvciByZXNldCB0aGUgYm9hcmQgYW5kIHByZXNzIGEga2V5IG9uIHRoZSB0ZXJtaW5hbCB3aGVuIHByb21wdGVkCi0gICAgdG8gZ2V0IHRvIHRoZSBVLUJvb3QgY29tbWFuZCBsaW5lCi0KLSA0LiBTZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKLQotID0+IHNldGVudiBpcGFkZHIgPGJvYXJkIGlwPgotID0+IHNldGVudiBzZXJ2ZXJpcCA8dGZ0cCBzZXJ2ZXIgaXA+Ci0gPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD08bmZzcm9vdCBpcD46PHJvb3RmcyBwYXRoPiBpcD08Ym9hcmQgaXA+OjxzZXJ2ZXIgaXA+OjxnYXRld2F5IGlwPjoyNTUuMjU1LjI1NS4wOm1wYzgzMTVlOmV0aDA6b2ZmIGNvbnNvbGU9dHR5UzAsMTE1MjAwCi0KLSA1LiBEb3dubG9hZCB0aGUga2VybmVsIGFuZCBkdGIsIGFuZCBib290OgotCi0gPT4gdGZ0cCAxMDAwMDAwIHVJbWFnZS1tcGM4MzE1ZS1yZGIuYmluCi0gPT4gdGZ0cCAyMDAwMDAwIHVJbWFnZS1tcGM4MzE1ZS1yZGIuZHRiCi0gPT4gYm9vdG0gMTAwMDAwMCAtIDIwMDAwMDAKLQotLS0tIEJvb3RpbmcgZnJvbSBKRkZTMiByb290IC0tLQotCi0gMS4gRmlyc3QgYm9vdCB0aGUgYm9hcmQgd2l0aCBORlMgcm9vdC4KLQotIDIuIEVyYXNlIHRoZSBNVEQgcGFydGl0aW9uIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyByb290OgotCi0gICAgJCBmbGFzaF9lcmFzZWFsbCAgL2Rldi9tdGQzCi0KLSAzLiBDb3B5IHRoZSBKRkZTMiBpbWFnZSB0byB0aGUgTVREIHBhcnRpdGlvbjoKLQotICAgICQgZmxhc2hjcCBjb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLmpmZnMyIC9kZXYvbXRkMwotCi0gNC4gVGhlbiByZWJvb3QgdGhlIGJvYXJkIGFuZCBzZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDoKLQotICAgID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2szIHJvb3Rmc3R5cGU9amZmczIgY29uc29sZT10dHlTMCwxMTUyMDAKLQotCiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKaW5kZXggYzk0YmIwMC4uNjRiMTI0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYKQEAgLTksNCArOSw0IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0b2JzcCA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvYnNwID0gIjUiCiBMQVlFUlZFUlNJT05feW9jdG9ic3AgPSAiNCIKLUxBWUVSU0VSSUVTX0NPTVBBVF95b2N0b2JzcCA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gImR1bmZlbGwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKaW5kZXggMDhkZDNhNS4uNWI0ODE0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgpAQCAtMjQsNyArMjQsNyBAQAogU0VSSUFMX0NPTlNPTEVTX0NIRUNLID0gIiR7U0VSSUFMX0NPTlNPTEVTfSIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuNCUiCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgogS0VSTkVMX0RFVklDRVRSRUUgPSAiYW0zMzV4LWJvbmUuZHRiIGFtMzM1eC1ib25lYmxhY2suZHRiIGFtMzM1eC1ib25lZ3JlZW4uZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCmluZGV4IDYzMzEzNjguLmQ2ZmQ5MzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKQEAgLTExLDcgKzExLDcgQEAKIEtFUk5FTF9JTUFHRV9TVFJJUF9FWFRSQV9TRUNUSU9OUyAgPSAiLmNvbW1lbnQiCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjQlIgogCiBTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eVMwIgogVVNFX1ZUID89ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwppbmRleCBmODNjZTVjLi5hNmMzOTZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwpAQCAtMjAsNiArMjAsNyBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9wbi1tYXRjaGJveC1wYW5lbC0yID0gIiAtLXdpdGgtYmF0dGVyeT1hY3BpIgogCiBJTUFHRV9GU1RZUEVTICs9ICJ3aWMgd2ljLmJtYXAiCi1XS1NfRklMRSA/PSAiZ2VuZXJpY3g4Ni53a3MiCitXS1NfRklMRSA/PSAiZ2VuZXJpY3g4Ni53a3MuaW4iCitFRklfUFJPVklERVIgPz89ICJncnViLWVmaSIKIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAiZ3B0ZmRpc2stbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19pbWFnZV93aWNbcmVjcmRlcHRhc2tdICs9ICJkb19ib290aW1nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM4Mjc5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSNAVFlQRTogTWFjaGluZQotI0BOQU1FOiBGcmVlc2NhbGUgTVBDODMxNUUtUkRCCi0jQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIKLQotVEFSR0VUX0ZQVSA9ICIiCi0KLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzMuaW5jCi0KLUtFUk5FTF9JTUFHRVRZUEUgPSAidUltYWdlIgotCi1FWFRSQV9JTUFHRURFUEVORFMgKz0gInUtYm9vdCIKLVVCT09UX01BQ0hJTkUgPSAiTVBDODMxNUVSREJfY29uZmlnIgotCi1TRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eVMwIgotCi1NQUNISU5FX0ZFQVRVUkVTID0gImtleWJvYXJkIHBjaSBleHQyIGV4dDMgc2VyaWFsIgotCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi0KLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKLVhTRVJWRVIgPz0gInhzZXJ2ZXIteG9yZyBcCi0gICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IgotCi1VQk9PVF9FTlRSWVBPSU5UID0gIjB4MDAwMDAwMDAiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFID0gIm1wYzgzMTVlcmRiLmR0YiIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlcyIKLQotSU1BR0VfRlNUWVBFUyA/PSAiamZmczIgdGFyLmJ6MiIKLUpGRlMyX0VSQVNFQkxPQ0sgPSAiMHg0MDAwIgotCi1JTUFHRV9GU1RZUEVTICs9ICJ3aWMgd2ljLmJtYXAiCi1XS1NfRklMRSA/PSAnbXBjODMxNWUtcmRiLndrcycKLUlNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC5iaW4gdUltYWdlIG1wYzgzMTVlcmRiLmR0YjtkdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weSBiL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CmluZGV4IDBhM2EyY2QuLjU3NTk5ZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5CkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHJ1bkNtZCgncm0gLWYgJXMnICUgc3lzdGVtZGJvb3RmaWxlKQogCiAgICAgICAgICMgQnVpbGQgYSBnZW5lcmljeDg2LTY0L2VmaSBzeXN0ZW1kYm9vdCBpbWFnZQotICAgICAgICBiaXRiYWtlKCdtdG9vbHMtbmF0aXZlIGNvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJ210b29scy1uYXRpdmUgY29yZS1pbWFnZS1taW5pbWFsIHdpYy10b29scycpCiAKICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShzeXN0ZW1kYm9vdGZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ1N5c3RlbWQtQm9vdCBmaWxlICVzIG5vdCBmb3VuZCcgJSBzeXN0ZW1kYm9vdGZpbGUpCkBAIC0zOCw5ICszOCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBTdW1tYXJ5OiAgICAgIENoZWNrIGlmIEVGSSBib290bG9hZGVyIGZvciBzeXN0ZW1kIGlzIGNvcnJlY3RseSBidWlsZAogICAgICAgICBEZXBlbmRlbmNpZXM6IEltYWdlIHdhcyBidWlsdCBjb3JyZWN0bHkgb24gdGVzdGNhc2UgMTQ0NQotICAgICAgICBTdGVwczogICAgICAgIDEuIENvcHkgYm9vdHg2NC5lZmkgZmlsZSBmb3JtIHRoZSBoZGRpbWcgY3JlYXRlZAorICAgICAgICBTdGVwczogICAgICAgIDEuIENvcHkgYm9vdHg2NC5lZmkgZmlsZSBmcm9tIHRoZSB3aWMgY3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIGJ1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzL2dlbmVyaWN4ODYtNjQKLSAgICAgICAgICAgICAgICAgICAgICAyLiBDaGVjayBib290eDY0LmVmaSB3YXMgY29waWVkIGZvcm0gaGRkaW1nCisgICAgICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgYm9vdHg2NC5lZmkgd2FzIGNvcGllZCBmcm9tIHdpYwogICAgICAgICAgICAgICAgICAgICAgIDMuIFZlcmlmeSB0aGUgY2hlY2tzdW1zIGZyb20gdGhlIGNvcGllZCBhbmQgcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgZmlsZSBhcmUgZXF1YWwuCiAgICAgICAgIEV4cGVjdGVkIDogICAgU3lzdGVtZC1ib290eDY0LmVmaSBhbmQgYm9vdHg2NC5lZmkgc2hvdWxkIGJlIHRoZSBzYW1lCkBAIC01MCwxNiArNTAsMTcgQEAKICAgICAgICAgQXV0b21hdGVkQnk6ICBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphIGF0IGxpbnV4LWludGVsLmNvbT4KICAgICAgICAgIiIiCiAKLSAgICAgICAgc3lzdGVtZGJvb3RpbWFnZSA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC5oZGRpbWcnKQorICAgICAgICBzeXN0ZW1kYm9vdGltYWdlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2NvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LndpYycpCiAgICAgICAgIGltYWdlYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnYm9vdHg2NC5lZmknKQotICAgICAgICBtY29weW5hdGl2ZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnLCAiY29yZS1pbWFnZS1taW5pbWFsIiksICdtY29weScpCiAKICAgICAgICAgIyBDbGVhbiBlbnZpcm9ubWVudCBiZWZvcmUgc3RhcnQgdGhlIHRlc3QKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSk6CiAgICAgICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIGltYWdlYm9vdGZpbGUpCiAKLSAgICAgICAgcnVuQ21kKCclcyAtaSAlcyA6OkVGSS9CT09UL2Jvb3R4NjQuZWZpICVzJyAlIChtY29weW5hdGl2ZSAsc3lzdGVtZGJvb3RpbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vib290ZmlsZSkpCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICBydW5DbWQoJ3dpYyBjcCAlczoxL0VGSS9CT09UL2Jvb3R4NjQuZWZpICVzIC1uICVzJyAlIChzeXN0ZW1kYm9vdGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZWJvb3RmaWxlLCBzeXNyb290KSkKIAogICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKGltYWdlYm9vdGZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ2Jvb3R4NjQuZWZpIGZpbGUgJXMgd2FzIG5vdCBjb3BpZWQgZnJvbSBpbWFnZScKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKaW5kZXggZjA0NGRhZi4uNmU1YTEyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQKQEAgLTIsNyArMiw2IEBACiBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCiBLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKIEtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgotS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAogS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgogS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgpAQCAtMTIsNCArMTEsMyBAQAogQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMjY5ZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE5L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTkvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE5L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjU2NjRkYzE0Mzk5ZWRjYWFkMjEwYmJlYjYzNDNkODQ1NjFmYjNlYTgiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiNTY2NGRjMTQzOTllZGNhYWQyMTBiYmViNjM0M2Q4NDU2MWZiM2VhOCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjU2NjRkYzE0Mzk5ZWRjYWFkMjEwYmJlYjYzNDNkODQ1NjFmYjNlYTgiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImQ0MTlmNGNhNmJhNGIwOTdiOGFkNzEwYTkzYjg5NTEwZjViMjk5OGMiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTkuMzQiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xOS4zNCIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTkuMzQiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE5LjM0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1YmNjYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjUuMi9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjUuMi9zdGFuZGFyZC9lZGdlcm91dGVyIgotS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjIvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY1LjIvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKLQotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiMjViMTRjZGY5NjU5YzY4YWIzMmQ2NjYxNmRmZGJiZTJlY2UzZmQ5NCIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIyNWIxNGNkZjk2NTljNjhhYjMyZDY2NjE2ZGZkYmJlMmVjZTNmZDk0IgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiMjViMTRjZGY5NjU5YzY4YWIzMmQ2NjYxNmRmZGJiZTJlY2UzZmQ5NCIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiNzdmMDMxYjE4Mjg4NWMxNzdiM2E5NjA5OGFlNjEyNzE5MTFhNzk1NCIKLQotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCi1DT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgotCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS4yLjE3IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjIuMTciCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNS4yLjE3IgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNS4yLjE3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzM0Y2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKQEAgLTAsMCArMSwyMyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NS40L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjUuNC9zdGFuZGFyZC9iZWFnbGVib25lIgorCitLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCitLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCitLTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgorCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ID89ICJmNGQ3ZGJhZmIxMDNlNGY3ODIzMjMwMTdjMjM5YzU0ODg3MWMxNTY3IgorU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKK1NSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImY0ZDdkYmFmYjEwM2U0Zjc4MjMyMzAxN2MyMzljNTQ4ODcxYzE1NjciCitTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICJmNGQ3ZGJhZmIxMDNlNGY3ODIzMjMwMTdjMjM5YzU0ODg3MWMxNTY3IgorCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgorQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKK0NPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCitDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgorCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS40LjIwIgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuNC4yMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjQuMjAiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNS40LjIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MgYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2LndrcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFiNzE5Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2LndrcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgotIyBsb25nLWRlc2NyaXB0aW9uOiBDcmVhdGVzIGEgcGFydGl0aW9uZWQgRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqIG1hY2hpbmVzCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9Z3J1Yi1lZmkiIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNAotcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCi1wYXJ0IHN3YXAgLS1vbmRpc2sgc2RhIC0tc2l6ZSA0NCAtLWxhYmVsIHN3YXAxIC0tZnN0eXBlPXN3YXAKLQotYm9vdGxvYWRlciAtLXB0YWJsZSBncHQgLS10aW1lb3V0PTUgLS1hcHBlbmQ9InJvb3Rmc3R5cGU9ZXh0NCBjb25zb2xlPXR0eVMwLDExNTIwMCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2Lndrcy5pbiBiL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMDlhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2Lndrcy5pbgpAQCAtMCwwICsxLDcgQEAKKyMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKKyMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KiBtYWNoaW5lcworcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPSR7RUZJX1BST1ZJREVSfSIgLS1vbmRpc2sgc2RhIC0tbGFiZWwgbXNkb3MgLS1hY3RpdmUgLS1hbGlnbiAxMDI0CitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0IC0tdXNlLXV1aWQKK3BhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcAorCitib290bG9hZGVyIC0tcHRhYmxlIGdwdCAtLXRpbWVvdXQ9NSAtLWFwcGVuZD0icm9vdGZzdHlwZT1leHQ0IGNvbnNvbGU9dHR5UzAsMTE1MjAwIGNvbnNvbGU9dHR5MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL21wYzgzMTVlLXJkYi53a3MgYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9tcGM4MzE1ZS1yZGIud2tzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGNiNjA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL21wYzgzMTVlLXJkYi53a3MKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBNUEM4MzE1RS1SREIKLSMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlIGEgcGFydGl0aW9uZWQgU0QgY2FyZCBpbWFnZSBmb3IgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiByZWZlcmVuY2UgaGFyZHdhcmUuCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGFydGl0aW9uIC0tb25kaXNrIHNkYiAtLWZzdHlwZT1leHQzIC0tbGFiZWwgYm9vdAotcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIHJvb3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCmluZGV4IDdjNDZjZmYuLjQ4YjQ5MTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwpAQCAtMiwyNSArMiw0MiBAQAogIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQogIwogIyBUaGlzIGJiY2xhc3MgaXMgdXNlZCBmb3IgY3JlYXRpbmcgYXJjaGl2ZSBmb3I6Ci0jIDEpIG9yaWdpbmFsIChvciB1bnBhY2tlZCkgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiCi0jIDIpIHBhdGNoZWQgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAicGF0Y2hlZCIgKGRlZmF1bHQpCi0jIDMpIGNvbmZpZ3VyZWQgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAiY29uZmlndXJlZCIKLSMgNCkgVGhlIHBhdGNoZXMgYmV0d2VlbiBkb191bnBhY2sgYW5kIGRvX3BhdGNoOgotIyAgICBBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiCi0jICAgIEFuZCB5b3UgY2FuIHNldCB0aGUgb25lIHRoYXQgeW91J2QgbGlrZSB0byBleGNsdWRlIGZyb20gdGhlIGRpZmY6Ci0jICAgIEFSQ0hJVkVSX01PREVbZGlmZi1leGNsdWRlXSA/PSAiLnBjIGF1dG9tNHRlLmNhY2hlIHBhdGNoZXMiCi0jIDUpIFRoZSBlbnZpcm9ubWVudCBkYXRhLCBzaW1pbGFyIHRvICdiaXRiYWtlIC1lIHJlY2lwZSc6Ci0jICAgIEFSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiCi0jIDYpIFRoZSByZWNpcGUgKC5iYiBhbmQgLmluYyk6IEFSQ0hJVkVSX01PREVbcmVjaXBlXSA9ICIxIgotIyA3KSBXaGV0aGVyIG91dHB1dCB0aGUgLnNyYy5ycG0gcGFja2FnZToKLSMgICAgQVJDSElWRVJfTU9ERVtzcnBtXSA9ICIxIgotIyA4KSBGaWx0ZXIgdGhlIGxpY2Vuc2UsIHRoZSByZWNpcGUgd2hvc2UgbGljZW5zZSBpbgotIyAgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIGluCi0jICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSB3aWxsIGJlIGV4Y2x1ZGVkLgotIyAgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUgPSAnR1BMKiBMR1BMKicKLSMgICAgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFID0gJ0NMT1NFRCBQcm9wcmlldGFyeScKLSMgOSkgVGhlIHJlY2lwZSB0eXBlIHRoYXQgd2lsbCBiZSBhcmNoaXZlZDoKLSMgICAgQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gJ3RhcmdldCcKKyMgIDEpIG9yaWdpbmFsIChvciB1bnBhY2tlZCkgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiCisjICAyKSBwYXRjaGVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gInBhdGNoZWQiIChkZWZhdWx0KQorIyAgMykgY29uZmlndXJlZCBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJjb25maWd1cmVkIgorIyAgNCkgc291cmNlIG1pcnJvcjogQVJDSElWRV9NT0RFW3NyY10gPSAibWlycm9yIgorIyAgNSkgVGhlIHBhdGNoZXMgYmV0d2VlbiBkb191bnBhY2sgYW5kIGRvX3BhdGNoOgorIyAgICAgQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxIgorIyAgICAgQW5kIHlvdSBjYW4gc2V0IHRoZSBvbmUgdGhhdCB5b3UnZCBsaWtlIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgZGlmZjoKKyMgICAgIEFSQ0hJVkVSX01PREVbZGlmZi1leGNsdWRlXSA/PSAiLnBjIGF1dG9tNHRlLmNhY2hlIHBhdGNoZXMiCisjICA2KSBUaGUgZW52aXJvbm1lbnQgZGF0YSwgc2ltaWxhciB0byAnYml0YmFrZSAtZSByZWNpcGUnOgorIyAgICAgQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPSAiMSIKKyMgIDcpIFRoZSByZWNpcGUgKC5iYiBhbmQgLmluYyk6IEFSQ0hJVkVSX01PREVbcmVjaXBlXSA9ICIxIgorIyAgOCkgV2hldGhlciBvdXRwdXQgdGhlIC5zcmMucnBtIHBhY2thZ2U6CisjICAgICBBUkNISVZFUl9NT0RFW3NycG1dID0gIjEiCisjICA5KSBGaWx0ZXIgdGhlIGxpY2Vuc2UsIHRoZSByZWNpcGUgd2hvc2UgbGljZW5zZSBpbgorIyAgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFIHdpbGwgYmUgaW5jbHVkZWQsIGFuZCBpbgorIyAgICAgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFIHdpbGwgYmUgZXhjbHVkZWQuCisjICAgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUgPSAnR1BMKiBMR1BMKicKKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSA9ICdDTE9TRUQgUHJvcHJpZXRhcnknCisjIDEwKSBUaGUgcmVjaXBlIHR5cGUgdGhhdCB3aWxsIGJlIGFyY2hpdmVkOgorIyAgICAgQ09QWUxFRlRfUkVDSVBFX1RZUEVTID0gJ3RhcmdldCcKKyMgMTEpIFRoZSBzb3VyY2UgbWlycm9yIG1vZGU6CisjICAgICBBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAic3BsaXQiIChkZWZhdWx0KTogU291cmNlcyBhcmUgc3BsaXQgaW50bworIyAgICAgcGVyLXJlY2lwZSBkaXJlY3RvcmllcyBpbiBhIHNpbWlsYXIgd2F5IHRvIG90aGVyIGFyY2hpdmVyIG1vZGVzLgorIyAgICAgUG9zdC1wcm9jZXNzaW5nIG1heSBiZSByZXF1aXJlZCB0byBwcm9kdWNlIGEgc2luZ2xlIG1pcnJvciBkaXJlY3RvcnkuCisjICAgICBUaGlzIGRvZXMgaG93ZXZlciBhbGxvdyBpbnNwZWN0aW9uIG9mIGR1cGxpY2F0ZSBzb3VyY2VzIGFuZCBtb3JlCisjICAgICBpbnRlbGxpZ2VudCBoYW5kbGluZy4KKyMgICAgIEFSQ0hJVkVSX01PREVbbWlycm9yXSA9ICJjb21iaW5lZCI6IEFsbCBzb3VyY2VzIGFyZSBwbGFjZWQgaW50byBhIHNpbmdsZQorIyAgICAgZGlyZWN0b3J5IHN1aXRhYmxlIGZvciBkaXJlY3QgdXNlIGFzIGEgbWlycm9yLiBEdXBsaWNhdGUgc291cmNlcyBhcmUKKyMgICAgIGlnbm9yZWQuCisjIDEyKSBTb3VyY2UgbWlycm9yIGV4Y2x1c2lvbnM6CisjICAgICBBUkNISVZFUl9NSVJST1JfRVhDTFVERSBpcyBhIGxpc3Qgb2YgcHJlZml4ZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBtaXJyb3IuCisjICAgICBUaGlzIG1heSBiZSB1c2VkIGZvciBzb3VyY2VzIHdoaWNoIHlvdSBhcmUgYWxyZWFkeSBwdWJsaXNoaW5nIHlvdXJzZWxmCisjICAgICAoZS5nLiBpZiB0aGUgVVJJIHN0YXJ0cyB3aXRoICdodHRwczovL215c2l0ZS5jb20vJyBhbmQgeW91ciBtaXJyb3IgaXMKKyMgICAgIGdvaW5nIHRvIGJlIHB1Ymxpc2hlZCB0byB0aGUgc2FtZSBzaXRlKS4gSXQgbWF5IGFsc28gYmUgdXNlZCB0byBleGNsdWRlCisjICAgICBsb2NhbCBmaWxlcyAod2l0aCB0aGUgcHJlZml4ICdmaWxlOi8vJykgaWYgdGhlc2Ugd2lsbCBiZSBwcm92aWRlZCBhcyBwYXJ0CisjICAgICBvZiBhbiBhcmNoaXZlIG9mIHRoZSBsYXllcnMgdGhlbXNlbHZlcy4KICMKIAogIyBDcmVhdGUgYXJjaGl2ZSBmb3IgYWxsIHRoZSByZWNpcGUgdHlwZXMKQEAgLTMzLDYgKzUwLDcgQEAKIEFSQ0hJVkVSX01PREVbZGlmZi1leGNsdWRlXSA/PSAiLnBjIGF1dG9tNHRlLmNhY2hlIHBhdGNoZXMiCiBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA/PSAiMCIKIEFSQ0hJVkVSX01PREVbcmVjaXBlXSA/PSAiMCIKK0FSQ0hJVkVSX01PREVbbWlycm9yXSA/PSAic3BsaXQiCiAKIERFUExPWV9ESVJfU1JDID89ICIke0RFUExPWV9ESVJ9L3NvdXJjZXMiCiBBUkNISVZFUl9UT1BESVIgPz0gIiR7V09SS0RJUn0vZGVwbG95LXNvdXJjZXMiCkBAIC00MSw2ICs1OSwxMCBAQAogQVJDSElWRVJfUlBNT1VURElSID0gIiR7QVJDSElWRVJfUlBNVE9QRElSfS8ke1RBUkdFVF9TWVN9LyR7UEZ9LyIKIEFSQ0hJVkVSX1dPUktESVIgPSAiJHtXT1JLRElSfS9hcmNoaXZlci13b3JrLyIKIAorIyBXaGVuIHByb2R1Y2luZyBhIGNvbWJpbmVkIG1pcnJvciBkaXJlY3RvcnksIGFsbG93IGR1cGxpY2F0ZXMgZm9yIHRoZSBjYXNlCisjIHdoZXJlIG11bHRpcGxlIHJlY2lwZXMgdXNlIHRoZSBzYW1lIFNSQ19VUkkuCitBUkNISVZFUl9DT01CSU5FRF9NSVJST1JESVIgPSAiJHtBUkNISVZFUl9UT1BESVJ9L21pcnJvciIKK1NTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9TUkN9L21pcnJvciIKIAogZG9fZHVtcGRhdGFbZGlyc10gPSAiJHtBUkNISVZFUl9PVVRESVJ9IgogZG9fYXJfcmVjaXBlW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSIKQEAgLTEwNiw2ICsxMjgsOCBAQAogICAgICAgICBlbGlmIGhhc1Rhc2soImRvX2NvbmZpZ3VyZSIpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19hcl9jb25maWd1cmVkJywgJ2RlcGVuZHMnLCAnICVzOmRvX2NvbmZpZ3VyZScgJSBwbikKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfY29uZmlndXJlZCcgJSBwbikKKyAgICBlbGlmIGFyX3NyYyA9PSAibWlycm9yIjoKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXBsb3lfYXJjaGl2ZXMnLCAnZGVwZW5kcycsICclczpkb19hcl9taXJyb3InICUgcG4pCiAKICAgICBlbGlmIGFyX3NyYzoKICAgICAgICAgYmIuZmF0YWwoIkludmFsaWQgQVJDSElWRVJfTU9ERVtzcmNdOiAlcyIgJSBhcl9zcmMpCkBAIC0yODEsNiArMzA1LDc5IEBACiAgICAgICAgIGNyZWF0ZV90YXJiYWxsKGQsIHNyY2RpciwgJ2NvbmZpZ3VyZWQnLCBhcl9vdXRkaXIpCiB9CiAKK3B5dGhvbiBkb19hcl9taXJyb3IoKSB7CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAnJykuc3BsaXQoKQorICAgIGlmIGxlbihzcmNfdXJpKSA9PSAwOgorICAgICAgICByZXR1cm4KKworICAgIGRsX2RpciA9IGQuZ2V0VmFyKCdETF9ESVInKQorICAgIG1pcnJvcl9leGNsdXNpb25zID0gKGQuZ2V0VmFyKCdBUkNISVZFUl9NSVJST1JfRVhDTFVERScpIG9yICcnKS5zcGxpdCgpCisgICAgbWlycm9yX21vZGUgPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnbWlycm9yJykKKyAgICBoYXZlX21pcnJvcl90YXJiYWxscyA9IGQuZ2V0VmFyKCdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnKQorCisgICAgaWYgbWlycm9yX21vZGUgPT0gJ2NvbWJpbmVkJzoKKyAgICAgICAgZGVzdGRpciA9IGQuZ2V0VmFyKCdBUkNISVZFUl9DT01CSU5FRF9NSVJST1JESVInKQorICAgIGVsaWYgbWlycm9yX21vZGUgPT0gJ3NwbGl0JzoKKyAgICAgICAgZGVzdGRpciA9IGQuZ2V0VmFyKCdBUkNISVZFUl9PVVRESVInKQorICAgIGVsc2U6CisgICAgICAgIGJiLmZhdGFsKCdJbnZhbGlkIEFSQ0hJVkVSX01PREVbbWlycm9yXTogJXMnICUgKG1pcnJvcl9tb2RlKSkKKworICAgIGlmIG5vdCBoYXZlX21pcnJvcl90YXJiYWxsczoKKyAgICAgICAgYmIuZmF0YWwoJ1VzaW5nIGBBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yImAgZGVwZW5kcyBvbiBzZXR0aW5nIGBCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSJgJykKKworICAgIGRlZiBpc19leGNsdWRlZCh1cmwpOgorICAgICAgICBmb3IgcHJlZml4IGluIG1pcnJvcl9leGNsdXNpb25zOgorICAgICAgICAgICAgaWYgdXJsLnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGJiLm5vdGUoJ0FyY2hpdmluZyB0aGUgc291cmNlIGFzIGEgbWlycm9yLi4uJykKKworICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorCisgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChzcmNfdXJpLCBkKQorCisgICAgZm9yIHVybCBpbiBmZXRjaGVyLnVybHM6CisgICAgICAgIGlmIGlzX2V4Y2x1ZGVkKHVybCk6CisgICAgICAgICAgICBiYi5ub3RlKCdTa2lwcGluZyBleGNsdWRlZCB1cmw6ICVzJyAlICh1cmwpKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBiYi5ub3RlKCdBcmNoaXZpbmcgdXJsOiAlcycgJSAodXJsKSkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW3VybF0KKyAgICAgICAgdWQuc2V0dXBfbG9jYWxwYXRoKGQpCisgICAgICAgIGxvY2FscGF0aCA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGZvciBtaXJyb3IgdGFyYmFsbHMgZmlyc3QuIFdlIHdpbGwgYXJjaGl2ZSB0aGUgZmlyc3QgbWlycm9yCisgICAgICAgICMgdGFyYmFsbCB0aGF0IHdlIGZpbmQgYXMgaXQncyBhc3N1bWVkIHRoYXQgd2UganVzdCBuZWVkIG9uZS4KKyAgICAgICAgZm9yIG1pcnJvcl9mbmFtZSBpbiB1ZC5taXJyb3J0YXJiYWxsczoKKyAgICAgICAgICAgIG1pcnJvcl9wYXRoID0gb3MucGF0aC5qb2luKGRsX2RpciwgbWlycm9yX2ZuYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWlycm9yX3BhdGgpOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0ZvdW5kIG1pcnJvciB0YXJiYWxsOiAlcycgJSAobWlycm9yX3BhdGgpKQorICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IG1pcnJvcl9wYXRoCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBpZiBsZW4odWQubWlycm9ydGFyYmFsbHMpIGFuZCBub3QgbG9jYWxwYXRoOgorICAgICAgICAgICAgYmIud2FybignTWlycm9yIHRhcmJhbGxzIGFyZSBsaXN0ZWQgZm9yIGEgc291cmNlIGJ1dCBub25lIGFyZSBwcmVzZW50LiAnIFwKKyAgICAgICAgICAgICAgICAgICAgJ0ZhbGxpbmcgYmFjayB0byBvcmlnaW5hbCBkb3dubG9hZC5cbicgXAorICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICVzJyAlICh1cmwpKQorCisgICAgICAgICMgQ2hlY2sgb3JpZ2luYWwgZG93bmxvYWQKKyAgICAgICAgaWYgbm90IGxvY2FscGF0aDoKKyAgICAgICAgICAgIGJiLm5vdGUoJ1VzaW5nIG9yaWdpbmFsIGRvd25sb2FkOiAlcycgJSAodWQubG9jYWxwYXRoKSkKKyAgICAgICAgICAgIGxvY2FscGF0aCA9IHVkLmxvY2FscGF0aAorCisgICAgICAgIGlmIG5vdCBsb2NhbHBhdGggb3Igbm90IG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCk6CisgICAgICAgICAgICBiYi5mYXRhbCgnT3JpZ2luYWwgZG93bmxvYWQgaXMgbWlzc2luZyBmb3IgYSBzb3VyY2UuXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gJXMnICUgKHVybCkpCisKKyAgICAgICAgIyBXZSBub3cgaGF2ZSBhbiBhcHByb3ByaWF0ZSBsb2NhbHBhdGgKKyAgICAgICAgYmIubm90ZSgnQ29weWluZyBzb3VyY2UgbWlycm9yJykKKyAgICAgICAgY21kID0gJ2NwIC1mcFBSSCAlcyAlcycgJSAobG9jYWxwYXRoLCBkZXN0ZGlyKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzaGVsbD1UcnVlKQorfQorCiBkZWYgZXhjbHVkZV91c2VsZXNzX3BhdGhzKHRhcmluZm8pOgogICAgIGlmIHRhcmluZm8uaXNkaXIoKToKICAgICAgICAgaWYgdGFyaW5mby5uYW1lLmVuZHN3aXRoKCcvdGVtcCcpIG9yIHRhcmluZm8ubmFtZS5lbmRzd2l0aCgnL3BhdGNoZXMnKSBvciB0YXJpbmZvLm5hbWUuZW5kc3dpdGgoJy8ucGMnKToKQEAgLTQ4Myw2ICs1ODAsNyBAQAogYWRkdGFzayBkb191bnBhY2tfYW5kX3BhdGNoIGFmdGVyIGRvX3BhdGNoCiBhZGR0YXNrIGRvX2FyX3BhdGNoZWQgYWZ0ZXIgZG9fdW5wYWNrX2FuZF9wYXRjaAogYWRkdGFzayBkb19hcl9jb25maWd1cmVkIGFmdGVyIGRvX3VucGFja19hbmRfcGF0Y2gKK2FkZHRhc2sgZG9fYXJfbWlycm9yIGFmdGVyIGRvX2ZldGNoCiBhZGR0YXNrIGRvX2R1bXBkYXRhCiBhZGR0YXNrIGRvX2FyX3JlY2lwZQogYWRkdGFzayBkb19kZXBsb3lfYXJjaGl2ZXMgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IDNkMjJhZDAuLjZjMmEzM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCkBAIC05MCw3ICs5MCw3IEBACiAJY2Znc2NyaXB0PWBweXRob24zIC1jICJpbXBvcnQgb3M7IHByaW50KG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmRpcm5hbWUoJyR7Q09ORklHVVJFX1NDUklQVH0nKSwgJy4nKSkiYC8kY2Znc2NyaXB0X25hbWUKIAlpZiBbIC14ICIkY2Znc2NyaXB0IiBdIDsgdGhlbgogCQliYm5vdGUgIlJ1bm5pbmcgJGNmZ3NjcmlwdCAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfSAkQCIKLQkJaWYgISAke0NBQ0hFRF9DT05GSUdVUkVWQVJTfSAkY2Znc2NyaXB0ICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9ICIkQCI7IHRoZW4KKwkJaWYgISAke0NBQ0hFRF9DT05GSUdVUkVWQVJTfSBDT05GSUdfU0hFTEw9L2Jpbi9iYXNoICRjZmdzY3JpcHQgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gIiRAIjsgdGhlbgogCQkJYmJub3RlICJUaGUgZm9sbG93aW5nIGNvbmZpZy5sb2cgZmlsZXMgbWF5IHByb3ZpZGUgZnVydGhlciBpbmZvcm1hdGlvbi4iCiAJCQliYm5vdGUgYGZpbmQgJHtCfSAtaWdub3JlX3JlYWRkaXJfcmFjZSAtdHlwZSBmIC1uYW1lIGNvbmZpZy5sb2dgCiAJCQliYmZhdGFsX2xvZyAiY29uZmlndXJlIGZhaWxlZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwppbmRleCAxY2VhM2EyLi40NWY5NDM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0xMjcsNiArMTI3LDkgQEAKICAgICBmb3IgdG9vbCBpbiB0b29sczoKICAgICAgICAgZGVzdHRvb2wgPSBvcy5wYXRoLmpvaW4oZGVzdCwgdG9vbCkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3R0b29sKToKKyAgICAgICAgICAgICMgY2xlYW4gdXAgZGVhZCBzeW1saW5rCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhkZXN0dG9vbCk6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKGRlc3R0b29sKQogICAgICAgICAgICAgc3JjdG9vbCA9IGJiLnV0aWxzLndoaWNoKHBhdGgsIHRvb2wsIGV4ZWN1dGFibGU9VHJ1ZSkKICAgICAgICAgICAgICMgZ2NjL2crKyBtYXkgbGluayB0byBjY2FjaGUgb24gc29tZSBob3N0cywgZS5nLiwKICAgICAgICAgICAgICMgL3Vzci9sb2NhbC9iaW4vY2NhY2hlL2djYyAtPiAvdXNyL2Jpbi9jY2FjaGUsIHRoZW4gd2hpY2goZ2NjKQpAQCAtMTM4LDExICsxNDEsNiBAQAogICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjdG9vbCwgZGVzdHRvb2wpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5vdGZvdW5kLmFwcGVuZCh0b29sKQotICAgICMgRm9yY2UgInB5dGhvbiIgLT4gInB5dGhvbjIiCi0gICAgZGVzdHRvb2wgPSBvcy5wYXRoLmpvaW4oZGVzdCwgInB5dGhvbiIpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3R0b29sKToKLSAgICAgICAgc3JjdG9vbCA9ICJweXRob24yIgotICAgICAgICBvcy5zeW1saW5rKHNyY3Rvb2wsIGRlc3R0b29sKQogCiAgICAgaWYgbm90Zm91bmQgYW5kIGZhdGFsOgogICAgICAgICBiYi5mYXRhbCgiVGhlIGZvbGxvd2luZyByZXF1aXJlZCB0b29scyAoYXMgc3BlY2lmaWVkIGJ5IEhPU1RUT09MUykgYXBwZWFyIHRvIGJlIHVuYXZhaWxhYmxlIGluIFBBVEgsIHBsZWFzZSBpbnN0YWxsIHRoZW0gaW4gb3JkZXIgdG8gcHJvY2VlZDpcbiAgJXMiICUgIiAiLmpvaW4obm90Zm91bmQpKQpAQCAtMzk1LDcgKzM5Myw3IEBACiAgICAgIyBUaGVzZSB0YWtlIHRoZSBmb3JtOgogICAgICMKICAgICAjIFBBQ0tBR0VDT05GSUcgPz89ICI8ZGVmYXVsdCBvcHRpb25zPiIKLSAgICAjIFBBQ0tBR0VDT05GSUdbZm9vXSA9ICItLWVuYWJsZS1mb28sLS1kaXNhYmxlLWZvbyxmb29fZGVwZW5kcyxmb29fcnVudGltZV9kZXBlbmRzLGZvb19ydW50aW1lX3JlY29tbWVuZHMiCisgICAgIyBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLS1lbmFibGUtZm9vLC0tZGlzYWJsZS1mb28sZm9vX2RlcGVuZHMsZm9vX3J1bnRpbWVfZGVwZW5kcyxmb29fcnVudGltZV9yZWNvbW1lbmRzLGZvb19jb25mbGljdF9wYWNrYWdlY29uZmlnIgogICAgIHBrZ2NvbmZpZ2ZsYWdzID0gZC5nZXRWYXJGbGFncygiUEFDS0FHRUNPTkZJRyIpIG9yIHt9CiAgICAgaWYgcGtnY29uZmlnZmxhZ3M6CiAgICAgICAgIHBrZ2NvbmZpZyA9IChkLmdldFZhcignUEFDS0FHRUNPTkZJRycpIG9yICIiKS5zcGxpdCgpCkBAIC00NDIsOCArNDQwLDggQEAKICAgICAgICAgZm9yIGZsYWcsIGZsYWd2YWwgaW4gc29ydGVkKHBrZ2NvbmZpZ2ZsYWdzLml0ZW1zKCkpOgogICAgICAgICAgICAgaXRlbXMgPSBmbGFndmFsLnNwbGl0KCIsIikKICAgICAgICAgICAgIG51bSA9IGxlbihpdGVtcykKLSAgICAgICAgICAgIGlmIG51bSA+IDU6Ci0gICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBPbmx5IGVuYWJsZSxkaXNhYmxlLGRlcGVuZCxyZGVwZW5kLHJyZWNvbW1lbmQgY2FuIGJlIHNwZWNpZmllZCEiCisgICAgICAgICAgICBpZiBudW0gPiA2OgorICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCxycmVjb21tZW5kLGNvbmZsaWN0X3BhY2thZ2Vjb25maWcgY2FuIGJlIHNwZWNpZmllZCEiCiAgICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBmbGFnKSkKIAogICAgICAgICAgICAgaWYgZmxhZyBpbiBwa2djb25maWc6CkBAIC00NTcsNiArNDU1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY29uZi5hcHBlbmQoaXRlbXNbMF0pCiAgICAgICAgICAgICBlbGlmIG51bSA+PSAyIGFuZCBpdGVtc1sxXToKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjb25mLmFwcGVuZChpdGVtc1sxXSkKKworICAgICAgICAgICAgaWYgbnVtID49IDYgYW5kIGl0ZW1zWzVdOgorICAgICAgICAgICAgICAgIGNvbmZsaWN0cyA9IHNldChpdGVtc1s1XS5zcGxpdCgpKQorICAgICAgICAgICAgICAgIGludmFsaWQgPSBjb25mbGljdHMuZGlmZmVyZW5jZShzZXQocGtnY29uZmlnZmxhZ3Mua2V5cygpKSkKKyAgICAgICAgICAgICAgICBpZiBpbnZhbGlkOgorICAgICAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIEludmFsaWQgY29uZmxpY3QgcGFja2FnZSBjb25maWclcyAnJXMnIHNwZWNpZmllZC4iCisgICAgICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgZmxhZywgJ3MnIGlmIGxlbihpbnZhbGlkKSA+IDEgZWxzZSAnJywgJyAnLmpvaW4oaW52YWxpZCkpKQorCisgICAgICAgICAgICAgICAgaWYgZmxhZyBpbiBwa2djb25maWc6CisgICAgICAgICAgICAgICAgICAgIGludGVyc2VjID0gY29uZmxpY3RzLmludGVyc2VjdGlvbihzZXQocGtnY29uZmlnKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW50ZXJzZWM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIENvbmZsaWN0IHBhY2thZ2UgY29uZmlnJXMgJyVzJyBzZXQgaW4gUEFDS0FHRUNPTkZJRy4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIGZsYWcsICdzJyBpZiBsZW4oaW50ZXJzZWMpID4gMSBlbHNlICcnLCAnICcuam9pbihpbnRlcnNlYykpKQorCiAgICAgICAgIGFwcGVuZFZhcignREVQRU5EUycsIGV4dHJhZGVwcykKICAgICAgICAgYXBwZW5kVmFyKCdSREVQRU5EU18ke1BOfScsIGV4dHJhcmRlcHMpCiAgICAgICAgIGFwcGVuZFZhcignUlJFQ09NTUVORFNfJHtQTn0nLCBleHRyYXJyZWNzKQpAQCAtNDk4LDcgKzUxMCw3IEBACiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGV2c2hlbGwnLCAnZGVwZW5kcycsICcgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICBuZWVkX21hY2hpbmUgPSBkLmdldFZhcignQ09NUEFUSUJMRV9NQUNISU5FJykKLSAgICBpZiBuZWVkX21hY2hpbmU6CisgICAgaWYgbmVlZF9tYWNoaW5lIGFuZCBub3QgZC5nZXRWYXIoJ1BBUlNFX0FMTF9SRUNJUEVTJywgRmFsc2UpOgogICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgY29tcGF0X21hY2hpbmVzID0gKGQuZ2V0VmFyKCdNQUNISU5FT1ZFUlJJREVTJykgb3IgIiIpLnNwbGl0KCI6IikKICAgICAgICAgZm9yIG0gaW4gY29tcGF0X21hY2hpbmVzOgpAQCAtNTA3LDcgKzUxOSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCBtYWNoaW5lICVzIChub3QgaW4gQ09NUEFUSUJMRV9NQUNISU5FKSIgJSBkLmdldFZhcignTUFDSElORScpKQogCi0gICAgc291cmNlX21pcnJvcl9mZXRjaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfTUlSUk9SX0ZFVENIJywgRmFsc2UpCisgICAgc291cmNlX21pcnJvcl9mZXRjaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfTUlSUk9SX0ZFVENIJywgRmFsc2UpIG9yIGQuZ2V0VmFyKCdQQVJTRV9BTExfUkVDSVBFUycsIEZhbHNlKQogICAgIGlmIG5vdCBzb3VyY2VfbWlycm9yX2ZldGNoOgogICAgICAgICBuZWVkX2hvc3QgPSBkLmdldFZhcignQ09NUEFUSUJMRV9IT1NUJykKICAgICAgICAgaWYgbmVlZF9ob3N0OgpAQCAtNTMxLDQ1ICs1NDMsNDYgQEAKICAgICAgICAgICAgIGJhZF9saWNlbnNlcyA9IGV4cGFuZF93aWxkY2FyZF9saWNlbnNlcyhkLCBiYWRfbGljZW5zZXMpCiAKICAgICAgICAgICAgIHdoaXRlbGlzdCA9IFtdCi0gICAgICAgICAgICBpbmNvbXBhdHdsID0gW10KICAgICAgICAgICAgIGZvciBsaWMgaW4gYmFkX2xpY2Vuc2VzOgogICAgICAgICAgICAgICAgIHNwZHhfbGljZW5zZSA9IHJldHVybl9zcGR4KGQsIGxpYykKICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBsaWMpIG9yICIiKS5zcGxpdCgpKQogICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKKworICAgICAgICAgICAgaWYgcG4gaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgICcnJwogICAgICAgICAgICAgICAgIFdlIG5lZWQgdG8gdHJhY2sgd2hhdCB3ZSBhcmUgd2hpdGVsaXN0aW5nIGFuZCB3aHkuIElmIHBuIGlzCiAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBub3RlIHRoYXQgdGhlIGltYWdlIHRoYXQKICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIG1heSBpbmZhY3QgY29udGFpbiBpbmNvbXBhdGlibGUgbGljZW5zZXMgZGVzcGl0ZQogICAgICAgICAgICAgICAgIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlaW5nIHNldC4KICAgICAgICAgICAgICAgICAnJycKLSAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgbGljKSBvciAiIikuc3BsaXQoKSkKLSAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgIGluY29tcGF0d2wuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBzcGR4X2xpY2Vuc2UpIG9yICIiKS5zcGxpdCgpKQotCi0gICAgICAgICAgICBpZiBub3QgcG4gaW4gd2hpdGVsaXN0OgorICAgICAgICAgICAgICAgIGJiLm5vdGUoIkluY2x1ZGluZyAlcyBhcyBidWlsZGFibGUgZGVzcGl0ZSBpdCBoYXZpbmcgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UgYmVjYXVzZSBpdCBoYXMgYmVlbiB3aGl0ZWxpc3RlZCIgJSBwbikKKyAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGtncyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3MgPSBbXQorICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncyA9IHt9CiAgICAgICAgICAgICAgICAgdW5za2lwcGVkX3BrZ3MgPSBbXQogICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gcGtnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2cpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzLmFwcGVuZChwa2cpCisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMgPSBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBiYWRfbGljZW5zZXMsIHBrZykKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX2xpYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfcGtnc1twa2ddID0gaW5jb21wYXRpYmxlX2xpYwogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdW5za2lwcGVkX3BrZ3MuYXBwZW5kKHBrZykKLSAgICAgICAgICAgICAgICBhbGxfc2tpcHBlZCA9IHNraXBwZWRfcGtncyBhbmQgbm90IHVuc2tpcHBlZF9wa2dzCiAgICAgICAgICAgICAgICAgaWYgdW5za2lwcGVkX3BrZ3M6CiAgICAgICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gc2tpcHBlZF9wa2dzOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNLSVBQSU5HIHRoZSBwYWNrYWdlICIgKyBwa2cgKyAiIGF0IGRvX3Jvb3RmcyBiZWNhdXNlIGl0J3MgIiArIGxpY2Vuc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgdGhlIHBhY2thZ2UgJXMgYXQgZG9fcm9vdGZzIGJlY2F1c2Ugb2YgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlIChwa2csICcgJy5qb2luKHNraXBwZWRfcGtnc1twa2ddKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpCi0gICAgICAgICAgICAgICAgICAgICAgICBkLnNldFZhcignTElDRU5TRV9FWENMVVNJT04tJyArIG1scHJlZml4ICsgcGtnLCAxKQorICAgICAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBtbHByZWZpeCArIHBrZywgJyAnLmpvaW4oc2tpcHBlZF9wa2dzW3BrZ10pKQogICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHVuc2tpcHBlZF9wa2dzOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIklOQ0xVRElORyB0aGUgcGFja2FnZSAiICsgcGtnKQotICAgICAgICAgICAgICAgIGVsaWYgYWxsX3NraXBwZWQgb3IgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzKToKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNLSVBQSU5HIHJlY2lwZSAlcyBiZWNhdXNlIGl0J3MgJXMiICUgKHBuLCBsaWNlbnNlKSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaXQgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlOiAlcyIgJSBsaWNlbnNlKQotICAgICAgICAgICAgZWxpZiBwbiBpbiB3aGl0ZWxpc3Q6Ci0gICAgICAgICAgICAgICAgaWYgcG4gaW4gaW5jb21wYXR3bDoKLSAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiSU5DTFVESU5HICIgKyBwbiArICIgYXMgYnVpbGRhYmxlIGRlc3BpdGUgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVjYXVzZSBpdCBoYXMgYmVlbiB3aGl0ZWxpc3RlZCIpCisgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiSW5jbHVkaW5nIHRoZSBwYWNrYWdlICVzIiAlIHBrZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljID0gaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzKQorICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHNraXBwZWRfcGtnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMgKz0gc2tpcHBlZF9wa2dzW3BrZ10KKyAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYyA9IHNvcnRlZChsaXN0KHNldChpbmNvbXBhdGlibGVfbGljKSkpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX2xpYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTa2lwcGluZyByZWNpcGUgJXMgYmVjYXVzZSBvZiBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMiICUgKHBuLCAnICcuam9pbihpbmNvbXBhdGlibGVfbGljKSkpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlICcgJy5qb2luKGluY29tcGF0aWJsZV9saWMpKQogCiAgICAgICAgICMgVHJ5IHRvIHZlcmlmeSBwZXItcGFja2FnZSAoTElDRU5TRV88cGtnPikgdmFsdWVzLiBMSUNFTlNFIHNob3VsZCBiZSBhCiAgICAgICAgICMgc3VwZXJzZXQgb2YgYWxsIHBlci1wYWNrYWdlIGxpY2Vuc2VzLiBXZSBkbyBub3QgZG8gYWR2YW5jZWQgKHBhdHRlcm4pCkBAIC02MDYsNiArNjE5LDcgQEAKICAgICAgICAgIyBNZXJjdXJpYWwgcGFja2FnZXMgc2hvdWxkIERFUEVORCBvbiBtZXJjdXJpYWwtbmF0aXZlCiAgICAgICAgIGVsaWYgc2NoZW1lID09ICJoZyI6CiAgICAgICAgICAgICBuZWVkc3JjcmV2ID0gVHJ1ZQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoIkVYVFJBTkFUSVZFUEFUSCIsICcgcHl0aG9uMy1uYXRpdmUgJykKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZmV0Y2gnLCAnZGVwZW5kcycsICcgbWVyY3VyaWFsLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgICAgICAjIFBlcmZvcmNlIHBhY2thZ2VzIHN1cHBvcnQgU1JDUkVWID0gIiR7QVVUT1JFVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IGFmZmRmMjcuLmViNzI5NTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCkBAIC00MCw2ICs0MCw3IEBACiBCVUlMREhJU1RPUllfQ09NTUlUID89ICIxIgogQlVJTERISVNUT1JZX0NPTU1JVF9BVVRIT1IgPz0gImJ1aWxkaGlzdG9yeSA8YnVpbGRoaXN0b3J5QCR7RElTVFJPfT4iCiBCVUlMREhJU1RPUllfUFVTSF9SRVBPID89ICIiCitCVUlMREhJU1RPUllfVEFHID89ICJidWlsZCIKIAogU1NUQVRFUE9TVElOU1RGVU5DU19hcHBlbmQgPSAiIGJ1aWxkaGlzdG9yeV9lbWl0X3BrZ2hpc3RvcnkiCiAjIFdlIHdhbnQgdG8gYXZvaWQgaW5mbHVlbmNpbmcgdGhlIHNpZ25hdHVyZXMgb2Ygc3N0YXRlIHRhc2tzIC0gZmlyc3QgdGhlIGZ1bmN0aW9uIGl0c2VsZjoKQEAgLTgyNCw5ICs4MjUsOSBAQAogCQlpZiBbICEgLWUgLmdpdCBdIDsgdGhlbgogCQkJZ2l0IGluaXQgLXEKIAkJZWxzZQotCQkJZ2l0IHRhZyAtZiBidWlsZC1taW51cy0zIGJ1aWxkLW1pbnVzLTIgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCi0JCQlnaXQgdGFnIC1mIGJ1aWxkLW1pbnVzLTIgYnVpbGQtbWludXMtMSA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKLQkJCWdpdCB0YWcgLWYgYnVpbGQtbWludXMtMSA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKwkJCWdpdCB0YWcgLWYgJHtCVUlMREhJU1RPUllfVEFHfS1taW51cy0zICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMiA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKwkJCWdpdCB0YWcgLWYgJHtCVUlMREhJU1RPUllfVEFHfS1taW51cy0yICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMSA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKwkJCWdpdCB0YWcgLWYgJHtCVUlMREhJU1RPUllfVEFHfS1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQogCQlmaQogCiAJCWNoZWNrX2dpdF9jb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcwppbmRleCA5NjA2NTNjLi4yNTkwYzYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzCkBAIC0xMDAsNyArMTAwLDcgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCJydXNhZ2UgJXM6ICVzXG4iICUgKGksIGdldGF0dHIocmVzb3VyY2VzLCBpKSkpCiAgICAgICAgICAgICBmb3IgaSBpbiBydXNhZ2VzOgogICAgICAgICAgICAgICAgIGYud3JpdGUoIkNoaWxkIHJ1c2FnZSAlczogJXNcbiIgJSAoaSwgZ2V0YXR0cihjaGlsZHJlcywgaSkpKQotICAgICAgICBpZiBzdGF0dXMgaXMgInBhc3NlZCI6CisgICAgICAgIGlmIHN0YXR1cyA9PSAicGFzc2VkIjoKICAgICAgICAgICAgIGYud3JpdGUoIlN0YXR1czogUEFTU0VEIFxuIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGYud3JpdGUoIlN0YXR1czogRkFJTEVEIFxuIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcwppbmRleCAyODcwYzEwLi4yNmI5ODRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzCkBAIC0yLDE2ICsyLDE5IEBACiBQUkVQUk9DRVNTX1JFTE9DQVRFX0RJUlMgPz0gIiIKIAogZGVmIHByb2Nlc3NfZmlsZV9saW51eChjbWQsIGZwYXRoLCByb290ZGlyLCBiYXNlcHJlZml4LCB0bXBkaXIsIGQsIGJyZWFrX2hhcmRsaW5rcyA9IEZhbHNlKToKLSAgICBpbXBvcnQgc3VicHJvY2VzcyBhcyBzdWIKKyAgICBpbXBvcnQgc3VicHJvY2Vzcywgb2UucWEKIAotICAgIHAgPSBzdWIuUG9wZW4oW2NtZCwgJy1sJywgZnBhdGhdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCi0gICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAjIElmIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgcHJvY2VzcyBzdGRvdXQgZm9yIHJlc3VsdHMKLSAgICBpZiBwLnJldHVybmNvZGUgIT0gMDoKKyAgICB3aXRoIG9lLnFhLkVMRkZpbGUoZnBhdGgpIGFzIGVsZjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZWxmLm9wZW4oKQorICAgICAgICBleGNlcHQgb2UucWEuTm90RUxGRmlsZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICB0cnk6CisgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtjbWQsICItbCIsIGZwYXRoXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgogICAgICAgICByZXR1cm4KIAotICAgIG91dCA9IG91dC5kZWNvZGUoJ3V0Zi04JykKLQogICAgICMgSGFuZGxlIFJVTlBBVEggYXMgd2VsbCBhcyBSUEFUSAogICAgIG91dCA9IG91dC5yZXBsYWNlKCJSVU5QQVRIPSIsIlJQQVRIPSIpCiAgICAgIyBUaHJvdyBhd2F5IGV2ZXJ5dGhpbmcgb3RoZXIgdGhhbiB0aGUgcnBhdGggbGlzdApAQCAtNDQsMTAgKzQ3LDExIEBACiAKICAgICAgICAgYXJncyA9ICI6Ii5qb2luKG5ld19ycGF0aHMpCiAgICAgICAgICNiYi5ub3RlKCJTZXR0aW5nIHJwYXRoIGZvciAlcyB0byAlcyIgJShmcGF0aCwgYXJncykpCi0gICAgICAgIHAgPSBzdWIuUG9wZW4oW2NtZCwgJy1yJywgYXJncywgZnBhdGhdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCi0gICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgotICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBjaHJwYXRoIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkOlxuJXMlcyIgJSAoZC5nZXRWYXIoJ1BOJyksIHAucmV0dXJuY29kZSwgb3V0LCBlcnIpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbY21kLCAiLXIiLCBhcmdzLCBmcGF0aF0sCisgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBiYi5mYXRhbCgiY2hycGF0aCBjb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlZDpcbiVzXG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLnN0ZG91dCwgZS5zdGRlcnIpKQogCiBkZWYgcHJvY2Vzc19maWxlX2RhcndpbihjbWQsIGZwYXRoLCByb290ZGlyLCBiYXNlcHJlZml4LCB0bXBkaXIsIGQsIGJyZWFrX2hhcmRsaW5rcyA9IEZhbHNlKToKICAgICBpbXBvcnQgc3VicHJvY2VzcyBhcyBzdWIKQEAgLTcyLDYgKzc2LDEwIEBACiAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCiAKIGRlZiBwcm9jZXNzX2Rpcihyb290ZGlyLCBkaXJlY3RvcnksIGQsIGJyZWFrX2hhcmRsaW5rcyA9IEZhbHNlKToKKyAgICBiYi5kZWJ1ZygyLCAiQ2hlY2tpbmcgJXMgZm9yIGJpbmFyaWVzIHRvIHByb2Nlc3MiICUgZGlyZWN0b3J5KQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4KKwogICAgIGltcG9ydCBzdGF0CiAKICAgICByb290ZGlyID0gb3MucGF0aC5ub3JtcGF0aChyb290ZGlyKQpAQCAtODAsMTAgKzg4LDYgQEAKICAgICBiYXNlcHJlZml4ID0gb3MucGF0aC5ub3JtcGF0aChkLmV4cGFuZCgnJHtiYXNlX3ByZWZpeH0nKSkKICAgICBob3N0b3MgPSBkLmdldFZhcigiSE9TVF9PUyIpCiAKLSAgICAjYmIuZGVidWcoIkNoZWNraW5nICVzIGZvciBiaW5hcmllcyB0byBwcm9jZXNzIiAlIGRpcmVjdG9yeSkKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyZWN0b3J5KToKLSAgICAgICAgcmV0dXJuCi0KICAgICBpZiAibGludXgiIGluIGhvc3RvczoKICAgICAgICAgcHJvY2Vzc19maWxlID0gcHJvY2Vzc19maWxlX2xpbnV4CiAgICAgZWxpZiAiZGFyd2luIiBpbiBob3N0b3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCAyOTFmMWU4Li45NGVkODA2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKQEAgLTYzLDggKzYzLDkgQEAKIAogRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKLUVYVFJBX09FQ01BS0VfQlVJTERfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtQQVJBTExFTF9NQUtFfSAiCi1FWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1pbnN0YWxsID0gIiR7UEFSQUxMRUxfTUFLRUlOU1R9ICIKK2V4cG9ydCBDTUFLRV9CVUlMRF9QQVJBTExFTF9MRVZFTAorQ01BS0VfQlVJTERfUEFSQUxMRUxfTEVWRUxfdGFzay1jb21waWxlID0gIiR7QG9lLnV0aWxzLnBhcmFsbGVsX21ha2UoZCwgRmFsc2UpfSIKK0NNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVMX3Rhc2staW5zdGFsbCA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlKGQsIFRydWUpfSIKIAogT0VDTUFLRV9UQVJHRVRfQ09NUElMRSA/PSAiYWxsIgogT0VDTUFLRV9UQVJHRVRfSU5TVEFMTCA/PSAiaW5zdGFsbCIKQEAgLTEyMCw2ICsxMjEsOSBAQAogIyBkaXJlY3RvcnkgYXMgcnBhdGggYnkgZGVmYXVsdAogc2V0KCBDTUFLRV9JTlNUQUxMX1JQQVRIICR7T0VDTUFLRV9SUEFUSH0gKQogCisjIFVzZSBSUEFUSHMgcmVsYXRpdmUgdG8gYnVpbGQgZGlyZWN0b3J5IGZvciByZXByb2R1Y2liaWxpdHkKK3NldCggQ01BS0VfQlVJTERfUlBBVEhfVVNFX09SSUdJTiBPTiApCisKICMgVXNlIG91ciBjbWFrZSBtb2R1bGVzCiBsaXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSCAiJHtTVEFHSU5HX0RBVEFESVJ9L2NtYWtlL01vZHVsZXMvIikKIApAQCAtMTcxLDYgKzE3NSwxMCBAQAogCSAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJyksIGQuZ2V0VmFyKCdwcmVmaXgnKSArICcvJyl9IFwKIAkgIC1EQ01BS0VfSU5TVEFMTF9JTkNMVURFRElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdpbmNsdWRlZGlyJyksIGQuZ2V0VmFyKCdwcmVmaXgnKSArICcvJyl9IFwKIAkgIC1EQ01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignZGF0YWRpcicpLCBkLmdldFZhcigncHJlZml4JykgKyAnLycpfSBcCisJICAtRFBZVEhPTl9FWEVDVVRBQkxFOlBBVEg9JHtQWVRIT059IFwKKwkgIC1EUHl0aG9uX0VYRUNVVEFCTEU6UEFUSD0ke1BZVEhPTn0gXAorCSAgLURQeXRob24zX0VYRUNVVEFCTEU6UEFUSD0ke1BZVEhPTn0gXAorCSAgLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfU09fTk9fRVhFPTAgXAogCSAgLURDTUFLRV9UT09MQ0hBSU5fRklMRT0ke1dPUktESVJ9L3Rvb2xjaGFpbi5jbWFrZSBcCiAJICAtRENNQUtFX05PX1NZU1RFTV9GUk9NX0lNUE9SVEVEPTEgXApAQCAtMTc4LDkgKzE4NiwxOCBAQAogCSAgLVduby1kZXYKIH0KIAorIyBUbyBkaXNhYmxlIHZlcmJvc2UgY21ha2UgbG9ncyBmb3IgYSBnaXZlbiByZWNpcGUgb3IgZ2xvYmFsbHkgY29uZmlnIG1ldGFkYXRhIGUuZy4gbG9jYWwuY29uZgorIyBhZGQgZm9sbG93aW5nCisjCisjIENNQUtFX1ZFUkJPU0UgPSAiIgorIworCitDTUFLRV9WRVJCT1NFID8/PSAiVkVSQk9TRT0xIgorCisjIFRoZW4gcnVuIGRvX2NvbXBpbGUgYWdhaW4KIGNtYWtlX3J1bmNtYWtlX2J1aWxkKCkgewotCWJibm90ZSAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9VkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQotCWV2YWwgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwliYm5vdGUgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfSR7Q01BS0VfVkVSQk9TRX0gY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJZXZhbCAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9JHtDTUFLRV9WRVJCT1NFfSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KIH0KIAogY21ha2VfZG9fY29tcGlsZSgpICB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKaW5kZXggOTRmMTEyYy4uODhjYTI3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NvcmUtaW1hZ2UuYmJjbGFzcwpAQCAtMjYsNiArMjYsNyBAQAogIyAtIGRlYnVnLXR3ZWFrcyAgICAgICAgLSBtYWtlcyBhbiBpbWFnZSBzdWl0YWJsZSBmb3IgZGV2ZWxvcG1lbnQsIGUuZy4gYWxsb3dpbmcgcGFzc3dvcmRsZXNzIHJvb3QgbG9naW5zCiAjICAgLSBlbXB0eS1yb290LXBhc3N3b3JkCiAjICAgLSBhbGxvdy1lbXB0eS1wYXNzd29yZAorIyAgIC0gYWxsb3ctcm9vdC1sb2dpbgogIyAgIC0gcG9zdC1pbnN0YWxsLWxvZ2dpbmcKICMgLSBkZXYtcGtncyAgICAgICAgICAgIC0gZGV2ZWxvcG1lbnQgcGFja2FnZXMgKGhlYWRlcnMsIGV0Yy4pIGZvciBhbGwgaW5zdGFsbGVkIHBhY2thZ2VzIGluIHRoZSByb290ZnMKICMgLSBkYmctcGtncyAgICAgICAgICAgIC0gZGVidWcgc3ltYm9sIHBhY2thZ2VzIGZvciBhbGwgaW5zdGFsbGVkIHBhY2thZ2VzIGluIHRoZSByb290ZnMKQEAgLTMzLDYgKzM0LDcgQEAKICMgLSBiYXNoLWNvbXBsZXRpb24tcGtncyAtIGJhc2gtY29tcGxldGlvbiBwYWNrYWdlcyBmb3IgcmVjaXBlcyB1c2luZyBiYXNoLWNvbXBsZXRpb24gYmJjbGFzcwogIyAtIHB0ZXN0LXBrZ3MgICAgICAgICAgLSBwdGVzdCBwYWNrYWdlcyBmb3IgYWxsIHB0ZXN0LWVuYWJsZWQgcmVjaXBlcwogIyAtIHJlYWQtb25seS1yb290ZnMgICAgLSB0d2Vha3MgYW4gaW1hZ2UgdG8gc3VwcG9ydCByZWFkLW9ubHkgcm9vdGZzCisjIC0gc3RhdGVsZXNzLXJvb3RmcyAgICAtIHN5c3RlbWN0bC1uYXRpdmUgbm90IHJ1biwgaW1hZ2UgcG9wdWxhdGVkIGJ5IHN5c3RlbWQgYXQgcnVudGltZQogIyAtIHNwbGFzaCAgICAgICAgICAgICAgLSBib290dXAgc3BsYXNoIHNjcmVlbgogIwogRkVBVFVSRV9QQUNLQUdFU194MTEgPSAicGFja2FnZWdyb3VwLWNvcmUteDExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKaW5kZXggZjgzMjU2MS4uYmZlYzkxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCkBAIC03MCw3ICs3MCw2IEBACiBsaWJleGVjZGlyID0gIiR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMvJHtDUk9TU19UQVJHRVRfU1lTX0RJUn0iCiAKIGRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtTWVNST09UX0RFU1RESVJ9LyR7U1RBR0lOR19ESVJfTkFUSVZFfS8iCi1kb19wb3B1bGF0ZV9zeXNyb290W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIGRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIAogZG9faW5zdGFsbCAoKSB7CkBAIC05NywzICs5Niw0IEBACiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJleHRlbmRfcmVjaXBlX3N5c3Jvb3QiLCBkKQogfQogYWRkdGFzayBhZGR0b19yZWNpcGVfc3lzcm9vdCBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290Citkb19hZGR0b19yZWNpcGVfc3lzcm9vdFtkZXB0YXNrXSA9ICJkb19wb3B1bGF0ZV9zeXNyb290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3NzZGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MKaW5kZXggYzBjMGJmZS4uMDRhZWNiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3NzZGsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zc3Nkay5iYmNsYXNzCkBAIC01LDkgKzUsMTUgQEAKIExJQkNPVkVSUklERSA9ICI6JHtOQVRJVkVTREtMSUJDfSIKIE1BQ0hJTkVPVkVSUklERVMgPSAiIgogUEFDS0FHRV9BUkNIID0gIiR7U0RLX0FSQ0h9IgorCiBweXRob24gKCkgewogICAgICMgc2V0IFRVTkVfUEtHQVJDSCB0byBTREtfQVJDSAogICAgIGQuc2V0VmFyKCdUVU5FX1BLR0FSQ0gnLCBkLmdldFZhcignU0RLX0FSQ0gnKSkKKyAgICAjIFNldCBmZWF0dXJlcyBoZXJlIHRvIHByZXZlbnQgYXBwZW5kcyBhbmQgZGlzdHJvIGZlYXR1cmVzIGJhY2tmaWxsCisgICAgIyBmcm9tIG1vZGlmeWluZyBuYXRpdmVzZGsgZGlzdHJvIGZlYXR1cmVzCisgICAgZmVhdHVyZXMgPSBzZXQoZC5nZXRWYXIoIkRJU1RST19GRUFUVVJFU19OQVRJVkVTREsiKS5zcGxpdCgpKQorICAgIGZpbHRlcmVkID0gc2V0KGJiLnV0aWxzLmZpbHRlcigiRElTVFJPX0ZFQVRVUkVTIiwgZC5nZXRWYXIoIkRJU1RST19GRUFUVVJFU19GSUxURVJfTkFUSVZFU0RLIiksIGQpLnNwbGl0KCkpCisgICAgZC5zZXRWYXIoIkRJU1RST19GRUFUVVJFUyIsICIgIi5qb2luKHNvcnRlZChmZWF0dXJlcyB8IGZpbHRlcmVkKSkpCiB9CiAKIFNUQUdJTkdfQklORElSX1RPT0xDSEFJTiA9ICIke1NUQUdJTkdfRElSX05BVElWRX0ke2JpbmRpcl9uYXRpdmV9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0ke1RBUkdFVF9PU30iCkBAIC0zNyw3ICs0Myw2IEBACiB0YXJnZXRfZXhlY19wcmVmaXggPSAiJHtTREtQQVRITkFUSVZFfSR7cHJlZml4X25hdGl2ZXNka30iCiBiYXNlbGliID0gImxpYiIKIAotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiBkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKICMgTmVlZCB0byBmb3JjZSB0aGlzIHRvIGVuc3VyZSBjb25zaXRlbmN5IGFjcm9zcyBhcmNoaXRlY3R1cmVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCmluZGV4IDE5ZWQ1NTQuLjJhNTMwYTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCkBAIC0yNiw3ICsyNiw3IEBACiBDVkVfVkVSU0lPTiA/Pz0gIiR7UFZ9IgogCiBDVkVfQ0hFQ0tfREJfRElSID89ICIke0RMX0RJUn0vQ1ZFX0NIRUNLIgotQ1ZFX0NIRUNLX0RCX0ZJTEUgPz0gIiR7Q1ZFX0NIRUNLX0RCX0RJUn0vbnZkY3ZlXzEuMC5kYiIKK0NWRV9DSEVDS19EQl9GSUxFID89ICIke0NWRV9DSEVDS19EQl9ESVJ9L252ZGN2ZV8xLjEuZGIiCiAKIENWRV9DSEVDS19MT0cgPz0gIiR7VH0vY3ZlLmxvZyIKIENWRV9DSEVDS19UTVBfRklMRSA/PSAiJHtUTVBESVJ9L2N2ZV9jaGVjayIKQEAgLTUyLDExICs1MiwxNCBAQAogICAgICIiIgogCiAgICAgaWYgb3MucGF0aC5leGlzdHMoZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9GSUxFIikpOgotICAgICAgICBwYXRjaGVkX2N2ZXMgPSBnZXRfcGF0Y2hlc19jdmVzKGQpCi0gICAgICAgIHBhdGNoZWQsIHVucGF0Y2hlZCA9IGNoZWNrX2N2ZXMoZCwgcGF0Y2hlZF9jdmVzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXRjaGVkX2N2ZXMgPSBnZXRfcGF0Y2hlc19jdmVzKGQpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIGJiLmZhdGFsKCJGYWlsdXJlIGluIHNlYXJjaGluZyBwYXRjaGVzIikKKyAgICAgICAgd2hpdGVsaXN0ZWQsIHBhdGNoZWQsIHVucGF0Y2hlZCA9IGNoZWNrX2N2ZXMoZCwgcGF0Y2hlZF9jdmVzKQogICAgICAgICBpZiBwYXRjaGVkIG9yIHVucGF0Y2hlZDoKICAgICAgICAgICAgIGN2ZV9kYXRhID0gZ2V0X2N2ZV9pbmZvKGQsIHBhdGNoZWQgKyB1bnBhdGNoZWQpCi0gICAgICAgICAgICBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIGN2ZV9kYXRhKQorICAgICAgICAgICAgY3ZlX3dyaXRlX2RhdGEoZCwgcGF0Y2hlZCwgdW5wYXRjaGVkLCB3aGl0ZWxpc3RlZCwgY3ZlX2RhdGEpCiAgICAgZWxzZToKICAgICAgICAgYmIubm90ZSgiTm8gQ1ZFIGRhdGFiYXNlIGZvdW5kLCBza2lwcGluZyBDVkUgY2hlY2siKQogCkBAIC0xMjksNiArMTMyLDEwIEBACiAgICAgZm9yIHVybCBpbiBzcmNfcGF0Y2hlcyhkKToKICAgICAgICAgcGF0Y2hfZmlsZSA9IGJiLmZldGNoLmRlY29kZXVybCh1cmwpWzJdCiAKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHBhdGNoX2ZpbGUpOgorICAgICAgICAgICAgYmIuZXJyb3IoIkZpbGUgTm90IGZvdW5kOiAlcyIgJSBwYXRjaF9maWxlKQorICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IKKwogICAgICAgICAjIENoZWNrIHBhdGNoIGZpbGUgbmFtZSBmb3IgQ1ZFIElECiAgICAgICAgIGZuYW1lX21hdGNoID0gY3ZlX2ZpbGVfbmFtZV9tYXRjaC5zZWFyY2gocGF0Y2hfZmlsZSkKICAgICAgICAgaWYgZm5hbWVfbWF0Y2g6CkBAIC0xNzIsMTMgKzE3OSwxMyBAQAogICAgIHByb2R1Y3RzID0gZC5nZXRWYXIoIkNWRV9QUk9EVUNUIikuc3BsaXQoKQogICAgICMgSWYgdGhpcyBoYXMgYmVlbiB1bnNldCB0aGVuIHdlJ3JlIG5vdCBzY2FubmluZyBmb3IgQ1ZFcyBoZXJlIChmb3IgZXhhbXBsZSwgaW1hZ2UgcmVjaXBlcykKICAgICBpZiBub3QgcHJvZHVjdHM6Ci0gICAgICAgIHJldHVybiAoW10sIFtdKQorICAgICAgICByZXR1cm4gKFtdLCBbXSwgW10pCiAgICAgcHYgPSBkLmdldFZhcigiQ1ZFX1ZFUlNJT04iKS5zcGxpdCgiK2dpdCIpWzBdCiAKICAgICAjIElmIHRoZSByZWNpcGUgaGFzIGJlZW4gd2hpdGxpc3RlZCB3ZSByZXR1cm4gZW1wdHkgbGlzdHMKICAgICBpZiBkLmdldFZhcigiUE4iKSBpbiBkLmdldFZhcigiQ1ZFX0NIRUNLX1BOX1dISVRFTElTVCIpLnNwbGl0KCk6CiAgICAgICAgIGJiLm5vdGUoIlJlY2lwZSBoYXMgYmVlbiB3aGl0ZWxpc3RlZCwgc2tpcHBpbmcgY2hlY2siKQotICAgICAgICByZXR1cm4gKFtdLCBbXSkKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIFtdKQogCiAgICAgb2xkX2N2ZV93aGl0ZWxpc3QgPSAgZC5nZXRWYXIoIkNWRV9DSEVDS19DVkVfV0hJVEVMSVNUIikKICAgICBpZiBvbGRfY3ZlX3doaXRlbGlzdDoKQEAgLTIxNCw3ICsyMjEsNyBAQAogICAgICAgICAgICAgICAgIChfLCBfLCBfLCB2ZXJzaW9uX3N0YXJ0LCBvcGVyYXRvcl9zdGFydCwgdmVyc2lvbl9lbmQsIG9wZXJhdG9yX2VuZCkgPSByb3cKICAgICAgICAgICAgICAgICAjYmIuZGVidWcoMiwgIkV2YWx1YXRpbmcgcm93ICIgKyBzdHIocm93KSkKIAotICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvcl9zdGFydCA9PSAnPScgYW5kIHB2ID09IHZlcnNpb25fc3RhcnQpOgorICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvcl9zdGFydCA9PSAnPScgYW5kIHB2ID09IHZlcnNpb25fc3RhcnQpIG9yIHZlcnNpb25fc3RhcnQgPT0gJy0nOgogICAgICAgICAgICAgICAgICAgICB2dWxuZXJhYmxlID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIG9wZXJhdG9yX3N0YXJ0OgpAQCAtMjU2LDcgKzI2Myw3IEBACiAKICAgICBjb25uLmNsb3NlKCkKIAotICAgIHJldHVybiAobGlzdChwYXRjaGVkX2N2ZXMpLCBjdmVzX3VucGF0Y2hlZCkKKyAgICByZXR1cm4gKGxpc3QoY3ZlX3doaXRlbGlzdCksIGxpc3QocGF0Y2hlZF9jdmVzKSwgY3Zlc191bnBhdGNoZWQpCiAKIGRlZiBnZXRfY3ZlX2luZm8oZCwgY3Zlcyk6CiAgICAgIiIiCkBAIC0yODAsNyArMjg3LDcgQEAKICAgICBjb25uLmNsb3NlKCkKICAgICByZXR1cm4gY3ZlX2RhdGEKIAotZGVmIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgY3ZlX2RhdGEpOgorZGVmIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgd2hpdGVsaXN0ZWQsIGN2ZV9kYXRhKToKICAgICAiIiIKICAgICBXcml0ZSBDVkUgaW5mb3JtYXRpb24gaW4gV09SS0RJUjsgYW5kIHRvIENWRV9DSEVDS19ESVIsIGFuZAogICAgIENWRSBtYW5pZmVzdCBpZiBlbmFibGVkLgpAQCAtMjk2LDcgKzMwMyw5IEBACiAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiUEFDS0FHRSBOQU1FOiAlc1xuIiAlIGQuZ2V0VmFyKCJQTiIpCiAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiUEFDS0FHRSBWRVJTSU9OOiAlc1xuIiAlIGQuZ2V0VmFyKCJQViIpCiAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiQ1ZFOiAlc1xuIiAlIGN2ZQotICAgICAgICBpZiBjdmUgaW4gcGF0Y2hlZDoKKyAgICAgICAgaWYgY3ZlIGluIHdoaXRlbGlzdGVkOgorICAgICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJDVkUgU1RBVFVTOiBXaGl0ZWxpc3RlZFxuIgorICAgICAgICBlbGlmIGN2ZSBpbiBwYXRjaGVkOgogICAgICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJDVkUgU1RBVFVTOiBQYXRjaGVkXG4iCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB1bnBhdGNoZWRfY3Zlcy5hcHBlbmQoY3ZlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzCmluZGV4IGQ4Nzc5YzcuLmM3NzJhYjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKQEAgLTU5LDcgKzU5LDcgQEAKIAogRFRDX0ZMQUdTID89ICItUiAke0RUX1JFU0VSVkVEX01BUH0gLWIgJHtEVF9CT09UX0NQVX0iCiBEVENfUFBGTEFHUyA/PSAiLW5vc3RkaW5jIC11bmRlZiAtRF9fRFRTX18gLXggYXNzZW1ibGVyLXdpdGgtY3BwIgotRFRDX0JGTEFHUyA/PSAiLXAgJHtEVF9QQURESU5HX1NJWkV9IgorRFRDX0JGTEFHUyA/PSAiLXAgJHtEVF9QQURESU5HX1NJWkV9IC1AIgogRFRDX09GTEFHUyA/PSAiLXAgMCAtQCAtSCBlcGFwciIKIAogcHl0aG9uICgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtYmFzZS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjM5OGQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1iYXNlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLURFUEVORFMgICs9ICIke0BbIiR7UFlUSE9OX1BOfS1uYXRpdmUgJHtQWVRIT05fUE59IiwgIiJdWyhkLmdldFZhcignUEFDS0FHRVMnKSA9PSAnJyldfSIKLVJERVBFTkRTXyR7UE59ICs9ICIke0BbJycsICcke1BZVEhPTl9QTn0tY29yZSddWycke0NMQVNTT1ZFUlJJREV9JyA9PSAnY2xhc3MtdGFyZ2V0J119IgotCi1pbmhlcml0IGRpc3R1dGlscy1jb21tb24tYmFzZSBweXRob25uYXRpdmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTliNTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1pbmhlcml0IGRpc3R1dGlscy1iYXNlCi0KLURJU1RVVElMU19CVUlMRF9BUkdTID89ICIiCi1ESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTID89ICItLWluc3RhbGwtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi1ESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1MgPz0gIi0tcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7U1RBR0lOR19EQVRBRElSfSIKLURJU1RVVElMU19JTlNUQUxMX0FSR1MgPz0gIi0tcm9vdD0ke0R9IFwKLSAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7ZGF0YWRpcn0iCi0KLURJU1RVVElMU19QWVRIT04gPSAicHl0aG9uIgotRElTVFVUSUxTX1BZVEhPTl9jbGFzcy1uYXRpdmUgPSAibmF0aXZlcHl0aG9uIgotCi1kaXN0dXRpbHNfZG9fY29uZmlndXJlKCkgewotICAgICAgICBpZiBbICIke0NMRUFOQlJPS0VOfSIgIT0gIjEiIF0gOyB0aGVuCi0gICAgICAgICAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGNsZWFuICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9Ci0gICAgICAgIGZpCi19Ci0KLWRpc3R1dGlsc19kb19jb21waWxlKCkgewotICAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCi0gICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgotfQotCi1kaXN0dXRpbHNfc3RhZ2VfaGVhZGVycygpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfaGVhZGVycyBmYWlsZWQuIgotfQotCi1kaXN0dXRpbHNfc3RhZ2VfYWxsKCkgewotICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgUFlUSE9OUEFUSD0ke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19TVEFHRV9BTExfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9hbGwgZmFpbGVkLiIKLX0KLQotZGlzdHV0aWxzX2RvX2luc3RhbGwoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICBQWVRIT05QQVRIPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgotCi0gICAgICAgICMgc3VwcG9ydCBmaWxlbmFtZXMgd2l0aCAqc3BhY2VzKgotICAgICAgICAjIG9ubHkgbW9kaWZ5IGZpbGUgaWYgaXQgY29udGFpbnMgcGF0aCAgYW5kIHJlY29tcGlsZSBpdAotICAgICAgICBmaW5kICR7RH0gLW5hbWUgIioucHkiIC1leGVjIGdyZXAgLXEgJHtEfSB7fSBcOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWV4ZWMgc2VkIC1pIC1lIHM6JHtEfTo6ZyB7fSBcOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWV4ZWMgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIC1tY29tcGlsZWFsbCB7fSBcOwotCi0gICAgICAgIGZvciBpIGluICR7RH0ke2JpbmRpcn0vKiAke0R9JHtzYmluZGlyfS8qOyBkbwotICAgICAgICAgICAgaWYgWyAtZiAiJGkiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgczoke1BZVEhPTn06JHtVU1JCSU5QQVRIfS9lbnZcICR7RElTVFVUSUxTX1BZVEhPTn06ZyAkaQotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfToke2JpbmRpcn06ZyAkaQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotCi0gICAgICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9lYXN5LWluc3RhbGwucHRoCi0gICAgICAgIHJtIC1mICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaXRlLnB5KgotCi0gICAgICAgICMKLSAgICAgICAgIyBGSVhNRTogQmFuZGFpZCBhZ2FpbnN0IHdyb25nIGRhdGFkaXIgY29tcHV0YXRpb24KLSAgICAgICAgIwotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3NoYXJlIF07IHRoZW4KLSAgICAgICAgICAgIG12IC1mICR7RH0ke2RhdGFkaXJ9L3NoYXJlLyogJHtEfSR7ZGF0YWRpcn0vCi0gICAgICAgICAgICBybWRpciAke0R9JHtkYXRhZGlyfS9zaGFyZQotICAgICAgICBmaQotCi0JIyBGaXggYmFja3BvcnQgbW9kdWxlcwotCWlmIFsgLWUgJHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2JhY2twb3J0cy9fX2luaXRfXy5weSBdICYmIAotICAgICAgICAgICBbIC1lICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9iYWNrcG9ydHMvX19pbml0X18ucHkgXTsgdGhlbgotCSAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9iYWNrcG9ydHMvX19pbml0X18ucHk7Ci0JICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2JhY2twb3J0cy9fX2luaXRfXy5weWM7Ci0JZmkKLX0KLQotRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCi0KLWV4cG9ydCBMRFNIQVJFRD0iJHtDQ0xEfSAtc2hhcmVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCmluZGV4IDA1YTI0YmYuLjczNTZiNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKQEAgLTEsMTAgKzEsOSBAQAogaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UKIAorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZGlzdHV0aWxzX2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCisKIERJU1RVVElMU19CVUlMRF9BUkdTID89ICIiCi1ESVNUVVRJTFNfQlVJTERfRVhUX0FSR1MgPz0gIiIKLURJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1MgPz0gIi0taW5zdGFsbC1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLURJU1RVVElMU19TVEFHRV9BTExfQVJHUyA/PSAiLS1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtTVEFHSU5HX0RBVEFESVJ9IgogRElTVFVUSUxTX0lOU1RBTExfQVJHUyA/PSAiLS1yb290PSR7RH0gXAogICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCiAgICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCkBAIC0xNCw0NSArMTMsMjggQEAKIERJU1RVVElMU19QWVRIT05fY2xhc3MtbmF0aXZlID0gIm5hdGl2ZXB5dGhvbjMiCiAKIGRpc3R1dGlsczNfZG9fY29uZmlndXJlKCkgewotCWlmIFsgIiR7Q0xFQU5CUk9LRU59IiAhPSAiMSIgXSA7IHRoZW4KLQkJTk9fRkVUQ0hfQlVJTEQ9MSBcCi0JCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBjbGVhbiAke0RJU1RVVElMU19CVUlMRF9BUkdTfQotCWZpCisgICAgOgogfQogCiBkaXN0dXRpbHMzX2RvX2NvbXBpbGUoKSB7CisgICAgICAgIGNkICR7U30KICAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCiAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgXAotICAgICAgICBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSAke1N9L3NldHVwLnB5IFwKKyAgICAgICAgYnVpbGQgLS1idWlsZC1iYXNlPSR7Qn0gJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAogICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCiB9CiBkaXN0dXRpbHMzX2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKLWRpc3R1dGlsczNfc3RhZ2VfaGVhZGVycygpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfaGVhZGVycyBmYWlsZWQuIgotfQotZGlzdHV0aWxzM19zdGFnZV9oZWFkZXJzW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgotCi1kaXN0dXRpbHMzX3N0YWdlX2FsbCgpIHsKLSAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19TVEFHRV9BTExfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfYWxsIGZhaWxlZC4iCi19Ci1kaXN0dXRpbHMzX3N0YWdlX2FsbFt2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKLQogZGlzdHV0aWxzM19kb19pbnN0YWxsKCkgeworICAgICAgICBjZCAke1N9CiAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAogICAgICAgICBQWVRIT05QQVRIPSR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gJHtTfS9zZXR1cC5weSBcCisgICAgICAgIGJ1aWxkIC0tYnVpbGQtYmFzZT0ke0J9IGluc3RhbGwgLS1za2lwLWJ1aWxkICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAogICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgogCiAgICAgICAgICMgc3VwcG9ydCBmaWxlbmFtZXMgd2l0aCAqc3BhY2VzKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKaW5kZXggZWE1OWQwMi4uZDIwMDEyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCkBAIC03Myw5ICs3Myw4IEBACiAKICAgICAgICAgZC5zZXRWYXIoJ1NSQ19VUkknLCAnICcuam9pbihsb2NhbF9zcmN1cmkpKQogCi0gICAgICAgIGlmICd7U1JDUFZ9JyBpbiBkLmdldFZhcignUFYnLCBGYWxzZSk6Ci0gICAgICAgICAgICAjIER1bW15IHZhbHVlIGJlY2F1c2UgdGhlIGRlZmF1bHQgZnVuY3Rpb24gY2FuJ3QgYmUgY2FsbGVkIHdpdGggYmxhbmsgU1JDX1VSSQotICAgICAgICAgICAgZC5zZXRWYXIoJ1NSQ1BWJywgJzk5OScpCisgICAgICAgICMgRHVtbXkgdmFsdWUgYmVjYXVzZSB0aGUgZGVmYXVsdCBmdW5jdGlvbiBjYW4ndCBiZSBjYWxsZWQgd2l0aCBibGFuayBTUkNfVVJJCisgICAgICAgIGQuc2V0VmFyKCdTUkNQVicsICc5OTknKQogCiAgICAgICAgIGlmIGQuZ2V0VmFyKCdDT05GSUdVUkVPUFRfREVQVFJBQ0snKSA9PSAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnOgogICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZJR1VSRU9QVF9ERVBUUkFDSycsICcnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZmVhdHVyZXNfY2hlY2suYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKaW5kZXggMzkxZmJlMS4uODc2ZDMyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZmVhdHVyZXNfY2hlY2suYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9mZWF0dXJlc19jaGVjay5iYmNsYXNzCkBAIC0yMyw2ICsyMyw5IEBACiAjIENvcHlyaWdodCAyMDEzIChDKSBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KIAogcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcignUEFSU0VfQUxMX1JFQ0lQRVMnLCBGYWxzZSk6CisgICAgICAgIHJldHVybgorCiAgICAgIyBBc3N1bWUgYXQgbGVhc3Qgb25lIHZhciBpcyBzZXQuCiAgICAgZGlzdHJvX2ZlYXR1cmVzID0gc2V0KChkLmdldFZhcignRElTVFJPX0ZFQVRVUkVTJykgb3IgJycpLnNwbGl0KCkpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKaW5kZXggMTNmOWRmMS4uOTdlN2YxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKQEAgLTIwLDcgKzIwLDcgQEAKIAkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2ZvbnRfY2FjaGUgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfSBcCiAJCSdiaW5kaXI9IiR7YmluZGlyfSInIFwKIAkJJ2xpYmRpcj0iJHtsaWJkaXJ9IicgXAotICAgICAgICAgICAgICAgICdsaWJleGVjZGlyPSIke2xpYmV4ZWNkaXJ9IicgXAorCQknbGliZXhlY2Rpcj0iJHtsaWJleGVjZGlyfSInIFwKIAkJJ2Jhc2VfbGliZGlyPSIke2Jhc2VfbGliZGlyfSInIFwKIAkJJ2ZvbnRjb25maWdjYWNoZWRpcj0iJHtGT05UQ09ORklHX0NBQ0hFX0RJUn0iJyBcCiAJCSdmb250Y29uZmlnY2FjaGVwYXJhbXM9IiR7Rk9OVENPTkZJR19DQUNIRV9QQVJBTVN9IicgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKaW5kZXggZTQwZTU1Ni4uYzk5Njg5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCkBAIC01Myw2ICs1Myw3IEBACiBleHBvcnQgR09UT09MRElSCiAKIGV4cG9ydCBDR09fRU5BQkxFRCA/PSAiMSIKK2V4cG9ydCBDR09fRU5BQkxFRF9yaXNjdjY0ID0gIjAiCiBleHBvcnQgQ0dPX0NGTEFHUyA/PSAiJHtDRkxBR1N9IgogZXhwb3J0IENHT19DUFBGTEFHUyA/PSAiJHtDUFBGTEFHU30iCiBleHBvcnQgQ0dPX0NYWEZMQUdTID89ICIke0NYWEZMQUdTfSIKQEAgLTE0Nyw3ICsxNDgsNyBAQAogIyBkb2Vzbid0IHN1cHBvcnQgLWJ1aWxkbW9kZT1waWUsIHNvIHNraXAgdGhlIFFBIGNoZWNraW5nIGZvciBtaXBzIGFuZCBpdHMKICMgdmFyaWFudHMuCiBweXRob24oKSB7Ci0gICAgaWYgJ21pcHMnIGluIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpOgorICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSBvciAncmlzY3YnIGluIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpOgogICAgICAgICBkLmFwcGVuZFZhcignSU5TQU5FX1NLSVBfJXMnICUgZC5nZXRWYXIoJ1BOJyksICIgdGV4dHJlbCIpCiAgICAgZWxzZToKICAgICAgICAgZC5hcHBlbmRWYXIoJ0dPQlVJTERGTEFHUycsICcgLWJ1aWxkbW9kZT1waWUnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwppbmRleCAxNjZkZWE5Li4xMDk5Yjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwpAQCAtNiwxMiArNiwxOCBAQAogSE9TVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZCl9IgogSE9TVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogSE9TVF9HT01JUFMgPSAiJHtAZ29fbWFwX21pcHMoZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCitIT1NUX0dPQVJNX2NsYXNzLW5hdGl2ZSA9ICI3IgorSE9TVF9HTzM4Nl9jbGFzcy1uYXRpdmUgPSAic3NlMiIKK0hPU1RfR09NSVBTX2NsYXNzLW5hdGl2ZSA9ICJoYXJkZmxvYXQiCiBIT1NUX0dPVFVQTEUgPSAiJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9IgogVEFSR0VUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSwgZCl9IgogVEFSR0VUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgogVEFSR0VUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIFRBUkdFVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBUQVJHRVRfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCitUQVJHRVRfR09BUk1fY2xhc3MtbmF0aXZlID0gIjciCitUQVJHRVRfR08zODZfY2xhc3MtbmF0aXZlID0gInNzZTIiCitUQVJHRVRfR09NSVBTX2NsYXNzLW5hdGl2ZSA9ICJoYXJkZmxvYXQiCiBUQVJHRVRfR09UVVBMRSA9ICIke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9IgogR09fQlVJTERfQklORElSID0gIiR7QFsnYmluLyR7SE9TVF9HT1RVUExFfScsJ2JpbiddW2QuZ2V0VmFyKCdCVUlMRF9HT1RVUExFJykgPT0gZC5nZXRWYXIoJ0hPU1RfR09UVVBMRScpXX0iCiAKQEAgLTMxLDYgKzM3LDcgQEAKIEdPX0RZTkxJTktfeDg2ID0gIjEiCiBHT19EWU5MSU5LX3g4Ni02NCA9ICIxIgogR09fRFlOTElOS19wb3dlcnBjNjQgPSAiMSIKK0dPX0RZTkxJTktfcG93ZXJwYzY0bGUgPSAiMSIKIEdPX0RZTkxJTktfY2xhc3MtbmF0aXZlID0gIiIKIEdPX0RZTkxJTktfY2xhc3MtbmF0aXZlc2RrID0gIiIKIApAQCAtNDAsNiArNDcsNyBAQAogQ09NUEFUSUJMRV9IT1NUX2xpbnV4LW11c2x4MzIgPSAibnVsbCIKIENPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0bGUgPSAibnVsbCIKIENPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgogCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKQEAgLTQ3LDcgKzU1LDYgQEAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgogCiBUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1hcmNoPW1pcHMzMnIyIgotU0VDVVJJVFlfQ0ZMQUdTX21pcHNhcmNoID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX05PUElFX0NGTEFHUyA/Pz0gIiIKIAogIyBnbyBjYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmktY2ZnLmJiY2xhc3MKaW5kZXggOGI1ZmYyMC4uM2EyY2RkNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmktY2ZnLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmktY2ZnLmJiY2xhc3MKQEAgLTg4LDYgKzg4LDEyIEBACiAgICAgZm9yIGxhYmVsIGluIGxhYmVscy5zcGxpdCgpOgogICAgICAgICBsb2NhbGRhdGEgPSBkLmNyZWF0ZUNvcHkoKQogCisgICAgICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoJ09WRVJSSURFUycpCisgICAgICAgIGlmIG5vdCBvdmVycmlkZXM6CisgICAgICAgICAgICBiYi5mYXRhbCgnT1ZFUlJJREVTIG5vdCBkZWZpbmVkJykKKworICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCAnZ3J1Yl8nICsgbGFiZWwgKyAnOicgKyBvdmVycmlkZXMpCisKICAgICAgICAgZm9yIGJ0eXBlIGluIGJ0eXBlczoKICAgICAgICAgICAgIGNmZ2ZpbGUud3JpdGUoJ1xubWVudWVudHJ5IFwnJXMlc1wne1xuJyAlIChsYWJlbCwgYnR5cGVbMF0pKQogICAgICAgICAgICAgbGIgPSBsYWJlbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKaW5kZXggYmMzZDZmNC4uZDA5NTMwNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgcmV0dXJuICJpY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSIKICAgICByZXR1cm4gIiIKIAotREVQRU5EU19wcmVwZW5kICs9ICIke0BpY2VjY19kZXBfcHJlcGVuZChkKX0gIgorREVQRU5EU19wcmVwZW5kID0gIiR7QGljZWNjX2RlcF9wcmVwZW5kKGQpfSAiCiAKIGdldF9jcm9zc19rZXJuZWxfY2NbdmFyZGVwc2V4Y2x1ZGVdICs9ICJLRVJORUxfQ0MiCiBkZWYgZ2V0X2Nyb3NzX2tlcm5lbF9jYyhiYixkKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwppbmRleCAwNGRkNTdjLi5lYmY2ZTZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCkBAIC0xNyw2ICsxNywxNiBAQAogCXByZV9wcmVsaW5rX3NpemU9YGR1IC1rcyAke0lNQUdFX1JPT1RGU30gfCBhd2sgJ3tzaXplID0gJDEgOyBwcmludCBzaXplIH0nYAogCWVjaG8gIlNpemUgYmVmb3JlIHByZWxpbmtpbmcgJHByZV9wcmVsaW5rX3NpemUuIgogCisJIyBUaGUgZmlsZXN5c3RlbSBtYXkgbm90IGNvbnRhaW4gc3lzY29uZmRpciBzbyBlc3RhYmxpc2ggd2hhdCBpcyBwcmVzZW50CisJIyB0byBlbmFibGUgY2xlYW51cCBhZnRlciB0ZW1wb3JhcnkgY3JlYXRpb24gb2Ygc3lzY29uZmRpciBpZiBuZWVkZWQKKwlwcmVzZW50ZGlyPSIke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9IgorCXdoaWxlIFsgIiR7SU1BR0VfUk9PVEZTfSIgIT0gIiR7cHJlc2VudGRpcn0iIF0gOyBkbworCQlbICEgLWQgIiR7cHJlc2VudGRpcn0iIF0gfHwgYnJlYWsKKwkJcHJlc2VudGRpcj1gZGlybmFtZSAiJHtwcmVzZW50ZGlyfSJgCisJZG9uZQorCisJbWtkaXIgLXAgIiR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0iCisKIAkjIFdlIG5lZWQgYSBwcmVsaW5rIGNvbmYgb24gdGhlIGZpbGVzeXN0ZW0sIGFkZCBvbmUgaWYgaXQncyBtaXNzaW5nCiAJaWYgWyAhIC1lICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vcHJlbGluay5jb25mIF07IHRoZW4KIAkJY3AgJHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3ByZWxpbmsuY29uZiBcCkBAIC01OSw2ICs2OSwxMyBAQAogCQlybSAkbGRzb2NvbmYKIAlmaQogCisJIyBSZW1vdmUgYW55IGRpcmVjdG9yaWVzIHRlbXBvcmFyaWx5IGNyZWF0ZWQgZm9yIHN5c2NvbmZkaXIKKwljbGVhbnVwZGlyPSIke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9IgorCXdoaWxlIFsgIiR7cHJlc2VudGRpcn0iICE9ICIke2NsZWFudXBkaXJ9IiBdIDsgZG8KKwkJcm1kaXIgIiR7Y2xlYW51cGRpcn0iCisJCWNsZWFudXBkaXI9YGRpcm5hbWUgJHtjbGVhbnVwZGlyfWAKKwlkb25lCisKIAlwcmVfcHJlbGlua19zaXplPWBkdSAta3MgJHtJTUFHRV9ST09URlN9IHwgYXdrICd7c2l6ZSA9ICQxIDsgcHJpbnQgc2l6ZSB9J2AKIAllY2hvICJTaXplIGFmdGVyIHByZWxpbmtpbmcgJHByZV9wcmVsaW5rX3NpemUuIgogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggYzI4MjQzOS4uNjk0YjU4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCkBAIC02MiwxMCArNjIsNyBAQAogICAgIHZhbGlkX2ZlYXR1cmVzID0gKGQuZ2V0VmFyRmxhZygnSU1BR0VfRkVBVFVSRVMnLCAndmFsaWRpdGVtcycpIG9yICIiKS5zcGxpdCgpCiAgICAgdmFsaWRfZmVhdHVyZXMgKz0gZC5nZXRWYXJGbGFncygnQ09NUExFTUVOVEFSWV9HTE9CJykua2V5cygpCiAgICAgZm9yIHZhciBpbiBkOgotICAgICAgIGlmIHZhci5zdGFydHN3aXRoKCJQQUNLQUdFX0dST1VQXyIpOgotICAgICAgICAgICBiYi53YXJuKCJQQUNLQUdFX0dST1VQIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgRkVBVFVSRV9QQUNLQUdFUyBpbnN0ZWFkIikKLSAgICAgICAgICAgdmFsaWRfZmVhdHVyZXMuYXBwZW5kKHZhclsxNDpdKQotICAgICAgIGVsaWYgdmFyLnN0YXJ0c3dpdGgoIkZFQVRVUkVfUEFDS0FHRVNfIik6CisgICAgICAgaWYgdmFyLnN0YXJ0c3dpdGgoIkZFQVRVUkVfUEFDS0FHRVNfIik6CiAgICAgICAgICAgIHZhbGlkX2ZlYXR1cmVzLmFwcGVuZCh2YXJbMTc6XSkKICAgICB2YWxpZF9mZWF0dXJlcy5zb3J0KCkKIApAQCAtNjA5LDYgKzYwNiw3IEBACiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCiBkb19pbnN0YWxsW25vZXhlY10gPSAiMSIKK2RlbHRhc2sgZG9fcG9wdWxhdGVfbGljCiBkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIGRvX3BhY2thZ2Vbbm9leGVjXSA9ICIxIgogZGVsdGFzayBkb19wYWNrYWdlX3FhCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwppbmRleCAyZWVmZmJiLi5mODJmMWQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKQEAgLTU5LDYgKzU5LDggQEAKIAogWklQX0NPTVBSRVNTSU9OX0xFVkVMID89ICItOSIKIAorWlNURF9DT01QUkVTU0lPTl9MRVZFTCA/PSAiLTMiCisKIEpGRlMyX1NVTV9FWFRSQV9BUkdTID89ICIiCiBJTUFHRV9DTURfamZmczIgPSAibWtmcy5qZmZzMiAtLXJvb3Q9JHtJTUFHRV9ST09URlN9IC0tZmFrZXRpbWUgLS1vdXRwdXQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5qZmZzMiAke0VYVFJBX0lNQUdFQ01EfSIKIApAQCAtMTI4LDcgKzEzMCw3IEBACiAKIGRvX2ltYWdlX2NwaW9bY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9jcGlvX2FwcGVuZCIKIElNQUdFX0NNRF9jcGlvICgpIHsKLQkoY2QgJHtJTUFHRV9ST09URlN9ICYmIGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyA+JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5jcGlvKQorCShjZCAke0lNQUdFX1JPT1RGU30gJiYgZmluZCAuIHwgc29ydCB8IGNwaW8gLS1yZXByb2R1Y2libGUgLW8gLUggbmV3YyA+JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5jcGlvKQogCSMgV2Ugb25seSBuZWVkIHRoZSAvaW5pdCBzeW1saW5rIGlmIHdlJ3JlIGJ1aWxkaW5nIHRoZSByZWFsCiAJIyBpbWFnZS4gVGhlIC1kYmcgaW1hZ2UgZG9lc24ndCBuZWVkIGl0ISBCeSBiZWluZyBjbGV2ZXIKIAkjIGFib3V0IHRoaXMgd2UgYWxzbyBhdm9pZCAndG91Y2gnIGJlbG93IGZhaWxpbmcsIGFzIGl0CkBAIC0yNjksNyArMjcxLDcgQEAKICAgICBoZGRpbWcgXAogICAgIHNxdWFzaGZzIHNxdWFzaGZzLXh6IHNxdWFzaGZzLWx6byBzcXVhc2hmcy1sejQgXAogICAgIHViaSB1YmlmcyBtdWx0aXViaSBcCi0gICAgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiB0YXIubHo0IFwKKyAgICB0YXIgdGFyLmd6IHRhci5iejIgdGFyLnh6IHRhci5sejQgdGFyLnpzdCBcCiAgICAgY3BpbyBjcGlvLmd6IGNwaW8ueHogY3Bpby5sem1hIGNwaW8ubHo0IFwKICAgICB3aWMgd2ljLmd6IHdpYy5iejIgd2ljLmx6bWEgXAogICAgIGNvbnRhaW5lciBcCkBAIC0yODIsNyArMjg0LDcgQEAKICMgQ09OVkVSU0lPTl9DTUQvREVQRU5EUy4KIENPTVBSRVNTSU9OVFlQRVMgPz0gIiIKIAotQ09OVkVSU0lPTlRZUEVTID0gImd6IGJ6MiBsem1hIHh6IGx6NCBsem8gemlwIHN1bSBtZDVzdW0gc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gYm1hcCB1LWJvb3Qgdm1kayB2ZGkgcWNvdzIgYmFzZTY0ICR7Q09NUFJFU1NJT05UWVBFU30iCitDT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgenN0IHN1bSBtZDVzdW0gc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gYm1hcCB1LWJvb3Qgdm1kayB2ZGkgcWNvdzIgYmFzZTY0ICR7Q09NUFJFU1NJT05UWVBFU30iCiBDT05WRVJTSU9OX0NNRF9sem1hID0gImx6bWEgLWsgLWYgLTcgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCiBDT05WRVJTSU9OX0NNRF9neiA9ICJnemlwIC1mIC05IC1uIC1jIC0tcnN5bmNhYmxlICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uZ3oiCiBDT05WRVJTSU9OX0NNRF9iejIgPSAicGJ6aXAyIC1mIC1rICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgpAQCAtMjkwLDYgKzI5Miw3IEBACiBDT05WRVJTSU9OX0NNRF9sejQgPSAibHo0IC05IC16IC1sICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmx6NCIKIENPTlZFUlNJT05fQ01EX2x6byA9ICJsem9wIC05ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfemlwID0gInppcCAke1pJUF9DT01QUkVTU0lPTl9MRVZFTH0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uemlwICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgorQ09OVkVSU0lPTl9DTURfenN0ID0gInpzdGQgLWYgLWsgLVQwIC1jICR7WlNURF9DT01QUkVTU0lPTl9MRVZFTH0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS56c3QiCiBDT05WRVJTSU9OX0NNRF9zdW0gPSAic3VtdG9vbCAtaSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAtbyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5zdW0gJHtKRkZTMl9TVU1fRVhUUkFfQVJHU30iCiBDT05WRVJTSU9OX0NNRF9tZDVzdW0gPSAibWQ1c3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubWQ1c3VtIgogQ09OVkVSU0lPTl9DTURfc2hhMXN1bSA9ICJzaGExc3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc2hhMXN1bSIKQEAgLTMxMCw2ICszMTMsNyBAQAogQ09OVkVSU0lPTl9ERVBFTkRTX2x6NCA9ICJsejQtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2x6byA9ICJsem9wLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU196aXAgPSAiemlwLW5hdGl2ZSIKK0NPTlZFUlNJT05fREVQRU5EU196c3QgPSAienN0ZC1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfc3VtID0gIm10ZC11dGlscy1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfYm1hcCA9ICJibWFwLXRvb2xzLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU191LWJvb3QgPSAidS1ib290LXRvb2xzLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKaW5kZXggZjM1MGRjMi4uOTZlZDA0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKQEAgLTQsNyArNCw3IEBACiAgICAgICAgICAgIEJCTEFZRVJTIElNR0RFUExPWURJUiBERVBMT1lfRElSX0lNQUdFIEZBS0VST09UQ01EIElNQUdFX0JBU0VOQU1FIElNQUdFX0JPT1RfRklMRVMgXAogICAgICAgICAgICBJTUFHRV9MSU5LX05BTUUgSU1BR0VfUk9PVEZTIElOSVRSQU1GU19GU1RZUEVTIElOSVRSRCBJTklUUkRfTElWRSBJU09ESVIgUkVDSVBFX1NZU1JPT1RfTkFUSVZFIFwKICAgICAgICAgICAgUk9PVEZTX1NJWkUgU1RBR0lOR19EQVRBRElSIFNUQUdJTkdfRElSIFNUQUdJTkdfTElCRElSIFRBUkdFVF9TWVMgXAotICAgICAgICAgICBLRVJORUxfSU1BR0VUWVBFIE1BQ0hJTkUgSU5JVFJBTUZTX0lNQUdFIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgSU5JVFJBTUZTX0xJTktfTkFNRSIKKyAgICAgICAgICAgS0VSTkVMX0lNQUdFVFlQRSBNQUNISU5FIElOSVRSQU1GU19JTUFHRSBJTklUUkFNRlNfSU1BR0VfQlVORExFIElOSVRSQU1GU19MSU5LX05BTUUgQVBQRU5EIgogCiBpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTklUUkFNRlNfSU1BR0VfQlVORExFJywgJzEnLCAna2VybmVsLWFydGlmYWN0LW5hbWVzJywgJycsIGQpfQogCkBAIC0yNywxNiArMjcsMTYgQEAKIAogSU1BR0VfQ01EX3dpYyAoKSB7CiAJb3V0PSIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSIKKwlidWlsZF93aWM9IiR7V09SS0RJUn0vYnVpbGQtd2ljIgogCXdrcz0iJHtXS1NfRlVMTF9QQVRIfSIKIAlpZiBbIC16ICIkd2tzIiBdOyB0aGVuCiAJCWJiZmF0YWwgIk5vIGtpY2tzdGFydCBmaWxlcyBmcm9tIFdLU19GSUxFUyB3ZXJlIGZvdW5kOiAke1dLU19GSUxFU30uIFBsZWFzZSBzZXQgV0tTX0ZJTEUgb3IgV0tTX0ZJTEVTIGFwcHJvcHJpYXRlbHkuIgogCWZpCi0KLQlCVUlMRERJUj0iJHtUT1BESVJ9IiB3aWMgY3JlYXRlICIkd2tzIiAtLXZhcnMgIiR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0vaW1nZGF0YS8iIC1lICIke0lNQUdFX0JBU0VOQU1FfSIgLW8gIiRvdXQvIiAke1dJQ19DUkVBVEVfRVhUUkFfQVJHU30KLQltdiAiJG91dC8kKGJhc2VuYW1lICIke3drcyUud2tzfSIpIiouZGlyZWN0ICIkb3V0JHtJTUFHRV9OQU1FX1NVRkZJWH0ud2ljIgotCXJtIC1yZiAiJG91dC8iCisJQlVJTERESVI9IiR7VE9QRElSfSIgUFNFVURPX1VOTE9BRD0xIHdpYyBjcmVhdGUgIiR3a3MiIC0tdmFycyAiJHtTVEFHSU5HX0RJUn0vJHtNQUNISU5FfS9pbWdkYXRhLyIgLWUgIiR7SU1BR0VfQkFTRU5BTUV9IiAtbyAiJGJ1aWxkX3dpYy8iICR7V0lDX0NSRUFURV9FWFRSQV9BUkdTfQorCW12ICIkYnVpbGRfd2ljLyQoYmFzZW5hbWUgIiR7d2tzJS53a3N9IikiKi5kaXJlY3QgIiRvdXQke0lNQUdFX05BTUVfU1VGRklYfS53aWMiCiB9CiBJTUFHRV9DTURfd2ljW3ZhcmRlcHNleGNsdWRlXSA9ICJXS1NfRlVMTF9QQVRIIFdLU19GSUxFUyBUT1BESVIiCitkb19pbWFnZV93aWNbY2xlYW5kaXJzXSA9ICIke1dPUktESVJ9L2J1aWxkLXdpYyIKIAogIyBSZWJ1aWxkIHdoZW4gdGhlIHdrcyBmaWxlIG9yIHZhcnMgaW4gV0lDVkFSUyBjaGFuZ2UKIFVTSU5HX1dJQyA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnd2ljICcgKyAnICcuam9pbignd2ljLiVzJyAlIGMgZm9yIGMgaW4gJyR7Q09OVkVSU0lPTlRZUEVTfScuc3BsaXQoKSksICcxJywgJycsIGQpfSIKQEAgLTQ2LDYgKzQ2LDcgQEAKIAogIyBXZSBlbnN1cmUgYWxsIGFydGZhY3RzIGFyZSBkZXBsb3llZCAoZS5nIHZpcnR1YWwvYm9vdGxvYWRlcikKIGRvX2ltYWdlX3dpY1tyZWNyZGVwdGFza10gKz0gImRvX2RlcGxveSIKK2RvX2ltYWdlX3dpY1tkZXB0YXNrXSArPSAiZG9faW1hZ2VfY29tcGxldGUiCiAKIFdLU19GSUxFX0RFUEVORFNfREVGQVVMVCA9ICcke0BiYi51dGlscy5jb250YWluc19hbnkoIkJVSUxEX0FSQ0giLCBbICd4ODZfNjQnLCAnaTY4NicgXSwgInN5c2xpbnV4LW5hdGl2ZSIsICIiLGQpfScKIFdLU19GSUxFX0RFUEVORFNfREVGQVVMVCArPSAiYm1hcC10b29scy1uYXRpdmUgY2RydG9vbHMtbmF0aXZlIGJ0cmZzLXRvb2xzLW5hdGl2ZSBzcXVhc2hmcy10b29scy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSIKQEAgLTg0LDYgKzg1LDEwIEBACiAgICAgYmIudXRpbHMuY29weWZpbGUod2tzX2ZpbGUsICIlcy8lcyIgJSAoZGVwZGlyLCBiYXNlbmFtZSArICctJyArIG9zLnBhdGguYmFzZW5hbWUod2tzX2ZpbGUpKSkKIH0KIAorZG9fZmx1c2hfcHNldWRvZGIoKSB7CisJJHtGQUtFUk9PVEVOVn0gJHtGQUtFUk9PVENNRH0gLVMKK30KKwogcHl0aG9uICgpIHsKICAgICBpZiBkLmdldFZhcignVVNJTkdfV0lDJyk6CiAgICAgICAgIHdrc19maWxlX3UgPSBkLmdldFZhcignV0tTX0ZVTExfUEFUSCcsIEZhbHNlKQpAQCAtMTM3LDYgKzE0Miw3IEBACiAgICAgZGVwZGlyID0gZC5nZXRWYXIoJ0lNR0RFUExPWURJUicpCiAgICAgYmIudXRpbHMuY29weWZpbGUob3MucGF0aC5qb2luKG91dGRpciwgYmFzZW5hbWUpICsgJy5lbnYnLCBvcy5wYXRoLmpvaW4oZGVwZGlyLCBiYXNlbmFtZSkgKyAnLmVudicpCiB9CithZGR0YXNrIGRvX2ZsdXNoX3BzZXVkb2RiIGFmdGVyIGRvX2ltYWdlIGJlZm9yZSBkb19pbWFnZV93aWMKIGFkZHRhc2sgZG9fcm9vdGZzX3dpY2VudiBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9faW1hZ2Vfd2ljCiBkb19yb290ZnNfd2ljZW52W3ZhcmRlcHNdICs9ICIke1dJQ1ZBUlN9IgogZG9fcm9vdGZzX3dpY2VudltwcmVmdW5jc10gPSAnc2V0X2ltYWdlX3NpemUnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCmluZGV4IGY4NTZjZjYuLjdmYzhmMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCkBAIC0yOCwxMyArMjgsMTQgQEAKICAgICAgICAgICAgIHBuLW92ZXJyaWRlcyBpbmZvZGlyIGJ1aWxkLWRlcHMgc3JjLXVyaS1iYWQgXAogICAgICAgICAgICAgdW5rbm93bi1jb25maWd1cmUtb3B0aW9uIHN5bWxpbmstdG8tc3lzcm9vdCBtdWx0aWxpYiBcCiAgICAgICAgICAgICBpbnZhbGlkLXBhY2thZ2Vjb25maWcgaG9zdC11c2VyLWNvbnRhbWluYXRlZCB1cHBlcmNhc2UtcG4gcGF0Y2gtZnV6eiBcCisgICAgICAgICAgICBtaW1lIG1pbWUteGRnIFwKICAgICAgICAgICAgICIKIEVSUk9SX1FBID89ICJkZXYtc28gZGVidWctZGVwcyBkZXYtZGVwcyBkZWJ1Zy1maWxlcyBhcmNoIHBrZ2NvbmZpZyBsYSBcCiAgICAgICAgICAgICBwZXJtcyBkZXAtY21wIHBrZ3ZhcmNoZWNrIHBlcm0tY29uZmlnIHBlcm0tbGluZSBwZXJtLWxpbmsgXAogICAgICAgICAgICAgc3BsaXQtc3RyaXAgcGFja2FnZXMtbGlzdCBwa2d2LXVuZGVmaW5lZCB2YXItdW5kZWZpbmVkIFwKICAgICAgICAgICAgIHZlcnNpb24tZ29pbmctYmFja3dhcmRzIGV4cGFuZGVkLWQgaW52YWxpZC1jaGFycyBcCiAgICAgICAgICAgICBsaWNlbnNlLWNoZWNrc3VtIGRldi1lbGYgZmlsZS1yZGVwcyBjb25maWd1cmUtdW5zYWZlIFwKLSAgICAgICAgICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IHBlcmxsb2NhbHBvZCBcCisgICAgICAgICAgICBjb25maWd1cmUtZ2V0dGV4dCBwZXJsbG9jYWxwb2Qgc2hlYmFuZy1zaXplIFwKICAgICAgICAgICAgICIKICMgQWRkIHVzcm1lcmdlIFFBIGNoZWNrIGJhc2VkIG9uIGRpc3RybyBmZWF0dXJlCiBFUlJPUl9RQV9hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcgdXNybWVyZ2UnLCAnJywgZCl9IgpAQCAtODIsNiArODMsMjkgQEAKICAgICBlbHNlOgogICAgICAgICBtZXNzYWdlc1tzZWN0aW9uXSA9IG1lc3NhZ2VzW3NlY3Rpb25dICsgIlxuIiArIG5ld19tc2cKIAorUUFQQVRIVEVTVFtzaGViYW5nLXNpemVdID0gInBhY2thZ2VfcWFfY2hlY2tfc2hlYmFuZ19zaXplIgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfc2hlYmFuZ19zaXplKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgorICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpIG9yIGVsZjoKKyAgICAgICAgcmV0dXJuCisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc3RhbnphID0gZi5yZWFkbGluZSgxMzApCisgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIHJldHVybgorCisgICAgaWYgc3RhbnphLnN0YXJ0c3dpdGgoYicjIScpOgorICAgICAgICAjU2hlYmFuZyBub3QgZm91bmQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhbnphID0gc3RhbnphLmRlY29kZSgidXRmLTgiKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgI0lmIGl0IGlzIG5vdCBhIHRleHQgZmlsZSwgaXQgaXMgbm90IGEgc2NyaXB0CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBsZW4oc3RhbnphKSA+IDEyOToKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJzaGViYW5nLXNpemUiLCAiJXM6ICVzIG1heGltdW0gc2hlYmFuZyBzaXplIGV4Y2VlZGVkLCB0aGUgbWF4aW11bSBzaXplIGlzIDEyOC4iICUgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLCBkKSkpCisgICAgICAgICAgICByZXR1cm4KKwogUUFQQVRIVEVTVFtsaWJleGVjXSA9ICJwYWNrYWdlX3FhX2NoZWNrX2xpYmV4ZWMiCiBkZWYgcGFja2FnZV9xYV9jaGVja19saWJleGVjKHBhdGgsbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CiAKQEAgLTE4MSwxMCArMjA1LDUwIEBACiAgICAgbGliZ2NjLmEsIGxpYmdjb3YuYSB3aWxsIGJlIHNraXBwZWQgaW4gdGhlaXIgcGFja2FnZXMKICAgICAiIiIKIAotICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCItcGljIikgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItc3RhdGljZGV2IikgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItcHRlc3QiKSBhbmQgcGF0aC5lbmRzd2l0aCgiLmEiKSBhbmQgbm90IHBhdGguZW5kc3dpdGgoIl9ub25zaGFyZWQuYSIpOgorICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCItcGljIikgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItc3RhdGljZGV2IikgYW5kIG5vdCBuYW1lLmVuZHN3aXRoKCItcHRlc3QiKSBhbmQgcGF0aC5lbmRzd2l0aCgiLmEiKSBhbmQgbm90IHBhdGguZW5kc3dpdGgoIl9ub25zaGFyZWQuYSIpIGFuZCBub3QgJy91c3IvbGliL2RlYnVnLXN0YXRpYy8nIGluIHBhdGggYW5kIG5vdCAnLy5kZWJ1Zy1zdGF0aWMvJyBpbiBwYXRoOgogICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAic3RhdGljZGV2IiwgIm5vbiAtc3RhdGljZGV2IHBhY2thZ2UgY29udGFpbnMgc3RhdGljIC5hIGxpYnJhcnk6ICVzIHBhdGggJyVzJyIgJSBcCiAgICAgICAgICAgICAgICAgIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCiAKK1FBUEFUSFRFU1RbbWltZV0gPSAicGFja2FnZV9xYV9jaGVja19taW1lIgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfbWltZShwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKKyAgICAiIiIKKyAgICBDaGVjayBpZiBwYWNrYWdlIGluc3RhbGxzIG1pbWUgdHlwZXMgdG8gL3Vzci9zaGFyZS9taW1lL3BhY2thZ2VzCisgICAgd2hpbGUgbm8gaW5oZXJpdGluZyBtaW1lLmJiY2xhc3MKKyAgICAiIiIKKworICAgIGlmIGQuZ2V0VmFyKCJkYXRhZGlyIikgKyAiL21pbWUvcGFja2FnZXMiIGluIHBhdGggYW5kIHBhdGguZW5kc3dpdGgoJy54bWwnKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm1pbWUiLCBkKToKKyAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgIm1pbWUiLCAicGFja2FnZSBjb250YWlucyBtaW1lIHR5cGVzIGJ1dCBkb2VzIG5vdCBpbmhlcml0IG1pbWU6ICVzIHBhdGggJyVzJyIgJSBcCisgICAgICAgICAgICAgICAgIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCisKK1FBUEFUSFRFU1RbbWltZS14ZGddID0gInBhY2thZ2VfcWFfY2hlY2tfbWltZV94ZGciCitkZWYgcGFja2FnZV9xYV9jaGVja19taW1lX3hkZyhwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKKyAgICAiIiIKKyAgICBDaGVjayBpZiBwYWNrYWdlIGluc3RhbGxzIGRlc2t0b3AgZmlsZSBjb250YWluaW5nIE1pbWVUeXBlIGFuZCByZXF1aXJlcworICAgIG1pbWUtdHlwZXMuYmJjbGFzcyB0byBjcmVhdGUgL3Vzci9zaGFyZS9hcHBsaWNhdGlvbnMvbWltZWluZm8uY2FjaGUKKyAgICAiIiIKKworICAgIGlmIGQuZ2V0VmFyKCJkYXRhZGlyIikgKyAiL2FwcGxpY2F0aW9ucyIgaW4gcGF0aCBhbmQgcGF0aC5lbmRzd2l0aCgnLmRlc2t0b3AnKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoIm1pbWUteGRnIiwgZCk6CisgICAgICAgIG1pbWVfdHlwZV9mb3VuZCA9IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkKCkuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGlmICdNaW1lVHlwZScgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVfdHlwZV9mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAjIEF0IGxlYXN0IGxpYnJlb2ZmaWNlIGluc3RhbGxzIHN5bWxpbmtzIHdpdGggYWJzb2x1dGUgcGF0aHMgdGhhdCBhcmUgZGFuZ2xpbmcgaGVyZS4KKyAgICAgICAgICAgICMgV2UgY291bGQgaW1wbGVtZW50IHNvbWUgbWFnaWMgYnV0IGZvciBmZXcgKG9uZSkgcmVjaXBlcyBpdCBpcyBub3Qgd29ydGggdGhlIGVmZm9ydCBzbyBqdXN0IHdhcm46CisgICAgICAgICAgICB3c3RyID0gIiVzIGNhbm5vdCBvcGVuICVzIC0gaXMgaXQgYSBzeW1saW5rIHdpdGggYWJzb2x1dGUgcGF0aD9cbiIgJSAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpCisgICAgICAgICAgICB3c3RyICs9ICJQbGVhc2UgY2hlY2sgaWYgKGxpbmtlZCkgZmlsZSBjb250YWlucyBrZXkgJ01pbWVUeXBlJy5cbiIKKyAgICAgICAgICAgIHBrZ25hbWUgPSBuYW1lCisgICAgICAgICAgICBpZiBuYW1lID09IGQuZ2V0VmFyKCdQTicpOgorICAgICAgICAgICAgICAgIHBrZ25hbWUgPSAnJHtQTn0nCisgICAgICAgICAgICB3c3RyICs9ICJJZiB5ZXM6IGFkZCBcJ2luaGVydCBtaW1lLXhkZ1wnIGFuZCBcJ01JTUVfWERHX1BBQ0tBR0VTICs9IFwiJXNcIlwnIC8gaWYgbm8gYWRkIFwnSU5TQU5FX1NLSVBfJXMgKz0gXCJtaW1lLXhkZ1wiXCcgdG8gcmVjaXBlLiIgJSAocGtnbmFtZSwgcGtnbmFtZSkKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJtaW1lLXhkZyIsIHdzdHIpCisgICAgICAgIGlmIG1pbWVfdHlwZV9mb3VuZDoKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJtaW1lLXhkZyIsICJwYWNrYWdlIGNvbnRhaW5zIGRlc2t0b3AgZmlsZSB3aXRoIGtleSAnTWltZVR5cGUnIGJ1dCBkb2VzIG5vdCBpbmhlcnQgbWltZS14ZGc6ICVzIHBhdGggJyVzJyIgJSBcCisgICAgICAgICAgICAgICAgICAgIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkpCisKIGRlZiBwYWNrYWdlX3FhX2NoZWNrX2xpYmRpcihkKToKICAgICAiIiIKICAgICBDaGVjayBmb3Igd3JvbmcgbGlicmFyeSBpbnN0YWxsYXRpb24gcGF0aHMuIEZvciBpbnN0YW5jZSwgY2F0Y2gKQEAgLTM3MywxMSArNDM3LDEwIEBACiAgICAgZm9yIGxpbmUgaW4gcGhkcnMuc3BsaXQoIlxuIik6CiAgICAgICAgIGlmICJTWU1UQUIiIGluIGxpbmU6CiAgICAgICAgICAgICBoYXNfc3ltcyA9IFRydWUKLSAgICAgICAgaWYgIkdOVV9IQVNIIiBpbiBsaW5lOgorICAgICAgICBpZiAiR05VX0hBU0giIG9yICJEVF9NSVBTX1hIQVNIIiBpbiBsaW5lOgogICAgICAgICAgICAgc2FuZSA9IFRydWUKLSAgICAgICAgaWYgIlttaXBzMzJdIiBpbiBsaW5lIG9yICJbbWlwczY0XSIgaW4gbGluZToKKyAgICAgICAgaWYgKCJbbWlwczMyXSIgaW4gbGluZSBvciAiW21pcHM2NF0iIGluIGxpbmUpIGFuZCBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgogICAgICAgICAgICAgc2FuZSA9IFRydWUKLQogICAgIGlmIGhhc19zeW1zIGFuZCBub3Qgc2FuZToKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgImxkZmxhZ3MiLCAiTm8gR05VX0hBU0ggaW4gdGhlIEVMRiBiaW5hcnkgJXMsIGRpZG4ndCBwYXNzIExERkxBR1M/IiAlIHBhdGgpCiAKQEAgLTg5Myw5ICs5NTYsOSBAQAogICAgIGlmICIke1BOfSIgaW4gZC5nZXRWYXIoIlNSQ19VUkkiLCBGYWxzZSk6CiAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJzcmMtdXJpLWJhZCIsICIlczogU1JDX1VSSSB1c2VzIFBOIG5vdCBCUE4iICUgcG4sIGQpCiAKLSAgICBwbiA9IGQuZ2V0VmFyKCJTUkNfVVJJIikKLSAgICBpZiByZS5zZWFyY2gociJnaXRodWJcLmNvbS8uKy8uKy9hcmNoaXZlLy4rIiwgcG4pOgotICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigic3JjLXVyaS1iYWQiLCAiJXM6IFNSQ19VUkkgdXNlcyB1bnN0YWJsZSBHaXRIdWIgYXJjaGl2ZXMiICUgcG4sIGQpCisgICAgZm9yIHVybCBpbiBkLmdldFZhcigiU1JDX1VSSSIpLnNwbGl0KCk6CisgICAgICAgIGlmIHJlLnNlYXJjaChyImdpdGh1YlwuY29tLy4rLy4rL2FyY2hpdmUvLisiLCB1cmwpOgorICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInNyYy11cmktYmFkIiwgIiVzOiBTUkNfVVJJIHVzZXMgdW5zdGFibGUgR2l0SHViIGFyY2hpdmVzIiAlIHBuLCBkKQogCiAKICMgVGhlIFBBQ0tBR0UgRlVOQyB0byBzY2FuIGVhY2ggcGFja2FnZQpAQCAtOTM3LDE0ICsxMDAwLDEzIEBACiAgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKICAgICBwYWNrYWdlcyA9IHNldCgoZC5nZXRWYXIoJ1BBQ0tBR0VTJykgb3IgJycpLnNwbGl0KCkpCiAKLSAgICBjcGF0aCA9IG9lLmNhY2hlZHBhdGguQ2FjaGVkUGF0aCgpCiAgICAgZ2xvYmFsIHBrZ2ZpbGVzCiAgICAgcGtnZmlsZXMgPSB7fQogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6CiAgICAgICAgIHBrZ2ZpbGVzW3BrZ10gPSBbXQotICAgICAgICBmb3Igd2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsocGtnZGVzdCArICIvIiArIHBrZyk6CisgICAgICAgIGZvciB3YWxrcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKSk6CiAgICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBwa2dmaWxlc1twa2ddLmFwcGVuZCh3YWxrcm9vdCArIG9zLnNlcCArIGZpbGUpCisgICAgICAgICAgICAgICAgcGtnZmlsZXNbcGtnXS5hcHBlbmQob3MucGF0aC5qb2luKHdhbGtyb290LCBmaWxlKSkKIAogICAgICMgbm8gcGFja2FnZXMgc2hvdWxkIGJlIHNjYW5uZWQKICAgICBpZiBub3QgcGFja2FnZXM6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCmluZGV4IGVjMThhM2QuLjcyYjA1ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCkBAIC0zOTEsMTEgKzM5MSwxMCBAQAogCiAJaWYgWyAtbiAiJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0iIF07IHRoZW4KIAkJZHRiY291bnQ9MQotCQlmb3IgRFRCRklMRSBpbiAke0VYVEVSTkFMX0tFUk5FTF9ERVZJQ0VUUkVFfS8qLmR0YjsgZG8KLQkJCURUQj1gYmFzZW5hbWUgJHtEVEJGSUxFfWAKKwkJZm9yIERUQiBpbiAkKGZpbmQgIiR7RVhURVJOQUxfS0VSTkVMX0RFVklDRVRSRUV9IiBcKCAtbmFtZSAnKi5kdGInIC1vIC1uYW1lICcqLmR0Ym8nIFwpIC1wcmludGYgJyVQXG4nIHwgc29ydCk7IGRvCiAJCQlEVEI9JChlY2hvICIke0RUQn0iIHwgdHIgJy8nICdfJykKIAkJCURUQlM9IiR7RFRCU30gJHtEVEJ9IgotCQkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2R0YiAkezF9ICR7RFRCfSAke0RUQkZJTEV9CisJCQlmaXRpbWFnZV9lbWl0X3NlY3Rpb25fZHRiICR7MX0gJHtEVEJ9ICIke0VYVEVSTkFMX0tFUk5FTF9ERVZJQ0VUUkVFfS8ke0RUQn0iCiAJCWRvbmUKIAlmaQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCmluZGV4IGVkOWJjZmEuLjViYzYyNzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCkBAIC0xLDggKzEsMjQgQEAKICMgcmVtb3ZlIHRhc2tzIHRoYXQgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBpbiBjYXNlIGV4dGVybmFsc3JjIGlzIGluaGVyaXRlZAotU1JDVFJFRUNPVkVSRURUQVNLUyArPSAiZG9fa2VybmVsX2NvbmZpZ21lIGRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX2tlcm5lbF9jb25maWdjaGVjayBkb19rZXJuZWxfY2hlY2tvdXQgZG9fZmV0Y2ggZG9fdW5wYWNrIGRvX3BhdGNoIgorU1JDVFJFRUNPVkVSRURUQVNLUyArPSAiZG9fdmFsaWRhdGVfYnJhbmNoZXMgZG9fa2VybmVsX2NvbmZpZ2NoZWNrIGRvX2tlcm5lbF9jaGVja291dCBkb19mZXRjaCBkb191bnBhY2sgZG9fcGF0Y2giCiBQQVRDSF9HSVRfVVNFUl9FTUFJTCA/PSAia2VybmVsLXlvY3RvQG9lIgogUEFUQ0hfR0lUX1VTRVJfTkFNRSA/PSAiT3BlbkVtYmVkZGVkIgogCisjIFRoZSBkaXN0cm8gb3IgbG9jYWwuY29uZiBzaG91bGQgc2V0IHRoaXMsIGJ1dCBpZiBub2JvZHkgY2FyZXMuLi4KK0xJTlVYX0tFUk5FTF9UWVBFID8/PSAic3RhbmRhcmQiCisKKyMgS01FVEEgPz0gIiIKK0tCUkFOQ0ggPz0gIm1hc3RlciIKK0tNQUNISU5FID89ICIke01BQ0hJTkV9IgorU1JDUkVWX0ZPUk1BVCA/PSAibWV0YV9tYWNoaW5lIgorCisjIExFVkVMUzoKKyMgICAwOiBubyByZXBvcnRpbmcKKyMgICAxOiByZXBvcnQgb3B0aW9ucyB0aGF0IGFyZSBzcGVjaWZpZWQsIGJ1dCBub3QgaW4gdGhlIGZpbmFsIGNvbmZpZworIyAgIDI6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIG5vdCBoYXJkd2FyZSByZWxhdGVkLCBidXQgc2V0IGJ5IGEgQlNQCitLQ09ORl9BVURJVF9MRVZFTCA/PSAiMSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA/PSAiMCIKK0tNRVRBX0FVRElUID89ICJ5ZXMiCisKICMgcmV0dXJucyBsb2NhbCAoYWJzb2x1dGUpIHBhdGggbmFtZXMgZm9yIGFsbCB2YWxpZCBwYXRjaGVzIGluIHRoZQogIyBzcmNfdXJpCiBkZWYgZmluZF9wYXRjaGVzKGQsc3ViZGlyKToKQEAgLTMxLDcgKzQ3LDcgQEAKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHMpKQogICAgICAgICBpZiBleHQgYW5kIGV4dCBpbiBbIi5zY2MiLCAiLmNmZyJdOgogICAgICAgICAgICAgc291cmNlc19saXN0LmFwcGVuZChzKQotICAgICAgICBlbGlmIGJhc2UgYW5kIGJhc2UgaW4gJ2RlZmNvbmZpZyc6CisgICAgICAgIGVsaWYgYmFzZSBhbmQgJ2RlZmNvbmZpZycgaW4gYmFzZToKICAgICAgICAgICAgIHNvdXJjZXNfbGlzdC5hcHBlbmQocykKIAogICAgIHJldHVybiBzb3VyY2VzX2xpc3QKQEAgLTgzLDEzICs5OSw2IEBACiAJCWZpCiAJZmkKIAotCW1hY2hpbmVfYnJhbmNoPSIke0AgZ2V0X21hY2hpbmVfYnJhbmNoKGQsICIke0tCUkFOQ0h9IiApfSIKLQltYWNoaW5lX3NyY3Jldj0iJHtTUkNSRVZfbWFjaGluZX0iCi0JaWYgWyAteiAiJHttYWNoaW5lX3NyY3Jldn0iIF07IHRoZW4KLQkJIyBmYWxsYmFjayB0byBTUkNSRVYgaWYgYSBub24gbWFjaGluZV9tZXRhIHRyZWUgaXMgYmVpbmcgYnVpbHQKLQkJbWFjaGluZV9zcmNyZXY9IiR7U1JDUkVWfSIKLQlmaQotCiAJIyBJbiBhIHNpbWlsYXIgbWFubmVyIHRvIHRoZSBrZXJuZWwgaXRzZWxmOgogCSMKIAkjICAgZGVmY29uZmlnOiAkKG9iaikvY29uZgpAQCAtMTgyLDYgKzE5MSwxNCBAQAogCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KIAkJCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgbG9jYXRlIEJTUCBkZWZpbml0aW9uIGZvciAke0tNQUNISU5FfS8ke0xJTlVYX0tFUk5FTF9UWVBFfSBhbmQgbm8gZGVmY29uZmlnIHdhcyBwcm92aWRlZCIKIAkJZmkKKworCQkjIGlmIHRoZSBic3AgZGVmaW5pdGlvbiBoYXMgImRlZmluZSBLTUVUQV9FWFRFUk5BTF9CU1AgdCIsCisJCSMgdGhlbiB3ZSBuZWVkIHRvIHNldCBhIGZsYWcgdGhhdCB3aWxsIGluc3RydWN0IHRoZSBuZXh0CisJCSMgc3RlcHMgdG8gdXNlIHRoZSBCU1AgYXMgYm90aCBjb25maWd1cmF0aW9uIGFuZCBwYXRjaGVzLgorCQlncmVwIC1xIEtNRVRBX0VYVEVSTkFMX0JTUCAkYnNwX2RlZmluaXRpb24KKwkJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisJCSAgICBLTUVUQV9FWFRFUk5BTF9CU1BTPSJ0IgorCQlmaQogCWZpCiAJbWV0YV9kaXI9JChrZ2l0IC0tbWV0YSkKIApAQCAtMTk1LDYgKzIxMiwxMyBAQAogCQlmaQogCWZpCiAKKwkjIGlmIEtNRVRBX0VYVEVSTkFMX0JTUFMgaGFzIGJlZW4gc2V0LCBvciBpdCBoYXMgYmVlbiBkZXRlY3RlZCBmcm9tCisJIyB0aGUgYnNwIGRlZmluaXRpb24sIHRoZW4gd2UgaW5qZWN0IHRoZSBic3BfZGVmaW5pdGlvbiBpbnRvIHRoZQorCSMgcGF0Y2ggcGhhc2UgYmVsb3cuICB3ZSdsbCBwaWdneSBiYWNrIG9uIHRoZSBzY2NzIHZhcmlhYmxlLgorCWlmIFsgLW4gIiR7S01FVEFfRVhURVJOQUxfQlNQU30iIF07IHRoZW4KKwkJc2Njcz0iJHtic3BfZGVmaW5pdGlvbn0gJHtzY2NzfSIKKwlmaQorCiAJIyBydW4yOiBvbmx5IGdlbmVyYXRlIHBhdGNoZXMgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIHBhc3NlZCBvbiB0aGUgU1JDX1VSSQogCWVsZW1lbnRzPSJgZWNobyAtbiAke3NjY3N9ICR7cGF0Y2hlc30gJHtLRVJORUxfRkVBVFVSRVN9YCIKIAlpZiBbIC1uICIke2VsZW1lbnRzfSIgXTsgdGhlbgpAQCAtMjkzLDcgKzMxNyw3IEBACiB9CiBkb19rZXJuZWxfY2hlY2tvdXRbZGlyc10gPSAiJHtTfSIKIAotYWRkdGFzayBrZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2tlcm5lbF9tZXRhZGF0YSBhZnRlciBkb191bnBhY2sKK2FkZHRhc2sga2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19rZXJuZWxfbWV0YWRhdGEgYWZ0ZXIgZG9fc3ltbGlua19rZXJuc3JjCiBhZGR0YXNrIGtlcm5lbF9tZXRhZGF0YSBhZnRlciBkb192YWxpZGF0ZV9icmFuY2hlcyBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCiBkb19rZXJuZWxfbWV0YWRhdGFbZGVwZW5kc10gPSAia2Vybi10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX3ZhbGlkYXRlX2JyYW5jaGVzW2RlcGVuZHNdID0gImtlcm4tdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCkBAIC0zMDEsMTAgKzMyNSw5IEBACiBkb19rZXJuZWxfY29uZmlnbWVbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19rZXJuZWxfY29uZmlnbWVbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYzpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJiYy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBiaXNvbi1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2tlcm5lbF9jb25maWdtZVtkZXBlbmRzXSArPSAia2Vybi10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2tlcm5lbF9jb25maWdtZVtkaXJzXSArPSAiJHtTfSAke0J9IgogZG9fa2VybmVsX2NvbmZpZ21lKCkgewotCXNldCArZQotCiAJIyB0cmFuc2xhdGUgdGhlIGtjb25maWdfbW9kZSBpbnRvIHNvbWV0aGluZyB0aGF0IG1lcmdlX2NvbmZpZy5zaAogCSMgdW5kZXJzdGFuZHMKIAljYXNlICR7S0NPTkZJR19NT0RFfSBpbgpAQCAtMzMwLDEzICszNTMsMjAgQEAKIAkJYmJmYXRhbF9sb2cgIkNvdWxkIG5vdCBmaW5kIGNvbmZpZ3VyYXRpb24gcXVldWUgKCR7bWV0YV9kaXJ9L2NvbmZpZy5xdWV1ZSkiCiAJZmkKIAotCUNGTEFHUz0iJHtDRkxBR1N9ICR7VE9PTENIQUlOX09QVElPTlN9IglIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIENDPSIke0tFUk5FTF9DQ30iIEFSQ0g9JHtBUkNIfSBtZXJnZV9jb25maWcuc2ggLU8gJHtCfSAke2NvbmZpZ19mbGFnc30gJHtjb25maWdzfSA+ICR7bWV0YV9kaXJ9L2NmZy9tZXJnZV9jb25maWdfYnVpbGQubG9nIDI+JjEKLQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJYmJmYXRhbF9sb2cgIkNvdWxkIG5vdCBjb25maWd1cmUgJHtLTUFDSElORX0tJHtMSU5VWF9LRVJORUxfVFlQRX0iCisJQ0ZMQUdTPSIke0NGTEFHU30gJHtUT09MQ0hBSU5fT1BUSU9OU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIgQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgQVJDSD0ke0FSQ0h9IG1lcmdlX2NvbmZpZy5zaCAtTyAke0J9ICR7Y29uZmlnX2ZsYWdzfSAke2NvbmZpZ3N9ID4gJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2cgMj4mMQorCWlmIFsgJD8gLW5lIDAgLW8gISAtZiAke0J9Ly5jb25maWcgXTsgdGhlbgorCQliYmVycm9yICJDb3VsZCBub3QgZ2VuZXJhdGUgYSAuY29uZmlnIGZvciAke0tNQUNISU5FfS0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKKwkJaWYgWyAke0tDT05GX0FVRElUX0xFVkVMfSAtZ3QgMSBdOyB0aGVuCisJCQliYmZhdGFsX2xvZyAiYGNhdCAke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZ2AiCisJCWVsc2UKKwkJCWJiZmF0YWxfbG9nICJEZXRhaWxzIGNhbiBiZSBmb3VuZCBhdDogJHtTfS8ke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZyIKKwkJZmkKIAlmaQogCi0JZWNobyAiIyBHbG9iYWwgc2V0dGluZ3MgZnJvbSBsaW51eCByZWNpcGUiID4+ICR7Qn0vLmNvbmZpZwotCWVjaG8gIkNPTkZJR19MT0NBTFZFUlNJT049IlwiJHtMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTn1cIiA+PiAke0J9Ly5jb25maWcKKwlpZiBbICEgLXogIiR7TElOVVhfVkVSU0lPTl9FWFRFTlNJT059IiBdOyB0aGVuCisJCWVjaG8gIiMgR2xvYmFsIHNldHRpbmdzIGZyb20gbGludXggcmVjaXBlIiA+PiAke0J9Ly5jb25maWcKKwkJZWNobyAiQ09ORklHX0xPQ0FMVkVSU0lPTj0iXCIke0xJTlVYX1ZFUlNJT05fRVhURU5TSU9OfVwiID4+ICR7Qn0vLmNvbmZpZworCWZpCiB9CiAKIGFkZHRhc2sga2VybmVsX2NvbmZpZ21lIGJlZm9yZSBkb19jb25maWd1cmUgYWZ0ZXIgZG9fcGF0Y2gKQEAgLTM1NSw2ICszODUsNyBAQAogCiAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICBlbnZbJ1BBVEgnXSA9ICIlczolcyVzIiAlIChkLmdldFZhcignUEFUSCcpLCBzLCAiL3NjcmlwdHMvdXRpbC8iKQorICAgIGVudlsnTEQnXSA9ICIke0tFUk5FTF9MRH0iCiAKICAgICB0cnk6CiAgICAgICAgIGNvbmZpZ3MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3NjYycsICctLWNvbmZpZ3MnLCAnLW8nLCBzICsgJy8ua2VybmVsLW1ldGEnXSwgZW52PWVudikuZGVjb2RlKCd1dGYtOCcpCkBAIC00NTgsNCArNDg5LDE1IEBACiAgICAgIyBJZiBkaWZmY29uZmlnIGlzIGF2YWlsYWJsZSwgZW5zdXJlIGl0IHJ1bnMgYWZ0ZXIga2VybmVsX2NvbmZpZ21lCiAgICAgaWYgJ2RvX2RpZmZjb25maWcnIGluIGQ6CiAgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soJ2RvX2RpZmZjb25maWcnLCBOb25lLCAnZG9fa2VybmVsX2NvbmZpZ21lJywgZCkKKworICAgIGV4dGVybmFsc3JjID0gZC5nZXRWYXIoJ0VYVEVSTkFMU1JDJykKKyAgICBpZiBleHRlcm5hbHNyYzoKKyAgICAgICAgIyBJZiB3ZSBkZWx0YXNrIGRvX3BhdGNoLCBkb19rZXJuZWxfY29uZmlnbWUgaXMgbGVmdCB3aXRob3V0CisgICAgICAgICMgZGVwZW5kZW5jaWVzIGFuZCBydW5zIHRvbyBlYXJseQorICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2tlcm5lbF9jb25maWdtZScsICdkZXBzJywgKGQuZ2V0VmFyRmxhZygnZG9fa2VybmVsX2NvbmZpZ21lJywgJ2RlcHMnLCBGYWxzZSkgb3IgW10pICsgWydkb191bnBhY2snXSkKIH0KKworIyBleHRyYSB0YXNrcworYWRkdGFzayBrZXJuZWxfdmVyc2lvbl9zYW5pdHlfY2hlY2sgYWZ0ZXIgZG9fa2VybmVsX21ldGFkYXRhIGRvX2tlcm5lbF9jaGVja291dCBiZWZvcmUgZG9fY29tcGlsZQorYWRkdGFzayB2YWxpZGF0ZV9icmFuY2hlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fa2VybmVsX2NoZWNrb3V0CithZGR0YXNrIGtlcm5lbF9jb25maWdjaGVjayBhZnRlciBkb19jb25maWd1cmUgYmVmb3JlIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggZWJjYjc5YS4uYTcyNDY0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTI5NCwxNCArMjk0LDEwIEBACiAJCSMga2VybmVsIHNvdXJjZXMgZG8gbm90IHVzZSBkb191bnBhY2ssIHNvIFNPVVJDRV9EQVRFX0VQT0NIIG1heSBub3QKIAkJIyBiZSBzZXQuLi4uCiAJCWlmIFsgIiR7U09VUkNFX0RBVEVfRVBPQ0h9IiA9ICIiIC1vICIke1NPVVJDRV9EQVRFX0VQT0NIfSIgPSAiMCIgXTsgdGhlbgotCQkJb2xkZGlyPWBwd2RgCi0JCQljZCAke1N9Ci0JCQlTT1VSQ0VfREFURV9FUE9DSD1gZ2l0IGxvZyAgLTEgLS1wcmV0dHk9JWN0YAotCQkJIyBnaXQgcmVwbyBub3QgZ3VhcmFudGVlZCwgc28gZmFsbCBiYWNrIHRvIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTCi0JCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJCQlTT1VSQ0VfREFURV9FUE9DSD0ke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfQotCQkJZmkKLQkJCWNkICRvbGRkaXIKKwkJCSMgVGhlIHNvdXJjZSBkaXJlY3RvcnkgaXMgbm90IG5lY2Vzc2FyaWx5IGEgZ2l0IHJlcG9zaXRvcnksIHNvIHdlCisJCQkjIHNwZWNpZnkgdGhlIGdpdC1kaXIgdG8gZW5zdXJlIHRoYXQgZ2l0IGRvZXMgbm90IHF1ZXJ5IGEKKwkJCSMgcmVwb3NpdG9yeSBpbiBhbnkgcGFyZW50IGRpcmVjdG9yeS4KKwkJCVNPVVJDRV9EQVRFX0VQT0NIPWBnaXQgLS1naXQtZGlyPSIke1N9Ly5naXQiIGxvZyAtMSAtLXByZXR0eT0lY3QgMj4vZGV2L251bGwgfHwgZWNobyAiJHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30iYAogCQlmaQogCiAJCXRzPWBMQ19BTEw9QyBkYXRlIC1kIEAkU09VUkNFX0RBVEVfRVBPQ0hgCkBAIC01MDgsNyArNTA0LDcgQEAKIAk6CiB9CiAKLUtFUk5FTF9DT05GSUdfQ09NTUFORCA/PSAib2VfcnVubWFrZV9jYWxsIC1DICR7U30gQ0M9IiR7S0VSTkVMX0NDfSIgTz0ke0J9IG9sZGRlZmNvbmZpZyB8fCBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9IENDPSIke0tFUk5FTF9DQ30iIG9sZG5vY29uZmlnIgorS0VSTkVMX0NPTkZJR19DT01NQU5EID89ICJvZV9ydW5tYWtlX2NhbGwgLUMgJHtTfSBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBPPSR7Qn0gb2xkZGVmY29uZmlnIHx8IG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0gQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgb2xkbm9jb25maWciCiAKIHB5dGhvbiBjaGVja19vbGRlc3Rfa2VybmVsKCkgewogICAgIG9sZGVzdF9rZXJuZWwgPSBkLmdldFZhcignT0xERVNUX0tFUk5FTCcpCkBAIC01NzAsOSArNTY2LDkgQEAKICMgQWxsb3cgbWFjaGluZXMgdG8gb3ZlcnJpZGUgdGhpcyBkZXBlbmRlbmN5IGlmIGtlcm5lbCBpbWFnZSBmaWxlcyBhcmUKICMgbm90IHdhbnRlZCBpbiBpbWFnZXMgYXMgc3RhbmRhcmQKIFJERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA/PSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSIKLVBLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgorUEtHXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZShkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nKSl9IgogUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSArPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0tFUk5FTF9JTUFHRVRZUEUnLCAndm1saW51eCcsICcke0tFUk5FTF9QQUNLQUdFX05BTUV9LXZtbGludXgnLCAnJywgZCl9IgotUEtHXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZShkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nKSl9IgogUlBST1ZJREVTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSArPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0tFUk5FTF9WRVJTSU9OfSIKIEFMTE9XX0VNUFRZXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0gPSAiMSIKIEFMTE9XX0VNUFRZXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIxIgpAQCAtNjEzLDYgKzYwOSw5IEBACiAJaWYgWyAtZiAuLi8uLi8uLi92bWxpbnV6LmJpbiBdOyB0aGVuCiAJCWxuIC1zZiAuLi8uLi8uLi92bWxpbnV6LmJpbgogCWZpCisJaWYgWyAtZiAuLi8uLi8uLi92bWxpbnV4LjY0IF07IHRoZW4KKwkJbG4gLXNmIC4uLy4uLy4uL3ZtbGludXguNjQKKwlmaQogfQogYWRkdGFzayBrZXJuZWxfbGlua19pbWFnZXMgYWZ0ZXIgZG9fY29tcGlsZSBiZWZvcmUgZG9fc3RyaXAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWxzcmMuYmJjbGFzcwppbmRleCA2NzVkNDBlLi5hOTUxYmEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWxzcmMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWxzcmMuYmJjbGFzcwpAQCAtMSw3ICsxLDcgQEAKIFMgPSAiJHtTVEFHSU5HX0tFUk5FTF9ESVJ9IgogZGVsdGFzayBkb19mZXRjaAogZGVsdGFzayBkb191bnBhY2sKLWRvX3BhdGNoW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKK2RvX3BhdGNoW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKIGRvX3BhdGNoW25vZXhlY10gPSAiMSIKIGRvX3BhY2thZ2VbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBLRVJORUxfVkVSU0lPTiA9ICIke0BnZXRfa2VybmVsdmVyc2lvbl9maWxlKCIke1NUQUdJTkdfS0VSTkVMX0JVSUxERElSfSIpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTM1MWI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbF9yb290PSR7RH0gaW5zdGFsbAotCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ldGMvbGQuc28uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vbGQuc28uY29uZgotCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxlZGlyfQotCW1ha2UgLWYgJHtXT1JLRElSfS9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgSU49IiR7U30vbG9jYWxlZGF0YS9TVVBQT1JURUQiIE9VVD0iJHtXT1JLRElSfS9TVVBQT1JURUQiCi0JIyBnZXQgcmlkIG9mIHNvbWUgYnJva2VuIGZpbGVzLi4uCi0JZm9yIGkgaW4gJHtHTElCQ19CUk9LRU5fTE9DQUxFU307IGRvCi0JCXNlZCAtaSAiLyRpL2QiICR7V09SS0RJUn0vU1VQUE9SVEVECi0JZG9uZQotCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3JwYwotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotCXJtIC1yZiAke0R9JHtsaWJleGVjZGlyfS9nZXRjb25mCi19Ci0KLWRlZiBnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JywgJ3BwYy1lZmQnIF06Ci0gICAgICAgIHJldHVybiAiLS13aXRob3V0LWZwIgotICAgIHJldHVybiAiIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgotICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgICAgICBicG4gPSBkLmdldFZhcignQlBOJykKLSAgICAgICAgcHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJykgb3IgIiIKLSAgICAgICAgIyBTZXQgdGhlIGJhc2UgcGFja2FnZS4uLgotICAgICAgICBkLnNldFZhcignUEtHXycgKyBwcmVmaXggKyBicG4sIHByZWZpeCArICdsaWJjNicpCi0gICAgICAgIGxpYmNwcmVmaXggPSBwcmVmaXggKyBicG4gKyAnLScKLSAgICAgICAgZm9yIHAgaW4gcGtnczoKLSAgICAgICAgICAgICMgQW5kIGFsbCB0aGUgc3VicGFja2FnZXMuCi0gICAgICAgICAgICBpZiBwLnN0YXJ0c3dpdGgobGliY3ByZWZpeCk6Ci0gICAgICAgICAgICAgICAgcmVuYW1lZCA9IHAucmVwbGFjZShicG4sICdsaWJjNicsIDEpCi0gICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcCwgcmVuYW1lZCkKLSAgICAgICAgIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCAtZGJnIHBhY2thZ2UKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JQUk9WSURFU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQotICAgICAgICBkLmFwcGVuZFZhcignUkNPTkZMSUNUU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFUExBQ0VTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCmluZGV4IGRlODE2YmMuLmRlM2I0MjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzCkBAIC0yNDgsNiArMjQ4LDcgQEAKICAgICAgICAgICAgICAgICAic2g0IjogICAgICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXAogICAgICAgICAgICAgICAgICJwb3dlcnBjIjogIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgInBvd2VycGM2NCI6ICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgIFwKKyAgICAgICAgICAgICAgICAicG93ZXJwYzY0bGUiOiAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsICBcCiAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjYiOiAgICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAibWlwczY0IjogICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCmluZGV4IDY0OGE0ZDcuLmY5MDE3NmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKQEAgLTI1Miw3ICsyNTIsNyBAQAogICAgICIiIgogICAgIFJldHVybiB0aGUgY2Fub25pY2FsIChTUERYKSBmb3JtIG9mIHRoZSBsaWNlbnNlIGlmIGF2YWlsYWJsZSAoc28gR1BMdjMKICAgICBiZWNvbWVzIEdQTC0zLjApLCBmb3IgdGhlIGxpY2Vuc2UgbmFtZWQgJ1grJywgcmV0dXJuIGNhbm9uaWNhbCBmb3JtIG9mCi0gICAgJ1gnIGlmIGF2YWlsYWJlbCBhbmQgdGhlIHRhaWxpbmcgJysnIChzbyBHUEx2MysgYmVjb21lcyBHUEwtMy4wKyksIAorICAgICdYJyBpZiBhdmFpbGFibGUgYW5kIHRoZSB0YWlsaW5nICcrJyAoc28gR1BMdjMrIGJlY29tZXMgR1BMLTMuMCspLAogICAgIG9yIHRoZSBwYXNzZWQgbGljZW5zZSBpZiB0aGVyZSBpcyBubyBjYW5vbmljYWwgZm9ybS4KICAgICAiIiIKICAgICBsaWMgPSBkLmdldFZhckZsYWcoJ1NQRFhMSUNFTlNFTUFQJywgbGljZW5zZSkgb3IgIiIKQEAgLTI2MiwxMCArMjYyLDI5IEBACiAgICAgICAgICAgICBsaWMgKz0gJysnCiAgICAgcmV0dXJuIGxpYyBvciBsaWNlbnNlCiAKK2RlZiBhdmFpbGFibGVfbGljZW5zZXMoZCk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBhdmFpbGFibGUgbGljZW5zZXMgYnkgc2VhcmNoaW5nIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkKKyAgICBDT01NT05fTElDRU5TRV9ESVIgYW5kIExJQ0VOU0VfUEFUSC4KKyAgICAiIiIKKyAgICBsaWNfZGlycyA9ICgoZC5nZXRWYXIoJ0NPTU1PTl9MSUNFTlNFX0RJUicpIG9yICcnKSArICcgJyArCisgICAgICAgICAgICAgICAgKGQuZ2V0VmFyKCdMSUNFTlNFX1BBVEgnKSBvciAnJykpLnNwbGl0KCkKKworICAgIGxpY2Vuc2VzID0gW10KKyAgICBmb3IgbGljX2RpciBpbiBsaWNfZGlyczoKKyAgICAgICAgbGljZW5zZXMgKz0gb3MubGlzdGRpcihsaWNfZGlyKQorCisgICAgbGljZW5zZXMgPSBzb3J0ZWQobGljZW5zZXMpCisgICAgcmV0dXJuIGxpY2Vuc2VzCisKKyMgT25seSBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBsaWNlbnNlcyBvbmNlLiBUaGlzIGFzc3VtZXMgdGhhdCBhbnkKKyMgYWRkaXRpb25zIHRvIExJQ0VOU0VfUEFUSCBoYXZlIGJlZW4gZG9uZSBiZWZvcmUgdGhpcyBmaWxlIGlzIHBhcnNlZC4KK0FWQUlMQUJMRV9MSUNFTlNFUyA6PSAiJHtAJyAnLmpvaW4oYXZhaWxhYmxlX2xpY2Vuc2VzKGQpKX0iCisKIGRlZiBleHBhbmRfd2lsZGNhcmRfbGljZW5zZXMoZCwgd2lsZGNhcmRfbGljZW5zZXMpOgogICAgICIiIgotICAgIFJldHVybiBhY3R1YWwgc3BkeCBmb3JtYXQgbGljZW5zZSBuYW1lcyBpZiB3aWxkY2FyZCB1c2VkLiBXZSBleHBhbmQKLSAgICB3aWxkY2FyZHMgZnJvbSBTUERYTElDRU5TRU1BUCBmbGFncyBhbmQgU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgdmFsdWVzLgorICAgIFJldHVybiBhY3R1YWwgc3BkeCBmb3JtYXQgbGljZW5zZSBuYW1lcyBpZiB3aWxkY2FyZHMgYXJlIHVzZWQuIFdlIGV4cGFuZAorICAgIHdpbGRjYXJkcyBmcm9tIFNQRFhMSUNFTlNFTUFQIGZsYWdzIGFuZCBBVkFJTEFCTEVfTElDRU5TRVMuCiAgICAgIiIiCiAgICAgaW1wb3J0IGZubWF0Y2gKICAgICBsaWNlbnNlcyA9IHdpbGRjYXJkX2xpY2Vuc2VzWzpdCkBAIC0yNzQsNyArMjkzLDcgQEAKICAgICAgICAgc3BkeGZsYWdzID0gZm5tYXRjaC5maWx0ZXIoc3BkeG1hcGtleXMsIHdsZF9saWMpCiAgICAgICAgIGxpY2Vuc2VzICs9IFtkLmdldFZhckZsYWcoJ1NQRFhMSUNFTlNFTUFQJywgZmxhZykgZm9yIGZsYWcgaW4gc3BkeGZsYWdzXQogCi0gICAgc3BkeF9saWNzID0gKGQuZ2V0VmFyKCdTUkNfRElTVFJJQlVURV9MSUNFTlNFUycsIEZhbHNlKSBvciAnJykuc3BsaXQoKQorICAgIHNwZHhfbGljcyA9IGQuZ2V0VmFyKCdBVkFJTEFCTEVfTElDRU5TRVMnKS5zcGxpdCgpCiAgICAgZm9yIHdsZF9saWMgaW4gd2lsZGNhcmRfbGljZW5zZXM6CiAgICAgICAgIGxpY2Vuc2VzICs9IGZubWF0Y2guZmlsdGVyKHNwZHhfbGljcywgd2xkX2xpYykKIApAQCAtMjkxLDE1ICszMTAsMjEgQEAKICAgICAjIEhhbmRsZXMgYW4gIm9yIiBvciB0d28gbGljZW5zZSBzZXRzIHByb3ZpZGVkIGJ5CiAgICAgIyBmbGF0dGVuZWRfbGljZW5zZXMoKSwgcGljayBvbmUgdGhhdCB3b3JrcyBpZiBwb3NzaWJsZS4KICAgICBkZWYgY2hvb3NlX2xpY19zZXQoYSwgYik6Ci0gICAgICAgIHJldHVybiBhIGlmIGFsbChvZS5saWNlbnNlLmxpY2Vuc2Vfb2soY2Fub25pY2FsX2xpY2Vuc2UoZCwgbGljKSwgCisgICAgICAgIHJldHVybiBhIGlmIGFsbChvZS5saWNlbnNlLmxpY2Vuc2Vfb2soY2Fub25pY2FsX2xpY2Vuc2UoZCwgbGljKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X3dhbnRfbGljZW5zZXMpIGZvciBsaWMgaW4gYSkgZWxzZSBiCiAKICAgICB0cnk6CiAgICAgICAgIGxpY2Vuc2VzID0gb2UubGljZW5zZS5mbGF0dGVuZWRfbGljZW5zZXMobGljZW5zZSwgY2hvb3NlX2xpY19zZXQpCiAgICAgZXhjZXB0IG9lLmxpY2Vuc2UuTGljZW5zZUVycm9yIGFzIGV4YzoKICAgICAgICAgYmIuZmF0YWwoJyVzOiAlcycgJSAoZC5nZXRWYXIoJ1AnKSwgZXhjKSkKLSAgICByZXR1cm4gYW55KG5vdCBvZS5saWNlbnNlLmxpY2Vuc2Vfb2soY2Fub25pY2FsX2xpY2Vuc2UoZCwgbCksIFwKLSAgICAgICAgICAgICAgIGRvbnRfd2FudF9saWNlbnNlcykgZm9yIGwgaW4gbGljZW5zZXMpCisKKyAgICBpbmNvbXBhdGlibGVfbGljID0gW10KKyAgICBmb3IgbCBpbiBsaWNlbnNlczoKKyAgICAgICAgbGljZW5zZSA9IGNhbm9uaWNhbF9saWNlbnNlKGQsIGwpCisgICAgICAgIGlmIG5vdCBvZS5saWNlbnNlLmxpY2Vuc2Vfb2sobGljZW5zZSwgZG9udF93YW50X2xpY2Vuc2VzKToKKyAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMuYXBwZW5kKGxpY2Vuc2UpCisKKyAgICByZXR1cm4gc29ydGVkKGluY29tcGF0aWJsZV9saWMpCiAKIGRlZiBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBkb250X3dhbnRfbGljZW5zZXMsIHBhY2thZ2U9Tm9uZSk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MKaW5kZXggYjUzOTliNi4uYThjNzJkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcwpAQCAtNTEsOCArNTEsOSBAQAogICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dfZGljKToKICAgICAgICAgICAgIGlmIGJhZF9saWNlbnNlcyBhbmQgcGtnIG5vdCBpbiB3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBpbmNvbXBhdGlibGVfcGtnX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiUGFja2FnZSAlcyBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UgJXMgYW5kIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UuIiAlKHBrZywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pKQorICAgICAgICAgICAgICAgICAgICBsaWNlbnNlcyA9IGluY29tcGF0aWJsZV9wa2dfbGljZW5zZShkLCBiYWRfbGljZW5zZXMsIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKQorICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJQYWNrYWdlICVzIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlKHBrZywgJyAnLmpvaW4obGljZW5zZXMpKSkKICAgICAgICAgICAgICAgICAgICAgKHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0pID0gXAogICAgICAgICAgICAgICAgICAgICAgICAgb2UubGljZW5zZS5tYW5pZmVzdF9saWNlbnNlcyhwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9saWNlbnNlcywgY2Fub25pY2FsX2xpY2Vuc2UsIGQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcwppbmRleCBjMGZiZjI2Li5lYzBlMDU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKQEAgLTEsMjcgKzEsMzEgQEAKLWRlZiBnZXRfbXVzbF9sb2FkZXIoZCk6CitkZWYgZ2V0X211c2xfbG9hZGVyX2FyY2goZCk6CiAgICAgaW1wb3J0IHJlCi0gICAgZHluYW1pY19sb2FkZXIgPSBOb25lCisgICAgbGRzb19hcmNoID0gTm9uZQogCiAgICAgdGFyZ2V0YXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCiAgICAgaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJtaWNyb2JsYXplIik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnZWwnICxkKX0uc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2VsJyAsZCl9IgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJtaXBzIik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWlwcyR7QUJJRVhURU5TSU9OfSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gIm1pcHMke0FCSUVYVEVOU0lPTn0ke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfUjZ9JHtNSVBTUEtHU0ZYX0VORElBTn0ke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119IgogICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAicG93ZXJwYyI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYyR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gInBvd2VycGMke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119IgogICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAicG93ZXJwYzY0IjoKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjNjQuc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gInBvd2VycGM2NCIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gIng4Nl82NCI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wteDg2XzY0LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJ4ODZfNjQiCiAgICAgZWxpZiByZS5zZWFyY2goImkuODYiLCB0YXJnZXRhcmNoKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1pMzg2LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJpMzg2IgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJhcm0iKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hcm0ke0FSTVBLR1NGWF9FTkRJQU59JHtBUk1QS0dTRlhfRUFCSX0uc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gImFybSR7QVJNUEtHU0ZYX0VORElBTn0ke0FSTVBLR1NGWF9FQUJJfSIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYWFyY2g2NCIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJhYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fSIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgicmlzY3Y2NCIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXJpc2N2NjQke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCi0gICAgcmV0dXJuIGR5bmFtaWNfbG9hZGVyCisgICAgICAgIGxkc29fYXJjaCA9ICJyaXNjdjY0JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfSIKKyAgICByZXR1cm4gbGRzb19hcmNoCisKK2RlZiBnZXRfbXVzbF9sb2FkZXIoZCk6CisgICAgaW1wb3J0IHJlCisgICAgcmV0dXJuICIvbGliL2xkLW11c2wtIiArIGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpICsgIi5zby4xIgogCiBkZWYgZ2V0X2dsaWJjX2xvYWRlcihkKToKICAgICBpbXBvcnQgcmUKQEAgLTQxLDcgKzQ1LDcgQEAKICAgICBlbGlmIHJlLnNlYXJjaCgiaS44NiIsIHRhcmdldGFyY2gpOgogICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC5zby4yIgogICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAiYXJtIjoKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMyIKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXgke0BbJy1hcm1oZicsICcnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjMiCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFhcmNoNjQiKToKICAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXgtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgicmlzY3Y2NCIpOgpAQCAtNjIsNCArNjYsNSBAQAogCiBnZXRfbGludXhsb2FkZXJbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9saW51eGxvYWRlcihkKX0iCiBnZXRfbXVzbF9sb2FkZXJbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9tdXNsX2xvYWRlcihkKX0iCitnZXRfbXVzbF9sb2FkZXJfYXJjaFt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X211c2xfbG9hZGVyX2FyY2goZCl9IgogZ2V0X2dsaWJjX2xvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X2dsaWJjX2xvYWRlcihkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcwppbmRleCA1MGMyNTQ3Li4xZTY2NzgwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKQEAgLTE4LDggKzE4LDE1IEBACiAJCWlmIHRlc3QgLW4gIiREIjsgdGhlbgogCQkJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsICd0cnVlJywnZmFsc2UnLCBkKX07IHRoZW4KIAkJCQlzZWQgInM6XChcc1wpLzpcMSRELzpnIiAkRCR7c3lzY29uZmRpcn0vbWFuX2RiLmNvbmYgfCAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS9tYW5kYicpfSAtQyAtIC11IC1xICREJHttYW5kaXJ9CisJCQkJY2hvd24gLVIgcm9vdDpyb290ICREJHttYW5kaXJ9CiAJCQkJbWtkaXIgLXAgJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbgotCQkJCW12ICREJHttYW5kaXJ9L2luZGV4LmRiICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4KKwkJCQljZCAkRCR7bWFuZGlyfQorCQkJCWZpbmQgLiAtbmFtZSBpbmRleC5kYiB8IHdoaWxlIHJlYWQgaW5kZXg7IGRvCisJCQkJCW1rZGlyIC1wICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4vJChkaXJuYW1lICR7aW5kZXh9KQorCQkJCQltdiAke2luZGV4fSAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuLyR7aW5kZXh9CisJCQkJCWNob3duIG1hbjptYW4gJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbi8ke2luZGV4fQorCQkJCWRvbmUKKwkJCQljZCAtCiAJCQllbHNlCiAJCQkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3QgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9CiAJCQlmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKaW5kZXggZWZhNjIzNC4uMDYwMzRlOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCkBAIC0xMiw4ICsxMiw5IEBACiBkZWYgbm9wcmVmaXgodmFyLCBkKToKICAgICByZXR1cm4gZC5nZXRWYXIodmFyKS5yZXBsYWNlKGQuZ2V0VmFyKCdwcmVmaXgnKSArICcvJywgJycsIDEpCiAKK01FU09OX0JVSUxEVFlQRSA/PSAicGxhaW4iCiBNRVNPTk9QVFMgPSAiIC0tcHJlZml4ICR7cHJlZml4fSBcCi0gICAgICAgICAgICAgIC0tYnVpbGR0eXBlIHBsYWluIFwKKyAgICAgICAgICAgICAgLS1idWlsZHR5cGUgJHtNRVNPTl9CVUlMRFRZUEV9IFwKICAgICAgICAgICAgICAgLS1iaW5kaXIgJHtAbm9wcmVmaXgoJ2JpbmRpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0tc2JpbmRpciAke0Bub3ByZWZpeCgnc2JpbmRpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0tZGF0YWRpciAke0Bub3ByZWZpeCgnZGF0YWRpcicsIGQpfSBcCkBAIC0yNCw3ICsyNSw4IEBACiAgICAgICAgICAgICAgIC0taW5mb2RpciAke0Bub3ByZWZpeCgnaW5mb2RpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0tc3lzY29uZmRpciAke3N5c2NvbmZkaXJ9IFwKICAgICAgICAgICAgICAgLS1sb2NhbHN0YXRlZGlyICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAtLXNoYXJlZHN0YXRlZGlyICR7c2hhcmVkc3RhdGVkaXJ9ICIKKyAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgIC0td3JhcC1tb2RlIG5vZG93bmxvYWQiCiAKIEVYVFJBX09FTUVTT05fYXBwZW5kID0gIiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgogCkBAIC00Myw3ICs0NSw3IEBACiAgICAgYXJjaCA9IGQuZ2V0VmFyKHZhcikKICAgICBpZiBhcmNoID09ICdwb3dlcnBjJzoKICAgICAgICAgcmV0dXJuICdwcGMnCi0gICAgZWxpZiBhcmNoID09ICdwb3dlcnBjNjQnOgorICAgIGVsaWYgYXJjaCA9PSAncG93ZXJwYzY0JyBvciBhcmNoID09ICdwb3dlcnBjNjRsZSc6CiAgICAgICAgIHJldHVybiAncHBjNjQnCiAgICAgZWxpZiBhcmNoID09ICdhcm1lYic6CiAgICAgICAgIHJldHVybiAnYXJtJwpAQCAtNTUsMTEgKzU3LDIwIEBACiAgICAgICAgIHJldHVybiAnbWlwczY0JwogICAgIGVsaWYgcmUubWF0Y2gociJpWzMtNl04NiIsIGFyY2gpOgogICAgICAgICByZXR1cm4gIng4NiIKLSAgICBlbGlmIGFyY2ggPT0gIm1pY3JvYmxhemVlbCIgb3IgYXJjaCA9PSAibWljcm9ibGF6ZWViIjoKKyAgICBlbGlmIGFyY2ggPT0gIm1pY3JvYmxhemVlbCI6CiAgICAgICAgIHJldHVybiAibWljcm9ibGF6ZSIKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gYXJjaAogCisjIE1hcCBvdXIgT1MgdmFsdWVzIHRvIHdoYXQgTWVzb24gZXhwZWN0czoKKyMgaHR0cHM6Ly9tZXNvbmJ1aWxkLmNvbS9SZWZlcmVuY2UtdGFibGVzLmh0bWwjb3BlcmF0aW5nLXN5c3RlbS1uYW1lcworZGVmIG1lc29uX29wZXJhdGluZ19zeXN0ZW0odmFyLCBkKToKKyAgICBvcyA9IGQuZ2V0VmFyKHZhcikKKyAgICBpZiAibWluZ3ciIGluIG9zOgorICAgICAgICByZXR1cm4gIndpbmRvd3MiCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIG9zCisKIGRlZiBtZXNvbl9lbmRpYW4ocHJlZml4LCBkKToKICAgICBhcmNoLCBvcyA9IGQuZ2V0VmFyKHByZWZpeCArICJfQVJDSCIpLCBkLmdldFZhcihwcmVmaXggKyAiX09TIikKICAgICBzaXRlZGF0YSA9IHNpdGVpbmZvX2RhdGFfZm9yX21hY2hpbmUoYXJjaCwgb3MsIGQpCkBAIC04MCw3ICs5MSw2IEBACiBjcHAgPSAke0BtZXNvbl9hcnJheSgnQ1hYJywgZCl9CiBhciA9ICR7QG1lc29uX2FycmF5KCdBUicsIGQpfQogbm0gPSAke0BtZXNvbl9hcnJheSgnTk0nLCBkKX0KLWxkID0gJHtAbWVzb25fYXJyYXkoJ0xEJywgZCl9CiBzdHJpcCA9ICR7QG1lc29uX2FycmF5KCdTVFJJUCcsIGQpfQogcmVhZGVsZiA9ICR7QG1lc29uX2FycmF5KCdSRUFERUxGJywgZCl9CiBwa2djb25maWcgPSAncGtnLWNvbmZpZycKQEAgLTk1LDEzICsxMDUsMTMgQEAKIGd0a2RvY19leGVfd3JhcHBlciA9ICcke0J9L2d0a2RvYy1xZW11d3JhcHBlcicKIAogW2hvc3RfbWFjaGluZV0KLXN5c3RlbSA9ICcke0hPU1RfT1N9Jworc3lzdGVtID0gJyR7QG1lc29uX29wZXJhdGluZ19zeXN0ZW0oJ0hPU1RfT1MnLCBkKX0nCiBjcHVfZmFtaWx5ID0gJyR7QG1lc29uX2NwdV9mYW1pbHkoJ0hPU1RfQVJDSCcsIGQpfScKIGNwdSA9ICcke0hPU1RfQVJDSH0nCiBlbmRpYW4gPSAnJHtAbWVzb25fZW5kaWFuKCdIT1NUJywgZCl9JwogCiBbdGFyZ2V0X21hY2hpbmVdCi1zeXN0ZW0gPSAnJHtUQVJHRVRfT1N9Jworc3lzdGVtID0gJyR7QG1lc29uX29wZXJhdGluZ19zeXN0ZW0oJ1RBUkdFVF9PUycsIGQpfScKIGNwdV9mYW1pbHkgPSAnJHtAbWVzb25fY3B1X2ZhbWlseSgnVEFSR0VUX0FSQ0gnLCBkKX0nCiBjcHUgPSAnJHtUQVJHRVRfQVJDSH0nCiBlbmRpYW4gPSAnJHtAbWVzb25fZW5kaWFuKCdUQVJHRVQnLCBkKX0nCkBAIC0xMTEsNiArMTIxLDEwIEBACiBDT05GSUdVUkVfRklMRVMgPSAibWVzb24uYnVpbGQiCiAKIG1lc29uX2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIE1lc29uIHJlcXVpcmVzIHRoaXMgdG8gYmUgJ2JmZCwgJ2xsZCcgb3IgJ2dvbGQnIGZyb20gMC41MyBvbndhcmRzCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9jb21taXQvZWY5YWViMTg4ZWEyYmM3MzUzZTU5OTE2YzE4OTAxY2RlOTBmYTJiMworICAgIHVuc2V0IExECisKICAgICAjIFdvcmsgYXJvdW5kICJNZXNvbiBmYWlscyBpZiAvdG1wIGlzIG1vdW50ZWQgd2l0aCBub2V4ZWMgIzI5NzIiCiAgICAgbWtkaXIgLXAgIiR7Qn0vbWVzb24tcHJpdmF0ZS90bXAiCiAgICAgZXhwb3J0IFRNUERJUj0iJHtCfS9tZXNvbi1wcml2YXRlL3RtcCIKQEAgLTE0Nyw2ICsxNjEsMTUgQEAKICAgICBleHBvcnQgUEtHX0NPTkZJRz0icGtnLWNvbmZpZy1uYXRpdmUiCiB9CiAKK3B5dGhvbiBtZXNvbl9kb19xYV9jb25maWd1cmUoKSB7CisgICAgaW1wb3J0IHJlCisgICAgd2Fybl9yZSA9IHJlLmNvbXBpbGUociJeV0FSTklORzogQ3Jvc3MgcHJvcGVydHkgKC4rKSBpcyB1c2luZyBkZWZhdWx0IHZhbHVlICguKykkIiwgcmUuTVVMVElMSU5FKQorICAgIGxvZyA9IG9wZW4oZC5leHBhbmQoIiR7Qn0vbWVzb24tbG9ncy9tZXNvbi1sb2cudHh0IikpLnJlYWQoKQorICAgIGZvciAocHJvcCwgdmFsdWUpIGluIHdhcm5fcmUuZmluZGFsbChsb2cpOgorICAgICAgICBiYi53YXJuKCJNZXNvbiBjcm9zcyBwcm9wZXJ0eSAlcyB1c2VkIHdpdGhvdXQgZXhwbGljaXQgYXNzaWdubWVudCwgZGVmYXVsdGluZyB0byAlcyIgJSAocHJvcCwgdmFsdWUpKQorfQorZG9fY29uZmlndXJlW3Bvc3RmdW5jc10gKz0gIm1lc29uX2RvX3FhX2NvbmZpZ3VyZSIKKwogZG9fY29tcGlsZVtwcm9ncmVzc10gPSAib3V0b2Y6XlxbKFxkKykvKFxkKylcXVxzKyIKIG1lc29uX2RvX2NvbXBpbGUoKSB7CiAgICAgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWltZS14ZGcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUteGRnLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyYTViNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUteGRnLmJiY2xhc3MKQEAgLTAsMCArMSw3NCBAQAorIworIyBUaGlzIGNsYXNzIGNyZWF0ZXMgbWltZSA8LT4gYXBwbGljYXRpb24gYXNzb2NpYXRpb25zIGJhc2VkIG9uIGVudHJ5IAorIyAnTWltZVR5cGUnIGluICouZGVza3RvcCBmaWxlcworIworCitERVBFTkRTICs9ICJkZXNrdG9wLWZpbGUtdXRpbHMiCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gImRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUiCitERVNLVE9QRElSID0gIiR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgorCisjIFRoZXJlIGFyZSByZWNpcGVzIG91dCB0aGVyZSBpbnN0YWxsaW5nIHRoZWlyIC5kZXNrdG9wIGZpbGVzIGFzIGFic29sdXRlCisjIHN5bWxpbmtzLiBGb3IgdXMgdGhlc2UgYXJlIGRhbmdsaW5nIGFuZCBjYW5ub3QgYmUgaW50cm9zcGVjdGVkIGZvciAiTWltZVR5cGUiCisjIGVhc2lseS4gQnkgYWRkZGluZyBwYWNrYWdlLW5hbWVzIHRvIE1JTUVfWERHX1BBQ0tBR0VTLCBwYWNrYWdlciBjYW4gZm9yY2UKKyMgcHJvcGVyIHVwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlIGhhbmRsaW5nLiBOb3RlIHRoYXQgYWxsIGludHJvc3BlY3Rpb24gaXMKKyMgc2tpcHBlZCBmb3IgTUlNRV9YREdfUEFDS0FHRVMgbm90IGVtcHR5CitNSU1FX1hER19QQUNLQUdFUyA/PSAiIgorCittaW1lX3hkZ19wb3N0aW5zdCgpIHsKK2lmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KKwkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2Rlc2t0b3BfZGF0YWJhc2UgJHtQS0d9IFwKKwkJbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAorCQlkZXNrdG9wX2Rpcj0ke0RFU0tUT1BESVJ9CitlbHNlCisJdXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UgJEQke0RFU0tUT1BESVJ9CitmaQorfQorCittaW1lX3hkZ19wb3N0cm0oKSB7CitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJZGVza3RvcF9kaXI9JHtERVNLVE9QRElSfQorZWxzZQorCXVwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlICREJHtERVNLVE9QRElSfQorZmkKK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX2FwcGVuZCAoKSB7CisgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgcGtnZGVzdCA9ICBkLmdldFZhcignUEtHREVTVCcpCisgICAgZGVza3RvcF9iYXNlID0gZC5nZXRWYXIoJ0RFU0tUT1BESVInKQorICAgIGZvcmNlZF9taW1lX3hkZ19wa2dzID0gKGQuZ2V0VmFyKCdNSU1FX1hER19QQUNLQUdFUycpIG9yICcnKS5zcGxpdCgpCisKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgorICAgICAgICBkZXNrdG9wc193aXRoX21pbWVfZm91bmQgPSBwa2cgaW4gZm9yY2VkX21pbWVfeGRnX3BrZ3MKKyAgICAgICAgaWYgZC5nZXRWYXIoJ01JTUVfWERHX1BBQ0tBR0VTJykgPT0gJyc6CisgICAgICAgICAgICBkZXNrdG9wX2RpciA9ICclcy8lcyVzJyAlIChwa2dkZXN0LCBwa2csIGRlc2t0b3BfYmFzZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc2t0b3BfZGlyKToKKyAgICAgICAgICAgICAgICBmb3IgZGYgaW4gb3MubGlzdGRpcihkZXNrdG9wX2Rpcik6CisgICAgICAgICAgICAgICAgICAgIGlmIGRmLmVuZHN3aXRoKCcuZGVza3RvcCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihkZXNrdG9wX2RpciArICcvJysgZGYsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkKCkuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnTWltZVR5cGUnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oJ0NvdWxkIG5vdCBvcGVuICVzLiBTZXQgTUlNRV9YREdfUEFDS0FHRVMgaW4gcmVjaXBlIG9yIGFkZCBtaW1lLXhkZyB0byBJTlNBTkVfU0tJUC4nICUgZGVza3RvcF9kaXIgKyAnLycrIGRmKQorICAgICAgICAgICAgICAgICAgICBpZiBkZXNrdG9wc193aXRoX21pbWVfZm91bmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBkZXNrdG9wc193aXRoX21pbWVfZm91bmQ6CisgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgbWltZS14ZGcgcG9zdGluc3QgYW5kIHBvc3RybSBzY3JpcHRzIHRvICVzIiAlIHBrZykKKyAgICAgICAgICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2cpCisgICAgICAgICAgICBpZiBub3QgcG9zdGluc3Q6CisgICAgICAgICAgICAgICAgcG9zdGluc3QgPSAnIyEvYmluL3NoXG4nCisgICAgICAgICAgICBwb3N0aW5zdCArPSBkLmdldFZhcignbWltZV94ZGdfcG9zdGluc3QnKQorICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0KQorICAgICAgICAgICAgcG9zdHJtID0gZC5nZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnKQorICAgICAgICAgICAgaWYgbm90IHBvc3RybToKKyAgICAgICAgICAgICAgICBwb3N0cm0gPSAnIyEvYmluL3NoXG4nCisgICAgICAgICAgICBwb3N0cm0gKz0gZC5nZXRWYXIoJ21pbWVfeGRnX3Bvc3RybScpCisgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RybV8lcycgJSBwa2csIHBvc3RybSkKKyAgICAgICAgICAgIGJiLm5vdGUoImFkZGluZyBkZXNrdG9wLWZpbGUtdXRpbHMgZGVwZW5kZW5jeSB0byAlcyIgJSBwa2cpCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgIiAiICsgZC5nZXRWYXIoJ01MUFJFRklYJykrImRlc2t0b3AtZmlsZS11dGlscyIpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKaW5kZXggNmM3Yjg2OC4uYzkwNzJhZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcwpAQCAtMSw0NiArMSw0NyBAQAotREVQRU5EUyArPSAic2hhcmVkLW1pbWUtaW5mbyIKKyMKKyMgVGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHJlY2lwZXMgaW5zdGFsbGluZyBtaW1lIHR5cGVzCisjCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCUE4nLCAnc2hhcmVkLW1pbWUtaW5mbycsICcnLCAnc2hhcmVkLW1pbWUtaW5mbycsIGQpfSIKIFBBQ0tBR0VfV1JJVEVfREVQUyArPSAic2hhcmVkLW1pbWUtaW5mby1uYXRpdmUiCitNSU1FRElSID0gIiR7ZGF0YWRpcn0vbWltZSIKIAogbWltZV9wb3N0aW5zdCgpIHsKLWlmIFsgIiQxIiA9IGNvbmZpZ3VyZSBdOyB0aGVuCi0JVVBEQVRFTUlNRURCPWB3aGljaCB1cGRhdGUtbWltZS1kYXRhYmFzZWAKLQlpZiBbIC14ICIkVVBEQVRFTUlNRURCIiBdIDsgdGhlbgotCQllY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCi0JCSRVUERBVEVNSU1FREIgJEQke2RhdGFkaXJ9L21pbWUKLQllbHNlCi0JCWVjaG8gIk1pc3NpbmcgdXBkYXRlLW1pbWUtZGF0YWJhc2UsIHVwZGF0ZSBvZiBtaW1lIGRhdGFiYXNlIGZhaWxlZCEiCi0JCWV4aXQgMQotCWZpCitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9taW1lX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJbWltZWRpcj0ke01JTUVESVJ9CitlbHNlCisJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgorCXVwZGF0ZS1taW1lLWRhdGFiYXNlICREJHtNSU1FRElSfQogZmkKIH0KIAogbWltZV9wb3N0cm0oKSB7Ci1pZiBbICIkMSIgPSByZW1vdmUgXSB8fCBbICIkMSIgPSB1cGdyYWRlIF07IHRoZW4KLQlVUERBVEVNSU1FREI9YHdoaWNoIHVwZGF0ZS1taW1lLWRhdGFiYXNlYAotCWlmIFsgLXggIiRVUERBVEVNSU1FREIiIF0gOyB0aGVuCi0JCWVjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKLQkJJFVQREFURU1JTUVEQiAkRCR7ZGF0YWRpcn0vbWltZQotCWVsc2UKLQkJZWNobyAiTWlzc2luZyB1cGRhdGUtbWltZS1kYXRhYmFzZSwgdXBkYXRlIG9mIG1pbWUgZGF0YWJhc2UgZmFpbGVkISIKLQkJZXhpdCAxCi0JZmkKK2lmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KKwkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX21pbWVfZGF0YWJhc2UgJHtQS0d9IFwKKwkJbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAorCQltaW1lZGlyPSR7TUlNRURJUn0KK2Vsc2UKKwllY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCisJdXBkYXRlLW1pbWUtZGF0YWJhc2UgJEQke01JTUVESVJ9CiBmaQogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfYXBwZW5kICgpIHsKLSAgICBpbXBvcnQgcmUKICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKICAgICBwa2dkZXN0ID0gIGQuZ2V0VmFyKCdQS0dERVNUJykKKyAgICBtaW1lZGlyID0gZC5nZXRWYXIoJ01JTUVESVInKQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKLSAgICAgICAgbWltZV9kaXIgPSAnJXMvJXMvdXNyL3NoYXJlL21pbWUvcGFja2FnZXMnICUgKHBrZ2Rlc3QsIHBrZykKLSAgICAgICAgbWltZXMgPSBbXQotICAgICAgICBtaW1lX3JlID0gcmUuY29tcGlsZSgiLipcLnhtbCQiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtaW1lX2Rpcik6Ci0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKG1pbWVfZGlyKToKLSAgICAgICAgICAgICAgICBpZiBtaW1lX3JlLm1hdGNoKGYpOgotICAgICAgICAgICAgICAgICAgICBtaW1lcy5hcHBlbmQoZikKLSAgICAgICAgaWYgbWltZXM6CisgICAgICAgIG1pbWVfcGFja2FnZXNfZGlyID0gJyVzLyVzJXMvcGFja2FnZXMnICUgKHBrZ2Rlc3QsIHBrZywgbWltZWRpcikKKyAgICAgICAgbWltZXNfdHlwZXNfZm91bmQgPSBGYWxzZQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtaW1lX3BhY2thZ2VzX2Rpcik6CisgICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKG1pbWVfcGFja2FnZXNfZGlyKToKKyAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCcueG1sJyk6CisgICAgICAgICAgICAgICAgICAgIG1pbWVzX3R5cGVzX2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBtaW1lc190eXBlc19mb3VuZDoKICAgICAgICAgICAgIGJiLm5vdGUoImFkZGluZyBtaW1lIHBvc3RpbnN0IGFuZCBwb3N0cm0gc2NyaXB0cyB0byAlcyIgJSBwa2cpCiAgICAgICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQogICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgpAQCAtNTIsNiArNTMsNyBAQAogICAgICAgICAgICAgICAgIHBvc3RybSA9ICcjIS9iaW4vc2hcbicKICAgICAgICAgICAgIHBvc3RybSArPSBkLmdldFZhcignbWltZV9wb3N0cm0nKQogICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnLCBwb3N0cm0pCi0gICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgc2hhcmVkLW1pbWUtaW5mby1kYXRhIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICIgIiArIGQuZ2V0VmFyKCdNTFBSRUZJWCcpKyJzaGFyZWQtbWltZS1pbmZvLWRhdGEiKQorICAgICAgICAgICAgaWYgcGtnICE9ICdzaGFyZWQtbWltZS1pbmZvLWRhdGEnOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoImFkZGluZyBzaGFyZWQtbWltZS1pbmZvLWRhdGEgZGVwZW5kZW5jeSB0byAlcyIgJSBwa2cpCisgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICIgIiArIGQuZ2V0VmFyKCdNTFBSRUZJWCcpKyJzaGFyZWQtbWltZS1pbmZvLWRhdGEiKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKaW5kZXggMWE5Mjk1ZC4uZWU2NzdkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCkBAIC0xODQsMTEgKzE4NCwxMiBAQAogICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CiAgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgoJ3ZpcnR1YWwvJyk6CiAgICAgICAgICAgICAgICAgaSA9IGlbbGVuKCd2aXJ0dWFsLycpOl0KLSAgICAgICAgICAgIGlmIChub3QgaS5zdGFydHN3aXRoKCdrZXJuZWwtbW9kdWxlJykpIGFuZCAobm90IGkuc3RhcnRzd2l0aChtbHByZWZpeCkpIGFuZCBcCi0gICAgICAgICAgICAgICAgKG5vdCAnY3Jvc3MtY2FuYWRpYW4nIGluIGkpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgibmF0aXZlc2RrLSIpKSBhbmQgXAotICAgICAgICAgICAgICAgIChub3QgaS5zdGFydHN3aXRoKCJydGxkIikpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLXZtbGludXgnKSkgXAotICAgICAgICAgICAgICAgIGFuZCAobm90IGkuc3RhcnRzd2l0aCgia2VybmVsLWltYWdlIikpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgiLyIpKToKKworICAgICAgICAgICAgaWYgKG5vdCAoaS5zdGFydHN3aXRoKG1scHJlZml4KSBvciBpLnN0YXJ0c3dpdGgoImtlcm5lbC0iKSBcCisgICAgICAgICAgICAgICAgICAgIG9yICgnY3Jvc3MtY2FuYWRpYW4nIGluIGkpIG9yIGkuc3RhcnRzd2l0aCgibmF0aXZlc2RrLSIpIFwKKyAgICAgICAgICAgICAgICAgICAgb3IgaS5zdGFydHN3aXRoKCJydGxkIikgb3IgaS5zdGFydHN3aXRoKCIvIikpKToKICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChpKQorCiAgICAgICAgIGlmIGxlbihjYW5kaWRhdGVzKSA+IDA6CiAgICAgICAgICAgICBtc2cgPSAiJXMgcGFja2FnZSAlcyAtIHN1c3BpY2lvdXMgdmFsdWVzICclcycgaW4gJXMiIFwKICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgcGtnLCAnICcuam9pbihjYW5kaWRhdGVzKSwgdmFyKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwppbmRleCBkNWI2ZjZhLi4wODEwNmUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtMTg2LDExICsxODYsMTEgQEAKICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCiB9CiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QKK2RvX2FkZHRvX3JlY2lwZV9zeXNyb290W2RlcHRhc2tdID0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKIGluaGVyaXQgbm9wYWNrYWdlcwogCiBkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCi1kb19wb3B1bGF0ZV9zeXNyb290W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIAogVVNFX05MUyA9ICJubyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcwppbmRleCAwMzEzNWFjLi43Yjc1NzEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcwpAQCAtMTA3LDcgKzEwNyw2IEBACiBhZGRoYW5kbGVyIG5hdGl2ZXNka192aXJ0Y2xhc3NfaGFuZGxlcgogbmF0aXZlc2RrX3ZpcnRjbGFzc19oYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UiCiAKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogCiBVU0VfTkxTID0gIiR7U0RLVVNFX05MU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCmluZGV4IDRiMWYwYTMuLjA2ODAzMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzCkBAIC0xLDk0ICsxLDMwNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgU2F2b2lyLUZhaXJlIExpbnV4CisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgVGhpcyBiYmNsYXNzIGJ1aWxkcyBhbmQgaW5zdGFsbHMgYW4gbnBtIHBhY2thZ2UgdG8gdGhlIHRhcmdldC4gVGhlIHBhY2thZ2UKKyMgc291cmNlcyBmaWxlcyBzaG91bGQgYmUgZmV0Y2hlZCBpbiB0aGUgY2FsbGluZyByZWNpcGUgYnkgdXNpbmcgdGhlIFNSQ19VUkkKKyMgdmFyaWFibGUuIFRoZSAke1N9IHZhcmlhYmxlIHNob3VsZCBiZSB1cGRhdGVkIGRlcGVuZGluZyBvZiB5b3VyIGZldGNoZXIuCisjCisjIFVzYWdlOgorIyAgU1JDX1VSSSA9ICIuLi4iCisjICBpbmhlcml0IG5wbQorIworIyBPcHRpb25hbCB2YXJpYWJsZXM6CisjICBOUE1fQVJDSDoKKyMgICAgICAgT3ZlcnJpZGUgdGhlIGF1dG8gZ2VuZXJhdGVkIG5wbSBhcmNoaXRlY3R1cmUuCisjCisjICBOUE1fSU5TVEFMTF9ERVY6CisjICAgICAgIFNldCB0byAxIHRvIGFsc28gaW5zdGFsbCBkZXZEZXBlbmRlbmNpZXMuCisKIERFUEVORFNfcHJlcGVuZCA9ICJub2RlanMtbmF0aXZlICIKIFJERVBFTkRTXyR7UE59X3ByZXBlbmQgPSAibm9kZWpzICIKLVMgPSAiJHtXT1JLRElSfS9ucG1wa2ciCiAKLWRlZiBub2RlX3BrZ25hbWUoZCk6Ci0gICAgYnBuID0gZC5nZXRWYXIoJ0JQTicpCi0gICAgaWYgYnBuLnN0YXJ0c3dpdGgoIm5vZGUtIik6Ci0gICAgICAgIHJldHVybiBicG5bNTpdCi0gICAgcmV0dXJuIGJwbgotCi1OUE1QTiA/PSAiJHtAbm9kZV9wa2duYW1lKGQpfSIKLQotTlBNX0lOU1RBTExESVIgPSAiJHtsaWJkaXJ9L25vZGVfbW9kdWxlcy8ke05QTVBOfSIKLQotIyBmdW5jdGlvbiBtYXBzIGFyY2ggbmFtZXMgdG8gbnBtIGFyY2ggbmFtZXMKLWRlZiBucG1fb2VfYXJjaF9tYXAodGFyZ2V0X2FyY2gsIGQpOgotICAgIGltcG9ydCByZQotICAgIGlmICAgcmUubWF0Y2goJ3AocGN8b3dlcnBjKSh8NjQpJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ3BwYycKLSAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JCcsIHRhcmdldF9hcmNoKTogcmV0dXJuICdpYTMyJwotICAgIGVsaWYgcmUubWF0Y2goJ3g4Nl82NCQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAneDY0JwotICAgIGVsaWYgcmUubWF0Y2goJ2FybTY0JCcsIHRhcmdldF9hcmNoKTogcmV0dXJuICdhcm0nCi0gICAgcmV0dXJuIHRhcmdldF9hcmNoCi0KLU5QTV9BUkNIID89ICIke0BucG1fb2VfYXJjaF9tYXAoZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIE5QTV9JTlNUQUxMX0RFViA/PSAiMCIKIAotbnBtX2RvX2NvbXBpbGUoKSB7Ci0JIyBDb3B5IGluIGFueSBhZGRpdGlvbmFsbHkgZmV0Y2hlZCBtb2R1bGVzCi0JaWYgWyAtZCAke1dPUktESVJ9L25vZGVfbW9kdWxlcyBdIDsgdGhlbgotCQljcCAtYSAke1dPUktESVJ9L25vZGVfbW9kdWxlcyAke1N9LwotCWZpCi0JIyBjaGFuZ2luZyB0aGUgaG9tZSBkaXJlY3RvcnkgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB0aGUgLm5wbXJjIHdpbGwKLQkjIGJlIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKLQlleHBvcnQgSE9NRT0ke1dPUktESVJ9Ci0JaWYgWyAgIiR7TlBNX0lOU1RBTExfREVWfSIgPSAiMSIgXTsgdGhlbgotCQlucG0gY29uZmlnIHNldCBkZXYgdHJ1ZQotCWVsc2UKLQkJbnBtIGNvbmZpZyBzZXQgZGV2IGZhbHNlCi0JZmkKLQlucG0gc2V0IGNhY2hlICR7V09SS0RJUn0vbnBtX2NhY2hlCi0JIyBjbGVhciBjYWNoZSBiZWZvcmUgZXZlcnkgYnVpbGQKLQlucG0gY2FjaGUgY2xlYXIgLS1mb3JjZQotCSMgSW5zdGFsbCBwa2cgaW50byAke1N9IHdpdGhvdXQgZ29pbmcgdG8gdGhlIHJlZ2lzdHJ5Ci0JaWYgWyAgIiR7TlBNX0lOU1RBTExfREVWfSIgPSAiMSIgXTsgdGhlbgotCQlucG0gLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1uby1yZWdpc3RyeSBpbnN0YWxsCi0JZWxzZQotCQlucG0gLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkgaW5zdGFsbAotCWZpCitkZWYgbnBtX3RhcmdldF9hcmNoX21hcCh0YXJnZXRfYXJjaCk6CisgICAgIiIiTWFwcyBhcmNoIG5hbWVzIHRvIG5wbSBhcmNoIG5hbWVzIiIiCisgICAgaW1wb3J0IHJlCisgICAgaWYgcmUubWF0Y2goInAocGN8b3dlcnBjKSh8NjQpIiwgdGFyZ2V0X2FyY2gpOgorICAgICAgICByZXR1cm4gInBwYyIKKyAgICBlbGlmIHJlLm1hdGNoKCJpLjg2JCIsIHRhcmdldF9hcmNoKToKKyAgICAgICAgcmV0dXJuICJpYTMyIgorICAgIGVsaWYgcmUubWF0Y2goIng4Nl82NCQiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAieDY0IgorICAgIGVsaWYgcmUubWF0Y2goImFybTY0JCIsIHRhcmdldF9hcmNoKToKKyAgICAgICAgcmV0dXJuICJhcm0iCisgICAgcmV0dXJuIHRhcmdldF9hcmNoCisKK05QTV9BUkNIID89ICIke0BucG1fdGFyZ2V0X2FyY2hfbWFwKGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpKX0iCisKK05QTV9QQUNLQUdFID0gIiR7V09SS0RJUn0vbnBtLXBhY2thZ2UiCitOUE1fQ0FDSEUgPSAiJHtXT1JLRElSfS9ucG0tY2FjaGUiCitOUE1fQlVJTEQgPSAiJHtXT1JLRElSfS9ucG0tYnVpbGQiCisKK2RlZiBucG1fZ2xvYmFsX2NvbmZpZ3MoZCk6CisgICAgIiIiR2V0IHRoZSBucG0gZ2xvYmFsIGNvbmZpZ3VyYXRpb24iIiIKKyAgICBjb25maWdzID0gW10KKyAgICAjIEVuc3VyZSBubyBuZXR3b3JrIGFjY2VzcyBpcyBkb25lCisgICAgY29uZmlncy5hcHBlbmQoKCJvZmZsaW5lIiwgInRydWUiKSkKKyAgICBjb25maWdzLmFwcGVuZCgoInByb3h5IiwgImh0dHA6Ly9pbnZhbGlkIikpCisgICAgIyBDb25maWd1cmUgdGhlIGNhY2hlIGRpcmVjdG9yeQorICAgIGNvbmZpZ3MuYXBwZW5kKCgiY2FjaGUiLCBkLmdldFZhcigiTlBNX0NBQ0hFIikpKQorICAgIHJldHVybiBjb25maWdzCisKK2RlZiBucG1fcGFjayhlbnYsIHNyY2Rpciwgd29ya2Rpcik6CisgICAgIiIiUnVuICducG0gcGFjaycgb24gYSBzcGVjaWZpZWQgZGlyZWN0b3J5IiIiCisgICAgaW1wb3J0IHNobGV4CisgICAgY21kID0gIm5wbSBwYWNrICVzIiAlIHNobGV4LnF1b3RlKHNyY2RpcikKKyAgICBjb25maWdzID0gWygiaWdub3JlLXNjcmlwdHMiLCAidHJ1ZSIpXQorICAgIHRhcmJhbGwgPSBlbnYucnVuKGNtZCwgY29uZmlncz1jb25maWdzLCB3b3JrZGlyPXdvcmtkaXIpLnN0cmlwKCJcbiIpCisgICAgcmV0dXJuIG9zLnBhdGguam9pbih3b3JrZGlyLCB0YXJiYWxsKQorCitweXRob24gbnBtX2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAiIiIKKyAgICBTdGVwIG9uZTogY29uZmlndXJlIHRoZSBucG0gY2FjaGUgYW5kIHRoZSBtYWluIG5wbSBwYWNrYWdlCisKKyAgICBFdmVyeSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGZldGNoZWQgYW5kIHBhdGNoZWQgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCisgICAgVGhleSBoYXZlIHRvIGJlIHBhY2tlZCAodGhpcyByZW1vdmUgdW5uZWVkZWQgZmlsZXMpIGFuZCBhZGRlZCB0byB0aGUgbnBtCisgICAgY2FjaGUgdG8gYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBzdGVwLgorCisgICAgVGhlIG1haW4gcGFja2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgbWFuaWZlc3QgZmlsZSBhbmQgc2hyaW5rd3JhcCBmaWxlIGhhdmUKKyAgICB0byBiZSBjb25maWd1cmVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZXNlIGNhY2hlZCBkZXBlbmRlbmNpZXMuCisgICAgIiIiCisgICAgaW1wb3J0IGJhc2U2NAorICAgIGltcG9ydCBjb3B5CisgICAgaW1wb3J0IGpzb24KKyAgICBpbXBvcnQgcmUKKyAgICBpbXBvcnQgc2hsZXgKKyAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICBmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IE5wbUVudmlyb25tZW50CisgICAgZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBucG1fdW5wYWNrCisgICAgZnJvbSBiYi5mZXRjaDIubnBtc3cgaW1wb3J0IGZvcmVhY2hfZGVwZW5kZW5jaWVzCisgICAgZnJvbSBiYi5wcm9ncmVzcyBpbXBvcnQgT3V0T2ZQcm9ncmVzc0hhbmRsZXIKKworICAgIGJiLnV0aWxzLnJlbW92ZShkLmdldFZhcigiTlBNX0NBQ0hFIiksIHJlY3Vyc2U9VHJ1ZSkKKyAgICBiYi51dGlscy5yZW1vdmUoZC5nZXRWYXIoIk5QTV9QQUNLQUdFIiksIHJlY3Vyc2U9VHJ1ZSkKKworICAgIGVudiA9IE5wbUVudmlyb25tZW50KGQsIGNvbmZpZ3M9bnBtX2dsb2JhbF9jb25maWdzKGQpKQorCisgICAgZGVmIF9ucG1fY2FjaGVfYWRkKHRhcmJhbGwpOgorICAgICAgICAiIiJSdW4gJ25wbSBjYWNoZSBhZGQnIGZvciBhIHNwZWNpZmllZCB0YXJiYWxsIiIiCisgICAgICAgIGNtZCA9ICJucG0gY2FjaGUgYWRkICVzIiAlIHNobGV4LnF1b3RlKHRhcmJhbGwpCisgICAgICAgIGVudi5ydW4oY21kKQorCisgICAgZGVmIF9ucG1faW50ZWdyaXR5KHRhcmJhbGwpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5wbSBpbnRlZ3JpdHkgb2YgYSBzcGVjaWZpZWQgdGFyYmFsbCIiIgorICAgICAgICBzaGE1MTIgPSBiYi51dGlscy5zaGE1MTJfZmlsZSh0YXJiYWxsKQorICAgICAgICByZXR1cm4gInNoYTUxMi0iICsgYmFzZTY0LmI2NGVuY29kZShieXRlcy5mcm9taGV4KHNoYTUxMikpLmRlY29kZSgpCisKKyAgICBkZWYgX25wbV92ZXJzaW9uKHRhcmJhbGwpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHZlcnNpb24gb2YgYSBzcGVjaWZpZWQgdGFyYmFsbCIiIgorICAgICAgICByZWdleCA9IHIiLShcZCtcLlxkK1wuXGQrKC0uKik/KFwrLiopPylcLnRneiIKKyAgICAgICAgcmV0dXJuIHJlLnNlYXJjaChyZWdleCwgdGFyYmFsbCkuZ3JvdXAoMSkKKworICAgIGRlZiBfbnBtc3dfZGVwZW5kZW5jeV9kaWN0KG9yaWcsIGRlcHRyZWUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRoZSBzdWIgZGljdGlvbmFyeSBpbiB0aGUgJ29yaWcnIGRpY3Rpb25hcnkgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgICAgICAgJ2RlcHRyZWUnIGRlcGVuZGVuY3kgdHJlZS4gVGhpcyBmdW5jdGlvbiBmb2xsb3dzIHRoZSBzaHJpbmt3cmFwIGZpbGUKKyAgICAgICAgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgcHRyID0gb3JpZworICAgICAgICBmb3IgZGVwIGluIGRlcHRyZWU6CisgICAgICAgICAgICBpZiAiZGVwZW5kZW5jaWVzIiBub3QgaW4gcHRyOgorICAgICAgICAgICAgICAgIHB0clsiZGVwZW5kZW5jaWVzIl0gPSB7fQorICAgICAgICAgICAgcHRyID0gcHRyWyJkZXBlbmRlbmNpZXMiXQorICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBwdHI6CisgICAgICAgICAgICAgICAgcHRyW2RlcF0gPSB7fQorICAgICAgICAgICAgcHRyID0gcHRyW2RlcF0KKyAgICAgICAgcmV0dXJuIHB0cgorCisgICAgIyBNYW5hZ2UgdGhlIG1hbmlmZXN0IGZpbGUgYW5kIHNocmlua3dyYXAgZmlsZXMKKyAgICBvcmlnX21hbmlmZXN0X2ZpbGUgPSBkLmV4cGFuZCgiJHtTfS9wYWNrYWdlLmpzb24iKQorICAgIG9yaWdfc2hyaW5rd3JhcF9maWxlID0gZC5leHBhbmQoIiR7U30vbnBtLXNocmlua3dyYXAuanNvbiIpCisgICAgY2FjaGVkX21hbmlmZXN0X2ZpbGUgPSBkLmV4cGFuZCgiJHtOUE1fUEFDS0FHRX0vcGFja2FnZS5qc29uIikKKyAgICBjYWNoZWRfc2hyaW5rd3JhcF9maWxlID0gZC5leHBhbmQoIiR7TlBNX1BBQ0tBR0V9L25wbS1zaHJpbmt3cmFwLmpzb24iKQorCisgICAgd2l0aCBvcGVuKG9yaWdfbWFuaWZlc3RfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICBvcmlnX21hbmlmZXN0ID0ganNvbi5sb2FkKGYpCisKKyAgICBjYWNoZWRfbWFuaWZlc3QgPSBjb3B5LmRlZXBjb3B5KG9yaWdfbWFuaWZlc3QpCisgICAgY2FjaGVkX21hbmlmZXN0LnBvcCgiZGVwZW5kZW5jaWVzIiwgTm9uZSkKKyAgICBjYWNoZWRfbWFuaWZlc3QucG9wKCJkZXZEZXBlbmRlbmNpZXMiLCBOb25lKQorCisgICAgd2l0aCBvcGVuKG9yaWdfc2hyaW5rd3JhcF9maWxlLCAiciIpIGFzIGY6CisgICAgICAgIG9yaWdfc2hyaW5rd3JhcCA9IGpzb24ubG9hZChmKQorCisgICAgY2FjaGVkX3Nocmlua3dyYXAgPSBjb3B5LmRlZXBjb3B5KG9yaWdfc2hyaW5rd3JhcCkKKyAgICBjYWNoZWRfc2hyaW5rd3JhcC5wb3AoImRlcGVuZGVuY2llcyIsIE5vbmUpCisKKyAgICAjIE1hbmFnZSB0aGUgZGVwZW5kZW5jaWVzCisgICAgcHJvZ3Jlc3MgPSBPdXRPZlByb2dyZXNzSGFuZGxlcihkLCByIl4oXGQrKS8oXGQrKSQiKQorICAgIHByb2dyZXNzX3RvdGFsID0gMSAjIGFsc28gY291bnQgdGhlIG1haW4gcGFja2FnZQorICAgIHByb2dyZXNzX2RvbmUgPSAwCisKKyAgICBkZWYgX2NvdW50X2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgbm9ubG9jYWwgcHJvZ3Jlc3NfdG90YWwKKyAgICAgICAgcHJvZ3Jlc3NfdG90YWwgKz0gMQorCisgICAgZGVmIF9jYWNoZV9kZXBlbmRlbmN5KG5hbWUsIHBhcmFtcywgZGVwdHJlZSk6CisgICAgICAgIGRlc3RzdWJkaXJzID0gW29zLnBhdGguam9pbigibm9kZV9tb2R1bGVzIiwgZGVwKSBmb3IgZGVwIGluIGRlcHRyZWVdCisgICAgICAgIGRlc3RzdWZmaXggPSBvcy5wYXRoLmpvaW4oKmRlc3RzdWJkaXJzKQorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgICAgICMgQWRkIHRoZSBkZXBlbmRlbmN5IHRvIHRoZSBucG0gY2FjaGUKKyAgICAgICAgICAgIGRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIlMiKSwgZGVzdHN1ZmZpeCkKKyAgICAgICAgICAgIHRhcmJhbGwgPSBucG1fcGFjayhlbnYsIGRlc3RkaXIsIHRtcGRpcikKKyAgICAgICAgICAgIF9ucG1fY2FjaGVfYWRkKHRhcmJhbGwpCisgICAgICAgICAgICAjIEFkZCBpdHMgc2lnbmF0dXJlIHRvIHRoZSBjYWNoZWQgc2hyaW5rd3JhcAorICAgICAgICAgICAgZGVwID0gX25wbXN3X2RlcGVuZGVuY3lfZGljdChjYWNoZWRfc2hyaW5rd3JhcCwgZGVwdHJlZSkKKyAgICAgICAgICAgIGRlcFsidmVyc2lvbiJdID0gX25wbV92ZXJzaW9uKHRhcmJhbGwpCisgICAgICAgICAgICBkZXBbImludGVncml0eSJdID0gX25wbV9pbnRlZ3JpdHkodGFyYmFsbCkKKyAgICAgICAgICAgIGlmIHBhcmFtcy5nZXQoImRldiIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBkZXBbImRldiJdID0gVHJ1ZQorICAgICAgICAgICAgIyBEaXNwbGF5IHByb2dyZXNzCisgICAgICAgICAgICBub25sb2NhbCBwcm9ncmVzc19kb25lCisgICAgICAgICAgICBwcm9ncmVzc19kb25lICs9IDEKKyAgICAgICAgICAgIHByb2dyZXNzLndyaXRlKCIlZC8lZCIgJSAocHJvZ3Jlc3NfZG9uZSwgcHJvZ3Jlc3NfdG90YWwpKQorCisgICAgZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcigiTlBNX0lOU1RBTExfREVWIiksIEZhbHNlKQorICAgIGZvcmVhY2hfZGVwZW5kZW5jaWVzKG9yaWdfc2hyaW5rd3JhcCwgX2NvdW50X2RlcGVuZGVuY3ksIGRldikKKyAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhvcmlnX3Nocmlua3dyYXAsIF9jYWNoZV9kZXBlbmRlbmN5LCBkZXYpCisKKyAgICAjIENvbmZpZ3VyZSB0aGUgbWFpbiBwYWNrYWdlCisgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgIHRhcmJhbGwgPSBucG1fcGFjayhlbnYsIGQuZ2V0VmFyKCJTIiksIHRtcGRpcikKKyAgICAgICAgbnBtX3VucGFjayh0YXJiYWxsLCBkLmdldFZhcigiTlBNX1BBQ0tBR0UiKSwgZCkKKworICAgICMgQ29uZmlndXJlIHRoZSBjYWNoZWQgbWFuaWZlc3QgZmlsZSBhbmQgY2FjaGVkIHNocmlua3dyYXAgZmlsZQorICAgIGRlZiBfdXBkYXRlX21hbmlmZXN0KGRlcGtleSk6CisgICAgICAgIGZvciBuYW1lIGluIG9yaWdfbWFuaWZlc3QuZ2V0KGRlcGtleSwge30pOgorICAgICAgICAgICAgdmVyc2lvbiA9IGNhY2hlZF9zaHJpbmt3cmFwWyJkZXBlbmRlbmNpZXMiXVtuYW1lXVsidmVyc2lvbiJdCisgICAgICAgICAgICBpZiBkZXBrZXkgbm90IGluIGNhY2hlZF9tYW5pZmVzdDoKKyAgICAgICAgICAgICAgICBjYWNoZWRfbWFuaWZlc3RbZGVwa2V5XSA9IHt9CisgICAgICAgICAgICBjYWNoZWRfbWFuaWZlc3RbZGVwa2V5XVtuYW1lXSA9IHZlcnNpb24KKworICAgIF91cGRhdGVfbWFuaWZlc3QoImRlcGVuZGVuY2llcyIpCisKKyAgICBpZiBkZXY6CisgICAgICAgIF91cGRhdGVfbWFuaWZlc3QoImRldkRlcGVuZGVuY2llcyIpCisKKyAgICB3aXRoIG9wZW4oY2FjaGVkX21hbmlmZXN0X2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAganNvbi5kdW1wKGNhY2hlZF9tYW5pZmVzdCwgZiwgaW5kZW50PTIpCisKKyAgICB3aXRoIG9wZW4oY2FjaGVkX3Nocmlua3dyYXBfZmlsZSwgInciKSBhcyBmOgorICAgICAgICBqc29uLmR1bXAoY2FjaGVkX3Nocmlua3dyYXAsIGYsIGluZGVudD0yKQorfQorCitweXRob24gbnBtX2RvX2NvbXBpbGUoKSB7CisgICAgIiIiCisgICAgU3RlcCB0d286IGluc3RhbGwgdGhlIG5wbSBwYWNrYWdlCisKKyAgICBVc2UgdGhlIGNvbmZpZ3VyZWQgbWFpbiBwYWNrYWdlIGFuZCB0aGUgY2FjaGVkIGRlcGVuZGVuY2llcyB0byBydW4gdGhlCisgICAgaW5zdGFsbGF0aW9uIHByb2Nlc3MuIFRoZSBpbnN0YWxsYXRpb24gaXMgZG9uZSBpbiBhIGRpcmVjdG9yeSB3aGljaCBpcworICAgIG5vdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IHlldC4KKworICAgIEEgY29tYmluYXRpb24gb2YgJ25wbSBwYWNrJyBhbmQgJ25wbSBpbnN0YWxsJyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgIGluc3RhbGxlZCBmaWxlcyBhcmUgYWN0dWFsIGNvcGllcyBpbnN0ZWFkIG9mIHN5bWJvbGljIGxpbmtzICh3aGljaCBpcyB0aGUKKyAgICBkZWZhdWx0IG5wbSBiZWhhdmlvcikuCisgICAgIiIiCisgICAgaW1wb3J0IHNobGV4CisgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBOcG1FbnZpcm9ubWVudAorCisgICAgYmIudXRpbHMucmVtb3ZlKGQuZ2V0VmFyKCJOUE1fQlVJTEQiKSwgcmVjdXJzZT1UcnVlKQorCisgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCwgY29uZmlncz1ucG1fZ2xvYmFsX2NvbmZpZ3MoZCkpCisKKyAgICBkZXYgPSBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCJOUE1fSU5TVEFMTF9ERVYiKSwgRmFsc2UpCisKKyAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgIGNvbmZpZ3MgPSBbXQorCisgICAgICAgIGlmIGRldjoKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiYWxzbyIsICJkZXZlbG9wbWVudCIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJvbmx5IiwgInByb2R1Y3Rpb24iKSkKKworICAgICAgICAjIFJlcG9ydCBhcyBtYW55IGxvZ3MgYXMgcG9zc2libGUgZm9yIGRlYnVnZ2luZyBwdXJwb3NlCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgibG9nbGV2ZWwiLCAic2lsbHkiKSkKKworICAgICAgICAjIENvbmZpZ3VyZSB0aGUgaW5zdGFsbGF0aW9uIHRvIGJlIGRvbmUgZ2xvYmFsbHkgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeQorICAgICAgICBjb25maWdzLmFwcGVuZCgoImdsb2JhbCIsICJ0cnVlIikpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicHJlZml4IiwgZC5nZXRWYXIoIk5QTV9CVUlMRCIpKSkKKworICAgICAgICAjIEFkZCBub2RlLWd5cCBjb25maWd1cmF0aW9uCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiYXJjaCIsIGQuZ2V0VmFyKCJOUE1fQVJDSCIpKSkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJyZWxlYXNlIiwgInRydWUiKSkKKyAgICAgICAgc3lzcm9vdCA9IGQuZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiKQorICAgICAgICBub2RlZGlyID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGQuZ2V0VmFyKCJwcmVmaXhfbmF0aXZlIikuc3RyaXAoIi8iKSkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJub2RlZGlyIiwgbm9kZWRpcikpCisgICAgICAgIGJpbmRpciA9IG9zLnBhdGguam9pbihzeXNyb290LCBkLmdldFZhcigiYmluZGlyX25hdGl2ZSIpLnN0cmlwKCIvIikpCisgICAgICAgIHB5dGhvbmRpciA9IG9zLnBhdGguam9pbihiaW5kaXIsICJweXRob24tbmF0aXZlIiwgInB5dGhvbiIpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicHl0aG9uIiwgcHl0aG9uZGlyKSkKKworICAgICAgICAjIEFkZCBub2RlLXByZS1neXAgY29uZmlndXJhdGlvbgorICAgICAgICBhcmdzLmFwcGVuZCgoInRhcmdldF9hcmNoIiwgZC5nZXRWYXIoIk5QTV9BUkNIIikpKQorICAgICAgICBhcmdzLmFwcGVuZCgoImJ1aWxkLWZyb20tc291cmNlIiwgInRydWUiKSkKKworICAgICAgICAjIFBhY2sgYW5kIGluc3RhbGwgdGhlIG1haW4gcGFja2FnZQorICAgICAgICB0YXJiYWxsID0gbnBtX3BhY2soZW52LCBkLmdldFZhcigiTlBNX1BBQ0tBR0UiKSwgdG1wZGlyKQorICAgICAgICBlbnYucnVuKCJucG0gaW5zdGFsbCAlcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKSwgYXJncz1hcmdzLCBjb25maWdzPWNvbmZpZ3MpCiB9CiAKIG5wbV9kb19pbnN0YWxsKCkgewotCSMgY2hhbmdpbmcgdGhlIGhvbWUgZGlyZWN0b3J5IHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdGhlIC5ucG1yYyB3aWxsCi0JIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5Ci0JZXhwb3J0IEhPTUU9JHtXT1JLRElSfQotCW1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzCi0JbG9jYWwgTlBNX1BBQ0tGSUxFPSQobnBtIHBhY2sgLikKLQlucG0gaW5zdGFsbCAtLXByZWZpeCAke0R9JHtwcmVmaXh9IC1nIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tcHJvZHVjdGlvbiAtLW5vLXJlZ2lzdHJ5ICR7TlBNX1BBQ0tGSUxFfQotCWxuIC1mcyBub2RlX21vZHVsZXMgJHtEfSR7bGliZGlyfS9ub2RlCi0JZmluZCAke0R9JHtOUE1fSU5TVEFMTERJUn0gLXR5cGUgZiBcKCAtbmFtZSAiKi5hIiAtbyAtbmFtZSAiKi5kIiAtbyAtbmFtZSAiKi5vIiBcKSAtZGVsZXRlCi0JaWYgWyAtZCAke0R9JHtwcmVmaXh9L2V0YyBdIDsgdGhlbgotCQkjIFRoaXMgd2lsbCBiZSBlbXB0eQotCQlybWRpciAke0R9JHtwcmVmaXh9L2V0YwotCWZpCi19CisgICAgIyBTdGVwIHRocmVlOiBmaW5hbCBpbnN0YWxsCisgICAgIworICAgICMgVGhlIHByZXZpb3VzIGluc3RhbGxhdGlvbiBoYXZlIHRvIGJlIGZpbHRlcmVkIHRvIHJlbW92ZSBzb21lIGV4dHJhIGZpbGVzLgogCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgaW5zdGRpciA9IGQuZXhwYW5kKCcke0R9JHtOUE1fSU5TVEFMTERJUn0nKQotICAgIGV4dHJhcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoaW5zdGRpcikKLSAgICBwa2duYW1lcyA9IGV4dHJhcGFja2FnZXMua2V5cygpCi0gICAgZC5wcmVwZW5kVmFyKCdQQUNLQUdFUycsICclcyAnICUgJyAnLmpvaW4ocGtnbmFtZXMpKQotICAgIGZvciBwa2duYW1lIGluIHBrZ25hbWVzOgotICAgICAgICBwa2dyZWxwYXRoLCBwZGF0YSA9IGV4dHJhcGFja2FnZXNbcGtnbmFtZV0KLSAgICAgICAgcGtncGF0aCA9ICcke05QTV9JTlNUQUxMRElSfS8nICsgcGtncmVscGF0aAotICAgICAgICAjIHBhY2thZ2UgbmFtZXMgY2FuJ3QgaGF2ZSB1bmRlcnNjb3JlcyBidXQgbnBtIHBhY2thZ2VzIHNvbWV0aW1lcyB1c2UgdGhlbQotICAgICAgICBvZV9wa2dfbmFtZSA9IHBrZ25hbWUucmVwbGFjZSgnXycsICctJykKLSAgICAgICAgZXhwYW5kZWRfcGtnbmFtZSA9IGQuZXhwYW5kKG9lX3BrZ19uYW1lKQotICAgICAgICBkLnNldFZhcignRklMRVNfJXMnICUgZXhwYW5kZWRfcGtnbmFtZSwgcGtncGF0aCkKLSAgICAgICAgaWYgcGRhdGE6Ci0gICAgICAgICAgICB2ZXJzaW9uID0gcGRhdGEuZ2V0KCd2ZXJzaW9uJywgTm9uZSkKLSAgICAgICAgICAgIGlmIHZlcnNpb246Ci0gICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR1ZfJXMnICUgZXhwYW5kZWRfcGtnbmFtZSwgdmVyc2lvbikKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gcGRhdGEuZ2V0KCdkZXNjcmlwdGlvbicsIE5vbmUpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICBkLnNldFZhcignU1VNTUFSWV8lcycgJSBleHBhbmRlZF9wa2duYW1lLCBkZXNjcmlwdGlvbi5yZXBsYWNlKHUiXHUyMDE4IiwgIiciKS5yZXBsYWNlKHUiXHUyMDE5IiwgIiciKSkKLSAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJXMnICUgZC5nZXRWYXIoJ1BOJyksICcgJXMnICUgJyAnLmpvaW4ocGtnbmFtZXMpLnJlcGxhY2UoJ18nLCAnLScpKQorICAgIHJtIC1yZiAke0R9CisKKyAgICAjIENvcHkgdGhlIGVudGlyZSBsaWIgYW5kIGJpbiBkaXJlY3RvcmllcworICAgIGluc3RhbGwgLWQgJHtEfS8ke25vbmFyY2hfbGliZGlyfQorICAgIGNwIC0tbm8tcHJlc2VydmU9b3duZXJzaGlwIC0tcmVjdXJzaXZlICR7TlBNX0JVSUxEfS9saWIvLiAke0R9LyR7bm9uYXJjaF9saWJkaXJ9CisKKyAgICBpZiBbIC1kICIke05QTV9CVUlMRH0vYmluIiBdCisgICAgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgICAgIGNwIC0tbm8tcHJlc2VydmU9b3duZXJzaGlwIC0tcmVjdXJzaXZlICR7TlBNX0JVSUxEfS9iaW4vLiAke0R9LyR7YmluZGlyfQorICAgIGZpCisKKyAgICAjIElmIHRoZSBwYWNrYWdlIChvciBpdHMgZGVwZW5kZW5jaWVzKSB1c2VzIG5vZGUtZ3lwIHRvIGJ1aWxkIG5hdGl2ZSBhZGRvbnMsCisgICAgIyBvYmplY3QgZmlsZXMsIHN0YXRpYyBsaWJyYXJpZXMgb3Igb3RoZXIgdGVtcG9yYXJ5IGZpbGVzIGNhbiBiZSBoaWRkZW4gaW4KKyAgICAjIHRoZSBsaWIgZGlyZWN0b3J5LiBUbyByZWR1Y2UgdGhlIHBhY2thZ2Ugc2l6ZSBhbmQgdG8gYXZvaWQgUUEgaXNzdWVzCisgICAgIyAoc3RhdGljZGV2IHdpdGggc3RhdGljIGxpYnJhcnkgZmlsZXMpIHRoZXNlIGZpbGVzIG11c3QgYmUgcmVtb3ZlZC4KKyAgICBsb2NhbCBHWVBfUkVHRVg9Ii4qL2J1aWxkL1JlbGVhc2UvW14vXSoubm9kZSIKKworICAgICMgUmVtb3ZlIGFueSBub2RlLWd5cCBkaXJlY3RvcnkgaW4gJHtEfSB0byByZW1vdmUgdGVtcG9yYXJ5IGJ1aWxkIGZpbGVzCisgICAgZm9yIEdZUF9EX0ZJTEUgaW4gJChmaW5kICR7RH0gLXJlZ2V4ICIke0dZUF9SRUdFWH0iKQorICAgIGRvCisgICAgICAgIGxvY2FsIEdZUF9EX0RJUj0ke0dZUF9EX0ZJTEUlL1JlbGVhc2UvKn0KKworICAgICAgICBybSAtLXJlY3Vyc2l2ZSAtLWZvcmNlICR7R1lQX0RfRElSfQorICAgIGRvbmUKKworICAgICMgQ29weSBvbmx5IHRoZSBub2RlLWd5cCByZWxlYXNlIGZpbGVzCisgICAgZm9yIEdZUF9CX0ZJTEUgaW4gJChmaW5kICR7TlBNX0JVSUxEfSAtcmVnZXggIiR7R1lQX1JFR0VYfSIpCisgICAgZG8KKyAgICAgICAgbG9jYWwgR1lQX0RfRklMRT0ke0R9LyR7cHJlZml4fS8ke0dZUF9CX0ZJTEUjJHtOUE1fQlVJTER9fQorCisgICAgICAgIGluc3RhbGwgLWQgJHtHWVBfRF9GSUxFJS8qfQorICAgICAgICBpbnN0YWxsIC1tIDc1NSAke0dZUF9CX0ZJTEV9ICR7R1lQX0RfRklMRX0KKyAgICBkb25lCisKKyAgICAjIFJlbW92ZSB0aGUgc2hyaW5rd3JhcCBmaWxlIHdoaWNoIGRvZXMgbm90IG5lZWQgdG8gYmUgcGFja2VkCisgICAgcm0gLWYgJHtEfS8ke25vbmFyY2hfbGliZGlyfS9ub2RlX21vZHVsZXMvKi9ucG0tc2hyaW5rd3JhcC5qc29uCisgICAgcm0gLWYgJHtEfS8ke25vbmFyY2hfbGliZGlyfS9ub2RlX21vZHVsZXMvQCovKi9ucG0tc2hyaW5rd3JhcC5qc29uCisKKyAgICAjIG5vZGUoMSkgaXMgdXNpbmcgL3Vzci9saWIvbm9kZSBhcyBkZWZhdWx0IGluY2x1ZGUgZGlyZWN0b3J5IGFuZCBucG0oMSkgaXMKKyAgICAjIHVzaW5nIC91c3IvbGliL25vZGVfbW9kdWxlcyBhcyBpbnN0YWxsIGRpcmVjdG9yeS4gTGV0J3MgbWFrZSBib3RoIGhhcHB5LgorICAgIGxuIC1mcyBub2RlX21vZHVsZXMgJHtEfS8ke25vbmFyY2hfbGliZGlyfS9ub2RlCiB9CiAKIEZJTEVTXyR7UE59ICs9ICIgXAogICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L25vZGUgXAotICAgICR7TlBNX0lOU1RBTExESVJ9IFwKKyAgICAke25vbmFyY2hfbGliZGlyfSBcCiAiCiAKLUVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsCitFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwppbmRleCBlMGQ2ZmY2Li4wYjVjZjQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCkBAIC0yNDUsNiArMjQ1LDggQEAKICAgICAgICAgZGVwcyA9ICIiCiAgICAgICAgIGZvciBkZXAgaW4gKGQuZ2V0VmFyKCdQQUNLQUdFX0RFUEVORFMnKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgIGRlcHMgKz0gIiAlczpkb19wb3B1bGF0ZV9zeXNyb290IiAlIGRlcAorICAgICAgICBpZiBkLmdldFZhcignUEFDS0FHRV9NSU5JREVCVUdJTkZPJykgPT0gJzEnOgorICAgICAgICAgICAgZGVwcyArPSAnIHh6LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JwogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2UnLCAnZGVwZW5kcycsIGRlcHMpCiAKICAgICAgICAgIyBzaGxpYnMgcmVxdWlyZXMgYW55IERFUEVORFMgdG8gaGF2ZSBhbHJlYWR5IHBhY2thZ2VkIGZvciB0aGUgKi5saXN0IGZpbGVzCkBAIC00MTYsNiArNDE4LDEyNiBAQAogCiAgICAgcmV0dXJuIChmaWxlLCBzb3VyY2VzKQogCitkZWYgc3BsaXRzdGF0aWNkZWJ1Z2luZm8oZmlsZSwgZHZhciwgZGVidWdzdGF0aWNkaXIsIGRlYnVnc3RhdGljbGliZGlyLCBkZWJ1Z3N0YXRpY2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpOgorICAgICMgVW5saWtlIHRoZSBmdW5jdGlvbiBhYm92ZSwgdGhlcmUgaXMgbm8gd2F5IHRvIHNwbGl0IGEgc3RhdGljIGxpYnJhcnkKKyAgICAjIHR3byBjb21wb25lbnRzLiAgU28gdG8gZ2V0IHNpbWlsYXIgcmVzdWx0cyB3ZSB3aWxsIGNvcHkgdGhlIHVubW9kaWZpZWQKKyAgICAjIHN0YXRpYyBsaWJyYXJ5IChjb250YWluaW5nIHRoZSBkZWJ1ZyBzeW1ib2xzKSBpbnRvIGEgbmV3IGRpcmVjdG9yeS4KKyAgICAjIFdlIHdpbGwgdGhlbiBzdHJpcCAocHJlc2VydmluZyBzeW1ib2xzKSB0aGUgc3RhdGljIGxpYnJhcnkgaW4gdGhlCisgICAgIyB0eXBpY2FsIGxvY2F0aW9uLgorICAgICMKKyAgICAjIHJldHVybiBhIG1hcHBpbmcgb2YgZmlsZXM6ZGVidWdzb3VyY2VzCisKKyAgICBpbXBvcnQgc3RhdAorICAgIGltcG9ydCBzaHV0aWwKKworICAgIHNyYyA9IGZpbGVbbGVuKGR2YXIpOl0KKyAgICBkZXN0ID0gZGVidWdzdGF0aWNsaWJkaXIgKyBvcy5wYXRoLmRpcm5hbWUoc3JjKSArIGRlYnVnc3RhdGljZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFtZShzcmMpICsgZGVidWdzdGF0aWNhcHBlbmQKKyAgICBkZWJ1Z2ZpbGUgPSBkdmFyICsgZGVzdAorICAgIHNvdXJjZXMgPSBbXQorCisgICAgIyBDb3B5IHRoZSBmaWxlLi4uCisgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQorICAgICNiYi5ub3RlKCJDb3B5ICVzIC0+ICVzIiAlIChmaWxlLCBkZWJ1Z2ZpbGUpKQorCisgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKKworICAgIG5ld21vZGUgPSBOb25lCisgICAgaWYgbm90IG9zLmFjY2VzcyhmaWxlLCBvcy5XX09LKSBvciBvcy5hY2Nlc3MoZmlsZSwgb3MuUl9PSyk6CisgICAgICAgIG9yaWdtb2RlID0gb3Muc3RhdChmaWxlKVtzdGF0LlNUX01PREVdCisgICAgICAgIG5ld21vZGUgPSBvcmlnbW9kZSB8IHN0YXQuU19JV1JJVEUgfCBzdGF0LlNfSVJFQUQKKyAgICAgICAgb3MuY2htb2QoZmlsZSwgbmV3bW9kZSkKKworICAgICMgV2UgbmVlZCB0byBleHRyYWN0IHRoZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gaGVyZS4uLgorICAgIGlmIGRlYnVnc3JjZGlyOgorICAgICAgICBzb3VyY2VzID0gc291cmNlX2luZm8oZmlsZSwgZCkKKworICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVidWdmaWxlKSkKKworICAgICMgQ29weSB0aGUgdW5tb2RpZmllZCBpdGVtIHRvIHRoZSBkZWJ1ZyBkaXJlY3RvcnkKKyAgICBzaHV0aWwuY29weTIoZmlsZSwgZGVidWdmaWxlKQorCisgICAgaWYgbmV3bW9kZToKKyAgICAgICAgb3MuY2htb2QoZmlsZSwgb3JpZ21vZGUpCisKKyAgICByZXR1cm4gKGZpbGUsIHNvdXJjZXMpCisKK2RlZiBpbmplY3RfbWluaWRlYnVnaW5mbyhmaWxlLCBkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCk6CisgICAgIyBFeHRyYWN0IGp1c3QgdGhlIHN5bWJvbHMgZnJvbSBkZWJ1Z2luZm8gaW50byBtaW5pZGVidWdpbmZvLAorICAgICMgY29tcHJlc3MgaXQgd2l0aCB4eiBhbmQgaW5qZWN0IGl0IGJhY2sgaW50byB0aGUgYmluYXJ5IGluIGEgLmdudV9kZWJ1Z2RhdGEgc2VjdGlvbi4KKyAgICAjIGh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2RiL29ubGluZWRvY3MvZ2RiL01pbmlEZWJ1Z0luZm8uaHRtbAorCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIHJlYWRlbGYgPSBkLmdldFZhcignUkVBREVMRicpCisgICAgbm0gPSBkLmdldFZhcignTk0nKQorICAgIG9iamNvcHkgPSBkLmdldFZhcignT0JKQ09QWScpCisKKyAgICBtaW5pZGVidWdpbmZvZGlyID0gZC5leHBhbmQoJyR7V09SS0RJUn0vbWluaWRlYnVnaW5mbycpCisKKyAgICBzcmMgPSBmaWxlW2xlbihkdmFyKTpdCisgICAgZGVzdCA9IGRlYnVnbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUoc3JjKSArIGRlYnVnYXBwZW5kCisgICAgZGVidWdmaWxlID0gZHZhciArIGRlc3QKKyAgICBtaW5pZGVidWdmaWxlID0gbWluaWRlYnVnaW5mb2RpciArIHNyYyArICcubWluaWRlYnVnJworICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUobWluaWRlYnVnZmlsZSkpCisKKyAgICAjIElmIHdlIGRpZG4ndCBwcm9kdWNlIGRlYnVnaW5mbyBmb3IgYW55IHJlYXNvbiwgd2UgY2FuJ3QgcHJvZHVjZSBtaW5pZGVidWdpbmZvIGVpdGhlcgorICAgICMgc28gc2tpcCBpdC4KKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVidWdmaWxlKToKKyAgICAgICAgYmIuZGVidWcoMSwgJ0VMRiBmaWxlIHt9IGhhcyBubyBkZWJ1Z2luZm8sIHNraXBwaW5nIG1pbmlkZWJ1Z2luZm8gaW5qZWN0aW9uJy5mb3JtYXQoZmlsZSkpCisgICAgICAgIHJldHVybgorCisgICAgIyBGaW5kIG5vbi1hbGxvY2F0ZWQgUFJPR0JJVFMsIE5PVEUsIGFuZCBOT0JJVFMgc2VjdGlvbnMgaW4gdGhlIGRlYnVnaW5mby4KKyAgICAjIFdlIHdpbGwgZXhjbHVkZSBhbGwgb2YgdGhlc2UgZnJvbSBtaW5pZGVidWdpbmZvIHRvIHNhdmUgc3BhY2UuCisgICAgcmVtb3ZlX3NlY3Rpb25fbmFtZXMgPSBbXQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtyZWFkZWxmLCAnLVcnLCAnLVMnLCBkZWJ1Z2ZpbGVdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuc3BsaXRsaW5lcygpOgorICAgICAgICBmaWVsZHMgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgaWYgbGVuKGZpZWxkcykgPCA4OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbmFtZSA9IGZpZWxkc1swXQorICAgICAgICB0eXBlID0gZmllbGRzWzFdCisgICAgICAgIGZsYWdzID0gZmllbGRzWzddCisgICAgICAgICMgLmRlYnVnXyBzZWN0aW9ucyB3aWxsIGJlIHJlbW92ZWQgYnkgb2JqY29weSAtUyBzbyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgcmVtb3ZlIHRoZW0KKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCcuZGVidWdfJyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnQScgbm90IGluIGZsYWdzIGFuZCB0eXBlIGluIFsnUFJPR0JJVFMnLCAnTk9URScsICdOT0JJVFMnXToKKyAgICAgICAgICAgIHJlbW92ZV9zZWN0aW9uX25hbWVzLmFwcGVuZChuYW1lKQorCisgICAgIyBMaXN0IGR5bmFtaWMgc3ltYm9scyBpbiB0aGUgYmluYXJ5LiBXZSBjYW4gZXhjbHVkZSB0aGVzZSBmcm9tIG1pbmlkZWJ1Z2luZm8KKyAgICAjIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzIHByZXNlbnQgaW4gdGhlIGJpbmFyeS4KKyAgICBkeW5zeW1zID0gc2V0KCkKKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbbm0sICctRCcsIGZpbGUsICctLWZvcm1hdD1wb3NpeCcsICctLWRlZmluZWQtb25seSddLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuc3BsaXRsaW5lcygpOgorICAgICAgICBkeW5zeW1zLmFkZChsaW5lLnNwbGl0KClbMF0pCisKKyAgICAjIEZpbmQgYWxsIGZ1bmN0aW9uIHN5bWJvbHMgZnJvbSBkZWJ1Z2luZm8gd2hpY2ggYXJlbid0IGluIHRoZSBkeW5hbWljIHN5bWJvbHMgdGFibGUuCisgICAgIyBUaGVzZSBhcmUgdGhlIG9uZXMgd2Ugd2FudCB0byBrZWVwIGluIG1pbmlkZWJ1Z2luZm8uCisgICAga2VlcF9zeW1ib2xzX2ZpbGUgPSBtaW5pZGVidWdmaWxlICsgJy5zeW1saXN0JworICAgIGZvdW5kX2FueV9zeW1ib2xzID0gRmFsc2UKKyAgICB3aXRoIG9wZW4oa2VlcF9zeW1ib2xzX2ZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW25tLCBkZWJ1Z2ZpbGUsICctLWZvcm1hdD1zeXN2JywgJy0tZGVmaW5lZC1vbmx5J10sIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBmaWVsZHMgPSBsaW5lLnNwbGl0KCd8JykKKyAgICAgICAgICAgIGlmIGxlbihmaWVsZHMpIDwgNzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbmFtZSA9IGZpZWxkc1swXS5zdHJpcCgpCisgICAgICAgICAgICB0eXBlID0gZmllbGRzWzNdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIHR5cGUgPT0gJ0ZVTkMnIGFuZCBuYW1lIG5vdCBpbiBkeW5zeW1zOgorICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9XG4nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICBmb3VuZF9hbnlfc3ltYm9scyA9IFRydWUKKworICAgIGlmIG5vdCBmb3VuZF9hbnlfc3ltYm9sczoKKyAgICAgICAgYmIuZGVidWcoMSwgJ0VMRiBmaWxlIHt9IGNvbnRhaW5zIG5vIHN5bWJvbHMsIHNraXBwaW5nIG1pbmlkZWJ1Z2luZm8gaW5qZWN0aW9uJy5mb3JtYXQoZmlsZSkpCisgICAgICAgIHJldHVybgorCisgICAgYmIudXRpbHMucmVtb3ZlKG1pbmlkZWJ1Z2ZpbGUpCisgICAgYmIudXRpbHMucmVtb3ZlKG1pbmlkZWJ1Z2ZpbGUgKyAnLnh6JykKKworICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbb2JqY29weSwgJy1TJ10gKworICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0tcmVtb3ZlLXNlY3Rpb249e30nLmZvcm1hdChzKSBmb3IgcyBpbiByZW1vdmVfc2VjdGlvbl9uYW1lc10gKworICAgICAgICAgICAgICAgICAgICAgICAgICBbJy0ta2VlcC1zeW1ib2xzPXt9Jy5mb3JtYXQoa2VlcF9zeW1ib2xzX2ZpbGUpLCBkZWJ1Z2ZpbGUsIG1pbmlkZWJ1Z2ZpbGVdKQorCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsneHonLCAnLS1rZWVwJywgbWluaWRlYnVnZmlsZV0pCisKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW29iamNvcHksICctLWFkZC1zZWN0aW9uJywgJy5nbnVfZGVidWdkYXRhPXt9Lnh6Jy5mb3JtYXQobWluaWRlYnVnZmlsZSksIGZpbGVdKQorCiBkZWYgY29weWRlYnVnc291cmNlcyhkZWJ1Z3NyY2Rpciwgc291cmNlcywgZCk6CiAgICAgIyBUaGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIHdyaXR0ZW4gb3V0IHRvIHNvdXJjZWZpbGUgaXMgZnVydGhlciBwcm9jZXNzZWQKICAgICAjIGFuZCBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGhlcmUuCkBAIC00OTIsNyArNjE0LDcgQEAKICMgUGFja2FnZSBkYXRhIGhhbmRsaW5nIHJvdXRpbmVzCiAjCiAKLWRlZiBnZXRfcGFja2FnZV9tYXBwaW5nIChwa2csIGJhc2Vwa2csIGQpOgorZGVmIGdldF9wYWNrYWdlX21hcHBpbmcgKHBrZywgYmFzZXBrZywgZCwgZGVwdmVyc2lvbnM9Tm9uZSk6CiAgICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCiAKICAgICBkYXRhID0gb2UucGFja2FnZWRhdGEucmVhZF9zdWJwa2dkYXRhKHBrZywgZCkKQEAgLTUwMyw2ICs2MjUsMTQgQEAKICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGQpIGFuZCBub3QgZC5nZXRWYXIoJ01VTFRJTElCX1ZBUklBTlRTJykgXAogICAgICAgICAgICAgYW5kIGRhdGFba2V5XSA9PSBiYXNlcGtnOgogICAgICAgICAgICAgcmV0dXJuIHBrZworICAgICAgICBpZiBkZXB2ZXJzaW9ucyA9PSBbXToKKyAgICAgICAgICAgICMgQXZvaWQgcmV0dXJuaW5nIGEgbWFwcGluZyBpZiB0aGUgcmVuYW1lZCBwYWNrYWdlIHJwcm92aWRlcyBpdHMgb3JpZ2luYWwgbmFtZQorICAgICAgICAgICAgcnByb3ZrZXkgPSAiUlBST1ZJREVTXyVzIiAlIHBrZworICAgICAgICAgICAgaWYgcnByb3ZrZXkgaW4gZGF0YToKKyAgICAgICAgICAgICAgICBpZiBwa2cgaW4gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGRhdGFbcnByb3ZrZXldKToKKyAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiJXMgcnByb3ZpZGVzICVzLCBub3QgcmVwbGFjaW5nIHRoZSBsYXR0ZXIiICUgKGRhdGFba2V5XSwgcGtnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBrZworICAgICAgICAjIERvIG1hcCB0byByZXdyaXR0ZW4gcGFja2FnZSBuYW1lCiAgICAgICAgIHJldHVybiBkYXRhW2tleV0KIAogICAgIHJldHVybiBwa2cKQEAgLTUyMyw4ICs2NTMsMTAgQEAKIAogICAgIG5ld19kZXBlbmRzID0ge30KICAgICBkZXBzID0gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGQuZ2V0VmFyKHZhcm5hbWUpIG9yICIiKQotICAgIGZvciBkZXBlbmQgaW4gZGVwczoKLSAgICAgICAgbmV3X2RlcGVuZCA9IGdldF9wYWNrYWdlX21hcHBpbmcoZGVwZW5kLCBwa2csIGQpCisgICAgZm9yIGRlcGVuZCwgZGVwdmVyc2lvbnMgaW4gZGVwcy5pdGVtcygpOgorICAgICAgICBuZXdfZGVwZW5kID0gZ2V0X3BhY2thZ2VfbWFwcGluZyhkZXBlbmQsIHBrZywgZCwgZGVwdmVyc2lvbnMpCisgICAgICAgIGlmIGRlcGVuZCAhPSBuZXdfZGVwZW5kOgorICAgICAgICAgICAgYmIubm90ZSgicGFja2FnZSBuYW1lIG1hcHBpbmcgZG9uZTogJXMgLT4gJXMiICUgKGRlcGVuZCwgbmV3X2RlcGVuZCkpCiAgICAgICAgIG5ld19kZXBlbmRzW25ld19kZXBlbmRdID0gZGVwc1tkZXBlbmRdCiAKICAgICBkLnNldFZhcih2YXJuYW1lLCBiYi51dGlscy5qb2luX2RlcHMobmV3X2RlcGVuZHMsIGNvbW1hc2VwPUZhbHNlKSkKQEAgLTkxNiwyNSArMTA0OCwzNyBAQAogICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLWZpbGUtZGlyZWN0b3J5JzoKICAgICAgICAgIyBTaW5nbGUgZGVidWctZmlsZS1kaXJlY3Rvcnkgc3R5bGUgZGVidWcgaW5mbwogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIuZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2RpciA9ICIiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIi91c3IvbGliL2RlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2xpYmRpciA9ICIvdXNyL2xpYi9kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnc3JjZGlyID0gIi91c3Ivc3JjL2RlYnVnIgogICAgIGVsaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctd2l0aG91dC1zcmMnOgogICAgICAgICAjIE9yaWdpbmFsIE9FLWNvcmUsIGEuay5hLiAiLmRlYnVnIiwgc3R5bGUgZGVidWcgaW5mbywgYnV0IHdpdGhvdXQgc291cmNlcyBpbiAvdXNyL3NyYy9kZWJ1ZwogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiLy5kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIiCiAgICAgZWxpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy13aXRoLXNyY3BrZyc6CiAgICAgICAgIGRlYnVnYXBwZW5kID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNhcHBlbmQgPSAiIgogICAgICAgICBkZWJ1Z2RpciA9ICIvLmRlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2RpciA9ICIvLmRlYnVnLXN0YXRpYyIKICAgICAgICAgZGVidWdsaWJkaXIgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2xpYmRpciA9ICIiCiAgICAgICAgIGRlYnVnc3JjZGlyID0gIi91c3Ivc3JjL2RlYnVnIgogICAgIGVsc2U6CiAgICAgICAgICMgT3JpZ2luYWwgT0UtY29yZSwgYS5rLmEuICIuZGVidWciLCBzdHlsZSBkZWJ1ZyBpbmZvCiAgICAgICAgIGRlYnVnYXBwZW5kID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNhcHBlbmQgPSAiIgogICAgICAgICBkZWJ1Z2RpciA9ICIvLmRlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2RpciA9ICIvLmRlYnVnLXN0YXRpYyIKICAgICAgICAgZGVidWdsaWJkaXIgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2xpYmRpciA9ICIiCiAgICAgICAgIGRlYnVnc3JjZGlyID0gIi91c3Ivc3JjL2RlYnVnIgogCiAgICAgIwpAQCAtOTU1LDEyICsxMDk5LDYgQEAKICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoZHZhcik6CiAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCi0gICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLmtvIikgYW5kIGZpbGUuZmluZCgiL2xpYi9tb2R1bGVzLyIpICE9IC0xOgotICAgICAgICAgICAgICAgICAgICBrZXJubW9kcy5hcHBlbmQoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBvZS5wYWNrYWdlLmlzX3N0YXRpY19saWIoZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY2xpYnMuYXBwZW5kKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICAjIFNraXAgZGVidWcgZmlsZXMKICAgICAgICAgICAgICAgICBpZiBkZWJ1Z2FwcGVuZCBhbmQgZmlsZS5lbmRzd2l0aChkZWJ1Z2FwcGVuZCk6CkBAIC05NzEsNiArMTEwOSwxMyBAQAogICAgICAgICAgICAgICAgIGlmIGZpbGUgaW4gc2tpcGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLmtvIikgYW5kIGZpbGUuZmluZCgiL2xpYi9tb2R1bGVzLyIpICE9IC0xOgorICAgICAgICAgICAgICAgICAgICBrZXJubW9kcy5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBvZS5wYWNrYWdlLmlzX3N0YXRpY19saWIoZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY2xpYnMuYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGx0YXJnZXQgPSBjcGF0aC5yZWFscGF0aChmaWxlLCBkdmFyLCBGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgcyA9IGNwYXRoLmxzdGF0KGx0YXJnZXQpCkBAIC0xMDUwLDggKzExOTUsMTEgQEAKICAgICAgICAgcmVzdWx0cyA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2goc3BsaXRkZWJ1Z2luZm8sIGxpc3QoZWxmZmlsZXMpLCBkLCBleHRyYWFyZ3M9KGR2YXIsIGRlYnVnZGlyLCBkZWJ1Z2xpYmRpciwgZGVidWdhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKSkKIAogICAgICAgICBpZiBkZWJ1Z3NyY2RpciBhbmQgbm90IHRhcmdldG9zLnN0YXJ0c3dpdGgoIm1pbmd3Iik6Ci0gICAgICAgICAgICBmb3IgZmlsZSBpbiBzdGF0aWNsaWJzOgotICAgICAgICAgICAgICAgIHJlc3VsdHMuZXh0ZW5kKHNvdXJjZV9pbmZvKGZpbGUsIGQsIGZhdGFsPUZhbHNlKSkKKyAgICAgICAgICAgIGlmIChkLmdldFZhcignUEFDS0FHRV9ERUJVR19TVEFUSUNfU1BMSVQnKSA9PSAnMScpOgorICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKHNwbGl0c3RhdGljZGVidWdpbmZvLCBzdGF0aWNsaWJzLCBkLCBleHRyYWFyZ3M9KGR2YXIsIGRlYnVnc3RhdGljZGlyLCBkZWJ1Z3N0YXRpY2xpYmRpciwgZGVidWdzdGF0aWNhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGZpbGUgaW4gc3RhdGljbGliczoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoIChmaWxlLHNvdXJjZV9pbmZvKGZpbGUsIGQpKSApCiAKICAgICAgICAgc291cmNlcyA9IHNldCgpCiAgICAgICAgIGZvciByIGluIHJlc3VsdHM6CkBAIC0xMTIwLDkgKzEyNjgsMTcgQEAKICAgICAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGZpbGUsIGVsZl9maWxlLCBzdHJpcCkpCiAgICAgICAgIGZvciBmIGluIGtlcm5tb2RzOgogICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZiwgMTYsIHN0cmlwKSkKKyAgICAgICAgaWYgKGQuZ2V0VmFyKCdQQUNLQUdFX1NUUklQX1NUQVRJQycpID09ICcxJyBvciBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TVEFUSUNfU1BMSVQnKSA9PSAnMScpOgorICAgICAgICAgICAgZm9yIGYgaW4gc3RhdGljbGliczoKKyAgICAgICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmLCAxNiwgc3RyaXApKQogCiAgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2gob2UucGFja2FnZS5ydW5zdHJpcCwgc2ZpbGVzLCBkKQogCisgICAgIyBCdWlsZCAibWluaWRlYnVnaW5mbyIgYW5kIHJlaW5qZWN0IGl0IGJhY2sgaW50byB0aGUgc3RyaXBwZWQgYmluYXJpZXMKKyAgICBpZiBkLmdldFZhcignUEFDS0FHRV9NSU5JREVCVUdJTkZPJykgPT0gJzEnOgorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGluamVjdF9taW5pZGVidWdpbmZvLCBsaXN0KGVsZmZpbGVzKSwgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWFyZ3M9KGR2YXIsIGRlYnVnZGlyLCBkZWJ1Z2xpYmRpciwgZGVidWdhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKSkKKwogICAgICMKICAgICAjIEVuZCBvZiBzdHJpcAogICAgICMKQEAgLTExODcsNyArMTM0Myw3IEBACiAgICAgICAgICAgICBkaXIgPSBvcy5zZXAKICAgICAgICAgZm9yIGYgaW4gKGZpbGVzICsgZGlycyk6CiAgICAgICAgICAgICBwYXRoID0gIi4iICsgb3MucGF0aC5qb2luKGRpciwgZikKLSAgICAgICAgICAgIGlmICIvLmRlYnVnLyIgaW4gcGF0aCBvciBwYXRoLmVuZHN3aXRoKCIvLmRlYnVnIik6CisgICAgICAgICAgICBpZiAiLy5kZWJ1Zy8iIGluIHBhdGggb3IgIi8uZGVidWctc3RhdGljLyIgaW4gcGF0aCBvciBwYXRoLmVuZHN3aXRoKCIvLmRlYnVnIik6CiAgICAgICAgICAgICAgICAgZGVidWcuYXBwZW5kKHBhdGgpCiAKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgpAQCAtMTI2Myw4ICsxNDE5LDkgQEAKICAgICAjIEhhbmRsZSBMSUNFTlNFX0VYQ0xVU0lPTgogICAgIHBhY2thZ2VfbGlzdCA9IFtdCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKLSAgICAgICAgaWYgZC5nZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBwa2cpOgotICAgICAgICAgICAgbXNnID0gIiVzIGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZS4gRXhjbHVkaW5nIGZyb20gcGFja2FnaW5nLiIgJSBwa2cKKyAgICAgICAgbGljZW5zZXMgPSBkLmdldFZhcignTElDRU5TRV9FWENMVVNJT04tJyArIHBrZykKKyAgICAgICAgaWYgbGljZW5zZXM6CisgICAgICAgICAgICBtc2cgPSAiRXhjbHVkaW5nICVzIGZyb20gcGFja2FnaW5nIGFzIGl0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMiICUgKHBrZywgbGljZW5zZXMpCiAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigiaW5jb21wYXRpYmxlLWxpY2Vuc2UiLCBtc2csIGQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYWNrYWdlX2xpc3QuYXBwZW5kKHBrZykKQEAgLTIxMDgsMTAgKzIyNjUsMTIgQEAKICMgaXRlcmF0aW9uLCB3ZSBuZWVkIHRvIGxpc3QgdGhlbSBoZXJlOgogUEFDS0FHRVZBUlMgPSAiRklMRVMgUkRFUEVORFMgUlJFQ09NTUVORFMgU1VNTUFSWSBERVNDUklQVElPTiBSU1VHR0VTVFMgUlBST1ZJREVTIFJDT05GTElDVFMgUEtHIEFMTE9XX0VNUFRZIHBrZ19wb3N0aW5zdCBwa2dfcG9zdHJtIHBrZ19wb3N0aW5zdF9vbnRhcmdldCBJTklUU0NSSVBUX05BTUUgSU5JVFNDUklQVF9QQVJBTVMgREVCSUFOX05PQVVUT05BTUUgQUxURVJOQVRJVkUgUEtHRSBQS0dWIFBLR1IgVVNFUkFERF9QQVJBTSBHUk9VUEFERF9QQVJBTSBDT05GRklMRVMgU1lTVEVNRF9TRVJWSUNFIExJQ0VOU0UgU0VDVElPTiBwa2dfcHJlaW5zdCBwa2dfcHJlcm0gUlJFUExBQ0VTIEdST1VQTUVNU19QQVJBTSBTWVNURU1EX0FVVE9fRU5BQkxFIFNLSVBfRklMRURFUFMgUFJJVkFURV9MSUJTIgogCi1kZWYgZ2VuX3BhY2thZ2V2YXIoZCk6CitkZWYgZ2VuX3BhY2thZ2V2YXIoZCwgcGtndmFycz0iUEFDS0FHRVZBUlMiKToKICAgICByZXQgPSBbXQogICAgIHBrZ3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VTIikgb3IgIiIpLnNwbGl0KCkKLSAgICB2YXJzID0gKGQuZ2V0VmFyKCJQQUNLQUdFVkFSUyIpIG9yICIiKS5zcGxpdCgpCisgICAgdmFycyA9IChkLmdldFZhcihwa2d2YXJzKSBvciAiIikuc3BsaXQoKQorICAgIGZvciB2IGluIHZhcnM6CisgICAgICAgIHJldC5hcHBlbmQodikKICAgICBmb3IgcCBpbiBwa2dzOgogICAgICAgICBmb3IgdiBpbiB2YXJzOgogICAgICAgICAgICAgcmV0LmFwcGVuZCh2ICsgIl8iICsgcCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCmluZGV4IDRmMjM5NzcuLmMwMDg1NTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwpAQCAtNDUsNiArNDUsNyBAQAogICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgaW1wb3J0IHRleHR3cmFwCiAgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisgICAgaW1wb3J0IGdsb2IKIAogICAgIGRlZiBjbGVhbnVwY29udHJvbChyb290KToKICAgICAgICAgZm9yIHAgaW4gWydDT05UUk9MJywgJ0RFQklBTiddOgpAQCAtMTAxLDggKzEwMiw3IEBACiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihwa2dvdXRkaXIpCiAgICAgICAgIG9zLmNoZGlyKHJvb3QpCiAgICAgICAgIGNsZWFudXBjb250cm9sKHJvb3QpCi0gICAgICAgIGZyb20gZ2xvYiBpbXBvcnQgZ2xvYgotICAgICAgICBnID0gZ2xvYignKicpCisgICAgICAgIGcgPSBnbG9iLmdsb2IoJyonKQogICAgICAgICBpZiBub3QgZyBhbmQgbG9jYWxkYXRhLmdldFZhcignQUxMT1dfRU1QVFknLCBGYWxzZSkgIT0gIjEiOgogICAgICAgICAgICAgYmIubm90ZSgiTm90IGNyZWF0aW5nIGVtcHR5IGFyY2hpdmUgZm9yICVzLSVzLSVzIiAlIChwa2csIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1YnKSwgbG9jYWxkYXRhLmdldFZhcignUEtHUicpKSkKICAgICAgICAgICAgIHJldHVybgpAQCAtMjM3LDYgKzIzNywxMCBAQAogICAgICAgICBjbGVhbnVwY29udHJvbChyb290KQogICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQogCisjIEhhdmUgdG8gbGlzdCBhbnkgdmFyaWFibGVzIHJlZmVyZW5jZWQgYXMgWF88cGtnPiB0aGF0IGFyZW4ndCBpbiBwa2dkYXRhIGhlcmUKK0lQS0VYVFJBVkFSUyA9ICJQUklPUklUWSBNQUlOVEFJTkVSIFBBQ0tBR0VfQVJDSCBIT01FUEFHRSIKK2lwa193cml0ZV9wa2dbdmFyZGVwc10gKz0gIiR7QGdlbl9wYWNrYWdldmFyKGQsICdJUEtFWFRSQVZBUlMnKX0iCisKICMgT3RoZXJ3aXNlIGFsbGFyY2ggcGFja2FnZXMgbWF5IGNoYW5nZSBkZXBlbmRpbmcgb24gb3ZlcnJpZGUgY29uZmlndXJhdGlvbgogaXBrX3dyaXRlX3BrZ1t2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwppbmRleCBjZDI0MWYxLi4yNWVjMDg5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKQEAgLTUsNiArNSwxMyBAQAogCiBQQVRDSERFUEVOREVOQ1kgPSAiJHtQQVRDSFRPT0x9LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCisjIFRoZXJlIGlzIGEgYnVnIGluIHBhdGNoIDIuNy4zIGFuZCBlYXJsaWVyIHdoZXJlIGluZGV4IGxpbmVzCisjIGluIHBhdGNoZXMgY2FuIGNoYW5nZSBmaWxlIG1vZGVzIHdoZW4gdGhleSBzaG91bGRuJ3Q6CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3BhdGNoLmdpdC9wYXRjaC8/aWQ9ODJiODAwYzk1NTJhMDg4YTI0MTQ1Nzk0ODIxOWQyNWNlMGE0MDdhNAorIyBUaGlzIGxlYWtzIGludG8gZGVidWcgc291cmNlcyBpbiBwYXJ0aWN1bGFyLiBBZGQgdGhlIGRlcGVuZGVuY3kKKyMgdG8gdGFyZ2V0IHJlY2lwZXMgdG8gYXZvaWQgdGhpcyBwcm9ibGVtIHVudGlsIHdlIGNhbiByZWx5IG9uIDIuNy40IG9yIGxhdGVyLgorUEFUQ0hERVBFTkRFTkNZX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHBhdGNoLXJlcGxhY2VtZW50LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorCiBQQVRDSF9HSVRfVVNFUl9OQU1FID89ICJPcGVuRW1iZWRkZWQiCiBQQVRDSF9HSVRfVVNFUl9FTUFJTCA/PSAib2UucGF0Y2hAb2UiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCmluZGV4IGQwMzQ2NWIuLmY4NWMzYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwpAQCAtMjEsNiArMjEsNyBAQAogCiBTREtJTUFHRV9GRUFUVVJFUyA/Pz0gImRldi1wa2dzIGRiZy1wa2dzIHNyYy1wa2dzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXBpLWRvY3VtZW50YXRpb24nLCAnZG9jLXBrZ3MnLCAnJywgZCl9IgogU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZID0gJyR7QGNvbXBsZW1lbnRhcnlfZ2xvYnMoIlNES0lNQUdFX0ZFQVRVUkVTIiwgZCl9JworU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZW3ZhcmRlcHNdICs9ICJTREtJTUFHRV9GRUFUVVJFUyIKIAogUEFDS0FHRV9BUkNIU19hcHBlbmRfdGFzay1wb3B1bGF0ZS1zZGsgPSAiIHNkay1wcm92aWRlcy1kdW1teS10YXJnZXQiCiBTREtfUEFDS0FHRV9BUkNIUyArPSAic2RrLXByb3ZpZGVzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKQEAgLTQ4LDYgKzQ5LDggQEAKIAogIyBEZWZhdWx0IGFyY2hpdmVkIFNESydzIHN1ZmZpeAogU0RLX0FSQ0hJVkVfVFlQRSA/PSAidGFyLnh6IgorU0RLX1haX0NPTVBSRVNTSU9OX0xFVkVMID89ICItOSIKK1NES19YWl9PUFRJT05TID89ICIke1haX0RFRkFVTFRTfSAke1NES19YWl9DT01QUkVTU0lPTl9MRVZFTH0iCiAKICMgVG8gc3VwcG9ydCBkaWZmZXJlbnQgc2RrIHR5cGUgYWNjb3JkaW5nIHRvIFNES19BUkNISVZFX1RZUEUsIG5vdyBzdXBwb3J0IHppcCBhbmQgdGFyLnh6CiBweXRob24gKCkgewpAQCAtNTgsNyArNjEsNyBAQAogICAgICAgIGQuc2V0VmFyKCdTREtfQVJDSElWRV9DTUQnLCAnY2QgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9OyB6aXAgLXIgJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LiR7U0RLX0FSQ0hJVkVfVFlQRX0gLicpCiAgICAgZWxzZToKICAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfREVQRU5EUycsICd4ei1uYXRpdmUnKQotICAgICAgIGQuc2V0VmFyKCdTREtfQVJDSElWRV9DTUQnLCAnY2QgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9OyB0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgeHogLVQgMCAtOSA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS4ke1NES19BUkNISVZFX1RZUEV9JykKKyAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfQ01EJywgJ2NkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfTsgdGFyICR7U0RLVEFST1BUU30gLWNmIC0gLiB8IHh6ICR7U0RLX1haX09QVElPTlN9ID4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LiR7U0RLX0FSQ0hJVkVfVFlQRX0nKQogfQogCiBTREtfUkRFUEVORFMgPSAiJHtUT09MQ0hBSU5fVEFSR0VUX1RBU0t9ICR7VE9PTENIQUlOX0hPU1RfVEFTS30iCkBAIC0xODIsNiArMTg1LDExIEBACiAJIyBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGxpa2UgJysnIGFuZCAnLicgaW4gdGhlIFNES1BBVEgKIAllc2NhcGVkX3Nka3BhdGg9JChlY2hvICR7U0RLUEFUSH0gfHNlZCAtZSAiczpbXCtcLl06XFxcXFxcXFxcMDpnIikKIAlzZWQgLWkgLWUgInM6IyNERUZBVUxUX0lOU1RBTExfRElSIyM6JGVzY2FwZWRfc2RrcGF0aDoiICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9yZWxvY2F0ZV9zZGsucHkKKworICAgICAgIG1rZGlyIC1wICR7U0RLX09VVFBVVH0vJHtTREtQQVRITkFUSVZFfSR7c3lzY29uZmRpcn0vCisgICAgICAgZWNobyAnJHtTREtQQVRITkFUSVZFfSR7bGliZGlyX25hdGl2ZXNka30KKyR7U0RLUEFUSE5BVElWRX0ke2Jhc2VfbGliZGlyX25hdGl2ZXNka30KK2luY2x1ZGUgL2V0Yy9sZC5zby5jb25mJyA+ICR7U0RLX09VVFBVVH0vJHtTREtQQVRITkFUSVZFfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZgogfQogCiBweXRob24gY2hlY2tfc2RrX3N5c3Jvb3RzKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IDA1Y2ZjMWMuLjlmMjZjZmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKQEAgLTEyNCw3ICsxMjQsNyBAQAogZGVmIGNsZWFuX2VzZGtfYnVpbGRkaXIoZCwgc2RrYmFzZXBhdGgpOgogICAgICIiIkNsZWFuIHVwIHRyYWNlcyBvZiB0aGUgZmFrZSBidWlsZCBmb3IgY3JlYXRlX2ZpbHRlcmVkX3Rhc2tsaXN0KCkiIiIKICAgICBpbXBvcnQgc2h1dGlsCi0gICAgY2xlYW5wYXRocyA9ICdjYWNoZSBjb25mL3Nhbml0eV9pbmZvIHRtcCcuc3BsaXQoKQorICAgIGNsZWFucGF0aHMgPSBbJ2NhY2hlJywgJ3RtcCddCiAgICAgZm9yIHB0aCBpbiBjbGVhbnBhdGhzOgogICAgICAgICBmdWxscHRoID0gb3MucGF0aC5qb2luKHNka2Jhc2VwYXRoLCBwdGgpCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZnVsbHB0aCk6CkBAIC0xNzksNyArMTc5LDkgQEAKICAgICAgICAgIyB3aWxsIGVmZmVjdGl2ZWx5IGRvCiAgICAgICAgIGNsZWFuX2VzZGtfYnVpbGRkaXIoZCwgc2RrYmFzZXBhdGgpCiAgICAgZmluYWxseToKLSAgICAgICAgb3MucmVwbGFjZShzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mLmJhaycsIHNka2Jhc2VwYXRoICsgJy9jb25mL2xvY2FsLmNvbmYnKQorICAgICAgICBsb2NhbGNvbmYgPSBzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NhbGNvbmYgKyAnLmJhaycpOgorICAgICAgICAgICAgb3MucmVwbGFjZShsb2NhbGNvbmYgKyAnLmJhaycsIGxvY2FsY29uZikKIAogcHl0aG9uIGNvcHlfYnVpbGRzeXN0ZW0gKCkgewogICAgIGltcG9ydCByZQpAQCAtMzg2LDkgKzM4OCwxMyBAQAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5qb2luKGJhc2VvdXRwYXRoLCAnY2FjaGUnKSkKICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGJ1aWxkZGlyICsgJy9jYWNoZS9iYl91bmloYXNoZXMuZGF0JywgYmFzZW91dHBhdGggKyAnL2NhY2hlL2JiX3VuaWhhc2hlcy5kYXQnKQogCi0gICAgIyBXcml0ZSBhIHRlbXBsYXRlY29uZi5jZmcKLSAgICB3aXRoIG9wZW4oYmFzZW91dHBhdGggKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycsICd3JykgYXMgZjoKLSAgICAgICAgZi53cml0ZSgnbWV0YS9jb25mXG4nKQorICAgICMgVXNlIHRlbXBsYXRlY29uZi5jZmcgZmlsZSBmcm9tIGJ1aWxkZGlyIGlmIGV4aXN0cworICAgIGlmIG9zLnBhdGguZXhpc3RzKGJ1aWxkZGlyICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnKToKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGJ1aWxkZGlyICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnLCBiYXNlb3V0cGF0aCArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJykKKyAgICBlbHNlOgorICAgICAgICAjIFdyaXRlIGEgdGVtcGxhdGVjb25mLmNmZworICAgICAgICB3aXRoIG9wZW4oYmFzZW91dHBhdGggKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ21ldGEvY29uZlxuJykKIAogICAgICMgRW5zdXJlIGFueSB2YXJpYWJsZXMgc2V0IGZyb20gdGhlIGV4dGVybmFsIGVudmlyb25tZW50IChieSB3YXkgb2YKICAgICAjIEJCX0VOVl9FWFRSQVdISVRFKSBhcmUgc2V0IGluIHRoZSBTREsncyBjb25maWd1cmF0aW9uCkBAIC02MTEsOCArNjE3LDggQEAKIAkJZXhpdCAxCiAJZmkKIAkjIFRoZSByZWxvY2F0aW9uIHNjcmlwdCB1c2VkIGJ5IGJ1aWxkdG9vbHMgaW5zdGFsbGVyIHJlcXVpcmVzIHB5dGhvbgotCWlmICEgY29tbWFuZCAtdiBweXRob24gPiAvZGV2L251bGw7IHRoZW4KLQkJZWNobyAiRVJST1I6IFRoZSBpbnN0YWxsZXIgcmVxdWlyZXMgcHl0aG9uLCBwbGVhc2UgaW5zdGFsbCBpdCBmaXJzdCIKKwlpZiAhIGNvbW1hbmQgLXYgcHl0aG9uMyA+IC9kZXYvbnVsbDsgdGhlbgorCQllY2hvICJFUlJPUjogVGhlIGluc3RhbGxlciByZXF1aXJlcyBweXRob24zLCBwbGVhc2UgaW5zdGFsbCBpdCBmaXJzdCIKIAkJZXhpdCAxCiAJZmkKIAltaXNzaW5nX3V0aWxzPSIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24tZGlyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24tZGlyLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMWRjMzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uLWRpci5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1QWVRIT05fQkFTRVZFUlNJT04gPSAiMi43IgotUFlUSE9OX0FCSSA9ICIiCi1QWVRIT05fRElSID0gInB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKLVBZVEhPTl9QTiA9ICJweXRob24iCi1QWVRIT05fU0lURVBBQ0tBR0VTX0RJUiA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uMy1kaXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MKaW5kZXggN2RkMTMwYi4uMDM2ZDcxNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uMy1kaXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzCkBAIC0xLDUgKzEsNSBAQAotUFlUSE9OX0JBU0VWRVJTSU9OID0gIjMuNyIKLVBZVEhPTl9BQkkgPSAibSIKK1BZVEhPTl9CQVNFVkVSU0lPTiA9ICIzLjgiCitQWVRIT05fQUJJID0gIiIKIFBZVEhPTl9ESVIgPSAicHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgogUFlUSE9OX1BOID0gInB5dGhvbjMiCiBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUiA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU5MDE5ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotaW5oZXJpdCBweXRob24tZGlyCi0KLVBZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIgotIyBQWVRIT05fRVhFQ1VUQUJMRSBpcyB1c2VkIGJ5IGNtYWtlCi1QWVRIT05fRVhFQ1VUQUJMRT0iJHtQWVRIT059IgotRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24tbmF0aXZlIgotREVQRU5EU19hcHBlbmQgPSAiIHB5dGhvbi1uYXRpdmUgIgotCi0jIHB5dGhvbi1jb25maWcgYW5kIG90aGVyIHNjcmlwdHMgYXJlIHVzaW5nIGRpc3R1dGlscyBtb2R1bGVzCi0jIHdoaWNoIHdlIHBhdGNoIHRvIGFjY2VzcyB0aGVzZSB2YXJpYWJsZXMKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLSMgUGFja2FnZXMgY2FuIHVzZQotIyBmaW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwIFJFUVVJUkVEKQotIyBmaW5kX3BhY2thZ2UoUHl0aG9uTGlicyBSRVFVSVJFRCkKLSMgd2hpY2ggZW5kcyB1cCB1c2luZyBsaWJzL2luY2x1ZGVzIGZyb20gYnVpbGQgaG9zdAotIyBUaGVyZWZvcmUgcHJlLWVtcHQgdGhhdCBlZmZvcnQKLWV4cG9ydCBQWVRIT05fTElCUkFSWT0iJHtTVEFHSU5HX0xJQkRJUn0vbGliJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0uc28iCi1leHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKLQotIyBzdXBwcmVzcyBob3N0IHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcnMuCi1leHBvcnQgUFlUSE9OTk9VU0VSU0lURSA9ICIxIgotCi0jIGF1dG9jb25mIG1hY3JvcyB3aWxsIHVzZSB0aGVpciBpbnRlcm5hbCBkZWZhdWx0IHByZWZlcmVuY2Ugb3RoZXJ3aXNlCi1leHBvcnQgUFlUSE9OCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKaW5kZXggZjVjNTc4MC4uNTViZGZmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXUuYmJjbGFzcwpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICB0YXJnZXRfYXJjaCA9ICJwcGMiCiAgICAgZWxpZiB0YXJnZXRfYXJjaCA9PSAicG93ZXJwYzY0IjoKICAgICAgICAgdGFyZ2V0X2FyY2ggPSAicHBjNjQiCisgICAgZWxpZiB0YXJnZXRfYXJjaCA9PSAicG93ZXJwYzY0bGUiOgorICAgICAgICB0YXJnZXRfYXJjaCA9ICJwcGM2NGxlIgogCiAgICAgcmV0dXJuICJxZW11LSIgKyB0YXJnZXRfYXJjaAogCkBAIC02MiwzICs2NCw0IEBACiBRRU1VX0VYVFJBT1BUSU9OU19wcGNlNjUwMCA9ICIgLWNwdSBlNTAwbWMiCiBRRU1VX0VYVFJBT1BUSU9OU19wcGM2NGU2NTAwID0gIiAtY3B1IGU1MDBtYyIKIFFFTVVfRVhUUkFPUFRJT05TX3BwYzc0MDAgPSAiIC1jcHUgNzQwMCIKK1FFTVVfRVhUUkFPUFRJT05TX3Bvd2VycGM2NGxlID0gIiAtY3B1IFBPV0VSOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCmluZGV4IDE1YTllNjMuLjMxNjJlN2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcwpAQCAtMzYsNiArMzYsOSBAQAogIyAgICAgICAgICAgICAgICAgICAgTm90ZSwgcnVucWVtdSB3aWxsIHJlcGxhY2UgQE1BQ0Agd2l0aCBhIHByZWRlZmluZWQgbWFjLCB5b3UgY2FuIHNldAogIyAgICAgICAgICAgICAgICAgICAgYSBjdXN0b20gb25lLCBidXQgdGhhdCBtYXkgY2F1c2UgY29uZmxpY3RzIHdoZW4gbXVsdGlwbGUgcWVtdXMgYXJlCiAjICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG9uIHRoZSBzYW1lIGhvc3QuCisjICAgICAgICAgICAgICAgICAgICBOb3RlOiBJZiBtb3JlIHRoYW4gb25lIGludGVyZmFjZSBvZiB0eXBlIC1kZXZpY2UgdmlydGlvLW5ldC1kZXZpY2UgZ2V0cyBhZGRlZCwKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIFFCX05FVFdPUktfREVWSUNFX3ByZXBlbmQgbWlnaHQgYmUgdXNlZCwgc2luY2UgUWVtdSBlbnVtZXJhdGVzIHRoZSBldGgqCisjICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VzIGluIHJldmVyc2Ugb3JkZXIgdG8gLWRldmljZSBhcmd1bWVudHMuCiAjCiAjIFFCX1RBUF9PUFQ6IG5ldG93cmsgb3B0aW9uIGZvciAndGFwJyBtb2RlLCBlLmcuLAogIyAgICAgICAgICAgICAiLW5ldGRldiB0YXAsaWQ9bmV0MCxpZm5hbWU9QFRBUEAsc2NyaXB0PW5vLGRvd25zY3JpcHQ9bm8iCkBAIC00Myw2ICs0NiwxNSBAQAogIwogIyBRQl9TTElSUF9PUFQ6IG5ldHdvcmsgb3B0aW9uIGZvciBTTElSUCBtb2RlLCBlLmcuLCAtbmV0ZGV2IHVzZXIsaWQ9bmV0MCIKICMKKyMgUUJfQ01ETElORV9JUF9TTElSUDogSWYgUUJfTkVUV09SS19ERVZJQ0UgYWRkcyBtb3JlIHRoYW4gb25lIG5ldHdvcmsgaW50ZXJmYWNlIHRvIHFlbXUsIHVzdWFsbHkgdGhlCisjICAgICAgICAgICAgICAgICAgICAgIGlwPSBrZXJuZWwgY29tYW5kIGxpbmUgYXJndW1lbnQgbmVlZHMgdG8gYmUgY2hhbmdlZCBhY2NvcmRpbmdseS4gRGV0YWlscyBhcmUgZG9jdW1lbnRlZAorIyAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUga2VybmVsIGRvY3VlbW50YXRpb24gaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzcm9vdC50eHQKKyMgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSB0byBjb25maWd1cmUgb25seSB0aGUgZmlyc3QgaW50ZXJmYWNlOiAiaXA9ZXRoMDpkaGNwIgorIyBRQl9DTURMSU5FX0lQX1RBUDogVGhpcyBwYXJhbWV0ZXIgaXMgc2ltaWxhciB0byB0aGUgUUJfQ01ETElORV9JUF9TTElSUCBwYXJhbWV0ZXIuIFNpbmNlIHRoZSB0YXAgaW50ZXJmYWNlIHJlcXVpcmVzCisjICAgICAgICAgICAgICAgICAgICBzdGF0aWMgSVAgY29uZmlndXJhdGlvbiBAQ0xJRU5UQCBhbmQgQEdBVEVXQVlAIHBsYWNlIGhvbGRlcnMgYXJlIHJlcGxhY2VkIGJ5IHRoZSBJUCBhbmQgdGhlIGdhdGV3YXkKKyMgICAgICAgICAgICAgICAgICAgIGFkZHJlc3Mgb2YgdGhlIHFlbXUgZ3Vlc3QgYnkgcnVucWVtdS4KKyMgICAgICAgICAgICAgICAgICAgIEV4YW1wbGU6ICJpcD0xOTIuMTY4LjcuQENMSUVOVEA6OjE5Mi4xNjguNy5AR0FURVdBWUA6MjU1LjI1NS4yNTUuMDo6ZXRoMCIKKyMKICMgUUJfUk9PVEZTX09QVDogdXNlZCBhcyByb290ZnMsIGUuZy4sCiAjICAgICAgICAgICAgICAgIi1kcml2ZSBpZD1kaXNrMCxmaWxlPUBST09URlNALGlmPW5vbmUsZm9ybWF0PXJhdyAtZGV2aWNlIHZpcnRpby1ibGstZGV2aWNlLGRyaXZlPWRpc2swIgogIyAgICAgICAgICAgICAgTm90ZSwgcnVucWVtdSB3aWxsIHJlcGxhY2UgIkBST09URlNAIiB3aXRoIHRoZSBvbmUgd2hpY2ggaXMgdXNlZCwgc3VjaCBhcyBjb3JlLWltYWdlLW1pbmltYWwtcWVtdWFybTY0LmV4dDQuCkBAIC01Myw2ICs2NSwxMCBAQAogIyAgICAgICAgICAgICAgICAgICAiIC1kZXZpY2UgdmlydGlvLXNlcmlhbC1kZXZpY2UgLWNoYXJkZXYgc29ja2V0LGlkPXZpcnRjb24scG9ydD1AUE9SVEAsaG9zdD0xMjcuMC4wLjEgLWRldmljZSB2aXJ0Y29uc29sZSxjaGFyZGV2PXZpcnRjb24iCiAjICAgICAgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUE9SVEAiIHdpdGggdGhlIHBvcnQgbnVtYmVyIHdoaWNoIGlzIHVzZWQuCiAjCisjIFFCX1JPT1RGU19FWFRSQV9PUFQ6IGV4dHJhIG9wdGlvbnMgdG8gYmUgYXBwZW5kZWQgdG8gdGhlIHJvb3RmcyBkZXZpY2UgaW4gY2FzZSB0aGVyZSBpcyBub25lIHNwZWNpZmllZCBieSBRQl9ST09URlNfT1BULgorIyAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGRldGVybWluZSB0aGUgaW1hZ2UgZnJvbSB0aGUgb3RoZXIgdmFyaWFibGVzCisjICAgICAgICAgICAgICAgICAgICAgIGJ1dCBkZWZpbmUgdGhpbmdzIGxpbmsgJ2Jvb3RpbmRleCcgd2hlbiBib290aW5nIGZyb20gRUZJIG9yICdyZWFkb25seScgd2hlbiB1c2luZyBzcXVhc2hmcworIyAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHRoZSBuZWVkIHRvIHNwZWNpZnkgYSBkZWRpY2F0ZWQgcWVtdSBjb25maWd1cmF0aW9uCiAjIFVzYWdlOgogIyBJTUFHRV9DTEFTU0VTICs9ICJxZW11Ym9vdCIKICMgU2VlICJydW5xZW11IGhlbHAiIGZvciBtb3JlIGluZm8KQEAgLTYzLDEzICs3OSwxNSBAQAogUUJfREVGQVVMVF9GU1RZUEUgPz0gImV4dDQiCiBRQl9PUFRfQVBQRU5EID89ICItc2hvdy1jdXJzb3IiCiBRQl9ORVRXT1JLX0RFVklDRSA/PSAiLWRldmljZSB2aXJ0aW8tbmV0LXBjaSxuZXRkZXY9bmV0MCxtYWM9QE1BQ0AiCitRQl9DTURMSU5FX0lQX1NMSVJQID89ICJpcD1kaGNwIgorUUJfQ01ETElORV9JUF9UQVAgPz0gImlwPTE5Mi4xNjguNy5AQ0xJRU5UQDo6MTkyLjE2OC43LkBHQVRFV0FZQDoyNTUuMjU1LjI1NS4wIgorUUJfUk9PVEZTX0VYVFJBX09QVCA/PSAiIgogCiAjIFRoaXMgc2hvdWxkIGJlIGtlcHQgYWxpZ24gd2l0aCBST09UX1ZNCiBRQl9EUklWRV9UWVBFID89ICIvZGV2L3NkIgogCiAjIENyZWF0ZSBxZW11Ym9vdC5jb25mCiBhZGR0YXNrIGRvX3dyaXRlX3FlbXVib290X2NvbmYgYWZ0ZXIgZG9fcm9vdGZzIGJlZm9yZSBkb19pbWFnZQotSU1HREVQTE9ZRElSID89ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfS1pbWFnZS1jb21wbGV0ZSIKIAogZGVmIHFlbXVib290X3ZhcnMoZCk6CiAgICAgYnVpbGRfdmFycyA9IFsnTUFDSElORScsICdUVU5FX0FSQ0gnLCAnREVQTE9ZX0RJUl9JTUFHRScsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCmluZGV4IDM5YjZlNDAuLjhkYTQwZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzCkBAIC00NCwxMCArNDQsMTIgQEAKIFNTVEFURVRBU0tTICs9ICJkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2giCiAKIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaCAoKSB7Ci0gICAgZWNobyAiRGVwbG95aW5nIFNERSB0byAke1NERV9ESVJ9LiIKICAgICBta2RpciAtcCAke1NERV9ERVBMT1lESVJ9CiAgICAgaWYgWyAtZSAke1NERV9GSUxFfSBdOyB0aGVuCisgICAgICAgIGVjaG8gIkRlcGxveWluZyBTREUgZnJvbSAke1NERV9GSUxFfSAtPiAke1NERV9ERVBMT1lESVJ9LiIKICAgICAgICAgY3AgLXAgJHtTREVfRklMRX0gJHtTREVfREVQTE9ZRElSfS9fX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dAorICAgIGVsc2UKKyAgICAgICAgZWNobyAiJHtTREVfRklMRX0gbm90IGZvdW5kISIKICAgICBmaQogfQogCkBAIC01Niw3ICs1OCwxMSBAQAogICAgIGJiLnV0aWxzLm1rZGlyaGllcihkLmdldFZhcignU0RFX0RJUicpKQogICAgIHNkZV9maWxlID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdTREVfREVQTE9ZRElSJyksICdfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCcpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoc2RlX2ZpbGUpOgotICAgICAgICBvcy5yZW5hbWUoc2RlX2ZpbGUsIGQuZ2V0VmFyKCdTREVfRklMRScpKQorICAgICAgICB0YXJnZXQgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgICAgICBiYi5kZWJ1ZygxLCAiTW92aW5nIHNldHNjZW5lIFNERSBmaWxlICVzIC0+ICVzIiAlIChzZGVfZmlsZSwgdGFyZ2V0KSkKKyAgICAgICAgb3MucmVuYW1lKHNkZV9maWxlLCB0YXJnZXQpCisgICAgZWxzZToKKyAgICAgICAgYmIuZGVidWcoMSwgIiVzIG5vdCBmb3VuZCEiICUgc2RlX2ZpbGUpCiB9CiAKIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaFtkaXJzXSA9ICIke1NERV9ERVBMT1lESVJ9IgpAQCAtMTQ0LDExICsxNTAsMTIgQEAKICAgICBiYi5kZWJ1ZygxLCAiTm8gdGFyYmFsbCBvciBnaXQgcmVwbyBmb3VuZCB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0giKQogICAgIHJldHVybiAwCiAKLXB5dGhvbiBkb19jcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAoKSB7CitweXRob24gY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgewogICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgIyBJZiBpdCBleGlzdHMgd2UgbmVlZCB0byByZWdlbmVyYXRlIGFzIHRoZSBzb3VyY2VzIG1heSBoYXZlIGNoYW5nZWQKICAgICBpZiBvcy5wYXRoLmlzZmlsZShlcG9jaGZpbGUpOgotICAgICAgICBiYi5kZWJ1ZygxLCAiUmV1c2luZyBTT1VSQ0VfREFURV9FUE9DSCBmcm9tOiAlcyIgJSBlcG9jaGZpbGUpCi0gICAgICAgIHJldHVybgorICAgICAgICBiYi5kZWJ1ZygxLCAiRGVsZXRpbmcgZXhpc3RpbmcgU09VUkNFX0RBVEVfRVBPQ0ggZnJvbTogJXMiICUgZXBvY2hmaWxlKQorICAgICAgICBvcy5yZW1vdmUoZXBvY2hmaWxlKQogCiAgICAgc291cmNlZGlyID0gZC5nZXRWYXIoJ1MnKQogICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gKApAQCAtMTY0LDE2ICsxNzEsMzIgQEAKICAgICAgICAgZi53cml0ZShzdHIoc291cmNlX2RhdGVfZXBvY2gpKQogfQogCitkZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX3ZhbHVlKGQpOgorICAgIGNhY2hlZCA9IGQuZ2V0VmFyKCdfX0NBQ0hFRF9TT1VSQ0VfREFURV9FUE9DSCcpCisgICAgaWYgY2FjaGVkOgorICAgICAgICByZXR1cm4gY2FjaGVkCisKKyAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAorICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CisgICAgICAgIHdpdGggb3BlbihlcG9jaGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHMgPSBmLnJlYWQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gaW50KHMpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJTT1VSQ0VfREFURV9FUE9DSCB2YWx1ZSAnJXMnIGlzIGludmFsaWQuIFJldmVydGluZyB0byAwIiAlIHMpCisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSAwCisgICAgICAgIGJiLmRlYnVnKDEsICJTT1VSQ0VfREFURV9FUE9DSDogJWQiICUgc291cmNlX2RhdGVfZXBvY2gpCisgICAgZWxzZToKKyAgICAgICAgYmIuZGVidWcoMSwgIkNhbm5vdCBmaW5kICVzLiBTT1VSQ0VfREFURV9FUE9DSCB3aWxsIGRlZmF1bHQgdG8gJWQiICUgKGVwb2NoZmlsZSwgc291cmNlX2RhdGVfZXBvY2gpKQorCisgICAgZC5zZXRWYXIoJ19fQ0FDSEVEX1NPVVJDRV9EQVRFX0VQT0NIJywgc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKKyAgICByZXR1cm4gc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKQorCitleHBvcnQgU09VUkNFX0RBVEVfRVBPQ0ggPz0gIiR7QGdldF9zb3VyY2VfZGF0ZV9lcG9jaF92YWx1ZShkKX0iCiBCQl9IQVNIQkFTRV9XSElURUxJU1QgKz0gIlNPVVJDRV9EQVRFX0VQT0NIIgogCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSA9PSAnMSc6Ci0gICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fdW5wYWNrIiwgInBvc3RmdW5jcyIsICIgZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wIikKLSAgICAgICAgZXBvY2hmaWxlID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKLSAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSAiMCIKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKLSAgICAgICAgICAgIHdpdGggb3BlbihlcG9jaGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGYucmVhZCgpCi0gICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0g6ICVzIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQotICAgICAgICBkLnNldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnLCBzb3VyY2VfZGF0ZV9lcG9jaCkKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJkb191bnBhY2siLCAicG9zdGZ1bmNzIiwgIiBjcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAiKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzCmluZGV4IDhhNjBkZWUuLjM5MzM3MjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKQEAgLTcsNCArNywzIEBACiBleHBvcnQgU09VUkNFX0RBVEVfRVBPQ0ggPz89ICIxNTIwNTk4ODk2IgogCiBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyA/Pz0gIjE1MjA1OTg4OTYiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKaW5kZXggNjNhYjZjZi4uOWU4NzEwMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKQEAgLTIsNyArMiw3IEBACiAjIFNhbml0eSBjaGVjayB0aGUgdXNlcnMgc2V0dXAgZm9yIGNvbW1vbiBtaXNjb25maWd1cmF0aW9ucwogIwogCi1TQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTID89ICJwYXRjaCBkaWZmc3RhdCBtYWtlaW5mbyBnaXQgYnppcDIgdGFyIFwKK1NBTklUWV9SRVFVSVJFRF9VVElMSVRJRVMgPz0gInBhdGNoIGRpZmZzdGF0IGdpdCBiemlwMiB0YXIgXAogICAgIGd6aXAgZ2F3ayBjaHJwYXRoIHdnZXQgY3BpbyBwZXJsIGZpbGUgd2hpY2giCiAKIGRlZiBiYmxheWVyc19jb25mX2ZpbGUoZCk6CkBAIC01MTEsMTQgKzUxMSwzOCBAQAogICAgIHJldHVybiBOb25lCiAKIAotIyBDaGVjayBpZiB3ZSdyZSBydW5uaW5nIG9uIFdTTCAoV2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4KS4gSXRzIGtub3duIG5vdCB0bwotIyB3b3JrIGJ1dCB3ZSBzaG91bGQgdGVsbCB0aGUgdXNlciB0aGF0IHVwZnJvbnQuCisjIENoZWNrIGlmIHdlJ3JlIHJ1bm5pbmcgb24gV1NMIChXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXgpLgorIyBXU0x2MSBpcyBrbm93biBub3QgdG8gd29yayBidXQgV1NMdjIgc2hvdWxkIHdvcmsgcHJvcGVybHkgYXMKKyMgbG9uZyBhcyB0aGUgVkhEWCBmaWxlIGlzIG9wdGltaXplZCBvZnRlbiwgbGV0IHRoZSB1c2VyIGtub3cKKyMgdXBmcm9udC4KKyMgTW9yZSBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nIFdTTHYyIGF0OgorIyBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dzbC93c2wyLWluc3RhbGwKIGRlZiBjaGVja193c2woZCk6CiAgICAgd2l0aCBvcGVuKCIvcHJvYy92ZXJzaW9uIiwgInIiKSBhcyBmOgogICAgICAgICB2ZXJkYXRhID0gZi5yZWFkbGluZXMoKQogICAgIGZvciBsIGluIHZlcmRhdGE6CiAgICAgICAgIGlmICJNaWNyb3NvZnQiIGluIGw6Ci0gICAgICAgICAgICByZXR1cm4gIk9wZW5FbWJlZGRlZCBkb2Vzbid0IHdvcmsgdW5kZXIgV1NMIGF0IHRoaXMgdGltZSwgc29ycnkiCisgICAgICAgICAgICByZXR1cm4gIk9wZW5FbWJlZGRlZCBkb2Vzbid0IHdvcmsgdW5kZXIgV1NMdjEsIHBsZWFzZSB1cGdyYWRlIHRvIFdTTHYyIGlmIHlvdSB3YW50IHRvIHJ1biBidWlsZHMgb24gV2luZG93cyIKKyAgICAgICAgZWxpZiAibWljcm9zb2Z0IiBpbiBsOgorICAgICAgICAgICAgYmIud2FybigiWW91IGFyZSBydW5uaW5nIGJpdGJha2UgdW5kZXIgV1NMdjIsIHRoaXMgd29ya3MgcHJvcGVybHkgYnV0IHlvdSBzaG91bGQgb3B0aW1pemUgeW91ciBWSERYIGZpbGUgZXZlbnR1YWxseSB0byBhdm9pZCBydW5uaW5nIG91dCBvZiBzdG9yYWdlIHNwYWNlIikKKyAgICByZXR1cm4gTm9uZQorCisjIFJlcXVpcmUgYXQgbGVhc3QgZ2NjIHZlcnNpb24gNS4wLgorIworIyBUaGlzIGNhbiBiZSBmaXhlZCBvbiBDZW50T1MtNyB3aXRoIGRldnRvb2xzZXQtNisKKyMgaHR0cHM6Ly93d3cuc29mdHdhcmVjb2xsZWN0aW9ucy5vcmcvZW4vc2Nscy9yaHNjbC9kZXZ0b29sc2V0LTYvCisjCisjIEEgbGVzcyBpbnZhc2l2ZSBmaXggaXMgd2l0aCBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyAob3Igd2l0aCB1c2VyCisjIGJ1aWx0IGJ1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbCkKKyMKK2RlZiBjaGVja19nY2NfdmVyc2lvbihzYW5pdHlfZGF0YSk6CisgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAKKyAgICBidWlsZF9jYywgdmVyc2lvbiA9IG9lLnV0aWxzLmdldF9ob3N0X2NvbXBpbGVyX3ZlcnNpb24oc2FuaXR5X2RhdGEpCisgICAgaWYgYnVpbGRfY2Muc3RyaXAoKSA9PSAiZ2NjIjoKKyAgICAgICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCI1LjAiKToKKyAgICAgICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIGdjYyBpcyBvbGRlciB0aGFuIDUuMCBhbmQgd2lsbCBicmVhayBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiBnY2MgKHlvdSBjb3VsZCB1c2UgdGhlIHByb2plY3QncyBidWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwgb3IgdXNlIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzKS5cbiIKICAgICByZXR1cm4gTm9uZQogCiAjIFRhciB2ZXJzaW9uIDEuMjQgYW5kIG9ud2FyZHMgaGFuZGxlIG92ZXJ3cml0aW5nIHN5bWxpbmtzIGNvcnJlY3RseQpAQCAtNTMyLDEwICs1NTYsOCBAQAogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIHRhciAtLXZlcnNpb24sIGV4aXQgY29kZSAlZFxuJXNcbiIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkKICAgICB2ZXJzaW9uID0gcmVzdWx0LnNwbGl0KClbM10KLSAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjEuMjQiKToKLSAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yNCBhbmQgaGFzIGJ1Z3Mgd2hpY2ggd2lsbCBicmVhayBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIgKDEuMjgrKS5cbiIKICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjEuMjgiKToKLSAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yOCBhbmQgZG9lcyBub3QgaGF2ZSB0aGUgc3VwcG9ydCBuZWVkZWQgdG8gZW5hYmxlIHJlcHJvZHVjaWJsZSBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIgKHlvdSBjb3VsZCB1c2UgdGhlIHByb2plY3RzIGJ1aWxkdG9vbHMtdGFyYmFsbCBmcm9tIG91ciBsYXN0IHJlbGVhc2UpLlxuIgorICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiB0YXIgaXMgb2xkZXIgdGhhbiAxLjI4IGFuZCBkb2VzIG5vdCBoYXZlIHRoZSBzdXBwb3J0IG5lZWRlZCB0byBlbmFibGUgcmVwcm9kdWNpYmxlIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIHRhciAoeW91IGNvdWxkIHVzZSB0aGUgcHJvamVjdCdzIGJ1aWxkdG9vbHMtdGFyYmFsbCBmcm9tIG91ciBsYXN0IHJlbGVhc2Ugb3IgdXNlIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzKS5cbiIKICAgICByZXR1cm4gTm9uZQogCiAjIFdlIHVzZSBnaXQgcGFyYW1ldGVycyBhbmQgZnVuY3Rpb25hbGl0eSBvbmx5IGZvdW5kIGluIDEuNy44IG9yIGxhdGVyCkBAIC02MzQsNiArNjU2LDcgQEAKICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgnWW91ciBQeXRob24gMyBpcyBub3QgYSBmdWxsIGluc3RhbGwuIFBsZWFzZSBpbnN0YWxsIHRoZSBtb2R1bGUgJXMgKHNlZSB0aGUgR2V0dGluZyBTdGFydGVkIGd1aWRlIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uKS5cbicgJSBlLm5hbWUpCiAKKyAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX2djY192ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfbWFrZV92ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfcGF0Y2hfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3Rhcl92ZXJzaW9uKGQpKQpAQCAtODA2LDcgKzgyOSw3IEBACiAgICAgIyBJZiBTREtfVkVORE9SIGxvb2tzIGxpa2UgIi1teS1zZGsiIHRoZW4gdGhlIHRyaXBsZXMgYXJlIGJhZGx5IGZvcm1lZCBzbyBmYWlsIGVhcmx5CiAgICAgc2RrdmVuZG9yID0gZC5nZXRWYXIoIlNES19WRU5ET1IiKQogICAgIGlmIG5vdCAoc2RrdmVuZG9yLnN0YXJ0c3dpdGgoIi0iKSBhbmQgc2RrdmVuZG9yLmNvdW50KCItIikgPT0gMSk6Ci0gICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIlNES19WRU5ET1Igc2hvdWxkIGJlIG9mIHRoZSBmb3JtICctZm9vc2RrJyB3aXRoIGEgc2luZ2xlIGRhc2hcbiIpCisgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoIlNES19WRU5ET1Igc2hvdWxkIGJlIG9mIHRoZSBmb3JtICctZm9vc2RrJyB3aXRoIGEgc2luZ2xlIGRhc2g7IGZvdW5kICclcydcbiIgJSBzZGt2ZW5kb3IpCiAKICAgICBjaGVja19zdXBwb3J0ZWRfZGlzdHJvKGQpCiAKQEAgLTkyOSw3ICs5NTIsNyBAQAogICAgIGxhc3RfdG1wZGlyID0gIiIKICAgICBsYXN0X3NzdGF0ZV9kaXIgPSAiIgogICAgIGxhc3RfbmF0aXZlbHNic3RyID0gIiIKLSAgICBzYW5pdHl2ZXJmaWxlID0gc2FuaXR5X2RhdGEuZXhwYW5kKCIke1RPUERJUn0vY29uZi9zYW5pdHlfaW5mbyIpCisgICAgc2FuaXR5dmVyZmlsZSA9IHNhbml0eV9kYXRhLmV4cGFuZCgiJHtUT1BESVJ9L2NhY2hlL3Nhbml0eV9pbmZvIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzYW5pdHl2ZXJmaWxlKToKICAgICAgICAgd2l0aCBvcGVuKHNhbml0eXZlcmZpbGUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MjNlYTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1pbmhlcml0IGRpc3R1dGlscwotCi1ERVBFTkRTICs9ICJweXRob24tc2V0dXB0b29scy1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCA0MTFlNzA0Li4xYTA0OGMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKQEAgLTM1LDcgKzM1LDYgQEAKICAgICAgICAgImxtMzIiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLAogICAgICAgICAibTY4ayI6ICJlbmRpYW4tYmlnIGJpdC0zMiIsCiAgICAgICAgICJtaWNyb2JsYXplIjogImVuZGlhbi1iaWcgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKLSAgICAgICAgIm1pY3JvYmxhemVlYiI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCiAgICAgICAgICJtaWNyb2JsYXplZWwiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLAogICAgICAgICAibWlwcyI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaXBzLWNvbW1vbiIsCiAgICAgICAgICJtaXBzNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgbWlwcy1jb21tb24iLApAQCAtNDgsNiArNDcsNyBAQAogICAgICAgICAicG93ZXJwYyI6ICJlbmRpYW4tYmlnIGJpdC0zMiBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJuaW9zMiI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBuaW9zMi1jb21tb24iLAogICAgICAgICAicG93ZXJwYzY0IjogImVuZGlhbi1iaWcgYml0LTY0IHBvd2VycGMtY29tbW9uIiwKKyAgICAgICAgInBvd2VycGM2NGxlIjogImVuZGlhbi1saXR0bGUgYml0LTY0IHBvd2VycGMtY29tbW9uIiwKICAgICAgICAgInBwYyI6ICJlbmRpYW4tYmlnIGJpdC0zMiBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGM2NCI6ICJlbmRpYW4tYmlnIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGM2NGxlIiA6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCkBAIC04OCw4ICs4OCw2IEBACiAgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmkiOiAiYXJtLWxpbnV4IiwKICAgICAgICAgImFybWViLWxpbnV4LWdudWVhYmkiOiAiYXJtZWItbGludXgiLAogICAgICAgICAiYXJtZWItbGludXgtbXVzbGVhYmkiOiAiYXJtZWItbGludXgiLAotICAgICAgICAibWljcm9ibGF6ZWViLWxpbnV4IiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKLSAgICAgICAgIm1pY3JvYmxhemVlYi1saW51eC1tdXNsIiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKICAgICAgICAgIm1pY3JvYmxhemVlbC1saW51eCIgOiAibWljcm9ibGF6ZS1saW51eCIsCiAgICAgICAgICJtaWNyb2JsYXplZWwtbGludXgtbXVzbCIgOiAibWljcm9ibGF6ZS1saW51eCIsCiAgICAgICAgICJtaXBzLWxpbnV4LW11c2wiOiAibWlwcy1saW51eCIsCkBAIC0xMDYsOCArMTA0LDEwIEBACiAgICAgICAgICJwb3dlcnBjLWxpbnV4LW11c2xzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXgiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4LWdudXNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCi0gICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCIsCi0gICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IiwKKyAgICAgICAgInBvd2VycGM2NC1saW51eCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCisgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCisgICAgICAgICJwb3dlcnBjNjRsZS1saW51eCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCisgICAgICAgICJwb3dlcnBjNjRsZS1saW51eC1tdXNsIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKICAgICAgICAgInJpc2N2MzItbGludXgiOiAicmlzY3YzMi1saW51eCIsCiAgICAgICAgICJyaXNjdjMyLWxpbnV4LW11c2wiOiAicmlzY3YzMi1saW51eCIsCiAgICAgICAgICJyaXNjdjY0LWxpbnV4IjogInJpc2N2NjQtbGludXgiLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwppbmRleCA2NDgwOGY4Li5jNzNjM2I0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwpAQCAtMywxOSArMyw0MSBAQAogU1NUQVRFX01BTklGRVNUUyA/PSAiJHtUTVBESVJ9L3NzdGF0ZS1jb250cm9sIgogU1NUQVRFX01BTkZJTEVQUkVGSVggPSAiJHtTU1RBVEVfTUFOSUZFU1RTfS9tYW5pZmVzdC0ke1NTVEFURV9NQU5NQUNIfS0ke1BOfSIKIAotZGVmIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGhhc2gsIGQpOgorZGVmIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGhhc2gsIHRhc2tuYW1lLCBzaWdpbmZvLCBkKToKKyAgICBpZiB0YXNrbmFtZSBpcyBOb25lOgorICAgICAgIHJldHVybiAiIgorICAgIGV4dGVuc2lvbiA9ICIudGd6IgorICAgICMgOCBjaGFycyByZXNlcnZlZCBmb3Igc2lnaW5mbworICAgIGxpbWl0ID0gMjU0IC0gOAorICAgIGlmIHNpZ2luZm86CisgICAgICAgIGxpbWl0ID0gMjU0CisgICAgICAgIGV4dGVuc2lvbiA9ICIudGd6LnNpZ2luZm8iCiAgICAgaWYgbm90IGhhc2g6CiAgICAgICAgIGhhc2ggPSAiSU5WQUxJRCIKLSAgICByZXR1cm4gaGFzaFs6Ml0gKyAiLyIgKyBzcGVjICsgaGFzaAorICAgIGZuID0gc3BlYyArIGhhc2ggKyAiXyIgKyB0YXNrbmFtZSArIGV4dGVuc2lvbgorICAgICMgSWYgdGhlIGZpbGVuYW1lIGlzIHRvbyBsb25nLCBhdHRlbXB0IHRvIHJlZHVjZSBpdAorICAgIGlmIGxlbihmbikgPiBsaW1pdDoKKyAgICAgICAgY29tcG9uZW50cyA9IHNwZWMuc3BsaXQoIjoiKQorICAgICAgICAjIEZpZWxkcyAwLDUsNiBhcmUgbWFuZGF0b3J5LCAxIGlzIG1vc3QgdXNlZnVsLCAyLDMsNCBhcmUganVzdCBmb3IgaW5mb3JtYXRpb24KKyAgICAgICAgIyA3IGlzIGZvciB0aGUgc2VwYXJhdG9ycworICAgICAgICBhdmFpbCA9ICgyNTQgLSBsZW4oaGFzaCArICJfIiArIHRhc2tuYW1lICsgZXh0ZW5zaW9uKSAtIGxlbihjb21wb25lbnRzWzBdKSAtIGxlbihjb21wb25lbnRzWzFdKSAtIGxlbihjb21wb25lbnRzWzVdKSAtIGxlbihjb21wb25lbnRzWzZdKSAtIDcpIC8vIDMKKyAgICAgICAgY29tcG9uZW50c1syXSA9IGNvbXBvbmVudHNbMl1bOmF2YWlsXQorICAgICAgICBjb21wb25lbnRzWzNdID0gY29tcG9uZW50c1szXVs6YXZhaWxdCisgICAgICAgIGNvbXBvbmVudHNbNF0gPSBjb21wb25lbnRzWzRdWzphdmFpbF0KKyAgICAgICAgc3BlYyA9ICI6Ii5qb2luKGNvbXBvbmVudHMpCisgICAgICAgIGZuID0gc3BlYyArIGhhc2ggKyAiXyIgKyB0YXNrbmFtZSArIGV4dGVuc2lvbgorICAgICAgICBpZiBsZW4oZm4pID4gbGltaXQ6CisgICAgICAgICAgICBiYi5mYXRhbCgiVW5hYmxlIHRvIHJlZHVjZSBzc3RhdGUgbmFtZSB0byBsZXNzIHRoYW4gMjU1IGNoYXJhcmFjdGVycyIpCisgICAgcmV0dXJuIGhhc2hbOjJdICsgIi8iICsgaGFzaFsyOjRdICsgIi8iICsgZm4KIAogU1NUQVRFX1BLR0FSQ0ggICAgPSAiJHtQQUNLQUdFX0FSQ0h9IgogU1NUQVRFX1BLR1NQRUMgICAgPSAic3N0YXRlOiR7UE59OiR7UEFDS0FHRV9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9OiR7UFZ9OiR7UFJ9OiR7U1NUQVRFX1BLR0FSQ0h9OiR7U1NUQVRFX1ZFUlNJT059OiIKIFNTVEFURV9TV1NQRUMgICAgID0gInNzdGF0ZToke1BOfTo6JHtQVn06JHtQUn06OiR7U1NUQVRFX1ZFUlNJT059OiIKLVNTVEFURV9QS0dOQU1FICAgID0gIiR7U1NUQVRFX0VYVFJBUEFUSH0ke0BnZW5lcmF0ZV9zc3RhdGVmbihkLmdldFZhcignU1NUQVRFX1BLR1NQRUMnKSwgZC5nZXRWYXIoJ0JCX1VOSUhBU0gnKSwgZCl9IgorU1NUQVRFX1BLR05BTUUgICAgPSAiJHtTU1RBVEVfRVhUUkFQQVRIfSR7QGdlbmVyYXRlX3NzdGF0ZWZuKGQuZ2V0VmFyKCdTU1RBVEVfUEtHU1BFQycpLCBkLmdldFZhcignQkJfVU5JSEFTSCcpLCBkLmdldFZhcignU1NUQVRFX0NVUlJUQVNLJyksIEZhbHNlLCBkKX0iCiBTU1RBVEVfUEtHICAgICAgICA9ICIke1NTVEFURV9ESVJ9LyR7U1NUQVRFX1BLR05BTUV9IgogU1NUQVRFX0VYVFJBUEFUSCAgID0gIiIKIFNTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRCA9ICIiCi1TU1RBVEVfUEFUSFNQRUMgICA9ICIke1NTVEFURV9ESVJ9LyR7U1NUQVRFX0VYVFJBUEFUSFdJTERDQVJEfSovJHtTU1RBVEVfUEtHU1BFQ30iCitTU1RBVEVfUEFUSFNQRUMgICA9ICIke1NTVEFURV9ESVJ9LyR7U1NUQVRFX0VYVFJBUEFUSFdJTERDQVJEfSovKi8ke1NTVEFURV9QS0dTUEVDfSpfJHtTU1RBVEVfUEFUSF9DVVJSVEFTS30udGd6KiIKIAogIyBleHBsaWNpdGx5IG1ha2UgUFYgdG8gZGVwZW5kIG9uIGV2YWx1YXRlZCB2YWx1ZSBvZiBQViB2YXJpYWJsZQogUFZbdmFyZGVwdmFsdWVdID0gIiR7UFZ9IgpAQCAtMzE3LDggKzMzOSw5IEBACiAgICAgZnJvbSBvZS5ncGdfc2lnbiBpbXBvcnQgZ2V0X3NpZ25lcgogCiAgICAgc3N0YXRlaW5zdCA9IGQuZXhwYW5kKCIke1dPUktESVJ9L3NzdGF0ZS1pbnN0YWxsLSVzLyIgJSBzc1sndGFzayddKQotICAgIHNzdGF0ZWZldGNoID0gZC5nZXRWYXIoJ1NTVEFURV9QS0dOQU1FJykgKyAnXycgKyBzc1sndGFzayddICsgIi50Z3oiCi0gICAgc3N0YXRlcGtnID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKSArICdfJyArIHNzWyd0YXNrJ10gKyAiLnRneiIKKyAgICBkLnNldFZhcigiU1NUQVRFX0NVUlJUQVNLIiwgc3NbJ3Rhc2snXSkKKyAgICBzc3RhdGVmZXRjaCA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHTkFNRScpCisgICAgc3N0YXRlcGtnID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKQogCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNzdGF0ZXBrZyk6CiAgICAgICAgIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBkKQpAQCAtMzMwLDcgKzM1Myw2IEBACiAgICAgc3N0YXRlX2NsZWFuKHNzLCBkKQogCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9JTlNURElSJywgc3N0YXRlaW5zdCkKLSAgICBkLnNldFZhcignU1NUQVRFX1BLRycsIHNzdGF0ZXBrZykKIAogICAgIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoIlNTVEFURV9WRVJJRllfU0lHIiksIEZhbHNlKToKICAgICAgICAgc2lnbmVyID0gZ2V0X3NpZ25lcihkLCAnbG9jYWwnKQpAQCAtNDQwLDggKzQ2Miw5IEBACiBkZWYgc3N0YXRlX2NsZWFuX2NhY2hlZmlsZShzcywgZCk6CiAgICAgaW1wb3J0IG9lLnBhdGgKIAotICAgIHNzdGF0ZXBrZ2ZpbGUgPSBkLmdldFZhcignU1NUQVRFX1BBVEhTUEVDJykgKyAiKl8iICsgc3NbJ3Rhc2snXSArICIudGd6KiIKICAgICBpZiBkLmdldFZhckZsYWcoJ2RvXyVzJyAlIHNzWyd0YXNrJ10sICd0YXNrJyk6CisgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfUEFUSF9DVVJSVEFTSyIsIHNzWyd0YXNrJ10pCisgICAgICAgIHNzdGF0ZXBrZ2ZpbGUgPSBkLmdldFZhcignU1NUQVRFX1BBVEhTUEVDJykKICAgICAgICAgYmIubm90ZSgiUmVtb3ZpbmcgJXMiICUgc3N0YXRlcGtnZmlsZSkKICAgICAgICAgb2UucGF0aC5yZW1vdmUoc3N0YXRlcGtnZmlsZSkKIApAQCAtNjEyLDEwICs2MzUsOSBAQAogICAgIHRtcGRpciA9IGQuZ2V0VmFyKCdUTVBESVInKQogCiAgICAgc3N0YXRlYnVpbGQgPSBkLmV4cGFuZCgiJHtXT1JLRElSfS9zc3RhdGUtYnVpbGQtJXMvIiAlIHNzWyd0YXNrJ10pCi0gICAgc3N0YXRlcGtnID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKSArICdfJysgc3NbJ3Rhc2snXSArICIudGd6IgorICAgIGQuc2V0VmFyKCJTU1RBVEVfQ1VSUlRBU0siLCBzc1sndGFzayddKQogICAgIGJiLnV0aWxzLnJlbW92ZShzc3RhdGVidWlsZCwgcmVjdXJzZT1UcnVlKQogICAgIGJiLnV0aWxzLm1rZGlyaGllcihzc3RhdGVidWlsZCkKLSAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHNzdGF0ZXBrZykpCiAgICAgZm9yIHN0YXRlIGluIHNzWydkaXJzJ106CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzdGF0ZVsxXSk6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNjQ4LDcgKzY3MCw2IEBACiAgICAgICAgIG9zLnJlbmFtZShwbGFpbiwgcGRpcikKIAogICAgIGQuc2V0VmFyKCdTU1RBVEVfQlVJTERESVInLCBzc3RhdGVidWlsZCkKLSAgICBkLnNldFZhcignU1NUQVRFX1BLRycsIHNzdGF0ZXBrZykKICAgICBkLnNldFZhcignU1NUQVRFX0lOU1RESVInLCBzc3RhdGVidWlsZCkKIAogICAgIGlmIGQuZ2V0VmFyKCdTU1RBVEVfU0tJUF9DUkVBVElPTicpID09ICcxJzoKQEAgLTY2NCw3ICs2ODUsMTIgQEAKICAgICAgICAgIyBBbGwgaG9va3Mgc2hvdWxkIHJ1biBpbiBTU1RBVEVfQlVJTERESVIuCiAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhmLCBkLCAoc3N0YXRlYnVpbGQsKSkKIAotICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzc3RhdGVwa2cgKyAiLnNpZ2luZm8iLCBkKQorICAgICMgU1NUQVRFX1BLRyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgc3N0YXRlX3JlcG9ydF91bmloYXNoCisgICAgc2lnaW5mbyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAiLnNpZ2luZm8iCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNpZ2luZm8pOgorICAgICAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc2lnaW5mbywgZCkKKyAgICBlbHNlOgorICAgICAgICBvcy51dGltZShzaWdpbmZvLCBOb25lKQogCiAgICAgcmV0dXJuCiAKQEAgLTc0OCwxOCArNzc0LDIwIEBACiAjIHNldCBhcyBTU1RBVEVfQlVJTERESVIuIFdpbGwgYmUgcnVuIGZyb20gd2l0aGluIFNTVEFURV9CVUlMRERJUi4KICMKIHNzdGF0ZV9jcmVhdGVfcGFja2FnZSAoKSB7Ci0JVEZJTEU9YG1rdGVtcCAke1NTVEFURV9QS0d9LlhYWFhYWFhYYAotCi0JIyBFeGl0IGVhcmx1IGlmIGl0IGFscmVhZHkgZXhpc3RzCisJIyBFeGl0IGVhcmx5IGlmIGl0IGFscmVhZHkgZXhpc3RzCiAJaWYgWyAtZSAke1NTVEFURV9QS0d9IF07IHRoZW4KKwkJdG91Y2ggJHtTU1RBVEVfUEtHfQogCQlyZXR1cm4KIAlmaQogCi0gICAgICAgICMgVXNlIHBpZ3ogaWYgYXZhaWxhYmxlCi0gICAgICAgIE9QVD0iLWN6UyIKLSAgICAgICAgaWYgWyAteCAiJChjb21tYW5kIC12IHBpZ3opIiBdOyB0aGVuCi0gICAgICAgICAgICBPUFQ9Ii1JIHBpZ3ogLWNTIgotICAgICAgICBmaQorCW1rZGlyIC1wIGBkaXJuYW1lICR7U1NUQVRFX1BLR31gCisJVEZJTEU9YG1rdGVtcCAke1NTVEFURV9QS0d9LlhYWFhYWFhYYAorCisJIyBVc2UgcGlneiBpZiBhdmFpbGFibGUKKwlPUFQ9Ii1jelMiCisJaWYgWyAteCAiJChjb21tYW5kIC12IHBpZ3opIiBdOyB0aGVuCisJCU9QVD0iLUkgcGlneiAtY1MiCisJZmkKIAogCSMgTmVlZCB0byBoYW5kbGUgZW1wdHkgZGlyZWN0b3JpZXMKIAlpZiBbICIkKGxzIC1BKSIgXTsgdGhlbgpAQCAtNzc2LDEwICs4MDQsMTMgQEAKIAljaG1vZCAwNjY0ICRURklMRQogCSMgU2tpcCBpZiBpdCB3YXMgYWxyZWFkeSBjcmVhdGVkIGJ5IHNvbWUgb3RoZXIgcHJvY2VzcwogCWlmIFsgISAtZSAke1NTVEFURV9QS0d9IF07IHRoZW4KLQkJbXYgLWYgJFRGSUxFICR7U1NUQVRFX1BLR30KKwkJIyBNb3ZlIGludG8gcGxhY2UgdXNpbmcgbG4gdG8gYXR0ZW1wdCBhbiBhdG9taWMgb3AuCisJCSMgQWJvcnQgaWYgaXQgYWxyZWFkeSBleGlzdHMKKwkJbG4gJFRGSUxFICR7U1NUQVRFX1BLR30gJiYgcm0gJFRGSUxFCiAJZWxzZQogCQlybSAkVEZJTEUKIAlmaQorCXRvdWNoICR7U1NUQVRFX1BLR30KIH0KIAogcHl0aG9uIHNzdGF0ZV9zaWduX3BhY2thZ2UgKCkgewpAQCAtODIxLDkgKzg1Miw2IEBACiBkZWYgc3N0YXRlX2NoZWNraGFzaGVzKHNxX2RhdGEsIGQsIHNpZ2luZm89RmFsc2UsIGN1cnJlbnRjb3VudD0wLCBzdW1tYXJ5PVRydWUsICoqa3dhcmdzKToKICAgICBmb3VuZCA9IHNldCgpCiAgICAgbWlzc2VkID0gc2V0KCkKLSAgICBleHRlbnNpb24gPSAiLnRneiIKLSAgICBpZiBzaWdpbmZvOgotICAgICAgICBleHRlbnNpb24gPSBleHRlbnNpb24gKyAiLnNpZ2luZm8iCiAKICAgICBkZWYgZ2V0aGFzaCh0YXNrKToKICAgICAgICAgcmV0dXJuIHNxX2RhdGFbJ3VuaWhhc2gnXVt0YXNrXQpAQCAtODUwLDcgKzg3OCw3IEBACiAKICAgICAgICAgc3BlYywgZXh0cmFwYXRoLCB0bmFtZSA9IGdldHBhdGhjb21wb25lbnRzKHRpZCwgZCkKIAotICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoIiR7U1NUQVRFX0RJUn0vIiArIGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArIGV4dGVuc2lvbikKKyAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKCIke1NTVEFURV9ESVJ9LyIgKyBleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBzaWdpbmZvLCBkKSkKIAogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzc3RhdGVmaWxlKToKICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IEZvdW5kIHZhbGlkIHNzdGF0ZSBmaWxlICVzIiAlIHNzdGF0ZWZpbGUpCkBAIC05MDYsMTkgKzkzNCwyMiBAQAogICAgICAgICAgICAgICAgIG1pc3NlZC5hZGQodGlkKQogICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTU3RhdGU6IFVuc3VjY2Vzc2Z1bCBmZXRjaCB0ZXN0IGZvciAlcyIgJSBzcmN1cmkpCiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MobXNnLCBsZW4odGFza2xpc3QpIC0gdGhyZWFkX3dvcmtlci50YXNrcy5xc2l6ZSgpKSwgZCkKKyAgICAgICAgICAgIGlmIGxlbih0YXNrbGlzdCkgPj0gbWluX3Rhc2tzOgorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKG1zZywgbGVuKHRhc2tsaXN0KSAtIHRocmVhZF93b3JrZXIudGFza3MucXNpemUoKSksIGQpCiAKICAgICAgICAgdGFza2xpc3QgPSBbXQorICAgICAgICBtaW5fdGFza3MgPSAxMDAKICAgICAgICAgZm9yIHRpZCBpbiBzcV9kYXRhWydoYXNoJ106CiAgICAgICAgICAgICBpZiB0aWQgaW4gZm91bmQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNwZWMsIGV4dHJhcGF0aCwgdG5hbWUgPSBnZXRwYXRoY29tcG9uZW50cyh0aWQsIGQpCi0gICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCBkKSArICJfIiArIHRuYW1lICsgZXh0ZW5zaW9uKQorICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgdG5hbWUsIHNpZ2luZm8sIGQpKQogICAgICAgICAgICAgdGFza2xpc3QuYXBwZW5kKCh0aWQsIHNzdGF0ZWZpbGUpKQogCiAgICAgICAgIGlmIHRhc2tsaXN0OgotICAgICAgICAgICAgbXNnID0gIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSIKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQobXNnLCBsZW4odGFza2xpc3QpKSwgZCkKKyAgICAgICAgICAgIGlmIGxlbih0YXNrbGlzdCkgPj0gbWluX3Rhc2tzOgorICAgICAgICAgICAgICAgIG1zZyA9ICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiCisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZChtc2csIGxlbih0YXNrbGlzdCkpLCBkKQogCiAgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiAgICAgICAgICAgICBucHJvYyA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksIGxlbih0YXNrbGlzdCkpCkBAIC05MzIsMjIgKzk2MywxOSBAQAogICAgICAgICAgICAgcG9vbC53YWl0X2NvbXBsZXRpb24oKQogICAgICAgICAgICAgYmIuZXZlbnQuZGlzYWJsZV90aHJlYWRsb2NrKCkKIAotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQobXNnKSwgZCkKLQotICAgICMgTGlrZWx5IGNoZWNraW5nIGFuIGluZGl2aWR1YWwgdGFzayBoYXNoIGFnYWluIGZvciBtdWx0aWNvbmZpZyBzaGFyaW5nIG9mIHNzdGF0ZSB0YXNrcyBzbyBza2lwIHJlcG9ydGluZwotICAgIGlmIGxlbihzcV9kYXRhWydoYXNoJ10pID09IDE6Ci0gICAgICAgIHJldHVybiBmb3VuZAorICAgICAgICAgICAgaWYgbGVuKHRhc2tsaXN0KSA+PSBtaW5fdGFza3M6CisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQobXNnKSwgZCkKIAogICAgIGluaGVyaXRsaXN0ID0gZC5nZXRWYXIoIklOSEVSSVQiKQogICAgIGlmICJ0b2FzdGVyIiBpbiBpbmhlcml0bGlzdDoKICAgICAgICAgZXZkYXRhID0geydtaXNzZWQnOiBbXSwgJ2ZvdW5kJzogW119OwogICAgICAgICBmb3IgdGlkIGluIG1pc3NlZDoKICAgICAgICAgICAgIHNwZWMsIGV4dHJhcGF0aCwgdG5hbWUgPSBnZXRwYXRoY29tcG9uZW50cyh0aWQsIGQpCi0gICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCBkKSArICJfIiArIHRuYW1lICsgIi50Z3oiKQorICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgdG5hbWUsIEZhbHNlLCBkKSkKICAgICAgICAgICAgIGV2ZGF0YVsnbWlzc2VkJ10uYXBwZW5kKChiYi5ydW5xdWV1ZS5mbl9mcm9tX3RpZCh0aWQpLCBiYi5ydW5xdWV1ZS50YXNrbmFtZV9mcm9tX3RpZCh0aWQpLCBnZXRoYXNoKHRpZCksIHNzdGF0ZWZpbGUgKSApCiAgICAgICAgIGZvciB0aWQgaW4gZm91bmQ6CiAgICAgICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQotICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArICIudGd6IikKKyAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBGYWxzZSwgZCkpCiAgICAgICAgICAgICBldmRhdGFbJ2ZvdW5kJ10uYXBwZW5kKChiYi5ydW5xdWV1ZS5mbl9mcm9tX3RpZCh0aWQpLCBiYi5ydW5xdWV1ZS50YXNrbmFtZV9mcm9tX3RpZCh0aWQpLCBnZXRoYXNoKHRpZCksIHNzdGF0ZWZpbGUgKSApCiAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiTWlzc2VkU3N0YXRlIiwgZXZkYXRhKSwgZCkKIApAQCAtMTA4MSwxNyArMTEwOSwyMCBAQAogc3N0YXRlX2V2ZW50aGFuZGxlcltldmVudG1hc2tdID0gImJiLmJ1aWxkLlRhc2tTdWNjZWVkZWQiCiBweXRob24gc3N0YXRlX2V2ZW50aGFuZGxlcigpIHsKICAgICBkID0gZS5kYXRhCi0gICAgIyBXaGVuIHdlIHdyaXRlIGFuIHNzdGF0ZSBwYWNrYWdlIHdlIHJld3JpdGUgdGhlIFNTVEFURV9QS0cKLSAgICBzcGtnID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKQotICAgIGlmIG5vdCBzcGtnLmVuZHN3aXRoKCIudGd6Iik6CisgICAgd3JpdHRlbnNzdGF0ZSA9IGQuZ2V0VmFyKCdTU1RBVEVfQ1VSUlRBU0snKQorICAgIGlmIG5vdCB3cml0dGVuc3N0YXRlOgogICAgICAgICB0YXNrbmFtZSA9IGQuZ2V0VmFyKCJCQl9SVU5UQVNLIilbMzpdCiAgICAgICAgIHNwZWMgPSBkLmdldFZhcignU1NUQVRFX1BLR1NQRUMnKQogICAgICAgICBzd3NwZWMgPSBkLmdldFZhcignU1NUQVRFX1NXU1BFQycpCiAgICAgICAgIGlmIHRhc2tuYW1lIGluIFsiZmV0Y2giLCAidW5wYWNrIiwgInBhdGNoIiwgInBvcHVsYXRlX2xpYyIsICJwcmVjb25maWd1cmUiXSBhbmQgc3dzcGVjOgogICAgICAgICAgICAgZC5zZXRWYXIoIlNTVEFURV9QS0dTUEVDIiwgIiR7U1NUQVRFX1NXU1BFQ30iKQogICAgICAgICAgICAgZC5zZXRWYXIoIlNTVEFURV9FWFRSQVBBVEgiLCAiIikKLSAgICAgICAgc3N0YXRlcGtnID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKQotICAgICAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc3N0YXRlcGtnICsgJ18nICsgdGFza25hbWUgKyAiLnRneiIgIi5zaWdpbmZvIiwgZCkKKyAgICAgICAgZC5zZXRWYXIoIlNTVEFURV9DVVJSVEFTSyIsIHRhc2tuYW1lKQorICAgICAgICBzaWdpbmZvID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKSArICIuc2lnaW5mbyIKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNpZ2luZm8pOgorICAgICAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNpZ2luZm8sIGQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy51dGltZShzaWdpbmZvLCBOb25lKQogfQogCiBTU1RBVEVfUFJVTkVfT0JTT0xFVEVXT1JLRElSID89ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCmluZGV4IGNjYTBiN2UuLjViMDRmODggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAke2RhdGFkaXJ9L2d0ay1kb2MvaHRtbCBcCiAgICAgJHtkYXRhZGlyfS9sb2NhbGUgXAogICAgICR7ZGF0YWRpcn0vcGl4bWFwcyBcCi0gICAgJHtsaWJkaXJ9LyR7UE59L3B0ZXN0IFwKKyAgICAke2xpYmRpcn0vJHtCUE59L3B0ZXN0IFwKICIKIAogc3lzcm9vdF9zdGFnZV9kaXIoKSB7CkBAIC03NSw4ICs3NSw4IEBACiAKICAgICBkc3RkaXIgPSBkLmdldFZhcignU1lTUk9PVF9ERVNURElSJykKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGQuZ2V0VmFyKCJsaWJkaXIiKSkKLSAgICBiYXNlX2xpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBkLmdldFZhcigiYmFzZV9saWJkaXIiKSkKKyAgICBsaWJkaXIgPSBkLmdldFZhcigibGliZGlyIikKKyAgICBiYXNlX2xpYmRpciA9IGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpCiAgICAgcWFfYWxyZWFkeV9zdHJpcHBlZCA9ICdhbHJlYWR5LXN0cmlwcGVkJyBpbiAoZC5nZXRWYXIoJ0lOU0FORV9TS0lQXycgKyBwbikgb3IgIiIpLnNwbGl0KCkKICAgICBzdHJpcF9jbWQgPSBkLmdldFZhcigiU1RSSVAiKQogCkBAIC0yNzcsMTEgKzI3NywxMyBAQAogCiAgICAgc3RhcnQgPSBOb25lCiAgICAgY29uZmlndXJlZGVwcyA9IFtdCisgICAgb3dudGFza2RlcHMgPSBbXQogICAgIGZvciBkZXAgaW4gdGFza2RlcGRhdGE6CiAgICAgICAgIGRhdGEgPSB0YXNrZGVwZGF0YVtkZXBdCiAgICAgICAgIGlmIGRhdGFbMV0gPT0gbXl0YXNrbmFtZSBhbmQgZGF0YVswXSA9PSBwbjoKICAgICAgICAgICAgIHN0YXJ0ID0gZGVwCi0gICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmIGRhdGFbMF0gPT0gcG46CisgICAgICAgICAgICBvd250YXNrZGVwcy5hcHBlbmQoZGF0YVsxXSkKICAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgICBiYi5mYXRhbCgiQ291bGRuJ3QgZmluZCBvdXJzZWxmIGluIEJCX1RBU0tERVBEQVRBPyIpCiAKQEAgLTQyNyw3ICs0MjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyBXYXMgbGlrZWx5IGFscmVhZHkgdW5pbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbC5hcHBlbmQobCkKLSAgICAgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBub3Qgb3RoZXIgdGFzayBuZWVkcyB0aGlzIGRlcGVuZGVuY3kuIFdlIGhvbGQgdGhlIHN5c3Jvb3QKKyAgICAgICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBubyBvdGhlciB0YXNrIG5lZWRzIHRoaXMgZGVwZW5kZW5jeS4gV2UgaG9sZCB0aGUgc3lzcm9vdAogICAgICAgICAjIGxvY2sgc28gd2UgY2Egc2VhcmNoIHRoZSBpbmRleGVzIHRvIGNoZWNrCiAgICAgICAgIGlmIHBvdGVudGlhbDoKICAgICAgICAgICAgIGZvciBpIGluIGdsb2IuZ2xvYihkZXBkaXIgKyAiL2luZGV4LioiKToKQEAgLTQzNSw2ICs0MzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oaSwgInIiKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICBmb3IgbCBpbiBmOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbC5zdGFydHN3aXRoKCJUYXNrRGVwczoiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2dGFza3MgPSBsLnNwbGl0KClbMTpdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbXl0YXNrbmFtZSBpbiBwcmV2dGFza3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UncmUgYSBkZXBlbmRlbmN5IG9mIHRoaXMgdGFzayBzbyB3ZSBjYW4gY2xlYXIgaXRlbXMgb3V0IHRoZSBzeXNyb290CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICBsID0gbC5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsIGluIHBvdGVudGlhbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWwucmVtb3ZlKGwpCkBAIC00NzAsNiArNDc3LDcgQEAKICAgICAgICAgZWxpZiBvcy5wYXRoLmxleGlzdHMoZGVwZGlyICsgIi8iICsgYyk6CiAgICAgICAgICAgICBvcy51bmxpbmsoZGVwZGlyICsgIi8iICsgYykKIAorICAgIGJpbmZpbGVzID0ge30KICAgICAjIE5vdyBoYW5kbGUgaW5zdGFsbHMKICAgICBmb3IgZGVwIGluIGNvbmZpZ3VyZWRlcHM6CiAgICAgICAgIGMgPSBzZXRzY2VuZWRlcHNbZGVwXVswXQpAQCAtNTYyLDcgKzU3MCwxNiBAQAogICAgICAgICAgICAgICAgICAgICBpZiBsLmVuZHN3aXRoKCIvIik6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlkaXIobCwgdGFyZ2V0ZGlyLCBkZXN0LCBzZWVuZGlycykKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIHN0YWdpbmdfY29weWZpbGUobCwgdGFyZ2V0ZGlyLCBkZXN0LCBwb3N0aW5zdHMsIHNlZW5kaXJzKQorICAgICAgICAgICAgICAgICAgICBpZiAiL2Jpbi8iIGluIGwgb3IgIi9zYmluLyIgaW4gbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmZXIgLypiaW4vKiBmaWxlcyB1bnRpbCBsYXN0IGluIGNhc2UgdGhleSBuZWVkIGxpYnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpbmZpbGVzW2xdID0gKHRhcmdldGRpciwgZGVzdCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdpbmdfY29weWZpbGUobCwgdGFyZ2V0ZGlyLCBkZXN0LCBwb3N0aW5zdHMsIHNlZW5kaXJzKQorCisgICAgIyBIYW5kbGUgZGVmZXJyZWQgYmluZmlsZXMKKyAgICBmb3IgbCBpbiBiaW5maWxlczoKKyAgICAgICAgKHRhcmdldGRpciwgZGVzdCkgPSBiaW5maWxlc1tsXQorICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKIAogICAgIGJiLm5vdGUoIkluc3RhbGxlZCBpbnRvIHN5c3Jvb3Q6ICVzIiAlIHN0cihtc2dfYWRkaW5nKSkKICAgICBiYi5ub3RlKCJTa2lwcGluZyBhcyBhbHJlYWR5IGV4aXN0cyBpbiBzeXNyb290OiAlcyIgJSBzdHIobXNnX2V4aXN0cykpCkBAIC01NzgsNiArNTk1LDcgQEAKICAgICAgICAgb3Muc3ltbGluayhtYW5pZmVzdHNbZGVwXSwgZGVwZGlyICsgIi8iICsgYyArICIuY29tcGxldGUiKQogCiAgICAgd2l0aCBvcGVuKHRhc2tpbmRleCwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKCJUYXNrRGVwczogIiArICIgIi5qb2luKG93bnRhc2tkZXBzKSArICJcbiIpCiAgICAgICAgIGZvciBsIGluIHNvcnRlZChpbnN0YWxsZWQpOgogICAgICAgICAgICAgZi53cml0ZShsICsgIlxuIikKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwppbmRleCA4NDRlZDg3Li4wMGYwYzI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwpAQCAtMzEsOSArMzEsMjEgQEAKICMgVEVTVF9MT0dfRElSIGNvbnRhaW5zIGEgY29tbWFuZCBzc2ggbG9nIGFuZCBtYXkgY29udGFpbiBpbmZyb21hdGlvbiBhYm91dCB3aGF0IGNvbW1hbmQgaXMgcnVubmluZywgb3V0cHV0IGFuZCByZXR1cm4gY29kZXMgYW5kIGZvciBxZW11IGEgYm9vdCBsb2cgdGlsbCBsb2dpbi4KICMgQm9vdGluZyBpcyBoYW5kbGVkIGJ5IHRoaXMgY2xhc3MsIGFuZCBpdCdzIG5vdCBhIHRlc3QgaW4gaXRzZWxmLgogIyBURVNUX1FFTVVCT09UX1RJTUVPVVQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0aGUgbGF1bmNoIGNvZGUgd2lsbCB3YWl0IGZvciB0aGUgbG9naW4gcHJvbXB0LgorIyBURVNUX09WRVJBTExfVElNRU9VVCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoZSB0ZXN0cyB3aWxsIGJlIGFsbG93ZWQgdG8gcnVuIChkZWZhdWx0cyB0byBubyBsaW1pdCkuCiAjIFRFU1RfUUVNVVBBUkFNUyBjYW4gYmUgdXNlZCB0byBwYXNzIGV4dHJhIHBhcmFtZXRlcnMgdG8gcWVtdSwgZS5nLiAiLW0gMTAyNCIgZm9yIHNldHRpbmcgdGhlIGFtb3VudCBvZiByYW0gdG8gMSBHQi4KICMgVEVTVF9SVU5RRU1VUEFSQU1TIGNhbiBiZSB1c2VkIHRvIHBhc3MgZXh0cmEgcGFyYW1ldGVycyB0byBydW5xZW11LCBlLmcuICJnbCIgdG8gZW5hYmxlIE9wZW5HTCBhY2NlbGVyYXRpb24uCiAKKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgY2VydGFpbiBwYXR0ZXJucyB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHRhcmdldCB3aGVuIGJvb3RpbmcsCisjIGlmIGEgcGF0dGVybiBpcyBub3Qgc3BlY2lmaWNhbGx5IHByZXNlbnQgb24gdGhpcyB2YXJpYWJsZSBhIGRlZmF1bHQgd2lsbCBiZSB1c2VkIHdoZW4gYm9vdGluZyB0aGUgdGFyZ2V0LgorIyBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1s8ZmxhZz5dIG92ZXJyaWRlcyB0aGUgcGF0dGVybiB1c2VkIGZvciB0aGF0IHNwZWNpZmljIGZsYWcsIHdoZXJlIGZsYWcgY29tZXMgZnJvbSBhIGxpc3Qgb2YgYWNjZXB0ZWQgZmxhZ3MKKyMgZS5nLiBub3JtYWxseSB0aGUgc3lzdGVtIGJvb3RzIGFuZCB3YWl0cyBmb3IgYSBsb2dpbiBwcm9tcHQgKGxvZ2luOiksIGFmdGVyIHRoYXQgaXQgc2VuZHMgdGhlIGNvbW1hbmQ6ICJyb290XG4iIHRvIGxvZyBhcyB0aGUgcm9vdCB1c2VyCisjIGlmIHdlIHdhbnRlZCB0byBsb2cgaW4gYXMgdGhlIGh5cG90aGV0aWNhbCAid2Vic2VydmVyIiB1c2VyIGZvciBleGFtcGxlIHdlIGNvdWxkIHNldCB0aGUgZm9sbG93aW5nOgorIyBURVNUSU1BR0VfQk9PVF9QQVRURVJOUyA9ICJzZW5kX2xvZ2luX3VzZXIgc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCIKKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbc2VuZF9sb2dpbl91c2VyXSA9ICJ3ZWJzZXJ2ZXJcbiIKKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZF0gPSAid2Vic2VydmVyQFthLXpBLVowLTlcLV0rOn4jIgorIyBUaGUgYWNjZXB0ZWQgZmxhZ3MgYXJlIHRoZSBmb2xsb3dpbmc6IHNlYXJjaF9yZWFjaGVkX3Byb21wdCwgc2VuZF9sb2dpbl91c2VyLCBzZWFyY2hfbG9naW5fc3VjY2VlZGVkLCBzZWFyY2hfY21kX2ZpbmlzaGVkLgorIyBUaGV5IGFyZSBwcmVmaXhlZCB3aXRoIGVpdGhlciBzZWFyY2gvc2VuZCwgdG8gZGlmZmVyZW50aWF0ZSBpZiB0aGUgcGF0dGVybiBpcyBtZWFudCB0byBiZSBzZW50IG9yIHNlYXJjaGVkIHRvL2Zyb20gdGhlIHRhcmdldCB0ZXJtaW5hbAorCiBURVNUX0xPR19ESVIgPz0gIiR7V09SS0RJUn0vdGVzdGltYWdlIgogCiBURVNUX0VYUE9SVF9ESVIgPz0gIiR7VE1QRElSfS90ZXN0aW1hZ2UvJHtQTn0iCkBAIC00Niw3ICs1OCw3IEBACiAgICAgcGluZyBkYXRlIGRmIHNzaCBzY3AgcHl0aG9uIHBlcmwgZ2kgcHRlc3QgcGFyc2Vsb2dzIFwKICAgICBsb2dyb3RhdGUgY29ubm1hbiBzeXN0ZW1kIG9lX3N5c2xvZyBwYW0gc3RhcCBsZGQgeG9yZyBcCiAgICAga2VybmVsbW9kdWxlIGdjYyBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCi0gICAgZG5mIHJwbSBvcGtnIGFwdCIKKyAgICBkbmYgcnBtIG9wa2cgYXB0IHdlc3RvbiIKIAogREVGQVVMVF9URVNUX1NVSVRFUyA9ICIke0JBU0lDVEVTVFNVSVRFfSIKIApAQCAtNjQsMTAgKzc2LDEzIEBACiBURVNUX1NVSVRFUyA/PSAiJHtERUZBVUxUX1RFU1RfU1VJVEVTfSIKIAogVEVTVF9RRU1VQk9PVF9USU1FT1VUID89ICIxMDAwIgorVEVTVF9PVkVSQUxMX1RJTUVPVVQgPz0gIiIKIFRFU1RfVEFSR0VUID89ICJxZW11IgogVEVTVF9RRU1VUEFSQU1TID89ICIiCiBURVNUX1JVTlFFTVVQQVJBTVMgPz0gIiIKIAorVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMgPz0gIiIKKwogVEVTVElNQUdFREVQRU5EUyA9ICIiCiBURVNUSU1BR0VERVBFTkRTX2FwcGVuZF9xZW11YWxsID0gIiBxZW11LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHFlbXUtaGVscGVyLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHFlbXUtaGVscGVyLW5hdGl2ZTpkb19hZGR0b19yZWNpcGVfc3lzcm9vdCIKIFRFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcGlvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKQEAgLTE1MCw2ICsxNjUsMjkgQEAKIGRlZiBnZXRfdGVzdGltYWdlX3Jlc3VsdF9pZChjb25maWd1cmF0aW9uKToKICAgICByZXR1cm4gJyVzXyVzXyVzXyVzJyAlIChjb25maWd1cmF0aW9uWydURVNUX1RZUEUnXSwgY29uZmlndXJhdGlvblsnSU1BR0VfQkFTRU5BTUUnXSwgY29uZmlndXJhdGlvblsnTUFDSElORSddLCBjb25maWd1cmF0aW9uWydTVEFSVFRJTUUnXSkKIAorZGVmIGdldF90ZXN0aW1hZ2VfYm9vdF9wYXR0ZXJucyhkKToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorICAgIGJvb3RfcGF0dGVybnMgPSBkZWZhdWx0ZGljdChzdHIpCisgICAgIyBPbmx5IGFjY2VwdCBjZXJ0YWluIHZhbHVlcworICAgIGFjY2VwdGVkX3BhdHRlcm5zID0gWydzZWFyY2hfcmVhY2hlZF9wcm9tcHQnLCAnc2VuZF9sb2dpbl91c2VyJywgJ3NlYXJjaF9sb2dpbl9zdWNjZWVkZWQnLCAnc2VhcmNoX2NtZF9maW5pc2hlZCddCisgICAgIyBOb3QgYWxsIHBhdHRlcm5zIG5lZWQgdG8gYmUgb3ZlcnJpZGVuLCBlLmcuIHBlcmhhcHMgd2Ugb25seSB3YW50IHRvIGNoYW5nZSB0aGUgdXNlcgorICAgIGJvb3RfcGF0dGVybnNfZmxhZ3MgPSBkLmdldFZhckZsYWdzKCdURVNUSU1BR0VfQk9PVF9QQVRURVJOUycpIG9yIHt9CisgICAgaWYgYm9vdF9wYXR0ZXJuc19mbGFnczoKKyAgICAgICAgcGF0dGVybnNfc2V0ID0gW3AgZm9yIHAgaW4gYm9vdF9wYXR0ZXJuc19mbGFncy5pdGVtcygpIGlmIHBbMF0gaW4gZC5nZXRWYXIoJ1RFU1RJTUFHRV9CT09UX1BBVFRFUk5TJykuc3BsaXQoKV0KKyAgICAgICAgZm9yIGZsYWcsIGZsYWd2YWwgaW4gcGF0dGVybnNfc2V0OgorICAgICAgICAgICAgICAgIGlmIGZsYWcgbm90IGluIGFjY2VwdGVkX3BhdHRlcm5zOgorICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgnVGVzdGltYWdlOiBUaGUgb25seSBhY2NlcHRlZCBib290IHBhdHRlcm5zIGFyZTogc2VhcmNoX3JlYWNoZWRfcHJvbXB0LHNlbmRfbG9naW5fdXNlciwgXAorICAgICAgICAgICAgICAgICAgICBzZWFyY2hfbG9naW5fc3VjY2VlZGVkLHNlYXJjaF9jbWRfZmluaXNoZWRcbiBNYWtlIHN1cmUgeW91ciBURVNUSU1BR0VfQk9PVF9QQVRURVJOUz0lcyBcCisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGFuIGFjY2VwdGVkIGZsYWcuJyAlIGQuZ2V0VmFyKCdURVNUSU1BR0VfQk9PVF9QQVRURVJOUycpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAjIFdlIGtub3cgYm9vdCBwcm9tcHQgaXMgc2VhcmNoZWQgdGhyb3VnaCBpbiBiaW5hcnkgZm9ybWF0LCBvdGhlcnMgbWlnaHQgYmUgZXhwcmVzc2lvbnMKKyAgICAgICAgICAgICAgICBpZiBmbGFnID09ICdzZWFyY2hfcmVhY2hlZF9wcm9tcHQnOgorICAgICAgICAgICAgICAgICAgICBib290X3BhdHRlcm5zW2ZsYWddID0gZmxhZ3ZhbC5lbmNvZGUoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGJvb3RfcGF0dGVybnNbZmxhZ10gPSBmbGFndmFsLmVuY29kZSgpLmRlY29kZSgndW5pY29kZS1lc2NhcGUnKQorICAgIHJldHVybiBib290X3BhdHRlcm5zCisKKwogZGVmIHRlc3RpbWFnZV9tYWluKGQpOgogICAgIGltcG9ydCBvcwogICAgIGltcG9ydCBqc29uCkBAIC0xNjgsNyArMjA2LDExIEBACiAgICAgICAgICIiIgogICAgICAgICBDYXRjaCBTSUdURVJNIGZyb20gd29ya2VyIGluIG9yZGVyIHRvIHN0b3AgcWVtdS4KICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHSU5UKQorCisgICAgZGVmIGhhbmRsZV90ZXN0X3RpbWVvdXQodGltZW91dCk6CisgICAgICAgIGJiLndhcm4oIkdsb2JhbCB0ZXN0IHRpbWVvdXQgcmVhY2hlZCAoJXMgc2Vjb25kcyksIHN0b3BwaW5nIHRoZSB0ZXN0cy4iICUodGltZW91dCkpCisgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdJTlQpCiAKICAgICB0ZXN0aW1hZ2Vfc2FuaXR5KGQpCiAKQEAgLTIwNyw3ICsyNDksNyBAQAogICAgIGlmIGQuZ2V0VmFyKCJURVNUX1RBUkdFVCIpID09ICJxZW11IjoKICAgICAgICAgZnN0eXBlcyA9IFtmcyBmb3IgZnMgaW4gZnN0eXBlcyBpZiBmcyBpbiBzdXBwb3J0ZWRfZnN0eXBlc10KICAgICAgICAgaWYgbm90IGZzdHlwZXM6Ci0gICAgICAgICAgICBiYi5mYXRhbCgnVW5zdXBwb3J0ZWQgaW1hZ2UgdHlwZSBidWlsdC4gQWRkIGEgY29tcHRpYmxlIGltYWdlIHRvICcKKyAgICAgICAgICAgIGJiLmZhdGFsKCdVbnN1cHBvcnRlZCBpbWFnZSB0eXBlIGJ1aWx0LiBBZGQgYSBjb21wYXRpYmxlIGltYWdlIHRvICcKICAgICAgICAgICAgICAgICAgICAgICdJTUFHRV9GU1RZUEVTLiBTdXBwb3J0ZWQgdHlwZXM6ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc3VwcG9ydGVkX2ZzdHlwZXMpKQogICAgIHFmc3R5cGUgPSBmc3R5cGVzWzBdCkBAIC0yMzksMTEgKzI4MSwxNCBAQAogICAgICMgR2V0IHVzZV9rdm0KICAgICBrdm0gPSBvZS50eXBlcy5xZW11X3VzZV9rdm0oZC5nZXRWYXIoJ1FFTVVfVVNFX0tWTScpLCBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSkKIAorICAgICMgR2V0IE9WTUYKKyAgICBvdm1mID0gZC5nZXRWYXIoIlFFTVVfVVNFX09WTUYiKQorCiAgICAgc2xpcnAgPSBGYWxzZQogICAgIGlmIGQuZ2V0VmFyKCJRRU1VX1VTRV9TTElSUCIpOgogICAgICAgICBzbGlycCA9IFRydWUKIAotICAgICMgVE9ETzogV2UgdXNlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW4gb2YgcWVtdSBydW5uZXIgYmVjYXVzZSBvZgorICAgICMgVE9ETzogV2UgdXNlIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHFlbXUgcnVubmVyIGJlY2F1c2Ugb2YKICAgICAjIHRpbWUgY29uc3RyYWlucywgcWVtdSBydW5uZXIgcmVhbGx5IG5lZWRzIGEgcmVmYWN0b3IgdG9vLgogICAgIHRhcmdldF9rd2FyZ3MgPSB7ICdtYWNoaW5lJyAgICAgOiBtYWNoaW5lLAogICAgICAgICAgICAgICAgICAgICAgICdyb290ZnMnICAgICAgOiByb290ZnMsCkBAIC0yNTYsOCArMzAxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgJ2t2bScgICAgICAgICA6IGt2bSwKICAgICAgICAgICAgICAgICAgICAgICAnc2xpcnAnICAgICAgIDogc2xpcnAsCiAgICAgICAgICAgICAgICAgICAgICAgJ2R1bXBfZGlyJyAgICA6IGQuZ2V0VmFyKCJURVNUSU1BR0VfRFVNUF9ESVIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAnc2VyaWFsX3BvcnRzJzogbGVuKGQuZ2V0VmFyKCJTRVJJQUxfQ09OU09MRVMiKS5zcGxpdCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAnb3ZtZicgICAgICAgIDogb3ZtZiwKICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgaWYgZC5nZXRWYXIoIlRFU1RJTUFHRV9CT09UX1BBVFRFUk5TIik6CisgICAgICAgIHRhcmdldF9rd2FyZ3NbJ2Jvb3RfcGF0dGVybnMnXSA9IGdldF90ZXN0aW1hZ2VfYm9vdF9wYXR0ZXJucyhkKQorCiAgICAgIyBUT0RPOiBDdXJyZW50bHkgQkJQQVRIIGlzIG5lZWRlZCBmb3IgY3VzdG9tIGxvYWRpbmcgb2YgdGFyZ2V0cy4KICAgICAjIEl0IHdvdWxkIGJlIGJldHRlciB0byBmaW5kIHRoZXNlIG1vZHVsZXMgdXNpbmcgaW5zdHJvc3BlY3Rpb24uCiAgICAgdGFyZ2V0X2t3YXJnc1sndGFyZ2V0X21vZHVsZXNfcGF0aCddID0gZC5nZXRWYXIoJ0JCUEFUSCcpCkBAIC0zMTksMTAgKzM2OSwxNSBAQAogICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgcnVucWVtdSBlbmRzIHVuZXhwZWN0ZWRseQogICAgICAgICAjIG9yIGlmIHRoZSB3b3JrZXIgc2VuZCB1cyBhIFNJR1RFUk0KICAgICAgICAgdGMudGFyZ2V0LnN0YXJ0KHBhcmFtcz1kLmdldFZhcigiVEVTVF9RRU1VUEFSQU1TIiksIHJ1bnFlbXVwYXJhbXM9ZC5nZXRWYXIoIlRFU1RfUlVOUUVNVVBBUkFNUyIpKQorICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRocmVhZGluZy5UaW1lcihpbnQoZC5nZXRWYXIoIlRFU1RfT1ZFUkFMTF9USU1FT1VUIikpLCBoYW5kbGVfdGVzdF90aW1lb3V0LCAoaW50KGQuZ2V0VmFyKCJURVNUX09WRVJBTExfVElNRU9VVCIpKSwpKS5zdGFydCgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcwogICAgICAgICByZXN1bHRzID0gdGMucnVuVGVzdHMoKQotICAgIGV4Y2VwdCAoUnVudGltZUVycm9yLCBCbG9ja2luZ0lPRXJyb3IpIGFzIGVycjoKLSAgICAgICAgaWYgaXNpbnN0YW5jZShlcnIsIFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICBiYi5lcnJvcigndGVzdGltYWdlIHJlY2VpdmVkIFNJR1RFUk0sIHNodXR0aW5nIGRvd24uLi4nKQorICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIEJsb2NraW5nSU9FcnJvcikgYXMgZXJyOgorICAgICAgICBpZiBpc2luc3RhbmNlKGVyciwgS2V5Ym9hcmRJbnRlcnJ1cHQpOgorICAgICAgICAgICAgYmIuZXJyb3IoJ3Rlc3RpbWFnZSBpbnRlcnJ1cHRlZCwgc2h1dHRpbmcgZG93bi4uLicpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBiYi5lcnJvcigncnVucWVtdSBmYWlsZWQsIHNodXR0aW5nIGRvd24uLi4nKQogICAgICAgICBpZiByZXN1bHRzOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdGV4aW5mby5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGV4aW5mby5iYmNsYXNzCmluZGV4IDZiMGRlZjAuLmY0NmJhY2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXhpbmZvLmJiY2xhc3MKQEAgLTYsMTMgKzYsMTMgQEAKICMgVGV4aW5mbyByZWNpcGUsIHlvdSBjYW4gcmVtb3ZlIHRleGluZm8tbmF0aXZlIGZyb20gQVNTVU1FX1BST1ZJREVEIGFuZAogIyBtYWtlaW5mbyBmcm9tIFNBTklUWV9SRVFVSVJFRF9VVElMSVRJRVMuCiAKLVRFWERFUCA9ICJ0ZXhpbmZvLW5hdGl2ZSIKK1RFWERFUCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ3RleGluZm8tcmVwbGFjZW1lbnQtbmF0aXZlJywgJ3RleGluZm8tZHVtbXktbmF0aXZlJywgZCl9IgogVEVYREVQX2NsYXNzLW5hdGl2ZSA9ICJ0ZXhpbmZvLWR1bW15LW5hdGl2ZSIKIFRFWERFUF9jbGFzcy1jcm9zcyA9ICJ0ZXhpbmZvLWR1bW15LW5hdGl2ZSIKK1RFWERFUF9jbGFzcy1jcm9zc3NkayA9ICJ0ZXhpbmZvLWR1bW15LW5hdGl2ZSIKK1RFWERFUF9jbGFzcy1jcm9zcy1jYW5hZGlhbiA9ICJ0ZXhpbmZvLWR1bW15LW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kID0gIiAke1RFWERFUH0iCi1QQVRIX3ByZXBlbmRfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS90ZXhpbmZvLWR1bW15LW5hdGl2ZToiCi1QQVRIX3ByZXBlbmRfY2xhc3MtY3Jvc3MgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3RleGluZm8tZHVtbXktbmF0aXZlOiIKIAogIyBsaWJ0b29sLWNyb3NzIGRvZXNuJ3QgaW5oZXJpdCBjcm9zcwogVEVYREVQX3BuLWxpYnRvb2wtY3Jvc3MgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCi1QQVRIX3ByZXBlbmRfcG4tbGlidG9vbC1jcm9zcyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vdGV4aW5mby1kdW1teS1uYXRpdmU6IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MKaW5kZXggNmNlZjBiOC4uOTUxOGRkZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcwpAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgICAgICAgICAgcGFzcyAgICAjIGlnbm9yZSBsaW5lcyB3aXRob3V0IHZhbGlkIGtleTogdmFsdWUgcGFpcnMKICAgICByZXR1cm4gcGtnZGF0YQogCi1weXRob24gdG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhKCkgeworZGVmIF90b2FzdGVyX2R1bXBkYXRhKHBrZ2RhdGFkaXIsIGQpOgogICAgICIiIgogICAgIER1bXBzIHRoZSBkYXRhIGFib3V0IHRoZSBwYWNrYWdlcyBjcmVhdGVkIGJ5IGEgcmVjaXBlCiAgICAgIiIiCkBAIC0xMjIsMTYgKzEyMiwyNCBAQAogICAgIGlmIG5vdCBkLmdldFZhcignUEFDS0FHRVMnKToKICAgICAgICAgcmV0dXJuCiAKLSAgICBwa2dkYXRhZGlyID0gZC5nZXRWYXIoJ1BLR0RFU1RXT1JLJykKICAgICBscGtnZGF0YSA9IHt9CiAgICAgZGF0YWRpciA9IG9zLnBhdGguam9pbihwa2dkYXRhZGlyLCAncnVudGltZScpCiAKICAgICAjIHNjYW4gYW5kIHNlbmQgZGF0YSBmb3IgZWFjaCBnZW5lcmF0ZWQgcGFja2FnZQotICAgIGZvciBkYXRhZmlsZSBpbiBvcy5saXN0ZGlyKGRhdGFkaXIpOgotICAgICAgICBpZiBub3QgZGF0YWZpbGUuZW5kc3dpdGgoJy5wYWNrYWdlZCcpOgotICAgICAgICAgICAgbHBrZ2RhdGEgPSBfdG9hc3Rlcl9sb2FkX3BrZ2RhdGFmaWxlKGRhdGFkaXIsIGRhdGFmaWxlKQotICAgICAgICAgICAgIyBGaXJlIGFuIGV2ZW50IGNvbnRhaW5pbmcgdGhlIHBrZyBkYXRhCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIlNpbmdsZVBhY2thZ2VJbmZvIiwgbHBrZ2RhdGEpLCBkKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKGRhdGFkaXIpOgorICAgICAgICBmb3IgZGF0YWZpbGUgaW4gb3MubGlzdGRpcihkYXRhZGlyKToKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhZmlsZS5lbmRzd2l0aCgnLnBhY2thZ2VkJyk6CisgICAgICAgICAgICAgICAgbHBrZ2RhdGEgPSBfdG9hc3Rlcl9sb2FkX3BrZ2RhdGFmaWxlKGRhdGFkaXIsIGRhdGFmaWxlKQorICAgICAgICAgICAgICAgICMgRmlyZSBhbiBldmVudCBjb250YWluaW5nIHRoZSBwa2cgZGF0YQorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiU2luZ2xlUGFja2FnZUluZm8iLCBscGtnZGF0YSksIGQpCisKK3B5dGhvbiB0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEoKSB7CisgICAgX3RvYXN0ZXJfZHVtcGRhdGEoZC5nZXRWYXIoJ1BLR0RFU1RXT1JLJyksIGQpCit9CisKK3B5dGhvbiB0b2FzdGVyX3BhY2thZ2VkYXRhX2R1bXBkYXRhKCkgeworICAgICMgVGhpcyBwYXRoIG5lZWRzIHRvIG1hdGNoIGRvX3BhY2thZ2VkYXRhW3NzdGF0ZS1pbnB1dGRpcnNdCisgICAgX3RvYXN0ZXJfZHVtcGRhdGEob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdXT1JLRElSJyksICdwa2dkYXRhLXBkYXRhLWlucHV0JyksIGQpCiB9CiAKICMgMi4gRHVtcCBvdXRwdXQgaW1hZ2UgZmlsZXMgaW5mb3JtYXRpb24KQEAgLTM2Niw4ICszNzQsOCBAQAogYWRkaGFuZGxlciB0b2FzdGVyX2FydGlmYWN0cwogdG9hc3Rlcl9hcnRpZmFjdHNbZXZlbnRtYXNrXSA9ICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTa2lwcGVkIGJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza0NvbXBsZXRlZCIKIAotZG9fcGFja2FnZWRhdGFfc2V0c2NlbmVbcG9zdGZ1bmNzXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKLWRvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKK2RvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfcGFja2FnZWRhdGFfZHVtcGRhdGEgIgorZG9fcGFja2FnZWRhdGFfc2V0c2NlbmVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ0b2FzdGVyX3BhY2thZ2VkYXRhX2R1bXBkYXRhICIKIAogZG9fcGFja2FnZVtwb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgogZG9fcGFja2FnZVt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCmluZGV4IDlmODY0NWEuLjcwNzk5YmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCkBAIC0xLDQgKzEsNCBAQAotVU5JTkFUSVZFX0xPQURFUiA/PSAiJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZS8ke0JVSUxEX0FSQ0h9LWxpbnV4L2xpYi8ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICd4ODZfNjQnLCAnbGQtbGludXgteDg2LTY0LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnaTY4NicsICdsZC1saW51eC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2FhcmNoNjQnLCAnbGQtbGludXgtYWFyY2g2NC5zby4xJywgJycsIGQpfSIKK1VOSU5BVElWRV9MT0FERVIgPz0gIiR7VU5JTkFUSVZFX1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eC9saWIvJHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAneDg2XzY0JywgJ2xkLWxpbnV4LXg4Ni02NC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2k2ODYnLCAnbGQtbGludXguc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdhYXJjaDY0JywgJ2xkLWxpbnV4LWFhcmNoNjQuc28uMScsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdwcGM2NGxlJywgJ2xkNjQuc28uMicsICcnLCBkKX0iCiBVTklOQVRJVkVfU1RBR0lOR19ESVIgPz0gIiR7U1RBR0lOR19ESVJ9IgogCiBVTklOQVRJVkVfVVJMID89ICJ1bnNldCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3ZhbGEuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3ZhbGEuYmJjbGFzcwppbmRleCA2MTVlYjM3Li5iY2FmNjhjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdmFsYS5iYmNsYXNzCkBAIC04LDcgKzgsNyBAQAogIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwogZXhwb3J0IFNUQUdJTkdfREFUQURJUgogIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfToke1NUQUdJTkdfTElCRElSfSIKIAogIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKIEZJTEVTXyR7UE59LWRldiArPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZiBiL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYKaW5kZXggNDk2NDg4MC4uMmJkYzU1NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mCkBAIC01LDMgKzUsMTEgQEAKICMgd2l0aCBnZW5lcmFsIGFncmVlbWVudCBmcm9tIHRoZSBjb3JlIHRlYW0uCiAjCiBPRUxBWU9VVF9BQkkgPSAiMTIiCisKKyMKKyMgSEFTSEVRVUlWX0hBU0hfVkVSU0lPTiBpcyBpbmplY3RlZCBpbnRvIHRoZSBvdXRwdXQgaGFzaCBjYWxjdWxhdGlvbiB1c2VkIGJ5CisjIGhhc2hlcXVpdi4gQ2hhbmdpbmcgdGhpcyBtZWFucyBwcmV2aW91cyBoYXNoZXMgd2lsbCBubyBsb25nZXIgbWF0Y2gsIGFsbG93aW5nCisjIGEgcmVzZXQgb2YgdGhlIGVxdWl2YWxlbmNlLCBmb3IgZXhhbXBsZSB3aGVuIHJlcHJvZHVjaWJpbGl0eSBpc3N1ZXMgYnJlYWsgdGhlCisjIGV4aXN0aW5nIG1hdGNoIGRhdGEuIERpc3Ryb3MgY2FuIGFsc28gYXBwZW5kIHRvIHRoaXMgdmFsdWUgZm9yIHRoZSBzYW1lIGVmZmVjdC4KKyMKK0hBU0hFUVVJVl9IQVNIX1ZFUlNJT04gID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKaW5kZXggMjYzZDhhZS4uNGI1NDRhMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgpAQCAtMTEsNiArMTEsNyBAQAogYmFzZWxpYlt2YXJkZXB2YWx1ZV0gPSAiJHtiYXNlbGlifSIKIEJBU0VMSUIgPSAibGliIgogQkFTRUxJQl9wb3dlcnBjNjQgPSAibGliNjQiCitCQVNFTElCX3Bvd2VycGM2NGxlID0gImxpYjY0IgogCiAjIFBhdGggcHJlZml4ZXMKIGV4cG9ydCBiYXNlX3ByZWZpeCA9ICIiCkBAIC0xMjksNyArMTMwLDcgQEAKIFRBUkdFVF9BUkNIID0gIiR7VFVORV9BUkNIfSIKIFRBUkdFVF9PUyA9ICJsaW51eCR7TElCQ0VYVEVOU0lPTn0ke0FCSUVYVEVOU0lPTn0iCiBUQVJHRVRfVkVORE9SID0gIi1vZSIKLVRBUkdFVF9TWVMgPSAiJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9JHtAWyctJyArIGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSwgJyddW2QuZ2V0VmFyKCdUQVJHRVRfT1MnKSA9PSAoJycgb3IgJ2N1c3RvbScpXX0iCitUQVJHRVRfU1lTID0gIiR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0ke1RBUkdFVF9PU30iCiBUQVJHRVRfUFJFRklYID0gIiR7VEFSR0VUX1NZU30tIgogVEFSR0VUX0NDX0FSQ0ggPSAiJHtUVU5FX0NDQVJHU30iCiBUQVJHRVRfTERfQVJDSCA9ICIke1RVTkVfTERBUkdTfSIKQEAgLTEzOCw3ICsxMzksNyBAQAogU0RLTUFDSElORSA/Pz0gIng4Nl82NCIKIFNES19PUyA9ICIke0JVSUxEX09TfSIKIFNES19WRU5ET1IgPSAiLW9lc2RrIgotU0RLX1NZUyA9ICIke1NES19BUkNIfSR7U0RLX1ZFTkRPUn0ke0BbJy0nICsgZC5nZXRWYXIoJ1NES19PUycpLCAnJ11bZC5nZXRWYXIoJ1NES19PUycpID09ICgnJyBvciAnY3VzdG9tJyldfSIKK1NES19TWVMgPSAiJHtTREtfQVJDSH0ke1NES19WRU5ET1J9LSR7U0RLX09TfSIKIFNES19QUkVGSVggPSAiJHtTREtfU1lTfS0iCiBTREtfQ0NfQVJDSCA9ICIke0JVSUxEX0NDX0FSQ0h9IgogU0RLUEtHU1VGRklYID0gIm5hdGl2ZXNkayIKQEAgLTMyNCw3ICszMjUsNyBAQAogU0VDVElPTl8ke1BOfS1zdGF0aWNkZXYgPSAiZGV2ZWwiCiBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCi1GSUxFU18ke1BOfS1kYmcgPSAiL3Vzci9saWIvZGVidWcgL3Vzci9zcmMvZGVidWciCitGSUxFU18ke1BOfS1kYmcgPSAiL3Vzci9saWIvZGVidWcgL3Vzci9saWIvZGVidWctc3RhdGljIC91c3Ivc3JjL2RlYnVnIgogU0VDVElPTl8ke1BOfS1kYmcgPSAiZGV2ZWwiCiBBTExPV19FTVBUWV8ke1BOfS1kYmcgPSAiMSIKIApAQCAtNDI5LDcgKzQzMCw4IEBACiBPTERFU1RfS0VSTkVMID0gIjMuMi4wIgogT0xERVNUX0tFUk5FTF9hYXJjaDY0ID0gIjMuMTQiCiBPTERFU1RfS0VSTkVMX25pb3MyID0gIjMuMTkiCi1PTERFU1RfS0VSTkVMX3Jpc2N2MzIgPSAiNC4xNSIKK09MREVTVF9LRVJORUxfcG93ZXJwYzY0bGUgPSAiMy4xMC4wIgorT0xERVNUX0tFUk5FTF9yaXNjdjMyID0gIjUuNCIKIE9MREVTVF9LRVJORUxfcmlzY3Y2NCA9ICI0LjE1IgogCiAjIFNES19PTERFU1RfS0VSTkVMIGNhbid0IGJlIHNldCB1c2luZyBvdmVycmlkZXMgc2luY2UgdGhlcmUgYXJlCkBAIC00ODEsMTQgKzQ4MywxNCBAQAogSE9TVFRPT0xTX0RJUiA9ICIke1RNUERJUn0vaG9zdHRvb2xzIgogCiAjIFRvb2xzIG5lZWRlZCB0byBydW4gYnVpbGRzIHdpdGggT0UtQ29yZQotIyBweXRob24gaXMgc3BlY2lhbCBjYXNlZCB0byBwb2ludCBhdCBweXRob24yCiBIT1NUVE9PTFMgKz0gIiBcCiAgICAgWyBhciBhcyBhd2sgYmFzZW5hbWUgYmFzaCBiemlwMiBjYXQgY2hncnAgY2htb2QgY2hvd24gY2hycGF0aCBjbXAgY29tbSBjcCBjcGlvIFwKICAgICBjcHAgY3V0IGRhdGUgZGQgZGlmZiBkaWZmc3RhdCBkaXJuYW1lIGR1IGVjaG8gZWdyZXAgZW52IGV4cGFuZCBleHByIGZhbHNlIFwKICAgICBmZ3JlcCBmaWxlIGZpbmQgZmxvY2sgZysrIGdhd2sgZ2NjIGdldGNvbmYgZ2V0b3B0IGdpdCBncmVwIGd1bnppcCBnemlwIFwKLSAgICBoZWFkIGhvc3RuYW1lIGljb252IGlkIGluc3RhbGwgbGQgbGRkIGxuIGxzIG1ha2UgbWFrZWluZm8gbWQ1c3VtIG1rZGlyIG1rbm9kIFwKLSAgICBta3RlbXAgbXYgbm0gb2JqY29weSBvYmpkdW1wIG9kIHBhdGNoIHBlcmwgcG9kMm1hbiBwciBwcmludGYgcHdkIHB5dGhvbjIgXAotICAgIHB5dGhvbjIuNyBweXRob24zIHJhbmxpYiByZWFkZWxmIHJlYWRsaW5rIHJlYWxwYXRoIHJtIHJtZGlyIHJwY2dlbiBzZWQgc2VxIHNoIHNoYTI1NnN1bSBcCisgICAgaGVhZCBob3N0bmFtZSBpY29udiBpZCBpbnN0YWxsIGxkIGxkZCBsbiBscyBtYWtlIG1kNXN1bSBta2RpciBta25vZCBcCisgICAgbWt0ZW1wIG12IG5tIG9iamNvcHkgb2JqZHVtcCBvZCBwYXRjaCBwZXJsIHByIHByaW50ZiBwd2QgXAorICAgIHB5dGhvbjMgcmFubGliIHJlYWRlbGYgcmVhZGxpbmsgcmVhbHBhdGggcm0gcm1kaXIgcnBjZ2VuIHNlZCBzZXEgc2ggXAorICAgIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIFwKICAgICBzbGVlcCBzb3J0IHNwbGl0IHN0YXQgc3RyaW5ncyBzdHJpcCB0YWlsIHRhciB0ZWUgdGVzdCB0b3VjaCB0ciB0cnVlIHVuYW1lIFwKICAgICB1bmlxIHdjIHdnZXQgd2hpY2ggeGFyZ3MgXAogIgpAQCAtNTg3LDggKzU4OSw2IEBACiBCVUlMRFNES19MREZMQUdTID0gIi1XbCwtTzEiCiAKIExJTktFUl9IQVNIX1NUWUxFID8/PSAiZ251IgotIyBtaXBzIGRvZXMgbm90IHN1cHBvcnQgR05VIGhhc2ggc3R5bGUgdGhlcmVmb3JlIHdlIG92ZXJyaWRlCi1MSU5LRVJfSEFTSF9TVFlMRV9taXBzYXJjaCA9ICJzeXN2IgogCiBUQVJHRVRfTElOS19IQVNIX1NUWUxFID89ICIke0BbJy1XbCwtLWhhc2gtc3R5bGU9Z251JywnJ11bZC5nZXRWYXIoJ0xJTktFUl9IQVNIX1NUWUxFJykgIT0gJ2dudSddfSIKIApAQCAtNTk2LDYgKzU5Niw4IEBACiAKIGV4cG9ydCBMREZMQUdTID0gIiR7VEFSR0VUX0xERkxBR1N9IgogVEFSR0VUX0xERkxBR1MgPSAiLVdsLC1PMSAke1RBUkdFVF9MSU5LX0hBU0hfU1RZTEV9ICR7QVNORUVERUR9IgorIyBtaXBzIGRvZXMgbm90IHN1cHBvcnQgR05VIGhhc2ggc3R5bGUgdGhlcmVmb3JlIHdlIG92ZXJyaWRlCitMSU5LRVJfSEFTSF9TVFlMRV9taXBzYXJjaF9saWJjLW11c2wgPSAic3lzdiIKIAogIyBQYXNzIHBhcmFsbGVsIG1ha2Ugb3B0aW9ucyB0byB0aGUgY29tcGlsZSB0YXNrCiBFWFRSQV9PRU1BS0VfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtQQVJBTExFTF9NQUtFfSAiCkBAIC03OTMsNyArNzk1LDEwIEBACiBQQVJBTExFTF9NQUtFID89ICItaiAke0BvZS51dGlscy5jcHVfY291bnQoKX0iCiAKICMgRGVmYXVsdCBwYXJhbGxlbGlzbSBhbmQgcmVzb3VyY2UgdXNhZ2UgZm9yIHh6Ci1YWl9ERUZBVUxUUyA/PSAiLS1tZW1saW1pdD01MCUgLS10aHJlYWRzPSR7QG9lLnV0aWxzLmNwdV9jb3VudCgpfSIKK1haX01FTUxJTUlUID89ICI1MCUiCitYWl9USFJFQURTID89ICIke0BvZS51dGlscy5jcHVfY291bnQoYXRfbGVhc3Q9Mil9IgorWFpfREVGQVVMVFMgPz0gIi0tbWVtbGltaXQ9JHtYWl9NRU1MSU1JVH0gLS10aHJlYWRzPSR7WFpfVEhSRUFEU30iCitYWl9ERUZBVUxUU1t2YXJkZXBzZXhjbHVkZV0gKz0gIlhaX01FTUxJTUlUIFhaX1RIUkVBRFMiCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBNYWdpYyBDb29raWUgZm9yIFNBTklUWSBDSEVDSwpAQCAtODg1LDcgKzg5MCw3IEBACiAgICAgZmlsZS1jaGVja3N1bXMgcHl0aG9uIGZ1bmMgdGFzayBleHBvcnQgdW5leHBvcnQgbm9leGVjIG5vc3RhbXAgZGlycyBjbGVhbmRpcnMgXAogICAgIHNzdGF0ZS1sb2NrZmlsZS1zaGFyZWQgcHJlZnVuY3MgcG9zdGZ1bmNzIGV4cG9ydF9mdW5jIGRlcHRhc2sgcmRlcHRhc2sgXAogICAgIHJlY3JkZXB0YXNrIG5vZGVwcnJlY3Mgc3RhbXAtZXh0cmEtaW5mbyBzc3RhdGUtb3V0cHV0ZGlycyBmaWxlbmFtZSBsaW5lbm8gXAotICAgIHByb2dyZXNzIG1jZGVwZW5kcyIKKyAgICBwcm9ncmVzcyBtY2RlcGVuZHMgbnVtYmVyX3RocmVhZHMiCiAKIE1MUFJFRklYID8/PSAiIgogTVVMVElMSUJfVkFSSUFOVFMgPz89ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwppbmRleCAxMGQ4NmNmLi40MzNkNGI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKQEAgLTEwLDcgKzEwLDcgQEAKIExPQ0FMRV9VVEY4X0lTX0RFRkFVTFQgPz0gIjEiCiBMT0NBTEVfVVRGOF9JU19ERUZBVUxUX2NsYXNzLW5hdGl2ZXNkayA9ICIwIgogCi1ESVNUUk9fRkVBVFVSRVNfREVGQVVMVCA/PSAiYWNsIGFsc2EgYXJncCBibHVldG9vdGggZXh0MiBpcHY0IGlwdjYgbGFyZ2VmaWxlIHBjbWNpYSB1c2JnYWRnZXQgdXNiaG9zdCB3aWZpIHhhdHRyIG5mcyB6ZXJvY29uZiBwY2kgM2cgbmZjIHgxMSIKK0RJU1RST19GRUFUVVJFU19ERUZBVUxUID89ICJhY2wgYWxzYSBhcmdwIGJsdWV0b290aCBleHQyIGlwdjQgaXB2NiBsYXJnZWZpbGUgcGNtY2lhIHVzYmdhZGdldCB1c2Job3N0IHdpZmkgeGF0dHIgbmZzIHplcm9jb25mIHBjaSAzZyBuZmMgeDExIHZmYXQiCiBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9IgogSU1BR0VfRkVBVFVSRVMgPz0gIiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKaW5kZXggZTMxNDY0Mi4uMGU0YTlhOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCkBAIC0xNSw3ICsxNSw4IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tYXRrID0gIkZlZG9yYT1hdGsgT3BlblN1U0U9YXRrIgogRElTVFJPX1BOX0FMSUFTX3BuLWF2YWhpLXVpID0gIlVidW50dT1hdmFoaS1kaXNjb3ZlciBEZWJpYW49YXZhaGktZGlzY292ZXIiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmFiZWx0cmFjZSA9ICJPU1BEVCIKLURJU1RST19QTl9BTElBU19wbi1iamFtID0gIk9wZW5TdVNFPWJvb3N0LWphbSBEZWJpbmE9YmphbSIKK0RJU1RST19QTl9BTElBU19wbi1iYWJlbHRyYWNlMiA9ICJPU1BEVCIKK0RJU1RST19QTl9BTElBU19wbi1iamFtID0gIk9wZW5TdVNFPWJvb3N0LWphbSBEZWJpYW49YmphbSIKIERJU1RST19QTl9BTElBU19wbi1ibGt0b29sID0gIkRlYmlhbj1ibGt0b29sIE1hbmRyaXZhPWJsa3Rvb2wiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmx1ZXo1ID0gIkZlZG9yYT1ibHVleiAgT3BlbnN1c2U9Ymx1ZXoiCiBESVNUUk9fUE5fQUxJQVNfcG4tYm9vdGNoYXJ0MiA9ICJGZWRvcmE9Ym9vdGNoYXJ0MiBPcGVuc3VzZT1ib290Y2hhcnQiCkBAIC0xMzAsNyArMTMxLDcgQEAKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpLXRlc3RmcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtdGVzdGZzID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4taW5pdHNjcmlwdHMgPSAiRmVkb3JhPWluaXRzY3JpcHRzIE1hbmRyYXZpYT1pbml0c2NyaXB0cyIKK0RJU1RST19QTl9BTElBU19wbi1pbml0c2NyaXB0cyA9ICJGZWRvcmE9aW5pdHNjcmlwdHMgTWFuZHJpdmE9aW5pdHNjcmlwdHMiCiBESVNUUk9fUE5fQUxJQVNfcG4taXByb3V0ZTIgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tanBlZyA9ICJPcGVuU3VTRT1saWJqcGVnIFVidW50dT1saWJqcGVnNjIiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2VybmVsLWRldnNyYyA9ICJEZWJpYW49bGludXgtYmFzZSBVYnVudHU9bGludXgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKaW5kZXggZDg1ZTViNi4uMTUwOGFkMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpAQCAtMzUsNiArMzUsOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1wbHVnaW5zID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXN0YXRlID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXRvb2xzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXRvcG9sb2d5LWNvbmYgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdWNtLWNvbmYgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdXRpbHMtc2NyaXB0cyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXBtZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKQEAgLTQ3LDkgKzQ5LDkgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzcGVsbCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ayA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXR0ciA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2NvbmYtYXJjaGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCkBAIC01Nyw2ICs1OSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGktdWkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFiZWx0cmFjZTIgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtODIsNiArODUsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtY29tcGFyZSA9ICJQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1zeXNyb290cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZGVyID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveCA9ICJBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94LWluaXR0YWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCkBAIC05MSw4ICs5NSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYW50YXJlbGwtZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2NhY2hlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNkcnRvb2xzLW5hdGl2ZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2hycGF0aCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci0xLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWdzdC0zLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCkBAIC0xMDMsNyArMTA1LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWdub21lID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZS10b29scyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZWtpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1iYXNlID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCkBAIC0xMzQsNyArMTM1LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi10ZXN0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXBzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXJsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLWNoZWNrLXRvb2wgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtdXBkYXRlLWRiLW5hdGl2ZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN3YXV0b21hY3JvcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRiID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCkBAIC0xNDcsNiArMTQ3LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlcG1vZHdyYXBwZXItY3Jvc3MgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlc2t0b3AtZmlsZS11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaGNwID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmb3Njb3BlID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTE2Nyw3ICsxNjgsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZWZpYm9vdG1nciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVsZnV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGwgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY2hhbnQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50MiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY29kaW5ncyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVwaXBoYW55ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV0aHRvb2wgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCkBAIC0xODIsNyArMTgzLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9vbWF0aWMtZmlsdGVycyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9ybWZhY3RvciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZnJpYmlkaSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKQEAgLTE5MSwxNCArMTkxLDEwIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrLSR7U0RLX1NZU30gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1NES19TWVN9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXJ1bnRpbWUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc2FuaXRpemVycyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zb3VyY2UtOC4zLjAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlLTkuMi4wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zb3VyY2UtOS4zLjAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjciA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC0yMjEsNyArMjE3LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWRlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnVwZyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtMjU3LDEwICsyNTIsOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXB5dGhvbiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlciA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC12YWFwaSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0aysgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrMyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1kb2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWljb24tdXRpbHMtbmF0aXZlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3ppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhhcmZidXp6ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGRwYXJtID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpAQCAtMjg3LDEwICsyODAsMTIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdGFibGVzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXB1dGlscyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlzby1jb2RlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pdHN0b29sID0gIkFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXcgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqcGVnLXR1cmJvID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWdsaWIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWpxdWVyeSA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta2JkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta2VybmVsLWRldnNyYyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPiIKQEAgLTM0Niw3ICszNDEsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNhbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkM3RhZyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbjIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmppdHRlcmVudHJvcHkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCkBAIC0zNTcsNyArMzUxLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1vZHVsZS1idWlsZC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1vZHVsZW1kLXYxID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5ld3QtcHl0aG9uID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJubCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJub3RpZnkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc2wyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtMzkzLDE1ICszODYsMTggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1jcm9zcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1Y29udGV4dCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVuaXN0cmluZyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVud2luZCA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiMSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVib290ZW52ID0gIlN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEtdXRpbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2b3JiaXMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndlYnAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid3BlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYngxMSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhhdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKQEAgLTQ5Niw3ICs0OTIsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbWluZ2V0dHkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmkteC1zZXNzaW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaWNvbSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udGRpciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udHNjYWxlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWtsaWJzLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tbWMtdXRpbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCkBAIC01MzEsOCArNTI2LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy11dGlscyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uaW5qYSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5wdGggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNwciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcy1teWhvc3RuYW1lID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb2Zvbm8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc2JpID0gIkFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4iCkBAIC01NTcsNyArNTUwLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWFuZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGVyZiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybC1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGlnbGl0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGlneiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGluZW50cnkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCkBAIC01ODAsMjAgKzU3MiwxOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpbyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpby1jbGllbnQtY29uZi1zYXRvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdXp6bGVzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2V0dXB0b29scyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1hc3luYyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1jeXRob24gPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kb2N1dGlscyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1leHRyYXMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZmlsZS11dGlscyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXQgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbGliYXJjaGl2ZS1jID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW1hZ2ljID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW1ha28gPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbmF0aXZlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbnVtcHkgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcGJyID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCkBAIC02MDEsNiArNTkxLDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHljYWlybyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWdtZW50cyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWdvYmplY3QgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlwYXJzaW5nID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNjb25zID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2NvbnMtbmF0aXZlID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgpAQCAtNjU3LDcgKzY0OCw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzcHJvZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKQEAgLTY3OCw3ICs2NjgsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tdGNsID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y3Atd3JhcHBlcnMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGVzdGV4cG9ydC10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGkyaHRtbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10aWZmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKQEAgLTY4Nyw3ICs2NzYsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdCA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC1mdy11dGlscyA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXUtYm9vdC10b29scyA9ICJNYXJlayBWYXN1dCA8bWFyZWsudmFzdXRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVkZXYtZXh0cmFjb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW5mczMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCkBAIC03MjQsNiArNzEyLDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpYy10b29scyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpcmVsZXNzLXJlZ2RiID0gIkFkcmlhbiBCdW5rIDxidW5rQGtlcm5lbC5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td3BhLXN1cHBsaWNhbnQgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGViYWNrZW5kLWZkbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14MTFwZXJmID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhhdXRoID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcHRlc3QtcGFja2FnZWxpc3RzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMKaW5kZXggYmI0NzI0Yy4uYzEzZmY3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcHRlc3QtcGFja2FnZWxpc3RzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9wdGVzdC1wYWNrYWdlbGlzdHMuaW5jCkBAIC00NywzMCArNDcsMzUgQEAKICAgICBxdWlsdC1wdGVzdCBcCiAgICAgc2VkLXB0ZXN0IFwKICAgICBzbGFuZy1wdGVzdCBcCisgICAgd2F5bGFuZC1wdGVzdCBcCiAgICAgemxpYi1wdGVzdCBcCiAiCiAKICNQVEVTVFNfUFJPQkxFTVMgPSAiXAogIyAgICBxZW11LXB0ZXN0IFwgIyBEb2Vzbid0IHJ1biBhbnkgdGVzdHM/CiAjICAgIHJ1YnktcHRlc3QgXCAjIFRpbWVvdXQKLSMgICAgbWRhZG0tcHRlc3QgXCAjIFRpbWVvdXQKICMgICAgY2x1dHRlci0xLjAtcHRlc3QgXCAjIERvZXNuJ3QgYnVpbGQgZHVlIHRvIGRlcGVuZHMgb24gY29nbC0xLjAKKyMgICAgbHo0LXB0ZXN0IFwgIyBOZWVkcyBhIHJld3JpdGUKKyMgICAgcnQtdGVzdHMtcHRlc3QgXCAjIE5lZWRzIHRvIGJlIGNoZWNrZWQgd2hldGhlciBpdCBydW5zIGF0IGFsbAorIyAgICBiYXNoLXB0ZXN0IFwgIyBUZXN0IG91dGNvbWVzIGFyZSBub24tZGV0ZXJtaW5pc3RpYyBieSBkZXNpZ24KKyMgICAgaWZ1cGRvd24tcHRlc3QgXCAjIFRlc3RlZCBzZXBhcmF0ZWx5IGluIGxpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKKyMgICAgbWRhZG0tcHRlc3QgXCAjIFRlc3RzIHJlbHkgb24gbm9uLWRldGVybWluaXN0aWMgc2xlZXAoKSBhbW91bnRzCiAjIgogCiBQVEVTVFNfU0xPVyA9ICJcCi0gICAgYmFzaC1wdGVzdCBcCisgICAgYmFiZWx0cmFjZS1wdGVzdCBcCisgICAgYmFiZWx0cmFjZTItcHRlc3QgXAogICAgIGJ1c3lib3gtcHRlc3QgXAorICAgIGNvcmV1dGlscy1wdGVzdCBcCiAgICAgZGJ1cy10ZXN0LXB0ZXN0IFwKICAgICBlMmZzcHJvZ3MtcHRlc3QgXAogICAgIGdsaWItMi4wLXB0ZXN0IFwKICAgICBnc3RyZWFtZXIxLjAtcHRlc3QgXAogICAgIGxpYmV2ZW50LXB0ZXN0IFwKICAgICBsdHRuZy10b29scy1wdGVzdCBcCi0gICAgbWRhZG0tcHRlc3QgXAogICAgIG9wZW5zc2gtcHRlc3QgXAogICAgIG9wZW5zc2wtcHRlc3QgXAogICAgIHBlcmwtcHRlc3QgXAotICAgIHB5dGhvbi1wdGVzdCBcCiAgICAgcHl0aG9uMy1wdGVzdCBcCiAgICAgc3RyYWNlLXB0ZXN0IFwKICAgICB0Y2wtcHRlc3QgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IGFhZjA0ZTkuLjU2OGQwMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKQEAgLTU3LDYgKzU3LDggQEAKIAogVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtTRUNVUklUWV9DRkxBR1N9IgogVEFSR0VUX0xERkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtTRUNVUklUWV9MREZMQUdTfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9jbGFzcy1jcm9zcy1jYW5hZGlhbiA9ICIgJHtTRUNVUklUWV9DRkxBR1N9IgorVEFSR0VUX0xERkxBR1NfYXBwZW5kX2NsYXNzLWNyb3NzLWNhbmFkaWFuID0gIiAke1NFQ1VSSVRZX0xERkxBR1N9IgogCiBTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2NjLXJ1bnRpbWUgPSAiIgogU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdsaWJjID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKaW5kZXggZTA0ZjhjOC4uMzFkMTMyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMKQEAgLTI3LDcgKzI3LDcgQEAKIFRBUkdFVF9PUyA9ICJlbGYiCiBUQVJHRVRfT1NfYXJtID0gImVhYmkiCiAKLVRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IgorVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0gbmF0aXZlc2RrLXFlbXUiCiBUT09MQ0hBSU5fSE9TVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gImxpYmdjYy1kZXYiCiBUT09MQ0hBSU5fTkVFRF9DT05GSUdTSVRFX0NBQ0hFX3JlbW92ZSA9ICJ2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyB6bGliIG5jdXJzZXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jCmluZGV4IDg5NmMwYjEuLmJmODliMTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jCkBAIC0yNSwxMiArMjUsMTEgQEAKICAgICBsaWJnbG9zcy1kYmcgXAogICAgIGxpYmdjYy1kZXYgXAogICAgIGxpYmdjYy1kYmcgXAorICAgIGxpYnN0ZGMrKy1kZXYgXAorICAgIGxpYnN0ZGMrKy1zdGF0aWNkZXYgXAogICAgICIKIAotIyBjb21waWxlcmxpYnMgZGVmYXVsdHMgdG8gZ2NjLXJ1bnRpbWUsIGJ1dCB3ZSBnZXQgcnVudGltZSBmcm9tIGxpYmdsb3NzCi0jIHdlIHNldCBBU1NVTUVfUFJPVklERUQgYmVjYXVzZSB3ZSBjYW50IHNldCBQUkVGRVJSRURfUFJPVklERVIKLSMgZm9yIGNvbXBpbGVybGlicyBzaW5jZSBpdHMgb3ZlcnJpZGRlbiBieSB0Y21vZGUtZGVmYXVsdAotQVNTVU1FX1BST1ZJREVEICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMgdmlydHVhbC9jcnlwdCIKK0FTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC9jcnlwdCIKIAogIyBJdHMgdXNlZnVsIHRvIGJlIGFibGUgdG8gZXh0ZW5kIG5ld2xpYiwgYnV0IHdlIGRvbnQgcHJvdmlkZSBhIG5hdGl2ZSB2YXJpYW50IG9mIGxpYmdsb3NzCiBORVdMSUJfRVhURU5ERUQgPz0gICJsaWJnbG9zcyBsaWJnY2MiCkBAIC0zOSw3ICszOCw3IEBACiBUQVJHRVRfT1MgPSAiZWxmIgogVEFSR0VUX09TX2FybSA9ICJlYWJpIgogCi1UT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKK1RPT0xDSEFJTl9IT1NUX1RBU0sgPz0gInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IG5hdGl2ZXNkay1xZW11IgogVE9PTENIQUlOX1RBUkdFVF9UQVNLID89ICIke0xJQkNfREVQRU5ERU5DSUVTfSIKIFRPT0xDSEFJTl9ORUVEX0NPTkZJR1NJVEVfQ0FDSEVfcmVtb3ZlID0gInpsaWIgbmN1cnNlcyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCmluZGV4IDRhMjNjNTAuLjg0OWJjZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKQEAgLTE4LDE1ICsxOCwxNSBAQAogCiBHQ0NWRVJTSU9OID89ICI5LiUiCiBTREtHQ0NWRVJTSU9OID89ICIke0dDQ1ZFUlNJT059IgotQklOVVZFUlNJT04gPz0gIjIuMzIlIgotR0RCVkVSU0lPTiA/PSAiOC4zJSIKLUdMSUJDVkVSU0lPTiA/PSAiMi4zMCUiCi1MSU5VWExJQkNWRVJTSU9OID89ICI1LjIlIgotUUVNVVZFUlNJT04gPz0gIjQuMSUiCi1HT1ZFUlNJT04gPz0gIjEuMTIlIgorQklOVVZFUlNJT04gPz0gIjIuMzQlIgorR0RCVkVSU0lPTiA/PSAiOS4lIgorR0xJQkNWRVJTSU9OID89ICIyLjMxJSIKK0xJTlVYTElCQ1ZFUlNJT04gPz0gIjUuNCUiCitRRU1VVkVSU0lPTiA/PSAiNC4yJSIKK0dPVkVSU0lPTiA/PSAiMS4xNCUiCiAjIFRoaXMgY2FuIG5vdCB1c2Ugd2lsZGNhcmRzIGxpa2UgOC4wLiUgc2luY2UgaXQgaXMgYWxzbyB1c2VkIGluIG1lc2EgdG8gZGVub3RlCiAjIGxsdm0gdmVyc2lvbiBiZWluZyB1c2VkLCBzbyBhbHdheXMgYnVtcCBpdCB3aXRoIGxsdm0gcmVjaXBlIHZlcnNpb24gYnVtcAotTExWTVZFUlNJT04gPz0gIjkuMC4wIgorTExWTVZFUlNJT04gPz0gIjkuMC4xIgogCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MgPz0gIiR7R0NDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH0gPz0gIiR7R0NDVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwppbmRleCBhZDc1ZDNlLi44ODk2OTVlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKQEAgLTYsOSArNiw5IEBACiAjIHRvIHRoZSBkaXN0cm8gcnVubmluZyBvbiB0aGUgYnVpbGQgbWFjaGluZS4KICMKIAotVU5JTkFUSVZFX01BWEdMSUJDVkVSU0lPTiA9ICIyLjMwIgorVU5JTkFUSVZFX01BWEdMSUJDVkVSU0lPTiA9ICIyLjMxIgogCi1VTklOQVRJVkVfVVJMID89ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzIuNy8iCi1VTklOQVRJVkVfQ0hFQ0tTVU1bYWFyY2g2NF0gPz0gImU3NmE0NTg4NmVlOGEwYjM5MDRiNzYxYzE3YWM4ZmY5MWVkZjk4MTFlZTQ1NWYxODMyZDEwNzYzYmE3OTRkZmMiCi1VTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gIjgxMGQwMjdkZmIxYzc2NzUyMjZhZmJjZWMwNzgwODc3MDUxNmM5NjllZTczNzhmNmQ4MjQwMjgxMDgzZjg5MjQiCi1VTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiOTQ5OGQ4YmJhMDQ3NDk5OTk5YTczMTBhYzI1NzZkMDc5NjQ2MTE4NDk2NTM1MWE1NmY2ZDMyYzg4OGExZjIxNiIKK1VOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMi44LyIKK1VOSU5BVElWRV9DSEVDS1NVTVthYXJjaDY0XSA/PSAiOTg5MTg3MzQ0YmY5NTM5YjQ2NGZiN2VkOWMyMjNlNTFmNGJkYjRjN2E2NzdkMmMzMTRlNmZlZDM5MzE3NmVmZSIKK1VOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiY2MzZTQ1YmM4NTk0NDg4YjQwNzM2M2UzZmE5YWY1YTA5OTI3OWRhYjI3MDNjNjQzNDIwOTg3MTliZDY3NDk5MCIKK1VOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICJhMDk5MjIxNzJjM2E0MzkxMDVlMGFlNmI5NDNkYWFkMmQ4MzUwNWIxN2RhMGFiYTk3OTYxZmY0MzNiOGMyMWFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mIGIvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCmluZGV4IGZjYTM2ZjMuLmM2NTQ0YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKQEAgLTY5LDYgKzY5LDcgQEAKIEFVVEhPUltkb2NdID0gIkVtYWlsIGFkZHJlc3MgdXNlZCB0byBjb250YWN0IHRoZSBvcmlnaW5hbCBhdXRob3IocykgaW4gb3JkZXIgdG8gc2VuZCBwYXRjaGVzIGFuZCBmb3J3YXJkIGJ1Z3MuIgogQVVUT19TWVNMSU5VWE1FTlVbZG9jXSA9ICJFbmFibGVzIGNyZWF0aW5nIGFuIGF1dG9tYXRpYyBtZW51IGZvciB0aGUgc3lzbGludXggYm9vdGxvYWRlci4iCiBBVVRPUkVWW2RvY10gPSAiV2hlbiBTUkNSRVYgaXMgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlLCBpdCBzcGVjaWZpZXMgdG8gdXNlIHRoZSBsYXRlc3Qgc291cmNlIHJldmlzaW9uIGluIHRoZSByZXBvc2l0b3J5LiIKK0FWQUlMQUJMRV9MSUNFTlNFU1tkb2NdID0gIkxpc3Qgb2YgbGljZW5zZXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSBDT01NT05fTElDRU5TRV9ESVIgYW5kIExJQ0VOU0VfUEFUSC4iCiAKICNCCiAKQEAgLTExNyw3ICsxMTgsNiBAQAogQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvIGJlIGFkZGVkIHRvIHRoZSBpbWFnZS4gWW91IHNob3VsZCBvbmx5IHNldCB0aGlzIHZhcmlhYmxlIGluIHRoZSBjb25mL2xvY2FsLmNvbmYgZmlsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LiIKIENPUkVCQVNFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSBPcGVuRW1iZWRkZWQgQ29yZSBNZXRhZGF0YSBsYXllciAoaS5lLiBtZXRhKS4iCiBDT05GX1ZFUlNJT05bZG9jXSA9ICJUcmFja3MgdGhlIHZlcnNpb24gb2YgbG9jYWwuY29uZi4gIEluY3JlYXNlZCBlYWNoIHRpbWUgYnVpbGQvY29uZi8gY2hhbmdlcyBpbmNvbXBhdGlibHkuIgotQ1ZTRElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aGVyZSBjdnMgY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkIGluLiIKIAogI0QKIApAQCAtMTc3LDcgKzE3Nyw2IEBACiAKICNHCiAKLUdJVERJUltkb2NdID0gIlRoZSBkaXJlY3Rvcnkgd2hlcmUgR2l0IGNsb25lcyB3aWxsIGJlIHN0b3JlZC4iCiBHUk9VUEFERF9QQVJBTVtkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIHVzZXJhZGQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGZvciBhIHBhY2thZ2Ugd2hhdCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGdyb3VwYWRkIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gYWRkIGEgZ3JvdXAgdG8gdGhlIHN5c3RlbSB3aGVuIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4iCiBHUk9VUE1FTVNfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBncm91cG1lbXMgY29tbWFuZCBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIG1lbWJlcnMgb2YgYSBncm91cCB3aGVuIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4iCiBHUlVCX0dGWFNFUklBTFtkb2NdID0gIkNvbmZpZ3VyZXMgdGhlIEdOVSBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIgKEdSVUIpIHRvIGhhdmUgZ3JhcGhpY3MgYW5kIHNlcmlhbCBpbiB0aGUgYm9vdCBtZW51LiIKQEAgLTMwNyw3ICszMDYsNiBAQAogUEFDS0FHRV9DTEFTU0VTW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgdGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2Ugd2hlbiBwYWNrYWdpbmcgZGF0YS4gSXQgaXMgc2V0IGluIHRoZSBjb25mL2xvY2FsLmNvbmYgZmlsZSBpbiB0aGUgQnVpbGQgRGlyZWN0b3J5LiIKIFBBQ0tBR0VfRVhDTFVERVtkb2NdID0gIlBhY2thZ2VzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgaW5zdGFsbGF0aW9uLiBJZiBhIGxpc3RlZCBwYWNrYWdlIGlzIHJlcXVpcmVkLCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQuIgogUEFDS0FHRV9FWFRSQV9BUkNIU1tkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGV2aWNlIENQVS4gVGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwgd2hlbiB5b3UgYnVpbGQgZm9yIHNldmVyYWwgZGlmZmVyZW50IGRldmljZXMgdGhhdCB1c2UgbWlzY2VsbGFuZW91cyBwcm9jZXNzb3JzLiIKLVBBQ0tBR0VfR1JPVVBbZG9jXSA9ICJEZWZpbmVzIG9uZSBvciBtb3JlIHBhY2thZ2VzIHRvIGluY2x1ZGUgaW4gYW4gaW1hZ2Ugd2hlbiBhIHNwZWNpZmljIGl0ZW0gaXMgaW5jbHVkZWQgaW4gSU1BR0VfRkVBVFVSRVMuIgogUEFDS0FHRV9JTlNUQUxMW2RvY10gPSAiTGlzdCBvZiB0aGUgcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlLiBUaGUgdmFyaWFibGUgaXMgZ2VuZXJhbGx5IG5vdCB1c2VyLWRlZmluZWQgYW5kIHVzZXMgSU1BR0VfSU5TVEFMTCBhcyBwYXJ0IG9mIHRoZSBsaXN0LiIKIFBBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWVtkb2NdID0gIkxpc3Qgb2YgcGFja2FnZXMgYXR0ZW1wdGVkIHRvIGJlIGluc3RhbGxlZC4gSWYgYSBsaXN0ZWQgcGFja2FnZSBmYWlscyB0byBpbnN0YWxsLCB0aGUgYnVpbGQgc3lzdGVtIGRvZXMgbm90IGdlbmVyYXRlIGFuIGVycm9yLiBUaGlzIHZhcmlhYmxlIGlzIGdlbmVyYWxseSBub3QgdXNlci1kZWZpbmVkLiIKIFBBQ0tBR0VDT05GSUdbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIHByb3ZpZGVzIGEgbWVhbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGZlYXR1cmVzIG9mIGEgcmVjaXBlIG9uIGEgcGVyLXJlY2lwZSBiYXNpcy4iCkBAIC0zOTIsNyArMzkwLDYgQEAKIFNUQU1QW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBiYXNlIHBhdGggdXNlZCB0byBjcmVhdGUgcmVjaXBlIHN0YW1wIGZpbGVzLiBUaGUgcGF0aCB0byBhbiBhY3R1YWwgc3RhbXAgZmlsZSBpcyBjb25zdHJ1Y3RlZCBieSBldmFsdWF0aW5nIHRoaXMgc3RyaW5nIGFuZCB0aGVuIGFwcGVuZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiIKIFNUQU1QU19ESVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGJhc2UgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBsYWNlcyBzdGFtcHMuIgogU1VNTUFSWVtkb2NdID0gIlRoZSBzaG9ydCAoODAgY2hhcmFjdGVycyBvciBsZXNzKSBzdW1tYXJ5IG9mIHRoZSBiaW5hcnkgcGFja2FnZSBmb3IgcGFja2FnaW5nIHN5c3RlbXMgc3VjaCBhcyBvcGtnLCBycG0gb3IgZHBrZy4gQnkgZGVmYXVsdCwgU1VNTUFSWSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgREVTQ1JJUFRJT04gdmFyaWFibGUgaWYgREVTQ1JJUFRJT04gaXMgbm90IHNldCBpbiB0aGUgcmVjaXBlLiIKLVNWTkRJUltkb2NdID0gIlRoZSBkaXJlY3Rvcnkgd2hlcmUgU3VidmVyc2lvbiBjaGVja291dHMgd2lsbCBiZSBzdG9yZWQuIgogU1lTTElOVVhfREVGQVVMVF9DT05TT0xFW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBrZXJuZWwgYm9vdCBkZWZhdWx0IGNvbnNvbGUuIgogU1lTTElOVVhfT1BUU1tkb2NdID0gIkxpc3RzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBhZGQgdG8gdGhlIHN5c2xpbnV4IGZpbGUuIgogU1lTTElOVVhfU0VSSUFMW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBhbHRlcm5hdGUgc2VyaWFsIHBvcnQgb3IgdHVybnMgaXQgb2ZmLiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCmluZGV4IGZjZGY5YWUuLmYwM2ViNDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgpAQCAtNywxMiArNywxMiBAQAogQkJGSUxFX1BBVFRFUk5fY29yZSA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX2NvcmUgPSAiNSIKIAotTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInpldXMiCitMQVlFUlNFUklFU19DT1JFTkFNRVMgPSAiZHVuZmVsbCIKIAogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fY29yZSA9ICIxMSIKLUxBWUVSU0VSSUVTX0NPTVBBVF9jb3JlID0gIndhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9jb3JlID0gImR1bmZlbGwiCiAKIEJCTEFZRVJTX0xBWUVSSU5ERVhfTkFNRV9jb3JlID0gIm9wZW5lbWJlZGRlZC1jb3JlIgogCkBAIC00Myw2ICs0Myw4IEBACiAgIG9wa2ctdXRpbHMgXAogICBnc3RyZWFtZXIxLjAtbWV0YS1iYXNlIFwKICAgY2EtY2VydGlmaWNhdGVzIFwKKyAgc2hhcmVkLW1pbWUtaW5mbyBcCisgIGRlc2t0b3AtZmlsZS11dGlscyBcCiAiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mIGIvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgppbmRleCA3YjAxYzU3Li43NTE0MjRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKQEAgLTEsNDggKzEsNyBAQAotIyBUaGVzZSBhcmVuJ3QgYWN0dWFsbHkgdXNlZCBhbnl3aGVyZSB0aGF0IEkgY2FuIHRlbGwKLSMgVGhleSBtYXkgYmUgaW4gdGhlIGZ1dHVyZSAob3IgYXJlIHVzZWQgYnkgc29tZW9uZSBlbHNlCi0jIEZvciBjb21wbGV0aW9uIHNha2UsIEkndmUgdXBkYXRlZCB0aGVtCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQUFMIEFkb2JlIEFGTC0xLjIgQUZMLTIuMCBBRkwtMi4xIEFGTC0zLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQUdQTC0zLjAgQU5UTFItUEQgQXBhY2hlLTEuMCBBcGFjaGUtMS4xIEFwYWNoZS0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQVBMLTEuMCBBUFNMLTEuMCBBUFNMLTEuMSBBUFNMLTEuMiBBUFNMLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJBcnRpc3RpYy0xLjAgQXJ0aXN0aWMtMi4wIEJpdHN0cmVhbVZlcmEgQlNEIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkJTRC0yLUNsYXVzZSBCU0QtMy1DbGF1c2UgQlNELTQtQ2xhdXNlIEJTTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0FUT1NMLTEuMSBDQzAtMS4wIENDLUJZLTEuMCBDQy1CWS0yLjAgQ0MtQlktMi41IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLTMuMCBDQy1CWS1OQy0xLjAgQ0MtQlktTkMtMi4wIENDLUJZLU5DLTIuNSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS1OQy0zLjAgQ0MtQlktTkMtTkQtMS4wIENDLUJZLU5DLU5ELTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS1OQy1ORC0yLjUgQ0MtQlktTkMtTkQtMy4wIENDLUJZLU5DLVNBLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS1OQy1TQS0yLjAgQ0MtQlktTkMtU0EtMi41IENDLUJZLU5DLVNBLTMuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS1ORC0xLjAgQ0MtQlktTkQtMi4wIENDLUJZLU5ELTIuNSBDQy1CWS1ORC0zLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktU0EtMS4wIENDLUJZLVNBLTIuMCBDQy1CWS1TQS0yLjUgQ0MtQlktU0EtMy4wIENDLUJZLVNBLTQuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDRERMLTEuMCBDRUNJTEwtMS4wIENFQ0lMTC0yLjAgQ0VDSUxMLUIgQ0VDSUxMLUMiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ2xBcnRpc3RpYyBDUEFMLTEuMCBDUEwtMS4wIENVQS1PUEwtMS4wIERTU1NMIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkVDTC0xLjAgRUNMLTIuMCBlQ29zLTIuMCBFREwtMS4wIEVGTC0xLjAgRUZMLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJFbnRlc3NhIEVQTC0xLjAgRVBMLTIuMCBFcmxQTC0xLjEiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiRVVEYXRhZ3JpZCBFVVBMLTEuMCBFVVBMLTEuMSBGYWlyIEZyYW1ld29yeC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiRnJlZVR5cGUgR0ZETC0xLjEgR0ZETC0xLjIgR0ZETC0xLjMgR1BMLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi4wIEdQTC0yLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTIuMC13aXRoLWNsYXNzcGF0aC1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTIuMC13aXRoLWZvbnQtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAtd2l0aC1HQ0MtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLXdpdGgtYmlzb24tZXhjZXB0aW9uIEdQTC0zLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTMuMC13aXRoLWF1dG9jb25mLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJnU09BUC0xIGdTT0FQLTEuM2IgSFBORCBJUEEgSVBMLTEuMCBJU0MgTEdQTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiTEdQTC0yLjEgTEdQTC0zLjAgTGlicG5nIExQTC0xLjAyIExQUEwtMS4wIExQUEwtMS4xIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkxQUEwtMS4yIExQUEwtMS4zYyBNaXJPUyBNSVQgTW90b3NvdG8gTVBMLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJNUEwtMS4xIE1TLVBMIE1TLVJMIE11bHRpY3MgTkFTQS0xLjMgTmF1bWFuIE5DU0EiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiTkdQTCBOb2tpYSBOUE9TTC0zLjAgTlRQIE9BU0lTIE9DTEMtMi4wIE9EYkwtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIk9GTC0xLjEgT0dUU0wgT0xEQVAtMi44IE9wZW5TU0wgT1NMLTEuMCBPU0wtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIk9TTC0zLjAgUEQgUEhQLTMuMCBQb3N0Z3JlU1FMIFByb3ByaWV0YXJ5IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlB5dGhvbi0yLjAgUVBMLTEuMCBSSGVDb3MtMSBSSGVDb3MtMS4xIFJQTC0xLjUiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiUlBTTC0xLjAgUlNDUEwgUnVieSBTQVgtUEQgU0dJLTEgU2ltcGxlLTIuMCBTbGVlcHljYXQiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiU1BMLTEuMCBTdWdhckNSTS0xIFN1Z2FyQ1JNLTEuMS4zIFVDQiBWU0wtMS4wIFczQyIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJXYXRjb20tMS4wIFdYd2luZG93cyBYRnJlZTg2LTEuMCBYRnJlZTg2LTEuMSBYbmV0IFhTTCBZUEwtMS4xIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlppbWJyYS0xLjMgWmxpYiBaUEwtMS4xIFpQTC0yLjAgWlBMLTIuMSIKLQogIyBTdGFuZGFyZHMgYXJlIGdyZWF0ISBFdmVyeW9uZSBoYXMgdGhlaXIgb3duLiBJbiBhbiBlZmZvcnQgdG8gc3RhbmRhcmRpemUgbGljZW5zaW5nCiAjIG5hbWVzLCBjb21tb24tbGljZW5zZXMgd2lsbCB1c2UgdGhlIFNQRFggc3RhbmRhcmQgbGljZW5zZSBuYW1lcy4gSW4gb3JkZXIgdG8gbm90CiAjIGJyZWFrIHRoZSBub24tc3RhbmRhcmRpemVkIGxpY2Vuc2UgbmFtZXMgdGhhdCB3ZSBmaW5kIGluIExJQ0VOU0UsIHdlJ2xsIHNldAotIyB1cCBhIGJ1bmNoIG9mIFZhckZsYWdzIHRvIGFjY29tb2RhdGUgbm9uLVNQRFggbGljZW5zZSBuYW1lcy4KKyMgdXAgYSBidW5jaCBvZiBWYXJGbGFncyB0byBhY2NvbW1vZGF0ZSBub24tU1BEWCBsaWNlbnNlIG5hbWVzLgogIwogIyBXZSBzaG91bGQgcmVhbGx5IGRpc2N1c3Mgc3RhbmRhcmRpemluZyB0aGlzIGZpZWxkLCBidXQgdGhhdCdzIGEgbG9uZ2VyIHRlcm0gZ29hbC4KICMgRm9yIG5vdywgd2UgY2FuIGRvIHRoaXMgYW5kIGl0IHNob3VsZCBncmFiIHRoZSBtb3N0IGNvbW1vbiBMSUNFTlNFIG5hbWluZyB2YXJpYXRpb25zLgpAQCAtMTg4LDUgKzE0NywzIEBACiBGT1NTX1NFUlZFUiA9ICIke0ZPU1NfQkFTRV9VUkx9JmZ1bGxTUERYRmxhZz0ke0ZPU1NfRlVMTF9TUERYfSZub0NvcHlyaWdodD0ke0ZPU1NfTk9fQ09QWVJJR0hUfSZyZWN1cnNpdmVVbnBhY2s9JHtGT1NTX1JFQ1VSU0lWRV9VTlBBQ0t9IgogCiBGT1NTX1dHRVRfRkxBR1MgPSAiLXFPIC0gLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAtLXRpbWVvdXQ9MCIKLQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYwppbmRleCBlYWI3MTcxLi40ZjU4MDc2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKQEAgLTQsMzUgKzQsNDEgQEAKIFRVTkVWQUxJRFttaWNyb2JsYXplXSA9ICJNaWNyb0JsYXplIgogTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibWljcm9ibGF6ZSIsICJtaWNyb2JsYXplOiIsICIiLCBkKX0iCiAKKyMgNjQtYml0CitUVU5FVkFMSURbNjQtYml0XSA9ICI2NC1iaXQgTWljcm9CbGF6ZSIKK1RVTkVDT05GTElDVFNbNjQtYml0XSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IHYxMC4wIgorTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiNjQtYml0IiwgIm1pY3JvYmxhemU2NDoiLCAiIiwgZCl9IgorCiAjIEVuZGlhbgogVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiVXNlIE1pY3JvYmxhemUgQmlnIEVuZGlhbiIKLVRVTkVDT05GTElDVFNbYmlnZW5kaWFuXSArPSAidjEwLjAiCitUVU5FQ09ORkxJQ1RTW2JpZ2VuZGlhbl0gPSAidjEwLjAiCiAKIE1CUEtHQVJDSF9FTkRJQU4gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgImViIiwgImVsIiwgZCl9IgogCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgIi1tYmlnLWVuZGlhbiIsICItbWxpdHRsZS1lbmRpYW4iLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgIiAtbWJpZy1lbmRpYW4iLCAiIC1tbGl0dGxlLWVuZGlhbiIsIGQpfSIKIAogIyBHZW5lcmFsIGZlYXR1cmVzCiBUVU5FVkFMSURbYmFycmVsLXNoaWZ0XSA9ICJFbmFibGUgSGFyZHdhcmUgQmFycmVsIFNoaWZ0ZXIiCiBUVU5FVkFMSURbcGF0dGVybi1jb21wYXJlXSA9ICJFbmFibGUgUGF0dGVybiBDb21wYXJlIEluc3RydWN0aW9ucyIKIFRVTkVWQUxJRFtyZW9yZGVyXSA9ICJFbmFibGUgUmVvcmRlciBJbnN0cnVjdGlvbnMiCi1UVU5FQ09ORkxJQ1RTW3Jlb3JkZXJdICs9ICJ2OC4wMCB2OC4xMCB2OC4yMCIKK1RVTkVDT05GTElDVFNbcmVvcmRlcl0gPSAidjguMDAgdjguMTAgdjguMjAiCiAKICMgQ29yZSBjb25maWd1cmF0aW9uIHR1bmUgb3B0aW1pemF0aW9ucwogVFVORVZBTElEW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdID0gIkVuYWJsaW5nIHR1bmluZyBmb3IgZnJlcXVlbmN5IG9wdGltaXplZCBjb3JlIChBUkVBX09QVElNSVpFRF8yKSIKLVRVTkVDT05GTElDVFNbZnJlcXVlbmN5LW9wdGltaXplZF0gKz0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCitUVU5FQ09ORkxJQ1RTW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCiAKICMgRmVhdHVyZSBjb21waWxlciBhcmdzCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmFycmVsLXNoaWZ0IiwgIi1teGwtYmFycmVsLXNoaWZ0IiwgIi1tbm8teGwtYmFycmVsLXNoaWZ0IiwgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsICItbXhsLXBhdHRlcm4tY29tcGFyZSIsICItbW5vLXhsLXBhdHRlcm4tY29tcGFyZSIsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJmcmVxdWVuY3ktb3B0aW1pemVkIiwgIi1teGwtZnJlcXVlbmN5IiwgIiIsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiYXJyZWwtc2hpZnQiLCAiIC1teGwtYmFycmVsLXNoaWZ0IiwgIiAtbW5vLXhsLWJhcnJlbC1zaGlmdCIsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCAiIC1teGwtcGF0dGVybi1jb21wYXJlIiwgIiAtbW5vLXhsLXBhdHRlcm4tY29tcGFyZSIsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJmcmVxdWVuY3ktb3B0aW1pemVkIiwgIiAtbXhsLWZyZXF1ZW5jeSIsICIiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiNjQtYml0IiwgIiAtbTY0IiwgIiIsIGQpfSIKIAogIyBEaXNhYmxlIHJlb3JkZXIgZm9yIHY4LjMwIGlmIHBhdHRlcm4tY29tcGFyZSBpcyBub3QgZW5hYmxlZAotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInJlb3JkZXIiLCBcCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicmVvcmRlciIsIFwKICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAidjguMzAiLCBcCiAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCBcCi0gICAgICAgICAgICAgICAgIi1teGwtcmVvcmRlciIsICItbW5vLXhsLXJlb3JkZXIiLCBkKSwgXAotICAgICAgICAgICAgIi1teGwtcmVvcmRlciIsIGQpLCAiLW1uby14bC1yZW9yZGVyIiwgZCl9IgorICAgICAgICAgICAgICAgICIgLW14bC1yZW9yZGVyIiwgIiAtbW5vLXhsLXJlb3JkZXIiLCBkKSwgXAorICAgICAgICAgICAgIiAtbXhsLXJlb3JkZXIiLCBkKSwgIiAtbW5vLXhsLXJlb3JkZXIiLCBkKX0iCiAKICMgRmVhdHVyZSBwYWNrYWdlIGFyY2hpdGVjdHVyZSBmb3JtYXR0aW5nCiBNQlBLR0FSQ0hfVFVORSA9ICIiCkBAIC00NSw5ICs1MSwxMiBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKIAotIyBBcmNoaXRlY3R1cmUgbmFtZSwgZWl0aGVyICdtaWNyb2JsYXplZWInIG9yICdtaWNyb2JsYXplZWwnIGRlcGVuZGluZyBvbiBlbmRpYW5lc3MKLVRVTkVfQVJDSCA9ICJtaWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgImViIiwgImVsIiwgZCl9IgorIyBBcmNoaXRlY3R1cmUgbmFtZSwgZWl0aGVyICdtaWNyb2JsYXplJyBvciAnbWljcm9ibGF6ZWVsJyBkZXBlbmRpbmcgb24gZW5kaWFuZXNzCitUVU5FX0FSQ0ggPSAibWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICIiLCAiZWwiLCBkKX0iCisKKyMgQWRkIDY0LWJpdCB0byB0aGUgUEtHQVJDSCBpZiBlbmFibGVkLgorTUJQS0dBUkNIX1NJWkUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiNjQtYml0IiwgIjY0IiwgIiIsIGQpfSIKIAogIyBQYWNrYWdlIEFyY2hpdGVjdHVyZSBmb3JtYXR0aW5nCi1UVU5FX1BLR0FSQ0ggPSAibWljcm9ibGF6ZSR7TUJQS0dBUkNIX0VORElBTn0ke01CUEtHQVJDSF9WRVJTSU9OfSR7TUJQS0dBUkNIX1RVTkV9JHtNQlBLR0FSQ0hfTUFUSH0iCitUVU5FX1BLR0FSQ0ggPSAibWljcm9ibGF6ZSR7TUJQS0dBUkNIX1NJWkV9JHtNQlBLR0FSQ0hfRU5ESUFOfSR7TUJQS0dBUkNIX1ZFUlNJT059JHtNQlBLR0FSQ0hfVFVORX0ke01CUEtHQVJDSF9NQVRIfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCmluZGV4IGEzMTUxNjYuLmNiYTBhZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKQEAgLTEzLDE0ICsxMywxNCBAQAogVFVORUNPTkZMSUNUU1tmcHUtaGFyZC1leHRlbmRlZF0gPSAiZnB1LXNvZnQiCiAKICMgQ29tcGlsZXIgYXJncwotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnbXVsdGlwbHktbG93JywgJ211bHRpcGx5LWhpZ2gnXSwgJy1tbm8teGwtc29mdC1tdWwnLCAnLW14bC1zb2Z0LW11bCcsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtdWx0aXBseS1oaWdoJywgJy1teGwtbXVsdGlwbHktaGlnaCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydtdWx0aXBseS1sb3cnLCAnbXVsdGlwbHktaGlnaCddLCAnIC1tbm8teGwtc29mdC1tdWwnLCAnIC1teGwtc29mdC1tdWwnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktaGlnaCcsICcgLW14bC1tdWx0aXBseS1oaWdoJywgJycsIGQpfSIKIAotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2RpdmlkZS1oYXJkJywgJy1tbm8teGwtc29mdC1kaXYnLCAnLW14bC1zb2Z0LWRpdicsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdkaXZpZGUtaGFyZCcsICcgLW1uby14bC1zb2Z0LWRpdicsICcgLW14bC1zb2Z0LWRpdicsIGQpfSIKIAotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1zb2Z0JywgJycsICcnLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydmcHUtaGFyZCcsICdmcHUtaGFyZC1leHRlbmRlZCddLCAnLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZC1leHRlbmRlZCcsICctbXhsLWZsb2F0LWNvbnZlcnQgLW14bC1mbG9hdC1zcXJ0JywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtc29mdCcsICcnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnZnB1LWhhcmQnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnXSwgJyAtbWhhcmQtZmxvYXQnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJywgJyAtbXhsLWZsb2F0LWNvbnZlcnQgLW14bC1mbG9hdC1zcXJ0JywgJycsIGQpfSIKIAogIyBTZXQgdGFyZ2V0IGZwdSAoYml0YmFrZSBrbm93biB0YXJnZXQpIHRvIHNvZnQgb3IgaGFyZCAoYmFzaWMgb3IgZXh0ZW5kZWQpCiBUQVJHRVRfRlBVID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZCBmcHUtaGFyZC1leHRlbmRlZCcsICdmcHUtaGFyZCcsICdmcHUtc29mdCcsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCmluZGV4IDk1NTY3NGYuLjVjMzdmNDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwpAQCAtNDQsNiArNDQsNyBAQAogVFVORVZBTElEW3Y5LjVdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS41IgogVFVORVZBTElEW3Y5LjZdICA9ICJNaWNyb0JsYXplIHZlcnNpb24gOS42IgogVFVORVZBTElEW3YxMC4wXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gMTAuMCIKK1RVTkVWQUxJRFt2MTEuMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDExLjAiCiAKICMgVmVyc2lvbiBjb25mbGljdCBtYXRyaXgKIFRVTkVDT05GTElDVFNbdjguMDBdID0gIiIKQEAgLTYwLDggKzYxLDkgQEAKIFRVTkVDT05GTElDVFNbdjkuNV0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCIKIFRVTkVDT05GTElDVFNbdjkuNl0gID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IgogVFVORUNPTkZMSUNUU1t2MTAuMF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiIKK1RVTkVDT05GTElDVFNbdjExLjBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYgdjEwLjAiCiAKICMgVmVyc2lvbiBmbGFncwotVFVORV9DQ0FSR1MgKz0gIi1tY3B1PSR7QG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpfSIKLU1CUEtHQVJDSF9WRVJTSU9OID0gIi0ke0BtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkKX0iCitUVU5FX0NDQVJHUyArPSAiJHtAJy1tY3B1PSVzJyAlIChtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKSkgaWYgbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkgIT0gJycgZWxzZSAnJ30iCitNQlBLR0FSQ0hfVkVSU0lPTiA9ICIke0AnLSVzJyAlIChtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKSkgaWYgbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkgIT0gJycgZWxzZSAnJ30iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCmluZGV4IDhjMGM5NDMuLmVmMThlOWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYwpAQCAtMTUsNyArMTUsOCBAQAogCiBUVU5FVkFMSURbbTMyXSA9ICJQb3dlciBFTEYzMiBzdGFuZGFyZCBBQkkiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJyAtbTMyJywgJycsIGQpfSIKLVRVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJ3Bvd2VycGMnLCAnJywgZCl9IgorVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtMzInLCAncG93ZXJwYyR7RU5ESUFOX1NGWH0nLCAnJywgZCl9IgorRU5ESUFOX1NGWCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2xlJywgZCl9IgogCiBUVU5FVkFMSURbZnB1LWhhcmRdID0gIlVzZSBoYXJkd2FyZSBGUFUuIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkJywgJyAtbWhhcmQtZmxvYXQnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCmluZGV4IDRiYzU5ODMuLmNmNWMzZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKQEAgLTUsNyArNSw3IEBACiBUVU5FVkFMSURbbTY0XSA9ICJQb3dlciBFTEY2NCBzdGFuZGFyZCBBQkkiCiBUVU5FQ09ORkxJQ1RTW202NF0gPSAibTMyIG5mIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ202NCcsICcgLW02NCcsICcnLCBkKX0iCi1UVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgWyAnbTY0JyBdLCAncG93ZXJwYzY0JywgJycsIGQpfSIKK1RVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCBbICdtNjQnIF0sICdwb3dlcnBjNjQke0VORElBTl9TRlh9JywgJycsIGQpfSIKIAogIyBtdXNsIG9ubHkgc3VwcG9ydHMgZWxmdjIgQUJJIGZvciBwcGM2NAogVFVORV9DQ0FSR1MgLj0gIiR7QFsnJywgJyAtbWFiaT1lbGZ2MiddWydsaWJjLW11c2wnIGluIGQuZ2V0VmFyKCdPVkVSUklERVMnKS5zcGxpdCgnOicpXX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKaW5kZXggNTA1MGU0MS4uOGRlZGIxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwpAQCAtOSw3ICs5LDcgQEAKICAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYgXAogICAgICAgICAgICAgIgogCi1NQUNISU5FX0ZFQVRVUkVTID0gImFsc2EgYmx1ZXRvb3RoIHVzYmdhZGdldCBzY3JlZW4iCitNQUNISU5FX0ZFQVRVUkVTID0gImFsc2EgYmx1ZXRvb3RoIHVzYmdhZGdldCBzY3JlZW4gdmZhdCIKIAogTUFDSElORU9WRVJSSURFUyA9LiAicWVtdWFsbDoiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwppbmRleCA5Nzg4MjBhLi5mMWY3YzJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCkBAIC01LDMgKzUsNiBAQAogUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EICs9ICItb2JqZWN0IHJuZy1yYW5kb20sZmlsZW5hbWU9L2Rldi91cmFuZG9tLGlkPXJuZzAgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSxybmc9cm5nMCIKKworIyBGb3IgZ3JhcGhpY3MgdG8gd29yayB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgVkdBIGRldmljZSBhcyB3ZWxsIGFzIHRoZSBuZWNlc3NhcnkgVVNCIGRldmljZXMKK1FCX09QVF9BUFBFTkQgKz0gIi12Z2Egc3RkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwppbmRleCA0OTU0MThmLi41ZGNjOGI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwpAQCAtOCw5ICs4LDggQEAKIAogUUJfQVVESU9fRFJWID0gImFsc2EiCiBRQl9BVURJT19PUFQgPSAiLXNvdW5kaHcgYWM5NyxlczEzNzAiCi1RQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAidmdhPTAgdXZlc2FmYi5tb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IG9wcm9maWxlLnRpbWVyPTEgdXZlc2FmYi50YXNrX3RpbWVvdXQ9LTEiCitRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAib3Byb2ZpbGUudGltZXI9MSIKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCArPSAiLW9iamVjdCBybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kscm5nPXJuZzAiCiAKLVVWRVNBX01PREUgPz0gIjY0MHg0ODAtMzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvYXJjaC1yaXNjdi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvYXJjaC1yaXNjdi5pbmMKaW5kZXggMTlmOGYzZS4uZTNkYmVmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9hcmNoLXJpc2N2LmluYwpAQCAtNCw3ICs0LDEzIEBACiAKIFRVTkVfQVJDSCA9ICIke1RVTkVfQVJDSF90dW5lLSR7REVGQVVMVFRVTkV9fSIKIFRVTkVfUEtHQVJDSCA9ICIke1RVTkVfUEtHQVJDSF90dW5lLSR7REVGQVVMVFRVTkV9fSIKLVRVTkVfQ0NBUkdTIC49ICIiCitUVU5FX0NDQVJHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncmlzY3Y2NG5mJywgJyAtbWFiaT1scDY0JywgJyAnLCBkKX0iCitUVU5FX0NDQVJHU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncmlzY3YzMm5mJywgJyAtbWFiaT1pbHAzMicsICcgJywgZCl9IgogCiAjIFFFTVUgdXNlcm1vZGUgZmFpbHMgd2l0aCBpbnZhbGlkIGluc3RydWN0aW9uIGVycm9yIChGb3IgcmlzY3YzMikKIE1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRF9hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncmlzY3YzMicsICcgcWVtdS11c2VybW9kZScsICcnLCBkKX0iCisKKyMgRml4OiBsZDogdW5yZWNvZ25pemVkIG9wdGlvbiAnLS1oYXNoLXN0eWxlPXN5c3YnCitMSU5LRVJfSEFTSF9TVFlMRV9saWJjLW5ld2xpYiA9ICIiCisjIEZpeDogbGQ6IHVucmVjb2duaXplZCBvcHRpb24gJy0taGFzaC1zdHlsZT1nbnUnCitMSU5LRVJfSEFTSF9TVFlMRV9saWJjLWJhcmVtZXRhbCA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKaW5kZXggMjVkMDQ2My4uNzQxZWViMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYwpAQCAtMywxMCArMywxNCBAQAogVFVORVZBTElEW3Jpc2N2NjRdID0gIkVuYWJsZSA2NC1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMiCiBUVU5FVkFMSURbcmlzY3YzMl0gPSAiRW5hYmxlIDMyLWJpdCBSSVNDLVYgb3B0aW1pemF0aW9ucyIKIAorVFVORVZBTElEW3Jpc2N2NjRuZl0gPSAiRW5hYmxlIDY0LWJpdCBSSVNDLVYgb3B0aW1pemF0aW9ucyBubyBmbG9hdGluZyBwb2ludCIKK1RVTkVWQUxJRFtyaXNjdjMybmZdID0gIkVuYWJsZSAzMi1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMgbm8gZmxvYXRpbmcgcG9pbnQiCisKIFRVTkVWQUxJRFtiaWdlbmRpYW5dID0gIkJpZyBlbmRpYW4gbW9kZSIKIAotQVZBSUxUVU5FUyArPSAicmlzY3Y2NCByaXNjdjMyIgorQVZBSUxUVU5FUyArPSAicmlzY3Y2NCByaXNjdjMyIHJpc2N2NjRuZiByaXNjdjMybmYiCiAKKyMgRGVmYXVsdAogVFVORV9GRUFUVVJFU190dW5lLXJpc2N2NjQgPSAicmlzY3Y2NCIKIFRVTkVfQVJDSF90dW5lLXJpc2N2NjQgPSAicmlzY3Y2NCIKIFRVTkVfUEtHQVJDSF90dW5lLXJpc2N2NjQgPSAicmlzY3Y2NCIKQEAgLTE3LDMgKzIxLDEzIEBACiBUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjMyID0gInJpc2N2MzIiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogCisjIE5vIGZsb2F0CitUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3Y2NG5mID0gIiR7VFVORV9GRUFUVVJFU190dW5lLXJpc2N2NjR9IHJpc2N2NjRuZiIKK1RVTkVfQVJDSF90dW5lLXJpc2N2NjRuZiA9ICJyaXNjdjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcmlzY3Y2NG5mID0gInJpc2N2NjQiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcmlzY3Y2NG5mID0gInJpc2N2NjRuZiIKKworVFVORV9GRUFUVVJFU190dW5lLXJpc2N2MzJuZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjMyfSByaXNjdjMybmYiCitUVU5FX0FSQ0hfdHVuZS1yaXNjdjMybmYgPSAicmlzY3YzMiIKK1RVTkVfUEtHQVJDSF90dW5lLXJpc2N2MzJuZiA9ICJyaXNjdjMyIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2MzJuZiA9ICJyaXNjdjMybmYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKaW5kZXggYjI1OTk1ZC4uMTczY2I0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYwpAQCAtMTAsNyArMTAsNyBAQAogQVJNUEtHQVJDSF90dW5lLWFybTExMzZqZnMgPSAiYXJtMTEzNmpmcyIKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTM2amZzaGYgPSAiYXJtMTEzNmpmcyIKICMgbWNwdSBpcyB1c2VkIHNvIGRvbid0IHVzZSBhcm12NiBhcyB3ZSBkb24ndCB3YW50IG1hcmNoCi1UVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmcyA9ICJhcm0gYXJtMTEzNmpmcyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTM2amZzID0gImFybSB2ZnAgYXJtMTEzNmpmcyIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTM2amZzaGYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmc30gY2FsbGNvbnZlbnRpb24taGFyZCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTM2amZzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2fSBhcm0xMTM2amZzLXZmcCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTM2amZzaGYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZoZn0gYXJtMTEzNmpmc2hmLXZmcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYwppbmRleCBjNzQxZTgwLi5hNjNkNTg1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jCkBAIC05LDcgKzksNyBAQAogQVZBSUxUVU5FUyArPSAiYXJtMTE3Nmp6cyIKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzID0gImFybTExNzZqenMiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTE3Nmp6cyA9ICJhcm0gdGh1bWIgYXJtMTE3Nmp6cyIKLVBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTc2anpzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2dGItbm92ZnB9IGFybTExNzZqenMgYXJtMTE3Nmp6c3QiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTE3Nmp6cyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NnQtbm92ZnB9IGFybTExNzZqenMgYXJtMTE3Nmp6c3QiCiAKIEFWQUlMVFVORVMgKz0gImFybTExNzZqenMtYmUiCiBBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6cy1iZSA9ICIke0FSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwOGI5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMuaW5jCkBAIC0wLDAgKzEsMjMgQEAKK0RFRkFVTFRUVU5FID89ICJjb3J0ZXhhNzItY29ydGV4YTUzIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4YS5pbmMKKworVFVORVZBTElEW2NvcnRleGE3Mi1jb3J0ZXhhNTNdID0gIkVuYWJsZSBiaWcuTElUVExFIENvcnRleC1BNzIuQ29ydGV4LUE1MyBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKKworVFVORUNPTkZMSUNUU1thYXJjaDY0XSA9ICJhcm12NCBhcm12NSBhcm12NiBhcm12NyBhcm12N2EiCisKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTMiLCAiY29ydGV4YTcyLWNvcnRleGE1MzoiLCAiIiAsZCl9IgorCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTcyLWNvcnRleGE1MyIsICIgLW10dW5lPWNvcnRleC1hNzIuY29ydGV4LWE1MyIsICIiLCBkKX0iCisKKyMgY29ydGV4YTcyLmNvcnRleGE1MyBpbXBsaWVzIGNyYyBzdXBwb3J0CitBVkFJTFRVTkVTICs9ICJjb3J0ZXhhNzItY29ydGV4YTUzIGNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvIgorQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICAgICAgICAgICA9ICJjb3J0ZXhhNzItY29ydGV4YTUzIgorQVJNUEtHQVJDSF90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICAgICA9ICJjb3J0ZXhhNzItY29ydGV4YTUzIgorVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjfSBjb3J0ZXhhNzItY29ydGV4YTUzIgorVFVORV9GRUFUVVJFU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm12OGEtY3JjLWNyeXB0b30gY29ydGV4YTcyLWNvcnRleGE1MyIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyY30gICAgICAgIGNvcnRleGE3Mi1jb3J0ZXhhNTMiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8gID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmMtY3J5cHRvfSBjb3J0ZXhhNzItY29ydGV4YTUzIGNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvIgorQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgICAgICA9ICJsaWI2NCIKK0JBU0VfTElCX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8gICAgICAgICAgICAgPSAibGliNjQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyOS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZDZlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjkuaW5jCkBAIC0wLDAgKzEsMzUgQEAKK0RFRkFVTFRUVU5FID89ICJwcGM2NHA5bGUiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKKworVFVORVZBTElEW3Bvd2VyOV0gPSAiRW5hYmxlIElCTSBQb3dlcjkgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI5JywgJyAtbWNwdT1wb3dlcjknLCAnJywgZCl9IgorCitBVkFJTFRVTkVTICs9ICJwcGNwOSBwcGM2NHA5IHBwY3A5bGUgcHBjNjRwOWxlIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDkgPSAibTMyIGZwdS1oYXJkIHBvd2VyOSBhbHRpdmVjIGJpZ2VuZGlhbiIKK0JBU0VfTElCX3R1bmUtcHBjcDkgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtcHBjcDkgPSAicHBjcDkiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjcDkgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjcDkiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA5ID0gIm02NCBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyBiaWdlbmRpYW4iCitCQVNFX0xJQl90dW5lLXBwYzY0cDkgPSAibGliNjQiCitUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NHA5ID0gInBwYzY0cDkiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRwOSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjR9IHBwYzY0cDkiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNwOWxlID0gIm0zMiBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyIKK0JBU0VfTElCX3R1bmUtcHBjcDlsZSA9ICJsaWIiCitUVU5FX1BLR0FSQ0hfdHVuZS1wcGNwOWxlID0gInBwY3A5bGUiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjcDlsZSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjbGV9IHBwY3A5bGUiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA5bGUgPSAibTY0IGZwdS1oYXJkIHBvd2VyOSBhbHRpdmVjIgorQkFTRV9MSUJfdHVuZS1wcGM2NHA5bGUgPSAibGliNjQiCitUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NHA5bGUgPSAicHBjNjRwOWxlIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0cDlsZSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjRsZX0gcHBjNjRwOWxlIgorCisjIGdsaWJjIGNvbmZpZ3VyZSBvcHRpb25zIHRvIGdldCBwb3dlcjkgc3BlY2lmaWMgbGlicmFyeQorR0xJQkNfRVhUUkFfT0VDT05GX3Bvd2VycGM2NCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI5JywgJy0td2l0aC1jcHU9cG93ZXI5JywgJycsIGQpfSIKK0dMSUJDX0VYVFJBX09FQ09ORl9wb3dlcnBjICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjknLCAnLS13aXRoLWNwdT1wb3dlcjknLCAnJywgZCl9IgorCisjIFFFTVUgdXNlcm1vZGUgZmFpbHMgd2l0aCBpbnZhbGlkIGluc3RydWN0aW9uIGVycm9yCitNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICcgcWVtdS11c2VybW9kZScsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCAwMjI3ZjNjLi5hNzI3MTQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKQEAgLTgsNyArOCw3IEBACiBNQUNISU5FX0ZFQVRVUkVTICs9ICJzY3JlZW4ga2V5Ym9hcmQgcGNpIHVzYmhvc3QgZXh0MiBleHQzIHg4NiBcCiAgICAgICAgICAgICAgICAgICAgICBhY3BpIHNlcmlhbCB1c2JnYWRnZXQgYWxzYSIKIAotSU1BR0VfRlNUWVBFUyA/PSAiaGRkaW1nIgorSU1BR0VfRlNUWVBFUyA/PSAid2ljIgogCiBLRVJORUxfSU1BR0VUWVBFID89ICJiekltYWdlIgogCkBAIC0xOCw3ICsxOCw3IEBACiAjIGtlcm5lbC1yZWxhdGVkIHZhcmlhYmxlcwogIwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuNCUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCmluZGV4IDI2ZjQwYjEuLjM2N2ZjZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCkBAIC0xMSw3ICsxMSw3IEBACiAKICMgRm9yIHJ1bnFlbXUKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFybSIKLVFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmlydCIKK1FCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmlydCxoaWdobWVtPW9mZiIKIFFCX0NQVSA9ICItY3B1IGNvcnRleC1hMTUiCiAjIFN0YW5kYXJkIFNlcmlhbCBjb25zb2xlCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlBTUEwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKaW5kZXggZWMyYTg4Ny4uMWUyZDRmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCkBAIC0xMyw3ICsxMyw3IEBACiBRQl9TWVNURU1fTkFNRSA9ICJxZW11LXN5c3RlbS1hYXJjaDY0IgogUUJfTUFDSElORSA9ICItbWFjaGluZSB2aXJ0IgogUUJfQ1BVID0gIi1jcHUgY29ydGV4LWE1NyIKLVFCX0NQVV9LVk0gPSAiLWNwdSBob3N0IgorUUJfQ1BVX0tWTSA9ICItY3B1IGhvc3QgLW1hY2hpbmUgZ2ljLXZlcnNpb249MyIKICMgU3RhbmRhcmQgU2VyaWFsIGNvbnNvbGUKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAiCiAjIEZvciBncmFwaGljcyB0byB3b3JrIHdlIG5lZWQgdG8gZGVmaW5lIHRoZSBWR0EgZGV2aWNlIGFzIHdlbGwgYXMgdGhlIG5lY2Vzc2FyeSBVU0IgZGV2aWNlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKaW5kZXggZmI0Nzg5Zi4uZTdmMjRmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCkBAIC00LDcgKzQsNiBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtOTI2ZWpzLmluYwotI3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCiAKQEAgLTE3LDcgKzE2LDcgQEAKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCArPSAiLW9iamVjdCBybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kscm5nPXJuZzAiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuNCUiCiBRQl9EVEIgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgogCiBLTUFDSElORV9xZW11YXJtdjUgPSAicWVtdWFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXJpc2N2NjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXJpc2N2NjQuY29uZgppbmRleCBiNDVmZGQ1Li5hNzUzYWYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cmlzY3Y2NC5jb25mCkBAIC00LDYgKzQsOCBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3FlbXVyaXNjdi5pbmMKIAorWFZJU09SX1BMQVQgPSAicmlzY3YvdmlydDY0IgorCiBFWFRSQV9JTUFHRURFUEVORFMgKz0gInUtYm9vdCIKIFVCT09UX01BQ0hJTkUgPSAicWVtdS1yaXNjdjY0X3Ntb2RlX2RlZmNvbmZpZyIKIFVCT09UX0VMRiA9ICJ1LWJvb3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCmluZGV4IDY0OGNmMmYuLmRiOTAwNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCkBAIC0zNywxMCArMzcsNiBAQAogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKIAotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKLUtFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgotbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKLQogV0tTX0ZJTEUgPz0gInFlbXV4ODYtZGlyZWN0ZGlzay53a3MiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gInN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3Qgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKaW5kZXggOGUwZGE4Mi4uN2U2NzIzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKQEAgLTM0LDEwICszNCw2IEBACiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgogCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgotS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCi1tb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgotCiBXS1NfRklMRSA/PSAicWVtdXg4Ni1kaXJlY3RkaXNrLndrcyIKIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAic3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZiBiL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKaW5kZXggY2ZlZDNmYi4uNThmMmFjNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCkBAIC05LDYgKzksNyBAQAogU1RBR0lOR19ESVJfSE9TVCA9ICIke1dPUktESVJ9LyR7TUxQUkVGSVh9cmVjaXBlLXN5c3Jvb3QiCiBTVEFHSU5HX0RJUl9UQVJHRVQgPSAiJHtXT1JLRElSfS8ke01MUFJFRklYfXJlY2lwZS1zeXNyb290IgogUkVDSVBFX1NZU1JPT1QgPSAiJHtXT1JLRElSfS8ke01MUFJFRklYfXJlY2lwZS1zeXNyb290IgorUkVDSVBFX1NZU1JPT1RfY2xhc3MtbmF0aXZlID0gIiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QiCiAKIElOSEVSSVQgKz0gIm11bHRpbGliX2dsb2JhbCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9iemlwMiBiL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYnppcDItMS4wLjYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYnppcDIKcmVuYW1lIHRvIHBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYnppcDItMS4wLjYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoIGIvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKaW5kZXggY2NjNGY0ZS4uMDQ1MjdmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKKysrIGIvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKQEAgLTEsMTMgKzEsMTMgQEAKICMhL2Jpbi9zaAogCi1bIC16ICIkRU5WQ0xFQU5FRCIgXSAmJiBleGVjIC91c3IvYmluL2VudiAtaSBFTlZDTEVBTkVEPTEgSE9NRT0iJEhPTUUiIFwKLQlMQ19BTEw9ZW5fVVMuVVRGLTggXAotCVRFUk09JFRFUk0gXAotCUlDRUNDX1BBVEg9IiRJQ0VDQ19QQVRIIiBcCi0JaHR0cF9wcm94eT0iJGh0dHBfcHJveHkiIGh0dHBzX3Byb3h5PSIkaHR0cHNfcHJveHkiIGZ0cF9wcm94eT0iJGZ0cF9wcm94eSIgXAotCW5vX3Byb3h5PSIkbm9fcHJveHkiIGFsbF9wcm94eT0iJGFsbF9wcm94eSIgR0lUX1BST1hZX0NPTU1BTkQ9IiRHSVRfUFJPWFlfQ09NTUFORCIgIiQwIiAiJEAiCi1bIC1mIC9ldGMvZW52aXJvbm1lbnQgXSAmJiAuIC9ldGMvZW52aXJvbm1lbnQKLWV4cG9ydCBQQVRIPWBlY2hvICIkUEFUSCIgfCBzZWQgLWUgJ3MvOlwuLy8nIC1lICdzLzo6LzovJ2AKK2V4cG9ydCBMQ19BTEw9ZW5fVVMuVVRGLTgKKyNNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHB5dGhvbiBpcyBpbnN0YWxsZWQKK0lOSVRfUFlUSE9OPSQod2hpY2ggcHl0aG9uMyAyPi9kZXYvbnVsbCApCitbIC16ICIkSU5JVF9QWVRIT04iIF0gJiYgSU5JVF9QWVRIT049JCh3aGljaCBweXRob24yIDI+L2Rldi9udWxsKQorWyAteiAiJElOSVRfUFlUSE9OIiBdICYmIGVjaG8gIkVycm9yOiBUaGUgU0RLIG5lZWRzIGEgcHl0aG9uIGluc3RhbGxlZCIgJiYgZXhpdCAxCisKKyMgUmVtb3ZlIGludmFsaWQgUEFUSCBlbGVtZW50cyBmaXJzdCAobWF5YmUgZnJvbSBhIHByZXZpb3VzbHkgc2V0dXAgdG9vbGNoYWluIG5vdyBkZWxldGVkCitQQVRIPWAkSU5JVF9QWVRIT04gLWMgJ2ltcG9ydCBvczsgcHJpbnQoIjoiLmpvaW4oZSBmb3IgZSBpbiBvcy5lbnZpcm9uWyJQQVRIIl0uc3BsaXQoIjoiKSBpZiBvcy5wYXRoLmV4aXN0cyhlKSkpJ2AKIAogdHdlYWtwYXRoICgpIHsKICAgICBjYXNlICI6JHtQQVRIfToiIGluCkBAIC0yNDksNyArMjQ5LDcgQEAKICAgICAgICAgcm0gc2RrLnppcCAmJiBleGl0IDEKICAgICBmaQogZWxzZQotICAgIHRhaWwgLW4gKyRwYXlsb2FkX29mZnNldCAkMHwgJFNVRE9fRVhFQyB0YXIgeEogLUMgJHRhcmdldF9zZGtfZGlyIC0tY2hlY2twb2ludD0uMjUwMCAkRVhUUkFfVEFSX09QVElPTlMgfHwgZXhpdCAxCisgICAgdGFpbCAtbiArJHBheWxvYWRfb2Zmc2V0ICQwfCAkU1VET19FWEVDIHRhciBteEogLUMgJHRhcmdldF9zZGtfZGlyIC0tY2hlY2twb2ludD0uMjUwMCAkRVhUUkFfVEFSX09QVElPTlMgfHwgZXhpdCAxCiBmaQogZWNobyAiZG9uZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkgYi9wb2t5L21ldGEvbGliL29lL2VsZi5weQppbmRleCAyNTYyY2VhLi5kZjBhNDU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL2VsZi5weQorKysgYi9wb2t5L21ldGEvbGliL29lL2VsZi5weQpAQCAtMTUsMTMgKzE1LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0X2JlIiA6KDE4MywgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiIDogICAgICAoMywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTY4NiIgOiAgICAgICgzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImVwaXBoYW55IjogICAoNDY0MywgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibG0zMiI6ICAgICAgICgxMzgsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLApAQCAtMzQsNiArMzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NGxlIjogICgyMSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLApAQCAtNTgsNyArNTksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic3BhcmMiOiAgICAgICggMiwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LW11c2wiIDogeyAKQEAgLTY4LDYgKzY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NCI6ICAoICAyMSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjRsZSI6ICAoMjEsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTc4LDcgKzc5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggYjg1ODVkNC4uZGQ3MDBjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQpAQCAtMjgzLDM2ICsyODMsMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJbc1swXV0gPSB7fQogICAgICAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcltzWzBdXVtzWzFdXSA9IChkZXBfcGtnLCBzWzJdKQogICAgIHJldHVybiBzaGxpYl9wcm92aWRlcgotCi0KLWRlZiBucG1fc3BsaXRfcGFja2FnZV9kaXJzKHBrZ2Rpcik6Ci0gICAgIiIiCi0gICAgV29yayBvdXQgdGhlIHBhY2thZ2VzIGZldGNoZWQgYW5kIHVucGFja2VkIGJ5IEJpdEJha2UncyBucG0gZmV0Y2hlcgotICAgIFJldHVybnMgYSBkaWN0IG9mIHBhY2thZ2VuYW1lIC0+IChyZWxwYXRoLCBwYWNrYWdlLmpzb24pIG9yZGVyZWQKLSAgICBzdWNoIHRoYXQgaXQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBQQUNLQUdFUyBhbmQgRklMRVMKLSAgICAiIiIKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotICAgIGltcG9ydCBqc29uCi0gICAgcGFja2FnZXMgPSB7fQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBrZ2Rpcik6Ci0gICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocm9vdCkgPT0gJ25vZGVfbW9kdWxlcyc6Ci0gICAgICAgICAgICBmb3IgZG4gaW4gZGlyczoKLSAgICAgICAgICAgICAgICByZWxwdGggPSBvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGRuKSwgcGtnZGlyKQotICAgICAgICAgICAgICAgIHBrZ2l0ZW1zID0gWycke1BOfSddCi0gICAgICAgICAgICAgICAgZm9yIHBhdGhpdGVtIGluIHJlbHB0aC5zcGxpdCgnLycpOgotICAgICAgICAgICAgICAgICAgICBpZiBwYXRoaXRlbSA9PSAnbm9kZV9tb2R1bGVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIHBrZ2l0ZW1zLmFwcGVuZChwYXRoaXRlbSkKLSAgICAgICAgICAgICAgICBwa2duYW1lID0gJy0nLmpvaW4ocGtnaXRlbXMpLnJlcGxhY2UoJ18nLCAnLScpCi0gICAgICAgICAgICAgICAgcGtnbmFtZSA9IHBrZ25hbWUucmVwbGFjZSgnQCcsICcnKQotICAgICAgICAgICAgICAgIHBrZ2ZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZG4sICdwYWNrYWdlLmpzb24nKQotICAgICAgICAgICAgICAgIGRhdGEgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihwa2dmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhmLnJlYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZXNbcGtnbmFtZV0gPSAocmVscHRoLCBkYXRhKQotICAgICMgV2Ugd2FudCB0aGUgbWFpbiBwYWNrYWdlIGZvciBhIG1vZHVsZSBzb3J0ZWQgKmFmdGVyKiBpdHMgc3VicGFja2FnZXMKLSAgICAjIChzbyB0aGF0IGl0IGRvZXNuJ3Qgb3RoZXJ3aXNlIHN0ZWFsIHRoZSBmaWxlcyBmb3IgdGhlIHN1YnBhY2thZ2UpLCBzbwotICAgICMgdGhpcyBpcyBhIGNoZWFwIHdheSB0byBkbyB0aGF0IHdoaWxzdCBzdGlsbCBoYXZpbmcgYW4gb3RoZXJ3aXNlCi0gICAgIyBhbHBoYWJldGljYWwgc29ydAotICAgIHJldHVybiBPcmRlcmVkRGljdCgoa2V5LCBwYWNrYWdlc1trZXldKSBmb3Iga2V5IGluIHNvcnRlZChwYWNrYWdlcywga2V5PWxhbWJkYSBwa2c6IHBrZyArICd+JykpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CmluZGV4IDRmZjE5Y2YuLmIwNjYwNDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CkBAIC00MCw4ICs0MCw5IEBACiAgICAgdmVyID0gIiIKICAgICBmaWxlbmFtZSA9ICIiCiAgICAgZGVwID0gW10KKyAgICBwcm92ID0gW10KICAgICBwa2dhcmNoID0gIiIKLSAgICBmb3IgbGluZSBpbiBjbWRfb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICBmb3IgbGluZSBpbiBjbWRfb3V0cHV0LnNwbGl0bGluZXMoKStbJyddOgogICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQogICAgICAgICBpZiAnOicgaW4gbGluZToKICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUGFja2FnZTogIik6CkBAIC02NCw2ICs2NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBkZXAuYXBwZW5kKCIlcyBbUkVDXSIgJSByZWNvbW1lbmQpCiAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiUGFja2FnZUFyY2g6ICIpOgogICAgICAgICAgICAgICAgIHBrZ2FyY2ggPSBsaW5lLnNwbGl0KCI6ICIpWzFdCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiUHJvdmlkZXM6ICIpOgorICAgICAgICAgICAgICAgIHByb3ZpZGVzID0gdmVycmVnZXguc3ViKCcnLCBsaW5lLnNwbGl0KCI6ICIpWzFdKQorICAgICAgICAgICAgICAgIGZvciBwcm92aWRlIGluIHByb3ZpZGVzLnNwbGl0KCIsICIpOgorICAgICAgICAgICAgICAgICAgICBwcm92LmFwcGVuZChwcm92aWRlKQogCiAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBhIGJsYW5rIGxpbmUgc2F2ZSB0aGUgcGFja2FnZSBpbmZvcm1hdGlvbgogICAgICAgICBlbGlmIG5vdCBsaW5lOgpAQCAtNzIsMjAgKzc3LDE1IEBACiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAiJXNfJXNfJXMuaXBrIiAlIChwa2csIHZlciwgYXJjaCkKICAgICAgICAgICAgIGlmIHBrZzoKICAgICAgICAgICAgICAgICBvdXRwdXRbcGtnXSA9IHsiYXJjaCI6YXJjaCwgInZlciI6dmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAsICJwa2dhcmNoIjpwa2dhcmNoIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ZmlsZW5hbWUsICJkZXBzIjogZGVwLCAicGtnYXJjaCI6cGtnYXJjaCwgInByb3ZzIjogcHJvdn0KICAgICAgICAgICAgIHBrZyA9ICIiCiAgICAgICAgICAgICBhcmNoID0gIiIKICAgICAgICAgICAgIHZlciA9ICIiCiAgICAgICAgICAgICBmaWxlbmFtZSA9ICIiCiAgICAgICAgICAgICBkZXAgPSBbXQorICAgICAgICAgICAgcHJvdiA9IFtdCiAgICAgICAgICAgICBwa2dhcmNoID0gIiIKIAotICAgIGlmIHBrZzoKLSAgICAgICAgaWYgbm90IGZpbGVuYW1lOgotICAgICAgICAgICAgZmlsZW5hbWUgPSAiJXNfJXNfJXMuaXBrIiAlIChwa2csIHZlciwgYXJjaCkKLSAgICAgICAgb3V0cHV0W3BrZ10gPSB7ImFyY2giOmFyY2gsICJ2ZXIiOnZlciwKLSAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOmZpbGVuYW1lLCAiZGVwcyI6IGRlcCB9Ci0KICAgICByZXR1cm4gb3V0cHV0CiAKIGRlZiBmYWlsZWRfcG9zdGluc3RzX2Fib3J0KHBrZ3MsIGxvZ19wYXRoKToKQEAgLTEwNyw2ICsxMDcsNyBAQAogICAgICAgICAic2g0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAogICAgICAgICAicG93ZXJwYyI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgInBvd2VycGM2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKKyAgICAgICAgInBvd2VycGM2NGxlIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAogICAgICAgICAibWlwcyI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgIm1pcHNpc2EzMnI2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAogICAgICAgICAibWlwczY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLApAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQogICAgIGVudlsiTE9DQUxFQVJDSElWRSJdID0gb2UucGF0aC5qb2luKGxvY2FsZWRpciwgImxvY2FsZS1hcmNoaXZlIikKIAotICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIobG9jYWxlZGlyKToKKyAgICBmb3IgbmFtZSBpbiBzb3J0ZWQob3MubGlzdGRpcihsb2NhbGVkaXIpKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsb2NhbGVkaXIsIG5hbWUpCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CiAgICAgICAgICAgICBjbWQgPSBbImNyb3NzLWxvY2FsZWRlZiIsICItLXZlcmJvc2UiXQpAQCAtMzYwLDcgKzM2MSw3IEBACiAgICAgICAgICAgICAgICAiLS1hZG1pbmRpcj0lcy92YXIvbGliL2Rwa2ciICUgc2VsZi5yb290ZnNfZGlyLAogICAgICAgICAgICAgICAgIi1XIl0KIAotICAgICAgICBjbWQuYXBwZW5kKCItZj1QYWNrYWdlOiAke1BhY2thZ2V9XG5BcmNoaXRlY3R1cmU6ICR7UGFja2FnZUFyY2h9XG5WZXJzaW9uOiAke1ZlcnNpb259XG5GaWxlOiAke1BhY2thZ2V9XyR7VmVyc2lvbn1fJHtBcmNoaXRlY3R1cmV9LmRlYlxuRGVwZW5kczogJHtEZXBlbmRzfVxuUmVjb21tZW5kczogJHtSZWNvbW1lbmRzfVxuXG4iKQorICAgICAgICBjbWQuYXBwZW5kKCItZj1QYWNrYWdlOiAke1BhY2thZ2V9XG5BcmNoaXRlY3R1cmU6ICR7UGFja2FnZUFyY2h9XG5WZXJzaW9uOiAke1ZlcnNpb259XG5GaWxlOiAke1BhY2thZ2V9XyR7VmVyc2lvbn1fJHtBcmNoaXRlY3R1cmV9LmRlYlxuRGVwZW5kczogJHtEZXBlbmRzfVxuUmVjb21tZW5kczogJHtSZWNvbW1lbmRzfVxuUHJvdmlkZXM6ICR7UHJvdmlkZXN9XG5cbiIpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY21kX291dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5zdHJpcCgpLmRlY29kZSgidXRmLTgiKQpAQCAtNTgwLDYgKzU4MSwxMSBAQAogICAgICAgICAjIG9lLXBrZ2RhdGEtdXRpbCByZWFkcyBpdCBmcm9tIGEgZmlsZQogICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSJ3KyIsIHByZWZpeD0iaW5zdGFsbGVkLXBrZ3MiKSBhcyBpbnN0YWxsZWRfcGtnczoKICAgICAgICAgICAgIHBrZ3MgPSBzZWxmLmxpc3RfaW5zdGFsbGVkKCkKKworICAgICAgICAgICAgcHJvdmlkZWRfcGtncyA9IHNldCgpCisgICAgICAgICAgICBmb3IgcGtnIGluIHBrZ3MudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgcHJvdmlkZWRfcGtncyB8PSBzZXQocGtnLmdldCgncHJvdnMnLCBbXSkpCisKICAgICAgICAgICAgIG91dHB1dCA9IG9lLnV0aWxzLmZvcm1hdF9wa2dfbGlzdChwa2dzLCAiYXJjaCIpCiAgICAgICAgICAgICBpbnN0YWxsZWRfcGtncy53cml0ZShvdXRwdXQpCiAgICAgICAgICAgICBpbnN0YWxsZWRfcGtncy5mbHVzaCgpCkBAIC01OTEsMTAgKzU5NywxNSBAQAogICAgICAgICAgICAgaWYgZXhjbHVkZToKICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLS1leGNsdWRlPScgKyAnfCcuam9pbihleGNsdWRlLnNwbGl0KCkpXSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgLi4uIikKICAgICAgICAgICAgICAgICBiYi5ub3RlKCdSdW5uaW5nICVzJyAlIGNtZCkKICAgICAgICAgICAgICAgICBjb21wbGVtZW50YXJ5X3BrZ3MgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgICAgICAgICAgc2VsZi5pbnN0YWxsKGNvbXBsZW1lbnRhcnlfcGtncy5zcGxpdCgpLCBhdHRlbXB0X29ubHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBjb21wbGVtZW50YXJ5X3BrZ3MgPSBzZXQoY29tcGxlbWVudGFyeV9wa2dzLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgc2tpcF9wa2dzID0gc29ydGVkKGNvbXBsZW1lbnRhcnlfcGtncyAmIHByb3ZpZGVkX3BrZ3MpCisgICAgICAgICAgICAgICAgaW5zdGFsbF9wa2dzID0gc29ydGVkKGNvbXBsZW1lbnRhcnlfcGtncyAtIHByb3ZpZGVkX3BrZ3MpCisgICAgICAgICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIC4uLiAlcyAoc2tpcHBlZCBhbHJlYWR5IHByb3ZpZGVkIHBhY2thZ2VzICVzKSIgJSAoCisgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKGluc3RhbGxfcGtncyksCisgICAgICAgICAgICAgICAgICAgICcgJy5qb2luKHNraXBfcGtncykpKQorICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFsbChpbnN0YWxsX3BrZ3MsIGF0dGVtcHRfb25seT1UcnVlKQogICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIkNvdWxkIG5vdCBjb21wdXRlIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgbGlzdC4gQ29tbWFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJQpAQCAtNzY4LDYgKzc3OSw4IEBACiAgICAgICAgICMgVGhpcyBwcmV2ZW50cyBhY2NpZGVudGFsIG1hdGNoaW5nIGFnYWluc3QgbGlic29sdidzIGJ1aWx0LWluIHBvbGljaWVzCiAgICAgICAgIGlmIGxlbihhcmNocykgPD0gMToKICAgICAgICAgICAgIGFyY2hzID0gYXJjaHMgKyBbImJvZ3VzYXJjaCJdCisgICAgICAgICMgVGhpcyBhcmNoaXRlY3R1cmUgbmVlZHMgdG8gYmUgdXBmcm9udCBzbyB0aGF0IHBhY2thZ2VzIHVzaW5nIGl0IGFyZSBwcm9wZXJseSBwcmlvcml0aXplZAorICAgICAgICBhcmNocyA9IFsic2RrX3Byb3ZpZGVzX2R1bW15X3RhcmdldCJdICsgYXJjaHMKICAgICAgICAgY29uZmRpciA9ICIlcy8lcyIgJShzZWxmLnRhcmdldF9yb290ZnMsICJldGMvZG5mL3ZhcnMvIikKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmZkaXIpCiAgICAgICAgIG9wZW4oY29uZmRpciArICJhcmNoIiwgJ3cnKS53cml0ZSgiOiIuam9pbihhcmNocykpCkBAIC0xNjIxLDcgKzE2MzQsNyBAQAogCiAgICAgICAgIG9zLmVudmlyb25bJ0FQVF9DT05GSUcnXSA9IHNlbGYuYXB0X2NvbmZfZmlsZQogCi0gICAgICAgIGNtZCA9ICIlcyAlcyBpbnN0YWxsIC0tZm9yY2UteWVzIC0tYWxsb3ctdW5hdXRoZW50aWNhdGVkICVzIiAlIFwKKyAgICAgICAgY21kID0gIiVzICVzIGluc3RhbGwgLS1mb3JjZS15ZXMgLS1hbGxvdy11bmF1dGhlbnRpY2F0ZWQgLS1uby1yZW1vdmUgJXMiICUgXAogICAgICAgICAgICAgICAoc2VsZi5hcHRfZ2V0X2NtZCwgc2VsZi5hcHRfYXJncywgJyAnLmpvaW4ocGtncykpCiAKICAgICAgICAgdHJ5OgpAQCAtMTc4Myw4ICsxNzk2LDcgQEAKICAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHRhcmdldF9kcGtnX2RpciwgImF2YWlsYWJsZSIpLCAidysiKS5jbG9zZSgpCiAKICAgICBkZWYgcmVtb3ZlX3BhY2thZ2luZ19kYXRhKHNlbGYpOgotICAgICAgICBiYi51dGlscy5yZW1vdmUob3MucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdvcGtnbGliZGlyJykpLCBUcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi50YXJnZXRfcm9vdGZzICsgc2VsZi5kLmdldFZhcignb3BrZ2xpYmRpcicpLCBUcnVlKQogICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi50YXJnZXRfcm9vdGZzICsgIi92YXIvbGliL2Rwa2cvIiwgVHJ1ZSkKIAogICAgIGRlZiBmaXhfYnJva2VuX2RlcGVuZGVuY2llcyhzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZ3JvdXAucHkKaW5kZXggMjQxOWNiYi4uOGZjYWVjZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZ3JvdXAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZ3JvdXAucHkKQEAgLTUsMTcgKzUsMTEgQEAKIGltcG9ydCBpdGVydG9vbHMKIAogZGVmIGlzX29wdGlvbmFsKGZlYXR1cmUsIGQpOgotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoIkZFQVRVUkVfUEFDS0FHRVNfJXMiICUgZmVhdHVyZSkKLSAgICBpZiBwYWNrYWdlczoKLSAgICAgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUsICJvcHRpb25hbCIpKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBib29sKGQuZ2V0VmFyRmxhZygiUEFDS0FHRV9HUk9VUF8lcyIgJSBmZWF0dXJlLCAib3B0aW9uYWwiKSkKKyAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcoIkZFQVRVUkVfUEFDS0FHRVNfJXMiICUgZmVhdHVyZSwgIm9wdGlvbmFsIikpCiAKIGRlZiBwYWNrYWdlcyhmZWF0dXJlcywgZCk6CiAgICAgZm9yIGZlYXR1cmUgaW4gZmVhdHVyZXM6CiAgICAgICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoIkZFQVRVUkVfUEFDS0FHRVNfJXMiICUgZmVhdHVyZSkKLSAgICAgICAgaWYgbm90IHBhY2thZ2VzOgotICAgICAgICAgICAgcGFja2FnZXMgPSBkLmdldFZhcigiUEFDS0FHRV9HUk9VUF8lcyIgJSBmZWF0dXJlKQogICAgICAgICBmb3IgcGtnIGluIChwYWNrYWdlcyBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgIHlpZWxkIHBrZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhdGgucHkgYi9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKaW5kZXggZmEyMDliOS4uMDgyOTcyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQpAQCAtOTksNyArOTksMjIgQEAKICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYykgYW5kIG5vdCBsZW4ob3MubGlzdGRpcihzcmMpKToKICAgICAgICAgcmV0dXJuCiAKLSAgICBpZiAob3Muc3RhdChzcmMpLnN0X2RldiA9PSAgb3Muc3RhdChkc3QpLnN0X2Rldik6CisgICAgY2FuaGFyZCA9IEZhbHNlCisgICAgdGVzdGZpbGUgPSBOb25lCisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjKToKKyAgICAgICAgaWYgbGVuKGZpbGVzKToKKyAgICAgICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGZpbGVzWzBdKQorICAgICAgICAgICAgYnJlYWsKKworICAgIGlmIHRlc3RmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5saW5rKHRlc3RmaWxlLCBvcy5wYXRoLmpvaW4oZHN0LCAndGVzdGZpbGUnKSkKKyAgICAgICAgICAgIG9zLnVubGluayhvcy5wYXRoLmpvaW4oZHN0LCAndGVzdGZpbGUnKSkKKyAgICAgICAgICAgIGNhbmhhcmQgPSBUcnVlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGJiLmRlYnVnKDIsICJIYXJkbGluayB0ZXN0IGZhaWxlZCB3aXRoICIgKyBzdHIoZSkpCisKKyAgICBpZiAoY2FuaGFyZCk6CiAgICAgICAgICMgTmVlZCB0byBjb3B5IGRpcmVjdG9yaWVzIG9ubHkgd2l0aCB0YXIgZmlyc3Qgc2luY2UgY3Agd2lsbCBlcnJvciBpZiB0d28gCiAgICAgICAgICMgd3JpdGVycyB0cnkgYW5kIGNyZWF0ZSBhIGRpcmVjdG9yeSBhdCB0aGUgc2FtZSB0aW1lCiAgICAgICAgIGNtZCA9ICJjZCAlczsgZmluZCAuIC10eXBlIGQgLXByaW50IHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1TIC1DICVzIC1wIC0tbm8tcmVjdXJzaW9uIC0tZmlsZXMtZnJvbSAtIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14aGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKQEAgLTEyMSwxMiArMTM2LDkgQEAKIGRlZiBjb3B5aGFyZGxpbmsoc3JjLCBkc3QpOgogICAgICIiIk1ha2UgYSBoYXJkIGxpbmsgd2hlbiBwb3NzaWJsZSwgb3RoZXJ3aXNlIGNvcHkuIiIiCiAKLSAgICAjIFdlIG5lZWQgdG8gc3RhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGFzIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHByb2JhYmx5Ci0gICAgIyBkb2Vzbid0IGV4aXN0IHlldC4KLSAgICBkc3RkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZHN0KQotICAgIGlmIG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gb3Muc3RhdChkc3RkaXIpLnN0X2RldjoKKyAgICB0cnk6CiAgICAgICAgIG9zLmxpbmsoc3JjLCBkc3QpCi0gICAgZWxzZToKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCiAKIGRlZiByZW1vdmUocGF0aCwgcmVjdXJzZT1UcnVlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wcnNlcnZpY2UucHkKaW5kZXggYjExMzJjYy4uMmQzYzljNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wcnNlcnZpY2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wcnNlcnZpY2UucHkKQEAgLTMsNiArMywxMCBAQAogIwogCiBkZWYgcHJzZXJ2X21ha2VfY29ubihkLCBjaGVjayA9IEZhbHNlKToKKyAgICAjIE90aGVyd2lzZSB0aGlzIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gcmVjaXBlcyB3aGljaCBlLmcuIGluaGVyaXQgcHl0aG9uM25hdGl2ZSAod2hpY2ggc2V0cyBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRSkgd2l0aDoKKyAgICAjIE5vIG1vZHVsZSBuYW1lZCAnX3N5c2NvbmZpZ2RhdGEnCisgICAgaWYgJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBkZWwgb3MuZW52aXJvblsnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnXQogICAgIGltcG9ydCBwcnNlcnYuc2VydgogICAgIGhvc3RfcGFyYW1zID0gbGlzdChbX2YgZm9yIF9mIGluIChkLmdldFZhcigiUFJTRVJWX0hPU1QiKSBvciAnJykuc3BsaXQoJzonKSBpZiBfZl0pCiAgICAgdHJ5OgpAQCAtNzksNDEgKzgzLDQwIEBACiAgICAgZGYgPSBkLmdldFZhcignUFJTRVJWX0RVTVBGSUxFJykKICAgICAjd3JpdGUgZGF0YQogICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoIiVzLmxvY2siICUgZGYpCi0gICAgZiA9IG9wZW4oZGYsICJhIikKLSAgICBpZiBtZXRhaW5mbzoKLSAgICAgICAgI2R1bXAgY29sdW1uIGluZm8gCi0gICAgICAgIGYud3JpdGUoIiNQUl9jb3JlX3ZlciA9IFwiJXNcIlxuXG4iICUgbWV0YWluZm9bJ2NvcmVfdmVyJ10pOwotICAgICAgICBmLndyaXRlKCIjVGFibGU6ICVzXG4iICUgbWV0YWluZm9bJ3RibF9uYW1lJ10pCi0gICAgICAgIGYud3JpdGUoIiNDb2x1bW5zOlxuIikKLSAgICAgICAgZi53cml0ZSgiI25hbWUgICAgICBcdCB0eXBlICAgIFx0IG5vdG4gICAgXHQgZGZsdCAgICBcdCBwa1xuIikKLSAgICAgICAgZi53cml0ZSgiIy0tLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tXG4iKQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4obWV0YWluZm9bJ2NvbF9pbmZvJ10pKToKLSAgICAgICAgICAgIGYud3JpdGUoIiMlMTBzXHQgJThzXHQgJThzXHQgJThzXHQgJTRzXG4iICUgCi0gICAgICAgICAgICAgICAgICAgIChtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnbmFtZSddLCAKLSAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWyd0eXBlJ10sIAotICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ25vdG51bGwnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnZGZsdF92YWx1ZSddLCAKLSAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydwayddKSkKLSAgICAgICAgZi53cml0ZSgiXG4iKQorICAgIHdpdGggb3BlbihkZiwgImEiKSBhcyBmOgorICAgICAgICBpZiBtZXRhaW5mbzoKKyAgICAgICAgICAgICNkdW1wIGNvbHVtbiBpbmZvCisgICAgICAgICAgICBmLndyaXRlKCIjUFJfY29yZV92ZXIgPSBcIiVzXCJcblxuIiAlIG1ldGFpbmZvWydjb3JlX3ZlciddKTsKKyAgICAgICAgICAgIGYud3JpdGUoIiNUYWJsZTogJXNcbiIgJSBtZXRhaW5mb1sndGJsX25hbWUnXSkKKyAgICAgICAgICAgIGYud3JpdGUoIiNDb2x1bW5zOlxuIikKKyAgICAgICAgICAgIGYud3JpdGUoIiNuYW1lICAgICAgXHQgdHlwZSAgICBcdCBub3RuICAgIFx0IGRmbHQgICAgXHQgcGtcbiIpCisgICAgICAgICAgICBmLndyaXRlKCIjLS0tLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS1cbiIpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4obWV0YWluZm9bJ2NvbF9pbmZvJ10pKToKKyAgICAgICAgICAgICAgICBmLndyaXRlKCIjJTEwc1x0ICU4c1x0ICU4c1x0ICU4c1x0ICU0c1xuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAobWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsndHlwZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydub3RudWxsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ2RmbHRfdmFsdWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsncGsnXSkpCisgICAgICAgICAgICBmLndyaXRlKCJcbiIpCiAKLSAgICBpZiBsb2NrZG93bjoKLSAgICAgICAgZi53cml0ZSgiUFJTRVJWX0xPQ0tET1dOID0gXCIxXCJcblxuIikKKyAgICAgICAgaWYgbG9ja2Rvd246CisgICAgICAgICAgICBmLndyaXRlKCJQUlNFUlZfTE9DS0RPV04gPSBcIjFcIlxuXG4iKQogCi0gICAgaWYgZGF0YWluZm86Ci0gICAgICAgIGlkeCA9IHt9Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihkYXRhaW5mbykpOgotICAgICAgICAgICAgcGtnYXJjaCA9IGRhdGFpbmZvW2ldWydwa2dhcmNoJ10KLSAgICAgICAgICAgIHZhbHVlID0gZGF0YWluZm9baV1bJ3ZhbHVlJ10KLSAgICAgICAgICAgIGlmIHBrZ2FyY2ggbm90IGluIGlkeDoKLSAgICAgICAgICAgICAgICBpZHhbcGtnYXJjaF0gPSBpCi0gICAgICAgICAgICBlbGlmIHZhbHVlID4gZGF0YWluZm9baWR4W3BrZ2FyY2hdXVsndmFsdWUnXToKLSAgICAgICAgICAgICAgICBpZHhbcGtnYXJjaF0gPSBpCi0gICAgICAgICAgICBmLndyaXRlKCJQUkFVVE8kJXMkJXMkJXMgPSBcIiVzXCJcbiIgJSAKLSAgICAgICAgICAgICAgICAoc3RyKGRhdGFpbmZvW2ldWyd2ZXJzaW9uJ10pLCBwa2dhcmNoLCBzdHIoZGF0YWluZm9baV1bJ2NoZWNrc3VtJ10pLCBzdHIodmFsdWUpKSkKLSAgICAgICAgaWYgbm90IG5vbWF4OgotICAgICAgICAgICAgZm9yIGkgaW4gaWR4OgotICAgICAgICAgICAgICAgIGYud3JpdGUoIlBSQVVUT18lc18lcyA9IFwiJXNcIlxuIiAlIChzdHIoZGF0YWluZm9baWR4W2ldXVsndmVyc2lvbiddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsncGtnYXJjaCddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsndmFsdWUnXSkpKQotICAgIGYuY2xvc2UoKQorICAgICAgICBpZiBkYXRhaW5mbzoKKyAgICAgICAgICAgIGlkeCA9IHt9CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZGF0YWluZm8pKToKKyAgICAgICAgICAgICAgICBwa2dhcmNoID0gZGF0YWluZm9baV1bJ3BrZ2FyY2gnXQorICAgICAgICAgICAgICAgIHZhbHVlID0gZGF0YWluZm9baV1bJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICBpZiBwa2dhcmNoIG5vdCBpbiBpZHg6CisgICAgICAgICAgICAgICAgICAgIGlkeFtwa2dhcmNoXSA9IGkKKyAgICAgICAgICAgICAgICBlbGlmIHZhbHVlID4gZGF0YWluZm9baWR4W3BrZ2FyY2hdXVsndmFsdWUnXToKKyAgICAgICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQorICAgICAgICAgICAgICAgIGYud3JpdGUoIlBSQVVUTyQlcyQlcyQlcyA9IFwiJXNcIlxuIiAlCisgICAgICAgICAgICAgICAgICAgIChzdHIoZGF0YWluZm9baV1bJ3ZlcnNpb24nXSksIHBrZ2FyY2gsIHN0cihkYXRhaW5mb1tpXVsnY2hlY2tzdW0nXSksIHN0cih2YWx1ZSkpKQorICAgICAgICAgICAgaWYgbm90IG5vbWF4OgorICAgICAgICAgICAgICAgIGZvciBpIGluIGlkeDoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiUFJBVVRPXyVzXyVzID0gXCIlc1wiXG4iICUgKHN0cihkYXRhaW5mb1tpZHhbaV1dWyd2ZXJzaW9uJ10pLHN0cihkYXRhaW5mb1tpZHhbaV1dWydwa2dhcmNoJ10pLHN0cihkYXRhaW5mb1tpZHhbaV1dWyd2YWx1ZSddKSkpCiAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAogZGVmIHByc2Vydl9jaGVja19hdmFpbChkKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcWEucHkgYi9wb2t5L21ldGEvbGliL29lL3FhLnB5CmluZGV4IDIxMDY2YzQuLmVhODMxYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9xYS5weQpAQCAtNDEsMTMgKzQxLDE1IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYub2JqZHVtcF9vdXRwdXQgPSB7fQorICAgICAgICBzZWxmLmRhdGEgPSBOb25lCiAKICAgICAjIENvbnRleHQgTWFuYWdlciBmdW5jdGlvbnMgdG8gY2xvc2UgdGhlIG1tYXAgZXhwbGljaXRseQogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKLSAgICAgICAgc2VsZi5kYXRhLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5kYXRhOgorICAgICAgICAgICAgc2VsZi5kYXRhLmNsb3NlKCkKIAogICAgIGRlZiBvcGVuKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oc2VsZi5uYW1lLCAicmIiKSBhcyBmOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKaW5kZXggNjMwYWU5Ni4uNzMyNDIwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CkBAIC00MjEsNiArNDIxLDggQEAKICAgICAgICAgICAgICMgRW5zdXJlIHdlIGhhbmRsZSBjbGFzcy10YXJnZXQgaWYgd2UncmUgZGVhbGluZyB3aXRoIG9uZSBvZiB0aGUgdmFyaWFudHMKICAgICAgICAgICAgIHZhcmlhbnRzLmFwcGVuZCgndGFyZ2V0JykKICAgICAgICAgICAgIGZvciB2YXJpYW50IGluIHZhcmlhbnRzOgorICAgICAgICAgICAgICAgIGlmIHZhcmlhbnQuc3RhcnRzd2l0aCgiZGV2dXBzdHJlYW0iKToKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignU1JDUFYnLCAnZ2l0JykKICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdDTEFTU09WRVJSSURFJywgJ2NsYXNzLSVzJyAlIHZhcmlhbnQpCiAgICAgICAgICAgICAgICAgZmV0Y2hfdXJscyhsb2NhbGRhdGEpCiAKQEAgLTEwNTksNyArMTA2MSw2IEBACiAgICAgZGF0YV9jb3B5X2xpc3QgPSBbXQogICAgIGNvcHlfdmFycyA9ICgnU1JDX1VSSScsCiAgICAgICAgICAgICAgICAgICdQVicsCi0gICAgICAgICAgICAgICAgICdHSVRESVInLAogICAgICAgICAgICAgICAgICAnRExfRElSJywKICAgICAgICAgICAgICAgICAgJ1BOJywKICAgICAgICAgICAgICAgICAgJ0NBQ0hFJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKaW5kZXggYzYyZmE1Zi4uY2Q2NWU2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKQEAgLTEyNiwxNyArMTI2LDE2IEBACiAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5pbWFnZV9yb290ZnMgKyBvcy5wYXRoLmRpcm5hbWUoZGlyKSkKICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzZWxmLmltYWdlX3Jvb3RmcyArICctb3JpZycgKyBkaXIsIHNlbGYuaW1hZ2Vfcm9vdGZzICsgZGlyLCBzeW1saW5rcz1UcnVlKQogCi0gICAgICAgIGNwYXRoID0gb2UuY2FjaGVkcGF0aC5DYWNoZWRQYXRoKCkKICAgICAgICAgIyBDb3B5IGZpbGVzIGxvY2F0ZWQgaW4gL3Vzci9saWIvZGVidWcgb3IgL3Vzci9zcmMvZGVidWcKICAgICAgICAgZm9yIGRpciBpbiBbIi91c3IvbGliL2RlYnVnIiwgIi91c3Ivc3JjL2RlYnVnIl06CiAgICAgICAgICAgICBzcmMgPSBzZWxmLmltYWdlX3Jvb3RmcyArICctb3JpZycgKyBkaXIKLSAgICAgICAgICAgIGlmIGNwYXRoLmV4aXN0cyhzcmMpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3JjKToKICAgICAgICAgICAgICAgICBkc3QgPSBzZWxmLmltYWdlX3Jvb3RmcyArIGRpcgogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZHN0KSkKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjLCBkc3QpCiAKICAgICAgICAgIyBDb3B5IGZpbGVzIHdpdGggc3VmZml4ICcuZGVidWcnIG9yIGxvY2F0ZWQgaW4gJy5kZWJ1ZycgZGlyLgotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gY3BhdGgud2FsayhzZWxmLmltYWdlX3Jvb3RmcyArICctb3JpZycpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLmltYWdlX3Jvb3RmcyArICctb3JpZycpOgogICAgICAgICAgICAgcmVsYXRpdmVfZGlyID0gcm9vdFtsZW4oc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnKTpdCiAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCcuZGVidWcnKSBvciAnLy5kZWJ1ZycgaW4gcmVsYXRpdmVfZGlyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCBjNTY2Y2U1Li5kMjRlMzczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQpAQCAtMTAzLDYgKzEwMyw4IEBACiAgICAgICAgIHNlbGYudW5sb2NrZWRyZWNpcGVzID0gKGRhdGEuZ2V0VmFyKCJTSUdHRU5fVU5MT0NLRURfUkVDSVBFUyIpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKS5zcGxpdCgpCiAgICAgICAgIHNlbGYudW5sb2NrZWRyZWNpcGVzID0geyBrOiAiIiBmb3IgayBpbiBzZWxmLnVubG9ja2VkcmVjaXBlcyB9CisgICAgICAgIHNlbGYuYnVpbGRhcmNoID0gZGF0YS5nZXRWYXIoJ0JVSUxEX0FSQ0gnKQorICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IEZhbHNlCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0YXNrc19yZXNvbHZlZChzZWxmLCB2aXJ0bWFwLCB2aXJ0cG5tYXAsIGRhdGFDYWNoZSk6CkBAIC0xNDAsOCArMTQyLDI3IEBACiAgICAgICAgIHNlbGYuZHVtcF9sb2NrZWRzaWdzKHNpZ2ZpbGUpCiAgICAgICAgIHJldHVybiBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5kdW1wX3NpZ3MoZGF0YUNhY2hlLCBvcHRpb25zKQogCisgICAgZGVmIHByZXBfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgICAgICBzdXBlcigpLnByZXBfdGFza2hhc2godGlkLCBkZXBzLCBkYXRhQ2FjaGUpCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgImV4dHJhbWV0aG9kIik6CisgICAgICAgICAgICAoXywgXywgXywgZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQorICAgICAgICAgICAgaW5oZXJpdHMgPSAiICIuam9pbihkYXRhQ2FjaGUuaW5oZXJpdHNbZm5dKSAgICAKKyAgICAgICAgICAgIGlmIGluaGVyaXRzLmZpbmQoIi9uYXRpdmUuYmJjbGFzcyIpICE9IC0xIG9yIGluaGVyaXRzLmZpbmQoIi9jcm9zcy5iYmNsYXNzIikgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5leHRyYW1ldGhvZFt0aWRdID0gIjoiICsgc2VsZi5idWlsZGFyY2gKKwogICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgotICAgICAgICBoID0gc3VwZXIoYmIuc2lnZ2VuLlNpZ25hdHVyZUdlbmVyYXRvckJhc2ljSGFzaCwgc2VsZikuZ2V0X3Rhc2toYXNoKHRpZCwgZGVwcywgZGF0YUNhY2hlKQorICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXM6CisgICAgICAgICAgICBpZiBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKworICAgICAgICAjIGdldF90YXNraGFzaCB3aWxsIGNhbGwgZ2V0X3VuaWhhc2ggaW50ZXJuYWxseSBpbiB0aGUgcGFyZW50IGNsYXNzLCB3ZSAKKyAgICAgICAgIyBuZWVkIHRvIGRpc2FibGUgb3VyIGZpbHRlciBvZiBpdCB3aGlsc3QgdGhpcyBydW5zIGVsc2UKKyAgICAgICAgIyBpbmNvcnJlY3QgaGFzaGVzIGNhbiBiZSBjYWxjdWxhdGVkLgorICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IFRydWUKKyAgICAgICAgaCA9IHN1cGVyKCkuZ2V0X3Rhc2toYXNoKHRpZCwgZGVwcywgZGF0YUNhY2hlKQorICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IEZhbHNlCiAKICAgICAgICAgKG1jLCBfLCB0YXNrLCBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCiAKQEAgLTE2OSw4ICsxOTAsOSBAQAogICAgICAgICAgICAgICAgIGhfbG9ja2VkID0gc2VsZi5sb2NrZWRzaWdzW3JlY2lwZW5hbWVdW3Rhc2tdWzBdCiAgICAgICAgICAgICAgICAgdmFyID0gc2VsZi5sb2NrZWRzaWdzW3JlY2lwZW5hbWVdW3Rhc2tdWzFdCiAgICAgICAgICAgICAgICAgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXSA9IGhfbG9ja2VkCi0gICAgICAgICAgICAgICAgdW5paGFzaCA9IHN1cGVyKCkuZ2V0X3VuaWhhc2godGlkKQotICAgICAgICAgICAgICAgIHNlbGYudGFza2hhc2hbdGlkXSA9IGhfbG9ja2VkCisgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBUcnVlCisgICAgICAgICAgICAgICAgdW5paGFzaCA9IHNlbGYuZ2V0X3VuaWhhc2godGlkKQorICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmFsID0gRmFsc2UKICAgICAgICAgICAgICAgICAjYmIud2FybigiVXNpbmcgJXMgJXMgJXMiICUgKHJlY2lwZW5hbWUsIHRhc2ssIGgpKQogCiAgICAgICAgICAgICAgICAgaWYgaCAhPSBoX2xvY2tlZCBhbmQgaF9sb2NrZWQgIT0gdW5paGFzaDoKQEAgLTE3OCwxNyArMjAwLDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyZWNpcGVuYW1lLCB0YXNrLCBoLCBoX2xvY2tlZCwgdmFyKSkKIAogICAgICAgICAgICAgICAgIHJldHVybiBoX2xvY2tlZAorCisgICAgICAgIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0gPSBGYWxzZQogICAgICAgICAjYmIud2FybigiJXMgJXMgJXMiICUgKHJlY2lwZW5hbWUsIHRhc2ssIGgpKQogICAgICAgICByZXR1cm4gaAogCisgICAgZGVmIGdldF9zdGFtcGZpbGVfaGFzaChzZWxmLCB0aWQpOgorICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXMgYW5kIHNlbGYubG9ja2VkaGFzaGVzW3RpZF06CisgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NrZWRoYXNoZXNbdGlkXQorICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfc3RhbXBmaWxlX2hhc2godGlkKQorCiAgICAgZGVmIGdldF91bmloYXNoKHNlbGYsIHRpZCk6Ci0gICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlczoKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzIGFuZCBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdIGFuZCBub3Qgc2VsZi5faW50ZXJuYWw6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NrZWRoYXNoZXNbdGlkXQogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfdW5paGFzaCh0aWQpCiAKICAgICBkZWYgZHVtcF9zaWd0YXNrKHNlbGYsIGZuLCB0YXNrLCBzdGFtcGJhc2UsIHJ1bnRpbWUpOgogICAgICAgICB0aWQgPSBmbiArICI6IiArIHRhc2sKLSAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzOgorICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXMgYW5kIHNlbGYubG9ja2VkaGFzaGVzW3RpZF06CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc3VwZXIoYmIuc2lnZ2VuLlNpZ25hdHVyZUdlbmVyYXRvckJhc2ljSGFzaCwgc2VsZikuZHVtcF9zaWd0YXNrKGZuLCB0YXNrLCBzdGFtcGJhc2UsIHJ1bnRpbWUpCiAKQEAgLTQ0OCwxMSArNDc3LDE0IEBACiAgICAgaCA9IGhhc2hsaWIuc2hhMjU2KCkKICAgICBwcmV2X2RpciA9IG9zLmdldGN3ZCgpCiAgICAgaW5jbHVkZV9vd25lcnMgPSBvcy5lbnZpcm9uLmdldCgnUFNFVURPX0RJU0FCTEVEJykgPT0gJzAnCisgICAgZXh0cmFfY29udGVudCA9IGQuZ2V0VmFyKCdIQVNIRVFVSVZfSEFTSF9WRVJTSU9OJykKIAogICAgIHRyeToKICAgICAgICAgb3MuY2hkaXIocGF0aCkKIAogICAgICAgICB1cGRhdGVfaGFzaCgiT0VPdXRoYXNoQmFzaWNcbiIpCisgICAgICAgIGlmIGV4dHJhX2NvbnRlbnQ6CisgICAgICAgICAgICB1cGRhdGVfaGFzaChleHRyYV9jb250ZW50ICsgIlxuIikKIAogICAgICAgICAjIEl0IGlzIG9ubHkgY3VycmVudGx5IHVzZWZ1bCB0byBnZXQgZXF1aXZhbGVudCBoYXNoZXMgZm9yIHRoaW5ncyB0aGF0CiAgICAgICAgICMgY2FuIGJlIHJlc3RvcmVkIGZyb20gc3N0YXRlLiBTaW5jZSB0aGUgc3N0YXRlIG9iamVjdCBpcyBuYW1lZCB1c2luZwpAQCAtNTEyLDggKzU0NCwxMiBAQAogICAgICAgICAgICAgICAgICAgICBhZGRfcGVybShzdGF0LlNfSVhPVEgsICd4JykKIAogICAgICAgICAgICAgICAgIGlmIGluY2x1ZGVfb3duZXJzOgotICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaGFzaCgiICUxMHMiICUgcHdkLmdldHB3dWlkKHMuc3RfdWlkKS5wd19uYW1lKQotICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaGFzaCgiICUxMHMiICUgZ3JwLmdldGdyZ2lkKHMuc3RfZ2lkKS5ncl9uYW1lKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaGFzaCgiICUxMHMiICUgcHdkLmdldHB3dWlkKHMuc3RfdWlkKS5wd19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIGdycC5nZXRncmdpZChzLnN0X2dpZCkuZ3JfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiS2V5RXJyb3IgaW4gJXMiICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgICAgICAgICB1cGRhdGVfaGFzaCgiICIpCiAgICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTQkxLKHMuc3RfbW9kZSkgb3Igc3RhdC5TX0lTQ0hSKHMuc3RfbW9kZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQppbmRleCA2NTJiMmJlLi4xM2Y0MjcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgICIiIgogICAgIHJldHVybiBiYi51dGlscy5jb250YWluc19hbnkoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpCiAKLWRlZiBwYXJhbGxlbF9tYWtlKGQpOgorZGVmIHBhcmFsbGVsX21ha2UoZCwgbWFrZWluc3Q9RmFsc2UpOgogICAgICIiIgogICAgIFJldHVybiB0aGUgaW50ZWdlciB2YWx1ZSBmb3IgdGhlIG51bWJlciBvZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZSB3aGVuCiAgICAgYnVpbGRpbmcsIHNjcmFwZWQgb3V0IG9mIFBBUkFMTEVMX01BS0UuIElmIG5vIHBhcmFsbGVsaXphdGlvbiBvcHRpb24gaXMKQEAgLTE3Nyw3ICsxNzcsMTAgQEAKIAogICAgIGUuZy4gaWYgUEFSQUxMRUxfTUFLRSA9ICItaiAxMCIsIHRoaXMgd2lsbCByZXR1cm4gMTAgYXMgYW4gaW50ZWdlci4KICAgICAiIiIKLSAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRScpIG9yICcnKS5zcGxpdCgpCisgICAgaWYgbWFrZWluc3Q6CisgICAgICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFSU5TVCcpIG9yICcnKS5zcGxpdCgpCisgICAgZWxzZToKKyAgICAgICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQogICAgICMgbG9vayBmb3IgJy1qJyBhbmQgdGhyb3cgb3RoZXIgb3B0aW9ucyAoZS5nLiAnLWwnKSBhd2F5CiAgICAgd2hpbGUgcG06CiAgICAgICAgIG9wdCA9IHBtLnBvcCgwKQpAQCAtMTkyLDcgKzE5NSw3IEBACiAKICAgICByZXR1cm4gTm9uZQogCi1kZWYgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCBmbXQsIGxpbWl0PU5vbmUpOgorZGVmIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgZm10LCBsaW1pdD1Ob25lLCBtYWtlaW5zdD1GYWxzZSk6CiAgICAgIiIiCiAgICAgSGVscGVyIHV0aWxpdHkgdG8gY29uc3RydWN0IGEgcGFyYWxsZWwgbWFrZSBhcmd1bWVudCBmcm9tIHRoZSBudW1iZXIgb2YKICAgICBwYXJhbGxlbCB0aHJlYWRzIHNwZWNpZmllZCBpbiBQQVJBTExFTF9NQUtFLgpAQCAtMjA1LDcgKzIwOCw3IEBACiAgICAgZS5nLiBpZiBQQVJBTExFTF9NQUtFID0gIi1qIDEwIiwgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCAiLW4gJWQiKSB3aWxsIHJldHVybgogICAgICItbiAxMCIKICAgICAiIiIKLSAgICB2ID0gcGFyYWxsZWxfbWFrZShkKQorICAgIHYgPSBwYXJhbGxlbF9tYWtlKGQsIG1ha2VpbnN0KQogICAgIGlmIHY6CiAgICAgICAgIGlmIGxpbWl0OgogICAgICAgICAgICAgdiA9IG1pbihsaW1pdCwgdikKQEAgLTI0NSw5ICsyNDgsMTAgQEAKICAgICB0cmltbWVkID0gIi4iLmpvaW4ocGFydHNbOm51bV9wYXJ0c10pCiAgICAgcmV0dXJuIHRyaW1tZWQKIAotZGVmIGNwdV9jb3VudCgpOgorZGVmIGNwdV9jb3VudChhdF9sZWFzdD0xKToKICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0gICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgIGNwdXMgPSBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKyAgICByZXR1cm4gbWF4KGNwdXMsIGF0X2xlYXN0KQogCiBkZWYgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKGQsIGNtZHMpOgogICAgIGlmIGNtZHMgaXMgTm9uZToKQEAgLTM2OSw2ICszNzMsMzcgQEAKIAogICAgIHJldHVybiBvdXRwdXRfc3RyCiAKKworIyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBob3N0IGNvbXBpbGVyIHZlcnNpb24KKyMgRG8gbm90IGFzc3VtZSB0aGUgY29tcGlsZXIgaXMgZ2NjCitkZWYgZ2V0X2hvc3RfY29tcGlsZXJfdmVyc2lvbihkLCB0YXNrY29udGV4dG9ubHk9RmFsc2UpOgorICAgIGltcG9ydCByZSwgc3VicHJvY2VzcworCisgICAgaWYgdGFza2NvbnRleHRvbmx5IGFuZCBkLmdldFZhcignQkJfV09SS0VSQ09OVEVYVCcpICE9ICcxJzoKKyAgICAgICAgcmV0dXJuCisKKyAgICBjb21waWxlciA9IGQuZ2V0VmFyKCJCVUlMRF9DQyIpCisgICAgIyBHZXQgcmlkIG9mIGNjYWNoZSBzaW5jZSBpdCBpcyBub3QgcHJlc2VudCB3aGVuIHBhcnNpbmcuCisgICAgaWYgY29tcGlsZXIuc3RhcnRzd2l0aCgnY2NhY2hlICcpOgorICAgICAgICBjb21waWxlciA9IGNvbXBpbGVyWzc6XQorICAgIHRyeToKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgIyBkYXRhc3RvcmUgUEFUSCBkb2VzIG5vdCBjb250YWluIHNlc3Npb24gUEFUSCBhcyBzZXQgYnkgZW52aXJvbm1lbnQtc2V0dXAtLi4uCisgICAgICAgICMgdGhpcyBicmVha3MgdGhlIGluc3RhbGwtYnVpbGR0b29scyB1c2UtY2FzZQorICAgICAgICAjIGVudlsiUEFUSCJdID0gZC5nZXRWYXIoIlBBVEgiKQorICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiJXMgLS12ZXJzaW9uIiAlIGNvbXBpbGVyLCBcCisgICAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIGVudj1lbnYsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgIGJiLmZhdGFsKCJFcnJvciBydW5uaW5nICVzIC0tdmVyc2lvbjogJXMiICUgKGNvbXBpbGVyLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQorCisgICAgbWF0Y2ggPSByZS5tYXRjaChyIi4qIChcZCtcLlxkKylcLlxkKy4qIiwgb3V0cHV0LnNwbGl0KCdcbicpWzBdKQorICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgYmIuZmF0YWwoIkNhbid0IGdldCBjb21waWxlciB2ZXJzaW9uIGZyb20gJXMgLS12ZXJzaW9uIG91dHB1dCIgJSBjb21waWxlcikKKworICAgIHZlcnNpb24gPSBtYXRjaC5ncm91cCgxKQorICAgIHJldHVybiBjb21waWxlciwgdmVyc2lvbgorCisKIGRlZiBob3N0X2djY192ZXJzaW9uKGQsIHRhc2tjb250ZXh0b25seT1GYWxzZSk6CiAgICAgaW1wb3J0IHJlLCBzdWJwcm9jZXNzCiAKQEAgLTM4Nyw3ICs0MjIsNyBAQAogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICBiYi5mYXRhbCgiRXJyb3IgcnVubmluZyAlcyAtLXZlcnNpb246ICVzIiAlIChjb21waWxlciwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAotICAgIG1hdGNoID0gcmUubWF0Y2gociIuKiAoXGRcLlxkKVwuXGQuKiIsIG91dHB1dC5zcGxpdCgnXG4nKVswXSkKKyAgICBtYXRjaCA9IHJlLm1hdGNoKHIiLiogKFxkK1wuXGQrKVwuXGQrLioiLCBvdXRwdXQuc3BsaXQoJ1xuJylbMF0pCiAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICBiYi5mYXRhbCgiQ2FuJ3QgZ2V0IGNvbXBpbGVyIHZlcnNpb24gZnJvbSAlcyAtLXZlcnNpb24gb3V0cHV0IiAlIGNvbXBpbGVyKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKaW5kZXggM2IyZmVkNS4uNWYxODA1ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgICAgZGVmIHJtX3RtcChzZWxmKToKICAgICAgICAgIiIiQ2xlYW51cCB0ZW1wb3JhcnkvaW50ZXJtZWRpYXRlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyIiIgogICAgICAgICBsb2cuZGVidWcoIlJlbW92aW5nIHRlbXBvcmFyeSBhbmQgY2FjaGUgZmlsZXMiKQotICAgICAgICBmb3IgbmFtZSBpbiBbJ2JpdGJha2UubG9jaycsICdjb25mL3Nhbml0eV9pbmZvJywKKyAgICAgICAgZm9yIG5hbWUgaW4gWydiaXRiYWtlLmxvY2snLCAnY2FjaGUvc2FuaXR5X2luZm8nLAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5iYl92YXJzWydUTVBESVInXV06CiAgICAgICAgICAgICBvZS5wYXRoLnJlbW92ZShuYW1lLCByZWN1cnNlPVRydWUpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQppbmRleCAwNDM1ZGZhLi4wYmY1OTE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CkBAIC05Nyw3ICs5Nyw3IEBACiAgICAgICAgIGlmIHNlbGYucG93ZXJjb250cm9sX2NtZDoKICAgICAgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5wb3dlcmNvbnRyb2xfY21kLCBtc2cpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY29tbWFuZHMucnVuQ21kKGNtZCwgYXNzZXJ0X2Vycm9yPUZhbHNlLCBwcmVleGVjX2ZuPW9zLnNldHNpZCwgZW52PXNlbGYub3JpZ2VudikKKyAgICAgICAgICAgICAgICBjb21tYW5kcy5ydW5DbWQoY21kLCBhc3NlcnRfZXJyb3I9RmFsc2UsIHN0YXJ0X25ld19zZXNzaW9uPVRydWUsIGVudj1zZWxmLm9yaWdlbnYpCiAgICAgICAgICAgICBleGNlcHQgQ29tbWFuZEVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoc3RyKGUpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQppbmRleCAxNGZjNmE1Li40NzA1ZDYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKQEAgLTcyLDYgKzcyLDkgQEAKICAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5zdWl0ZXMgPSBzZWxmLmxvYWRlci5kaXNjb3ZlcigpCiAKKyAgICBkZWYgcHJlcGFyZVN1aXRlKHNlbGYsIHN1aXRlcywgcHJvY2Vzc2VzKToKKyAgICAgICAgcmV0dXJuIHN1aXRlcworCiAgICAgZGVmIHJ1blRlc3RzKHNlbGYsIHByb2Nlc3Nlcz1Ob25lLCBza2lwcz1bXSk6CiAgICAgICAgIHNlbGYucnVubmVyID0gc2VsZi5ydW5uZXJDbGFzcyhzZWxmLCBkZXNjcmlwdGlvbnM9RmFsc2UsIHZlcmJvc2l0eT0yKQogCkBAIC03OSwxNCArODIsOSBAQAogICAgICAgICBzZWxmLnNraXBUZXN0cyhza2lwcykKIAogICAgICAgICBzZWxmLl9ydW5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIGlmIHByb2Nlc3NlczoKLSAgICAgICAgICAgIGZyb20gb2VxYS5jb3JlLnV0aWxzLmNvbmN1cnJlbmN5dGVzdCBpbXBvcnQgQ29uY3VycmVudFRlc3RTdWl0ZQotCi0gICAgICAgICAgICBjb25jdXJyZW50X3N1aXRlID0gQ29uY3VycmVudFRlc3RTdWl0ZShzZWxmLnN1aXRlcywgcHJvY2Vzc2VzKQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKGNvbmN1cnJlbnRfc3VpdGUpCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBwcm9jZXNzZXM6CiAgICAgICAgICAgICBzZWxmLnJ1bm5lci5idWZmZXIgPSBUcnVlCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5zdWl0ZXMpCisgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihzZWxmLnByZXBhcmVTdWl0ZShzZWxmLnN1aXRlcywgcHJvY2Vzc2VzKSkKICAgICAgICAgc2VsZi5fcnVuX2VuZF90aW1lID0gdGltZS50aW1lKCkKIAogICAgICAgICByZXR1cm4gcmVzdWx0CkBAIC0xMDIsMjIgKzEwMCwyNyBAQAogICAgIG5hbWUgPSAnY29yZScKICAgICBoZWxwID0gJ2NvcmUgdGVzdCBjb21wb25lbnQgZXhhbXBsZScKICAgICBkZXNjcmlwdGlvbiA9ICdleGVjdXRlcyBjb3JlIHRlc3Qgc3VpdGUgZXhhbXBsZScKKyAgICBkYXRldGltZSA9IHRpbWUuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpCiAKICAgICBkZWZhdWx0X2Nhc2VzID0gW29zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksCiAgICAgICAgICAgICAnY2FzZXMvZXhhbXBsZScpXQogICAgIGRlZmF1bHRfdGVzdF9kYXRhID0gb3MucGF0aC5qb2luKGRlZmF1bHRfY2FzZXNbMF0sICdkYXRhLmpzb24nKQogICAgIGRlZmF1bHRfdGVzdHMgPSBOb25lCisgICAgZGVmYXVsdF9qc29uX3Jlc3VsdF9kaXIgPSBOb25lCiAKICAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgbG9nZ2VyLCBzdWJwYXJzZXJzKToKICAgICAgICAgc2VsZi5wYXJzZXIgPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoc2VsZi5uYW1lLCBoZWxwPXNlbGYuaGVscCwKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1zZWxmLmRlc2NyaXB0aW9uLCBncm91cD0nY29tcG9uZW50cycpCiAKLSAgICAgICAgc2VsZi5kZWZhdWx0X291dHB1dF9sb2cgPSAnJXMtcmVzdWx0cy0lcy5sb2cnICUgKHNlbGYubmFtZSwKLSAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKSkKKyAgICAgICAgc2VsZi5kZWZhdWx0X291dHB1dF9sb2cgPSAnJXMtcmVzdWx0cy0lcy5sb2cnICUgKHNlbGYubmFtZSwgc2VsZi5kYXRldGltZSkKICAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dC1sb2cnLCBhY3Rpb249J3N0b3JlJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nLAogICAgICAgICAgICAgICAgIGhlbHA9InJlc3VsdHMgb3V0cHV0IGxvZywgZGVmYXVsdDogJXMiICUgc2VsZi5kZWZhdWx0X291dHB1dF9sb2cpCiAKKyAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWpzb24tcmVzdWx0LWRpcicsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X2pzb25fcmVzdWx0X2RpciwKKyAgICAgICAgICAgICAgICBoZWxwPSJqc29uIHJlc3VsdCBvdXRwdXQgZGlyLCBkZWZhdWx0OiAlcyIgJSBzZWxmLmRlZmF1bHRfanNvbl9yZXN1bHRfZGlyKQorCiAgICAgICAgIGdyb3VwID0gc2VsZi5wYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCiAgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1ydW4tdGVzdHMnLCBhY3Rpb249J3N0b3JlJywgbmFyZ3M9JysnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X3Rlc3RzLApAQCAtMTgwLDYgKzE4MywyMiBAQAogCiAgICAgICAgIHNlbGYubW9kdWxlX3BhdGhzID0gYXJncy5DQVNFU19QQVRIUwogCisgICAgZGVmIF9nZXRfanNvbl9yZXN1bHRfZGlyKHNlbGYsIGFyZ3MpOgorICAgICAgICByZXR1cm4gYXJncy5qc29uX3Jlc3VsdF9kaXIKKworICAgIGRlZiBfZ2V0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIHRkID0gc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsndGQnXQorICAgICAgICBjb25maWd1cmF0aW9uID0geydURVNUX1RZUEUnOiBzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnTUFDSElORSc6IHRkLmdldCgiTUFDSElORSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RJU1RSTyc6IHRkLmdldCgiRElTVFJPIiksCisgICAgICAgICAgICAgICAgICAgICAgICAnSU1BR0VfQkFTRU5BTUUnOiB0ZC5nZXQoIklNQUdFX0JBU0VOQU1FIiksCisgICAgICAgICAgICAgICAgICAgICAgICAnREFURVRJTUUnOiB0ZC5nZXQoIkRBVEVUSU1FIil9CisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCisKKyAgICBkZWYgX2dldF9yZXN1bHRfaWQoc2VsZiwgY29uZmlndXJhdGlvbik6CisgICAgICAgIHJldHVybiAnJXNfJXNfJXNfJXMnICUgKGNvbmZpZ3VyYXRpb25bJ1RFU1RfVFlQRSddLCBjb25maWd1cmF0aW9uWydJTUFHRV9CQVNFTkFNRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uWydNQUNISU5FJ10sIHNlbGYuZGF0ZXRpbWUpCisKICAgICBkZWYgX3ByZV9ydW4oc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMTk4LDcgKzIxNywxNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcHJlX3J1bigpCiAgICAgICAgICAgICByYyA9IHNlbGYudGMucnVuVGVzdHMoKipzZWxmLnRjX2t3YXJnc1sncnVuJ10pCi0gICAgICAgICAgICByYy5sb2dEZXRhaWxzKCkKKworICAgICAgICAgICAganNvbl9yZXN1bHRfZGlyID0gc2VsZi5fZ2V0X2pzb25fcmVzdWx0X2RpcihhcmdzKQorICAgICAgICAgICAgaWYganNvbl9yZXN1bHRfZGlyOgorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9nZXRfY29uZmlndXJhdGlvbigpCisgICAgICAgICAgICAgICAgcmMubG9nRGV0YWlscyhqc29uX3Jlc3VsdF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3Jlc3VsdF9pZChjb25maWd1cmF0aW9uKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmMubG9nRGV0YWlscygpCisKICAgICAgICAgICAgIHJjLmxvZ1N1bW1hcnkoc2VsZi5uYW1lKQogCiAgICAgICAgIG91dHB1dF9saW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShhcmdzLm91dHB1dF9sb2cpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CmluZGV4IGY2NTZlMWEuLjEyODQyOTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKQEAgLTMxOSwxMCArMzE5LDE3IEBACiAgICAgICAgICAgICB0aGVfZmlsZS53cml0ZShmaWxlX2NvbnRlbnQpCiAKICAgICBkZWYgZHVtcF90ZXN0cmVzdWx0X2ZpbGUoc2VsZiwgd3JpdGVfZGlyLCBjb25maWd1cmF0aW9uLCByZXN1bHRfaWQsIHRlc3RfcmVzdWx0KToKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHdyaXRlX2RpcikKLSAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShvcy5wYXRoLmpvaW4od3JpdGVfZGlyLCAnanNvbnRlc3RyZXN1bHQubG9jaycpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgYmIKKyAgICAgICAgICAgIGhhc19iYiA9IFRydWUKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih3cml0ZV9kaXIpCisgICAgICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKG9zLnBhdGguam9pbih3cml0ZV9kaXIsICdqc29udGVzdHJlc3VsdC5sb2NrJykpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIGhhc19iYiA9IEZhbHNlCisgICAgICAgICAgICBvcy5tYWtlZGlycyh3cml0ZV9kaXIsIGV4aXN0X29rPVRydWUpCiAgICAgICAgIHRlc3RfcmVzdWx0cyA9IHNlbGYuX2dldF9leGlzdGluZ190ZXN0cmVzdWx0c19pZl9hdmFpbGFibGUod3JpdGVfZGlyKQogICAgICAgICB0ZXN0X3Jlc3VsdHNbcmVzdWx0X2lkXSA9IHsnY29uZmlndXJhdGlvbic6IGNvbmZpZ3VyYXRpb24sICdyZXN1bHQnOiB0ZXN0X3Jlc3VsdH0KICAgICAgICAganNvbl90ZXN0cmVzdWx0cyA9IGpzb24uZHVtcHModGVzdF9yZXN1bHRzLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpCiAgICAgICAgIHNlbGYuX3dyaXRlX2ZpbGUod3JpdGVfZGlyLCBzZWxmLnRlc3RyZXN1bHRfZmlsZW5hbWUsIGpzb25fdGVzdHJlc3VsdHMpCi0gICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCisgICAgICAgIGlmIGhhc19iYjoKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CmluZGV4IDA4MWM2MjcuLjI5NWU4NzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHRpbWUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKIGZyb20gLnNzaCBpbXBvcnQgT0VTU0hUYXJnZXQKIGZyb20gb2VxYS51dGlscy5xZW11cnVubmVyIGltcG9ydCBRZW11UnVubmVyCkBAIC0xOCwyMyArMTksMjkgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBzZXJ2ZXJfaXAsIHRpbWVvdXQ9MzAwLCB1c2VyPSdyb290JywKICAgICAgICAgICAgIHBvcnQ9Tm9uZSwgbWFjaGluZT0nJywgcm9vdGZzPScnLCBrZXJuZWw9JycsIGt2bT1GYWxzZSwgc2xpcnA9RmFsc2UsCiAgICAgICAgICAgICBkdW1wX2Rpcj0nJywgZHVtcF9ob3N0X2NtZHM9JycsIGRpc3BsYXk9JycsIGJvb3Rsb2c9JycsCi0gICAgICAgICAgICB0bXBkaXI9JycsIGRpcl9pbWFnZT0nJywgYm9vdHRpbWU9NjAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHRtcGRpcj0nJywgZGlyX2ltYWdlPScnLCBib290dGltZT02MCwgc2VyaWFsX3BvcnRzPTIsCisgICAgICAgICAgICBib290X3BhdHRlcm5zID0gZGVmYXVsdGRpY3Qoc3RyKSwgb3ZtZj1GYWxzZSwgKiprd2FyZ3MpOgogCiAgICAgICAgIHN1cGVyKE9FUWVtdVRhcmdldCwgc2VsZikuX19pbml0X18obG9nZ2VyLCBOb25lLCBzZXJ2ZXJfaXAsIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgdXNlciwgcG9ydCkKIAogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IHNlcnZlcl9pcAorICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gMAogICAgICAgICBzZWxmLm1hY2hpbmUgPSBtYWNoaW5lCiAgICAgICAgIHNlbGYucm9vdGZzID0gcm9vdGZzCiAgICAgICAgIHNlbGYua2VybmVsID0ga2VybmVsCiAgICAgICAgIHNlbGYua3ZtID0ga3ZtCisgICAgICAgIHNlbGYub3ZtZiA9IG92bWYKICAgICAgICAgc2VsZi51c2Vfc2xpcnAgPSBzbGlycAorICAgICAgICBzZWxmLmJvb3RfcGF0dGVybnMgPSBib290X3BhdHRlcm5zCiAKICAgICAgICAgc2VsZi5ydW5uZXIgPSBRZW11UnVubmVyKG1hY2hpbmU9bWFjaGluZSwgcm9vdGZzPXJvb3RmcywgdG1wZGlyPXRtcGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2U9ZGlyX2ltYWdlLCBkaXNwbGF5PWRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlPWJvb3Rsb2csIGJvb3R0aW1lPWJvb3R0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2t2bT1rdm0sIHVzZV9zbGlycD1zbGlycCwgZHVtcF9kaXI9ZHVtcF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcz1kdW1wX2hvc3RfY21kcywgbG9nZ2VyPWxvZ2dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzPWR1bXBfaG9zdF9jbWRzLCBsb2dnZXI9bG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsX3BvcnRzPXNlcmlhbF9wb3J0cywgYm9vdF9wYXR0ZXJucyA9IGJvb3RfcGF0dGVybnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX292bWY9b3ZtZikKIAogICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgZXh0cmFfYm9vdHBhcmFtcz1Ob25lLCBydW5xZW11cGFyYW1zPScnKToKICAgICAgICAgaWYgc2VsZi51c2Vfc2xpcnAgYW5kIG5vdCBzZWxmLnNlcnZlcl9pcDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CmluZGV4IDUxMDMyZWYuLjA5MGI0MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQpAQCAtMTUsNyArMTUsNyBAQAogCiBjbGFzcyBPRVNTSFRhcmdldChPRVRhcmdldCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgaXAsIHNlcnZlcl9pcCwgdGltZW91dD0zMDAsIHVzZXI9J3Jvb3QnLAotICAgICAgICAgICAgICAgICBwb3J0PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgcG9ydD1Ob25lLCBzZXJ2ZXJfcG9ydD0wLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5vdCBsb2dnZXI6CiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigndGFyZ2V0JykKICAgICAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLklORk8pCkBAIC0zMCw2ICszMCw3IEBACiAgICAgICAgIHN1cGVyKE9FU1NIVGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhsb2dnZXIpCiAgICAgICAgIHNlbGYuaXAgPSBpcAogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IHNlcnZlcl9pcAorICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gc2VydmVyX3BvcnQKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxmLnVzZXIgPSB1c2VyCiAgICAgICAgIHNzaF9vcHRpb25zID0gWwpAQCAtMjQ2LDcgKzI0Nyw3IEBACiAgICAgICAgICJzdGRpbiI6IE5vbmUsCiAgICAgICAgICJzaGVsbCI6IEZhbHNlLAogICAgICAgICAiYnVmc2l6ZSI6IC0xLAotICAgICAgICAicHJlZXhlY19mbiI6IG9zLnNldHNpZCwKKyAgICAgICAgInN0YXJ0X25ld19zZXNzaW9uIjogVHJ1ZSwKICAgICB9CiAgICAgb3B0aW9ucy51cGRhdGUob3B0cykKICAgICBvdXRwdXQgPSAnJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CmluZGV4IDBmN2IzZGMuLmZhYzU5ZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKQEAgLTE0Niw2ICsxNDYsMjAgQEAKIAogc3VidW5pdC5fT3V0U2lkZVRlc3QuYWRkRXJyb3IgPSBvdXRTaWRlVGVzdGFkZEVycm9yCiAKKyMgTGlrZSBvdXRTaWRlVGVzdGFkZEVycm9yIGFib3ZlLCB3ZSBuZWVkIGFuIGVxdWl2YWxlbnQgZm9yIHNraXBzCisjIGhhcHBlbmluZyBhdCB0aGUgc2V0VXBDbGFzcygpIGxldmVsLCBvdGhlcndpc2Ugd2Ugd2lsbCBzZWUgIlVOS05PV04iCisjIGFzIGEgcmVzdWx0IGZvciBjb25jdXJyZW50IHRlc3RzCisjCitkZWYgb3V0U2lkZVRlc3RhZGRTa2lwKHNlbGYsIG9mZnNldCwgbGluZSk6CisgICAgIiIiQSAnc2tpcDonIGRpcmVjdGl2ZSBoYXMgYmVlbiByZWFkLiIiIgorICAgIHRlc3RfbmFtZSA9IGxpbmVbb2Zmc2V0Oi0xXS5kZWNvZGUoJ3V0ZjgnKQorICAgIHNlbGYucGFyc2VyLl9jdXJyZW50X3Rlc3QgPSBzdWJ1bml0LlJlbW90ZWRUZXN0Q2FzZSh0ZXN0X25hbWUpCisgICAgc2VsZi5wYXJzZXIuY3VycmVudF90ZXN0X2Rlc2NyaXB0aW9uID0gdGVzdF9uYW1lCisgICAgc2VsZi5wYXJzZXIuX3N0YXRlID0gc2VsZi5wYXJzZXIuX3JlYWRpbmdfc2tpcF9kZXRhaWxzCisgICAgc2VsZi5wYXJzZXIuX3JlYWRpbmdfc2tpcF9kZXRhaWxzLnNldF9zaW1wbGUoKQorICAgIHNlbGYucGFyc2VyLnN1YnVuaXRMaW5lUmVjZWl2ZWQobGluZSkKKworc3VidW5pdC5fT3V0U2lkZVRlc3QuYWRkU2tpcCA9IG91dFNpZGVUZXN0YWRkU2tpcAogCiAjCiAjIEEgZHVtbXkgc3RydWN0dXJlIHRvIGFkZCB0byBpby5TdHJpbmdJTyBzbyB0aGF0IHRoZSAuYnVmZmVyIG9iamVjdApAQCAtMTYzLDkgKzE3NywxMCBAQAogIwogY2xhc3MgQ29uY3VycmVudFRlc3RTdWl0ZSh1bml0dGVzdC5UZXN0U3VpdGUpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlLCBwcm9jZXNzZXMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWl0ZSwgcHJvY2Vzc2VzLCBzZXR1cGZ1bmMpOgogICAgICAgICBzdXBlcihDb25jdXJyZW50VGVzdFN1aXRlLCBzZWxmKS5fX2luaXRfXyhbc3VpdGVdKQogICAgICAgICBzZWxmLnByb2Nlc3NlcyA9IHByb2Nlc3NlcworICAgICAgICBzZWxmLnNldHVwZnVuYyA9IHNldHVwZnVuYwogCiAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgogICAgICAgICB0ZXN0cywgdG90YWx0ZXN0cyA9IGZvcmtfZm9yX3Rlc3RzKHNlbGYucHJvY2Vzc2VzLCBzZWxmKQpAQCAtMjIxLDYgKzIzNiwxNSBAQAogICAgIHdoaWxlIGRlbGF5IGFuZCBvcy5wYXRoLmV4aXN0cyhkICsgIi9iaXRiYWtlLmxvY2siKToKICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICBkZWxheSA9IGRlbGF5IC0gMQorICAgICMgRGVsZXRpbmcgdGhlc2UgZGlyZWN0b3JpZXMgdGFrZXMgYSBsb3Qgb2YgdGltZSwgdXNlIGF1dG9idWlsZGVyCisgICAgIyBjbG9iYmVyZGlyIGlmIGl0cyBhdmFpbGFibGUKKyAgICBjbG9iYmVyZGlyID0gb3MucGF0aC5leHBhbmR1c2VyKCJ+L3lvY3RvLWF1dG9idWlsZGVyLWhlbHBlci9qYW5pdG9yL2Nsb2JiZXJkaXIiKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKGNsb2JiZXJkaXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW2Nsb2JiZXJkaXIsIGRdKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICBiYi51dGlscy5wcnVuZWRpcihkLCBpb25pY2U9VHJ1ZSkKIAogZGVmIGZvcmtfZm9yX3Rlc3RzKGNvbmN1cnJlbmN5X251bSwgc3VpdGUpOgpAQCAtMjQ5LDM3ICsyNzMsNyBAQAogICAgICAgICAgICAgICAgIHN0cmVhbSA9IG9zLmZkb3BlbihjMnB3cml0ZSwgJ3diJywgMSkKICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnByZWFkKQogCi0gICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBuZXcgc2VwYXJhdGUgQlVJTERESVIgZm9yIGVhY2ggZ3JvdXAgb2YgdGVzdHMKLSAgICAgICAgICAgICAgICBpZiAnQlVJTERESVInIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvblsnQlVJTERESVInXQotICAgICAgICAgICAgICAgICAgICBuZXdidWlsZGRpciA9IGJ1aWxkZGlyICsgIi1zdC0iICsgc3RyKG91cnBpZCkKLSAgICAgICAgICAgICAgICAgICAgbmV3c2VsZnRlc3RkaXIgPSBuZXdidWlsZGRpciArICIvbWV0YS1zZWxmdGVzdCIKLQotICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobmV3YnVpbGRkaXIpCi0gICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NvbmYiLCBuZXdidWlsZGRpciArICIvY29uZiIpCi0gICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NhY2hlIiwgbmV3YnVpbGRkaXIgKyAiL2NhY2hlIikKLSAgICAgICAgICAgICAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCi0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWxkZGlyIGluIG9zLmVudmlyb25bZV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvbltlXSA9IG9zLmVudmlyb25bZV0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCi0KLSAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImdpdCBpbml0OyBnaXQgYWRkICo7IGdpdCBjb21taXQgLWEgLW0gJ2luaXRpYWwnIiwgY3dkPW5ld3NlbGZ0ZXN0ZGlyLCBzaGVsbD1UcnVlKQotCi0gICAgICAgICAgICAgICAgICAgICMgVHJpZWQgdG8gdXNlZCBiaXRiYWtlLWxheWVycyBhZGQvcmVtb3ZlIGJ1dCBpdCByZXF1aXJlcyByZWNpcGUgcGFyc2luZyBhbmQgaGVuY2UgaXMgdG9vIHNsb3cKLSAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoInNlZCAlcy9jb25mL2JibGF5ZXJzLmNvbmYgLWkgLWUgJ3MjJXMjJXMjZyciICUgKG5ld2J1aWxkZGlyLCBzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpLCBjd2Q9bmV3YnVpbGRkaXIsIHNoZWxsPVRydWUpCi0KLSAgICAgICAgICAgICAgICAgICAgb3MuY2hkaXIobmV3YnVpbGRkaXIpCi0KLSAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gcHJvY2Vzc19zdWl0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHQsICJ0YyIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBjcCA9IHQudGMuY29uZmlnX3BhdGhzCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBjcDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmdGVzdGRpciBpbiBjcFtwXSBhbmQgbmV3c2VsZnRlc3RkaXIgbm90IGluIGNwW3BdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2Uoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWxkZGlyIGluIGNwW3BdIGFuZCBuZXdidWlsZGRpciBub3QgaW4gY3BbcF06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCisgICAgICAgICAgICAgICAgKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikgPSBzdWl0ZS5zZXR1cGZ1bmMoIi1zdC0iICsgc3RyKG91cnBpZCksIHNlbGZ0ZXN0ZGlyLCBwcm9jZXNzX3N1aXRlKQogCiAgICAgICAgICAgICAgICAgIyBMZWF2ZSBzdGRlcnIgYW5kIHN0ZG91dCBvcGVuIHNvIHdlIGNhbiBzZWUgdGVzdCBub2lzZQogICAgICAgICAgICAgICAgICMgQ2xvc2Ugc3RkaW4gc28gdGhhdCB0aGUgY2hpbGQgZ29lcyBhd2F5IGlmIGl0IGRlY2lkZXMgdG8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCmluZGV4IDVjNWI5YjUuLmE5YmM3ZDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgpAQCAtOTE3LDI4ICs5MTcsNiBAQAogICAgIH0sCiAgICAgewogICAgICAgICAidGVzdCI6IHsKLSAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLWh3LkNoZWNrX2lmX3RhcmdldF9jYW5fc3VwcG9ydF9FRVBST00iLAotICAgICAgICAgICAgImF1dGhvciI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iLAotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJleGVjdXRpb24iOiB7Ci0gICAgICAgICAgICAgICAgIjEiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgZWVwcm9tIGRldmljZSBleGlzdCBpbiAvc3lzL2J1cy9pMmMvZGV2aWNlcy8gIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSGV4ZHVtcCBjYW4gcmVhZCBkYXRhIGZyb20gZWVwcm9tLlxuIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiaGV4ZHVtcCBlZXByb21cIiBjb21tYW5kcm9vdEBtcGM4MzE1ZS1yZGI6L3N5cy9idXMvaTJjL2RldmljZXMvMS0wMDUxPiBoZXhkdW1wIGVlcHJvbTAwMDAwMDAgOTIxMCAwYjAyIDAyMTEgMDAwOSAwYjUyIDAxMDggMGMwMCAzYzAwMDAwMDAxMCA2OTc4IDY5MzAgNjkxMSAyMDhjIDcwMDMgM2MzYyAwMGYwIDgzODFcdTIwMjZcbiIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInN1bW1hcnkiOiAiQ2hlY2tfaWZfdGFyZ2V0X2Nhbl9zdXBwb3J0X0VFUFJPTSIKLSAgICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgICAidGVzdCI6IHsKICAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLWh3LlN5c3RlbV9jYW5fYm9vdF91cF92aWFfTkZTIiwKICAgICAgICAgICAgICJhdXRob3IiOiBbCiAgICAgICAgICAgICAgICAgewpAQCAtOTY2LDM1ICs5NDQsNSBAQAogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzdW1tYXJ5IjogIlN5c3RlbV9jYW5fYm9vdF91cF92aWFfTkZTIgogICAgICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgICJ0ZXN0IjogewotICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtaHcuQm9vdF9mcm9tX0pGRlMyX2ltYWdlIiwKLSAgICAgICAgICAgICJhdXRob3IiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIiwKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZXhlY3V0aW9uIjogewotICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZpcnN0IGJvb3QgdGhlIGJvYXJkIHdpdGggTkZTIHJvb3QuICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZSBzeXN0ZW0gY2FuIGJvb3QgdXAgd2l0aG91dCBwcm9ibGVtXG4iCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiMiI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIG10ZC11dGlscyBwYWNrYWdlLiBFcmFzZSB0aGUgTVREIHBhcnRpdGlvbiB3aGljaCB3aWxsIGJlIHVzZWQgYXMgcm9vdDogJCBmbGFzaF9lcmFzZWFsbCAvZGV2L210ZDMgIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29weSB0aGUgSkZGUzIgaW1hZ2UgdG8gdGhlIE1URCBwYXJ0aXRpb246ICQgZmxhc2hjcCBjb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLmpmZnMyIC9kZXYvbXRkMyAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiNCI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJUaGVuIHJlYm9vdCB0aGUgYm9hcmQgYW5kIHNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OiA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L210ZGJsb2NrMyByb290ZnN0eXBlPWpmZnMyIGNvbnNvbGU9dHR5UzAsMTE1MjAwICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInN1bW1hcnkiOiAiQm9vdF9mcm9tX0pGRlMyX2ltYWdlIgotICAgICAgICB9CiAgICAgfQogXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uCmluZGV4IDk4NjkxNTAuLmQ3N2QwZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbgorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KQEAgLTgyLDcgKzgyLDcgQEAKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiZXhlY3V0aW9uIjogewogICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb21lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb25tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIjIiOiB7CkBAIC0xNjQsNyArMTY0LDcgQEAKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAiZXhlY3V0aW9uIjogewogICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb21lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBhIFFFTVUgb2YgdGFyZ2V0IGVudmlyb25tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIjIiOiB7CkBAIC0zMTksNCArMzE5LDQgQEAKICAgICAgICAgICAgICJzdW1tYXJ5IjogIkVjbGlwc2VfUG9reV9pbnN0YWxsYXRpb25fYW5kX3NldHVwIgogICAgICAgICB9CiAgICAgfQotXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK10KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQppbmRleCA3NGE5NDBkLi5jNTM3OGQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CkBAIC0yMiw3ICsyMiw5IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9ERUInXSwgJ2FsbCcpCi0gICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwLjAuMC4wJywgcG9ydD1jbHMudGMudGFyZ2V0LnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKICAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CmluZGV4IGY0ZTg3MWUuLmQwZjkxNjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKQEAgLTEyLDcgKzEyLDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIHVyaSA9ICdodHRwczovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2NwaW8tMi4xMi50YXIuZ3onCisgICAgICAgIHVyaSA9ICdodHRwczovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2NwaW8tMi4xMy50YXIuZ3onCiAgICAgICAgIGNscy5wcm9qZWN0ID0gVGFyZ2V0QnVpbGRQcm9qZWN0KGNscy50Yy50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGxfZGlyID0gY2xzLnRjLnRkWydETF9ESVInXSkKQEAgLTI3LDYgKzI3LDYgQEAKICAgICBAT0VIYXNQYWNrYWdlKFsnYXV0b2NvbmYnXSkKICAgICBkZWYgdGVzdF9jcGlvKHNlbGYpOgogICAgICAgICBzZWxmLnByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCi0gICAgICAgIHNlbGYucHJvamVjdC5ydW5fY29uZmlndXJlKCkKKyAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoJy0tZGlzYWJsZS1tYWludGFpbmVyLW1vZGUnLCcnKQogICAgICAgICBzZWxmLnByb2plY3QucnVuX21ha2UoKQogICAgICAgICBzZWxmLnByb2plY3QucnVuX2luc3RhbGwoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZGF0ZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkKaW5kZXggNzc1MGE3Mi4uZmRkMmE2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZGF0ZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kYXRlLnB5CkBAIC0xMywxMiArMTMsMTIgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYudGMudGQuZ2V0KCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ3N5c3RlbWQnOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1N0b3BwaW5nIHN5c3RlbWQtdGltZXN5bmNkIGRhZW1vbicpCi0gICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCBzdG9wIHN5c3RlbWQtdGltZXN5bmNkJykKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIGRpc2FibGUgLS1ub3cgc3lzdGVtZC10aW1lc3luY2QnKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnRjLnRkLmdldCgnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdzeXN0ZW1kJzoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdTdGFydGluZyBzeXN0ZW1kLXRpbWVzeW5jZCBkYWVtb24nKQotICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdzeXN0ZW1jdGwgc3RhcnQgc3lzdGVtZC10aW1lc3luY2QnKQorICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdzeXN0ZW1jdGwgZW5hYmxlIC0tbm93IHN5c3RlbWQtdGltZXN5bmNkJykKIAogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKICAgICBAT0VIYXNQYWNrYWdlKFsnY29yZXV0aWxzJywgJ2J1c3lib3gnXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQppbmRleCBkZTM3NTk5Li5mNDBjNjMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CkBAIC01Myw3ICs1Myw4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uob3MucGF0aC5qb2luKGNscy50Yy50ZFsnV09SS0RJUiddLCAnb2UtdGVzdGltYWdlLXJlcG8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMC4wLjAuMCcsIHBvcnQ9Y2xzLnRjLnRhcmdldC5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQppbmRleCBiZmE1N2M1Li4zOTM4ZTkxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CkBAIC0xOCwzMiArMTgsNTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgogICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bignbXYgLWYgJEhPTUUvd3RtcC5vZXFhYmFrIC9ldGMvbG9ncm90YXRlLmQvd3RtcCAmJiBybSAtcmYgJEhPTUUvbG9ncm90YXRlX2RpcicpCisgICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAtcmYgL3Zhci9sb2cvbG9ncm90YXRlX3Rlc3RmaWxlICYmIHJtIC1yZiAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0ZmlsZScpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCiAgICAgQE9FSGFzUGFja2FnZShbJ2xvZ3JvdGF0ZSddKQotICAgIGRlZiB0ZXN0XzFfbG9ncm90YXRlX3NldHVwKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvZ3JvdGF0ZV93dG1wKHNlbGYpOgorCisgICAgICAgICMgL3Zhci9sb2cvd3RtcCBtYXkgbm90IGFsd2F5cyBleGlzdCBpbml0aWFsbHksIHNvIHVzZSB0b3VjaCB0byBlbnN1cmUgaXQgaXMgcHJlc2VudAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigndG91Y2ggL3Zhci9sb2cvd3RtcCcpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IGNyZWF0ZS91cGRhdGUgL3Zhci9sb2cvd3RtcCB3aXRoIHRvdWNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKwogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgJEhPTUUvbG9ncm90YXRlX2RpcicpCi0gICAgICAgIG1zZyA9ICdDb3VsZCBub3QgY3JlYXRlIGxvZ3JvdGF0ZV9kaXIuIE91dHB1dDogJXMnICUgb3V0cHV0CisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IGNyZWF0ZSBsb2dyb3RhdGVfZGlyLiBPdXRwdXQ6ICVzJyAlIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKIAotICAgICAgICBjbWQgPSAoJ3NlZCAtaSAicyN3dG1wIHsjd3RtcCB7XFxuICAgIG9sZGRpciAkSE9NRS9sb2dyb3RhdGVfZGlyIyInCi0gICAgICAgICAgICAgICAnIC9ldGMvbG9ncm90YXRlLmQvd3RtcCcpCi0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKLSAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gbG9ncm90YXRlLmQvd3RtcCBmaWxlLiBTdGF0dXMgYW5kIG91dHB1dDogJwotICAgICAgICAgICAgICAgJyAlcyBhbmQgJXMnICUgKHN0YXR1cywgb3V0cHV0KSkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gImNyZWF0ZSBcbiBvbGRkaXIgJEhPTUUvbG9ncm90YXRlX2RpciBcbiBpbmNsdWRlIC9ldGMvbG9ncm90YXRlLmQvd3RtcCIgPiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorICAgICAgICAKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gIi92YXIvbG9nL2xvZ3JvdGF0ZV90ZXN0IHtcXG4gbWlzc2luZ29rIFxcbiBtb250aGx5IFxcbiByb3RhdGUgMSIgPiAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0JykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisgICAgICAgIAorICAgICAgICAjIElmIGxvZ3JvdGF0ZSBmYWlscyB0byByb3RhdGUgdGhlIGxvZywgdmlldyB0aGUgdmVyYm9zZSBvdXRwdXQgb2YgbG9ncm90YXRlIHRvIHNlZSB3aGF0IHByZXZlbnRlZCBpdAorICAgICAgICBfLCBsb2dyb3RhdGVfb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdsb2dyb3RhdGUgLXZmIC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCisgICAgICAgIHN0YXR1cywgXyA9IHNlbGYudGFyZ2V0LnJ1bignZmluZCAkSE9NRS9sb2dyb3RhdGVfZGlyIC10eXBlIGYgfCBncmVwIHd0bXAuMScpCisgICAgICAgIG1zZyA9ICgibG9ncm90YXRlIGRpZCBub3Qgc3VjY2Vzc2Z1bGx5IHJvdGF0ZSB0aGUgd3RtcCBsb2cuIE91dHB1dCBmcm9tIGxvZ3JvdGF0ZSAtdmY6IFxuJXMiICUgKGxvZ3JvdGF0ZV9vdXRwdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorICAgICAgIAorICAgIEBPRVRlc3REZXBlbmRzKFsnbG9ncm90YXRlLkxvZ3JvdGF0ZVRlc3QudGVzdF9sb2dyb3RhdGVfd3RtcCddKQorICAgIGRlZiB0ZXN0X2xvZ3JvdGF0ZV9uZXdsb2coc2VsZik6CisgICAgICAgIAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAib2VxYSBsb2dyb3RhdGUgdGVzdCBmaWxlIiA+IC92YXIvbG9nL2xvZ3JvdGF0ZV90ZXN0ZmlsZScpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IGNyZWF0ZSBsb2dyb3RhdGUgdGVzdCBmaWxlIGluIC92YXIvbG9nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAgCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICIvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdGZpbGUge1xuIG1pc3NpbmdvayBcbiBtb250aGx5IFxuIHJvdGF0ZSAxIiA+IC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3RmaWxlJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQogCi0gICAgQE9FVGVzdERlcGVuZHMoWydsb2dyb3RhdGUuTG9ncm90YXRlVGVzdC50ZXN0XzFfbG9ncm90YXRlX3NldHVwJ10pCi0gICAgZGVmIHRlc3RfMl9sb2dyb3RhdGUoc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICJjcmVhdGUgXG4gaW5jbHVkZSAvZXRjL2xvZ3JvdGF0ZS5kIiA+IC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCi0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdsb2dyb3RhdGUgLWYgL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKLQotICAgICAgICBtc2cgPSAoJ2xvZ3JvdGF0ZSBzZXJ2aWNlIGNvdWxkIG5vdCBiZSByZWxvYWRlZC4gU3RhdHVzIGFuZCBvdXRwdXQ6ICcKLSAgICAgICAgICAgICAgICAnJXMgYW5kICVzJyAlIChzdGF0dXMsIG91dHB1dCkpCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICJjcmVhdGUgXG4gb2xkZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXIgXG4gaW5jbHVkZSAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0ZmlsZSIgPiAvdG1wL2xvZ3JvdGF0ZS10ZXN0Mi5jb25mJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gL3RtcC9sb2dyb3RhdGVfdGVzdDIuY29uZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdscyAtbGEgJEhPTUUvbG9ncm90YXRlX2Rpci8gfCB3YyAtbCcpCi0gICAgICAgIG1zZyA9ICgnbmV3IGxvZ2ZpbGUgY291bGQgbm90IGJlIGNyZWF0ZWQuIExpc3Qgb2YgZmlsZXMgd2l0aGluIGxvZyAnCi0gICAgICAgICAgICAgICAnZGlyZWN0b3J5OiAlcycgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdscyAtbGEgJEhPTUUvbG9ncm90YXRlX2RpcicpWzFdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGludChvdXRwdXQpPj0zLCBtc2cgPSBtc2cpCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdmaW5kICRIT01FL2xvZ3JvdGF0ZV9kaXIgLXR5cGUgZiB8IGdyZXAgbG9ncm90YXRlX3Rlc3RmaWxlLjEnKQorICAgICAgICBtc2cgPSAoJ0Egcm90YXRlZCBsb2cgZm9yIGxvZ3JvdGF0ZV90ZXN0ZmlsZSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gbG9ncm90YXRlX2RpcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAxLCBtc2cgPSBtc2cpCisKKyAgICAgICAgIyBJZiBsb2dyb3RhdGUgZmFpbHMgdG8gcm90YXRlIHRoZSBsb2csIHZpZXcgdGhlIHZlcmJvc2Ugb3V0cHV0IG9mIGxvZ3JvdGF0ZSBpbnN0ZWFkIG9mIGp1c3QgbGlzdGluZyB0aGUgZmlsZXMgaW4gb2xkZGlyCisgICAgICAgIF8sIGxvZ3JvdGF0ZV9vdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2xvZ3JvdGF0ZSAtdmYgL3RtcC9sb2dyb3RhdGUtdGVzdDIuY29uZicpCisgICAgICAgIHN0YXR1cywgXyA9IHNlbGYudGFyZ2V0LnJ1bignZmluZCAkSE9NRS9sb2dyb3RhdGVfZGlyIC10eXBlIGYgfCBncmVwIGxvZ3JvdGF0ZV90ZXN0ZmlsZS4xJykKKyAgICAgICAgbXNnID0gKCdsb2dyb3RhdGUgZGlkIG5vdCBzdWNjZXNzZnVsbHkgcm90YXRlIHRoZSBsb2dyb3RhdGVfdGVzdCBsb2cuIE91dHB1dCBmcm9tIGxvZ3JvdGF0ZSAtdmY6IFxuJXMnICUgKGxvZ3JvdGF0ZV9vdXRwdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2x0cC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2x0cC5weQppbmRleCAzMDU0ODY0Li42ZGM1ZWYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbHRwLnB5CkBAIC01Nyw5ICs1Nyw5IEBACiAKIGNsYXNzIEx0cFRlc3QoTHRwVGVzdEJhc2UpOgogCi0gICAgbHRwX2dyb3VwcyA9IFsibWF0aCIsICJzeXNjYWxscyIsICJkaW8iLCAiaW8iLCAibW0iLCAiaXBjIiwgInNjaGVkIiwgIm5wdGwiLCAicHR5IiwgImNvbnRhaW5lcnMiLCAiY29udHJvbGxlcnMiLCAiZmlsZWNhcHMiLCAiY2FwX2JvdW5kcyIsICJmY250bC1sb2NrdGVzdHMiLCAiY29ubmVjdG9ycyIsInRpbWVycyIsICJjb21tYW5kcyIsICJuZXQuaXB2Nl9saWIiLCAiaW5wdXQiLCJmc19wZXJtc19zaW1wbGUiXQorICAgIGx0cF9ncm91cHMgPSBbIm1hdGgiLCAic3lzY2FsbHMiLCAiZGlvIiwgImlvIiwgIm1tIiwgImlwYyIsICJzY2hlZCIsICJucHRsIiwgInB0eSIsICJjb250YWluZXJzIiwgImNvbnRyb2xsZXJzIiwgImZpbGVjYXBzIiwgImNhcF9ib3VuZHMiLCAiZmNudGwtbG9ja3Rlc3RzIiwgImNvbm5lY3RvcnMiLCAiY29tbWFuZHMiLCAibmV0LmlwdjZfbGliIiwgImlucHV0IiwiZnNfcGVybXNfc2ltcGxlIl0KIAotICAgIGx0cF9mcyA9IFsiZnMiLCAiZnN4IiwgImZzX2JpbmQiLCAiZnNfZXh0NCJdCisgICAgbHRwX2ZzID0gWyJmcyIsICJmc3giLCAiZnNfYmluZCJdCiAgICAgIyBza2lwIGtlcm5lbCBjcHVob3RwbHVnCiAgICAgbHRwX2tlcm5lbCA9IFsicG93ZXJfbWFuYWdlbWVudF90ZXN0cyIsICJoeXBlcnRocmVhZGluZyAiLCAia2VybmVsX21pc2MiLCAiaHVnZXRsYiJdCiAgICAgbHRwX2dyb3VwcyArPSBsdHBfZnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CmluZGV4IDc1MDcwNjEuLjljZmVlMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQpAQCAtMjUsNyArMjUsOSBAQAogICAgICAgICBpZiBjbHMudGMudGRbIk1VTFRJTElCX1ZBUklBTlRTIl06CiAgICAgICAgICAgICBhbGxhcmNoZmVlZCA9IGNscy50Yy50ZFsiVFVORV9QS0dBUkNIIl0KICAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9JUEsnXSwgYWxsYXJjaGZlZWQpCi0gICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQorICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwLjAuMC4wJywgcG9ydD1jbHMudGMudGFyZ2V0LnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKICAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CmluZGV4IDE1MzQzZDcuLmExNzkxYjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKQEAgLTU1LDExICs1NSwxNSBAQAogICAgICJGYWlsZWQgdG8gcmVhZCAvdmFyL2xpYi9uZnMvc3RhdGQvc3RhdGU6IFN1Y2Nlc3MiLAogICAgICJlcnJvciByZXRyeSB0aW1lLW91dCA9IiwKICAgICAibG9naW5kOiBjYW5ub3Qgc2V0dXAgc3lzdGVtZC1sb2dpbmQgaGVscGVyICgtNjEpLCB1c2luZyBsZWdhY3kgZmFsbGJhY2siLAotICAgICJFcnJvciBjaGFuZ2luZyBuZXQgaW50ZXJmYWNlIG5hbWUgJ2V0aDAnIHRvICIKKyAgICAiRmFpbGVkIHRvIHJlbmFtZSBuZXR3b3JrIGludGVyZmFjZSIsCisgICAgIkZhaWxlZCB0byBwcm9jZXNzIGRldmljZSwgaWdub3Jpbmc6IERldmljZSBvciByZXNvdXJjZSBidXN5IiwKKyAgICAiQ2Fubm90IGZpbmQgYSBtYXAgZmlsZSIsCisgICAgIltyZHJhbmRdOiBJbml0aWFsaXphdGlvbiBGYWlsZWQiLAorICAgICJbcHVsc2VhdWRpb10gYXV0aGtleS5jOiBGYWlsZWQgdG8gb3BlbiBjb29raWUgZmlsZSIsCisgICAgIltwdWxzZWF1ZGlvXSBhdXRoa2V5LmM6IEZhaWxlZCB0byBsb2FkIGF1dGhlbnRpY2F0aW9uIGtleSIsCiAgICAgXQogCiB2aWRlb19yZWxhdGVkID0gWwotICAgICJ1dmVzYWZiIiwKIF0KIAogeDg2X2NvbW1vbiA9IFsKQEAgLTgxLDExICs4NSw4IEBACiAgICAgImZhaWwgdG8gYWRkIE1NQ09ORklHIGluZm9ybWF0aW9uLCBjYW4ndCBhY2Nlc3MgZXh0ZW5kZWQgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgdW5kZXIgdGhpcyBicmlkZ2UuIiwKICAgICAiY2FuJ3QgY2xhaW0gQkFSICIsCiAgICAgJ2FtZF9uYjogQ2Fubm90IGVudW1lcmF0ZSBBTUQgbm9ydGhicmlkZ2VzJywKLSAgICAndXZlc2FmYjogNTAwMCBtcyB0YXNrIHRpbWVvdXQsIGluZmluaXRlbHkgd2FpdGluZycsCiAgICAgJ3RzYzogSFBFVC9QTVRJTUVSIGNhbGlicmF0aW9uIGZhaWxlZCcsCiAgICAgIm1vZGVzZXQoMCk6IEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBEUkkyIGV4dGVuc2lvbiIsCi0gICAgInV2ZXNhZmI6IGNhbm5vdCByZXNlcnZlIHZpZGVvIG1lbW9yeSBhdCIsCi0gICAgInV2ZXNhZmI6IHByb2JlIG9mIHV2ZXNhZmIuMCBmYWlsZWQgd2l0aCBlcnJvciIsCiAgICAgImdsYW1vciBpbml0aWFsaXphdGlvbiBmYWlsZWQiLAogXSArIGNvbW1vbl9lcnJvcnMKIApAQCAtMTMzLDYgKzEzNCw3IEBACiAgICAgICAgICcoRUUpIFNlcnZlciB0ZXJtaW5hdGVkIHdpdGggZXJyb3IgKDEpLiBDbG9zaW5nIGxvZyBmaWxlLicsCiAgICAgICAgICdkbWk6IEZpcm13YXJlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuJywKICAgICAgICAgJ2lycTogdHlwZSBtaXNtYXRjaCwgZmFpbGVkIHRvIG1hcCBod2lycS0yNyBmb3IgL2ludGMnLAorICAgICAgICAnbG9naW5kOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gc2VhdCcsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogICAgICdpbnRlbC1jb3JlMi0zMicgOiBbCiAgICAgICAgICdBQ1BJOiBObyBfQlFDIG1ldGhvZCwgY2Fubm90IGRldGVybWluZSBpbml0aWFsIGJyaWdodG5lc3MnLApAQCAtMTg0LDExICsxODYsNiBAQAogICAgICAgICAnRmFpbGVkIHRvIG1ha2UgRUdMIGNvbnRleHQgY3VycmVudCcsCiAgICAgICAgICdnbGFtb3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkJywKICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCi0gICAgJ21wYzgzMTVlLXJkYicgOiBbCi0gICAgICAgICdvZl9pcnFfcGFyc2VfcGNpOiBmYWlsZWQgd2l0aCcsCi0gICAgICAgICdGYXRhbCBzZXJ2ZXIgZXJyb3I6JywKLSAgICAgICAgJ1NlcnZlciB0ZXJtaW5hdGVkIHdpdGggZXJyb3InLAotICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKIH0KIAogbG9nX2xvY2F0aW9ucyA9IFsiL3Zhci9sb2cvIiwiL3Zhci9sb2cvZG1lc2ciLCAiL3RtcC9kbWVzZ19vdXRwdXQubG9nIl0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKaW5kZXggZDhkMWUxYi4uOTlhNDRmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkKQEAgLTIsNiArMiw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICMKIAoraW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBwcHJpbnQKIGltcG9ydCBkYXRldGltZQpAQCAtMTgsNyArMTksMjAgQEAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCiAgICAgQE9FSGFzUGFja2FnZShbJ3B0ZXN0LXJ1bm5lciddKQogICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKLSAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcihzZWxmKToKKyAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcl9leHBlY3RmYWlsKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi50ZC5nZXQoJ1BURVNUX0VYUEVDVF9GQUlMVVJFJyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdDYW5ub3QgcnVuIHB0ZXN0cyB3aXRoIEBleHBlY3RlZEZhaWx1cmUgYXMgcHRlc3RzIGFyZSByZXF1aXJlZCB0byBwYXNzJykKKyAgICAgICAgc2VsZi5kb19wdGVzdHJ1bm5lcigpCisKKyAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QnLCAnVGVzdCByZXF1aXJlcyBwdGVzdCB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMnKQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBAT0VIYXNQYWNrYWdlKFsncHRlc3QtcnVubmVyJ10pCisgICAgZGVmIHRlc3RfcHRlc3RydW5uZXJfZXhwZWN0c3VjY2VzcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi50ZC5nZXQoJ1BURVNUX0VYUEVDVF9GQUlMVVJFJyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdDYW5ub3QgcnVuIHB0ZXN0cyB3aXRob3V0IEBleHBlY3RlZEZhaWx1cmUgYXMgcHRlc3RzIGFyZSBleHBlY3RlZCB0byBmYWlsJykKKyAgICAgICAgc2VsZi5kb19wdGVzdHJ1bm5lcigpCisKKyAgICBkZWYgZG9fcHRlc3RydW5uZXIoc2VsZik6CiAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCd3aGljaCBwdGVzdC1ydW5uZXInLCAwKQogICAgICAgICBpZiBzdGF0dXMgIT0gMDoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vIC1wdGVzdCBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkIGluIHRoZSBpbWFnZSIpCkBAIC02Nyw4ICs4MSwxMyBAQAogICAgICAgICAgICAgICAgIGV4dHJhc1t0ZXN0bmFtZV0gPSB7J3N0YXR1cyc6IHJlc3VsdH0KIAogICAgICAgICBmYWlsZWRfdGVzdHMgPSB7fQorCisgICAgICAgIGZvciBzZWN0aW9uIGluIHNlY3Rpb25zOgorICAgICAgICAgICAgaWYgJ2V4aXRjb2RlJyBpbiBzZWN0aW9uc1tzZWN0aW9uXS5rZXlzKCk6CisgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzW3NlY3Rpb25dID0gc2VjdGlvbnNbc2VjdGlvbl1bImxvZyJdCisKICAgICAgICAgZm9yIHNlY3Rpb24gaW4gcmVzdWx0czoKLSAgICAgICAgICAgIGZhaWxlZF90ZXN0Y2FzZXMgPSBbICJfIi5qb2luKHRlc3QudHJhbnNsYXRlKHRyYW5zKS5zcGxpdCgpKSBmb3IgdGVzdCBpbiByZXN1bHRzW3NlY3Rpb25dIGlmIHJlc3VsdHNbc2VjdGlvbl1bdGVzdF0gPT0gJ2ZhaWwnIF0KKyAgICAgICAgICAgIGZhaWxlZF90ZXN0Y2FzZXMgPSBbICJfIi5qb2luKHRlc3QudHJhbnNsYXRlKHRyYW5zKS5zcGxpdCgpKSBmb3IgdGVzdCBpbiByZXN1bHRzW3NlY3Rpb25dIGlmIHJlc3VsdHNbc2VjdGlvbl1bdGVzdF0gPT0gJ0ZBSUxFRCcgXQogICAgICAgICAgICAgaWYgZmFpbGVkX3Rlc3RjYXNlczoKICAgICAgICAgICAgICAgICBmYWlsZWRfdGVzdHNbc2VjdGlvbl0gPSBmYWlsZWRfdGVzdGNhc2VzCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3dlc3Rvbi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3dlc3Rvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzI5ZWNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvd2VzdG9uLnB5CkBAIC0wLDAgKzEsNjkgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3RGZWF0dXJlCitmcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQorCitjbGFzcyBXZXN0b25UZXN0KE9FUnVudGltZVRlc3RDYXNlKToKKyAgICB3ZXN0b25fbG9nX2ZpbGUgPSAnL3RtcC93ZXN0b24ubG9nJworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ3JtICVzJyAlIGNscy53ZXN0b25fbG9nX2ZpbGUpCisKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgQE9FSGFzUGFja2FnZShbJ3dlc3RvbiddKQorICAgIGRlZiB0ZXN0X3dlc3Rvbl9ydW5uaW5nKHNlbGYpOgorICAgICAgICBjbWQgPSclcyB8IGdyZXAgW3ddZXN0b24tZGVza3RvcC1zaGVsbCcgJSBzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKKyAgICAgICAgbXNnID0gKCdXZXN0b24gZG9lcyBub3QgYXBwZWFyIHRvIGJlIHJ1bm5pbmcgJXMnICUKKyAgICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10pWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKworICAgIGRlZiBnZXRfcHJvY2Vzc2VzX29mKHNlbGYsIHRhcmdldCwgZXJyb3JfbXNnKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3BpZG9mICVzJyAlIHRhcmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0nUmV0cmlldmUgJXMgKCVzKSBwcm9jZXNzZXMgZXJyb3I6ICVzJyAlICh0YXJnZXQsIGVycm9yX21zZywgb3V0cHV0KSkKKyAgICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdCgiICIpCisKKyAgICBkZWYgZ2V0X3dlc3Rvbl9jb21tYW5kKHNlbGYsIGNtZCk6CisgICAgICAgIHJldHVybiAnZXhwb3J0IFhER19SVU5USU1FX0RJUj0vcnVuL3VzZXIvMDsgZXhwb3J0IFdBWUxBTkRfRElTUExBWT13YXlsYW5kLTA7ICVzJyAlIGNtZAorCisgICAgZGVmIHJ1bl93ZXN0b25faW5pdChzZWxmKToKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKHNlbGYuZ2V0X3dlc3Rvbl9jb21tYW5kKCd3ZXN0b24gLS1sb2c9JXMnICUgc2VsZi53ZXN0b25fbG9nX2ZpbGUpKQorCisgICAgZGVmIGdldF9uZXdfd2F5bGFuZF9wcm9jZXNzZXMoc2VsZiwgZXhpc3Rpbmdfd2xfcHJvY2Vzc2VzKToKKyAgICAgICAgdHJ5X2NudCA9IDAKKyAgICAgICAgd2hpbGUgdHJ5X2NudCA8IDU6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDUgKyA1KnRyeV9jbnQpCisgICAgICAgICAgICB0cnlfY250ICs9IDEKKyAgICAgICAgICAgIHdsX3Byb2Nlc3NlcyA9IHNlbGYuZ2V0X3Byb2Nlc3Nlc19vZignd2VzdG9uLWRlc2t0b3Atc2hlbGwnLCAnZXhpc3RpbmcgYW5kIG5ldycpCisgICAgICAgICAgICBuZXdfd2xfcHJvY2Vzc2VzID0gW3ggZm9yIHggaW4gd2xfcHJvY2Vzc2VzIGlmIHggbm90IGluIGV4aXN0aW5nX3dsX3Byb2Nlc3Nlc10KKyAgICAgICAgICAgIGlmIG5ld193bF9wcm9jZXNzZXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQKKworICAgICAgICByZXR1cm4gbmV3X3dsX3Byb2Nlc3NlcywgdHJ5X2NudAorCisgICAgQE9FSGFzUGFja2FnZShbJ3dlc3RvbiddKQorICAgIGRlZiB0ZXN0X3dlc3Rvbl9pbmZvKHNlbGYpOgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihzZWxmLmdldF93ZXN0b25fY29tbWFuZCgnd2VzdG9uLWluZm8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0nd2VzdG9uLWluZm8gZXJyb3I6ICVzJyAlIG91dHB1dCkKKworICAgIEBPRUhhc1BhY2thZ2UoWyd3ZXN0b24nXSkKKyAgICBkZWYgdGVzdF93ZXN0b25fY2FuX2luaXRpYWxpemVfbmV3X3dheWxhbmRfY29tcG9zaXRvcihzZWxmKToKKyAgICAgICAgZXhpc3Rpbmdfd2xfcHJvY2Vzc2VzID0gc2VsZi5nZXRfcHJvY2Vzc2VzX29mKCd3ZXN0b24tZGVza3RvcC1zaGVsbCcsICdleGlzdGluZycpCisgICAgICAgIGV4aXN0aW5nX3dlc3Rvbl9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3RvbicsICdleGlzdGluZycpCisKKyAgICAgICAgd2VzdG9uX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYucnVuX3dlc3Rvbl9pbml0KQorICAgICAgICB3ZXN0b25fdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgbmV3X3dsX3Byb2Nlc3NlcywgdHJ5X2NudCA9IHNlbGYuZ2V0X25ld193YXlsYW5kX3Byb2Nlc3NlcyhleGlzdGluZ193bF9wcm9jZXNzZXMpCisgICAgICAgIGV4aXN0aW5nX2FuZF9uZXdfd2VzdG9uX3Byb2Nlc3NlcyA9IHNlbGYuZ2V0X3Byb2Nlc3Nlc19vZignd2VzdG9uJywgJ2V4aXN0aW5nIGFuZCBuZXcnKQorICAgICAgICBuZXdfd2VzdG9uX3Byb2Nlc3NlcyA9IFt4IGZvciB4IGluIGV4aXN0aW5nX2FuZF9uZXdfd2VzdG9uX3Byb2Nlc3NlcyBpZiB4IG5vdCBpbiBleGlzdGluZ193ZXN0b25fcHJvY2Vzc2VzXQorICAgICAgICBmb3IgdyBpbiBuZXdfd2VzdG9uX3Byb2Nlc3NlczoKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bigna2lsbCAtOSAlcycgJSB3KQorICAgICAgICBfXywgd2VzdG9uX2xvZyA9IHNlbGYudGFyZ2V0LnJ1bignY2F0ICVzJyAlIHNlbGYud2VzdG9uX2xvZ19maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3X3dsX3Byb2Nlc3NlcywgbXNnPSdDb3VsZCBub3QgZ2V0IG5ldyB3ZXN0b24tZGVza3RvcC1zaGVsbCBwcm9jZXNzZXMgKCVzLCB0cnlfY250OiVzKSB3ZXN0b24gbG9nOiAlcycgJSAobmV3X3dsX3Byb2Nlc3NlcywgdHJ5X2NudCwgd2VzdG9uX2xvZykpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQppbmRleCBlZjczOGEzLi4zODI2ZjI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgICBkZWZhdWx0X2RhdGEgPSBOb25lCiAgICAgZGVmYXVsdF90ZXN0X2RhdGEgPSAnZGF0YS90ZXN0ZGF0YS5qc29uJwogICAgIGRlZmF1bHRfdGVzdHMgPSAnJworICAgIGRlZmF1bHRfanNvbl9yZXN1bHRfZGlyID0gJyVzLXJlc3VsdHMnICUgbmFtZQogCiAgICAgZGVmYXVsdF90YXJnZXRfdHlwZSA9ICdzaW1wbGVyZW1vdGUnCiAgICAgZGVmYXVsdF9tYW5pZmVzdCA9ICdkYXRhL21hbmlmZXN0JwpAQCAtNzcsNyArNzgsNyBAQAogCiAgICAgICAgIHJ1bnRpbWVfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXBhY2thZ2VzLW1hbmlmZXN0JywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfbWFuaWZlc3QsCi0gICAgICAgICAgICAgICAgaGVscD0iUGFja2FnZSBtYW5pZmVzdCBvZiB0aGUgaW1hZ2UgdW5kZXIgdGVzdGksIGRlZmF1bHQ6ICVzIiBcCisgICAgICAgICAgICAgICAgaGVscD0iUGFja2FnZSBtYW5pZmVzdCBvZiB0aGUgaW1hZ2UgdW5kZXIgdGVzdCwgZGVmYXVsdDogJXMiIFwKICAgICAgICAgICAgICAgICAlIHNlbGYuZGVmYXVsdF9tYW5pZmVzdCkKIAogICAgICAgICBydW50aW1lX2dyb3VwLmFkZF9hcmd1bWVudCgnLS1leHRyYWN0LWRpcicsIGFjdGlvbj0nc3RvcmUnLApAQCAtOTgsNiArOTksMTIgQEAKICAgICAgICAgICAgICAgICB0YXJnZXRfaXAgPSB0YXJnZXRfaXBfcG9ydFswXQogICAgICAgICAgICAgICAgIGt3YXJnc1sncG9ydCddID0gdGFyZ2V0X2lwX3BvcnRbMV0KIAorICAgICAgICBpZiBzZXJ2ZXJfaXA6CisgICAgICAgICAgICBzZXJ2ZXJfaXBfcG9ydCA9IHNlcnZlcl9pcC5zcGxpdCgnOicpCisgICAgICAgICAgICBpZiBsZW4oc2VydmVyX2lwX3BvcnQpID09IDI6CisgICAgICAgICAgICAgICAgc2VydmVyX2lwID0gc2VydmVyX2lwX3BvcnRbMF0KKyAgICAgICAgICAgICAgICBrd2FyZ3NbJ3NlcnZlcl9wb3J0J10gPSBpbnQoc2VydmVyX2lwX3BvcnRbMV0pCisKICAgICAgICAgaWYgdGFyZ2V0X3R5cGUgPT0gJ3NpbXBsZXJlbW90ZSc6CiAgICAgICAgICAgICB0YXJnZXQgPSBPRVNTSFRhcmdldChsb2dnZXIsIHRhcmdldF9pcCwgc2VydmVyX2lwLCAqKmt3YXJncykKICAgICAgICAgZWxpZiB0YXJnZXRfdHlwZSA9PSAncWVtdSc6CkBAIC0xNzgsNyArMTg1LDcgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgb2JqID0gTm9uZQogICAgICAgICByZXR1cm4gb2JqCi0gICAgICAgIAorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiByZWFkUGFja2FnZXNNYW5pZmVzdChtYW5pZmVzdCk6CiAgICAgICAgIGlmIG5vdCBtYW5pZmVzdCBvciBub3Qgb3MucGF0aC5leGlzdHMobWFuaWZlc3QpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkY3Bpby5weQppbmRleCAwYTVlNjhkLi45MDJlOTNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkY3Bpby5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkY3Bpby5weQpAQCAtMTcsMTAgKzE3LDEwIEBACiAgICAgIiIiCiAgICAgZGVmIHRlc3RfY3BpbyhzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJjcGlvLSIsIGRpcj1zZWxmLnRjLnNka19kaXIpIGFzIHRlc3RkaXI6Ci0gICAgICAgICAgICB0YXJiYWxsID0gc2VsZi5mZXRjaCh0ZXN0ZGlyLCBzZWxmLnRkWyJETF9ESVIiXSwgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEyLnRhci5neiIpCisgICAgICAgICAgICB0YXJiYWxsID0gc2VsZi5mZXRjaCh0ZXN0ZGlyLCBzZWxmLnRkWyJETF9ESVIiXSwgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEzLnRhci5neiIpCiAKICAgICAgICAgICAgIGRpcnMgPSB7fQotICAgICAgICAgICAgZGlyc1sic291cmNlIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImNwaW8tMi4xMiIpCisgICAgICAgICAgICBkaXJzWyJzb3VyY2UiXSA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiY3Bpby0yLjEzIikKICAgICAgICAgICAgIGRpcnNbImJ1aWxkIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImJ1aWxkIikKICAgICAgICAgICAgIGRpcnNbImluc3RhbGwiXSA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiaW5zdGFsbCIpCiAKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRpcnNbInNvdXJjZSJdKSkKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcnNbImJ1aWxkIl0pCiAKLSAgICAgICAgICAgIHNlbGYuX3J1bigiY2Qge2J1aWxkfSAmJiB7c291cmNlfS9jb25maWd1cmUgJENPTkZJR1VSRV9GTEFHUyIuZm9ybWF0KCoqZGlycykpCisgICAgICAgICAgICBzZWxmLl9ydW4oImNkIHtidWlsZH0gJiYge3NvdXJjZX0vY29uZmlndXJlIC0tZGlzYWJsZS1tYWludGFpbmVyLW1vZGUgJENPTkZJR1VSRV9GTEFHUyIuZm9ybWF0KCoqZGlycykpCiAgICAgICAgICAgICBzZWxmLl9ydW4oImNkIHtidWlsZH0gJiYgbWFrZSAtaiIuZm9ybWF0KCoqZGlycykpCiAgICAgICAgICAgICBzZWxmLl9ydW4oImNkIHtidWlsZH0gJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9e2luc3RhbGx9Ii5mb3JtYXQoKipkaXJzKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CmluZGV4IDA5ZTc3YzEuLjAxYzM4YzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgICAgICBzZGtfZW52cyA9IE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5fZ2V0X3Nka19lbnZpcm9ucyhhcmdzLnNka19kaXIpCiAgICAgICAgIGlmIG5vdCBzZGtfZW52czoKICAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlX29lLkFyZ3VtZW50VXNhZ2VFcnJvcigiTm8gYXZhaWxhYmxlIFNESyAiXAotICAgICAgICAgICAgICAgICAgICJlbnZpcm9tZW50cyBmb3VuZCBhdCAlcyIgJSBhcmdzLnNka19kaXIsIHNlbGYubmFtZSkKKyAgICAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnRzIGZvdW5kIGF0ICVzIiAlIGFyZ3Muc2RrX2Rpciwgc2VsZi5uYW1lKQogCiAgICAgICAgIGlmIGFyZ3MubGlzdF9zZGtfZW52OgogICAgICAgICAgICAgc2VsZi5fZGlzcGxheV9zZGtfZW52cyhsb2dnZXIuaW5mbywgYXJncywgc2RrX2VudnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Rlc3RzZGsucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Rlc3RzZGsucHkKaW5kZXggNzg1YjVkZC4uYzVjNDZkZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvdGVzdHNkay5weQpAQCAtMjUsMTEgKzI1LDggQEAKIAogICAgICAgICBzdWJwcm9jZXNzdHdlYWsuZXJyb3JzX2hhdmVfb3V0cHV0KCkKIAotICAgICAgICAjIGV4dGVuc2libGUgc2RrIGNhbiBiZSBjb250YW1pbmF0ZWQgaWYgbmF0aXZlIHByb2dyYW1zIGFyZQotICAgICAgICAjIGluIFBBVEgsIGkuZS4gdXNlIHBlcmwtbmF0aXZlIGluc3RlYWQgb2YgZVNESyBvbmUuCi0gICAgICAgIHBhdGhzX3RvX2F2b2lkID0gW2QuZ2V0VmFyKCdTVEFHSU5HX0RJUicpLAotICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0JBU0VfV09SS0RJUicpXQotICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBhdm9pZF9wYXRoc19pbl9lbnZpcm9uKHBhdGhzX3RvX2F2b2lkKQorICAgICAgICAjIFdlIG5lZWQgdGhlIG9yaWdpbmFsIFBBVEggZm9yIHRlc3RpbmcgdGhlIGVTREssIG5vdCB3aXRoIG91ciBtYW5pcHVsYXRpb25zCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGQuZ2V0VmFyKCJCQl9PUklHRU5WIiwgRmFsc2UpLmdldFZhcigiUEFUSCIpCiAKICAgICAgICAgdGNuYW1lID0gZC5leHBhbmQoIiR7U0RLX0RFUExPWX0vJHtUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRX0uc2giKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGNuYW1lKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKaW5kZXggYWMzMzA4ZC4uZGNhZDRmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKQEAgLTYsNyArNiw2IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogaW1wb3J0IGdsb2IKIGltcG9ydCBlcnJubwogZnJvbSB1bml0dGVzdC51dGlsIGltcG9ydCBzYWZlX3JlcHIKQEAgLTMwLDkgKzI5LDcgQEAKICAgICAgICAgY2xzLmJ1aWxkZGlyID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXQogCiAgICAgICAgIGNscy5sb2NhbGNvbmZfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2xvY2FsY29uZiddCi0gICAgICAgIGNscy5sb2NhbGNvbmZfYmFja3VwID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddCiAgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19wYXRoID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYmJsYXllcnMnXQotICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfYmFja3VwID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10KIAogICAgICAgICBjbHMudGVzdGluY19wYXRoID0gb3MucGF0aC5qb2luKGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10sCiAgICAgICAgICAgICAgICAgImNvbmYvc2VsZnRlc3QuaW5jIikKQEAgLTQzLDggKzQwLDcgQEAKIAogICAgICAgICBjbHMuX3RyYWNrX2Zvcl9jbGVhbnVwID0gWwogICAgICAgICAgICAgY2xzLnRlc3RpbmNfcGF0aCwgY2xzLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwKLSAgICAgICAgICAgIGNscy5tYWNoaW5laW5jX3BhdGgsIGNscy5sb2NhbGNvbmZfYmFja3VwLAotICAgICAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX2JhY2t1cF0KKyAgICAgICAgICAgIGNscy5tYWNoaW5laW5jX3BhdGhdCiAKICAgICAgICAgY2xzLmFkZF9pbmNsdWRlKCkKIApAQCAtMTAyLDMwICs5OCw2IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIHNlbGYpLnNldFVwKCkKICAgICAgICAgb3MuY2hkaXIoc2VsZi5idWlsZGRpcikKLSAgICAgICAgIyBDaGVjayBpZiBsb2NhbC5jb25mIG9yIGJibGF5ZXJzLmNvbmYgZmlsZXMgYmFja3VwIGV4aXN0cwotICAgICAgICAjIGZyb20gYSBwcmV2aW91cyBmYWlsZWQgdGVzdCBhbmQgcmVzdG9yZSB0aGVtCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCkgb3Igb3MucGF0aC5pc2ZpbGUoCi0gICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlwKLUZvdW5kIGEgbG9jYWwuY29uZiBhbmQvb3IgYmJsYXllcnMuY29uZiBiYWNrdXAgZnJvbSBhIHByZXZpb3VzbHkgYWJvcnRlZCB0ZXN0LlwKLVJlc3RvcmluZyB0aGVzZSBmaWxlcyBub3csIGJ1dCB0ZXN0cyBzaG91bGQgYmUgcmUtZXhlY3V0ZWQgZnJvbSBhIGNsZWFuIGVudmlyb25tZW50XAotdG8gZW5zdXJlIGFjY3VyYXRlIHJlc3VsdHMuIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwLCBzZWxmLmxvY2FsY29uZl9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGJhY2t1cCBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mCi0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfcGF0aCwgc2VsZi5sb2NhbGNvbmZfYmFja3VwKQotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCwgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZiBiYWNrdXBzLiIpCiAgICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwcmV2aW91cyB0ZXN0IGxlZnQgYXJvdW5kIGluIGNvbmZpZyBvciBpbmMgZmlsZXMKICAgICAgICAgIyBpZiBpdCBmYWlsZWQgc28gd2UgbmVlZCBhIGZyZXNoIHN0YXJ0CiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQppbmRleCBmODY3MmY4Li42MDZlYWFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CkBAIC0xMjksMyArMTI5LDEyOCBAQAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKIAogICAgICAgICBiaXRiYWtlKCctbiBjb3JlLWltYWdlLXNhdG8nKQorCisgICAgZGVmIF90ZXN0X2FyY2hpdmVyX21vZGUoc2VsZiwgbW9kZSwgdGFyZ2V0X2ZpbGVfbmFtZSwgZXh0cmFfY29uZmlnPU5vbmUpOgorICAgICAgICB0YXJnZXQgPSAic2VsZnRlc3QtZWQiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICAnQVJDSElWRVJfTU9ERVtzcmNdID0gIiVzIlxuJyAlIChtb2RlKQorICAgICAgICBpZiBleHRyYV9jb25maWc6CisgICAgICAgICAgICBmZWF0dXJlcyArPSBleHRyYV9jb25maWcKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgKHRhcmdldCkpCisgICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJ10pCisgICAgICAgIGdsb2Jfc3RyID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSwgJyVzLSonICUgKHRhcmdldCkpCisgICAgICAgIGdsb2JfcmVzdWx0ID0gZ2xvYi5nbG9iKGdsb2Jfc3RyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYl9yZXN1bHQsICdNaXNzaW5nIGFyY2hpdmVyIGRpcmVjdG9yeSBmb3IgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYXJjaGl2ZV9wYXRoID0gb3MucGF0aC5qb2luKGdsb2JfcmVzdWx0WzBdLCB0YXJnZXRfZmlsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYXJjaGl2ZV9wYXRoKSwgJ01pc3NpbmcgYXJjaGl2ZSBmaWxlICVzJyAlICh0YXJnZXRfZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfb3JpZ2luYWwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ29yaWdpbmFsJywgJ2VkLTEuMTQuMS50YXIubHonKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9wYXRjaGVkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAicGF0Y2hlZCJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ3BhdGNoZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLXBhdGNoZWQudGFyLmd6JykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfY29uZmlndXJlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gImNvbmZpZ3VyZWQiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdjb25maWd1cmVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1jb25maWd1cmVkLnRhci5neicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX3JlY2lwZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtyZWNpcGVdID0gIjEiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1yZWNpcGUudGFyLmd6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSJcbicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX2RpZmYoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbZGlmZl0gPSAiMSJgLgorICAgICAgICBFeGNsdXNpb25zIGNvbnRyb2xsZWQgYnkgYEFSQ0hJVkVSX01PREVbZGlmZi1leGNsdWRlXWAgYXJlIG5vdCB5ZXQgdGVzdGVkLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ3BhdGNoZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLWRpZmYuZ3onLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FSQ0hJVkVSX01PREVbZGlmZl0gPSAiMSJcbicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX2R1bXBkYXRhKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgncGF0Y2hlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtc2hvd2RhdGEuZHVtcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPSAiMSJcbicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX21pcnJvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ21pcnJvcicsICdlZC0xLjE0LjEudGFyLmx6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSJcbicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX21pcnJvcl9leGNsdWRlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJgIGFuZAorICAgICAgICBjb3JyZWN0bHkgZXhjbHVkZXMgYW4gYXJjaGl2ZSB3aGVuIGl0cyBVUkwgbWF0Y2hlcworICAgICAgICBgQVJDSElWRVJfTUlSUk9SX0VYQ0xVREVgLgorICAgICAgICAiIiIKKworICAgICAgICB0YXJnZXQ9J3NlbGZ0ZXN0LWVkJworICAgICAgICB0YXJnZXRfZmlsZV9uYW1lID0gJ2VkLTEuMTQuMS50YXIubHonCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NSVJST1JfRVhDTFVERSA9ICIke0dOVV9NSVJST1J9IlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSAodGFyZ2V0KSkKKyAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnXSkKKyAgICAgICAgZ2xvYl9zdHIgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddLCAnJXMtKicgJSAodGFyZ2V0KSkKKyAgICAgICAgZ2xvYl9yZXN1bHQgPSBnbG9iLmdsb2IoZ2xvYl9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnbG9iX3Jlc3VsdCwgJ01pc3NpbmcgYXJjaGl2ZXIgZGlyZWN0b3J5IGZvciAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBhcmNoaXZlX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2xvYl9yZXN1bHRbMF0sIHRhcmdldF9maWxlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoYXJjaGl2ZV9wYXRoKSwgJ0ZhaWxlZCB0byBleGNsdWRlIGFyY2hpdmUgZmlsZSAlcycgJSAodGFyZ2V0X2ZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX21pcnJvcl9jb21iaW5lZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJgCisgICAgICAgIGFuZCBgQVJDSElWRVJfTU9ERVttaXJyb3JdID0gImNvbWJpbmVkImAuIEFyY2hpdmVzIGZvciBtdWx0aXBsZSByZWNpcGVzCisgICAgICAgIHNob3VsZCBhbGwgZW5kIHVwIGluIHRoZSAnbWlycm9yJyBkaXJlY3RvcnkuCisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbbWlycm9yXSA9ICJjb21iaW5lZCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFID0gIioiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGZvciB0YXJnZXQgaW4gWydzZWxmdGVzdC1lZCcsICdzZWxmdGVzdC1oYXJkbGluayddOgorICAgICAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgKHRhcmdldCkpCisgICAgICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnXSkKKyAgICAgICAgZm9yIHRhcmdldF9maWxlX25hbWUgaW4gWydlZC0xLjE0LjEudGFyLmx6JywgJ2hlbGxvLmMnXToKKyAgICAgICAgICAgIGdsb2Jfc3RyID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sICdtaXJyb3InLCB0YXJnZXRfZmlsZV9uYW1lKQorICAgICAgICAgICAgZ2xvYl9yZXN1bHQgPSBnbG9iLmdsb2IoZ2xvYl9zdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYl9yZXN1bHQsICdNaXNzaW5nIGFyY2hpdmUgZmlsZSAlcycgJSAodGFyZ2V0X2ZpbGVfbmFtZSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CmluZGV4IDU3ZTY2NjIuLjU4ODY4NjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5CkBAIC01MTEsNiArNTExLDI2IEBACiAgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKIAorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX25wbShzZWxmKToKKyAgICAgICAgcG4gPSAnc2F2b2lyZmFpcmVsaW51eC1ub2RlLXNlcnZlci1leGFtcGxlJworICAgICAgICBwdiA9ICcxLjAuMCcKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0nICsgcHYKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgcG4pCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgXCclc1wnJyAlIHVybCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHBuLCAnJXNfJXMuYmInICUgKHBuLCBwdikpLCAnUmVjaXBlIG5vdCBjcmVhdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHBuLCBwbiwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKSwgJ1Nocmlua3dyYXAgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocG4sIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUgKGhhdmUgdG8gZG8gdGhpcyAqYWZ0ZXIqIGRldnRvb2wgYWRkIHNpbmNlIHRoZSByZWNpcGUgb25seSBleGlzdHMgdGhlbikKKyAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgcG4pCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGJ1aWxkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBwbikKKwogY2xhc3MgRGV2dG9vbE1vZGlmeVRlc3RzKERldnRvb2xCYXNlKToKIAogICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5KHNlbGYpOgpAQCAtMTcyMSw3ICsxNzQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHRoZSBrZXJuZWwuCiAgICAgICAgICAiIiIKICAgICAgICAga2VybmVsX3Byb3ZpZGVyID0gZ2V0X2JiX3ZhcignUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsJykKLSAgICAgICAgIyBDbGVhbiB1cCB0aGUgZW52aXJvbWVudAorICAgICAgICAjIENsZWFuIHVwIHRoZSBlbnZpcm9ubWVudAogICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBrZXJuZWxfcHJvdmlkZXIpCiAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKICAgICAgICAgdGVtcGRpcl9jZmcgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nY29uZmlnX3FhJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKaW5kZXggNjhiYTU1Ni4uZTFjZmMzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKQEAgLTQyLDggKzQyLDkgQEAKIAogICAgIGRlZiB0ZXN0X21haW50YWluZXJzKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBvZS1jb3JlIHJlY2lwZXMgaGF2ZSBhIG1haW50YWluZXIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBvZS1jb3JlIHJlY2lwZXMgaGF2ZSBhIG1haW50YWluZXIgYW5kIGVudHJpZXMgaW4gbWFpbnRhaW5lcnMgbGlzdCBoYXZlIGEgcmVjaXBlCiAgICAgICAgIEV4cGVjdGVkOiAgICBBbGwgb2UtY29yZSByZWNpcGVzIChleGNlcHQgYSBmZXcgc3BlY2lhbCBzdGF0aWMvdGVzdGluZyBvbmVzKSBzaG91bGQgaGF2ZSBhIG1haW50YWluZXIgbGlzdGVkIGluIG1haW50YWluZXJzLmluYyBmaWxlLgorICAgICAgICBFeHBlY3RlZDogICAgQWxsIGVudHJpZXMgaW4gbWFpbnRhaW5lcnMgbGlzdCBzaG91bGQgaGF2ZSBhIHJlY2lwZSBmaWxlIHRoYXQgbWF0Y2hlcyB0aGVtCiAgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCiAgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KICAgICAgICAgIiIiCkBAIC01NCw3ICs1NSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIGZlYXR1cmUgPSAncmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluY1xuJworICAgICAgICBkZWYgaXNfbWFpbnRhaW5lcl9leGNlcHRpb24oZW50cnkpOgorICAgICAgICAgICAgZXhjZXB0aW9ucyA9IFsibXVzbCIsICJuZXdsaWIiLCAibGludXgteW9jdG8iLCAibGludXgtZHVtbXkiLCAibWVzYS1nbCIsICJsaWJnZm9ydHJhbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjdmUtdXBkYXRlLWRiLW5hdGl2ZSJdCisgICAgICAgICAgICBmb3IgaSBpbiBleGNlcHRpb25zOgorICAgICAgICAgICAgICAgICBpZiBpIGluIGVudHJ5OgorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGZlYXR1cmUgPSAncmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluY1xuTElDRU5TRV9GTEFHU19XSElURUxJU1QgKz0gIiBjb21tZXJjaWFsIlxuUEFSU0VfQUxMX1JFQ0lQRVMgPSAiMSJcbicKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKIAogICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CkBAIC02Miw2ICs3MSwxMSBAQAogCiAgICAgICAgICAgICB3aXRoX21haW50YWluZXJfbGlzdCA9IFtdCiAgICAgICAgICAgICBub19tYWludGFpbmVyX2xpc3QgPSBbXQorCisgICAgICAgICAgICBtaXNzaW5nX3JlY2lwZXMgPSBbXQorICAgICAgICAgICAgcmVjaXBlcyA9IFtdCisgICAgICAgICAgICBwcmVmaXggPSAiUkVDSVBFX01BSU5UQUlORVJfcG4tIgorCiAgICAgICAgICAgICAjIFdlIGNvdWxkIGhhdmUgdXNlZCBhbGxfcmVjaXBlcygpIGhlcmUsIGJ1dCB0aGlzIG1ldGhvZCB3aWxsIGZpbmQKICAgICAgICAgICAgICMgZXZlcnkgcmVjaXBlIGlmIHdlIGV2ZXIgbW92ZSB0byBzZXR0aW5nIFJFQ0lQRV9NQUlOVEFJTkVSIGluIHJlY2lwZSBmaWxlcwogICAgICAgICAgICAgIyBpbnN0ZWFkIG9mIG1haW50YWluZXJzLmluYwpAQCAtNzEsNiArODUsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShmbiwgYXBwZW5kcz1GYWxzZSkKICAgICAgICAgICAgICAgICBwbiA9IHJkLmdldFZhcignUE4nKQorICAgICAgICAgICAgICAgIHJlY2lwZXMuYXBwZW5kKHBuKQogICAgICAgICAgICAgICAgIGlmIGlzX2V4Y2VwdGlvbihwbik6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgcmQuZ2V0VmFyKCdSRUNJUEVfTUFJTlRBSU5FUicpOgpAQCAtNzgsNiArOTMsMTUgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBub19tYWludGFpbmVyX2xpc3QuYXBwZW5kKChwbiwgZm4pKQogCisgICAgICAgICAgICBtYWludGFpbmVycyA9IHRpbmZvaWwuY29uZmlnX2RhdGEua2V5cygpCisgICAgICAgICAgICBmb3Iga2V5IGluIG1haW50YWluZXJzOgorICAgICAgICAgICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICAgICAgICAgICAgICAgcmVjaXBlID0gdGluZm9pbC5jb25maWdfZGF0YS5leHBhbmQoa2V5W2xlbihwcmVmaXgpOl0pCisgICAgICAgICAgICAgICAgICAgICBpZiBpc19tYWludGFpbmVyX2V4Y2VwdGlvbihyZWNpcGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICBpZiByZWNpcGUgbm90IGluIHJlY2lwZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19yZWNpcGVzLmFwcGVuZChyZWNpcGUpCisKICAgICAgICAgaWYgbm9fbWFpbnRhaW5lcl9saXN0OgogICAgICAgICAgICAgc2VsZi5mYWlsKCIiIgogVGhlIGZvbGxvd2luZyByZWNpcGVzIGRvIG5vdCBoYXZlIGEgbWFpbnRhaW5lciBhc3NpZ25lZCB0byB0aGVtLiBQbGVhc2UgYWRkIGFuIGVudHJ5IHRvIG1ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgZmlsZS4KQEAgLTg3LDMgKzExMSw4IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIiIiCiBUaGUgbGlzdCBvZiBvZS1jb3JlIHJlY2lwZXMgd2l0aCBtYWludGFpbmVycyBpcyBlbXB0eS4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGVzdCBoYXMgcmVncmVzc2VkIGFuZCBuZWVkcyBmaXhpbmcuCiAiIiIpCisKKyAgICAgICAgaWYgbWlzc2luZ19yZWNpcGVzOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiIiIKK1VuYWJsZSB0byBmaW5kIHJlY2lwZXMgZm9yIHRoZSBmb2xsb3dpbmcgZW50cmllcyBpbiBtYWludGFpbmVycy5pbmM6CisiIiIgKyAiXG4iLmpvaW4oWyclcycgJSBpIGZvciBpIGluIG1pc3NpbmdfcmVjaXBlc10pKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkKaW5kZXggNWE5MTdiOS4uM2VmZTE1MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5CkBAIC0yMSw4ICsyMSwxMCBAQAogICAgIGRlZiBydW5fY2hlY2soc2VsZiwgKnN1aXRlcywgc3NoID0gTm9uZSk6CiAgICAgICAgIHRhcmdldHMgPSBzZXQoKQogICAgICAgICBmb3IgcyBpbiBzdWl0ZXM6Ci0gICAgICAgICAgICBpZiBzIGluIFsiZ2NjIiwgImcrKyJdOgotICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay1nY2MiKQorICAgICAgICAgICAgaWYgcyA9PSAiZ2NjIjoKKyAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjLWMiKQorICAgICAgICAgICAgZWxpZiBzID09ICJnKysiOgorICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay1nY2MtYysrIikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLXRhcmdldC17fSIuZm9ybWF0KHMpKQogCkBAIC03Nyw3ICs3OSwxMiBAQAogQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQogY2xhc3MgR2NjQ3Jvc3NTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Nyb3NzX2djYyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fY2hlY2soImdjYyIsICJnKysiKQorICAgICAgICBzZWxmLnJ1bl9jaGVjaygiZ2NjIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR3h4Q3Jvc3NTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2Nyb3NzX2d4eChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImcrKyIpCiAKIEBPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKIGNsYXNzIEdjY0xpYkF0b21pY1NlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CkBAIC0xMDksNyArMTE2LDEyIEBACiBAT0VUZXN0VGFnKCJ0b29sY2hhaW4tc3lzdGVtIikKIGNsYXNzIEdjY0Nyb3NzU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Nyb3NzX2djYyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImdjYyIsICJnKysiKQorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgiZ2NjIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHeHhDcm9zc1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9jcm9zc19neHgoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJnKysiKQogCiBAT0VUZXN0VGFnKCJ0b29sY2hhaW4tc3lzdGVtIikKIGNsYXNzIEdjY0xpYkF0b21pY1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKaW5kZXggZWYyZWVmYS4uNWM1MTlhYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKQEAgLTIwOCwxMyArMjA4LDEzIEBACiAgICAgICAgICIiIgogICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKIAotICAgICAgICBpbWdfdHlwZXMgPSBbaXR5cGUgZm9yIGl0eXBlIGluIGdldF9iYl92YXIoIklNQUdFX1RZUEVTIiwgaW1hZ2VfbmFtZSkuc3BsaXQoKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXR5cGUgbm90IGluICgnY29udGFpbmVyJywgJ2VsZicsICdmMmZzJywgJ211bHRpdWJpJyldCisgICAgICAgIGFsbF9pbWFnZV90eXBlcyA9IHNldChnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkpCisgICAgICAgIGJsYWNrbGlzdCA9IHNldCgoJ2NvbnRhaW5lcicsICdlbGYnLCAnZjJmcycsICdtdWx0aXViaScsICd0YXIuenN0JykpCisgICAgICAgIGltZ190eXBlcyA9IGFsbF9pbWFnZV90eXBlcyAtIGJsYWNrbGlzdAogCiAgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTICs9ICIlcyJcbidcCiAgICAgICAgICAgICAgICAgICdNS1VCSUZTX0FSR1MgPz0gIi1tIDIwNDggLWUgMTI5MDI0IC1jIDIwNDciXG4nXAogICAgICAgICAgICAgICAgICAnVUJJTklaRV9BUkdTID89ICItbSAyMDQ4IC1wIDEyOEtpQiAtcyA1MTIiJyAlICcgJy5qb2luKGltZ190eXBlcykKLQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWcpCiAKICAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW5jb21wYXRpYmxlX2xpYy5weQppbmRleCA5MDRiNWI0Li4zZWFiZDc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW5jb21wYXRpYmxlX2xpYy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW5jb21wYXRpYmxlX2xpYy5weQpAQCAtNCw3ICs0LDcgQEAKIGNsYXNzIEluY29tcGF0aWJsZUxpY2Vuc2VUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCiAgICAgZGVmIGxpY190ZXN0KHNlbGYsIHBuLCBwbl9saWMsIGxpYyk6Ci0gICAgICAgIGVycm9yX21zZyA9ICdFUlJPUjogTm90aGluZyBQUk9WSURFUyBcJyVzXCdcbiVzIHdhcyBza2lwcGVkOiBpdCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2U6ICVzJyAlIChwbiwgcG4sIHBuX2xpYykKKyAgICAgICAgZXJyb3JfbXNnID0gJ0VSUk9SOiBOb3RoaW5nIFBST1ZJREVTIFwnJXNcJ1xuJXMgd2FzIHNraXBwZWQ6IGl0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMnICUgKHBuLCBwbiwgcG5fbGljKQogCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkNPTVBBVElCTEVfTElDRU5TRSArPSBcIiVzXCIiICUgKGxpYykpCiAKQEAgLTEyLDMwICsxMiw3MiBAQAogICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihyZXN1bHQub3V0cHV0KQogCi0gICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMpCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gQVZBSUxBQkxFX0xJQ0VOU0VTKQogICAgICMgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgdGhpcyBTUERYIGxpY2Vuc2UKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlKHNlbGYpOgogICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZScsICdHUEwtMy4wJywgJ0dQTC0zLjAnKQogCi0gICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMpCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gQVZBSUxBQkxFX0xJQ0VOU0VTKQogICAgICMgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYW4gYWxpYXMgKGluCiAgICAgIyBTUERYTElDRU5TRU1BUCkgb2YgdGhpcyBTUERYIGxpY2Vuc2UKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlKHNlbGYpOgogICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZScsICdHUEwtMy4wJywgJ0dQTHYzJykKIAorICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKKyAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEgd2lsZGNhcmRlZCBsaWNlbnNlCisgICAgIyBtYXRjaGluZyB0aGlzIFNQRFggbGljZW5zZQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2Vfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlJywgJ0dQTC0zLjAnLCAnKkdQTC0zLjAnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gQVZBSUxBQkxFX0xJQ0VOU0VTKQorICAgICMgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYSB3aWxkY2FyZGVkIGFsaWFzCisgICAgIyBsaWNlbnNlIG1hdGNoaW5nIHRoaXMgU1BEWCBsaWNlbnNlCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsaWFzX3NwZHhfbGljZW5zZV93aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICcqR1BMdjMnKQorCiAgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBhbGlhcyAoZnJvbSBTUERYTElDRU5TRU1BUCkgdG8gYW4gU1BEWAogICAgICMgbGljZW5zZSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyB0aGlzIFNQRFgKICAgICAjIGxpY2Vuc2UKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlX2FsaWFzKHNlbGYpOgotICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEx2MycsICdHUEwtMy4wJykKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMLTMuMCcsICdHUEwtMy4wJykKIAogICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKICAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgdGhpcyBhbGlhcwogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGlhc19zcGR4X2xpY2Vuc2VfYWxpYXMoc2VsZik6Ci0gICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTHYzJywgJ0dQTHYzJykKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMLTMuMCcsICdHUEx2MycpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIGFsaWFzIChmcm9tIFNQRFhMSUNFTlNFTUFQKSB0byBhbiBTUERYCisgICAgIyBsaWNlbnNlIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEgd2lsZGNhcmRlZAorICAgICMgbGljZW5zZSBtYXRjaGluZyB0aGlzIFNQRFggbGljZW5zZQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2VfYWxpYXNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnKkdQTC0zLjAnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBhbGlhcyAoZnJvbSBTUERYTElDRU5TRU1BUCkgdG8gYW4gU1BEWAorICAgICMgbGljZW5zZSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQKKyAgICAjIGFsaWFzIGxpY2Vuc2UgbWF0Y2hpbmcgdGhlIFNQRFggbGljZW5zZQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGlhc19zcGR4X2xpY2Vuc2VfYWxpYXNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnKkdQTHYzJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyAoZnJvbQorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTKSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucworICAgICMgc29tZSBvZiB0aGVtCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZXMoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlcycsICdHUEwtMy4wIExHUEwtMy4wJywgJ0dQTC0zLjAgTEdQTC0zLjAnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIChmcm9tCisgICAgIyBBVkFJTEFCTEVfTElDRU5TRVMpIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEKKyAgICAjIHdpbGRjYXJkIHRvIHNvbWUgb2YgdGhlbQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2VzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZXMnLCAnR1BMLTMuMCBMR1BMLTMuMCcsICcqR1BMLTMuMCcpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgKGZyb20KKyAgICAjIEFWQUlMQUJMRV9MSUNFTlNFUykgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYQorICAgICMgd2lsZGNhcmQgbWF0Y2hpbmcgYWxsIGxpY2Vuc2VzCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsbF9saWNlbnNlc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2VzJywgJ0dQTC0yLjAgR1BMLTMuMCBMR1BMLTMuMCcsICcqJykKIAogICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYSBub24tU1BEWCBsaWNlbnNlIChuZWl0aGVyIGluCi0gICAgIyBTUkNfRElTVFJJQlVURV9MSUNFTlNFUyBub3IgaW4gU1BEWExJQ0VOU0VNQVApIGNhbm5vdCBiZSBidWlsdCB3aGVuCisgICAgIyBBVkFJTEFCTEVfTElDRU5TRVMgbm9yIGluIFNQRFhMSUNFTlNFTUFQKSBjYW5ub3QgYmUgYnVpbHQgd2hlbgogICAgICMgSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgdGhpcyBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX25vbnNwZHhfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLW5vbnNwZHgtbGljZW5zZScsICdGb29MaWNlbnNlJywgJ0Zvb0xpY2Vuc2UnKQpAQCAtNDksNyArOTEsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFzaF9kZWZhdWx0KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhzZWxmLmRlZmF1bHRfY29uZmlnKCkpCi0gICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UgR1BMdjMrIGFuZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlLiIKKyAgICAgICAgZXJyb3JfbXNnID0gIkVSUk9SOiBjb3JlLWltYWdlLW1pbmltYWwtMS4wLXIwIGRvX3Jvb3RmczogUGFja2FnZSBiYXNoIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6IEdQTC0zLjArIgogCiAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKICAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgpAQCAtNTcsNyArOTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFzaF9hbmRfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoc2VsZi5kZWZhdWx0X2NvbmZpZygpICsgJ1xuTElDRU5TRV9hcHBlbmRfcG4tYmFzaCA9ICIgJiBTb21lTGljZW5zZSInKQotICAgICAgICBlcnJvcl9tc2cgPSAiRVJST1I6IGNvcmUtaW1hZ2UtbWluaW1hbC0xLjAtcjAgZG9fcm9vdGZzOiBQYWNrYWdlIGJhc2ggaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlIEdQTHYzKyAmIFNvbWVMaWNlbnNlIGFuZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlLiIKKyAgICAgICAgZXJyb3JfbXNnID0gIkVSUk9SOiBjb3JlLWltYWdlLW1pbmltYWwtMS4wLXIwIGRvX3Jvb3RmczogUGFja2FnZSBiYXNoIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UgYmVjYXVzZSBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6IEdQTC0zLjArIgogCiAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKICAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CmluZGV4IDAzOTAxYTIuLjgwOTE0MjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBkZWYgdGVzdF9tZXRhX2lkZV9jYW5fYnVpbGRfY3Bpb19wcm9qZWN0KHNlbGYpOgogICAgICAgICBkbF9kaXIgPSBzZWxmLnRkLmdldCgnRExfRElSJywgTm9uZSkKICAgICAgICAgc2VsZi5wcm9qZWN0ID0gU0RLQnVpbGRQcm9qZWN0KHNlbGYudG1wZGlyX21ldGFpZGVRQSArICIvY3Bpby8iLCBzZWxmLmVudmlyb25tZW50X3NjcmlwdF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEyLnRhci5neiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY3Bpby9jcGlvLTIuMTMudGFyLmd6IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG1wZGlyX21ldGFpZGVRQSwgc2VsZi50ZFsnREFURVRJTUUnXSwgZGxfZGlyPWRsX2RpcikKICAgICAgICAgc2VsZi5wcm9qZWN0LmRvd25sb2FkX2FyY2hpdmUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvamVjdC5ydW5fY29uZmlndXJlKCksIDAsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQppbmRleCA2ZDgwODI3Li5kNDY2NGJkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jsb2JfdG9fZGljdChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgY29udmVydGlvbiBvZiBnaXQgYmxvYnMgdG8gZGljdGlvbmFyeQorICAgICAgICBUZXN0IGNvbnZlcnNpb24gb2YgZ2l0IGJsb2JzIHRvIGRpY3Rpb25hcnkKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gb2UuYnVpbGRoaXN0b3J5X2FuYWx5c2lzIGltcG9ydCBibG9iX3RvX2RpY3QKICAgICAgICAgdmFsdWVzbWFwID0geyAiZm9vIiA6ICIxIiwgImJhciIgOiAiMiIgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKaW5kZXggNDFjYmUwNC4uMmYxOGQ4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CkBAIC00LDYgKzQsNyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQpAQCAtMzMsMTUgKzM0LDEzIEBACiAgICAgICAgIGlmIGV4cGVjdGVkX2VuZGxpbmVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdNaXNzaW5nIGV4cGVjdGVkIGxpbmUgZW5kaW5nczpcbiAgJXMnICUgJ1xuICAnLmpvaW4oZXhwZWN0ZWRfZW5kbGluZXMpKQogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMoImNhaXJvIiksICJQeXRob24gY2Fpcm8gbW9kdWxlIGlzIG5vdCBwcmVzZW50IikKIGNsYXNzIE9FU2NyaXB0VGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIHN1cGVyKE9FU2NyaXB0VGVzdHMsIGNscykuc2V0VXBDbGFzcygpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBjYWlybwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnUHl0aG9uIG1vZHVsZSBjYWlybyBpcyBub3QgcHJlc2VudCcpCisgICAgICAgIGltcG9ydCBjYWlybwogICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwgLWMgcm9vdGZzIC1mIikKICAgICAgICAgY2xzLnRtcGRpciA9IGdldF9iYl92YXIoJ1RNUERJUicpCiAgICAgICAgIGNscy5idWlsZHN0YXRzID0gY2xzLnRtcGRpciArICIvYnVpbGRzdGF0cy8iICsgc29ydGVkKG9zLmxpc3RkaXIoY2xzLnRtcGRpciArICIvYnVpbGRzdGF0cyIpKVstMV0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKaW5kZXggMjkxNjI3OC4uMzAxMGIxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICAgICAgICAgICMgQ2hlY2sgZGVidWdnaW5nIHN5bWJvbHMgd29ya3MgY29ycmVjdGx5Ci0gICAgICAgICAgICAgICAgZWxpZiByZS5tYXRjaCgiQnJlYWtwb2ludCAxLipoZWxsb1wuYy4qNCIsIGwpOgorICAgICAgICAgICAgICAgIGVsaWYgcmUubWF0Y2gociJCcmVha3BvaW50IDEuKmhlbGxvXC5jLio0IiwgbCk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJHREIgcmVzdWx0OlxuJWQ6ICVzIiwgc3RhdHVzLCBvdXRwdXQpCkBAIC0xNDgsMyArMTQ4LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9saWJleGVjL2hlbGxvNCddOgogICAgICAgICAgICAgICAgIGlmIG5vdCBnZGJ0ZXN0KHFlbXUsIGJpbmFyeSk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnR0RCICVzIGZhaWxlZCcgJSBiaW5hcnkpCisKKyAgICBkZWYgdGVzdF9wcmVzZXJ2ZV9vd25lcnNoaXAoc2VsZik6CisgICAgICAgIGltcG9ydCBvcywgc3RhdCwgb2UuY2FjaGVkcGF0aAorICAgICAgICBmZWF0dXJlcyA9ICdJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgc2VsZnRlc3QtY2hvd24iXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorCisgICAgICAgIHN5c2NvbmZkaXIgPSBnZXRfYmJfdmFyKCdzeXNjb25mZGlyJywgJ3NlbGZ0ZXN0LWNob3duJykKKyAgICAgICAgZGVmIGNoZWNrX293bmVyc2hpcChxZW11LCBnaWQsIHVpZCwgcGF0aCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJDaGVjayBvd25lcnNoaXAgb2YgJXMiLCBwYXRoKQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwocicvYmluL3N0YXQgLWMgIiVVICVHIiAnICsgcGF0aCwgdGltZW91dD02MCkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5zcGxpdCgiICIpCisgICAgICAgICAgICBpZiBvdXRwdXRbMF0gIT0gdWlkIG9yIG91dHB1dFsxXSAhPSBnaWQgOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJJbmNycmVjdCBvd25lcnNoaXAgJXMgWyVzOiVzXSIsIHBhdGgsIG91dHB1dFswXSwgb3V0cHV0WzFdKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiBbIHN5c2NvbmZkaXIgKyAiL3NlbGZ0ZXN0LWNob3duL2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25mZGlyICsgIi9zZWxmdGVzdC1jaG93bi9kaXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25mZGlyICsgIi9zZWxmdGVzdC1jaG93bi9zeW1saW5rIl06CisgICAgICAgICAgICAgICAgaWYgbm90IGNoZWNrX293bmVyc2hpcChxZW11LCAidGVzdCIsICJ0ZXN0IiwgcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBvd25lcnNoaXAgJXMgZmFpbGVkJyAlIHBhdGgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CmluZGV4IGMxNTYyYzYuLjZiZmU4ZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5CkBAIC00MjEsNiArNDIxLDMxIEBACiAgICAgICAgIGluaGVyaXRzID0gWydjbWFrZSddCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCiAKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9ucG0oc2VsZik6CisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnc2F2b2lyZmFpcmVsaW51eC1ub2RlLXNlcnZlci1leGFtcGxlXzEuMC4wLmJiJykKKyAgICAgICAgc2hyaW5rd3JhcCA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnc2F2b2lyZmFpcmVsaW51eC1ub2RlLXNlcnZlci1leGFtcGxlJywgJ25wbS1zaHJpbmt3cmFwLmpzb24nKQorICAgICAgICBzcmN1cmkgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzIFwnJXNcJycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2hyaW5rd3JhcCkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snU1VNTUFSWSddID0gJ05vZGUgU2VydmVyIEV4YW1wbGUnCisgICAgICAgIGNoZWNrdmFyc1snSE9NRVBBR0UnXSA9ICdodHRwczovL2dpdGh1Yi5jb20vc2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlI3JlYWRtZScKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydNSVQnLCAnSVNDJywgJ1Vua25vd24nXSkKKyAgICAgICAgdXJscyA9IFtdCisgICAgICAgIHVybHMuYXBwZW5kKCducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmcvO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPSR7UFZ9JykKKyAgICAgICAgdXJscy5hcHBlbmQoJ25wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbicpCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gc2V0KHVybHMpCisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vbnBtJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0VfJHtQTn0nXSA9ICdNSVQnCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRV8ke1BOfS1iYXNlNjQnXSA9ICdVbmtub3duJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0VfJHtQTn0tYWNjZXB0cyddID0gJ01JVCcKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59LWluaGVyaXRzJ10gPSAnSVNDJworICAgICAgICBpbmhlcml0cyA9IFsnbnBtJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKwogICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1YihzZWxmKToKICAgICAgICAgIyBCYXNpYyB0ZXN0IHRvIHNlZSBpZiBnaXRodWIgVVJMIG1hbmdsaW5nIHdvcmtzCiAgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CmluZGV4IGE5MTEwNTYuLjVkMzk1OWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQpAQCAtMSw3ICsxLDcgQEAKICMKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogIwotIyBDb3B5cmlnaHQgMjAxOSBieSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCisjIENvcHlyaWdodCAyMDE5LTIwMjAgYnkgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcwogCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKQEAgLTE1LDYgKzE1LDcgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgb3MKK2ltcG9ydCBkYXRldGltZQogCiBNSVNTSU5HID0gJ01JU1NJTkcnCiBESUZGRVJFTlQgPSAnRElGRkVSRU5UJwpAQCAtNzgsOCArNzksMTggQEAKIAogY2xhc3MgUmVwcm9kdWNpYmxlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKICAgICBwYWNrYWdlX2NsYXNzZXMgPSBbJ2RlYicsICdpcGsnXQotICAgIGltYWdlcyA9IFsnY29yZS1pbWFnZS1taW5pbWFsJ10KKyAgICBpbWFnZXMgPSBbJ2NvcmUtaW1hZ2UtbWluaW1hbCcsICdjb3JlLWltYWdlLXNhdG8nLCAnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUnXQogICAgIHNhdmVfcmVzdWx0cyA9IEZhbHNlCisgICAgaWYgJ09FUUFfREVCVUdHSU5HX1NBVkVEX09VVFBVVCcgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgc2F2ZV9yZXN1bHRzID0gb3MuZW52aXJvblsnT0VRQV9ERUJVR0dJTkdfU0FWRURfT1VUUFVUJ10KKworICAgICMgVGhpcyB2YXJpYWJsZSBjb250cm9scyBpZiBvbmUgb2YgdGhlIHRlc3QgYnVpbGRzIGlzIGFsbG93ZWQgdG8gcHVsbCBmcm9tCisgICAgIyBhbiBzc3RhdGUgY2FjaGUvbWlycm9yLiBUaGUgb3RoZXIgYnVpbGQgaXMgYWx3YXlzIGRvbmUgY2xlYW4gYXMgYSBwb2ludCBvZgorICAgICMgY29tcGFyaXNvbi4KKyAgICAjIElmIHlvdSBrbm93IHRoYXQgeW91ciBzc3RhdGUgYXJjaGl2ZXMgYXJlIHJlcHJvZHVjaWJsZSwgZW5hYmxpbmcgdGhpcworICAgICMgd2lsbCB0ZXN0IHRoYXQgYW5kIGFsc28gbWFrZSB0aGUgdGVzdCBydW4gZmFzdGVyLiBJZiB5b3VyIHNzdGF0ZSBpcyBub3QKKyAgICAjIHJlcHJvZHVjaWJsZSwgZGlzYWJsZSB0aGlzIGluIHlvdXIgZGVyaXZlZCB0ZXN0IGNsYXNzCisgICAgYnVpbGRfZnJvbV9zc3RhdGUgPSBUcnVlCiAKICAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcExvY2FsKCkKQEAgLTg4LDEyICs5OSwxMiBAQAogICAgICAgICBmb3IgdiBpbiBuZWVkZWRfdmFyczoKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgdi5sb3dlcigpLCBiYl92YXJzW3ZdKQogCi0gICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cyA9IHt9Ci0gICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUucmF3bG9ncycsIHt9KVsnbG9nJ10gPSAnJwotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlJywge30pLnNldGRlZmF1bHQoJ2ZpbGVzJywge30pCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzID0ge30KKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlLnJhd2xvZ3MnLCB7fSlbJ2xvZyddID0gJycKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlJywge30pLnNldGRlZmF1bHQoJ2ZpbGVzJywge30pCiAKICAgICBkZWYgYXBwZW5kX3RvX2xvZyhzZWxmLCBtc2cpOgotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHNbJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJ11bJ2xvZyddICs9IG1zZworICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sncmVwcm9kdWNpYmxlLnJhd2xvZ3MnXVsnbG9nJ10gKz0gbXNnCiAKICAgICBkZWYgY29tcGFyZV9wYWNrYWdlcyhzZWxmLCByZWZlcmVuY2VfZGlyLCB0ZXN0X2RpciwgZGlmZnV0aWxzX3N5c3Jvb3QpOgogICAgICAgICByZXN1bHQgPSBQYWNrYWdlQ29tcGFyZVJlc3VsdHMoKQpAQCAtMTIwLDYwICsxMzEsNjkgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHdyaXRlX3BhY2thZ2VfbGlzdChzZWxmLCBwYWNrYWdlX2NsYXNzLCBuYW1lLCBwYWNrYWdlcyk6Ci0gICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0c1sncmVwcm9kdWNpYmxlJ11bJ2ZpbGVzJ10uc2V0ZGVmYXVsdChwYWNrYWdlX2NsYXNzLCB7fSlbbmFtZV0gPSBbCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzWydyZXByb2R1Y2libGUnXVsnZmlsZXMnXS5zZXRkZWZhdWx0KHBhY2thZ2VfY2xhc3MsIHt9KVtuYW1lXSA9IFsKICAgICAgICAgICAgICAgICB7J3JlZmVyZW5jZSc6IHAucmVmZXJlbmNlLCAndGVzdCc6IHAudGVzdH0gZm9yIHAgaW4gcGFja2FnZXNdCiAKICAgICBkZWYgY29weV9maWxlKHNlbGYsIHNvdXJjZSwgZGVzdCk6CiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVzdCkpCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzb3VyY2UsIGRlc3QpCiAKLSAgICBkZWYgdGVzdF9yZXByb2R1Y2libGVfYnVpbGRzKHNlbGYpOgorICAgIGRlZiBkb190ZXN0X2J1aWxkKHNlbGYsIG5hbWUsIHVzZV9zc3RhdGUpOgogICAgICAgICBjYXB0dXJlX3ZhcnMgPSBbJ0RFUExPWV9ESVJfJyArIGMudXBwZXIoKSBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3Nlc10KIAotICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKLSAgICAgICAgICAgIHNhdmVfZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lLXJlcHJvZHVjaWJsZS0nKQotICAgICAgICAgICAgb3MuY2htb2Qoc2F2ZV9kaXIsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JWEdSUCB8IHN0YXQuU19JUk9USCB8IHN0YXQuU19JWE9USCkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vbi1yZXByb2R1Y2libGUgcGFja2FnZXMgd2lsbCBiZSBjb3BpZWQgdG8gJXMnLCBzYXZlX2RpcikKKyAgICAgICAgdG1wZGlyID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCBuYW1lLCAndG1wJykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModG1wZGlyKToKKyAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZSh0bXBkaXIsIHJlY3Vyc2U9VHJ1ZSkKKworICAgICAgICBjb25maWcgPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgorICAgICAgICAgICAgUEFDS0FHRV9DTEFTU0VTID0gIntwYWNrYWdlX2NsYXNzZXN9IgorICAgICAgICAgICAgSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCisgICAgICAgICAgICBUTVBESVIgPSAie3RtcGRpcn0iCisgICAgICAgICAgICAnJycpLmZvcm1hdChwYWNrYWdlX2NsYXNzZXM9JyAnLmpvaW4oJ3BhY2thZ2VfJXMnICUgYyBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3NlcyksCisgICAgICAgICAgICAgICAgICAgICAgICB0bXBkaXI9dG1wZGlyKQorCisgICAgICAgIGlmIG5vdCB1c2Vfc3N0YXRlOgorICAgICAgICAgICAgIyBUaGlzIGNvbmZpZyBmcmFnbWVudCB3aWxsIGRpc2FibGUgdXNpbmcgc2hhcmVkIGFuZCB0aGUgc3N0YXRlCisgICAgICAgICAgICAjIG1pcnJvciwgZm9yY2luZyBhIGNvbXBsZXRlIGJ1aWxkIGZyb20gc2NyYXRjaAorICAgICAgICAgICAgY29uZmlnICs9IHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICAgICAgU1NUQVRFX0RJUiA9ICIke1RNUERJUn0vc3N0YXRlIgorICAgICAgICAgICAgICAgIFNTVEFURV9NSVJST1IgPSAiIgorICAgICAgICAgICAgICAgICcnJykKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGQgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCisgICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIHRlc3RfcmVwcm9kdWNpYmxlX2J1aWxkcyhzZWxmKToKKyAgICAgICAgZGVmIHN0cmlwX3RvcGRpcihzKToKKyAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aChzZWxmLnRvcGRpcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNbbGVuKHNlbGYudG9wZGlyKTpdCisgICAgICAgICAgICByZXR1cm4gcwogCiAgICAgICAgICMgQnVpbGQgbmF0aXZlIHV0aWxpdGllcwogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnJykKLSAgICAgICAgYml0YmFrZSgiZGlmZnV0aWxzLW5hdGl2ZSAtYyBhZGR0b19yZWNpcGVfc3lzcm9vdCIpCisgICAgICAgIGJpdGJha2UoImRpZmZvc2NvcGUtbmF0aXZlIGRpZmZ1dGlscy1uYXRpdmUganF1ZXJ5LW5hdGl2ZSAtYyBhZGR0b19yZWNpcGVfc3lzcm9vdCIpCiAgICAgICAgIGRpZmZ1dGlsc19zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgImRpZmZ1dGlscy1uYXRpdmUiKQorICAgICAgICBkaWZmb3Njb3BlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAiZGlmZm9zY29wZS1uYXRpdmUiKQorICAgICAgICBqcXVlcnlfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJqcXVlcnktbmF0aXZlIikKIAotICAgICAgICAjIFJlcHJvZHVjaWJsZSBidWlsZHMgc2hvdWxkIG5vdCBwdWxsIGZyb20gc3N0YXRlIG9yIG1pcnJvcnMsIGJ1dAotICAgICAgICAjIHNoYXJpbmcgRExfRElSIGlzIGZpbmUKLSAgICAgICAgY29tbW9uX2NvbmZpZyA9IHRleHR3cmFwLmRlZGVudCgnJydcCi0gICAgICAgICAgICBJTkhFUklUICs9ICJyZXByb2R1Y2libGVfYnVpbGQiCi0gICAgICAgICAgICBQQUNLQUdFX0NMQVNTRVMgPSAiJXMiCi0gICAgICAgICAgICBTU1RBVEVfRElSID0gIiR7VE1QRElSfS9zc3RhdGUiCi0gICAgICAgICAgICAnJycpICUgKCcgJy5qb2luKCdwYWNrYWdlXyVzJyAlIGMgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXMpKQorICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuc2F2ZV9yZXN1bHRzLCBleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgZGF0ZXN0ciA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQnKQorICAgICAgICAgICAgc2F2ZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2UtcmVwcm9kdWNpYmxlLSVzLScgJSBkYXRlc3RyLCBkaXI9c2VsZi5zYXZlX3Jlc3VsdHMpCisgICAgICAgICAgICBvcy5jaG1vZChzYXZlX2Rpciwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lST1RIIHwgc3RhdC5TX0lYT1RIKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnTm9uLXJlcHJvZHVjaWJsZSBwYWNrYWdlcyB3aWxsIGJlIGNvcGllZCB0byAlcycsIHNhdmVfZGlyKQogCi0gICAgICAgICMgUGVyZm9ybSBhIGJ1aWxkLgotICAgICAgICByZXByb2R1Y2libGVBX3RtcCA9IG9zLnBhdGguam9pbihzZWxmLnRvcGRpciwgJ3JlcHJvZHVjaWJsZUEnLCAndG1wJykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVwcm9kdWNpYmxlQV90bXApOgotICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHJlcHJvZHVjaWJsZUFfdG1wLCByZWN1cnNlPVRydWUpCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoKHRleHR3cmFwLmRlZGVudCgnJydcCi0gICAgICAgICAgICBUTVBESVIgPSAiJXMiCi0gICAgICAgICAgICAnJycpICUgcmVwcm9kdWNpYmxlQV90bXApICsgY29tbW9uX2NvbmZpZykKLSAgICAgICAgdmFyc19BID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQotICAgICAgICBiaXRiYWtlKCcgJy5qb2luKHNlbGYuaW1hZ2VzKSkKLQotICAgICAgICAjIFBlcmZvcm0gYW5vdGhlciBidWlsZC4KLSAgICAgICAgcmVwcm9kdWNpYmxlQl90bXAgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BkaXIsICdyZXByb2R1Y2libGVCJywgJ3RtcCcpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHJlcHJvZHVjaWJsZUJfdG1wKToKLSAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShyZXByb2R1Y2libGVCX3RtcCwgcmVjdXJzZT1UcnVlKQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCh0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgU1NUQVRFX01JUlJPUiA9ICIiCi0gICAgICAgICAgICBUTVBESVIgPSAiJXMiCi0gICAgICAgICAgICAnJycpICUgcmVwcm9kdWNpYmxlQl90bXApICsgY29tbW9uX2NvbmZpZykKLSAgICAgICAgdmFyc19CID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQotICAgICAgICBiaXRiYWtlKCcgJy5qb2luKHNlbGYuaW1hZ2VzKSkKKyAgICAgICAgdmFyc19BID0gc2VsZi5kb190ZXN0X2J1aWxkKCdyZXByb2R1Y2libGVBJywgc2VsZi5idWlsZF9mcm9tX3NzdGF0ZSkKKyAgICAgICAgdmFyc19CID0gc2VsZi5kb190ZXN0X2J1aWxkKCdyZXByb2R1Y2libGVCJywgRmFsc2UpCiAKICAgICAgICAgIyBOT1RFOiBUaGUgdGVtcCBkaXJlY3RvcmllcyBmcm9tIHRoZSByZXByb2R1Y2libGUgYnVpbGQgYXJlIHB1cnBvc2VseQogICAgICAgICAjIGtlcHQgYWZ0ZXIgdGhlIGJ1aWxkIHNvIGl0IGNhbiBiZSBkaWZmZWQgZm9yIGRlYnVnZ2luZy4KIAorICAgICAgICBmYWlscyA9IFtdCisKICAgICAgICAgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYWNrYWdlX2NsYXNzPWMpOgogICAgICAgICAgICAgICAgIHBhY2thZ2VfY2xhc3MgPSAncGFja2FnZV8nICsgYwpAQCAtMTkzLDEwICsyMTMsMjggQEAKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc2F2ZV9yZXN1bHRzOgogICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiByZXN1bHQuZGlmZmVyZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZC5yZWZlcmVuY2UsICcvJy5qb2luKFtzYXZlX2RpciwgZC5yZWZlcmVuY2VdKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGQudGVzdCwgJy8nLmpvaW4oW3NhdmVfZGlyLCBkLnRlc3RdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGQucmVmZXJlbmNlLCAnLycuam9pbihbc2F2ZV9kaXIsICdwYWNrYWdlcycsIHN0cmlwX3RvcGRpcihkLnJlZmVyZW5jZSldKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGQudGVzdCwgJy8nLmpvaW4oW3NhdmVfZGlyLCAncGFja2FnZXMnLCBzdHJpcF90b3BkaXIoZC50ZXN0KV0pKQogCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0Lm1pc3Npbmcgb3IgcmVzdWx0LmRpZmZlcmVudDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJUaGUgZm9sbG93aW5nICVzIHBhY2thZ2VzIGFyZSBtaXNzaW5nIG9yIGRpZmZlcmVudDogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYywgJyAnLmpvaW4oci50ZXN0IGZvciByIGluIChyZXN1bHQubWlzc2luZyArIHJlc3VsdC5kaWZmZXJlbnQpKSkpCisgICAgICAgICAgICAgICAgICAgIGZhaWxzLmFwcGVuZCgiVGhlIGZvbGxvd2luZyAlcyBwYWNrYWdlcyBhcmUgbWlzc2luZyBvciBkaWZmZXJlbnQ6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMsICdcbicuam9pbihyLnRlc3QgZm9yIHIgaW4gKHJlc3VsdC5taXNzaW5nICsgcmVzdWx0LmRpZmZlcmVudCkpKSkKKworICAgICAgICAjIENsZWFuIHVwIGVtcHR5IGRpcmVjdG9yaWVzCisgICAgICAgIGlmIHNlbGYuc2F2ZV9yZXN1bHRzOgorICAgICAgICAgICAgaWYgbm90IG9zLmxpc3RkaXIoc2F2ZV9kaXIpOgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKHNhdmVfZGlyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSdW5uaW5nIGRpZmZvc2NvcGUnKQorICAgICAgICAgICAgICAgIHBhY2thZ2VfZGlyID0gb3MucGF0aC5qb2luKHNhdmVfZGlyLCAncGFja2FnZXMnKQorICAgICAgICAgICAgICAgIHBhY2thZ2VfaHRtbF9kaXIgPSBvcy5wYXRoLmpvaW4ocGFja2FnZV9kaXIsICdkaWZmLWh0bWwnKQorCisgICAgICAgICAgICAgICAgIyBDb3B5IGpxdWVyeSB0byBpbXByb3ZlIHRoZSBkaWZmb3Njb3BlIG91dHB1dCB1c2FiaWxpdHkKKyAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShvcy5wYXRoLmpvaW4oanF1ZXJ5X3N5c3Jvb3QsICd1c3Ivc2hhcmUvamF2YXNjcmlwdC9qcXVlcnkvanF1ZXJ5Lm1pbi5qcycpLCBvcy5wYXRoLmpvaW4ocGFja2FnZV9odG1sX2RpciwgJ2pxdWVyeS5qcycpKQorCisgICAgICAgICAgICAgICAgcnVuQ21kKFsnZGlmZm9zY29wZScsICctLW5vLWRlZmF1bHQtbGltaXRzJywgJy0tZXhjbHVkZS1kaXJlY3RvcnktbWV0YWRhdGEnLCAnLS1odG1sLWRpcicsIHBhY2thZ2VfaHRtbF9kaXIsICdyZXByb2R1Y2libGVBJywgJ3JlcHJvZHVjaWJsZUInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290PWRpZmZvc2NvcGVfc3lzcm9vdCwgaWdub3JlX3N0YXR1cz1UcnVlLCBjd2Q9cGFja2FnZV9kaXIpCisKKyAgICAgICAgaWYgZmFpbHM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1xuJy5qb2luKGZhaWxzKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKaW5kZXggNGI1NmU1Yi4uNjBjYjJlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CkBAIC0xMCw2ICsxMCw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBvZS5sc2IKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3RRZW11CiAKIGNsYXNzIFRlc3RFeHBvcnQoT0VTZWxmdGVzdFRlc3RDYXNlKToKIApAQCAtMTY2LDkgKzE2Nyw5IEBACiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIHNvY2F0JykKICAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJykKIAotICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV92aXJnbF9ndGsoc2VsZik6CisgICAgZGVmIHRlc3RfdGVzdGltYWdlX3ZpcmdsX2d0a19zZGwoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBDaGVjayBob3N0LWFzc2lzdGVkIGFjY2VsZXJhdGUgT3BlbkdMIGZ1bmN0aW9uYWxpdHkgaW4gcWVtdSB3aXRoIGd0ayBmcm9udGVuZAorICAgICAgICBTdW1tYXJ5OiBDaGVjayBob3N0LWFzc2lzdGVkIGFjY2VsZXJhdGUgT3BlbkdMIGZ1bmN0aW9uYWxpdHkgaW4gcWVtdSB3aXRoIGd0ayBhbmQgU0RMIGZyb250ZW5kcwogICAgICAgICBFeHBlY3RlZDogMS4gQ2hlY2sgdGhhdCB2aXJnbCBrZXJuZWwgZHJpdmVyIGlzIGxvYWRlZCBhbmQgM2QgYWNjZWxlcmF0aW9uIGlzIGVuYWJsZWQKICAgICAgICAgICAgICAgICAgIDIuIENoZWNrIHRoYXQga21zY3ViZSBkZW1vIHJ1bnMgd2l0aG91dCBjcmFzaGluZy4KICAgICAgICAgUHJvZHVjdDogb2UtY29yZQpAQCAtMTgxLDIwICsxODIsMzEgQEAKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3ZpcmdsIGlzblwndCB3b3JraW5nIHdpdGggRGViaWFuIDgnKQogICAgICAgICBpZiBkaXN0cm8gYW5kIGRpc3RybyA9PSAnY2VudG9zLTcnOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndmlyZ2wgaXNuXCd0IHdvcmtpbmcgd2l0aCBDZW50b3MgNycpCisgICAgICAgIGlmIGRpc3RybyBhbmQgZGlzdHJvID09ICdvcGVuc3VzZWxlYXAtMTUuMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd2aXJnbCBpc25cJ3Qgd29ya2luZyB3aXRoIE9wZW5zdXNlIDE1LjAnKQogCiAgICAgICAgIHFlbXVfcGFja2FnZWNvbmZpZyA9IGdldF9iYl92YXIoJ1BBQ0tBR0VDT05GSUcnLCAncWVtdS1zeXN0ZW0tbmF0aXZlJykKKyAgICAgICAgc2RsX3BhY2thZ2Vjb25maWcgPSBnZXRfYmJfdmFyKCdQQUNLQUdFQ09ORklHJywgJ2xpYnNkbDItbmF0aXZlJykKICAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJwogICAgICAgICBpZiAnZ3RrKycgbm90IGluIHFlbXVfcGFja2FnZWNvbmZpZzoKICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LXN5c3RlbS1uYXRpdmUgPSAiIGd0aysiXG4nCisgICAgICAgIGlmICdzZGwnIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CisgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiBzZGwiXG4nCiAgICAgICAgIGlmICd2aXJnbHJlbmRlcmVyJyBub3QgaW4gcWVtdV9wYWNrYWdlY29uZmlnOgogICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgdmlyZ2xyZW5kZXJlciJcbicKICAgICAgICAgaWYgJ2dseCcgbm90IGluIHFlbXVfcGFja2FnZWNvbmZpZzoKICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LXN5c3RlbS1uYXRpdmUgPSAiIGdseCJcbicKKyAgICAgICAgaWYgJ29wZW5nbCcgbm90IGluIHNkbF9wYWNrYWdlY29uZmlnOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWxpYnNkbDItbmF0aXZlID0gIiBvcGVuZ2wiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIHNzaCB2aXJnbCJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3NoLXNlcnZlci1kcm9wYmVhciJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBrbXNjdWJlIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9SVU5RRU1VUEFSQU1TID0gImd0ayBnbCJcbicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisgICAgICAgIGZlYXR1cmVzX2d0ayA9IGZlYXR1cmVzICsgJ1RFU1RfUlVOUUVNVVBBUkFNUyA9ICJndGsgZ2wiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzX2d0aykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGZlYXR1cmVzX3NkbCA9IGZlYXR1cmVzICsgJ1RFU1RfUlVOUUVNVVBBUkFNUyA9ICJzZGwgZ2wiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzX3NkbCkKICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKICAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbCcpCiAKQEAgLTIzMiw3ICsyNDQsNDcgQEAKICAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtbWluaW1hbCcpCiAKIGNsYXNzIFBvc3RpbnN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290KHNlbGYpOgorCisgICAgZGVmIGluaXRfbWFuYWdlcl9sb29wKHNlbGYsIGluaXRfbWFuYWdlcik6CisgICAgICAgIGltcG9ydCBvZS5wYXRoCisKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKKyAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQorICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KKyAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisgICAgICAgIHRhcmdldHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQorCisgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0iLCAicGFja2FnZV9kZWIiLCAicGFja2FnZV9pcGsiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGluaXRfbWFuYWdlcj1pbml0X21hbmFnZXIsIHBhY2thZ2VfY2xhc3M9Y2xhc3Nlcyk6CisgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBvc3RpbnN0LWRlbGF5ZWQtYiJcbicKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCBlbXB0eS1yb290LXBhc3N3b3JkIlxuJworICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcworICAgICAgICAgICAgICAgIGlmIGluaXRfbWFuYWdlciA9PSAic3lzdGVtZCI6CisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBzeXN0ZW1kIlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciA9ICJzeXN0ZW1kIlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAic3lzdmluaXQiXG4nCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIlxuJworICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb290ZnMgc3RhdGUgZmlsZSB3YXMgbm90IGNyZWF0ZWQiKQorCisgICAgICAgICAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIHRlc3QgZWNobyBhIHN0cmluZyBhbmQgc2VhcmNoIGZvciB0aGF0IGFzCisgICAgICAgICAgICAgICAgICAgICMgcnVuX3NlcmlhbCgpJ3Mgc3RhdHVzIGNvZGUgaXMgdXNlbGVzcy4nCisgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiAoInJvb3RmcyIsICJkZWxheWVkLWEiLCAiZGVsYXllZC1iIik6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgidGVzdCAtZiAlcyAmJiBlY2hvIGZvdW5kIiAlIG9zLnBhdGguam9pbih0YXJnZXR0ZXN0ZGlyLCBmaWxlbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgImZvdW5kIiwgIiVzIHdhcyBub3QgcHJlc2VudCBvbiBib290IiAlIGZpbGVuYW1lKQorCisKKworICAgIEBza2lwSWZOb3RRZW11KCdxZW11YWxsJywgJ1Rlc3Qgb25seSBydW5zIGluIHFlbXUnKQorICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdF9zeXN2aW5pdChzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgUG9zdC1pbnN0YWxsYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgYXJlIGNhbGxlZCB3aGVuIHJvb3RmcyBpcyBjcmVhdGVkIGFuZCBhbHNvIHRlc3QKQEAgLTI0Niw0NiArMjk4LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHBvc3RpbnN0X2Jvb3QgcmVjaXBlIGlzIHByZXNlbnQgb24gaW1hZ2UuCiAgICAgICAgIEV4cGVjdGVkOiAgICAgICBUaGUgZmlsZXMgYXJlIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGR1cmluZyByb290ZnMgYW5kIGJvb3QKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgZm9yIDMgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlcnM6IHJwbSxpcGssZGViIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdCBhbmQgc3lzdGVtZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdmluaXQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuaW5pdF9tYW5hZ2VyX2xvb3AoInN5c3Zpbml0IikKKworCisgICAgQHNraXBJZk5vdFFlbXUoJ3FlbXVhbGwnLCAnVGVzdCBvbmx5IHJ1bnMgaW4gcWVtdScpCisgICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290X3N5c3RlbWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IFBvc3QtaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFyZSBjYWxsZWQgd2hlbiByb290ZnMgaXMgY3JlYXRlZCBhbmQgYWxzbyB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNjcmlwdCBjYW4gYmUgZGVsYXllZCB0byBydW4gYXQgZmlyc3QgYm9vdC4KKyAgICAgICAgRGVwZW5kZW5jaWVzOiAgIE5BCisgICAgICAgIFN0ZXBzOiAgICAgICAgICAxLiBBZGQgcHJvcGVyIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWwuY29uZiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAyLiBCdWlsZCBhICJjb3JlLWltYWdlLW1pbmltYWwiIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAzLiBWZXJpZnkgdGhhdCBmaWxlIGNyZWF0ZWQgYnkgcG9zdGluc3Rfcm9vdGZzIHJlY2lwZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCBvbiByb290ZnMgZGlyLgorICAgICAgICAgICAgICAgICAgICAgICAgNC4gQm9vdCB0aGUgaW1hZ2UgY3JlYXRlZCBvbiBxZW11IGFuZCB2ZXJpZnkgdGhhdCB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBwb3N0aW5zdF9ib290IHJlY2lwZSBpcyBwcmVzZW50IG9uIGltYWdlLgorICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIGZpbGVzIGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBkdXJpbmcgcm9vdGZzIGFuZCBib290CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciAzIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXJzOiBycG0saXBrLGRlYiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdGVtZC4KIAogICAgICAgICAiIiIKIAotICAgICAgICBpbXBvcnQgb2UucGF0aAotCi0gICAgICAgIHZhcnMgPSBnZXRfYmJfdmFycygoIklNQUdFX1JPT1RGUyIsICJzeXNjb25mZGlyIiksICJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICByb290ZnMgPSB2YXJzWyJJTUFHRV9ST09URlMiXQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyb290ZnMpCi0gICAgICAgIHN5c2NvbmZkaXIgPSB2YXJzWyJzeXNjb25mZGlyIl0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3lzY29uZmRpcikKLSAgICAgICAgIyBOZWVkIHRvIHVzZSBvZS5wYXRoIGhlcmUgYXMgc3lzY29uZmRpciBzdGFydHMgd2l0aCAvCi0gICAgICAgIGhvc3R0ZXN0ZGlyID0gb2UucGF0aC5qb2luKHJvb3Rmcywgc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQotICAgICAgICB0YXJnZXR0ZXN0ZGlyID0gb3MucGF0aC5qb2luKHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKLQotICAgICAgICBmb3IgaW5pdF9tYW5hZ2VyIGluICgic3lzdmluaXQiLCAic3lzdGVtZCIpOgotICAgICAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSIsICJwYWNrYWdlX2RlYiIsICJwYWNrYWdlX2lwayIpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGluaXRfbWFuYWdlcj1pbml0X21hbmFnZXIsIHBhY2thZ2VfY2xhc3M9Y2xhc3Nlcyk6Ci0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1kZWxheWVkLWIiXG4nCi0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IGVtcHR5LXJvb3QtcGFzc3dvcmQiXG4nCi0gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcwotICAgICAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgotICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHN5c3RlbWQiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlciA9ICJzeXN0ZW1kIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEID0gInN5c3Zpbml0IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0c2NyaXB0cyA9ICIiXG4nCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihob3N0dGVzdGRpciwgInJvb3RmcyIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb290ZnMgc3RhdGUgZmlsZSB3YXMgbm90IGNyZWF0ZWQiKQotCi0gICAgICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTWFrZSB0aGUgdGVzdCBlY2hvIGEgc3RyaW5nIGFuZCBzZWFyY2ggZm9yIHRoYXQgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcnVuX3NlcmlhbCgpJ3Mgc3RhdHVzIGNvZGUgaXMgdXNlbGVzcy4nCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCJyb290ZnMiLCAiZGVsYXllZC1hIiwgImRlbGF5ZWQtYiIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKCJ0ZXN0IC1mICVzICYmIGVjaG8gZm91bmQiICUgb3MucGF0aC5qb2luKHRhcmdldHRlc3RkaXIsIGZpbGVuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgImZvdW5kIiwgIiVzIHdhcyBub3QgcHJlc2VudCBvbiBib290IiAlIGZpbGVuYW1lKQotCisgICAgICAgIHNlbGYuaW5pdF9tYW5hZ2VyX2xvb3AoInN5c3RlbWQiKQogCiAKICAgICBkZWYgdGVzdF9mYWlsaW5nX3Bvc3RpbnN0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQppbmRleCA5M2IxNWFlLi4yMDJkNTQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weQpAQCAtMTU3LDggKzE1Nyw4IEBACiAgICAgICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKICAgICAgICAgICAgIGJpdGJha2UoJy1jIHBvcHVsYXRlX2xpYyAlcycgJSB0ZXN0X3JlY2lwZSkKIAotICAgICAgICAgICAgcmVjaXBlX3NpZyA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BvcHVsYXRlX2xpYy50Z3ouc2lnJykKLSAgICAgICAgICAgIHJlY2lwZV90Z3ogPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6JykKKyAgICAgICAgICAgIHJlY2lwZV9zaWcgPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyovKjplZDoqX3BvcHVsYXRlX2xpYy50Z3ouc2lnJykKKyAgICAgICAgICAgIHJlY2lwZV90Z3ogPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyovKjplZDoqX3BvcHVsYXRlX2xpYy50Z3onKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfc2lnKSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC5zaWcgZmlsZS4nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3RneiksIDEsICdGYWlsZWQgdG8gZmluZCAudGd6IGZpbGUuJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5CmluZGV4IDQxMGRlYzYuLjgwY2U5ZTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQpAQCAtNTYsMTEgKzU2LDExIEBACiAgICAgZGVmIHNlYXJjaF9zc3RhdGUoc2VsZiwgZmlsZW5hbWVfcmVnZXgsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSk6CiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYuc3N0YXRlX3BhdGgpOgotICAgICAgICAgICAgaWYgZGlzdHJvX3NwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLmhvc3RkaXN0cm8sIHJvb3QpOgorICAgICAgICAgICAgaWYgZGlzdHJvX3NwZWNpZmljIGFuZCByZS5zZWFyY2gociIlcy8lcy9bYS16MC05XXsyfS9bYS16MC05XXsyfSQiICUgKHNlbGYuc3N0YXRlX3BhdGgsIHNlbGYuaG9zdGRpc3RybyksIHJvb3QpOgogICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQotICAgICAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljIGFuZCByZS5zZWFyY2goIiVzL1thLXowLTldezJ9JCIgJSBzZWxmLnNzdGF0ZV9wYXRoLCByb290KToKKyAgICAgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKHIiJXMvW2EtejAtOV17Mn0vW2EtejAtOV17Mn0kIiAlIHNlbGYuc3N0YXRlX3BhdGgsIHJvb3QpOgogICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CmluZGV4IDY3NTdhMGUuLjlhZGI1MTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKQEAgLTQ0Niw2ICs0NDYsNDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQogCiAKKyAgICBkZWYgdGVzdF9zc3RhdGVfbXVsdGlsaWJfb3Jfbm90X25hdGl2ZV9zYW1lc2lncyhzZWxmKToKKyAgICAgICAgIiIiVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIG5hdGl2ZSByZWNpcGVzIChhbmQgdGhlaXIgZGVwZW5kZW5jaWVzKQorICAgICAgICB3aGVyZSB0aGUgdGFyZ2V0IGlzIHVzaW5nIG11bHRpbGliIGluIG9uZSBidXQgbm90IHRoZSBvdGhlcgorICAgICAgICBzaG91bGQgYmUgdGhlIHNhbWUuIFdlIHVzZSB0aGUgcWVtdXg4NmNvcHkgbWFjaGluZSB0byB0ZXN0CisgICAgICAgIHRoaXMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKK01BQ0hJTkUgPSBcInFlbXV4ODZcIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKK0RFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9ICJ4ODYiCitCQl9TSUdOQVRVUkVfSEFORExFUiA9ICJPRUJhc2ljSGFzaCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgYml0YmFrZSgiYmludXRpbHMtbmF0aXZlICAtUyBub25lIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKK01BQ0hJTkUgPSBcInFlbXV4ODZjb3B5XCIKK0JCX1NJR05BVFVSRV9IQU5ETEVSID0gIk9FQmFzaWNIYXNoIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgYml0YmFrZSgiYmludXRpbHMtbmF0aXZlIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0gW10KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBmLmFwcGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCisgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMiKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzIikKKyAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKSBmb3IgeCBpbiBmaWxlczJdCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQorCisKICAgICBkZWYgdGVzdF9zc3RhdGVfbm9vcF9zYW1lc2lncyhzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBidWlsZHMgd2l0aCB0aGVzZSB2YXJpYWJsZXMgY2hhbmdlZCBvcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3Jvb3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzcm9vdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTM0OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3Jvb3QucHkKQEAgLTAsMCArMSwzNyBAQAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisKK2ltcG9ydCB1dWlkCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgIGJpdGJha2UKKworY2xhc3MgU3lzcm9vdFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3lzcm9vdF9jbGVhbnVwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQnVpbGQgc3lzcm9vdCB0ZXN0IHdoaWNoIGRlcGVuZHMgb24gdmlydHVhbC9zeXNyb290LXRlc3QgZm9yIG9uZSBtYWNoaW5lLAorICAgICAgICBzd2l0Y2ggbWFjaGluZSwgc3dpdGNoIHByb3ZpZGVyIG9mIHZpcnR1YWwvc3lzcm9vdC10ZXN0IGFuZCBjaGVjayB0aGF0IHRoZQorICAgICAgICBzeXNyb290IGlzIGNvcnJlY3RseSBjbGVhbmVkIHVwLiBUaGUgZmlsZXMgaW4gdGhlIHR3byBwcm92aWRlcnMgb3ZlcmxhcAorICAgICAgICBzbyBjYW4gY2F1c2UgZXJyb3JzIGlmIHRoZSBzeXNyb290IGNvZGUgZG9lc24ndCBmdW5jdGlvbiBjb3JyZWN0bHkuCisgICAgICAgIFllcywgc3lzcm9vdC10ZXN0IHNob3VsZCBiZSBtYWNoaW5lIHNwZWNpZmljIHJlYWxseSB0byBhdm9pZCB0aGlzLCBob3dldmVyCisgICAgICAgIHRoZSBzeXNyb290IGNsZWFudXAgc2hvdWxkIGFsc28gd29yayBbWU9DVE8gIzEzNzAyXS4gCisgICAgICAgICIiIgorCisgICAgICAgIHV1aWQxID0gdXVpZC51dWlkNCgpCisgICAgICAgIHV1aWQyID0gdXVpZC51dWlkNCgpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9zeXNyb290LXRlc3QgPSAic3lzcm9vdC10ZXN0LWFyY2gxIgorTUFDSElORSA9ICJxZW11eDg2IgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDEgPSAiJXMiCitURVNUU1RSSU5HX3BuLXN5c3Jvb3QtdGVzdC1hcmNoMiA9ICIlcyIKKyIiIiAlICh1dWlkMSwgdXVpZDIpKQorICAgICAgICBiaXRiYWtlKCJzeXNyb290LXRlc3QiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3N5c3Jvb3QtdGVzdCA9ICJzeXNyb290LXRlc3QtYXJjaDIiCitNQUNISU5FID0gInFlbXV4ODZjb3B5IgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDEgPSAiJXMiCitURVNUU1RSSU5HX3BuLXN5c3Jvb3QtdGVzdC1hcmNoMiA9ICIlcyIKKyIiIiAlICh1dWlkMSwgdXVpZDIpKQorICAgICAgICBiaXRiYWtlKCJzeXNyb290LXRlc3QiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weQppbmRleCA0MmExYjZiLi5kMWFhN2I5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weQpAQCAtNjUsMTkgKzY1LDYgQEAKICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BOJywgJ2hlbGxvJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJywgbG9jYWxkYXRhLmdldFZhcignQlBOJykpCiAKLSAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGVfaW5pdGlhbF9kYXRhc3RvcmUoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKLSAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGlmIG5vdCBiZXN0OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgZGNvcHkgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgICAgIGRjb3B5LnNldFZhcignTVlWQVJJQUJMRScsICdzb21ldmFsdWUnKQotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10sIGNvbmZpZ19kYXRhPWRjb3B5KQotICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IHZhcmlhYmxlIHZhbHVlcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc29tZXZhbHVlJywgcmQuZ2V0VmFyKCdNWVZBUklBQkxFJykpCi0KICAgICBkZWYgdGVzdF9saXN0X3JlY2lwZXMoc2VsZik6CiAgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKICAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CmluZGV4IDBjMDNiNGIuLmM4NzY1ZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQpAQCAtNDQsNiArNDQsMzAgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZWRfZgogICAgIHJldHVybiB3cmFwcGVyCiAKK2RlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKKyAgICAiIiIKKyAgICBleHRyYWN0IGZpbGUgbmFtZXMgZnJvbSB0aGUgb3V0cHV0IG9mIGRlYnVnZnMgLVIgJ2xzIC1wJywKKyAgICB3aGljaCBsb29rcyBsaWtlIHRoaXM6CisKKyAgICAgLzIvMDQwNzU1LzAvMC8uLy9cbgorICAgICAvMi8wNDA3NTUvMC8wLy4uLy9cbgorICAgICAvMTEvMDQwNzAwLzAvMC9sb3N0K2ZvdW5kXk0vL1xuCisgICAgIC8xMi8wNDA3NTUvMTAwMi8xMDAyL3J1bi8vXG4KKyAgICAgLzEzLzA0MDc1NS8xMDAyLzEwMDIvc3lzLy9cbgorICAgICAvMTQvMDQwNzU1LzEwMDIvMTAwMi9iaW4vL1xuCisgICAgIC84MC8wNDA3NTUvMTAwMi8xMDAyL3Zhci8vXG4KKyAgICAgLzkyLzA0MDc1NS8xMDAyLzEwMDIvdG1wLy9cbgorICAgICIiIgorICAgICMgTk9URSB0aGUgb2NjYXNpb25hbCBeTSBpbiBmaWxlIG5hbWVzCisgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcvJylbNV0uc3RyaXAoKSBmb3IgbGluZSBpbiBcCisgICAgICAgICAgICBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKV0KKworZGVmIGZpbGVzX293bl9ieV9yb290KGRlYnVnZnNfb3V0cHV0KToKKyAgICBmb3IgbGluZSBpbiBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKToKKyAgICAgICAgaWYgbGluZS5zcGxpdCgnLycpWzM6NV0gIT0gWycwJywgJzAnXToKKyAgICAgICAgICAgIHByaW50KGRlYnVnZnNfb3V0cHV0KQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKIAogY2xhc3MgV2ljVGVzdENhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKICAgICAiIiJXaWMgdGVzdCBjbGFzcy4iIiIKQEAgLTY2LDYgKzkwLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd3aWMtdG9vbHMgY2Fubm90IGJlIGJ1aWx0IGR1ZSBpdHMgKGludGx0b29sfGdldHRleHQpLW5hdGl2ZSBkZXBlbmRlbmN5IGFuZCBOTFMgZGlzYWJsZScpCiAKICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMnKQogICAgICAgICAgICAgV2ljVGVzdENhc2UuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCiAKICAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCkBAIC0zOTMsMjQgKzQxOCw2IEBACiAgICAgICAgICAgICAgICAgcnVuQ21kKCJkZCBpZj0lcyBvZj0lcyBza2lwPSVkIGNvdW50PSVkIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpY2ltZywgcGFydF9maWxlLCBzdGFydCwgbGVuZ3RoKSkKIAotICAgICAgICAgICAgZGVmIGV4dHJhY3RfZmlsZXMoZGVidWdmc19vdXRwdXQpOgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgIGV4dHJhY3QgZmlsZSBuYW1lcyBmcm9tIHRoZSBvdXRwdXQgb2YgZGVidWdmcyAtUiAnbHMgLXAnLAotICAgICAgICAgICAgICAgIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKLQotICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4vL1xuCi0gICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi4vL1xuCi0gICAgICAgICAgICAgICAgIC8xMS8wNDA3MDAvMC8wL2xvc3QrZm91bmReTS8vXG4KLSAgICAgICAgICAgICAgICAgLzEyLzA0MDc1NS8xMDAyLzEwMDIvcnVuLy9cbgotICAgICAgICAgICAgICAgICAvMTMvMDQwNzU1LzEwMDIvMTAwMi9zeXMvL1xuCi0gICAgICAgICAgICAgICAgIC8xNC8wNDA3NTUvMTAwMi8xMDAyL2Jpbi8vXG4KLSAgICAgICAgICAgICAgICAgLzgwLzA0MDc1NS8xMDAyLzEwMDIvdmFyLy9cbgotICAgICAgICAgICAgICAgICAvOTIvMDQwNzU1LzEwMDIvMTAwMi90bXAvL1xuCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgIyBOT1RFIHRoZSBvY2Nhc2lvbmFsIF5NIGluIGZpbGUgbmFtZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gW2xpbmUuc3BsaXQoJy8nKVs1XS5zdHJpcCgpIGZvciBsaW5lIGluIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnZnNfb3V0cHV0LnN0cmlwKCkuc3BsaXQoJy9cbicpXQotCiAgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDEsIHNob3VsZCBjb250YWluIHRoZSBub3JtYWwgcm9vdCBkaXJlY3RvcmllcywgZXhjZXB0CiAgICAgICAgICAgICAjIC91c3IuCiAgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCkBAIC00NTEsNiArNDU4LDEwNCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAogCisgICAgZGVmIHRlc3RfaW5jbHVkZV9wYXRoKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0taW5jbHVkZS1wYXRoIHdrcyBvcHRpb24uIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVzdC1pbmNsdWRlJykKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVzdC1maWxlJyksICd3JykgYXMgdDoKKyAgICAgICAgICAgICAgICB0LndyaXRlKCJ0ZXN0XG4iKQorICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICByb290ZnNfZGlyID0gZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgICAgICAgICAgd2tzLndyaXRlKCIiIgorcGFydCAvcGFydDEgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NAorcGFydCAvcGFydDIgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWluY2x1ZGUtcGF0aCAlcyIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmNsdWRlX3BhdGgpKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkKKworICAgICAgICAgICAgcGFydDEgPSBnbG9iKG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3RlbXAtKi5kaXJlY3QucDEnKSlbMF0KKyAgICAgICAgICAgIHBhcnQyID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAyJykpWzBdCisKKyAgICAgICAgICAgICMgVGVzdCBwYXJ0aXRpb24gMSwgc2hvdWxkIG5vdCBjb250YWluICd0ZXN0LWZpbGUnCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0ZXN0LWZpbGUnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgICAgICMgVGVzdCBwYXJ0aXRpb24gMiwgc2hvdWxkIGNvbnRhaW4gJ3Rlc3QtZmlsZScKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MikpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3QtZmlsZScsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBmaWxlc19vd25fYnlfcm9vdChyZXMub3V0cHV0KSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgZGVmIHRlc3RfaW5jbHVkZV9wYXRoX2VtYmVkZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1pbmNsdWRlLXBhdGggd2tzIG9wdGlvbi4iIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZXN0LWluY2x1ZGUnKQorICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZXN0LWZpbGUnKSwgJ3cnKSBhcyB0OgorICAgICAgICAgICAgICAgIHQud3JpdGUoInRlc3RcbiIpCisgICAgICAgICAgICB3a3NfZmlsZSA9IG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZW1wLndrcycpCisgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgIHdrcy53cml0ZSgiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggJXMgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIGV4cG9ydC8iIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5jbHVkZV9wYXRoKSkKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgIHBhcnQxID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAxJykpWzBdCisKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MSkpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rlc3QtZmlsZScsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBmaWxlc19vd25fYnlfcm9vdChyZXMub3V0cHV0KSkKKworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCAvZXhwb3J0L2V0Yy8nICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MSkpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Bhc3N3ZCcsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBmaWxlc19vd25fYnlfcm9vdChyZXMub3V0cHV0KSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgZGVmIHRlc3RfaW5jbHVkZV9wYXRoX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWluY2x1ZGUtcGF0aCB3a3Mgb3B0aW9uIGVycm9yIGhhbmRsaW5nLiIiIgorICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKKworICAgICAgICAjIEFic29sdXRlIGFyZ3VtZW50LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIC9leHBvcnQiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKworICAgICAgICAjIEFyZ3VtZW50IHBvaW50aW5nIHRvIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWluY2x1ZGUtcGF0aCBjb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgLi8uLy4uIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyAzIEFyZ3VtZW50IHBvaW50aW5nIHRvIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWluY2x1ZGUtcGF0aCBjb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgZXhwb3J0LyBkdW1teSIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCiAgICAgZGVmIHRlc3RfZXhjbHVkZV9wYXRoX2Vycm9ycyhzZWxmKToKICAgICAgICAgIiIiVGVzdCAtLWV4Y2x1ZGUtcGF0aCB3a3Mgb3B0aW9uIGVycm9yIGhhbmRsaW5nLiIiIgogICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKQEAgLTQ2OSw2ICs1NzQsODkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCiAgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKIAorICAgIGRlZiB0ZXN0X3Blcm1pc3Npb25zKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBlcm1pc3Npb25zIGFyZSByZXNwZWN0ZWQiIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0X25vcm1hbCA9ICIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0CisiIiIKKyAgICAgICAgdF9leGNsdWRlID0gIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGg9aG9tZQorIiIiCisgICAgICAgIHRfbXVsdGkgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQKK3BhcnQgL2V4cG9ydCAtLXNvdXJjZSByb290ZnMgLS1yb290ZnM9Y29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIC0tZnN0eXBlPWV4dDQKKyIiIgorICAgICAgICB0X2NoYW5nZSA9ICIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aD1ldGMvwqAgwqAKK3BhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWNoYW5nZS1kaXJlY3Rvcnk9ZXRjCisiIiIKKyAgICAgICAgdGVzdHMgPSBbdF9ub3JtYWwsIHRfZXhjbHVkZSwgdF9tdWx0aSwgdF9jaGFuZ2VdCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVzdC1pbmNsdWRlJykKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgICAgIHdrcy53cml0ZSh0ZXN0KQorICAgICAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBnbG9iKG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3RlbXAtKi5kaXJlY3QucConKSk6CisgICAgICAgICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBmaWxlc19vd25fYnlfcm9vdChyZXMub3V0cHV0KSkKKworICAgICAgICAgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tY2hhbmdlLWRpcmVjdG9yeSB3a3Mgb3B0aW9uLiIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICB3a3NfZmlsZSA9IG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZW1wLndrcycpCisgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvZXRjIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tY2hhbmdlLWRpcmVjdG9yeT1ldGMiKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkKKworICAgICAgICAgICAgcGFydDEgPSBnbG9iKG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3RlbXAtKi5kaXJlY3QucDEnKSlbMF0KKworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQxKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGFzc3dkJywgZmlsZXMpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9kaXJlY3RvcnlfZXJyb3JzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tY2hhbmdlLWRpcmVjdG9yeSB3a3Mgb3B0aW9uIGVycm9yIGhhbmRsaW5nLiIiIgorICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKKworICAgICAgICAjIEFic29sdXRlIGFyZ3VtZW50LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5IC91c3IiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKworICAgICAgICAjIEFyZ3VtZW50IHBvaW50aW5nIHRvIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWNoYW5nZS1kaXJlY3RvcnkgLi8uLy4uIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKIGNsYXNzIFdpYzIoV2ljVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYm1hcF9zaG9ydChzZWxmKToKQEAgLTUwMCw3ICs2ODgsOCBAQAogICAgICAgICAjIGZpbHRlciBvdXQgb3B0aW9uYWwgdmFyaWFibGVzCiAgICAgICAgIHdpY3ZhcnMgPSB3aWN2YXJzLmRpZmZlcmVuY2UoKCdERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX0JPT1RfRklMRVMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJEJywgJ0lOSVRSRF9MSVZFJywgJ0lTT0RJUicsJ0lOSVRSQU1GU19JTUFHRScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkFNRlNfSU1BR0VfQlVORExFJywgJ0lOSVRSQU1GU19MSU5LX05BTUUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSQU1GU19JTUFHRV9CVU5ETEUnLCAnSU5JVFJBTUZTX0xJTktfTkFNRScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUFBFTkQnKSkKICAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGVudmZpbGU6CiAgICAgICAgICAgICBjb250ZW50ID0gZGljdChsaW5lLnNwbGl0KCI9IiwgMSkgZm9yIGxpbmUgaW4gZW52ZmlsZSkKICAgICAgICAgICAgICMgdGVzdCBpZiB2YXJpYWJsZXMgdXNlZCBieSB3aWMgcHJlc2VudCBpbiB0aGUgLmVudiBmaWxlCkBAIC04NjYsNiArMTA1NSwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZGlyKSBpbiByZXN1bHQub3V0cHV0KQogCisgICAgICAgICAgICAjIGNvcHkgdGhlIGZpbGUgZnJvbSB0aGUgcGFydGl0aW9uIGFuZCBjaGVjayBpZiBpdCBzdWNjZXNzCisgICAgICAgICAgICBkZXN0ID0gJyVzLWNwJyAlIHRlc3RmaWxlLm5hbWUKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNwICVzOjEvJXMgJXMgLW4gJXMiICUgKGltYWdlc1swXSwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKSwgZGVzdCwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGVzdCkpCisKKwogICAgIGRlZiB0ZXN0X3dpY19ybShzZWxmKToKICAgICAgICAgIiIiVGVzdCByZW1vdmluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgZnJvbSB0aGUgdGhlIHdpYyBpbWFnZS4iIiIKICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCkBAIC0xMDA1LDYgKzEyMDEsMTYgQEAKICAgICAgICAgICAgIG5ld2RpcnMgPSBzZXQobGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2RpcnMuZGlmZmVyZW5jZShkaXJzKSwgc2V0KFtvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpXSkpCiAKKyAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGZpbGUgdG8gY29weSBpcyBpbiB0aGUgcGFydGl0aW9uCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyL2V0Yy8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZzdGFiJyBpbiBbbGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmVdKQorCisgICAgICAgICAgICAjIGNvcHkgZmlsZSBmcm9tIHRoZSBwYXJ0aXRpb24sIHJlcGxhY2UgdGhlIHRlbXBvcmFyeSBmaWxlIGNvbnRlbnQgd2l0aCBpdCBhbmQKKyAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBmaWxlIHNpemUgdG8gdmFsaWRhdGUgdGhlIGNvcHkKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNwICVzOjIvZXRjL2ZzdGFiICVzIC1uICVzIiAlIChpbWFnZXNbMF0sIHRlc3RmaWxlLm5hbWUsIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnN0YXQodGVzdGZpbGUubmFtZSkuc3Rfc2l6ZSA+IDApCisKKwogICAgIGRlZiB0ZXN0X3dpY19ybV9leHQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgZnJvbSB0aGUgZXh0IHBhcnRpdGlvbi4iIiIKICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CmluZGV4IGM0ZWI1ZDYuLjQ4ZWM1ZDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CkBAIC05LDEyICs5LDEyIEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHNpZ25hbAotZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCitpbXBvcnQgc3VicHJvY2VzcwogZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZQogCiBpbXBvcnQgb2VxYQogaW1wb3J0IG9lCitpbXBvcnQgYmIudXRpbHMKIAogZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dCwgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFQcmVSdW4sIE9FUUFUZXN0Tm90Rm91bmQKQEAgLTI5LDYgKzI5LDU0IEBACiAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IE5vbmUKICAgICAgICAgc2VsZi5jb25maWdfcGF0aHMgPSBjb25maWdfcGF0aHMKIAorICAgIGRlZiBzZXR1cF9idWlsZGRpcihzZWxmLCBzdWZmaXgsIHNlbGZ0ZXN0ZGlyLCBzdWl0ZSk6CisgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvblsnQlVJTERESVInXQorICAgICAgICBpZiBub3Qgc2VsZnRlc3RkaXI6CisgICAgICAgICAgICBzZWxmdGVzdGRpciA9IGdldF90ZXN0X2xheWVyKCkKKyAgICAgICAgbmV3YnVpbGRkaXIgPSBidWlsZGRpciArIHN1ZmZpeAorICAgICAgICBuZXdzZWxmdGVzdGRpciA9IG5ld2J1aWxkZGlyICsgIi9tZXRhLXNlbGZ0ZXN0IgorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG5ld2J1aWxkZGlyKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJCdWlsZCBkaXJlY3RvcnkgJXMgYWxyZWFkeSBleGlzdHMsIGFib3J0aW5nIiAlIG5ld2J1aWxkZGlyKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobmV3YnVpbGRkaXIpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NvbmYiLCBuZXdidWlsZGRpciArICIvY29uZiIpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NhY2hlIiwgbmV3YnVpbGRkaXIgKyAiL2NhY2hlIikKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCisKKyAgICAgICAgZm9yIGUgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGJ1aWxkZGlyICsgIi8iIGluIG9zLmVudmlyb25bZV0gb3Igb3MuZW52aXJvbltlXS5lbmRzd2l0aChidWlsZGRpcik6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvbltlXSA9IG9zLmVudmlyb25bZV0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCisKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImdpdCBpbml0OyBnaXQgYWRkICo7IGdpdCBjb21taXQgLWEgLW0gJ2luaXRpYWwnIiwgY3dkPW5ld3NlbGZ0ZXN0ZGlyLCBzaGVsbD1UcnVlKQorCisgICAgICAgICMgVHJpZWQgdG8gdXNlZCBiaXRiYWtlLWxheWVycyBhZGQvcmVtb3ZlIGJ1dCBpdCByZXF1aXJlcyByZWNpcGUgcGFyc2luZyBhbmQgaGVuY2UgaXMgdG9vIHNsb3cKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoInNlZCAlcy9jb25mL2JibGF5ZXJzLmNvbmYgLWkgLWUgJ3MjJXMjJXMjZyciICUgKG5ld2J1aWxkZGlyLCBzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpLCBjd2Q9bmV3YnVpbGRkaXIsIHNoZWxsPVRydWUpCisKKyAgICAgICAgb3MuY2hkaXIobmV3YnVpbGRkaXIpCisKKyAgICAgICAgZm9yIHQgaW4gc3VpdGU6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0LCAidGMiKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY3AgPSB0LnRjLmNvbmZpZ19wYXRocworICAgICAgICAgICAgZm9yIHAgaW4gY3A6CisgICAgICAgICAgICAgICAgaWYgc2VsZnRlc3RkaXIgaW4gY3BbcF0gYW5kIG5ld3NlbGZ0ZXN0ZGlyIG5vdCBpbiBjcFtwXToKKyAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKKyAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBjcFtwXSBhbmQgbmV3YnVpbGRkaXIgbm90IGluIGNwW3BdOgorICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgICAgIHJldHVybiAoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgZGVmIHByZXBhcmVTdWl0ZShzZWxmLCBzdWl0ZXMsIHByb2Nlc3Nlcyk6CisgICAgICAgIGlmIHByb2Nlc3NlczoKKyAgICAgICAgICAgIGZyb20gb2VxYS5jb3JlLnV0aWxzLmNvbmN1cnJlbmN5dGVzdCBpbXBvcnQgQ29uY3VycmVudFRlc3RTdWl0ZQorCisgICAgICAgICAgICByZXR1cm4gQ29uY3VycmVudFRlc3RTdWl0ZShzdWl0ZXMsIHByb2Nlc3Nlcywgc2VsZi5zZXR1cF9idWlsZGRpcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfYnVpbGRkaXIoIi1zdCIsIE5vbmUsIHN1aXRlcykKKyAgICAgICAgICAgIHJldHVybiBzdWl0ZXMKKwogICAgIGRlZiBydW5UZXN0cyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgbWFjaGluZT1Ob25lLCBza2lwcz1bXSk6CiAgICAgICAgIGlmIG1hY2hpbmU6CiAgICAgICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBtYWNoaW5lCkBAIC0xMzUsMjYgKzE4MywxMCBAQAogCiAgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoIkJVSUxERElSIikKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ10gPSB7fQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsndGVzdGxheWVyX3BhdGgnXSA9IFwKLSAgICAgICAgICAgICAgICBnZXRfdGVzdF9sYXllcigpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWyd0ZXN0bGF5ZXJfcGF0aCddID0gZ2V0X3Rlc3RfbGF5ZXIoKQogICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZi5vcmlnIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYuYmsiKQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnMnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mLm9yaWciKQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfY2xhc3NfYmFja3VwJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mLmJrIikKLQotICAgICAgICBjb3B5ZmlsZShzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10sCi0gICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9iYWNrdXAnXSkKLSAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10sIAotICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSkKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10gPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKQogCiAgICAgICAgIGRlZiB0YWdfZmlsdGVyKHRhZ3MpOgogICAgICAgICAgICAgaWYgYXJncy5leGNsdWRlX3RhZ3M6CkBAIC0yNzksMTQgKzMxMSw5IEBACiAKICAgICAgICAgcmV0dXJuIHJjCiAKLSAgICBkZWYgX3NpZ25hbF9jbGVhbl9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzeXMuZXhpdCgxKQotICAgIAogICAgIGRlZiBydW4oc2VsZiwgbG9nZ2VyLCBhcmdzKToKICAgICAgICAgc2VsZi5fcHJvY2Vzc19hcmdzKGxvZ2dlciwgYXJncykKIAotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBzZWxmLl9zaWduYWxfY2xlYW5faGFuZGxlcikKLQogICAgICAgICByYyA9IE5vbmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgYXJncy5tYWNoaW5lOgpAQCAtMzE1LDIwICszNDIsNiBAQAogICAgICAgICAgICAgICAgIHJjID0gc2VsZi5faW50ZXJuYWxfcnVuKGxvZ2dlciwgYXJncykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGNvbmZpZ19wYXRocyA9IHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgY29weWZpbGUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aHNbJ2xvY2FsY29uZiddKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSkKLQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgY29weWZpbGUoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aHNbJ2JibGF5ZXJzJ10pCi0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10pCi0KLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddKToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10pCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddKToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSkKIAogICAgICAgICAgICAgb3V0cHV0X2xpbmsgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGFyZ3Mub3V0cHV0X2xvZyksCiAgICAgICAgICAgICAgICAgICAgICIlcy1yZXN1bHRzLmxvZyIgJSBzZWxmLm5hbWUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CmluZGV4IDE0NDVlM2UuLjJhYTU0OGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CkBAIC0xMTcsOSArMTE3LDkgQEAKICAgICAgICAgaW1wb3J0IG9lLnBhdGgKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYudGVzdGRpcikKICAgICAgICAgc2VsZi5xZW11cnVubmVybG9nID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3FlbXVydW5uZXJfbG9nLiVzJyAlIHNlbGYuZGF0ZXRpbWUpCi0gICAgICAgIGxvZ2dlcmhhbmRsZXIgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKHNlbGYucWVtdXJ1bm5lcmxvZykKLSAgICAgICAgbG9nZ2VyaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikpCi0gICAgICAgIHNlbGYubG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2VyaGFuZGxlcikKKyAgICAgICAgc2VsZi5sb2dnZXJoYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLnFlbXVydW5uZXJsb2cpCisgICAgICAgIHNlbGYubG9nZ2VyaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikpCisgICAgICAgIHNlbGYubG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5sb2dnZXJoYW5kbGVyKQogICAgICAgICBvZS5wYXRoLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShzZWxmLnFlbXVydW5uZXJsb2cpLCBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncWVtdXJ1bm5lcl9sb2cnKSwgZm9yY2U9VHJ1ZSkKIAogICAgICAgICBpZiBkLmdldFZhcigiRElTVFJPIikgPT0gInBva3ktdGlueSI6CkBAIC0xNDMsNyArMTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfa3ZtID0gdXNlX2t2bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2RpciA9IGR1bXBfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzID0gZC5nZXRWYXIoInRlc3RpbWFnZV9kdW1wX2hvc3QiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbF9wb3J0cyA9IGxlbihkLmdldFZhcigiU0VSSUFMX0NPTlNPTEVTIikuc3BsaXQoKSkpCiAKICAgICAgICAgc2VsZi50YXJnZXRfZHVtcGVyID0gVGFyZ2V0RHVtcGVyKGR1bXBfdGFyZ2V0X2NtZHMsIGR1bXBfZGlyLCBzZWxmLnJ1bm5lcikKIApAQCAtMTgyLDYgKzE4Myw3IEBACiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgc2VsZi5ydW5uZXIuc3RvcCgpCisgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5sb2dnZXJoYW5kbGVyKQogICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBOb25lCiAgICAgICAgIHNlbGYuaXAgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gTm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CmluZGV4IGRjMWUyODYuLmYxNjc5ODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKQEAgLTMxNSwxNSArMzE1LDE1IEBACiAgICAgdHJ5OgogICAgICAgICB0aW5mb2lsLmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLldBUk5JTkcpCiAgICAgICAgIGltcG9ydCBvZXFhLnRhcmdldGNvbnRyb2wKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoIlRFU1RfTE9HX0RJUiIsICIke1dPUktESVJ9L3Rlc3RpbWFnZSIpCi0gICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiLCAiMTAwMCIpCisgICAgICAgIHJlY2lwZWRhdGEgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZShwbikKKyAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoIlRFU1RfTE9HX0RJUiIsICIke1dPUktESVJ9L3Rlc3RpbWFnZSIpCisgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKCJURVNUX1FFTVVCT09UX1RJTUVPVVQiLCAiMTAwMCIpCiAgICAgICAgICMgVGVsbCBRZW11VGFyZ2V0KCkgd2hldGhlciBuZWVkIGZpbmQgcm9vdGZzL2tlcm5lbCBvciBub3QKICAgICAgICAgaWYgbGF1bmNoX2NtZDoKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJGSU5EX1JPT1RGUyIsICcwJykKKyAgICAgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKCJGSU5EX1JPT1RGUyIsICcwJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJGSU5EX1JPT1RGUyIsICcxJykKKyAgICAgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKCJGSU5EX1JPT1RGUyIsICcxJykKIAotICAgICAgICByZWNpcGVkYXRhID0gdGluZm9pbC5wYXJzZV9yZWNpcGUocG4pCiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG92ZXJyaWRlcy5pdGVtcygpOgogICAgICAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoa2V5LCB2YWx1ZSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZHVtcC5weQppbmRleCBkMzRlMDVlLi4wOWE0NDMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZHVtcC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZHVtcC5weQpAQCAtNzEsOCArNzEsMTEgQEAKICAgICBkZWYgZHVtcF9ob3N0KHNlbGYsIGR1bXBfZGlyPSIiKToKICAgICAgICAgaWYgZHVtcF9kaXI6CiAgICAgICAgICAgICBzZWxmLmR1bXBfZGlyID0gZHVtcF9kaXIKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgZW52WydQQVRIJ10gPSAnL3Vzci9zYmluOi9zYmluOi91c3IvYmluOi9iaW4nCisgICAgICAgIGVudlsnQ09MVU1OUyddID0gJzk5OTknCiAgICAgICAgIGZvciBjbWQgaW4gc2VsZi5jbWRzOgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cz1UcnVlLCBlbnY9ZW52KQogICAgICAgICAgICAgc2VsZi5fd3JpdGVfZHVtcChjbWQuc3BsaXQoKVswXSwgcmVzdWx0Lm91dHB1dCkKIAogY2xhc3MgVGFyZ2V0RHVtcGVyKEJhc2VEdW1wZXIpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQppbmRleCBhYTQzNTU5Li41OGQzYzNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQpAQCAtMjIsMTAgKzIyLDEwIEBACiAKIGNsYXNzIEhUVFBTZXJ2aWNlKG9iamVjdCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdF9kaXIsIGhvc3Q9JycsIGxvZ2dlcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdF9kaXIsIGhvc3Q9JycsIHBvcnQ9MCwgbG9nZ2VyPU5vbmUpOgogICAgICAgICBzZWxmLnJvb3RfZGlyID0gcm9vdF9kaXIKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAotICAgICAgICBzZWxmLnBvcnQgPSAwCisgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAogICAgIGRlZiBzdGFydChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CmluZGV4IDczMTNkZjguLjYwZTE2ZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQpAQCAtMjUsMTMgKzI1LDIwIEBACiAgICAgICAgIHNlY3Rpb25fcmVnZXhbJ2V4aXRjb2RlJ10gPSByZS5jb21waWxlKHIiXkVSUk9SOiBFeGl0IHN0YXR1cyBpcyAoLispIikKICAgICAgICAgc2VjdGlvbl9yZWdleFsndGltZW91dCddID0gcmUuY29tcGlsZShyIl5USU1FT1VUOiAuKi8oLispL3B0ZXN0IikKIAorICAgICAgICAjIENhY2hlIG1hcmtlcnMgc28gd2UgZG9uJ3QgdGFrZSB0aGUgcmUuc2VhcmNoKCkgaGl0IGFsbCB0aGUgdGltZS4KKyAgICAgICAgbWFya2VycyA9ICgiUEFTUzoiLCAiRkFJTDoiLCAiU0tJUDoiLCAiQkVHSU46IiwgIkVORDoiLCAiRFVSQVRJT046IiwgIkVSUk9SOiBFeGl0IiwgIlRJTUVPVVQ6IikKKwogICAgICAgICBkZWYgbmV3c2VjdGlvbigpOgotICAgICAgICAgICAgcmV0dXJuIHsgJ25hbWUnOiAiTm8tc2VjdGlvbiIsICdsb2cnOiAiIiB9CisgICAgICAgICAgICByZXR1cm4geyAnbmFtZSc6ICJOby1zZWN0aW9uIiwgJ2xvZyc6IFtdIH0KIAogICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSBuZXdzZWN0aW9uKCkKIAogICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgZXJyb3JzPSdyZXBsYWNlJykgYXMgZjoKICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUuc3RhcnRzd2l0aChtYXJrZXJzKToKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uWydsb2cnXS5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlY3Rpb25fcmVnZXhbJ2JlZ2luJ10uc2VhcmNoKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bJ25hbWUnXSA9IHJlc3VsdC5ncm91cCgxKQpAQCAtNjEsNyArNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uW3RdID0gcmVzdWx0Lmdyb3VwKDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uWydsb2cnXSA9IGN1cnJlbnRfc2VjdGlvblsnbG9nJ10gKyBsaW5lIAorICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbG9nJ10uYXBwZW5kKGxpbmUpCiAKICAgICAgICAgICAgICAgICBmb3IgdCBpbiB0ZXN0X3JlZ2V4OgogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0X3JlZ2V4W3RdLnNlYXJjaChsaW5lKQpAQCAtNzAsNiArNzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY3VycmVudF9zZWN0aW9uWyduYW1lJ11dID0ge30KICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1tjdXJyZW50X3NlY3Rpb25bJ25hbWUnXV1bcmVzdWx0Lmdyb3VwKDEpLnN0cmlwKCldID0gdAogCisgICAgICAgICMgUHl0aG9uIHBlcmZvcm1hbmNlIGZvciByZXBlYXRlZGx5IGpvaW5pbmcgbG9uZyBzdHJpbmdzIGlzIHBvb3IsIGRvIGl0IGFsbCBhdCBvbmNlIGF0IHRoZSBlbmQuCisgICAgICAgICMgRm9yIDIuMSBtaWxsaW9uIGxpbmVzIGluIGEgbG9nIHRoaXMgcmVkdWNlcyAxOCBob3VycyB0byAxMnMuCisgICAgICAgIGZvciBzZWN0aW9uIGluIHNlbGYuc2VjdGlvbnM6CisgICAgICAgICAgICBzZWxmLnNlY3Rpb25zW3NlY3Rpb25dWydsb2cnXSA9ICIiLmpvaW4oc2VsZi5zZWN0aW9uc1tzZWN0aW9uXVsnbG9nJ10pCisKICAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0cywgc2VsZi5zZWN0aW9ucwogCiAgICAgIyBMb2cgdGhlIHJlc3VsdHMgYXMgZmlsZXMuIFRoZSBmaWxlIG5hbWUgaXMgdGhlIHNlY3Rpb24gbmFtZSBhbmQgdGhlIGNvbnRlbnRzIGFyZSB0aGUgdGVzdHMgaW4gdGhhdCBzZWN0aW9uLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQppbmRleCBmZThiNzdkLi40Yjc0MzM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQpAQCAtMjEsNiArMjEsNyBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvZ2dpbmcKIGZyb20gb2VxYS51dGlscy5kdW1wIGltcG9ydCBIb3N0RHVtcGVyCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiAjIEdldCBVbmljb2RlIG5vbiBwcmludGFibGUgY29udHJvbCBjaGFycwogY29udHJvbF9yYW5nZSA9IGxpc3QocmFuZ2UoMCwzMikpK2xpc3QocmFuZ2UoMTI3LDE2MCkpCkBAIC0zMSwxMCArMzIsMTEgQEAKIGNsYXNzIFFlbXVSdW5uZXI6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFjaGluZSwgcm9vdGZzLCBkaXNwbGF5LCB0bXBkaXIsIGRlcGxveV9kaXJfaW1hZ2UsIGxvZ2ZpbGUsIGJvb3R0aW1lLCBkdW1wX2RpciwgZHVtcF9ob3N0X2NtZHMsCi0gICAgICAgICAgICAgICAgIHVzZV9rdm0sIGxvZ2dlciwgdXNlX3NsaXJwPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgdXNlX2t2bSwgbG9nZ2VyLCB1c2Vfc2xpcnA9RmFsc2UsIHNlcmlhbF9wb3J0cz0yLCBib290X3BhdHRlcm5zID0gZGVmYXVsdGRpY3Qoc3RyKSwgdXNlX292bWY9RmFsc2UpOgogCiAgICAgICAgICMgUG9wZW4gb2JqZWN0IGZvciBydW5xZW11CiAgICAgICAgIHNlbGYucnVucWVtdSA9IE5vbmUKKyAgICAgICAgc2VsZi5ydW5xZW11X2V4aXRlZCA9IEZhbHNlCiAgICAgICAgICMgcGlkIG9mIHRoZSBxZW11IHByb2Nlc3MgdGhhdCBydW5xZW11IHdpbGwgc3RhcnQKICAgICAgICAgc2VsZi5xZW11cGlkID0gTm9uZQogICAgICAgICAjIHRhcmdldCBpcCAtIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciBydW5xZW11IG91dHB1dApAQCAtNTQsOCArNTYsMTEgQEAKICAgICAgICAgc2VsZi5sb2dnZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi51c2Vfa3ZtID0gdXNlX2t2bQorICAgICAgICBzZWxmLnVzZV9vdm1mID0gdXNlX292bWYKICAgICAgICAgc2VsZi51c2Vfc2xpcnAgPSB1c2Vfc2xpcnAKKyAgICAgICAgc2VsZi5zZXJpYWxfcG9ydHMgPSBzZXJpYWxfcG9ydHMKICAgICAgICAgc2VsZi5tc2cgPSAnJworICAgICAgICBzZWxmLmJvb3RfcGF0dGVybnMgPSBib290X3BhdHRlcm5zCiAKICAgICAgICAgc2VsZi5ydW5xZW11dGltZSA9IDEyMAogICAgICAgICBzZWxmLnFlbXVfcGlkZmlsZSA9ICdwaWRmaWxlXycrc3RyKG9zLmdldHBpZCgpKQpAQCAtNjQsNiArNjksMjUgQEAKIAogICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCisgICAgICAgICMgRW5hYmxlIHRlc3Rpbmcgb3RoZXIgT1MncworICAgICAgICAjIFNldCBjb21tYW5kcyBmb3IgdGFyZ2V0IGNvbW11bmljYXRpb24sIGFuZCBkZWZhdWx0IHRvIExpbnV4IEFMV0FZUworICAgICAgICAjIE90aGVyIE9TJ3Mgb3IgYmFyZW1ldGFsIGFwcGxpY2F0aW9ucyBuZWVkIHRvIHByb3ZpZGUgdGhlaXIKKyAgICAgICAgIyBvd24gaW1wbGVtZW50YXRpb24gcGFzc2luZyBpdCB0aHJvdWdoIFFlbXVSdW5uZXIncyBjb25zdHJ1Y3RvcgorICAgICAgICAjIG9yIGJ5IHBhc3NpbmcgdGhlbSB0aHJvdWdoIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW2ZsYWddCisgICAgICAgICMgcHJvdmlkZWQgdmFyaWFibGVzLCB3aGVyZSA8ZmxhZz4gaXMgb25lIG9mIHRoZSBtZW50aW9uZWQgYmVsb3cuCisgICAgICAgIGFjY2VwdGVkX3BhdHRlcm5zID0gWydzZWFyY2hfcmVhY2hlZF9wcm9tcHQnLCAnc2VuZF9sb2dpbl91c2VyJywgJ3NlYXJjaF9sb2dpbl9zdWNjZWVkZWQnLCAnc2VhcmNoX2NtZF9maW5pc2hlZCddCisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0cikKKyAgICAgICAgIyBEZWZhdWx0IHRvIHRoZSB1c3VhbCBwYXRlcm5zIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdGFyZ2V0CisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1snc2VhcmNoX3JlYWNoZWRfcHJvbXB0J10gPSBiJyBsb2dpbjonCisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1snc2VuZF9sb2dpbl91c2VyJ10gPSAncm9vdFxuJworICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlYXJjaF9sb2dpbl9zdWNjZWVkZWQnXSA9IHIicm9vdEBbYS16QS1aMC05XC1dKzp+IyIKKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zWydzZWFyY2hfY21kX2ZpbmlzaGVkJ10gPSByIlthLXpBLVowLTldK0BbYS16QS1aMC05XC1dKzp+IyIKKworICAgICAgICAjIE9ubHkgb3ZlcnJpZGUgcGF0dGVybnMgdGhhdCB3ZXJlIHNldCBlLmcuIGxvZ2luIHVzZXIgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbc2VuZF9sb2dpbl91c2VyXSA9ICJ3ZWJzZXJ2ZXJcbiIKKyAgICAgICAgZm9yIHBhdHRlcm4gaW4gYWNjZXB0ZWRfcGF0dGVybnM6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5ib290X3BhdHRlcm5zW3BhdHRlcm5dOgorICAgICAgICAgICAgICAgIHNlbGYuYm9vdF9wYXR0ZXJuc1twYXR0ZXJuXSA9IGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1twYXR0ZXJuXQorCiAgICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC05OCwxMSArMTIyLDEwIEBACiAgICAgZGVmIGhhbmRsZVNJR0NITEQoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIGlmIHNlbGYucnVucWVtdSBhbmQgc2VsZi5ydW5xZW11LnBvbGwoKToKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KHNlbGYucnVucWVtdS5zdGRvdXQpKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoJ091dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcycgJSBzZWxmLmdldE91dHB1dChzZWxmLnJ1bnFlbXUuc3Rkb3V0KSkKICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQogICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCi0gICAgICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHFlbXVwYXJhbXMgPSBOb25lLCBnZXRfaXAgPSBUcnVlLCBleHRyYV9ib290cGFyYW1zID0gTm9uZSwgcnVucWVtdXBhcmFtcz0nJywgbGF1bmNoX2NtZD1Ob25lLCBkaXNjYXJkX3dyaXRlcz1UcnVlKToKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKQEAgLTEzNiwxMyArMTU5LDE2IEBACiAgICAgICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIG5vZ3JhcGhpYycKICAgICAgICAgICAgIGlmIHNlbGYudXNlX3NsaXJwOgogICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBzbGlycCcKKyAgICAgICAgICAgIGlmIHNlbGYudXNlX292bWY6CisgICAgICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIG92bWYnCiAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgJXMgJXMgJXMnICUgKHJ1bnFlbXVwYXJhbXMsIHNlbGYubWFjaGluZSwgc2VsZi5yb290ZnMpCiAKICAgICAgICAgcmV0dXJuIHNlbGYubGF1bmNoKGxhdW5jaF9jbWQsIHFlbXVwYXJhbXM9cWVtdXBhcmFtcywgZ2V0X2lwPWdldF9pcCwgZXh0cmFfYm9vdHBhcmFtcz1leHRyYV9ib290cGFyYW1zLCBlbnY9ZW52KQogCiAgICAgZGVmIGxhdW5jaChzZWxmLCBsYXVuY2hfY21kLCBnZXRfaXAgPSBUcnVlLCBxZW11cGFyYW1zID0gTm9uZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUsIGVudiA9IE5vbmUpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRocmVhZHNvY2ssIHRocmVhZHBvcnQgPSBzZWxmLmNyZWF0ZV9zb2NrZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5zZXJpYWxfcG9ydHMgPj0gMjoKKyAgICAgICAgICAgICAgICBzZWxmLnRocmVhZHNvY2ssIHRocmVhZHBvcnQgPSBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0LCBzZWxmLnNlcnZlcnBvcnQgPSBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIGxpc3RlbmluZyBzb2NrZXQ6ICVzIiAlIG1zZ1sxXSkKQEAgLTE2MCw3ICsxODYsMTAgQEAKICAgICAgICAgaWYgcWVtdXBhcmFtczoKICAgICAgICAgICAgIHNlbGYucWVtdXBhcmFtcyA9IHNlbGYucWVtdXBhcmFtc1s6LTFdICsgIiAiICsgcWVtdXBhcmFtcyArICIgIiArICdcIicKIAotICAgICAgICBsYXVuY2hfY21kICs9ICcgdGNwc2VyaWFsPSVzOiVzICVzJyAlICh0aHJlYWRwb3J0LCBzZWxmLnNlcnZlcnBvcnQsIHNlbGYucWVtdXBhcmFtcykKKyAgICAgICAgaWYgc2VsZi5zZXJpYWxfcG9ydHMgPj0gMjoKKyAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyB0Y3BzZXJpYWw9JXM6JXMgJXMnICUgKHRocmVhZHBvcnQsIHNlbGYuc2VydmVycG9ydCwgc2VsZi5xZW11cGFyYW1zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIHRjcHNlcmlhbD0lcyAlcycgJSAoc2VsZi5zZXJ2ZXJwb3J0LCBzZWxmLnFlbXVwYXJhbXMpCiAKICAgICAgICAgc2VsZi5vcmlnY2hsZGhhbmRsZXIgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdDSExEKQogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdDSExELCBzZWxmLmhhbmRsZVNJR0NITEQpCkBAIC0yMDYsNiArMjM1LDggQEAKICAgICAgICAgZW5kdGltZSA9IHRpbWUudGltZSgpICsgc2VsZi5ydW5xZW11dGltZQogICAgICAgICB3aGlsZSBub3Qgc2VsZi5pc19hbGl2ZSgpIGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucG9sbCgpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdV9leGl0ZWQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlOgogICAgICAgICAgICAgICAgICAgICAjIE5vIHBvaW50IHdhaXRpbmcgYW55IGxvbmdlcgogICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCkBAIC0yMTUsNiArMjQ2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKIAorICAgICAgICBpZiBzZWxmLnJ1bnFlbXVfZXhpdGVkOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWxpdmUoKToKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJRZW11IHBpZCBkaWRuJ3QgYXBwZWFyIGluICVzIHNlY29uZHMgKCVzKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYucnVucWVtdXRpbWUsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQpAQCAtMjM3LDggKzI3MSw4IEBACiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJxZW11IHN0YXJ0ZWQgaW4gJXMgc2Vjb25kcyAtIHFlbXUgcHJvY2NlcyBwaWQgaXMgJXMgKCVzKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZS50aW1lKCkgLSAoZW5kdGltZSAtIHNlbGYucnVucWVtdXRpbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5xZW11cGlkLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKKyAgICAgICAgY21kbGluZSA9ICcnCiAgICAgICAgIGlmIGdldF9pcDoKLSAgICAgICAgICAgIGNtZGxpbmUgPSAnJwogICAgICAgICAgICAgd2l0aCBvcGVuKCcvcHJvYy8lcy9jbWRsaW5lJyAlIHNlbGYucWVtdXBpZCkgYXMgcDoKICAgICAgICAgICAgICAgICBjbWRsaW5lID0gcC5yZWFkKCkKICAgICAgICAgICAgICAgICAjIEl0IGlzIG5lZWRlZCB0byBzYW5pdGl6ZSB0aGUgZGF0YSByZWNlaXZlZApAQCAtMjc1LDE0ICszMDksMTUgQEAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRhcmdldCBJUDogJXMiICUgc2VsZi5pcCkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlcnZlciBJUDogJXMiICUgc2VsZi5zZXJ2ZXJfaXApCiAKLSAgICAgICAgc2VsZi50aHJlYWQgPSBMb2dnaW5nVGhyZWFkKHNlbGYubG9nLCBzZWxmLnRocmVhZHNvY2ssIHNlbGYubG9nZ2VyKQotICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCi0gICAgICAgIGlmIG5vdCBzZWxmLnRocmVhZC5jb25uZWN0aW9uX2VzdGFibGlzaGVkLndhaXQoc2VsZi5ib290dGltZSk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRGlkbid0IHJlY2VpdmUgYSBjb25zb2xlIGNvbm5lY3Rpb24gZnJvbSBxZW11LiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuYW5kICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQotICAgICAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5zZXJpYWxfcG9ydHMgPj0gMjoKKyAgICAgICAgICAgIHNlbGYudGhyZWFkID0gTG9nZ2luZ1RocmVhZChzZWxmLmxvZywgc2VsZi50aHJlYWRzb2NrLCBzZWxmLmxvZ2dlcikKKyAgICAgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnRocmVhZC5jb25uZWN0aW9uX2VzdGFibGlzaGVkLndhaXQoc2VsZi5ib290dGltZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkRpZG4ndCByZWNlaXZlIGEgY29uc29sZSBjb25uZWN0aW9uIGZyb20gcWVtdS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG5hbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiLCBvdXQpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyICglcykiICUKQEAgLTMxMCw4ICszNDUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzb2NrLnJlY3YoMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2cgKz0gZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zZXJpYWxfcG9ydHMgPCAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBzb2NrZXQgaGFzIG1peGVkIGNvbnNvbGUva2VybmVsIGRhdGEsIGxvZyBpdCB0byBsb2dmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2coZGF0YSkKKwogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYicgbG9naW46JyBpbiBib290bG9nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5ib290X3BhdHRlcm5zWydzZWFyY2hfcmVhY2hlZF9wcm9tcHQnXSBpbiBib290bG9nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IHFlbXVzb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZGxvZ2luID0gVHJ1ZQpAQCAtMzQzLDggKzM4Miw4IEBACiAKICAgICAgICAgIyBJZiB3ZSBhcmUgbm90IGFibGUgdG8gbG9naW4gdGhlIHRlc3RzIGNhbiBjb250aW51ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi5ydW5fc2VyaWFsKCJyb290XG4iLCByYXc9VHJ1ZSkKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiLCBvdXRwdXQpOgorICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYucnVuX3NlcmlhbChzZWxmLmJvb3RfcGF0dGVybnNbJ3NlbmRfbG9naW5fdXNlciddLCByYXc9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaChzZWxmLmJvb3RfcGF0dGVybnNbJ3NlYXJjaF9sb2dpbl9zdWNjZWVkZWQnXSwgb3V0cHV0KToKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlZCA9IFRydWUKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9nZ2VkIGFzIHJvb3QgaW4gc2VyaWFsIGNvbnNvbGUiKQogICAgICAgICAgICAgICAgIGlmIG5ldGNvbmY6CkBAIC0zODUsNyArNDI0LDcgQEAKICAgICAgICAgICAgICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxmLnJ1bnFlbXUucGlkKSwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICAgICBzZWxmLnJ1bnFlbXUuc3RkaW4uY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5ydW5xZW11LnN0ZG91dC5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCisgICAgICAgICAgICBzZWxmLnJ1bnFlbXVfZXhpdGVkID0gVHJ1ZQogCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3NlcnZlcl9zb2NrZXQnKSBhbmQgc2VsZi5zZXJ2ZXJfc29ja2V0OgogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0LmNsb3NlKCkKQEAgLTM5Niw3ICs0MzUsMTEgQEAKICAgICAgICAgc2VsZi5xZW11cGlkID0gTm9uZQogICAgICAgICBzZWxmLmlwID0gTm9uZQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLnFlbXVfcGlkZmlsZSk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5xZW11X3BpZGZpbGUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYucWVtdV9waWRmaWxlKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgIyBXZSByYWNlZCwgaWdub3JlCisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBpZiBzZWxmLm1vbml0b3JwaXBlOgogICAgICAgICAgICAgc2VsZi5tb25pdG9ycGlwZS5jbG9zZSgpCiAKQEAgLTQyMiw3ICs0NjUsNyBAQAogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAgICAgaWYgbm90IHNlbGYucnVucWVtdSBvciBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBub3Qgc2VsZi5ydW5xZW11IG9yIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgbm90IE5vbmUgb3Igc2VsZi5ydW5xZW11X2V4aXRlZDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnFlbXVfcGlkZmlsZSk6CiAgICAgICAgICAgICAjIHdoZW4gaGFuZGxpbmcgcGlkZmlsZSwgcWVtdSBjcmVhdGVzIHRoZSBmaWxlLCBzdGF0IGl0LCBsb2NrIGl0IGFuZCB0aGVuIHdyaXRlIHRvIGl0CkBAIC00NjUsNyArNTA4LDcgQEAKICAgICAgICAgICAgICAgICBpZiBhbnN3ZXI6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gYW5zd2VyLmRlY29kZSgndXRmLTgnKQogICAgICAgICAgICAgICAgICAgICAjIFNlYXJjaCB0aGUgcHJvbXB0IHRvIHN0b3AKLSAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHIiW2EtekEtWjAtOV0rQFthLXpBLVowLTlcLV0rOn4jIiwgZGF0YSk6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChzZWxmLmJvb3RfcGF0dGVybnNbJ3NlYXJjaF9jbWRfZmluaXNoZWQnXSwgZGF0YSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gZGF0YSBvbiBzZXJpYWwgY29uc29sZSBzb2NrZXQiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQppbmRleCA0OWEwNzI2Li4zNmMyZWNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQpAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICAgICAgInN0ZGluIjogTm9uZSwKICAgICAgICAgICAgICJzaGVsbCI6IEZhbHNlLAogICAgICAgICAgICAgImJ1ZnNpemUiOiAtMSwKLSAgICAgICAgICAgICJwcmVleGVjX2ZuIjogb3Muc2V0c2lkLAorICAgICAgICAgICAgInN0YXJ0X25ld19zZXNzaW9uIjogVHJ1ZSwKICAgICAgICAgfQogICAgICAgICBzZWxmLm9wdGlvbnMgPSBkaWN0KHNlbGYuZGVmYXVsdG9wdHMpCiAgICAgICAgIHNlbGYub3B0aW9ucy51cGRhdGUob3B0aW9ucykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCmluZGV4IDA2NzA1NTYuLmNlYzIyNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgpAQCAtNjIsNyArNjIsNyBAQAogCXRoZW4KIAkJaWYgdGVzdCAteCAke3NiaW5kaXJ9L2Fsc2FjdGwKIAkJdGhlbgotCQkJJHtzYmluZGlyfS9hbHNhY3RsIC1mICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EvYXNvdW5kLnN0YXRlIHJlc3RvcmUKKwkJCSR7c2JpbmRpcn0vYWxzYWN0bCAtZyAtZiAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZSByZXN0b3JlCiAJCWZpCiAJZmkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwppbmRleCBjODFkZWYyLi5iMzI5MWNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCkBAIC0zMyw3ICszMyw3IEBACiBHUlVCUExBVEZPUk1fYWFyY2g2NCA9ICJlZmkiCiBHUlVCUExBVEZPUk0gPz89ICJwYyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGxhdGZvcm09JHtHUlVCUExBVEZPUk19IFwKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3J1Yi1ta2ZvbnQgXApAQCAtNjAsOCArNjAsOSBAQAogZXhwb3J0IFBZVEhPTiA9ICJweXRob24zIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkoIGNkICR7U30KLQkke1N9L2F1dG9nZW4uc2ggKQorCWNkICR7U30KKwlGUk9NX0JPT1RTVFJBUD0xICR7U30vYXV0b2dlbi5zaAorCWNkICR7Qn0KIH0KIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2FjZGVmaW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYWNkZWZpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MmNmNDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYWNkZWZpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1BZGQgYSBkZXNjcmlwdGlvbiB0byB0aGUgQUNfREVGSU5FIGZvciBMT0NBTEVESVIgc28gdGhhdCBpdCBhcHBlYXJzIGluIGNvbmZpZy5oCi1hbmQgc2lsZW5jZXMgYSBmYXRhbCB3YXJuaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6UGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggYzEwNDYwYy4uYWEyMDI2MyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMjU4LDcgKzI1OCw3IEBAIEFDX1NVQlNUKExJQlMpCi0gCi0gQU1fR05VX0dFVFRFWFQKLSAKLS1BQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCIkcHJlZml4LyREQVRBRElSTkFNRSIpCi0rQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwiJHByZWZpeC8kREFUQURJUk5BTUUiLFtsb2NhbGUgZGlyZWN0b3J5XSkKLSAKLSBBQ19PVVRQVVQoW01ha2VmaWxlIGludGwvTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSAgbTQvTWFrZWZpbGUgXAotIG1hbi9NYWtlZmlsZSBwby9NYWtlZmlsZS5pbiBzcmMvTWFrZWZpbGUgZGViaWFuL3J1bGVzIFNwZWNmaWxlIHN5c3R5cGUgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYXV0b3Rvb2xzLXVwZGF0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2F1dG90b29scy11cGRhdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhZjM4YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2F1dG90b29scy11cGRhdGUucGF0Y2gKQEAgLTAsMCArMSw1NzQ5IEBACitVcGRhdGUgYXV0b3Rvb2xzIGluZnJhc3RydWN0dXJlIChpbmNsdWRpbmcgZ2V0dGV4dCkgdG8gbW9kZXJuIHZlcnNpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFBoaWwgQmx1bmRlbGwgPHBiQHBiY2wubmV0PgorCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvY29uZmlndXJlLmluIGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4JMTk5OC0xMi0zMCAwNzo1MDowNy4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgkyMDE5LTExLTI1IDE2OjIyOjM3LjAwMDAwMDAwMCArMDAwMAorQEAgLTkyLDcgKzkyLDYgQEAgQUNfUFJPR19SQU5MSUIKKyBBQ19JU0NfUE9TSVgKKyBBQ19BSVgKKyBBQ19NSU5JWAorLUFNX0NfUFJPVE9UWVBFUworIEFDX0NfQ09OU1QKKyBBQ19DX0lOTElORQorIAorQEAgLTI1MywxOCArMjUyLDEzIEBAIGloYXZlJGxvb2t1cF9mYWNpbGl0eQorIGZpCisgCisgCistQUNfU1VCU1QoQ0ZMQUdTKQorLUFDX1NVQlNUKExERkxBR1MpCisgQUNfU1VCU1QoTElCUykKKyAKKy1BTV9HTlVfR0VUVEVYVAorK0FNX0dOVV9HRVRURVhUKFtleHRlcm5hbF0pCisgCistQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwiJHByZWZpeC8kREFUQURJUk5BTUUiKQorLUFDX0xJTktfRklMRVMoJG5sc19jdl9oZWFkZXJfbGliZ3QsICRubHNfY3ZfaGVhZGVyX2ludGwpCistCistQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgXAorK0FDX09VVFBVVChbTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBcCisgbWFuL01ha2VmaWxlIHBvL01ha2VmaWxlLmluIHNyYy9NYWtlZmlsZSBkZWJpYW4vcnVsZXMgU3BlY2ZpbGUgc3lzdHlwZSBcCisgc3JjL2xyenN6YnVnXSwKKy1bc2VkIC1lICIvUE9URklMRVMgPS9yIHBvL1BPVEZJTEVTIiBwby9NYWtlZmlsZS5pbiA+IHBvL01ha2VmaWxlOyAKKytbCisgY2htb2QgK3ggZGViaWFuL3J1bGVzOworIHRlc3QgLXogIiRDT05GSUdfSEVBREVSUyIgfHwgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1oXSkKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYwkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxOTkgKzAsMCBAQAorLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBiaW5kdGV4dGRvbWFpbigzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2Vsc2UKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVsc2UKKy12b2lkIGZyZWUgKCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW107CistCistLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMuICAqLworLWV4dGVybiBzdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKKy0KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgQklORFRFWFRET01BSU4gX19iaW5kdGV4dGRvbWFpbgorLSMgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCistI2Vsc2UKKy0jIGRlZmluZSBCSU5EVEVYVERPTUFJTiBiaW5kdGV4dGRvbWFpbl9fCistI2VuZGlmCistCistLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCistICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLworLWNoYXIgKgorLUJJTkRURVhURE9NQUlOIChkb21haW5uYW1lLCBkaXJuYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7CisteworLSAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7CistCistICAvKiBTb21lIHNhbml0eSBjaGVja3MuICAqLworLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCB8fCBkb21haW5uYW1lWzBdID09ICdcMCcpCistICAgIHJldHVybiBOVUxMOworLQorLSAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKKy0gICAgeworLSAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKKy0gICAgICBpZiAoY29tcGFyZSA9PSAwKQorLQkvKiBXZSBmb3VuZCBpdCEgICovCistCWJyZWFrOworLSAgICAgIGlmIChjb21wYXJlIDwgMCkKKy0JeworLQkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCistCSAgYmluZGluZyA9IE5VTEw7CistCSAgYnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKKy0gICAgLyogVGhlIGN1cnJlbnQgYmluZGluZyBoYXMgYmUgdG8gcmV0dXJuZWQuICAqLworLSAgICByZXR1cm4gYmluZGluZyA9PSBOVUxMID8gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZSA6IGJpbmRpbmctPmRpcm5hbWU7CistCistICBpZiAoYmluZGluZyAhPSBOVUxMKQorLSAgICB7CistICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAorLQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQorLQkgb2xkIGJpbmRpbmcuICAqLworLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIGJpbmRpbmctPmRpcm5hbWUpICE9IDApCistCXsKKy0JICBjaGFyICpuZXdfZGlybmFtZTsKKy0KKy0JICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQorLQkgICAgbmV3X2Rpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOworLQkgIGVsc2UKKy0JICAgIHsKKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCistCSAgICAgIG5ld19kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKKy0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCistCQlyZXR1cm4gTlVMTDsKKy0jZWxzZQorLQkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7CistCSAgICAgIG5ld19kaXJuYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLQkgICAgICBpZiAobmV3X2Rpcm5hbWUgPT0gTlVMTCkKKy0JCXJldHVybiBOVUxMOworLQorLQkgICAgICBtZW1jcHkgKG5ld19kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOworLSNlbmRpZgorLQkgICAgfQorLQorLQkgIGlmIChiaW5kaW5nLT5kaXJuYW1lICE9IF9ubF9kZWZhdWx0X2Rpcm5hbWUpCistCSAgICBmcmVlIChiaW5kaW5nLT5kaXJuYW1lKTsKKy0KKy0JICBiaW5kaW5nLT5kaXJuYW1lID0gbmV3X2Rpcm5hbWU7CistCX0KKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgLyogV2UgaGF2ZSB0byBjcmVhdGUgYSBuZXcgYmluZGluZy4gICovCistICAgICAgc2l6ZV90IGxlbjsKKy0gICAgICBzdHJ1Y3QgYmluZGluZyAqbmV3X2JpbmRpbmcgPQorLQkoc3RydWN0IGJpbmRpbmcgKikgbWFsbG9jIChzaXplb2YgKCpuZXdfYmluZGluZykpOworLQorLSAgICAgIGlmIChuZXdfYmluZGluZyA9PSBOVUxMKQorLQlyZXR1cm4gTlVMTDsKKy0KKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCistICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSBzdHJkdXAgKGRvbWFpbm5hbWUpOworLSAgICAgIGlmIChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9PSBOVUxMKQorLQlyZXR1cm4gTlVMTDsKKy0jZWxzZQorLSAgICAgIGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOworLSAgICAgIG5ld19iaW5kaW5nLT5kb21haW5uYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLSAgICAgIGlmIChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9PSBOVUxMKQorLQlyZXR1cm4gTlVMTDsKKy0gICAgICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lLCBkb21haW5uYW1lLCBsZW4pOworLSNlbmRpZgorLQorLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIF9ubF9kZWZhdWx0X2Rpcm5hbWUpID09IDApCistCW5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKKy0gICAgICBlbHNlCistCXsKKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCistCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSBzdHJkdXAgKGRpcm5hbWUpOworLQkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSA9PSBOVUxMKQorLQkgICAgcmV0dXJuIE5VTEw7CistI2Vsc2UKKy0JICBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKKy0JICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0JICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgPT0gTlVMTCkKKy0JICAgIHJldHVybiBOVUxMOworLQkgIG1lbWNweSAobmV3X2JpbmRpbmctPmRpcm5hbWUsIGRpcm5hbWUsIGxlbik7CistI2VuZGlmCistCX0KKy0KKy0gICAgICAvKiBOb3cgZW5xdWV1ZSBpdC4gICovCistICAgICAgaWYgKF9ubF9kb21haW5fYmluZGluZ3MgPT0gTlVMTAorLQkgIHx8IHN0cmNtcCAoZG9tYWlubmFtZSwgX25sX2RvbWFpbl9iaW5kaW5ncy0+ZG9tYWlubmFtZSkgPCAwKQorLQl7CistCSAgbmV3X2JpbmRpbmctPm5leHQgPSBfbmxfZG9tYWluX2JpbmRpbmdzOworLQkgIF9ubF9kb21haW5fYmluZGluZ3MgPSBuZXdfYmluZGluZzsKKy0JfQorLSAgICAgIGVsc2UKKy0JeworLQkgIGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOworLQkgIHdoaWxlIChiaW5kaW5nLT5uZXh0ICE9IE5VTEwKKy0JCSAmJiBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPm5leHQtPmRvbWFpbm5hbWUpID4gMCkKKy0JICAgIGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0OworLQorLQkgIG5ld19iaW5kaW5nLT5uZXh0ID0gYmluZGluZy0+bmV4dDsKKy0JICBiaW5kaW5nLT5uZXh0ID0gbmV3X2JpbmRpbmc7CistCX0KKy0KKy0gICAgICBiaW5kaW5nID0gbmV3X2JpbmRpbmc7CistICAgIH0KKy0KKy0gIHJldHVybiBiaW5kaW5nLT5kaXJuYW1lOworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX2JpbmR0ZXh0ZG9tYWluLCBiaW5kdGV4dGRvbWFpbik7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwyNjIgKzAsMCBAQAorLS8qIENvbXBhdGliaWxpdHkgY29kZSBmb3IgZ2V0dGV4dC11c2luZy1jYXRnZXRzIGludGVyZmFjZS4KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmZGVmIFNURENfSEVBREVSUworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLWNoYXIgKmdldGVudiAoKTsKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmZGVmIEhBVkVfTkxfVFlQRVNfSAorLSMgaW5jbHVkZSA8bmxfdHlwZXMuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiBgc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgorLSAgIGBgRGlyZWN0cyBgc2V0bG9jYWxlKCknIHRvIHF1ZXJ5IGBjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAorLSAgICAgc2V0dGluZyBvZiBgbG9jYWwnLicnCistICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBBbmQgZXZlbiB3b3JzZTogUE9TSVgKKy0gICBkZWZpbmVzIHRoaXMgbm90IGF0IGFsbC4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQKKy0gICBzeXN0ZW0gKGUuZy4gdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKKy0jZW5kaWYKKy0KKy0vKiBUaGUgY2F0YWxvZyBkZXNjcmlwdG9yLiAgKi8KKy1zdGF0aWMgbmxfY2F0ZCBjYXRhbG9nID0gKG5sX2NhdGQpIC0xOworLQorLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgY2F0YWxvZy4gICovCistc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdF9jYXRhbG9nX25hbWVbXSA9ICJtZXNzYWdlcyI7CistCistLyogTmFtZSBvZiBjdXJyZW50bHkgdXNlZCBjYXRhbG9nLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqY2F0YWxvZ19uYW1lID0gZGVmYXVsdF9jYXRhbG9nX25hbWU7CistCistLyogR2V0IElEIGZvciBnaXZlbiBzdHJpbmcuICBJZiBub3QgZm91bmQgcmV0dXJuIC0xLiAgKi8KKy1zdGF0aWMgaW50IG1zZ190b19jYXRfaWQgUEFSQU1TICgoY29uc3QgY2hhciAqbXNnKSk7CistCistLyogU3Vic3RpdHV0aW9uIGZvciBzeXN0ZW1zIGxhY2tpbmcgdGhpcyBmdW5jdGlvbiBpbiB0aGVpciBDIGxpYnJhcnkuICAqLworLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKKy0jZW5kaWYKKy0KKy0KKy0vKiBTZXQgY3VycmVudGx5IHVzZWQgZG9tYWluL2NhdGFsb2cuICAqLworLWNoYXIgKgorLXRleHRkb21haW4gKGRvbWFpbm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLXsKKy0gIG5sX2NhdGQgbmV3X2NhdGFsb2c7CistICBjaGFyICpuZXdfbmFtZTsKKy0gIHNpemVfdCBuZXdfbmFtZV9sZW47CistICBjaGFyICpsYW5nOworLQorLSNpZiBkZWZpbmVkIEhBVkVfU0VUTE9DQUxFICYmIGRlZmluZWQgSEFWRV9MQ19NRVNTQUdFUyBcCistICAgICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAorLSAgbGFuZyA9IHNldGxvY2FsZSAoTENfTUVTU0FHRVMsIE5VTEwpOworLSNlbHNlCistICBsYW5nID0gZ2V0ZW52ICgiTENfQUxMIik7CistICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKKy0gICAgeworLSAgICAgIGxhbmcgPSBnZXRlbnYgKCJMQ19NRVNTQUdFUyIpOworLSAgICAgIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQorLQlsYW5nID0gZ2V0ZW52ICgiTEFORyIpOworLSAgICB9CistI2VuZGlmCistICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKKy0gICAgbGFuZyA9ICJDIjsKKy0KKy0gIC8qIFNlZSB3aGV0aGVyIG5hbWUgb2YgY3VycmVudGx5IHVzZWQgZG9tYWluIGlzIGFza2VkLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7CistCistICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnKQorLSAgICBkb21haW5uYW1lID0gZGVmYXVsdF9jYXRhbG9nX25hbWU7CistCistICAvKiBDb21wdXRlIGxlbmd0aCBvZiBhZGRlZCBwYXRoIGVsZW1lbnQuICAqLworLSAgbmV3X25hbWVfbGVuID0gc2l6ZW9mIChMT0NBTEVESVIpIC0gMSArIDEgKyBzdHJsZW4gKGxhbmcpCistCQkgKyBzaXplb2YgKCIvTENfTUVTU0FHRVMvIikgLSAxICsgc2l6ZW9mIChQQUNLQUdFKSAtIDEKKy0JCSArIHNpemVvZiAoIi5jYXQiKTsKKy0KKy0gIG5ld19uYW1lID0gKGNoYXIgKikgbWFsbG9jIChuZXdfbmFtZV9sZW4pOworLSAgaWYgKG5ld19uYW1lID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgc3RyY3B5IChuZXdfbmFtZSwgUEFDS0FHRSk7CistICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKKy0KKy0gIGlmIChuZXdfY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCistICAgIHsKKy0gICAgICAvKiBOTFNQQVRIIHNlYXJjaCBkaWRuJ3Qgd29yaywgdHJ5IGFic29sdXRlIHBhdGggKi8KKy0gICAgICBzcHJpbnRmIChuZXdfbmFtZSwgIiVzLyVzL0xDX01FU1NBR0VTLyVzLmNhdCIsIExPQ0FMRURJUiwgbGFuZywKKy0JICAgICAgIFBBQ0tBR0UpOworLSAgICAgIG5ld19jYXRhbG9nID0gY2F0b3BlbiAobmV3X25hbWUsIDApOworLQorLSAgICAgIGlmIChuZXdfY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCistCXsKKy0JICBmcmVlIChuZXdfbmFtZSk7CistCSAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKKy0JfQorLSAgICB9CistCistICAvKiBDbG9zZSBvbGQgY2F0YWxvZy4gICovCistICBpZiAoY2F0YWxvZyAhPSAobmxfY2F0ZCkgLTEpCistICAgIGNhdGNsb3NlIChjYXRhbG9nKTsKKy0gIGlmIChjYXRhbG9nX25hbWUgIT0gZGVmYXVsdF9jYXRhbG9nX25hbWUpCistICAgIGZyZWUgKChjaGFyICopIGNhdGFsb2dfbmFtZSk7CistCistICBjYXRhbG9nID0gbmV3X2NhdGFsb2c7CistICBjYXRhbG9nX25hbWUgPSBuZXdfbmFtZTsKKy0KKy0gIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7CistfQorLQorLWNoYXIgKgorLWJpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7CisteworLSNpZiBIQVZFX1NFVEVOViB8fCBIQVZFX1BVVEVOVgorLSAgY2hhciAqb2xkX3ZhbCwgKm5ld192YWwsICpjcDsKKy0gIHNpemVfdCBuZXdfdmFsX2xlbjsKKy0KKy0gIC8qIFRoaXMgZG9lcyBub3QgbWFrZSBtdWNoIHNlbnNlIGhlcmUgYnV0IHRvIGJlIGNvbXBhdGlibGUgZG8gaXQuICAqLworLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICAvKiBDb21wdXRlIGxlbmd0aCBvZiBhZGRlZCBwYXRoIGVsZW1lbnQuICBJZiB3ZSB1c2Ugc2V0ZW52IHdlIGRvbid0IG5lZWQKKy0gICAgIHRoZSBmaXJzdCBieXRzIGZvciBOTFNQQVRIPSwgYnV0IHdoeSBjb21wbGljYXRlIHRoZSBjb2RlIGZvciB0aGlzCistICAgICBwZWFudXRzLiAgKi8KKy0gIG5ld192YWxfbGVuID0gc2l6ZW9mICgiTkxTUEFUSD0iKSAtIDEgKyBzdHJsZW4gKGRpcm5hbWUpCistCQkrIHNpemVvZiAoIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKKy0KKy0gIG9sZF92YWwgPSBnZXRlbnYgKCJOTFNQQVRIIik7CistICBpZiAob2xkX3ZhbCA9PSBOVUxMIHx8IG9sZF92YWxbMF0gPT0gJ1wwJykKKy0gICAgeworLSAgICAgIG9sZF92YWwgPSBOVUxMOworLSAgICAgIG5ld192YWxfbGVuICs9IDEgKyBzaXplb2YgKExPQ0FMRURJUikgLSAxCistCSAgICAgICAgICAgICArIHNpemVvZiAoIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKKy0gICAgfQorLSAgZWxzZQorLSAgICBuZXdfdmFsX2xlbiArPSBzdHJsZW4gKG9sZF92YWwpOworLQorLSAgbmV3X3ZhbCA9IChjaGFyICopIG1hbGxvYyAobmV3X3ZhbF9sZW4pOworLSAgaWYgKG5ld192YWwgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistIyBpZiBIQVZFX1NFVEVOVgorLSAgY3AgPSBuZXdfdmFsOworLSMgZWxzZQorLSAgY3AgPSBzdHBjcHkgKG5ld192YWwsICJOTFNQQVRIPSIpOworLSMgZW5kaWYKKy0KKy0gIGNwID0gc3RwY3B5IChjcCwgZGlybmFtZSk7CistICBjcCA9IHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0OiIpOworLQorLSAgaWYgKG9sZF92YWwgPT0gTlVMTCkKKy0gICAgeworLSMgaWYgX19TVERDX18KKy0gICAgICBzdHBjcHkgKGNwLCBMT0NBTEVESVIgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKKy0jIGVsc2UKKy0KKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIExPQ0FMRURJUik7CistICAgICAgc3RwY3B5IChjcCwgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKKy0jIGVuZGlmCistICAgIH0KKy0gIGVsc2UKKy0gICAgc3RwY3B5IChjcCwgb2xkX3ZhbCk7CistCistIyBpZiBIQVZFX1NFVEVOVgorLSAgc2V0ZW52ICgiTkxTUEFUSCIsIG5ld192YWwsIDEpOworLSAgZnJlZSAobmV3X3ZhbCk7CistIyBlbHNlCistICBwdXRlbnYgKG5ld192YWwpOworLSAgLyogRG8gKm5vdCogZnJlZSB0aGUgZW52aXJvbm1lbnQgZW50cnkgd2UganVzdCBlbnRlcmVkLiAgSXQgaXMgdXNlZAorLSAgICAgZnJvbSBub3cgb24uICAgKi8KKy0jIGVuZGlmCistCistI2VuZGlmCistCistICByZXR1cm4gKGNoYXIgKikgZG9tYWlubmFtZTsKKy19CistCistI3VuZGVmIGdldHRleHQKKy1jaGFyICoKKy1nZXR0ZXh0IChtc2cpCistICAgICBjb25zdCBjaGFyICptc2c7CisteworLSAgaW50IG1zZ2lkOworLQorLSAgaWYgKG1zZyA9PSBOVUxMIHx8IGNhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQorLSAgICByZXR1cm4gKGNoYXIgKikgbXNnOworLQorLSAgLyogR2V0IHRoZSBtZXNzYWdlIGZyb20gdGhlIGNhdGFsb2cuICBXZSBhbHdheXMgdXNlIHNldCBudW1iZXIgMS4KKy0gICAgIFRoZSBtZXNzYWdlIElEIGlzIGNvbXB1dGVkIGJ5IHRoZSBmdW5jdGlvbiBgbXNnX3RvX2NhdF9pZCcKKy0gICAgIHdoaWNoIHdvcmtzIG9uIHRoZSB0YWJsZSBnZW5lcmF0ZWQgYnkgYHBvLXRvLXRibCcuICAqLworLSAgbXNnaWQgPSBtc2dfdG9fY2F0X2lkIChtc2cpOworLSAgaWYgKG1zZ2lkID09IC0xKQorLSAgICByZXR1cm4gKGNoYXIgKikgbXNnOworLQorLSAgcmV0dXJuIGNhdGdldHMgKGNhdGFsb2csIDEsIG1zZ2lkLCAoY2hhciAqKSBtc2cpOworLX0KKy0KKy0vKiBMb29rIHRocm91Z2ggdGhlIHRhYmxlIGBfbXNnX3RibCcgd2hpY2ggaGFzIGBfbXNnX3RibF9sZW5ndGgnIGVudHJpZXMKKy0gICBmb3IgdGhlIG9uZSBlcXVhbCB0byBtc2cuICBJZiBpdCBpcyBmb3VuZCByZXR1cm4gdGhlIElELiAgSW4gY2FzZSB3aGVuCistICAgdGhlIHN0cmluZyBpcyBub3QgZm91bmQgcmV0dXJuIC0xLiAgKi8KKy1zdGF0aWMgaW50CistbXNnX3RvX2NhdF9pZCAobXNnKQorLSAgICAgY29uc3QgY2hhciAqbXNnOworLXsKKy0gIGludCBjbnQ7CistCistICBmb3IgKGNudCA9IDA7IGNudCA8IF9tc2dfdGJsX2xlbmd0aDsgKytjbnQpCistICAgIGlmIChzdHJjbXAgKG1zZywgX21zZ190YmxbY250XS5fbXNnKSA9PSAwKQorLSAgICAgIHJldHVybiBfbXNnX3RibFtjbnRdLl9tc2dfbnVtYmVyOworLQorLSAgcmV0dXJuIC0xOworLX0KKy0KKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQorLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCistICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKKy0gICB0byBiZSBkZWZpbmVkLiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICoKKy1zdHBjcHkgKGRlc3QsIHNyYykKKy0gICAgIGNoYXIgKmRlc3Q7CistICAgICBjb25zdCBjaGFyICpzcmM7CisteworLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQorLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7CistICByZXR1cm4gZGVzdCAtIDE7CistfQorLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nIGxyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCTE5OTgtMDQtMjYgMTQ6MjI6MzUuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTAyMiArMCwwIEBACistMTk5Ny0wOS0wNiAwMjoxMCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogaW50bGguaW5zdC5pbjogUmVmb3JtYXQgY29weXJpZ2h0LgorLQorLTE5OTctMDgtMTkgMTU6MjIgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBSZW1vdmUgd3JvbmcgY29tbWVudC4KKy0KKy0xOTk3LTA4LTE2IDAwOjEzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kYXRhKTogRG9uJ3QgY2hhbmdlIGRpcmVjdG9yeSB0byBpbnN0YWxsLgorLQorLTE5OTctMDgtMDEgMTQ6MzAgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGNhdC1jb21wYXQuYzogRml4IGNvcHlyaWdodC4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jOiBEb24ndCBkZWZpbmUgc3RyY2hyIHVubGVzcyAhSEFWRV9TVFJDSFIuCistCistCSogbG9hZG1zZ2NhdC5jOiBVcGRhdGUgY29weXJpZ2h0LiAgRml4IHR5cG9zLgorLQorLQkqIGwxMG5mbGlzdC5jOiBEb24ndCBkZWZpbmUgc3RyY2hyIHVubGVzcyAhSEFWRV9TVFJDSFIuCistCShfbmxfbWFrZV9sMTBuZmxpc3QpOiBIYW5kbGUgc3BvbnNvciBhbmQgcmV2aXNpb24gY29ycmVjdGx5LgorLQorLQkqIGdldHRleHQuYzogVXBkYXRlIGNvcHlyaWdodC4KKy0JKiBnZXR0ZXh0Lmg6IExpa2V3aXNlLgorLQkqIGhhc2gtc3RyaW5nLmg6IExpa2V3aXNlLgorLQorLQkqIGZpbmRkb21haW4uYzogUmVtb2F2ZSBkZWFkIGNvZGUuICBEZWZpbmUgc3RyY2hyIG9ubHkgaWYKKy0JIUhBVkVfU1RSQ0hSLgorLQorLQkqIGV4cGxvZGVuYW1lLmM6IEluY2x1ZGUgPHN5cy90eXBlcy5oPi4KKy0KKy0JKiBleHBsb2RlbmFtZS5jOiBSZWZvcm1hdCBjb3B5cmlnaHQgdGV4dC4KKy0JKF9ubF9leHBsb2RlX25hbWUpOiBGaXggdHlwby4KKy0KKy0JKiBkY2dldHRleHQuYzogRGVmaW5lIGFuZCB1c2UgX19zZXRfZXJybm8uCistCShndWVzc19jYXRlZ29yeV92YWx1ZSk6IERvbid0IHVzZSBzZXRsb2NhbGUgaWYgSEFWRV9MQ19NRVNTQUdFUyBpcworLQlub3QgZGVmaW5lZC4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBQcmV0dHkgcHJpbnRpbmcuCistCistMTk5Ny0wNS0wMSAwMjoyNSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogZGNnZXR0ZXh0LmMgKGd1ZXNzX2NhdGVnb3J5X3ZhbHVlKTogRG9uJ3QgZGVwZW5kIG9uCistCUhBVkVfTENfTUVTU0FHRVMuICBXZSBkb24ndCBuZWVkIHRoZSBtYWNybyBoZXJlLgorLQlQYXRjaCBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBpbG9nLmZyPi4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKHRleHRkb21haW4pOiBEb04ndCByZWZlciB0byBIQVZFX1NFVExPQ0FMRV9OVUxMCistCW1hY3JvLiAgSW5zdGVhZCB1c2UgSEFWRV9MT0NBTEVfTlVMTCBhbmQgZGVmaW5lIGl0IHdoZW4gdXNpbmcKKy0JZ2xpYmMsIGFzIGluIGRjZ2V0dGV4dC5jLgorLQlQYXRjaCBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBpbG9nLmZyPi4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoQ1BQRkxBR1MpOiBOZXcgdmFyaWFibGUuICBSZXBvcnRlZCBieSBGcmFuYyxvaXMKKy0JUGluYXJkLgorLQorLU1vbiBNYXIgMTAgMDY6NTE6MTcgMTk5NyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW46IEltcGxlbWVudCBoYW5kbGluZyBvZiBsaWJ0b29sLgorLQorLQkqIGdldHRleHRQLmg6IENoYW5nZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHVzZSBvZiBnZW5lcmljIGxvd2xldmVsCistCWkxOG4gZmlsZSBoYW5kbGluZy4KKy0KKy1XZWQgRGVjICA0IDIwOjIxOjE4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIHRleHRkb21haW4uYzogUHV0IHBhcmVudGhlc2VzIGFyb3VuZCBhcmd1bWVudHMgb2YgbWVtY3B5IG1hY3JvCistCWRlZmluaXRpb24uCistCSogbG9jYWxlYWxpYXMuYzogTGlrZXdpc2UuCistCSogbDEwbmZsaXN0LmM6IExpa2V3aXNlLgorLQkqIGZpbmRkb21haW4uYzogTGlrZXdpc2UuCistCSogYmluZHRleHRkb20uYzogTGlrZXdpc2UuCistCVJlcG9ydGVkIGJ5IFRob21hcyBFc2tlbi4KKy0KKy1Nb24gTm92IDI1IDIyOjU3OjUxIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIHRleHRkb21haW4uYzogTW92ZSBkZWZpbml0aW9uIG9mIGBtZW1jcHlgIG1hY3JvIHRvIHJpZ2h0CistCXBvc2l0aW9uLgorLQorLUZyaSBOb3YgMjIgMDQ6MDE6NTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogZmluZGRvbWFpbi5jIFshSEFWRV9TVFJJTkdfSCAmJiAhX0xJQkNdOiBEZWZpbmUgbWVtY3B5IHVzaW5nCistIAliY29weSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLiAgUmVwb3J0ZWQgYnkgVGhvbWFzIEVza2VuLgorLQkqIGJpbmR0ZXh0ZG9tLmM6IExpa2V3aXNlLgorLQkqIGwxMG5mbGlzdC5jOiBMaWtld2lzZS4KKy0JKiBsb2NhbGVhbGlhcy5jOiBMaWtld2lzZS4KKy0JKiB0ZXh0ZG9tYWluLmM6IExpa2V3aXNlLgorLQorLVR1ZSBPY3QgMjkgMTE6MTA6MjcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGxpYmRpcik6IENoYW5nZSB0byB1c2UgZXhlY19wcmVmaXggaW5zdGVhZCBvZgorLSAJcHJlZml4LiAgUmVwb3J0ZWQgYnkgS251dC1I5XZhcmRBa3NuZXMgPGV0b2tuYUBldG8uZXJpY3Nzb24uc2U+LgorLQorLVNhdCBBdWcgMzEgMDM6MDc6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmMgKF9ubF9ub3JtYWxpemVfY29kZXNldCk6IFdlIGNvbnZlcnQgdG8gbG93ZXIgY2FzZSwKKy0Jc28gZG9uJ3QgcHJlcGVuZCB1cHBlcmNhc2UgYElTTycgZm9yIG9ubHkgbnVtZXJpYyBhcmcuCistCistRnJpIEp1bCAxOSAwMDoxNTo0NiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYzogTW92ZSBpbmNsdXNpb24gb2YgYXJnei5oLCBjdHlwZS5oLCBzdGRsaWIuaCBhZnRlcgorLQlkZWZpbml0aW9uIG9mIF9HTlVfU09VUkNFLiAgUGF0Y2ggYnkgUm9sYW5kIE1jR3JhdGguCistCistCSogTWFrZWZpbGUuaW4gKHVuaW5zdGFsbCk6IEZpeCBhbm90aGVyIGJ1ZyB3aXRoIGBmb3InIGxvb3AgYW5kCistCWVtcHR5IGFyZ3VtZW50cy4gIFBhdGNoIGJ5IEppbSBNZXllcmluZy4gIENvcnJlY3QgbmFtZSBvcworLQl1bmluc3RhbGxlZCBmaWxlczogbm8gaW50bC0gcHJlZml4IGFueW1vcmUuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZGF0YSk6IEFnYWluIHdvcmsgYXJvdW5kIHNoZWxscyB3aGljaAorLQljYW5ub3QgaGFuZGxlIG1wdHkgZm9yIGxpc3QuICBSZXBvcnRlZCBieSBKaW0gTWV5ZXJpbmcuCistCistU2F0IEp1bCAxMyAxODoxMTozNSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFNwbGl0IGdvYWwuICBOb3cgZGVwZW5kIG9uIGluc3RhbGwtZXhlYworLSAgICAgICAgYW5kIGluc3RhbGwtZGF0YS4KKy0JKGluc3RhbGwtZXhlYywgaW5zdGFsbC1kYXRhKTogTmV3IGdvYWxzLiAgQ3JlYXRlZCBmcm9tIGZvcm1lcgorLQlpbnN0YWxsIGdvYWwuCistCVJlcG9ydGVkIGJ5IEthcmwgQmVycnkuCistCistU2F0IEp1biAyMiAwNDo1ODoxNCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoTUtJTlNUQUxMRElSUyk6IE5ldyB2YXJpYWJsZS4gIFBhdGggdG8KKy0gICAgICAgIG1raW5zdGFsbGRpcnMgc2NyaXB0LgorLQkoaW5zdGFsbCk6IHVzZSBNS0lOU1RBTExESVJTIHZhcmlhYmxlIG9yIGlmIHRoZSBzY3JpcHQgaXMgbm90IHByZXNlbnQKKy0JdHJ5IHRvIGZpbmQgaXQgaW4gdGhlICR0b3Bfc2NyZGlyKS4KKy0KKy1XZWQgSnVuIDE5IDAyOjU2OjU2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jOiBMaW51eCBsaWJjICpwYXJ0bHkqIGluY2x1ZGVzIHRoZSBhcmd6XyogZnVuY3Rpb25zLgorLQlHcnIuICBXb3JrIGFyb3VuZCBieSByZW5hbWluZyB0aGUgc3RhdGljIHZlcnNpb24gYW5kIHVzZSBtYWNyb3MKKy0JZm9yIHJlbmFtaW5nLgorLQorLVR1ZSBKdW4gMTggMjA6MTE6MTcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmM6IENvcnJlY3QgcHJlc2VuY2UgdGVzdCBtYWNyb3Mgb2YgX19hcmd6XyogZnVuY3Rpb25zLgorLQorLQkqIGwxMG5mbGlzdC5jOiBJbmNsdWRlIDxhcmd6Lmg+IGJhc2VkIG9uIHRlc3Qgb2YgaXQgaW5zdGVhZCB3aGVuCistCV9fYXJnel8qIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlLgorLQlSZXBvcnRlZCBieSBBbmRyZWFzIFNjaHdhYi4KKy0KKy1UaHUgSnVuIDEzIDE1OjE3OjQ0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGV4cGxvZGVuYW1lLmMsIGwxMG5mbGlzdC5jOiBEZWZpbmUgTlVMTCBmb3IgZHVtYiBzeXN0ZW1zLgorLQorLVR1ZSBKdW4gMTEgMTc6MDU6MTMgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogaW50bGguaW5zdC5pbiwgbGliZ2V0dGV4dC5oIChkY2dldHRleHQpOiBSZW5hbWUgbG9jYWwgdmFyaWFibGUKKy0JcmVzdWx0IHRvIF9fcmVzdWx0IHRvIHByZXZlbnQgbmFtZSBjbGFzaC4KKy0KKy0JKiBsMTBuZmxpc3QuYywgbG9jYWxlYWxpYXMuYywgZGNnZXR0ZXh0LmM6IERlZmluZSBfR05VX1NPVVJDRSB0bworLSAgICAgICAgZ2V0IHByb3RvdHlwZSBmb3Igc3RwY3B5IGFuZCBzdHJjYXNlY21wLgorLQorLQkqIGludGxoLmluc3QuaW4sIGxpYmdldHRleHQuaDogTW92ZSBkZWNsYXJhdGlvbiBvZgorLQlgX25sX21zZ19jYXRfY250cicgb3V0c2lkZSBfX2V4dGVuc2lvbl9fIGJsb2NrIHRvIHByZXZlbnQgd2FybmluZworLQlmcm9tIGdjYydzIC1XbmVzdGVkLWV4dGVybiBvcHRpb24uCistCistRnJpIEp1biAgNyAwMTo1ODowMCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFJlbW92ZSBjb21tZW50LgorLQorLVRodSBKdW4gIDYgMTc6Mjg6MTcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBXb3JrIGFyb3VuZCBmb3IgYW5vdGhlciBCdWdsaXggc3R1cGlkaXR5LgorLQlBbHdheXMgdXNlIGFuIGBlbHNlJyBjbG9zZSBmb3IgYGlmJ3MuICBSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCistCistCSogTWFrZWZpbGUuaW4gKGludGxoLmluc3QpOiBDb3JyZWN0IHR5cG8gaW4gcGhvbnkgcnVsZS4KKy0JUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLVRodSBKdW4gIDYgMDE6NDk6NTIgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogZGNnZXR0ZXh0LmMgKHJlYWRfYWxpYXNfZmlsZSk6IFJlbmFtZSB2YXJpYWJsZSBhbGxvY2FfbGlzdCB0bworLQlibG9ja19saXN0IGFzIHRoZSBtYWNybyBjYWxscyBhc3N1bWUuCistCVBhdGNoIGJ5IEVyaWMgQmFja3VzLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgWyFIQVZFX0FMTE9DQV06IERlZmluZSBhbGxvY2EgYXMgbWFjcm8gdXNpbmcKKy0gICAgICAgIG1hbGxvYy4KKy0JKHJlYWRfYWxpYXNfZmlsZSk6IFJlbmFtZSB2YXJyaWFiZSBhbGxvY2FfbGlzdCB0byBibG9ja19saXN0IGFzIHRoZQorLQltYWNybyBjYWxscyBhc3N1bWUuCistCVBhdGNoIGJ5IEVyaWMgQmFja3VzLgorLQorLQkqIGwxMG5mbGlzdC5jOiBDb3JyZWN0IGNvbmRpdGlvbmFsIGZvciA8YXJnei5oPiBpbmNsdXNpb24uCistCVJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwpOiBEZXBlbmQgb24gYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAsIG5vdAorLSAgICAgICAgYWxsLUBVU0VfTkxTQC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IGludGxoLmluc3QgY29tZXMgZnJvbSBsb2NhbCBkaXIsIG5vdAorLSAgICAgICAgJChzcmNkaXIpLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnRsaC5pbnN0KTogU3BlY2lhbCBoYW5kbGluZyBvZiB0aGlzIGdvYWwuICBJZgorLQl1c2VkIGluIGdldHRleHQsIHRoaXMgaXMgcmVhbGx5IGEgcnVsIHRvIGNvbnN0cnVjdCB0aGlzIGZpbGUuICBJZgorLQl1c2VkIGluIGFueSBvdGhlciBwYWNrYWdlIGl0IGlzIGRlZmluZWQgYXMgYSAuUEhPTlkgcnVsZSB3aXRoCistCWVtcHR5IGJvZHkuCistCistCSogZmluZGRvbWFpbi5jOiBFeHRyYWN0IGxvY2FsZSBmaWxlIGluZm9ybWF0aW9uIGhhbmRsaW5nIGludG8KKy0JbDEwbmZpbGUuYy4gIFJlbmFtZSBsb2NhbCBzdHBjcHlfXyBmdW5jdGlvbiB0byBzdHBjcHkuCistCistCSogZGNnZXR0ZXh0LmMgKHN0cGNweSk6IEFkZCBsb2NhbCBkZWZpbml0aW9uLgorLQorLQkqIGwxMG5mbGlzdC5jOiBTb2x2ZSBzb21lIHBvcnRhYmlsaXR5IHByb2JsZW1zLiAgUGF0Y2hlcyBwYXJ0bHkgYnkKKy0JVGhvbWFzIEVza2VuLiAgQWRkIGxvY2FsIGRlZmluaXRpb24gb2Ygc3RwY3B5LgorLQorLVR1ZSBKdW4gIDQgMDI6NDc6NDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogaW50bGguaW5zdC5pbjogRG9uJ3QgZGVwZW5kIGluY2x1ZGluZyA8bG9jYWxlLmg+IG9uCistCUhBVkVfTE9DQUxFX0guICBJbnN0ZWFkIGNvbmZpZ3VyZSBtdXN0IHJld3JpdGUgdGhpcyBmaWlsZQorLQlkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJlIHJ1bi4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IGxpYmludGwuaW5zdCBpcyBub3cgY2FsbGVkIGludGxoLmluc3QuCistCUFkZCBydWxlcyBmb3IgdXBkYXRpbmcgaW50bGguaW5zdCBmcm9tIGludGxoLmluc3QuaW4uCistCistCSogbGliaW50bC5pbnN0OiBSZW5hbWVkIHRvIGludGxoLmluc3QuaW4uCistCistCSogbG9jYWxlYWxpYXMuYywgZGNnZXR0ZXh0LmMgW19fR05VQ19fXTogRGVmaW5lIEhBVkVfQUxMT0NBIHRvIDEKKy0gICAgICAgIGJlY2F1c2UgZ2NjIGhhcyBfX2J1aXRsaW5fYWxsb2NhLgorLQlSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy1Nb24gSnVuICAzIDAwOjMyOjE2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsY2hlY2spOiBOZXcgZ29hbCB0byBmdWxmaWxsIG5lZWRzIG9mCistICAgICAgICBhdXRvbWFrZSdzIGRpc3RjaGVjay4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFJlb3JkZXIgY29tbWFuZHMgc28gdGhhdCBWRVJTSU9OIGlzCistICAgICAgICBmb3VuZC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6IE5vdyB1c2Ugc3ViZGlyZWN0b3J5IGludGwvIGluCistICAgICAgICBAZGF0YWRpckAvZ2V0dGV4dC4KKy0JKENPTVNSQ1MpOiBBZGQgbDEwbmZpbGUuYy4KKy0JKE9CSkVDVFMpOiBBZGQgbDEwbmZpbGUuby4KKy0JKERJU1RGSUxFUyk6IFJlbmFtZSB0byBESVNURklMRS5ub3JtYWwuICBSZW1vdmUgJChESVNURklMRVMuY29tbW9uKS4KKy0JKERJU1RGSUxFLmdldHRleHQpOiBSZW1vdmUgJChESVNURklMRVMuY29tbW9uKS4KKy0JKGFsbC1nZXR0ZXh0KTogUmVtb3ZlIGdvYWwuCistCShpbnN0YWxsKTogSWYgJChQQUNLQUdFKSA9IGdldHRleHQgaW5zdGFsbCwgb3RoZXJ3b3NlIGRvIG5vdGhpbmcuICBObworLQlwYWNrYWdlIGJ1dCBnZXR0ZXh0IGl0c2VsZiBzaG91bGQgaW5zdGFsbCBsaWJpbnRsLmggKyBoZWFkZXJzLgorLQkoZGlzdCk6IEV4dGVuZCBnb2FsIHRvIHdvcmsgZm9yIGdldHRleHQsIHRvby4KKy0JKGRpc3QtZ2V0dGV4dCk6IFJlbW92ZSBnb2FsLgorLQorLQkqIGRjZ2V0dGV4dC5jIFshSEFWRV9BTExPQ0FdOiBEZWZpbmUgbWFjcm8gYWxsb2NhIGJ5IHVzaW5nIG1hbGxvYy4KKy0KKy1TdW4gSnVuICAyIDE3OjMzOjA2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKTogUGFyYW1ldGVyIGlzIG5vdyBjb21lcyBmcm9tCistICAgICAgICBmaW5kX2wxMG5maWxlLgorLQorLVNhdCBKdW4gIDEgMDI6MjM6MDMgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmMgKF9fYXJnel9uZXh0KTogQWRkIGRlZmluaXRpb24uCistCistCSogZGNnZXR0ZXh0LmMgWyFIQVZFX0FMTE9DQV06IEFkZCBjb2RlIGZvciBoYW5kbGluZyBtaXNzaW5nIGFsbG9jYQorLQljb2RlLiAgVXNlIG5ldyBsMTBuZmlsZSBoYW5kbGluZy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIFshSEFWRV9BTExPQ0FdOiBBZGQgY29kZSBmb3IgaGFuZGxpbmcgbWlzc2luZworLSAgICAgICAgYWxsb2NhIGNvZGUuCistCistCSogbDEwbmZsaXN0LmM6IEluaXRpYWwgcmV2aXNpb24uCistCistVHVlIEFwciAgMiAxODo1MToxOCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwtZ2V0dGV4dCk6IE5ldyBnb2FsLiAgU2FtZSBhcyBhbGwteWVzLgorLQorLVRodSBNYXIgMjggMjM6MDE6MjIgMTk5NiAgS2FybCBFaWNod2FsZGVyICA8a2VAa2UuY2VudHJhbC5kZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6IERlZmluZSB1c2luZyBAZGF0YWRpckAuCistCistVHVlIE1hciAyNiAxMjozOToxNCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYzogSW5jbHVkZSA8Y3R5cGUuaD4uICBSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy1TYXQgTWFyIDIzIDAyOjAwOjM1IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOiBSZW5hbWUgdG8gc3RwY3B5X18gdG8gcHJldmVudCBjbGFzaGluZworLSAgICAgICAgd2l0aCBleHRlcm5hbCBkZWNsYXJhdGlvbi4KKy0KKy1TYXQgTWFyICAyIDAwOjQ3OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGFsbC1ubyk6IFJlbmFtZSBmcm9tIGFsbF9uby4KKy0KKy1TYXQgRmViIDE3IDAwOjI1OjU5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZ2V0dGV4dFAuaCBbbG9hZGVkX2RvbWFpbl06IEFycmF5IGBzdWNjZXNzb3InIG11c3Qgbm93IGNvbnRhaW4gdXAKKy0gICAgICAgIHRvIDYzIGVsZW1lbnRzIChiZWNhdXNlIG9mIGNvZGVzZXQgbmFtZSBub3JtYWxpemF0aW9uKS4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEltcGxlbWVudCBjb2Rlc2V0IG5hbWUgbm9ybWFsaXphdGlvbi4KKy0KKy1UaHUgRmViIDE1IDA0OjM5OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlZmluZSB0byBgYWxsLUBVU0VfTkxTQCcuCistCShhbGwteWVzLCBhbGxfbm8pOiBOZXcgZ29hbHMuICBgYWxsLW5vJyBpcyBub29wLCBgYWxsLXllcycKKy0JaXMgZm9ybWVyIGFsbC4KKy0KKy1Nb24gSmFuIDE1IDIxOjQ2OjAxIDE5OTYgIEhvd2FyZCBHYXlsZSAgPGhvd2FyZEBoYWwuY29tPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOiBJbmNyZW1lbnQgc3RyaW5nIHBvaW50ZXJzIGluIGxvb3AKKy0gICAgICAgIG9mIHN0cmNhc2VjbXAgcmVwbGFjZW1lbnQuCistCistRnJpIERlYyAyOSAyMToxNjozNCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IFdobyBjb21tZW50ZWQgdGhpcyBnb2FsIG91dCA/IDotKQorLQorLUZyaSBEZWMgMjkgMTU6MDg6MTYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogU2F2ZSBgZXJybm8nLiAgRmFpbGluZyBzeXN0ZW0gY2FsbHMKKy0Jc2hvdWxkIG5vdCBlZmZlY3QgaXQgYmVjYXVzZSBhIG1pc3NpbmcgY2F0YWxvZyBpcyBubyBlcnJvci4KKy0JUmVwb3J0ZWQgYnkgSGFyYWxkIEs8bzo+bmlnIDxrb2VuaWdAdGF0LnBoeXNpay51bmktdHVlYmluZ2VuLmRlPi4KKy0KKy1UdWUgRGVjIDE5IDIyOjA5OjEzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKE1ha2VmaWxlKTogRXhwbGljaXRseSB1c2UgJChTSEVMTCkgZm9yIHJ1bm5pbmcKKy0gICAgICAgIHNoZWxsIHNjcmlwdHMuCistCistRnJpIERlYyAxNSAxNzozNDo1OSAxOTk1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBPbmx5IGluc3RhbGwgbGlicmFyeSBhbmQgaGVhZGVyIHdoZW4KKy0Jd2UgdXNlIHRoZSBvd24gaW1wbGVtZW50YXRpb24uICBEb24ndCBkbyBpdCB3aGVuIHVzaW5nIHRoZQorLQlzeXN0ZW0ncyBnZXR0ZXh0IG9yIGNhdGdldHMgZnVuY3Rpb25zLgorLQorLQkqIGRjZ2V0dGV4dC5jIChmaW5kX21zZyk6IE11c3Qgbm90IHN3YXAgZG9tYWluLT5oYXNoX3NpemUgaGVyZS4KKy0KKy1TYXQgRGVjICA5IDE2OjI0OjM3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYywgbGliaW50bC5pbnN0LCBsaWJnZXR0ZXh0LmgsIGhhc2gtc3RyaW5nLmgsCistCWdldHRleHRQLmgsIGZpbmRkb21haW4uYywgZGNnZXR0ZXh0LmMsIGNhdC1jb21wYXQuYzoKKy0JVXNlIFBBUkFNUyBpbnN0ZWFkIG9mIF9fUC4gIFN1Z2dlc3RlZCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy1UdWUgRGVjICA1IDExOjM5OjE0IDE5OTUgIExhcnJ5IFNjaHdpbW1lciAgPHJvc2VidWRAY3ljbG9uZS5zdGFuZm9yZC5lZHU+CistCistCSogbGliZ2V0dGV4dC5oOiBVc2UgYCNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCknIGluc3RlYWQgb2YgYCNpZgorLQkhX0xJQklOVExfSCcgYmVjYXVzZSBTb2xhcmlzIGRlZmluZXMgX0xJQklOVExfSCBhcyBlbXB0eS4KKy0KKy1Nb24gRGVjICA0IDE1OjQyOjA3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKToKKy0JSW5zdGFsbCBsaWJpbnRsLmluc3QgaW5zdGVhZCBvZiBsaWJpbnRsLmguaW5zdGFsbC4KKy0KKy1TYXQgRGVjICAyIDIyOjUxOjM4IDE5OTUgIE1hcmN1cyBEYW5pZWxzICA8bWFyY3VzQHN5c2MucGR4LmVkdT4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKHRleHRkb21haW4pOgorLQlSZXZlcnNlIG9yZGVyIGluIHdoaWNoIGZpbGVzIGFyZSB0cmllZCB5b3UgbG9hZC4gIEZpcnN0CistCXRyeSBsb2NhbCBmaWxlLCB3aGVuIHRoaXMgZmFpbGVkIGFic29sdXRlIHBhdGguCistCistV2VkIE5vdiAyOSAwMjowMzo1MyAxOTk1ICBOZWxzb24gSC4gRi4gQmVlYmUgIDxiZWViZUBtYXRoLnV0YWguZWR1PgorLQorLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOiBBZGQgbWlzc2luZyB7IH0uCistCistU3VuIE5vdiAyNiAxODoyMTo0MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmludGwuaW5zdDogQWRkIG1pc3NpbmcgX19QIGRlZmluaXRpb24uICBSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCistCistCSogTWFrZWZpbGUuaW46CistCUFkZCBkdW1teSBgYWxsJyBhbmQgYGR2aScgZ29hbHMuICBSZXBvcnRlZCBieSBUb20gVHJvbWV5LgorLQorLVNhdCBOb3YgMjUgMTY6MTI6MDEgMTk5NSAgRnJhbmMsb2lzIFBpbmFyZCAgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPgorLQorLQkqIGhhc2gtc3RyaW5nLmg6IENhcGl0YWxpemUgYXJndW1lbnRzIG9mIG1hY3Jvcy4KKy0KKy1TYXQgTm92IDI1IDEyOjAxOjM2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IFByZXZlbnQgZmlsZXMgbmFtZXMgbG9uZ2VyIHRoYW4gMTMKKy0JY2hhcmFjdGVycy4gIGxpYmludGwuaC5nbGliYy0+bGliaW50bC5nbGliYywKKy0JbGliaW50bC5oLmluc3RhbGwtPmxpYmludGwuaW5zdC4gIFJlcG9ydGVkIGJ5IEpvc2h1YSBSLiBQb3Vsc29uLgorLQorLVNhdCBOb3YgMjUgMTE6MzE6MTIgMTk5NSAgRXJpYyBCYWNrdXMgIDxlcmljYkBsc2lkLmhwLmNvbT4KKy0KKy0JKiBkY2dldHRleHQuYzogRml4IGJ1ZyBpbiBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgorLQorLVNhdCBOb3YgMjUgMDI6MzU6MjcgMTk5NSAgTmVsc29uIEguIEYuIEJlZWJlICA8YmVlYmVAbWF0aC51dGFoLmVkdT4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IFNvbGFyaXMgY2MgZG9lcyBub3QgdW5kZXJzdGFuZAorLQkgI2lmICFTWU1CT0wxICYmICFTWU1CT0wyLiAgU2FkCWJ1dCB0cnVlLgorLQorLVRodSBOb3YgMjMgMTY6MjI6MTQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6CistCUZpeCBmb3IgbWFjaGluZSB3aXRoID4zMiBiaXQgYHVuc2lnbmVkIGxvbmcncy4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKToKKy0JRml4IGhvcnJpYmxlIGJ1ZyBpbiBsb29wIGZvciBhbHRlcm5hdGl2ZSB0cmFuc2xhdGlvbi4KKy0KKy1UaHUgTm92IDIzIDAxOjQ1OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogcG8ydGJsLnNlZC5pbiwgbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDoKKy0JU29tZSBmdXJ0aGVyIHNpbXBsaWZpY2F0aW9ucyBpbiBtZXNzYWdlIG51bWJlciBnZW5lcmF0aW9uLgorLQorLU1vbiBOb3YgMjAgMjE6MDg6NDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJpbnRsLmguZ2xpYmM6IFVzZSBfX2NvbnN0IGluc3RlYWQgb2YgY29uc3QgaW4gcHJvdG90eXBlcy4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOgorLQlJbnN0YWxsIGxpYmludGwuaC5pbnN0YWxsIGluc3RlYWQgb2YgbGliaW50bC5oLiAgVGhpcworLQlpcyBhIHN0cmlwcGVkLWRvd24gdmVyc2lvbi4gIFN1Z2dlc3RlZCBieSBQZXRlciBNaWxsZXIuCistCistCSogbGliaW50bC5oLmluc3RhbGwsIGxpYmludGwuaC5nbGliYzogSW5pdGlhbCByZXZpc2lvbi4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChfbmxfZXhwYW5kX2FsaWFzLCByZWFkX2FsaWFzX2ZpbGUpOgorLQlQcm90ZWN0IHByb3RvdHlwZXMgaW4gdHlwZSBjYXN0cyBieSBfX1AuCistCistVHVlIE5vdiAxNCAxNjo0Mzo1OCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGhhc2gtc3RyaW5nLmg6IENvcnJlY3QgcHJvdG90eXBlIGZvciBoYXNoX3N0cmluZy4KKy0KKy1TdW4gTm92IDEyIDEyOjQyOjMwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOiBBZGQgcHJvdG90eXBlLgorLQorLQkqIGdldHRleHRQLmg6IEZpeCBjb3B5cmlnaHQuCistCShTV0FQKTogQWRkIHByb3RvdHlwZS4KKy0KKy1XZWQgTm92ICA4IDIyOjU2OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKTogRm9yZ290IHNpemVvZi4KKy0JQXZvaWQgY2FsbGluZyAqcHJpbnRmIGZ1bmN0aW9uLiAgVGhpcyBpbnRyb2R1Y2VzIGEgYmlnIG92ZXJoZWFkLgorLQlQYXRjaCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy1UdWUgTm92ICA3IDE0OjIxOjA4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jLCBjYXQtY29tcGF0LmM6IFdyb25nIGluZGVudGF0aW9uIGluICNpZiBmb3Igc3RwY3B5LgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KToKKy0JRGVmaW5lIHN1YnN0aXR1dGlvbiBmdW5jdGlvbiBsb2NhbC4gIFRoZSBtYWNybyB3YXMgdG8gZmxha3kuCistCistCSogY2F0LWNvbXBhdC5jOiBGaXggdHlwby4KKy0KKy0JKiB4b3Blbi1tc2cuc2VkLCBsaW51eC1tc2cuc2VkOgorLQlXaGlsZSBicmluZ2luZyBtZXNzYWdlIG51bWJlciB0byByaWdodCBwbGFjZSBvbmx5IGFjY2VwdCBkaWdpdHMuCistCistCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDogTm93IHRoYXQgdGhlIGNvdW50ZXIgZG9lcyBub3QgaGF2ZQorLQlsZWFkaW5nIDBzIHdlIGRvbid0IG5lZWQgdG8gcmVtb3ZlIHRoZW0uICBSZXBvcnRlZCBieSBNYXJjdXMKKy0JRGFuaWVscy4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoLi4vcG8vY2F0LWlkLXRibC5vKTogVXNlICQodG9wX3NyZGlyKSBpbgorLQlkZXBlbmRlbmN5LiAgUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogY2F0LWNvbXBhdC5jOiAoc3RwY3B5KSBbIV9MSUJDICYmICFIQVZFX1NUUENQWV06IERlZmluZSByZXBsYWNlbWVudC4KKy0JR2VuZXJhbGx5IGNsZWFudXAgdXNpbmcgI2lmIGluc3RlYWQgb2YgI2lmbmRlZi4KKy0KKy0JKiBNYWtlZmlsZS5pbjogQ29ycmVjdCB0eXBvcyBpbiBjb21tZW50LiAgQnkgRnJhbmMsb2lzIFBpbmFyZC4KKy0KKy1Nb24gTm92ICA2IDAwOjI3OjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogRG9uJ3QgaW5zdGFsbCBsaWJpbnRsLmggYW5kIGxpYmludGwuYQorLQlpZiB3ZSB1c2UgYW4gYXZhaWxhYmxlIGdldHRleHQgaW1wbGVtZW50YXRpb24uCistCistU3VuIE5vdiAgNSAyMjowMjowOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmdldHRleHQuaDogRml4IHR5cG86IEhBVkVfQ0FUR0VUVFMgLT4gSEFWRV9DQVRHRVRTLiAgUmVwb3J0ZWQKKy0JYnkgRnJhbmMsb2lzIFBpbmFyZC4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IFVzZSAjaWYgaW5zdGVhZCBvZiAjaWZkZWYvI2lmbmRlZi4KKy0KKy0JKiBmaW5kZG9tYWluLmM6CistCUNvbW1lbnRzIGRlc2NyaWJpbmcgd2hhdCBoYXMgdG8gYmUgZG9uZSBzaG91bGQgc3RhcnQgd2l0aCBGSVhNRS4KKy0KKy1TdW4gTm92ICA1IDE5OjM4OjAxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IFNwbGl0LiAgVXNlIERJU1RGSUxFUyB3aXRoIG5vcm1hbCBtZWFuaW5nLgorLQlESVNURklMRVMuY29tbW9uIG5hbWVzIHRoZSBmaWxlcyBjb21tb24gdG8gYm90aCBkaXN0IGdvYWxzLgorLQlESVNURklMRVMuZ2V0dGV4dCBhcmUgdGhlIGZpbGVzIG9ubHkgZGlzdHJpYnV0ZWQgaW4gR05VIGdldHRleHQuCistCistU3VuIE5vdiAgNSAxNzozMjo1NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBDb3JyZWN0IHNlYXJjaGluZyBpbiBkZXJpdmVkIGxvY2FsZXMuCistCVRoaXMgd2FzIG5lY2Vzc2FyeSBzaW5jZSBhIGNoYW5nZSBpbiBfbmxfZmluZF9tc2cgc2V2ZXJhbCB3ZWVrcworLQlhZ28uICBJIHJlYWxseSBkb24ndCBrbm93IHRoaXMgaXMgc3RpbGwgbm90IGZpeGVkLgorLQorLVN1biBOb3YgIDUgMTI6NDM6MTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6IFRlc3QgZm9yIEZJTEVOQU1FID09IE5VTEwuICBUaGlzCistCW1pZ2h0IG1hcmsgYSBzcGVjaWFsIGNvbmRpdGlvbi4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKG1ha2VfZW50cnlfcmVjKTogRG9uJ3QgbWFrZSBpbGxlZ2FsIGVudHJ5IGFzIGRlY2lkZWQuCistCistCSogTWFrZWZpbGUuaW4gKGRpc3QpOiBTdXBwcmVzcyBlcnJvciBtZXNzYWdlIHdoZW4gbG4gZmFpbGVkLgorLQlHZXQgZmlsZXMgZnJvbSAkKHNyY2RpcikgZXhwbGljaXRseS4KKy0KKy0JKiBsaWJnZXR0ZXh0LmggKGdldHRleHRfY29uc3QpOiBSZW5hbWUgdG8gZ2V0dGV4dF9ub29wLgorLQorLUZyaSBOb3YgIDMgMDc6MzY6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKG1ha2VfZW50cnlfcmVjKToKKy0JUHJvdGVjdCBhZ2FpbnN0IHdyb25nIGxvY2FsZSBuYW1lcyBieSB0ZXN0aW5nIG1hc2suCistCistCSogbGliZ2V0dGV4dC5oIChnZXR0ZXh0X2NvbnN0KTogQWRkIG1hY3JvIGRlZmluaXRpb24uCistCUNhcGl0YWxpemUgbWFjcm8gYXJndW1lbnRzLgorLQorLVRodSBOb3YgIDIgMjM6MTU6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCVRlc3QgZm9yIHBvaW50ZXIgIT0gTlVMTCBiZWZvcmUgYWNjZXNzaW5nIHZhbHVlLgorLQlSZXBvcnRlZCBieSBUb20gVHJvbWV5LgorLQorLQkqIGdldHRleHQuYyAoTlVMTCk6CistCURlZmluZSBhcyAodm9pZCopMCBpbnN0YWQgb2YgMC4gIFJlcG9ydGVkIGJ5IEZyYW5jLG9pcyBQaW5hcmQuCistCistTW9uIE9jdCAzMCAyMToyODo1MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHBvMnRibC5zZWQuaW46IFNlcmlvdXMgdHlwbyBidWcgZml4ZWQgYnkgSmltIE1leWVyaW5nLgorLQorLVNhdCBPY3QgMjggMjM6MjA6NDcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IERpc2FibGUgZGNnZXR0ZXh0IG9wdGltaXphdGlvbiBmb3IgU29sYXJpcyAyLjMuCistCistCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6CistCVBldGVyIE1pbGxlciByZXBvcnRlZCB0aGF0IHRvbG93ZXIgaW4gc29tZSBzeXN0ZW1zIGlzCistCWV2ZW4gZHVtYmVyIHRoYW4gSSB0aG91Z2h0LiAgUHJvdGVjdCBjYWxsIGJ5IGBpc3VwcGVyJy4KKy0KKy1GcmkgT2N0IDI3IDIyOjIyOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGxpYmRpciwgaW5jbHVkZWRpcik6IE5ldyB2YXJpYWJsZXMuCistCShpbnN0YWxsLXNyYyk6IEluc3RhbGwgbGliaW50bC5hIGFuZCBsaWJpbnRsLmggaW4gY29ycmVjdCBkaXJzLgorLQorLUZyaSBPY3QgMjcgMjI6MDc6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoU09VUkNFUyk6IEZpeCB0eXBvOiBpbnRybC5jb21wYXQuYyAtPiBpbnRsLWNvbXBhdC5jLgorLQorLQkqIHBvMnRibC5zZWQuaW46IFBhdGNoIGZvciBidWdneSBTRURzIGJ5IENocmlzdGlhbiB2b24gUm9xdWVzLgorLQorLQkqIGxvY2FsZWFsaWFzLmM6CistCUZpeCB0eXBvIGFuZCBzdXBlcmZsb3VzIHRlc3QuICBSZXBvcnRlZCBieSBDaHJpc3RpYW4gdm9uIFJvcXVlcy4KKy0KKy1GcmkgT2N0ICA2IDExOjUyOjA1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlDb3JyZWN0IHNvbWUgcmVtYWluZGVyIGZyb20gdGhlIHByZS1DRU4gc3ludGF4LiAgTm93CistCXdlIGRvbid0IGhhdmUgYSBjb25zdGFudCBudW1iZXIgb2Ygc3VjY2Vzc29ycyBhbnltb3JlLgorLQorLVdlZCBTZXAgMjcgMjE6NDE6MTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogQWRkIGxpYmludGwuaC5nbGliYy4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZGlzdC1saWJjKTogQWRkIGdvYWwgZm9yIHBhY2tpbmcgc291cmNlcyBmb3IgZ2xpYmMuCistCShDT01TUkNTLCBDT01IRFJTKTogU3BsaXR0ZWQgdG8gc2VwYXJhdGUgc291cmNlcyBzaGFyZWQgd2l0aCBnbGliYy4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6IEZvcmdldCB0byBjb250aW51ZSAjaWYgbGluZS4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jOgorLQlbX0xJQkNdOiBSZW5hbWUgc3RyY2FzZWNtcCB0byBfX3N0cmNhc2VjbXAgdG8ga2VlcCBBTlNJIEMgbmFtZQorLQlzcGFjZSBjbGVhbi4KKy0KKy0JKiBkY2dldHRleHQuYywgZmluZGRvbWFpbi5jOiBCZXR0ZXIgY29tbWVudCB0byBsYXN0IGNoYW5nZS4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6CistCVtfTElCQ106IFJlbmFtZSBmc3RhdCwgb3BlbiwgY2xvc2UsIHJlYWQsIG1tYXAsIGFuZCBtdW5tYXAgdG8KKy0JX19mc3RhdCwgX19vcGVuLCBfX2Nsb3NlLCBfX3JlYWQsIF9fbW1hcCwgYW5kIF9fbXVubWFwIHJlc3AKKy0JdG8ga2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KKy0KKy0JKiBmaW5kZG9tYWluLmM6CistCVtfTElCQ106IFJlbmFtZSBzdHBjcHkgdG8gX19zdHBjcHkgdG8ga2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KKy0KKy0JKiBkY2dldHRleHQuYzoKKy0JW19MSUJDXTogUmVuYW1lIGdldGNlZCBhbmQgc3RwY3B5IHRvIF9fZ2V0Y3dkIGFuZCBfX3N0cGNweSByZXNwIHRvCistCWtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCistCistCSogbGliZ2V0dGV4dC5oOgorLQlJbmNsdWRlIHN5cy90eXBlcy5oIGZvciB0aG9zZSBvbGQgU3lzViBzeXN0ZW1zIG91dCB0aGVyZS4KKy0JUmVwb3J0ZWQgYnkgRnJhbmNlc2NvIFBvdG9ydGlgLgorLQorLQkqIGxvYWRtc2djYXQuYyAodXNlX21tYXApOiBEZWZpbmUgaWYgY29tcGlsZWQgZm9yIGdsaWJjLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6IEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKKy0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCistCistCSogZmluZGRvbWFpbi5jOiBGaXggMiB0aW1lcyBkZWZpZW5kIC0+IGRlZmluZWQuCistCistCSogdGV4dGRvbWFpbi5jOiBJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuCistCWNvbXBpbGluZyBmb3IgZ2xpYmMuICBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCistCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGxvY2FsZWFsaWFzLmMsIGxvYWRtc2djYXQuYzogUHJlcGFyZSB0byBiZSBjb21waWxlZCBpbiBnbGliYy4KKy0KKy0JKiBnZXR0ZXh0LmM6CistCUluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KKy0JR2V0IE5VTEwgZnJvbSBzdGRkZWYuaCBpZiB3ZSBjb21waWxlIGZvciBnbGliYy4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4KKy0JY29tcGlsaW5nIGZvciBnbGliYy4gIEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKKy0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCistCistCSogZGNnZXR0ZXh0LmM6IEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMgdW5jb25kaXRpb25hbGx5CistCWlmIF9MSUJDIGlzIGRlZmluZWQuCistCistCSogZGdldHRleHQuYzogSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZgorLQlsaWJnZXR0ZXh0LmguCistCShsb2NhbGUuaCk6IERvbid0IHJlbHkgb24gSEFWRV9MT0NBTEVfSCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCistCistCSogZGNnZXR0ZXh0LmM6IElmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YKKy0JbGliZ2V0dGV4dC5oLgorLQkoZ2V0Y3dkKTogRG9uJ3QgcmVseSBvbiBIQVZFX0dFVENXRCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCistCistCSogYmluZHRleHRkb20uYzoKKy0JSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0LmguCistCistTW9uIFNlcCAyNSAyMjoyMzowNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKF9ubF9leHBhbmRfYWxpYXMpOiBEb24ndCBjYWxsIGJzZWFyY2ggaWYgTk1BUCA8PSAwLgorLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKKy0JU3RyaW5nIHVzZWQgaW4gcHV0ZW52IG11c3Qgbm90IGJlIHJlY3ljbGVkLgorLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KKy0KKy0JKiBsaWJnZXR0ZXh0LmggKF9fVVNFX0dOVV9HRVRURVhUKToKKy0JQWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIEdOVSBnZXR0ZXh0CistCWxpYnJhcnkuCistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6CistCUZpeCBidWcgd2l0aCB0aGUgc3RyYW5nZSBzdHBjcHkgcmVwbGFjZW1lbnQuCistCVJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KKy0KKy1TYXQgU2VwIDIzIDA4OjIzOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogY2F0LWNvbXBhdC5jOiBJbmNsdWRlIDxzdHJpbmcuaD4gZm9yIHN0cGNweSBwcm90b3R5cGUuCistCistCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKKy0JV2hpbGUgZXhwYW5kIHN0cmR1cCBjb2RlIHRlbXBvcmFyeSB2YXJpYWJsZSBgY3AnIGhpZGVkCistCWhpZ2hlciBsZXZlbCB2YXJpYWJsZSB3aXRoIHNhbWUgbmFtZS4gIFJlbmFtZSB0byBgdHAnLgorLQorLQkqIHRleHRkb21haW4uYyAodGV4dGRvbWFpbik6CistCUF2b2lkIHdhcm5pbmcgYnkgdXNpbmcgdGVtcG9yYXJ5IHZhcmlhYmxlIGluIHN0cmR1cCBjb2RlLgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYXBwbGljYXRpb24nLgorLQorLVRodSBTZXAgMjEgMTU6NTE6NDQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKToKKy0JVXNlIHN0cmNhc2VjbXAoKSBvbmx5IGlmIGF2YWlsYWJsZS4gIEVsc2UgdXNlCistCWltcGxlbWVudGF0aW9uIGluIHBsYWNlLgorLQorLQkqIGludGwtY29tcGF0LmM6CistCVdyYXBwZXIgZnVuY3Rpb25zIG5vdyBjYWxsICpfXyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBfXyouCistCistCSogbGliZ2V0dGV4dC5oOiBEZWNsYXJlIHByb3RvdHlwZXMgZm9yICpfXyBmdW5jdGlvbnMgaW5zdGVhZCBmb3IgX18qLgorLQorLQkqIGNhdC1jb21wYXQuYywgbG9hZG1zZ2NhdC5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6CistCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAorLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCistCXN0YW5kYWxvbmUuCistCVJlbmFtZSB0byBiaW5kdGV4dGRvbWFpbl9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCistCistCSogZGdldHRleHQuYzoKKy0JUmVuYW1lIGZ1bmN0aW9uIHRvIGRnZXR0ZXh0X18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KKy0KKy0JKiBnZXR0ZXh0LmM6CistCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAorLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCistCXN0YW5kYWxvbmUuCistCUZ1bmN0aW9ucyBub3cgY2FsbGVkIGdldHRleHRfXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgorLQorLQkqIGRjZ2V0dGV4dC5jLCBsb2NhbGVhbGlhcy5jLCB0ZXh0ZG9tYWluLmMsIGZpbmRkb21haW4uYzoKKy0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0CistCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKKy0Jc3RhbmRhbG9uZS4KKy0KKy1TdW4gU2VwIDE3IDIzOjE0OjQ5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jOiBDb3JyZWN0IHNvbWUgYnVncyBpbiBoYW5kbGluZyBvZiBDRU4gc3RhbmRhcmQKKy0gCWxvY2FsZSBkZWZpbml0aW9ucy4KKy0KKy1UaHUgU2VwICA3IDAxOjQ5OjI4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jOiBJbXBsZW1lbnQgQ0VOIHN5bnRheC4KKy0KKy0JKiBnZXR0ZXh0UC5oIChsb2FkZWRfZG9tYWluKTogRXh0ZW5kIG51bWJlciBvZiBzdWNjZXNzb3JzIHRvIDMxLgorLQorLVNhdCBBdWcgMTkgMTk6MjU6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxpYXNwYXRoKTogUmVtb3ZlIHBhdGggdG8gWDExIGxvY2FsZSBkaXIuCistCistCSogTWFrZWZpbGUuaW46IE1ha2UgaW5zdGFsbC1zcmMgZGVwZW5kIG9uIGluc3RhbGwuICBUaGlzIGhlbHBzCistIAlnZXR0ZXh0IHRvIGluc3RhbGwgdGhlIHNvdXJjZXMgYW5kIG90aGVyIHBhY2thZ2VzIGNhbiB1c2UgdGhlCistIAlpbnN0YWxsIGdvYWwuCistCistU2F0IEF1ZyAxOSAxNToxOTozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluICh1bmluc3RhbGwpOiBSZW1vdmUgc3R1ZmYgaW5zdGFsbGVkIGJ5IGluc3RhbGwtc3JjLgorLQorLVR1ZSBBdWcgMTUgMTM6MTM6NTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBWRVJTSU9OLmluOiBJbml0aWFsIHJldmlzaW9uLgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOgorLQlBZGQgVkVSU0lPTiBmaWxlLiAgVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGZvciBnZXR0ZXh0LCBidXQKKy0JZm9yIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoaXMgbGlicmFyeS4KKy0KKy1UdWUgQXVnIDE1IDA2OjE2OjQ0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZ2V0dGV4dFAuaCAoX25sX2ZpbmRfZG9tYWluKToKKy0JTmV3IHByb3RvdHlwZSBhZnRlciBjaGFuZ2luZyBzZWFyY2ggc3RyYXRlZ3kuCistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlXZSBub3cgdHJ5IG9ubHkgdG8gZmluZCBhIHNwZWNpZmllZCBjYXRhbG9nLiAgRmFsbCBiYWNrIHRvIG90aGVyCistCWNhdGFsb2dzIGxpc3RlZCBpbiB0aGUgbG9jYWxlIGxpc3QgaXMgbm93IGRvbmUgaW4gX19kY2dldHRleHQuCistCistCSogZGNnZXR0ZXh0LmMgKF9fZGNnZXR0ZXh0KToKKy0JTm93IHdlIHByb3ZpZGUgbWVzc2FnZSBmYWxsIGJhY2sgZXZlbiB0byBkaWZmZXJlbnQgbGFuZ3VhZ2VzLgorLQlJLmUuIGlmIGEgbWVzc2FnZSBpcyBub3QgYXZhaWxhYmxlIGluIG9uZSBsYW5ndWFnZSBhbGwgdGhlIG90aGVyCistIAlpbiB0aGUgbG9jYWxlIGxpc3QgYSB0cmllZC4gIEZvcm1lcmx5IGZhbGwgYmFjayB3YXMgb25seSBwb3NzaWJsZQorLSAJd2l0aGluIG9uZSBsYW5ndWFnZS4gIEltcGxlbWVudGVkIGJ5IG1vdmluZyBvbmUgbG9vcCBmcm9tCistIAlfbmxfZmluZF9kb21haW4gdG8gaGVyZS4KKy0KKy1Nb24gQXVnIDE0IDIzOjQ1OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOgorLQlEaXJlY3Rvcnkgd2hlcmUgc291cmNlIG9mIEdOVSBnZXR0ZXh0IGxpYnJhcnkgYXJlIG1hZGUKKy0JYXZhaWxhYmxlLgorLQkoSU5TVEFMTCwgSU5TVEFMTF9EQVRBKTogUHJvZ3JhbXMgdXNlZCBmb3IgaW5zdGFsbGluZyBzb3VyY2VzLgorLQkoZ2V0dGV4dC1zcmMpOiBOZXcuICBSdWxlIHRvIGluc3RhbGwgR05VIGdldHRleHQgc291cmNlcyBmb3IgdXNlIGluCistCWdldHRleHRpemUgc2hlbGwgc2NyaXB0LgorLQorLVN1biBBdWcgMTMgMTQ6NDA6NDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6CistCVVzZSBtbWFwIGZvciBsb2FkaW5nIG9ubHkgd2hlbiBtdW5tYXAgZnVuY3Rpb24gaXMKKy0JYWxzbyBhdmFpbGFibGUuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBEZXBlbmQgb24gYGFsbCcgZ29hbC4KKy0KKy1XZWQgQXVnICA5IDExOjA0OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKKy0JRG8gbm90IG92ZXJ3cml0ZSAnXG4nIHdoZW4gdGVybWluYXRpbmcgYWxpYXMgdmFsdWUgc3RyaW5nLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCUhhbmRsZSBsb25nIGxpbmVzLiAgSWdub3JlIHRoZSByZXN0IG5vdCBmaXR0aW5nIGluCistCXRoZSBidWZmZXIgYWZ0ZXIgdGhlIGluaXRpYWwgYGZnZXRzJyBjYWxsLgorLQorLVdlZCBBdWcgIDkgMDA6NTQ6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBnZXR0ZXh0UC5oIChfbmxfbG9hZF9kb21haW4pOgorLQlBZGQgcHJvdG90eXBlLCByZXBsYWNpbmcgcHJvdG90eXBlIGZvciBfbmxfbG9hZF9tc2dfY2F0LgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JUmVtb3ZlIHVubmVlZGVkIHZhcmlhYmxlIGZpbGVuYW1lIGFuZCBmaWxlbmFtZV9sZW4uCistCShleHBhbmRfYWxpYXMpOiBSZW1vdmUgcHJvdG90eXBlIGJlY2F1c2UgZnVuY3Rpb25zIGRvZXMgbm90CistIAlleGlzdCBhbnltb3JlLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCUNoYW5nZSB0eXBlIG9mIGZuYW1lX2xlbiBwYXJhbWV0ZXIgdG8gaW50LgorLQkoeG1hbGxvYyk6IEFkZCBwcm90b3R5cGUuCistCistCSogbG9hZG1zZ2NhdC5jOiBCZXR0ZXIgcHJvdG90eXBlcyBmb3IgeG1hbGxvYy4KKy0KKy1UdWUgQXVnICA4IDIyOjMwOjM5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlBbGxvdyBhbGlhcyBuYW1lIHRvIGJlIGNvbnN0cnVjdGVkIGZyb20gdGhlIGZvdXIgY29tcG9uZW50cy4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxpYXNwYXRoKTogTmV3IHZhcmlhYmxlLiAgU2V0IHRvIHByZWxpbWluYXJ5IHZhbHVlLgorLQkoU09VUkNFUyk6IEFkZCBsb2NhbGVhbGlhcy5jLgorLQkoT0JKRUNUUyk6IEFkZCBsb2NhbGVhbGlhcy5vLgorLQorLQkqIGdldHRleHRQLmg6IEFkZCBwcm90b3R5cGUgZm9yIF9ubF9leHBhbmRfYWxpYXMuCistCistCSogZmluZGRvbWFpbi5jOiBBbGlhc2luZyBoYW5kbGVkIGluIGludGwvbG9jYWxlYWxpYXMuYy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jOiBBbGlhc2luZyBmb3IgbG9jYWxlIG5hbWVzLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6IEJldHRlciBwcm90b3R5cGVzIGZvciB4bWFsbG9jIGFuZCB4c3RyZHVwLgorLQorLU1vbiBBdWcgIDcgMjM6NDc6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogZ2V0dGV4dC5wZXJsIGlzIG5vdyBmb3VuZCBpbiBtaXNjLy4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKKy0JQ29ycmVjdCBpbXBsZW1lbnRhdGlvbi4gIGRpcm5hbWUgcGFyYW1ldGVyIHdhcyBub3QgdXNlZC4KKy0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogZ2V0dGV4dFAuaCAobG9hZGVkX2RvbWFpbik6CistCU5ldyBmaWVsZHMgYHN1Y2Nlc3NvcicgYW5kIGBkZWNpZGVkJyBmb3Igb28sIGxhenkKKy0JbWVzc2FnZSBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbi4KKy0KKy0JKiBkY2dldHRleHQuYzoKKy0JQWRvcHQgZm9yIG9vLCBsYXp5IG1lc3NhZ2UgaGFuZGxpaW5nLgorLSAgCU5vdyB3ZSBjYW4gaW5oZXJpdCB0cmFuc2xhdGlvbnMgZnJvbSBsZXNzIHNwZWNpZmljIGxvY2FsZXMuCistCShmaW5kX21zZyk6IE5ldyBmdW5jdGlvbi4KKy0KKy0JKiBsb2FkbXNnY2F0LmMsIGZpbmRkb21haW4uYzoKKy0JQ29tcGxldGUgcmV3cml0ZS4gIEltcGxlbWVudCBvbywgbGF6eSBtZXNzYWdlIGhhbmRsaW5nIDotKS4KKy0gIAlXZSBub3cgaGF2ZSBhbiBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlIGBMQU5HVUFHRScgd2l0aAorLSAJYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBMQ19BTEwgZm9yIHRoZSBMQ19NRVNTQUdFIGxvY2FsZS4KKy0gIAlIZXJlIHdlIGNhbiBzZXQgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBzcGVjaWZpY2F0aW9ucyBlYWNoCistIAlvZiB0aGUgZm9ybSBgbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0nLgorLQorLVNhdCBBdWcgIDUgMDk6NTU6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHVuaXN0ZC5oKToKKy0JSW5jbHVkZSB0byBnZXQgX1BDX1BBVEhfTUFYIGRlZmluZWQgb24gc3lzdGVtIGhhdmluZyBpdC4KKy0KKy1GcmkgQXVnICA0IDIyOjQyOjAwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOiBJbmNsdWRlIHByb3RvdHlwZS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZGlzdCk6IFJlbW92ZSBgY29weWluZyBpbnN0ZWFkJyBtZXNzYWdlLgorLQorLVdlZCBBdWcgIDIgMTg6NTI6MDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoSUQsIFRBR1MpOiBEbyBub3QgdXNlICReLgorLQorLVR1ZSBBdWcgIDEgMjA6MDc6MTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoVEFHUywgSUQpOiBVc2UgJF4gYXMgY29tbWFuZCBhcmd1bWVudC4KKy0JKFRBR1MpOiBHaXZlIGV0YWdzIC1vIG9wdGlvbiB0IHdyaXRlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LAorLSAJbm90ICQoc3JjZGlyKS4KKy0JKElEKTogVXNlICQoc3JjZGlyKSBpbnN0ZWFkIG9zICQodG9wX3NyY2Rpcikvc3JjLgorLQkoZGlzdGNsZWFuKTogUmVtb3ZlIElELgorLQorLVN1biBKdWwgMzAgMTE6NTE6NDYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZ251bG9jYWxlZGlyKToKKy0JTmV3IHZhcmlhYmxlLCBhbHdheXMgdXNpbmcgc2hhcmUvIGZvciBkYXRhIGRpcmVjdG9yeS4KKy0JKERFRlMpOiBBZGQgR05VTE9DQUxFRElSLCB1c2VkIGluIGZpbmRkb21haW4uYy4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOgorLQlTZXQgdG8gR05VTE9DQUxFRElSLCBiZWNhdXNlIGl0IGFsd2F5cyBoYXMgdG8gcG9pbnQKKy0JdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBHTlUgZ2V0dGV4dCBMaWJyYXJ5IHdyaXRlcyBpdCB0by4KKy0KKy0JKiBpbnRsLWNvbXBhdC5jICh0ZXh0ZG9tYWluLCBiaW5kdGV4dGRvbWFpbik6CistCVVuZGVmaW5lIG1hY3JvcyBiZWZvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KKy0KKy1TYXQgSnVsIDIyIDAxOjEwOjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliZ2V0dGV4dC5oIChfTElCSU5UTF9IKToKKy0JUHJvdGVjdCBkZWZpbml0aW9uIGluIGNhc2Ugd2hlcmUgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFzCistCWxpYmdldHRleHQuaCBvbiBTb2xhcmlzIG1hY2hpbmVzLiAgQWRkIGNvbW1lbnQgYWJvdXQgdGhpcy4KKy0KKy1XZWQgSnVsIDE5IDAyOjM2OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogaW50bC1jb21wYXQuYyAodGV4dGRvbWFpbik6IENvcnJlY3QgdHlwby4KKy0KKy1XZWQgSnVsIDE5IDAxOjUxOjM1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZGNnZXR0ZXh0LmMgKGRjZ2V0dGV4dCk6IEZ1bmN0aW9uIG5vdyBjYWxsZWQgX19kY2dldHRleHQuCistCistCSogZGdldHRleHQuYyAoZGdldHRleHQpOiBOb3cgY2FsbGVkIF9fZGdldHRleHQgYW5kIGNhbGxzCistIAlfX2RjZ2V0dGV4dC4KKy0KKy0JKiBnZXR0ZXh0LmMgKGdldHRleHQpOgorLQlGdW5jdGlvbiBub3cgY2FsbGVkIF9fZ2V0dGV4dCBhbmQgY2FsbHMgX19kZ2V0dGV4dC4KKy0KKy0JKiB0ZXh0ZG9tYWluLmMgKHRleHRkb21haW4pOiBGdW5jdGlvbiBub3cgY2FsbGVkIF9fdGV4dGRvbWFpbi4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jIChiaW5kdGV4dGRvbWFpbik6IEZ1bmN0aW9uIG5vdyBjYWxsZWQKKy0gCV9fYmluZHRleHRkb21haW4uCistCistCSogaW50bC1jb21wYXQuYzogSW5pdGlhbCByZXZpc2lvbi4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoU09VUkNFUyk6IEFkZCBpbnRsLWNvbXBhdC5jLgorLQkoT0JKRUNUUyk6IFdlIGFsd2F5cyBjb21waWxlIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGZ1bmN0aW9ucy4KKy0gIAlPQkpFQ1RTIGNvbnRhaW5zIGFsbCBvYmplY3RzIGJ1dCBjYXQtY29tcGF0Lm8sIC4uL3BvL2NhdC1pZi10YmwubywKKy0gCWFuZCBpbnRsLWNvbXBhdC5vLgorLSAgCShHRVRUT0JKUyk6IENvbnRhaW5zIG5vdyBvbmx5IGludGwtY29tcGF0Lm8uCistCistCSogbGliZ2V0dGV4dC5oOgorLQlSZS1pbmNsdWRlIHByb3RlY3Rpb24gbWF0Y2hlcyBkdWFsaXN0aWMgY2hhcmFjdGVyIG9mIGxpYmdldHRleHQuaC4KKy0JRm9yIGFsbCBmdW5jdGlvbnMgaW4gR05VIGdldHRleHQgbGlicmFyeSBkZWZpbmUgX18gY291bnRlciBwYXJ0LgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RyY2hyKTogRGVmaW5lIGFzIGluZGV4IGlmIG5vdCBmb3VuZCBpbiBDIGxpYnJhcnkuCistCShfbmxfZmluZF9kb21haW4pOiBGb3IgcmVsYXRpdmUgcGF0aHMgcGFzdGUgLyBpbiBiZXR3ZWVuLgorLQorLVR1ZSBKdWwgMTggMTY6Mzc6NDUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2FkbXNnY2F0LmMsIGZpbmRkb21haW4uYzogQWRkIGluY2x1c2lvbiBvZiBzeXMvdHlwZXMuaC4KKy0KKy0JKiB4b3Blbi1tc2cuc2VkOiBGaXggYnVnIHdpdGggYG1zZ3N0ciAiIicgbGluZXMuCistCUEgbGl0dGxlIGJpdCBiZXR0ZXIgY29tbWVudHMuCistCistVHVlIEp1bCAxOCAwMToxODoyNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluOgorLQlwby1tb2RlLmVsLCBtYWtlbGlua3MsIGNvbWJpbmUtc2ggYXJlIG5vdyBmb3VuZCBpbiAuLi9taXNjLgorLQorLQkqIHBvLW1vZGUuZWwsIG1ha2VsaW5rcywgY29tYmluZS1zaCwgZWxpc3AtY29tcDoKKy0JTW92ZWQgdG8gLi4vbWlzYy8uCistCistCSogbGliZ2V0dGV4dC5oLCBnZXR0ZXh0UC5oLCBnZXR0ZXh0Lmg6IFVuaWZvcm0gdGVzdCBmb3IgX19TVERDX18uCistCistU3VuIEp1bCAxNiAyMjozMzowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChJTlNUQUxMLCBJTlNUQUxMX0RBVEEpOiBOZXcgdmFyaWFibGVzLgorLQkoaW5zdGFsbC1kYXRhLCB1bmluc3RhbGwpOiBJbnN0YWxsL3VuaW5zdGFsbCAuZWxjIGZpbGUuCistCistCSogcG8tbW9kZS5lbCAoSW5zdGFsbGF0aW9uIGNvbW1lbnQpOgorLQlBZGQgLnBveCBhcyBwb3NzaWJsZSBleHRlbnNpb24gb2YgLnBvIGZpbGVzLgorLQorLVN1biBKdWwgMTYgMTM6MjM6MjcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBlbGlzcC1jb21wOiBDb21wbGV0ZSBuZXcgdmVyc2lvbiBieSBGcmFuYyxvaXM6IFRoaXMgZG9lcyBub3QKKy0gCWZhaWwgd2hlbiBub3QgY29tcGlsaW5nIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgorLQorLVN1biBKdWwgMTYgMDA6MTI6MTcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoLi4vcG8vY2F0LWlkLXRibC5vKToKKy0JVXNlICQoTUFLRSkgaW5zdGVhZCBvZiBtYWtlIGZvciByZWN1cnNpdmUgbWFrZS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoLmVsLmVsYyk6IFVzZSAkKFNIRUxMKSBpbnN0ZWFkIG9mIC9iaW4vc2guCistCShpbnN0YWxsLWV4ZWMpOiBBZGQgbWlzc2luZyBkdW1teSBnb2FsLgorLQkoaW5zdGFsbC1kYXRhLCB1bmluc3RhbGwpOiBAIGluIG11bHRpLWxpbmUgc2hlbGwgY29tbWFuZCBhdAorLSAJYmVnaW5uaW5nLCBub3QgaW4gZnJvbnQgb2YgZWNoby4gIFJlcG9ydGVkIGJ5IEVyaWMgQmFja3VzLgorLQorLVNhdCBKdWwgMTUgMDA6MjE6MjggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKToKKy0JUmVuYW1lIGxpYmdldHRleHQucGVybCB0byBnZXR0ZXh0LnBlcmwgdG8gZml0IGluIDE0IGNoYXJzCistCWZpbGUgc3lzdGVtcy4KKy0KKy0JKiBnZXR0ZXh0LnBlcmw6CistIAlSZW5hbWUgdG8gZ2V0dGV4dC5wZXJsIHRvIGZpdCBpbiAxNCBjaGFycyBmaWxlIHN5c3RlbXMuCistCistVGh1IEp1bCAxMyAyMzoxNzoyMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGNhdC1jb21wYXQuYzogSWYgIVNURENfSEVBREVSUyB0cnkgdG8gaW5jbHVkZSBtYWxsb2MuaC4KKy0KKy1UaHUgSnVsIDEzIDIwOjU1OjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogcG8ydGJsLnNlZC5pbjogUHJldHR5IHByaW50aW5nLgorLQorLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6CistCUNvcnJlY3QgYnVncyB3aXRoIGhhbmRsaW5nIHN1YnN0aXR1dGUgZmxhZ3MgaW4gYnJhbmNoZXMuCistCistCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOgorLQlPbGQgSyZSIGNvbXBpbGVycyBkb24ndCB1bmRlciBzdGFuZCBgdW5zaWduZWQgY2hhcicuCistCistCSogZ2V0dGV4dC5oIChubHNfdWludDMyKToKKy0JU29tZSBvbGQgSyZSIGNvbXBpbGVycyAoZWcgSFApIGRvbid0IHVuZGVyc3RhbmQgYHVuc2lnbmVkIGludCcuCistCistCSogY2F0LWNvbXBhdC5jIChtc2dfdG9fY2F0X2lkKTogRGUtQU5TSS1meSBwcm90b3R5cGVzLgorLQorLVRodSBKdWwgMTMgMDE6MzQ6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRUxDRklMRVMpOiBOZXcgdmFyaWFibGUuCistCShESVNURklMRVMpOiBBZGQgZWxpc3AtY29tcC4KKy0JQWRkIGltcGxpY2l0IHJ1bGUgZm9yIC5lbCAtPiAuZWxjIGNvbXBpbGF0aW9uLgorLQkoaW5zdGFsbC1kYXRhKTogaW5zdGFsbCAkRUxDRklMRVMKKy0JKGNsZWFuKTogcmVuYW1lZCBwby10by10YmwgYW5kIHBvLXRvLW1zZyB0byBwbzJ0YmwgYW5kIHBvMm1zZyByZXNwLgorLQorLQkqIGVsaXNwLWNvbXA6IEluaXRpYWwgcmV2aXNpb24KKy0KKy1XZWQgSnVsIDEyIDE2OjE0OjUyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW46CistCWNhdC1pZC10YmwuYyBpcyBub3cgZm91bmQgaW4gcG8vLiAgVGhpcyBlbmFibGVzIHVzIHRvIHVzZSBhbiBpZGVudGljYWwKKy0JaW50bC8gZGlyZWN0b3J5IGluIGFsbCBwYWNrYWdlcy4KKy0KKy0JKiBkY2dldHRleHQuYyAoZGNnZXR0ZXh0KTogaGFzaGluZyBkb2VzIG5vdCB3b3JrIGZvciB0YWJsZSBzaXplIDw9IDIuCistCistCSogdGV4dGRvbWFpbi5jOiBmaXggdHlwbyAoI2lmIGRlZiAtPiAjaWYgZGVmaW5lZCkKKy0KKy1UdWUgSnVsIDExIDE4OjQ0OjQzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKHN0YW1wLWNhdC1pZCk6IHVzZSB0b3Bfc3JjZGlyIHRvIGFkZHJlc3Mgc291cmNlIGZpbGVzCistCShESVNURklMRVMsZGlzdGNsZWFuKTogbW92ZSB0dXBkYXRlLnBlcmwgdG8gc3JjLworLQorLQkqIHBvLXRvLXRibC5zZWQuaW46CistCWFkZCBhZGRpdGlvbmFsIGp1bXAgdG8gY2xlYXIgY2hhbmdlIGZsYWcgdG8gcmVjb2duaXplIG11bHRpbGluZSBzdHJpbmdzCistCistVHVlIEp1bCAxMSAwMTozMjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHRleHRkb21haW4uYzogUHJvdGVjdCBpbmNsdXNpb24gb2Ygc3RkbGliLmggYW5kIHN0cmluZy5oLgorLQorLQkqIGxvYWRtc2djYXQuYzogUHJvdGVjdCBpbmNsdXNpb24gb2Ygc3RkbGliLmguCistCistCSogbGliZ2V0dGV4dC5oOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBsb2NhbGUuaC4KKy0JQWxsb3cgdXNlIGluIEMrKyBwcm9ncmFtcy4KKy0JRGVmaW5lIE5VTEwgaXMgbm90IGhhcHBlbmVkIGFscmVhZHkuCistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IHNoaXAgcG8tdG8tdGJsLnNlZC5pbiBpbnN0ZWFkIG9mCistCXBvLXRvLXRibC5zZWQuCistCShkaXN0Y2xlYW4pOiByZW1vdmUgcG8tdG8tdGJsLnNlZCBhbmQgdHVwZGF0ZS5wZXJsLgorLQorLQkqIHR1cGRhdGUucGVybC5pbjogU3Vic3RpdHV0ZSBQZXJsIHBhdGggZXZlbiBpbiBleGVjIGxpbmUuCistCURvbid0IGluY2x1ZGUgZW50cmllcyB3aXRob3V0IHRyYW5zbGF0aW9uIGZyb20gb2xkIC5wbyBmaWxlLgorLQorLVR1ZSBKdWwgIDQgMDA6NDE6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IHVzZSAiVXBkYXRlZDogIiBpbiBtc2dpZCAiIi4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IEZpeCB0eXBvIChMT0NBTERJUiAtPiBMT0NBTEVESVIpLgorLSAJRGVmaW5lIGdldGVudiBpZiAhX19TVERDX18uCistCistCSogYmluZHRleHRkb20uYzogUHJvdGVjdCBzdGRsaWIuaCBhbmQgc3RyaW5nLmggaW5jbHVzaW9uLgorLSAJRGVmaW5lIGZyZWUgaWYgIV9fU1REQ19fLgorLQorLQkqIGZpbmRkb21haW4uYzogQ2hhbmdlIERFRl9NU0dfRE9NX0RJUiB0byBMT0NBTEVESVIuCistIAlEZWZpbmUgZnJlZSBpZiAhX19TVERDX18uCistCistCSogY2F0LWNvbXBhdC5jOiBDaGFuZ2UgREVGX01TR19ET01fRElSIHRvIExPQ0FMRURJUi4KKy0KKy1Nb24gSnVsICAzIDIzOjU2OjMwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW46IFVzZSBMT0NBTEVESVIgaW5zdGVhZCBvZiBERUZfTVNHX0RPTV9ESVIuCistCVJlbW92ZSB1bm5lZWRlZCAkKHNyY2RpcikgZnJvbSBNYWtlZmlsZS5pbiBkZXBlbmRlbmN5LgorLQorLQkqIG1ha2VsaW5rczogQWRkIGNvcHlyaWdodCBhbmQgc2hvcnQgZGVzY3JpcHRpb24uCistCistCSogcG8tbW9kZS5lbDogTGFzdCB2ZXJzaW9uIGZvciAwLjcuCistCistCSogdHVwZGF0ZS5wZXJsLmluOiBGaXggZGllIG1lc3NhZ2UuCistCistCSogZGNnZXR0ZXh0LmM6IFByb3RlY3QgaW5jbHVkZSBvZiBzdHJpbmcuaC4KKy0KKy0JKiBnZXR0ZXh0LmM6IFByb3RlY3QgaW5jbHVkZSBvZiBzdGRsaWIuaCBhbmQgZnVydGhlciB0cmllcyB0byBnZXQgTlVMTC4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IFNvbWUgY29ycmVjdGlvbnMgaW4gaW5jbHVkZXMuCistCistCSogTWFrZWZpbGUuaW4gKElOQ0xVREVTKTogUHJ1bmUgbGlzdCBjb3JyZWN0IHBhdGggdG8gTWFrZWZpbGUuaW4uCistCistCSogcG8tdG8tdGJsLnNlZDogQWRvcHQgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCistCistCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDogQWRvcHQgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCistCistU3VuIEp1bCAgMiAyMzo1NTowMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHR1cGRhdGUucGVybC5pbjogQ29tcGxldGUgcmV3cml0ZSBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KKy0KKy1TdW4gSnVsICAyIDAyOjA2OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogRmlyc3Qgb2ZmaWNpYWwgcmVsZWFzZS4gIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGFsbCB0aGUgY29kZQorLQluZWVkZWQgdG8gaW50ZXJuYXRpb25hbGl6ZSBvd24gcGFja2FnZXMuICBJdCBwcm92aWRlcyBmdW5jdGlvbnMKKy0Jd2hpY2ggYWxsb3cgdG8gdXNlIHRoZSBYL09wZW4gY2F0Z2V0cyBmdW5jdGlvbiB3aXRoIGFuIGludGVyZmFjZQorLQlsaWtlIHRoZSBVbmlmb3J1bSBnZXR0ZXh0IGZ1bmN0aW9uLiAgRm9yIHN5c3RlbSB3aGljaCBkb2VzIG5vdAorLQloYXZlIG5laXRoZXIgb2YgdGhvc2UgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRlZC4KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jIGxyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYwkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNTkzICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNnZXR0ZXh0KDMpIGZ1bmN0aW9uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWZkZWYgX19HTlVDX18KKy0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQorLSMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKKy0jZWxzZQorLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKKy0jICBpbmNsdWRlIDxhbGxvY2EuaD4KKy0jIGVsc2UKKy0jICBpZmRlZiBfQUlYCistICNwcmFnbWEgYWxsb2NhCistIyAgZWxzZQorLSMgICBpZm5kZWYgYWxsb2NhCistY2hhciAqYWxsb2NhICgpOworLSMgICBlbmRpZgorLSMgIGVuZGlmCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxlcnJuby5oPgorLSNpZm5kZWYgZXJybm8KKy1leHRlcm4gaW50IGVycm5vOworLSNlbmRpZgorLSNpZm5kZWYgX19zZXRfZXJybm8KKy0jIGRlZmluZSBfX3NldF9lcnJubyh2YWwpIGVycm5vID0gKHZhbCkKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2Vsc2UKKy1jaGFyICpnZXRlbnYgKCk7CistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbHNlCistdm9pZCBmcmVlICgpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBfR05VX1NPVVJDRQorLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCistIyBlbmRpZgorLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jZW5kaWYKKy0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgc3RyY2hyCistIyAgZGVmaW5lIHN0cmNociBpbmRleAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0jaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKKy0jIGRlZmluZSBzdHBjcHkgX19zdHBjcHkKKy0jZWxzZQorLSMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKKy1jaGFyICpnZXR3ZCAoKTsKKy0jICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSBnZXR3ZCAoYnVmKQorLSMgZWxzZQorLWNoYXIgKmdldGN3ZCAoKTsKKy0jIGVuZGlmCistIyBpZm5kZWYgSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBBbW91bnQgdG8gaW5jcmVhc2UgYnVmZmVyIHNpemUgYnkgaW4gZWFjaCB0cnkuICAqLworLSNkZWZpbmUgUEFUSF9JTkNSIDMyCistCistLyogVGhlIGZvbGxvd2luZyBpcyBmcm9tIHBhdGhtYXguaC4gICovCistLyogTm9uLVBPU0lYIEJTRCBzeXN0ZW1zIG1pZ2h0IGhhdmUgZ2NjJ3MgbGltaXRzLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCistICAgUEFUSF9NQVggYnV0IG1pZ2h0IGNhdXNlIHJlZGVmaW5pdGlvbiB3YXJuaW5ncyB3aGVuIHN5cy9wYXJhbS5oIGlzCistICAgbGF0ZXIgaW5jbHVkZWQgKGFzIG9uIE1PUkUvQlNEIDQuMykuICAqLworLSNpZiBkZWZpbmVkKF9QT1NJWF9WRVJTSU9OKSB8fCAoZGVmaW5lZChIQVZFX0xJTUlUU19IKSAmJiAhZGVmaW5lZChfX0dOVUNfXykpCistIyBpbmNsdWRlIDxsaW1pdHMuaD4KKy0jZW5kaWYKKy0KKy0jaWZuZGVmIF9QT1NJWF9QQVRIX01BWAorLSMgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTUKKy0jZW5kaWYKKy0KKy0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoX1BDX1BBVEhfTUFYKQorLSMgZGVmaW5lIFBBVEhfTUFYIChwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpIDwgMSA/IDEwMjQgOiBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpKQorLSNlbmRpZgorLQorLS8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCistI2lmIGRlZmluZWQoSEFWRV9TWVNfUEFSQU1fSCkgJiYgIWRlZmluZWQoUEFUSF9NQVgpICYmICFkZWZpbmVkKE1BWFBBVEhMRU4pCistIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0jZW5kaWYKKy0KKy0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoTUFYUEFUSExFTikKKy0jIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCistI2VuZGlmCistCistI2lmbmRlZiBQQVRIX01BWAorLSMgZGVmaW5lIFBBVEhfTUFYIF9QT1NJWF9QQVRIX01BWAorLSNlbmRpZgorLQorLS8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mIGBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6CistICAgYGBEaXJlY3RzIGBzZXRsb2NhbGUoKScgdG8gcXVlcnkgYGNhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50CistICAgICBzZXR0aW5nIG9mIGBsb2NhbCcuJycKKy0gICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIEFuZCBldmVuIHdvcnNlOiBQT1NJWAorLSAgIGRlZmluZXMgdGhpcyBub3QgYXQgYWxsLiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZAorLSAgIHN5c3RlbSAoZS5nLiB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAorLSNlbmRpZgorLQorLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgZG9tYWluIHVzZWQgZm9yIGdldHRleHQoMykgcHJpb3IgYW55IGNhbGwgdG8KKy0gICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdID0gIm1lc3NhZ2VzIjsKKy0KKy0vKiBWYWx1ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGRvbWFpbiBmb3IgZ2V0dGV4dCgzKS4gICovCistY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0vKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW10gPSBHTlVMT0NBTEVESVI7CistCistLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMgY3JlYXRlZCBieSBiaW5kdGV4dGRvbWFpbigpCistICAgY2FsbHMuICAqLworLXN0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOworLQorLS8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCistc3RhdGljIGNoYXIgKmZpbmRfbXNnIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAorLQkJCSAgICAgICBjb25zdCBjaGFyICptc2dpZCkpOworLXN0YXRpYyBjb25zdCBjaGFyICpjYXRlZ29yeV90b19uYW1lIFBBUkFNUyAoKGludCBjYXRlZ29yeSkpOworLXN0YXRpYyBjb25zdCBjaGFyICpndWVzc19jYXRlZ29yeV92YWx1ZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnksCistCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkpOworLQorLQorLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAorLSAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCistI2lmZGVmIEhBVkVfQUxMT0NBCistLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCistIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCistI2Vsc2UKKy1zdHJ1Y3QgYmxvY2tfbGlzdAorLXsKKy0gIHZvaWQgKmFkZHJlc3M7CistICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKKy19OworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAorLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCistICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAorLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKKy0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCistICAgIH0JCQkJCQkJCQkgICAgICBcCistICB9IHdoaWxlICgwKQorLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAorLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKKy0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKKy0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKKy0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCistICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIHVuZGVmIGFsbG9jYQorLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKKy0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KKy0KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0CistI2Vsc2UKKy0jIGRlZmluZSBEQ0dFVFRFWFQgZGNnZXR0ZXh0X18KKy0jZW5kaWYKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKKy0gICBsb2NhbGUuICAqLworLWNoYXIgKgorLURDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLSAgICAgaW50IGNhdGVnb3J5OworLXsKKy0jaWZuZGVmIEhBVkVfQUxMT0NBCistICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7CistI2VuZGlmCistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW47CistICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKKy0gIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZTsKKy0gIGNvbnN0IGNoYXIgKmNhdGVnb3J5dmFsdWU7CistICBjaGFyICpkaXJuYW1lLCAqeGRvbWFpbm5hbWU7CistICBjaGFyICpzaW5nbGVfbG9jYWxlOworLSAgY2hhciAqcmV0dmFsOworLSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87CistCistICAvKiBJZiBubyByZWFsIE1TR0lEIGlzIGdpdmVuIHJldHVybiBOVUxMLiAgKi8KKy0gIGlmIChtc2dpZCA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIC8qIElmIERPTUFJTk5BTUUgaXMgTlVMTCwgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgZG9tYWluLiAgSWYKKy0gICAgIENBVEVHT1JZIGlzIG5vdCBMQ19NRVNTQUdFUyB0aGlzIG1pZ2h0IG5vdCBtYWtlIG11Y2ggc2Vuc2UgYnV0IHRoZQorLSAgICAgZGVmaW50aW9uIGxlZnQgdGhpcyB1bmRlZmluZWQuICAqLworLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKKy0gICAgZG9tYWlubmFtZSA9IF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLQorLSAgLyogRmlyc3QgZmluZCBtYXRjaGluZyBiaW5kaW5nLiAgKi8KKy0gIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCistICAgIHsKKy0gICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7CistICAgICAgaWYgKGNvbXBhcmUgPT0gMCkKKy0JLyogV2UgZm91bmQgaXQhICAqLworLQlicmVhazsKKy0gICAgICBpZiAoY29tcGFyZSA8IDApCistCXsKKy0JICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLworLQkgIGJpbmRpbmcgPSBOVUxMOworLQkgIGJyZWFrOworLQl9CistICAgIH0KKy0KKy0gIGlmIChiaW5kaW5nID09IE5VTEwpCistICAgIGRpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOworLSAgZWxzZSBpZiAoYmluZGluZy0+ZGlybmFtZVswXSA9PSAnLycpCistICAgIGRpcm5hbWUgPSBiaW5kaW5nLT5kaXJuYW1lOworLSAgZWxzZQorLSAgICB7CistICAgICAgLyogV2UgaGF2ZSBhIHJlbGF0aXZlIHBhdGguICBNYWtlIGl0IGFic29sdXRlIG5vdy4gICovCistICAgICAgc2l6ZV90IGRpcm5hbWVfbGVuID0gc3RybGVuIChiaW5kaW5nLT5kaXJuYW1lKSArIDE7CistICAgICAgc2l6ZV90IHBhdGhfbWF4OworLSAgICAgIGNoYXIgKnJldDsKKy0KKy0gICAgICBwYXRoX21heCA9ICh1bnNpZ25lZCkgUEFUSF9NQVg7CistICAgICAgcGF0aF9tYXggKz0gMjsJCS8qIFRoZSBnZXRjd2QgZG9jcyBzYXkgdG8gZG8gdGhpcy4gICovCistCistICAgICAgZGlybmFtZSA9IChjaGFyICopIGFsbG9jYSAocGF0aF9tYXggKyBkaXJuYW1lX2xlbik7CistICAgICAgQUREX0JMT0NLIChibG9ja19saXN0LCBkaXJuYW1lKTsKKy0KKy0gICAgICBfX3NldF9lcnJubyAoMCk7CistICAgICAgd2hpbGUgKChyZXQgPSBnZXRjd2QgKGRpcm5hbWUsIHBhdGhfbWF4KSkgPT0gTlVMTCAmJiBlcnJubyA9PSBFUkFOR0UpCistCXsKKy0JICBwYXRoX21heCArPSBQQVRIX0lOQ1I7CistCSAgZGlybmFtZSA9IChjaGFyICopIGFsbG9jYSAocGF0aF9tYXggKyBkaXJuYW1lX2xlbik7CistCSAgQUREX0JMT0NLIChibG9ja19saXN0LCBkaXJuYW1lKTsKKy0JICBfX3NldF9lcnJubyAoMCk7CistCX0KKy0KKy0gICAgICBpZiAocmV0ID09IE5VTEwpCistCXsKKy0JICAvKiBXZSBjYW5ub3QgZ2V0IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiAgRG9uJ3Qgc2lnbmFsIGFuCistCSAgICAgZXJyb3IgYnV0IHNpbXBseSByZXR1cm4gdGhlIGRlZmF1bHQgc3RyaW5nLiAgKi8KKy0JICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCSAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKKy0JICByZXR1cm4gKGNoYXIgKikgbXNnaWQ7CistCX0KKy0KKy0gICAgICBzdHBjcHkgKHN0cGNweSAoc3RyY2hyIChkaXJuYW1lLCAnXDAnKSwgIi8iKSwgYmluZGluZy0+ZGlybmFtZSk7CistICAgIH0KKy0KKy0gIC8qIE5vdyBkZXRlcm1pbmUgdGhlIHN5bWJvbGljIG5hbWUgb2YgQ0FURUdPUlkgYW5kIGl0cyB2YWx1ZS4gICovCistICBjYXRlZ29yeW5hbWUgPSBjYXRlZ29yeV90b19uYW1lIChjYXRlZ29yeSk7CistICBjYXRlZ29yeXZhbHVlID0gZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOworLQorLSAgeGRvbWFpbm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnluYW1lKQorLQkJCQkgKyBzdHJsZW4gKGRvbWFpbm5hbWUpICsgNSk7CistICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHhkb21haW5uYW1lKTsKKy0KKy0gIHN0cGNweSAoc3RwY3B5IChzdHBjcHkgKHN0cGNweSAoeGRvbWFpbm5hbWUsIGNhdGVnb3J5bmFtZSksICIvIiksCistCQkgIGRvbWFpbm5hbWUpLAorLQkgICIubW8iKTsKKy0KKy0gIC8qIENyZWF0aW5nIHdvcmtpbmcgYXJlYS4gICovCistICBzaW5nbGVfbG9jYWxlID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5dmFsdWUpICsgMSk7CistICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHNpbmdsZV9sb2NhbGUpOworLQorLQorLSAgLyogU2VhcmNoIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLiAgVGhpcyBpcyBhIGxvb3AgYmVjYXVzZSB3ZSBwZXJoYXBzCistICAgICBnb3QgYW4gb3JkZXJlZCBsaXN0IG9mIGxhbmd1YWdlcyB0byBjb25zaWRlciBmb3IgdGggdHJhbnNsYXRpb24uICAqLworLSAgd2hpbGUgKDEpCistICAgIHsKKy0gICAgICAvKiBNYWtlIENBVEVHT1JZVkFMVUUgcG9pbnQgdG8gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgbGlzdC4gICovCistICAgICAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdID09ICc6JykKKy0JKytjYXRlZ29yeXZhbHVlOworLSAgICAgIGlmIChjYXRlZ29yeXZhbHVlWzBdID09ICdcMCcpCistCXsKKy0JICAvKiBUaGUgd2hvbGUgY29udGVudHMgb2YgQ0FURUdPUllWQUxVRSBoYXMgYmVlbiBzZWFyY2hlZCBidXQKKy0JICAgICBubyB2YWxpZCBlbnRyeSBoYXMgYmVlbiBmb3VuZC4gIFdlIHNvbHZlIHRoaXMgc2l0dWF0aW9uCistCSAgICAgYnkgaW1wbGljaXRseSBhcHBlbmRpbmcgYSAiQyIgZW50cnksIGkuZS4gbm8gdHJhbnNsYXRpb24KKy0JICAgICB3aWxsIHRha2UgcGxhY2UuICAqLworLQkgIHNpbmdsZV9sb2NhbGVbMF0gPSAnQyc7CistCSAgc2luZ2xlX2xvY2FsZVsxXSA9ICdcMCc7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICBjaGFyICpjcCA9IHNpbmdsZV9sb2NhbGU7CistCSAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdICE9ICc6JykKKy0JICAgICpjcCsrID0gKmNhdGVnb3J5dmFsdWUrKzsKKy0JICAqY3AgPSAnXDAnOworLQl9CistCistICAgICAgLyogSWYgdGhlIGN1cnJlbnQgbG9jYWxlIHZhbHVlIGlzIEMgKG9yIFBPU0lYKSB3ZSBkb24ndCBsb2FkIGEKKy0JIGRvbWFpbi4gIFJldHVybiB0aGUgTVNHSUQuICAqLworLSAgICAgIGlmIChzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJDIikgPT0gMAorLQkgIHx8IHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIlBPU0lYIikgPT0gMCkKKy0JeworLQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOworLQkgIHJldHVybiAoY2hhciAqKSBtc2dpZDsKKy0JfQorLQorLQorLSAgICAgIC8qIEZpbmQgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBtYXRjaGluZyB0aGUKKy0JIERPTUFJTk5BTUUgYW5kIENBVEVHT1JZLiAgKi8KKy0gICAgICBkb21haW4gPSBfbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIHNpbmdsZV9sb2NhbGUsIHhkb21haW5uYW1lKTsKKy0KKy0gICAgICBpZiAoZG9tYWluICE9IE5VTEwpCistCXsKKy0JICByZXR2YWwgPSBmaW5kX21zZyAoZG9tYWluLCBtc2dpZCk7CistCistCSAgaWYgKHJldHZhbCA9PSBOVUxMKQorLQkgICAgeworLQkgICAgICBpbnQgY250OworLQorLQkgICAgICBmb3IgKGNudCA9IDA7IGRvbWFpbi0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCistCQl7CistCQkgIHJldHZhbCA9IGZpbmRfbXNnIChkb21haW4tPnN1Y2Nlc3NvcltjbnRdLCBtc2dpZCk7CistCistCQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0JCSAgICBicmVhazsKKy0JCX0KKy0JICAgIH0KKy0KKy0JICBpZiAocmV0dmFsICE9IE5VTEwpCistCSAgICB7CistCSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0JICAgICAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKKy0JICAgICAgcmV0dXJuIHJldHZhbDsKKy0JICAgIH0KKy0JfQorLSAgICB9CistICAvKiBOT1RSRUFDSEVEICovCistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fZGNnZXR0ZXh0LCBkY2dldHRleHQpOworLSNlbmRpZgorLQorLQorLXN0YXRpYyBjaGFyICoKKy1maW5kX21zZyAoZG9tYWluX2ZpbGUsIG1zZ2lkKQorLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy17CistICBzaXplX3QgdG9wLCBhY3QsIGJvdHRvbTsKKy0gIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47CistCistICBpZiAoZG9tYWluX2ZpbGUtPmRlY2lkZWQgPT0gMCkKKy0gICAgX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSk7CistCistICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7CistCistICAvKiBMb2NhdGUgdGhlIE1TR0lEIGFuZCBpdHMgdHJhbnNsYXRpb24uICAqLworLSAgaWYgKGRvbWFpbi0+aGFzaF9zaXplID4gMiAmJiBkb21haW4tPmhhc2hfdGFiICE9IE5VTEwpCistICAgIHsKKy0gICAgICAvKiBVc2UgdGhlIGhhc2hpbmcgdGFibGUuICAqLworLSAgICAgIG5sc191aW50MzIgbGVuID0gc3RybGVuIChtc2dpZCk7CistICAgICAgbmxzX3VpbnQzMiBoYXNoX3ZhbCA9IGhhc2hfc3RyaW5nIChtc2dpZCk7CistICAgICAgbmxzX3VpbnQzMiBpZHggPSBoYXNoX3ZhbCAlIGRvbWFpbi0+aGFzaF9zaXplOworLSAgICAgIG5sc191aW50MzIgaW5jciA9IDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7CistICAgICAgbmxzX3VpbnQzMiBuc3RyID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7CistCistICAgICAgaWYgKG5zdHIgPT0gMCkKKy0JLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCistCXJldHVybiBOVUxMOworLQorLSAgICAgIGlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ubGVuZ3RoKSA9PSBsZW4KKy0JICAmJiBzdHJjbXAgKG1zZ2lkLAorLQkJICAgICBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJICAgICAgIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLm9mZnNldCkpID09IDApCistCXJldHVybiAoY2hhciAqKSBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJCSAgZG9tYWluLT50cmFuc190YWJbbnN0ciAtIDFdLm9mZnNldCk7CistCistICAgICAgd2hpbGUgKDEpCistCXsKKy0JICBpZiAoaWR4ID49IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcikKKy0JICAgIGlkeCAtPSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3I7CistCSAgZWxzZQorLQkgICAgaWR4ICs9IGluY3I7CistCistCSAgbnN0ciA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOworLQkgIGlmIChuc3RyID09IDApCistCSAgICAvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KKy0JICAgIHJldHVybiBOVUxMOworLQorLQkgIGlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ubGVuZ3RoKSA9PSBsZW4KKy0JICAgICAgJiYgc3RyY21wIChtc2dpZCwKKy0JCQkgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCQkgICBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5vZmZzZXQpKQorLQkgICAgICAgICA9PSAwKQorLQkgICAgcmV0dXJuIChjaGFyICopIGRvbWFpbi0+ZGF0YQorLQkgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYltuc3RyIC0gMV0ub2Zmc2V0KTsKKy0JfQorLSAgICAgIC8qIE5PVFJFQUNIRUQgKi8KKy0gICAgfQorLQorLSAgLyogTm93IHdlIHRyeSB0aGUgZGVmYXVsdCBtZXRob2Q6ICBiaW5hcnkgc2VhcmNoIGluIHRoZSBzb3J0ZWQKKy0gICAgIGFycmF5IG9mIG1lc3NhZ2VzLiAgKi8KKy0gIGJvdHRvbSA9IDA7CistICB0b3AgPSBkb21haW4tPm5zdHJpbmdzOworLSAgd2hpbGUgKGJvdHRvbSA8IHRvcCkKKy0gICAgeworLSAgICAgIGludCBjbXBfdmFsOworLQorLSAgICAgIGFjdCA9IChib3R0b20gKyB0b3ApIC8gMjsKKy0gICAgICBjbXBfdmFsID0gc3RyY21wIChtc2dpZCwgZG9tYWluLT5kYXRhCistCQkJICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCSAgICBkb21haW4tPm9yaWdfdGFiW2FjdF0ub2Zmc2V0KSk7CistICAgICAgaWYgKGNtcF92YWwgPCAwKQorLQl0b3AgPSBhY3Q7CistICAgICAgZWxzZSBpZiAoY21wX3ZhbCA+IDApCistCWJvdHRvbSA9IGFjdCArIDE7CistICAgICAgZWxzZQorLQlicmVhazsKKy0gICAgfQorLQorLSAgLyogSWYgYW4gdHJhbnNsYXRpb24gaXMgZm91bmQgcmV0dXJuIHRoaXMuICAqLworLSAgcmV0dXJuIGJvdHRvbSA+PSB0b3AgPyBOVUxMIDogKGNoYXIgKikgZG9tYWluLT5kYXRhCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkgICAgIGRvbWFpbi0+dHJhbnNfdGFiW2FjdF0ub2Zmc2V0KTsKKy19CistCistCistLyogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsb2NhbGUgQ0FURUdPUlkuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICoKKy1jYXRlZ29yeV90b19uYW1lIChjYXRlZ29yeSkKKy0gICAgIGludCBjYXRlZ29yeTsKKy17CistICBjb25zdCBjaGFyICpyZXR2YWw7CistCistICBzd2l0Y2ggKGNhdGVnb3J5KQorLSAgeworLSNpZmRlZiBMQ19DT0xMQVRFCistICBjYXNlIExDX0NPTExBVEU6CistICAgIHJldHZhbCA9ICJMQ19DT0xMQVRFIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX0NUWVBFCistICBjYXNlIExDX0NUWVBFOgorLSAgICByZXR2YWwgPSAiTENfQ1RZUEUiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfTU9ORVRBUlkKKy0gIGNhc2UgTENfTU9ORVRBUlk6CistICAgIHJldHZhbCA9ICJMQ19NT05FVEFSWSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19OVU1FUklDCistICBjYXNlIExDX05VTUVSSUM6CistICAgIHJldHZhbCA9ICJMQ19OVU1FUklDIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX1RJTUUKKy0gIGNhc2UgTENfVElNRToKKy0gICAgcmV0dmFsID0gIkxDX1RJTUUiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfTUVTU0FHRVMKKy0gIGNhc2UgTENfTUVTU0FHRVM6CistICAgIHJldHZhbCA9ICJMQ19NRVNTQUdFUyI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19SRVNQT05TRQorLSAgY2FzZSBMQ19SRVNQT05TRToKKy0gICAgcmV0dmFsID0gIkxDX1JFU1BPTlNFIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX0FMTAorLSAgY2FzZSBMQ19BTEw6CistICAgIC8qIFRoaXMgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgYnV0IGlzIHBlcmhhcHMgYmV0dGVyIHRoYW4gYW55IG90aGVyCistICAgICAgIHZhbHVlLiAgKi8KKy0gICAgcmV0dmFsID0gIkxDX0FMTCI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSAgZGVmYXVsdDoKKy0gICAgLyogSWYgeW91IGhhdmUgYSBiZXR0ZXIgaWRlYSBmb3IgYSBkZWZhdWx0IHZhbHVlIGxldCBtZSBrbm93LiAgKi8KKy0gICAgcmV0dmFsID0gIkxDX1hYWCI7CistICB9CistCistICByZXR1cm4gcmV0dmFsOworLX0KKy0KKy0vKiBHdWVzcyB2YWx1ZSBvZiBjdXJyZW50IGxvY2FsZSBmcm9tIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICoKKy1ndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSkKKy0gICAgIGludCBjYXRlZ29yeTsKKy0gICAgIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZTsKKy17CistICBjb25zdCBjaGFyICpyZXR2YWw7CistCistICAvKiBUaGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBpcyB0aGUgYExBTkdVQUdFJyBlbnZpcm9ubWVudAorLSAgICAgdmFyaWFibGUuICBUaGlzIGlzIGEgR05VIGV4dGVuc2lvbi4gICovCistICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HVUFHRSIpOworLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorLSAgICByZXR1cm4gcmV0dmFsOworLQorLSAgLyogYExBTkdVQUdFJyBpcyBub3Qgc2V0LiAgU28gd2UgaGF2ZSB0byBwcm9jZWVkIHdpdGggdGhlIFBPU0lYCistICAgICBtZXRob2RzIG9mIGxvb2tpbmcgdG8gYExDX0FMTCcsIGBMQ194eHgnLCBhbmQgYExBTkcnLiAgT24gc29tZQorLSAgICAgc3lzdGVtcyB0aGlzIGNhbiBiZSBkb25lIGJ5IHRoZSBgc2V0bG9jYWxlJyBmdW5jdGlvbiBpdHNlbGYuICAqLworLSNpZiBkZWZpbmVkIEhBVkVfU0VUTE9DQUxFICYmIGRlZmluZWQgSEFWRV9MQ19NRVNTQUdFUyAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKKy0gIHJldHVybiBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKTsKKy0jZWxzZQorLSAgLyogU2V0dGluZyBvZiBMQ19BTEwgb3ZlcndyaXRlcyBhbGwgb3RoZXIuICAqLworLSAgcmV0dmFsID0gZ2V0ZW52ICgiTENfQUxMIik7CistICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCistICAgIHJldHVybiByZXR2YWw7CistCistICAvKiBOZXh0IGNvbWVzIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIGNhdGVnb3J5LiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoY2F0ZWdvcnluYW1lKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIExhc3QgcG9zc2liaWxpdHkgaXMgdGhlIExBTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLworLSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFORyIpOworLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorLSAgICByZXR1cm4gcmV0dmFsOworLQorLSAgLyogV2UgdXNlIEMgYXMgdGhlIGRlZmF1bHQgZG9tYWluLiAgUE9TSVggc2F5cyB0aGlzIGlzIGltcGxlbWVudGF0aW9uCistICAgICBkZWZpbmVkLiAgKi8KKy0gIHJldHVybiAiQyI7CistI2VuZGlmCistfQorLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCistICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKKy0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQorLSAgIHRvIGJlIGRlZmluZWQuICAqLworLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKgorLXN0cGNweSAoZGVzdCwgc3JjKQorLSAgICAgY2hhciAqZGVzdDsKKy0gICAgIGNvbnN0IGNoYXIgKnNyYzsKKy17CistICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCistICAgIC8qIERvIG5vdGhpbmcuICovIDsKKy0gIHJldHVybiBkZXN0IC0gMTsKKy19CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jIGxyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNTkgKzAsMCBAQAorLS8qIGRnZXR0ZXh0LmMgLS0gaW1wbGVtZW50YXRpb24gb2YgdGhlIGRnZXR0ZXh0KDMpIGZ1bmN0aW9uCistICAgQ29weXJpZ2h0IChDKSAxOTk1IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLWFueSBsYXRlciB2ZXJzaW9uLgorLQorLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy1hbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPGxvY2FsZS5oPgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0CistIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0CistI2Vsc2UKKy0jIGRlZmluZSBER0VUVEVYVCBkZ2V0dGV4dF9fCistIyBkZWZpbmUgRENHRVRURVhUIGRjZ2V0dGV4dF9fCistI2VuZGlmCistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgb2YgdGhlIGN1cnJlbnQKKy0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLworLWNoYXIgKgorLURHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy17CistICByZXR1cm4gRENHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgTENfTUVTU0FHRVMpOworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX2RnZXR0ZXh0LCBkZ2V0dGV4dCk7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jIGxyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTgxICswLDAgQEAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpbmNsdWRlICJsb2FkaW5mby5oIgorLQorLS8qIE9uIHNvbWUgc3RyYW5nZSBzeXN0ZW1zIHN0aWxsIG5vIGRlZmluaXRpb24gb2YgTlVMTCBpcyBmb3VuZC4gIFNpZ2ghICAqLworLSNpZm5kZWYgTlVMTAorLSMgaWYgZGVmaW5lZCBfX1NURENfXyAmJiBfX1NURENfXworLSMgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQorLSMgZWxzZQorLSMgIGRlZmluZSBOVUxMIDAKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLWludAorLV9ubF9leHBsb2RlX25hbWUgKG5hbWUsIGxhbmd1YWdlLCBtb2RpZmllciwgdGVycml0b3J5LCBjb2Rlc2V0LAorLQkJICBub3JtYWxpemVkX2NvZGVzZXQsIHNwZWNpYWwsIHNwb25zb3IsIHJldmlzaW9uKQorLSAgICAgY2hhciAqbmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKipsYW5ndWFnZTsKKy0gICAgIGNvbnN0IGNoYXIgKiptb2RpZmllcjsKKy0gICAgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnk7CistICAgICBjb25zdCBjaGFyICoqY29kZXNldDsKKy0gICAgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQ7CistICAgICBjb25zdCBjaGFyICoqc3BlY2lhbDsKKy0gICAgIGNvbnN0IGNoYXIgKipzcG9uc29yOworLSAgICAgY29uc3QgY2hhciAqKnJldmlzaW9uOworLXsKKy0gIGVudW0geyB1bmRlY2lkZWQsIHhwZywgY2VuIH0gc3ludGF4OworLSAgY2hhciAqY3A7CistICBpbnQgbWFzazsKKy0KKy0gICptb2RpZmllciA9IE5VTEw7CistICAqdGVycml0b3J5ID0gTlVMTDsKKy0gICpjb2Rlc2V0ID0gTlVMTDsKKy0gICpub3JtYWxpemVkX2NvZGVzZXQgPSBOVUxMOworLSAgKnNwZWNpYWwgPSBOVUxMOworLSAgKnNwb25zb3IgPSBOVUxMOworLSAgKnJldmlzaW9uID0gTlVMTDsKKy0KKy0gIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAorLSAgICAgbG9vayBmb3IgdGhlIGxhbmd1YWdlLiAgVGVybWluYXRpb24gc3ltYm9scyBhcmUgYF8nIGFuZCBgQCcgaWYKKy0gICAgIHdlIHVzZSBYUEc0IHN0eWxlLCBhbmQgYF8nLCBgKycsIGFuZCBgLCcgaWYgd2UgdXNlIENFTiBzeW50YXguICAqLworLSAgbWFzayA9IDA7CistICBzeW50YXggPSB1bmRlY2lkZWQ7CistICAqbGFuZ3VhZ2UgPSBjcCA9IG5hbWU7CistICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnXycgJiYgY3BbMF0gIT0gJ0AnCistCSAmJiBjcFswXSAhPSAnKycgJiYgY3BbMF0gIT0gJywnKQorLSAgICArK2NwOworLQorLSAgaWYgKCpsYW5ndWFnZSA9PSBjcCkKKy0gICAgLyogVGhpcyBkb2VzIG5vdCBtYWtlIHNlbnNlOiBsYW5ndWFnZSBoYXMgdG8gYmUgc3BlY2lmaWVkLiAgVXNlCistICAgICAgIHRoaXMgZW50cnkgYXMgaXQgaXMgd2l0aG91dCBleHBsb2RpbmcuICBQZXJoYXBzIGl0IGlzIGFuIGFsaWFzLiAgKi8KKy0gICAgY3AgPSBzdHJjaHIgKCpsYW5ndWFnZSwgJ1wwJyk7CistICBlbHNlIGlmIChjcFswXSA9PSAnXycpCistICAgIHsKKy0gICAgICAvKiBOZXh0IGlzIHRoZSB0ZXJyaXRvcnkuICAqLworLSAgICAgIGNwWzBdID0gJ1wwJzsKKy0gICAgICAqdGVycml0b3J5ID0gKytjcDsKKy0KKy0gICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnLicgJiYgY3BbMF0gIT0gJ0AnCistCSAgICAgJiYgY3BbMF0gIT0gJysnICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCistCSsrY3A7CistCistICAgICAgbWFzayB8PSBURVJSSVRPUlk7CistCistICAgICAgaWYgKGNwWzBdID09ICcuJykKKy0JeworLQkgIC8qIE5leHQgaXMgdGhlIGNvZGVzZXQuICAqLworLQkgIHN5bnRheCA9IHhwZzsKKy0JICBjcFswXSA9ICdcMCc7CistCSAgKmNvZGVzZXQgPSArK2NwOworLQorLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICdAJykKKy0JICAgICsrY3A7CistCistCSAgbWFzayB8PSBYUEdfQ09ERVNFVDsKKy0KKy0JICBpZiAoKmNvZGVzZXQgIT0gY3AgJiYgKCpjb2Rlc2V0KVswXSAhPSAnXDAnKQorLQkgICAgeworLQkgICAgICAqbm9ybWFsaXplZF9jb2Rlc2V0ID0gX25sX25vcm1hbGl6ZV9jb2Rlc2V0ICgqY29kZXNldCwKKy0JCQkJCQkJICAgY3AgLSAqY29kZXNldCk7CistCSAgICAgIGlmIChzdHJjbXAgKCpjb2Rlc2V0LCAqbm9ybWFsaXplZF9jb2Rlc2V0KSA9PSAwKQorLQkJZnJlZSAoKGNoYXIgKikgKm5vcm1hbGl6ZWRfY29kZXNldCk7CistCSAgICAgIGVsc2UKKy0JCW1hc2sgfD0gWFBHX05PUk1fQ09ERVNFVDsKKy0JICAgIH0KKy0JfQorLSAgICB9CistCistICBpZiAoY3BbMF0gPT0gJ0AnIHx8IChzeW50YXggIT0geHBnICYmIGNwWzBdID09ICcrJykpCistICAgIHsKKy0gICAgICAvKiBOZXh0IGlzIHRoZSBtb2RpZmllci4gICovCistICAgICAgc3ludGF4ID0gY3BbMF0gPT0gJ0AnID8geHBnIDogY2VuOworLSAgICAgIGNwWzBdID0gJ1wwJzsKKy0gICAgICAqbW9kaWZpZXIgPSArK2NwOworLQorLSAgICAgIHdoaWxlIChzeW50YXggPT0gY2VuICYmIGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJysnCistCSAgICAgJiYgY3BbMF0gIT0gJywnICYmIGNwWzBdICE9ICdfJykKKy0JKytjcDsKKy0KKy0gICAgICBtYXNrIHw9IFhQR19NT0RJRklFUiB8IENFTl9BVURJRU5DRTsKKy0gICAgfQorLQorLSAgaWYgKHN5bnRheCAhPSB4cGcgJiYgKGNwWzBdID09ICcrJyB8fCBjcFswXSA9PSAnLCcgfHwgY3BbMF0gPT0gJ18nKSkKKy0gICAgeworLSAgICAgIHN5bnRheCA9IGNlbjsKKy0KKy0gICAgICBpZiAoY3BbMF0gPT0gJysnKQorLQl7CistIAkgIC8qIE5leHQgaXMgc3BlY2lhbCBhcHBsaWNhdGlvbiAoQ0VOIHN5bnRheCkuICAqLworLQkgIGNwWzBdID0gJ1wwJzsKKy0JICAqc3BlY2lhbCA9ICsrY3A7CistCistCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJywnICYmIGNwWzBdICE9ICdfJykKKy0JICAgICsrY3A7CistCistCSAgbWFzayB8PSBDRU5fU1BFQ0lBTDsKKy0JfQorLQorLSAgICAgIGlmIChjcFswXSA9PSAnLCcpCistCXsKKy0gCSAgLyogTmV4dCBpcyBzcG9uc29yIChDRU4gc3ludGF4KS4gICovCistCSAgY3BbMF0gPSAnXDAnOworLQkgICpzcG9uc29yID0gKytjcDsKKy0KKy0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnXycpCistCSAgICArK2NwOworLQorLQkgIG1hc2sgfD0gQ0VOX1NQT05TT1I7CistCX0KKy0KKy0gICAgICBpZiAoY3BbMF0gPT0gJ18nKQorLQl7CistIAkgIC8qIE5leHQgaXMgcmV2aXNpb24gKENFTiBzeW50YXgpLiAgKi8KKy0JICBjcFswXSA9ICdcMCc7CistCSAgKnJldmlzaW9uID0gKytjcDsKKy0KKy0JICBtYXNrIHw9IENFTl9SRVZJU0lPTjsKKy0JfQorLSAgICB9CistCistICAvKiBGb3IgQ0VOIHN5bnRheCB2YWx1ZXMgaXQgbWlnaHQgYmUgaW1wb3J0YW50IHRvIGhhdmUgdGhlCistICAgICBzZXBhcmF0b3IgY2hhcmFjdGVyIGluIHRoZSBmaWxlIG5hbWUsIG5vdCBmb3IgWFBHIHN5bnRheC4gICovCistICBpZiAoc3ludGF4ID09IHhwZykKKy0gICAgeworLSAgICAgIGlmICgqdGVycml0b3J5ICE9IE5VTEwgJiYgKCp0ZXJyaXRvcnkpWzBdID09ICdcMCcpCistCW1hc2sgJj0gflRFUlJJVE9SWTsKKy0KKy0gICAgICBpZiAoKmNvZGVzZXQgIT0gTlVMTCAmJiAoKmNvZGVzZXQpWzBdID09ICdcMCcpCistCW1hc2sgJj0gflhQR19DT0RFU0VUOworLQorLSAgICAgIGlmICgqbW9kaWZpZXIgIT0gTlVMTCAmJiAoKm1vZGlmaWVyKVswXSA9PSAnXDAnKQorLQltYXNrICY9IH5YUEdfTU9ESUZJRVI7CistICAgIH0KKy0KKy0gIHJldHVybiBtYXNrOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYyBscnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYwkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE4OSArMCwwIEBACistLyogSGFuZGxlIGxpc3Qgb2YgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZWxzZQorLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBzdHJjaHIKKy0jICBkZWZpbmUgc3RyY2hyIGluZGV4CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0vKiBMaXN0IG9mIGFscmVhZHkgbG9hZGVkIGRvbWFpbnMuICAqLworLXN0YXRpYyBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfbG9hZGVkX2RvbWFpbnM7CistCistCistLyogUmV0dXJuIGEgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIGRlc2NyaWJlZCBieQorLSAgIHRoZSBET01BSU5OQU1FIGFuZCBDQVRFR09SWSBwYXJhbWV0ZXJzIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudGx5CistICAgZXN0YWJsaXNoZWQgYmluZGluZ3MuICAqLworLXN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgorLV9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgbG9jYWxlLCBkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKKy0gICAgIGNoYXIgKmxvY2FsZTsKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CisteworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqcmV0dmFsOworLSAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7CistICBjb25zdCBjaGFyICptb2RpZmllcjsKKy0gIGNvbnN0IGNoYXIgKnRlcnJpdG9yeTsKKy0gIGNvbnN0IGNoYXIgKmNvZGVzZXQ7CistICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQ7CistICBjb25zdCBjaGFyICpzcGVjaWFsOworLSAgY29uc3QgY2hhciAqc3BvbnNvcjsKKy0gIGNvbnN0IGNoYXIgKnJldmlzaW9uOworLSAgY29uc3QgY2hhciAqYWxpYXNfdmFsdWU7CistICBpbnQgbWFzazsKKy0KKy0gIC8qIExPQ0FMRSBjYW4gY29uc2lzdCBvZiB1cCB0byBmb3VyIHJlY29nbml6ZWQgcGFydHMgZm9yIHRoZSBYUEcgc3ludGF4OgorLQorLQkJbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0KKy0KKy0gICAgIGFuZCBzaXggcGFydHMgZm9yIHRoZSBDRU4gc3ludGF4OgorLQorLQlsYW5ndWFnZVtfdGVycml0b3J5XVsrYXVkaWVuY2VdWytzcGVjaWFsXVssW3Nwb25zb3JdW19yZXZpc2lvbl1dCistCistICAgICBCZXNpZGUgdGhlIGZpcnN0IGFsbCBvZiB0aGVtIGFyZSBhbGxvd2VkIHRvIGJlIG1pc3NpbmcuICBJZiB0aGUKKy0gICAgIGZ1bGwgc3BlY2lmaWVkIGxvY2FsZSBpcyBub3QgZm91bmQsIHRoZSBsZXNzIHNwZWNpZmljIG9uZSBhcmUKKy0gICAgIGxvb2tlZCBmb3IuICBUaGUgdmFyaW91cyBwYXJ0IHdpbGwgYmUgc3RyaXBwZWQgb2YgYWNjb3JkaW5nIHRvCistICAgICB0aGUgZm9sbG93aW5nIG9yZGVyOgorLQkJKDEpIHJldmlzaW9uCistCQkoMikgc3BvbnNvcgorLQkJKDMpIHNwZWNpYWwKKy0JCSg0KSBjb2Rlc2V0CistCQkoNSkgbm9ybWFsaXplZCBjb2Rlc2V0CistCQkoNikgdGVycml0b3J5CistCQkoNykgYXVkaWVuY2UvbW9kaWZpZXIKKy0gICAqLworLQorLSAgLyogSWYgd2UgaGF2ZSBhbHJlYWR5IHRlc3RlZCBmb3IgdGhpcyBsb2NhbGUgZW50cnkgdGhlcmUgaGFzIHRvCistICAgICBiZSBvbmUgZGF0YSBzZXQgaW4gdGhlIGxpc3Qgb2YgbG9hZGVkIGRvbWFpbnMuICAqLworLSAgcmV0dmFsID0gX25sX21ha2VfbDEwbmZsaXN0ICgmX25sX2xvYWRlZF9kb21haW5zLCBkaXJuYW1lLAorLQkJCSAgICAgICBzdHJsZW4gKGRpcm5hbWUpICsgMSwgMCwgbG9jYWxlLCBOVUxMLCBOVUxMLAorLQkJCSAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBkb21haW5uYW1lLCAwKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIC8qIFdlIGtub3cgc29tZXRoaW5nIGFib3V0IHRoaXMgbG9jYWxlLiAgKi8KKy0gICAgICBpbnQgY250OworLQorLSAgICAgIGlmIChyZXR2YWwtPmRlY2lkZWQgPT0gMCkKKy0JX25sX2xvYWRfZG9tYWluIChyZXR2YWwpOworLQorLSAgICAgIGlmIChyZXR2YWwtPmRhdGEgIT0gTlVMTCkKKy0JcmV0dXJuIHJldHZhbDsKKy0KKy0gICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCistCXsKKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQorLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKKy0KKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQorLQkgICAgYnJlYWs7CistCX0KKy0gICAgICByZXR1cm4gY250ID49IDAgPyByZXR2YWwgOiBOVUxMOworLSAgICAgIC8qIE5PVFJFQUNIRUQgKi8KKy0gICAgfQorLQorLSAgLyogU2VlIHdoZXRoZXIgdGhlIGxvY2FsZSB2YWx1ZSBpcyBhbiBhbGlhcy4gIElmIHllcyBpdHMgdmFsdWUKKy0gICAgICpvdmVyd3JpdGVzKiB0aGUgYWxpYXMgbmFtZS4gIE5vIHRlc3QgZm9yIHRoZSBvcmlnaW5hbCB2YWx1ZSBpcworLSAgICAgZG9uZS4gICovCistICBhbGlhc192YWx1ZSA9IF9ubF9leHBhbmRfYWxpYXMgKGxvY2FsZSk7CistICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGFsaWFzX3ZhbHVlKSArIDE7CistICAgICAgbG9jYWxlID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLSAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistCistICAgICAgbWVtY3B5IChsb2NhbGUsIGFsaWFzX3ZhbHVlLCBsZW4pOworLSAgICB9CistCistICAvKiBOb3cgd2UgZGV0ZXJtaW5lIHRoZSBzaW5nbGUgcGFydHMgb2YgdGhlIGxvY2FsZSBuYW1lLiAgRmlyc3QKKy0gICAgIGxvb2sgZm9yIHRoZSBsYW5ndWFnZS4gIFRlcm1pbmF0aW9uIHN5bWJvbHMgYXJlIGBfJyBhbmQgYEAnIGlmCistICAgICB3ZSB1c2UgWFBHNCBzdHlsZSwgYW5kIGBfJywgYCsnLCBhbmQgYCwnIGlmIHdlIHVzZSBDRU4gc3ludGF4LiAgKi8KKy0gIG1hc2sgPSBfbmxfZXhwbG9kZV9uYW1lIChsb2NhbGUsICZsYW5ndWFnZSwgJm1vZGlmaWVyLCAmdGVycml0b3J5LAorLQkJCSAgICZjb2Rlc2V0LCAmbm9ybWFsaXplZF9jb2Rlc2V0LCAmc3BlY2lhbCwKKy0JCQkgICAmc3BvbnNvciwgJnJldmlzaW9uKTsKKy0KKy0gIC8qIENyZWF0ZSBhbGwgcG9zc2libGUgbG9jYWxlIGVudHJpZXMgd2hpY2ggbWlnaHQgYmUgaW50ZXJlc3RlZCBpbgorLSAgICAgZ2VuZXJhbGl6YXRpb24uICAqLworLSAgcmV0dmFsID0gX25sX21ha2VfbDEwbmZsaXN0ICgmX25sX2xvYWRlZF9kb21haW5zLCBkaXJuYW1lLAorLQkJCSAgICAgICBzdHJsZW4gKGRpcm5hbWUpICsgMSwgbWFzaywgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwKKy0JCQkgICAgICAgY29kZXNldCwgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKKy0JCQkgICAgICAgc3BvbnNvciwgcmV2aXNpb24sIGRvbWFpbm5hbWUsIDEpOworLSAgaWYgKHJldHZhbCA9PSBOVUxMKQorLSAgICAvKiBUaGlzIG1lYW5zIHdlIGFyZSBvdXQgb2YgY29yZS4gICovCistICAgIHJldHVybiBOVUxMOworLQorLSAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQorLSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbCk7CistICBpZiAocmV0dmFsLT5kYXRhID09IE5VTEwpCistICAgIHsKKy0gICAgICBpbnQgY250OworLSAgICAgIGZvciAoY250ID0gMDsgcmV0dmFsLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKKy0JeworLQkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kZWNpZGVkID09IDApCistCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0pOworLQkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCistCSAgICBicmVhazsKKy0JfQorLSAgICB9CistCistICAvKiBUaGUgcm9vbSBmb3IgYW4gYWxpYXMgd2FzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gIEZyZWUgaXQgbm93LiAgKi8KKy0gIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQorLSAgICBmcmVlIChsb2NhbGUpOworLQorLSAgcmV0dXJuIHJldHZhbDsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw3MCArMCwwIEBACistLyogSW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dCgzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBfX25lZWRfTlVMTAorLSMgaW5jbHVkZSA8c3RkZGVmLmg+CistI2Vsc2UKKy0jIGlmZGVmIFNURENfSEVBREVSUworLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCistIyBlbHNlCistIyAgaWZkZWYgSEFWRV9TVFJJTkdfSAorLSMgICBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jICBlbHNlCistIyAgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQorLSMgIGVuZGlmCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBHRVRURVhUIF9fZ2V0dGV4dAorLSMgZGVmaW5lIERHRVRURVhUIF9fZGdldHRleHQKKy0jZWxzZQorLSMgZGVmaW5lIEdFVFRFWFQgZ2V0dGV4dF9fCistIyBkZWZpbmUgREdFVFRFWFQgZGdldHRleHRfXworLSNlbmRpZgorLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50CistICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKKy0gICB0ZXh0KS4gICovCistY2hhciAqCistR0VUVEVYVCAobXNnaWQpCistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy17CistICByZXR1cm4gREdFVFRFWFQgKE5VTEwsIG1zZ2lkKTsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19nZXR0ZXh0LCBnZXR0ZXh0KTsKKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaCBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaAkxOTk4LTA0LTI2IDE0OjIyOjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwNSArMCwwIEBACistLyogSW50ZXJuYWwgaGVhZGVyIGZvciBHTlUgZ2V0dGV4dCBpbnRlcm5hdGlvbmFsaXphdGlvbiBmdW5jdGlvbnMKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCistICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCistICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZuZGVmIF9HRVRURVhUX0gKKy0jZGVmaW5lIF9HRVRURVhUX0ggMQorLQorLSNpbmNsdWRlIDxzdGRpby5oPgorLQorLSNpZiBIQVZFX0xJTUlUU19IIHx8IF9MSUJDCistIyBpbmNsdWRlIDxsaW1pdHMuaD4KKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogVGhlIG1hZ2ljIG51bWJlciBvZiB0aGUgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQuICAqLworLSNkZWZpbmUgX01BR0lDIDB4OTUwNDEyZGUKKy0jZGVmaW5lIF9NQUdJQ19TV0FQUEVEIDB4ZGUxMjA0OTUKKy0KKy0vKiBSZXZpc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSB1c2VkIC5tbyAoYmluYXJ5KSBmaWxlIGZvcm1hdC4gICovCistI2RlZmluZSBNT19SRVZJU0lPTl9OVU1CRVIgMAorLQorLS8qIFRoZSBmb2xsb3dpbmcgY29udG9ydGlvbnMgYXJlIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBDIHByZXByb2Nlc3NvcgorLSAgIHRvIGRldGVybWluZSBhbiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlIHRoYXQgaXMgMzIgYml0cyB3aWRlLiAgQW4KKy0gICBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byB1c2UgYXV0b2NvbmYncyBBQ19DSEVDS19TSVpFT0YgbWFjcm8sIGJ1dAorLSAgIGRvaW5nIHRoYXQgd291bGQgcmVxdWlyZSB0aGF0IHRoZSBjb25maWd1cmUgc2NyaXB0IGNvbXBpbGUgYW5kICpydW4qCistICAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlLiAgTG9jYWxseSBydW5uaW5nIGNyb3NzLWNvbXBpbGVkIGV4ZWN1dGFibGVzCistICAgaXMgdXN1YWxseSBub3QgcG9zc2libGUuICAqLworLQorLSNpZiBfX1NURENfXworLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKKy0jZWxzZQorLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgMHhGRkZGRkZGRgorLSNlbmRpZgorLQorLS8qIElmIFVJTlRfTUFYIGlzbid0IGRlZmluZWQsIGFzc3VtZSBpdCdzIGEgMzItYml0IHR5cGUuCistICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCistICAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgMTYtYml0IHN5c3RlbXMsIGFuZCBvbmx5IG1vZGVybiBzeXN0ZW1zCistICAgKHRoYXQgY2VydGFpbmx5IGhhdmUgPGxpbWl0cy5oPikgaGF2ZSA2NCstYml0IGludGVncmFsIHR5cGVzLiAgKi8KKy0KKy0jaWZuZGVmIFVJTlRfTUFYCistIyBkZWZpbmUgVUlOVF9NQVggVUlOVF9NQVhfMzJfQklUUworLSNlbmRpZgorLQorLSNpZiBVSU5UX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCistdHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOworLSNlbHNlCistIyBpZiBVU0hSVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUworLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKKy0jIGVsc2UKKy0jICBpZiBVTE9OR19NQVggPT0gVUlOVF9NQVhfMzJfQklUUworLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOworLSMgIGVsc2UKKy0gIC8qIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBpbnRlbmRlZCB0byB0aHJvdyBhbiBlcnJvci4gIFVzaW5nICNlcnJvciBpcworLSAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCistICAiQ2Fubm90IGRldGVybWluZSB1bnNpZ25lZCAzMi1iaXQgZGF0YSB0eXBlLiIKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0KKy0vKiBIZWFkZXIgZm9yIGJpbmFyeSAubW8gZmlsZSBmb3JtYXQuICAqLworLXN0cnVjdCBtb19maWxlX2hlYWRlcgorLXsKKy0gIC8qIFRoZSBtYWdpYyBudW1iZXIuICAqLworLSAgbmxzX3VpbnQzMiBtYWdpYzsKKy0gIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KKy0gIG5sc191aW50MzIgcmV2aXNpb247CistICAvKiBUaGUgbnVtYmVyIG9mIHN0cmluZ3MgcGFpcnMuICAqLworLSAgbmxzX3VpbnQzMiBuc3RyaW5nczsKKy0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3RyaW5ncy4gICovCistICBubHNfdWludDMyIG9yaWdfdGFiX29mZnNldDsKKy0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRpb24gc3RyaW5ncy4gICovCistICBubHNfdWludDMyIHRyYW5zX3RhYl9vZmZzZXQ7CistICAvKiBTaXplIG9mIGhhc2hpbmcgdGFibGUuICAqLworLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9zaXplOworLSAgLyogT2Zmc2V0IG9mIGZpcnN0IGhhc2hpbmcgZW50cnkuICAqLworLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9vZmZzZXQ7CistfTsKKy0KKy1zdHJ1Y3Qgc3RyaW5nX2Rlc2MKKy17CistICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZy4gICovCistICBubHNfdWludDMyIGxlbmd0aDsKKy0gIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCistICBubHNfdWludDMyIG9mZnNldDsKKy19OworLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLSNlbmRpZgkvKiBnZXR0ZXh0LmggICovCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmgJMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNzMgKzAsMCBAQAorLS8qIEhlYWRlciBkZXNjcmliaW5nIGludGVybmFscyBvZiBnZXR0ZXh0IGxpYnJhcnkKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZuZGVmIF9HRVRURVhUUF9ICistI2RlZmluZSBfR0VUVEVYVFBfSAorLQorLSNpbmNsdWRlICJsb2FkaW5mby5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZuZGVmIFBBUkFNUworLSMgaWYgX19TVERDX18KKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKKy0jIGVsc2UKKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZm5kZWYgVworLSMgZGVmaW5lIFcoZmxhZywgZGF0YSkgKChmbGFnKSA/IFNXQVAgKGRhdGEpIDogKGRhdGEpKQorLSNlbmRpZgorLQorLQorLXN0YXRpYyBubHNfdWludDMyIFNXQVAgUEFSQU1TICgobmxzX3VpbnQzMiBpKSk7CistCistc3RhdGljIGlubGluZSBubHNfdWludDMyCistU1dBUCAoaSkKKy0gICAgIG5sc191aW50MzIgaTsKKy17CistICByZXR1cm4gKGkgPDwgMjQpIHwgKChpICYgMHhmZjAwKSA8PCA4KSB8ICgoaSA+PiA4KSAmIDB4ZmYwMCkgfCAoaSA+PiAyNCk7CistfQorLQorLQorLXN0cnVjdCBsb2FkZWRfZG9tYWluCisteworLSAgY29uc3QgY2hhciAqZGF0YTsKKy0gIGludCBtdXN0X3N3YXA7CistICBubHNfdWludDMyIG5zdHJpbmdzOworLSAgc3RydWN0IHN0cmluZ19kZXNjICpvcmlnX3RhYjsKKy0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqdHJhbnNfdGFiOworLSAgbmxzX3VpbnQzMiBoYXNoX3NpemU7CistICBubHNfdWludDMyICpoYXNoX3RhYjsKKy19OworLQorLXN0cnVjdCBiaW5kaW5nCisteworLSAgc3RydWN0IGJpbmRpbmcgKm5leHQ7CistICBjaGFyICpkb21haW5uYW1lOworLSAgY2hhciAqZGlybmFtZTsKKy19OworLQorLXN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9maW5kX2RvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2Rpcm5hbWUsCistCQkJCQkJIGNoYXIgKl9fbG9jYWxlLAorLQkJCQkJCSBjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKKy12b2lkIF9ubF9sb2FkX2RvbWFpbiBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfX2RvbWFpbikpOworLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLSNlbmRpZiAvKiBnZXR0ZXh0UC5oICAqLworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaCBscnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDYzICswLDAgQEAKKy0vKiBJbXBsZW1lbnRzIGEgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb24uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAorLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKy0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfVkFMVUVTX0gKKy0jIGluY2x1ZGUgPHZhbHVlcy5oPgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZuZGVmIFBBUkFNUworLSMgaWYgX19TVERDX18KKy0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpIEFyZ3MKKy0jIGVsc2UKKy0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpICgpCistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIFdlIGFzc3VtZSB0byBoYXZlIGB1bnNpZ25lZCBsb25nIGludCcgdmFsdWUgd2l0aCBhdCBsZWFzdCAzMiBiaXRzLiAgKi8KKy0jZGVmaW5lIEhBU0hXT1JEQklUUyAzMgorLQorLQorLS8qIERlZmluZXMgdGhlIHNvIGNhbGxlZCBgaGFzaHBqdycgZnVuY3Rpb24gYnkgUC5KLiBXZWluYmVyZ2VyCistICAgW3NlZSBBaG8vU2V0aGkvVWxsbWFuLCBDT01QSUxFUlM6IFByaW5jaXBsZXMsIFRlY2huaXF1ZXMgYW5kIFRvb2xzLAorLSAgIDE5ODYsIDE5ODcgQmVsbCBUZWxlcGhvbmUgTGFib3JhdG9yaWVzLCBJbmMuXSAgKi8KKy1zdGF0aWMgdW5zaWduZWQgbG9uZyBoYXNoX3N0cmluZyBQQVJBTVMgKChjb25zdCBjaGFyICpfX3N0cl9wYXJhbSkpOworLQorLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZworLWhhc2hfc3RyaW5nIChzdHJfcGFyYW0pCistICAgICBjb25zdCBjaGFyICpzdHJfcGFyYW07CisteworLSAgdW5zaWduZWQgbG9uZyBpbnQgaHZhbCwgZzsKKy0gIGNvbnN0IGNoYXIgKnN0ciA9IHN0cl9wYXJhbTsKKy0KKy0gIC8qIENvbXB1dGUgdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBnaXZlbiBzdHJpbmcuICAqLworLSAgaHZhbCA9IDA7CistICB3aGlsZSAoKnN0ciAhPSAnXDAnKQorLSAgICB7CistICAgICAgaHZhbCA8PD0gNDsKKy0gICAgICBodmFsICs9ICh1bnNpZ25lZCBsb25nKSAqc3RyKys7CistICAgICAgZyA9IGh2YWwgJiAoKHVuc2lnbmVkIGxvbmcpIDB4ZiA8PCAoSEFTSFdPUkRCSVRTIC0gNCkpOworLSAgICAgIGlmIChnICE9IDApCistCXsKKy0JICBodmFsIF49IGcgPj4gKEhBU0hXT1JEQklUUyAtIDgpOworLQkgIGh2YWwgXj0gZzsKKy0JfQorLSAgICB9CistICByZXR1cm4gaHZhbDsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jIGxyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNzYgKzAsMCBAQAorLS8qIGludGwtY29tcGF0LmMgLSBTdHViIGZ1bmN0aW9ucyB0byBjYWxsIGdldHRleHQgZnVuY3Rpb25zIGZyb20gR05VIGdldHRleHQKKy0gICBMaWJyYXJ5LgorLSAgIENvcHlyaWdodCAoQykgMTk5NSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy1hbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxpYmdldHRleHQuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistCistI3VuZGVmIGdldHRleHQKKy0jdW5kZWYgZGdldHRleHQKKy0jdW5kZWYgZGNnZXR0ZXh0CistI3VuZGVmIHRleHRkb21haW4KKy0jdW5kZWYgYmluZHRleHRkb21haW4KKy0KKy0KKy1jaGFyICoKKy1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLXsKKy0gIHJldHVybiBiaW5kdGV4dGRvbWFpbl9fIChkb21haW5uYW1lLCBkaXJuYW1lKTsKKy19CistCistCistY2hhciAqCistZGNnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CistICAgICBpbnQgY2F0ZWdvcnk7CisteworLSAgcmV0dXJuIGRjZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpOworLX0KKy0KKy0KKy1jaGFyICoKKy1kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIGRnZXR0ZXh0X18gKGRvbWFpbm5hbWUsIG1zZ2lkKTsKKy19CistCistCistY2hhciAqCistZ2V0dGV4dCAobXNnaWQpCistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy17CistICByZXR1cm4gZ2V0dGV4dF9fIChtc2dpZCk7CistfQorLQorLQorLWNoYXIgKgorLXRleHRkb21haW4gKGRvbWFpbm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLXsKKy0gIHJldHVybiB0ZXh0ZG9tYWluX18gKGRvbWFpbm5hbWUpOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2wxMG5mbGlzdC5jIGxyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNDA5ICswLDAgQEAKKy0vKiBIYW5kbGUgbGlzdCBvZiBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncworLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBfR05VX1NPVVJDRQorLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCistIyBlbmRpZgorLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgc3RyY2hyCistIyAgZGVmaW5lIHN0cmNociBpbmRleAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfQVJHWl9ICistIyBpbmNsdWRlIDxhcmd6Lmg+CistI2VuZGlmCistI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAibG9hZGluZm8uaCIKKy0KKy0vKiBPbiBzb21lIHN0cmFuZ2Ugc3lzdGVtcyBzdGlsbCBubyBkZWZpbml0aW9uIG9mIE5VTEwgaXMgZm91bmQuICBTaWdoISAgKi8KKy0jaWZuZGVmIE5VTEwKKy0jIGlmIGRlZmluZWQgX19TVERDX18gJiYgX19TVERDX18KKy0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jIGVsc2UKKy0jICBkZWZpbmUgTlVMTCAwCistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKy0gICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0CistICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworLSMgZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIF9fc3RwY3B5KGRlc3QsIHNyYykKKy0jZWxzZQorLSMgaWZuZGVmIEhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogRGVmaW5lIGZ1bmN0aW9uIHdoaWNoIGFyZSB1c3VhbGx5IG5vdCBhdmFpbGFibGUuICAqLworLQorLSNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9DT1VOVAorLS8qIFJldHVybnMgdGhlIG51bWJlciBvZiBzdHJpbmdzIGluIEFSR1ouICAqLworLXN0YXRpYyBzaXplX3QgYXJnel9jb3VudF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKmFyZ3osIHNpemVfdCBsZW4pKTsKKy0KKy1zdGF0aWMgc2l6ZV90CistYXJnel9jb3VudF9fIChhcmd6LCBsZW4pCistICAgICBjb25zdCBjaGFyICphcmd6OworLSAgICAgc2l6ZV90IGxlbjsKKy17CistICBzaXplX3QgY291bnQgPSAwOworLSAgd2hpbGUgKGxlbiA+IDApCistICAgIHsKKy0gICAgICBzaXplX3QgcGFydF9sZW4gPSBzdHJsZW4gKGFyZ3opOworLSAgICAgIGFyZ3ogKz0gcGFydF9sZW4gKyAxOworLSAgICAgIGxlbiAtPSBwYXJ0X2xlbiArIDE7CistICAgICAgY291bnQrKzsKKy0gICAgfQorLSAgcmV0dXJuIGNvdW50OworLX0KKy0jIHVuZGVmIF9fYXJnel9jb3VudAorLSMgZGVmaW5lIF9fYXJnel9jb3VudChhcmd6LCBsZW4pIGFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQorLSNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX0NPVU5UICovCistCistI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX1NUUklOR0lGWQorLS8qIE1ha2UgJ1wwJyBzZXBhcmF0ZWQgYXJnIHZlY3RvciBBUkdaIHByaW50YWJsZSBieSBjb252ZXJ0aW5nIGFsbCB0aGUgJ1wwJ3MKKy0gICBleGNlcHQgdGhlIGxhc3QgaW50byB0aGUgY2hhcmFjdGVyIFNFUC4gICovCistc3RhdGljIHZvaWQgYXJnel9zdHJpbmdpZnlfXyBQQVJBTVMgKChjaGFyICphcmd6LCBzaXplX3QgbGVuLCBpbnQgc2VwKSk7CistCistc3RhdGljIHZvaWQKKy1hcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKKy0gICAgIGNoYXIgKmFyZ3o7CistICAgICBzaXplX3QgbGVuOworLSAgICAgaW50IHNlcDsKKy17CistICB3aGlsZSAobGVuID4gMCkKKy0gICAgeworLSAgICAgIHNpemVfdCBwYXJ0X2xlbiA9IHN0cmxlbiAoYXJneik7CistICAgICAgYXJneiArPSBwYXJ0X2xlbjsKKy0gICAgICBsZW4gLT0gcGFydF9sZW4gKyAxOworLSAgICAgIGlmIChsZW4gPiAwKQorLQkqYXJneisrID0gc2VwOworLSAgICB9CistfQorLSMgdW5kZWYgX19hcmd6X3N0cmluZ2lmeQorLSMgZGVmaW5lIF9fYXJnel9zdHJpbmdpZnkoYXJneiwgbGVuLCBzZXApIGFyZ3pfc3RyaW5naWZ5X18gKGFyZ3osIGxlbiwgc2VwKQorLSNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX1NUUklOR0lGWSAqLworLQorLSNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9ORVhUCistc3RhdGljIGNoYXIgKmFyZ3pfbmV4dF9fIFBBUkFNUyAoKGNoYXIgKmFyZ3osIHNpemVfdCBhcmd6X2xlbiwKKy0JCQkJICBjb25zdCBjaGFyICplbnRyeSkpOworLQorLXN0YXRpYyBjaGFyICoKKy1hcmd6X25leHRfXyAoYXJneiwgYXJnel9sZW4sIGVudHJ5KQorLSAgICAgY2hhciAqYXJnejsKKy0gICAgIHNpemVfdCBhcmd6X2xlbjsKKy0gICAgIGNvbnN0IGNoYXIgKmVudHJ5OworLXsKKy0gIGlmIChlbnRyeSkKKy0gICAgeworLSAgICAgIGlmIChlbnRyeSA8IGFyZ3ogKyBhcmd6X2xlbikKKy0gICAgICAgIGVudHJ5ID0gc3RyY2hyIChlbnRyeSwgJ1wwJykgKyAxOworLQorLSAgICAgIHJldHVybiBlbnRyeSA+PSBhcmd6ICsgYXJnel9sZW4gPyBOVUxMIDogKGNoYXIgKikgZW50cnk7CistICAgIH0KKy0gIGVsc2UKKy0gICAgaWYgKGFyZ3pfbGVuID4gMCkKKy0gICAgICByZXR1cm4gYXJnejsKKy0gICAgZWxzZQorLSAgICAgIHJldHVybiAwOworLX0KKy0jIHVuZGVmIF9fYXJnel9uZXh0CistIyBkZWZpbmUgX19hcmd6X25leHQoYXJneiwgbGVuLCBlbnRyeSkgYXJnel9uZXh0X18gKGFyZ3osIGxlbiwgZW50cnkpCistI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfTkVYVCAqLworLQorLQorLS8qIFJldHVybiBudW1iZXIgb2YgYml0cyBzZXQgaW4gWC4gICovCistc3RhdGljIGludCBwb3AgUEFSQU1TICgoaW50IHgpKTsKKy0KKy1zdGF0aWMgaW5saW5lIGludAorLXBvcCAoeCkKKy0gICAgIGludCB4OworLXsKKy0gIC8qIFdlIGFzc3VtZSB0aGF0IG5vIG1vcmUgdGhhbiAxNiBiaXRzIGFyZSB1c2VkLiAgKi8KKy0gIHggPSAoKHggJiB+MHg1NTU1KSA+PiAxKSArICh4ICYgMHg1NTU1KTsKKy0gIHggPSAoKHggJiB+MHgzMzMzKSA+PiAyKSArICh4ICYgMHgzMzMzKTsKKy0gIHggPSAoKHggPj4gNCkgKyB4KSAmIDB4MGYwZjsKKy0gIHggPSAoKHggPj4gOCkgKyB4KSAmIDB4ZmY7CistCistICByZXR1cm4geDsKKy19CistCistDAorLXN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgorLV9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlybGlzdCwgZGlybGlzdF9sZW4sIG1hc2ssIGxhbmd1YWdlLAorLQkJICAgIHRlcnJpdG9yeSwgY29kZXNldCwgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKKy0JCSAgICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIGRvX2FsbG9jYXRlKQorLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3Q7CistICAgICBjb25zdCBjaGFyICpkaXJsaXN0OworLSAgICAgc2l6ZV90IGRpcmxpc3RfbGVuOworLSAgICAgaW50IG1hc2s7CistICAgICBjb25zdCBjaGFyICpsYW5ndWFnZTsKKy0gICAgIGNvbnN0IGNoYXIgKnRlcnJpdG9yeTsKKy0gICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7CistICAgICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQ7CistICAgICBjb25zdCBjaGFyICptb2RpZmllcjsKKy0gICAgIGNvbnN0IGNoYXIgKnNwZWNpYWw7CistICAgICBjb25zdCBjaGFyICpzcG9uc29yOworLSAgICAgY29uc3QgY2hhciAqcmV2aXNpb247CistICAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKy0gICAgIGludCBkb19hbGxvY2F0ZTsKKy17CistICBjaGFyICphYnNfZmlsZW5hbWU7CistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpsYXN0ID0gTlVMTDsKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKKy0gIGNoYXIgKmNwOworLSAgc2l6ZV90IGVudHJpZXM7CistICBpbnQgY250OworLQorLSAgLyogQWxsb2NhdGUgcm9vbSBmb3IgdGhlIGZ1bGwgZmlsZSBuYW1lLiAgKi8KKy0gIGFic19maWxlbmFtZSA9IChjaGFyICopIG1hbGxvYyAoZGlybGlzdF9sZW4KKy0JCQkJICArIHN0cmxlbiAobGFuZ3VhZ2UpCistCQkJCSAgKyAoKG1hc2sgJiBURVJSSVRPUlkpICE9IDAKKy0JCQkJICAgICA/IHN0cmxlbiAodGVycml0b3J5KSArIDEgOiAwKQorLQkJCQkgICsgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDAKKy0JCQkJICAgICA/IHN0cmxlbiAoY29kZXNldCkgKyAxIDogMCkKKy0JCQkJICArICgobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDAKKy0JCQkJICAgICA/IHN0cmxlbiAobm9ybWFsaXplZF9jb2Rlc2V0KSArIDEgOiAwKQorLQkJCQkgICsgKCgobWFzayAmIFhQR19NT0RJRklFUikgIT0gMAorLQkJCQkgICAgICB8fCAobWFzayAmIENFTl9BVURJRU5DRSkgIT0gMCkKKy0JCQkJICAgICA/IHN0cmxlbiAobW9kaWZpZXIpICsgMSA6IDApCistCQkJCSAgKyAoKG1hc2sgJiBDRU5fU1BFQ0lBTCkgIT0gMAorLQkJCQkgICAgID8gc3RybGVuIChzcGVjaWFsKSArIDEgOiAwKQorLQkJCQkgICsgKCgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCistCQkJCSAgICAgIHx8IChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwKQorLQkJCQkgICAgID8gKDEgKyAoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAorLQkJCQkJICAgICA/IHN0cmxlbiAoc3BvbnNvcikgKyAxIDogMCkKKy0JCQkJCSsgKChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwCistCQkJCQkgICA/IHN0cmxlbiAocmV2aXNpb24pICsgMSA6IDApKSA6IDApCistCQkJCSAgKyAxICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKKy0KKy0gIGlmIChhYnNfZmlsZW5hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICByZXR2YWwgPSBOVUxMOworLSAgbGFzdCA9IE5VTEw7CistCistICAvKiBDb25zdHJ1Y3QgZmlsZSBuYW1lLiAgKi8KKy0gIG1lbWNweSAoYWJzX2ZpbGVuYW1lLCBkaXJsaXN0LCBkaXJsaXN0X2xlbik7CistICBfX2FyZ3pfc3RyaW5naWZ5IChhYnNfZmlsZW5hbWUsIGRpcmxpc3RfbGVuLCAnOicpOworLSAgY3AgPSBhYnNfZmlsZW5hbWUgKyAoZGlybGlzdF9sZW4gLSAxKTsKKy0gICpjcCsrID0gJy8nOworLSAgY3AgPSBzdHBjcHkgKGNwLCBsYW5ndWFnZSk7CistCistICBpZiAoKG1hc2sgJiBURVJSSVRPUlkpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICdfJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIHRlcnJpdG9yeSk7CistICAgIH0KKy0gIGlmICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnLic7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBjb2Rlc2V0KTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJy4nOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgbm9ybWFsaXplZF9jb2Rlc2V0KTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgKFhQR19NT0RJRklFUiB8IENFTl9BVURJRU5DRSkpICE9IDApCistICAgIHsKKy0gICAgICAvKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgcGFydCBvZiBib3RoIHN5bnRhY2VzIGJ1dCBoYXMgZGlmZmVyZW50CistCSBsZWFkaW5nIGNoYXJhY3RlcnMuICBGb3IgQ0VOIHdlIHVzZSBgKycsIGVsc2UgYEAnLiAgKi8KKy0gICAgICAqY3ArKyA9IChtYXNrICYgQ0VOX0FVRElFTkNFKSAhPSAwID8gJysnIDogJ0AnOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgbW9kaWZpZXIpOworLSAgICB9CistICBpZiAoKG1hc2sgJiBDRU5fU1BFQ0lBTCkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJysnOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgc3BlY2lhbCk7CistICAgIH0KKy0gIGlmICgobWFzayAmIChDRU5fU1BPTlNPUiB8IENFTl9SRVZJU0lPTikpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcsJzsKKy0gICAgICBpZiAoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMCkKKy0JY3AgPSBzdHBjcHkgKGNwLCBzcG9uc29yKTsKKy0gICAgICBpZiAoKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDApCistCXsKKy0JICAqY3ArKyA9ICdfJzsKKy0JICBjcCA9IHN0cGNweSAoY3AsIHJldmlzaW9uKTsKKy0JfQorLSAgICB9CistCistICAqY3ArKyA9ICcvJzsKKy0gIHN0cGNweSAoY3AsIGZpbGVuYW1lKTsKKy0KKy0gIC8qIExvb2sgaW4gbGlzdCBvZiBhbHJlYWR5IGxvYWRlZCBkb21haW5zIHdoZXRoZXIgaXQgaXMgYWxyZWFkeQorLSAgICAgYXZhaWxhYmxlLiAgKi8KKy0gIGxhc3QgPSBOVUxMOworLSAgZm9yIChyZXR2YWwgPSAqbDEwbmZpbGVfbGlzdDsgcmV0dmFsICE9IE5VTEw7IHJldHZhbCA9IHJldHZhbC0+bmV4dCkKKy0gICAgaWYgKHJldHZhbC0+ZmlsZW5hbWUgIT0gTlVMTCkKKy0gICAgICB7CistCWludCBjb21wYXJlID0gc3RyY21wIChyZXR2YWwtPmZpbGVuYW1lLCBhYnNfZmlsZW5hbWUpOworLQlpZiAoY29tcGFyZSA9PSAwKQorLQkgIC8qIFdlIGZvdW5kIGl0ISAgKi8KKy0JICBicmVhazsKKy0JaWYgKGNvbXBhcmUgPCAwKQorLQkgIHsKKy0JICAgIC8qIEl0J3Mgbm90IGluIHRoZSBsaXN0LiAgKi8KKy0JICAgIHJldHZhbCA9IE5VTEw7CistCSAgICBicmVhazsKKy0JICB9CistCistCWxhc3QgPSByZXR2YWw7CistICAgICAgfQorLQorLSAgaWYgKHJldHZhbCAhPSBOVUxMIHx8IGRvX2FsbG9jYXRlID09IDApCistICAgIHsKKy0gICAgICBmcmVlIChhYnNfZmlsZW5hbWUpOworLSAgICAgIHJldHVybiByZXR2YWw7CistICAgIH0KKy0KKy0gIHJldHZhbCA9IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopCistICAgIG1hbGxvYyAoc2l6ZW9mICgqcmV0dmFsKSArIChfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKQorLQkJCQkqICgxIDw8IHBvcCAobWFzaykpCistCQkJCSogc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopKSk7CistICBpZiAocmV0dmFsID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgcmV0dmFsLT5maWxlbmFtZSA9IGFic19maWxlbmFtZTsKKy0gIHJldHZhbC0+ZGVjaWRlZCA9IChfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSAhPSAxCistCQkgICAgIHx8ICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCistCQkJICYmIChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMCkpOworLSAgcmV0dmFsLT5kYXRhID0gTlVMTDsKKy0KKy0gIGlmIChsYXN0ID09IE5VTEwpCistICAgIHsKKy0gICAgICByZXR2YWwtPm5leHQgPSAqbDEwbmZpbGVfbGlzdDsKKy0gICAgICAqbDEwbmZpbGVfbGlzdCA9IHJldHZhbDsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgcmV0dmFsLT5uZXh0ID0gbGFzdC0+bmV4dDsKKy0gICAgICBsYXN0LT5uZXh0ID0gcmV0dmFsOworLSAgICB9CistCistICBlbnRyaWVzID0gMDsKKy0gIC8qIElmIHRoZSBESVJMSVNUIGlzIGEgcmVhbCBsaXN0IHRoZSBSRVRWQUwgZW50cnkgY29ycmVzcG9uZHMgbm90IHRvCistICAgICBhIHJlYWwgZmlsZS4gIFNvIHdlIGhhdmUgdG8gdXNlIHRoZSBESVJMSVNUIHNlcGFyYXRpb24gbWVjaGFuaXNtCistICAgICBvZiB0aGUgaW5uZXIgbG9vcC4gICovCistICBjbnQgPSBfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSA9PSAxID8gbWFzayAtIDEgOiBtYXNrOworLSAgZm9yICg7IGNudCA+PSAwOyAtLWNudCkKKy0gICAgaWYgKChjbnQgJiB+bWFzaykgPT0gMAorLQkmJiAoKGNudCAmIENFTl9TUEVDSUZJQykgPT0gMCB8fCAoY250ICYgWFBHX1NQRUNJRklDKSA9PSAwKQorLQkmJiAoKGNudCAmIFhQR19DT0RFU0VUKSA9PSAwIHx8IChjbnQgJiBYUEdfTk9STV9DT0RFU0VUKSA9PSAwKSkKKy0gICAgICB7CistCS8qIEl0ZXJhdGUgb3ZlciBhbGwgZWxlbWVudHMgb2YgdGhlIERJUkxJU1QuICAqLworLQljaGFyICpkaXIgPSBOVUxMOworLQorLQl3aGlsZSAoKGRpciA9IF9fYXJnel9uZXh0ICgoY2hhciAqKSBkaXJsaXN0LCBkaXJsaXN0X2xlbiwgZGlyKSkKKy0JICAgICAgICE9IE5VTEwpCistCSAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQorLQkgICAgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpciwgc3RybGVuIChkaXIpICsgMSwgY250LAorLQkJCQkgIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGNvZGVzZXQsCistCQkJCSAgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKKy0JCQkJICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIDEpOworLSAgICAgIH0KKy0gIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXNdID0gTlVMTDsKKy0KKy0gIHJldHVybiByZXR2YWw7CistfQorLQwKKy0vKiBOb3JtYWxpemUgY29kZXNldCBuYW1lLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBjb2Rlc2V0CistICAgbmFtZXMuICBOb3JtYWxpemF0aW9uIGFsbG93cyB0aGUgdXNlciB0byB1c2UgYW55IG9mIHRoZSBjb21tb24KKy0gICBuYW1lcy4gICovCistY29uc3QgY2hhciAqCistX25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb2Rlc2V0LCBuYW1lX2xlbikKKy0gICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7CistICAgICBzaXplX3QgbmFtZV9sZW47CisteworLSAgaW50IGxlbiA9IDA7CistICBpbnQgb25seV9kaWdpdCA9IDE7CistICBjaGFyICpyZXR2YWw7CistICBjaGFyICp3cDsKKy0gIHNpemVfdCBjbnQ7CistCistICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKKy0gICAgaWYgKGlzYWxudW0gKGNvZGVzZXRbY250XSkpCistICAgICAgeworLQkrK2xlbjsKKy0KKy0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCistCSAgb25seV9kaWdpdCA9IDA7CistICAgICAgfQorLQorLSAgcmV0dmFsID0gKGNoYXIgKikgbWFsbG9jICgob25seV9kaWdpdCA/IDMgOiAwKSArIGxlbiArIDEpOworLQorLSAgaWYgKHJldHZhbCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKG9ubHlfZGlnaXQpCistCXdwID0gc3RwY3B5IChyZXR2YWwsICJpc28iKTsKKy0gICAgICBlbHNlCistCXdwID0gcmV0dmFsOworLQorLSAgICAgIGZvciAoY250ID0gMDsgY250IDwgbmFtZV9sZW47ICsrY250KQorLQlpZiAoaXNhbHBoYSAoY29kZXNldFtjbnRdKSkKKy0JICAqd3ArKyA9IHRvbG93ZXIgKGNvZGVzZXRbY250XSk7CistCWVsc2UgaWYgKGlzZGlnaXQgKGNvZGVzZXRbY250XSkpCistCSAgKndwKysgPSBjb2Rlc2V0W2NudF07CistCistICAgICAgKndwID0gJ1wwJzsKKy0gICAgfQorLQorLSAgcmV0dXJuIChjb25zdCBjaGFyICopIHJldHZhbDsKKy19CistCistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKKy0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcworLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCistICAgdG8gYmUgZGVmaW5lZC4gICovCistI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqCistc3RwY3B5IChkZXN0LCBzcmMpCistICAgICBjaGFyICpkZXN0OworLSAgICAgY29uc3QgY2hhciAqc3JjOworLXsKKy0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKKy0gICAgLyogRG8gbm90aGluZy4gKi8gOworLSAgcmV0dXJuIGRlc3QgLSAxOworLX0KKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaCBscnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE4MiArMCwwIEBACistLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistLyogQmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gU29sYXJpcykgd2Ugc29tZXRpbWVzIGhhdmUgdG8gaW5jbHVkZQorLSAgIHRoZSBzeXN0ZW1zIGxpYmludGwuaCBhcyB3ZWxsIGFzIHRoaXMgZmlsZSB3ZSBoYXZlIG1vcmUgY29tcGxleAorLSAgIGluY2x1ZGUgcHJvdGVjdGlvbiBhYm92ZS4gIEJ1dCB0aGUgc3lzdGVtcyBoZWFkZXIgbWlnaHQgcGVyaGFwcyBhbHNvCistICAgZGVmaW5lIF9MSUJJTlRMX0ggYW5kIHRoZXJlZm9yZSB3ZSBoYXZlIHRvIHByb3RlY3QgdGhlIGRlZmluaXRpb24gaGVyZS4gICovCistCistI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKSB8fCAhZGVmaW5lZCAoX0xJQkdFVFRFWFRfSCkKKy0jaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpCistIyBkZWZpbmUgX0xJQklOVExfSAkxCistI2VuZGlmCistI2RlZmluZSBfTElCR0VUVEVYVF9ICTEKKy0KKy0vKiBXZSBkZWZpbmUgYW4gYWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIHRoZSBHTlUKKy0gICBpbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0LiAgKi8KKy0jZGVmaW5lIF9fVVNFX0dOVV9HRVRURVhUIDEKKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmIEhBVkVfTE9DQUxFX0gKKy0jIGluY2x1ZGUgPGxvY2FsZS5oPgorLSNlbmRpZgorLQorLQorLSNpZmRlZiBfX2NwbHVzcGx1cworLWV4dGVybiAiQyIgeworLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZuZGVmIFBBUkFNUworLSMgaWYgX19TVERDX18KKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKKy0jIGVsc2UKKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZm5kZWYgTlVMTAorLSMgaWYgIWRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfX0dOVUNfXworLSMgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQorLSMgZWxzZQorLSMgIGRlZmluZSBOVUxMICgwKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgIUhBVkVfTENfTUVTU0FHRVMKKy0vKiBUaGlzIHZhbHVlIGRldGVybWluZXMgdGhlIGJlaGF2aW91ciBvZiB0aGUgZ2V0dGV4dCgpIGFuZCBkZ2V0dGV4dCgpCistICAgZnVuY3Rpb24uICBCdXQgc29tZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSB0aGlzIGRlZmluZWQuICBEZWZpbmUgaXQKKy0gICB0byBhIGRlZmF1bHQgdmFsdWUuICAqLworLSMgZGVmaW5lIExDX01FU1NBR0VTICgtMSkKKy0jZW5kaWYKKy0KKy0KKy0vKiBEZWNsYXJhdGlvbnMgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuICBEZXJpdmVkIGZyb20KKy0gICBKaW0gTWV5ZXJpbmcncyBsaWJpbnRsLmguICAqLworLXN0cnVjdCBfbXNnX2VudAorLXsKKy0gIGNvbnN0IGNoYXIgKl9tc2c7CistICBpbnQgX21zZ19udW1iZXI7CistfTsKKy0KKy0KKy0jaWYgSEFWRV9DQVRHRVRTCistLyogVGhlc2UgdHdvIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCBpbiB0aGUgYXV0b21hdGljYWxseSBieSBwby10by10Ymwuc2VkCistICAgZ2VuZXJhdGVkIGZpbGUgYGNhdC1pZC10YmwuYycuICAqLworLWV4dGVybiBjb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXTsKKy1leHRlcm4gaW50IF9tc2dfdGJsX2xlbmd0aDsKKy0jZW5kaWYKKy0KKy0KKy0vKiBGb3IgYXV0b21hdGljYWwgZXh0cmFjdGlvbiBvZiBtZXNzYWdlcyBzb21ldGltZXMgbm8gcmVhbAorLSAgIHRyYW5zbGF0aW9uIGlzIG5lZWRlZC4gIEluc3RlYWQgdGhlIHN0cmluZyBpdHNlbGYgaXMgdGhlIHJlc3VsdC4gICovCistI2RlZmluZSBnZXR0ZXh0X25vb3AoU3RyKSAoU3RyKQorLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50CistICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKKy0gICB0ZXh0KS4gICovCistZXh0ZXJuIGNoYXIgKmdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19tc2dpZCkpOworLWV4dGVybiBjaGFyICpnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19tc2dpZCkpOworLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gICovCistZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCkpOworLWV4dGVybiBjaGFyICpkZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKy0JCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKKy0gICBsb2NhbGUuICAqLworLWV4dGVybiBjaGFyICpkY2dldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAorLQkJCQlpbnQgX19jYXRlZ29yeSkpOworLWV4dGVybiBjaGFyICpkY2dldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCistCQkJCSAgY29uc3QgY2hhciAqX19tc2dpZCwgaW50IF9fY2F0ZWdvcnkpKTsKKy0KKy0KKy0vKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KKy0gICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgorLSAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLworLWV4dGVybiBjaGFyICp0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOworLWV4dGVybiBjaGFyICp0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7CistCistLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCistICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLworLWV4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCistCQkJCSAgY29uc3QgY2hhciAqX19kaXJuYW1lKSk7CistZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKSk7CistCistI2lmIEVOQUJMRV9OTFMKKy0KKy0vKiBTb2xhcmlzIDIuMyBoYXMgdGhlIGdldHRleHQgZnVuY3Rpb24gYnV0IGRjZ2V0dGV4dCBpcyBtaXNzaW5nLgorLSAgIFNvIHdlIG9taXQgdGhpcyBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLiAgQlRXLCBTb2xhcmlzIDIuNAorLSAgIGhhcyBkY2dldHRleHQuICAqLworLSMgaWYgIUhBVkVfQ0FUR0VUUyAmJiAoIUhBVkVfR0VUVEVYVCB8fCBIQVZFX0RDR0VUVEVYVCkKKy0KKy0jICBkZWZpbmUgZ2V0dGV4dChNc2dpZCkJCQkJCQkgICAgICBcCistICAgICBkZ2V0dGV4dCAoTlVMTCwgTXNnaWQpCistCistIyAgZGVmaW5lIGRnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkKQkJCQkJICAgICAgXAorLSAgICAgZGNnZXR0ZXh0IChEb21haW5uYW1lLCBNc2dpZCwgTENfTUVTU0FHRVMpCistCistIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDcKKy0vKiBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGxvYWRtc2djYXQuYy4gIFdlIG5lZWQgYSBzaWduLAorLSAgIHdoZXRoZXIgYSBuZXcgY2F0YWxvZyB3YXMgbG9hZGVkLCB3aGljaCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFsbAorLSAgIHRyYW5zbGF0aW9ucy4gICovCistZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworLQorLSMgICBkZWZpbmUgZGNnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSkJCQkgICAgICBcCistICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCistICAgKHsJCQkJCQkJCQkgICAgICBcCistICAgICBjaGFyICpfX3Jlc3VsdDsJCQkJCQkJICAgICAgXAorLSAgICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wIChNc2dpZCkpCQkJCQkgICAgICBcCistICAgICAgIHsJCQkJCQkJCSAgICAgIFwKKy0JIHN0YXRpYyBjaGFyICpfX3RyYW5zbGF0aW9uX187CQkJCQkgICAgICBcCistCSBzdGF0aWMgaW50IF9fY2F0YWxvZ19jb3VudGVyX187CQkJCSAgICAgIFwKKy0JIGlmICghIF9fdHJhbnNsYXRpb25fXyB8fCBfX2NhdGFsb2dfY291bnRlcl9fICE9IF9ubF9tc2dfY2F0X2NudHIpICAgIFwKKy0JICAgewkJCQkJCQkJICAgICAgXAorLQkgICAgIF9fdHJhbnNsYXRpb25fXyA9CQkJCQkJICAgICAgXAorLQkgICAgICAgZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCistCSAgICAgX19jYXRhbG9nX2NvdW50ZXJfXyA9IF9ubF9tc2dfY2F0X2NudHI7CQkJICAgICAgXAorLQkgICB9CQkJCQkJCQkgICAgICBcCistCSBfX3Jlc3VsdCA9IF9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKKy0gICAgICAgfQkJCQkJCQkJICAgICAgXAorLSAgICAgZWxzZQkJCQkJCQkJICAgICAgXAorLSAgICAgICBfX3Jlc3VsdCA9IGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAorLSAgICAgX19yZXN1bHQ7CQkJCQkJCQkgICAgICBcCistICAgIH0pKQorLSMgIGVuZGlmCistIyBlbmRpZgorLQorLSNlbHNlCistCistIyBkZWZpbmUgZ2V0dGV4dChNc2dpZCkgKE1zZ2lkKQorLSMgZGVmaW5lIGRnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkKSAoTXNnaWQpCistIyBkZWZpbmUgZGNnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSkgKE1zZ2lkKQorLSMgZGVmaW5lIHRleHRkb21haW4oRG9tYWlubmFtZSkgd2hpbGUgKDApIC8qIG5vdGhpbmcgKi8KKy0jIGRlZmluZSBiaW5kdGV4dGRvbWFpbihEb21haW5uYW1lLCBEaXJuYW1lKSB3aGlsZSAoMCkgLyogbm90aGluZyAqLworLQorLSNlbmRpZgorLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLSNpZmRlZiBfX2NwbHVzcGx1cworLX0KKy0jZW5kaWYKKy0KKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQgbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZAkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDAgKzAsMCBAQAorLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gTGludXggc3R5bGUgLm1zZyBmaWxlCistIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKy0jCistIworLSMgVGhlIGZpcnN0IGRpcmVjdGl2ZSBpbiB0aGUgLm1zZyBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlCistIyBtZXNzYWdlIHNldCBudW1iZXIuICBXZSB1c2UgYWx3YXlzIHNldCBudW1iZXIgMS4KKy0jCistMSB7CistICBpXAorLSRzZXQgMSAjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBwbzJtc2cuc2VkCistICBoCistICBzLy4qLzAvCistICB4CistfQorLSMKKy0jIE1pdGNoJ3Mgb2xkIGNhdGFsb2cgZm9ybWF0IGRvZXMgbm90IGFsbG93IGNvbW1lbnRzLgorLSMKKy0jIFdlIGNvcHkgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYXMgYSBjb21tZW50IGludG8gdGhlIC5tc2cgZmlsZS4KKy0jCistL15tc2dpZC8geworLSAgcy9tc2dpZFsgCV0qIi8vCistIworLSMgVGhpcyBkb2VzIG5vdCB3b3JrIG5vdyB3aXRoIHRoZSBuZXcgZm9ybWF0LgorLSMgLyIkLyEgeworLSMgICBzL1xcJC8vCistIyAgIHMvJC8gLi4uIChtb3JlIGxpbmVzIGZvbGxvd2luZykiLworLSMgfQorLSAgeAorLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5CistIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KKy0gIHRkCistIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgorLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgorLSAgOmQKKy0gIHMvOVwoXypcKSQvX1wxLworLSAgdGQKKy0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgorLSAgcy9eXChfKlwpJC8wXDEvCistIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCistICBzLzhcKF8qXCkkLzlcMS8KKy0gIHMvN1woXypcKSQvOFwxLworLSAgcy82XChfKlwpJC83XDEvCistICBzLzVcKF8qXCkkLzZcMS8KKy0gIHMvNFwoXypcKSQvNVwxLworLSAgcy8zXChfKlwpJC80XDEvCistICBzLzJcKF8qXCkkLzNcMS8KKy0gIHMvMVwoXypcKSQvMlwxLworLSAgcy8wXChfKlwpJC8xXDEvCistIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgorLSAgcy9fLzAvZworLSAgeAorLSAgRworLSAgcy9cKC4qXCkiXG5cKFswLTldKlwpLyQgI1wyIE9yaWdpbmFsIE1lc3NhZ2U6KFwxKS9wCistfQorLSMKKy0jIFRoZSAubXNnIGZpbGUgY29udGFpbnMsIG90aGVyIHRoZW4gdGhlIC5wbyBmaWxlLCBvbmx5IHRoZSB0cmFuc2xhdGlvbnMKKy0jIGJ1dCBlYWNoIGdpdmVuIGEgdW5pcXVlIElELiAgU3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgYnkgMSBmb3IKKy0jIGVhY2ggbWVzc2FnZSB3ZSBhc3NpZ24gdGhlbSB0byB0aGUgbWVzc2FnZXMuCistIyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgLnBvIGZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY2F0LWlkLXRibC5jIGZpbGUKKy0jICh3aXRoIHBvLXRvLXRibCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGhlcmUuICAoQXQgbGVhc3QgdGhlIG9yZGVyCistIyBvZiBkZWNsYXJhdGlvbnMgbXVzdCBub3QgYmUgY2hhbmdlZC4pCistIworLS9ebXNnc3RyLyB7CistICBzL21zZ3N0clsgCV0qIlwoLipcKSIvIyBcMS8KKy0jIENsZWFyIHN1YnN0aXR1dGlvbiBmbGFnLgorLSAgdGIKKy0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgorLSAgOmIKKy0gIE4KKy0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KKy0gIHMvXCguKlxuXCkiXCguKlwpIi9cMVwyLworLSMgWWVzLCB0aGVuIGJyYW5jaC4KKy0gIHRhCistICBQCistICBECistIyBOb3RlIHRoYXQgRCBpbmNsdWRlcyBhIGp1bXAgdG8gdGhlIHN0YXJ0ISEKKy0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCistICA6YQorLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCistICBQCistIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KKy0gIHMvLipcblwoLipcKS9cMS8KKy0gIHRiCistfQorLWQKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmggbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaAkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw1OCArMCwwIEBACistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBFbmNvZGluZyBvZiBsb2NhbGUgbmFtZSBwYXJ0cy4gICovCistI2RlZmluZSBDRU5fUkVWSVNJT04JCTEKKy0jZGVmaW5lIENFTl9TUE9OU09SCQkyCistI2RlZmluZSBDRU5fU1BFQ0lBTAkJNAorLSNkZWZpbmUgWFBHX05PUk1fQ09ERVNFVAk4CistI2RlZmluZSBYUEdfQ09ERVNFVAkJMTYKKy0jZGVmaW5lIFRFUlJJVE9SWQkJMzIKKy0jZGVmaW5lIENFTl9BVURJRU5DRQkJNjQKKy0jZGVmaW5lIFhQR19NT0RJRklFUgkJMTI4CistCistI2RlZmluZSBDRU5fU1BFQ0lGSUMJKENFTl9SRVZJU0lPTnxDRU5fU1BPTlNPUnxDRU5fU1BFQ0lBTHxDRU5fQVVESUVOQ0UpCistI2RlZmluZSBYUEdfU1BFQ0lGSUMJKFhQR19DT0RFU0VUfFhQR19OT1JNX0NPREVTRVR8WFBHX01PRElGSUVSKQorLQorLQorLXN0cnVjdCBsb2FkZWRfbDEwbmZpbGUKKy17CistICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKy0gIGludCBkZWNpZGVkOworLQorLSAgY29uc3Qgdm9pZCAqZGF0YTsKKy0KKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKm5leHQ7CistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpzdWNjZXNzb3JbMV07CistfTsKKy0KKy0KKy1leHRlcm4gY29uc3QgY2hhciAqX25sX25vcm1hbGl6ZV9jb2Rlc2V0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKmNvZGVzZXQsCistCQkJCQkJICBzaXplX3QgbmFtZV9sZW4pKTsKKy0KKy1leHRlcm4gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCistX25sX21ha2VfbDEwbmZsaXN0IFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAorLQkJCSAgICBjb25zdCBjaGFyICpkaXJsaXN0LCBzaXplX3QgZGlybGlzdF9sZW4sIGludCBtYXNrLAorLQkJCSAgICBjb25zdCBjaGFyICpsYW5ndWFnZSwgY29uc3QgY2hhciAqdGVycml0b3J5LAorLQkJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LAorLQkJCSAgICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCistCQkJICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyLCBjb25zdCBjaGFyICpzcGVjaWFsLAorLQkJCSAgICBjb25zdCBjaGFyICpzcG9uc29yLCBjb25zdCBjaGFyICpyZXZpc2lvbiwKKy0JCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSkpOworLQorLQorLWV4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm5hbWUpKTsKKy0KKy1leHRlcm4gaW50IF9ubF9leHBsb2RlX25hbWUgUEFSQU1TICgoY2hhciAqbmFtZSwgY29uc3QgY2hhciAqKmxhbmd1YWdlLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKiptb2RpZmllciwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqdGVycml0b3J5LAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQsCistCQkJCSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWwsCistCQkJCSAgICAgY29uc3QgY2hhciAqKnNwb25zb3IsCistCQkJCSAgICAgY29uc3QgY2hhciAqKnJldmlzaW9uKSk7CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxOTkgKzAsMCBAQAorLS8qIExvYWQgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLQorLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCkgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3lzL21tYW4uaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBSZW5hbWUgdGhlIG5vbiBJU08gQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorLSAgIGJlY2F1c2Ugc29tZSBJU08gQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBmc3RhdCAgX19mc3RhdAorLSMgZGVmaW5lIG9wZW4gICBfX29wZW4KKy0jIGRlZmluZSBjbG9zZSAgX19jbG9zZQorLSMgZGVmaW5lIHJlYWQgICBfX3JlYWQKKy0jIGRlZmluZSBtbWFwICAgX19tbWFwCistIyBkZWZpbmUgbXVubWFwIF9fbXVubWFwCistI2VuZGlmCistCistLyogV2UgbmVlZCBhIHNpZ24sIHdoZXRoZXIgYSBuZXcgY2F0YWxvZyB3YXMgbG9hZGVkLCB3aGljaCBjYW4gYmUgYXNzb2NpYXRlZAorLSAgIHdpdGggYWxsIHRyYW5zbGF0aW9ucy4gIFRoaXMgaXMgaW1wb3J0YW50IGlmIHRoZSB0cmFuc2xhdGlvbnMgYXJlCistICAgY2FjaGVkIGJ5IG9uZSBvZiBHQ0MncyBmZWF0dXJlcy4gICovCistaW50IF9ubF9tc2dfY2F0X2NudHIgPSAwOworLQorLQorLS8qIExvYWQgdGhlIG1lc3NhZ2UgY2F0YWxvZ3Mgc3BlY2lmaWVkIGJ5IEZJTEVOQU1FLiAgSWYgaXQgaXMgbm8gdmFsaWQKKy0gICBtZXNzYWdlIGNhdGFsb2cgZG8gbm90aGluZy4gICovCistdm9pZAorLV9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUpCistICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZTsKKy17CistICBpbnQgZmQ7CistICBzdHJ1Y3Qgc3RhdCBzdDsKKy0gIHN0cnVjdCBtb19maWxlX2hlYWRlciAqZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTE7CistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKy0gICAgfHwgZGVmaW5lZCBfTElCQworLSAgaW50IHVzZV9tbWFwID0gMDsKKy0jZW5kaWYKKy0gIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47CistCistICBkb21haW5fZmlsZS0+ZGVjaWRlZCA9IDE7CistICBkb21haW5fZmlsZS0+ZGF0YSA9IE5VTEw7CistCistICAvKiBJZiB0aGUgcmVjb3JkIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIGxvY2FsZSB0aGUgRklMRU5BTUUKKy0gICAgIG1pZ2h0IGJlIE5VTEwuICBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuCistICAgICBzcGVjaWZpY2F0aW9uIHRoZSBsb2NhbGUgZmlsZSBuYW1lIGlzIGRpZmZlcmVudCBmb3IgWFBHIGFuZCBDRU4KKy0gICAgIHN5bnRheC4gICovCistICBpZiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lID09IE5VTEwpCistICAgIHJldHVybjsKKy0KKy0gIC8qIFRyeSB0byBvcGVuIHRoZSBhZGRyZXNzZWQgZmlsZS4gICovCistICBmZCA9IG9wZW4gKGRvbWFpbl9maWxlLT5maWxlbmFtZSwgT19SRE9OTFkpOworLSAgaWYgKGZkID09IC0xKQorLSAgICByZXR1cm47CistCistICAvKiBXZSBtdXN0IGtub3cgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGZpbGUuICAqLworLSAgaWYgKGZzdGF0IChmZCwgJnN0KSAhPSAwCistICAgICAgJiYgc3Quc3Rfc2l6ZSA8IChvZmZfdCkgc2l6ZW9mIChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIpKQorLSAgICB7CistICAgICAgLyogU29tZXRoaW5nIHdlbnQgd3JvbmcuICAqLworLSAgICAgIGNsb3NlIChmZCk7CistICAgICAgcmV0dXJuOworLSAgICB9CistCistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKy0gICAgfHwgZGVmaW5lZCBfTElCQworLSAgLyogTm93IHdlIGFyZSByZWFkeSB0byBsb2FkIHRoZSBmaWxlLiAgSWYgbW1hcCgpIGlzIGF2YWlsYWJsZSB3ZSB0cnkKKy0gICAgIHRoaXMgZmlyc3QuICBJZiBub3QgYXZhaWxhYmxlIG9yIGl0IGZhaWxlZCB3ZSB0cnkgdG8gbG9hZCBpdC4gICovCistICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtbWFwIChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUQsCistCQkJCQkgTUFQX1BSSVZBVEUsIGZkLCAwKTsKKy0KKy0gIGlmIChkYXRhICE9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEpCistICAgIHsKKy0gICAgICAvKiBtbWFwKCkgY2FsbCB3YXMgc3VjY2Vzc2Z1bC4gICovCistICAgICAgY2xvc2UgKGZkKTsKKy0gICAgICB1c2VfbW1hcCA9IDE7CistICAgIH0KKy0jZW5kaWYKKy0KKy0gIC8qIElmIHRoZSBkYXRhIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIChpLmUuIG1tYXAnZWQpIHdlIHRyeSB0byBsb2FkCistICAgICBpdCBtYW51YWxseS4gICovCistICBpZiAoZGF0YSA9PSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQorLSAgICB7CistICAgICAgb2ZmX3QgdG9fcmVhZDsKKy0gICAgICBjaGFyICpyZWFkX3B0cjsKKy0KKy0gICAgICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtYWxsb2MgKHN0LnN0X3NpemUpOworLSAgICAgIGlmIChkYXRhID09IE5VTEwpCistCXJldHVybjsKKy0KKy0gICAgICB0b19yZWFkID0gc3Quc3Rfc2l6ZTsKKy0gICAgICByZWFkX3B0ciA9IChjaGFyICopIGRhdGE7CistICAgICAgZG8KKy0JeworLQkgIGxvbmcgaW50IG5iID0gKGxvbmcgaW50KSByZWFkIChmZCwgcmVhZF9wdHIsIHRvX3JlYWQpOworLQkgIGlmIChuYiA9PSAtMSkKKy0JICAgIHsKKy0JICAgICAgY2xvc2UgKGZkKTsKKy0JICAgICAgcmV0dXJuOworLQkgICAgfQorLQorLQkgIHJlYWRfcHRyICs9IG5iOworLQkgIHRvX3JlYWQgLT0gbmI7CistCX0KKy0gICAgICB3aGlsZSAodG9fcmVhZCA+IDApOworLQorLSAgICAgIGNsb3NlIChmZCk7CistICAgIH0KKy0KKy0gIC8qIFVzaW5nIHRoZSBtYWdpYyBudW1iZXIgd2UgY2FuIHRlc3Qgd2hldGhlciBpdCByZWFsbHkgaXMgYSBtZXNzYWdlCistICAgICBjYXRhbG9nIGZpbGUuICAqLworLSAgaWYgKGRhdGEtPm1hZ2ljICE9IF9NQUdJQyAmJiBkYXRhLT5tYWdpYyAhPSBfTUFHSUNfU1dBUFBFRCkKKy0gICAgeworLSAgICAgIC8qIFRoZSBtYWdpYyBudW1iZXIgaXMgd3Jvbmc6IG5vdCBhIG1lc3NhZ2UgY2F0YWxvZyBmaWxlLiAgKi8KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAorLSAgICB8fCBkZWZpbmVkIF9MSUJDCistICAgICAgaWYgKHVzZV9tbWFwKQorLQltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzdC5zdF9zaXplKTsKKy0gICAgICBlbHNlCistI2VuZGlmCistCWZyZWUgKGRhdGEpOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSAgZG9tYWluX2ZpbGUtPmRhdGEKKy0gICAgPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgbWFsbG9jIChzaXplb2YgKHN0cnVjdCBsb2FkZWRfZG9tYWluKSk7CistICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKKy0gICAgcmV0dXJuOworLQorLSAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOworLSAgZG9tYWluLT5kYXRhID0gKGNoYXIgKikgZGF0YTsKKy0gIGRvbWFpbi0+bXVzdF9zd2FwID0gZGF0YS0+bWFnaWMgIT0gX01BR0lDOworLQorLSAgLyogRmlsbCBpbiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF2YWlsYWJsZSB0YWJsZXMuICAqLworLSAgc3dpdGNoIChXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+cmV2aXNpb24pKQorLSAgICB7CistICAgIGNhc2UgMDoKKy0gICAgICBkb21haW4tPm5zdHJpbmdzID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm5zdHJpbmdzKTsKKy0gICAgICBkb21haW4tPm9yaWdfdGFiID0gKHN0cnVjdCBzdHJpbmdfZGVzYyAqKQorLQkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5vcmlnX3RhYl9vZmZzZXQpKTsKKy0gICAgICBkb21haW4tPnRyYW5zX3RhYiA9IChzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKKy0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+dHJhbnNfdGFiX29mZnNldCkpOworLSAgICAgIGRvbWFpbi0+aGFzaF9zaXplID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX3NpemUpOworLSAgICAgIGRvbWFpbi0+aGFzaF90YWIgPSAobmxzX3VpbnQzMiAqKQorLQkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9vZmZzZXQpKTsKKy0gICAgICBicmVhazsKKy0gICAgZGVmYXVsdDoKKy0gICAgICAvKiBUaGlzIGlzIGFuIGlsbGVnYWwgcmV2aXNpb24uICAqLworLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gICAgICBpZiAodXNlX21tYXApCistCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHN0LnN0X3NpemUpOworLSAgICAgIGVsc2UKKy0jZW5kaWYKKy0JZnJlZSAoZGF0YSk7CistICAgICAgZnJlZSAoZG9tYWluKTsKKy0gICAgICBkb21haW5fZmlsZS0+ZGF0YSA9IE5VTEw7CistICAgICAgcmV0dXJuOworLSAgICB9CistCistICAvKiBTaG93IHRoYXQgb25lIGRvbWFpbiBpcyBjaGFuZ2VkLiAgVGhpcyBtaWdodCBtYWtlIHNvbWUgY2FjaGVkCistICAgICB0cmFuc2xhdGlvbnMgaW52YWxpZC4gICovCistICArK19ubF9tc2dfY2F0X2NudHI7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDM3OCArMCwwIEBACistLyogSGFuZGxlIGFsaWFzZXMgZm9yIGxvY2FsZSBuYW1lcworLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8Y3R5cGUuaD4KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmZGVmIF9fR05VQ19fCistIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKKy0jIGRlZmluZSBIQVZFX0FMTE9DQSAxCistI2Vsc2UKKy0jIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCistIyAgaW5jbHVkZSA8YWxsb2NhLmg+CistIyBlbHNlCistIyAgaWZkZWYgX0FJWAorLSAjcHJhZ21hIGFsbG9jYQorLSMgIGVsc2UKKy0jICAgaWZuZGVmIGFsbG9jYQorLWNoYXIgKmFsbG9jYSAoKTsKKy0jICAgZW5kaWYKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2Vsc2UKKy1jaGFyICpnZXRlbnYgKCk7CistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbHNlCistdm9pZCBmcmVlICgpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBfR05VX1NPVVJDRQorLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCistIyBlbmRpZgorLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgc3RyY2hyCistIyAgZGVmaW5lIHN0cmNociBpbmRleAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKy0gICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0CistICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworLSMgZGVmaW5lIHN0cmNhc2VjbXAgX19zdHJjYXNlY21wCistI2VuZGlmCistCistCistLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCistICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KKy0jaWZkZWYgSEFWRV9BTExPQ0EKKy0vKiBOb3RoaW5nIGhhcyB0byBiZSBkb25lLiAgKi8KKy0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcmVzcykgLyogbm90aGluZyAqLworLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KKy0jZWxzZQorLXN0cnVjdCBibG9ja19saXN0CisteworLSAgdm9pZCAqYWRkcmVzczsKKy0gIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OworLX07CistIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAorLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKKy0gICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCistICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKKy0gICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCistICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAorLSAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAorLSAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAorLSAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKKy0gICAgfQkJCQkJCQkJCSAgICAgIFwKKy0gIH0gd2hpbGUgKDApCistIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCistICBkbyB7CQkJCQkJCQkJICAgICAgXAorLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAorLSAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAorLSAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKKy0gICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCistICAgIH0JCQkJCQkJCQkgICAgICBcCistICB9IHdoaWxlICgwKQorLSMgdW5kZWYgYWxsb2NhCistIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQorLSNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLworLQorLQorLXN0cnVjdCBhbGlhc19tYXAKKy17CistICBjb25zdCBjaGFyICphbGlhczsKKy0gIGNvbnN0IGNoYXIgKnZhbHVlOworLX07CistCistCistc3RhdGljIHN0cnVjdCBhbGlhc19tYXAgKm1hcDsKKy1zdGF0aWMgc2l6ZV90IG5tYXAgPSAwOworLXN0YXRpYyBzaXplX3QgbWF4bWFwID0gMDsKKy0KKy0KKy0vKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLworLXN0YXRpYyBzaXplX3QgcmVhZF9hbGlhc19maWxlIFBBUkFNUyAoKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZm5hbWVfbGVuKSk7Cistc3RhdGljIHZvaWQgZXh0ZW5kX2FsaWFzX3RhYmxlIFBBUkFNUyAoKHZvaWQpKTsKKy1zdGF0aWMgaW50IGFsaWFzX2NvbXBhcmUgUEFSQU1TICgoY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMSwKKy0JCQkJICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKSk7CistCistCistY29uc3QgY2hhciAqCistX25sX2V4cGFuZF9hbGlhcyAobmFtZSkKKy0gICAgY29uc3QgY2hhciAqbmFtZTsKKy17CistICBzdGF0aWMgY29uc3QgY2hhciAqbG9jYWxlX2FsaWFzX3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKKy0gIHN0cnVjdCBhbGlhc19tYXAgKnJldHZhbDsKKy0gIHNpemVfdCBhZGRlZDsKKy0KKy0gIGRvCistICAgIHsKKy0gICAgICBzdHJ1Y3QgYWxpYXNfbWFwIGl0ZW07CistCistICAgICAgaXRlbS5hbGlhcyA9IG5hbWU7CistCistICAgICAgaWYgKG5tYXAgPiAwKQorLQlyZXR2YWwgPSAoc3RydWN0IGFsaWFzX21hcCAqKSBic2VhcmNoICgmaXRlbSwgbWFwLCBubWFwLAorLQkJCQkJICAgICAgIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCksCistCQkJCQkgICAgICAgKGludCAoKikgUEFSQU1TICgoY29uc3Qgdm9pZCAqLAorLQkJCQkJCQkJIGNvbnN0IHZvaWQgKikpCistCQkJCQkJKSBhbGlhc19jb21wYXJlKTsKKy0gICAgICBlbHNlCistCXJldHZhbCA9IE5VTEw7CistCistICAgICAgLyogV2UgcmVhbGx5IGZvdW5kIGFuIGFsaWFzLiAgUmV0dXJuIHRoZSB2YWx1ZS4gICovCistICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQlyZXR1cm4gcmV0dmFsLT52YWx1ZTsKKy0KKy0gICAgICAvKiBQZXJoYXBzIHdlIGNhbiBmaW5kIGFub3RoZXIgYWxpYXMgZmlsZS4gICovCistICAgICAgYWRkZWQgPSAwOworLSAgICAgIHdoaWxlIChhZGRlZCA9PSAwICYmIGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcpCistCXsKKy0JICBjb25zdCBjaGFyICpzdGFydDsKKy0KKy0JICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gPT0gJzonKQorLQkgICAgKytsb2NhbGVfYWxpYXNfcGF0aDsKKy0JICBzdGFydCA9IGxvY2FsZV9hbGlhc19wYXRoOworLQorLQkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnICYmIGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICc6JykKKy0JICAgICsrbG9jYWxlX2FsaWFzX3BhdGg7CistCistCSAgaWYgKHN0YXJ0IDwgbG9jYWxlX2FsaWFzX3BhdGgpCistCSAgICBhZGRlZCA9IHJlYWRfYWxpYXNfZmlsZSAoc3RhcnQsIGxvY2FsZV9hbGlhc19wYXRoIC0gc3RhcnQpOworLQl9CistICAgIH0KKy0gIHdoaWxlIChhZGRlZCAhPSAwKTsKKy0KKy0gIHJldHVybiBOVUxMOworLX0KKy0KKy0KKy1zdGF0aWMgc2l6ZV90CistcmVhZF9hbGlhc19maWxlIChmbmFtZSwgZm5hbWVfbGVuKQorLSAgICAgY29uc3QgY2hhciAqZm5hbWU7CistICAgICBpbnQgZm5hbWVfbGVuOworLXsKKy0jaWZuZGVmIEhBVkVfQUxMT0NBCistICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7CistI2VuZGlmCistICBGSUxFICpmcDsKKy0gIGNoYXIgKmZ1bGxfZm5hbWU7CistICBzaXplX3QgYWRkZWQ7CistICBzdGF0aWMgY29uc3QgY2hhciBhbGlhc2ZpbGVbXSA9ICIvbG9jYWxlLmFsaWFzIjsKKy0KKy0gIGZ1bGxfZm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKGZuYW1lX2xlbiArIHNpemVvZiBhbGlhc2ZpbGUpOworLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBmdWxsX2ZuYW1lKTsKKy0gIG1lbWNweSAoZnVsbF9mbmFtZSwgZm5hbWUsIGZuYW1lX2xlbik7CistICBtZW1jcHkgKCZmdWxsX2ZuYW1lW2ZuYW1lX2xlbl0sIGFsaWFzZmlsZSwgc2l6ZW9mIGFsaWFzZmlsZSk7CistCistICBmcCA9IGZvcGVuIChmdWxsX2ZuYW1lLCAiciIpOworLSAgaWYgKGZwID09IE5VTEwpCistICAgIHsKKy0gICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0KKy0gIGFkZGVkID0gMDsKKy0gIHdoaWxlICghZmVvZiAoZnApKQorLSAgICB7CistICAgICAgLyogSXQgaXMgYSByZWFzb25hYmxlIGFwcHJvYWNoIHRvIHVzZSBhIGZpeCBidWZmZXIgaGVyZSBiZWNhdXNlCistCSBhKSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBmaXJzdCB0d28gZmllbGRzCistCSBiKSB0aGVzZSBmaWVsZHMgbXVzdCBiZSB1c2FibGUgYXMgZmlsZSBuYW1lcyBhbmQgc28gbXVzdCBub3QKKy0JICAgIGJlIHRoYXQgbG9uZworLSAgICAgICAqLworLSAgICAgIGNoYXIgYnVmW0JVRlNJWl07CistICAgICAgY2hhciAqYWxpYXM7CistICAgICAgY2hhciAqdmFsdWU7CistICAgICAgY2hhciAqY3A7CistCistICAgICAgaWYgKGZnZXRzIChidWYsIEJVRlNJWiwgZnApID09IE5VTEwpCistCS8qIEVPRiByZWFjaGVkLiAgKi8KKy0JYnJlYWs7CistCistICAgICAgY3AgPSBidWY7CistICAgICAgLyogSWdub3JlIGxlYWRpbmcgd2hpdGUgc3BhY2UuICAqLworLSAgICAgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCistCSsrY3A7CistCistICAgICAgLyogQSBsZWFkaW5nICcjJyBzaWduYWxzIGEgY29tbWVudCBsaW5lLiAgKi8KKy0gICAgICBpZiAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnIycpCistCXsKKy0JICBhbGlhcyA9IGNwKys7CistCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKGNwWzBdKSkKKy0JICAgICsrY3A7CistCSAgLyogVGVybWluYXRlIGFsaWFzIG5hbWUuICAqLworLQkgIGlmIChjcFswXSAhPSAnXDAnKQorLQkgICAgKmNwKysgPSAnXDAnOworLQorLQkgIC8qIE5vdyBsb29rIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2YWx1ZS4gICovCistCSAgd2hpbGUgKGlzc3BhY2UgKGNwWzBdKSkKKy0JICAgICsrY3A7CistCistCSAgaWYgKGNwWzBdICE9ICdcMCcpCistCSAgICB7CistCSAgICAgIGNoYXIgKnRwOworLQkgICAgICBzaXplX3QgbGVuOworLQorLQkgICAgICB2YWx1ZSA9IGNwKys7CistCSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCistCQkrK2NwOworLQkgICAgICAvKiBUZXJtaW5hdGUgdmFsdWUuICAqLworLQkgICAgICBpZiAoY3BbMF0gPT0gJ1xuJykKKy0JCXsKKy0JCSAgLyogVGhpcyBoYXMgdG8gYmUgZG9uZSB0byBtYWtlIHRoZSBmb2xsb3dpbmcgdGVzdAorLQkJICAgICBmb3IgdGhlIGVuZCBvZiBsaW5lIHBvc3NpYmxlLiAgV2UgYXJlIGxvb2tpbmcgZm9yCistCQkgICAgIHRoZSB0ZXJtaW5hdGluZyAnXG4nIHdoaWNoIGRvIG5vdCBvdmVyd3JpdGUgaGVyZS4gICovCistCQkgICpjcCsrID0gJ1wwJzsKKy0JCSAgKmNwID0gJ1xuJzsKKy0JCX0KKy0JICAgICAgZWxzZSBpZiAoY3BbMF0gIT0gJ1wwJykKKy0JCSpjcCsrID0gJ1wwJzsKKy0KKy0JICAgICAgaWYgKG5tYXAgPj0gbWF4bWFwKQorLQkJZXh0ZW5kX2FsaWFzX3RhYmxlICgpOworLQorLQkgICAgICAvKiBXZSBjYW5ub3QgZGVwZW5kIG9uIHN0cmR1cCBhdmFpbGFibGUgaW4gdGhlIGxpYmMuICBTaWdoISAgKi8KKy0JICAgICAgbGVuID0gc3RybGVuIChhbGlhcykgKyAxOworLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0JICAgICAgaWYgKHRwID09IE5VTEwpCistCQl7CistCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0JCSAgcmV0dXJuIGFkZGVkOworLQkJfQorLQkgICAgICBtZW1jcHkgKHRwLCBhbGlhcywgbGVuKTsKKy0JICAgICAgbWFwW25tYXBdLmFsaWFzID0gdHA7CistCistCSAgICAgIGxlbiA9IHN0cmxlbiAodmFsdWUpICsgMTsKKy0JICAgICAgdHAgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgICAgIGlmICh0cCA9PSBOVUxMKQorLQkJeworLQkJICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCQkgIHJldHVybiBhZGRlZDsKKy0JCX0KKy0JICAgICAgbWVtY3B5ICh0cCwgdmFsdWUsIGxlbik7CistCSAgICAgIG1hcFtubWFwXS52YWx1ZSA9IHRwOworLQorLQkgICAgICArK25tYXA7CistCSAgICAgICsrYWRkZWQ7CistCSAgICB9CistCX0KKy0KKy0gICAgICAvKiBQb3NzaWJseSBub3QgdGhlIHdob2xlIGxpbmUgZml0cyBpbnRvIHRoZSBidWZmZXIuICBJZ25vcmUKKy0JIHRoZSByZXN0IG9mIHRoZSBsaW5lLiAgKi8KKy0gICAgICB3aGlsZSAoc3RyY2hyIChjcCwgJ1xuJykgPT0gTlVMTCkKKy0JeworLQkgIGNwID0gYnVmOworLQkgIGlmIChmZ2V0cyAoYnVmLCBCVUZTSVosIGZwKSA9PSBOVUxMKQorLQkgICAgLyogTWFrZSBzdXJlIHRoZSBpbm5lciBsb29wIHdpbGwgYmUgbGVmdC4gIFRoZSBvdXRlciBsb29wCistCSAgICAgICB3aWxsIGV4aXQgYXQgdGhlIGBmZW9mJyB0ZXN0LiAgKi8KKy0JICAgICpjcCA9ICdcbic7CistCX0KKy0gICAgfQorLQorLSAgLyogU2hvdWxkIHdlIHRlc3QgZm9yIGZlcnJvcigpPyAgSSB0aGluayB3ZSBoYXZlIHRvIHNpbGVudGx5IGlnbm9yZQorLSAgICAgZXJyb3JzLiAgLS1kcmVwcGVyICAqLworLSAgZmNsb3NlIChmcCk7CistCistICBpZiAoYWRkZWQgPiAwKQorLSAgICBxc29ydCAobWFwLCBubWFwLCBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAorLQkgICAoaW50ICgqKSBQQVJBTVMgKChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpKSBhbGlhc19jb21wYXJlKTsKKy0KKy0gIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0gIHJldHVybiBhZGRlZDsKKy19CistCistCistc3RhdGljIHZvaWQKKy1leHRlbmRfYWxpYXNfdGFibGUgKCkKKy17CistICBzaXplX3QgbmV3X3NpemU7CistICBzdHJ1Y3QgYWxpYXNfbWFwICpuZXdfbWFwOworLQorLSAgbmV3X3NpemUgPSBtYXhtYXAgPT0gMCA/IDEwMCA6IDIgKiBtYXhtYXA7CistICBuZXdfbWFwID0gKHN0cnVjdCBhbGlhc19tYXAgKikgbWFsbG9jIChuZXdfc2l6ZQorLQkJCQkJICogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSk7CistICBpZiAobmV3X21hcCA9PSBOVUxMKQorLSAgICAvKiBTaW1wbHkgZG9uJ3QgZXh0ZW5kOiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIGNvcmUuICAqLworLSAgICByZXR1cm47CistCistICBtZW1jcHkgKG5ld19tYXAsIG1hcCwgbm1hcCAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOworLQorLSAgaWYgKG1heG1hcCAhPSAwKQorLSAgICBmcmVlIChtYXApOworLQorLSAgbWFwID0gbmV3X21hcDsKKy0gIG1heG1hcCA9IG5ld19zaXplOworLX0KKy0KKy0KKy1zdGF0aWMgaW50CistYWxpYXNfY29tcGFyZSAobWFwMSwgbWFwMikKKy0gICAgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDE7CistICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyOworLXsKKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSQ0FTRUNNUAorLSAgcmV0dXJuIHN0cmNhc2VjbXAgKG1hcDEtPmFsaWFzLCBtYXAyLT5hbGlhcyk7CistI2Vsc2UKKy0gIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAxID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWFwMS0+YWxpYXM7CistICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1hcDItPmFsaWFzOworLSAgdW5zaWduZWQgY2hhciBjMSwgYzI7CistCistICBpZiAocDEgPT0gcDIpCistICAgIHJldHVybiAwOworLQorLSAgZG8KKy0gICAgeworLSAgICAgIC8qIEkga25vdyB0aGlzIHNlZW1zIHRvIGJlIG9kZCBidXQgdGhlIHRvbG93ZXIoKSBmdW5jdGlvbiBpbgorLQkgc29tZSBzeXN0ZW1zIGxpYmMgY2Fubm90IGhhbmRsZSBub25hbHBoYSBjaGFyYWN0ZXJzLiAgKi8KKy0gICAgICBjMSA9IGlzdXBwZXIgKCpwMSkgPyB0b2xvd2VyICgqcDEpIDogKnAxOworLSAgICAgIGMyID0gaXN1cHBlciAoKnAyKSA/IHRvbG93ZXIgKCpwMikgOiAqcDI7CistICAgICAgaWYgKGMxID09ICdcMCcpCistCWJyZWFrOworLSAgICAgICsrcDE7CistICAgICAgKytwMjsKKy0gICAgfQorLSAgd2hpbGUgKGMxID09IGMyKTsKKy0KKy0gIHJldHVybiBjMSAtIGMyOworLSNlbmRpZgorLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL01ha2VmaWxlLmluIGxyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbgkxOTk4LTA0LTI2IDE0OjIyOjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMjE0ICswLDAgQEAKKy0jIE1ha2VmaWxlIGZvciBkaXJlY3Rvcnkgd2l0aCBtZXNzYWdlIGNhdGFsb2cgaGFuZGxpbmcgaW4gR05VIE5MUyBVdGlsaXRpZXMuCistIyBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKy0KKy1QQUNLQUdFID0gQFBBQ0tBR0VACistVkVSU0lPTiA9IEBWRVJTSU9OQAorLQorLVNIRUxMID0gL2Jpbi9zaAorLQorLXNyY2RpciA9IEBzcmNkaXJACistdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorLXRvcF9idWlsZGRpciA9IC4uCistVlBBVEggPSBAc3JjZGlyQAorLQorLXByZWZpeCA9IEBwcmVmaXhACistZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACistdHJhbnNmb3JtID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACistbGliZGlyID0gJChleGVjX3ByZWZpeCkvbGliCistaW5jbHVkZWRpciA9ICQocHJlZml4KS9pbmNsdWRlCistZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACistbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKKy1nbnVsb2NhbGVkaXIgPSAkKHByZWZpeCkvc2hhcmUvbG9jYWxlCistZ2V0dGV4dHNyY2RpciA9IEBkYXRhZGlyQC9nZXR0ZXh0L2ludGwKKy1hbGlhc3BhdGggPSAkKGxvY2FsZWRpcik6LgorLXN1YmRpciA9IGludGwKKy0KKy1JTlNUQUxMID0gQElOU1RBTExACistSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKKy1NS0lOU1RBTExESVJTID0gQE1LSU5TVEFMTERJUlNACistCistbCA9IEBsQAorLQorLUFSID0gYXIKKy1DQyA9IEBDQ0AKKy1MSUJUT09MID0gQExJQlRPT0xACistUkFOTElCID0gQFJBTkxJQkAKKy0KKy1ERUZTID0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIiAtREdOVUxPQ0FMRURJUj1cIiQoZ251bG9jYWxlZGlyKVwiIFwKKy0tRExPQ0FMRV9BTElBU19QQVRIPVwiJChhbGlhc3BhdGgpXCIgQERFRlNACistQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACistQ0ZMQUdTID0gQENGTEFHU0AKKy1MREZMQUdTID0gQExERkxBR1NACistCistQ09NUElMRSA9ICQoQ0MpIC1jICQoREVGUykgJChJTkNMVURFUykgJChDUFBGTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykKKy0KKy1IRUFERVJTID0gJChDT01IRFJTKSBsaWJnZXR0ZXh0LmggbG9hZGluZm8uaAorLUNPTUhEUlMgPSBnZXR0ZXh0LmggZ2V0dGV4dFAuaCBoYXNoLXN0cmluZy5oCistU09VUkNFUyA9ICQoQ09NU1JDUykgaW50bC1jb21wYXQuYyBjYXQtY29tcGF0LmMKKy1DT01TUkNTID0gYmluZHRleHRkb20uYyBkY2dldHRleHQuYyBkZ2V0dGV4dC5jIGdldHRleHQuYyBcCistZmluZGRvbWFpbi5jIGxvYWRtc2djYXQuYyBsb2NhbGVhbGlhcy5jIHRleHRkb21haW4uYyBsMTBuZmxpc3QuYyBcCistZXhwbG9kZW5hbWUuYworLU9CSkVDVFMgPSBASU5UTE9CSlNAIGJpbmR0ZXh0ZG9tLiRsbyBkY2dldHRleHQuJGxvIGRnZXR0ZXh0LiRsbyBnZXR0ZXh0LiRsbyBcCistZmluZGRvbWFpbi4kbG8gbG9hZG1zZ2NhdC4kbG8gbG9jYWxlYWxpYXMuJGxvIHRleHRkb21haW4uJGxvIGwxMG5mbGlzdC4kbG8gXAorLWV4cGxvZGVuYW1lLiRsbworLUNBVE9CSlMgPSBjYXQtY29tcGF0LiRsbyAuLi9wby9jYXQtaWQtdGJsLiRsbworLUdFVFRPQkpTID0gaW50bC1jb21wYXQuJGxvCistRElTVEZJTEVTLmNvbW1vbiA9IENoYW5nZUxvZyBNYWtlZmlsZS5pbiBsaW51eC1tc2cuc2VkIHBvMnRibC5zZWQuaW4gXAorLXhvcGVuLW1zZy5zZWQgJChIRUFERVJTKSAkKFNPVVJDRVMpCistRElTVEZJTEVTLm5vcm1hbCA9IFZFUlNJT04KKy1ESVNURklMRVMuZ2V0dGV4dCA9IGxpYmludGwuZ2xpYmMgaW50bGguaW5zdC5pbgorLQorLS5TVUZGSVhFUzoKKy0uU1VGRklYRVM6IC5jIC5vIC5sbworLS5jLm86CistCSQoQ09NUElMRSkgJDwKKy0uYy5sbzoKKy0JJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQ8CistCistSU5DTFVERVMgPSAtSS4uIC1JLiAtSSQodG9wX3NyY2RpcikvaW50bCAtSSQodG9wX3NyY2RpcikvbGliCistCistYWxsOiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQAorLQorLWFsbC15ZXM6IGxpYmludGwuJGxhIGludGxoLmluc3QKKy1hbGwtbm86CistCistbGliaW50bC5hOiAkKE9CSkVDVFMpCistCXJtIC1mICRACistCSQoQVIpIGNydSAkQCAkKE9CSkVDVFMpCistCSQoUkFOTElCKSAkQAorLQorLWxpYmludGwubGE6ICQoT0JKRUNUUykKKy0JJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAkKExERkxBR1MpIC1vICRAICQoT0JKRUNUUykgXAorLQkJICAgLXZlcnNpb24taW5mbyAxOjAgLXJwYXRoICQobGliZGlyKQorLQorLS4uL3BvL2NhdC1pZC10YmwuJGxvOiAuLi9wby9jYXQtaWQtdGJsLmMgJCh0b3Bfc3JjZGlyKS9wby8kKFBBQ0tBR0UpLnBvdAorLQljZCAuLi9wbyAmJiAkKE1BS0UpIGNhdC1pZC10YmwuJGxvCistCistY2hlY2s6IGFsbAorLQorLSMgVGhpcyBpbnN0YWxsYXRpb24gZ29hbCBpcyBvbmx5IHVzZWQgaW4gR05VIGdldHRleHQuICBQYWNrYWdlcyB3aGljaAorLSMgb25seSB1c2UgdGhlIGxpYnJhcnkgc2hvdWxkIHVzZSBpbnN0YWxsIGluc3RlYWQuCistCistIyBXZSBtdXN0IG5vdCBpbnN0YWxsIHRoZSBsaWJpbnRsLmgvbGliaW50bC5hIGZpbGVzIGlmIHdlIGFyZSBvbiBhCistIyBzeXN0ZW0gd2hpY2ggaGFzIHRoZSBnZXR0ZXh0KCkgZnVuY3Rpb24gaW4gaXRzIEMgbGlicmFyeSBvciBpbiBhCistIyBzZXBhcmF0ZSBsaWJyYXJ5IG9yIHVzZSB0aGUgY2F0Z2V0cyBpbnRlcmZhY2UuICBBIHNwZWNpYWwgY2FzZSBpcworLSMgd2hlcmUgY29uZmlndXJlIGZvdW5kIGEgcHJldmlvdXNseSBpbnN0YWxsZWQgR05VIGdldHRleHQgbGlicmFyeS4KKy0jIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgb25lIHdoaWNoIGNvbWVzIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZQorLSMgcGFja2FnZSwgeW91IGhhdmUgdG8gdXNlIGBjb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQnLgorLWluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKKy1pbnN0YWxsLWV4ZWM6IGFsbAorLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0IiBcCistCSAgICYmIHRlc3QgJ0BJTlRMT0JKU0AnID0gJyQoR0VUVE9CSlMpJzsgdGhlbiBcCistCSAgaWYgdGVzdCAtciAkKE1LSU5TVEFMTERJUlMpOyB0aGVuIFwKKy0JICAgICQoTUtJTlNUQUxMRElSUykgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKKy0JICBlbHNlIFwKKy0JICAgICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKGxpYmRpcikgJChpbmNsdWRlZGlyKTsgXAorLQkgIGZpOyBcCistCSAgJChJTlNUQUxMX0RBVEEpIGludGxoLmluc3QgJChpbmNsdWRlZGlyKS9saWJpbnRsLmg7IFwKKy0JICAkKElOU1RBTExfREFUQSkgbGliaW50bC5hICQobGliZGlyKS9saWJpbnRsLmE7IFwKKy0JZWxzZSBcCistCSAgOiA7IFwKKy0JZmkKKy1pbnN0YWxsLWRhdGE6IGFsbAorLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0IjsgdGhlbiBcCistCSAgaWYgdGVzdCAtciAkKE1LSU5TVEFMTERJUlMpOyB0aGVuIFwKKy0JICAgICQoTUtJTlNUQUxMRElSUykgJChnZXR0ZXh0c3JjZGlyKTsgXAorLQkgIGVsc2UgXAorLQkgICAgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQoZ2V0dGV4dHNyY2Rpcik7IFwKKy0JICBmaTsgXAorLQkgICQoSU5TVEFMTF9EQVRBKSBWRVJTSU9OICQoZ2V0dGV4dHNyY2RpcikvVkVSU0lPTjsgXAorLQkgIGRpc3RzPSIkKERJU1RGSUxFUy5jb21tb24pIjsgXAorLQkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKy0JICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlICQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCistCSAgZG9uZTsgXAorLQllbHNlIFwKKy0JICA6IDsgXAorLQlmaQorLQorLSMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KKy1pbnN0YWxsY2hlY2s6CistCistdW5pbnN0YWxsOgorLQlkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKKy0JZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorLQkgIHJtIC1mICQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCistCWRvbmUKKy0KKy1pbmZvIGR2aToKKy0KKy0kKE9CSkVDVFMpOiAuLi9jb25maWcuaCBsaWJnZXR0ZXh0LmgKKy1iaW5kdGV4dGRvbS4kbG8gZmluZGRvbWFpbi4kbG8gbG9hZG1zZ2NhdC4kbG86IGdldHRleHRQLmggZ2V0dGV4dC5oIGxvYWRpbmZvLmgKKy1kY2dldHRleHQuJGxvOiBnZXR0ZXh0UC5oIGdldHRleHQuaCBoYXNoLXN0cmluZy5oIGxvYWRpbmZvLmgKKy0KKy10YWdzOiBUQUdTCistCistVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCistCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBldGFncyAtbyAkJGhlcmUvVEFHUyAkKEhFQURFUlMpICQoU09VUkNFUykKKy0KKy1pZDogSUQKKy0KKy1JRDogJChIRUFERVJTKSAkKFNPVVJDRVMpCistCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBta2lkIC1mJCRoZXJlL0lEICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQorLQorLW1vc3RseWNsZWFuOgorLQlybSAtZiAqLmEgKi5vICoubG8gY29yZSBjb3JlLioKKy0KKy1jbGVhbjogbW9zdGx5Y2xlYW4KKy0KKy1kaXN0Y2xlYW46IGNsZWFuCistCXJtIC1mIE1ha2VmaWxlIElEIFRBR1MgcG8ybXNnLnNlZCBwbzJ0Ymwuc2VkIGxpYmludGwuaAorLQorLW1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgorLQlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7IgorLQlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCistCistCistIyBHTlUgZ2V0dGV4dCBuZWVkcyBub3QgY29udGFpbiB0aGUgZmlsZSBgVkVSU0lPTicgYnV0IGNvbnRhaW5zIHNvbWUKKy0jIG90aGVyIGZpbGVzIHdoaWNoIHNob3VsZCBub3QgYmUgZGlzdHJpYnV0ZWQgaW4gb3RoZXIgcGFja2FnZXMuCistZGlzdGRpciA9IC4uLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKKy1kaXN0IGRpc3RkaXI6IE1ha2VmaWxlICQoRElTVEZJTEVTKQorLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9IGdldHRleHQ7IHRoZW4gXAorLQkgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLmdldHRleHQpIjsgXAorLQllbHNlIFwKKy0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5ub3JtYWwpIjsgXAorLQlmaTsgXAorLQlmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pICQkYWRkaXRpb25hbDsgZG8gXAorLQkgIGxuICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSAyPiAvZGV2L251bGwgXAorLQkgICAgfHwgY3AgLXAgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpOyBcCistCWRvbmUKKy0KKy1kaXN0LWxpYmM6CistCXRhciB6Y3ZmIGludGwtZ2xpYmMudGFyLmd6ICQoQ09NU1JDUykgJChDT01IRFJTKSBsaWJpbnRsLmguZ2xpYmMKKy0KKy1NYWtlZmlsZTogTWFrZWZpbGUuaW4gLi4vY29uZmlnLnN0YXR1cworLQljZCAuLiBcCistCSAgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCistCistIyBUaGUgZGVwZW5kZW5jeSBmb3IgaW50bGguaW5zdCBpcyBkaWZmZXJlbnQgaW4gZ2V0dGV4dCBhbmQgYWxsIG90aGVyCistIyBwYWNrYWdlcy4gIEJlY2F1c2Ugd2UgY2Fubm90IHlvdSBHTlUgbWFrZSBmZWF0dXJlcyB3ZSBoYXZlIHRvIHNvbHZlCistIyB0aGUgcHJvYmxlbSB3aGlsZSByZXdyaXRpbmcgTWFrZWZpbGUuaW4uCistQEdUX1lFU0BpbnRsaC5pbnN0OiBpbnRsaC5pbnN0LmluIC4uL2NvbmZpZy5zdGF0dXMKKy1AR1RfWUVTQAljZCAuLiBcCistQEdUX1lFU0AJJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gXAorLUBHVF9ZRVNACSAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCistQEdUX05PQC5QSE9OWTogaW50bGguaW5zdAorLUBHVF9OT0BpbnRsaC5pbnN0OgorLQorLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCistIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCistLk5PRVhQT1JUOgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbiBscnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwMiArMCwwIEBACistIyBwbzJ0Ymwuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBsb29rdXAgdGFibGUgZm9yIGNhdGdldHMKKy0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorLSMKKy0xIHsKKy0gIGlcCistLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIEBQQUNLQUdFIE5BTUVALnBvdC4gICovXAorLVwKKy0jaWYgSEFWRV9DT05GSUdfSFwKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPlwKKy0jZW5kaWZcCistXAorLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiXAorLVwKKy1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKKy0gIGgKKy0gIHMvLiovMC8KKy0gIHgKKy19CistIworLSMgV3JpdGUgbXNnaWQgZW50cmllcyBpbiBDIGFycmF5IGZvcm0uCistIworLS9ebXNnaWQvIHsKKy0gIHMvbXNnaWRbIAldKlwoIi4qIlwpLyAge1wxLworLSAgdGIKKy0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lCistICA6YgorLSAgTgorLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGNvbnRpbnVhdGlvbiBsaW5lLgorLSAgcy9cKC4qXCkiXChcblwpIlwoLioiXCkvXDFcMlwzLworLSMgWWVzLCB0aGVuIGJyYW5jaC4KKy0gIHRhCistIyBCZWNhdXNlIHdlIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCBmaWxlIGNvcnJlY3RseSBmb3JtZWQgdGhlIGxpbmUKKy0jIGp1c3QgcmVhZCBjYW5ub3QgYmUgYWdhaW4gYmUgYSBtc2dpZCBsaW5lLiAgU28gaXQncyBzYWZlIHRvIGlnbm9yZQorLSMgaXQuCistICBzL1woLipcKVxuLiovXDEvCistICBiYworLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KKy0gIDphCistICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KKy0gIFAKKy0jIFdlIGNhbm5vdCB1c2UgRCBoZXJlLgorLSAgcy8uKlxuXCguKlwpL1wxLworLSMgU29tZSBidWdneSBzZWRzIGRvIG5vdCBjbGVhciB0aGUgYHN1Y2Nlc3NmdWwgc3Vic3RpdHV0aW9uIHNpbmNlIGxhc3QgYGB0JycnCistIyBmbGFnIG9uIGBOJywgc28gd2UgZG8gYSBgdCcgaGVyZSB0byBjbGVhciBpdC4KKy0gIHRiCistIyBOb3QgcmVhY2hlZAorLSAgOmMKKy0gIHgKKy0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQorLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CistICB0ZAorLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KKy0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KKy0gIDpkCistICBzLzlcKF8qXCkkL19cMS8KKy0gIHRkCistIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KKy0gIHMvXlwoXypcKSQvMFwxLworLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgorLSAgcy84XChfKlwpJC85XDEvCistICBzLzdcKF8qXCkkLzhcMS8KKy0gIHMvNlwoXypcKSQvN1wxLworLSAgcy81XChfKlwpJC82XDEvCistICBzLzRcKF8qXCkkLzVcMS8KKy0gIHMvM1woXypcKSQvNFwxLworLSAgcy8yXChfKlwpJC8zXDEvCistICBzLzFcKF8qXCkkLzJcMS8KKy0gIHMvMFwoXypcKSQvMVwxLworLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KKy0gIHMvXy8wL2cKKy0gIHgKKy0gIEcKKy0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wxLCBcMn0sLworLSAgcy9cKC4qXCkiJC9cMS8KKy0gIHAKKy19CistIworLSMgTGFzdCBsaW5lLgorLSMKKy0kIHsKKy0gIGlcCistfTtcCistCistICBnCistICBzLzAqXCguKlwpL2ludCBfbXNnX3RibF9sZW5ndGggPSBcMTsvcAorLX0KKy1kCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMgbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDYgKzAsMCBAQAorLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZXh0ZG9tYWluKDMpIGZ1bmN0aW9uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogTmFtZSBvZiB0aGUgZGVmYXVsdCB0ZXh0IGRvbWFpbi4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXTsKKy0KKy0vKiBEZWZhdWx0IHRleHQgZG9tYWluIGluIHdoaWNoIGVudHJpZXMgZm9yIGdldHRleHQoMykgYXJlIHRvIGJlIGZvdW5kLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIFRFWFRET01BSU4gX190ZXh0ZG9tYWluCistIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKKy0jZWxzZQorLSMgZGVmaW5lIFRFWFRET01BSU4gdGV4dGRvbWFpbl9fCistI2VuZGlmCistCistLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCistICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KKy0gICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KKy1jaGFyICoKKy1URVhURE9NQUlOIChkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICBjaGFyICpvbGQ7CistCistICAvKiBBIE5VTEwgcG9pbnRlciByZXF1ZXN0cyB0aGUgY3VycmVudCBzZXR0aW5nLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0gIG9sZCA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLQorLSAgLyogSWYgZG9tYWluIG5hbWUgaXMgdGhlIG51bGwgc3RyaW5nIHNldCB0byBkZWZhdWx0IGRvbWFpbiAibWVzc2FnZXMiLiAgKi8KKy0gIGlmIChkb21haW5uYW1lWzBdID09ICdcMCcKKy0gICAgICB8fCBzdHJjbXAgKGRvbWFpbm5hbWUsIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKSA9PSAwKQorLSAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOworLSAgZWxzZQorLSAgICB7CistICAgICAgLyogSWYgdGhlIGZvbGxvd2luZyBtYWxsb2MgZmFpbHMgYF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluJworLQkgd2lsbCBiZSBOVUxMLiAgVGhpcyB2YWx1ZSB3aWxsIGJlIHJldHVybmVkIGFuZCBzbyBzaWduYWxzIHdlCistCSBhcmUgb3V0IG9mIGNvcmUuICAqLworLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKKy0gICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7CistI2Vsc2UKKy0gICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7CistICAgICAgY2hhciAqY3AgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistICAgICAgaWYgKGNwICE9IE5VTEwpCistCW1lbWNweSAoY3AsIGRvbWFpbm5hbWUsIGxlbik7CistICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBjcDsKKy0jZW5kaWYKKy0gICAgfQorLQorLSAgaWYgKG9sZCAhPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikKKy0gICAgZnJlZSAob2xkKTsKKy0KKy0gIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX190ZXh0ZG9tYWluLCB0ZXh0ZG9tYWluKTsKKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04gbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTgkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSArMCwwIEBACistR05VIGdldHRleHQgbGlicmFyeSBmcm9tIGdldHRleHQtMC4xMC4zMgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZCBscnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwNCArMCwwIEBACistIyBwbzJtc2cuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBYL09wZW4gc3R5bGUgLm1zZyBmaWxlCistIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKy0jCistIworLSMgVGhlIGZpcnN0IGRpcmVjdGl2ZSBpbiB0aGUgLm1zZyBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlCistIyBtZXNzYWdlIHNldCBudW1iZXIuICBXZSB1c2UgYWx3YXlzIHNldCBudW1iZXIgMS4KKy0jCistMSB7CistICBpXAorLSRzZXQgMSAjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBwbzJtc2cuc2VkCistICBoCistICBzLy4qLzAvCistICB4CistfQorLSMKKy0jIFdlIGNvcHkgYWxsIGNvbW1lbnRzIGludG8gdGhlIC5tc2cgZmlsZS4gIFBlcmhhcHMgdGhleSBjYW4gaGVscC4KKy0jCistL14jLyBzL14jWyAJXSovJCAvcAorLSMKKy0jIFdlIGNvcHkgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYXMgYSBjb21tZW50IGludG8gdGhlIC5tc2cgZmlsZS4KKy0jCistL15tc2dpZC8geworLSMgRG9lcyBub3Qgd29yayBub3cKKy0jICAvIiQvISB7CistIyAgICBzL1xcJC8vCistIyAgICBzLyQvIC4uLiAobW9yZSBsaW5lcyBmb2xsb3dpbmcpIi8KKy0jICB9CistICBzL15tc2dpZFsgCV0qIlwoLipcKSIkLyQgT3JpZ2luYWwgTWVzc2FnZTogXDEvCistICBwCistfQorLSMKKy0jIFRoZSAubXNnIGZpbGUgY29udGFpbnMsIG90aGVyIHRoZW4gdGhlIC5wbyBmaWxlLCBvbmx5IHRoZSB0cmFuc2xhdGlvbnMKKy0jIGJ1dCBlYWNoIGdpdmVuIGEgdW5pcXVlIElELiAgU3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgYnkgMSBmb3IKKy0jIGVhY2ggbWVzc2FnZSB3ZSBhc3NpZ24gdGhlbSB0byB0aGUgbWVzc2FnZXMuCistIyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgLnBvIGZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY2F0LWlkLXRibC5jIGZpbGUKKy0jICh3aXRoIHBvLXRvLXRibCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGhlcmUuICAoQXQgbGVhc3QgdGhlIG9yZGVyCistIyBvZiBkZWNsYXJhdGlvbnMgbXVzdCBub3QgYmUgY2hhbmdlZC4pCistIworLS9ebXNnc3RyLyB7CistICBzL21zZ3N0clsgCV0qIlwoLipcKSIvXDEvCistICB4CistIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKKy0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgorLSAgdGQKKy0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCistIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCistICA6ZAorLSAgcy85XChfKlwpJC9fXDEvCistICB0ZAorLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCistICBzL15cKF8qXCkkLzBcMS8KKy0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KKy0gIHMvOFwoXypcKSQvOVwxLworLSAgcy83XChfKlwpJC84XDEvCistICBzLzZcKF8qXCkkLzdcMS8KKy0gIHMvNVwoXypcKSQvNlwxLworLSAgcy80XChfKlwpJC81XDEvCistICBzLzNcKF8qXCkkLzRcMS8KKy0gIHMvMlwoXypcKSQvM1wxLworLSAgcy8xXChfKlwpJC8yXDEvCistICBzLzBcKF8qXCkkLzFcMS8KKy0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCistICBzL18vMC9nCistICB4CistIyBCcmluZyB0aGUgbGluZSBpbiB0aGUgZm9ybWF0IGA8bnVtYmVyPiA8bWVzc2FnZT4nCistICBHCistICBzL15bXlxuXSokLyYgLworLSAgcy9cKC4qXClcblwoWzAtOV0qXCkvXDIgXDEvCistIyBDbGVhciBmbGFnIGZyb20gbGFzdCBzdWJzdGl0dXRpb24uCistICB0YgorLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUuCistICA6YgorLSAgTgorLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGEgY29udGludWF0aW9uIGxpbmUuCistICBzL1woLipcblwpIlwoLipcKSIvXDFcMi8KKy0jIFllcywgdGhlbiBicmFuY2guCistICB0YQorLSAgUAorLSAgRAorLSMgTm90ZSB0aGF0IGBEJyBpbmNsdWRlcyBhIGp1bXAgdG8gdGhlIHN0YXJ0ISEKKy0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCistICA6YQorLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCistICBQCistIyBXZSBjYW5ub3QgdXNlIHRoZSBzZWQgY29tbWFuZCBgRCcgaGVyZQorLSAgcy8uKlxuXCguKlwpL1wxLworLSAgdGIKKy19CistZAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbSBscnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCTE5OTgtMTItMjcgMTY6MjU6MjYuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0JMjAxOS0xMS0yNSAxNjoyMjozNC4wMDAwMDAwMDAgKzAwMDAKK0BAIC0xLDYgKzEsNCBAQAorIG5vaW5zdF9MSUJSQVJJRVM9bGliem1vZGVtLmEKKy1DRkxBR1M9QENGTEFHU0AKKy1BVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCisgCisgRVhUUkFfRElTVCA9IGFsbG9jYS5jIGFuc2kya25yLjEgYW5zaTJrbnIuYyBcCisgCWdldG9wdC5jIGdldG9wdDEuYyBta2Rpci5jIG1rdGltZS5jIFwKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbSBscnpzei0wLjEyLjIwL01ha2VmaWxlLmFtCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQkxOTk4LTEyLTMwIDExOjE5OjQwLjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0JMjAxOS0xMS0yNiAxMTo0NzoyOS4wMDAwMDAwMDAgKzAwMDAKK0BAIC0xLDUgKzEsNSBAQAorLVNVQkRJUlMgPSBsaWIgaW50bCBzcmMgcG8gbWFuIHRlc3RzdWl0ZQorLUVYVFJBX0RJU1QgPSBjaGVjay5scnpzeiBDT01QQVRBQklMSVRZIFJFQURNRS5jdnMgUkVBRE1FLmlzZG40bGludXggXAorK1NVQkRJUlMgPSBsaWIgc3JjIHBvIG1hbiB0ZXN0c3VpdGUKKytFWFRSQV9ESVNUID0gY29uZmlnLnJwYXRoIG00L0NoYW5nZUxvZyAgY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKKyAJUkVBRE1FLmdldHRleHQgcnBtcmMgYnVpbGRycG0gc3lzdHlwZS5pbiBmYXN0Y2hlY2suc2ggUkVBRE1FLnRlc3RzIFwKKyAJYmVvcy1ydW5waXBlZC5jIGZhc3RjaGVjay5iZW9zCisgbm9pbnN0X1NDUklQVFM9c3lzdHlwZQorQEAgLTcsNyArNyw2IEBAIFBSPUBQQUNLQUdFQC1AVkVSU0lPTkAKKyBDTEVBTl9GSUxFUz1mYXN0Y2hlY2suZG9uZQorIAorIGRpc3QtaG9vazoKKy0JbWtkaXIgJChkaXN0ZGlyKS9kZWJpYW4KKyAJY3AgLWZhICQoc3JjZGlyKS9kZWJpYW4vY2hhbmdlbG9nICAkKGRpc3RkaXIpL2RlYmlhbi8KKyAJY3AgLWZhICQoc3JjZGlyKS9kZWJpYW4vY29udHJvbCAgJChkaXN0ZGlyKS9kZWJpYW4vCisgCWNwIC1mYSAkKHNyY2RpcikvZGViaWFuL2NvcHlyaWdodCAgJChkaXN0ZGlyKS9kZWJpYW4vCitAQCAtODMsMyArODIsNSBAQCBjdnMtZGlzdDoKKyBycG06ICQoUFIpLnRhci5neiBTcGVjZmlsZQorIAkkKHNyY2RpcikvYnVpbGRycG0gJChzcmNkaXIpCisgCisrCisrQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMgbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYwkxOTk4LTEyLTI5IDA5OjI0OjI0LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwyMzQgKzAsMCBAQAorLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBscnpzei5wb3QuICAqLworLQorLSNpZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLQorLWNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdID0geworLSAgeyIiLCAxfSwKKy0gIHsiaW9fbW9kZSgsMikgaW4gcmJzYi5jIG5vdCBpbXBsZW1lbnRlZFxuIiwgMn0sCistICB7ImNhdWdodCBzaWduYWwgJWQ7IGV4aXRpbmciLCAzfSwKKy0gIHsiY29tbWFuZCB0cmllcyIsIDR9LAorLSAgeyJwYWNrZXRsZW5ndGgiLCA1fSwKKy0gIHsicGFja2V0bGVuZ3RoIG91dCBvZiByYW5nZSAyNC4uJWxkIiwgNn0sCistICB7ImZyYW1lbGVuZ3RoIiwgN30sCistICB7ImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIiwgOH0sCistICB7Im1pbl9icHMiLCA5fSwKKy0gIHsibWluX2JwcyBtdXN0IGJlID49IDAiLCAxMH0sCistICB7Im1pbl9icHNfdGltZSIsIDExfSwKKy0gIHsibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIiwgMTJ9LAorLSAgeyJob3VyIHRvIGxhcmdlICgwLi4yMykiLCAxM30sCistICB7InVucGFyc2FibGUgc3RvcCB0aW1lXG4iLCAxNH0sCistICB7Im1pbnV0ZSB0byBsYXJnZSAoMC4uNTkpIiwgMTV9LAorLSAgeyJzdG9wIHRpbWUgdG8gc21hbGwiLCAxNn0sCistICB7InN0b3AtYXQiLCAxN30sCistICB7InRpbWVvdXQiLCAxOH0sCistICB7InRpbWVvdXQgb3V0IG9mIHJhbmdlIDEwLi4xMDAwIiwgMTl9LAorLSAgeyJzZWN1cml0eSB2aW9sYXRpb246IGNhbid0IGRvIHRoYXQgdW5kZXIgcmVzdHJpY3RlZCBzaGVsbFxuIiwgMjB9LAorLSAgeyJ3aW5kb3cgc2l6ZSIsIDIxfSwKKy0gIHsiY2Fubm90IHR1cm5vZmYgc3lzbG9nIiwgMjJ9LAorLSAgeyJzdGFydHVwIGRlbGF5IiwgMjN9LAorLSAgeyJvdXQgb2YgbWVtb3J5IiwgMjR9LAorLSAgeyJ0aGlzIHByb2dyYW0gd2FzIG5ldmVyIGludGVuZGVkIHRvIGJlIHVzZWQgc2V0dWlkXG4iLCAyNX0sCistICB7Im5lZWQgYXQgbGVhc3Qgb25lIGZpbGUgdG8gc2VuZCIsIDI2fSwKKy0gIHsiQ2FuJ3Qgc2VuZCBjb21tYW5kIGluIHJlc3RyaWN0ZWQgbW9kZVxuIiwgMjd9LAorLSAgeyJob3N0bmFtZSB0b28gbG9uZ1xuIiwgMjh9LAorLSAgeyJpbGxlZ2FsIHNlcnZlciBhZGRyZXNzXG4iLCAyOX0sCistICB7ImNhbiByZWFkIG9ubHkgb25lIGZpbGUgZnJvbSBzdGRpbiIsIDMwfSwKKy0gIHsiVHJhbnNmZXIgaW5jb21wbGV0ZVxuIiwgMzF9LAorLSAgeyJUcmFuc2ZlciBjb21wbGV0ZVxuIiwgMzJ9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IG9wZW4gdG1wZmlsZSAlczogJXMiLCAzM30sCistICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3QgbHN0YXQgdG1wZmlsZSAlczogJXMiLCAzNH0sCistICB7InNlbmRfcHNldWRvICVzOiBhdm9pZGluZyBzeW1saW5rIHRyYXAiLCAzNX0sCistICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3Qgd3JpdGUgdG8gdG1wZmlsZSAlczogJXMiLCAzNn0sCistICB7InNlbmRfcHNldWRvICVzOiBmYWlsZWQiLCAzN30sCistICB7InNlbmRfcHNldWRvICVzOiBvayIsIDM4fSwKKy0gIHsidGNwIHByb3RvY29sIGluaXQgZmFpbGVkXG4iLCAzOX0sCistICB7IkFuc3dlcmluZyBUSU1FU1lOQyBhdCAlcyIsIDQwfSwKKy0gIHsidGltZXpvbmUiLCA0MX0sCistICB7InRpbWV6b25lIHVua25vd24iLCA0Mn0sCistICB7IkNhbid0IG9wZW4gYW55IHJlcXVlc3RlZCBmaWxlcy4iLCA0M30sCistICB7InNlY3VyaXR5IHZpb2xhdGlvbjogbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZyb20gJXMiLCA0NH0sCistICB7ImNhbm5vdCBvcGVuICVzIiwgNDV9LAorLSAgeyJpcyBub3QgYSBmaWxlOiAlcyIsIDQ2fSwKKy0gIHsiJXMvJXM6IGVycm9yIG9jY3VyZWQiLCA0N30sCistICB7InNraXBwZWQ6ICVzIiwgNDh9LAorLSAgeyIlcy8lczogc2tpcHBlZCIsIDQ5fSwKKy0gIHsiQnl0ZXMgU2VudDolN2xkICAgQlBTOiUtOGxkICAgICAgICAgICAgICAgICAgICAgICAgXG4iLCA1MH0sCistICB7IlNlbmRpbmcgJXMsICVsZCBibG9ja3M6ICIsIDUxfSwKKy0gIHsiR2l2ZSB5b3VyIGxvY2FsIFhNT0RFTSByZWNlaXZlIGNvbW1hbmQgbm93LiIsIDUyfSwKKy0gIHsiU2VuZGluZzogJXNcbiIsIDUzfSwKKy0gIHsiVGltZW91dCBvbiBwYXRobmFtZSIsIDU0fSwKKy0gIHsiUmVjZWl2ZXIgQ2FuY2VsbGVkIiwgNTV9LAorLSAgeyJObyBBQ0sgb24gRU9UIiwgNTZ9LAorLSAgeyJYbW9kZW0gc2VjdG9ycy9rYnl0ZXMgc2VudDogJTNkLyUyZGsiLCA1N30sCistICB7Illtb2RlbSBzZWN0b3JzL2tieXRlcyBzZW50OiAlM2QvJTJkayIsIDU4fSwKKy0gIHsiQ2FuY2VsbGVkIiwgNTl9LAorLSAgeyJUaW1lb3V0IG9uIHNlY3RvciBBQ0siLCA2MH0sCistICB7Ik5BSyBvbiBzZWN0b3IiLCA2MX0sCistICB7IkdvdCBidXJzdCBmb3Igc2VjdG9yIEFDSyIsIDYyfSwKKy0gIHsiR290ICUwMnggZm9yIHNlY3RvciBBQ0siLCA2M30sCistICB7IlJldHJ5IENvdW50IEV4Y2VlZGVkIiwgNjR9LAorLSAgeyJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iLCA2NX0sCistICB7IiVzIHZlcnNpb24gJXNcbiIsIDY2fSwKKy0gIHsiVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlIC4uLlxuIiwgNjd9LAorLSAgeyIgICBvcjogJXMgW29wdGlvbnNdIC17Y3xpfSBDT01NQU5EXG4iLCA2OH0sCistICB7IlNlbmQgZmlsZShzKSB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iLCA2OX0sCistICB7IlwKKy0gICAgKFgpID0gb3B0aW9uIGFwcGxpZXMgdG8gWE1PREVNIG9ubHlcblwKKy0gICAgKFkpID0gb3B0aW9uIGFwcGxpZXMgdG8gWU1PREVNIG9ubHlcblwKKy0gICAgKFopID0gb3B0aW9uIGFwcGxpZXMgdG8gWk1PREVNIG9ubHlcbiIsIDcwfSwKKy0gIHsiXAorLSAgLSssIC0tYXBwZW5kICAgICAgICAgICAgICAgIGFwcGVuZCB0byBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlIChaKVxuXAorLSAgLTIsIC0tdHdvc3RvcCAgICAgICAgICAgICAgIHVzZSAyIHN0b3AgYml0c1xuXAorLSAgLTQsIC0tdHJ5LTRrICAgICAgICAgICAgICAgIGdvIHVwIHRvIDRLIGJsb2Nrc2l6ZVxuXAorLSAgICAgIC0tc3RhcnQtNGsgICAgICAgICAgICAgIHN0YXJ0IHdpdGggNEsgYmxvY2tzaXplIChkb2Vzbid0IHRyeSA4KVxuXAorLSAgLTgsIC0tdHJ5LThrICAgICAgICAgICAgICAgIGdvIHVwIHRvIDhLIGJsb2Nrc2l6ZVxuXAorLSAgICAgIC0tc3RhcnQtOGsgICAgICAgICAgICAgIHN0YXJ0IHdpdGggOEsgYmxvY2tzaXplXG5cCistICAtYSwgLS1hc2NpaSAgICAgICAgICAgICAgICAgQVNDSUkgdHJhbnNmZXIgKGNoYW5nZSBDUi9MRiB0byBMRilcblwKKy0gIC1iLCAtLWJpbmFyeSAgICAgICAgICAgICAgICBiaW5hcnkgdHJhbnNmZXJcblwKKy0gIC1CLCAtLWJ1ZnNpemUgTiAgICAgICAgICAgICBidWZmZXIgTiBieXRlcyAoTj09YXV0bzogYnVmZmVyIHdob2xlIGZpbGUpXG5cCistICAtYywgLS1jb21tYW5kIENPTU1BTkQgICAgICAgZXhlY3V0ZSByZW1vdGUgY29tbWFuZCBDT01NQU5EIChaKVxuXAorLSAgLUMsIC0tY29tbWFuZC10cmllcyBOICAgICAgIHRyeSBOIHRpbWVzIHRvIGV4ZWN1dGUgYSBjb21tYW5kIChaKVxuXAorLSAgLWQsIC0tZG90LXRvLXNsYXNoICAgICAgICAgIGNoYW5nZSAnLicgdG8gJy8nIGluIHBhdGhuYW1lcyAoWS9aKVxuXAorLSAgICAgIC0tZGVsYXktc3RhcnR1cCBOICAgICAgIHNsZWVwIE4gc2Vjb25kcyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcblwKKy0gIC1lLCAtLWVzY2FwZSAgICAgICAgICAgICAgICBlc2NhcGUgYWxsIGNvbnRyb2wgY2hhcmFjdGVycyAoWilcblwKKy0gIC1FLCAtLXJlbmFtZSAgICAgICAgICAgICAgICBmb3JjZSByZWNlaXZlciB0byByZW5hbWUgZmlsZXMgaXQgYWxyZWFkeSBoYXNcblwKKy0gIC1mLCAtLWZ1bGwtcGF0aCAgICAgICAgICAgICBzZW5kIGZ1bGwgcGF0aG5hbWUgKFkvWilcblwKKy0gIC1pLCAtLWltbWVkaWF0ZS1jb21tYW5kIENNRCBzZW5kIHJlbW90ZSBDTUQsIHJldHVybiBpbW1lZGlhdGVseSAoWilcblwKKy0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2VcblwKKy0gIC1rLCAtLTFrICAgICAgICAgICAgICAgICAgICBzZW5kIDEwMjQgYnl0ZSBwYWNrZXRzIChYKVxuXAorLSAgLUwsIC0tcGFja2V0bGVuIE4gICAgICAgICAgIGxpbWl0IHN1YnBhY2tldCBsZW5ndGggdG8gTiBieXRlcyAoWilcblwKKy0gIC1sLCAtLWZyYW1lbGVuIE4gICAgICAgICAgICBsaW1pdCBmcmFtZSBsZW5ndGggdG8gTiBieXRlcyAobD49TCkgKFopXG5cCistICAtbSwgLS1taW4tYnBzIE4gICAgICAgICAgICAgc3RvcCB0cmFuc21pc3Npb24gaWYgQlBTIGJlbG93IE5cblwKKy0gIC1NLCAtLW1pbi1icHMtdGltZSBOICAgICAgICAgIGZvciBhdCBsZWFzdCBOIHNlY29uZHMgKGRlZmF1bHQ6IDEyMClcbiIsIDcxfSwKKy0gIHsiXAorLSAgLW4sIC0tbmV3ZXIgICAgICAgICAgICAgICAgIHNlbmQgZmlsZSBpZiBzb3VyY2UgbmV3ZXIgKFopXG5cCistICAtTiwgLS1uZXdlci1vci1sb25nZXIgICAgICAgc2VuZCBmaWxlIGlmIHNvdXJjZSBuZXdlciBvciBsb25nZXIgKFopXG5cCistICAtbywgLS0xNi1iaXQtY3JjICAgICAgICAgICAgdXNlIDE2IGJpdCBDUkMgaW5zdGVhZCBvZiAzMiBiaXQgQ1JDIChaKVxuXAorLSAgLU8sIC0tZGlzYWJsZS10aW1lb3V0cyAgICAgIGRpc2FibGUgdGltZW91dCBjb2RlLCB3YWl0IGZvcmV2ZXJcblwKKy0gIC1wLCAtLXByb3RlY3QgICAgICAgICAgICAgICBwcm90ZWN0IGV4aXN0aW5nIGRlc3RpbmF0aW9uIGZpbGUgKFopXG5cCistICAtciwgLS1yZXN1bWUgICAgICAgICAgICAgICAgcmVzdW1lIGludGVycnVwdGVkIGZpbGUgdHJhbnNmZXIgKFopXG5cCistICAtUiwgLS1yZXN0cmljdGVkICAgICAgICAgICAgcmVzdHJpY3RlZCwgbW9yZSBzZWN1cmUgbW9kZVxuXAorLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIHF1aWV0IChubyBwcm9ncmVzcyByZXBvcnRzKVxuXAorLSAgLXMsIC0tc3RvcC1hdCB7SEg6TU18K059ICAgIHN0b3AgdHJhbnNtaXNzaW9uIGF0IEhIOk1NIG9yIGluIE4gc2Vjb25kc1xuXAorLSAgICAgIC0tdGNwICAgICAgICAgICAgICAgICAgIGJ1aWxkIGEgVENQIGNvbm5lY3Rpb24gdG8gdHJhbnNtaXQgZmlsZXNcblwKKy0gICAgICAtLXRjcC1zZXJ2ZXIgICAgICAgICAgICBvcGVuIHNvY2tldCwgd2FpdCBmb3IgY29ubmVjdGlvblxuXAorLSAgLXUsIC0tdW5saW5rICAgICAgICAgICAgICAgIHVubGluayBmaWxlIGFmdGVyIHRyYW5zbWlzc2lvblxuXAorLSAgLVUsIC0tdW5yZXN0cmljdCAgICAgICAgICAgIHR1cm4gb2ZmIHJlc3RyaWN0ZWQgbW9kZSAoaWYgYWxsb3dlZCB0bylcblwKKy0gIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICBiZSB2ZXJib3NlLCBwcm92aWRlIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuXAorLSAgLXcsIC0td2luZG93c2l6ZSBOICAgICAgICAgIFdpbmRvdyBpcyBOIGJ5dGVzIChaKVxuXAorLSAgLVgsIC0teG1vZGVtICAgICAgICAgICAgICAgIHVzZSBYTU9ERU0gcHJvdG9jb2xcblwKKy0gIC15LCAtLW92ZXJ3cml0ZSAgICAgICAgICAgICBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXNcblwKKy0gIC1ZLCAtLW92ZXJ3cml0ZS1vci1za2lwICAgICBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMsIGVsc2Ugc2tpcFxuXAorLSAgICAgIC0teW1vZGVtICAgICAgICAgICAgICAgIHVzZSBZTU9ERU0gcHJvdG9jb2xcblwKKy0gIC1aLCAtLXptb2RlbSAgICAgICAgICAgICAgICB1c2UgWk1PREVNIHByb3RvY29sXG5cCistXG5cCistc2hvcnQgb3B0aW9ucyB1c2UgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBsb25nIG9uZXNcbiIsIDcyfSwKKy0gIHsiZ290IFpSUUlOSVQiLCA3M30sCistICB7ImdvdCBaQ0FOIiwgNzR9LAorLSAgeyJibGtsZW4gbm93ICVkXG4iLCA3NX0sCistICB7InpzZW5kZmRhdGE6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIiwgNzZ9LAorLSAgeyJ6c2VuZGZkYXRhOiByZWFjaGVkIHN0b3AgdGltZSIsIDc3fSwKKy0gIHsiQnl0ZXMgU2VudDolN2xkLyU3bGQgICBCUFM6JS04bGQgRVRBICUwMmQ6JTAyZCAgIiwgNzh9LAorLSAgeyJjYWxjX2Jsa2xlbjogcmVkdWNlZCB0byAlZCBkdWUgdG8gZXJyb3JcbiIsIDc5fSwKKy0gIHsiY2FsY19ibGtsZW46IHJldHVybmVkIG9sZCB2YWx1ZSAlZCBkdWUgdG8gbG93IGJwZSBkaWZmXG4iLCA4MH0sCistICB7ImNhbGNfYmxrbGVuOiBvbGQgJWxkLCBuZXcgJWxkLCBkICVsZFxuIiwgODF9LAorLSAgeyJjYWxjX2Jsa2xlbjogY2FsYyB0b3RhbF9ieXRlcz0lbGQsIGJwZT0lbGQsIGVjPSVsZFxuIiwgODJ9LAorLSAgeyJjYWxjX2Jsa2xlbjogYmxrbGVuICVkLCBvayAlbGQsIGZhaWxlZCAlbGQgLT4gJWx1XG4iLCA4M30sCistICB7ImNhbGNfYmxrbGVuOiByZXR1cm5lZCAlZCBhcyBiZXN0XG4iLCA4NH0sCistICB7IlwKKy1cblwKKy1jb3VudGVtOiBUb3RhbCAlZCAlbGRcbiIsIDg1fSwKKy0gIHsiQmFkIGVzY2FwZSBzZXF1ZW5jZSAleCIsIDg2fSwKKy0gIHsiU2VuZGVyIENhbmNlbGVkIiwgODd9LAorLSAgeyJUSU1FT1VUIiwgODh9LAorLSAgeyJCYWQgZGF0YSBzdWJwYWNrZXQiLCA4OX0sCistICB7IkRhdGEgc3VicGFja2V0IHRvbyBsb25nIiwgOTB9LAorLSAgeyJHYXJiYWdlIGNvdW50IGV4Y2VlZGVkIiwgOTF9LAorLSAgeyJHb3QgJXMiLCA5Mn0sCistICB7IlJldHJ5ICVkOiAiLCA5M30sCistICB7ImRvbid0IGhhdmUgc2V0dGltZW9mZGF5LCB3aWxsIG5vdCBzZXQgdGltZVxuIiwgOTR9LAorLSAgeyJub3QgcnVubmluZyBhcyByb290ICh0aGlzIGlzIGdvb2QhKSwgY2FuIG5vdCBzZXQgdGltZVxuIiwgOTV9LAorLSAgeyJieXRlc19wZXJfZXJyb3IiLCA5Nn0sCistICB7ImJ5dGVzLXBlci1lcnJvciBzaG91bGQgYmUgPjEwMCIsIDk3fSwKKy0gIHsiT19TWU5DIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCIsIDk4fSwKKy0gIHsiZ2FyYmFnZSBvbiBjb21tYW5kbGluZSIsIDk5fSwKKy0gIHsiVXNhZ2U6ICVzIFtvcHRpb25zXSBbZmlsZW5hbWUuaWYueG1vZGVtXVxuIiwgMTAwfSwKKy0gIHsiUmVjZWl2ZSBmaWxlcyB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iLCAxMDF9LAorLSAgeyJcCistICAtKywgLS1hcHBlbmQgICAgICAgICAgICAgICAgYXBwZW5kIHRvIGV4aXN0aW5nIGZpbGVzXG5cCistICAtYSwgLS1hc2NpaSAgICAgICAgICAgICAgICAgQVNDSUkgdHJhbnNmZXIgKGNoYW5nZSBDUi9MRiB0byBMRilcblwKKy0gIC1iLCAtLWJpbmFyeSAgICAgICAgICAgICAgICBiaW5hcnkgdHJhbnNmZXJcblwKKy0gIC1CLCAtLWJ1ZnNpemUgTiAgICAgICAgICAgICBidWZmZXIgTiBieXRlcyAoTj09YXV0bzogYnVmZmVyIHdob2xlIGZpbGUpXG5cCistICAtYywgLS13aXRoLWNyYyAgICAgICAgICAgICAgVXNlIDE2IGJpdCBDUkMgKFgpXG5cCistICAtQywgLS1hbGxvdy1yZW1vdGUtY29tbWFuZHMgYWxsb3cgZXhlY3V0aW9uIG9mIHJlbW90ZSBjb21tYW5kcyAoWilcblwKKy0gIC1ELCAtLW51bGwgICAgICAgICAgICAgICAgICB3cml0ZSBhbGwgcmVjZWl2ZWQgZGF0YSB0byAvZGV2L251bGxcblwKKy0gICAgICAtLWRlbGF5LXN0YXJ0dXAgTiAgICAgICBzbGVlcCBOIHNlY29uZHMgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG5cCistICAtZSwgLS1lc2NhcGUgICAgICAgICAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycyAoWilcblwKKy0gIC1FLCAtLXJlbmFtZSAgICAgICAgICAgICAgICByZW5hbWUgYW55IGZpbGVzIGFscmVhZHkgZXhpc3RpbmdcblwKKy0gICAgICAtLWVycm9ycyBOICAgICAgICAgICAgICBnZW5lcmF0ZSBDUkMgZXJyb3IgZXZlcnkgTiBieXRlcyAoZGVidWdnaW5nKVxuXAorLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgIEhlbHAsIHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZVxuXAorLSAgLW0sIC0tbWluLWJwcyBOICAgICAgICAgICAgIHN0b3AgdHJhbnNtaXNzaW9uIGlmIEJQUyBiZWxvdyBOXG5cCistICAtTSwgLS1taW4tYnBzLXRpbWUgTiAgICAgICAgICBmb3IgYXQgbGVhc3QgTiBzZWNvbmRzIChkZWZhdWx0OiAxMjApXG5cCistICAtTywgLS1kaXNhYmxlLXRpbWVvdXRzICAgICAgZGlzYWJsZSB0aW1lb3V0IGNvZGUsIHdhaXQgZm9yZXZlciBmb3IgZGF0YVxuXAorLSAgICAgIC0tby1zeW5jICAgICAgICAgICAgICAgIG9wZW4gb3V0cHV0IGZpbGUocykgaW4gc3luY2hyb25vdXMgd3JpdGUgbW9kZVxuXAorLSAgLXAsIC0tcHJvdGVjdCAgICAgICAgICAgICAgIHByb3RlY3QgZXhpc3RpbmcgZmlsZXNcblwKKy0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBxdWlldCwgbm8gcHJvZ3Jlc3MgcmVwb3J0c1xuXAorLSAgLXIsIC0tcmVzdW1lICAgICAgICAgICAgICAgIHRyeSB0byByZXN1bWUgaW50ZXJydXB0ZWQgZmlsZSB0cmFuc2ZlciAoWilcblwKKy0gIC1SLCAtLXJlc3RyaWN0ZWQgICAgICAgICAgICByZXN0cmljdGVkLCBtb3JlIHNlY3VyZSBtb2RlXG5cCistICAtcywgLS1zdG9wLWF0IHtISDpNTXwrTn0gICAgc3RvcCB0cmFuc21pc3Npb24gYXQgSEg6TU0gb3IgaW4gTiBzZWNvbmRzXG5cCistICAtUywgLS10aW1lc3luYyAgICAgICAgICAgICAgcmVxdWVzdCByZW1vdGUgdGltZSAodHdpY2U6IHNldCBsb2NhbCB0aW1lKVxuXAorLSAgICAgIC0tc3lzbG9nWz1vZmZdICAgICAgICAgIHR1cm4gc3lzbG9nIG9uIG9yIG9mZiwgaWYgcG9zc2libGVcblwKKy0gIC10LCAtLXRpbWVvdXQgTiAgICAgICAgICAgICBzZXQgdGltZW91dCB0byBOIHRlbnRocyBvZiBhIHNlY29uZFxuXAorLSAgLXUsIC0ta2VlcC11cHBlcmNhc2UgICAgICAgIGtlZXAgdXBwZXIgY2FzZSBmaWxlbmFtZXNcblwKKy0gIC1VLCAtLXVucmVzdHJpY3QgICAgICAgICAgICBkaXNhYmxlIHJlc3RyaWN0ZWQgbW9kZSAoaWYgYWxsb3dlZCB0bylcblwKKy0gIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICBiZSB2ZXJib3NlLCBwcm92aWRlIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuXAorLSAgLXcsIC0td2luZG93c2l6ZSBOICAgICAgICAgIFdpbmRvdyBpcyBOIGJ5dGVzIChaKVxuXAorLSAgLVggIC0teG1vZGVtICAgICAgICAgICAgICAgIHVzZSBYTU9ERU0gcHJvdG9jb2xcblwKKy0gIC15LCAtLW92ZXJ3cml0ZSAgICAgICAgICAgICBZZXMsIGNsb2JiZXIgZXhpc3RpbmcgZmlsZSBpZiBhbnlcblwKKy0gICAgICAtLXltb2RlbSAgICAgICAgICAgICAgICB1c2UgWU1PREVNIHByb3RvY29sXG5cCistICAtWiwgLS16bW9kZW0gICAgICAgICAgICAgICAgdXNlIFpNT0RFTSBwcm90b2NvbFxuXAorLVxuXAorLXNob3J0IG9wdGlvbnMgdXNlIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbG9uZyBvbmVzXG4iLCAxMDJ9LAorLSAgeyIlcyB3YWl0aW5nIHRvIHJlY2VpdmUuIiwgMTAzfSwKKy0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZC8lN2xkICAgQlBTOiUtNmxkICAgICAgICAgICAgICAgIFxyXG4iLCAxMDR9LAorLSAgeyIlczogcmVhZHkgdG8gcmVjZWl2ZSAlcyIsIDEwNX0sCistICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQgICBCUFM6JS02bGQgICAgICAgICAgICAgICAgXHJcbiIsIDEwNn0sCistICB7IlwKKy1cclxuXAorLSVzOiAlcyByZW1vdmVkLlxyXG4iLCAxMDd9LAorLSAgeyJQYXRobmFtZSBmZXRjaCByZXR1cm5lZCBFT1QiLCAxMDh9LAorLSAgeyJSZWNlaXZlZCBkdXAgU2VjdG9yIiwgMTA5fSwKKy0gIHsiU3luYyBFcnJvciIsIDExMH0sCistICB7IkNSQyIsIDExMX0sCistICB7IkNoZWNrc3VtIiwgMTEyfSwKKy0gIHsiU2VjdG9yIG51bWJlciBnYXJibGVkIiwgMTEzfSwKKy0gIHsiU2VuZGVyIENhbmNlbGxlZCIsIDExNH0sCistICB7IkdvdCAwJW8gc2VjdG9yIGhlYWRlciIsIDExNX0sCistICB7ImZpbGUgbmFtZSBlbmRzIHdpdGggYSAvLCBza2lwcGVkOiAlc1xuIiwgMTE2fSwKKy0gIHsiem1hbmFnPSVkLCBMem1hbmFnPSVkXG4iLCAxMTd9LAorLSAgeyJ6Y29udj0lZFxuIiwgMTE4fSwKKy0gIHsiZmlsZSBleGlzdHMsIHNraXBwZWQ6ICVzXG4iLCAxMTl9LAorLSAgeyJUSU1FU1lOQzogaGVyZSAlbGQsIHJlbW90ZSAlbGQsIGRpZmYgJWxkIHNlY29uZHNcbiIsIDEyMH0sCistICB7IlRJTUVTWU5DOiBjYW5ub3Qgc2V0IHRpbWU6ICVzXG4iLCAxMjF9LAorLSAgeyJjYW5ub3QgdG1wZmlsZSgpIGZvciB0Y3AgcHJvdG9jb2wgc3luY2hyb25pemF0aW9uIiwgMTIyfSwKKy0gIHsiVG9waXBlIiwgMTIzfSwKKy0gIHsiUmVjZWl2aW5nOiAlc1xuIiwgMTI0fSwKKy0gIHsiQmxvY2tzIHJlY2VpdmVkOiAlZCIsIDEyNX0sCistICB7IiVzOiAlcyBleGlzdHNcbiIsIDEyNn0sCistICB7IiVzOlx0U2VjdXJpdHkgVmlvbGF0aW9uIiwgMTI3fSwKKy0gIHsicmVtb3RlIGNvbW1hbmQgZXhlY3V0aW9uIHJlcXVlc3RlZCIsIDEyOH0sCistICB7Im5vdCBleGVjdXRlZCIsIDEyOX0sCistICB7ImdvdCBaUklOSVQiLCAxMzB9LAorLSAgeyJTa2lwcGVkIiwgMTMxfSwKKy0gIHsicnpmaWxlOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIsIDEzMn0sCistICB7InJ6ZmlsZTogcmVhY2hlZCBzdG9wIHRpbWUiLCAxMzN9LAorLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkLyU3bGQgICBCUFM6JS02bGQgRVRBICUwMmQ6JTAyZCAgIiwgMTM0fSwKKy0gIHsiZmdldHMgZm9yIHRjcCBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24gZmFpbGVkOiAiLCAxMzV9LAorLSAgeyJmaWxlIGNsb3NlIGVycm9yIiwgMTM2fSwKKy19OworLQorLWludCBfbXNnX3RibF9sZW5ndGggPSAxMzY7CitCaW5hcnkgZmlsZXMgY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9kZS5nbW8gYW5kIGxyenN6LTAuMTIuMjAvcG8vZGUuZ21vIGRpZmZlcgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2RlLnBvIGxyenN6LTAuMTIuMjAvcG8vZGUucG8KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2RlLnBvCTE5OTgtMTItMzAgMTY6MzE6NDYuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9kZS5wbwkyMDE5LTExLTI2IDExOjQyOjA3LjAwMDAwMDAwMCArMDAwMAorQEAgLTYsMTAgKzYsMTIgQEAKKyBtc2dpZCAiIgorIG1zZ3N0ciAiIgorICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgorLSJQT1QtQ3JlYXRpb24tRGF0ZTogMTk5OC0xMi0zMCAwODo0OSswMTAwXG4iCisrIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKKysiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTktMTEtMjYgMTE6MzkrMDAwMFxuIgorICJQTy1SZXZpc2lvbi1EYXRlOiAxOTk3LTA2LTAxIDE5OjAwKzAyMDBcbiIKKyAiTGFzdC1UcmFuc2xhdG9yOiBGVUxMIE5BTUUgPHV3ZUBvaHNlLmRlPlxuIgorICJMYW5ndWFnZS1UZWFtOiBub25lLiB0cnkgPHV3ZUBvaHNlLmRlPlxuIgorKyJMYW5ndWFnZTogZGVcbiIKKyAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PWlzby04ODU5LTFcbiIKKyAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorQEAgLTE4LDcgKzIwLDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIKKyBtc2dzdHIgImlvX21vZGUoMikgaW4gcmJzYi5jIG5pY2h0IGltcGxlbWVudGllcnRcbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MjAxIHNyYy9sc3ouYzoyMzAKKysjOiBzcmMvbHN6LmM6MjMwIHNyYy9scnouYzoyMDEKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIgorIG1zZ3N0ciAiZXJoaWVsdCBTaWduYWwgJWQ7IFByb2dyYW1tYWJicnVjaCIKK0BAIC00NSw3ICs0Nyw3IEBAIG1zZ3N0ciAiRnJhbWVs5G5nZSIKKyBtc2dpZCAiZnJhbWVsZW5ndGggb3V0IG9mIHJhbmdlIDMyLi4lbGQiCisgbXNnc3RyICJBcmd1bWVudCBkZXIgT3B0aW9uIGwgYXXfZXJoYWxiIGRlcyBCZXJlaWNocyAzMi4uJWxkIgorIAorLSM6IHNyYy9scnouYzozMjMgc3JjL2xzei5jOjQ1MAorKyM6IHNyYy9sc3ouYzo0NTAgc3JjL2xyei5jOjMyMworIG1zZ2lkICJtaW5fYnBzIgorIG1zZ3N0ciAibWluaW1hbGUgQlBTLVJhdGUiCisgCitAQCAtNTMsNjUgKzU1LDY1IEBAIG1zZ3N0ciAibWluaW1hbGUgQlBTLVJhdGUiCisgbXNnaWQgIm1pbl9icHMgbXVzdCBiZSA+PSAwIgorIG1zZ3N0ciAibWluaW1hbGUgQlBTLVJhdGUgbXXfID49IDAgc2VpbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzI5IHNyYy9sc3ouYzo0NTgKKysjOiBzcmMvbHN6LmM6NDU4IHNyYy9scnouYzozMjkKKyBtc2dpZCAibWluX2Jwc190aW1lIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozMzEgc3JjL2xzei5jOjQ2MAorKyM6IHNyYy9sc3ouYzo0NjAgc3JjL2xyei5jOjMzMQorIG1zZ2lkICJtaW5fYnBzX3RpbWUgbXVzdCBiZSA+IDEiCisgbXNnc3RyICJaZWl0ZmVuc3RlciBm/HIgbWluaW1hbGUgQlBTLVJhdGUgbXXfID4gMSBTZWt1bmRlIHNlaW4iCisgCistIzogc3JjL2xyei5jOjM0NyBzcmMvbHN6LmM6NDg0CisrIzogc3JjL2xzei5jOjQ4NCBzcmMvbHJ6LmM6MzQ3CisgbXNnaWQgImhvdXIgdG8gbGFyZ2UgKDAuLjIzKSIKKyBtc2dzdHIgIlN0dW5kZSB6dSBncm9zcyAoMC4uMjMpIgorIAorLSM6IHNyYy9scnouYzozNDkgc3JjL2xzei5jOjQ4NgorKyM6IHNyYy9sc3ouYzo0ODYgc3JjL2xyei5jOjM0OQorIG1zZ2lkICJ1bnBhcnNhYmxlIHN0b3AgdGltZVxuIgorIG1zZ3N0ciAidW5wYXJzYmFyZSBFbmR6ZWl0XG4iCisgCistIzogc3JjL2xyei5jOjM1MyBzcmMvbHN6LmM6NDkwCisrIzogc3JjL2xzei5jOjQ5MCBzcmMvbHJ6LmM6MzUzCisgbXNnaWQgIm1pbnV0ZSB0byBsYXJnZSAoMC4uNTkpIgorIG1zZ3N0ciAiTWludXRlIHp1IGdyb98gKDAuLjU5KSIKKyAKKy0jOiBzcmMvbHJ6LmM6MzYzIHNyYy9scnouYzozNzAgc3JjL2xzei5jOjUwMCBzcmMvbHN6LmM6NTA3CisrIzogc3JjL2xzei5jOjUwMCBzcmMvbHN6LmM6NTA3IHNyYy9scnouYzozNjMgc3JjL2xyei5jOjM3MAorIG1zZ2lkICJzdG9wIHRpbWUgdG8gc21hbGwiCisgbXNnc3RyICJTdG9wemVpdCB6dSBrdXJ6IgorIAorLSM6IHNyYy9scnouYzozNjggc3JjL2xzei5jOjUwNQorKyM6IHNyYy9sc3ouYzo1MDUgc3JjL2xyei5jOjM2OAorIG1zZ2lkICJzdG9wLWF0IgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozOTkgc3JjL2xzei5jOjUxNgorKyM6IHNyYy9sc3ouYzo1MTYgc3JjL2xyei5jOjM5OQorIG1zZ2lkICJ0aW1lb3V0IgorIG1zZ3N0ciAiVGltZW91dCIKKyAKKy0jOiBzcmMvbHJ6LmM6NDAxIHNyYy9sc3ouYzo1MTgKKysjOiBzcmMvbHN6LmM6NTE4IHNyYy9scnouYzo0MDEKKyBtc2dpZCAidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiCisgbXNnc3RyICJBcmd1bWVudCBkZXIgT3B0aW9uIHQgYXXfZXJoYWxiIGRlcyBCZXJlaWNocyAxMC4uMTAwMCIKKyAKKy0jOiBzcmMvbHJ6LmM6NDE3IHNyYy9sc3ouYzo1MjYKKysjOiBzcmMvbHN6LmM6NTI2IHNyYy9scnouYzo0MTcKKyBtc2dpZCAic2VjdXJpdHkgdmlvbGF0aW9uOiBjYW4ndCBkbyB0aGF0IHVuZGVyIHJlc3RyaWN0ZWQgc2hlbGxcbiIKKyBtc2dzdHIgIlNpY2hlcmhlaXRzdmVyc3Rv3zogQXVzZvxocnVuZyB1bnRlciBlaW5nZXNjaHLkbmt0ZXIgU2hlbGwgdmVyYm90ZW5cbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDA3IHNyYy9sc3ouYzo1MzMKKysjOiBzcmMvbHN6LmM6NTMzIHNyYy9scnouYzo0MDcKKyBtc2dpZCAid2luZG93IHNpemUiCisgbXNnc3RyICJGZW5zdGVyZ3L232UiCisgCistIzogc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5IHNyYy9sc3ouYzo1NTYgc3JjL2xzei5jOjU2MworKyM6IHNyYy9sc3ouYzo1NTYgc3JjL2xzei5jOjU2MyBzcmMvbHJ6LmM6NDMyIHNyYy9scnouYzo0MzkKKyBtc2dpZCAiY2Fubm90IHR1cm5vZmYgc3lzbG9nIgorIG1zZ3N0ciAia2FubiBzeXNsb2dnaW5nIG5pY2h0IGFic2NoYWx0ZW4iCisgCistIzogc3JjL2xyei5jOjQ1NCBzcmMvbHN6LmM6NTcxCisrIzogc3JjL2xzei5jOjU3MSBzcmMvbHJ6LmM6NDU0CisgbXNnaWQgInN0YXJ0dXAgZGVsYXkiCisgbXNnc3RyICJTdGFydHZlcnr2Z2VydW5nIgorIAorKyM6IHNyYy9sc3ouYzo1ODMgc3JjL2xzei5jOjY5MiBzcmMvbHN6LmM6ODMxIHNyYy9sc3ouYzoxMDgwIHNyYy96cmVhZGxpbmUuYzoxMjcKKyAjOiBzcmMvbHJ6LmM6NDcwIHNyYy9scnouYzo3NTUgc3JjL2xyei5jOjExMTcgc3JjL2xyei5jOjEyNDMgc3JjL2xyei5jOjEzMDAKKy0jOiBzcmMvbHJ6LmM6MTMxNyBzcmMvbHJ6LmM6MTMzMiBzcmMvbHJ6LmM6MTQzMSBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIKKy0jOiBzcmMvbHN6LmM6ODMxIHNyYy9sc3ouYzoxMDgwIHNyYy96cmVhZGxpbmUuYzoxMjcKKysjOiBzcmMvbHJ6LmM6MTMxNyBzcmMvbHJ6LmM6MTMzMiBzcmMvbHJ6LmM6MTQzMQorIG1zZ2lkICJvdXQgb2YgbWVtb3J5IgorIG1zZ3N0ciAiS2VpbiBTcGVpY2hlciBtZWhyIGZyZWkiCisgCistIzogc3JjL2xyei5jOjQ4MCBzcmMvbHN6LmM6NTk1CisrIzogc3JjL2xzei5jOjU5NSBzcmMvbHJ6LmM6NDgwCisgbXNnaWQgInRoaXMgcHJvZ3JhbSB3YXMgbmV2ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBzZXR1aWRcbiIKKyBtc2dzdHIgImRpZXNlcyBQcm9ncmFtbSBkYXJmIG5pY2h0IHNldHVpZCBsYXVmZW5cbiIKKyAKK0BAIC0xMjAsMTQgKzEyMiwxNSBAQCBtc2dpZCAibmVlZCBhdCBsZWFzdCBvbmUgZmlsZSB0byBzZW5kIgorIG1zZ3N0ciAiZXMgbXXfIG1pbmRlc3RlbnMgZWluIE5hbWUgZWluZXIgenUgc2VuZGVuZGVuIERhdGVpIGFuZ2VnZWJlbiB3ZXJkZW4iCisgCisgIzogc3JjL2xzei5jOjYyOAorKyMsIGMtZm9ybWF0CisgbXNnaWQgIkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIKKyBtc2dzdHIgIkltIGVpbmdlc2NocuRua3RlbiBNb2R1cyBpc3QgZGFzIFNlbmRlbiB2b24gS29tbWFuZG9zIHZlcmJvdGVuXG4iCisgCistIzogc3JjL2xyei5jOjUyNCBzcmMvbHN6LmM6NjU1CisrIzogc3JjL2xzei5jOjY1NSBzcmMvbHJ6LmM6NTI0CisgbXNnaWQgImhvc3RuYW1lIHRvbyBsb25nXG4iCisgbXNnc3RyICJIb3N0bmFtZSB6dSBsYW5nXG4iCisgCistIzogc3JjL2xyei5jOjUzOSBzcmMvbHN6LmM6NjcwCisrIzogc3JjL2xzei5jOjY3MCBzcmMvbHJ6LmM6NTM5CisgbXNnaWQgImlsbGVnYWwgc2VydmVyIGFkZHJlc3NcbiIKKyBtc2dzdHIgIklsbGVnYWxlIFNlcnZlcmFkZHJlc3NlXG4iCisgCitAQCAtMTM1LDExICsxMzgsMTEgQEAgbXNnc3RyICJJbGxlZ2FsZSBTZXJ2ZXJhZGRyZXNzZVxuIgorIG1zZ2lkICJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iCisgbXNnc3RyICJrYW5uIG51ciBlaW5lIERhdGVpIHZvbiBkZXIgU3RhbmRhcmRlaW5nYWJlIGxlc2VuIgorIAorLSM6IHNyYy9scnouYzo1NzEgc3JjL2xzei5jOjgwNgorKyM6IHNyYy9sc3ouYzo4MDYgc3JjL2xyei5jOjU3MQorIG1zZ2lkICJUcmFuc2ZlciBpbmNvbXBsZXRlXG4iCisgbXNnc3RyICLcYmVydHJhZ3VuZyBuaWNodCBhYmdlc2NobG9zc2VuXG4iCisgCistIzogc3JjL2xyei5jOjU3MyBzcmMvbHN6LmM6ODA4CisrIzogc3JjL2xzei5jOjgwOCBzcmMvbHJ6LmM6NTczCisgbXNnaWQgIlRyYW5zZmVyIGNvbXBsZXRlXG4iCisgbXNnc3RyICLcYmVydHJhZ3VuZyBhYmdlc2NobG9zc2VuXG4iCisgCitAQCAtMTk3LDkgKzIwMCw5IEBAIG1zZ3N0ciAiS2FubiBrZWluZSBkZXIgYW5nZWZvcmRlcnRlbiBEYXQKKyAjOiBzcmMvbHN6LmM6MTAyOAorICMsIGMtZm9ybWF0CisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZyb20gJXMiCistbXNnc3RyICJTaWNoZXJoZWl0c3ZlcnN0b986IEF1c2b8aHJ1bmcgdW50ZXIgZWluZ2VzY2hy5G5rdGVyIFNoZWxsIHZlcmJvdGVuIgorK21zZ3N0ciAiU2ljaGVyaGVpdHN2ZXJzdG/fOiBBdXNm/GhydW5nIHVudGVyICVzIHZlcmJvdGVuIgorIAorLSM6IHNyYy9scnouYzoxMzkyIHNyYy9sc3ouYzoxMDQ2CisrIzogc3JjL2xzei5jOjEwNDYgc3JjL2xyei5jOjEzOTIKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYW5ub3Qgb3BlbiAlcyIKKyBtc2dzdHIgImthbm4gJXMgbmljaHQg9mZmbmVuIgorQEAgLTI5MCwxMiArMjkzLDEyIEBAIG1zZ3N0ciAiRXJoaWVsdCAlMDJ4IGFscyBTZWt0b3JiZXN05HRpZ3UKKyBtc2dpZCAiUmV0cnkgQ291bnQgRXhjZWVkZWQiCisgbXNnc3RyICJNYXhpbWFsZSBXaWVkZXJob2x1bmdzYW56YWhsIPxiZXJzY2hyaXR0ZW4iCisgCistIzogc3JjL2xyei5jOjU5MyBzcmMvbHN6LmM6MTUyMQorKyM6IHNyYy9sc3ouYzoxNTIxIHNyYy9scnouYzo1OTMKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCisgbXNnc3RyICJgJXMgLS1oZWxwJyBnaWJ0IHdlaXRlcmUgSW5mb3JtYXRpb25lbi5cbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTk4IHNyYy9sc3ouYzoxNTI2CisrIzogc3JjL2xzei5jOjE1MjYgc3JjL2xyei5jOjU5OAorICMsIGMtZm9ybWF0CisgbXNnaWQgIiVzIHZlcnNpb24gJXNcbiIKKyBtc2dzdHIgIiVzIFZlcnNpb24gJXNcbiIKK0BAIC0zMTUsNyArMzE4LDcgQEAgbXNnaWQgIlNlbmQgZmlsZShzKSB3aXRoIFpNT0RFTS9ZTU9ERU0vWAorIG1zZ3N0ciAiRGF0ZWllbiBtaXQgWk1PREVNL1lNT0RFTS9YTU9ERU0g/GJlcnRyYWdlblxuIgorIAorICMgc3JjL2xyei5jOjQ3NSBzcmMvbHN6LmM6MTMzMCB4eAorLSM6IHNyYy9scnouYzo2MDQgc3JjL2xzei5jOjE1MzQKKysjOiBzcmMvbHN6LmM6MTUzNCBzcmMvbHJ6LmM6NjA0CisgbXNnaWQgIiIKKyAiICAgIChYKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFhNT0RFTSBvbmx5XG4iCisgIiAgICAoWSkgPSBvcHRpb24gYXBwbGllcyB0byBZTU9ERU0gb25seVxuIgorQEAgLTQzMSw3ICs0MzQsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiZ290IFpSUUlOSVQiCisgbXNnc3RyICJlcmhpZWx0IFpSUUlOSVQiCisgCistIzogc3JjL2xyei5jOjEwNzQgc3JjL2xyei5jOjE3ODcgc3JjL2xzei5jOjE3OTIKKysjOiBzcmMvbHN6LmM6MTc5MiBzcmMvbHJ6LmM6MTA3NCBzcmMvbHJ6LmM6MTc4NworIG1zZ2lkICJnb3QgWkNBTiIKKyBtc2dzdHIgImVyaGllbHQgWkNBTiIKKyAKK0BAIC00NzIsNyArNDc1LDcgQEAgbXNnc3RyICJjYWxjX2Jsa2xlbjogYWx0ICVsZCwgbmV1ICVsZCwgRAorICM6IHNyYy9sc3ouYzoyMjcyCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2FsY19ibGtsZW46IGNhbGMgdG90YWxfYnl0ZXM9JWxkLCBicGU9JWxkLCBlYz0lbGRcbiIKKy1tc2dzdHIgImNhbGNfYmxrbGVuOiBrYWxrdWxpZXJlIGdlc2FtdF9ieXRlcz0lbGQsIGJwZT0lbGUsIGVjPSVsZFxuIgorK21zZ3N0ciAiY2FsY19ibGtsZW46IGthbGt1bGllcmUgZ2VzYW10X2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iCisgCisgIzogc3JjL2xzei5jOjIyODMKKyAjLCBjLWZvcm1hdAorQEAgLTQ5Myw2ICs0OTYsMTAgQEAgbXNnc3RyICIiCisgIlxuIgorICJjb3VudGVtOiBHZXNhbXQgJWQgJWxkXG4iCisgCisrIzogc3JjL3ptLmM6OTEKKyttc2dpZCAiQmFkIENSQyIKKyttc2dzdHIgIiIKKysKKyAjOiBzcmMvem0uYzoyNDQKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IgorQEAgLTUwMiw3ICs1MDksNyBAQCBtc2dzdHIgIkZhbHNjaGUgRXNjYXBlc2VxdWVueiAleCIKKyBtc2dpZCAiU2VuZGVyIENhbmNlbGVkIgorIG1zZ3N0ciAiU2VuZGVyIGJyYWNoIGFiIgorIAorLSM6IHNyYy9scnouYzo5OTcgc3JjL3ptLmM6NTg1IHNyYy96bS5jOjY0NAorKyM6IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQgc3JjL2xyei5jOjk5NworIG1zZ2lkICJUSU1FT1VUIgorIG1zZ3N0ciAiVElNRU9VVCIKKyAKK0BAIC03NzIsMTMgKzc3OSwxMSBAQCBtc2dzdHIgIkVyaGllbHQgdW5lcndhcnRldGVzIFpSSU5JVCIKKyBtc2dpZCAiU2tpcHBlZCIKKyBtc2dzdHIgItxiZXJzcHJ1bmdlbiIKKyAKKy0jLiB0b28gYmFkCisgIzogc3JjL2xyei5jOjIwNjQKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJyemZpbGU6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIgorIG1zZ3N0ciAicnpmaWxlOiBCUFMtUmF0ZSAlbGQgdW50ZXIgTWluaW11bSAlbGQiCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDc5CisgbXNnaWQgInJ6ZmlsZTogcmVhY2hlZCBzdG9wIHRpbWUiCisgbXNnc3RyICJyemZpbGU6IEFiYnJ1Y2h6ZWl0IGVycmVpY2h0IgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2xyenN6LnBvdCBscnpzei0wLjEyLjIwL3BvL2xyenN6LnBvdAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vbHJ6c3oucG90CTE5OTgtMTItMzAgMDc6NTA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QJMjAxOS0xMS0yNiAxMTozOToxMi4wMDAwMDAwMDAgKzAwMDAKK0BAIC0xLDI0ICsxLDI3IEBACisgIyBTT01FIERFU0NSSVBUSVZFIFRJVExFLgorICMgQ29weXJpZ2h0IChDKSBZRUFSIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGxyenN6IHBhY2thZ2UuCisgIyBGSVJTVCBBVVRIT1IgPEVNQUlMQEFERFJFU1M+LCBZRUFSLgorICMKKyAjLCBmdXp6eQorIG1zZ2lkICIiCisgbXNnc3RyICIiCistIlByb2plY3QtSWQtVmVyc2lvbjogUEFDS0FHRSBWRVJTSU9OXG4iCistIlBPVC1DcmVhdGlvbi1EYXRlOiAxOTk4LTEyLTMwIDA4OjQ5KzAxMDBcbiIKKysiUHJvamVjdC1JZC1WZXJzaW9uOiBscnpzeiAwLjEyLjIwXG4iCisrIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKKysiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTktMTEtMjYgMTE6MzkrMDAwMFxuIgorICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKKyAiTGFzdC1UcmFuc2xhdG9yOiBGVUxMIE5BTUUgPEVNQUlMQEFERFJFU1M+XG4iCisgIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCisrIkxhbmd1YWdlOiBcbiIKKyAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUNIQVJTRVRcbiIKKy0iQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogRU5DT0RJTkdcbiIKKysiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIAorICM6IHNyYy9sc3ouYzoyMjgKKyBtc2dpZCAiaW9fbW9kZSgsMikgaW4gcmJzYi5jIG5vdCBpbXBsZW1lbnRlZFxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzoyMDEgc3JjL2xzei5jOjIzMAorKyM6IHNyYy9sc3ouYzoyMzAgc3JjL2xyei5jOjIwMQorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhdWdodCBzaWduYWwgJWQ7IGV4aXRpbmciCisgbXNnc3RyICIiCitAQCAtNDUsNyArNDgsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiZnJhbWVsZW5ndGggb3V0IG9mIHJhbmdlIDMyLi4lbGQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjMyMyBzcmMvbHN6LmM6NDUwCisrIzogc3JjL2xzei5jOjQ1MCBzcmMvbHJ6LmM6MzIzCisgbXNnaWQgIm1pbl9icHMiCisgbXNnc3RyICIiCisgCitAQCAtNTMsNjUgKzU2LDY1IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJtaW5fYnBzIG11c3QgYmUgPj0gMCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzI5IHNyYy9sc3ouYzo0NTgKKysjOiBzcmMvbHN6LmM6NDU4IHNyYy9scnouYzozMjkKKyBtc2dpZCAibWluX2Jwc190aW1lIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozMzEgc3JjL2xzei5jOjQ2MAorKyM6IHNyYy9sc3ouYzo0NjAgc3JjL2xyei5jOjMzMQorIG1zZ2lkICJtaW5fYnBzX3RpbWUgbXVzdCBiZSA+IDEiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM0NyBzcmMvbHN6LmM6NDg0CisrIzogc3JjL2xzei5jOjQ4NCBzcmMvbHJ6LmM6MzQ3CisgbXNnaWQgImhvdXIgdG8gbGFyZ2UgKDAuLjIzKSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzQ5IHNyYy9sc3ouYzo0ODYKKysjOiBzcmMvbHN6LmM6NDg2IHNyYy9scnouYzozNDkKKyBtc2dpZCAidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzUzIHNyYy9sc3ouYzo0OTAKKysjOiBzcmMvbHN6LmM6NDkwIHNyYy9scnouYzozNTMKKyBtc2dpZCAibWludXRlIHRvIGxhcmdlICgwLi41OSkiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwIHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNworKyM6IHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNyBzcmMvbHJ6LmM6MzYzIHNyYy9scnouYzozNzAKKyBtc2dpZCAic3RvcCB0aW1lIHRvIHNtYWxsIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNjggc3JjL2xzei5jOjUwNQorKyM6IHNyYy9sc3ouYzo1MDUgc3JjL2xyei5jOjM2OAorIG1zZ2lkICJzdG9wLWF0IgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozOTkgc3JjL2xzei5jOjUxNgorKyM6IHNyYy9sc3ouYzo1MTYgc3JjL2xyei5jOjM5OQorIG1zZ2lkICJ0aW1lb3V0IgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0MDEgc3JjL2xzei5jOjUxOAorKyM6IHNyYy9sc3ouYzo1MTggc3JjL2xyei5jOjQwMQorIG1zZ2lkICJ0aW1lb3V0IG91dCBvZiByYW5nZSAxMC4uMTAwMCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDE3IHNyYy9sc3ouYzo1MjYKKysjOiBzcmMvbHN6LmM6NTI2IHNyYy9scnouYzo0MTcKKyBtc2dpZCAic2VjdXJpdHkgdmlvbGF0aW9uOiBjYW4ndCBkbyB0aGF0IHVuZGVyIHJlc3RyaWN0ZWQgc2hlbGxcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDA3IHNyYy9sc3ouYzo1MzMKKysjOiBzcmMvbHN6LmM6NTMzIHNyYy9scnouYzo0MDcKKyBtc2dpZCAid2luZG93IHNpemUiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5IHNyYy9sc3ouYzo1NTYgc3JjL2xzei5jOjU2MworKyM6IHNyYy9sc3ouYzo1NTYgc3JjL2xzei5jOjU2MyBzcmMvbHJ6LmM6NDMyIHNyYy9scnouYzo0MzkKKyBtc2dpZCAiY2Fubm90IHR1cm5vZmYgc3lzbG9nIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0NTQgc3JjL2xzei5jOjU3MQorKyM6IHNyYy9sc3ouYzo1NzEgc3JjL2xyei5jOjQ1NAorIG1zZ2lkICJzdGFydHVwIGRlbGF5IgorIG1zZ3N0ciAiIgorIAorKyM6IHNyYy9sc3ouYzo1ODMgc3JjL2xzei5jOjY5MiBzcmMvbHN6LmM6ODMxIHNyYy9sc3ouYzoxMDgwIHNyYy96cmVhZGxpbmUuYzoxMjcKKyAjOiBzcmMvbHJ6LmM6NDcwIHNyYy9scnouYzo3NTUgc3JjL2xyei5jOjExMTcgc3JjL2xyei5jOjEyNDMgc3JjL2xyei5jOjEzMDAKKy0jOiBzcmMvbHJ6LmM6MTMxNyBzcmMvbHJ6LmM6MTMzMiBzcmMvbHJ6LmM6MTQzMSBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIKKy0jOiBzcmMvbHN6LmM6ODMxIHNyYy9sc3ouYzoxMDgwIHNyYy96cmVhZGxpbmUuYzoxMjcKKysjOiBzcmMvbHJ6LmM6MTMxNyBzcmMvbHJ6LmM6MTMzMiBzcmMvbHJ6LmM6MTQzMQorIG1zZ2lkICJvdXQgb2YgbWVtb3J5IgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0ODAgc3JjL2xzei5jOjU5NQorKyM6IHNyYy9sc3ouYzo1OTUgc3JjL2xyei5jOjQ4MAorIG1zZ2lkICJ0aGlzIHByb2dyYW0gd2FzIG5ldmVyIGludGVuZGVkIHRvIGJlIHVzZWQgc2V0dWlkXG4iCisgbXNnc3RyICIiCisgCitAQCAtMTIwLDE0ICsxMjMsMTUgQEAgbXNnaWQgIm5lZWQgYXQgbGVhc3Qgb25lIGZpbGUgdG8gc2VuZCIKKyBtc2dzdHIgIiIKKyAKKyAjOiBzcmMvbHN6LmM6NjI4CisrIywgYy1mb3JtYXQKKyBtc2dpZCAiQ2FuJ3Qgc2VuZCBjb21tYW5kIGluIHJlc3RyaWN0ZWQgbW9kZVxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1MjQgc3JjL2xzei5jOjY1NQorKyM6IHNyYy9sc3ouYzo2NTUgc3JjL2xyei5jOjUyNAorIG1zZ2lkICJob3N0bmFtZSB0b28gbG9uZ1xuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1Mzkgc3JjL2xzei5jOjY3MAorKyM6IHNyYy9sc3ouYzo2NzAgc3JjL2xyei5jOjUzOQorIG1zZ2lkICJpbGxlZ2FsIHNlcnZlciBhZGRyZXNzXG4iCisgbXNnc3RyICIiCisgCitAQCAtMTM1LDExICsxMzksMTEgQEAgbXNnc3RyICIiCisgbXNnaWQgImNhbiByZWFkIG9ubHkgb25lIGZpbGUgZnJvbSBzdGRpbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTcxIHNyYy9sc3ouYzo4MDYKKysjOiBzcmMvbHN6LmM6ODA2IHNyYy9scnouYzo1NzEKKyBtc2dpZCAiVHJhbnNmZXIgaW5jb21wbGV0ZVxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1NzMgc3JjL2xzei5jOjgwOAorKyM6IHNyYy9sc3ouYzo4MDggc3JjL2xyei5jOjU3MworIG1zZ2lkICJUcmFuc2ZlciBjb21wbGV0ZVxuIgorIG1zZ3N0ciAiIgorIAorQEAgLTE5OSw3ICsyMDMsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAic2VjdXJpdHkgdmlvbGF0aW9uOiBub3QgYWxsb3dlZCB0byB1cGxvYWQgZnJvbSAlcyIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MTM5MiBzcmMvbHN6LmM6MTA0NgorKyM6IHNyYy9sc3ouYzoxMDQ2IHNyYy9scnouYzoxMzkyCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2Fubm90IG9wZW4gJXMiCisgbXNnc3RyICIiCitAQCAtMjkwLDEyICsyOTQsMTIgQEAgbXNnc3RyICIiCisgbXNnaWQgIlJldHJ5IENvdW50IEV4Y2VlZGVkIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1OTMgc3JjL2xzei5jOjE1MjEKKysjOiBzcmMvbHN6LmM6MTUyMSBzcmMvbHJ6LmM6NTkzCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1OTggc3JjL2xzei5jOjE1MjYKKysjOiBzcmMvbHN6LmM6MTUyNiBzcmMvbHJ6LmM6NTk4CisgIywgYy1mb3JtYXQKKyBtc2dpZCAiJXMgdmVyc2lvbiAlc1xuIgorIG1zZ3N0ciAiIgorQEAgLTMxNCw3ICszMTgsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiU2VuZCBmaWxlKHMpIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NjA0IHNyYy9sc3ouYzoxNTM0CisrIzogc3JjL2xzei5jOjE1MzQgc3JjL2xyei5jOjYwNAorIG1zZ2lkICIiCisgIiAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuIgorICIgICAgKFkpID0gb3B0aW9uIGFwcGxpZXMgdG8gWU1PREVNIG9ubHlcbiIKK0BAIC0zNzgsNyArMzgyLDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImdvdCBaUlFJTklUIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3IHNyYy9sc3ouYzoxNzkyCisrIzogc3JjL2xzei5jOjE3OTIgc3JjL2xyei5jOjEwNzQgc3JjL2xyei5jOjE3ODcKKyBtc2dpZCAiZ290IFpDQU4iCisgbXNnc3RyICIiCisgCitAQCAtNDM4LDYgKzQ0MiwxMCBAQCBtc2dpZCAiIgorICJjb3VudGVtOiBUb3RhbCAlZCAlbGRcbiIKKyBtc2dzdHIgIiIKKyAKKysjOiBzcmMvem0uYzo5MQorK21zZ2lkICJCYWQgQ1JDIgorK21zZ3N0ciAiIgorKworICM6IHNyYy96bS5jOjI0NAorICMsIGMtZm9ybWF0CisgbXNnaWQgIkJhZCBlc2NhcGUgc2VxdWVuY2UgJXgiCitAQCAtNDQ3LDcgKzQ1NSw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJTZW5kZXIgQ2FuY2VsZWQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjk5NyBzcmMvem0uYzo1ODUgc3JjL3ptLmM6NjQ0CisrIzogc3JjL3ptLmM6NTg1IHNyYy96bS5jOjY0NCBzcmMvbHJ6LmM6OTk3CisgbXNnaWQgIlRJTUVPVVQiCisgbXNnc3RyICIiCisgCitAQCAtNjc4LDEzICs2ODYsMTEgQEAgbXNnc3RyICIiCisgbXNnaWQgIlNraXBwZWQiCisgbXNnc3RyICIiCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDY0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAicnpmaWxlOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIKKyBtc2dzdHIgIiIKKyAKKy0jLiB0b28gYmFkCisgIzogc3JjL2xyei5jOjIwNzkKKyBtc2dpZCAicnpmaWxlOiByZWFjaGVkIHN0b3AgdGltZSIKKyBtc2dzdHIgIiIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycyBscnpzei0wLjEyLjIwL3BvL01ha2V2YXJzCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMJMjAxOS0xMS0yNSAxODowOTo1Mi4wMDAwMDAwMDAgKzAwMDAKK0BAIC0wLDAgKzEsNzggQEAKKysjIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgorKworKyMgVXN1YWxseSB0aGUgbWVzc2FnZSBkb21haW4gaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KKytET01BSU4gPSAkKFBBQ0tBR0UpCisrCisrIyBUaGVzZSB0d28gdmFyaWFibGVzIGRlcGVuZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkuCisrc3ViZGlyID0gcG8KKyt0b3BfYnVpbGRkaXIgPSAuLgorKworKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgorK1hHRVRURVhUX09QVElPTlMgPSAtLWtleXdvcmQ9XyAtLWtleXdvcmQ9Tl8KKysKKysjIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKKysjICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZworKyMgcGFja2FnZS4gIChOb3RlIHRoYXQgdGhlIG1zZ3N0ciBzdHJpbmdzLCBleHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSdzCisrIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCisrIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KKysjIG9yIGVudGl0eSwgb3IgdG8gZGlzY2xhaW0gdGhlaXIgY29weXJpZ2h0LiAgVGhlIGVtcHR5IHN0cmluZyBzdGFuZHMgZm9yCisrIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KKysjIHRoZWlyIGNvcHlyaWdodC4KKytDT1BZUklHSFRfSE9MREVSID0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgb3Igbm90IHRvIHByZXBlbmQgIkdOVSAiIHByZWZpeCB0byB0aGUgcGFja2FnZQorKyMgbmFtZSB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byB0aGUgaGVhZGVyIG9mIHRoZSAkKERPTUFJTikucG90IGZpbGUuCisrIyBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiLCAibm8iLCBvciBlbXB0eS4gIElmIGl0IGlzIGVtcHR5LCB0cnkgdG8KKysjIGRldGVjdCBpdCBhdXRvbWF0aWNhbGx5IGJ5IHNjYW5uaW5nIHRoZSBmaWxlcyBpbiAkKHRvcF9zcmNkaXIpIGZvcgorKyMgIkdOVSBwYWNrYWdlbmFtZSIgc3RyaW5nLgorK1BBQ0tBR0VfR05VID0KKysKKysjIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKKysjIGJ1Z3MgaW4gdGhlIHVudHJhbnNsYXRlZCBzdHJpbmdzOgorKyMgLSBTdHJpbmdzIHdoaWNoIGFyZSBub3QgZW50aXJlIHNlbnRlbmNlcywgc2VlIHRoZSBtYWludGFpbmVyIGd1aWRlbGluZXMKKysjICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KKysjIC0gU3RyaW5ncyB3aGljaCB1c2UgdW5jbGVhciB0ZXJtcyBvciByZXF1aXJlIGFkZGl0aW9uYWwgY29udGV4dCB0byBiZQorKyMgICB1bmRlcnN0b29kLgorKyMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCisrIyAgIG1vbmV5LgorKyMgLSBQbHVyYWxpc2F0aW9uIHByb2JsZW1zLgorKyMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KKysjIC0gSW5jb3JyZWN0IGZvcm1hdHRpbmcuCisrIyBJdCBjYW4gYmUgeW91ciBlbWFpbCBhZGRyZXNzLCBvciBhIG1haWxpbmcgbGlzdCBhZGRyZXNzIHdoZXJlIHRyYW5zbGF0b3JzCisrIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAorKyMgd2hpY2ggdGhlIHRyYW5zbGF0b3JzIGNhbiBjb250YWN0IHlvdS4KKytNU0dJRF9CVUdTX0FERFJFU1MgPQorKworKyMgVGhpcyBpcyB0aGUgbGlzdCBvZiBsb2NhbGUgY2F0ZWdvcmllcywgYmV5b25kIExDX01FU1NBR0VTLCBmb3Igd2hpY2ggdGhlCisrIyBtZXNzYWdlIGNhdGFsb2dzIHNoYWxsIGJlIHVzZWQuICBJdCBpcyB1c3VhbGx5IGVtcHR5LgorK0VYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KKysKKysjIFRoaXMgdGVsbHMgd2hldGhlciB0aGUgJChET01BSU4pLnBvdCBmaWxlIGNvbnRhaW5zIG1lc3NhZ2VzIHdpdGggYW4gJ21zZ2N0eHQnCisrIyBjb250ZXh0LiAgUG9zc2libGUgdmFsdWVzIGFyZSAieWVzIiBhbmQgIm5vIi4gIFNldCB0aGlzIHRvIHllcyBpZiB0aGUKKysjIHBhY2thZ2UgdXNlcyBmdW5jdGlvbnMgdGFraW5nIGFsc28gYSBtZXNzYWdlIGNvbnRleHQsIGxpa2UgcGdldHRleHQoKSwgb3IKKysjIGlmIGluICQoWEdFVFRFWFRfT1BUSU9OUykgeW91IGRlZmluZSBrZXl3b3JkcyB3aXRoIGEgY29udGV4dCBhcmd1bWVudC4KKytVU0VfTVNHQ1RYVCA9IG5vCisrCisrIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8gbXNnbWVyZ2UuCisrIyBVc2VmdWwgb3B0aW9ucyBhcmUgaW4gcGFydGljdWxhcjoKKysjICAgLS1wcmV2aW91cyAgICAgICAgICAgIHRvIGtlZXAgcHJldmlvdXMgbXNnaWRzIG9mIHRyYW5zbGF0ZWQgbWVzc2FnZXMsCisrIyAgIC0tcXVpZXQgICAgICAgICAgICAgICB0byByZWR1Y2UgdGhlIHZlcmJvc2l0eS4KKytNU0dNRVJHRV9PUFRJT05TID0KKysKKysjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byBtc2dpbml0LgorKyMgSWYgeW91IHdhbnQgdG8gZGlzYWJsZSBsaW5lIHdyYXBwaW5nIHdoZW4gd3JpdGluZyBQTyBmaWxlcywgYWRkCisrIyAtLW5vLXdyYXAgdG8gTVNHTUVSR0VfT1BUSU9OUywgWEdFVFRFWFRfT1BUSU9OUywgYW5kCisrIyBNU0dJTklUX09QVElPTlMuCisrTVNHSU5JVF9PUFRJT05TID0KKysKKysjIFRoaXMgdGVsbHMgd2hldGhlciBvciBub3QgdG8gcmVnZW5lcmF0ZSBhIFBPIGZpbGUgd2hlbiAkKERPTUFJTikucG90CisrIyBoYXMgY2hhbmdlZC4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgInllcyIgYW5kICJubyIuICBTZXQgdGhpcyB0byBubyBpZgorKyMgdGhlIFBPVCBmaWxlIGlzIGNoZWNrZWQgaW4gdGhlIHJlcG9zaXRvcnkgYW5kIHRoZSB2ZXJzaW9uIGNvbnRyb2wKKysjIHByb2dyYW0gaWdub3JlcyB0aW1lc3RhbXBzLgorK1BPX0RFUEVORFNfT05fUE9UID0geWVzCisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgb3Igbm90IHRvIGZvcmNpYmx5IHVwZGF0ZSAkKERPTUFJTikucG90IGFuZAorKyMgcmVnZW5lcmF0ZSBQTyBmaWxlcyBvbiAibWFrZSBkaXN0Ii4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgInllcyIgYW5kCisrIyAibm8iLiAgU2V0IHRoaXMgdG8gbm8gaWYgdGhlIFBPVCBmaWxlIGFuZCBQTyBmaWxlcyBhcmUgbWFpbnRhaW5lZAorKyMgZXh0ZXJuYWxseS4KKytESVNUX0RFUEVORFNfT05fVVBEQVRFX1BPID0geWVzCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQJMTk5OC0xMi0zMCAwNzo1MDowMS4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEgKzAsMCBAQAorLXRpbWVzdGFtcAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL3N0YW1wLXBvIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtcG8KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL3N0YW1wLXBvCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbwkyMDE5LTExLTI2IDExOjQyOjA5LjAwMDAwMDAwMCArMDAwMAorQEAgLTAsMCArMSBAQAorK3RpbWVzdGFtcAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbSBscnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCTE5OTgtMTItMjggMDg6Mzg6NDcuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0JMjAxOS0xMS0yNSAxNjoyMjo0OS4wMDAwMDAwMDAgKzAwMDAKK0BAIC0yLDEzICsyLDExIEBAIGJpbl9QUk9HUkFNUz1scnogbHN6CisgbHJ6X1NPVVJDRVM9bHJ6LmMgdGltaW5nLmMgenBlcnIuYyB6cmVhZGxpbmUuYyBjcmN0YWIuYyByYnNiLmMgem0uYyBwcm90bmFtZS5jIHRjcC5jIGxzeXNsb2cuYyBjYW5pdC5jCisgbHN6X1NPVVJDRVM9bHN6LmMgdGltaW5nLmMgenBlcnIuYyB6cmVhZGxpbmUuYyBjcmN0YWIuYyByYnNiLmMgem0uYyBwcm90bmFtZS5jIHRjcC5jIGxzeXNsb2cuYyBjYW5pdC5jCisgbm9pbnN0X0hFQURFUlMgPSB0aW1pbmcuaCB6Z2xvYmFsLmggem1vZGVtLmgKKy1kYXRhZGlyID0gJChwcmVmaXgpL0BEQVRBRElSTkFNRUAKKytkYXRhZGlyID0gJChwcmVmaXgpL3NoYXJlCisgbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKKy1DRkxBR1M9QENGTEFHU0AKKyBESVNUQ0xFQU5fRklMRVM9bHJ6c3pidWcKKyAKKy1MREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBASU5UTExJQlNACistQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgorK0xEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBMSUJJTlRMQAorIEVYVFJBX0RJU1QgPSBhbnNpMmtuci4xIGFuc2kya25yLmMgbHJ6c3pidWcuaW4KKyBJTkNMVURFUyA9IC1JLi4gLUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYyAtSS4uL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgorICNERUZTID0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIiAtRE9TPVwiQGhvc3Rfb3NAXCIgLURDUFU9XCJAaG9zdF9jcHVAXCIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9zcmMvemdsb2JhbC5oIGxyenN6LTAuMTIuMjAvc3JjL3pnbG9iYWwuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvc3JjL3pnbG9iYWwuaAkxOTk4LTEyLTI5IDEyOjM0OjU5LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvc3JjL3pnbG9iYWwuaAkyMDE5LTExLTI1IDE2OjMyOjQyLjAwMDAwMDAwMCArMDAwMAorQEAgLTE4MCw5ICsxODAsNiBAQCBzdHJ1Y3QgdGVybWlvczsKKyAjaWYgSEFWRV9MT0NBTEVfSAorICMgaW5jbHVkZSA8bG9jYWxlLmg+CisgI2VuZGlmCistI2lmICFIQVZFX1NFVExPQ0FMRQorLSMgZGVmaW5lIHNldGxvY2FsZShDYXRlZ29yeSwgTG9jYWxlKSAvKiBlbXB0eSAqLworLSNlbmRpZgorIAorICNpZiBFTkFCTEVfTkxTCisgIyBpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvc3RhbXAtaC5pbiBscnpzei0wLjEyLjIwL3N0YW1wLWguaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3N0YW1wLWguaW4JMTk5OC0xMi0zMCAwNzo1MTowNy4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3N0YW1wLWguaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xICswLDAgQEAKKy10aW1lc3RhbXAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2dldHRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9nZXR0ZXh0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTI0YTFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2dldHRleHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTg4NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvQUJPVVQtTkxTCTE5OTgtMDQtMjYgMDk6MjI6MzAuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9BQk9VVC1OTFMJMjAwNC0wOS0xMiAxNDo0MDozNC4zMjM3NTI5NTIgLTA0MDAKLUBAIC0xLDE0ICsxLDE0IEBACi0gTm90ZXMgb24gdGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLS0gICBGcmVlIHNvZnR3YXJlIGlzIGdvaW5nIGludGVybmF0aW9uYWwhICBUaGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0Ci0taXMgYSB3YXkgdG8gZ2V0IG1haW50YWluZXJzIG9mIGZyZWUgc29mdHdhcmUsIHRyYW5zbGF0b3JzLCBhbmQgdXNlcnMgYWxsCi0rRnJlZSBzb2Z0d2FyZSBpcyBnb2luZyBpbnRlcm5hdGlvbmFsISAgVGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCBpcwotK2Egd2F5IHRvIGdldCBtYWludGFpbmVycyBvZiBmcmVlIHNvZnR3YXJlLCB0cmFuc2xhdG9ycywgYW5kIHVzZXJzIGFsbAotIHRvZ2V0aGVyLCBzbyB0aGF0IHdpbGwgZ3JhZHVhbGx5IGJlY29tZSBhYmxlIHRvIHNwZWFrIG1hbnkgbGFuZ3VhZ2VzLgotIEEgZmV3IHBhY2thZ2VzIGFscmVhZHkgcHJvdmlkZSB0cmFuc2xhdGlvbnMgZm9yIHRoZWlyIG1lc3NhZ2VzLgotIAotICAgIElmIHlvdSBmb3VuZCB0aGlzIGBBQk9VVC1OTFMnIGZpbGUgaW5zaWRlIGEgZGlzdHJpYnV0aW9uLCB5b3UgbWF5Ci0gYXNzdW1lIHRoYXQgdGhlIGRpc3RyaWJ1dGVkIHBhY2thZ2UgZG9lcyB1c2UgR05VIGBnZXR0ZXh0JyBpbnRlcm5hbGx5LAotLWl0c2VsZiBhdmFpbGFibGUgYXQgeW91ciBuZWFyZXN0IEdOVSBhcmNoaXZlIHNpdGUuICBCdXQgeW91IGRvICpub3QqCi0raXRzZWxmIGF2YWlsYWJsZSBhdCB5b3VyIG5lYXJlc3QgR05VIGFyY2hpdmUgc2l0ZS4gIEJ1dCB5b3UgZG8gX25vdF8KLSBuZWVkIHRvIGluc3RhbGwgR05VIGBnZXR0ZXh0JyBwcmlvciB0byBjb25maWd1cmluZywgaW5zdGFsbGluZyBvciB1c2luZwotIHRoaXMgcGFja2FnZSB3aXRoIG1lc3NhZ2VzIHRyYW5zbGF0ZWQuCi0gCi1AQCAtMjIsMTAgKzIyLDEwIEBACi0gYGdldHRleHQnIHdoaWNoIGlzIHVzZWQuICBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZQotIGBpbnRsL1ZFUlNJT04nIGZpbGUsIGluIGludGVybmF0aW9uYWxpemVkIHBhY2thZ2VzLgotIAotLU9uZSBhZHZpc2UgaW4gYWR2YW5jZQotLT09PT09PT09PT09PT09PT09PT09PQotK1F1aWNrIGNvbmZpZ3VyYXRpb24gYWR2aWNlCi0rPT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAKLS0gICBJZiB5b3Ugd2FudCB0byBleHBsb2l0IHRoZSBmdWxsIHBvd2VyIG9mIGludGVybmF0aW9uYWxpemF0aW9uLCB5b3UKLStJZiB5b3Ugd2FudCB0byBleHBsb2l0IHRoZSBmdWxsIHBvd2VyIG9mIGludGVybmF0aW9uYWxpemF0aW9uLCB5b3UKLSBzaG91bGQgY29uZmlndXJlIGl0IHVzaW5nCi0gCi0gICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dAotQEAgLTM0LDQyICszNCw0MCBAQAotIHBhY2thZ2UsIGRlc3BpdGUgdGhlIGV4aXN0ZW5jZSBvZiBpbnRlcm5hdGlvbmFsaXppbmcgY2FwYWJpbGl0aWVzIGluIHRoZQotIG9wZXJhdGluZyBzeXN0ZW0gd2hlcmUgdGhpcyBwYWNrYWdlIGlzIGJlaW5nIGluc3RhbGxlZC4gIFNvIGZhciwgb25seQotIHRoZSBgZ2V0dGV4dCcgaW1wbGVtZW50YXRpb24gaW4gdGhlIEdOVSBDIGxpYnJhcnkgdmVyc2lvbiAyIHByb3ZpZGVzIGFzCi0tbWFueSBmZWF0dXJlcyAoc3VjaCBhcyBsb2NhbGUgYWxpYXMgb3IgbWVzc2FnZSBpbmhlcml0YW5jZSkgYXMgdGhlCi0taW1wbGVtZW50YXRpb24gaGVyZS4gIEl0IGlzIGFsc28gbm90IHBvc3NpYmxlIHRvIG9mZmVyIHRoaXMgYWRkaXRpb25hbAotLWZ1bmN0aW9uYWxpdHkgb24gdG9wIG9mIGEgYGNhdGdldHMnIGltcGxlbWVudGF0aW9uLiAgRnV0dXJlIHZlcnNpb25zIG9mCi0tR05VIGBnZXR0ZXh0JyB3aWxsIHZlcnkgbGlrZWx5IGNvbnZleSBldmVuIG1vcmUgZnVuY3Rpb25hbGl0eS4gIFNvIGl0Ci0tbWlnaHQgYmUgYSBnb29kIGlkZWEgdG8gY2hhbmdlIHRvIEdOVSBgZ2V0dGV4dCcgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSttYW55IGZlYXR1cmVzIChzdWNoIGFzIGxvY2FsZSBhbGlhcywgbWVzc2FnZSBpbmhlcml0YW5jZSwgYXV0b21hdGljCi0rY2hhcnNldCBjb252ZXJzaW9uIG9yIHBsdXJhbCBmb3JtIGhhbmRsaW5nKSBhcyB0aGUgaW1wbGVtZW50YXRpb24gaGVyZS4KLStJdCBpcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBvZmZlciB0aGlzIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBvbiB0b3AKLStvZiBhIGBjYXRnZXRzJyBpbXBsZW1lbnRhdGlvbi4gIEZ1dHVyZSB2ZXJzaW9ucyBvZiBHTlUgYGdldHRleHQnIHdpbGwKLSt2ZXJ5IGxpa2VseSBjb252ZXkgZXZlbiBtb3JlIGZ1bmN0aW9uYWxpdHkuICBTbyBpdCBtaWdodCBiZSBhIGdvb2QgaWRlYQotK3RvIGNoYW5nZSB0byBHTlUgYGdldHRleHQnIGFzIHNvb24gYXMgcG9zc2libGUuCi0gCi0tICAgU28geW91IG5lZWQgbm90IHByb3ZpZGUgdGhpcyBvcHRpb24gaWYgeW91IGFyZSB1c2luZyBHTlUgbGliYyAyIG9yCi0rICAgU28geW91IG5lZWQgX25vdF8gcHJvdmlkZSB0aGlzIG9wdGlvbiBpZiB5b3UgYXJlIHVzaW5nIEdOVSBsaWJjIDIgb3IKLSB5b3UgaGF2ZSBpbnN0YWxsZWQgYSByZWNlbnQgY29weSBvZiB0aGUgR05VIGdldHRleHQgcGFja2FnZSB3aXRoIHRoZQotIGluY2x1ZGVkIGBsaWJpbnRsJy4KLSAKLSBJTlNUQUxMIE1hdHRlcnMKLSA9PT09PT09PT09PT09PT0KLSAKLS0gICBTb21lIHBhY2thZ2VzIGFyZSAibG9jYWxpemFibGUiIHdoZW4gcHJvcGVybHkgaW5zdGFsbGVkOyB0aGUKLS1wcm9ncmFtcyB0aGV5IGNvbnRhaW4gY2FuIGJlIG1hZGUgdG8gc3BlYWsgeW91ciBvd24gbmF0aXZlIGxhbmd1YWdlLgotLU1vc3Qgc3VjaCBwYWNrYWdlcyB1c2UgR05VIGBnZXR0ZXh0Jy4gIE90aGVyIHBhY2thZ2VzIGhhdmUgdGhlaXIgb3duCi0td2F5cyB0byBpbnRlcm5hdGlvbmFsaXphdGlvbiwgcHJlZGF0aW5nIEdOVSBgZ2V0dGV4dCcuCi0rU29tZSBwYWNrYWdlcyBhcmUgImxvY2FsaXphYmxlIiB3aGVuIHByb3Blcmx5IGluc3RhbGxlZDsgdGhlIHByb2dyYW1zCi0rdGhleSBjb250YWluIGNhbiBiZSBtYWRlIHRvIHNwZWFrIHlvdXIgb3duIG5hdGl2ZSBsYW5ndWFnZS4gIE1vc3Qgc3VjaAotK3BhY2thZ2VzIHVzZSBHTlUgYGdldHRleHQnLiAgT3RoZXIgcGFja2FnZXMgaGF2ZSB0aGVpciBvd24gd2F5cyB0bwotK2ludGVybmF0aW9uYWxpemF0aW9uLCBwcmVkYXRpbmcgR05VIGBnZXR0ZXh0Jy4KLSAKLSAgICBCeSBkZWZhdWx0LCB0aGlzIHBhY2thZ2Ugd2lsbCBiZSBpbnN0YWxsZWQgdG8gYWxsb3cgdHJhbnNsYXRpb24gb2YKLS1tZXNzYWdlcy4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3Qgd2hldGhlciB0aGUgc3lzdGVtIHByb3ZpZGVzCi0tdXNhYmxlIGBjYXRnZXRzJyAoaWYgdXNpbmcgdGhpcyBpcyBzZWxlY3RlZCBieSB0aGUgaW5zdGFsbGVyKSBvcgotLWBnZXR0ZXh0JyBmdW5jdGlvbnMuICBJZiBuZWl0aGVyIGlzIGF2YWlsYWJsZSwgdGhlIEdOVSBgZ2V0dGV4dCcgb3duCi0rbWVzc2FnZXMuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoZXRoZXIgdGhlIHN5c3RlbSBhbHJlYWR5Ci0rcHJvdmlkZXMgdGhlIEdOVSBgZ2V0dGV4dCcgZnVuY3Rpb25zLiAgSWYgbm90LCB0aGUgR05VIGBnZXR0ZXh0JyBvd24KLSBsaWJyYXJ5IHdpbGwgYmUgdXNlZC4gIFRoaXMgbGlicmFyeSBpcyB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiB0aGlzCi0gcGFja2FnZSwgdXN1YWxseSBpbiB0aGUgYGludGwvJyBzdWJkaXJlY3RvcnksIHNvIHByaW9yIGluc3RhbGxhdGlvbiBvZgotLXRoZSBHTlUgYGdldHRleHQnIHBhY2thZ2UgaXMgKm5vdCogcmVxdWlyZWQuICBJbnN0YWxsZXJzIG1heSB1c2UKLSt0aGUgR05VIGBnZXR0ZXh0JyBwYWNrYWdlIGlzIF9ub3RfIHJlcXVpcmVkLiAgSW5zdGFsbGVycyBtYXkgdXNlCi0gc3BlY2lhbCBvcHRpb25zIGF0IGNvbmZpZ3VyYXRpb24gdGltZSBmb3IgY2hhbmdpbmcgdGhlIGRlZmF1bHQKLSBiZWhhdmlvdXIuICBUaGUgY29tbWFuZHM6Ci0gCi0gICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dAotLSAgICAgLi9jb25maWd1cmUgLS13aXRoLWNhdGdldHMKLSAgICAgIC4vY29uZmlndXJlIC0tZGlzYWJsZS1ubHMKLSAKLS13aWxsIHJlc3BlY3RpdmVseSBieXBhc3MgYW55IHByZS1leGlzdGluZyBgY2F0Z2V0cycgb3IgYGdldHRleHQnIHRvIHVzZQotLXRoZSBpbnRlcm5hdGlvbmFsaXppbmcgcm91dGluZXMgcHJvdmlkZWQgd2l0aGluIHRoaXMgcGFja2FnZSwgZW5hYmxlCi0tdGhlIHVzZSBvZiB0aGUgYGNhdGdldHMnIGZ1bmN0aW9ucyAoaWYgZm91bmQgb24gdGhlIGxvY2FsZSBzeXN0ZW0pLCBvcgotLWVsc2UsICp0b3RhbGx5KiBkaXNhYmxlIHRyYW5zbGF0aW9uIG9mIG1lc3NhZ2VzLgotK3dpbGwgcmVzcGVjdGl2ZWx5IGJ5cGFzcyBhbnkgcHJlLWV4aXN0aW5nIGBnZXR0ZXh0JyB0byB1c2UgdGhlCi0raW50ZXJuYXRpb25hbGl6aW5nIHJvdXRpbmVzIHByb3ZpZGVkIHdpdGhpbiB0aGlzIHBhY2thZ2UsIG9yIGVsc2UsCi0rX3RvdGFsbHlfIGRpc2FibGUgdHJhbnNsYXRpb24gb2YgbWVzc2FnZXMuCi0gCi0gICAgV2hlbiB5b3UgYWxyZWFkeSBoYXZlIEdOVSBgZ2V0dGV4dCcgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtIGFuZCBydW4KLSBjb25maWd1cmUgd2l0aG91dCBhbiBvcHRpb24gZm9yIHlvdXIgbmV3IHBhY2thZ2UsIGBjb25maWd1cmUnIHdpbGwKLUBAIC04MywxOCArODEsMTAgQEAKLSAKLSB0byBwcmV2ZW50IGF1dG8tZGV0ZWN0aW9uLgotIAotLSAgIEJ5IGRlZmF1bHQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyB3aWxsIG5vdCB0ZXN0IGZvciB0aGUgYGNhdGdldHMnCi0tZnVuY3Rpb24gYW5kIHRoZXJlZm9yZSB0aGV5IHdpbGwgbm90IGJlIHVzZWQuICBUaGUgcmVhc29ucyBhcmUgYWxyZWFkeQotLWdpdmVuIGFib3ZlOiB0aGUgZW11bGF0aW9uIG9uIHRvcCBvZiBgY2F0Z2V0cycgY2Fubm90IHByb3ZpZGUgYWxsIHRoZQotLWV4dGVuc2lvbnMgcHJvdmlkZWQgYnkgdGhlIEdOVSBgZ2V0dGV4dCcgbGlicmFyeS4gIElmIHlvdSBuZXZlcnRoZWxlc3MKLS13YW50IHRvIHVzZSB0aGUgYGNhdGdldHMnIGZ1bmN0aW9ucyB1c2UKLS0KLS0gICAgIC4vY29uZmlndXJlIC0td2l0aC1jYXRnZXRzCi0tCi0tdG8gZW5hYmxlIHRoZSB0ZXN0IGZvciBgY2F0Z2V0cycgKHRoaXMgY2F1c2VzIG5vIGhhcm0gaWYgYGNhdGdldHMnIGlzCi0tbm90IGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbSkuICBJZiB5b3UgcmVhbGx5IHNlbGVjdCB0aGlzIG9wdGlvbiB3ZQotLXdvdWxkIGxpa2UgdG8gaGVhciBhYm91dCB0aGUgcmVhc29ucyBiZWNhdXNlIHdlIGNhbm5vdCB0aGluayBvZiBhbnkKLS1nb29kIG9uZSBvdXJzZWxmLgotKyAgIFRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3Mgd2lsbCBub3QgdGVzdCBmb3IgdGhlIGBjYXRnZXRzJyBmdW5jdGlvbgotK2FuZCB0aGVyZWZvcmUgaXQgd2lsbCBub3QgYmUgdXNlZC4gIFRoZSByZWFzb24gaXMgdGhhdCBldmVuIGFuCi0rZW11bGF0aW9uIG9mIGBnZXR0ZXh0JyBvbiB0b3Agb2YgYGNhdGdldHMnIGNvdWxkIG5vdCBwcm92aWRlIGFsbCB0aGUKLStleHRlbnNpb25zIG9mIHRoZSBHTlUgYGdldHRleHQnIGxpYnJhcnkuCi0gCi0gICAgSW50ZXJuYXRpb25hbGl6ZWQgcGFja2FnZXMgaGF2ZSB1c3VhbGx5IG1hbnkgYHBvL0xMLnBvJyBmaWxlcywgd2hlcmUKLSBMTCBnaXZlcyBhbiBJU08gNjM5IHR3by1sZXR0ZXIgY29kZSBpZGVudGlmeWluZyB0aGUgbGFuZ3VhZ2UuICBVbmxlc3MKLUBAIC0xMDgsNTcgKzk4LDczIEBACi0gVXNpbmcgVGhpcyBQYWNrYWdlCi0gPT09PT09PT09PT09PT09PT09Ci0gCi0tICAgQXMgYSB1c2VyLCBpZiB5b3VyIGxhbmd1YWdlIGhhcyBiZWVuIGluc3RhbGxlZCBmb3IgdGhpcyBwYWNrYWdlLCB5b3UKLStBcyBhIHVzZXIsIGlmIHlvdXIgbGFuZ3VhZ2UgaGFzIGJlZW4gaW5zdGFsbGVkIGZvciB0aGlzIHBhY2thZ2UsIHlvdQotIG9ubHkgaGF2ZSB0byBzZXQgdGhlIGBMQU5HJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgYXBwcm9wcmlhdGUKLS1JU08gNjM5IGBMTCcgdHdvLWxldHRlciBjb2RlIHByaW9yIHRvIHVzaW5nIHRoZSBwcm9ncmFtcyBpbiB0aGUKLS1wYWNrYWdlLiAgRm9yIGV4YW1wbGUsIGxldCdzIHN1cHBvc2UgdGhhdCB5b3Ugc3BlYWsgR2VybWFuLiAgQXQgdGhlCi0tc2hlbGwgcHJvbXB0LCBtZXJlbHkgZXhlY3V0ZSBgc2V0ZW52IExBTkcgZGUnIChpbiBgY3NoJyksCi0tYGV4cG9ydCBMQU5HOyBMQU5HPWRlJyAoaW4gYHNoJykgb3IgYGV4cG9ydCBMQU5HPWRlJyAoaW4gYGJhc2gnKS4gIFRoaXMKLS1jYW4gYmUgZG9uZSBmcm9tIHlvdXIgYC5sb2dpbicgb3IgYC5wcm9maWxlJyBmaWxlLCBvbmNlIGFuZCBmb3IgYWxsLgotK2BMTF9DQycgY29tYmluYXRpb24uICBIZXJlIGBMTCcgaXMgYW4gSVNPIDYzOSB0d28tbGV0dGVyIGxhbmd1YWdlIGNvZGUsCi0rYW5kIGBDQycgaXMgYW4gSVNPIDMxNjYgdHdvLWxldHRlciBjb3VudHJ5IGNvZGUuICBGb3IgZXhhbXBsZSwgbGV0J3MKLStzdXBwb3NlIHRoYXQgeW91IHNwZWFrIEdlcm1hbiBhbmQgbGl2ZSBpbiBHZXJtYW55LiAgQXQgdGhlIHNoZWxsCi0rcHJvbXB0LCBtZXJlbHkgZXhlY3V0ZSBgc2V0ZW52IExBTkcgZGVfREUnIChpbiBgY3NoJyksCi0rYGV4cG9ydCBMQU5HOyBMQU5HPWRlX0RFJyAoaW4gYHNoJykgb3IgYGV4cG9ydCBMQU5HPWRlX0RFJyAoaW4gYGJhc2gnKS4KLStUaGlzIGNhbiBiZSBkb25lIGZyb20geW91ciBgLmxvZ2luJyBvciBgLnByb2ZpbGUnIGZpbGUsIG9uY2UgYW5kIGZvcgotK2FsbC4KLSAKLS0gICBBbiBvcGVyYXRpbmcgc3lzdGVtIG1pZ2h0IGFscmVhZHkgb2ZmZXIgbWVzc2FnZSBsb2NhbGl6YXRpb24gZm9yCi0tbWFueSBvZiBpdHMgcHJvZ3JhbXMsIHdoaWxlIG90aGVyIHByb2dyYW1zIGhhdmUgYmVlbiBpbnN0YWxsZWQgbG9jYWxseQotLXdpdGggdGhlIGZ1bGwgY2FwYWJpbGl0aWVzIG9mIEdOVSBgZ2V0dGV4dCcuICBKdXN0IHVzaW5nIGBnZXR0ZXh0JwotLWV4dGVuZGVkIHN5bnRheCBmb3IgYExBTkcnIHdvdWxkIGJyZWFrIHByb3BlciBsb2NhbGl6YXRpb24gb2YgYWxyZWFkeQotLWF2YWlsYWJsZSBvcGVyYXRpbmcgc3lzdGVtIHByb2dyYW1zLiAgSW4gdGhpcyBjYXNlLCB1c2VycyBzaG91bGQgc2V0Ci0tYm90aCBgTEFOR1VBR0UnIGFuZCBgTEFORycgdmFyaWFibGVzIGluIHRoZWlyIGVudmlyb25tZW50LCBhcyBwcm9ncmFtcwotLXVzaW5nIEdOVSBgZ2V0dGV4dCcgZ2l2ZSBwcmVmZXJlbmNlIHRvIGBMQU5HVUFHRScuICBGb3IgZXhhbXBsZSwgc29tZQotLVN3ZWRpc2ggdXNlcnMgd291bGQgcmF0aGVyIHJlYWQgdHJhbnNsYXRpb25zIGluIEdlcm1hbiB0aGFuIEVuZ2xpc2ggZm9yCi0td2hlbiBTd2VkaXNoIGlzIG5vdCBhdmFpbGFibGUuICBUaGlzIGlzIGVhc2lseSBhY2NvbXBsaXNoZWQgYnkgc2V0dGluZwotLWBMQU5HVUFHRScgdG8gYHN2OmRlJyB3aGlsZSBsZWF2aW5nIGBMQU5HJyB0byBgc3YnLgotKyAgIFlvdSBtaWdodCB0aGluayB0aGF0IHRoZSBjb3VudHJ5IGNvZGUgc3BlY2lmaWNhdGlvbiBpcyByZWR1bmRhbnQuCi0rQnV0IGluIGZhY3QsIHNvbWUgbGFuZ3VhZ2VzIGhhdmUgZGlhbGVjdHMgaW4gZGlmZmVyZW50IGNvdW50cmllcy4gIEZvcgotK2V4YW1wbGUsIGBkZV9BVCcgaXMgdXNlZCBmb3IgQXVzdHJpYSwgYW5kIGBwdF9CUicgZm9yIEJyYXppbC4gIFRoZQotK2NvdW50cnkgY29kZSBzZXJ2ZXMgdG8gZGlzdGluZ3Vpc2ggdGhlIGRpYWxlY3RzLgotKwotKyAgIFRoZSBsb2NhbGUgbmFtaW5nIGNvbnZlbnRpb24gb2YgYExMX0NDJywgd2l0aCBgTEwnIGRlbm90aW5nIHRoZQotK2xhbmd1YWdlIGFuZCBgQ0MnIGRlbm90aW5nIHRoZSBjb3VudHJ5LCBpcyB0aGUgb25lIHVzZSBvbiBzeXN0ZW1zIGJhc2VkCi0rb24gR05VIGxpYmMuICBPbiBvdGhlciBzeXN0ZW1zLCBzb21lIHZhcmlhdGlvbnMgb2YgdGhpcyBzY2hlbWUgYXJlCi0rdXNlZCwgc3VjaCBhcyBgTEwnIG9yIGBMTF9DQy5FTkNPRElORycuICBZb3UgY2FuIGdldCB0aGUgbGlzdCBvZgotK2xvY2FsZXMgc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtIGZvciB5b3VyIGNvdW50cnkgYnkgcnVubmluZyB0aGUgY29tbWFuZAotK2Bsb2NhbGUgLWEgfCBncmVwICdeTEwnJy4KLSsKLSsgICBOb3QgYWxsIHByb2dyYW1zIGhhdmUgdHJhbnNsYXRpb25zIGZvciBhbGwgbGFuZ3VhZ2VzLiAgQnkgZGVmYXVsdCwgYW4KLStFbmdsaXNoIG1lc3NhZ2UgaXMgc2hvd24gaW4gcGxhY2Ugb2YgYSBub25leGlzdGVudCB0cmFuc2xhdGlvbi4gIElmIHlvdQotK3VuZGVyc3RhbmQgb3RoZXIgbGFuZ3VhZ2VzLCB5b3UgY2FuIHNldCB1cCBhIHByaW9yaXR5IGxpc3Qgb2YgbGFuZ3VhZ2VzLgotK1RoaXMgaXMgZG9uZSB0aHJvdWdoIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlLCBjYWxsZWQKLStgTEFOR1VBR0UnLiAgR05VIGBnZXR0ZXh0JyBnaXZlcyBwcmVmZXJlbmNlIHRvIGBMQU5HVUFHRScgb3ZlciBgTEFORycKLStmb3IgdGhlIHB1cnBvc2Ugb2YgbWVzc2FnZSBoYW5kbGluZywgYnV0IHlvdSBzdGlsbCBuZWVkIHRvIGhhdmUgYExBTkcnCi0rc2V0IHRvIHRoZSBwcmltYXJ5IGxhbmd1YWdlOyB0aGlzIGlzIHJlcXVpcmVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZQotK3N5c3RlbSBsaWJyYXJpZXMuICBGb3IgZXhhbXBsZSwgc29tZSBTd2VkaXNoIHVzZXJzIHdobyB3b3VsZCByYXRoZXIKLStyZWFkIHRyYW5zbGF0aW9ucyBpbiBHZXJtYW4gdGhhbiBFbmdsaXNoIGZvciB3aGVuIFN3ZWRpc2ggaXMgbm90Ci0rYXZhaWxhYmxlLCBzZXQgYExBTkdVQUdFJyB0byBgc3Y6ZGUnIHdoaWxlIGxlYXZpbmcgYExBTkcnIHRvIGBzdl9TRScuCi0rCi0rICAgU3BlY2lhbCBhZHZpY2UgZm9yIE5vcndlZ2lhbiB1c2VyczogVGhlIGxhbmd1YWdlIGNvZGUgZm9yIE5vcndlZ2lhbgotK2Jva21hKmwgY2hhbmdlZCBmcm9tIGBubycgdG8gYG5iJyByZWNlbnRseSAoaW4gMjAwMykuICBEdXJpbmcgdGhlCi0rdHJhbnNpdGlvbiBwZXJpb2QsIHdoaWxlIHNvbWUgbWVzc2FnZSBjYXRhbG9ncyBmb3IgdGhpcyBsYW5ndWFnZSBhcmUKLStpbnN0YWxsZWQgdW5kZXIgYG5iJyBhbmQgc29tZSBvbGRlciBvbmVzIHVuZGVyIGBubycsIGl0J3MgcmVjb21tZW5kZWQKLStmb3IgTm9yd2VnaWFuIHVzZXJzIHRvIHNldCBgTEFOR1VBR0UnIHRvIGBuYjpubycgc28gdGhhdCBib3RoIG5ld2VyIGFuZAotK29sZGVyIHRyYW5zbGF0aW9ucyBhcmUgdXNlZC4KLSsKLSsgICBJbiB0aGUgYExBTkdVQUdFJyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IG5vdCBpbiB0aGUgYExBTkcnCi0rZW52aXJvbm1lbnQgdmFyaWFibGUsIGBMTF9DQycgY29tYmluYXRpb25zIGNhbiBiZSBhYmJyZXZpYXRlZCBhcyBgTEwnCi0rdG8gZGVub3RlIHRoZSBsYW5ndWFnZSdzIG1haW4gZGlhbGVjdC4gIEZvciBleGFtcGxlLCBgZGUnIGlzIGVxdWl2YWxlbnQKLSt0byBgZGVfREUnIChHZXJtYW4gYXMgc3Bva2VuIGluIEdlcm1hbnkpLCBhbmQgYHB0JyB0byBgcHRfUFQnCi0rKFBvcnR1Z3Vlc2UgYXMgc3Bva2VuIGluIFBvcnR1Z2FsKSBpbiB0aGlzIGNvbnRleHQuCi0gCi0gVHJhbnNsYXRpbmcgVGVhbXMKLSA9PT09PT09PT09PT09PT09PQotIAotLSAgIEZvciB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IHRvIGJlIGEgc3VjY2Vzcywgd2UgbmVlZCBpbnRlcmVzdGVkCi0rRm9yIHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgdG8gYmUgYSBzdWNjZXNzLCB3ZSBuZWVkIGludGVyZXN0ZWQKLSBwZW9wbGUgd2hvIGxpa2UgdGhlaXIgb3duIGxhbmd1YWdlIGFuZCB3cml0ZSBpdCB3ZWxsLCBhbmQgd2hvIGFyZSBhbHNvCi0gYWJsZSB0byBzeW5lcmdpemUgd2l0aCBvdGhlciB0cmFuc2xhdG9ycyBzcGVha2luZyB0aGUgc2FtZSBsYW5ndWFnZS4KLS1FYWNoIHRyYW5zbGF0aW9uIHRlYW0gaGFzIGl0cyBvd24gbWFpbGluZyBsaXN0LCBjb3VydGVzeSBvZiBMaW51eAotLUludGVybmF0aW9uYWwuICBZb3UgbWF5IHJlYWNoIHlvdXIgdHJhbnNsYXRpb24gdGVhbSBhdCB0aGUgYWRkcmVzcwotLWBMTEBsaS5vcmcnLCByZXBsYWNpbmcgTEwgYnkgdGhlIHR3by1sZXR0ZXIgSVNPIDYzOSBjb2RlIGZvciB5b3VyCi0tbGFuZ3VhZ2UuICBMYW5ndWFnZSBjb2RlcyBhcmUgKm5vdCogdGhlIHNhbWUgYXMgdGhlIGNvdW50cnkgY29kZXMgZ2l2ZW4KLS1pbiBJU08gMzE2Ni4gIFRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24gdGVhbXMgZXhpc3QsIGFzIG9mIEF1Z3VzdCAxOTk3OgotLQotLSAgICAgQ2hpbmVzZSBgemgnLCBDemVjaCBgY3MnLCBEYW5pc2ggYGRhJywgRHV0Y2ggYG5sJywgRW5nbGlzaCBgZW4nLAotLSAgICAgRXNwZXJhbnRvIGBlbycsIEZpbm5pc2ggYGZpJywgRnJlbmNoIGBmcicsIEdlcm1hbiBgZGUnLCBIdW5nYXJpYW4KLS0gICAgIGBodScsIElyaXNoIGBnYScsIEl0YWxpYW4gYGl0JywgSW5kb25lc2lhbiBgaWQnLCBKYXBhbmVzZSBgamEnLAotLSAgICAgS29yZWFuIGBrbycsIExhdGluIGBsYScsIE5vcndlZ2lhbiBgbm8nLCBQZXJzaWFuIGBmYScsIFBvbGlzaAotLSAgICAgYHBsJywgUG9ydHVndWVzZSBgcHQnLCBSdXNzaWFuIGBydScsIFNsb3ZlbmlhbiBgc2wnLCBTcGFuaXNoIGBlcycsCi0tICAgICBTd2VkaXNoIGBzdicsIGFuZCBUdXJraXNoIGB0cicuCi0tCi0tRm9yIGV4YW1wbGUsIHlvdSBtYXkgcmVhY2ggdGhlIENoaW5lc2UgdHJhbnNsYXRpb24gdGVhbSBieSB3cml0aW5nIHRvCi0tYHpoQGxpLm9yZycuCi0rRWFjaCB0cmFuc2xhdGlvbiB0ZWFtIGhhcyBpdHMgb3duIG1haWxpbmcgbGlzdC4gIFRoZSB1cC10by1kYXRlIGxpc3Qgb2YKLSt0ZWFtcyBjYW4gYmUgZm91bmQgYXQgdGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCdzIGhvbWVwYWdlLAotK2BodHRwOi8vd3d3Lmlyby51bW9udHJlYWwuY2EvY29udHJpYi9wby9IVE1MLycsIGluIHRoZSAiTmF0aW9uYWwgdGVhbXMiCi0rYXJlYS4KLSAKLS0gICBJZiB5b3UnZCBsaWtlIHRvIHZvbHVudGVlciB0byAqd29yayogYXQgdHJhbnNsYXRpbmcgbWVzc2FnZXMsIHlvdQotKyAgIElmIHlvdSdkIGxpa2UgdG8gdm9sdW50ZWVyIHRvIF93b3JrXyBhdCB0cmFuc2xhdGluZyBtZXNzYWdlcywgeW91Ci0gc2hvdWxkIGJlY29tZSBhIG1lbWJlciBvZiB0aGUgdHJhbnNsYXRpbmcgdGVhbSBmb3IgeW91ciBvd24gbGFuZ3VhZ2UuCi0tVGhlIHN1YnNjcmliaW5nIGFkZHJlc3MgaXMgKm5vdCogdGhlIHNhbWUgYXMgdGhlIGxpc3QgaXRzZWxmLCBpdCBoYXMKLStUaGUgc3Vic2NyaWJpbmcgYWRkcmVzcyBpcyBfbm90XyB0aGUgc2FtZSBhcyB0aGUgbGlzdCBpdHNlbGYsIGl0IGhhcwotIGAtcmVxdWVzdCcgYXBwZW5kZWQuICBGb3IgZXhhbXBsZSwgc3BlYWtlcnMgb2YgU3dlZGlzaCBjYW4gc2VuZCBhCi0gbWVzc2FnZSB0byBgc3YtcmVxdWVzdEBsaS5vcmcnLCBoYXZpbmcgdGhpcyBtZXNzYWdlIGJvZHk6Ci0gCi0gICAgICBzdWJzY3JpYmUKLSAKLSAgICBLZWVwIGluIG1pbmQgdGhhdCB0ZWFtIG1lbWJlcnMgYXJlIGV4cGVjdGVkIHRvIHBhcnRpY2lwYXRlCi0tKmFjdGl2ZWx5KiBpbiB0cmFuc2xhdGlvbnMsIG9yIGF0IHNvbHZpbmcgdHJhbnNsYXRpb25hbCBkaWZmaWN1bHRpZXMsCi0rX2FjdGl2ZWx5XyBpbiB0cmFuc2xhdGlvbnMsIG9yIGF0IHNvbHZpbmcgdHJhbnNsYXRpb25hbCBkaWZmaWN1bHRpZXMsCi0gcmF0aGVyIHRoYW4gbWVyZWx5IGx1cmtpbmcgYXJvdW5kLiAgSWYgeW91ciB0ZWFtIGRvZXMgbm90IGV4aXN0IHlldCBhbmQKLSB5b3Ugd2FudCB0byBzdGFydCBvbmUsIG9yIGlmIHlvdSBhcmUgdW5zdXJlIGFib3V0IHdoYXQgdG8gZG8gb3IgaG93IHRvCi0gZ2V0IHN0YXJ0ZWQsIHBsZWFzZSB3cml0ZSB0byBgdHJhbnNsYXRpb25AaXJvLnVtb250cmVhbC5jYScgdG8gcmVhY2ggdGhlCi1AQCAtMTcxLDQzICsxNzcsNTU5IEBACi0gQXZhaWxhYmxlIFBhY2thZ2VzCi0gPT09PT09PT09PT09PT09PT09Ci0gCi0tICAgTGFuZ3VhZ2VzIGFyZSBub3QgZXF1YWxseSBzdXBwb3J0ZWQgaW4gYWxsIHBhY2thZ2VzLiAgVGhlIGZvbGxvd2luZwotLW1hdHJpeCBzaG93cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYXMgb2YgQXVndXN0Ci0tMTk5Ny4gIFRoZSBtYXRyaXggc2hvd3MsIGluIHJlZ2FyZCBvZiBlYWNoIHBhY2thZ2UsIGZvciB3aGljaCBsYW5ndWFnZXMKLS1QTyBmaWxlcyBoYXZlIGJlZW4gc3VibWl0dGVkIHRvIHRyYW5zbGF0aW9uIGNvb3JkaW5hdGlvbi4KLStMYW5ndWFnZXMgYXJlIG5vdCBlcXVhbGx5IHN1cHBvcnRlZCBpbiBhbGwgcGFja2FnZXMuICBUaGUgZm9sbG93aW5nCi0rbWF0cml4IHNob3dzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGludGVybmF0aW9uYWxpemF0aW9uLCBhcyBvZiBKYW51YXJ5Ci0rMjAwNC4gIFRoZSBtYXRyaXggc2hvd3MsIGluIHJlZ2FyZCBvZiBlYWNoIHBhY2thZ2UsIGZvciB3aGljaCBsYW5ndWFnZXMKLStQTyBmaWxlcyBoYXZlIGJlZW4gc3VibWl0dGVkIHRvIHRyYW5zbGF0aW9uIGNvb3JkaW5hdGlvbiwgd2l0aCBhCi0rdHJhbnNsYXRpb24gcGVyY2VudGFnZSBvZiBhdCBsZWFzdCA1MCUuCi0gCi0tICAgICBSZWFkeSBQTyBmaWxlcyAgICBjcyBkYSBkZSBlbiBlcyBmaSBmciBpdCBqYSBrbyBubCBubyBwbCBwdCBzbCBzdgotLSAgICAgICAgICAgICAgICAgICAgIC4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotLSAgICAgYmFzaCAgICAgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgfCAgMwotLSAgICAgYmlzb24gICAgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgfCAgMwotLSAgICAgY2xpc3AgICAgICAgICAgIHwgICAgICAgW10gW10gW10gICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotLSAgICAgY3BpbyAgICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgICAgW10gICAgW10gICAgICAgICAgfCAgNQotLSAgICAgZGlmZnV0aWxzICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgW10gfCAgNQotLSAgICAgZW5zY3JpcHQgICAgICAgIHwgICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gICAgICAgICAgW10gICAgfCAgNgotLSAgICAgZmlsZXV0aWxzICAgICAgIHwgW10gICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gICAgW10gW10gW10gW10gfCAxMAotLSAgICAgZmluZHV0aWxzICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gW10gICAgW10gW10gICAgW10gICAgICAgW10gfCAgOAotLSAgICAgZmxleCAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gfCAgNAotLSAgICAgZ2NhbCAgICAgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgW10gICAgW10gICAgICAgW10gfCAgNQotLSAgICAgZ2V0dGV4dCAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gW10gW10gW10gW10gW10gfCAxMQotLSAgICAgZ3JlcCAgICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gW10gW10gICAgW10gW10gfCAgOQotLSAgICAgaGVsbG8gICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gW10gW10gW10gW10gW10gfCAxMAotLSAgICAgaWQtdXRpbHMgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgfCAgMwotLSAgICAgaW5kZW50ICAgICAgICAgIHwgICAgW10gW10gICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgfCAgNAotLSAgICAgbGliYyAgICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gICAgW10gICAgICAgW10gfCAgNwotLSAgICAgbTQgICAgICAgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgW10gICAgW10gICAgICAgICAgICAgW10gfCAgNQotLSAgICAgbWFrZSAgICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gICAgW10gICAgICAgICAgfCAgNgotLSAgICAgbXVzaWMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgfCAgMgotLSAgICAgcHR4ICAgICAgICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgICAgW10gW10gW10gW10gICAgW10gfCAgOAotLSAgICAgcmVjb2RlICAgICAgICAgIHwgICAgW10gW10gICAgW10gICAgW10gICAgICAgICAgW10gICAgW10gW10gW10gW10gfCAgOQotLSAgICAgc2gtdXRpbHMgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgW10gW10gW10gW10gICAgW10gfCAgNwotLSAgICAgc2hhcnV0aWxzICAgICAgIHwgICAgICAgW10gICAgW10gICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgW10gfCAgNQotLSAgICAgdGFyICAgICAgICAgICAgIHwgICAgICAgW10gICAgICAgICAgW10gW10gICAgW10gW10gW10gW10gW10gW10gW10gfCAxMAotLSAgICAgdGV4aW5mbyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMQotLSAgICAgdGV4dHV0aWxzICAgICAgIHwgW10gICAgW10gICAgW10gICAgW10gICAgICAgW10gW10gW10gW10gICAgICAgW10gfCAgOQotLSAgICAgd2RpZmYgICAgICAgICAgIHwgW10gICAgW10gICAgW10gICAgW10gICAgICAgICAgW10gW10gW10gICAgICAgW10gfCAgOAotLSAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJwotLSAgICAgICAxNiBsYW5ndWFnZXMgICAgY3MgZGEgZGUgZW4gZXMgZmkgZnIgaXQgamEga28gbmwgbm8gcGwgcHQgc2wgc3YKLS0gICAgICAgMjcgcGFja2FnZXMgICAgICAzICAyIDI0ICAxIDE3ICAxIDI2ICAyICAxIDExIDIwICA5IDE5ICA3ICA3IDE3ICAxNjcKLSsgICAgIFJlYWR5IFBPIGZpbGVzICAgICAgIGFmIGFtIGFyIGF6IGJlIGJnIGJzIGNhIGNzIGRhIGRlIGVsIGVuIGVuX0dCIGVvIGVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICBhMnBzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnQtcGhvbmUgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnViaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhc3BlbGwgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXNoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiZmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBiaW51dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBibHVlei1waW4gICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSB8Ci0rICAgICBjb25zb2xlLXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb3JldXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBkYXJrc3RhdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBkaWZmdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBlbnNjcmlwdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgW10gICAgICAgICB8Ci0rICAgICBlcnJvciAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAoKSBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBmaWxldXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBmaW5kdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBmc2xpbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnYmlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2FsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnZXR0ZXh0ICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnZXR0ZXh0LWV4YW1wbGVzICAgfCBbXSAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnZXR0ZXh0LXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnaW1wLXByaW50ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbHVuYXJjbG9jayAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnViaWZmICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAoKSAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICBnbnVjYXNoLWdsb3NzYXJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAoKSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBnbnVwZyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAoKSAgICBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtYmVhbSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2FsZW5kYXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29uZiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29udGFjdHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZ28gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtbG9naW4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc2tldGNoYm9vayAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc3UgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGltZXNoZWV0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kYXkgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGhvdG8yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBncHJvZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgICAgICAoKSB8Ci0rICAgICBncmFtYWRvaXIgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncmVwICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBndGljayAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBoZWxsbyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpbmRlbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBpc29fMzE2NiAgICAgICAgICAgfCAgICAgICAgICBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBpc29fMzE2Nl8yICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8zICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBpc29fNjM5ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqcGlsb3QgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqd2hvaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBrYmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsZCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBsaWJjICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJpY29udiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBsaWZlbGluZXMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoX2xlc3NvbnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAoKSB8Ci0rICAgICBseW54ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBtNCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBtYWlsdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBtYW4tZGIgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAoKSBbXSBbXSAgICAgICAgICAgICAgICAoKSB8Ci0rICAgICBtaW5pY29tICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBuYW5vICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAoKSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBuYW5vXzFfMCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAoKSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBwYXJ0ZWQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBwdHggICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByYWRpdXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICByZWNvZGUgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzY3JlZW0gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzY3JvbGxrZWVwZXIgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBzaC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzaGFyZWQtbWltZS1pbmZvICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBzaWxreSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBza2VuY2lsICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAoKSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAoKSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzb3VuZHRyYWNrZXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzcCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0YXIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB0ZXhpbmZvICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICB0ZXh0dXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgKCkgICAgICAgICB8Ci0rICAgICB0cC1yb2JvdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0dXhwYWludCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSBbXSAgICAgW10gICAgICBbXSB8Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1bmljb2RlLXRyYW5zbGEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1dGlsLWxpbnV4ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB3YXN0ZXNlZGdlICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3ZGlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICB4Y2hhdCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICB4ZnJlZTg2X3hrYl94bWwgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBhZiBhbSBhciBheiBiZSBiZyBicyBjYSBjcyBkYSBkZSBlbCBlbiBlbl9HQiBlbyBlcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgIDAgIDAgIDEgIDkgIDQgIDEgNDAgNDEgNjAgNzggMTcgIDEgICA1ICAgMTMgNjgKLSsgICAgIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXQgZXUgZmEgZmkgZnIgZ2EgZ2wgaGUgaHIgaHUgaWQgaXMgaXQgamEga28gbGcKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgIHwKLSsgICAgIGFlZ2lzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFudC1waG9uZSAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFwLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFzcGVsbCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJhdGNoZWxvciAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJmZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGJpc29uICAgICAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIGJsdWV6LXBpbiAgICAgICAgICB8ICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNvbnNvbGUtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGNwaW8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGRhcmtzdGF0ICAgICAgICAgICB8ICAgICAgICAgICAgICgpIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgIFtdIFtdICAgIFtdIFtdICAgIFtdIFtdICAgICAgIFtdICAgICAgIHwKLSsgICAgIGUyZnNwcm9ncyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGVuc2NyaXB0ICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8ICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGZldGNobWFpbCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGZpbGV1dGlscyAgICAgICAgICB8IFtdICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIFtdIFtdICAgIFtdIFtdIFtdICAgIHwKLSsgICAgIGZsZXggICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGZzbGludCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdhd2sgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGdiaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdjYyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdldHRleHQgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgIHwKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGdldHRleHQtcnVudGltZSAgICB8ICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgIHwKLSsgICAgIGdldHRleHQtdG9vbHMgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgIHwKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGdsaXYgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdsdW5hcmNsb2NrICAgICAgICB8ICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdudWNhc2ggICAgICAgICAgICB8ICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwKLSsgICAgIGdudWNhc2gtZ2xvc3NhcnkgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGdwZS1hZXJpYWwgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1iZWFtICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jbG9jayAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jb25mICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1lZGl0ICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1nbyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1vd25lcmluZm8gICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1za2V0Y2hib29rICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10YXNrbWFuYWdlciAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10aW1lc2hlZXQgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10b2RvICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwaG90bzIgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwc2RyaXZlICAgICAgICAgICB8ICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICgpICgpICAgICAgIHwKLSsgICAgIGdyYW1hZG9pciAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGdyZXRsICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwKLSsgICAgIGd0aWNrICAgICAgICAgICAgICB8ICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8IFtdICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdICAgIFtdIFtdIFtdICAgIHwKLSsgICAgIGlkLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIGluZGVudCAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8ICAgIFtdICAgICAgIFtdIFtdICAgICAgIFtdIFtdIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzEgICAgICAgICB8ICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzIgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb180MjE3ICAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgIHwKLSsgICAgIGlzb182MzkgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgIHwKLSsgICAgIGp0YWcgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGp3aG9pcyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxhdHJpbmUgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxkICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgIFtdIFtdICAgIHwKLSsgICAgIGxpYmdwZXdpZGdldCAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpYmljb252ICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIFtdIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbHlwb25kICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2ggICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGx5bnggICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgIHwKLSsgICAgIG00ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgICAgIFtdICAgICAgIHwKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIG1ha2UgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgICAgIFtdIFtdICAgIHwKLSsgICAgIG1hbi1kYiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICgpICAgICAgIHwKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIG15c2VjcmV0ZGlhcnkgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIG5hbm8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIG9wY29kZXMgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHBhcnRlZCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIHB5dGhvbiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHJhZGl1cyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgIFtdIFtdICAgIFtdICAgICAgICAgIHwKLSsgICAgIHJwbSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIHNjcmVlbSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNlZCAgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgIFtdIFtdICAgICAgIHwKLSsgICAgIHNoLXV0aWxzICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgIHwKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNoYXJ1dGlscyAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIHNpbGt5ICAgICAgICAgICAgICB8ICAgICAgICAgICgpIFtdICAgICAgICAgICAgICgpICAgICAgICgpICAgICAgICAgIHwKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNrZXRjaCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNvdW5kdHJhY2tlciAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgIHwKLSsgICAgIHRhciAgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgIFtdICAgIFtdIFtdIFtdICAgIFtdIFtdICAgICAgIHwKLSsgICAgIHRleGluZm8gICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdIFtdICAgICAgIFtdICAgICAgICAgIFtdIFtdICAgIHwKLSsgICAgIHRpbiAgICAgICAgICAgICAgICB8IFtdICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHRwLXJvYm90ICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8ICAgICAgICAgIFtdIFtdICAgICAgIFtdICAgIFtdIFtdIFtdIFtdIFtdIFtdICAgIHwKLSsgICAgIHVuaWNvZGUtaGFuLXRyYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHVuaWNvZGUtdHJhbnNsYS4uLiB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgICAgICgpIFtdICAgICAgIHwKLSsgICAgIHZvcmJpcy10b29scyAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHdhc3Rlc2VkZ2UgICAgICAgICB8ICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8IFtdICAgICAgICAgIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIHdnZXQgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgIFtdICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIHwKLSsgICAgIHhjaGF0ICAgICAgICAgICAgICB8IFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHhwYWQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGV0IGV1IGZhIGZpIGZyIGdhIGdsIGhlIGhyIGh1IGlkIGlzIGl0IGphIGtvIGxnCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAyMiAgMiAgMSAyNiAxMDYgMjggMjQgIDggMTAgNDEgMzMgIDEgMjYgMzMgMTIgIDAKLSsgICAgIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgbHYgbWsgbW4gbXMgbXQgbmIgbmwgbm4gbm8gbnNvIHBsIHB0IHB0X0JSIHJvIHJ1Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgYTJwcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgKCkgICAgICgpICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGFlZ2lzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAoKSAoKSB8Ci0rICAgICBhbnQtcGhvbmUgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgYW51YmlzICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGFwLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAoKSAgICAgICAgICBbXSAgICB8Ci0rICAgICBhc3BlbGwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmFzaCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGJhdGNoZWxvciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBiZmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgYmludXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGJpc29uICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBibHVlei1waW4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb25zb2xlLXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgY29yZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGNwaW8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBkYXJrc3RhdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgZGlmZnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGUyZnNwcm9ncyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBlbnNjcmlwdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgZXJyb3IgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGZldGNobWFpbCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgKCkgICAgICBbXSB8Ci0rICAgICBmaWxldXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgZmluZHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGZsZXggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBmc2xpbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdhd2sgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSAgICB8Ci0rICAgICBnYmlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ2NhbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdjYyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnZXR0ZXh0ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgZ2V0dGV4dC1leGFtcGxlcyAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdldHRleHQtcnVudGltZSAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBnZXR0ZXh0LXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgfAotKyAgICAgZ2ltcC1wcmludCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdsaXYgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBnbHVuYXJjbG9jayAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gW10gfAotKyAgICAgZ251YmlmZiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdudWNhc2ggICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgKCkgICAgICBbXSB8Ci0rICAgICBnbnVjYXNoLWdsb3NzYXJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgICAgICAgfAotKyAgICAgZ251cGcgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdwZS1hZXJpYWwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtYmVhbSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWNhbGVuZGFyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jbG9jayAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtY29uZiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWNvbnRhY3RzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1lZGl0ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtZ28gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gW10gfAotKyAgICAgZ3BlLWxvZ2luICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1vd25lcmluZm8gICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtc2tldGNoYm9vayAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXN1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS10YXNrbWFuYWdlciAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdGltZXNoZWV0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXRvZGF5ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS10b2RvICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGhvdG8yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ3Byb2YgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGdwc2RyaXZlICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBncmFtYWRvaXIgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ3JlcCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICBbXSAgIFtdIFtdIHwKLSsgICAgIGdyZXRsICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBndGljayAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gW10gfAotKyAgICAgaGVsbG8gICAgICAgICAgICAgIHwgICAgW10gICAgICAgW10gICAgW10gW10gW10gW10gICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGlkLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBpbmRlbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgaXNvXzMxNjYgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzEgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8yICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb180MjE3ICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIFtdICAgICBbXSBbXSAgW10gICAgICBbXSB8Ci0rICAgICBpc29fNjM5ICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAganBpbG90ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGp0YWcgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqd2hvaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gKCkgfAotKyAgICAga2JkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGxhdHJpbmUgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBsZCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGliYyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgIFtdICAgICBbXSAgICAgICAgIHwKLSsgICAgIGxpYmdwZXdpZGdldCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICB8Ci0rICAgICBsaWJpY29udiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgbGlmZWxpbmVzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbHlwb25kICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaF9sZXNzb25zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGx5bnggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICBtNCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgbWFpbHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIG1ha2UgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICAgICBbXSB8Ci0rICAgICBtYW4tZGIgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgbWluaWNvbSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIG15c2VjcmV0ZGlhcnkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBuYW5vICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgbmFub18xXzAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgW10gICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIG9wY29kZXMgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBwYXJ0ZWQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgW10gW10gIFtdICAgICAgICAgfAotKyAgICAgcHR4ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gW10gICAgW10gICAgIFtdIFtdICBbXSAgIFtdIFtdIHwKLSsgICAgIHB5dGhvbiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByYWRpdXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gfAotKyAgICAgcmVjb2RlICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIHJwbSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSB8Ci0rICAgICBzY3JlZW0gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2Nyb2xsa2VlcGVyICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHNlZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSAgICB8Ci0rICAgICBzaC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2hhcmVkLW1pbWUtaW5mbyAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNoYXJ1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzaWxreSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgfAotKyAgICAgc2tlbmNpbCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICBbXSAgICAgICAgIHwKLSsgICAgIHNrZXRjaCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgW10gICAgICAgICB8Ci0rICAgICBzb3VuZHRyYWNrZXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc3AgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHRhciAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICBbXSAgICAgW10gICBbXSAgICB8Ci0rICAgICB0ZXhpbmZvICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgdGV4dHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHRpbiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0cC1yb2JvdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHV4cGFpbnQgICAgICAgICAgIHwgW10gICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgIFtdIFtdICBbXSAgIFtdICAgIHwKLSsgICAgIHVuaWNvZGUtaGFuLXRyYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1bmljb2RlLXRyYW5zbGEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdXRpbC1saW51eCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgIFtdIHwKLSsgICAgIHZvcmJpcy10b29scyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICB3YXN0ZXNlZGdlICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgd2RpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIHdnZXQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICB4Y2hhdCAgICAgICAgICAgICAgfCAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgeGZyZWU4Nl94a2JfeG1sICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHhwYWQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgbHYgbWsgbW4gbXMgbXQgbmIgbmwgbm4gbm8gbnNvIHBsIHB0IHB0X0JSIHJvIHJ1Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMiAgMCAgMyAxMiAgMCAxMCA2OSAgNiAgNyAgMSAgNDAgMjYgIDM2ICAgNzYgNjMKLSsgICAgIAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2sgc2wgc3Igc3YgdGEgdGggdHIgdWsgdmVuIHZpIHdhIHhoIHpoX0NOIHpoX1RXIHp1Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgYTJwcyAgICAgICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKLSsgICAgIGFlZ2lzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICBhbnQtcGhvbmUgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgYW51YmlzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGFwLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBhc3BlbGwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgYmFzaCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGJhdGNoZWxvciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBiZmQgICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgYmludXRpbHMgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgIDgKLSsgICAgIGJpc29uICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0Ci0rICAgICBibHVlei1waW4gICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBjb25zb2xlLXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgY29yZXV0aWxzICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTYKLSsgICAgIGNwaW8gICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE0Ci0rICAgICBkYXJrc3RhdCAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgICAgfCAxMgotKyAgICAgZGlmZnV0aWxzICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMjMKLSsgICAgIGUyZnNwcm9ncyAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBlbnNjcmlwdCAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgotKyAgICAgZXJyb3IgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTUKLSsgICAgIGZldGNobWFpbCAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExCi0rICAgICBmaWxldXRpbHMgICAgICAgICAgfCAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgfCAxNwotKyAgICAgZmluZHV0aWxzICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMjkKLSsgICAgIGZsZXggICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzCi0rICAgICBmc2xpbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdhd2sgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCi0rICAgICBnYmlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgZ2NhbCAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGdjYyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICBnZXR0ZXh0ICAgICAgICAgICAgfCBbXSBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNgotKyAgICAgZ2V0dGV4dC1leGFtcGxlcyAgIHwgW10gICAgW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIGdldHRleHQtcnVudGltZSAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgW10gICAgW10gICAgICB8IDIyCi0rICAgICBnZXR0ZXh0LXRvb2xzICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNAotKyAgICAgZ2ltcC1wcmludCAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAKLSsgICAgIGdsaXYgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnbHVuYXJjbG9jayAgICAgICAgfCAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxMwotKyAgICAgZ251YmlmZiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdudWNhc2ggICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8ICA5Ci0rICAgICBnbnVjYXNoLWdsb3NzYXJ5ICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAgOAotKyAgICAgZ251cGcgICAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTcKLSsgICAgIGdwZS1hZXJpYWwgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3Ci0rICAgICBncGUtYmVhbSAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOAotKyAgICAgZ3BlLWNhbGVuZGFyICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgIHwgMTMKLSsgICAgIGdwZS1jbG9jayAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBncGUtY29uZiAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgZ3BlLWNvbnRhY3RzICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTEKLSsgICAgIGdwZS1lZGl0ICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEyCi0rICAgICBncGUtZ28gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgZ3BlLWxvZ2luICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgIHwgMTMKLSsgICAgIGdwZS1vd25lcmluZm8gICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtc2tldGNoYm9vayAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgZ3BlLXN1ICAgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAKLSsgICAgIGdwZS10YXNrbWFuYWdlciAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBncGUtdGltZXNoZWV0ICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxMgotKyAgICAgZ3BlLXRvZGF5ICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgIHwgMTMKLSsgICAgIGdwZS10b2RvICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEyCi0rICAgICBncGhvdG8yICAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxMQotKyAgICAgZ3Byb2YgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGdwc2RyaXZlICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBncmFtYWRvaXIgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgZ3JlcCAgICAgICAgICAgICAgIHwgICAgW10gW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYKLSsgICAgIGdyZXRsICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBndGljayAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNwotKyAgICAgaGVsbG8gICAgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzQKLSsgICAgIGlkLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCi0rICAgICBpbmRlbnQgICAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMQotKyAgICAgaXNvXzMxNjYgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gICAgW10gICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMjcKLSsgICAgIGlzb18zMTY2XzEgICAgICAgICB8IFtdIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2Ci0rICAgICBpc29fMzE2Nl8yICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgaXNvXzMxNjZfMyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGlzb180MjE3ICAgICAgICAgICB8IFtdIFtdICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDI0Ci0rICAgICBpc29fNjM5ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMQotKyAgICAganBpbG90ICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgIFtdICAgICAgICBbXSAgICBbXSAgICAgIHwgIDkKLSsgICAgIGp0YWcgICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBqd2hvaXMgICAgICAgICAgICAgfCAgICAgICAgICAoKSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxMQotKyAgICAga2JkICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEKLSsgICAgIGxhdHJpbmUgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBsZCAgICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgbGliYyAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMjAKLSsgICAgIGxpYmdwZXdpZGdldCAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDEzCi0rICAgICBsaWJpY29udiAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgW10gICAgIFtdICAgICAgICAgICAgfCAyNwotKyAgICAgbGlmZWxpbmVzICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGxpbHlwb25kICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBsaW5nb3RlYWNoICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgbGluZ290ZWFjaF9sZXNzb25zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgIHwgIDAKLSsgICAgIGx5bnggICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0Ci0rICAgICBtNCAgICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNQotKyAgICAgbWFpbHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIG1ha2UgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE2Ci0rICAgICBtYW4tZGIgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgbWluaWNvbSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEKLSsgICAgIG15c2VjcmV0ZGlhcnkgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBuYW5vICAgICAgICAgICAgICAgfCAgICAgICBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNwotKyAgICAgbmFub18xXzAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcKLSsgICAgIG9wY29kZXMgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBwYXJ0ZWQgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNQotKyAgICAgcHR4ICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjIKLSsgICAgIHB5dGhvbiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICByYWRpdXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgcmVjb2RlICAgICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKLSsgICAgIHJwbSAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBzY3JlZW0gICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAgMgotKyAgICAgc2Nyb2xsa2VlcGVyICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUKLSsgICAgIHNlZCAgICAgICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0Ci0rICAgICBzaC11dGlscyAgICAgICAgICAgfCAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgc2hhcmVkLW1pbWUtaW5mbyAgIHwgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIHNoYXJ1dGlscyAgICAgICAgICB8ICAgICAgIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE3Ci0rICAgICBzaWxreSAgICAgICAgICAgICAgfCAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgc2tlbmNpbCAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIHNrZXRjaCAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBzb3VuZHRyYWNrZXIgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNwotKyAgICAgc3AgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIHRhciAgICAgICAgICAgICAgICB8IFtdIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDI0Ci0rICAgICB0ZXhpbmZvICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNAotKyAgICAgdGV4dHV0aWxzICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTYKLSsgICAgIHRpbiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxCi0rICAgICB0cC1yb2JvdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgdHV4cGFpbnQgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgICAgICAgICAgIHwgMjkKLSsgICAgIHVuaWNvZGUtaGFuLXRyYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICB1bmljb2RlLXRyYW5zbGEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgdXRpbC1saW51eCAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTUKLSsgICAgIHZvcmJpcy10b29scyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4Ci0rICAgICB3YXN0ZXNlZGdlICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgd2RpZmYgICAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTgKLSsgICAgIHdnZXQgICAgICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgW10gICAgW10gICAgICB8IDI0Ci0rICAgICB4Y2hhdCAgICAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNQotKyAgICAgeGZyZWU4Nl94a2JfeG1sICAgIHwgW10gICAgW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTEKLSsgICAgIHhwYWQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgICA2MyB0ZWFtcyAgICAgICAgICAgc2sgc2wgc3Igc3YgdGEgdGggdHIgdWsgdmVuIHZpIHdhIHhoIHpoX0NOIHpoX1RXIHp1Ci0rICAgICAgMTMxIGRvbWFpbnMgICAgICAgICA0NyAxOSAyOCA4MyAgMCAgMCA1OSAxMyAgMSAgIDEgMTEgIDAgIDIyICAgIDIyICAgIDAgIDEzNzMKLSAKLSAgICBTb21lIGNvdW50ZXJzIGluIHRoZSBwcmVjZWRpbmcgbWF0cml4IGFyZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mCi0gdmlzaWJsZSBibG9ja3MgbGV0IHVzIGV4cGVjdC4gIFRoaXMgaXMgYmVjYXVzZSBhIGZldyBleHRyYSBQTyBmaWxlcyBhcmUKLUBAIC0yMjAsNiArNzQyLDI3IEBACi0gbGFnIGJldHdlZW4gdGhlIG1lcmUgZXhpc3RlbmNlIGEgUE8gZmlsZSBhbmQgaXRzIHdpZGUgYXZhaWxhYmlsaXR5IGluIGEKLSBkaXN0cmlidXRpb24uCi0gCi0tICAgSWYgQXVndXN0IDE5OTcgc2VlbXMgdG8gYmUgb2xkLCB5b3UgbWF5IGZldGNoIGEgbW9yZSByZWNlbnQgY29weSBvZgotLXRoaXMgYEFCT1VULU5MUycgZmlsZSBvbiBtb3N0IEdOVSBhcmNoaXZlIHNpdGVzLgotKyAgIElmIEphbnVhcnkgMjAwNCBzZWVtcyB0byBiZSBvbGQsIHlvdSBtYXkgZmV0Y2ggYSBtb3JlIHJlY2VudCBjb3B5IG9mCi0rdGhpcyBgQUJPVVQtTkxTJyBmaWxlIG9uIG1vc3QgR05VIGFyY2hpdmUgc2l0ZXMuICBUaGUgbW9zdCB1cC10by1kYXRlCi0rbWF0cml4IHdpdGggZnVsbCBwZXJjZW50YWdlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGF0Ci0rYGh0dHA6Ly93d3cuaXJvLnVtb250cmVhbC5jYS9jb250cmliL3BvL0hUTUwvbWF0cml4Lmh0bWwnLgotKwotK1VzaW5nIGBnZXR0ZXh0JyBpbiBuZXcgcGFja2FnZXMKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rCi0rSWYgeW91IGFyZSB3cml0aW5nIGEgZnJlZWx5IGF2YWlsYWJsZSBwcm9ncmFtIGFuZCB3YW50IHRvCi0raW50ZXJuYXRpb25hbGl6ZSBpdCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlIEdOVSBgZ2V0dGV4dCcgaW4geW91cgotK3BhY2thZ2UuICBPZiBjb3Vyc2UgeW91IGhhdmUgdG8gcmVzcGVjdCB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStMaWNlbnNlIHdoaWNoIGNvdmVycyB0aGUgdXNlIG9mIHRoZSBHTlUgYGdldHRleHQnIGxpYnJhcnkuICBUaGlzIG1lYW5zCi0raW4gcGFydGljdWxhciB0aGF0IGV2ZW4gbm9uLWZyZWUgcHJvZ3JhbXMgY2FuIHVzZSBgbGliaW50bCcgYXMgYSBzaGFyZWQKLStsaWJyYXJ5LCB3aGVyZWFzIG9ubHkgZnJlZSBzb2Z0d2FyZSBjYW4gdXNlIGBsaWJpbnRsJyBhcyBhIHN0YXRpYwotK2xpYnJhcnkgb3IgdXNlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGBsaWJpbnRsJy4KLSsKLSsgICBPbmNlIHRoZSBzb3VyY2VzIGFyZSBjaGFuZ2VkIGFwcHJvcHJpYXRlbHkgYW5kIHRoZSBzZXR1cCBjYW4gaGFuZGxlCi0rdGhlIHVzZSBvZiBgZ2V0dGV4dCcgdGhlIG9ubHkgdGhpbmcgbWlzc2luZyBhcmUgdGhlIHRyYW5zbGF0aW9ucy4gIFRoZQotK0ZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgcGFja2FnZXMgd2hpY2ggYXJlIG5vdAotK2RldmVsb3BlZCBpbnNpZGUgdGhlIEdOVSBwcm9qZWN0LiAgVGhlcmVmb3JlIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBhYm92ZQotK2FwcGxpZXMgYWxzbyBmb3IgZXZlcnkgb3RoZXIgRnJlZSBTb2Z0d2FyZSBQcm9qZWN0LiAgQ29udGFjdAotK2B0cmFuc2xhdGlvbkBpcm8udW1vbnRyZWFsLmNhJyB0byBtYWtlIHRoZSBgLnBvdCcgZmlsZXMgYXZhaWxhYmxlIHRvCi0rdGhlIHRyYW5zbGF0aW9uIHRlYW1zLgotIAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9DaGFuZ2VMb2cJMTk5OC0xMi0yOSAxNzo0OTo1Ni4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL0NoYW5nZUxvZwkyMDA0LTA5LTEyIDE0OjQwOjM1Ljg0NjUyMTQ1NiAtMDQwMAotQEAgLTEsMyArMSwxMSBAQAotKzIwMDQtMDktMTIgIGdldHRleHRpemUgIDxidWctZ251LWdldHRleHRAZ251Lm9yZz4KLSsKLSsJKiBNYWtlZmlsZS5hbSAoQUNMT0NBTF9BTUZMQUdTKTogTmV3IHZhcmlhYmxlLgotKwkoRVhUUkFfRElTVCk6IEFkZCBjb25maWcucnBhdGguCi0rCSogY29uZmlndXJlLmluIChBQ19PVVRQVVQpOiBBZGQgbTQvTWFrZWZpbGUuCi0rCShBQ19PVVRQVVQpOiBSZW1vdmUgY29tbWFuZCB0aGF0IGNyZWF0ZWQgcG8vTWFrZWZpbGUuCi0rCShBQ19MSU5LX0ZJTEVTKTogUmVtb3ZlIGludm9jYXRpb24uCi0rCi0gMTk5OC0xMi0yOQlVd2UgT2hzZSAgPHV3ZUBvaHNlLmRlPgotIAotIAkqIHNyYy9scnouYzogcmVtb3ZlZCBzdHBjcHkgY2FsbC4KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvY29uZmlnLnJwYXRoCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9jb25maWcucnBhdGgJMjAwNC0wOS0xMiAxNDo0MDozNC4zMjk3NTIwNDAgLTA0MDAKLUBAIC0wLDAgKzEsNTQ4IEBACi0rIyEgL2Jpbi9zaAotKyMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCBzZXQgb2YgdmFyaWFibGVzLCBkZXNjcmliaW5nIGhvdyB0byBzZXQgdGhlCi0rIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCi0rIwotKyMgICBDb3B5cmlnaHQgMTk5Ni0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCi0rIyAgIE9yaWdpbmFsbHkgYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIwotKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0rIyAgIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotKyMgICBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotKyMgICB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rIwotKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZpbGUgaXMgdGhlIGNhbm9uaWNhbCBob3N0IHNwZWNpZmljYXRpb24sCi0rIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQotKyMgb3IKLSsjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQotKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDQywgR0NDLCBMREZMQUdTLCBMRCwgd2l0aF9nbnVfbGQKLSsjIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KLSsjCi0rIyBUaGUgc2V0IG9mIGRlZmluZWQgdmFyaWFibGVzIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBzY3JpcHQuCi0rCi0rIyBLbm93biBsaW1pdGF0aW9uczoKLSsjIC0gT24gSVJJWCA2LjUgd2l0aCBDQz0iY2MiLCB0aGUgcnVuIHRpbWUgc2VhcmNoIHBhdGNoIG11c3Qgbm90IGJlIGxvbmdlcgotKyMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5Ci0rIyAgIGtub3duIHdvcmthcm91bmQgaXMgdG8gY2hvb3NlIHNob3J0ZXIgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgYnVpbGQKLSsjICAgZGlyZWN0b3J5IGFuZC9vciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLSsKLSsjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTSRWQywKLSsjIHdoaWNoIG5lZWRzICcubGliJykuCi0rbGliZXh0PWEKLStzaHJleHQ9LnNvCi0rCi0raG9zdD0iJDEiCi0raG9zdF9jcHU9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCi0raG9zdF92ZW5kb3I9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi0raG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSsKLSsjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQy4KLSsKLSt3bD0KLStpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgd2w9Jy1XbCwnCi0rZWxzZQotKyAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgIGFpeCopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgbWluZ3cqIHwgcHczMiogfCBvczIqKQotKyAgICAgIDs7Ci0rICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgbmV3c29zNikKLSsgICAgICA7OwotKyAgICBsaW51eCopCi0rICAgICAgY2FzZSAkQ0MgaW4KLSsgICAgICAgIGljY3xlY2MpCi0rICAgICAgICAgIHdsPSctV2wsJwotKyAgICAgICAgICA7OwotKyAgICAgICAgY2NjKQotKyAgICAgICAgICB3bD0nLVdsLCcKLSsgICAgICAgICAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgOzsKLSsgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIHNjbzMuMnY1KikKLSsgICAgICA7OwotKyAgICBzb2xhcmlzKikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBzdW5vczQqKQotKyAgICAgIHdsPSctUW9wdGlvbiBsZCAnCi0rICAgICAgOzsKLSsgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqIHwgc3lzdjUqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0Kk1QKikKLSsgICAgICA7OwotKyAgICB1dHM0KikKLSsgICAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0rIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMuCi0rCi0raGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLStoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotK2hhcmRjb2RlX2RpcmVjdD1ubwotK2hhcmRjb2RlX21pbnVzX0w9bm8KLSsKLStjYXNlICIkaG9zdF9vcyIgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgIyBGSVhNRTogdGhlIE1TVkMrKyBwb3J0IGhhc24ndCBiZWVuIHRlc3RlZCBpbiBhIGxvb29vbmcgdGltZQotKyAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICB3aXRoX2dudV9sZD1ubwotKyAgICBmaQotKyAgICA7OwotKyAgb3BlbmJzZCopCi0rICAgIHdpdGhfZ251X2xkPW5vCi0rICAgIDs7Ci0rZXNhYwotKwotK2xkX3NobGlicz15ZXMKLStpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0rICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgYWl4MyogfCBhaXg0KiB8IGFpeDUqKQotKyAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KLSsgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgYW1pZ2FvcyopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgIyBTYW11ZWwgQS4gRmFsdm8gSUkgPGtjNXRqYUBkb2xwaGluLm9wZW5wcm9qZWN0cy5uZXQ+IHJlcG9ydHMKLSsgICAgICAjIHRoYXQgdGhlIHNlbWFudGljcyBvZiBkeW5hbWljIGxpYnJhcmllcyBvbiBBbWlnYU9TLCBhdCBsZWFzdCB1cAotKyAgICAgICMgdG8gdmVyc2lvbiA0LCBpcyB0byBzaGFyZSBkYXRhIGFtb25nIG11bHRpcGxlIHByb2dyYW1zIGxpbmtlZAotKyAgICAgICMgd2l0aCB0aGUgc2FtZSBkeW5hbWljIGxpYnJhcnkuICBTaW5jZSB0aGlzIGRvZXNuJ3QgbWF0Y2ggdGhlCi0rICAgICAgIyBiZWhhdmlvciBvZiBzaGFyZWQgbGlicmFyaWVzIG9uIG90aGVyIHBsYXRmb3Jtcywgd2UgY2FuIHVzZQotKyAgICAgICMgdGhlbS4KLSsgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICA7OwotKyAgICBiZW9zKikKLSsgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICBlbHNlCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBuZXRic2QqKQotKyAgICAgIDs7Ci0rICAgIHNvbGFyaXMqIHwgc3lzdjUqKQotKyAgICAgIGlmICRMRCAtdiAyPiYxIHwgZ3JlcCAnQkZEIDJcLjgnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgIGVsc2UKLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgc3Vub3M0KikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICBlbHNlCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICBlc2FjCi0rICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IHllczsgdGhlbgotKyAgICAjIFVubGlrZSBsaWJ0b29sLCB3ZSB1c2UgLXJwYXRoIGhlcmUsIG5vdCAtLXJwYXRoLCBzaW5jZSB0aGUgZG9jdW1lbnRlZAotKyAgICAjIG9wdGlvbiBvZiBHTlUgbGQgaXMgY2FsbGVkIC1ycGF0aCwgbm90IC0tcnBhdGguCi0rICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgIGZpCi0rZWxzZQotKyAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgIGFpeDMqKQotKyAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCi0rICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQotKyAgICAgICAgIyBicm9rZW4gY29sbGVjdDIuCi0rICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGFpeDQqIHwgYWl4NSopCi0rICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLSsgICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKLSsgICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotKyAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwotKyAgICAgIGVsc2UKLSsgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSsgICAgICAgICMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAotKyAgICAgICAgIyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGluIExERkxBR1MsIHdlCi0rICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgotKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlsyM118YWl4NC5bMjNdLip8YWl4NSopCi0rICAgICAgICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwotKyAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0rICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwotKyAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICBkb25lCi0rICAgICAgICBlc2FjCi0rICAgICAgZmkKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSsgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKLSsgICAgICAgICAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAotKyAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0rICAgICAgICAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAotKyAgICAgICAgICB0aGVuCi0rICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCi0rICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAotKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9Ci0rICAgICAgICAgIGZpCi0rICAgICAgICBlc2FjCi0rICAgICAgZmkKLSsgICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCi0rICAgICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC5jCi0rICAgICAgJHtDQ30gJHtMREZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Ci0rICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotK30nYAotKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSsgICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KLSt9J2AKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSsgICAgICAgIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIgotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAotKyAgICAgICMgRW5kIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCi0rICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0rICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotKyAgICAgIGVsc2UKLSsgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0rICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGFtaWdhb3MqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgZGlmZmVyZW50IHNlbWFudGljcyBvbiB0aGUgR05VIGxkIHNlY3Rpb24KLSsgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICA7OwotKyAgICBic2RpNCopCi0rICAgICAgOzsKLSsgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotKyAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0rICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSsgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKyAgICAgIGxpYmV4dD1saWIKLSsgICAgICA7OwotKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotKyAgICAgIGlmICRDQyAtdiAyPiYxIHwgZ3JlcCAnQXBwbGUnID4vZGV2L251bGwgOyB0aGVuCi0rICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGRndXgqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICA7OwotKyAgICBmcmVlYnNkMSopCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZDIuMiopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICA7OwotKyAgICBmcmVlYnNkMiopCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICA7OwotKyAgICBocHV4OSopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCi0rICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICA7OwotKyAgICBocHV4MTAqIHwgaHB1eDExKikKLSsgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSsgICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSsgICAgICAgICAgaHBwYSo2NCopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgICAgaWE2NCopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCi0rICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0rICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAgICAgICA7OwotKyAgICAgICAgICAqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIG5ldGJzZCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICA7OwotKyAgICBuZXdzb3M2KQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgOzsKLSsgICAgb3BlbmJzZCopCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSsgICAgICBlbHNlCi0rICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgICAgKikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBvczIqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIDs7Ci0rICAgIG9zZjMqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICA7OwotKyAgICBvc2Y0KiB8IG9zZjUqKQotKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICAgICAgZWxzZQotKyAgICAgICAgIyBCb3RoIGNjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLSsgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJwotKyAgICAgIGZpCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgOzsKLSsgICAgc2NvMy4ydjUqKQotKyAgICAgIDs7Ci0rICAgIHNvbGFyaXMqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICA7OwotKyAgICBzdW5vczQqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICA7OwotKyAgICBzeXN2NCkKLSsgICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgotKyAgICAgICAgc25pKQotKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzICMgaXMgdGhpcyByZWFsbHkgdHJ1ZT8/PwotKyAgICAgICAgICA7OwotKyAgICAgICAgc2llbWVucykKLSsgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0rICAgICAgICAgIDs7Ci0rICAgICAgICBtb3Rvcm9sYSkKLSsgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vICNNb3Rvcm9sYSBtYW51YWwgc2F5cyB5ZXMsIGJ1dCBteSB0ZXN0cyBzYXkgdGhleSBsaWUKLSsgICAgICAgICAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgOzsKLSsgICAgc3lzdjQuMyopCi0rICAgICAgOzsKLSsgICAgc3lzdjQqTVAqKQotKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLSsgICAgICAgIGxkX3NobGlicz15ZXMKLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIHN5c3Y0LjJ1dzIqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9taW51c19MPW5vCi0rICAgICAgOzsKLSsgICAgc3lzdjVPcGVuVU5JWDgqIHwgc3lzdjVVbml4V2FyZTcqIHwgIHN5c3Y1dXdbNzhdKiB8IHVuaXh3YXJlNyopCi0rICAgICAgOzsKLSsgICAgc3lzdjUqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0rICAgICAgOzsKLSsgICAgdXRzNCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgIGVzYWMKLStmaQotKwotKyMgQ2hlY2sgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCi0rIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIEFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSLgotK2xpYm5hbWVfc3BlYz0nbGliJG5hbWUnCi0rY2FzZSAiJGhvc3Rfb3MiIGluCi0rICBhaXgzKikKLSsgICAgOzsKLSsgIGFpeDQqIHwgYWl4NSopCi0rICAgIDs7Ci0rICBhbWlnYW9zKikKLSsgICAgOzsKLSsgIGJlb3MqKQotKyAgICA7OwotKyAgYnNkaTQqKQotKyAgICA7OwotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotKyAgICBzaHJleHQ9LmRsbAotKyAgICA7OwotKyAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSsgICAgc2hyZXh0PS5keWxpYgotKyAgICA7OwotKyAgZGd1eCopCi0rICAgIDs7Ci0rICBmcmVlYnNkMSopCi0rICAgIDs7Ci0rICBmcmVlYnNkKikKLSsgICAgOzsKLSsgIGdudSopCi0rICAgIDs7Ci0rICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKLSsgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotKyAgICAgIGlhNjQqKQotKyAgICAgICAgc2hyZXh0PS5zbwotKyAgICAgICAgOzsKLSsgICAgICBocHBhKjY0KikKLSsgICAgICAgIHNocmV4dD0uc2wKLSsgICAgICAgIDs7Ci0rICAgICAgKikKLSsgICAgICAgIHNocmV4dD0uc2wKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0rICAgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCi0rICAgICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9Ci0rICAgICAgICA7OwotKyAgICAgICopCi0rICAgICAgICBjYXNlICRMRCBpbgotKyAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0rICAgICAgICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpIGxpYnN1ZmY9MzIgc2hsaWJzdWZmPU4zMiA7OwotKyAgICAgICAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikgbGlic3VmZj02NCBzaGxpYnN1ZmY9NjQgOzsKLSsgICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OwotKyAgICAgICAgZXNhYwotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKLSsgICAgOzsKLSsgIGxpbnV4KikKLSsgICAgOzsKLSsgIG5ldGJzZCopCi0rICAgIDs7Ci0rICBuZXdzb3M2KQotKyAgICA7OwotKyAgbnRvLXFueCkKLSsgICAgOzsKLSsgIG9wZW5ic2QqKQotKyAgICA7OwotKyAgb3MyKikKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc2hyZXh0PS5kbGwKLSsgICAgOzsKLSsgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSsgICAgOzsKLSsgIHNjbzMuMnY1KikKLSsgICAgOzsKLSsgIHNvbGFyaXMqKQotKyAgICA7OwotKyAgc3Vub3M0KikKLSsgICAgOzsKLSsgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKLSsgICAgOzsKLSsgIHN5c3Y0Kk1QKikKLSsgICAgOzsKLSsgIHV0czQqKQotKyAgICA7OwotK2VzYWMKLSsKLStzZWRfcXVvdGVfc3Vic3Q9J3MvXChbImAkXFxdXCkvXFxcMS9nJwotK2VzY2FwZWRfd2w9YGVjaG8gIlgkd2wiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLStzaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAotK2VzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rCi0rc2VkIC1lICdzL15cKFthLXpBLVowLTlfXSpcKT0vYWNsX2N2X1wxPS8nIDw8RU9GCi0rCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSIkZXNjYXBlZF93bCIKLSsKLSsjIFN0YXRpYyBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgImEiKS4KLStsaWJleHQ9IiRsaWJleHQiCi0rCi0rIyBTaGFyZWQgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJzbyIpLgotK3NobGliZXh0PSIkc2hsaWJleHQiCi0rCi0rIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0rIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgotK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCi0rCi0rIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KLStoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKLSsKLSsjIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotKyMgcmVzdWx0aW5nIGJpbmFyeS4KLStoYXJkY29kZV9kaXJlY3Q9IiRoYXJkY29kZV9kaXJlY3QiCi0rCi0rIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSsjIHJlc3VsdGluZyBiaW5hcnkuCi0raGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCi0rCi0rRU9GCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2NvbmZpZ3VyZS5pbgkyMDA0LTA5LTEyIDE0OjM5OjU1LjE2MTcwNjQ4OCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCTIwMDQtMDktMTIgMTQ6NDA6MzUuODE2NTI2MDE2IC0wNDAwCi1AQCAtMjYwLDExICsyNjAsMTAgQEAKLSBBTV9HTlVfR0VUVEVYVAotIAotIEFDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIikKLS1BQ19MSU5LX0ZJTEVTKCRubHNfY3ZfaGVhZGVyX2xpYmd0LCAkbmxzX2N2X2hlYWRlcl9pbnRsKQotIAotLUFDX09VVFBVVChbTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIFwKLStBQ19PVVRQVVQoW01ha2VmaWxlIGludGwvTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSAgbTQvTWFrZWZpbGUgXAotIG1hbi9NYWtlZmlsZSBwby9NYWtlZmlsZS5pbiBzcmMvTWFrZWZpbGUgZGViaWFuL3J1bGVzIFNwZWNmaWxlIHN5c3R5cGUgXAotIHNyYy9scnpzemJ1Z10sCi0tW3NlZCAtZSAiL1BPVEZJTEVTID0vciBwby9QT1RGSUxFUyIgcG8vTWFrZWZpbGUuaW4gPiBwby9NYWtlZmlsZTsgCi0rWwotIGNobW9kICt4IGRlYmlhbi9ydWxlczsKLSB0ZXN0IC16ICIkQ09ORklHX0hFQURFUlMiIHx8IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaF0pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvYmluZHRleHRkb20uYwkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzQzNzQ5OTEyIC0wNDAwCi1AQCAtMSw1OSArMSw3NSBAQAotIC8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBiaW5kdGV4dGRvbWFpbigzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbHNlCi0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbHNlCi0tdm9pZCBmcmVlICgpOwotLSMgZW5kaWYKLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tIyBpZm5kZWYgbWVtY3B5Ci0tIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKLS0jIGVuZGlmCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0gCi0gI2lmZGVmIF9MSUJDCi0tIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rLyogV2UgaGF2ZSB0byBoYW5kbGUgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLiAgKi8KLSsjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsvKiBQcm92aWRlIGR1bW15IGltcGxlbWVudGF0aW9uIGlmIHRoaXMgaXMgb3V0c2lkZSBnbGliYy4gICovCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19kZWZpbmUoQ0xBU1MsIE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja193cmxvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3VubG9jayhOQU1FKQotKyNlbmRpZgotKwotKy8qIFRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gdGhlIHN0YW5kYWxvbmUgbGliaW50bC5hIG11c3QgaGF2ZSBkaWZmZXJlbnQKLSsgICBuYW1lcyB0aGFuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gR05VIGxpYmMsIG90aGVyd2lzZSBwcm9ncmFtcwotKyAgIHVzaW5nIGxpYmludGwuYSBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHkuICAqLwotKyNpZiAhZGVmaW5lZCBfTElCQwotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2Rpcm5hbWUgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUKLSsjIGRlZmluZSBfbmxfZG9tYWluX2JpbmRpbmdzIGxpYmludGxfbmxfZG9tYWluX2JpbmRpbmdzCi0rI2VuZGlmCi0rCi0rLyogU29tZSBjb21waWxlcnMsIGxpa2UgU3VuT1M0IGNjLCBkb24ndCBoYXZlIG9mZnNldG9mIGluIDxzdGRkZWYuaD4uICAqLwotKyNpZm5kZWYgb2Zmc2V0b2YKLSsjIGRlZmluZSBvZmZzZXRvZih0eXBlLGlkZW50KSAoKHNpemVfdCkmKCgodHlwZSopMCktPmlkZW50KSkKLSAjZW5kaWYKLS0jaW5jbHVkZSAiZ2V0dGV4dC5oIgotLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLSAvKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCi0gZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOwotKyNpZmRlZiBfTElCQwotK2V4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVfaW50ZXJuYWxbXSBhdHRyaWJ1dGVfaGlkZGVuOwotKyNlbHNlCi0rIyBkZWZpbmUgSU5UVVNFKG5hbWUpIG5hbWUKLSsjZW5kaWYKLSAKLSAvKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucy4gICovCi0gZXh0ZXJuIHN0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOwotIAotKy8qIExvY2sgdmFyaWFibGUgdG8gcHJvdGVjdCB0aGUgZ2xvYmFsIGRhdGEgaW4gdGhlIGdldHRleHQgaW1wbGVtZW50YXRpb24uICAqLwotK19fbGliY19yd2xvY2tfZGVmaW5lIChleHRlcm4sIF9ubF9zdGF0ZV9sb2NrIGF0dHJpYnV0ZV9oaWRkZW4pCi0rCi0gCi0gLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotICAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLUBAIC02MSwyMyArNzcsNDEgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIEJJTkRURVhURE9NQUlOIF9fYmluZHRleHRkb21haW4KLS0jIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQotKyMgZGVmaW5lIEJJTkRfVEVYVERPTUFJTl9DT0RFU0VUIF9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKLSsjIGlmbmRlZiBzdHJkdXAKLSsjICBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGVuZGlmCi0gI2Vsc2UKLS0jIGRlZmluZSBCSU5EVEVYVERPTUFJTiBiaW5kdGV4dGRvbWFpbl9fCi0rIyBkZWZpbmUgQklORFRFWFRET01BSU4gbGliaW50bF9iaW5kdGV4dGRvbWFpbgotKyMgZGVmaW5lIEJJTkRfVEVYVERPTUFJTl9DT0RFU0VUIGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKLSAjZW5kaWYKLSAKLS0vKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLS0gICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0tY2hhciAqCi0tQklORFRFWFRET01BSU4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLSsvKiBTcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBuYW1lICpESVJOQU1FUCBhbmQgdGhlIG91dHB1dCBjb2Rlc2V0ICpDT0RFU0VUUAotKyAgIHRvIGJlIHVzZWQgZm9yIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZy4KLSsgICBJZiAqRElSTkFNRVAgb3IgKkNPREVTRVRQIGlzIE5VTEwsIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBpcyBub3QKLSsgICBtb2RpZmllZCwgb25seSB0aGUgY3VycmVudCB2YWx1ZSBpcyByZXR1cm5lZC4KLSsgICBJZiBESVJOQU1FUCBvciBDT0RFU0VUUCBpcyBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgaXMgbmVpdGhlcgotKyAgIG1vZGlmaWVkIG5vciByZXR1cm5lZC4gICovCi0rc3RhdGljIHZvaWQKLStzZXRfYmluZGluZ192YWx1ZXMgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkgICAgY29uc3QgY2hhciAqKmRpcm5hbWVwLCBjb25zdCBjaGFyICoqY29kZXNldHApCi0gewotICAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7Ci0rICBpbnQgbW9kaWZpZWQ7Ci0gCi0gICAvKiBTb21lIHNhbml0eSBjaGVja3MuICAqLwotICAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCB8fCBkb21haW5uYW1lWzBdID09ICdcMCcpCi0tICAgIHJldHVybiBOVUxMOwotKyAgICB7Ci0rICAgICAgaWYgKGRpcm5hbWVwKQotKwkqZGlybmFtZXAgPSBOVUxMOwotKyAgICAgIGlmIChjb2Rlc2V0cCkKLSsJKmNvZGVzZXRwID0gTlVMTDsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIF9fbGliY19yd2xvY2tfd3Jsb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rCi0rICBtb2RpZmllZCA9IDA7Ci0gCi0gICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQotICAgICB7Ci1AQCAtOTMsODEgKzEyNywxNzMgQEAKLSAJfQotICAgICB9Ci0gCi0tICBpZiAoZGlybmFtZSA9PSBOVUxMKQotLSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCi0tICAgIHJldHVybiBiaW5kaW5nID09IE5VTEwgPyAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lIDogYmluZGluZy0+ZGlybmFtZTsKLS0KLSAgIGlmIChiaW5kaW5nICE9IE5VTEwpCi0gICAgIHsKLS0gICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCi0tCSBvbmUgYXJlIGVxdWFsIHdlIHNpbXBseSBkbyBub3RoaW5nLiAgT3RoZXJ3aXNlIHJlcGxhY2UgdGhlCi0tCSBvbGQgYmluZGluZy4gICovCi0tICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgYmluZGluZy0+ZGlybmFtZSkgIT0gMCkKLSsgICAgICBpZiAoZGlybmFtZXApCi0gCXsKLS0JICBjaGFyICpuZXdfZGlybmFtZTsKLSsJICBjb25zdCBjaGFyICpkaXJuYW1lID0gKmRpcm5hbWVwOwotIAotLQkgIGlmIChzdHJjbXAgKGRpcm5hbWUsIF9ubF9kZWZhdWx0X2Rpcm5hbWUpID09IDApCi0tCSAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7Ci0rCSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKLSsJICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KLSsJICAgICpkaXJuYW1lcCA9IGJpbmRpbmctPmRpcm5hbWU7Ci0gCSAgZWxzZQotIAkgICAgewotKwkgICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCi0rCQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQotKwkJIG9sZCBiaW5kaW5nLiAgKi8KLSsJICAgICAgY2hhciAqcmVzdWx0ID0gYmluZGluZy0+ZGlybmFtZTsKLSsJICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgcmVzdWx0KSAhPSAwKQotKwkJewotKwkJICBpZiAoc3RyY21wIChkaXJuYW1lLCBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpID09IDApCi0rCQkgICAgcmVzdWx0ID0gKGNoYXIgKikgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKwkJICBlbHNlCi0rCQkgICAgewotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLS0JICAgICAgbmV3X2Rpcm5hbWUgPSBzdHJkdXAgKGRpcm5hbWUpOwotLQkgICAgICBpZiAobmV3X2Rpcm5hbWUgPT0gTlVMTCkKLS0JCXJldHVybiBOVUxMOwotKwkJICAgICAgcmVzdWx0ID0gc3RyZHVwIChkaXJuYW1lKTsKLSAjZWxzZQotLQkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7Ci0tCSAgICAgIG5ld19kaXJuYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLQkgICAgICBpZiAobmV3X2Rpcm5hbWUgPT0gTlVMTCkKLS0JCXJldHVybiBOVUxMOwotLQotLQkgICAgICBtZW1jcHkgKG5ld19kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOwotKwkJICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOwotKwkJICAgICAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKwkJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCQltZW1jcHkgKHJlc3VsdCwgZGlybmFtZSwgbGVuKTsKLSAjZW5kaWYKLSsJCSAgICB9Ci0rCi0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGJpbmRpbmctPmRpcm5hbWUgIT0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKQotKwkJCWZyZWUgKGJpbmRpbmctPmRpcm5hbWUpOwotKwotKwkJICAgICAgYmluZGluZy0+ZGlybmFtZSA9IHJlc3VsdDsKLSsJCSAgICAgIG1vZGlmaWVkID0gMTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgICpkaXJuYW1lcCA9IHJlc3VsdDsKLSAJICAgIH0KLSsJfQotIAotLQkgIGlmIChiaW5kaW5nLT5kaXJuYW1lICE9IF9ubF9kZWZhdWx0X2Rpcm5hbWUpCi0tCSAgICBmcmVlIChiaW5kaW5nLT5kaXJuYW1lKTsKLSsgICAgICBpZiAoY29kZXNldHApCi0rCXsKLSsJICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gKmNvZGVzZXRwOwotIAotLQkgIGJpbmRpbmctPmRpcm5hbWUgPSBuZXdfZGlybmFtZTsKLSsJICBpZiAoY29kZXNldCA9PSBOVUxMKQotKwkgICAgLyogVGhlIGN1cnJlbnQgYmluZGluZyBoYXMgYmUgdG8gcmV0dXJuZWQuICAqLwotKwkgICAgKmNvZGVzZXRwID0gYmluZGluZy0+Y29kZXNldDsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKLSsJCSBvbmUgYXJlIGVxdWFsIHdlIHNpbXBseSBkbyBub3RoaW5nLiAgT3RoZXJ3aXNlIHJlcGxhY2UgdGhlCi0rCQkgb2xkIGJpbmRpbmcuICAqLwotKwkgICAgICBjaGFyICpyZXN1bHQgPSBiaW5kaW5nLT5jb2Rlc2V0OwotKwkgICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgc3RyY21wIChjb2Rlc2V0LCByZXN1bHQpICE9IDApCi0rCQl7Ci0rI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotKwkJICByZXN1bHQgPSBzdHJkdXAgKGNvZGVzZXQpOwotKyNlbHNlCi0rCQkgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGNvZGVzZXQpICsgMTsKLSsJCSAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQotKwkJICAgIG1lbWNweSAocmVzdWx0LCBjb2Rlc2V0LCBsZW4pOwotKyNlbmRpZgotKwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChiaW5kaW5nLT5jb2Rlc2V0ICE9IE5VTEwpCi0rCQkJZnJlZSAoYmluZGluZy0+Y29kZXNldCk7Ci0rCi0rCQkgICAgICBiaW5kaW5nLT5jb2Rlc2V0ID0gcmVzdWx0OwotKwkJICAgICAgYmluZGluZy0+Y29kZXNldF9jbnRyKys7Ci0rCQkgICAgICBtb2RpZmllZCA9IDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICAqY29kZXNldHAgPSByZXN1bHQ7Ci0rCSAgICB9Ci0gCX0KLSAgICAgfQotKyAgZWxzZSBpZiAoKGRpcm5hbWVwID09IE5VTEwgfHwgKmRpcm5hbWVwID09IE5VTEwpCi0rCSAgICYmIChjb2Rlc2V0cCA9PSBOVUxMIHx8ICpjb2Rlc2V0cCA9PSBOVUxMKSkKLSsgICAgewotKyAgICAgIC8qIFNpbXBseSByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzLiAgKi8KLSsgICAgICBpZiAoZGlybmFtZXApCi0rCSpkaXJuYW1lcCA9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsgICAgICBpZiAoY29kZXNldHApCi0rCSpjb2Rlc2V0cCA9IE5VTEw7Ci0rICAgIH0KLSAgIGVsc2UKLSAgICAgewotICAgICAgIC8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgbmV3IGJpbmRpbmcuICAqLwotLSAgICAgIHNpemVfdCBsZW47Ci0rICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOwotICAgICAgIHN0cnVjdCBiaW5kaW5nICpuZXdfYmluZGluZyA9Ci0tCShzdHJ1Y3QgYmluZGluZyAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld19iaW5kaW5nKSk7Ci0rCShzdHJ1Y3QgYmluZGluZyAqKSBtYWxsb2MgKG9mZnNldG9mIChzdHJ1Y3QgYmluZGluZywgZG9tYWlubmFtZSkgKyBsZW4pOwotIAotLSAgICAgIGlmIChuZXdfYmluZGluZyA9PSBOVUxMKQotLQlyZXR1cm4gTlVMTDsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAobmV3X2JpbmRpbmcgPT0gTlVMTCwgMCkpCi0rCWdvdG8gZmFpbGVkOwotIAotKyAgICAgIG1lbWNweSAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGxlbik7Ci0rCi0rICAgICAgaWYgKGRpcm5hbWVwKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqZGlybmFtZSA9ICpkaXJuYW1lcDsKLSsKLSsJICBpZiAoZGlybmFtZSA9PSBOVUxMKQotKwkgICAgLyogVGhlIGRlZmF1bHQgdmFsdWUuICAqLwotKwkgICAgZGlybmFtZSA9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkgPT0gMCkKLSsJCWRpcm5hbWUgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgY2hhciAqcmVzdWx0OwotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLS0gICAgICBuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9IHN0cmR1cCAoZG9tYWlubmFtZSk7Ci0tICAgICAgaWYgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lID09IE5VTEwpCi0tCXJldHVybiBOVUxMOwotKwkJICByZXN1bHQgPSBzdHJkdXAgKGRpcm5hbWUpOwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQotKwkJICAgIGdvdG8gZmFpbGVkX2Rpcm5hbWU7Ci0gI2Vsc2UKLS0gICAgICBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKLS0gICAgICBuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKLS0JcmV0dXJuIE5VTEw7Ci0tICAgICAgbWVtY3B5IChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSwgZG9tYWlubmFtZSwgbGVuKTsKLSsJCSAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOwotKwkJICByZXN1bHQgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCi0rCQkgICAgZ290byBmYWlsZWRfZGlybmFtZTsKLSsJCSAgbWVtY3B5IChyZXN1bHQsIGRpcm5hbWUsIGxlbik7Ci0gI2VuZGlmCi0tCi0tICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgX25sX2RlZmF1bHRfZGlybmFtZSkgPT0gMCkKLS0JbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOwotKwkJICBkaXJuYW1lID0gcmVzdWx0OwotKwkJfQotKwkgICAgfQotKwkgICpkaXJuYW1lcCA9IGRpcm5hbWU7Ci0rCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBkaXJuYW1lOwotKwl9Ci0gICAgICAgZWxzZQotKwkvKiBUaGUgZGVmYXVsdCB2YWx1ZS4gICovCi0rCW5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKwotKyAgICAgIG5ld19iaW5kaW5nLT5jb2Rlc2V0X2NudHIgPSAwOwotKwotKyAgICAgIGlmIChjb2Rlc2V0cCkKLSAJewotKwkgIGNvbnN0IGNoYXIgKmNvZGVzZXQgPSAqY29kZXNldHA7Ci0rCi0rCSAgaWYgKGNvZGVzZXQgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgY2hhciAqcmVzdWx0OwotKwotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLS0JICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IHN0cmR1cCAoZGlybmFtZSk7Ci0tCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCi0tCSAgICByZXR1cm4gTlVMTDsKLSsJICAgICAgcmVzdWx0ID0gc3RyZHVwIChjb2Rlc2V0KTsKLSsJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCWdvdG8gZmFpbGVkX2NvZGVzZXQ7Ci0gI2Vsc2UKLS0JICBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLS0JICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgPT0gTlVMTCkKLS0JICAgIHJldHVybiBOVUxMOwotLQkgIG1lbWNweSAobmV3X2JpbmRpbmctPmRpcm5hbWUsIGRpcm5hbWUsIGxlbik7Ci0rCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGNvZGVzZXQpICsgMTsKLSsJICAgICAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKwkgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQotKwkJZ290byBmYWlsZWRfY29kZXNldDsKLSsJICAgICAgbWVtY3B5IChyZXN1bHQsIGNvZGVzZXQsIGxlbik7Ci0gI2VuZGlmCi0rCSAgICAgIGNvZGVzZXQgPSByZXN1bHQ7Ci0rCSAgICAgIG5ld19iaW5kaW5nLT5jb2Rlc2V0X2NudHIrKzsKLSsJICAgIH0KLSsJICAqY29kZXNldHAgPSBjb2Rlc2V0OwotKwkgIG5ld19iaW5kaW5nLT5jb2Rlc2V0ID0gKGNoYXIgKikgY29kZXNldDsKLSAJfQotKyAgICAgIGVsc2UKLSsJbmV3X2JpbmRpbmctPmNvZGVzZXQgPSBOVUxMOwotIAotICAgICAgIC8qIE5vdyBlbnF1ZXVlIGl0LiAgKi8KLSAgICAgICBpZiAoX25sX2RvbWFpbl9iaW5kaW5ncyA9PSBOVUxMCi1AQCAtMTg3LDEzICszMTMsNTEgQEAKLSAJICBiaW5kaW5nLT5uZXh0ID0gbmV3X2JpbmRpbmc7Ci0gCX0KLSAKLS0gICAgICBiaW5kaW5nID0gbmV3X2JpbmRpbmc7Ci0rICAgICAgbW9kaWZpZWQgPSAxOwotKwotKyAgICAgIC8qIEhlcmUgd2UgZGVhbCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLiAgKi8KLSsgICAgICBpZiAoMCkKLSsJewotKwlmYWlsZWRfY29kZXNldDoKLSsJICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgIT0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKQotKwkgICAgZnJlZSAobmV3X2JpbmRpbmctPmRpcm5hbWUpOwotKwlmYWlsZWRfZGlybmFtZToKLSsJICBmcmVlIChuZXdfYmluZGluZyk7Ci0rCWZhaWxlZDoKLSsJICBpZiAoZGlybmFtZXApCi0rCSAgICAqZGlybmFtZXAgPSBOVUxMOwotKwkgIGlmIChjb2Rlc2V0cCkKLSsJICAgICpjb2Rlc2V0cCA9IE5VTEw7Ci0rCX0KLSAgICAgfQotIAotLSAgcmV0dXJuIGJpbmRpbmctPmRpcm5hbWU7Ci0rICAvKiBJZiB3ZSBtb2RpZmllZCBhbnkgYmluZGluZywgd2UgZmx1c2ggdGhlIGNhY2hlcy4gICovCi0rICBpZiAobW9kaWZpZWQpCi0rICAgICsrX25sX21zZ19jYXRfY250cjsKLSsKLSsgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rfQotKwotKy8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAotKyAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KLStjaGFyICoKLStCSU5EVEVYVERPTUFJTiAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqZGlybmFtZSkKLSt7Ci0rICBzZXRfYmluZGluZ192YWx1ZXMgKGRvbWFpbm5hbWUsICZkaXJuYW1lLCBOVUxMKTsKLSsgIHJldHVybiAoY2hhciAqKSBkaXJuYW1lOwotK30KLSsKLSsvKiBTcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gd2hpY2ggdGhlIG1lc3NhZ2VzIGZyb20gdGhlCi0rICAgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSByZXR1cm5lZC4gICovCi0rY2hhciAqCi0rQklORF9URVhURE9NQUlOX0NPREVTRVQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmNvZGVzZXQpCi0rewotKyAgc2V0X2JpbmRpbmdfdmFsdWVzIChkb21haW5uYW1lLCBOVUxMLCAmY29kZXNldCk7Ci0rICByZXR1cm4gKGNoYXIgKikgY29kZXNldDsKLSB9Ci0gCi0gI2lmZGVmIF9MSUJDCi0tLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rLyogQWxpYXNlcyBmb3IgZnVuY3Rpb24gbmFtZXMgaW4gR05VIEMgTGlicmFyeS4gICovCi0gd2Vha19hbGlhcyAoX19iaW5kdGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOwotK3dlYWtfYWxpYXMgKF9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQsIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KTsKLSAjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9jYXQtY29tcGF0LmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwyNjIgKzAsMCBAQAotLS8qIENvbXBhdGliaWxpdHkgY29kZSBmb3IgZ2V0dGV4dC11c2luZy1jYXRnZXRzIGludGVyZmFjZS4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0jaWZkZWYgSEFWRV9DT05GSUdfSAotLSMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0tI2lmZGVmIFNURENfSEVBREVSUwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jZWxzZQotLWNoYXIgKmdldGVudiAoKTsKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmZGVmIEhBVkVfTkxfVFlQRVNfSAotLSMgaW5jbHVkZSA8bmxfdHlwZXMuaD4KLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotLQotLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLS0KLS0vKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiBgc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgotLSAgIGBgRGlyZWN0cyBgc2V0bG9jYWxlKCknIHRvIHF1ZXJ5IGBjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAotLSAgICAgc2V0dGluZyBvZiBgbG9jYWwnLicnCi0tICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBBbmQgZXZlbiB3b3JzZTogUE9TSVgKLS0gICBkZWZpbmVzIHRoaXMgbm90IGF0IGFsbC4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQKLS0gICBzeXN0ZW0gKGUuZy4gdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLwotLSNpZmRlZiBfTElCQwotLSMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKLS0jZW5kaWYKLS0KLS0vKiBUaGUgY2F0YWxvZyBkZXNjcmlwdG9yLiAgKi8KLS1zdGF0aWMgbmxfY2F0ZCBjYXRhbG9nID0gKG5sX2NhdGQpIC0xOwotLQotLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgY2F0YWxvZy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdF9jYXRhbG9nX25hbWVbXSA9ICJtZXNzYWdlcyI7Ci0tCi0tLyogTmFtZSBvZiBjdXJyZW50bHkgdXNlZCBjYXRhbG9nLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciAqY2F0YWxvZ19uYW1lID0gZGVmYXVsdF9jYXRhbG9nX25hbWU7Ci0tCi0tLyogR2V0IElEIGZvciBnaXZlbiBzdHJpbmcuICBJZiBub3QgZm91bmQgcmV0dXJuIC0xLiAgKi8KLS1zdGF0aWMgaW50IG1zZ190b19jYXRfaWQgUEFSQU1TICgoY29uc3QgY2hhciAqbXNnKSk7Ci0tCi0tLyogU3Vic3RpdHV0aW9uIGZvciBzeXN0ZW1zIGxhY2tpbmcgdGhpcyBmdW5jdGlvbiBpbiB0aGVpciBDIGxpYnJhcnkuICAqLwotLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0tc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKLS0jZW5kaWYKLS0KLS0KLS0vKiBTZXQgY3VycmVudGx5IHVzZWQgZG9tYWluL2NhdGFsb2cuICAqLwotLWNoYXIgKgotLXRleHRkb21haW4gKGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLXsKLS0gIG5sX2NhdGQgbmV3X2NhdGFsb2c7Ci0tICBjaGFyICpuZXdfbmFtZTsKLS0gIHNpemVfdCBuZXdfbmFtZV9sZW47Ci0tICBjaGFyICpsYW5nOwotLQotLSNpZiBkZWZpbmVkIEhBVkVfU0VUTE9DQUxFICYmIGRlZmluZWQgSEFWRV9MQ19NRVNTQUdFUyBcCi0tICAgICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAotLSAgbGFuZyA9IHNldGxvY2FsZSAoTENfTUVTU0FHRVMsIE5VTEwpOwotLSNlbHNlCi0tICBsYW5nID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0tICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKLS0gICAgewotLSAgICAgIGxhbmcgPSBnZXRlbnYgKCJMQ19NRVNTQUdFUyIpOwotLSAgICAgIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQotLQlsYW5nID0gZ2V0ZW52ICgiTEFORyIpOwotLSAgICB9Ci0tI2VuZGlmCi0tICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKLS0gICAgbGFuZyA9ICJDIjsKLS0KLS0gIC8qIFNlZSB3aGV0aGVyIG5hbWUgb2YgY3VycmVudGx5IHVzZWQgZG9tYWluIGlzIGFza2VkLiAgKi8KLS0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0tICAgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7Ci0tCi0tICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnKQotLSAgICBkb21haW5uYW1lID0gZGVmYXVsdF9jYXRhbG9nX25hbWU7Ci0tCi0tICAvKiBDb21wdXRlIGxlbmd0aCBvZiBhZGRlZCBwYXRoIGVsZW1lbnQuICAqLwotLSAgbmV3X25hbWVfbGVuID0gc2l6ZW9mIChMT0NBTEVESVIpIC0gMSArIDEgKyBzdHJsZW4gKGxhbmcpCi0tCQkgKyBzaXplb2YgKCIvTENfTUVTU0FHRVMvIikgLSAxICsgc2l6ZW9mIChQQUNLQUdFKSAtIDEKLS0JCSArIHNpemVvZiAoIi5jYXQiKTsKLS0KLS0gIG5ld19uYW1lID0gKGNoYXIgKikgbWFsbG9jIChuZXdfbmFtZV9sZW4pOwotLSAgaWYgKG5ld19uYW1lID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgc3RyY3B5IChuZXdfbmFtZSwgUEFDS0FHRSk7Ci0tICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKLS0KLS0gIGlmIChuZXdfY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCi0tICAgIHsKLS0gICAgICAvKiBOTFNQQVRIIHNlYXJjaCBkaWRuJ3Qgd29yaywgdHJ5IGFic29sdXRlIHBhdGggKi8KLS0gICAgICBzcHJpbnRmIChuZXdfbmFtZSwgIiVzLyVzL0xDX01FU1NBR0VTLyVzLmNhdCIsIExPQ0FMRURJUiwgbGFuZywKLS0JICAgICAgIFBBQ0tBR0UpOwotLSAgICAgIG5ld19jYXRhbG9nID0gY2F0b3BlbiAobmV3X25hbWUsIDApOwotLQotLSAgICAgIGlmIChuZXdfY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCi0tCXsKLS0JICBmcmVlIChuZXdfbmFtZSk7Ci0tCSAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKLS0JfQotLSAgICB9Ci0tCi0tICAvKiBDbG9zZSBvbGQgY2F0YWxvZy4gICovCi0tICBpZiAoY2F0YWxvZyAhPSAobmxfY2F0ZCkgLTEpCi0tICAgIGNhdGNsb3NlIChjYXRhbG9nKTsKLS0gIGlmIChjYXRhbG9nX25hbWUgIT0gZGVmYXVsdF9jYXRhbG9nX25hbWUpCi0tICAgIGZyZWUgKChjaGFyICopIGNhdGFsb2dfbmFtZSk7Ci0tCi0tICBjYXRhbG9nID0gbmV3X2NhdGFsb2c7Ci0tICBjYXRhbG9nX25hbWUgPSBuZXdfbmFtZTsKLS0KLS0gIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7Ci0tfQotLQotLWNoYXIgKgotLWJpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7Ci0tewotLSNpZiBIQVZFX1NFVEVOViB8fCBIQVZFX1BVVEVOVgotLSAgY2hhciAqb2xkX3ZhbCwgKm5ld192YWwsICpjcDsKLS0gIHNpemVfdCBuZXdfdmFsX2xlbjsKLS0KLS0gIC8qIFRoaXMgZG9lcyBub3QgbWFrZSBtdWNoIHNlbnNlIGhlcmUgYnV0IHRvIGJlIGNvbXBhdGlibGUgZG8gaXQuICAqLwotLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tCi0tICAvKiBDb21wdXRlIGxlbmd0aCBvZiBhZGRlZCBwYXRoIGVsZW1lbnQuICBJZiB3ZSB1c2Ugc2V0ZW52IHdlIGRvbid0IG5lZWQKLS0gICAgIHRoZSBmaXJzdCBieXRzIGZvciBOTFNQQVRIPSwgYnV0IHdoeSBjb21wbGljYXRlIHRoZSBjb2RlIGZvciB0aGlzCi0tICAgICBwZWFudXRzLiAgKi8KLS0gIG5ld192YWxfbGVuID0gc2l6ZW9mICgiTkxTUEFUSD0iKSAtIDEgKyBzdHJsZW4gKGRpcm5hbWUpCi0tCQkrIHNpemVvZiAoIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKLS0KLS0gIG9sZF92YWwgPSBnZXRlbnYgKCJOTFNQQVRIIik7Ci0tICBpZiAob2xkX3ZhbCA9PSBOVUxMIHx8IG9sZF92YWxbMF0gPT0gJ1wwJykKLS0gICAgewotLSAgICAgIG9sZF92YWwgPSBOVUxMOwotLSAgICAgIG5ld192YWxfbGVuICs9IDEgKyBzaXplb2YgKExPQ0FMRURJUikgLSAxCi0tCSAgICAgICAgICAgICArIHNpemVvZiAoIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICBuZXdfdmFsX2xlbiArPSBzdHJsZW4gKG9sZF92YWwpOwotLQotLSAgbmV3X3ZhbCA9IChjaGFyICopIG1hbGxvYyAobmV3X3ZhbF9sZW4pOwotLSAgaWYgKG5ld192YWwgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tCi0tIyBpZiBIQVZFX1NFVEVOVgotLSAgY3AgPSBuZXdfdmFsOwotLSMgZWxzZQotLSAgY3AgPSBzdHBjcHkgKG5ld192YWwsICJOTFNQQVRIPSIpOwotLSMgZW5kaWYKLS0KLS0gIGNwID0gc3RwY3B5IChjcCwgZGlybmFtZSk7Ci0tICBjcCA9IHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0OiIpOwotLQotLSAgaWYgKG9sZF92YWwgPT0gTlVMTCkKLS0gICAgewotLSMgaWYgX19TVERDX18KLS0gICAgICBzdHBjcHkgKGNwLCBMT0NBTEVESVIgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKLS0jIGVsc2UKLS0KLS0gICAgICBjcCA9IHN0cGNweSAoY3AsIExPQ0FMRURJUik7Ci0tICAgICAgc3RwY3B5IChjcCwgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQiKTsKLS0jIGVuZGlmCi0tICAgIH0KLS0gIGVsc2UKLS0gICAgc3RwY3B5IChjcCwgb2xkX3ZhbCk7Ci0tCi0tIyBpZiBIQVZFX1NFVEVOVgotLSAgc2V0ZW52ICgiTkxTUEFUSCIsIG5ld192YWwsIDEpOwotLSAgZnJlZSAobmV3X3ZhbCk7Ci0tIyBlbHNlCi0tICBwdXRlbnYgKG5ld192YWwpOwotLSAgLyogRG8gKm5vdCogZnJlZSB0aGUgZW52aXJvbm1lbnQgZW50cnkgd2UganVzdCBlbnRlcmVkLiAgSXQgaXMgdXNlZAotLSAgICAgZnJvbSBub3cgb24uICAgKi8KLS0jIGVuZGlmCi0tCi0tI2VuZGlmCi0tCi0tICByZXR1cm4gKGNoYXIgKikgZG9tYWlubmFtZTsKLS19Ci0tCi0tI3VuZGVmIGdldHRleHQKLS1jaGFyICoKLS1nZXR0ZXh0IChtc2cpCi0tICAgICBjb25zdCBjaGFyICptc2c7Ci0tewotLSAgaW50IG1zZ2lkOwotLQotLSAgaWYgKG1zZyA9PSBOVUxMIHx8IGNhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQotLSAgICByZXR1cm4gKGNoYXIgKikgbXNnOwotLQotLSAgLyogR2V0IHRoZSBtZXNzYWdlIGZyb20gdGhlIGNhdGFsb2cuICBXZSBhbHdheXMgdXNlIHNldCBudW1iZXIgMS4KLS0gICAgIFRoZSBtZXNzYWdlIElEIGlzIGNvbXB1dGVkIGJ5IHRoZSBmdW5jdGlvbiBgbXNnX3RvX2NhdF9pZCcKLS0gICAgIHdoaWNoIHdvcmtzIG9uIHRoZSB0YWJsZSBnZW5lcmF0ZWQgYnkgYHBvLXRvLXRibCcuICAqLwotLSAgbXNnaWQgPSBtc2dfdG9fY2F0X2lkIChtc2cpOwotLSAgaWYgKG1zZ2lkID09IC0xKQotLSAgICByZXR1cm4gKGNoYXIgKikgbXNnOwotLQotLSAgcmV0dXJuIGNhdGdldHMgKGNhdGFsb2csIDEsIG1zZ2lkLCAoY2hhciAqKSBtc2cpOwotLX0KLS0KLS0vKiBMb29rIHRocm91Z2ggdGhlIHRhYmxlIGBfbXNnX3RibCcgd2hpY2ggaGFzIGBfbXNnX3RibF9sZW5ndGgnIGVudHJpZXMKLS0gICBmb3IgdGhlIG9uZSBlcXVhbCB0byBtc2cuICBJZiBpdCBpcyBmb3VuZCByZXR1cm4gdGhlIElELiAgSW4gY2FzZSB3aGVuCi0tICAgdGhlIHN0cmluZyBpcyBub3QgZm91bmQgcmV0dXJuIC0xLiAgKi8KLS1zdGF0aWMgaW50Ci0tbXNnX3RvX2NhdF9pZCAobXNnKQotLSAgICAgY29uc3QgY2hhciAqbXNnOwotLXsKLS0gIGludCBjbnQ7Ci0tCi0tICBmb3IgKGNudCA9IDA7IGNudCA8IF9tc2dfdGJsX2xlbmd0aDsgKytjbnQpCi0tICAgIGlmIChzdHJjbXAgKG1zZywgX21zZ190YmxbY250XS5fbXNnKSA9PSAwKQotLSAgICAgIHJldHVybiBfbXNnX3RibFtjbnRdLl9tc2dfbnVtYmVyOwotLQotLSAgcmV0dXJuIC0xOwotLX0KLS0KLS0KLS0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLS0KLS0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQotLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCi0tICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKLS0gICB0byBiZSBkZWZpbmVkLiAgKi8KLS0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICoKLS1zdHBjcHkgKGRlc3QsIHNyYykKLS0gICAgIGNoYXIgKmRlc3Q7Ci0tICAgICBjb25zdCBjaGFyICpzcmM7Ci0tewotLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQotLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7Ci0tICByZXR1cm4gZGVzdCAtIDE7Ci0tfQotLSNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL0NoYW5nZUxvZwkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNC4zNDk3NDkwMDAgLTA0MDAKLUBAIC0xLDEwMjIgKzEsNCBAQAotLTE5OTctMDktMDYgMDI6MTAgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGludGxoLmluc3QuaW46IFJlZm9ybWF0IGNvcHlyaWdodC4KLS0KLS0xOTk3LTA4LTE5IDE1OjIyICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogUmVtb3ZlIHdyb25nIGNvbW1lbnQuCi0tCi0tMTk5Ny0wOC0xNiAwMDoxMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZGF0YSk6IERvbid0IGNoYW5nZSBkaXJlY3RvcnkgdG8gaW5zdGFsbC4KLS0KLS0xOTk3LTA4LTAxIDE0OjMwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEZpeCBjb3B5cmlnaHQuCi0tCi0tCSogbG9jYWxlYWxpYXMuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgotLQotLQkqIGxvYWRtc2djYXQuYzogVXBkYXRlIGNvcHlyaWdodC4gIEZpeCB0eXBvcy4KLS0KLS0JKiBsMTBuZmxpc3QuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgotLQkoX25sX21ha2VfbDEwbmZsaXN0KTogSGFuZGxlIHNwb25zb3IgYW5kIHJldmlzaW9uIGNvcnJlY3RseS4KLS0KLS0JKiBnZXR0ZXh0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuCi0tCSogZ2V0dGV4dC5oOiBMaWtld2lzZS4KLS0JKiBoYXNoLXN0cmluZy5oOiBMaWtld2lzZS4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IFJlbW9hdmUgZGVhZCBjb2RlLiAgRGVmaW5lIHN0cmNociBvbmx5IGlmCi0tCSFIQVZFX1NUUkNIUi4KLS0KLS0JKiBleHBsb2RlbmFtZS5jOiBJbmNsdWRlIDxzeXMvdHlwZXMuaD4uCi0tCi0tCSogZXhwbG9kZW5hbWUuYzogUmVmb3JtYXQgY29weXJpZ2h0IHRleHQuCi0tCShfbmxfZXhwbG9kZV9uYW1lKTogRml4IHR5cG8uCi0tCi0tCSogZGNnZXR0ZXh0LmM6IERlZmluZSBhbmQgdXNlIF9fc2V0X2Vycm5vLgotLQkoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCB1c2Ugc2V0bG9jYWxlIGlmIEhBVkVfTENfTUVTU0FHRVMgaXMKLS0Jbm90IGRlZmluZWQuCi0tCi0tCSogYmluZHRleHRkb20uYzogUHJldHR5IHByaW50aW5nLgotLQotLTE5OTctMDUtMDEgMDI6MjUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGRjZ2V0dGV4dC5jIChndWVzc19jYXRlZ29yeV92YWx1ZSk6IERvbid0IGRlcGVuZCBvbgotLQlIQVZFX0xDX01FU1NBR0VTLiAgV2UgZG9uJ3QgbmVlZCB0aGUgbWFjcm8gaGVyZS4KLS0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCi0tCi0tCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogRG9OJ3QgcmVmZXIgdG8gSEFWRV9TRVRMT0NBTEVfTlVMTAotLQltYWNyby4gIEluc3RlYWQgdXNlIEhBVkVfTE9DQUxFX05VTEwgYW5kIGRlZmluZSBpdCB3aGVuIHVzaW5nCi0tCWdsaWJjLCBhcyBpbiBkY2dldHRleHQuYy4KLS0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCi0tCi0tCSogTWFrZWZpbGUuaW4gKENQUEZMQUdTKTogTmV3IHZhcmlhYmxlLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzCi0tCVBpbmFyZC4KLS0KLS1Nb24gTWFyIDEwIDA2OjUxOjE3IDE5OTcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluOiBJbXBsZW1lbnQgaGFuZGxpbmcgb2YgbGlidG9vbC4KLS0KLS0JKiBnZXR0ZXh0UC5oOiBDaGFuZ2UgZGF0YSBzdHJ1Y3R1cmVzIGZvciB1c2Ugb2YgZ2VuZXJpYyBsb3dsZXZlbAotLQlpMThuIGZpbGUgaGFuZGxpbmcuCi0tCi0tV2VkIERlYyAgNCAyMDoyMToxOCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IFB1dCBwYXJlbnRoZXNlcyBhcm91bmQgYXJndW1lbnRzIG9mIG1lbWNweSBtYWNybwotLQlkZWZpbml0aW9uLgotLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgotLQkqIGwxMG5mbGlzdC5jOiBMaWtld2lzZS4KLS0JKiBmaW5kZG9tYWluLmM6IExpa2V3aXNlLgotLQkqIGJpbmR0ZXh0ZG9tLmM6IExpa2V3aXNlLgotLQlSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCi0tCi0tTW9uIE5vdiAyNSAyMjo1Nzo1MSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IE1vdmUgZGVmaW5pdGlvbiBvZiBgbWVtY3B5YCBtYWNybyB0byByaWdodAotLQlwb3NpdGlvbi4KLS0KLS1GcmkgTm92IDIyIDA0OjAxOjU4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGZpbmRkb21haW4uYyBbIUhBVkVfU1RSSU5HX0ggJiYgIV9MSUJDXTogRGVmaW5lIG1lbWNweSB1c2luZwotLSAJYmNvcHkgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4gIFJlcG9ydGVkIGJ5IFRob21hcyBFc2tlbi4KLS0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KLS0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCi0tCSogbG9jYWxlYWxpYXMuYzogTGlrZXdpc2UuCi0tCSogdGV4dGRvbWFpbi5jOiBMaWtld2lzZS4KLS0KLS1UdWUgT2N0IDI5IDExOjEwOjI3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChsaWJkaXIpOiBDaGFuZ2UgdG8gdXNlIGV4ZWNfcHJlZml4IGluc3RlYWQgb2YKLS0gCXByZWZpeC4gIFJlcG9ydGVkIGJ5IEtudXQtSOV2YXJkQWtzbmVzIDxldG9rbmFAZXRvLmVyaWNzc29uLnNlPi4KLS0KLS1TYXQgQXVnIDMxIDAzOjA3OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jIChfbmxfbm9ybWFsaXplX2NvZGVzZXQpOiBXZSBjb252ZXJ0IHRvIGxvd2VyIGNhc2UsCi0tCXNvIGRvbid0IHByZXBlbmQgdXBwZXJjYXNlIGBJU08nIGZvciBvbmx5IG51bWVyaWMgYXJnLgotLQotLUZyaSBKdWwgMTkgMDA6MTU6NDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmM6IE1vdmUgaW5jbHVzaW9uIG9mIGFyZ3ouaCwgY3R5cGUuaCwgc3RkbGliLmggYWZ0ZXIKLS0JZGVmaW5pdGlvbiBvZiBfR05VX1NPVVJDRS4gIFBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLQkqIE1ha2VmaWxlLmluICh1bmluc3RhbGwpOiBGaXggYW5vdGhlciBidWcgd2l0aCBgZm9yJyBsb29wIGFuZAotLQllbXB0eSBhcmd1bWVudHMuICBQYXRjaCBieSBKaW0gTWV5ZXJpbmcuICBDb3JyZWN0IG5hbWUgb3MKLS0JdW5pbnN0YWxsZWQgZmlsZXM6IG5vIGludGwtIHByZWZpeCBhbnltb3JlLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBBZ2FpbiB3b3JrIGFyb3VuZCBzaGVsbHMgd2hpY2gKLS0JY2Fubm90IGhhbmRsZSBtcHR5IGZvciBsaXN0LiAgUmVwb3J0ZWQgYnkgSmltIE1leWVyaW5nLgotLQotLVNhdCBKdWwgMTMgMTg6MTE6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBTcGxpdCBnb2FsLiAgTm93IGRlcGVuZCBvbiBpbnN0YWxsLWV4ZWMKLS0gICAgICAgIGFuZCBpbnN0YWxsLWRhdGEuCi0tCShpbnN0YWxsLWV4ZWMsIGluc3RhbGwtZGF0YSk6IE5ldyBnb2Fscy4gIENyZWF0ZWQgZnJvbSBmb3JtZXIKLS0JaW5zdGFsbCBnb2FsLgotLQlSZXBvcnRlZCBieSBLYXJsIEJlcnJ5LgotLQotLVNhdCBKdW4gMjIgMDQ6NTg6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKE1LSU5TVEFMTERJUlMpOiBOZXcgdmFyaWFibGUuICBQYXRoIHRvCi0tICAgICAgICBta2luc3RhbGxkaXJzIHNjcmlwdC4KLS0JKGluc3RhbGwpOiB1c2UgTUtJTlNUQUxMRElSUyB2YXJpYWJsZSBvciBpZiB0aGUgc2NyaXB0IGlzIG5vdCBwcmVzZW50Ci0tCXRyeSB0byBmaW5kIGl0IGluIHRoZSAkdG9wX3NjcmRpcikuCi0tCi0tV2VkIEp1biAxOSAwMjo1Njo1NiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYzogTGludXggbGliYyAqcGFydGx5KiBpbmNsdWRlcyB0aGUgYXJnel8qIGZ1bmN0aW9ucy4KLS0JR3JyLiAgV29yayBhcm91bmQgYnkgcmVuYW1pbmcgdGhlIHN0YXRpYyB2ZXJzaW9uIGFuZCB1c2UgbWFjcm9zCi0tCWZvciByZW5hbWluZy4KLS0KLS1UdWUgSnVuIDE4IDIwOjExOjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jOiBDb3JyZWN0IHByZXNlbmNlIHRlc3QgbWFjcm9zIG9mIF9fYXJnel8qIGZ1bmN0aW9ucy4KLS0KLS0JKiBsMTBuZmxpc3QuYzogSW5jbHVkZSA8YXJnei5oPiBiYXNlZCBvbiB0ZXN0IG9mIGl0IGluc3RlYWQgd2hlbgotLQlfX2FyZ3pfKiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KLS0JUmVwb3J0ZWQgYnkgQW5kcmVhcyBTY2h3YWIuCi0tCi0tVGh1IEp1biAxMyAxNToxNzo0NCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBleHBsb2RlbmFtZS5jLCBsMTBuZmxpc3QuYzogRGVmaW5lIE5VTEwgZm9yIGR1bWIgc3lzdGVtcy4KLS0KLS1UdWUgSnVuIDExIDE3OjA1OjEzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGludGxoLmluc3QuaW4sIGxpYmdldHRleHQuaCAoZGNnZXR0ZXh0KTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlCi0tCXJlc3VsdCB0byBfX3Jlc3VsdCB0byBwcmV2ZW50IG5hbWUgY2xhc2guCi0tCi0tCSogbDEwbmZsaXN0LmMsIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jOiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KLS0gICAgICAgIGdldCBwcm90b3R5cGUgZm9yIHN0cGNweSBhbmQgc3RyY2FzZWNtcC4KLS0KLS0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0Lmg6IE1vdmUgZGVjbGFyYXRpb24gb2YKLS0JYF9ubF9tc2dfY2F0X2NudHInIG91dHNpZGUgX19leHRlbnNpb25fXyBibG9jayB0byBwcmV2ZW50IHdhcm5pbmcKLS0JZnJvbSBnY2MncyAtV25lc3RlZC1leHRlcm4gb3B0aW9uLgotLQotLUZyaSBKdW4gIDcgMDE6NTg6MDAgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW1vdmUgY29tbWVudC4KLS0KLS1UaHUgSnVuICA2IDE3OjI4OjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogV29yayBhcm91bmQgZm9yIGFub3RoZXIgQnVnbGl4IHN0dXBpZGl0eS4KLS0JQWx3YXlzIHVzZSBhbiBgZWxzZScgY2xvc2UgZm9yIGBpZidzLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnRsaC5pbnN0KTogQ29ycmVjdCB0eXBvIGluIHBob255IHJ1bGUuCi0tCVJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS1UaHUgSnVuICA2IDAxOjQ5OjUyIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGRjZ2V0dGV4dC5jIChyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFyaWFibGUgYWxsb2NhX2xpc3QgdG8KLS0JYmxvY2tfbGlzdCBhcyB0aGUgbWFjcm8gY2FsbHMgYXNzdW1lLgotLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIFshSEFWRV9BTExPQ0FdOiBEZWZpbmUgYWxsb2NhIGFzIG1hY3JvIHVzaW5nCi0tICAgICAgICBtYWxsb2MuCi0tCShyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFycmlhYmUgYWxsb2NhX2xpc3QgdG8gYmxvY2tfbGlzdCBhcyB0aGUKLS0JbWFjcm8gY2FsbHMgYXNzdW1lLgotLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KLS0KLS0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBjb25kaXRpb25hbCBmb3IgPGFyZ3ouaD4gaW5jbHVzaW9uLgotLQlSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVwZW5kIG9uIGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExALCBub3QKLS0gICAgICAgIGFsbC1AVVNFX05MU0AuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBpbnRsaC5pbnN0IGNvbWVzIGZyb20gbG9jYWwgZGlyLCBub3QKLS0gICAgICAgICQoc3JjZGlyKS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IFNwZWNpYWwgaGFuZGxpbmcgb2YgdGhpcyBnb2FsLiAgSWYKLS0JdXNlZCBpbiBnZXR0ZXh0LCB0aGlzIGlzIHJlYWxseSBhIHJ1bCB0byBjb25zdHJ1Y3QgdGhpcyBmaWxlLiAgSWYKLS0JdXNlZCBpbiBhbnkgb3RoZXIgcGFja2FnZSBpdCBpcyBkZWZpbmVkIGFzIGEgLlBIT05ZIHJ1bGUgd2l0aAotLQllbXB0eSBib2R5LgotLQotLQkqIGZpbmRkb21haW4uYzogRXh0cmFjdCBsb2NhbGUgZmlsZSBpbmZvcm1hdGlvbiBoYW5kbGluZyBpbnRvCi0tCWwxMG5maWxlLmMuICBSZW5hbWUgbG9jYWwgc3RwY3B5X18gZnVuY3Rpb24gdG8gc3RwY3B5LgotLQotLQkqIGRjZ2V0dGV4dC5jIChzdHBjcHkpOiBBZGQgbG9jYWwgZGVmaW5pdGlvbi4KLS0KLS0JKiBsMTBuZmxpc3QuYzogU29sdmUgc29tZSBwb3J0YWJpbGl0eSBwcm9ibGVtcy4gIFBhdGNoZXMgcGFydGx5IGJ5Ci0tCVRob21hcyBFc2tlbi4gIEFkZCBsb2NhbCBkZWZpbml0aW9uIG9mIHN0cGNweS4KLS0KLS1UdWUgSnVuICA0IDAyOjQ3OjQ5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGludGxoLmluc3QuaW46IERvbid0IGRlcGVuZCBpbmNsdWRpbmcgPGxvY2FsZS5oPiBvbgotLQlIQVZFX0xPQ0FMRV9ILiAgSW5zdGVhZCBjb25maWd1cmUgbXVzdCByZXdyaXRlIHRoaXMgZmlpbGUKLS0JZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZ3VyZSBydW4uCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBsaWJpbnRsLmluc3QgaXMgbm93IGNhbGxlZCBpbnRsaC5pbnN0LgotLQlBZGQgcnVsZXMgZm9yIHVwZGF0aW5nIGludGxoLmluc3QgZnJvbSBpbnRsaC5pbnN0LmluLgotLQotLQkqIGxpYmludGwuaW5zdDogUmVuYW1lZCB0byBpbnRsaC5pbnN0LmluLgotLQotLQkqIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jIFtfX0dOVUNfX106IERlZmluZSBIQVZFX0FMTE9DQSB0byAxCi0tICAgICAgICBiZWNhdXNlIGdjYyBoYXMgX19idWl0bGluX2FsbG9jYS4KLS0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tTW9uIEp1biAgMyAwMDozMjoxNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbGNoZWNrKTogTmV3IGdvYWwgdG8gZnVsZmlsbCBuZWVkcyBvZgotLSAgICAgICAgYXV0b21ha2UncyBkaXN0Y2hlY2suCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW9yZGVyIGNvbW1hbmRzIHNvIHRoYXQgVkVSU0lPTiBpcwotLSAgICAgICAgZm91bmQuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBOb3cgdXNlIHN1YmRpcmVjdG9yeSBpbnRsLyBpbgotLSAgICAgICAgQGRhdGFkaXJAL2dldHRleHQuCi0tCShDT01TUkNTKTogQWRkIGwxMG5maWxlLmMuCi0tCShPQkpFQ1RTKTogQWRkIGwxMG5maWxlLm8uCi0tCShESVNURklMRVMpOiBSZW5hbWUgdG8gRElTVEZJTEUubm9ybWFsLiAgUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCi0tCShESVNURklMRS5nZXR0ZXh0KTogUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCi0tCShhbGwtZ2V0dGV4dCk6IFJlbW92ZSBnb2FsLgotLQkoaW5zdGFsbCk6IElmICQoUEFDS0FHRSkgPSBnZXR0ZXh0IGluc3RhbGwsIG90aGVyd29zZSBkbyBub3RoaW5nLiAgTm8KLS0JcGFja2FnZSBidXQgZ2V0dGV4dCBpdHNlbGYgc2hvdWxkIGluc3RhbGwgbGliaW50bC5oICsgaGVhZGVycy4KLS0JKGRpc3QpOiBFeHRlbmQgZ29hbCB0byB3b3JrIGZvciBnZXR0ZXh0LCB0b28uCi0tCShkaXN0LWdldHRleHQpOiBSZW1vdmUgZ29hbC4KLS0KLS0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIG1hY3JvIGFsbG9jYSBieSB1c2luZyBtYWxsb2MuCi0tCi0tU3VuIEp1biAgMiAxNzozMzowNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6IFBhcmFtZXRlciBpcyBub3cgY29tZXMgZnJvbQotLSAgICAgICAgZmluZF9sMTBuZmlsZS4KLS0KLS1TYXQgSnVuICAxIDAyOjIzOjAzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jIChfX2FyZ3pfbmV4dCk6IEFkZCBkZWZpbml0aW9uLgotLQotLQkqIGRjZ2V0dGV4dC5jIFshSEFWRV9BTExPQ0FdOiBBZGQgY29kZSBmb3IgaGFuZGxpbmcgbWlzc2luZyBhbGxvY2EKLS0JY29kZS4gIFVzZSBuZXcgbDEwbmZpbGUgaGFuZGxpbmcuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcKLS0gICAgICAgIGFsbG9jYSBjb2RlLgotLQotLQkqIGwxMG5mbGlzdC5jOiBJbml0aWFsIHJldmlzaW9uLgotLQotLVR1ZSBBcHIgIDIgMTg6NTE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsLWdldHRleHQpOiBOZXcgZ29hbC4gIFNhbWUgYXMgYWxsLXllcy4KLS0KLS1UaHUgTWFyIDI4IDIzOjAxOjIyIDE5OTYgIEthcmwgRWljaHdhbGRlciAgPGtlQGtlLmNlbnRyYWwuZGU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBEZWZpbmUgdXNpbmcgQGRhdGFkaXJALgotLQotLVR1ZSBNYXIgMjYgMTI6Mzk6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEluY2x1ZGUgPGN0eXBlLmg+LiAgUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tU2F0IE1hciAyMyAwMjowMDozNSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogUmVuYW1lIHRvIHN0cGNweV9fIHRvIHByZXZlbnQgY2xhc2hpbmcKLS0gICAgICAgIHdpdGggZXh0ZXJuYWwgZGVjbGFyYXRpb24uCi0tCi0tU2F0IE1hciAgMiAwMDo0NzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChhbGwtbm8pOiBSZW5hbWUgZnJvbSBhbGxfbm8uCi0tCi0tU2F0IEZlYiAxNyAwMDoyNTo1OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGdldHRleHRQLmggW2xvYWRlZF9kb21haW5dOiBBcnJheSBgc3VjY2Vzc29yJyBtdXN0IG5vdyBjb250YWluIHVwCi0tICAgICAgICB0byA2MyBlbGVtZW50cyAoYmVjYXVzZSBvZiBjb2Rlc2V0IG5hbWUgbm9ybWFsaXphdGlvbikuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBJbXBsZW1lbnQgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24uCi0tCi0tVGh1IEZlYiAxNSAwNDozOTowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChhbGwpOiBEZWZpbmUgdG8gYGFsbC1AVVNFX05MU0AnLgotLQkoYWxsLXllcywgYWxsX25vKTogTmV3IGdvYWxzLiAgYGFsbC1ubycgaXMgbm9vcCwgYGFsbC15ZXMnCi0tCWlzIGZvcm1lciBhbGwuCi0tCi0tTW9uIEphbiAxNSAyMTo0NjowMSAxOTk2ICBIb3dhcmQgR2F5bGUgIDxob3dhcmRAaGFsLmNvbT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKTogSW5jcmVtZW50IHN0cmluZyBwb2ludGVycyBpbiBsb29wCi0tICAgICAgICBvZiBzdHJjYXNlY21wIHJlcGxhY2VtZW50LgotLQotLUZyaSBEZWMgMjkgMjE6MTY6MzQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBXaG8gY29tbWVudGVkIHRoaXMgZ29hbCBvdXQgPyA6LSkKLS0KLS1GcmkgRGVjIDI5IDE1OjA4OjE2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFNhdmUgYGVycm5vJy4gIEZhaWxpbmcgc3lzdGVtIGNhbGxzCi0tCXNob3VsZCBub3QgZWZmZWN0IGl0IGJlY2F1c2UgYSBtaXNzaW5nIGNhdGFsb2cgaXMgbm8gZXJyb3IuCi0tCVJlcG9ydGVkIGJ5IEhhcmFsZCBLPG86Pm5pZyA8a29lbmlnQHRhdC5waHlzaWsudW5pLXR1ZWJpbmdlbi5kZT4uCi0tCi0tVHVlIERlYyAxOSAyMjowOToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChNYWtlZmlsZSk6IEV4cGxpY2l0bHkgdXNlICQoU0hFTEwpIGZvciBydW5uaW5nCi0tICAgICAgICBzaGVsbCBzY3JpcHRzLgotLQotLUZyaSBEZWMgMTUgMTc6MzQ6NTkgMTk5NSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogT25seSBpbnN0YWxsIGxpYnJhcnkgYW5kIGhlYWRlciB3aGVuCi0tCXdlIHVzZSB0aGUgb3duIGltcGxlbWVudGF0aW9uLiAgRG9uJ3QgZG8gaXQgd2hlbiB1c2luZyB0aGUKLS0Jc3lzdGVtJ3MgZ2V0dGV4dCBvciBjYXRnZXRzIGZ1bmN0aW9ucy4KLS0KLS0JKiBkY2dldHRleHQuYyAoZmluZF9tc2cpOiBNdXN0IG5vdCBzd2FwIGRvbWFpbi0+aGFzaF9zaXplIGhlcmUuCi0tCi0tU2F0IERlYyAgOSAxNjoyNDozNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMsIGxpYmludGwuaW5zdCwgbGliZ2V0dGV4dC5oLCBoYXNoLXN0cmluZy5oLAotLQlnZXR0ZXh0UC5oLCBmaW5kZG9tYWluLmMsIGRjZ2V0dGV4dC5jLCBjYXQtY29tcGF0LmM6Ci0tCVVzZSBQQVJBTVMgaW5zdGVhZCBvZiBfX1AuICBTdWdnZXN0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tVHVlIERlYyAgNSAxMTozOToxNCAxOTk1ICBMYXJyeSBTY2h3aW1tZXIgIDxyb3NlYnVkQGN5Y2xvbmUuc3RhbmZvcmQuZWR1PgotLQotLQkqIGxpYmdldHRleHQuaDogVXNlIGAjaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpJyBpbnN0ZWFkIG9mIGAjaWYKLS0JIV9MSUJJTlRMX0gnIGJlY2F1c2UgU29sYXJpcyBkZWZpbmVzIF9MSUJJTlRMX0ggYXMgZW1wdHkuCi0tCi0tTW9uIERlYyAgNCAxNTo0MjowNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6Ci0tCUluc3RhbGwgbGliaW50bC5pbnN0IGluc3RlYWQgb2YgbGliaW50bC5oLmluc3RhbGwuCi0tCi0tU2F0IERlYyAgMiAyMjo1MTozOCAxOTk1ICBNYXJjdXMgRGFuaWVscyAgPG1hcmN1c0BzeXNjLnBkeC5lZHU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKToKLS0JUmV2ZXJzZSBvcmRlciBpbiB3aGljaCBmaWxlcyBhcmUgdHJpZWQgeW91IGxvYWQuICBGaXJzdAotLQl0cnkgbG9jYWwgZmlsZSwgd2hlbiB0aGlzIGZhaWxlZCBhYnNvbHV0ZSBwYXRoLgotLQotLVdlZCBOb3YgMjkgMDI6MDM6NTMgMTk5NSAgTmVsc29uIEguIEYuIEJlZWJlICA8YmVlYmVAbWF0aC51dGFoLmVkdT4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKTogQWRkIG1pc3NpbmcgeyB9LgotLQotLVN1biBOb3YgMjYgMTg6MjE6NDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJpbnRsLmluc3Q6IEFkZCBtaXNzaW5nIF9fUCBkZWZpbml0aW9uLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgotLQotLQkqIE1ha2VmaWxlLmluOgotLQlBZGQgZHVtbXkgYGFsbCcgYW5kIGBkdmknIGdvYWxzLiAgUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KLS0KLS1TYXQgTm92IDI1IDE2OjEyOjAxIDE5OTUgIEZyYW5jLG9pcyBQaW5hcmQgIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4KLS0KLS0JKiBoYXNoLXN0cmluZy5oOiBDYXBpdGFsaXplIGFyZ3VtZW50cyBvZiBtYWNyb3MuCi0tCi0tU2F0IE5vdiAyNSAxMjowMTozNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBQcmV2ZW50IGZpbGVzIG5hbWVzIGxvbmdlciB0aGFuIDEzCi0tCWNoYXJhY3RlcnMuICBsaWJpbnRsLmguZ2xpYmMtPmxpYmludGwuZ2xpYmMsCi0tCWxpYmludGwuaC5pbnN0YWxsLT5saWJpbnRsLmluc3QuICBSZXBvcnRlZCBieSBKb3NodWEgUi4gUG91bHNvbi4KLS0KLS1TYXQgTm92IDI1IDExOjMxOjEyIDE5OTUgIEVyaWMgQmFja3VzICA8ZXJpY2JAbHNpZC5ocC5jb20+Ci0tCi0tCSogZGNnZXR0ZXh0LmM6IEZpeCBidWcgaW4gcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscy4KLS0KLS1TYXQgTm92IDI1IDAyOjM1OjI3IDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oOiBTb2xhcmlzIGNjIGRvZXMgbm90IHVuZGVyc3RhbmQKLS0JICNpZiAhU1lNQk9MMSAmJiAhU1lNQk9MMi4gIFNhZAlidXQgdHJ1ZS4KLS0KLS1UaHUgTm92IDIzIDE2OjIyOjE0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOgotLQlGaXggZm9yIG1hY2hpbmUgd2l0aCA+MzIgYml0IGB1bnNpZ25lZCBsb25nJ3MuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6Ci0tCUZpeCBob3JyaWJsZSBidWcgaW4gbG9vcCBmb3IgYWx0ZXJuYXRpdmUgdHJhbnNsYXRpb24uCi0tCi0tVGh1IE5vdiAyMyAwMTo0NToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHBvMnRibC5zZWQuaW4sIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6Ci0tCVNvbWUgZnVydGhlciBzaW1wbGlmaWNhdGlvbnMgaW4gbWVzc2FnZSBudW1iZXIgZ2VuZXJhdGlvbi4KLS0KLS1Nb24gTm92IDIwIDIxOjA4OjQzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliaW50bC5oLmdsaWJjOiBVc2UgX19jb25zdCBpbnN0ZWFkIG9mIGNvbnN0IGluIHByb3RvdHlwZXMuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKToKLS0JSW5zdGFsbCBsaWJpbnRsLmguaW5zdGFsbCBpbnN0ZWFkIG9mIGxpYmludGwuaC4gIFRoaXMKLS0JaXMgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24uICBTdWdnZXN0ZWQgYnkgUGV0ZXIgTWlsbGVyLgotLQotLQkqIGxpYmludGwuaC5pbnN0YWxsLCBsaWJpbnRsLmguZ2xpYmM6IEluaXRpYWwgcmV2aXNpb24uCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcywgcmVhZF9hbGlhc19maWxlKToKLS0JUHJvdGVjdCBwcm90b3R5cGVzIGluIHR5cGUgY2FzdHMgYnkgX19QLgotLQotLVR1ZSBOb3YgMTQgMTY6NDM6NTggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBoYXNoLXN0cmluZy5oOiBDb3JyZWN0IHByb3RvdHlwZSBmb3IgaGFzaF9zdHJpbmcuCi0tCi0tU3VuIE5vdiAxMiAxMjo0MjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKTogQWRkIHByb3RvdHlwZS4KLS0KLS0JKiBnZXR0ZXh0UC5oOiBGaXggY29weXJpZ2h0LgotLQkoU1dBUCk6IEFkZCBwcm90b3R5cGUuCi0tCi0tV2VkIE5vdiAgOCAyMjo1NjozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6IEZvcmdvdCBzaXplb2YuCi0tCUF2b2lkIGNhbGxpbmcgKnByaW50ZiBmdW5jdGlvbi4gIFRoaXMgaW50cm9kdWNlcyBhIGJpZyBvdmVyaGVhZC4KLS0JUGF0Y2ggYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tVHVlIE5vdiAgNyAxNDoyMTowOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYywgY2F0LWNvbXBhdC5jOiBXcm9uZyBpbmRlbnRhdGlvbiBpbiAjaWYgZm9yIHN0cGNweS4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6Ci0tCURlZmluZSBzdWJzdGl0dXRpb24gZnVuY3Rpb24gbG9jYWwuICBUaGUgbWFjcm8gd2FzIHRvIGZsYWt5LgotLQotLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8uCi0tCi0tCSogeG9wZW4tbXNnLnNlZCwgbGludXgtbXNnLnNlZDoKLS0JV2hpbGUgYnJpbmdpbmcgbWVzc2FnZSBudW1iZXIgdG8gcmlnaHQgcGxhY2Ugb25seSBhY2NlcHQgZGlnaXRzLgotLQotLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IE5vdyB0aGF0IHRoZSBjb3VudGVyIGRvZXMgbm90IGhhdmUKLS0JbGVhZGluZyAwcyB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGVtLiAgUmVwb3J0ZWQgYnkgTWFyY3VzCi0tCURhbmllbHMuCi0tCi0tCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6IFVzZSAkKHRvcF9zcmRpcikgaW4KLS0JZGVwZW5kZW5jeS4gIFJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGNhdC1jb21wYXQuYzogKHN0cGNweSkgWyFfTElCQyAmJiAhSEFWRV9TVFBDUFldOiBEZWZpbmUgcmVwbGFjZW1lbnQuCi0tCUdlbmVyYWxseSBjbGVhbnVwIHVzaW5nICNpZiBpbnN0ZWFkIG9mICNpZm5kZWYuCi0tCi0tCSogTWFrZWZpbGUuaW46IENvcnJlY3QgdHlwb3MgaW4gY29tbWVudC4gIEJ5IEZyYW5jLG9pcyBQaW5hcmQuCi0tCi0tTW9uIE5vdiAgNiAwMDoyNzowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IERvbid0IGluc3RhbGwgbGliaW50bC5oIGFuZCBsaWJpbnRsLmEKLS0JaWYgd2UgdXNlIGFuIGF2YWlsYWJsZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLgotLQotLVN1biBOb3YgIDUgMjI6MDI6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IEZpeCB0eXBvOiBIQVZFX0NBVEdFVFRTIC0+IEhBVkVfQ0FUR0VUUy4gIFJlcG9ydGVkCi0tCWJ5IEZyYW5jLG9pcyBQaW5hcmQuCi0tCi0tCSogbGliZ2V0dGV4dC5oOiBVc2UgI2lmIGluc3RlYWQgb2YgI2lmZGVmLyNpZm5kZWYuCi0tCi0tCSogZmluZGRvbWFpbi5jOgotLQlDb21tZW50cyBkZXNjcmliaW5nIHdoYXQgaGFzIHRvIGJlIGRvbmUgc2hvdWxkIHN0YXJ0IHdpdGggRklYTUUuCi0tCi0tU3VuIE5vdiAgNSAxOTozODowMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBTcGxpdC4gIFVzZSBESVNURklMRVMgd2l0aCBub3JtYWwgbWVhbmluZy4KLS0JRElTVEZJTEVTLmNvbW1vbiBuYW1lcyB0aGUgZmlsZXMgY29tbW9uIHRvIGJvdGggZGlzdCBnb2Fscy4KLS0JRElTVEZJTEVTLmdldHRleHQgYXJlIHRoZSBmaWxlcyBvbmx5IGRpc3RyaWJ1dGVkIGluIEdOVSBnZXR0ZXh0LgotLQotLVN1biBOb3YgIDUgMTc6MzI6NTQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogQ29ycmVjdCBzZWFyY2hpbmcgaW4gZGVyaXZlZCBsb2NhbGVzLgotLQlUaGlzIHdhcyBuZWNlc3Nhcnkgc2luY2UgYSBjaGFuZ2UgaW4gX25sX2ZpbmRfbXNnIHNldmVyYWwgd2Vla3MKLS0JYWdvLiAgSSByZWFsbHkgZG9uJ3Qga25vdyB0aGlzIGlzIHN0aWxsIG5vdCBmaXhlZC4KLS0KLS1TdW4gTm92ICA1IDEyOjQzOjEyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBUZXN0IGZvciBGSUxFTkFNRSA9PSBOVUxMLiAgVGhpcwotLQltaWdodCBtYXJrIGEgc3BlY2lhbCBjb25kaXRpb24uCi0tCi0tCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6IERvbid0IG1ha2UgaWxsZWdhbCBlbnRyeSBhcyBkZWNpZGVkLgotLQotLQkqIE1ha2VmaWxlLmluIChkaXN0KTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZSB3aGVuIGxuIGZhaWxlZC4KLS0JR2V0IGZpbGVzIGZyb20gJChzcmNkaXIpIGV4cGxpY2l0bHkuCi0tCi0tCSogbGliZ2V0dGV4dC5oIChnZXR0ZXh0X2NvbnN0KTogUmVuYW1lIHRvIGdldHRleHRfbm9vcC4KLS0KLS1GcmkgTm92ICAzIDA3OjM2OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6Ci0tCVByb3RlY3QgYWdhaW5zdCB3cm9uZyBsb2NhbGUgbmFtZXMgYnkgdGVzdGluZyBtYXNrLgotLQotLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IEFkZCBtYWNybyBkZWZpbml0aW9uLgotLQlDYXBpdGFsaXplIG1hY3JvIGFyZ3VtZW50cy4KLS0KLS1UaHUgTm92ICAyIDIzOjE1OjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlUZXN0IGZvciBwb2ludGVyICE9IE5VTEwgYmVmb3JlIGFjY2Vzc2luZyB2YWx1ZS4KLS0JUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KLS0KLS0JKiBnZXR0ZXh0LmMgKE5VTEwpOgotLQlEZWZpbmUgYXMgKHZvaWQqKTAgaW5zdGFkIG9mIDAuICBSZXBvcnRlZCBieSBGcmFuYyxvaXMgUGluYXJkLgotLQotLU1vbiBPY3QgMzAgMjE6Mjg6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluOiBTZXJpb3VzIHR5cG8gYnVnIGZpeGVkIGJ5IEppbSBNZXllcmluZy4KLS0KLS1TYXQgT2N0IDI4IDIzOjIwOjQ3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oOiBEaXNhYmxlIGRjZ2V0dGV4dCBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgotLQlQZXRlciBNaWxsZXIgcmVwb3J0ZWQgdGhhdCB0b2xvd2VyIGluIHNvbWUgc3lzdGVtcyBpcwotLQlldmVuIGR1bWJlciB0aGFuIEkgdGhvdWdodC4gIFByb3RlY3QgY2FsbCBieSBgaXN1cHBlcicuCi0tCi0tRnJpIE9jdCAyNyAyMjoyMjo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChsaWJkaXIsIGluY2x1ZGVkaXIpOiBOZXcgdmFyaWFibGVzLgotLQkoaW5zdGFsbC1zcmMpOiBJbnN0YWxsIGxpYmludGwuYSBhbmQgbGliaW50bC5oIGluIGNvcnJlY3QgZGlycy4KLS0KLS1GcmkgT2N0IDI3IDIyOjA3OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBGaXggdHlwbzogaW50cmwuY29tcGF0LmMgLT4gaW50bC1jb21wYXQuYy4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluOiBQYXRjaCBmb3IgYnVnZ3kgU0VEcyBieSBDaHJpc3RpYW4gdm9uIFJvcXVlcy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jOgotLQlGaXggdHlwbyBhbmQgc3VwZXJmbG91cyB0ZXN0LiAgUmVwb3J0ZWQgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCi0tCi0tRnJpIE9jdCAgNiAxMTo1MjowNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JQ29ycmVjdCBzb21lIHJlbWFpbmRlciBmcm9tIHRoZSBwcmUtQ0VOIHN5bnRheC4gIE5vdwotLQl3ZSBkb24ndCBoYXZlIGEgY29uc3RhbnQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgYW55bW9yZS4KLS0KLS1XZWQgU2VwIDI3IDIxOjQxOjEzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IEFkZCBsaWJpbnRsLmguZ2xpYmMuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGRpc3QtbGliYyk6IEFkZCBnb2FsIGZvciBwYWNraW5nIHNvdXJjZXMgZm9yIGdsaWJjLgotLQkoQ09NU1JDUywgQ09NSERSUyk6IFNwbGl0dGVkIHRvIHNlcGFyYXRlIHNvdXJjZXMgc2hhcmVkIHdpdGggZ2xpYmMuCi0tCi0tCSogbG9hZG1zZ2NhdC5jOiBGb3JnZXQgdG8gY29udGludWUgI2lmIGxpbmUuCi0tCi0tCSogbG9jYWxlYWxpYXMuYzoKLS0JW19MSUJDXTogUmVuYW1lIHN0cmNhc2VjbXAgdG8gX19zdHJjYXNlY21wIHRvIGtlZXAgQU5TSSBDIG5hbWUKLS0Jc3BhY2UgY2xlYW4uCi0tCi0tCSogZGNnZXR0ZXh0LmMsIGZpbmRkb21haW4uYzogQmV0dGVyIGNvbW1lbnQgdG8gbGFzdCBjaGFuZ2UuCi0tCi0tCSogbG9hZG1zZ2NhdC5jOgotLQlbX0xJQkNdOiBSZW5hbWUgZnN0YXQsIG9wZW4sIGNsb3NlLCByZWFkLCBtbWFwLCBhbmQgbXVubWFwIHRvCi0tCV9fZnN0YXQsIF9fb3BlbiwgX19jbG9zZSwgX19yZWFkLCBfX21tYXAsIGFuZCBfX211bm1hcCByZXNwCi0tCXRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCi0tCi0tCSogZmluZGRvbWFpbi5jOgotLQlbX0xJQkNdOiBSZW5hbWUgc3RwY3B5IHRvIF9fc3RwY3B5IHRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCi0tCi0tCSogZGNnZXR0ZXh0LmM6Ci0tCVtfTElCQ106IFJlbmFtZSBnZXRjZWQgYW5kIHN0cGNweSB0byBfX2dldGN3ZCBhbmQgX19zdHBjcHkgcmVzcCB0bwotLQlrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgotLQotLQkqIGxpYmdldHRleHQuaDoKLS0JSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdGhvc2Ugb2xkIFN5c1Ygc3lzdGVtcyBvdXQgdGhlcmUuCi0tCVJlcG9ydGVkIGJ5IEZyYW5jZXNjbyBQb3RvcnRpYC4KLS0KLS0JKiBsb2FkbXNnY2F0LmMgKHVzZV9tbWFwKTogRGVmaW5lIGlmIGNvbXBpbGVkIGZvciBnbGliYy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCi0tCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgotLQotLQkqIGZpbmRkb21haW4uYzogRml4IDIgdGltZXMgZGVmaWVuZCAtPiBkZWZpbmVkLgotLQotLQkqIHRleHRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgotLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycwotLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jLCBsb2FkbXNnY2F0LmM6IFByZXBhcmUgdG8gYmUgY29tcGlsZWQgaW4gZ2xpYmMuCi0tCi0tCSogZ2V0dGV4dC5jOgotLQlJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCi0tCUdldCBOVUxMIGZyb20gc3RkZGVmLmggaWYgd2UgY29tcGlsZSBmb3IgZ2xpYmMuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuCi0tCWNvbXBpbGluZyBmb3IgZ2xpYmMuICBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCi0tCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgotLQotLQkqIGRjZ2V0dGV4dC5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzIHVuY29uZGl0aW9uYWxseQotLQlpZiBfTElCQyBpcyBkZWZpbmVkLgotLQotLQkqIGRnZXR0ZXh0LmM6IElmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YKLS0JbGliZ2V0dGV4dC5oLgotLQkobG9jYWxlLmgpOiBEb24ndCByZWx5IG9uIEhBVkVfTE9DQUxFX0ggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgotLQotLQkqIGRjZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCi0tCWxpYmdldHRleHQuaC4KLS0JKGdldGN3ZCk6IERvbid0IHJlbHkgb24gSEFWRV9HRVRDV0Qgd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6Ci0tCUlmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oLgotLQotLU1vbiBTZXAgMjUgMjI6MjM6MDYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChfbmxfZXhwYW5kX2FsaWFzKTogRG9uJ3QgY2FsbCBic2VhcmNoIGlmIE5NQVAgPD0gMC4KLS0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCi0tCi0tCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6Ci0tCVN0cmluZyB1c2VkIGluIHB1dGVudiBtdXN0IG5vdCBiZSByZWN5Y2xlZC4KLS0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCi0tCi0tCSogbGliZ2V0dGV4dC5oIChfX1VTRV9HTlVfR0VUVEVYVCk6Ci0tCUFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSBHTlUgZ2V0dGV4dAotLQlsaWJyYXJ5LgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgotLQlGaXggYnVnIHdpdGggdGhlIHN0cmFuZ2Ugc3RwY3B5IHJlcGxhY2VtZW50LgotLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCi0tCi0tU2F0IFNlcCAyMyAwODoyMzo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGNhdC1jb21wYXQuYzogSW5jbHVkZSA8c3RyaW5nLmg+IGZvciBzdHBjcHkgcHJvdG90eXBlLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6Ci0tCVdoaWxlIGV4cGFuZCBzdHJkdXAgY29kZSB0ZW1wb3JhcnkgdmFyaWFibGUgYGNwJyBoaWRlZAotLQloaWdoZXIgbGV2ZWwgdmFyaWFibGUgd2l0aCBzYW1lIG5hbWUuICBSZW5hbWUgdG8gYHRwJy4KLS0KLS0JKiB0ZXh0ZG9tYWluLmMgKHRleHRkb21haW4pOgotLQlBdm9pZCB3YXJuaW5nIGJ5IHVzaW5nIHRlbXBvcmFyeSB2YXJpYWJsZSBpbiBzdHJkdXAgY29kZS4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGFwcGxpY2F0aW9uJy4KLS0KLS1UaHUgU2VwIDIxIDE1OjUxOjQ0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6Ci0tCVVzZSBzdHJjYXNlY21wKCkgb25seSBpZiBhdmFpbGFibGUuICBFbHNlIHVzZQotLQlpbXBsZW1lbnRhdGlvbiBpbiBwbGFjZS4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jOgotLQlXcmFwcGVyIGZ1bmN0aW9ucyBub3cgY2FsbCAqX18gZnVuY3Rpb25zIGluc3RlYWQgb2YgX18qLgotLQotLQkqIGxpYmdldHRleHQuaDogRGVjbGFyZSBwcm90b3R5cGVzIGZvciAqX18gZnVuY3Rpb25zIGluc3RlYWQgZm9yIF9fKi4KLS0KLS0JKiBjYXQtY29tcGF0LmMsIGxvYWRtc2djYXQuYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOgotLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKLS0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAotLQlzdGFuZGFsb25lLgotLQlSZW5hbWUgdG8gYmluZHRleHRkb21haW5fXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgotLQotLQkqIGRnZXR0ZXh0LmM6Ci0tCVJlbmFtZSBmdW5jdGlvbiB0byBkZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCi0tCi0tCSogZ2V0dGV4dC5jOgotLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKLS0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAotLQlzdGFuZGFsb25lLgotLQlGdW5jdGlvbnMgbm93IGNhbGxlZCBnZXR0ZXh0X18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KLS0KLS0JKiBkY2dldHRleHQuYywgbG9jYWxlYWxpYXMuYywgdGV4dGRvbWFpbi5jLCBmaW5kZG9tYWluLmM6Ci0tCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAotLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCi0tCXN0YW5kYWxvbmUuCi0tCi0tU3VuIFNlcCAxNyAyMzoxNDo0OSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYzogQ29ycmVjdCBzb21lIGJ1Z3MgaW4gaGFuZGxpbmcgb2YgQ0VOIHN0YW5kYXJkCi0tIAlsb2NhbGUgZGVmaW5pdGlvbnMuCi0tCi0tVGh1IFNlcCAgNyAwMTo0OToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IENFTiBzeW50YXguCi0tCi0tCSogZ2V0dGV4dFAuaCAobG9hZGVkX2RvbWFpbik6IEV4dGVuZCBudW1iZXIgb2Ygc3VjY2Vzc29ycyB0byAzMS4KLS0KLS1TYXQgQXVnIDE5IDE5OjI1OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IFJlbW92ZSBwYXRoIHRvIFgxMSBsb2NhbGUgZGlyLgotLQotLQkqIE1ha2VmaWxlLmluOiBNYWtlIGluc3RhbGwtc3JjIGRlcGVuZCBvbiBpbnN0YWxsLiAgVGhpcyBoZWxwcwotLSAJZ2V0dGV4dCB0byBpbnN0YWxsIHRoZSBzb3VyY2VzIGFuZCBvdGhlciBwYWNrYWdlcyBjYW4gdXNlIHRoZQotLSAJaW5zdGFsbCBnb2FsLgotLQotLVNhdCBBdWcgMTkgMTU6MTk6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogUmVtb3ZlIHN0dWZmIGluc3RhbGxlZCBieSBpbnN0YWxsLXNyYy4KLS0KLS1UdWUgQXVnIDE1IDEzOjEzOjUzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogVkVSU0lPTi5pbjogSW5pdGlhbCByZXZpc2lvbi4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKToKLS0JQWRkIFZFUlNJT04gZmlsZS4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBmb3IgZ2V0dGV4dCwgYnV0Ci0tCWZvciBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGlzIGxpYnJhcnkuCi0tCi0tVHVlIEF1ZyAxNSAwNjoxNjo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGdldHRleHRQLmggKF9ubF9maW5kX2RvbWFpbik6Ci0tCU5ldyBwcm90b3R5cGUgYWZ0ZXIgY2hhbmdpbmcgc2VhcmNoIHN0cmF0ZWd5LgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JV2Ugbm93IHRyeSBvbmx5IHRvIGZpbmQgYSBzcGVjaWZpZWQgY2F0YWxvZy4gIEZhbGwgYmFjayB0byBvdGhlcgotLQljYXRhbG9ncyBsaXN0ZWQgaW4gdGhlIGxvY2FsZSBsaXN0IGlzIG5vdyBkb25lIGluIF9fZGNnZXR0ZXh0LgotLQotLQkqIGRjZ2V0dGV4dC5jIChfX2RjZ2V0dGV4dCk6Ci0tCU5vdyB3ZSBwcm92aWRlIG1lc3NhZ2UgZmFsbCBiYWNrIGV2ZW4gdG8gZGlmZmVyZW50IGxhbmd1YWdlcy4KLS0JSS5lLiBpZiBhIG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiBvbmUgbGFuZ3VhZ2UgYWxsIHRoZSBvdGhlcgotLSAJaW4gdGhlIGxvY2FsZSBsaXN0IGEgdHJpZWQuICBGb3JtZXJseSBmYWxsIGJhY2sgd2FzIG9ubHkgcG9zc2libGUKLS0gCXdpdGhpbiBvbmUgbGFuZ3VhZ2UuICBJbXBsZW1lbnRlZCBieSBtb3Zpbmcgb25lIGxvb3AgZnJvbQotLSAJX25sX2ZpbmRfZG9tYWluIHRvIGhlcmUuCi0tCi0tTW9uIEF1ZyAxNCAyMzo0NTo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKToKLS0JRGlyZWN0b3J5IHdoZXJlIHNvdXJjZSBvZiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGFyZSBtYWRlCi0tCWF2YWlsYWJsZS4KLS0JKElOU1RBTEwsIElOU1RBTExfREFUQSk6IFByb2dyYW1zIHVzZWQgZm9yIGluc3RhbGxpbmcgc291cmNlcy4KLS0JKGdldHRleHQtc3JjKTogTmV3LiAgUnVsZSB0byBpbnN0YWxsIEdOVSBnZXR0ZXh0IHNvdXJjZXMgZm9yIHVzZSBpbgotLQlnZXR0ZXh0aXplIHNoZWxsIHNjcmlwdC4KLS0KLS1TdW4gQXVnIDEzIDE0OjQwOjQ4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOgotLQlVc2UgbW1hcCBmb3IgbG9hZGluZyBvbmx5IHdoZW4gbXVubWFwIGZ1bmN0aW9uIGlzCi0tCWFsc28gYXZhaWxhYmxlLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogRGVwZW5kIG9uIGBhbGwnIGdvYWwuCi0tCi0tV2VkIEF1ZyAgOSAxMTowNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6Ci0tCURvIG5vdCBvdmVyd3JpdGUgJ1xuJyB3aGVuIHRlcm1pbmF0aW5nIGFsaWFzIHZhbHVlIHN0cmluZy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlIYW5kbGUgbG9uZyBsaW5lcy4gIElnbm9yZSB0aGUgcmVzdCBub3QgZml0dGluZyBpbgotLQl0aGUgYnVmZmVyIGFmdGVyIHRoZSBpbml0aWFsIGBmZ2V0cycgY2FsbC4KLS0KLS1XZWQgQXVnICA5IDAwOjU0OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZ2V0dGV4dFAuaCAoX25sX2xvYWRfZG9tYWluKToKLS0JQWRkIHByb3RvdHlwZSwgcmVwbGFjaW5nIHByb3RvdHlwZSBmb3IgX25sX2xvYWRfbXNnX2NhdC4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCVJlbW92ZSB1bm5lZWRlZCB2YXJpYWJsZSBmaWxlbmFtZSBhbmQgZmlsZW5hbWVfbGVuLgotLQkoZXhwYW5kX2FsaWFzKTogUmVtb3ZlIHByb3RvdHlwZSBiZWNhdXNlIGZ1bmN0aW9ucyBkb2VzIG5vdAotLSAJZXhpc3QgYW55bW9yZS4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlDaGFuZ2UgdHlwZSBvZiBmbmFtZV9sZW4gcGFyYW1ldGVyIHRvIGludC4KLS0JKHhtYWxsb2MpOiBBZGQgcHJvdG90eXBlLgotLQotLQkqIGxvYWRtc2djYXQuYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MuCi0tCi0tVHVlIEF1ZyAgOCAyMjozMDozOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JQWxsb3cgYWxpYXMgbmFtZSB0byBiZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBmb3VyIGNvbXBvbmVudHMuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IE5ldyB2YXJpYWJsZS4gIFNldCB0byBwcmVsaW1pbmFyeSB2YWx1ZS4KLS0JKFNPVVJDRVMpOiBBZGQgbG9jYWxlYWxpYXMuYy4KLS0JKE9CSkVDVFMpOiBBZGQgbG9jYWxlYWxpYXMuby4KLS0KLS0JKiBnZXR0ZXh0UC5oOiBBZGQgcHJvdG90eXBlIGZvciBfbmxfZXhwYW5kX2FsaWFzLgotLQotLQkqIGZpbmRkb21haW4uYzogQWxpYXNpbmcgaGFuZGxlZCBpbiBpbnRsL2xvY2FsZWFsaWFzLmMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYzogQWxpYXNpbmcgZm9yIGxvY2FsZSBuYW1lcy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOiBCZXR0ZXIgcHJvdG90eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHN0cmR1cC4KLS0KLS1Nb24gQXVnICA3IDIzOjQ3OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IGdldHRleHQucGVybCBpcyBub3cgZm91bmQgaW4gbWlzYy8uCi0tCi0tCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6Ci0tCUNvcnJlY3QgaW1wbGVtZW50YXRpb24uICBkaXJuYW1lIHBhcmFtZXRlciB3YXMgbm90IHVzZWQuCi0tCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOgotLQlOZXcgZmllbGRzIGBzdWNjZXNzb3InIGFuZCBgZGVjaWRlZCcgZm9yIG9vLCBsYXp5Ci0tCW1lc3NhZ2UgaGFuZGxpbmcgaW1wbGVtZW50YXRpb24uCi0tCi0tCSogZGNnZXR0ZXh0LmM6Ci0tCUFkb3B0IGZvciBvbywgbGF6eSBtZXNzYWdlIGhhbmRsaWluZy4KLS0gIAlOb3cgd2UgY2FuIGluaGVyaXQgdHJhbnNsYXRpb25zIGZyb20gbGVzcyBzcGVjaWZpYyBsb2NhbGVzLgotLQkoZmluZF9tc2cpOiBOZXcgZnVuY3Rpb24uCi0tCi0tCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6Ci0tCUNvbXBsZXRlIHJld3JpdGUuICBJbXBsZW1lbnQgb28sIGxhenkgbWVzc2FnZSBoYW5kbGluZyA6LSkuCi0tICAJV2Ugbm93IGhhdmUgYW4gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgTEFOR1VBR0UnIHdpdGgKLS0gCWEgaGlnaGVyIHByaW9yaXR5IHRoYW4gTENfQUxMIGZvciB0aGUgTENfTUVTU0FHRSBsb2NhbGUuCi0tICAJSGVyZSB3ZSBjYW4gc2V0IGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2Ygc3BlY2lmaWNhdGlvbnMgZWFjaAotLSAJb2YgdGhlIGZvcm0gYGxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdJy4KLS0KLS1TYXQgQXVnICA1IDA5OjU1OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jICh1bmlzdGQuaCk6Ci0tCUluY2x1ZGUgdG8gZ2V0IF9QQ19QQVRIX01BWCBkZWZpbmVkIG9uIHN5c3RlbSBoYXZpbmcgaXQuCi0tCi0tRnJpIEF1ZyAgNCAyMjo0MjowMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogSW5jbHVkZSBwcm90b3R5cGUuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGRpc3QpOiBSZW1vdmUgYGNvcHlpbmcgaW5zdGVhZCcgbWVzc2FnZS4KLS0KLS1XZWQgQXVnICAyIDE4OjUyOjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKElELCBUQUdTKTogRG8gbm90IHVzZSAkXi4KLS0KLS1UdWUgQXVnICAxIDIwOjA3OjExIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKFRBR1MsIElEKTogVXNlICReIGFzIGNvbW1hbmQgYXJndW1lbnQuCi0tCShUQUdTKTogR2l2ZSBldGFncyAtbyBvcHRpb24gdCB3cml0ZSB0byBjdXJyZW50IGRpcmVjdG9yeSwKLS0gCW5vdCAkKHNyY2RpcikuCi0tCShJRCk6IFVzZSAkKHNyY2RpcikgaW5zdGVhZCBvcyAkKHRvcF9zcmNkaXIpL3NyYy4KLS0JKGRpc3RjbGVhbik6IFJlbW92ZSBJRC4KLS0KLS1TdW4gSnVsIDMwIDExOjUxOjQ2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGdudWxvY2FsZWRpcik6Ci0tCU5ldyB2YXJpYWJsZSwgYWx3YXlzIHVzaW5nIHNoYXJlLyBmb3IgZGF0YSBkaXJlY3RvcnkuCi0tCShERUZTKTogQWRkIEdOVUxPQ0FMRURJUiwgdXNlZCBpbiBmaW5kZG9tYWluLmMuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZGVmYXVsdF9kaXJuYW1lKToKLS0JU2V0IHRvIEdOVUxPQ0FMRURJUiwgYmVjYXVzZSBpdCBhbHdheXMgaGFzIHRvIHBvaW50Ci0tCXRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgR05VIGdldHRleHQgTGlicmFyeSB3cml0ZXMgaXQgdG8uCi0tCi0tCSogaW50bC1jb21wYXQuYyAodGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOgotLQlVbmRlZmluZSBtYWNyb3MgYmVmb3JlIGZ1bmN0aW9uIGRlZmluaXRpb24uCi0tCi0tU2F0IEp1bCAyMiAwMToxMDowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmdldHRleHQuaCAoX0xJQklOVExfSCk6Ci0tCVByb3RlY3QgZGVmaW5pdGlvbiBpbiBjYXNlIHdoZXJlIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhcwotLQlsaWJnZXR0ZXh0Lmggb24gU29sYXJpcyBtYWNoaW5lcy4gIEFkZCBjb21tZW50IGFib3V0IHRoaXMuCi0tCi0tV2VkIEp1bCAxOSAwMjozNjo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4pOiBDb3JyZWN0IHR5cG8uCi0tCi0tV2VkIEp1bCAxOSAwMTo1MTozNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBGdW5jdGlvbiBub3cgY2FsbGVkIF9fZGNnZXR0ZXh0LgotLQotLQkqIGRnZXR0ZXh0LmMgKGRnZXR0ZXh0KTogTm93IGNhbGxlZCBfX2RnZXR0ZXh0IGFuZCBjYWxscwotLSAJX19kY2dldHRleHQuCi0tCi0tCSogZ2V0dGV4dC5jIChnZXR0ZXh0KToKLS0JRnVuY3Rpb24gbm93IGNhbGxlZCBfX2dldHRleHQgYW5kIGNhbGxzIF9fZGdldHRleHQuCi0tCi0tCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX3RleHRkb21haW4uCi0tCi0tCSogYmluZHRleHRkb20uYyAoYmluZHRleHRkb21haW4pOiBGdW5jdGlvbiBub3cgY2FsbGVkCi0tIAlfX2JpbmR0ZXh0ZG9tYWluLgotLQotLQkqIGludGwtY29tcGF0LmM6IEluaXRpYWwgcmV2aXNpb24uCi0tCi0tCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBBZGQgaW50bC1jb21wYXQuYy4KLS0JKE9CSkVDVFMpOiBXZSBhbHdheXMgY29tcGlsZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBmdW5jdGlvbnMuCi0tICAJT0JKRUNUUyBjb250YWlucyBhbGwgb2JqZWN0cyBidXQgY2F0LWNvbXBhdC5vLCAuLi9wby9jYXQtaWYtdGJsLm8sCi0tIAlhbmQgaW50bC1jb21wYXQuby4KLS0gIAkoR0VUVE9CSlMpOiBDb250YWlucyBub3cgb25seSBpbnRsLWNvbXBhdC5vLgotLQotLQkqIGxpYmdldHRleHQuaDoKLS0JUmUtaW5jbHVkZSBwcm90ZWN0aW9uIG1hdGNoZXMgZHVhbGlzdGljIGNoYXJhY3RlciBvZiBsaWJnZXR0ZXh0LmguCi0tCUZvciBhbGwgZnVuY3Rpb25zIGluIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZGVmaW5lIF9fIGNvdW50ZXIgcGFydC4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cmNocik6IERlZmluZSBhcyBpbmRleCBpZiBub3QgZm91bmQgaW4gQyBsaWJyYXJ5LgotLQkoX25sX2ZpbmRfZG9tYWluKTogRm9yIHJlbGF0aXZlIHBhdGhzIHBhc3RlIC8gaW4gYmV0d2Vlbi4KLS0KLS1UdWUgSnVsIDE4IDE2OjM3OjQ1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6IEFkZCBpbmNsdXNpb24gb2Ygc3lzL3R5cGVzLmguCi0tCi0tCSogeG9wZW4tbXNnLnNlZDogRml4IGJ1ZyB3aXRoIGBtc2dzdHIgIiInIGxpbmVzLgotLQlBIGxpdHRsZSBiaXQgYmV0dGVyIGNvbW1lbnRzLgotLQotLVR1ZSBKdWwgMTggMDE6MTg6MjcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbjoKLS0JcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoIGFyZSBub3cgZm91bmQgaW4gLi4vbWlzYy4KLS0KLS0JKiBwby1tb2RlLmVsLCBtYWtlbGlua3MsIGNvbWJpbmUtc2gsIGVsaXNwLWNvbXA6Ci0tCU1vdmVkIHRvIC4uL21pc2MvLgotLQotLQkqIGxpYmdldHRleHQuaCwgZ2V0dGV4dFAuaCwgZ2V0dGV4dC5oOiBVbmlmb3JtIHRlc3QgZm9yIF9fU1REQ19fLgotLQotLVN1biBKdWwgMTYgMjI6MzM6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoSU5TVEFMTCwgSU5TVEFMTF9EQVRBKTogTmV3IHZhcmlhYmxlcy4KLS0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogSW5zdGFsbC91bmluc3RhbGwgLmVsYyBmaWxlLgotLQotLQkqIHBvLW1vZGUuZWwgKEluc3RhbGxhdGlvbiBjb21tZW50KToKLS0JQWRkIC5wb3ggYXMgcG9zc2libGUgZXh0ZW5zaW9uIG9mIC5wbyBmaWxlcy4KLS0KLS1TdW4gSnVsIDE2IDEzOjIzOjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZWxpc3AtY29tcDogQ29tcGxldGUgbmV3IHZlcnNpb24gYnkgRnJhbmMsb2lzOiBUaGlzIGRvZXMgbm90Ci0tIAlmYWlsIHdoZW4gbm90IGNvbXBpbGluZyBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KLS0KLS1TdW4gSnVsIDE2IDAwOjEyOjE3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6Ci0tCVVzZSAkKE1BS0UpIGluc3RlYWQgb2YgbWFrZSBmb3IgcmVjdXJzaXZlIG1ha2UuCi0tCi0tCSogTWFrZWZpbGUuaW4gKC5lbC5lbGMpOiBVc2UgJChTSEVMTCkgaW5zdGVhZCBvZiAvYmluL3NoLgotLQkoaW5zdGFsbC1leGVjKTogQWRkIG1pc3NpbmcgZHVtbXkgZ29hbC4KLS0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogQCBpbiBtdWx0aS1saW5lIHNoZWxsIGNvbW1hbmQgYXQKLS0gCWJlZ2lubmluZywgbm90IGluIGZyb250IG9mIGVjaG8uICBSZXBvcnRlZCBieSBFcmljIEJhY2t1cy4KLS0KLS1TYXQgSnVsIDE1IDAwOjIxOjI4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6Ci0tCVJlbmFtZSBsaWJnZXR0ZXh0LnBlcmwgdG8gZ2V0dGV4dC5wZXJsIHRvIGZpdCBpbiAxNCBjaGFycwotLQlmaWxlIHN5c3RlbXMuCi0tCi0tCSogZ2V0dGV4dC5wZXJsOgotLSAJUmVuYW1lIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMgZmlsZSBzeXN0ZW1zLgotLQotLVRodSBKdWwgMTMgMjM6MTc6MjAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IElmICFTVERDX0hFQURFUlMgdHJ5IHRvIGluY2x1ZGUgbWFsbG9jLmguCi0tCi0tVGh1IEp1bCAxMyAyMDo1NTowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHBvMnRibC5zZWQuaW46IFByZXR0eSBwcmludGluZy4KLS0KLS0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgotLQlDb3JyZWN0IGJ1Z3Mgd2l0aCBoYW5kbGluZyBzdWJzdGl0dXRlIGZsYWdzIGluIGJyYW5jaGVzLgotLQotLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKLS0JT2xkIEsmUiBjb21waWxlcnMgZG9uJ3QgdW5kZXIgc3RhbmQgYHVuc2lnbmVkIGNoYXInLgotLQotLQkqIGdldHRleHQuaCAobmxzX3VpbnQzMik6Ci0tCVNvbWUgb2xkIEsmUiBjb21waWxlcnMgKGVnIEhQKSBkb24ndCB1bmRlcnN0YW5kIGB1bnNpZ25lZCBpbnQnLgotLQotLQkqIGNhdC1jb21wYXQuYyAobXNnX3RvX2NhdF9pZCk6IERlLUFOU0ktZnkgcHJvdG90eXBlcy4KLS0KLS1UaHUgSnVsIDEzIDAxOjM0OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKEVMQ0ZJTEVTKTogTmV3IHZhcmlhYmxlLgotLQkoRElTVEZJTEVTKTogQWRkIGVsaXNwLWNvbXAuCi0tCUFkZCBpbXBsaWNpdCBydWxlIGZvciAuZWwgLT4gLmVsYyBjb21waWxhdGlvbi4KLS0JKGluc3RhbGwtZGF0YSk6IGluc3RhbGwgJEVMQ0ZJTEVTCi0tCShjbGVhbik6IHJlbmFtZWQgcG8tdG8tdGJsIGFuZCBwby10by1tc2cgdG8gcG8ydGJsIGFuZCBwbzJtc2cgcmVzcC4KLS0KLS0JKiBlbGlzcC1jb21wOiBJbml0aWFsIHJldmlzaW9uCi0tCi0tV2VkIEp1bCAxMiAxNjoxNDo1MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluOgotLQljYXQtaWQtdGJsLmMgaXMgbm93IGZvdW5kIGluIHBvLy4gIFRoaXMgZW5hYmxlcyB1cyB0byB1c2UgYW4gaWRlbnRpY2FsCi0tCWludGwvIGRpcmVjdG9yeSBpbiBhbGwgcGFja2FnZXMuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKGRjZ2V0dGV4dCk6IGhhc2hpbmcgZG9lcyBub3Qgd29yayBmb3IgdGFibGUgc2l6ZSA8PSAyLgotLQotLQkqIHRleHRkb21haW4uYzogZml4IHR5cG8gKCNpZiBkZWYgLT4gI2lmIGRlZmluZWQpCi0tCi0tVHVlIEp1bCAxMSAxODo0NDo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChzdGFtcC1jYXQtaWQpOiB1c2UgdG9wX3NyY2RpciB0byBhZGRyZXNzIHNvdXJjZSBmaWxlcwotLQkoRElTVEZJTEVTLGRpc3RjbGVhbik6IG1vdmUgdHVwZGF0ZS5wZXJsIHRvIHNyYy8KLS0KLS0JKiBwby10by10Ymwuc2VkLmluOgotLQlhZGQgYWRkaXRpb25hbCBqdW1wIHRvIGNsZWFyIGNoYW5nZSBmbGFnIHRvIHJlY29nbml6ZSBtdWx0aWxpbmUgc3RyaW5ncwotLQotLVR1ZSBKdWwgMTEgMDE6MzI6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaC4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oLgotLQotLQkqIGxpYmdldHRleHQuaDogUHJvdGVjdCBpbmNsdXNpb24gb2YgbG9jYWxlLmguCi0tCUFsbG93IHVzZSBpbiBDKysgcHJvZ3JhbXMuCi0tCURlZmluZSBOVUxMIGlzIG5vdCBoYXBwZW5lZCBhbHJlYWR5LgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBzaGlwIHBvLXRvLXRibC5zZWQuaW4gaW5zdGVhZCBvZgotLQlwby10by10Ymwuc2VkLgotLQkoZGlzdGNsZWFuKTogcmVtb3ZlIHBvLXRvLXRibC5zZWQgYW5kIHR1cGRhdGUucGVybC4KLS0KLS0JKiB0dXBkYXRlLnBlcmwuaW46IFN1YnN0aXR1dGUgUGVybCBwYXRoIGV2ZW4gaW4gZXhlYyBsaW5lLgotLQlEb24ndCBpbmNsdWRlIGVudHJpZXMgd2l0aG91dCB0cmFuc2xhdGlvbiBmcm9tIG9sZCAucG8gZmlsZS4KLS0KLS1UdWUgSnVsICA0IDAwOjQxOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiB1c2UgIlVwZGF0ZWQ6ICIgaW4gbXNnaWQgIiIuCi0tCi0tCSogY2F0LWNvbXBhdC5jOiBGaXggdHlwbyAoTE9DQUxESVIgLT4gTE9DQUxFRElSKS4KLS0gCURlZmluZSBnZXRlbnYgaWYgIV9fU1REQ19fLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6IFByb3RlY3Qgc3RkbGliLmggYW5kIHN0cmluZy5oIGluY2x1c2lvbi4KLS0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgotLSAJRGVmaW5lIGZyZWUgaWYgIV9fU1REQ19fLgotLQotLQkqIGNhdC1jb21wYXQuYzogQ2hhbmdlIERFRl9NU0dfRE9NX0RJUiB0byBMT0NBTEVESVIuCi0tCi0tTW9uIEp1bCAgMyAyMzo1NjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluOiBVc2UgTE9DQUxFRElSIGluc3RlYWQgb2YgREVGX01TR19ET01fRElSLgotLQlSZW1vdmUgdW5uZWVkZWQgJChzcmNkaXIpIGZyb20gTWFrZWZpbGUuaW4gZGVwZW5kZW5jeS4KLS0KLS0JKiBtYWtlbGlua3M6IEFkZCBjb3B5cmlnaHQgYW5kIHNob3J0IGRlc2NyaXB0aW9uLgotLQotLQkqIHBvLW1vZGUuZWw6IExhc3QgdmVyc2lvbiBmb3IgMC43LgotLQotLQkqIHR1cGRhdGUucGVybC5pbjogRml4IGRpZSBtZXNzYWdlLgotLQotLQkqIGRjZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RyaW5nLmguCi0tCi0tCSogZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RkbGliLmggYW5kIGZ1cnRoZXIgdHJpZXMgdG8gZ2V0IE5VTEwuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBTb21lIGNvcnJlY3Rpb25zIGluIGluY2x1ZGVzLgotLQotLQkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFBydW5lIGxpc3QgY29ycmVjdCBwYXRoIHRvIE1ha2VmaWxlLmluLgotLQotLQkqIHBvLXRvLXRibC5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgotLQotLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgotLQotLVN1biBKdWwgIDIgMjM6NTU6MDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiB0dXBkYXRlLnBlcmwuaW46IENvbXBsZXRlIHJld3JpdGUgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCi0rMjAwNC0wMS0yOSAgR05VICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0gCi0tU3VuIEp1bCAgMiAwMjowNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotKwkqIFZlcnNpb24gMC4xNC4xIHJlbGVhc2VkLgotIAotLQkqIEZpcnN0IG9mZmljaWFsIHJlbGVhc2UuICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhbGwgdGhlIGNvZGUKLS0JbmVlZGVkIHRvIGludGVybmF0aW9uYWxpemUgb3duIHBhY2thZ2VzLiAgSXQgcHJvdmlkZXMgZnVuY3Rpb25zCi0tCXdoaWNoIGFsbG93IHRvIHVzZSB0aGUgWC9PcGVuIGNhdGdldHMgZnVuY3Rpb24gd2l0aCBhbiBpbnRlcmZhY2UKLS0JbGlrZSB0aGUgVW5pZm9ydW0gZ2V0dGV4dCBmdW5jdGlvbi4gIEZvciBzeXN0ZW0gd2hpY2ggZG9lcyBub3QKLS0JaGF2ZSBuZWl0aGVyIG9mIHRob3NlIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQuCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvY29uZmlnLmNoYXJzZXQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvY29uZmlnLmNoYXJzZXQJMjAwNC0wOS0xMiAxNDo0MDozNC4zNTQ3NDgyNDAgLTA0MDAKLUBAIC0wLDAgKzEsNjA4IEBACi0rIyEgL2Jpbi9zaAotKyMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCB0YWJsZSBvZiBjaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcy4KLSsjCi0rIyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsjICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjICAgVVNBLgotKyMKLSsjIFRoZSB0YWJsZSBjb25zaXN0cyBvZiBsaW5lcyBvZiB0aGUgZm9ybQotKyMgICAgQUxJQVMgIENBTk9OSUNBTAotKyMKLSsjIEFMSUFTIGlzIHRoZSAoc3lzdGVtIGRlcGVuZGVudCkgcmVzdWx0IG9mICJubF9sYW5naW5mbyAoQ09ERVNFVCkiLgotKyMgQUxJQVMgaXMgY29tcGFyZWQgaW4gYSBjYXNlIHNlbnNpdGl2ZSB3YXkuCi0rIwotKyMgQ0FOT05JQ0FMIGlzIHRoZSBHTlUgY2Fub25pY2FsIG5hbWUgZm9yIHRoaXMgY2hhcmFjdGVyIGVuY29kaW5nLgotKyMgSXQgbXVzdCBiZSBhbiBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgbGliaWNvbnYuIFN1cHBvcnQgYnkgR05VIGxpYmMgaXMKLSsjIGFsc28gZGVzaXJhYmxlLiBDQU5PTklDQUwgaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVXN1YWxseSBhbiB1cHBlciBjYXNlCi0rIyBNSU1FIGNoYXJzZXQgbmFtZSBpcyBwcmVmZXJyZWQuCi0rIyBUaGUgY3VycmVudCBsaXN0IG9mIEdOVSBjYW5vbmljYWwgY2hhcnNldCBuYW1lcyBpcyBhcyBmb2xsb3dzLgotKyMKLSsjICAgICAgIG5hbWUgICAgICAgICAgICAgIE1JTUU/ICAgICAgICAgICAgIHVzZWQgYnkgd2hpY2ggc3lzdGVtcwotKyMgICBBU0NJSSwgQU5TSV9YMy40LTE5NjggICAgICAgZ2xpYmMgc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBJU08tODg1OS0xICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBJU08tODg1OS0yICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBJU08tODg1OS0zICAgICAgICAgICAgICBZICAgZ2xpYmMgc29sYXJpcwotKyMgICBJU08tODg1OS00ICAgICAgICAgICAgICBZICAgb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktNSAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktNiAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IHNvbGFyaXMKLSsjICAgSVNPLTg4NTktNyAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMKLSsjICAgSVNPLTg4NTktOCAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IG9zZiBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTkgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTEzICAgICAgICAgICAgICAgICBnbGliYwotKyMgICBJU08tODg1OS0xNCAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgSVNPLTg4NTktMTUgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBvc2Ygc29sYXJpcyBmcmVlYnNkCi0rIyAgIEtPSTgtUiAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEtPSTgtVSAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBmcmVlYnNkIGRhcndpbgotKyMgICBLT0k4LVQgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgQ1A0MzcgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDc3NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODUwICAgICAgICAgICAgICAgICAgICAgICBhaXggb3NmIGRvcwotKyMgICBDUDg1MiAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODU1ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NTYgICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDg1NyAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODYxICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjIgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2NCAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODY1ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjYgICAgICAgICAgICAgICAgICAgICAgIGZyZWVic2QgZGFyd2luIGRvcwotKyMgICBDUDg2OSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODc0ICAgICAgICAgICAgICAgICAgICAgICB3b2UzMiBkb3MKLSsjICAgQ1A5MjIgICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDkzMiAgICAgICAgICAgICAgICAgICAgICAgYWl4IHdvZTMyIGRvcwotKyMgICBDUDk0MyAgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQOTQ5ICAgICAgICAgICAgICAgICAgICAgICBvc2Ygd29lMzIgZG9zCi0rIyAgIENQOTUwICAgICAgICAgICAgICAgICAgICAgICB3b2UzMiBkb3MKLSsjICAgQ1AxMDQ2ICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDExMjQgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQMTEyNSAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1AxMTI5ICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDEyNTAgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgQ1AxMjUxICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMgZGFyd2luIHdvZTMyCi0rIyAgIENQMTI1MiAgICAgICAgICAgICAgICAgICAgICBhaXggd29lMzIKLSsjICAgQ1AxMjUzICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIENQMTI1NCAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTUgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgd29lMzIKLSsjICAgQ1AxMjU2ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIENQMTI1NyAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBHQjIzMTIgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEVVQy1KUCAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEVVQy1LUiAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEVVQy1UVyAgICAgICAgICAgICAgICAgICAgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzCi0rIyAgIEJJRzUgICAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBCSUc1LUhLU0NTICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcwotKyMgICBHQksgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IG9zZiBzb2xhcmlzIHdvZTMyIGRvcwotKyMgICBHQjE4MDMwICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcwotKyMgICBTSElGVF9KSVMgICAgICAgICAgICAgICBZICAgaHB1eCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBKT0hBQiAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcyB3b2UzMgotKyMgICBUSVMtNjIwICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMKLSsjICAgVklTQ0lJICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjCi0rIyAgIFRDVk41NzEyLTEgICAgICAgICAgICAgICAgICBnbGliYwotKyMgICBHRU9SR0lBTi1QUyAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgSFAtUk9NQU44ICAgICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgSFAtQVJBQklDOCAgICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgSFAtR1JFRUs4ICAgICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgSFAtSEVCUkVXOCAgICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgSFAtVFVSS0lTSDggICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgSFAtS0FOQTggICAgICAgICAgICAgICAgICAgIGhwdXgKLSsjICAgREVDLUtBTkpJICAgICAgICAgICAgICAgICAgIG9zZgotKyMgICBERUMtSEFOWVUgICAgICAgICAgICAgICAgICAgb3NmCi0rIyAgIFVURi04ICAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcwotKyMKLSsjIE5vdGU6IE5hbWVzIHdoaWNoIGFyZSBub3QgbWFya2VkIGFzIGJlaW5nIGEgTUlNRSBuYW1lIHNob3VsZCBub3QgYmUgdXNlZCBpbgotKyMgSW50ZXJuZXQgcHJvdG9jb2xzIGZvciBpbmZvcm1hdGlvbiBpbnRlcmNoYW5nZSAobWFpbCwgbmV3cywgZXRjLikuCi0rIwotKyMgTm90ZTogQVNDSUkgYW5kIEFOU0lfWDMuNC0xOTY4IGFyZSBzeW5vbnltb3VzIGNhbm9uaWNhbCBuYW1lcy4gQXBwbGljYXRpb25zCi0rIyBtdXN0IHVuZGVyc3RhbmQgYm90aCBuYW1lcyBhbmQgdHJlYXQgdGhlbSBhcyBlcXVpdmFsZW50LgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSsjIG9yCi0rIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSsKLStob3N0PSIkMSIKLStvcz1gZWNobyAiJGhvc3QiIHwgc2VkIC1lICdzL15bXi1dKi1bXi1dKi1cKC4qXCkkL1wxLydgCi0rZWNobyAiIyBUaGlzIGZpbGUgY29udGFpbnMgYSB0YWJsZSBvZiBjaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcywiCi0rZWNobyAiIyBzdWl0YWJsZSBmb3Igb3BlcmF0aW5nIHN5c3RlbSAnJHtvc30nLiIKLStlY2hvICIjIEl0IHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbmZpZy5jaGFyc2V0LiIKLSsjIExpc3Qgb2YgcmVmZXJlbmNlcywgdXBkYXRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uOgotK2VjaG8gIiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAiCi0rY2FzZSAiJG9zIiBpbgotKyAgICBsaW51eC1nbnVsaWJjMSopCi0rCSMgTGludXggbGliYzUgZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwllY2hvICJDIEFTQ0lJIgotKwllY2hvICJQT1NJWCBBU0NJSSIKLSsJZm9yIGwgaW4gYWYgYWZfWkEgY2EgY2FfRVMgZGEgZGFfREsgZGUgZGVfQVQgZGVfQkUgZGVfQ0ggZGVfREUgZGVfTFUgXAotKwkgICAgICAgICBlbiBlbl9BVSBlbl9CVyBlbl9DQSBlbl9ESyBlbl9HQiBlbl9JRSBlbl9OWiBlbl9VUyBlbl9aQSBcCi0rCSAgICAgICAgIGVuX1pXIGVzIGVzX0FSIGVzX0JPIGVzX0NMIGVzX0NPIGVzX0RPIGVzX0VDIGVzX0VTIGVzX0dUIFwKLSsJICAgICAgICAgZXNfSE4gZXNfTVggZXNfUEEgZXNfUEUgZXNfUFkgZXNfU1YgZXNfVVMgZXNfVVkgZXNfVkUgZXQgXAotKwkgICAgICAgICBldF9FRSBldSBldV9FUyBmaSBmaV9GSSBmbyBmb19GTyBmciBmcl9CRSBmcl9DQSBmcl9DSCBmcl9GUiBcCi0rCSAgICAgICAgIGZyX0xVIGdhIGdhX0lFIGdsIGdsX0VTIGlkIGlkX0lEIGluIGluX0lEIGlzIGlzX0lTIGl0IGl0X0NIIFwKLSsJICAgICAgICAgaXRfSVQga2wga2xfR0wgbmwgbmxfQkUgbmxfTkwgbm8gbm9fTk8gcHQgcHRfQlIgcHRfUFQgc3YgXAotKwkgICAgICAgICBzdl9GSSBzdl9TRTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5pc28tODg1OS0xNSBJU08tODg1OS0xNSIKLSsJICBlY2hvICIkbC5pc28tODg1OS0xNUBldXJvIElTTy04ODU5LTE1IgotKwkgIGVjaG8gIiRsQGV1cm8gSVNPLTg4NTktMTUiCi0rCSAgZWNobyAiJGwuY3AtNDM3IENQNDM3IgotKwkgIGVjaG8gIiRsLmNwLTg1MCBDUDg1MCIKLSsJICBlY2hvICIkbC5jcC0xMjUyIENQMTI1MiIKLSsJICBlY2hvICIkbC5jcC0xMjUyQGV1cm8gQ1AxMjUyIgotKwkgICNlY2hvICIkbC5hdGFyaS1zdCBBVEFSSS1TVCIgIyBub3QgYSBjb21tb25seSB1c2VkIGVuY29kaW5nCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCSAgZWNobyAiJGwudXRmLThAZXVybyBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBjcyBjc19DWiBociBocl9IUiBodSBodV9IVSBwbCBwbF9QTCBybyByb19STyBzayBza19TSyBzbCBcCi0rCSAgICAgICAgIHNsX1NJIHNyIHNyX0NTIHNyX1lVOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTIiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMiBJU08tODg1OS0yIgotKwkgIGVjaG8gIiRsLmNwLTg1MiBDUDg1MiIKLSsJICBlY2hvICIkbC5jcC0xMjUwIENQMTI1MCIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBtayBta19NSyBydSBydV9SVTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS01IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTUgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5rb2k4LXIgS09JOC1SIgotKwkgIGVjaG8gIiRsLmNwLTg2NiBDUDg2NiIKLSsJICBlY2hvICIkbC5jcC0xMjUxIENQMTI1MSIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBhciBhcl9TQTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS02IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTYgSVNPLTg4NTktNiIKLSsJICBlY2hvICIkbC5jcC04NjQgQ1A4NjQiCi0rCSAgI2VjaG8gIiRsLmNwLTg2OCBDUDg2OCIgIyBub3QgYSBjb21tb25seSB1c2VkIGVuY29kaW5nCi0rCSAgZWNobyAiJGwuY3AtMTI1NiBDUDEyNTYiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gZWwgZWxfR1IgZ3IgZ3JfR1I7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktNyIKLSsJICBlY2hvICIkbC5pc28tODg1OS03IElTTy04ODU5LTciCi0rCSAgZWNobyAiJGwuY3AtODY5IENQODY5IgotKwkgIGVjaG8gIiRsLmNwLTEyNTMgQ1AxMjUzIgotKwkgIGVjaG8gIiRsLmNwLTEyNTNAZXVybyBDUDEyNTMiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCSAgZWNobyAiJGwudXRmLThAZXVybyBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBoZSBoZV9JTCBpdyBpd19JTDsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS04IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTggSVNPLTg4NTktOCIKLSsJICBlY2hvICIkbC5jcC04NjIgQ1A4NjIiCi0rCSAgZWNobyAiJGwuY3AtMTI1NSBDUDEyNTUiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gdHIgdHJfVFI7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktOSIKLSsJICBlY2hvICIkbC5pc28tODg1OS05IElTTy04ODU5LTkiCi0rCSAgZWNobyAiJGwuY3AtODU3IENQODU3IgotKwkgIGVjaG8gIiRsLmNwLTEyNTQgQ1AxMjU0IgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGx0IGx0X0xUIGx2IGx2X0xWOyBkbwotKwkgICNlY2hvICIkbCBCQUxUSUMiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZywgd3JvbmcgZW5jb2RpbmcgbmFtZQotKwkgIGVjaG8gIiRsIElTTy04ODU5LTEzIgotKwlkb25lCi0rCWZvciBsIGluIHJ1X1VBIHVrIHVrX1VBOyBkbwotKwkgIGVjaG8gIiRsIEtPSTgtVSIKLSsJZG9uZQotKwlmb3IgbCBpbiB6aCB6aF9DTjsgZG8KLSsJICAjZWNobyAiJGwgR0JfMjMxMi04MCIgIyBub3QgYSBjb21tb25seSB1c2VkIGVuY29kaW5nLCB3cm9uZyBlbmNvZGluZyBuYW1lCi0rCSAgZWNobyAiJGwgR0IyMzEyIgotKwlkb25lCi0rCWZvciBsIGluIGphIGphX0pQIGphX0pQLkVVQzsgZG8KLSsJICBlY2hvICIkbCBFVUMtSlAiCi0rCWRvbmUKLSsJZm9yIGwgaW4ga28ga29fS1I7IGRvCi0rCSAgZWNobyAiJGwgRVVDLUtSIgotKwlkb25lCi0rCWZvciBsIGluIHRoIHRoX1RIOyBkbwotKwkgIGVjaG8gIiRsIFRJUy02MjAiCi0rCWRvbmUKLSsJZm9yIGwgaW4gZmEgZmFfSVI7IGRvCi0rCSAgI2VjaG8gIiRsIElTSVJJLTMzNDIiICMgYSBicm9rZW4gZW5jb2RpbmcKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwk7OwotKyAgICBsaW51eCogfCAqLWdudSopCi0rCSMgV2l0aCBnbGliYy0yLjEgb3IgbmV3ZXIsIHdlIGRvbid0IG5lZWQgYW55IGNhbm9uaWNhbGl6YXRpb24sCi0rCSMgYmVjYXVzZSBnbGliYyBoYXMgaWNvbnYgYW5kIGJvdGggZ2xpYmMgYW5kIGxpYmljb252IHN1cHBvcnQgYWxsCi0rCSMgR05VIGNhbm9uaWNhbCBuYW1lcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGUgTWFrZWZpbGUgZG9lcyBub3QKLSsJIyBuZWVkIHRvIGluc3RhbGwgdGhlIGFsaWFzIGZpbGUgYXQgYWxsLgotKwkjIFRoZSBmb2xsb3dpbmcgYXBwbGllcyBvbmx5IHRvIGdsaWJjLTIuMC54IGFuZCBvbGRlciBsaWJjcy4KLSsJZWNobyAiSVNPXzY0Ni5JUlY6MTk4MyBBU0NJSSIKLSsJOzsKLSsgICAgYWl4KikKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS02IElTTy04ODU5LTYiCi0rCWVjaG8gIklTTzg4NTktNyBJU08tODg1OS03IgotKwllY2hvICJJU084ODU5LTggSVNPLTg4NTktOCIKLSsJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCi0rCWVjaG8gIklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWVjaG8gIklCTS04NTAgQ1A4NTAiCi0rCWVjaG8gIklCTS04NTYgQ1A4NTYiCi0rCWVjaG8gIklCTS05MjEgSVNPLTg4NTktMTMiCi0rCWVjaG8gIklCTS05MjIgQ1A5MjIiCi0rCWVjaG8gIklCTS05MzIgQ1A5MzIiCi0rCWVjaG8gIklCTS05NDMgQ1A5NDMiCi0rCWVjaG8gIklCTS0xMDQ2IENQMTA0NiIKLSsJZWNobyAiSUJNLTExMjQgQ1AxMTI0IgotKwllY2hvICJJQk0tMTEyOSBDUDExMjkiCi0rCWVjaG8gIklCTS0xMjUyIENQMTI1MiIKLSsJZWNobyAiSUJNLWV1Y0NOIEdCMjMxMiIKLSsJZWNobyAiSUJNLWV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiSUJNLWV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiSUJNLWV1Y1RXIEVVQy1UVyIKLSsJZWNobyAiYmlnNSBCSUc1IgotKwllY2hvICJHQksgR0JLIgotKwllY2hvICJUSVMtNjIwIFRJUy02MjAiCi0rCWVjaG8gIlVURi04IFVURi04IgotKwk7OwotKyAgICBocHV4KikKLSsJZWNobyAiaXNvODg1OTEgSVNPLTg4NTktMSIKLSsJZWNobyAiaXNvODg1OTIgSVNPLTg4NTktMiIKLSsJZWNobyAiaXNvODg1OTUgSVNPLTg4NTktNSIKLSsJZWNobyAiaXNvODg1OTYgSVNPLTg4NTktNiIKLSsJZWNobyAiaXNvODg1OTcgSVNPLTg4NTktNyIKLSsJZWNobyAiaXNvODg1OTggSVNPLTg4NTktOCIKLSsJZWNobyAiaXNvODg1OTkgSVNPLTg4NTktOSIKLSsJZWNobyAiaXNvODg1OTE1IElTTy04ODU5LTE1IgotKwllY2hvICJyb21hbjggSFAtUk9NQU44IgotKwllY2hvICJhcmFiaWM4IEhQLUFSQUJJQzgiCi0rCWVjaG8gImdyZWVrOCBIUC1HUkVFSzgiCi0rCWVjaG8gImhlYnJldzggSFAtSEVCUkVXOCIKLSsJZWNobyAidHVya2lzaDggSFAtVFVSS0lTSDgiCi0rCWVjaG8gImthbmE4IEhQLUtBTkE4IgotKwllY2hvICJ0aXM2MjAgVElTLTYyMCIKLSsJZWNobyAiYmlnNSBCSUc1IgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwllY2hvICJocDE1Q04gR0IyMzEyIgotKwkjZWNobyAiY2NkYyA/IiAjIHdoYXQgaXMgdGhpcz8KLSsJZWNobyAiU0pJUyBTSElGVF9KSVMiCi0rCWVjaG8gInV0ZjggVVRGLTgiCi0rCTs7Ci0rICAgIGlyaXgqKQotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCi0rCWVjaG8gImV1Y0NOIEdCMjMxMiIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJldWNLUiBFVUMtS1IiCi0rCWVjaG8gImV1Y1RXIEVVQy1UVyIKLSsJOzsKLSsgICAgb3NmKikKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNyBJU08tODg1OS03IgotKwllY2hvICJJU084ODU5LTggSVNPLTg4NTktOCIKLSsJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCi0rCWVjaG8gIklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWVjaG8gImNwODUwIENQODUwIgotKwllY2hvICJiaWc1IEJJRzUiCi0rCWVjaG8gImRlY2hhbnl1IERFQy1IQU5ZVSIKLSsJZWNobyAiZGVjaGFuemkgR0IyMzEyIgotKwllY2hvICJkZWNrYW5qaSBERUMtS0FOSkkiCi0rCWVjaG8gImRlY2tvcmVhbiBFVUMtS1IiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiZXVjS1IgRVVDLUtSIgotKwllY2hvICJldWNUVyBFVUMtVFciCi0rCWVjaG8gIkdCSyBHQksiCi0rCWVjaG8gIktTQzU2MDEgQ1A5NDkiCi0rCWVjaG8gInNkZWNrYW5qaSBFVUMtSlAiCi0rCWVjaG8gIlNKSVMgU0hJRlRfSklTIgotKwllY2hvICJUQUNUSVMgVElTLTYyMCIKLSsJZWNobyAiVVRGLTggVVRGLTgiCi0rCTs7Ci0rICAgIHNvbGFyaXMqKQotKwllY2hvICI2NDYgQVNDSUkiCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS0zIElTTy04ODU5LTMiCi0rCWVjaG8gIklTTzg4NTktNCBJU08tODg1OS00IgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS02IElTTy04ODU5LTYiCi0rCWVjaG8gIklTTzg4NTktNyBJU08tODg1OS03IgotKwllY2hvICJJU084ODU5LTggSVNPLTg4NTktOCIKLSsJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCi0rCWVjaG8gIklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWVjaG8gImtvaTgtciBLT0k4LVIiCi0rCWVjaG8gImFuc2ktMTI1MSBDUDEyNTEiCi0rCWVjaG8gIkJJRzUgQklHNSIKLSsJZWNobyAiQmlnNS1IS1NDUyBCSUc1LUhLU0NTIgotKwllY2hvICJnYjIzMTIgR0IyMzEyIgotKwllY2hvICJHQksgR0JLIgotKwllY2hvICJHQjE4MDMwIEdCMTgwMzAiCi0rCWVjaG8gImNuczExNjQzIEVVQy1UVyIKLSsJZWNobyAiNTYwMSBFVUMtS1IiCi0rCWVjaG8gImtvX0tSLmpvaGFwOTIgSk9IQUIiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiUENLIFNISUZUX0pJUyIKLSsJZWNobyAiVElTNjIwLjI1MzMgVElTLTYyMCIKLSsJI2VjaG8gInN1bl9ldV9ncmVlayA/IiAjIHdoYXQgaXMgdGhpcz8KLSsJZWNobyAiVVRGLTggVVRGLTgiCi0rCTs7Ci0rICAgIGZyZWVic2QqIHwgb3MyKikKLSsJIyBGcmVlQlNEIDQuMiBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQotKwkjIGxvY2FsY2hhcnNldC5jIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGZ1bGwgbG9jYWxlIG5hbWUKLSsJIyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0rCSMgTGlrZXdpc2UgZm9yIE9TLzIuIE9TLzIgaGFzIFhGcmVlODYganVzdCBsaWtlIEZyZWVCU0QuIEp1c3QKLSsJIyByZXVzZSBGcmVlQlNEJ3MgbG9jYWxlIGRhdGEgZm9yIE9TLzIuCi0rCWVjaG8gIkMgQVNDSUkiCi0rCWVjaG8gIlVTLUFTQ0lJIEFTQ0lJIgotKwlmb3IgbCBpbiBsYV9MTiBsdF9MTjsgZG8KLSsJICBlY2hvICIkbC5BU0NJSSBBU0NJSSIKLSsJZG9uZQotKwlmb3IgbCBpbiBkYV9ESyBkZV9BVCBkZV9DSCBkZV9ERSBlbl9BVSBlbl9DQSBlbl9HQiBlbl9VUyBlc19FUyBcCi0rCSAgICAgICAgIGZpX0ZJIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIGlzX0lTIGl0X0NIIGl0X0lUIGxhX0xOIFwKLSsJICAgICAgICAgbHRfTE4gbmxfQkUgbmxfTkwgbm9fTk8gcHRfUFQgc3ZfU0U7IGRvCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktMSBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLkRJU184ODU5LTE1IElTTy04ODU5LTE1IgotKwlkb25lCi0rCWZvciBsIGluIGNzX0NaIGhyX0hSIGh1X0hVIGxhX0xOIGx0X0xOIHBsX1BMIHNsX1NJOyBkbwotKwkgIGVjaG8gIiRsLklTT184ODU5LTIgSVNPLTg4NTktMiIKLSsJZG9uZQotKwlmb3IgbCBpbiBsYV9MTiBsdF9MVDsgZG8KLSsJICBlY2hvICIkbC5JU09fODg1OS00IElTTy04ODU5LTQiCi0rCWRvbmUKLSsJZm9yIGwgaW4gcnVfUlUgcnVfU1U7IGRvCi0rCSAgZWNobyAiJGwuS09JOC1SIEtPSTgtUiIKLSsJICBlY2hvICIkbC5JU09fODg1OS01IElTTy04ODU5LTUiCi0rCSAgZWNobyAiJGwuQ1A4NjYgQ1A4NjYiCi0rCWRvbmUKLSsJZWNobyAidWtfVUEuS09JOC1VIEtPSTgtVSIKLSsJZWNobyAiemhfVFcuQklHNSBCSUc1IgotKwllY2hvICJ6aF9UVy5CaWc1IEJJRzUiCi0rCWVjaG8gInpoX0NOLkVVQyBHQjIzMTIiCi0rCWVjaG8gImphX0pQLkVVQyBFVUMtSlAiCi0rCWVjaG8gImphX0pQLlNKSVMgU0hJRlRfSklTIgotKwllY2hvICJqYV9KUC5TaGlmdF9KSVMgU0hJRlRfSklTIgotKwllY2hvICJrb19LUi5FVUMgRVVDLUtSIgotKwk7OwotKyAgICBuZXRic2QqKQotKwllY2hvICI2NDYgQVNDSUkiCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJldWNDTiBHQjIzMTIiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiZXVjS1IgRVVDLUtSIgotKwllY2hvICJldWNUVyBFVUMtVFciCi0rCWVjaG8gIkJJRzUgQklHNSIKLSsJZWNobyAiU0pJUyBTSElGVF9KSVMiCi0rCTs7Ci0rICAgIGRhcndpbiopCi0rCSMgRGFyd2luIDYuOCBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQotKwkjIGxvY2FsY2hhcnNldC5jIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGZ1bGwgbG9jYWxlIG5hbWUKLSsJIyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0rCWVjaG8gIkMgQVNDSUkiCi0rCWZvciBsIGluIGVuX0FVIGVuX0NBIGVuX0dCIGVuX1VTIGxhX0xOOyBkbwotKwkgIGVjaG8gIiRsLlVTLUFTQ0lJIEFTQ0lJIgotKwlkb25lCi0rCWZvciBsIGluIGRhX0RLIGRlX0FUIGRlX0NIIGRlX0RFIGVuX0FVIGVuX0NBIGVuX0dCIGVuX1VTIGVzX0VTIFwKLSsJICAgICAgICAgZmlfRkkgZnJfQkUgZnJfQ0EgZnJfQ0ggZnJfRlIgaXNfSVMgaXRfQ0ggaXRfSVQgbmxfQkUgXAotKwkgICAgICAgICBubF9OTCBub19OTyBwdF9QVCBzdl9TRTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLklTTzg4NTktMSBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbGFfTE47IGRvCi0rCSAgZWNobyAiJGwuSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZG9uZQotKwlmb3IgbCBpbiBjc19DWiBocl9IUiBodV9IVSBsYV9MTiBwbF9QTCBzbF9TSTsgZG8KLSsJICBlY2hvICIkbC5JU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZG9uZQotKwlmb3IgbCBpbiBsYV9MTiBsdF9MVDsgZG8KLSsJICBlY2hvICIkbC5JU084ODU5LTQgSVNPLTg4NTktNCIKLSsJZG9uZQotKwlmb3IgbCBpbiBydV9SVTsgZG8KLSsJICBlY2hvICIkbC5LT0k4LVIgS09JOC1SIgotKwkgIGVjaG8gIiRsLklTTzg4NTktNSBJU08tODg1OS01IgotKwkgIGVjaG8gIiRsLkNQODY2IENQODY2IgotKwlkb25lCi0rCWZvciBsIGluIGJnX0JHOyBkbwotKwkgIGVjaG8gIiRsLkNQMTI1MSBDUDEyNTEiCi0rCWRvbmUKLSsJZWNobyAidWtfVUEuS09JOC1VIEtPSTgtVSIKLSsJZWNobyAiemhfVFcuQklHNSBCSUc1IgotKwllY2hvICJ6aF9UVy5CaWc1IEJJRzUiCi0rCWVjaG8gInpoX0NOLkVVQyBHQjIzMTIiCi0rCWVjaG8gImphX0pQLkVVQyBFVUMtSlAiCi0rCWVjaG8gImphX0pQLlNKSVMgU0hJRlRfSklTIgotKwllY2hvICJrb19LUi5FVUMgRVVDLUtSIgotKwk7OwotKyAgICBiZW9zKikKLSsJIyBCZU9TIGhhcyBhIHNpbmdsZSBsb2NhbGUsIGFuZCBpdCBoYXMgVVRGLTggZW5jb2RpbmcuCi0rCWVjaG8gIiogVVRGLTgiCi0rCTs7Ci0rICAgIG1zZG9zZGpncHAqKQotKwkjIERKR1BQIDIuMDMgZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwllY2hvICIjIgotKwllY2hvICIjIFRoZSBlbmNvZGluZ3MgZ2l2ZW4gaGVyZSBtYXkgbm90IGFsbCBiZSBjb3JyZWN0LiIKLSsJZWNobyAiIyBJZiB5b3UgZmluZCB0aGF0IHRoZSBlbmNvZGluZyBnaXZlbiBmb3IgeW91ciBsYW5ndWFnZSBhbmQiCi0rCWVjaG8gIiMgY291bnRyeSBpcyBub3QgdGhlIG9uZSB5b3VyIERPUyBtYWNoaW5lIGFjdHVhbGx5IHVzZXMsIGp1c3QiCi0rCWVjaG8gIiMgY29ycmVjdCBpdCBpbiB0aGlzIGZpbGUsIGFuZCBzZW5kIGEgbWFpbCB0byIKLSsJZWNobyAiIyBKdWFuIE1hbnVlbCBHdWVycmVybyA8c3QwMDE5MDZAaHJ6MS5ocnoudHUtZGFybXN0YWR0LmRlPiIKLSsJZWNobyAiIyBhbmQgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LiIKLSsJZWNobyAiIyIKLSsJZWNobyAiQyBBU0NJSSIKLSsJIyBJU08tODg1OS0xIGxhbmd1YWdlcwotKwllY2hvICJjYSBDUDg1MCIKLSsJZWNobyAiY2FfRVMgQ1A4NTAiCi0rCWVjaG8gImRhIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJkYV9ESyBDUDg2NSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAiZGUgQ1A4NTAiCi0rCWVjaG8gImRlX0FUIENQODUwIgotKwllY2hvICJkZV9DSCBDUDg1MCIKLSsJZWNobyAiZGVfREUgQ1A4NTAiCi0rCWVjaG8gImVuIENQODUwIgotKwllY2hvICJlbl9BVSBDUDg1MCIgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiZW5fQ0EgQ1A4NTAiCi0rCWVjaG8gImVuX0dCIENQODUwIgotKwllY2hvICJlbl9OWiBDUDQzNyIKLSsJZWNobyAiZW5fVVMgQ1A0MzciCi0rCWVjaG8gImVuX1pBIENQODUwIiAjIG5vdCBDUDQzNyA/PwotKwllY2hvICJlcyBDUDg1MCIKLSsJZWNobyAiZXNfQVIgQ1A4NTAiCi0rCWVjaG8gImVzX0JPIENQODUwIgotKwllY2hvICJlc19DTCBDUDg1MCIKLSsJZWNobyAiZXNfQ08gQ1A4NTAiCi0rCWVjaG8gImVzX0NSIENQODUwIgotKwllY2hvICJlc19DVSBDUDg1MCIKLSsJZWNobyAiZXNfRE8gQ1A4NTAiCi0rCWVjaG8gImVzX0VDIENQODUwIgotKwllY2hvICJlc19FUyBDUDg1MCIKLSsJZWNobyAiZXNfR1QgQ1A4NTAiCi0rCWVjaG8gImVzX0hOIENQODUwIgotKwllY2hvICJlc19NWCBDUDg1MCIKLSsJZWNobyAiZXNfTkkgQ1A4NTAiCi0rCWVjaG8gImVzX1BBIENQODUwIgotKwllY2hvICJlc19QWSBDUDg1MCIKLSsJZWNobyAiZXNfUEUgQ1A4NTAiCi0rCWVjaG8gImVzX1NWIENQODUwIgotKwllY2hvICJlc19VWSBDUDg1MCIKLSsJZWNobyAiZXNfVkUgQ1A4NTAiCi0rCWVjaG8gImV0IENQODUwIgotKwllY2hvICJldF9FRSBDUDg1MCIKLSsJZWNobyAiZXUgQ1A4NTAiCi0rCWVjaG8gImV1X0VTIENQODUwIgotKwllY2hvICJmaSBDUDg1MCIKLSsJZWNobyAiZmlfRkkgQ1A4NTAiCi0rCWVjaG8gImZyIENQODUwIgotKwllY2hvICJmcl9CRSBDUDg1MCIKLSsJZWNobyAiZnJfQ0EgQ1A4NTAiCi0rCWVjaG8gImZyX0NIIENQODUwIgotKwllY2hvICJmcl9GUiBDUDg1MCIKLSsJZWNobyAiZ2EgQ1A4NTAiCi0rCWVjaG8gImdhX0lFIENQODUwIgotKwllY2hvICJnZCBDUDg1MCIKLSsJZWNobyAiZ2RfR0IgQ1A4NTAiCi0rCWVjaG8gImdsIENQODUwIgotKwllY2hvICJnbF9FUyBDUDg1MCIKLSsJZWNobyAiaWQgQ1A4NTAiICAgICMgbm90IENQNDM3ID8/Ci0rCWVjaG8gImlkX0lEIENQODUwIiAjIG5vdCBDUDQzNyA/PwotKwllY2hvICJpcyBDUDg2MSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAiaXNfSVMgQ1A4NjEiICMgbm90IENQODUwID8/Ci0rCWVjaG8gIml0IENQODUwIgotKwllY2hvICJpdF9DSCBDUDg1MCIKLSsJZWNobyAiaXRfSVQgQ1A4NTAiCi0rCWVjaG8gImx0IENQNzc1IgotKwllY2hvICJsdF9MVCBDUDc3NSIKLSsJZWNobyAibHYgQ1A3NzUiCi0rCWVjaG8gImx2X0xWIENQNzc1IgotKwllY2hvICJuYiBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibmJfTk8gQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5sIENQODUwIgotKwllY2hvICJubF9CRSBDUDg1MCIKLSsJZWNobyAibmxfTkwgQ1A4NTAiCi0rCWVjaG8gIm5uIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJubl9OTyBDUDg2NSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibm8gQ1A4NjUiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5vX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJwdCBDUDg1MCIKLSsJZWNobyAicHRfQlIgQ1A4NTAiCi0rCWVjaG8gInB0X1BUIENQODUwIgotKwllY2hvICJzdiBDUDg1MCIKLSsJZWNobyAic3ZfU0UgQ1A4NTAiCi0rCSMgSVNPLTg4NTktMiBsYW5ndWFnZXMKLSsJZWNobyAiY3MgQ1A4NTIiCi0rCWVjaG8gImNzX0NaIENQODUyIgotKwllY2hvICJociBDUDg1MiIKLSsJZWNobyAiaHJfSFIgQ1A4NTIiCi0rCWVjaG8gImh1IENQODUyIgotKwllY2hvICJodV9IVSBDUDg1MiIKLSsJZWNobyAicGwgQ1A4NTIiCi0rCWVjaG8gInBsX1BMIENQODUyIgotKwllY2hvICJybyBDUDg1MiIKLSsJZWNobyAicm9fUk8gQ1A4NTIiCi0rCWVjaG8gInNrIENQODUyIgotKwllY2hvICJza19TSyBDUDg1MiIKLSsJZWNobyAic2wgQ1A4NTIiCi0rCWVjaG8gInNsX1NJIENQODUyIgotKwllY2hvICJzcSBDUDg1MiIKLSsJZWNobyAic3FfQUwgQ1A4NTIiCi0rCWVjaG8gInNyIENQODUyIiAgICAjIENQODUyIG9yIENQODY2IG9yIENQODU1ID8/Ci0rCWVjaG8gInNyX0NTIENQODUyIiAjIENQODUyIG9yIENQODY2IG9yIENQODU1ID8/Ci0rCWVjaG8gInNyX1lVIENQODUyIiAjIENQODUyIG9yIENQODY2IG9yIENQODU1ID8/Ci0rCSMgSVNPLTg4NTktMyBsYW5ndWFnZXMKLSsJZWNobyAibXQgQ1A4NTAiCi0rCWVjaG8gIm10X01UIENQODUwIgotKwkjIElTTy04ODU5LTUgbGFuZ3VhZ2VzCi0rCWVjaG8gImJlIENQODY2IgotKwllY2hvICJiZV9CRSBDUDg2NiIKLSsJZWNobyAiYmcgQ1A4NjYiICAgICMgbm90IENQODU1ID8/Ci0rCWVjaG8gImJnX0JHIENQODY2IiAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJtayBDUDg2NiIgICAgIyBub3QgQ1A4NTUgPz8KLSsJZWNobyAibWtfTUsgQ1A4NjYiICMgbm90IENQODU1ID8/Ci0rCWVjaG8gInJ1IENQODY2IgotKwllY2hvICJydV9SVSBDUDg2NiIKLSsJZWNobyAidWsgQ1AxMTI1IgotKwllY2hvICJ1a19VQSBDUDExMjUiCi0rCSMgSVNPLTg4NTktNiBsYW5ndWFnZXMKLSsJZWNobyAiYXIgQ1A4NjQiCi0rCWVjaG8gImFyX0FFIENQODY0IgotKwllY2hvICJhcl9EWiBDUDg2NCIKLSsJZWNobyAiYXJfRUcgQ1A4NjQiCi0rCWVjaG8gImFyX0lRIENQODY0IgotKwllY2hvICJhcl9JUiBDUDg2NCIKLSsJZWNobyAiYXJfSk8gQ1A4NjQiCi0rCWVjaG8gImFyX0tXIENQODY0IgotKwllY2hvICJhcl9NQSBDUDg2NCIKLSsJZWNobyAiYXJfT00gQ1A4NjQiCi0rCWVjaG8gImFyX1FBIENQODY0IgotKwllY2hvICJhcl9TQSBDUDg2NCIKLSsJZWNobyAiYXJfU1kgQ1A4NjQiCi0rCSMgSVNPLTg4NTktNyBsYW5ndWFnZXMKLSsJZWNobyAiZWwgQ1A4NjkiCi0rCWVjaG8gImVsX0dSIENQODY5IgotKwkjIElTTy04ODU5LTggbGFuZ3VhZ2VzCi0rCWVjaG8gImhlIENQODYyIgotKwllY2hvICJoZV9JTCBDUDg2MiIKLSsJIyBJU08tODg1OS05IGxhbmd1YWdlcwotKwllY2hvICJ0ciBDUDg1NyIKLSsJZWNobyAidHJfVFIgQ1A4NTciCi0rCSMgSmFwYW5lc2UKLSsJZWNobyAiamEgQ1A5MzIiCi0rCWVjaG8gImphX0pQIENQOTMyIgotKwkjIENoaW5lc2UKLSsJZWNobyAiemhfQ04gR0JLIgotKwllY2hvICJ6aF9UVyBDUDk1MCIgIyBub3QgQ1A5MzggPz8KLSsJIyBLb3JlYW4KLSsJZWNobyAia3IgQ1A5NDkiICAgICMgbm90IENQOTM0ID8/Ci0rCWVjaG8gImtyX0tSIENQOTQ5IiAjIG5vdCBDUDkzNCA/PwotKwkjIFRoYWkKLSsJZWNobyAidGggQ1A4NzQiCi0rCWVjaG8gInRoX1RIIENQODc0IgotKwkjIE90aGVyCi0rCWVjaG8gImVvIENQODUwIgotKwllY2hvICJlb19FTyBDUDg1MCIKLSsJOzsKLStlc2FjCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZGNnZXR0ZXh0LmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zNTk3NDc0ODAgLTA0MDAKLUBAIC0xLDU5MyArMSw1NiBAQAotLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY2dldHRleHQoMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLSNpZmRlZiBfX0dOVUNfXwotLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0tIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQotLSNlbHNlCi0tIyBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgotLSMgZWxzZQotLSMgIGlmZGVmIF9BSVgKLS0gI3ByYWdtYSBhbGxvY2EKLS0jICBlbHNlCi0tIyAgIGlmbmRlZiBhbGxvY2EKLS1jaGFyICphbGxvY2EgKCk7Ci0tIyAgIGVuZGlmCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2lmbmRlZiBlcnJubwotLWV4dGVybiBpbnQgZXJybm87Ci0tI2VuZGlmCi0tI2lmbmRlZiBfX3NldF9lcnJubwotLSMgZGVmaW5lIF9fc2V0X2Vycm5vKHZhbCkgZXJybm8gPSAodmFsKQotLSNlbmRpZgotLQotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLWNoYXIgKmdldGVudiAoKTsKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIF9HTlVfU09VUkNFCi0tIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKLS0jIGVuZGlmCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSNlbmRpZgotLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBzdHJjaHIKLS0jICBkZWZpbmUgc3RyY2hyIGluZGV4Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLSAjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotLSNpbmNsdWRlICJoYXNoLXN0cmluZy5oIgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLS0jaWZkZWYgX0xJQkMKLS0vKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKLS0gICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0Ci0tICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLwotLSMgZGVmaW5lIGdldGN3ZCBfX2dldGN3ZAotLSMgZGVmaW5lIHN0cGNweSBfX3N0cGNweQotLSNlbHNlCi0tIyBpZiAhZGVmaW5lZCBIQVZFX0dFVENXRAotLWNoYXIgKmdldHdkICgpOwotLSMgIGRlZmluZSBnZXRjd2QoYnVmLCBtYXgpIGdldHdkIChidWYpCi0tIyBlbHNlCi0tY2hhciAqZ2V0Y3dkICgpOwotLSMgZW5kaWYKLS0jIGlmbmRlZiBIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLS8qIEFtb3VudCB0byBpbmNyZWFzZSBidWZmZXIgc2l6ZSBieSBpbiBlYWNoIHRyeS4gICovCi0tI2RlZmluZSBQQVRIX0lOQ1IgMzIKLS0KLS0vKiBUaGUgZm9sbG93aW5nIGlzIGZyb20gcGF0aG1heC5oLiAgKi8KLS0vKiBOb24tUE9TSVggQlNEIHN5c3RlbXMgbWlnaHQgaGF2ZSBnY2MncyBsaW1pdHMuaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKLS0gICBQQVRIX01BWCBidXQgbWlnaHQgY2F1c2UgcmVkZWZpbml0aW9uIHdhcm5pbmdzIHdoZW4gc3lzL3BhcmFtLmggaXMKLS0gICBsYXRlciBpbmNsdWRlZCAoYXMgb24gTU9SRS9CU0QgNC4zKS4gICovCi0tI2lmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pIHx8IChkZWZpbmVkKEhBVkVfTElNSVRTX0gpICYmICFkZWZpbmVkKF9fR05VQ19fKSkKLS0jIGluY2x1ZGUgPGxpbWl0cy5oPgotLSNlbmRpZgotLQotLSNpZm5kZWYgX1BPU0lYX1BBVEhfTUFYCi0tIyBkZWZpbmUgX1BPU0lYX1BBVEhfTUFYIDI1NQotLSNlbmRpZgotLQotLSNpZiAhZGVmaW5lZChQQVRIX01BWCkgJiYgZGVmaW5lZChfUENfUEFUSF9NQVgpCi0tIyBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCi0tI2VuZGlmCi0tCi0tLyogRG9uJ3QgaW5jbHVkZSBzeXMvcGFyYW0uaCBpZiBpdCBhbHJlYWR5IGhhcyBiZWVuLiAgKi8KLS0jaWYgZGVmaW5lZChIQVZFX1NZU19QQVJBTV9IKSAmJiAhZGVmaW5lZChQQVRIX01BWCkgJiYgIWRlZmluZWQoTUFYUEFUSExFTikKLS0jIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotLSNlbmRpZgotLQotLSNpZiAhZGVmaW5lZChQQVRIX01BWCkgJiYgZGVmaW5lZChNQVhQQVRITEVOKQotLSMgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLS0jZW5kaWYKLS0KLS0jaWZuZGVmIFBBVEhfTUFYCi0tIyBkZWZpbmUgUEFUSF9NQVggX1BPU0lYX1BBVEhfTUFYCi0tI2VuZGlmCi0tCi0tLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKLS0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKLS0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJwotLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCi0tICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCi0tICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KLS0jaWZkZWYgX0xJQkMKLS0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCi0tI2VuZGlmCi0tCi0tLyogTmFtZSBvZiB0aGUgZGVmYXVsdCBkb21haW4gdXNlZCBmb3IgZ2V0dGV4dCgzKSBwcmlvciBhbnkgY2FsbCB0bwotLSAgIHRleHRkb21haW4oMykuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpcyAibWVzc2FnZXMiLiAgKi8KLS1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW10gPSAibWVzc2FnZXMiOwotLQotLS8qIFZhbHVlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZG9tYWluIGZvciBnZXR0ZXh0KDMpLiAgKi8KLS1jb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOwotLQotLS8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KLS1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXSA9IEdOVUxPQ0FMRURJUjsKLS0KLS0vKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucyBjcmVhdGVkIGJ5IGJpbmR0ZXh0ZG9tYWluKCkKLS0gICBjYWxscy4gICovCi0tc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7Ci0tCi0tLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLS1zdGF0aWMgY2hhciAqZmluZF9tc2cgUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0tCQkJICAgICAgIGNvbnN0IGNoYXIgKm1zZ2lkKSk7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNhdGVnb3J5X3RvX25hbWUgUEFSQU1TICgoaW50IGNhdGVnb3J5KSk7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmd1ZXNzX2NhdGVnb3J5X3ZhbHVlIFBBUkFNUyAoKGludCBjYXRlZ29yeSwKLS0JCQkJCQkgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKSk7Ci0tCi0tCi0tLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0tICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KLS0jaWZkZWYgSEFWRV9BTExPQ0EKLS0vKiBOb3RoaW5nIGhhcyB0byBiZSBkb25lLiAgKi8KLS0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcmVzcykgLyogbm90aGluZyAqLwotLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KLS0jZWxzZQotLXN0cnVjdCBibG9ja19saXN0Ci0tewotLSAgdm9pZCAqYWRkcmVzczsKLS0gIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OwotLX07Ci0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCi0tICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKLS0gICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCi0tICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAotLSAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKLS0gICAgfQkJCQkJCQkJCSAgICAgIFwKLS0gIH0gd2hpbGUgKDApCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCi0tICBkbyB7CQkJCQkJCQkJICAgICAgXAotLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAotLSAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAotLSAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKLS0gICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgdW5kZWYgYWxsb2NhCi0tIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQotLSNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLwotLQotLQotIC8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSAgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0gICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBEQ0dFVFRFWFQgX19kY2dldHRleHQKLSsjIGRlZmluZSBEQ0lHRVRURVhUIF9fZGNpZ2V0dGV4dAotICNlbHNlCi0tIyBkZWZpbmUgRENHRVRURVhUIGRjZ2V0dGV4dF9fCi0rIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0Ci0rIyBkZWZpbmUgRENJR0VUVEVYVCBsaWJpbnRsX2RjaWdldHRleHQKLSAjZW5kaWYKLSAKLSAvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKLSAgICBsb2NhbGUuICAqLwotIGNoYXIgKgotLURDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotLSAgICAgaW50IGNhdGVnb3J5OwotK0RDR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSkKLSB7Ci0tI2lmbmRlZiBIQVZFX0FMTE9DQQotLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOwotLSNlbmRpZgotLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOwotLSAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7Ci0tICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7Ci0tICBjb25zdCBjaGFyICpjYXRlZ29yeXZhbHVlOwotLSAgY2hhciAqZGlybmFtZSwgKnhkb21haW5uYW1lOwotLSAgY2hhciAqc2luZ2xlX2xvY2FsZTsKLS0gIGNoYXIgKnJldHZhbDsKLS0gIGludCBzYXZlZF9lcnJubyA9IGVycm5vOwotLQotLSAgLyogSWYgbm8gcmVhbCBNU0dJRCBpcyBnaXZlbiByZXR1cm4gTlVMTC4gICovCi0tICBpZiAobXNnaWQgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tCi0tICAvKiBJZiBET01BSU5OQU1FIGlzIE5VTEwsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBkZWZhdWx0IGRvbWFpbi4gIElmCi0tICAgICBDQVRFR09SWSBpcyBub3QgTENfTUVTU0FHRVMgdGhpcyBtaWdodCBub3QgbWFrZSBtdWNoIHNlbnNlIGJ1dCB0aGUKLS0gICAgIGRlZmludGlvbiBsZWZ0IHRoaXMgdW5kZWZpbmVkLiAgKi8KLS0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0tICAgIGRvbWFpbm5hbWUgPSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLS0KLS0gIC8qIEZpcnN0IGZpbmQgbWF0Y2hpbmcgYmluZGluZy4gICovCi0tICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQotLSAgICB7Ci0tICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOwotLSAgICAgIGlmIChjb21wYXJlID09IDApCi0tCS8qIFdlIGZvdW5kIGl0ISAgKi8KLS0JYnJlYWs7Ci0tICAgICAgaWYgKGNvbXBhcmUgPCAwKQotLQl7Ci0tCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KLS0JICBiaW5kaW5nID0gTlVMTDsKLS0JICBicmVhazsKLS0JfQotLSAgICB9Ci0tCi0tICBpZiAoYmluZGluZyA9PSBOVUxMKQotLSAgICBkaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKLS0gIGVsc2UgaWYgKGJpbmRpbmctPmRpcm5hbWVbMF0gPT0gJy8nKQotLSAgICBkaXJuYW1lID0gYmluZGluZy0+ZGlybmFtZTsKLS0gIGVsc2UKLS0gICAgewotLSAgICAgIC8qIFdlIGhhdmUgYSByZWxhdGl2ZSBwYXRoLiAgTWFrZSBpdCBhYnNvbHV0ZSBub3cuICAqLwotLSAgICAgIHNpemVfdCBkaXJuYW1lX2xlbiA9IHN0cmxlbiAoYmluZGluZy0+ZGlybmFtZSkgKyAxOwotLSAgICAgIHNpemVfdCBwYXRoX21heDsKLS0gICAgICBjaGFyICpyZXQ7Ci0tCi0tICAgICAgcGF0aF9tYXggPSAodW5zaWduZWQpIFBBVEhfTUFYOwotLSAgICAgIHBhdGhfbWF4ICs9IDI7CQkvKiBUaGUgZ2V0Y3dkIGRvY3Mgc2F5IHRvIGRvIHRoaXMuICAqLwotLQotLSAgICAgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOwotLSAgICAgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7Ci0tCi0tICAgICAgX19zZXRfZXJybm8gKDApOwotLSAgICAgIHdoaWxlICgocmV0ID0gZ2V0Y3dkIChkaXJuYW1lLCBwYXRoX21heCkpID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKQotLQl7Ci0tCSAgcGF0aF9tYXggKz0gUEFUSF9JTkNSOwotLQkgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOwotLQkgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7Ci0tCSAgX19zZXRfZXJybm8gKDApOwotLQl9Ci0tCi0tICAgICAgaWYgKHJldCA9PSBOVUxMKQotLQl7Ci0tCSAgLyogV2UgY2Fubm90IGdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIERvbid0IHNpZ25hbCBhbgotLQkgICAgIGVycm9yIGJ1dCBzaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHN0cmluZy4gICovCi0tCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0tCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOwotLQl9Ci0tCi0tICAgICAgc3RwY3B5IChzdHBjcHkgKHN0cmNociAoZGlybmFtZSwgJ1wwJyksICIvIiksIGJpbmRpbmctPmRpcm5hbWUpOwotLSAgICB9Ci0tCi0tICAvKiBOb3cgZGV0ZXJtaW5lIHRoZSBzeW1ib2xpYyBuYW1lIG9mIENBVEVHT1JZIGFuZCBpdHMgdmFsdWUuICAqLwotLSAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOwotLSAgY2F0ZWdvcnl2YWx1ZSA9IGd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKLS0KLS0gIHhkb21haW5uYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5bmFtZSkKLS0JCQkJICsgc3RybGVuIChkb21haW5uYW1lKSArIDUpOwotLSAgQUREX0JMT0NLIChibG9ja19saXN0LCB4ZG9tYWlubmFtZSk7Ci0tCi0tICBzdHBjcHkgKHN0cGNweSAoc3RwY3B5IChzdHBjcHkgKHhkb21haW5uYW1lLCBjYXRlZ29yeW5hbWUpLCAiLyIpLAotLQkJICBkb21haW5uYW1lKSwKLS0JICAiLm1vIik7Ci0tCi0tICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLwotLSAgc2luZ2xlX2xvY2FsZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeXZhbHVlKSArIDEpOwotLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBzaW5nbGVfbG9jYWxlKTsKLS0KLS0KLS0gIC8qIFNlYXJjaCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gIFRoaXMgaXMgYSBsb29wIGJlY2F1c2Ugd2UgcGVyaGFwcwotLSAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoIHRyYW5zbGF0aW9uLiAgKi8KLS0gIHdoaWxlICgxKQotLSAgICB7Ci0tICAgICAgLyogTWFrZSBDQVRFR09SWVZBTFVFIHBvaW50IHRvIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGxpc3QuICAqLwotLSAgICAgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSA9PSAnOicpCi0tCSsrY2F0ZWdvcnl2YWx1ZTsKLS0gICAgICBpZiAoY2F0ZWdvcnl2YWx1ZVswXSA9PSAnXDAnKQotLQl7Ci0tCSAgLyogVGhlIHdob2xlIGNvbnRlbnRzIG9mIENBVEVHT1JZVkFMVUUgaGFzIGJlZW4gc2VhcmNoZWQgYnV0Ci0tCSAgICAgbm8gdmFsaWQgZW50cnkgaGFzIGJlZW4gZm91bmQuICBXZSBzb2x2ZSB0aGlzIHNpdHVhdGlvbgotLQkgICAgIGJ5IGltcGxpY2l0bHkgYXBwZW5kaW5nIGEgIkMiIGVudHJ5LCBpLmUuIG5vIHRyYW5zbGF0aW9uCi0tCSAgICAgd2lsbCB0YWtlIHBsYWNlLiAgKi8KLS0JICBzaW5nbGVfbG9jYWxlWzBdID0gJ0MnOwotLQkgIHNpbmdsZV9sb2NhbGVbMV0gPSAnXDAnOwotLQl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgY2hhciAqY3AgPSBzaW5nbGVfbG9jYWxlOwotLQkgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSAhPSAnOicpCi0tCSAgICAqY3ArKyA9ICpjYXRlZ29yeXZhbHVlKys7Ci0tCSAgKmNwID0gJ1wwJzsKLS0JfQotLQotLSAgICAgIC8qIElmIHRoZSBjdXJyZW50IGxvY2FsZSB2YWx1ZSBpcyBDIChvciBQT1NJWCkgd2UgZG9uJ3QgbG9hZCBhCi0tCSBkb21haW4uICBSZXR1cm4gdGhlIE1TR0lELiAgKi8KLS0gICAgICBpZiAoc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiQyIpID09IDAKLS0JICB8fCBzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJQT1NJWCIpID09IDApCi0tCXsKLS0JICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0tCSAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKLS0JICByZXR1cm4gKGNoYXIgKikgbXNnaWQ7Ci0tCX0KLS0KLS0KLS0gICAgICAvKiBGaW5kIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGNhdGFsb2cgbWF0Y2hpbmcgdGhlCi0tCSBET01BSU5OQU1FIGFuZCBDQVRFR09SWS4gICovCi0tICAgICAgZG9tYWluID0gX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBzaW5nbGVfbG9jYWxlLCB4ZG9tYWlubmFtZSk7Ci0tCi0tICAgICAgaWYgKGRvbWFpbiAhPSBOVUxMKQotLQl7Ci0tCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbiwgbXNnaWQpOwotLQotLQkgIGlmIChyZXR2YWwgPT0gTlVMTCkKLS0JICAgIHsKLS0JICAgICAgaW50IGNudDsKLS0KLS0JICAgICAgZm9yIChjbnQgPSAwOyBkb21haW4tPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotLQkJewotLQkJICByZXR2YWwgPSBmaW5kX21zZyAoZG9tYWluLT5zdWNjZXNzb3JbY250XSwgbXNnaWQpOwotLQotLQkJICBpZiAocmV0dmFsICE9IE5VTEwpCi0tCQkgICAgYnJlYWs7Ci0tCQl9Ci0tCSAgICB9Ci0tCi0tCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotLQkgICAgewotLQkgICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0tCSAgICAgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0tCSAgICAgIHJldHVybiByZXR2YWw7Ci0tCSAgICB9Ci0tCX0KLS0gICAgfQotLSAgLyogTk9UUkVBQ0hFRCAqLwotKyAgcmV0dXJuIERDSUdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBOVUxMLCAwLCAwLCBjYXRlZ29yeSk7Ci0gfQotIAotICNpZmRlZiBfTElCQwotIC8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK0lOVERFRihfX2RjZ2V0dGV4dCkKLSB3ZWFrX2FsaWFzIChfX2RjZ2V0dGV4dCwgZGNnZXR0ZXh0KTsKLSAjZW5kaWYKLS0KLS0KLS1zdGF0aWMgY2hhciAqCi0tZmluZF9tc2cgKGRvbWFpbl9maWxlLCBtc2dpZCkKLS0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0tewotLSAgc2l6ZV90IHRvcCwgYWN0LCBib3R0b207Ci0tICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOwotLQotLSAgaWYgKGRvbWFpbl9maWxlLT5kZWNpZGVkID09IDApCi0tICAgIF9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUpOwotLQotLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOwotLQotLSAgLyogTG9jYXRlIHRoZSBNU0dJRCBhbmQgaXRzIHRyYW5zbGF0aW9uLiAgKi8KLS0gIGlmIChkb21haW4tPmhhc2hfc2l6ZSA+IDIgJiYgZG9tYWluLT5oYXNoX3RhYiAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgLyogVXNlIHRoZSBoYXNoaW5nIHRhYmxlLiAgKi8KLS0gICAgICBubHNfdWludDMyIGxlbiA9IHN0cmxlbiAobXNnaWQpOwotLSAgICAgIG5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOwotLSAgICAgIG5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKLS0gICAgICBubHNfdWludDMyIGluY3IgPSAxICsgKGhhc2hfdmFsICUgKGRvbWFpbi0+aGFzaF9zaXplIC0gMikpOwotLSAgICAgIG5sc191aW50MzIgbnN0ciA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOwotLQotLSAgICAgIGlmIChuc3RyID09IDApCi0tCS8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLwotLQlyZXR1cm4gTlVMTDsKLS0KLS0gICAgICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCi0tCSAgJiYgc3RyY21wIChtc2dpZCwKLS0JCSAgICAgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCSAgICAgICBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5vZmZzZXQpKSA9PSAwKQotLQlyZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCQkgIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOwotLQotLSAgICAgIHdoaWxlICgxKQotLQl7Ci0tCSAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCi0tCSAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOwotLQkgIGVsc2UKLS0JICAgIGlkeCArPSBpbmNyOwotLQotLQkgIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKLS0JICBpZiAobnN0ciA9PSAwKQotLQkgICAgLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCi0tCSAgICByZXR1cm4gTlVMTDsKLS0KLS0JICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCi0tCSAgICAgICYmIHN0cmNtcCAobXNnaWQsCi0tCQkJIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkJICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkKLS0JICAgICAgICAgPT0gMCkKLS0JICAgIHJldHVybiAoY2hhciAqKSBkb21haW4tPmRhdGEKLS0JICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbbnN0ciAtIDFdLm9mZnNldCk7Ci0tCX0KLS0gICAgICAvKiBOT1RSRUFDSEVEICovCi0tICAgIH0KLS0KLS0gIC8qIE5vdyB3ZSB0cnkgdGhlIGRlZmF1bHQgbWV0aG9kOiAgYmluYXJ5IHNlYXJjaCBpbiB0aGUgc29ydGVkCi0tICAgICBhcnJheSBvZiBtZXNzYWdlcy4gICovCi0tICBib3R0b20gPSAwOwotLSAgdG9wID0gZG9tYWluLT5uc3RyaW5nczsKLS0gIHdoaWxlIChib3R0b20gPCB0b3ApCi0tICAgIHsKLS0gICAgICBpbnQgY21wX3ZhbDsKLS0KLS0gICAgICBhY3QgPSAoYm90dG9tICsgdG9wKSAvIDI7Ci0tICAgICAgY21wX3ZhbCA9IHN0cmNtcCAobXNnaWQsIGRvbWFpbi0+ZGF0YQotLQkJCSAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkgICAgZG9tYWluLT5vcmlnX3RhYlthY3RdLm9mZnNldCkpOwotLSAgICAgIGlmIChjbXBfdmFsIDwgMCkKLS0JdG9wID0gYWN0OwotLSAgICAgIGVsc2UgaWYgKGNtcF92YWwgPiAwKQotLQlib3R0b20gPSBhY3QgKyAxOwotLSAgICAgIGVsc2UKLS0JYnJlYWs7Ci0tICAgIH0KLS0KLS0gIC8qIElmIGFuIHRyYW5zbGF0aW9uIGlzIGZvdW5kIHJldHVybiB0aGlzLiAgKi8KLS0gIHJldHVybiBib3R0b20gPj0gdG9wID8gTlVMTCA6IChjaGFyICopIGRvbWFpbi0+ZGF0YQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJICAgICBkb21haW4tPnRyYW5zX3RhYlthY3RdLm9mZnNldCk7Ci0tfQotLQotLQotLS8qIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbG9jYWxlIENBVEVHT1JZLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciAqCi0tY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpCi0tICAgICBpbnQgY2F0ZWdvcnk7Ci0tewotLSAgY29uc3QgY2hhciAqcmV0dmFsOwotLQotLSAgc3dpdGNoIChjYXRlZ29yeSkKLS0gIHsKLS0jaWZkZWYgTENfQ09MTEFURQotLSAgY2FzZSBMQ19DT0xMQVRFOgotLSAgICByZXR2YWwgPSAiTENfQ09MTEFURSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19DVFlQRQotLSAgY2FzZSBMQ19DVFlQRToKLS0gICAgcmV0dmFsID0gIkxDX0NUWVBFIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX01PTkVUQVJZCi0tICBjYXNlIExDX01PTkVUQVJZOgotLSAgICByZXR2YWwgPSAiTENfTU9ORVRBUlkiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfTlVNRVJJQwotLSAgY2FzZSBMQ19OVU1FUklDOgotLSAgICByZXR2YWwgPSAiTENfTlVNRVJJQyI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19USU1FCi0tICBjYXNlIExDX1RJTUU6Ci0tICAgIHJldHZhbCA9ICJMQ19USU1FIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX01FU1NBR0VTCi0tICBjYXNlIExDX01FU1NBR0VTOgotLSAgICByZXR2YWwgPSAiTENfTUVTU0FHRVMiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfUkVTUE9OU0UKLS0gIGNhc2UgTENfUkVTUE9OU0U6Ci0tICAgIHJldHZhbCA9ICJMQ19SRVNQT05TRSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19BTEwKLS0gIGNhc2UgTENfQUxMOgotLSAgICAvKiBUaGlzIG1pZ2h0IG5vdCBtYWtlIHNlbnNlIGJ1dCBpcyBwZXJoYXBzIGJldHRlciB0aGFuIGFueSBvdGhlcgotLSAgICAgICB2YWx1ZS4gICovCi0tICAgIHJldHZhbCA9ICJMQ19BTEwiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0gIGRlZmF1bHQ6Ci0tICAgIC8qIElmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgZGVmYXVsdCB2YWx1ZSBsZXQgbWUga25vdy4gICovCi0tICAgIHJldHZhbCA9ICJMQ19YWFgiOwotLSAgfQotLQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0tLyogR3Vlc3MgdmFsdWUgb2YgY3VycmVudCBsb2NhbGUgZnJvbSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciAqCi0tZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpCi0tICAgICBpbnQgY2F0ZWdvcnk7Ci0tICAgICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7Ci0tewotLSAgY29uc3QgY2hhciAqcmV0dmFsOwotLQotLSAgLyogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgdmFsdWUgaXMgdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQKLS0gICAgIHZhcmlhYmxlLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uICAqLwotLSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFOR1VBR0UiKTsKLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLS0gICAgcmV0dXJuIHJldHZhbDsKLS0KLS0gIC8qIGBMQU5HVUFHRScgaXMgbm90IHNldC4gIFNvIHdlIGhhdmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBQT1NJWAotLSAgICAgbWV0aG9kcyBvZiBsb29raW5nIHRvIGBMQ19BTEwnLCBgTENfeHh4JywgYW5kIGBMQU5HJy4gIE9uIHNvbWUKLS0gICAgIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24gaXRzZWxmLiAgKi8KLS0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCi0tICByZXR1cm4gc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCk7Ci0tI2Vsc2UKLS0gIC8qIFNldHRpbmcgb2YgTENfQUxMIG92ZXJ3cml0ZXMgYWxsIG90aGVyLiAgKi8KLS0gIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOwotLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotLSAgICByZXR1cm4gcmV0dmFsOwotLQotLSAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBMYXN0IHBvc3NpYmlsaXR5IGlzIHRoZSBMQU5HIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KLS0gIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLS0gICAgcmV0dXJuIHJldHZhbDsKLS0KLS0gIC8qIFdlIHVzZSBDIGFzIHRoZSBkZWZhdWx0IGRvbWFpbi4gIFBPU0lYIHNheXMgdGhpcyBpcyBpbXBsZW1lbnRhdGlvbgotLSAgICAgZGVmaW5lZC4gICovCi0tICByZXR1cm4gIkMiOwotLSNlbmRpZgotLX0KLS0KLS0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLS0KLS0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQotLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCi0tICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKLS0gICB0byBiZSBkZWZpbmVkLiAgKi8KLS0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICoKLS1zdHBjcHkgKGRlc3QsIHNyYykKLS0gICAgIGNoYXIgKmRlc3Q7Ci0tICAgICBjb25zdCBjaGFyICpzcmM7Ci0tewotLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQotLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7Ci0tICByZXR1cm4gZGVzdCAtIDE7Ci0tfQotLSNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RjaWdldHRleHQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kY2lnZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zNjk3NDU5NjAgLTA0MDAKLUBAIC0wLDAgKzEsMTIxOSBAQAotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbCBkY2lnZXR0ZXh0IGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RyaW5nLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIG1lbXBjcHkoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFCTEKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKwotKyNpZmRlZiBfX0dOVUNfXwotKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0rIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQotKyNlbHNlCi0rIyBpZmRlZiBfTVNDX1ZFUgotKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgotKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQotKyMgZWxzZQotKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgotKyMgIGVsc2UKLSsjICAgaWZkZWYgX0FJWAotKyAjcHJhZ21hIGFsbG9jYQotKyMgICBlbHNlCi0rIyAgICBpZm5kZWYgYWxsb2NhCi0rY2hhciAqYWxsb2NhICgpOwotKyMgICAgZW5kaWYKLSsjICAgZW5kaWYKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaWZuZGVmIGVycm5vCi0rZXh0ZXJuIGludCBlcnJubzsKLSsjZW5kaWYKLSsjaWZuZGVmIF9fc2V0X2Vycm5vCi0rIyBkZWZpbmUgX19zZXRfZXJybm8odmFsKSBlcnJubyA9ICh2YWwpCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmZGVmIF9MSUJDCi0rICAvKiBHdWVzcyB3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgc2lnbmFsIFNJR0ZQRS4KLSsgICAgIFNldCB0byAxIG9ubHkgaWYgeW91IGtub3cgZm9yIHN1cmUuICBJbiBjYXNlIG9mIGRvdWJ0LCBzZXQgdG8gMC4gICovCi0rIyBpZiBkZWZpbmVkIF9fYWxwaGFfXyB8fCBkZWZpbmVkIF9fYXJtX18gfHwgZGVmaW5lZCBfX2kzODZfXyBcCi0rICAgICB8fCBkZWZpbmVkIF9fbTY4a19fIHx8IGRlZmluZWQgX19zMzkwX18KLSsjICBkZWZpbmUgSU5URElWMF9SQUlTRVNfU0lHRlBFIDEKLSsjIGVsc2UKLSsjICBkZWZpbmUgSU5URElWMF9SQUlTRVNfU0lHRlBFIDAKLSsjIGVuZGlmCi0rI2VuZGlmCi0rI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKLSsjIGluY2x1ZGUgPHNpZ25hbC5oPgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIEhBVkVfU1lTX1BBUkFNX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotKyNlbmRpZgotKyNpbmNsdWRlICJoYXNoLXN0cmluZy5oIgotKwotKy8qIFRocmVhZCBzYWZldHluZXNzLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+Ci0rI2Vsc2UKLSsvKiBQcm92aWRlIGR1bW15IGltcGxlbWVudGF0aW9uIGlmIHRoaXMgaXMgb3V0c2lkZSBnbGliYy4gICovCi0rIyBkZWZpbmUgX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19sb2NrX2xvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfbG9ja191bmxvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX2RlZmluZV9pbml0aWFsaXplZChDTEFTUywgTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3JkbG9jayhOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfdW5sb2NrKE5BTUUpCi0rI2VuZGlmCi0rCi0rLyogQWxpZ25tZW50IG9mIHR5cGVzLiAgKi8KLSsjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dOVUNfXyA+PSAyCi0rIyBkZWZpbmUgYWxpZ25vZihUWVBFKSBfX2FsaWdub2ZfXyAoVFlQRSkKLSsjZWxzZQotKyMgZGVmaW5lIGFsaWdub2YoVFlQRSkgXAotKyAgICAoKGludCkgJigoc3RydWN0IHsgY2hhciBkdW1teTE7IFRZUEUgZHVtbXkyOyB9ICopIDApLT5kdW1teTIpCi0rI2VuZGlmCi0rCi0rLyogVGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiB0aGUgc3RhbmRhbG9uZSBsaWJpbnRsLmEgbXVzdCBoYXZlIGRpZmZlcmVudAotKyAgIG5hbWVzIHRoYW4gdGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiBHTlUgbGliYywgb3RoZXJ3aXNlIHByb2dyYW1zCi0rICAgdXNpbmcgbGliaW50bC5hIGNhbm5vdCBiZSBsaW5rZWQgc3RhdGljYWxseS4gICovCi0rI2lmICFkZWZpbmVkIF9MSUJDCi0rIyBkZWZpbmUgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4gbGliaW50bF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluCi0rIyBkZWZpbmUgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gbGliaW50bF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluCi0rIyBkZWZpbmUgX25sX2RlZmF1bHRfZGlybmFtZSBsaWJpbnRsX25sX2RlZmF1bHRfZGlybmFtZQotKyMgZGVmaW5lIF9ubF9kb21haW5fYmluZGluZ3MgbGliaW50bF9ubF9kb21haW5fYmluZGluZ3MKLSsjZW5kaWYKLSsKLSsvKiBTb21lIGNvbXBpbGVycywgbGlrZSBTdW5PUzQgY2MsIGRvbid0IGhhdmUgb2Zmc2V0b2YgaW4gPHN0ZGRlZi5oPi4gICovCi0rI2lmbmRlZiBvZmZzZXRvZgotKyMgZGVmaW5lIG9mZnNldG9mKHR5cGUsaWRlbnQpICgoc2l6ZV90KSYoKCh0eXBlKikwKS0+aWRlbnQpKQotKyNlbmRpZgotKwotKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKLSsgICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0Ci0rICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLwotKyMgZGVmaW5lIGdldGN3ZCBfX2dldGN3ZAotKyMgaWZuZGVmIHN0cGNweQotKyMgIGRlZmluZSBzdHBjcHkgX19zdHBjcHkKLSsjIGVuZGlmCi0rIyBkZWZpbmUgdGZpbmQgX190ZmluZAotKyNlbHNlCi0rIyBpZiAhZGVmaW5lZCBIQVZFX0dFVENXRAotK2NoYXIgKmdldHdkICgpOwotKyMgIGRlZmluZSBnZXRjd2QoYnVmLCBtYXgpIGdldHdkIChidWYpCi0rIyBlbHNlCi0rIyAgaWYgVk1TCi0rIyAgIGRlZmluZSBnZXRjd2QoYnVmLCBtYXgpIChnZXRjd2QpIChidWYsIG1heCwgMCkKLSsjICBlbHNlCi0rY2hhciAqZ2V0Y3dkICgpOwotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfU1RQQ1BZCi0rc3RhdGljIGNoYXIgKnN0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKTsKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9NRU1QQ1BZCi0rc3RhdGljIHZvaWQgKm1lbXBjcHkgKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBBbW91bnQgdG8gaW5jcmVhc2UgYnVmZmVyIHNpemUgYnkgaW4gZWFjaCB0cnkuICAqLwotKyNkZWZpbmUgUEFUSF9JTkNSIDMyCi0rCi0rLyogVGhlIGZvbGxvd2luZyBpcyBmcm9tIHBhdGhtYXguaC4gICovCi0rLyogTm9uLVBPU0lYIEJTRCBzeXN0ZW1zIG1pZ2h0IGhhdmUgZ2NjJ3MgbGltaXRzLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0rICAgUEFUSF9NQVggYnV0IG1pZ2h0IGNhdXNlIHJlZGVmaW5pdGlvbiB3YXJuaW5ncyB3aGVuIHN5cy9wYXJhbS5oIGlzCi0rICAgbGF0ZXIgaW5jbHVkZWQgKGFzIG9uIE1PUkUvQlNEIDQuMykuICAqLwotKyNpZiBkZWZpbmVkIF9QT1NJWF9WRVJTSU9OIHx8IChkZWZpbmVkIEhBVkVfTElNSVRTX0ggJiYgIWRlZmluZWQgX19HTlVDX18pCi0rIyBpbmNsdWRlIDxsaW1pdHMuaD4KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9QT1NJWF9QQVRIX01BWAotKyMgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTUKLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQgUEFUSF9NQVggJiYgZGVmaW5lZCBfUENfUEFUSF9NQVgKLSsjIGRlZmluZSBQQVRIX01BWCAocGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSA8IDEgPyAxMDI0IDogcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSkKLSsjZW5kaWYKLSsKLSsvKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLwotKyNpZiBkZWZpbmVkIEhBVkVfU1lTX1BBUkFNX0ggJiYgIWRlZmluZWQgUEFUSF9NQVggJiYgIWRlZmluZWQgTUFYUEFUSExFTgotKyMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkIFBBVEhfTUFYICYmIGRlZmluZWQgTUFYUEFUSExFTgotKyMgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFBBVEhfTUFYCi0rIyBkZWZpbmUgUEFUSF9NQVggX1BPU0lYX1BBVEhfTUFYCi0rI2VuZGlmCi0rCi0rLyogUGF0aG5hbWUgc3VwcG9ydC4KLSsgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLSsgICBJU19BQlNPTFVURV9QQVRIKFApICB0ZXN0cyB3aGV0aGVyIFAgaXMgYW4gYWJzb2x1dGUgcGF0aC4gIElmIGl0IGlzIG5vdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBpdCBtYXkgYmUgY29uY2F0ZW5hdGVkIHRvIGEgZGlyZWN0b3J5IHBhdGhuYW1lLgotKyAgIElTX1BBVEhfV0lUSF9ESVIoUCkgIHRlc3RzIHdoZXRoZXIgUCBjb250YWlucyBhIGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9uLgotKyAqLwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQotKyMgZGVmaW5lIEhBU19ERVZJQ0UoUCkgXAotKyAgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSBcCi0rICAgICAmJiAoUClbMV0gPT0gJzonKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgKElTU0xBU0ggKChQKVswXSkgfHwgSEFTX0RFVklDRSAoUCkpCi0rIyBkZWZpbmUgSVNfUEFUSF9XSVRIX0RJUihQKSBcCi0rICAgIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCB8fCBzdHJjaHIgKFAsICdcXCcpICE9IE5VTEwgfHwgSEFTX0RFVklDRSAoUCkpCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgSVNTTEFTSCAoKFApWzBdKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMKQotKyNlbmRpZgotKwotKy8qIFRoaXMgaXMgdGhlIHR5cGUgdXNlZCBmb3IgdGhlIHNlYXJjaCB0cmVlIHdoZXJlIGtub3duIHRyYW5zbGF0aW9ucwotKyAgIGFyZSBzdG9yZWQuICAqLwotK3N0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90Ci0rewotKyAgLyogRG9tYWluIGluIHdoaWNoIHRvIHNlYXJjaC4gICovCi0rICBjaGFyICpkb21haW5uYW1lOwotKwotKyAgLyogVGhlIGNhdGVnb3J5LiAgKi8KLSsgIGludCBjYXRlZ29yeTsKLSsKLSsgIC8qIFN0YXRlIG9mIHRoZSBjYXRhbG9nIGNvdW50ZXIgYXQgdGhlIHBvaW50IHRoZSBzdHJpbmcgd2FzIGZvdW5kLiAgKi8KLSsgIGludCBjb3VudGVyOwotKwotKyAgLyogQ2F0YWxvZyB3aGVyZSB0aGUgc3RyaW5nIHdhcyBmb3VuZC4gICovCi0rICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW47Ci0rCi0rICAvKiBBbmQgZmluYWxseSB0aGUgdHJhbnNsYXRpb24uICAqLwotKyAgY29uc3QgY2hhciAqdHJhbnNsYXRpb247Ci0rICBzaXplX3QgdHJhbnNsYXRpb25fbGVuZ3RoOwotKwotKyAgLyogUG9pbnRlciB0byB0aGUgc3RyaW5nIGluIHF1ZXN0aW9uLiAgKi8KLSsgIGNoYXIgbXNnaWRbWkVST107Ci0rfTsKLSsKLSsvKiBSb290IG9mIHRoZSBzZWFyY2ggdHJlZSB3aXRoIGtub3duIHRyYW5zbGF0aW9ucy4gIFdlIGNhbiB1c2UgdGhpcwotKyAgIG9ubHkgaWYgdGhlIHN5c3RlbSBwcm92aWRlcyB0aGUgYHRzZWFyY2gnIGZ1bmN0aW9uIGZhbWlseS4gICovCi0rI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPHNlYXJjaC5oPgotKwotK3N0YXRpYyB2b2lkICpyb290OwotKwotKyMgaWZkZWYgX0xJQkMKLSsjICBkZWZpbmUgdHNlYXJjaCBfX3RzZWFyY2gKLSsjIGVuZGlmCi0rCi0rLyogRnVuY3Rpb24gdG8gY29tcGFyZSB0d28gZW50cmllcyBpbiB0aGUgdGFibGUgb2Yga25vd24gdHJhbnNsYXRpb25zLiAgKi8KLStzdGF0aWMgaW50Ci0rdHJhbnNjbXAgKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqczE7Ci0rICBjb25zdCBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqczI7Ci0rICBpbnQgcmVzdWx0OwotKwotKyAgczEgPSAoY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikgcDE7Ci0rICBzMiA9IChjb25zdCBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKSBwMjsKLSsKLSsgIHJlc3VsdCA9IHN0cmNtcCAoczEtPm1zZ2lkLCBzMi0+bXNnaWQpOwotKyAgaWYgKHJlc3VsdCA9PSAwKQotKyAgICB7Ci0rICAgICAgcmVzdWx0ID0gc3RyY21wIChzMS0+ZG9tYWlubmFtZSwgczItPmRvbWFpbm5hbWUpOwotKyAgICAgIGlmIChyZXN1bHQgPT0gMCkKLSsJLyogV2UgY29tcGFyZSB0aGUgY2F0ZWdvcnkgbGFzdCAodGhvdWdoIHRoaXMgaXMgdGhlIGNoZWFwZXN0Ci0rCSAgIG9wZXJhdGlvbikgc2luY2UgaXQgaXMgaG9wZWZ1bGx5IGFsd2F5cyB0aGUgc2FtZSAobmFtZWx5Ci0rCSAgIExDX01FU1NBR0VTKS4gICovCi0rCXJlc3VsdCA9IHMxLT5jYXRlZ29yeSAtIHMyLT5jYXRlZ29yeTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBJTlRWQVJERUYKLSsjIGRlZmluZSBJTlRWQVJERUYobmFtZSkKLSsjZW5kaWYKLSsjaWZuZGVmIElOVFVTRQotKyMgZGVmaW5lIElOVFVTRShuYW1lKSBuYW1lCi0rI2VuZGlmCi0rCi0rLyogTmFtZSBvZiB0aGUgZGVmYXVsdCBkb21haW4gdXNlZCBmb3IgZ2V0dGV4dCgzKSBwcmlvciBhbnkgY2FsbCB0bwotKyAgIHRleHRkb21haW4oMykuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpcyAibWVzc2FnZXMiLiAgKi8KLStjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW10gYXR0cmlidXRlX2hpZGRlbiA9ICJtZXNzYWdlcyI7Ci0rCi0rLyogVmFsdWUgdXNlZCBhcyB0aGUgZGVmYXVsdCBkb21haW4gZm9yIGdldHRleHQoMykuICAqLwotK2NvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGF0dHJpYnV0ZV9oaWRkZW4KLSsgICAgID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47Ci0rCi0rLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLwotKyNpZiBkZWZpbmVkIF9fRU1YX18KLStleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW107Ci0rI2Vsc2UKLStjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXSA9IExPQ0FMRURJUjsKLStJTlRWQVJERUYgKF9ubF9kZWZhdWx0X2Rpcm5hbWUpCi0rI2VuZGlmCi0rCi0rLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMgY3JlYXRlZCBieSBiaW5kdGV4dGRvbWFpbigpCi0rICAgY2FsbHMuICAqLwotK3N0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOwotKwotKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGNoYXIgKnBsdXJhbF9sb29rdXAgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbiwKLSsJCQkgICAgdW5zaWduZWQgbG9uZyBpbnQgbiwKLSsJCQkgICAgY29uc3QgY2hhciAqdHJhbnNsYXRpb24sIHNpemVfdCB0cmFuc2xhdGlvbl9sZW4pCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLStzdGF0aWMgY29uc3QgY2hhciAqZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGludCBjYXRlZ29yeSwKLSsJCQkJCSBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiCi0rIyBkZWZpbmUgY2F0ZWdvcnlfdG9fbmFtZShjYXRlZ29yeSkJX25sX2NhdGVnb3J5X25hbWVzW2NhdGVnb3J5XQotKyNlbHNlCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNhdGVnb3J5X3RvX25hbWUgKGludCBjYXRlZ29yeSkgaW50ZXJuYWxfZnVuY3Rpb247Ci0rI2VuZGlmCi0rCi0rCi0rLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0rICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KLSsjaWZkZWYgSEFWRV9BTExPQ0EKLSsvKiBOb3RoaW5nIGhhcyB0byBiZSBkb25lLiAgKi8KLSsjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCi0rIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KLSsjIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCi0rI2Vsc2UKLStzdHJ1Y3QgYmxvY2tfbGlzdAotK3sKLSsgIHZvaWQgKmFkZHJlc3M7Ci0rICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKLSt9OwotKyMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKLSsgIGRvIHsJCQkJCQkJCQkgICAgICBcCi0rICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAotKyAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCi0rICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAotKyAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKLSsgICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKLSsgICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKLSsgICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCi0rICAgIH0JCQkJCQkJCQkgICAgICBcCi0rICB9IHdoaWxlICgwKQotKyMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAotKyAgZG8gewkJCQkJCQkJCSAgICAgIFwKLSsgICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKLSsgICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKLSsgICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCi0rICAgICAgZnJlZSAob2xkLT5hZGRyZXNzKTsJCQkJCQkgICAgICBcCi0rICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAotKyAgICB9CQkJCQkJCQkJICAgICAgXAotKyAgfSB3aGlsZSAoMCkKLSsjIHVuZGVmIGFsbG9jYQotKyMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKLSsjIGRlZmluZSBmcmVlYShwKSBmcmVlIChwKQotKyNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLwotKwotKwotKyNpZmRlZiBfTElCQwotKy8qIExpc3Qgb2YgYmxvY2tzIGFsbG9jYXRlZCBmb3IgdHJhbnNsYXRpb25zLiAgKi8KLSt0eXBlZGVmIHN0cnVjdCB0cmFuc21lbV9saXN0Ci0rewotKyAgc3RydWN0IHRyYW5zbWVtX2xpc3QgKm5leHQ7Ci0rICBjaGFyIGRhdGFbWkVST107Ci0rfSB0cmFuc21lbV9ibG9ja190OwotK3N0YXRpYyBzdHJ1Y3QgdHJhbnNtZW1fbGlzdCAqdHJhbnNtZW1fbGlzdDsKLSsjZWxzZQotK3R5cGVkZWYgdW5zaWduZWQgY2hhciB0cmFuc21lbV9ibG9ja190OwotKyNlbmRpZgotKwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSsgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0rICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0rICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBEQ0lHRVRURVhUIF9fZGNpZ2V0dGV4dAotKyNlbHNlCi0rIyBkZWZpbmUgRENJR0VUVEVYVCBsaWJpbnRsX2RjaWdldHRleHQKLSsjZW5kaWYKLSsKLSsvKiBMb2NrIHZhcmlhYmxlIHRvIHByb3RlY3QgdGhlIGdsb2JhbCBkYXRhIGluIHRoZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLiAgKi8KLSsjaWZkZWYgX0xJQkMKLStfX2xpYmNfcndsb2NrX2RlZmluZV9pbml0aWFsaXplZCAoLCBfbmxfc3RhdGVfbG9jayBhdHRyaWJ1dGVfaGlkZGVuKQotKyNlbmRpZgotKwotKy8qIENoZWNraW5nIHdoZXRoZXIgdGhlIGJpbmFyaWVzIHJ1bnMgU1VJRCBtdXN0IGJlIGRvbmUgYW5kIGdsaWJjIHByb3ZpZGVzCi0rICAgZWFzaWVyIG1ldGhvZHMgdGhlcmVmb3JlIHdlIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIEVOQUJMRV9TRUNVUkUgX19saWJjX2VuYWJsZV9zZWN1cmUKLSsjIGRlZmluZSBERVRFUk1JTkVfU0VDVVJFCi0rI2Vsc2UKLSsjIGlmbmRlZiBIQVZFX0dFVFVJRAotKyMgIGRlZmluZSBnZXR1aWQoKSAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfR0VUR0lECi0rIyAgZGVmaW5lIGdldGdpZCgpIDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9HRVRFVUlECi0rIyAgZGVmaW5lIGdldGV1aWQoKSBnZXR1aWQoKQotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX0dFVEVHSUQKLSsjICBkZWZpbmUgZ2V0ZWdpZCgpIGdldGdpZCgpCi0rIyBlbmRpZgotK3N0YXRpYyBpbnQgZW5hYmxlX3NlY3VyZTsKLSsjIGRlZmluZSBFTkFCTEVfU0VDVVJFIChlbmFibGVfc2VjdXJlID09IDEpCi0rIyBkZWZpbmUgREVURVJNSU5FX1NFQ1VSRSBcCi0rICBpZiAoZW5hYmxlX3NlY3VyZSA9PSAwKQkJCQkJCSAgICAgIFwKLSsgICAgewkJCQkJCQkJCSAgICAgIFwKLSsgICAgICBpZiAoZ2V0dWlkICgpICE9IGdldGV1aWQgKCkgfHwgZ2V0Z2lkICgpICE9IGdldGVnaWQgKCkpCQkgICAgICBcCi0rCWVuYWJsZV9zZWN1cmUgPSAxOwkJCQkJCSAgICAgIFwKLSsgICAgICBlbHNlCQkJCQkJCQkgICAgICBcCi0rCWVuYWJsZV9zZWN1cmUgPSAtMTsJCQkJCQkgICAgICBcCi0rICAgIH0KLSsjZW5kaWYKLSsKLSsvKiBHZXQgdGhlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIHRoZSBwbHVyYWwgZXhwcmVzc2lvbi4gICovCi0rI2luY2x1ZGUgImV2YWwtcGx1cmFsLmgiCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0rICAgQ0FURUdPUlkgbG9jYWxlIGFuZCwgaWYgUExVUkFMIGlzIG5vbnplcm8sIHNlYXJjaCBvdmVyIHN0cmluZwotKyAgIGRlcGVuZGluZyBvbiB0aGUgcGx1cmFsIGZvcm0gZGV0ZXJtaW5lZCBieSBOLiAgKi8KLStjaGFyICoKLStEQ0lHRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwKLSsJICAgIGludCBwbHVyYWwsIHVuc2lnbmVkIGxvbmcgaW50IG4sIGludCBjYXRlZ29yeSkKLSt7Ci0rI2lmbmRlZiBIQVZFX0FMTE9DQQotKyAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOwotKyNlbmRpZgotKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOwotKyAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7Ci0rICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7Ci0rICBjb25zdCBjaGFyICpjYXRlZ29yeXZhbHVlOwotKyAgY2hhciAqZGlybmFtZSwgKnhkb21haW5uYW1lOwotKyAgY2hhciAqc2luZ2xlX2xvY2FsZTsKLSsgIGNoYXIgKnJldHZhbDsKLSsgIHNpemVfdCByZXRsZW47Ci0rICBpbnQgc2F2ZWRfZXJybm87Ci0rI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKLSsgIHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICpzZWFyY2g7Ci0rICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKmZvdW5kcCA9IE5VTEw7Ci0rICBzaXplX3QgbXNnaWRfbGVuOwotKyNlbmRpZgotKyAgc2l6ZV90IGRvbWFpbm5hbWVfbGVuOwotKwotKyAgLyogSWYgbm8gcmVhbCBNU0dJRCBpcyBnaXZlbiByZXR1cm4gTlVMTC4gICovCi0rICBpZiAobXNnaWQxID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyNpZmRlZiBfTElCQwotKyAgaWYgKGNhdGVnb3J5IDwgMCB8fCBjYXRlZ29yeSA+PSBfX0xDX0xBU1QgfHwgY2F0ZWdvcnkgPT0gTENfQUxMKQotKyAgICAvKiBCb2d1cy4gICovCi0rICAgIHJldHVybiAocGx1cmFsID09IDAKLSsJICAgID8gKGNoYXIgKikgbXNnaWQxCi0rCSAgICAvKiBVc2UgdGhlIEdlcm1hbmljIHBsdXJhbCBydWxlLiAgKi8KLSsJICAgIDogbiA9PSAxID8gKGNoYXIgKikgbXNnaWQxIDogKGNoYXIgKikgbXNnaWQyKTsKLSsjZW5kaWYKLSsKLSsgIF9fbGliY19yd2xvY2tfcmRsb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rCi0rICAvKiBJZiBET01BSU5OQU1FIGlzIE5VTEwsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBkZWZhdWx0IGRvbWFpbi4gIElmCi0rICAgICBDQVRFR09SWSBpcyBub3QgTENfTUVTU0FHRVMgdGhpcyBtaWdodCBub3QgbWFrZSBtdWNoIHNlbnNlIGJ1dCB0aGUKLSsgICAgIGRlZmluaXRpb24gbGVmdCB0aGlzIHVuZGVmaW5lZC4gICovCi0rICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotKyAgICBkb21haW5uYW1lID0gX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0rCi0rICAvKiBPUy8yIHNwZWNpZmljOiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgbGliaW50bCB2ZXJzaW9ucyAgKi8KLSsjaWZkZWYgTENfTUVTU0FHRVNfQ09NUEFUCi0rICBpZiAoY2F0ZWdvcnkgPT0gTENfTUVTU0FHRVNfQ09NUEFUKQotKyAgICBjYXRlZ29yeSA9IExDX01FU1NBR0VTOwotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rICBtc2dpZF9sZW4gPSBzdHJsZW4gKG1zZ2lkMSkgKyAxOwotKwotKyAgLyogVHJ5IHRvIGZpbmQgdGhlIHRyYW5zbGF0aW9uIGFtb25nIHRob3NlIHdoaWNoIHdlIGZvdW5kIGF0Ci0rICAgICBzb21lIHRpbWUuICAqLwotKyAgc2VhcmNoID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopCi0rCSAgIGFsbG9jYSAob2Zmc2V0b2YgKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90LCBtc2dpZCkgKyBtc2dpZF9sZW4pOwotKyAgbWVtY3B5IChzZWFyY2gtPm1zZ2lkLCBtc2dpZDEsIG1zZ2lkX2xlbik7Ci0rICBzZWFyY2gtPmRvbWFpbm5hbWUgPSAoY2hhciAqKSBkb21haW5uYW1lOwotKyAgc2VhcmNoLT5jYXRlZ29yeSA9IGNhdGVnb3J5OwotKwotKyAgZm91bmRwID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICoqKSB0ZmluZCAoc2VhcmNoLCAmcm9vdCwgdHJhbnNjbXApOwotKyAgZnJlZWEgKHNlYXJjaCk7Ci0rICBpZiAoZm91bmRwICE9IE5VTEwgJiYgKCpmb3VuZHApLT5jb3VudGVyID09IF9ubF9tc2dfY2F0X2NudHIpCi0rICAgIHsKLSsgICAgICAvKiBOb3cgZGVhbCB3aXRoIHBsdXJhbC4gICovCi0rICAgICAgaWYgKHBsdXJhbCkKLSsJcmV0dmFsID0gcGx1cmFsX2xvb2t1cCAoKCpmb3VuZHApLT5kb21haW4sIG4sICgqZm91bmRwKS0+dHJhbnNsYXRpb24sCi0rCQkJCSgqZm91bmRwKS0+dHJhbnNsYXRpb25fbGVuZ3RoKTsKLSsgICAgICBlbHNlCi0rCXJldHZhbCA9IChjaGFyICopICgqZm91bmRwKS0+dHJhbnNsYXRpb247Ci0rCi0rICAgICAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICAvKiBQcmVzZXJ2ZSB0aGUgYGVycm5vJyB2YWx1ZS4gICovCi0rICBzYXZlZF9lcnJubyA9IGVycm5vOwotKwotKyAgLyogU2VlIHdoZXRoZXIgdGhpcyBpcyBhIFNVSUQgYmluYXJ5IG9yIG5vdC4gICovCi0rICBERVRFUk1JTkVfU0VDVVJFOwotKwotKyAgLyogRmlyc3QgZmluZCBtYXRjaGluZyBiaW5kaW5nLiAgKi8KLSsgIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCi0rICAgIHsKLSsgICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7Ci0rICAgICAgaWYgKGNvbXBhcmUgPT0gMCkKLSsJLyogV2UgZm91bmQgaXQhICAqLwotKwlicmVhazsKLSsgICAgICBpZiAoY29tcGFyZSA8IDApCi0rCXsKLSsJICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLwotKwkgIGJpbmRpbmcgPSBOVUxMOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmIChiaW5kaW5nID09IE5VTEwpCi0rICAgIGRpcm5hbWUgPSAoY2hhciAqKSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rICBlbHNlIGlmIChJU19BQlNPTFVURV9QQVRIIChiaW5kaW5nLT5kaXJuYW1lKSkKLSsgICAgZGlybmFtZSA9IGJpbmRpbmctPmRpcm5hbWU7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBXZSBoYXZlIGEgcmVsYXRpdmUgcGF0aC4gIE1ha2UgaXQgYWJzb2x1dGUgbm93LiAgKi8KLSsgICAgICBzaXplX3QgZGlybmFtZV9sZW4gPSBzdHJsZW4gKGJpbmRpbmctPmRpcm5hbWUpICsgMTsKLSsgICAgICBzaXplX3QgcGF0aF9tYXg7Ci0rICAgICAgY2hhciAqcmV0OwotKwotKyAgICAgIHBhdGhfbWF4ID0gKHVuc2lnbmVkIGludCkgUEFUSF9NQVg7Ci0rICAgICAgcGF0aF9tYXggKz0gMjsJCS8qIFRoZSBnZXRjd2QgZG9jcyBzYXkgdG8gZG8gdGhpcy4gICovCi0rCi0rICAgICAgZm9yICg7OykKLSsJewotKwkgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOwotKwkgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7Ci0rCi0rCSAgX19zZXRfZXJybm8gKDApOwotKwkgIHJldCA9IGdldGN3ZCAoZGlybmFtZSwgcGF0aF9tYXgpOwotKwkgIGlmIChyZXQgIT0gTlVMTCB8fCBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBicmVhazsKLSsKLSsJICBwYXRoX21heCArPSBwYXRoX21heCAvIDI7Ci0rCSAgcGF0aF9tYXggKz0gUEFUSF9JTkNSOwotKwl9Ci0rCi0rICAgICAgaWYgKHJldCA9PSBOVUxMKQotKwkvKiBXZSBjYW5ub3QgZ2V0IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiAgRG9uJ3Qgc2lnbmFsIGFuCi0rCSAgIGVycm9yIGJ1dCBzaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHN0cmluZy4gICovCi0rCWdvdG8gcmV0dXJuX3VudHJhbnNsYXRlZDsKLSsKLSsgICAgICBzdHBjcHkgKHN0cGNweSAoc3RyY2hyIChkaXJuYW1lLCAnXDAnKSwgIi8iKSwgYmluZGluZy0+ZGlybmFtZSk7Ci0rICAgIH0KLSsKLSsgIC8qIE5vdyBkZXRlcm1pbmUgdGhlIHN5bWJvbGljIG5hbWUgb2YgQ0FURUdPUlkgYW5kIGl0cyB2YWx1ZS4gICovCi0rICBjYXRlZ29yeW5hbWUgPSBjYXRlZ29yeV90b19uYW1lIChjYXRlZ29yeSk7Ci0rICBjYXRlZ29yeXZhbHVlID0gZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOwotKwotKyAgZG9tYWlubmFtZV9sZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpOwotKyAgeGRvbWFpbm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnluYW1lKQotKwkJCQkgKyBkb21haW5uYW1lX2xlbiArIDUpOwotKyAgQUREX0JMT0NLIChibG9ja19saXN0LCB4ZG9tYWlubmFtZSk7Ci0rCi0rICBzdHBjcHkgKG1lbXBjcHkgKHN0cGNweSAoc3RwY3B5ICh4ZG9tYWlubmFtZSwgY2F0ZWdvcnluYW1lKSwgIi8iKSwKLSsJCSAgZG9tYWlubmFtZSwgZG9tYWlubmFtZV9sZW4pLAotKwkgICIubW8iKTsKLSsKLSsgIC8qIENyZWF0aW5nIHdvcmtpbmcgYXJlYS4gICovCi0rICBzaW5nbGVfbG9jYWxlID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5dmFsdWUpICsgMSk7Ci0rICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHNpbmdsZV9sb2NhbGUpOwotKwotKwotKyAgLyogU2VhcmNoIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLiAgVGhpcyBpcyBhIGxvb3AgYmVjYXVzZSB3ZSBwZXJoYXBzCi0rICAgICBnb3QgYW4gb3JkZXJlZCBsaXN0IG9mIGxhbmd1YWdlcyB0byBjb25zaWRlciBmb3IgdGhlIHRyYW5zbGF0aW9uLiAgKi8KLSsgIHdoaWxlICgxKQotKyAgICB7Ci0rICAgICAgLyogTWFrZSBDQVRFR09SWVZBTFVFIHBvaW50IHRvIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGxpc3QuICAqLwotKyAgICAgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSA9PSAnOicpCi0rCSsrY2F0ZWdvcnl2YWx1ZTsKLSsgICAgICBpZiAoY2F0ZWdvcnl2YWx1ZVswXSA9PSAnXDAnKQotKwl7Ci0rCSAgLyogVGhlIHdob2xlIGNvbnRlbnRzIG9mIENBVEVHT1JZVkFMVUUgaGFzIGJlZW4gc2VhcmNoZWQgYnV0Ci0rCSAgICAgbm8gdmFsaWQgZW50cnkgaGFzIGJlZW4gZm91bmQuICBXZSBzb2x2ZSB0aGlzIHNpdHVhdGlvbgotKwkgICAgIGJ5IGltcGxpY2l0bHkgYXBwZW5kaW5nIGEgIkMiIGVudHJ5LCBpLmUuIG5vIHRyYW5zbGF0aW9uCi0rCSAgICAgd2lsbCB0YWtlIHBsYWNlLiAgKi8KLSsJICBzaW5nbGVfbG9jYWxlWzBdID0gJ0MnOwotKwkgIHNpbmdsZV9sb2NhbGVbMV0gPSAnXDAnOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY2hhciAqY3AgPSBzaW5nbGVfbG9jYWxlOwotKwkgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSAhPSAnOicpCi0rCSAgICAqY3ArKyA9ICpjYXRlZ29yeXZhbHVlKys7Ci0rCSAgKmNwID0gJ1wwJzsKLSsKLSsJICAvKiBXaGVuIHRoaXMgaXMgYSBTVUlEIGJpbmFyeSB3ZSBtdXN0IG5vdCBhbGxvdyBhY2Nlc3NpbmcgZmlsZXMKLSsJICAgICBvdXRzaWRlIHRoZSBkZWRpY2F0ZWQgZGlyZWN0b3JpZXMuICAqLwotKwkgIGlmIChFTkFCTEVfU0VDVVJFICYmIElTX1BBVEhfV0lUSF9ESVIgKHNpbmdsZV9sb2NhbGUpKQotKwkgICAgLyogSW5nb3JlIHRoaXMgZW50cnkuICAqLwotKwkgICAgY29udGludWU7Ci0rCX0KLSsKLSsgICAgICAvKiBJZiB0aGUgY3VycmVudCBsb2NhbGUgdmFsdWUgaXMgQyAob3IgUE9TSVgpIHdlIGRvbid0IGxvYWQgYQotKwkgZG9tYWluLiAgUmV0dXJuIHRoZSBNU0dJRC4gICovCi0rICAgICAgaWYgKHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIkMiKSA9PSAwCi0rCSAgfHwgc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiUE9TSVgiKSA9PSAwKQotKwlicmVhazsKLSsKLSsgICAgICAvKiBGaW5kIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGNhdGFsb2cgbWF0Y2hpbmcgdGhlCi0rCSBET01BSU5OQU1FIGFuZCBDQVRFR09SWS4gICovCi0rICAgICAgZG9tYWluID0gX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBzaW5nbGVfbG9jYWxlLCB4ZG9tYWlubmFtZSwgYmluZGluZyk7Ci0rCi0rICAgICAgaWYgKGRvbWFpbiAhPSBOVUxMKQotKwl7Ci0rCSAgcmV0dmFsID0gX25sX2ZpbmRfbXNnIChkb21haW4sIGJpbmRpbmcsIG1zZ2lkMSwgJnJldGxlbik7Ci0rCi0rCSAgaWYgKHJldHZhbCA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBpbnQgY250OwotKwotKwkgICAgICBmb3IgKGNudCA9IDA7IGRvbWFpbi0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCi0rCQl7Ci0rCQkgIHJldHZhbCA9IF9ubF9maW5kX21zZyAoZG9tYWluLT5zdWNjZXNzb3JbY250XSwgYmluZGluZywKLSsJCQkJCSBtc2dpZDEsICZyZXRsZW4pOwotKwotKwkJICBpZiAocmV0dmFsICE9IE5VTEwpCi0rCQkgICAgewotKwkJICAgICAgZG9tYWluID0gZG9tYWluLT5zdWNjZXNzb3JbY250XTsKLSsJCSAgICAgIGJyZWFrOwotKwkJICAgIH0KLSsJCX0KLSsJICAgIH0KLSsKLSsJICBpZiAocmV0dmFsICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIC8qIEZvdW5kIHRoZSB0cmFuc2xhdGlvbiBvZiBNU0dJRDEgaW4gZG9tYWluIERPTUFJTjoKLSsJCSBzdGFydGluZyBhdCBSRVRWQUwsIFJFVExFTiBieXRlcy4gICovCi0rCSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSsjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQwotKwkgICAgICBpZiAoZm91bmRwID09IE5VTEwpCi0rCQl7Ci0rCQkgIC8qIENyZWF0ZSBhIG5ldyBlbnRyeSBhbmQgYWRkIGl0IHRvIHRoZSBzZWFyY2ggdHJlZS4gICovCi0rCQkgIHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICpuZXdwOwotKwotKwkJICBuZXdwID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopCi0rCQkgICAgbWFsbG9jIChvZmZzZXRvZiAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QsIG1zZ2lkKQotKwkJCSAgICArIG1zZ2lkX2xlbiArIGRvbWFpbm5hbWVfbGVuICsgMSk7Ci0rCQkgIGlmIChuZXdwICE9IE5VTEwpCi0rCQkgICAgewotKwkJICAgICAgbmV3cC0+ZG9tYWlubmFtZSA9Ci0rCQkJbWVtcGNweSAobmV3cC0+bXNnaWQsIG1zZ2lkMSwgbXNnaWRfbGVuKTsKLSsJCSAgICAgIG1lbWNweSAobmV3cC0+ZG9tYWlubmFtZSwgZG9tYWlubmFtZSwgZG9tYWlubmFtZV9sZW4gKyAxKTsKLSsJCSAgICAgIG5ld3AtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7Ci0rCQkgICAgICBuZXdwLT5jb3VudGVyID0gX25sX21zZ19jYXRfY250cjsKLSsJCSAgICAgIG5ld3AtPmRvbWFpbiA9IGRvbWFpbjsKLSsJCSAgICAgIG5ld3AtPnRyYW5zbGF0aW9uID0gcmV0dmFsOwotKwkJICAgICAgbmV3cC0+dHJhbnNsYXRpb25fbGVuZ3RoID0gcmV0bGVuOwotKwotKwkJICAgICAgLyogSW5zZXJ0IHRoZSBlbnRyeSBpbiB0aGUgc2VhcmNoIHRyZWUuICAqLwotKwkJICAgICAgZm91bmRwID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICoqKQotKwkJCXRzZWFyY2ggKG5ld3AsICZyb290LCB0cmFuc2NtcCk7Ci0rCQkgICAgICBpZiAoZm91bmRwID09IE5VTEwKLSsJCQkgIHx8IF9fYnVpbHRpbl9leHBlY3QgKCpmb3VuZHAgIT0gbmV3cCwgMCkpCi0rCQkJLyogVGhlIGluc2VydCBmYWlsZWQuICAqLwotKwkJCWZyZWUgKG5ld3ApOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICAvKiBXZSBjYW4gdXBkYXRlIHRoZSBleGlzdGluZyBlbnRyeS4gICovCi0rCQkgICgqZm91bmRwKS0+Y291bnRlciA9IF9ubF9tc2dfY2F0X2NudHI7Ci0rCQkgICgqZm91bmRwKS0+ZG9tYWluID0gZG9tYWluOwotKwkJICAoKmZvdW5kcCktPnRyYW5zbGF0aW9uID0gcmV0dmFsOwotKwkJICAoKmZvdW5kcCktPnRyYW5zbGF0aW9uX2xlbmd0aCA9IHJldGxlbjsKLSsJCX0KLSsjZW5kaWYKLSsJICAgICAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKLSsKLSsJICAgICAgLyogTm93IGRlYWwgd2l0aCBwbHVyYWwuICAqLwotKwkgICAgICBpZiAocGx1cmFsKQotKwkJcmV0dmFsID0gcGx1cmFsX2xvb2t1cCAoZG9tYWluLCBuLCByZXR2YWwsIHJldGxlbik7Ci0rCi0rCSAgICAgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rCSAgICAgIHJldHVybiByZXR2YWw7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyByZXR1cm5fdW50cmFuc2xhdGVkOgotKyAgLyogUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgTVNHSUQuICAqLwotKyAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsjaWZuZGVmIF9MSUJDCi0rICBpZiAoIUVOQUJMRV9TRUNVUkUpCi0rICAgIHsKLSsgICAgICBleHRlcm4gdm9pZCBfbmxfbG9nX3VudHJhbnNsYXRlZCAoY29uc3QgY2hhciAqbG9nZmlsZW5hbWUsCi0rCQkJCQljb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJCQkJY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsCi0rCQkJCQlpbnQgcGx1cmFsKTsKLSsgICAgICBjb25zdCBjaGFyICpsb2dmaWxlbmFtZSA9IGdldGVudiAoIkdFVFRFWFRfTE9HX1VOVFJBTlNMQVRFRCIpOwotKwotKyAgICAgIGlmIChsb2dmaWxlbmFtZSAhPSBOVUxMICYmIGxvZ2ZpbGVuYW1lWzBdICE9ICdcMCcpCi0rCV9ubF9sb2dfdW50cmFuc2xhdGVkIChsb2dmaWxlbmFtZSwgZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIHBsdXJhbCk7Ci0rICAgIH0KLSsjZW5kaWYKLSsgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0rICByZXR1cm4gKHBsdXJhbCA9PSAwCi0rCSAgPyAoY2hhciAqKSBtc2dpZDEKLSsJICAvKiBVc2UgdGhlIEdlcm1hbmljIHBsdXJhbCBydWxlLiAgKi8KLSsJICA6IG4gPT0gMSA/IChjaGFyICopIG1zZ2lkMSA6IChjaGFyICopIG1zZ2lkMik7Ci0rfQotKwotKwotK2NoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2ZpbmRfbXNnIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLSsJICAgICAgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcsIGNvbnN0IGNoYXIgKm1zZ2lkLAotKwkgICAgICBzaXplX3QgKmxlbmd0aHApCi0rewotKyAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKLSsgIG5sc191aW50MzIgbnN0cmluZ3M7Ci0rICBzaXplX3QgYWN0OwotKyAgY2hhciAqcmVzdWx0OwotKyAgc2l6ZV90IHJlc3VsdGxlbjsKLSsKLSsgIGlmIChkb21haW5fZmlsZS0+ZGVjaWRlZCA9PSAwKQotKyAgICBfbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlLCBkb21haW5iaW5kaW5nKTsKLSsKLSsgIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKLSsKLSsgIG5zdHJpbmdzID0gZG9tYWluLT5uc3RyaW5nczsKLSsKLSsgIC8qIExvY2F0ZSB0aGUgTVNHSUQgYW5kIGl0cyB0cmFuc2xhdGlvbi4gICovCi0rICBpZiAoZG9tYWluLT5oYXNoX3RhYiAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogVXNlIHRoZSBoYXNoaW5nIHRhYmxlLiAgKi8KLSsgICAgICBubHNfdWludDMyIGxlbiA9IHN0cmxlbiAobXNnaWQpOwotKyAgICAgIG5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOwotKyAgICAgIG5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKLSsgICAgICBubHNfdWludDMyIGluY3IgPSAxICsgKGhhc2hfdmFsICUgKGRvbWFpbi0+aGFzaF9zaXplIC0gMikpOwotKwotKyAgICAgIHdoaWxlICgxKQotKwl7Ci0rCSAgbmxzX3VpbnQzMiBuc3RyID0KLSsJICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOwotKwotKwkgIGlmIChuc3RyID09IDApCi0rCSAgICAvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KLSsJICAgIHJldHVybiBOVUxMOwotKwotKwkgIG5zdHItLTsKLSsKLSsJICAvKiBDb21wYXJlIG1zZ2lkIHdpdGggdGhlIG9yaWdpbmFsIHN0cmluZyBhdCBpbmRleCBuc3RyLgotKwkgICAgIFdlIGNvbXBhcmUgdGhlIGxlbmd0aHMgd2l0aCA+PSwgbm90ID09LCBiZWNhdXNlIHBsdXJhbCBlbnRyaWVzCi0rCSAgICAgYXJlIHJlcHJlc2VudGVkIGJ5IHN0cmluZ3Mgd2l0aCBhbiBlbWJlZGRlZCBOVUwuICAqLwotKwkgIGlmIChuc3RyIDwgbnN0cmluZ3MKLSsJICAgICAgPyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyXS5sZW5ndGgpID49IGxlbgotKwkJJiYgKHN0cmNtcCAobXNnaWQsCi0rCQkJICAgIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQkJICAgICAgZG9tYWluLT5vcmlnX3RhYltuc3RyXS5vZmZzZXQpKQotKwkJICAgID09IDApCi0rCSAgICAgIDogZG9tYWluLT5vcmlnX3N5c2RlcF90YWJbbnN0ciAtIG5zdHJpbmdzXS5sZW5ndGggPiBsZW4KLSsJCSYmIChzdHJjbXAgKG1zZ2lkLAotKwkJCSAgICBkb21haW4tPm9yaWdfc3lzZGVwX3RhYltuc3RyIC0gbnN0cmluZ3NdLnBvaW50ZXIpCi0rCQkgICAgPT0gMCkpCi0rCSAgICB7Ci0rCSAgICAgIGFjdCA9IG5zdHI7Ci0rCSAgICAgIGdvdG8gZm91bmQ7Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCi0rCSAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOwotKwkgIGVsc2UKLSsJICAgIGlkeCArPSBpbmNyOwotKwl9Ci0rICAgICAgLyogTk9UUkVBQ0hFRCAqLwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBUcnkgdGhlIGRlZmF1bHQgbWV0aG9kOiAgYmluYXJ5IHNlYXJjaCBpbiB0aGUgc29ydGVkIGFycmF5IG9mCi0rCSBtZXNzYWdlcy4gICovCi0rICAgICAgc2l6ZV90IHRvcCwgYm90dG9tOwotKwotKyAgICAgIGJvdHRvbSA9IDA7Ci0rICAgICAgdG9wID0gbnN0cmluZ3M7Ci0rICAgICAgd2hpbGUgKGJvdHRvbSA8IHRvcCkKLSsJewotKwkgIGludCBjbXBfdmFsOwotKwotKwkgIGFjdCA9IChib3R0b20gKyB0b3ApIC8gMjsKLSsJICBjbXBfdmFsID0gc3RyY21wIChtc2dpZCwgKGRvbWFpbi0+ZGF0YQotKwkJCQkgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJCSBkb21haW4tPm9yaWdfdGFiW2FjdF0ub2Zmc2V0KSkpOwotKwkgIGlmIChjbXBfdmFsIDwgMCkKLSsJICAgIHRvcCA9IGFjdDsKLSsJICBlbHNlIGlmIChjbXBfdmFsID4gMCkKLSsJICAgIGJvdHRvbSA9IGFjdCArIDE7Ci0rCSAgZWxzZQotKwkgICAgZ290byBmb3VuZDsKLSsJfQotKyAgICAgIC8qIE5vIHRyYW5zbGF0aW9uIHdhcyBmb3VuZC4gICovCi0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgZm91bmQ6Ci0rICAvKiBUaGUgdHJhbnNsYXRpb24gd2FzIGZvdW5kIGF0IGluZGV4IEFDVC4gIElmIHdlIGhhdmUgdG8gY29udmVydCB0aGUKLSsgICAgIHN0cmluZyB0byB1c2UgYSBkaWZmZXJlbnQgY2hhcmFjdGVyIHNldCwgdGhpcyBpcyB0aGUgdGltZS4gICovCi0rICBpZiAoYWN0IDwgbnN0cmluZ3MpCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSAoY2hhciAqKQotKwkoZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW2FjdF0ub2Zmc2V0KSk7Ci0rICAgICAgcmVzdWx0bGVuID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW2FjdF0ubGVuZ3RoKSArIDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IChjaGFyICopIGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYlthY3QgLSBuc3RyaW5nc10ucG9pbnRlcjsKLSsgICAgICByZXN1bHRsZW4gPSBkb21haW4tPnRyYW5zX3N5c2RlcF90YWJbYWN0IC0gbnN0cmluZ3NdLmxlbmd0aDsKLSsgICAgfQotKwotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfSUNPTlYKLSsgIGlmIChkb21haW4tPmNvZGVzZXRfY250cgotKyAgICAgICE9IChkb21haW5iaW5kaW5nICE9IE5VTEwgPyBkb21haW5iaW5kaW5nLT5jb2Rlc2V0X2NudHIgOiAwKSkKLSsgICAgewotKyAgICAgIC8qIFRoZSBkb21haW4ncyBjb2Rlc2V0IGhhcyBjaGFuZ2VkIHRocm91Z2ggYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoKQotKwkgc2luY2UgdGhlIG1lc3NhZ2UgY2F0YWxvZyB3YXMgaW5pdGlhbGl6ZWQgb3IgbGFzdCBhY2Nlc3NlZC4gIFdlCi0rCSBoYXZlIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY29udmVydGVyLiAgKi8KLSsgICAgICBfbmxfZnJlZV9kb21haW5fY29udiAoZG9tYWluKTsKLSsgICAgICBfbmxfaW5pdF9kb21haW5fY29udiAoZG9tYWluX2ZpbGUsIGRvbWFpbiwgZG9tYWluYmluZGluZyk7Ci0rICAgIH0KLSsKLSsgIGlmICgKLSsjIGlmZGVmIF9MSUJDCi0rICAgICAgZG9tYWluLT5jb252ICE9IChfX2djb252X3QpIC0xCi0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKyAgICAgIGRvbWFpbi0+Y29udiAhPSAoaWNvbnZfdCkgLTEKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsgICAgICApCi0rICAgIHsKLSsgICAgICAvKiBXZSBhcmUgc3VwcG9zZWQgdG8gZG8gYSBjb252ZXJzaW9uLiAgRmlyc3QgYWxsb2NhdGUgYW4KLSsJIGFwcHJvcHJpYXRlIHRhYmxlIHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGFzIHRoZSB0YWJsZQotKwkgb2YgdHJhbnNsYXRpb25zIGluIHRoZSBmaWxlLCB3aGVyZSB3ZSBjYW4gcHV0IHRoZSBwb2ludGVycwotKwkgdG8gdGhlIGNvbnZlcnRlZCBzdHJpbmdzIGluLgotKwkgVGhlcmUgaXMgYSBzbGlnaHQgY29tcGxpY2F0aW9uIHdpdGggcGx1cmFsIGVudHJpZXMuICBUaGV5Ci0rCSBhcmUgcmVwcmVzZW50ZWQgYnkgY29uc2VjdXRpdmUgTlVMIHRlcm1pbmF0ZWQgc3RyaW5ncy4gIFdlCi0rCSBoYW5kbGUgdGhpcyBjYXNlIGJ5IGNvbnZlcnRpbmcgUkVTVUxUTEVOIGJ5dGVzLCBpbmNsdWRpbmcKLSsJIE5VTHMuICAqLwotKwotKyAgICAgIGlmIChkb21haW4tPmNvbnZfdGFiID09IE5VTEwKLSsJICAmJiAoKGRvbWFpbi0+Y29udl90YWIgPQotKwkJIChjaGFyICoqKSBjYWxsb2MgKG5zdHJpbmdzICsgZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzLAotKwkJCQkgICBzaXplb2YgKGNoYXIgKikpKQotKwkgICAgICA9PSBOVUxMKSkKLSsJLyogTWFyayB0aGF0IHdlIGRpZG4ndCBzdWNjZWVkIGFsbG9jYXRpbmcgYSB0YWJsZS4gICovCi0rCWRvbWFpbi0+Y29udl90YWIgPSAoY2hhciAqKikgLTE7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRvbWFpbi0+Y29udl90YWIgPT0gKGNoYXIgKiopIC0xLCAwKSkKLSsJLyogTm90aGluZyB3ZSBjYW4gZG8sIG5vIG1vcmUgbWVtb3J5LiAgKi8KLSsJZ290byBjb252ZXJ0ZWQ7Ci0rCi0rICAgICAgaWYgKGRvbWFpbi0+Y29udl90YWJbYWN0XSA9PSBOVUxMKQotKwl7Ci0rCSAgLyogV2UgaGF2ZW4ndCB1c2VkIHRoaXMgc3RyaW5nIHNvIGZhciwgc28gaXQgaXMgbm90Ci0rCSAgICAgdHJhbnNsYXRlZCB5ZXQuICBEbyB0aGlzIG5vdy4gICovCi0rCSAgLyogV2UgdXNlIGEgYml0IG1vcmUgZWZmaWNpZW50IG1lbW9yeSBoYW5kbGluZy4KLSsJICAgICBXZSBhbGxvY2F0ZSBhbHdheXMgbGFyZ2VyIGJsb2NrcyB3aGljaCBnZXQgdXNlZCBvdmVyCi0rCSAgICAgdGltZS4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gbWFueSBzbWFsbCBhbGxvY2F0aW9ucy4gICAqLwotKwkgIF9fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZCAoc3RhdGljLCBsb2NrKQotKyMgZGVmaW5lIElOSVRJQUxfQkxPQ0tfU0laRQk0MDgwCi0rCSAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKmZyZWVtZW07Ci0rCSAgc3RhdGljIHNpemVfdCBmcmVlbWVtX3NpemU7Ci0rCi0rCSAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5idWY7Ci0rCSAgdW5zaWduZWQgY2hhciAqb3V0YnVmOwotKwkgIGludCBtYWxsb2NfY291bnQ7Ci0rIyBpZm5kZWYgX0xJQkMKLSsJICB0cmFuc21lbV9ibG9ja190ICp0cmFuc21lbV9saXN0ID0gTlVMTDsKLSsjIGVuZGlmCi0rCi0rCSAgX19saWJjX2xvY2tfbG9jayAobG9jayk7Ci0rCi0rCSAgaW5idWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByZXN1bHQ7Ci0rCSAgb3V0YnVmID0gZnJlZW1lbSArIHNpemVvZiAoc2l6ZV90KTsKLSsKLSsJICBtYWxsb2NfY291bnQgPSAwOwotKwkgIHdoaWxlICgxKQotKwkgICAgewotKwkgICAgICB0cmFuc21lbV9ibG9ja190ICpuZXdtZW07Ci0rIyBpZmRlZiBfTElCQwotKwkgICAgICBzaXplX3Qgbm9uX3JldmVyc2libGU7Ci0rCSAgICAgIGludCByZXM7Ci0rCi0rCSAgICAgIGlmIChmcmVlbWVtX3NpemUgPCBzaXplb2YgKHNpemVfdCkpCi0rCQlnb3RvIHJlc2l6ZV9mcmVlbWVtOwotKwotKwkgICAgICByZXMgPSBfX2djb252IChkb21haW4tPmNvbnYsCi0rCQkJICAgICAmaW5idWYsIGluYnVmICsgcmVzdWx0bGVuLAotKwkJCSAgICAgJm91dGJ1ZiwKLSsJCQkgICAgIG91dGJ1ZiArIGZyZWVtZW1fc2l6ZSAtIHNpemVvZiAoc2l6ZV90KSwKLSsJCQkgICAgICZub25fcmV2ZXJzaWJsZSk7Ci0rCi0rCSAgICAgIGlmIChyZXMgPT0gX19HQ09OVl9PSyB8fCByZXMgPT0gX19HQ09OVl9FTVBUWV9JTlBVVCkKLSsJCWJyZWFrOwotKwotKwkgICAgICBpZiAocmVzICE9IF9fR0NPTlZfRlVMTF9PVVRQVVQpCi0rCQl7Ci0rCQkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rCQkgIGdvdG8gY29udmVydGVkOwotKwkJfQotKwotKwkgICAgICBpbmJ1ZiA9IHJlc3VsdDsKLSsjIGVsc2UKLSsjICBpZiBIQVZFX0lDT05WCi0rCSAgICAgIGNvbnN0IGNoYXIgKmlucHRyID0gKGNvbnN0IGNoYXIgKikgaW5idWY7Ci0rCSAgICAgIHNpemVfdCBpbmxlZnQgPSByZXN1bHRsZW47Ci0rCSAgICAgIGNoYXIgKm91dHB0ciA9IChjaGFyICopIG91dGJ1ZjsKLSsJICAgICAgc2l6ZV90IG91dGxlZnQ7Ci0rCi0rCSAgICAgIGlmIChmcmVlbWVtX3NpemUgPCBzaXplb2YgKHNpemVfdCkpCi0rCQlnb3RvIHJlc2l6ZV9mcmVlbWVtOwotKwotKwkgICAgICBvdXRsZWZ0ID0gZnJlZW1lbV9zaXplIC0gc2l6ZW9mIChzaXplX3QpOwotKwkgICAgICBpZiAoaWNvbnYgKGRvbWFpbi0+Y29udiwKLSsJCQkgKElDT05WX0NPTlNUIGNoYXIgKiopICZpbnB0ciwgJmlubGVmdCwKLSsJCQkgJm91dHB0ciwgJm91dGxlZnQpCi0rCQkgICE9IChzaXplX3QpICgtMSkpCi0rCQl7Ci0rCQkgIG91dGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIG91dHB0cjsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICAgIGlmIChlcnJubyAhPSBFMkJJRykKLSsJCXsKLSsJCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsJCSAgZ290byBjb252ZXJ0ZWQ7Ci0rCQl9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rCSAgICByZXNpemVfZnJlZW1lbToKLSsJICAgICAgLyogV2UgbXVzdCBhbGxvY2F0ZSBhIG5ldyBidWZmZXIgb3IgcmVzaXplIHRoZSBvbGQgb25lLiAgKi8KLSsJICAgICAgaWYgKG1hbGxvY19jb3VudCA+IDApCi0rCQl7Ci0rCQkgICsrbWFsbG9jX2NvdW50OwotKwkJICBmcmVlbWVtX3NpemUgPSBtYWxsb2NfY291bnQgKiBJTklUSUFMX0JMT0NLX1NJWkU7Ci0rCQkgIG5ld21lbSA9ICh0cmFuc21lbV9ibG9ja190ICopIHJlYWxsb2MgKHRyYW5zbWVtX2xpc3QsCi0rCQkJCQkJCSBmcmVlbWVtX3NpemUpOwotKyMgaWZkZWYgX0xJQkMKLSsJCSAgaWYgKG5ld21lbSAhPSBOVUxMKQotKwkJICAgIHRyYW5zbWVtX2xpc3QgPSB0cmFuc21lbV9saXN0LT5uZXh0OwotKwkJICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgc3RydWN0IHRyYW5zbWVtX2xpc3QgKm9sZCA9IHRyYW5zbWVtX2xpc3Q7Ci0rCi0rCQkgICAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKLSsJCSAgICAgIGZyZWUgKG9sZCk7Ci0rCQkgICAgfQotKyMgZW5kaWYKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBtYWxsb2NfY291bnQgPSAxOwotKwkJICBmcmVlbWVtX3NpemUgPSBJTklUSUFMX0JMT0NLX1NJWkU7Ci0rCQkgIG5ld21lbSA9ICh0cmFuc21lbV9ibG9ja190ICopIG1hbGxvYyAoZnJlZW1lbV9zaXplKTsKLSsJCX0KLSsJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKG5ld21lbSA9PSBOVUxMLCAwKSkKLSsJCXsKLSsJCSAgZnJlZW1lbSA9IE5VTEw7Ci0rCQkgIGZyZWVtZW1fc2l6ZSA9IDA7Ci0rCQkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rCQkgIGdvdG8gY29udmVydGVkOwotKwkJfQotKwotKyMgaWZkZWYgX0xJQkMKLSsJICAgICAgLyogQWRkIHRoZSBibG9jayB0byB0aGUgbGlzdCBvZiBibG9ja3Mgd2UgaGF2ZSB0byBmcmVlCi0rICAgICAgICAgICAgICAgICBhdCBzb21lIHBvaW50LiAgKi8KLSsJICAgICAgbmV3bWVtLT5uZXh0ID0gdHJhbnNtZW1fbGlzdDsKLSsJICAgICAgdHJhbnNtZW1fbGlzdCA9IG5ld21lbTsKLSsKLSsJICAgICAgZnJlZW1lbSA9IG5ld21lbS0+ZGF0YTsKLSsJICAgICAgZnJlZW1lbV9zaXplIC09IG9mZnNldG9mIChzdHJ1Y3QgdHJhbnNtZW1fbGlzdCwgZGF0YSk7Ci0rIyBlbHNlCi0rCSAgICAgIHRyYW5zbWVtX2xpc3QgPSBuZXdtZW07Ci0rCSAgICAgIGZyZWVtZW0gPSBuZXdtZW07Ci0rIyBlbmRpZgotKwotKwkgICAgICBvdXRidWYgPSBmcmVlbWVtICsgc2l6ZW9mIChzaXplX3QpOwotKwkgICAgfQotKwotKwkgIC8qIFdlIGhhdmUgbm93IGluIG91ciBidWZmZXIgYSBjb252ZXJ0ZWQgc3RyaW5nLiAgUHV0IHRoaXMKLSsJICAgICBpbnRvIHRoZSB0YWJsZSBvZiBjb252ZXJzaW9ucy4gICovCi0rCSAgKihzaXplX3QgKikgZnJlZW1lbSA9IG91dGJ1ZiAtIGZyZWVtZW0gLSBzaXplb2YgKHNpemVfdCk7Ci0rCSAgZG9tYWluLT5jb252X3RhYlthY3RdID0gKGNoYXIgKikgZnJlZW1lbTsKLSsJICAvKiBTaHJpbmsgZnJlZW1lbSwgYnV0IGtlZXAgaXQgYWxpZ25lZC4gICovCi0rCSAgZnJlZW1lbV9zaXplIC09IG91dGJ1ZiAtIGZyZWVtZW07Ci0rCSAgZnJlZW1lbSA9IG91dGJ1ZjsKLSsJICBmcmVlbWVtICs9IGZyZWVtZW1fc2l6ZSAmIChhbGlnbm9mIChzaXplX3QpIC0gMSk7Ci0rCSAgZnJlZW1lbV9zaXplID0gZnJlZW1lbV9zaXplICYgfiAoYWxpZ25vZiAoc2l6ZV90KSAtIDEpOwotKwotKwkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rCX0KLSsKLSsgICAgICAvKiBOb3cgZG9tYWluLT5jb252X3RhYlthY3RdIGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBvZiBhbGwKLSsJIHRoZSBwbHVyYWwgdmFyaWFudHMuICAqLwotKyAgICAgIHJlc3VsdCA9IGRvbWFpbi0+Y29udl90YWJbYWN0XSArIHNpemVvZiAoc2l6ZV90KTsKLSsgICAgICByZXN1bHRsZW4gPSAqKHNpemVfdCAqKSBkb21haW4tPmNvbnZfdGFiW2FjdF07Ci0rICAgIH0KLSsKLSsgY29udmVydGVkOgotKyAgLyogVGhlIHJlc3VsdCBzdHJpbmcgaXMgY29udmVydGVkLiAgKi8KLSsKLSsjZW5kaWYgLyogX0xJQkMgfHwgSEFWRV9JQ09OViAqLwotKwotKyAgKmxlbmd0aHAgPSByZXN1bHRsZW47Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsKLSsvKiBMb29rIHVwIGEgcGx1cmFsIHZhcmlhbnQuICAqLwotK3N0YXRpYyBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK3BsdXJhbF9sb29rdXAgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbiwgdW5zaWduZWQgbG9uZyBpbnQgbiwKLSsJICAgICAgIGNvbnN0IGNoYXIgKnRyYW5zbGF0aW9uLCBzaXplX3QgdHJhbnNsYXRpb25fbGVuKQotK3sKLSsgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW5kYXRhID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbi0+ZGF0YTsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IGluZGV4OwotKyAgY29uc3QgY2hhciAqcDsKLSsKLSsgIGluZGV4ID0gcGx1cmFsX2V2YWwgKGRvbWFpbmRhdGEtPnBsdXJhbCwgbik7Ci0rICBpZiAoaW5kZXggPj0gZG9tYWluZGF0YS0+bnBsdXJhbHMpCi0rICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gIEl0IG1lYW5zIHRoZSBwbHVyYWwgZXhwcmVzc2lvbiBhbmQgdGhlCi0rICAgICAgIGdpdmVuIG1heGltdW0gdmFsdWUgZG8gbm90IG1hdGNoLiAgKi8KLSsgICAgaW5kZXggPSAwOwotKwotKyAgLyogU2tpcCBJTkRFWCBzdHJpbmdzIGF0IFRSQU5TTEFUSU9OLiAgKi8KLSsgIHAgPSB0cmFuc2xhdGlvbjsKLSsgIHdoaWxlIChpbmRleC0tID4gMCkKLSsgICAgewotKyNpZmRlZiBfTElCQwotKyAgICAgIHAgPSBfX3Jhd21lbWNociAocCwgJ1wwJyk7Ci0rI2Vsc2UKLSsgICAgICBwID0gc3RyY2hyIChwLCAnXDAnKTsKLSsjZW5kaWYKLSsgICAgICAvKiBBbmQgc2tpcCBvdmVyIHRoZSBOVUwgYnl0ZS4gICovCi0rICAgICAgcCsrOwotKwotKyAgICAgIGlmIChwID49IHRyYW5zbGF0aW9uICsgdHJhbnNsYXRpb25fbGVuKQotKwkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICBJdCBtZWFucyB0aGUgcGx1cmFsIGV4cHJlc3Npb24KLSsJICAgZXZhbHVhdGVkIHRvIGEgdmFsdWUgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiB2YXJpYW50cwotKwkgICBhdmFpbGFibGUgZm9yIE1TR0lEMS4gICovCi0rCXJldHVybiAoY2hhciAqKSB0cmFuc2xhdGlvbjsKLSsgICAgfQotKyAgcmV0dXJuIChjaGFyICopIHA7Ci0rfQotKwotKyNpZm5kZWYgX0xJQkMKLSsvKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxvY2FsZSBDQVRFR09SWS4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rY2F0ZWdvcnlfdG9fbmFtZSAoaW50IGNhdGVnb3J5KQotK3sKLSsgIGNvbnN0IGNoYXIgKnJldHZhbDsKLSsKLSsgIHN3aXRjaCAoY2F0ZWdvcnkpCi0rICB7Ci0rI2lmZGVmIExDX0NPTExBVEUKLSsgIGNhc2UgTENfQ09MTEFURToKLSsgICAgcmV0dmFsID0gIkxDX0NPTExBVEUiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfQ1RZUEUKLSsgIGNhc2UgTENfQ1RZUEU6Ci0rICAgIHJldHZhbCA9ICJMQ19DVFlQRSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19NT05FVEFSWQotKyAgY2FzZSBMQ19NT05FVEFSWToKLSsgICAgcmV0dmFsID0gIkxDX01PTkVUQVJZIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX05VTUVSSUMKLSsgIGNhc2UgTENfTlVNRVJJQzoKLSsgICAgcmV0dmFsID0gIkxDX05VTUVSSUMiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfVElNRQotKyAgY2FzZSBMQ19USU1FOgotKyAgICByZXR2YWwgPSAiTENfVElNRSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19NRVNTQUdFUwotKyAgY2FzZSBMQ19NRVNTQUdFUzoKLSsgICAgcmV0dmFsID0gIkxDX01FU1NBR0VTIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX1JFU1BPTlNFCi0rICBjYXNlIExDX1JFU1BPTlNFOgotKyAgICByZXR2YWwgPSAiTENfUkVTUE9OU0UiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfQUxMCi0rICBjYXNlIExDX0FMTDoKLSsgICAgLyogVGhpcyBtaWdodCBub3QgbWFrZSBzZW5zZSBidXQgaXMgcGVyaGFwcyBiZXR0ZXIgdGhhbiBhbnkgb3RoZXIKLSsgICAgICAgdmFsdWUuICAqLwotKyAgICByZXR2YWwgPSAiTENfQUxMIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rICBkZWZhdWx0OgotKyAgICAvKiBJZiB5b3UgaGF2ZSBhIGJldHRlciBpZGVhIGZvciBhIGRlZmF1bHQgdmFsdWUgbGV0IG1lIGtub3cuICAqLwotKyAgICByZXR2YWwgPSAiTENfWFhYIjsKLSsgIH0KLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKyNlbmRpZgotKwotKy8qIEd1ZXNzIHZhbHVlIG9mIGN1cnJlbnQgbG9jYWxlIGZyb20gdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKQotK3sKLSsgIGNvbnN0IGNoYXIgKmxhbmd1YWdlOwotKyAgY29uc3QgY2hhciAqcmV0dmFsOwotKwotKyAgLyogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgdmFsdWUgaXMgdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQKLSsgICAgIHZhcmlhYmxlLiAgQnV0IHdlIGRvbid0IHVzZSB0aGUgdmFsdWUgaWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAotKyAgICAgbG9jYWxlIGlzIHRoZSBDIGxvY2FsZS4gIFRoaXMgaXMgYSBHTlUgZXh0ZW5zaW9uLiAgKi8KLSsgIGxhbmd1YWdlID0gZ2V0ZW52ICgiTEFOR1VBR0UiKTsKLSsgIGlmIChsYW5ndWFnZSAhPSBOVUxMICYmIGxhbmd1YWdlWzBdID09ICdcMCcpCi0rICAgIGxhbmd1YWdlID0gTlVMTDsKLSsKLSsgIC8qIFdlIGhhdmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBQT1NJWCBtZXRob2RzIG9mIGxvb2tpbmcgdG8gYExDX0FMTCcsCi0rICAgICBgTENfeHh4JywgYW5kIGBMQU5HJy4gIE9uIHNvbWUgc3lzdGVtcyB0aGlzIGNhbiBiZSBkb25lIGJ5IHRoZQotKyAgICAgYHNldGxvY2FsZScgZnVuY3Rpb24gaXRzZWxmLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsgIHJldHZhbCA9IF9fY3VycmVudF9sb2NhbGVfbmFtZSAoY2F0ZWdvcnkpOwotKyNlbHNlCi0rICByZXR2YWwgPSBfbmxfbG9jYWxlX25hbWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOwotKyNlbmRpZgotKwotKyAgLyogSWdub3JlIExBTkdVQUdFIGlmIHRoZSBsb2NhbGUgaXMgc2V0IHRvICJDIiBiZWNhdXNlCi0rICAgICAxLiAiQyIgbG9jYWxlIHVzdWFsbHkgdXNlcyB0aGUgQVNDSUkgZW5jb2RpbmcsIGFuZCBtb3N0IGludGVybmF0aW9uYWwKLSsJbWVzc2FnZXMgdXNlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiBUaGVzZSBjaGFyYWN0ZXJzIGdldCBkaXNwbGF5ZWQKLSsJYXMgcXVlc3Rpb24gbWFya3MgKGlmIHVzaW5nIGdsaWJjJ3MgaWNvbnYoKSkgb3IgYXMgaW52YWxpZCA4LWJpdAotKwljaGFyYWN0ZXJzIChiZWNhdXNlIG90aGVyIGljb252KClzIHJlZnVzZSB0byBjb252ZXJ0IG1vc3Qgbm9uLUFTQ0lJCi0rCWNoYXJhY3RlcnMgdG8gQVNDSUkpLiBJbiBhbnkgY2FzZSwgdGhlIG91dHB1dCBpcyB1Z2x5LgotKyAgICAgMi4gVGhlIHByZWNpc2Ugb3V0cHV0IG9mIHNvbWUgcHJvZ3JhbXMgaW4gdGhlICJDIiBsb2NhbGUgaXMgc3BlY2lmaWVkCi0rCWJ5IFBPU0lYIGFuZCBzaG91bGQgbm90IGRlcGVuZCBvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbGlrZQotKwkiTEFOR1VBR0UiLiAgV2UgYWxsb3cgc3VjaCBwcm9ncmFtcyB0byB1c2UgZ2V0dGV4dCgpLiAgKi8KLSsgIHJldHVybiBsYW5ndWFnZSAhPSBOVUxMICYmIHN0cmNtcCAocmV0dmFsLCAiQyIpICE9IDAgPyBsYW5ndWFnZSA6IHJldHZhbDsKLSt9Ci0rCi0rLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0rCi0rLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKLSsgICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcwotKyAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCi0rICAgdG8gYmUgZGVmaW5lZC4gICovCi0rI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLStzdGF0aWMgY2hhciAqCi0rc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpCi0rewotKyAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQotKyAgICAvKiBEbyBub3RoaW5nLiAqLyA7Ci0rICByZXR1cm4gZGVzdCAtIDE7Ci0rfQotKyNlbmRpZgotKwotKyNpZiAhX0xJQkMgJiYgIUhBVkVfTUVNUENQWQotK3N0YXRpYyB2b2lkICoKLSttZW1wY3B5ICh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQotK3sKLSsgIHJldHVybiAodm9pZCAqKSAoKGNoYXIgKikgbWVtY3B5IChkZXN0LCBzcmMsIG4pICsgbik7Ci0rfQotKyNlbmRpZgotKwotKwotKyNpZmRlZiBfTElCQwotKy8qIElmIHdlIHdhbnQgdG8gZnJlZSBhbGwgcmVzb3VyY2VzIHdlIGhhdmUgdG8gZG8gc29tZSB3b3JrIGF0Ci0rICAgcHJvZ3JhbSdzIGVuZC4gICovCi0rbGliY19mcmVlcmVzX2ZuIChmcmVlX21lbSkKLSt7Ci0rICB2b2lkICpvbGQ7Ci0rCi0rICB3aGlsZSAoX25sX2RvbWFpbl9iaW5kaW5ncyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGJpbmRpbmcgKm9sZHAgPSBfbmxfZG9tYWluX2JpbmRpbmdzOwotKyAgICAgIF9ubF9kb21haW5fYmluZGluZ3MgPSBfbmxfZG9tYWluX2JpbmRpbmdzLT5uZXh0OwotKyAgICAgIGlmIChvbGRwLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKLSsJLyogWWVzLCB0aGlzIGlzIGEgcG9pbnRlciBjb21wYXJpc29uLiAgKi8KLSsJZnJlZSAob2xkcC0+ZGlybmFtZSk7Ci0rICAgICAgZnJlZSAob2xkcC0+Y29kZXNldCk7Ci0rICAgICAgZnJlZSAob2xkcCk7Ci0rICAgIH0KLSsKLSsgIGlmIChfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiAhPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikKLSsgICAgLyogWWVzLCBhZ2FpbiBhIHBvaW50ZXIgY29tcGFyaXNvbi4gICovCi0rICAgIGZyZWUgKChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluKTsKLSsKLSsgIC8qIFJlbW92ZSB0aGUgc2VhcmNoIHRyZWUgd2l0aCB0aGUga25vd24gdHJhbnNsYXRpb25zLiAgKi8KLSsgIF9fdGRlc3Ryb3kgKHJvb3QsIGZyZWUpOwotKyAgcm9vdCA9IE5VTEw7Ci0rCi0rICB3aGlsZSAodHJhbnNtZW1fbGlzdCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgb2xkID0gdHJhbnNtZW1fbGlzdDsKLSsgICAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKLSsgICAgICBmcmVlIChvbGQpOwotKyAgICB9Ci0rfQotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RjbmdldHRleHQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kY25nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zNzU3NDUwNDggLTA0MDAKLUBAIC0wLDAgKzEsNTcgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0Ci0rIyBkZWZpbmUgRENJR0VUVEVYVCBfX2RjaWdldHRleHQKLSsjZWxzZQotKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0Ci0rIyBkZWZpbmUgRENJR0VUVEVYVCBsaWJpbnRsX2RjaWdldHRleHQKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKLSsgICBsb2NhbGUuICAqLwotK2NoYXIgKgotK0RDTkdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCSAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbiwKLSsJICAgIGludCBjYXRlZ29yeSkKLSt7Ci0rICByZXR1cm4gRENJR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIDEsIG4sIGNhdGVnb3J5KTsKLSt9Ci0rCi0rI2lmZGVmIF9MSUJDCi0rLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rd2Vha19hbGlhcyAoX19kY25nZXR0ZXh0LCBkY25nZXR0ZXh0KTsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zODA3NDQyODggLTA0MDAKLUBAIC0xLDMyICsxLDMzIEBACi0tLyogZGdldHRleHQuYyAtLSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGdldHRleHQoMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0taXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tYW55IGxhdGVyIHZlcnNpb24uCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPGxvY2FsZS5oPgotLSNlbmRpZgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLUBAIC0zNywxOCArMzgsMTYgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIERHRVRURVhUIF9fZGdldHRleHQKLS0jIGRlZmluZSBEQ0dFVFRFWFQgX19kY2dldHRleHQKLSsjIGRlZmluZSBEQ0dFVFRFWFQgSU5UVVNFKF9fZGNnZXR0ZXh0KQotICNlbHNlCi0tIyBkZWZpbmUgREdFVFRFWFQgZGdldHRleHRfXwotLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXwotKyMgZGVmaW5lIERHRVRURVhUIGxpYmludGxfZGdldHRleHQKLSsjIGRlZmluZSBEQ0dFVFRFWFQgbGliaW50bF9kY2dldHRleHQKLSAjZW5kaWYKLSAKLSAvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBvZiB0aGUgY3VycmVudAotICAgIExDX01FU1NBR0VTIGxvY2FsZS4gICovCi0gY2hhciAqCi0tREdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotK0RHRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0gICByZXR1cm4gRENHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgTENfTUVTU0FHRVMpOwotIH0KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kbmdldHRleHQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kbmdldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM4NTc0MzUyOCAtMDQwMAotQEAgLTAsMCArMSw1OSBAQAotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkbmdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotKyNlbmRpZgotKwotKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0rICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRE5HRVRURVhUIF9fZG5nZXR0ZXh0Ci0rIyBkZWZpbmUgRENOR0VUVEVYVCBfX2RjbmdldHRleHQKLSsjZWxzZQotKyMgZGVmaW5lIEROR0VUVEVYVCBsaWJpbnRsX2RuZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgb2YgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUgYW5kIHNraXAgbWVzc2FnZSBhY2NvcmRpbmcgdG8gdGhlIHBsdXJhbCBmb3JtLiAgKi8KLStjaGFyICoKLStETkdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCSAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQotK3sKLSsgIHJldHVybiBEQ05HRVRURVhUIChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgbiwgTENfTUVTU0FHRVMpOwotK30KLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLSt3ZWFrX2FsaWFzIChfX2RuZ2V0dGV4dCwgZG5nZXR0ZXh0KTsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9ldmFsLXBsdXJhbC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2V2YWwtcGx1cmFsLmgJMjAwNC0wOS0xMiAxNDo0MDozNC4zOTA3NDI3NjggLTA0MDAKLUBAIC0wLDAgKzEsMTA4IEBACi0rLyogUGx1cmFsIGV4cHJlc3Npb24gZXZhbHVhdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBTVEFUSUMKLSsjZGVmaW5lIFNUQVRJQyBzdGF0aWMKLSsjZW5kaWYKLSsKLSsvKiBFdmFsdWF0ZSB0aGUgcGx1cmFsIGV4cHJlc3Npb24gYW5kIHJldHVybiBhbiBpbmRleCB2YWx1ZS4gICovCi0rU1RBVElDCi0rdW5zaWduZWQgbG9uZyBpbnQKLStpbnRlcm5hbF9mdW5jdGlvbgotK3BsdXJhbF9ldmFsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqcGV4cCwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSt7Ci0rICBzd2l0Y2ggKHBleHAtPm5hcmdzKQotKyAgICB7Ci0rICAgIGNhc2UgMDoKLSsgICAgICBzd2l0Y2ggKHBleHAtPm9wZXJhdGlvbikKLSsJewotKwljYXNlIHZhcjoKLSsJICByZXR1cm4gbjsKLSsJY2FzZSBudW06Ci0rCSAgcmV0dXJuIHBleHAtPnZhbC5udW07Ci0rCWRlZmF1bHQ6Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgICAvKiBOT1RSRUFDSEVEICovCi0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgMToKLSsgICAgICB7Ci0rCS8qIHBleHAtPm9wZXJhdGlvbiBtdXN0IGJlIGxub3QuICAqLwotKwl1bnNpZ25lZCBsb25nIGludCBhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMF0sIG4pOwotKwlyZXR1cm4gISBhcmc7Ci0rICAgICAgfQotKyAgICBjYXNlIDI6Ci0rICAgICAgewotKwl1bnNpZ25lZCBsb25nIGludCBsZWZ0YXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKLSsJaWYgKHBleHAtPm9wZXJhdGlvbiA9PSBsb3IpCi0rCSAgcmV0dXJuIGxlZnRhcmcgfHwgcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzFdLCBuKTsKLSsJZWxzZSBpZiAocGV4cC0+b3BlcmF0aW9uID09IGxhbmQpCi0rCSAgcmV0dXJuIGxlZnRhcmcgJiYgcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzFdLCBuKTsKLSsJZWxzZQotKwkgIHsKLSsJICAgIHVuc2lnbmVkIGxvbmcgaW50IHJpZ2h0YXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzFdLCBuKTsKLSsKLSsJICAgIHN3aXRjaCAocGV4cC0+b3BlcmF0aW9uKQotKwkgICAgICB7Ci0rCSAgICAgIGNhc2UgbXVsdDoKLSsJCXJldHVybiBsZWZ0YXJnICogcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZGl2aWRlOgotKyNpZiAhSU5URElWMF9SQUlTRVNfU0lHRlBFCi0rCQlpZiAocmlnaHRhcmcgPT0gMCkKLSsJCSAgcmFpc2UgKFNJR0ZQRSk7Ci0rI2VuZGlmCi0rCQlyZXR1cm4gbGVmdGFyZyAvIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIG1vZHVsZToKLSsjaWYgIUlOVERJVjBfUkFJU0VTX1NJR0ZQRQotKwkJaWYgKHJpZ2h0YXJnID09IDApCi0rCQkgIHJhaXNlIChTSUdGUEUpOwotKyNlbmRpZgotKwkJcmV0dXJuIGxlZnRhcmcgJSByaWdodGFyZzsKLSsJICAgICAgY2FzZSBwbHVzOgotKwkJcmV0dXJuIGxlZnRhcmcgKyByaWdodGFyZzsKLSsJICAgICAgY2FzZSBtaW51czoKLSsJCXJldHVybiBsZWZ0YXJnIC0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgbGVzc190aGFuOgotKwkJcmV0dXJuIGxlZnRhcmcgPCByaWdodGFyZzsKLSsJICAgICAgY2FzZSBncmVhdGVyX3RoYW46Ci0rCQlyZXR1cm4gbGVmdGFyZyA+IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGxlc3Nfb3JfZXF1YWw6Ci0rCQlyZXR1cm4gbGVmdGFyZyA8PSByaWdodGFyZzsKLSsJICAgICAgY2FzZSBncmVhdGVyX29yX2VxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgPj0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZXF1YWw6Ci0rCQlyZXR1cm4gbGVmdGFyZyA9PSByaWdodGFyZzsKLSsJICAgICAgY2FzZSBub3RfZXF1YWw6Ci0rCQlyZXR1cm4gbGVmdGFyZyAhPSByaWdodGFyZzsKLSsJICAgICAgZGVmYXVsdDoKLSsJCWJyZWFrOwotKwkgICAgICB9Ci0rCSAgfQotKwkvKiBOT1RSRUFDSEVEICovCi0rCWJyZWFrOwotKyAgICAgIH0KLSsgICAgY2FzZSAzOgotKyAgICAgIHsKLSsJLyogcGV4cC0+b3BlcmF0aW9uIG11c3QgYmUgcW1vcC4gICovCi0rCXVuc2lnbmVkIGxvbmcgaW50IGJvb2xhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMF0sIG4pOwotKwlyZXR1cm4gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzW2Jvb2xhcmcgPyAxIDogMl0sIG4pOwotKyAgICAgIH0KLSsgICAgfQotKyAgLyogTk9UUkVBQ0hFRCAqLwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2V4cGxvZGVuYW1lLmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM5NTc0MjAwOCAtMDQwMAotQEAgLTEsMTkgKzEsMjAgQEAKLS0vKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTgsIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAgICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLUBAIC0zNiwxOCArMzcsMjMgQEAKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0rY2hhciAqCi0rX25sX2ZpbmRfbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgd2hpbGUgKG5hbWVbMF0gIT0gJ1wwJyAmJiBuYW1lWzBdICE9ICdfJyAmJiBuYW1lWzBdICE9ICdAJwotKwkgJiYgbmFtZVswXSAhPSAnKycgJiYgbmFtZVswXSAhPSAnLCcpCi0rICAgICsrbmFtZTsKLSsKLSsgIHJldHVybiAoY2hhciAqKSBuYW1lOwotK30KLSsKLSsKLSBpbnQKLS1fbmxfZXhwbG9kZV9uYW1lIChuYW1lLCBsYW5ndWFnZSwgbW9kaWZpZXIsIHRlcnJpdG9yeSwgY29kZXNldCwKLS0JCSAgbm9ybWFsaXplZF9jb2Rlc2V0LCBzcGVjaWFsLCBzcG9uc29yLCByZXZpc2lvbikKLS0gICAgIGNoYXIgKm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICoqbGFuZ3VhZ2U7Ci0tICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXI7Ci0tICAgICBjb25zdCBjaGFyICoqdGVycml0b3J5OwotLSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0OwotLSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWw7Ci0tICAgICBjb25zdCBjaGFyICoqc3BvbnNvcjsKLS0gICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbjsKLStfbmxfZXhwbG9kZV9uYW1lIChjaGFyICpuYW1lLAotKwkJICBjb25zdCBjaGFyICoqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKiptb2RpZmllciwKLSsJCSAgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwgY29uc3QgY2hhciAqKmNvZGVzZXQsCi0rCQkgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQsIGNvbnN0IGNoYXIgKipzcGVjaWFsLAotKwkJICBjb25zdCBjaGFyICoqc3BvbnNvciwgY29uc3QgY2hhciAqKnJldmlzaW9uKQotIHsKLSAgIGVudW0geyB1bmRlY2lkZWQsIHhwZywgY2VuIH0gc3ludGF4OwotICAgY2hhciAqY3A7Ci1AQCAtNjcsOSArNzMsNyBAQAotICAgbWFzayA9IDA7Ci0gICBzeW50YXggPSB1bmRlY2lkZWQ7Ci0gICAqbGFuZ3VhZ2UgPSBjcCA9IG5hbWU7Ci0tICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnXycgJiYgY3BbMF0gIT0gJ0AnCi0tCSAmJiBjcFswXSAhPSAnKycgJiYgY3BbMF0gIT0gJywnKQotLSAgICArK2NwOwotKyAgY3AgPSBfbmxfZmluZF9sYW5ndWFnZSAoKmxhbmd1YWdlKTsKLSAKLSAgIGlmICgqbGFuZ3VhZ2UgPT0gY3ApCi0gICAgIC8qIFRoaXMgZG9lcyBub3QgbWFrZSBzZW5zZTogbGFuZ3VhZ2UgaGFzIHRvIGJlIHNwZWNpZmllZC4gIFVzZQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2ZpbmRkb21haW4uYwkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMJMjAwNC0wOS0xMiAxNDo0MDozNC40MTU3Mzg5NjggLTA0MDAKLUBAIC0xLDY0ICsxLDQwIEBACi0gLyogSGFuZGxlIGxpc3Qgb2YgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5vcmc+LCAxOTk1LgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGN0eXBlLmg+Ci0tI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZWxzZQotLXZvaWQgZnJlZSAoKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotLSNlbmRpZgotLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBzdHJjaHIKLS0jICBkZWZpbmUgc3RyY2hyIGluZGV4Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSAiZ2V0dGV4dC5oIgotICNpbmNsdWRlICJnZXR0ZXh0UC5oIgotICNpZmRlZiBfTElCQwotICMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotQEAgLTcwLDEwICs0Niw5IEBACi0gICAgdGhlIERPTUFJTk5BTUUgYW5kIENBVEVHT1JZIHBhcmFtZXRlcnMgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50bHkKLSAgICBlc3RhYmxpc2hlZCBiaW5kaW5ncy4gICovCi0gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCi0tX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBsb2NhbGUsIGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkaXJuYW1lOwotLSAgICAgY2hhciAqbG9jYWxlOwotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9maW5kX2RvbWFpbiAoY29uc3QgY2hhciAqZGlybmFtZSwgY2hhciAqbG9jYWxlLAotKwkJIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQotIHsKLSAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKLSAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlOwotQEAgLTk1LDkgKzcwLDkgQEAKLSAKLSAJbGFuZ3VhZ2VbX3RlcnJpdG9yeV1bK2F1ZGllbmNlXVsrc3BlY2lhbF1bLFtzcG9uc29yXVtfcmV2aXNpb25dXQotIAotLSAgICAgQmVzaWRlIHRoZSBmaXJzdCBhbGwgb2YgdGhlbSBhcmUgYWxsb3dlZCB0byBiZSBtaXNzaW5nLiAgSWYgdGhlCi0tICAgICBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCi0tICAgICBsb29rZWQgZm9yLiAgVGhlIHZhcmlvdXMgcGFydCB3aWxsIGJlIHN0cmlwcGVkIG9mIGFjY29yZGluZyB0bwotKyAgICAgQmVzaWRlIHRoZSBmaXJzdCBwYXJ0IGFsbCBvZiB0aGVtIGFyZSBhbGxvd2VkIHRvIGJlIG1pc3NpbmcuICBJZgotKyAgICAgdGhlIGZ1bGwgc3BlY2lmaWVkIGxvY2FsZSBpcyBub3QgZm91bmQsIHRoZSBsZXNzIHNwZWNpZmljIG9uZSBhcmUKLSsgICAgIGxvb2tlZCBmb3IuICBUaGUgdmFyaW91cyBwYXJ0cyB3aWxsIGJlIHN0cmlwcGVkIG9mZiBhY2NvcmRpbmcgdG8KLSAgICAgIHRoZSBmb2xsb3dpbmcgb3JkZXI6Ci0gCQkoMSkgcmV2aXNpb24KLSAJCSgyKSBzcG9uc29yCi1AQCAtMTE5LDcgKzk0LDcgQEAKLSAgICAgICBpbnQgY250OwotIAotICAgICAgIGlmIChyZXR2YWwtPmRlY2lkZWQgPT0gMCkKLS0JX25sX2xvYWRfZG9tYWluIChyZXR2YWwpOwotKwlfbmxfbG9hZF9kb21haW4gKHJldHZhbCwgZG9tYWluYmluZGluZyk7Ci0gCi0gICAgICAgaWYgKHJldHZhbC0+ZGF0YSAhPSBOVUxMKQotIAlyZXR1cm4gcmV0dmFsOwotQEAgLTEyNyw3ICsxMDIsNyBAQAotICAgICAgIGZvciAoY250ID0gMDsgcmV0dmFsLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKLSAJewotIAkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kZWNpZGVkID09IDApCi0tCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0pOwotKwkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLCBkb21haW5iaW5kaW5nKTsKLSAKLSAJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQotIAkgICAgYnJlYWs7Ci1AQCAtMTQyLDEyICsxMTcsMTggQEAKLSAgIGFsaWFzX3ZhbHVlID0gX25sX2V4cGFuZF9hbGlhcyAobG9jYWxlKTsKLSAgIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQotICAgICB7Ci0rI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotKyAgICAgIGxvY2FsZSA9IHN0cmR1cCAoYWxpYXNfdmFsdWUpOwotKyAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCkKLSsJcmV0dXJuIE5VTEw7Ci0rI2Vsc2UKLSAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChhbGlhc192YWx1ZSkgKyAxOwotICAgICAgIGxvY2FsZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSAgICAgICBpZiAobG9jYWxlID09IE5VTEwpCi0gCXJldHVybiBOVUxMOwotIAotICAgICAgIG1lbWNweSAobG9jYWxlLCBhbGlhc192YWx1ZSwgbGVuKTsKLSsjZW5kaWYKLSAgICAgfQotIAotICAgLyogTm93IHdlIGRldGVybWluZSB0aGUgc2luZ2xlIHBhcnRzIG9mIHRoZSBsb2NhbGUgbmFtZS4gIEZpcnN0Ci1AQCAtMTY4LDE0ICsxNDksMTQgQEAKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCi0tICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKLSsgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwsIGRvbWFpbmJpbmRpbmcpOwotICAgaWYgKHJldHZhbC0+ZGF0YSA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgaW50IGNudDsKLSAgICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCi0gCXsKLSAJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQotLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKLSsJICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSwgZG9tYWluYmluZGluZyk7Ci0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKLSAJICAgIGJyZWFrOwotIAl9Ci1AQCAtMTg1LDUgKzE2NiwyNyBAQAotICAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCi0gICAgIGZyZWUgKGxvY2FsZSk7Ci0gCi0rICAvKiBUaGUgc3BhY2UgZm9yIG5vcm1hbGl6ZWRfY29kZXNldCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICBGcmVlIGl0LiAgKi8KLSsgIGlmIChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkKLSsgICAgZnJlZSAoKHZvaWQgKikgbm9ybWFsaXplZF9jb2Rlc2V0KTsKLSsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotKwotKwotKyNpZmRlZiBfTElCQwotK2xpYmNfZnJlZXJlc19mbiAoZnJlZV9tZW0pCi0rewotKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqcnVucCA9IF9ubF9sb2FkZWRfZG9tYWluczsKLSsKLSsgIHdoaWxlIChydW5wICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpoZXJlID0gcnVucDsKLSsgICAgICBpZiAocnVucC0+ZGF0YSAhPSBOVUxMKQotKwlfbmxfdW5sb2FkX2RvbWFpbiAoKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIHJ1bnAtPmRhdGEpOwotKyAgICAgIHJ1bnAgPSBydW5wLT5uZXh0OwotKyAgICAgIGZyZWUgKChjaGFyICopIGhlcmUtPmZpbGVuYW1lKTsKLSsgICAgICBmcmVlIChoZXJlKTsKLSsgICAgfQotK30KLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9nZXR0ZXh0LmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDIwNzM4MjA4IC0wNDAwCi1AQCAtMSwxOSArMSwyMCBAQAotLS8qIEltcGxlbWVudGF0aW9uIG9mIGdldHRleHQoMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTIzLDIxICsyNCwxNCBAQAotICMgZGVmaW5lIF9fbmVlZF9OVUxMCi0gIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSAjZWxzZQotLSMgaWZkZWYgU1REQ19IRUFERVJTCi0tIyAgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KLS0jIGVsc2UKLS0jICBpZmRlZiBIQVZFX1NUUklOR19ICi0tIyAgIGluY2x1ZGUgPHN0cmluZy5oPgotLSMgIGVsc2UKLS0jICAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0rIyBpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIEp1c3QgZm9yIE5VTEwuICAqLwotICNlbmRpZgotIAotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotICNpZmRlZiBfTElCQwotICMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotQEAgLTQ4LDIwICs0MiwxOSBAQAotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgR0VUVEVYVCBfX2dldHRleHQKLS0jIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIElOVFVTRShfX2RjZ2V0dGV4dCkKLSAjZWxzZQotLSMgZGVmaW5lIEdFVFRFWFQgZ2V0dGV4dF9fCi0tIyBkZWZpbmUgREdFVFRFWFQgZGdldHRleHRfXwotKyMgZGVmaW5lIEdFVFRFWFQgbGliaW50bF9nZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0Ci0gI2VuZGlmCi0gCi0gLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSAgICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotICAgIHRleHQpLiAgKi8KLSBjaGFyICoKLS1HRVRURVhUIChtc2dpZCkKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotK0dFVFRFWFQgKGNvbnN0IGNoYXIgKm1zZ2lkKQotIHsKLS0gIHJldHVybiBER0VUVEVYVCAoTlVMTCwgbXNnaWQpOwotKyAgcmV0dXJuIERDR0VUVEVYVCAoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKTsKLSB9Ci0gCi0gI2lmZGVmIF9MSUJDCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ2V0dGV4dC5oCTE5OTgtMDQtMjYgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTA1ICswLDAgQEAKLS0vKiBJbnRlcm5hbCBoZWFkZXIgZm9yIEdOVSBnZXR0ZXh0IGludGVybmF0aW9uYWxpemF0aW9uIGZ1bmN0aW9ucwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKLS0gICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0tICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotLQotLSNpZm5kZWYgX0dFVFRFWFRfSAotLSNkZWZpbmUgX0dFVFRFWFRfSCAxCi0tCi0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0tI2lmIEhBVkVfTElNSVRTX0ggfHwgX0xJQkMKLS0jIGluY2x1ZGUgPGxpbWl0cy5oPgotLSNlbmRpZgotLQotLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLS0KLS0vKiBUaGUgbWFnaWMgbnVtYmVyIG9mIHRoZSBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdC4gICovCi0tI2RlZmluZSBfTUFHSUMgMHg5NTA0MTJkZQotLSNkZWZpbmUgX01BR0lDX1NXQVBQRUQgMHhkZTEyMDQ5NQotLQotLS8qIFJldmlzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudGx5IHVzZWQgLm1vIChiaW5hcnkpIGZpbGUgZm9ybWF0LiAgKi8KLS0jZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUiAwCi0tCi0tLyogVGhlIGZvbGxvd2luZyBjb250b3J0aW9ucyBhcmUgYW4gYXR0ZW1wdCB0byB1c2UgdGhlIEMgcHJlcHJvY2Vzc29yCi0tICAgdG8gZGV0ZXJtaW5lIGFuIHVuc2lnbmVkIGludGVncmFsIHR5cGUgdGhhdCBpcyAzMiBiaXRzIHdpZGUuICBBbgotLSAgIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRvIHVzZSBhdXRvY29uZidzIEFDX0NIRUNLX1NJWkVPRiBtYWNybywgYnV0Ci0tICAgZG9pbmcgdGhhdCB3b3VsZCByZXF1aXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgY29tcGlsZSBhbmQgKnJ1bioKLS0gICB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUuICBMb2NhbGx5IHJ1bm5pbmcgY3Jvc3MtY29tcGlsZWQgZXhlY3V0YWJsZXMKLS0gICBpcyB1c3VhbGx5IG5vdCBwb3NzaWJsZS4gICovCi0tCi0tI2lmIF9fU1REQ19fCi0tIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyA0Mjk0OTY3Mjk1VQotLSNlbHNlCi0tIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyAweEZGRkZGRkZGCi0tI2VuZGlmCi0tCi0tLyogSWYgVUlOVF9NQVggaXNuJ3QgZGVmaW5lZCwgYXNzdW1lIGl0J3MgYSAzMi1iaXQgdHlwZS4KLS0gICBUaGlzIHNob3VsZCBiZSB2YWxpZCBmb3IgYWxsIHN5c3RlbXMgR05VIGNhcmVzIGFib3V0IGJlY2F1c2UKLS0gICB0aGF0IGRvZXNuJ3QgaW5jbHVkZSAxNi1iaXQgc3lzdGVtcywgYW5kIG9ubHkgbW9kZXJuIHN5c3RlbXMKLS0gICAodGhhdCBjZXJ0YWlubHkgaGF2ZSA8bGltaXRzLmg+KSBoYXZlIDY0Ky1iaXQgaW50ZWdyYWwgdHlwZXMuICAqLwotLQotLSNpZm5kZWYgVUlOVF9NQVgKLS0jIGRlZmluZSBVSU5UX01BWCBVSU5UX01BWF8zMl9CSVRTCi0tI2VuZGlmCi0tCi0tI2lmIFVJTlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLS10eXBlZGVmIHVuc2lnbmVkIG5sc191aW50MzI7Ci0tI2Vsc2UKLS0jIGlmIFVTSFJUX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0tdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBubHNfdWludDMyOwotLSMgZWxzZQotLSMgIGlmIFVMT05HX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0tdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5sc191aW50MzI7Ci0tIyAgZWxzZQotLSAgLyogVGhlIGZvbGxvd2luZyBsaW5lIGlzIGludGVuZGVkIHRvIHRocm93IGFuIGVycm9yLiAgVXNpbmcgI2Vycm9yIGlzCi0tICAgICBub3QgcG9ydGFibGUgZW5vdWdoLiAgKi8KLS0gICJDYW5ub3QgZGV0ZXJtaW5lIHVuc2lnbmVkIDMyLWJpdCBkYXRhIHR5cGUuIgotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLQotLS8qIEhlYWRlciBmb3IgYmluYXJ5IC5tbyBmaWxlIGZvcm1hdC4gICovCi0tc3RydWN0IG1vX2ZpbGVfaGVhZGVyCi0tewotLSAgLyogVGhlIG1hZ2ljIG51bWJlci4gICovCi0tICBubHNfdWludDMyIG1hZ2ljOwotLSAgLyogVGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBmb3JtYXQuICAqLwotLSAgbmxzX3VpbnQzMiByZXZpc2lvbjsKLS0gIC8qIFRoZSBudW1iZXIgb2Ygc3RyaW5ncyBwYWlycy4gICovCi0tICBubHNfdWludDMyIG5zdHJpbmdzOwotLSAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiBvcmlnaW5hbCBzdHJpbmdzLiAgKi8KLS0gIG5sc191aW50MzIgb3JpZ190YWJfb2Zmc2V0OwotLSAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGlvbiBzdHJpbmdzLiAgKi8KLS0gIG5sc191aW50MzIgdHJhbnNfdGFiX29mZnNldDsKLS0gIC8qIFNpemUgb2YgaGFzaGluZyB0YWJsZS4gICovCi0tICBubHNfdWludDMyIGhhc2hfdGFiX3NpemU7Ci0tICAvKiBPZmZzZXQgb2YgZmlyc3QgaGFzaGluZyBlbnRyeS4gICovCi0tICBubHNfdWludDMyIGhhc2hfdGFiX29mZnNldDsKLS19OwotLQotLXN0cnVjdCBzdHJpbmdfZGVzYwotLXsKLS0gIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLiAgKi8KLS0gIG5sc191aW50MzIgbGVuZ3RoOwotLSAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KLS0gIG5sc191aW50MzIgb2Zmc2V0OwotLX07Ci0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tI2VuZGlmCS8qIGdldHRleHQuaCAgKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9nZXR0ZXh0UC5oCTE5OTgtMDQtMjYgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmgJMjAwNC0wOS0xMiAxNDo0MDozNC40MjY3MzcyOTYgLTA0MDAKLUBAIC0xLDMzICsxLDUzIEBACi0tLyogSGVhZGVyIGRlc2NyaWJpbmcgaW50ZXJuYWxzIG9mIGdldHRleHQgbGlicmFyeQotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBIZWFkZXIgZGVzY3JpYmluZyBpbnRlcm5hbHMgb2YgbGliaW50bCBsaWJyYXJ5LgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmbmRlZiBfR0VUVEVYVFBfSAotICNkZWZpbmUgX0dFVFRFWFRQX0gKLSAKLSsjaW5jbHVkZSA8c3RkZGVmLmg+CQkvKiBHZXQgc2l6ZV90LiAgKi8KLSsKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgIi4uL2ljb252L2djb252X2ludC5oIgotKyNlbHNlCi0rIyBpZiBIQVZFX0lDT05WCi0rIyAgaW5jbHVkZSA8aWNvbnYuaD4KLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImxvYWRpbmZvLmgiCi0gCi0rI2luY2x1ZGUgImdtby5oIgkJLyogR2V0IG5sc191aW50MzIuICAqLwotKwotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCi0tIyBlbmRpZgotKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KLSsjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgotKyNlbmRpZgotKwotKyNpZm5kZWYgYXR0cmlidXRlX2hpZGRlbgotKyMgZGVmaW5lIGF0dHJpYnV0ZV9oaWRkZW4KLSsjZW5kaWYKLSsKLSsvKiBUZWxsIHRoZSBjb21waWxlciB3aGVuIGEgY29uZGl0aW9uYWwgb3IgaW50ZWdlciBleHByZXNzaW9uIGlzCi0rICAgYWxtb3N0IGFsd2F5cyB0cnVlIG9yIGFsbW9zdCBhbHdheXMgZmFsc2UuICAqLwotKyNpZm5kZWYgSEFWRV9CVUlMVElOX0VYUEVDVAotKyMgZGVmaW5lIF9fYnVpbHRpbl9leHBlY3QoZXhwciwgdmFsKSAoZXhwcikKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIFcKLUBAIC0zNSwzOCArNTUsMTYwIEBACi0gI2VuZGlmCi0gCi0gCi0tc3RhdGljIG5sc191aW50MzIgU1dBUCBQQVJBTVMgKChubHNfdWludDMyIGkpKTsKLS0KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0rIyBkZWZpbmUgU1dBUChpKSBic3dhcF8zMiAoaSkKLSsjZWxzZQotIHN0YXRpYyBpbmxpbmUgbmxzX3VpbnQzMgotIFNXQVAgKGkpCi0gICAgICBubHNfdWludDMyIGk7Ci0gewotICAgcmV0dXJuIChpIDw8IDI0KSB8ICgoaSAmIDB4ZmYwMCkgPDwgOCkgfCAoKGkgPj4gOCkgJiAweGZmMDApIHwgKGkgPj4gMjQpOwotIH0KLSsjZW5kaWYKLSsKLSAKLSsvKiBJbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2Ygc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcuICAqLwotK3N0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MKLSt7Ci0rICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICAqLwotKyAgc2l6ZV90IGxlbmd0aDsKLSsgIC8qIFBvaW50ZXIgdG8gYWRkcmVzc2VkIHN0cmluZy4gICovCi0rICBjb25zdCBjaGFyICpwb2ludGVyOwotK307Ci0gCi0rLyogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuICAqLwotIHN0cnVjdCBsb2FkZWRfZG9tYWluCi0gewotKyAgLyogUG9pbnRlciB0byBtZW1vcnkgY29udGFpbmluZyB0aGUgLm1vIGZpbGUuICAqLwotICAgY29uc3QgY2hhciAqZGF0YTsKLSsgIC8qIDEgaWYgdGhlIG1lbW9yeSBpcyBtbWFwKCllZCwgMCBpZiB0aGUgbWVtb3J5IGlzIG1hbGxvYygpZWQuICAqLwotKyAgaW50IHVzZV9tbWFwOwotKyAgLyogU2l6ZSBvZiBtbWFwKCllZCBtZW1vcnkuICAqLwotKyAgc2l6ZV90IG1tYXBfc2l6ZTsKLSsgIC8qIDEgaWYgdGhlIC5tbyBmaWxlIHVzZXMgYSBkaWZmZXJlbnQgZW5kaWFubmVzcyB0aGFuIHRoaXMgbWFjaGluZS4gICovCi0gICBpbnQgbXVzdF9zd2FwOwotKyAgLyogUG9pbnRlciB0byBhZGRpdGlvbmFsIG1hbGxvYygpZWQgbWVtb3J5LiAgKi8KLSsgIHZvaWQgKm1hbGxvY2VkOwotKwotKyAgLyogTnVtYmVyIG9mIHN0YXRpYyBzdHJpbmdzIHBhaXJzLiAgKi8KLSAgIG5sc191aW50MzIgbnN0cmluZ3M7Ci0tICBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKm9yaWdfdGFiOwotLSAgc3RydWN0IHN0cmluZ19kZXNjICp0cmFuc190YWI7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIG9yaWdpbmFsIHN0cmluZ3MgaW4gdGhlIGZpbGUuICAqLwotKyAgY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICpvcmlnX3RhYjsKLSsgIC8qIFBvaW50ZXIgdG8gZGVzY3JpcHRvcnMgb2YgdHJhbnNsYXRlZCBzdHJpbmdzIGluIHRoZSBmaWxlLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzdHJpbmdfZGVzYyAqdHJhbnNfdGFiOwotKwotKyAgLyogTnVtYmVyIG9mIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5ncyBwYWlycy4gICovCi0rICBubHNfdWludDMyIG5fc3lzZGVwX3N0cmluZ3M7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIG9yaWdpbmFsIHN5c2RlcCBzdHJpbmdzLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKm9yaWdfc3lzZGVwX3RhYjsKLSsgIC8qIFBvaW50ZXIgdG8gZGVzY3JpcHRvcnMgb2YgdHJhbnNsYXRlZCBzeXNkZXAgc3RyaW5ncy4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICp0cmFuc19zeXNkZXBfdGFiOwotKwotKyAgLyogU2l6ZSBvZiBoYXNoIHRhYmxlLiAgKi8KLSAgIG5sc191aW50MzIgaGFzaF9zaXplOwotLSAgbmxzX3VpbnQzMiAqaGFzaF90YWI7Ci0rICAvKiBQb2ludGVyIHRvIGhhc2ggdGFibGUuICAqLwotKyAgY29uc3QgbmxzX3VpbnQzMiAqaGFzaF90YWI7Ci0rICAvKiAxIGlmIHRoZSBoYXNoIHRhYmxlIHVzZXMgYSBkaWZmZXJlbnQgZW5kaWFubmVzcyB0aGFuIHRoaXMgbWFjaGluZS4gICovCi0rICBpbnQgbXVzdF9zd2FwX2hhc2hfdGFiOwotKwotKyAgaW50IGNvZGVzZXRfY250cjsKLSsjaWZkZWYgX0xJQkMKLSsgIF9fZ2NvbnZfdCBjb252OwotKyNlbHNlCi0rIyBpZiBIQVZFX0lDT05WCi0rICBpY29udl90IGNvbnY7Ci0rIyBlbmRpZgotKyNlbmRpZgotKyAgY2hhciAqKmNvbnZfdGFiOwotKwotKyAgc3RydWN0IGV4cHJlc3Npb24gKnBsdXJhbDsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IG5wbHVyYWxzOwotIH07Ci0gCi0rLyogV2Ugd2FudCB0byBhbGxvY2F0ZSBhIHN0cmluZyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QuICBCdXQgSVNPIEMKLSsgICBkb2Vzbid0IGFsbG93IHplcm8gc2l6ZWQgYXJyYXlzLiAgKi8KLSsjaWZkZWYgX19HTlVDX18KLSsjIGRlZmluZSBaRVJPIDAKLSsjZWxzZQotKyMgZGVmaW5lIFpFUk8gMQotKyNlbmRpZgotKwotKy8qIEEgc2V0IG9mIHNldHRpbmdzIGJvdW5kIHRvIGEgbWVzc2FnZSBkb21haW4uICBVc2VkIHRvIHN0b3JlIHNldHRpbmdzCi0rICAgZnJvbSBiaW5kdGV4dGRvbWFpbigpIGFuZCBiaW5kX3RleHRkb21haW5fY29kZXNldCgpLiAgKi8KLSBzdHJ1Y3QgYmluZGluZwotIHsKLSAgIHN0cnVjdCBiaW5kaW5nICpuZXh0OwotLSAgY2hhciAqZG9tYWlubmFtZTsKLSAgIGNoYXIgKmRpcm5hbWU7Ci0rICBpbnQgY29kZXNldF9jbnRyOwkvKiBJbmNyZW1lbnRlZCBlYWNoIHRpbWUgY29kZXNldCBjaGFuZ2VzLiAgKi8KLSsgIGNoYXIgKmNvZGVzZXQ7Ci0rICBjaGFyIGRvbWFpbm5hbWVbWkVST107Ci0gfTsKLSAKLS1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfZmluZF9kb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kaXJuYW1lLAotLQkJCQkJCSBjaGFyICpfX2xvY2FsZSwKLS0JCQkJCQkgY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Ci0tdm9pZCBfbmxfbG9hZF9kb21haW4gUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW4pKTsKLSsvKiBBIGNvdW50ZXIgd2hpY2ggaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHNvbWUgcHJldmlvdXMgdHJhbnNsYXRpb25zCi0rICAgYmVjb21lIGludmFsaWQuCi0rICAgVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBBQkkgb2YgdGhlIEdOVSBsaWJpbnRsLiAgKi8KLStleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rCi0rI2lmbmRlZiBfTElCQwotK2NvbnN0IGNoYXIgKl9ubF9sb2NhbGVfbmFtZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpOwotKyNlbmRpZgotKwotK3N0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9maW5kX2RvbWFpbiAoY29uc3QgY2hhciAqX19kaXJuYW1lLCBjaGFyICpfX2xvY2FsZSwKLSsJCQkJCSBjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCQkgc3RydWN0IGJpbmRpbmcgKl9fZG9tYWluYmluZGluZykKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3ZvaWQgX25sX2xvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfX2RvbWFpbiwKLSsJCSAgICAgIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSt2b2lkIF9ubF91bmxvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqX19kb21haW4pCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLStjb25zdCBjaGFyICpfbmxfaW5pdF9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW5fZmlsZSwKLSsJCQkJICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqX19kb21haW4sCi0rCQkJCSAgc3RydWN0IGJpbmRpbmcgKl9fZG9tYWluYmluZGluZykKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3ZvaWQgX25sX2ZyZWVfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfZG9tYWluICpfX2RvbWFpbikKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotKwotK2NoYXIgKl9ubF9maW5kX21zZyAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0rCQkgICAgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcsIGNvbnN0IGNoYXIgKm1zZ2lkLAotKwkJICAgIHNpemVfdCAqbGVuZ3RocCkKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotKwotKyNpZmRlZiBfTElCQwotK2V4dGVybiBjaGFyICpfX2dldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpOwotK2V4dGVybiBjaGFyICpfX2RnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpOwotK2V4dGVybiBjaGFyICpfX2RjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotKwkJCSAgaW50IF9fY2F0ZWdvcnkpOwotK2V4dGVybiBjaGFyICpfX25nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJIHVuc2lnbmVkIGxvbmcgaW50IF9fbik7Ci0rZXh0ZXJuIGNoYXIgKl9fZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICB1bnNpZ25lZCBsb25nIGludCBuKTsKLStleHRlcm4gY2hhciAqX19kY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwgaW50IF9fY2F0ZWdvcnkpOwotK2V4dGVybiBjaGFyICpfX2RjaWdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkgICBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICAgaW50IF9fcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBfX24sCi0rCQkJICAgaW50IF9fY2F0ZWdvcnkpOwotK2V4dGVybiBjaGFyICpfX3RleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSk7Ci0rZXh0ZXJuIGNoYXIgKl9fYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkgICAgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKTsKLStleHRlcm4gY2hhciAqX19iaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJY29uc3QgY2hhciAqX19jb2Rlc2V0KTsKLSsjZWxzZQotKy8qIERlY2xhcmUgdGhlIGV4cG9ydGVkIGxpYmludGxfKiBmdW5jdGlvbnMsIGluIGEgd2F5IHRoYXQgYWxsb3dzIHVzIHRvCi0rICAgY2FsbCB0aGVtIHVuZGVyIHRoZWlyIHJlYWwgbmFtZS4gICovCi0rIyB1bmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLSsjIHVuZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotK2V4dGVybiBjaGFyICpsaWJpbnRsX2RjaWdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkJIGludCBfX3BsdXJhbCwgdW5zaWduZWQgbG9uZyBpbnQgX19uLAotKwkJCQkgaW50IF9fY2F0ZWdvcnkpOwotKyNlbmRpZgotIAotIC8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotIAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2dtby5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dtby5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDMxNzM2NTM2IC0wNDAwCi1AQCAtMCwwICsxLDE0OSBAQAotKy8qIERlc2NyaXB0aW9uIG9mIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0OiBnZW5lcmFsIGZpbGUgbGF5b3V0LgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NywgMjAwMC0yMDAyLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9HRVRURVhUX0gKLSsjZGVmaW5lIF9HRVRURVhUX0ggMQotKwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogVGhlIG1hZ2ljIG51bWJlciBvZiB0aGUgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQuICAqLwotKyNkZWZpbmUgX01BR0lDIDB4OTUwNDEyZGUKLSsjZGVmaW5lIF9NQUdJQ19TV0FQUEVEIDB4ZGUxMjA0OTUKLSsKLSsvKiBSZXZpc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSB1c2VkIC5tbyAoYmluYXJ5KSBmaWxlIGZvcm1hdC4gICovCi0rI2RlZmluZSBNT19SRVZJU0lPTl9OVU1CRVIgMAotKyNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSX1dJVEhfU1lTREVQX0kgMQotKwotKy8qIFRoZSBmb2xsb3dpbmcgY29udG9ydGlvbnMgYXJlIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBDIHByZXByb2Nlc3NvcgotKyAgIHRvIGRldGVybWluZSBhbiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlIHRoYXQgaXMgMzIgYml0cyB3aWRlLiAgQW4KLSsgICBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byB1c2UgYXV0b2NvbmYncyBBQ19DSEVDS19TSVpFT0YgbWFjcm8sIGJ1dAotKyAgIGFzIG9mIHZlcnNpb24gYXV0b2NvbmYtMi4xMywgdGhlIEFDX0NIRUNLX1NJWkVPRiBtYWNybyBkb2Vzbid0IHdvcmsKLSsgICB3aGVuIGNyb3NzLWNvbXBpbGluZy4gICovCi0rCi0rI2lmIF9fU1REQ19fCi0rIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyA0Mjk0OTY3Mjk1VQotKyNlbHNlCi0rIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyAweEZGRkZGRkZGCi0rI2VuZGlmCi0rCi0rLyogSWYgVUlOVF9NQVggaXNuJ3QgZGVmaW5lZCwgYXNzdW1lIGl0J3MgYSAzMi1iaXQgdHlwZS4KLSsgICBUaGlzIHNob3VsZCBiZSB2YWxpZCBmb3IgYWxsIHN5c3RlbXMgR05VIGNhcmVzIGFib3V0IGJlY2F1c2UKLSsgICB0aGF0IGRvZXNuJ3QgaW5jbHVkZSAxNi1iaXQgc3lzdGVtcywgYW5kIG9ubHkgbW9kZXJuIHN5c3RlbXMKLSsgICAodGhhdCBjZXJ0YWlubHkgaGF2ZSA8bGltaXRzLmg+KSBoYXZlIDY0Ky1iaXQgaW50ZWdyYWwgdHlwZXMuICAqLwotKwotKyNpZm5kZWYgVUlOVF9NQVgKLSsjIGRlZmluZSBVSU5UX01BWCBVSU5UX01BWF8zMl9CSVRTCi0rI2VuZGlmCi0rCi0rI2lmIFVJTlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLSt0eXBlZGVmIHVuc2lnbmVkIG5sc191aW50MzI7Ci0rI2Vsc2UKLSsjIGlmIFVTSFJUX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0rdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBubHNfdWludDMyOwotKyMgZWxzZQotKyMgIGlmIFVMT05HX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5sc191aW50MzI7Ci0rIyAgZWxzZQotKyAgLyogVGhlIGZvbGxvd2luZyBsaW5lIGlzIGludGVuZGVkIHRvIHRocm93IGFuIGVycm9yLiAgVXNpbmcgI2Vycm9yIGlzCi0rICAgICBub3QgcG9ydGFibGUgZW5vdWdoLiAgKi8KLSsgICJDYW5ub3QgZGV0ZXJtaW5lIHVuc2lnbmVkIDMyLWJpdCBkYXRhIHR5cGUuIgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKwotKy8qIEhlYWRlciBmb3IgYmluYXJ5IC5tbyBmaWxlIGZvcm1hdC4gICovCi0rc3RydWN0IG1vX2ZpbGVfaGVhZGVyCi0rewotKyAgLyogVGhlIG1hZ2ljIG51bWJlci4gICovCi0rICBubHNfdWludDMyIG1hZ2ljOwotKyAgLyogVGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBmb3JtYXQuICAqLwotKyAgbmxzX3VpbnQzMiByZXZpc2lvbjsKLSsKLSsgIC8qIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgdXNlZCBpbiAubW8gZmlsZXMgd2l0aCBtYWpvciByZXZpc2lvbiAwIG9yIDEuICAqLwotKwotKyAgLyogVGhlIG51bWJlciBvZiBzdHJpbmdzIHBhaXJzLiAgKi8KLSsgIG5sc191aW50MzIgbnN0cmluZ3M7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiBvcmlnX3RhYl9vZmZzZXQ7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIHRyYW5zbGF0ZWQgc3RyaW5ncy4gICovCi0rICBubHNfdWludDMyIHRyYW5zX3RhYl9vZmZzZXQ7Ci0rICAvKiBTaXplIG9mIGhhc2ggdGFibGUuICAqLwotKyAgbmxzX3VpbnQzMiBoYXNoX3RhYl9zaXplOwotKyAgLyogT2Zmc2V0IG9mIGZpcnN0IGhhc2ggdGFibGUgZW50cnkuICAqLwotKyAgbmxzX3VpbnQzMiBoYXNoX3RhYl9vZmZzZXQ7Ci0rCi0rICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWlub3IgcmV2aXNpb24gPj0gMS4gICovCi0rCi0rICAvKiBUaGUgbnVtYmVyIG9mIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuICAqLwotKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zZWdtZW50czsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSBkZXNjcmliaW5nIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuICAqLwotKyAgbmxzX3VpbnQzMiBzeXNkZXBfc2VnbWVudHNfb2Zmc2V0OwotKyAgLyogVGhlIG51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgcGFpcnMuICAqLwotKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiBvcmlnaW5hbCBzeXNkZXAgc3RyaW5ncy4gICovCi0rICBubHNfdWludDMyIG9yaWdfc3lzZGVwX3RhYl9vZmZzZXQ7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIHRyYW5zbGF0ZWQgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiB0cmFuc19zeXNkZXBfdGFiX29mZnNldDsKLSt9OwotKwotKy8qIERlc2NyaXB0b3IgZm9yIHN0YXRpYyBzdHJpbmcgY29udGFpbmVkIGluIHRoZSBiaW5hcnkgLm1vIGZpbGUuICAqLwotK3N0cnVjdCBzdHJpbmdfZGVzYwotK3sKLSsgIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLCBub3QgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICAqLwotKyAgbmxzX3VpbnQzMiBsZW5ndGg7Ci0rICAvKiBPZmZzZXQgb2Ygc3RyaW5nIGluIGZpbGUuICAqLwotKyAgbmxzX3VpbnQzMiBvZmZzZXQ7Ci0rfTsKLSsKLSsvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWlub3IgcmV2aXNpb24gPj0gMS4gICovCi0rCi0rLyogRGVzY3JpcHRvciBmb3Igc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcgc2VnbWVudC4gICovCi0rc3RydWN0IHN5c2RlcF9zZWdtZW50Ci0rewotKyAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIG5sc191aW50MzIgbGVuZ3RoOwotKyAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KLSsgIG5sc191aW50MzIgb2Zmc2V0OwotK307Ci0rCi0rLyogRGVzY3JpcHRvciBmb3Igc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcuICAqLwotK3N0cnVjdCBzeXNkZXBfc3RyaW5nCi0rewotKyAgLyogT2Zmc2V0IG9mIHN0YXRpYyBzdHJpbmcgc2VnbWVudHMgaW4gZmlsZS4gICovCi0rICBubHNfdWludDMyIG9mZnNldDsKLSsgIC8qIEFsdGVybmF0aW5nIHNlcXVlbmNlIG9mIHN0YXRpYyBhbmQgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4KLSsgICAgIFRoZSBsYXN0IHNlZ21lbnQgaXMgYSBzdGF0aWMgc2VnbWVudCwgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICAqLwotKyAgc3RydWN0IHNlZ21lbnRfcGFpcgotKyAgewotKyAgICAvKiBTaXplIG9mIHN0YXRpYyBzZWdtZW50LiAgKi8KLSsgICAgbmxzX3VpbnQzMiBzZWdzaXplOwotKyAgICAvKiBSZWZlcmVuY2UgdG8gc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcgc2VnbWVudCwgb3IgfjAgYXQgdGhlIGVuZC4gICovCi0rICAgIG5sc191aW50MzIgc3lzZGVwcmVmOwotKyAgfSBzZWdtZW50c1sxXTsKLSt9OwotKwotKy8qIE1hcmtlciBmb3IgdGhlIGVuZCBvZiB0aGUgc2VnbWVudHNbXSBhcnJheS4gIFRoaXMgaGFzIHRoZSB2YWx1ZSAweEZGRkZGRkZGLAotKyAgIHJlZ2FyZGxlc3Mgd2hldGhlciAnaW50JyBpcyAxNiBiaXQsIDMyIGJpdCwgb3IgNjQgYml0LiAgKi8KLSsjZGVmaW5lIFNFR01FTlRTX0VORCAoKG5sc191aW50MzIpIH4wKQotKwotKy8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotKwotKyNlbmRpZgkvKiBnZXR0ZXh0LmggICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvaGFzaC1zdHJpbmcuaAkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDM2NzM1Nzc2IC0wNDAwCi1AQCAtMSwzNSArMSwyMyBAQAotLS8qIEltcGxlbWVudHMgYSBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbi4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogRGVzY3JpcHRpb24gb2YgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQ6IHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5Ny0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCi0tICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0jaWZkZWYgSEFWRV9WQUxVRVNfSAotLSMgaW5jbHVkZSA8dmFsdWVzLmg+Ci0tI2VuZGlmCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotLSNpZm5kZWYgUEFSQU1TCi0tIyBpZiBfX1NURENfXwotLSMgIGRlZmluZSBQQVJBTVMoQXJncykgQXJncwotLSMgZWxzZQotLSMgIGRlZmluZSBQQVJBTVMoQXJncykgKCkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0gLyogV2UgYXNzdW1lIHRvIGhhdmUgYHVuc2lnbmVkIGxvbmcgaW50JyB2YWx1ZSB3aXRoIGF0IGxlYXN0IDMyIGJpdHMuICAqLwotICNkZWZpbmUgSEFTSFdPUkRCSVRTIDMyCi0gCi1AQCAtMzcsMTEgKzI1LDggQEAKLSAvKiBEZWZpbmVzIHRoZSBzbyBjYWxsZWQgYGhhc2hwancnIGZ1bmN0aW9uIGJ5IFAuSi4gV2VpbmJlcmdlcgotICAgIFtzZWUgQWhvL1NldGhpL1VsbG1hbiwgQ09NUElMRVJTOiBQcmluY2lwbGVzLCBUZWNobmlxdWVzIGFuZCBUb29scywKLSAgICAxOTg2LCAxOTg3IEJlbGwgVGVsZXBob25lIExhYm9yYXRvcmllcywgSW5jLl0gICovCi0tc3RhdGljIHVuc2lnbmVkIGxvbmcgaGFzaF9zdHJpbmcgUEFSQU1TICgoY29uc3QgY2hhciAqX19zdHJfcGFyYW0pKTsKLS0KLS1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKLS1oYXNoX3N0cmluZyAoc3RyX3BhcmFtKQotLSAgICAgY29uc3QgY2hhciAqc3RyX3BhcmFtOwotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKLStoYXNoX3N0cmluZyAoY29uc3QgY2hhciAqc3RyX3BhcmFtKQotIHsKLSAgIHVuc2lnbmVkIGxvbmcgaW50IGh2YWwsIGc7Ci0gICBjb25zdCBjaGFyICpzdHIgPSBzdHJfcGFyYW07Ci1AQCAtNTEsOCArMzYsOCBAQAotICAgd2hpbGUgKCpzdHIgIT0gJ1wwJykKLSAgICAgewotICAgICAgIGh2YWwgPDw9IDQ7Ci0tICAgICAgaHZhbCArPSAodW5zaWduZWQgbG9uZykgKnN0cisrOwotLSAgICAgIGcgPSBodmFsICYgKCh1bnNpZ25lZCBsb25nKSAweGYgPDwgKEhBU0hXT1JEQklUUyAtIDQpKTsKLSsgICAgICBodmFsICs9ICh1bnNpZ25lZCBjaGFyKSAqc3RyKys7Ci0rICAgICAgZyA9IGh2YWwgJiAoKHVuc2lnbmVkIGxvbmcgaW50KSAweGYgPDwgKEhBU0hXT1JEQklUUyAtIDQpKTsKLSAgICAgICBpZiAoZyAhPSAwKQotIAl7Ci0gCSAgaHZhbCBePSBnID4+IChIQVNIV09SREJJVFMgLSA4KTsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9pbnRsLWNvbXBhdC5jCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40NDE3MzUwMTYgLTA0MDAKLUBAIC0xLDc2ICsxLDEzMSBAQAotIC8qIGludGwtY29tcGF0LmMgLSBTdHViIGZ1bmN0aW9ucyB0byBjYWxsIGdldHRleHQgZnVuY3Rpb25zIGZyb20gR05VIGdldHRleHQKLSAgICBMaWJyYXJ5LgotLSAgIENvcHlyaWdodCAoQykgMTk5NSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAyMDAwLTIwMDMgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0taXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tYW55IGxhdGVyIHZlcnNpb24uCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLSsvKiBUaGlzIGZpbGUgcmVkaXJlY3RzIHRoZSBnZXR0ZXh0IGZ1bmN0aW9ucyAod2l0aG91dCBwcmVmaXgpIHRvIHRob3NlCi0rICAgZGVmaW5lZCBpbiB0aGUgaW5jbHVkZWQgR05VIGxpYmludGwgbGlicmFyeSAod2l0aCAibGliaW50bF8iIHByZWZpeCkuCi0rICAgSXQgaXMgY29tcGlsZWQgaW50byBsaWJpbnRsIGluIG9yZGVyIHRvIG1ha2UgdGhlIEFNX0dOVV9HRVRURVhUIHRlc3QKLSsgICBvZiBnZXR0ZXh0IDw9IDAuMTEuMiB3b3JrIHdpdGggdGhlIGxpYmludGwgbGlicmFyeSA+PSAwLjExLjMgd2hpY2gKLSsgICBoYXMgdGhlIHJlZGlyZWN0aW9ucyBwcmltYXJpbHkgaW4gdGhlIDxsaWJpbnRsLmg+IGluY2x1ZGUgZmlsZS4KLSsgICBJdCBpcyBhbHNvIGNvbXBpbGVkIGludG8gbGliZ251aW50bCBzbyB0aGF0IGxpYmdudWludGwuc28gY2FuIGJlIHVzZWQKLSsgICBhcyBMRF9QUkVMT0FEYWJsZSBsaWJyYXJ5IG9uIGdsaWJjIHN5c3RlbXMsIHRvIHByb3ZpZGUgdGhlIGV4dHJhCi0rICAgZmVhdHVyZXMgdGhhdCB0aGUgZnVuY3Rpb25zIGluIHRoZSBsaWJjIGRvbid0IGhhdmUgKG5hbWVseSwgbG9nZ2luZykuICAqLwotKwotIAotICN1bmRlZiBnZXR0ZXh0Ci0gI3VuZGVmIGRnZXR0ZXh0Ci0gI3VuZGVmIGRjZ2V0dGV4dAotKyN1bmRlZiBuZ2V0dGV4dAotKyN1bmRlZiBkbmdldHRleHQKLSsjdW5kZWYgZGNuZ2V0dGV4dAotICN1bmRlZiB0ZXh0ZG9tYWluCi0gI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCi0rI3VuZGVmIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0rCi0rCi0rLyogV2hlbiBidWlsZGluZyBhIERMTCwgd2UgbXVzdCBleHBvcnQgc29tZSBmdW5jdGlvbnMuICBOb3RlIHRoYXQgYmVjYXVzZQotKyAgIHRoZSBmdW5jdGlvbnMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgYmluYXJ5IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlCi0rICAgZG9uJ3QgbmVlZCB0byB1c2UgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGluIGFueSBjYXNlLiAgKi8KLSsjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBCVUlMRElOR19ETEwKLSsjIGRlZmluZSBETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0rI2Vsc2UKLSsjIGRlZmluZSBETExfRVhQT1JURUQKLSsjZW5kaWYKLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICpkaXJuYW1lOwotK2dldHRleHQgKGNvbnN0IGNoYXIgKm1zZ2lkKQotIHsKLS0gIHJldHVybiBiaW5kdGV4dGRvbWFpbl9fIChkb21haW5uYW1lLCBkaXJuYW1lKTsKLSsgIHJldHVybiBsaWJpbnRsX2dldHRleHQgKG1zZ2lkKTsKLSB9Ci0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tZGNnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0tICAgICBpbnQgY2F0ZWdvcnk7Ci0rZGdldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkKQotIHsKLS0gIHJldHVybiBkY2dldHRleHRfXyAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KTsKLSsgIHJldHVybiBsaWJpbnRsX2RnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCk7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWRnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStkY2dldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpCi0gewotLSAgcmV0dXJuIGRnZXR0ZXh0X18gKGRvbWFpbm5hbWUsIG1zZ2lkKTsKLSsgIHJldHVybiBsaWJpbnRsX2RjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KTsKLSB9Ci0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tZ2V0dGV4dCAobXNnaWQpCi0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStuZ2V0dGV4dCAoY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0gewotLSAgcmV0dXJuIGdldHRleHRfXyAobXNnaWQpOwotKyAgcmV0dXJuIGxpYmludGxfbmdldHRleHQgKG1zZ2lkMSwgbXNnaWQyLCBuKTsKLSB9Ci0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tdGV4dGRvbWFpbiAoZG9tYWlubmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0rZG5nZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSB7Ci0tICByZXR1cm4gdGV4dGRvbWFpbl9fIChkb21haW5uYW1lKTsKLSsgIHJldHVybiBsaWJpbnRsX2RuZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIG4pOwotK30KLSsKLSsKLStETExfRVhQT1JURUQKLStjaGFyICoKLStkY25nZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCSAgICBpbnQgY2F0ZWdvcnkpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZGNuZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIG4sIGNhdGVnb3J5KTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqZG9tYWlubmFtZSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF90ZXh0ZG9tYWluIChkb21haW5uYW1lKTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmRpcm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpOwotK30KLSsKLSsKLStETExfRVhQT1JURUQKLStjaGFyICoKLStiaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqY29kZXNldCkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCAoZG9tYWlubmFtZSwgY29kZXNldCk7Ci0gfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2wxMG5mbGlzdC5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2wxMG5mbGlzdC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDU3NzMyNTg0IC0wNDAwCi1AQCAtMSw1MiArMSw0MCBAQAotLS8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBzdHBjcHkoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFCTEKLSsjZW5kaWYKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgX0dOVV9TT1VSQ0UKLS0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tIyBpZm5kZWYgbWVtY3B5Ci0tIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIHN0cmNocgotLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKLS0jIGVuZGlmCi0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9BUkdaX0gKLSAjIGluY2x1ZGUgPGFyZ3ouaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAKLSAjaW5jbHVkZSAibG9hZGluZm8uaCIKLSAKLUBAIC02NSwyMyArNTMsMzkgQEAKLSAvKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKLSAgICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0Ci0gICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLwotLSMgZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIF9fc3RwY3B5KGRlc3QsIHNyYykKLSsjIGlmbmRlZiBzdHBjcHkKLSsjICBkZWZpbmUgc3RwY3B5KGRlc3QsIHNyYykgX19zdHBjcHkoZGVzdCwgc3JjKQotKyMgZW5kaWYKLSAjZWxzZQotICMgaWZuZGVmIEhBVkVfU1RQQ1BZCi0tc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKLStzdGF0aWMgY2hhciAqc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOwotICMgZW5kaWYKLSAjZW5kaWYKLSAKLSsvKiBQYXRobmFtZSBzdXBwb3J0LgotKyAgIElTU0xBU0goQykgICAgICAgICAgIHRlc3RzIHdoZXRoZXIgQyBpcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVyLgotKyAgIElTX0FCU09MVVRFX1BBVEgoUCkgIHRlc3RzIHdoZXRoZXIgUCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiAgSWYgaXQgaXMgbm90LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IG1heSBiZSBjb25jYXRlbmF0ZWQgdG8gYSBkaXJlY3RvcnkgcGF0aG5hbWUuCi0rICovCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCi0rIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCi0rICAgICgoKChQKVswXSA+PSAnQScgJiYgKFApWzBdIDw9ICdaJykgfHwgKChQKVswXSA+PSAnYScgJiYgKFApWzBdIDw9ICd6JykpIFwKLSsgICAgICYmIChQKVsxXSA9PSAnOicpCi0rIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSAoSVNTTEFTSCAoKFApWzBdKSB8fCBIQVNfREVWSUNFIChQKSkKLSsjZWxzZQotKyAgLyogVW5peCAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycpCi0rIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSBJU1NMQVNIICgoUClbMF0pCi0rI2VuZGlmCi0rCi0gLyogRGVmaW5lIGZ1bmN0aW9uIHdoaWNoIGFyZSB1c3VhbGx5IG5vdCBhdmFpbGFibGUuICAqLwotIAotICNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9DT1VOVAotIC8qIFJldHVybnMgdGhlIG51bWJlciBvZiBzdHJpbmdzIGluIEFSR1ouICAqLwotLXN0YXRpYyBzaXplX3QgYXJnel9jb3VudF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKmFyZ3osIHNpemVfdCBsZW4pKTsKLS0KLSBzdGF0aWMgc2l6ZV90Ci0tYXJnel9jb3VudF9fIChhcmd6LCBsZW4pCi0tICAgICBjb25zdCBjaGFyICphcmd6OwotLSAgICAgc2l6ZV90IGxlbjsKLSthcmd6X2NvdW50X18gKGNvbnN0IGNoYXIgKmFyZ3osIHNpemVfdCBsZW4pCi0gewotICAgc2l6ZV90IGNvdW50ID0gMDsKLSAgIHdoaWxlIChsZW4gPiAwKQotQEAgLTk1LDE4ICs5OSwxNyBAQAotIH0KLSAjIHVuZGVmIF9fYXJnel9jb3VudAotICMgZGVmaW5lIF9fYXJnel9jb3VudChhcmd6LCBsZW4pIGFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQotKyNlbHNlCi0rIyBpZmRlZiBfTElCQwotKyMgIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBJTlRVU0UoX19hcmd6X2NvdW50KSAoYXJneiwgbGVuKQotKyMgZW5kaWYKLSAjZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9DT1VOVCAqLwotIAotICNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9TVFJJTkdJRlkKLSAvKiBNYWtlICdcMCcgc2VwYXJhdGVkIGFyZyB2ZWN0b3IgQVJHWiBwcmludGFibGUgYnkgY29udmVydGluZyBhbGwgdGhlICdcMCdzCi0gICAgZXhjZXB0IHRoZSBsYXN0IGludG8gdGhlIGNoYXJhY3RlciBTRVAuICAqLwotLXN0YXRpYyB2b2lkIGFyZ3pfc3RyaW5naWZ5X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGxlbiwgaW50IHNlcCkpOwotLQotIHN0YXRpYyB2b2lkCi0tYXJnel9zdHJpbmdpZnlfXyAoYXJneiwgbGVuLCBzZXApCi0tICAgICBjaGFyICphcmd6OwotLSAgICAgc2l6ZV90IGxlbjsKLS0gICAgIGludCBzZXA7Ci0rYXJnel9zdHJpbmdpZnlfXyAoY2hhciAqYXJneiwgc2l6ZV90IGxlbiwgaW50IHNlcCkKLSB7Ci0gICB3aGlsZSAobGVuID4gMCkKLSAgICAgewotQEAgLTExOSwxNyArMTIyLDE2IEBACi0gfQotICMgdW5kZWYgX19hcmd6X3N0cmluZ2lmeQotICMgZGVmaW5lIF9fYXJnel9zdHJpbmdpZnkoYXJneiwgbGVuLCBzZXApIGFyZ3pfc3RyaW5naWZ5X18gKGFyZ3osIGxlbiwgc2VwKQotKyNlbHNlCi0rIyBpZmRlZiBfTElCQwotKyMgIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBcCi0rICBJTlRVU0UoX19hcmd6X3N0cmluZ2lmeSkgKGFyZ3osIGxlbiwgc2VwKQotKyMgZW5kaWYKLSAjZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9TVFJJTkdJRlkgKi8KLSAKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfTkVYVAotLXN0YXRpYyBjaGFyICphcmd6X25leHRfXyBQQVJBTVMgKChjaGFyICphcmd6LCBzaXplX3QgYXJnel9sZW4sCi0tCQkJCSAgY29uc3QgY2hhciAqZW50cnkpKTsKLS0KLSBzdGF0aWMgY2hhciAqCi0tYXJnel9uZXh0X18gKGFyZ3osIGFyZ3pfbGVuLCBlbnRyeSkKLS0gICAgIGNoYXIgKmFyZ3o7Ci0tICAgICBzaXplX3QgYXJnel9sZW47Ci0tICAgICBjb25zdCBjaGFyICplbnRyeTsKLSthcmd6X25leHRfXyAoY2hhciAqYXJneiwgc2l6ZV90IGFyZ3pfbGVuLCBjb25zdCBjaGFyICplbnRyeSkKLSB7Ci0gICBpZiAoZW50cnkpCi0gICAgIHsKLUBAIC0xNTAsMTEgKzE1Miw4IEBACi0gCi0gCi0gLyogUmV0dXJuIG51bWJlciBvZiBiaXRzIHNldCBpbiBYLiAgKi8KLS1zdGF0aWMgaW50IHBvcCBQQVJBTVMgKChpbnQgeCkpOwotLQotIHN0YXRpYyBpbmxpbmUgaW50Ci0tcG9wICh4KQotLSAgICAgaW50IHg7Ci0rcG9wIChpbnQgeCkKLSB7Ci0gICAvKiBXZSBhc3N1bWUgdGhhdCBubyBtb3JlIHRoYW4gMTYgYml0cyBhcmUgdXNlZC4gICovCi0gICB4ID0gKCh4ICYgfjB4NTU1NSkgPj4gMSkgKyAoeCAmIDB4NTU1NSk7Ci1AQCAtMTY3LDMxICsxNjYsMjcgQEAKLSAKLSAMCi0gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCi0tX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXJsaXN0LCBkaXJsaXN0X2xlbiwgbWFzaywgbGFuZ3VhZ2UsCi0tCQkgICAgdGVycml0b3J5LCBjb2Rlc2V0LCBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAotLQkJICAgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgZG9fYWxsb2NhdGUpCi0tICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdDsKLS0gICAgIGNvbnN0IGNoYXIgKmRpcmxpc3Q7Ci0tICAgICBzaXplX3QgZGlybGlzdF9sZW47Ci0tICAgICBpbnQgbWFzazsKLS0gICAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlOwotLSAgICAgY29uc3QgY2hhciAqdGVycml0b3J5OwotLSAgICAgY29uc3QgY2hhciAqY29kZXNldDsKLS0gICAgIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldDsKLS0gICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyOwotLSAgICAgY29uc3QgY2hhciAqc3BlY2lhbDsKLS0gICAgIGNvbnN0IGNoYXIgKnNwb25zb3I7Ci0tICAgICBjb25zdCBjaGFyICpyZXZpc2lvbjsKLS0gICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwotLSAgICAgaW50IGRvX2FsbG9jYXRlOwotK19ubF9tYWtlX2wxMG5mbGlzdCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3QsCi0rCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLAotKwkJICAgIGludCBtYXNrLCBjb25zdCBjaGFyICpsYW5ndWFnZSwgY29uc3QgY2hhciAqdGVycml0b3J5LAotKwkJICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQsIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldCwKLSsJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKLSsJCSAgICBjb25zdCBjaGFyICpzcG9uc29yLCBjb25zdCBjaGFyICpyZXZpc2lvbiwKLSsJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGRvX2FsbG9jYXRlKQotIHsKLSAgIGNoYXIgKmFic19maWxlbmFtZTsKLS0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmxhc3QgPSBOVUxMOwotKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmxhc3RwOwotICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqcmV0dmFsOwotICAgY2hhciAqY3A7Ci0rICBzaXplX3QgZGlybGlzdF9jb3VudDsKLSAgIHNpemVfdCBlbnRyaWVzOwotICAgaW50IGNudDsKLSAKLSsgIC8qIElmIExBTkdVQUdFIGNvbnRhaW5zIGFuIGFic29sdXRlIGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9uLCB3ZSBpZ25vcmUKLSsgICAgIERJUkxJU1QuICAqLwotKyAgaWYgKElTX0FCU09MVVRFX1BBVEggKGxhbmd1YWdlKSkKLSsgICAgZGlybGlzdF9sZW4gPSAwOwotKwotICAgLyogQWxsb2NhdGUgcm9vbSBmb3IgdGhlIGZ1bGwgZmlsZSBuYW1lLiAgKi8KLSAgIGFic19maWxlbmFtZSA9IChjaGFyICopIG1hbGxvYyAoZGlybGlzdF9sZW4KLSAJCQkJICArIHN0cmxlbiAobGFuZ3VhZ2UpCi1AQCAtMjA5LDcgKzIwNCw3IEBACi0gCQkJCSAgKyAoKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKLSAJCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDApCi0gCQkJCSAgICAgPyAoMSArICgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCi0tCQkJCQkgICAgID8gc3RybGVuIChzcG9uc29yKSArIDEgOiAwKQotKwkJCQkJICAgICA/IHN0cmxlbiAoc3BvbnNvcikgOiAwKQotIAkJCQkJKyAoKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDAKLSAJCQkJCSAgID8gc3RybGVuIChyZXZpc2lvbikgKyAxIDogMCkpIDogMCkKLSAJCQkJICArIDEgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpOwotQEAgLTIxNywxNCArMjEyLDE2IEBACi0gICBpZiAoYWJzX2ZpbGVuYW1lID09IE5VTEwpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgcmV0dmFsID0gTlVMTDsKLS0gIGxhc3QgPSBOVUxMOwotLQotICAgLyogQ29uc3RydWN0IGZpbGUgbmFtZS4gICovCi0tICBtZW1jcHkgKGFic19maWxlbmFtZSwgZGlybGlzdCwgZGlybGlzdF9sZW4pOwotLSAgX19hcmd6X3N0cmluZ2lmeSAoYWJzX2ZpbGVuYW1lLCBkaXJsaXN0X2xlbiwgJzonKTsKLS0gIGNwID0gYWJzX2ZpbGVuYW1lICsgKGRpcmxpc3RfbGVuIC0gMSk7Ci0tICAqY3ArKyA9ICcvJzsKLSsgIGNwID0gYWJzX2ZpbGVuYW1lOwotKyAgaWYgKGRpcmxpc3RfbGVuID4gMCkKLSsgICAgewotKyAgICAgIG1lbWNweSAoY3AsIGRpcmxpc3QsIGRpcmxpc3RfbGVuKTsKLSsgICAgICBfX2FyZ3pfc3RyaW5naWZ5IChjcCwgZGlybGlzdF9sZW4sIFBBVEhfU0VQQVJBVE9SKTsKLSsgICAgICBjcCArPSBkaXJsaXN0X2xlbjsKLSsgICAgICBjcFstMV0gPSAnLyc7Ci0rICAgIH0KLSsKLSAgIGNwID0gc3RwY3B5IChjcCwgbGFuZ3VhZ2UpOwotIAotICAgaWYgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwKQotQEAgLTI3MSw3ICsyNjgsNyBAQAotIAotICAgLyogTG9vayBpbiBsaXN0IG9mIGFscmVhZHkgbG9hZGVkIGRvbWFpbnMgd2hldGhlciBpdCBpcyBhbHJlYWR5Ci0gICAgICBhdmFpbGFibGUuICAqLwotLSAgbGFzdCA9IE5VTEw7Ci0rICBsYXN0cCA9IGwxMG5maWxlX2xpc3Q7Ci0gICBmb3IgKHJldHZhbCA9ICpsMTBuZmlsZV9saXN0OyByZXR2YWwgIT0gTlVMTDsgcmV0dmFsID0gcmV0dmFsLT5uZXh0KQotICAgICBpZiAocmV0dmFsLT5maWxlbmFtZSAhPSBOVUxMKQotICAgICAgIHsKLUBAIC0yODYsNyArMjgzLDcgQEAKLSAJICAgIGJyZWFrOwotIAkgIH0KLSAKLS0JbGFzdCA9IHJldHZhbDsKLSsJbGFzdHAgPSAmcmV0dmFsLT5uZXh0OwotICAgICAgIH0KLSAKLSAgIGlmIChyZXR2YWwgIT0gTlVMTCB8fCBkb19hbGxvY2F0ZSA9PSAwKQotQEAgLTI5NSw0OCArMjkyLDY2IEBACi0gICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgfQotIAotLSAgcmV0dmFsID0gKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikKLS0gICAgbWFsbG9jIChzaXplb2YgKCpyZXR2YWwpICsgKF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pCi0tCQkJCSogKDEgPDwgcG9wIChtYXNrKSkKLS0JCQkJKiBzaXplb2YgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikpKTsKLSsgIGRpcmxpc3RfY291bnQgPSAoZGlybGlzdF9sZW4gPiAwID8gX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgOiAxKTsKLSsKLSsgIC8qIEFsbG9jYXRlIGEgbmV3IGxvYWRlZF9sMTBuZmlsZS4gICovCi0rICByZXR2YWwgPQotKyAgICAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKQotKyAgICBtYWxsb2MgKHNpemVvZiAoKnJldHZhbCkKLSsJICAgICsgKCgoZGlybGlzdF9jb3VudCA8PCBwb3AgKG1hc2spKSArIChkaXJsaXN0X2NvdW50ID4gMSA/IDEgOiAwKSkKLSsJICAgICAgICogc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopKSk7Ci0gICBpZiAocmV0dmFsID09IE5VTEwpCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgcmV0dmFsLT5maWxlbmFtZSA9IGFic19maWxlbmFtZTsKLS0gIHJldHZhbC0+ZGVjaWRlZCA9IChfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSAhPSAxCi0rCi0rICAvKiBXZSBzZXQgcmV0dmFsLT5kYXRhIHRvIE5VTEwgaGVyZTsgaXQgaXMgZmlsbGVkIGluIGxhdGVyLgotKyAgICAgU2V0dGluZyByZXR2YWwtPmRlY2lkZWQgdG8gMSBoZXJlIG1lYW5zIHRoYXQgcmV0dmFsIGRvZXMgbm90Ci0rICAgICBjb3JyZXNwb25kIHRvIGEgcmVhbCBmaWxlIChkaXJsaXN0X2NvdW50ID4gMSkgb3IgaXMgbm90IHdvcnRoCi0rICAgICBsb29raW5nIHVwIChpZiBhbiB1bm5vcm1hbGl6ZWQgY29kZXNldCB3YXMgc3BlY2lmaWVkKS4gICovCi0rICByZXR2YWwtPmRlY2lkZWQgPSAoZGlybGlzdF9jb3VudCA+IDEKLSAJCSAgICAgfHwgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDAKLSAJCQkgJiYgKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwKSk7Ci0gICByZXR2YWwtPmRhdGEgPSBOVUxMOwotIAotLSAgaWYgKGxhc3QgPT0gTlVMTCkKLS0gICAgewotLSAgICAgIHJldHZhbC0+bmV4dCA9ICpsMTBuZmlsZV9saXN0OwotLSAgICAgICpsMTBuZmlsZV9saXN0ID0gcmV0dmFsOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICByZXR2YWwtPm5leHQgPSBsYXN0LT5uZXh0OwotLSAgICAgIGxhc3QtPm5leHQgPSByZXR2YWw7Ci0tICAgIH0KLSsgIHJldHZhbC0+bmV4dCA9ICpsYXN0cDsKLSsgICpsYXN0cCA9IHJldHZhbDsKLSAKLSAgIGVudHJpZXMgPSAwOwotLSAgLyogSWYgdGhlIERJUkxJU1QgaXMgYSByZWFsIGxpc3QgdGhlIFJFVFZBTCBlbnRyeSBjb3JyZXNwb25kcyBub3QgdG8KLS0gICAgIGEgcmVhbCBmaWxlLiAgU28gd2UgaGF2ZSB0byB1c2UgdGhlIERJUkxJU1Qgc2VwYXJhdGlvbiBtZWNoYW5pc20KLS0gICAgIG9mIHRoZSBpbm5lciBsb29wLiAgKi8KLS0gIGNudCA9IF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pID09IDEgPyBtYXNrIC0gMSA6IG1hc2s7Ci0tICBmb3IgKDsgY250ID49IDA7IC0tY250KQotKyAgLyogUmVjdXJzZSB0byBmaWxsIHRoZSBpbmhlcml0YW5jZSBsaXN0IG9mIFJFVFZBTC4KLSsgICAgIElmIHRoZSBESVJMSVNUIGlzIGEgcmVhbCBsaXN0IChpLmUuIERJUkxJU1RfQ09VTlQgPiAxKSwgdGhlIFJFVFZBTAotKyAgICAgZW50cnkgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHJlYWwgZmlsZTsgcmV0dmFsLT5maWxlbmFtZSBjb250YWlucwotKyAgICAgY29sb25zLiAgSW4gdGhpcyBjYXNlIHdlIGxvb3AgYWNyb3NzIGFsbCBlbGVtZW50cyBvZiBESVJMSVNUIGFuZAotKyAgICAgYWNyb3NzIGFsbCBiaXQgcGF0dGVybnMgZG9taW5hdGVkIGJ5IE1BU0suCi0rICAgICBJZiB0aGUgRElSTElTVCBpcyBhIHNpbmdsZSBkaXJlY3Rvcnkgb3IgZW50aXJlbHkgcmVkdW5kYW50IChpLmUuCi0rICAgICBESVJMSVNUX0NPVU5UID09IDEpLCB3ZSBsb29wIGFjcm9zcyBhbGwgYml0IHBhdHRlcm5zIGRvbWluYXRlZCBieQotKyAgICAgTUFTSywgZXhjbHVkaW5nIE1BU0sgaXRzZWxmLgotKyAgICAgSW4gZWl0aGVyIGNhc2UsIHdlIGxvb3AgZG93biBmcm9tIE1BU0sgdG8gMC4gIFRoaXMgaGFzIHRoZSBlZmZlY3QKLSsgICAgIHRoYXQgdGhlIGV4dHJhIGJpdHMgaW4gdGhlIGxvY2FsZSBuYW1lIGFyZSBkcm9wcGVkIGluIHRoaXMgb3JkZXI6Ci0rICAgICBmaXJzdCB0aGUgbW9kaWZpZXIsIHRoZW4gdGhlIHRlcnJpdG9yeSwgdGhlbiB0aGUgY29kZXNldCwgdGhlbiB0aGUKLSsgICAgIG5vcm1hbGl6ZWRfY29kZXNldC4gICovCi0rICBmb3IgKGNudCA9IGRpcmxpc3RfY291bnQgPiAxID8gbWFzayA6IG1hc2sgLSAxOyBjbnQgPj0gMDsgLS1jbnQpCi0gICAgIGlmICgoY250ICYgfm1hc2spID09IDAKLSAJJiYgKChjbnQgJiBDRU5fU1BFQ0lGSUMpID09IDAgfHwgKGNudCAmIFhQR19TUEVDSUZJQykgPT0gMCkKLSAJJiYgKChjbnQgJiBYUEdfQ09ERVNFVCkgPT0gMCB8fCAoY250ICYgWFBHX05PUk1fQ09ERVNFVCkgPT0gMCkpCi0gICAgICAgewotLQkvKiBJdGVyYXRlIG92ZXIgYWxsIGVsZW1lbnRzIG9mIHRoZSBESVJMSVNULiAgKi8KLS0JY2hhciAqZGlyID0gTlVMTDsKLSsJaWYgKGRpcmxpc3RfY291bnQgPiAxKQotKwkgIHsKLSsJICAgIC8qIEl0ZXJhdGUgb3ZlciBhbGwgZWxlbWVudHMgb2YgdGhlIERJUkxJU1QuICAqLwotKwkgICAgY2hhciAqZGlyID0gTlVMTDsKLSAKLS0Jd2hpbGUgKChkaXIgPSBfX2FyZ3pfbmV4dCAoKGNoYXIgKikgZGlybGlzdCwgZGlybGlzdF9sZW4sIGRpcikpCi0tCSAgICAgICAhPSBOVUxMKQotKwkgICAgd2hpbGUgKChkaXIgPSBfX2FyZ3pfbmV4dCAoKGNoYXIgKikgZGlybGlzdCwgZGlybGlzdF9sZW4sIGRpcikpCi0rCQkgICAhPSBOVUxMKQotKwkgICAgICByZXR2YWwtPnN1Y2Nlc3NvcltlbnRyaWVzKytdCi0rCQk9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlyLCBzdHJsZW4gKGRpcikgKyAxLAotKwkJCQkgICAgICBjbnQsIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGNvZGVzZXQsCi0rCQkJCSAgICAgIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCi0rCQkJCSAgICAgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgMSk7Ci0rCSAgfQotKwllbHNlCi0gCSAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQotLQkgICAgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpciwgc3RybGVuIChkaXIpICsgMSwgY250LAotLQkJCQkgIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGNvZGVzZXQsCi0rCSAgICA9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlybGlzdCwgZGlybGlzdF9sZW4sCi0rCQkJCSAgY250LCBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAotIAkJCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCi0gCQkJCSAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCAxKTsKLSAgICAgICB9Ci1AQCAtMzQ3LDExICszNjIsMTAgQEAKLSAMCi0gLyogTm9ybWFsaXplIGNvZGVzZXQgbmFtZS4gIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGZvciB0aGUgY29kZXNldAotICAgIG5hbWVzLiAgTm9ybWFsaXphdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiB0aGUgY29tbW9uCi0tICAgbmFtZXMuICAqLwotKyAgIG5hbWVzLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIGhhcyB0byBiZQotKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLwotIGNvbnN0IGNoYXIgKgotLV9ubF9ub3JtYWxpemVfY29kZXNldCAoY29kZXNldCwgbmFtZV9sZW4pCi0tICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OwotLSAgICAgc2l6ZV90IG5hbWVfbGVuOwotK19ubF9ub3JtYWxpemVfY29kZXNldCAoY29uc3QgY2hhciAqY29kZXNldCwgc2l6ZV90IG5hbWVfbGVuKQotIHsKLSAgIGludCBsZW4gPSAwOwotICAgaW50IG9ubHlfZGlnaXQgPSAxOwotQEAgLTM2MCwxMSArMzc0LDExIEBACi0gICBzaXplX3QgY250OwotIAotICAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCi0tICAgIGlmIChpc2FsbnVtIChjb2Rlc2V0W2NudF0pKQotKyAgICBpZiAoaXNhbG51bSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0gICAgICAgewotIAkrK2xlbjsKLSAKLS0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCi0rCWlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKSkKLSAJICBvbmx5X2RpZ2l0ID0gMDsKLSAgICAgICB9Ci0gCi1AQCAtMzc4LDkgKzM5Miw5IEBACi0gCXdwID0gcmV0dmFsOwotIAotICAgICAgIGZvciAoY250ID0gMDsgY250IDwgbmFtZV9sZW47ICsrY250KQotLQlpZiAoaXNhbHBoYSAoY29kZXNldFtjbnRdKSkKLS0JICAqd3ArKyA9IHRvbG93ZXIgKGNvZGVzZXRbY250XSk7Ci0tCWVsc2UgaWYgKGlzZGlnaXQgKGNvZGVzZXRbY250XSkpCi0rCWlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKSkKLSsJICAqd3ArKyA9IHRvbG93ZXIgKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pOwotKwllbHNlIGlmIChpc2RpZ2l0ICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKSkKLSAJICAqd3ArKyA9IGNvZGVzZXRbY250XTsKLSAKLSAgICAgICAqd3AgPSAnXDAnOwotQEAgLTM5OCw5ICs0MTIsNyBAQAotICAgIHRvIGJlIGRlZmluZWQuICAqLwotICNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0gc3RhdGljIGNoYXIgKgotLXN0cGNweSAoZGVzdCwgc3JjKQotLSAgICAgY2hhciAqZGVzdDsKLS0gICAgIGNvbnN0IGNoYXIgKnNyYzsKLStzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKLSB7Ci0gICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCi0gICAgIC8qIERvIG5vdGhpbmcuICovIDsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9saWJnZXR0ZXh0LmgJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxODIgKzAsMCBAQAotLS8qIE1lc3NhZ2UgY2F0YWxvZ3MgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotLQotLS8qIEJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNvbGFyaXMpIHdlIHNvbWV0aW1lcyBoYXZlIHRvIGluY2x1ZGUKLS0gICB0aGUgc3lzdGVtcyBsaWJpbnRsLmggYXMgd2VsbCBhcyB0aGlzIGZpbGUgd2UgaGF2ZSBtb3JlIGNvbXBsZXgKLS0gICBpbmNsdWRlIHByb3RlY3Rpb24gYWJvdmUuICBCdXQgdGhlIHN5c3RlbXMgaGVhZGVyIG1pZ2h0IHBlcmhhcHMgYWxzbwotLSAgIGRlZmluZSBfTElCSU5UTF9IIGFuZCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBwcm90ZWN0IHRoZSBkZWZpbml0aW9uIGhlcmUuICAqLwotLQotLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkgfHwgIWRlZmluZWQgKF9MSUJHRVRURVhUX0gpCi0tI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKQotLSMgZGVmaW5lIF9MSUJJTlRMX0gJMQotLSNlbmRpZgotLSNkZWZpbmUgX0xJQkdFVFRFWFRfSAkxCi0tCi0tLyogV2UgZGVmaW5lIGFuIGFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSB0aGUgR05VCi0tICAgaW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dC4gICovCi0tI2RlZmluZSBfX1VTRV9HTlVfR0VUVEVYVCAxCi0tCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLSNpZiBIQVZFX0xPQ0FMRV9ICi0tIyBpbmNsdWRlIDxsb2NhbGUuaD4KLS0jZW5kaWYKLS0KLS0KLS0jaWZkZWYgX19jcGx1c3BsdXMKLS1leHRlcm4gIkMiIHsKLS0jZW5kaWYKLS0KLS0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0tCi0tI2lmbmRlZiBQQVJBTVMKLS0jIGlmIF9fU1REQ19fCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWZuZGVmIE5VTEwKLS0jIGlmICFkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX19HTlVDX18KLS0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKLS0jIGVsc2UKLS0jICBkZWZpbmUgTlVMTCAoMCkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmICFIQVZFX0xDX01FU1NBR0VTCi0tLyogVGhpcyB2YWx1ZSBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdldHRleHQoKSBhbmQgZGdldHRleHQoKQotLSAgIGZ1bmN0aW9uLiAgQnV0IHNvbWUgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhpcyBkZWZpbmVkLiAgRGVmaW5lIGl0Ci0tICAgdG8gYSBkZWZhdWx0IHZhbHVlLiAgKi8KLS0jIGRlZmluZSBMQ19NRVNTQUdFUyAoLTEpCi0tI2VuZGlmCi0tCi0tCi0tLyogRGVjbGFyYXRpb25zIGZvciBnZXR0ZXh0LXVzaW5nLWNhdGdldHMgaW50ZXJmYWNlLiAgRGVyaXZlZCBmcm9tCi0tICAgSmltIE1leWVyaW5nJ3MgbGliaW50bC5oLiAgKi8KLS1zdHJ1Y3QgX21zZ19lbnQKLS17Ci0tICBjb25zdCBjaGFyICpfbXNnOwotLSAgaW50IF9tc2dfbnVtYmVyOwotLX07Ci0tCi0tCi0tI2lmIEhBVkVfQ0FUR0VUUwotLS8qIFRoZXNlIHR3byB2YXJpYWJsZXMgYXJlIGRlZmluZWQgaW4gdGhlIGF1dG9tYXRpY2FsbHkgYnkgcG8tdG8tdGJsLnNlZAotLSAgIGdlbmVyYXRlZCBmaWxlIGBjYXQtaWQtdGJsLmMnLiAgKi8KLS1leHRlcm4gY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW107Ci0tZXh0ZXJuIGludCBfbXNnX3RibF9sZW5ndGg7Ci0tI2VuZGlmCi0tCi0tCi0tLyogRm9yIGF1dG9tYXRpY2FsIGV4dHJhY3Rpb24gb2YgbWVzc2FnZXMgc29tZXRpbWVzIG5vIHJlYWwKLS0gICB0cmFuc2xhdGlvbiBpcyBuZWVkZWQuICBJbnN0ZWFkIHRoZSBzdHJpbmcgaXRzZWxmIGlzIHRoZSByZXN1bHQuICAqLwotLSNkZWZpbmUgZ2V0dGV4dF9ub29wKFN0cikgKFN0cikKLS0KLS0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0Ci0tICAgdGV4dCkuICAqLwotLWV4dGVybiBjaGFyICpnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKLS1leHRlcm4gY2hhciAqZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKLS0KLS0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLS0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLwotLWV4dGVybiBjaGFyICpkZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKLS1leHRlcm4gY2hhciAqZGdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0tCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tCi0tLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0tICAgbG9jYWxlLiAgKi8KLS1leHRlcm4gY2hhciAqZGNnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLS0JCQkJaW50IF9fY2F0ZWdvcnkpKTsKLS1leHRlcm4gY2hhciAqZGNnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotLQkJCQkgIGNvbnN0IGNoYXIgKl9fbXNnaWQsIGludCBfX2NhdGVnb3J5KSk7Ci0tCi0tCi0tLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCi0tICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KLS0gICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KLS1leHRlcm4gY2hhciAqdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKLS1leHRlcm4gY2hhciAqdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOwotLQotLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAotLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KLS1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotLQkJCQkgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOwotLWV4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOwotLQotLSNpZiBFTkFCTEVfTkxTCi0tCi0tLyogU29sYXJpcyAyLjMgaGFzIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGJ1dCBkY2dldHRleHQgaXMgbWlzc2luZy4KLS0gICBTbyB3ZSBvbWl0IHRoaXMgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4gIEJUVywgU29sYXJpcyAyLjQKLS0gICBoYXMgZGNnZXR0ZXh0LiAgKi8KLS0jIGlmICFIQVZFX0NBVEdFVFMgJiYgKCFIQVZFX0dFVFRFWFQgfHwgSEFWRV9EQ0dFVFRFWFQpCi0tCi0tIyAgZGVmaW5lIGdldHRleHQoTXNnaWQpCQkJCQkJICAgICAgXAotLSAgICAgZGdldHRleHQgKE5VTEwsIE1zZ2lkKQotLQotLSMgIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkJCQkJCSAgICAgIFwKLS0gICAgIGRjZ2V0dGV4dCAoRG9tYWlubmFtZSwgTXNnaWQsIExDX01FU1NBR0VTKQotLQotLSMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3Ci0tLyogVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiBsb2FkbXNnY2F0LmMuICBXZSBuZWVkIGEgc2lnbiwKLS0gICB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbGwKLS0gICB0cmFuc2xhdGlvbnMuICAqLwotLWV4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLS0KLS0jICAgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpCQkJICAgICAgXAotLSAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAotLSAgICh7CQkJCQkJCQkJICAgICAgXAotLSAgICAgY2hhciAqX19yZXN1bHQ7CQkJCQkJCSAgICAgIFwKLS0gICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTXNnaWQpKQkJCQkJICAgICAgXAotLSAgICAgICB7CQkJCQkJCQkgICAgICBcCi0tCSBzdGF0aWMgY2hhciAqX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAotLQkgc3RhdGljIGludCBfX2NhdGFsb2dfY291bnRlcl9fOwkJCQkgICAgICBcCi0tCSBpZiAoISBfX3RyYW5zbGF0aW9uX18gfHwgX19jYXRhbG9nX2NvdW50ZXJfXyAhPSBfbmxfbXNnX2NhdF9jbnRyKSAgICBcCi0tCSAgIHsJCQkJCQkJCSAgICAgIFwKLS0JICAgICBfX3RyYW5zbGF0aW9uX18gPQkJCQkJCSAgICAgIFwKLS0JICAgICAgIGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAotLQkgICAgIF9fY2F0YWxvZ19jb3VudGVyX18gPSBfbmxfbXNnX2NhdF9jbnRyOwkJCSAgICAgIFwKLS0JICAgfQkJCQkJCQkJICAgICAgXAotLQkgX19yZXN1bHQgPSBfX3RyYW5zbGF0aW9uX187CQkJCQkgICAgICBcCi0tICAgICAgIH0JCQkJCQkJCSAgICAgIFwKLS0gICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKLS0gICAgICAgX19yZXN1bHQgPSBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKLS0gICAgIF9fcmVzdWx0OwkJCQkJCQkJICAgICAgXAotLSAgICB9KSkKLS0jICBlbmRpZgotLSMgZW5kaWYKLS0KLS0jZWxzZQotLQotLSMgZGVmaW5lIGdldHRleHQoTXNnaWQpIChNc2dpZCkKLS0jIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkgKE1zZ2lkKQotLSMgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpIChNc2dpZCkKLS0jIGRlZmluZSB0ZXh0ZG9tYWluKERvbWFpbm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCi0tIyBkZWZpbmUgYmluZHRleHRkb21haW4oRG9tYWlubmFtZSwgRGlybmFtZSkgd2hpbGUgKDApIC8qIG5vdGhpbmcgKi8KLS0KLS0jZW5kaWYKLS0KLS0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLS0KLS0jaWZkZWYgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0tCi0tI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbGliZ251aW50bC5oLmluCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdudWludGwuaC5pbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ2MjczMTgyNCAtMDQwMAotQEAgLTAsMCArMSwzODMgQEAKLSsvKiBNZXNzYWdlIGNhdGFsb2dzIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9MSUJJTlRMX0gKLSsjZGVmaW5lIF9MSUJJTlRMX0gJMQotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsvKiBUaGUgTENfTUVTU0FHRVMgbG9jYWxlIGNhdGVnb3J5IGlzIHRoZSBjYXRlZ29yeSB1c2VkIGJ5IHRoZSBmdW5jdGlvbnMKLSsgICBnZXR0ZXh0KCkgYW5kIGRnZXR0ZXh0KCkuICBJdCBpcyBzcGVjaWZpZWQgaW4gUE9TSVgsIGJ1dCBub3QgaW4gQU5TSSBDLgotKyAgIE9uIHN5c3RlbXMgdGhhdCBkb24ndCBkZWZpbmUgaXQsIHVzZSBhbiBhcmJpdHJhcnkgdmFsdWUgaW5zdGVhZC4KLSsgICBPbiBTb2xhcmlzLCA8bG9jYWxlLmg+IGRlZmluZXMgX19MT0NBTEVfSCAob3IgX0xPQ0FMRV9IIGluIFNvbGFyaXMgMi41KQotKyAgIHRoZW4gaW5jbHVkZXMgPGxpYmludGwuaD4gKGkuZS4gdGhpcyBmaWxlISkgYW5kIHRoZW4gb25seSBkZWZpbmVzCi0rICAgTENfTUVTU0FHRVMuICBUbyBhdm9pZCBhIHJlZGVmaW5pdGlvbiB3YXJuaW5nLCBkb24ndCBkZWZpbmUgTENfTUVTU0FHRVMKLSsgICBpbiB0aGlzIGNhc2UuICAqLwotKyNpZiAhZGVmaW5lZCBMQ19NRVNTQUdFUyAmJiAhKGRlZmluZWQgX19MT0NBTEVfSCB8fCAoZGVmaW5lZCBfTE9DQUxFX0ggJiYgZGVmaW5lZCBfX3N1bikpCi0rIyBkZWZpbmUgTENfTUVTU0FHRVMgMTcyOQotKyNlbmRpZgotKwotKy8qIFdlIGRlZmluZSBhbiBhZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgdGhlIEdOVQotKyAgIGltcGxlbWVudGF0aW9uIG9mIGdldHRleHQuICAqLwotKyNkZWZpbmUgX19VU0VfR05VX0dFVFRFWFQgMQotKwotKy8qIFByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN1cHBvcnRlZCBmaWxlIGZvcm1hdHMuICBSZXR1cm5zIHRoZQotKyAgIG1heGltdW0gbWlub3IgcmV2aXNpb24gbnVtYmVyIHN1cHBvcnRlZCBmb3IgYSBnaXZlbiBtYWpvciByZXZpc2lvbi4gICovCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgXAotKyAgKChtYWpvcikgPT0gMCA/IDEgOiAtMSkKLSsKLSsvKiBSZXNvbHZlIGEgcGxhdGZvcm0gc3BlY2lmaWMgY29uZmxpY3Qgb24gREpHUFAuICBHTlUgZ2V0dGV4dCB0YWtlcwotKyAgIHByZWNlZGVuY2Ugb3ZlciBfY29uaW9fZ2V0dGV4dC4gICovCi0rI2lmZGVmIF9fREpHUFBfXwotKyMgdW5kZWYgZ2V0dGV4dAotKyNlbmRpZgotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKwotKy8qIFdlIHJlZGlyZWN0IHRoZSBmdW5jdGlvbnMgdG8gdGhvc2UgcHJlZml4ZWQgd2l0aCAibGliaW50bF8iLiAgVGhpcyBpcwotKyAgIG5lY2Vzc2FyeSwgYmVjYXVzZSBzb21lIHN5c3RlbXMgZGVmaW5lIGdldHRleHQvdGV4dGRvbWFpbi8uLi4gaW4gdGhlIEMKLSsgICBsaWJyYXJ5IChuYW1lbHksIFNvbGFyaXMgMi40IGFuZCBuZXdlciwgYW5kIEdOVSBsaWJjIDIuMCBhbmQgbmV3ZXIpLgotKyAgIElmIHdlIHVzZWQgdGhlIHVucHJlZml4ZWQgbmFtZXMsIHRoZXJlIHdvdWxkIGJlIGNhc2VzIHdoZXJlIHRoZQotKyAgIGRlZmluaXRpb24gaW4gdGhlIEMgbGlicmFyeSB3b3VsZCBvdmVycmlkZSB0aGUgb25lIGluIHRoZSBsaWJpbnRsLnNvCi0rICAgc2hhcmVkIGxpYnJhcnkuICBSZWNhbGwgdGhhdCBvbiBFTEYgc3lzdGVtcywgdGhlIHN5bWJvbHMgYXJlIGxvb2tlZAotKyAgIHVwIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6Ci0rICAgICAxLiBpbiB0aGUgZXhlY3V0YWJsZSwKLSsgICAgIDIuIGluIHRoZSBzaGFyZWQgbGlicmFyaWVzIHNwZWNpZmllZCBvbiB0aGUgbGluayBjb21tYW5kIGxpbmUsIGluIG9yZGVyLAotKyAgICAgMy4gaW4gdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgc2hhcmVkIGxpYnJhcmllcyBzcGVjaWZpZWQgb24gdGhlIGxpbmsKLSsgICAgICAgIGNvbW1hbmQgbGluZSwKLSsgICAgIDQuIGluIHRoZSBkbG9wZW4oKWVkIHNoYXJlZCBsaWJyYXJpZXMsIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUKLSsgICAgICAgIGRsb3BlbigpZWQuCi0rICAgVGhlIGRlZmluaXRpb24gaW4gdGhlIEMgbGlicmFyeSB3b3VsZCBvdmVycmlkZSB0aGUgb25lIGluIGxpYmludGwuc28gaWYKLSsgICBlaXRoZXIKLSsgICAgICogLWxjIGlzIGdpdmVuIG9uIHRoZSBsaW5rIGNvbW1hbmQgbGluZSBhbmQgLWxpbnRsIGlzbid0LCBvcgotKyAgICAgKiAtbGMgaXMgZ2l2ZW4gb24gdGhlIGxpbmsgY29tbWFuZCBsaW5lIGJlZm9yZSAtbGludGwsIG9yCi0rICAgICAqIGxpYmludGwuc28gaXMgYSBkZXBlbmRlbmN5IG9mIGEgZGxvcGVuKCllZCBzaGFyZWQgbGlicmFyeSBidXQgbm90Ci0rICAgICAgIGxpbmtlZCB0byB0aGUgZXhlY3V0YWJsZSBhdCBsaW5rIHRpbWUuCi0rICAgU2luY2UgU29sYXJpcyBnZXR0ZXh0KCkgYmVoYXZlcyBkaWZmZXJlbnRseSB0aGFuIEdOVSBnZXR0ZXh0KCksIHRoaXMKLSsgICB3b3VsZCBiZSB1bmFjY2VwdGFibGUuCi0rCi0rICAgVGhlIHJlZGlyZWN0aW9uIGhhcHBlbnMgYnkgZGVmYXVsdCB0aHJvdWdoIG1hY3JvcyBpbiBDLCBzbyB0aGF0ICZnZXR0ZXh0Ci0rICAgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbXBpbGF0aW9uIHVuaXQsIGJ1dCB0aHJvdWdoIGlubGluZSBmdW5jdGlvbnMgaW4KLSsgICBDKyssIGluIG9yZGVyIG5vdCB0byBpbnRlcmZlcmUgd2l0aCB0aGUgbmFtZSBtYW5nbGluZyBvZiBjbGFzcyBmaWVsZHMgb3IKLSsgICBjbGFzcyBtZXRob2RzIGNhbGxlZCAnZ2V0dGV4dCcuICAqLwotKwotKy8qIFRoZSB1c2VyIGNhbiBkZWZpbmUgX0lOVExfUkVESVJFQ1RfSU5MSU5FIG9yIF9JTlRMX1JFRElSRUNUX01BQ1JPUy4KLSsgICBJZiBoZSBkb2Vzbid0LCB3ZSBjaG9vc2UgdGhlIG1ldGhvZC4gIEEgdGhpcmQgcG9zc2libGUgbWV0aG9kIGlzCi0rICAgX0lOVExfUkVESVJFQ1RfQVNNLCBzdXBwb3J0ZWQgb25seSBieSBHQ0MuICAqLwotKyNpZiAhKGRlZmluZWQgX0lOVExfUkVESVJFQ1RfSU5MSU5FIHx8IGRlZmluZWQgX0lOVExfUkVESVJFQ1RfTUFDUk9TKQotKyMgaWYgX19HTlVDX18gPj0gMiAmJiAhZGVmaW5lZCBfX0FQUExFX0NDX18gJiYgIWRlZmluZWQgX19NSU5HVzMyX18gJiYgIShfX0dOVUNfXyA9PSAyICYmIGRlZmluZWQgX0FJWCkgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cykKLSsjICBkZWZpbmUgX0lOVExfUkVESVJFQ1RfQVNNCi0rIyBlbHNlCi0rIyAgaWZkZWYgX19jcGx1c3BsdXMKLSsjICAgZGVmaW5lIF9JTlRMX1JFRElSRUNUX0lOTElORQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKy8qIEF1eGlsaWFyeSBtYWNyb3MuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9BU00KLSsjIGRlZmluZSBfSU5UTF9BU00oY25hbWUpIF9fYXNtX18gKF9JTlRMX0FTTU5BTUUgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgI2NuYW1lKSkKLSsjIGRlZmluZSBfSU5UTF9BU01OQU1FKHByZWZpeCxjbmFtZXN0cmluZykgX0lOVExfU1RSSU5HSUZZIChwcmVmaXgpIGNuYW1lc3RyaW5nCi0rIyBkZWZpbmUgX0lOVExfU1RSSU5HSUZZKHByZWZpeCkgI3ByZWZpeAotKyNlbHNlCi0rIyBkZWZpbmUgX0lOVExfQVNNKGNuYW1lKQotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0rICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKLSsgICB0ZXh0KS4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2dldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9nZXR0ZXh0IChfX21zZ2lkKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZ2V0dGV4dCBsaWJpbnRsX2dldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2dldHRleHQpOwotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2RnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9kZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZGdldHRleHQgbGliaW50bF9kZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZGdldHRleHQpOwotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQotKyAgIGxvY2FsZS4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2RjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotKwkJCQlpbnQgX19jYXRlZ29yeSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpkY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQkgICAgICAgaW50IF9fY2F0ZWdvcnkpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZGNnZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQsIF9fY2F0ZWdvcnkpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBkY2dldHRleHQgbGliaW50bF9kY2dldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0rCQkJaW50IF9fY2F0ZWdvcnkpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kY2dldHRleHQpOwotKyNlbmRpZgotKwotKwotKy8qIFNpbWlsYXIgdG8gYGdldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0rICAgbnVtYmVyIE4uICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9uZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgICAgICB1bnNpZ25lZCBsb25nIGludCBfX24pOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICAgICB1bnNpZ25lZCBsb25nIGludCBfX24pCi0rewotKyAgcmV0dXJuIGxpYmludGxfbmdldHRleHQgKF9fbXNnaWQxLCBfX21zZ2lkMiwgX19uKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgbmdldHRleHQgbGliaW50bF9uZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbikKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX25nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBTaW1pbGFyIHRvIGBkZ2V0dGV4dCcgYnV0IHNlbGVjdCB0aGUgcGx1cmFsIGZvcm0gY29ycmVzcG9uZGluZyB0byB0aGUKLSsgICBudW1iZXIgTi4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2RuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkMSwKLSsJCQkJY29uc3QgY2hhciAqX19tc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IF9fbik7Ci0rc3RhdGljIGlubGluZSBjaGFyICpkbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZDEsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKl9fbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBfX24pCi0rewotKyAgcmV0dXJuIGxpYmludGxfZG5nZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQxLCBfX21zZ2lkMiwgX19uKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZG5nZXR0ZXh0IGxpYmludGxfZG5nZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmRuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCWNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQl1bnNpZ25lZCBsb25nIGludCBfX24pCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kbmdldHRleHQpOwotKyNlbmRpZgotKwotKy8qIFNpbWlsYXIgdG8gYGRjZ2V0dGV4dCcgYnV0IHNlbGVjdCB0aGUgcGx1cmFsIGZvcm0gY29ycmVzcG9uZGluZyB0byB0aGUKLSsgICBudW1iZXIgTi4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2RjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkJIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwgaW50IF9fY2F0ZWdvcnkpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQljb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJCXVuc2lnbmVkIGxvbmcgaW50IF9fbiwgaW50IF9fY2F0ZWdvcnkpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZGNuZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkMSwgX19tc2dpZDIsIF9fbiwgX19jYXRlZ29yeSk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRjbmdldHRleHQgbGliaW50bF9kY25nZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmRjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZGNuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rCi0rLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCi0rICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KLSsgICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKnRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF90ZXh0ZG9tYWluIChfX2RvbWFpbm5hbWUpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSB0ZXh0ZG9tYWluIGxpYmludGxfdGV4dGRvbWFpbgotKyNlbmRpZgotK2V4dGVybiBjaGFyICp0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF90ZXh0ZG9tYWluKTsKLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLSsgICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSAgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZHRleHRkb21haW4gKF9fZG9tYWlubmFtZSwgX19kaXJuYW1lKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgYmluZHRleHRkb21haW4gbGliaW50bF9iaW5kdGV4dGRvbWFpbgotKyNlbmRpZgotK2V4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX2Rpcm5hbWUpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9iaW5kdGV4dGRvbWFpbik7Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGluIHdoaWNoIHRoZSBtZXNzYWdlcyBmcm9tIHRoZQotKyAgIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgcmV0dXJuZWQuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJICAgICAgY29uc3QgY2hhciAqX19jb2Rlc2V0KTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCQkgICAgIGNvbnN0IGNoYXIgKl9fY29kZXNldCkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCAoX19kb21haW5uYW1lLCBfX2NvZGVzZXQpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBiaW5kX3RleHRkb21haW5fY29kZXNldCBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKl9fY29kZXNldCkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KTsKLSsjZW5kaWYKLSsKLSsKLSsvKiBTdXBwb3J0IGZvciBmb3JtYXQgc3RyaW5ncyB3aXRoIHBvc2l0aW9ucyBpbiAqcHJpbnRmKCksIGZvbGxvd2luZyB0aGUKLSsgICBQT1NJWC9YU0kgc3BlY2lmaWNhdGlvbi4KLSsgICBOb3RlOiBUaGVzZSByZXBsYWNlbWVudHMgZm9yIHRoZSAqcHJpbnRmKCkgZnVuY3Rpb25zIGFyZSB2aXNpYmxlIG9ubHkKLSsgICBpbiBzb3VyY2UgZmlsZXMgdGhhdCAjaW5jbHVkZSA8bGliaW50bC5oPiBvciAjaW5jbHVkZSAiZ2V0dGV4dC5oIi4KLSsgICBQYWNrYWdlcyB0aGF0IHVzZSAqcHJpbnRmKCkgaW4gc291cmNlIGZpbGVzIHRoYXQgZG9uJ3QgcmVmZXIgdG8gXygpCi0rICAgb3IgZ2V0dGV4dCgpIGJ1dCBmb3Igd2hpY2ggdGhlIGZvcm1hdCBzdHJpbmcgY291bGQgYmUgdGhlIHJldHVybiB2YWx1ZQotKyAgIG9mIF8oKSBvciBnZXR0ZXh0KCkgbmVlZCB0byBhZGQgdGhpcyAjaW5jbHVkZS4gIE9oIHdlbGwuICAqLwotKwotKyNpZiAhQEhBVkVfUE9TSVhfUFJJTlRGQAotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2lmIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUgotKyMgaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgPHZhcmFyZ3MuaD4KLSsjZW5kaWYKLSsKLSsjdW5kZWYgZnByaW50ZgotKyNkZWZpbmUgZnByaW50ZiBsaWJpbnRsX2ZwcmludGYKLStleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwotKyN1bmRlZiB2ZnByaW50ZgotKyNkZWZpbmUgdmZwcmludGYgbGliaW50bF92ZnByaW50ZgotK2V4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSsKLSsjdW5kZWYgcHJpbnRmCi0rI2RlZmluZSBwcmludGYgbGliaW50bF9wcmludGYKLStleHRlcm4gaW50IHByaW50ZiAoY29uc3QgY2hhciAqLCAuLi4pOwotKyN1bmRlZiB2cHJpbnRmCi0rI2RlZmluZSB2cHJpbnRmIGxpYmludGxfdnByaW50ZgotK2V4dGVybiBpbnQgdnByaW50ZiAoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSsKLSsjdW5kZWYgc3ByaW50ZgotKyNkZWZpbmUgc3ByaW50ZiBsaWJpbnRsX3NwcmludGYKLStleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwotKyN1bmRlZiB2c3ByaW50ZgotKyNkZWZpbmUgdnNwcmludGYgbGliaW50bF92c3ByaW50ZgotK2V4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSsKLSsjaWYgQEhBVkVfU05QUklOVEZACi0rCi0rI3VuZGVmIHNucHJpbnRmCi0rI2RlZmluZSBzbnByaW50ZiBsaWJpbnRsX3NucHJpbnRmCi0rZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdnNucHJpbnRmCi0rI2RlZmluZSB2c25wcmludGYgbGliaW50bF92c25wcmludGYKLStleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIEBIQVZFX0FTUFJJTlRGQAotKwotKyN1bmRlZiBhc3ByaW50ZgotKyNkZWZpbmUgYXNwcmludGYgbGliaW50bF9hc3ByaW50ZgotK2V4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdmFzcHJpbnRmCi0rI2RlZmluZSB2YXNwcmludGYgbGliaW50bF92YXNwcmludGYKLStleHRlcm4gaW50IHZhc3ByaW50ZiAoY2hhciAqKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSsKLSsjZW5kaWYKLSsKLSsjaWYgQEhBVkVfV1BSSU5URkAKLSsKLSsjdW5kZWYgZndwcmludGYKLSsjZGVmaW5lIGZ3cHJpbnRmIGxpYmludGxfZndwcmludGYKLStleHRlcm4gaW50IGZ3cHJpbnRmIChGSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKLSsjdW5kZWYgdmZ3cHJpbnRmCi0rI2RlZmluZSB2ZndwcmludGYgbGliaW50bF92ZndwcmludGYKLStleHRlcm4gaW50IHZmd3ByaW50ZiAoRklMRSAqLCBjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOwotKwotKyN1bmRlZiB3cHJpbnRmCi0rI2RlZmluZSB3cHJpbnRmIGxpYmludGxfd3ByaW50ZgotK2V4dGVybiBpbnQgd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwotKyN1bmRlZiB2d3ByaW50ZgotKyNkZWZpbmUgdndwcmludGYgbGliaW50bF92d3ByaW50ZgotK2V4dGVybiBpbnQgdndwcmludGYgKGNvbnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHN3cHJpbnRmCi0rI2RlZmluZSBzd3ByaW50ZiBsaWJpbnRsX3N3cHJpbnRmCi0rZXh0ZXJuIGludCBzd3ByaW50ZiAod2NoYXJfdCAqLCBzaXplX3QsIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKLSsjdW5kZWYgdnN3cHJpbnRmCi0rI2RlZmluZSB2c3dwcmludGYgbGliaW50bF92c3dwcmludGYKLStleHRlcm4gaW50IHZzd3ByaW50ZiAod2NoYXJfdCAqLCBzaXplX3QsIGNvbnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7Ci0rCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi0rCi0rCi0rLyogU3VwcG9ydCBmb3IgcmVsb2NhdGFibGUgcGFja2FnZXMuICAqLwotKwotKy8qIFNldHMgdGhlIG9yaWdpbmFsIGFuZCB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IG9mIHRoZSBwYWNrYWdlLgotKyAgIFJlbG9jYXRpb24gc2ltcGx5IHJlcGxhY2VzIGEgcGF0aG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwgcHJlZml4Ci0rICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKLSsgICBwcmVmaXhlcyBzaG91bGQgYmUgZGlyZWN0b3J5IG5hbWVzIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2ggKGkuZS4gdXNlICIiCi0rICAgaW5zdGVhZCBvZiAiLyIpLiAgKi8KLSsjZGVmaW5lIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4IGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4Ci0rZXh0ZXJuIHZvaWQKLSsgICAgICAgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4LAotKwkJCQkgICAgICBjb25zdCBjaGFyICpjdXJyX3ByZWZpeCk7Ci0rCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBsaWJpbnRsLmggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9saW51eC1tc2cuc2VkCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwMCArMCwwIEBACi0tIyBwbzJtc2cuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBMaW51eCBzdHlsZSAubXNnIGZpbGUKLS0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0jIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLSMKLS0jCi0tIyBUaGUgZmlyc3QgZGlyZWN0aXZlIGluIHRoZSAubXNnIHNob3VsZCBiZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKLS0jIG1lc3NhZ2Ugc2V0IG51bWJlci4gIFdlIHVzZSBhbHdheXMgc2V0IG51bWJlciAxLgotLSMKLS0xIHsKLS0gIGlcCi0tJHNldCAxICMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHBvMm1zZy5zZWQKLS0gIGgKLS0gIHMvLiovMC8KLS0gIHgKLS19Ci0tIwotLSMgTWl0Y2gncyBvbGQgY2F0YWxvZyBmb3JtYXQgZG9lcyBub3QgYWxsb3cgY29tbWVudHMuCi0tIwotLSMgV2UgY29weSB0aGUgb3JpZ2luYWwgbWVzc2FnZSBhcyBhIGNvbW1lbnQgaW50byB0aGUgLm1zZyBmaWxlLgotLSMKLS0vXm1zZ2lkLyB7Ci0tICBzL21zZ2lkWyAJXSoiLy8KLS0jCi0tIyBUaGlzIGRvZXMgbm90IHdvcmsgbm93IHdpdGggdGhlIG5ldyBmb3JtYXQuCi0tIyAvIiQvISB7Ci0tIyAgIHMvXFwkLy8KLS0jICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCi0tIyB9Ci0tICB4Ci0tIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKLS0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgotLSAgdGQKLS0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCi0tIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCi0tICA6ZAotLSAgcy85XChfKlwpJC9fXDEvCi0tICB0ZAotLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCi0tICBzL15cKF8qXCkkLzBcMS8KLS0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KLS0gIHMvOFwoXypcKSQvOVwxLwotLSAgcy83XChfKlwpJC84XDEvCi0tICBzLzZcKF8qXCkkLzdcMS8KLS0gIHMvNVwoXypcKSQvNlwxLwotLSAgcy80XChfKlwpJC81XDEvCi0tICBzLzNcKF8qXCkkLzRcMS8KLS0gIHMvMlwoXypcKSQvM1wxLwotLSAgcy8xXChfKlwpJC8yXDEvCi0tICBzLzBcKF8qXCkkLzFcMS8KLS0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCi0tICBzL18vMC9nCi0tICB4Ci0tICBHCi0tICBzL1woLipcKSJcblwoWzAtOV0qXCkvJCAjXDIgT3JpZ2luYWwgTWVzc2FnZTooXDEpL3AKLS19Ci0tIwotLSMgVGhlIC5tc2cgZmlsZSBjb250YWlucywgb3RoZXIgdGhlbiB0aGUgLnBvIGZpbGUsIG9ubHkgdGhlIHRyYW5zbGF0aW9ucwotLSMgYnV0IGVhY2ggZ2l2ZW4gYSB1bmlxdWUgSUQuICBTdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBieSAxIGZvcgotLSMgZWFjaCBtZXNzYWdlIHdlIGFzc2lnbiB0aGVtIHRvIHRoZSBtZXNzYWdlcy4KLS0jIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSAucG8gZmlsZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjYXQtaWQtdGJsLmMgZmlsZQotLSMgKHdpdGggcG8tdG8tdGJsKSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaGVyZS4gIChBdCBsZWFzdCB0aGUgb3JkZXIKLS0jIG9mIGRlY2xhcmF0aW9ucyBtdXN0IG5vdCBiZSBjaGFuZ2VkLikKLS0jCi0tL15tc2dzdHIvIHsKLS0gIHMvbXNnc3RyWyAJXSoiXCguKlwpIi8jIFwxLwotLSMgQ2xlYXIgc3Vic3RpdHV0aW9uIGZsYWcuCi0tICB0YgotLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUuCi0tICA6YgotLSAgTgotLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGNvbnRpbnVhdGlvbiBsaW5lLgotLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCi0tIyBZZXMsIHRoZW4gYnJhbmNoLgotLSAgdGEKLS0gIFAKLS0gIEQKLS0jIE5vdGUgdGhhdCBEIGluY2x1ZGVzIGEganVtcCB0byB0aGUgc3RhcnQhIQotLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KLS0gIDphCi0tICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KLS0gIFAKLS0jIFdlIGNhbm5vdCB1c2UgRCBoZXJlLgotLSAgcy8uKlxuXCguKlwpL1wxLwotLSAgdGIKLS19Ci0tZAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvYWRpbmZvLmgJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ2ODczMDkxMiAtMDQwMAotQEAgLTEsOSArMSw1NCBAQAotLSNpZm5kZWYgUEFSQU1TCi0tIyBpZiBfX1NURENfXwotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncwotLSMgZWxzZQotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKLS0jIGVuZGlmCi0rLyogQ29weXJpZ2h0IChDKSAxOTk2LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsgICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfTE9BRElORk9fSAotKyNkZWZpbmUgX0xPQURJTkZPX0gJMQotKwotKy8qIERlY2xhcmF0aW9ucyBvZiBsb2NhbGUgZGVwZW5kZW50IGNhdGFsb2cgbG9va3VwIGZ1bmN0aW9ucy4KLSsgICBJbXBsZW1lbnRlZCBpbgotKwotKyAgICAgbG9jYWxlYWxpYXMuYyAgICBQb3NzaWJseSByZXBsYWNlIGEgbG9jYWxlIG5hbWUgYnkgYW5vdGhlci4KLSsgICAgIGV4cGxvZGVuYW1lLmMgICAgU3BsaXQgYSBsb2NhbGUgbmFtZSBpbnRvIGl0cyB2YXJpb3VzIGZpZWxkcy4KLSsgICAgIGwxMG5mbGlzdC5jICAgICAgR2VuZXJhdGUgYSBsaXN0IG9mIGZpbGVuYW1lcyBvZiBwb3NzaWJsZSBtZXNzYWdlIGNhdGFsb2dzLgotKyAgICAgZmluZGRvbWFpbi5jICAgICBGaW5kIGFuZCBvcGVuIHRoZSByZWxldmFudCBtZXNzYWdlIGNhdGFsb2dzLgotKwotKyAgIFRoZSBtYWluIGZ1bmN0aW9uIF9ubF9maW5kX2RvbWFpbigpIGluIGZpbmRkb21haW4uYyBpcyBkZWNsYXJlZAotKyAgIGluIGdldHRleHRQLmguCi0rICovCi0rCi0rI2lmbmRlZiBpbnRlcm5hbF9mdW5jdGlvbgotKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCi0rI2VuZGlmCi0rCi0rLyogVGVsbCB0aGUgY29tcGlsZXIgd2hlbiBhIGNvbmRpdGlvbmFsIG9yIGludGVnZXIgZXhwcmVzc2lvbiBpcwotKyAgIGFsbW9zdCBhbHdheXMgdHJ1ZSBvciBhbG1vc3QgYWx3YXlzIGZhbHNlLiAgKi8KLSsjaWZuZGVmIEhBVkVfQlVJTFRJTl9FWFBFQ1QKLSsjIGRlZmluZSBfX2J1aWx0aW5fZXhwZWN0KGV4cHIsIHZhbCkgKGV4cHIpCi0rI2VuZGlmCi0rCi0rLyogU2VwYXJhdG9yIGluIFBBVEggbGlrZSBsaXN0cyBvZiBwYXRobmFtZXMuICAqLwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOycKLSsjZWxzZQotKyAgLyogVW5peCAqLwotKyMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc6JwotICNlbmRpZgotIAotIC8qIEVuY29kaW5nIG9mIGxvY2FsZSBuYW1lIHBhcnRzLiAgKi8KLUBAIC0zMiwyNyArNzcsNjkgQEAKLSB9OwotIAotIAotLWV4dGVybiBjb25zdCBjaGFyICpfbmxfbm9ybWFsaXplX2NvZGVzZXQgUEFSQU1TICgoY29uc3QgY2hhciAqY29kZXNldCwKLS0JCQkJCQkgIHNpemVfdCBuYW1lX2xlbikpOwotKy8qIE5vcm1hbGl6ZSBjb2Rlc2V0IG5hbWUuICBUaGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIGNvZGVzZXQKLSsgICBuYW1lcy4gIE5vcm1hbGl6YXRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHVzZSBhbnkgb2YgdGhlIGNvbW1vbgotKyAgIG5hbWVzLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIGhhcyB0byBiZQotKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICpfbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmNvZGVzZXQsCi0rCQkJCQkgIHNpemVfdCBuYW1lX2xlbik7Ci0gCi0rLyogTG9va3VwIGEgbG9jYWxlIGRlcGVuZGVudCBmaWxlLgotKyAgICpMMTBORklMRV9MSVNUIGRlbm90ZXMgYSBwb29sIG9mIGxvb2t1cCByZXN1bHRzIG9mIGxvY2FsZSBkZXBlbmRlbnQKLSsgICBmaWxlcyBvZiB0aGUgc2FtZSBraW5kLCBzb3J0ZWQgaW4gZGVjcmVhc2luZyBvcmRlciBvZiAtPmZpbGVuYW1lLgotKyAgIERJUkxJU1QgYW5kIERJUkxJU1RfTEVOIGFyZSBhbiBhcmd6IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaW4gd2hpY2ggdG8KLSsgICBsb29rLCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBkaXJlY3RvcnkgKGkuZS4gRElSTElTVF9MRU4gPiAwKS4KLSsgICBNQVNLLCBMQU5HVUFHRSwgVEVSUklUT1JZLCBDT0RFU0VULCBOT1JNQUxJWkVEX0NPREVTRVQsIE1PRElGSUVSLAotKyAgIFNQRUNJQUwsIFNQT05TT1IsIFJFVklTSU9OIGFyZSB0aGUgcGllY2VzIG9mIHRoZSBsb2NhbGUgbmFtZSwgYXMKLSsgICBwcm9kdWNlZCBieSBfbmxfZXhwbG9kZV9uYW1lKCkuICBGSUxFTkFNRSBpcyB0aGUgZmlsZW5hbWUgc3VmZml4LgotKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGxvb2t1cCByZXN1bHQsIGVpdGhlciBmb3VuZCBpbiAqTDEwTkZJTEVfTElTVCwKLSsgICBvciAtIGlmIERPX0FMTE9DQVRFIGlzIG5vbnplcm8gLSBmcmVzaGx5IGFsbG9jYXRlZCwgb3IgcG9zc2libHkgTlVMTC4KLSsgICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vbi1OVUxMLCBpdCBpcyBhZGRlZCB0byAqTDEwTkZJTEVfTElTVCwgYW5kCi0rICAgaXRzIC0+bmV4dCBmaWVsZCBkZW5vdGVzIHRoZSBjaGFpbmluZyBpbnNpZGUgKkwxME5GSUxFX0xJU1QsIGFuZAotKyAgIGZ1cnRoZXJtb3JlIGl0cyAtPnN1Y2Nlc3NvcltdIGZpZWxkIGNvbnRhaW5zIGEgbGlzdCBvZiBvdGhlciBsb29rdXAKLSsgICByZXN1bHRzIGZyb20gd2hpY2ggdGhpcyBsb29rdXAgcmVzdWx0IGluaGVyaXRzLiAgKi8KLSBleHRlcm4gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCi0tX25sX21ha2VfbDEwbmZsaXN0IFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAotLQkJCSAgICBjb25zdCBjaGFyICpkaXJsaXN0LCBzaXplX3QgZGlybGlzdF9sZW4sIGludCBtYXNrLAotLQkJCSAgICBjb25zdCBjaGFyICpsYW5ndWFnZSwgY29uc3QgY2hhciAqdGVycml0b3J5LAotLQkJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LAotLQkJCSAgICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCi0tCQkJICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyLCBjb25zdCBjaGFyICpzcGVjaWFsLAotLQkJCSAgICBjb25zdCBjaGFyICpzcG9uc29yLCBjb25zdCBjaGFyICpyZXZpc2lvbiwKLS0JCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSkpOwotK19ubF9tYWtlX2wxMG5mbGlzdCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3QsCi0rCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLCBpbnQgbWFzaywKLSsJCSAgICBjb25zdCBjaGFyICpsYW5ndWFnZSwgY29uc3QgY2hhciAqdGVycml0b3J5LAotKwkJICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQsIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldCwKLSsJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKLSsJCSAgICBjb25zdCBjaGFyICpzcG9uc29yLCBjb25zdCBjaGFyICpyZXZpc2lvbiwKLSsJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGRvX2FsbG9jYXRlKTsKLSAKLSsvKiBMb29rdXAgdGhlIHJlYWwgbG9jYWxlIG5hbWUgZm9yIGEgbG9jYWxlIGFsaWFzIE5BTUUsIG9yIE5VTEwgaWYKLSsgICBOQU1FIGlzIG5vdCBhIGxvY2FsZSBhbGlhcyAoYnV0IHBvc3NpYmx5IGEgcmVhbCBsb2NhbGUgbmFtZSkuCi0rICAgVGhlIHJldHVybiB2YWx1ZSBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgbXVzdCBub3QgYmUgZnJlZWQuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICpuYW1lKTsKLSAKLS1leHRlcm4gY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyBQQVJBTVMgKChjb25zdCBjaGFyICpuYW1lKSk7Ci0rLyogU3BsaXQgYSBsb2NhbGUgbmFtZSBOQU1FIGludG8gaXRzIHBpZWNlczogbGFuZ3VhZ2UsIG1vZGlmaWVyLAotKyAgIHRlcnJpdG9yeSwgY29kZXNldCwgc3BlY2lhbCwgc3BvbnNvciwgcmV2aXNpb24uCi0rICAgTkFNRSBnZXRzIGRlc3RydWN0aXZlbHkgbW9kaWZpZWQ6IE5VTCBieXRlcyBhcmUgaW5zZXJ0ZWQgaGVyZSBhbmQKLSsgICB0aGVyZS4gICpMQU5HVUFHRSBnZXRzIGFzc2lnbmVkIE5BTUUuICBFYWNoIG9mICpNT0RJRklFUiwgKlRFUlJJVE9SWSwKLSsgICAqQ09ERVNFVCwgKlNQRUNJQUwsICpTUE9OU09SLCAqUkVWSVNJT04gZ2V0cyBhc3NpZ25lZCBlaXRoZXIgYQotKyAgIHBvaW50ZXIgaW50byB0aGUgb2xkIE5BTUUgc3RyaW5nLCBvciBOVUxMLiAgKk5PUk1BTElaRURfQ09ERVNFVAotKyAgIGdldHMgYXNzaWduZWQgdGhlIGV4cGFuZGVkICpDT0RFU0VULCBpZiBpdCBpcyBkaWZmZXJlbnQgZnJvbSAqQ09ERVNFVDsKLSsgICB0aGlzIG9uZSBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIGhhcyB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLgotKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBiaXRtYXNrLCB3aGVyZSBlYWNoIGJpdCBjb3JyZXNwb25kcyB0byBvbmUKLSsgICBmaWxsZWQtaW4gdmFsdWU6Ci0rICAgICBYUEdfTU9ESUZJRVIsIENFTl9BVURJRU5DRSAgZm9yICpNT0RJRklFUiwKLSsgICAgIFRFUlJJVE9SWSAgICAgICAgICAgICAgICAgICBmb3IgKlRFUlJJVE9SWSwKLSsgICAgIFhQR19DT0RFU0VUICAgICAgICAgICAgICAgICBmb3IgKkNPREVTRVQsCi0rICAgICBYUEdfTk9STV9DT0RFU0VUICAgICAgICAgICAgZm9yICpOT1JNQUxJWkVEX0NPREVTRVQsCi0rICAgICBDRU5fU1BFQ0lBTCAgICAgICAgICAgICAgICAgZm9yICpTUEVDSUFMLAotKyAgICAgQ0VOX1NQT05TT1IgICAgICAgICAgICAgICAgIGZvciAqU1BPTlNPUiwKLSsgICAgIENFTl9SRVZJU0lPTiAgICAgICAgICAgICAgICBmb3IgKlJFVklTSU9OLgotKyAqLwotK2V4dGVybiBpbnQgX25sX2V4cGxvZGVfbmFtZSAoY2hhciAqbmFtZSwgY29uc3QgY2hhciAqKmxhbmd1YWdlLAotKwkJCSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyLCBjb25zdCBjaGFyICoqdGVycml0b3J5LAotKwkJCSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQsCi0rCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAotKwkJCSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWwsIGNvbnN0IGNoYXIgKipzcG9uc29yLAotKwkJCSAgICAgY29uc3QgY2hhciAqKnJldmlzaW9uKTsKLSAKLS1leHRlcm4gaW50IF9ubF9leHBsb2RlX25hbWUgUEFSQU1TICgoY2hhciAqbmFtZSwgY29uc3QgY2hhciAqKmxhbmd1YWdlLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKiptb2RpZmllciwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqdGVycml0b3J5LAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWwsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKnNwb25zb3IsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKnJldmlzaW9uKSk7Ci0rLyogU3BsaXQgYSBsb2NhbGUgbmFtZSBOQU1FIGludG8gYSBsZWFkaW5nIGxhbmd1YWdlIHBhcnQgYW5kIGFsbCB0aGUKLSsgICByZXN0LiAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYW5ndWFnZSwKLSsgICBpLmUuIHRvIHRoZSBmaXJzdCBieXRlIG9mIHRoZSByZXN0LiAgKi8KLStleHRlcm4gY2hhciAqX25sX2ZpbmRfbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUpOwotKwotKyNlbmRpZgkvKiBsb2FkaW5mby5oICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9hZG1zZ2NhdC5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ3MzczMDE1MiAtMDQwMAotQEAgLTEsNDIgKzEsNDU1IEBACi0tLyogTG9hZCBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBMb2FkIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RyaW5nLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIG1lbXBjcHkoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKLSsjZW5kaWYKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaWZkZWYgX19HTlVDX18KLSsjIHVuZGVmICBhbGxvY2EKLSsjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotKyMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSsjZWxzZQotKyMgaWZkZWYgX01TQ19WRVIKLSsjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLSsjIGVsc2UKLSsjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjICBlbHNlCi0rIyAgIGlmZGVmIF9BSVgKLSsgI3ByYWdtYSBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZuZGVmIGFsbG9jYQotK2NoYXIgKmFsbG9jYSAoKTsKLSsjICAgIGVuZGlmCi0rIyAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSAjaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCkgfHwgZGVmaW5lZCBfTElCQwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjIGluY2x1ZGUgPGxvY2FsZS5oPgotKyNlbmRpZgotKwotKyNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCi0rICAgIHx8IChkZWZpbmVkIF9MSUJDICYmIGRlZmluZWQgX1BPU0lYX01BUFBFRF9GSUxFUykKLSAjIGluY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rIyB1bmRlZiBIQVZFX01NQVAKLSsjIGRlZmluZSBIQVZFX01NQVAJMQotKyNlbHNlCi0rIyB1bmRlZiBIQVZFX01NQVAKLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSAiZ2V0dGV4dC5oIgotKyNpZiBkZWZpbmVkIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnbW8uaCIKLSAjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsjaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKLSsjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgotKwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIKLSsjZW5kaWYKLSsKLSsvKiBQcm92aWRlIGZhbGxiYWNrIHZhbHVlcyBmb3IgbWFjcm9zIHRoYXQgb3VnaHQgdG8gYmUgZGVmaW5lZCBpbiA8aW50dHlwZXMuaD4uCi0rICAgTm90ZSB0aGF0IG91ciBmYWxsYmFjayB2YWx1ZXMgbmVlZCBub3QgYmUgbGl0ZXJhbCBzdHJpbmdzLCBiZWNhdXNlIHdlIGRvbid0Ci0rICAgdXNlIHRoZW0gd2l0aCBwcmVwcm9jZXNzb3Igc3RyaW5nIGNvbmNhdGVuYXRpb24uICAqLwotKyNpZiAhZGVmaW5lZCBQUklkOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZDgKLSsjIGRlZmluZSBQUklkOCAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaTggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWk4Ci0rIyBkZWZpbmUgUFJJaTggImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW84IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvOAotKyMgZGVmaW5lIFBSSW84ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1OCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdTgKLSsjIGRlZmluZSBQUkl1OCAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXg4Ci0rIyBkZWZpbmUgUFJJeDggIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVg4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYOAotKyMgZGVmaW5lIFBSSVg4ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWQxNgotKyMgZGVmaW5lIFBSSWQxNiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaTE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpMTYKLSsjIGRlZmluZSBQUklpMTYgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW8xNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJbzE2Ci0rIyBkZWZpbmUgUFJJbzE2ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1MTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXUxNgotKyMgZGVmaW5lIFBSSXUxNiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4MTYKLSsjIGRlZmluZSBQUkl4MTYgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVgxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWDE2Ci0rIyBkZWZpbmUgUFJJWDE2ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWQzMgotKyMgZGVmaW5lIFBSSWQzMiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaTMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpMzIKLSsjIGRlZmluZSBQUklpMzIgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW8zMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJbzMyCi0rIyBkZWZpbmUgUFJJbzMyICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1MzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXUzMgotKyMgZGVmaW5lIFBSSXUzMiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4MzIKLSsjIGRlZmluZSBQUkl4MzIgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVgzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWDMyCi0rIyBkZWZpbmUgUFJJWDMyICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWQ2NAotKyMgZGVmaW5lIFBSSWQ2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImxkIiA6ICJsbGQiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWk2NAotKyMgZGVmaW5lIFBSSWk2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImxpIiA6ICJsbGkiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW82NAotKyMgZGVmaW5lIFBSSW82NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImxvIiA6ICJsbG8iKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1NjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXU2NAotKyMgZGVmaW5lIFBSSXU2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImx1IiA6ICJsbHUiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4NjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXg2NAotKyMgZGVmaW5lIFBSSXg2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImx4IiA6ICJsbHgiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVg2NAotKyMgZGVmaW5lIFBSSVg2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImxYIiA6ICJsbFgiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJZExFQVNUOCAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUxFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUxFQVNUOAotKyMgZGVmaW5lIFBSSWlMRUFTVDggImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9MRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9MRUFTVDgKLSsjIGRlZmluZSBQUklvTEVBU1Q4ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1TEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1TEVBU1Q4Ci0rIyBkZWZpbmUgUFJJdUxFQVNUOCAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeExFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeExFQVNUOAotKyMgZGVmaW5lIFBSSXhMRUFTVDggIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhMRUFTVDgKLSsjIGRlZmluZSBQUklYTEVBU1Q4ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZExFQVNUMTYKLSsjIGRlZmluZSBQUklkTEVBU1QxNiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUxFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJaUxFQVNUMTYgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9MRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTEVBU1QxNgotKyMgZGVmaW5lIFBSSW9MRUFTVDE2ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1TEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUxFQVNUMTYKLSsjIGRlZmluZSBQUkl1TEVBU1QxNiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeExFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJeExFQVNUMTYgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTEVBU1QxNgotKyMgZGVmaW5lIFBSSVhMRUFTVDE2ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZExFQVNUMzIKLSsjIGRlZmluZSBQUklkTEVBU1QzMiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUxFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlMRUFTVDMyCi0rIyBkZWZpbmUgUFJJaUxFQVNUMzIgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9MRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTEVBU1QzMgotKyMgZGVmaW5lIFBSSW9MRUFTVDMyICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1TEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUxFQVNUMzIKLSsjIGRlZmluZSBQUkl1TEVBU1QzMiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeExFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhMRUFTVDMyCi0rIyBkZWZpbmUgUFJJeExFQVNUMzIgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTEVBU1QzMgotKyMgZGVmaW5lIFBSSVhMRUFTVDMyICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZExFQVNUNjQKLSsjIGRlZmluZSBQUklkTEVBU1Q2NCBQUklkNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUxFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJaUxFQVNUNjQgUFJJaTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9MRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTEVBU1Q2NAotKyMgZGVmaW5lIFBSSW9MRUFTVDY0IFBSSW82NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1TEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUxFQVNUNjQKLSsjIGRlZmluZSBQUkl1TEVBU1Q2NCBQUkl1NjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeExFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJeExFQVNUNjQgUFJJeDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTEVBU1Q2NAotKyMgZGVmaW5lIFBSSVhMRUFTVDY0IFBSSVg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRGQVNUOAotKyMgZGVmaW5lIFBSSWRGQVNUOCAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpRkFTVDgKLSsjIGRlZmluZSBQUklpRkFTVDggImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9GQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0ZBU1Q4Ci0rIyBkZWZpbmUgUFJJb0ZBU1Q4ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1RkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVGQVNUOAotKyMgZGVmaW5lIFBSSXVGQVNUOCAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeEZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4RkFTVDgKLSsjIGRlZmluZSBQUkl4RkFTVDggIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWEZBU1Q4Ci0rIyBkZWZpbmUgUFJJWEZBU1Q4ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkRkFTVDE2Ci0rIyBkZWZpbmUgUFJJZEZBU1QxNiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUZBU1QxNgotKyMgZGVmaW5lIFBSSWlGQVNUMTYgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9GQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9GQVNUMTYKLSsjIGRlZmluZSBQUklvRkFTVDE2ICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1RkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1RkFTVDE2Ci0rIyBkZWZpbmUgUFJJdUZBU1QxNiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeEZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeEZBU1QxNgotKyMgZGVmaW5lIFBSSXhGQVNUMTYgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhGQVNUMTYKLSsjIGRlZmluZSBQUklYRkFTVDE2ICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkRkFTVDMyCi0rIyBkZWZpbmUgUFJJZEZBU1QzMiAiZCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUZBU1QzMgotKyMgZGVmaW5lIFBSSWlGQVNUMzIgImkiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9GQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9GQVNUMzIKLSsjIGRlZmluZSBQUklvRkFTVDMyICJvIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1RkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1RkFTVDMyCi0rIyBkZWZpbmUgUFJJdUZBU1QzMiAidSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeEZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeEZBU1QzMgotKyMgZGVmaW5lIFBSSXhGQVNUMzIgIngiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhGQVNUMzIKLSsjIGRlZmluZSBQUklYRkFTVDMyICJYIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkRkFTVDY0Ci0rIyBkZWZpbmUgUFJJZEZBU1Q2NCBQUklkNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaUZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUZBU1Q2NAotKyMgZGVmaW5lIFBSSWlGQVNUNjQgUFJJaTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9GQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9GQVNUNjQKLSsjIGRlZmluZSBQUklvRkFTVDY0IFBSSW82NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1RkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1RkFTVDY0Ci0rIyBkZWZpbmUgUFJJdUZBU1Q2NCBQUkl1NjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeEZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeEZBU1Q2NAotKyMgZGVmaW5lIFBSSXhGQVNUNjQgUFJJeDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhGQVNUNjQKLSsjIGRlZmluZSBQUklYRkFTVDY0IFBSSVg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkTUFYCi0rIyBkZWZpbmUgUFJJZE1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibGQiIDogImxsZCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlNQVgKLSsjIGRlZmluZSBQUklpTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsaSIgOiAibGxpIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb01BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb01BWAotKyMgZGVmaW5lIFBSSW9NQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxvIiA6ICJsbG8iKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1TUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1TUFYCi0rIyBkZWZpbmUgUFJJdU1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibHUiIDogImxsdSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhNQVgKLSsjIGRlZmluZSBQUkl4TUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJseCIgOiAibGx4IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWE1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWE1BWAotKyMgZGVmaW5lIFBSSVhNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxYIiA6ICJsbFgiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklkUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkUFRSCi0rIyBkZWZpbmUgUFJJZFBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibGQiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAiZCIgOiBcCi0rICAgImxsZCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlQVFIKLSsjIGRlZmluZSBQUklpUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsaSIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJpIiA6IFwKLSsgICAibGxpIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb1BUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb1BUUgotKyMgZGVmaW5lIFBSSW9QVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxvIiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gIm8iIDogXAotKyAgICJsbG8iKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl1UFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1UFRSCi0rIyBkZWZpbmUgUFJJdVBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibHUiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAidSIgOiBcCi0rICAgImxsdSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhQVFIKLSsjIGRlZmluZSBQUkl4UFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJseCIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJ4IiA6IFwKLSsgICAibGx4IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWFBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWFBUUgotKyMgZGVmaW5lIFBSSVhQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxYIiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gIlgiIDogXAotKyAgICJsbFgiKQotKyNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLUBAIC00NCw3ICs0NTcsNiBAQAotIC8qIFJlbmFtZSB0aGUgbm9uIElTTyBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0gICAgYmVjYXVzZSBzb21lIElTTyBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0Ci0gICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLwotLSMgZGVmaW5lIGZzdGF0ICBfX2ZzdGF0Ci0gIyBkZWZpbmUgb3BlbiAgIF9fb3BlbgotICMgZGVmaW5lIGNsb3NlICBfX2Nsb3NlCi0gIyBkZWZpbmUgcmVhZCAgIF9fcmVhZAotQEAgLTUyLDMwICs0NjQsNDcxIEBACi0gIyBkZWZpbmUgbXVubWFwIF9fbXVubWFwCi0gI2VuZGlmCi0gCi0rLyogRm9yIHRob3NlIGxvc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLSsgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLwotKyNpZmRlZiBIQVZFX0FMTE9DQQotKyMgZGVmaW5lIGZyZWVhKHApIC8qIG5vdGhpbmcgKi8KLSsjZWxzZQotKyMgZGVmaW5lIGFsbG9jYShuKSBtYWxsb2MgKG4pCi0rIyBkZWZpbmUgZnJlZWEocCkgZnJlZSAocCkKLSsjZW5kaWYKLSsKLSsvKiBGb3Igc3lzdGVtcyB0aGF0IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGV4dCBhbmQgYmluYXJ5IEkvTy4KLSsgICBPX0JJTkFSWSBpcyB1c3VhbGx5IGRlY2xhcmVkIGluIDxmY250bC5oPi4gKi8KLSsjaWYgIWRlZmluZWQgT19CSU5BUlkgJiYgZGVmaW5lZCBfT19CSU5BUlkKLSsgIC8qIEZvciBNU0MtY29tcGF0aWJsZSBjb21waWxlcnMuICAqLwotKyMgZGVmaW5lIE9fQklOQVJZIF9PX0JJTkFSWQotKyMgZGVmaW5lIE9fVEVYVCBfT19URVhUCi0rI2VuZGlmCi0rI2lmZGVmIF9fQkVPU19fCi0rICAvKiBCZU9TIDUgaGFzIE9fQklOQVJZIGFuZCBPX1RFWFQsIGJ1dCB0aGV5IGhhdmUgbm8gZWZmZWN0LiAgKi8KLSsjIHVuZGVmIE9fQklOQVJZCi0rIyB1bmRlZiBPX1RFWFQKLSsjZW5kaWYKLSsvKiBPbiByZWFzb25hYmxlIHN5c3RlbXMsIGJpbmFyeSBJL08gaXMgdGhlIGRlZmF1bHQuICAqLwotKyNpZm5kZWYgT19CSU5BUlkKLSsjIGRlZmluZSBPX0JJTkFSWSAwCi0rI2VuZGlmCi0rCi0rCi0gLyogV2UgbmVlZCBhIHNpZ24sIHdoZXRoZXIgYSBuZXcgY2F0YWxvZyB3YXMgbG9hZGVkLCB3aGljaCBjYW4gYmUgYXNzb2NpYXRlZAotICAgIHdpdGggYWxsIHRyYW5zbGF0aW9ucy4gIFRoaXMgaXMgaW1wb3J0YW50IGlmIHRoZSB0cmFuc2xhdGlvbnMgYXJlCi0gICAgY2FjaGVkIGJ5IG9uZSBvZiBHQ0MncyBmZWF0dXJlcy4gICovCi0taW50IF9ubF9tc2dfY2F0X2NudHIgPSAwOwotK2ludCBfbmxfbXNnX2NhdF9jbnRyOwotIAotIAotKy8qIEV4cGFuZCBhIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQuICBSZXR1cm4gTlVMTCBpZiB1bnN1cHBvcnRlZC4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2dldF9zeXNkZXBfc2VnbWVudF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICAvKiBUZXN0IGZvciBhbiBJU08gQyA5OSBzZWN0aW9uIDcuOC4xIGZvcm1hdCBzdHJpbmcgZGlyZWN0aXZlLgotKyAgICAgU3ludGF4OgotKyAgICAgUCBSIEkgeyBkIHwgaSB8IG8gfCB1IHwgeCB8IFggfQotKyAgICAgeyB7IHwgTEVBU1QgfCBGQVNUIH0geyA4IHwgMTYgfCAzMiB8IDY0IH0gfCBNQVggfCBQVFIgfSAgKi8KLSsgIC8qIFdlIGRvbid0IHVzZSBhIHRhYmxlIG9mIDE0IHRpbWVzIDYgJ2NvbnN0IGNoYXIgKicgc3RyaW5ncyBoZXJlLCBiZWNhdXNlCi0rICAgICBkYXRhIHJlbG9jYXRpb25zIGNvc3Qgc3RhcnR1cCB0aW1lLiAgKi8KLSsgIGlmIChuYW1lWzBdID09ICdQJyAmJiBuYW1lWzFdID09ICdSJyAmJiBuYW1lWzJdID09ICdJJykKLSsgICAgewotKyAgICAgIGlmIChuYW1lWzNdID09ICdkJyB8fCBuYW1lWzNdID09ICdpJyB8fCBuYW1lWzNdID09ICdvJyB8fCBuYW1lWzNdID09ICd1JwotKwkgIHx8IG5hbWVbM10gPT0gJ3gnIHx8IG5hbWVbM10gPT0gJ1gnKQotKwl7Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJzgnICYmIG5hbWVbNV0gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWQ4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaTg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXU4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeDg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYODsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJzEnICYmIG5hbWVbNV0gPT0gJzYnICYmIG5hbWVbNl0gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWQxNjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWkxNjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW8xNjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXUxNjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXgxNjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVgxNjsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJzMnICYmIG5hbWVbNV0gPT0gJzInICYmIG5hbWVbNl0gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWQzMjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWkzMjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW8zMjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXUzMjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXgzMjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVgzMjsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJzYnICYmIG5hbWVbNV0gPT0gJzQnICYmIG5hbWVbNl0gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWQ2NDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWk2NDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW82NDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXU2NDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXg2NDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVg2NDsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ0wnICYmIG5hbWVbNV0gPT0gJ0UnICYmIG5hbWVbNl0gPT0gJ0EnCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1MnICYmIG5hbWVbOF0gPT0gJ1QnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnOCcgJiYgbmFtZVsxMF0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkTEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlMRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1TEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhMRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUODsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzldID09ICcxJyAmJiBuYW1lWzEwXSA9PSAnNicgJiYgbmFtZVsxMV0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkTEVBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpTEVBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvTEVBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1TEVBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4TEVBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYTEVBU1QxNjsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzldID09ICczJyAmJiBuYW1lWzEwXSA9PSAnMicgJiYgbmFtZVsxMV0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkTEVBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpTEVBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvTEVBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1TEVBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4TEVBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYTEVBU1QzMjsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzldID09ICc2JyAmJiBuYW1lWzEwXSA9PSAnNCcgJiYgbmFtZVsxMV0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkTEVBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpTEVBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvTEVBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1TEVBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4TEVBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYTEVBU1Q2NDsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ0YnICYmIG5hbWVbNV0gPT0gJ0EnICYmIG5hbWVbNl0gPT0gJ1MnCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1QnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVs4XSA9PSAnOCcgJiYgbmFtZVs5XSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRGQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpRkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0ZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVGQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4RkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWEZBU1Q4OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzEnICYmIG5hbWVbOV0gPT0gJzYnICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZEZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpRkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4RkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUMTY7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs4XSA9PSAnMycgJiYgbmFtZVs5XSA9PSAnMicgJiYgbmFtZVsxMF0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlGQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0ZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhGQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWEZBU1QzMjsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzhdID09ICc2JyAmJiBuYW1lWzldID09ICc0JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvRkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYRkFTVDY0OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnTScgJiYgbmFtZVs1XSA9PSAnQScgJiYgbmFtZVs2XSA9PSAnWCcKLSsJICAgICAgJiYgbmFtZVs3XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZE1BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWlNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvTUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdU1BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXhNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYTUFYOwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnUCcgJiYgbmFtZVs1XSA9PSAnVCcgJiYgbmFtZVs2XSA9PSAnUicKLSsJICAgICAgJiYgbmFtZVs3XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZFBUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWlQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvUFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdVBUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXhQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYUFRSOwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rICAvKiBUZXN0IGZvciBhIGdsaWJjIHNwZWNpZmljIHByaW50ZigpIGZvcm1hdCBkaXJlY3RpdmUgZmxhZy4gICovCi0rICBpZiAobmFtZVswXSA9PSAnSScgJiYgbmFtZVsxXSA9PSAnXDAnKQotKyAgICB7Ci0rI2lmIGRlZmluZWQgX0xJQkMgfHwgX19HTElCQ19fID4gMiB8fCAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDIpCi0rICAgICAgLyogVGhlICdJJyBmbGFnLCBpbiBudW1lcmljIGZvcm1hdCBkaXJlY3RpdmVzLCByZXBsYWNlcyBBU0NJSSBkaWdpdHMKLSsJIHdpdGggdGhlICdvdXRkaWdpdHMnIGRlZmluZWQgaW4gdGhlIExDX0NUWVBFIGxvY2FsZSBmYWNldC4gIFRoaXMgaXMKLSsJIHVzZWQgZm9yIEZhcnNpIChQZXJzaWFuKSBhbmQgbWF5YmUgQXJhYmljLiAgKi8KLSsgICAgICByZXR1cm4gIkkiOwotKyNlbHNlCi0rICAgICAgcmV0dXJuICIiOwotKyNlbmRpZgotKyAgICB9Ci0rICAvKiBPdGhlciBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgYXJlIG5vdCB2YWxpZC4gICovCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSB0aGUgY29kZXNldCBkZXBlbmRlbnQgcGFydHMgb2YgYW4gb3BlbmVkIG1lc3NhZ2UgY2F0YWxvZy4KLSsgICBSZXR1cm4gdGhlIGhlYWRlciBlbnRyeS4gICovCi0rY29uc3QgY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfaW5pdF9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0rCQkgICAgICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluLAotKwkJICAgICAgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcpCi0rewotKyAgLyogRmluZCBvdXQgYWJvdXQgdGhlIGNoYXJhY3RlciBzZXQgdGhlIGZpbGUgaXMgZW5jb2RlZCB3aXRoLgotKyAgICAgVGhpcyBjYW4gYmUgZm91bmQgKGluIHRleHR1YWwgZm9ybSkgaW4gdGhlIGVudHJ5ICIiLiAgSWYgdGhpcwotKyAgICAgZW50cnkgZG9lcyBub3QgZXhpc3Qgb3IgaWYgdGhpcyBkb2VzIG5vdCBjb250YWluIHRoZSBgY2hhcnNldD0nCi0rICAgICBpbmZvcm1hdGlvbiwgd2Ugd2lsbCBhc3N1bWUgdGhlIGNoYXJzZXQgbWF0Y2hlcyB0aGUgb25lIHRoZQotKyAgICAgY3VycmVudCBsb2NhbGUgYW5kIHdlIGRvbid0IGhhdmUgdG8gcGVyZm9ybSBhbnkgY29udmVyc2lvbi4gICovCi0rICBjaGFyICpudWxsZW50cnk7Ci0rICBzaXplX3QgbnVsbGVudHJ5bGVuOwotKwotKyAgLyogUHJlaW5pdGlhbGl6ZSBmaWVsZHMsIHRvIGF2b2lkIHJlY3Vyc2lvbiBkdXJpbmcgX25sX2ZpbmRfbXNnLiAgKi8KLSsgIGRvbWFpbi0+Y29kZXNldF9jbnRyID0KLSsgICAgKGRvbWFpbmJpbmRpbmcgIT0gTlVMTCA/IGRvbWFpbmJpbmRpbmctPmNvZGVzZXRfY250ciA6IDApOwotKyNpZmRlZiBfTElCQwotKyAgZG9tYWluLT5jb252ID0gKF9fZ2NvbnZfdCkgLTE7Ci0rI2Vsc2UKLSsjIGlmIEhBVkVfSUNPTlYKLSsgIGRvbWFpbi0+Y29udiA9IChpY29udl90KSAtMTsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rICBkb21haW4tPmNvbnZfdGFiID0gTlVMTDsKLSsKLSsgIC8qIEdldCB0aGUgaGVhZGVyIGVudHJ5LiAgKi8KLSsgIG51bGxlbnRyeSA9IF9ubF9maW5kX21zZyAoZG9tYWluX2ZpbGUsIGRvbWFpbmJpbmRpbmcsICIiLCAmbnVsbGVudHJ5bGVuKTsKLSsKLSsgIGlmIChudWxsZW50cnkgIT0gTlVMTCkKLSsgICAgewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfSUNPTlYKLSsgICAgICBjb25zdCBjaGFyICpjaGFyc2V0c3RyOwotKwotKyAgICAgIGNoYXJzZXRzdHIgPSBzdHJzdHIgKG51bGxlbnRyeSwgImNoYXJzZXQ9Iik7Ci0rICAgICAgaWYgKGNoYXJzZXRzdHIgIT0gTlVMTCkKLSsJewotKwkgIHNpemVfdCBsZW47Ci0rCSAgY2hhciAqY2hhcnNldDsKLSsJICBjb25zdCBjaGFyICpvdXRjaGFyc2V0OwotKwotKwkgIGNoYXJzZXRzdHIgKz0gc3RybGVuICgiY2hhcnNldD0iKTsKLSsJICBsZW4gPSBzdHJjc3BuIChjaGFyc2V0c3RyLCAiIFx0XG4iKTsKLSsKLSsJICBjaGFyc2V0ID0gKGNoYXIgKikgYWxsb2NhIChsZW4gKyAxKTsKLSsjIGlmIGRlZmluZWQgX0xJQkMgfHwgSEFWRV9NRU1QQ1BZCi0rCSAgKigoY2hhciAqKSBtZW1wY3B5IChjaGFyc2V0LCBjaGFyc2V0c3RyLCBsZW4pKSA9ICdcMCc7Ci0rIyBlbHNlCi0rCSAgbWVtY3B5IChjaGFyc2V0LCBjaGFyc2V0c3RyLCBsZW4pOwotKwkgIGNoYXJzZXRbbGVuXSA9ICdcMCc7Ci0rIyBlbmRpZgotKwotKwkgIC8qIFRoZSBvdXRwdXQgY2hhcnNldCBzaG91bGQgbm9ybWFsbHkgYmUgZGV0ZXJtaW5lZCBieSB0aGUKLSsJICAgICBsb2NhbGUuICBCdXQgc29tZXRpbWVzIHRoZSBsb2NhbGUgaXMgbm90IHVzZWQgb3Igbm90IGNvcnJlY3RseQotKwkgICAgIHNldCB1cCwgc28gd2UgcHJvdmlkZSBhIHBvc3NpYmlsaXR5IGZvciB0aGUgdXNlciB0byBvdmVycmlkZQotKwkgICAgIHRoaXMuICBNb3Jlb3ZlciwgdGhlIHZhbHVlIHNwZWNpZmllZCB0aHJvdWdoCi0rCSAgICAgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgb3ZlcnJpZGVzIGJvdGguICAqLwotKwkgIGlmIChkb21haW5iaW5kaW5nICE9IE5VTEwgJiYgZG9tYWluYmluZGluZy0+Y29kZXNldCAhPSBOVUxMKQotKwkgICAgb3V0Y2hhcnNldCA9IGRvbWFpbmJpbmRpbmctPmNvZGVzZXQ7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBvdXRjaGFyc2V0ID0gZ2V0ZW52ICgiT1VUUFVUX0NIQVJTRVQiKTsKLSsJICAgICAgaWYgKG91dGNoYXJzZXQgPT0gTlVMTCB8fCBvdXRjaGFyc2V0WzBdID09ICdcMCcpCi0rCQl7Ci0rIyBpZmRlZiBfTElCQwotKwkJICBvdXRjaGFyc2V0ID0gX05MX0NVUlJFTlQgKExDX0NUWVBFLCBDT0RFU0VUKTsKLSsjIGVsc2UKLSsjICBpZiBIQVZFX0lDT05WCi0rCQkgIGV4dGVybiBjb25zdCBjaGFyICpsb2NhbGVfY2hhcnNldCAodm9pZCk7Ci0rCQkgIG91dGNoYXJzZXQgPSBsb2NhbGVfY2hhcnNldCAoKTsKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsJCX0KLSsJICAgIH0KLSsKLSsjIGlmZGVmIF9MSUJDCi0rCSAgLyogV2UgYWx3YXlzIHdhbnQgdG8gdXNlIHRyYW5zbGl0ZXJhdGlvbi4gICovCi0rCSAgb3V0Y2hhcnNldCA9IG5vcm1fYWRkX3NsYXNoZXMgKG91dGNoYXJzZXQsICJUUkFOU0xJVCIpOwotKwkgIGNoYXJzZXQgPSBub3JtX2FkZF9zbGFzaGVzIChjaGFyc2V0LCBOVUxMKTsKLSsJICBpZiAoX19nY29udl9vcGVuIChvdXRjaGFyc2V0LCBjaGFyc2V0LCAmZG9tYWluLT5jb252LAotKwkJCSAgICBHQ09OVl9BVk9JRF9OT0NPTlYpCi0rCSAgICAgICE9IF9fR0NPTlZfT0spCi0rCSAgICBkb21haW4tPmNvbnYgPSAoX19nY29udl90KSAtMTsKLSsjIGVsc2UKLSsjICBpZiBIQVZFX0lDT05WCi0rCSAgLyogV2hlbiB1c2luZyBHTlUgbGliYyA+PSAyLjIgb3IgR05VIGxpYmljb252ID49IDEuNSwKLSsJICAgICB3ZSB3YW50IHRvIHVzZSB0cmFuc2xpdGVyYXRpb24uICAqLwotKyMgICBpZiAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDIpIHx8IF9fR0xJQkNfXyA+IDIgXAotKyAgICAgICB8fCBfTElCSUNPTlZfVkVSU0lPTiA+PSAweDAxMDUKLSsJICBpZiAoc3RyY2hyIChvdXRjaGFyc2V0LCAnLycpID09IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnRtcDsKLSsKLSsJICAgICAgbGVuID0gc3RybGVuIChvdXRjaGFyc2V0KTsKLSsJICAgICAgdG1wID0gKGNoYXIgKikgYWxsb2NhIChsZW4gKyAxMCArIDEpOwotKwkgICAgICBtZW1jcHkgKHRtcCwgb3V0Y2hhcnNldCwgbGVuKTsKLSsJICAgICAgbWVtY3B5ICh0bXAgKyBsZW4sICIvL1RSQU5TTElUIiwgMTAgKyAxKTsKLSsJICAgICAgb3V0Y2hhcnNldCA9IHRtcDsKLSsKLSsJICAgICAgZG9tYWluLT5jb252ID0gaWNvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCk7Ci0rCi0rCSAgICAgIGZyZWVhIChvdXRjaGFyc2V0KTsKLSsJICAgIH0KLSsJICBlbHNlCi0rIyAgIGVuZGlmCi0rCSAgICBkb21haW4tPmNvbnYgPSBpY29udl9vcGVuIChvdXRjaGFyc2V0LCBjaGFyc2V0KTsKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsJICBmcmVlYSAoY2hhcnNldCk7Ci0rCX0KLSsjZW5kaWYgLyogX0xJQkMgfHwgSEFWRV9JQ09OViAqLwotKyAgICB9Ci0rCi0rICByZXR1cm4gbnVsbGVudHJ5OwotK30KLSsKLSsvKiBGcmVlcyB0aGUgY29kZXNldCBkZXBlbmRlbnQgcGFydHMgb2YgYW4gb3BlbmVkIG1lc3NhZ2UgY2F0YWxvZy4gICovCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2ZyZWVfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW4pCi0rewotKyAgaWYgKGRvbWFpbi0+Y29udl90YWIgIT0gTlVMTCAmJiBkb21haW4tPmNvbnZfdGFiICE9IChjaGFyICoqKSAtMSkKLSsgICAgZnJlZSAoZG9tYWluLT5jb252X3RhYik7Ci0rCi0rI2lmZGVmIF9MSUJDCi0rICBpZiAoZG9tYWluLT5jb252ICE9IChfX2djb252X3QpIC0xKQotKyAgICBfX2djb252X2Nsb3NlIChkb21haW4tPmNvbnYpOwotKyNlbHNlCi0rIyBpZiBIQVZFX0lDT05WCi0rICBpZiAoZG9tYWluLT5jb252ICE9IChpY29udl90KSAtMSkKLSsgICAgaWNvbnZfY2xvc2UgKGRvbWFpbi0+Y29udik7Ci0rIyBlbmRpZgotKyNlbmRpZgotK30KLSsKLSAvKiBMb2FkIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHNwZWNpZmllZCBieSBGSUxFTkFNRS4gIElmIGl0IGlzIG5vIHZhbGlkCi0gICAgbWVzc2FnZSBjYXRhbG9nIGRvIG5vdGhpbmcuICAqLwotIHZvaWQKLS1fbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKQotLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGU7Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfbG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkJIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQotIHsKLSAgIGludCBmZDsKLSsgIHNpemVfdCBzaXplOwotKyNpZmRlZiBfTElCQwotKyAgc3RydWN0IHN0YXQ2NCBzdDsKLSsjZWxzZQotICAgc3RydWN0IHN0YXQgc3Q7Ci0rI2VuZGlmCi0gICBzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKmRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xOwotLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCi0tICAgIHx8IGRlZmluZWQgX0xJQkMKLSAgIGludCB1c2VfbW1hcCA9IDA7Ci0tI2VuZGlmCi0gICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOwotKyAgaW50IHJldmlzaW9uOwotKyAgY29uc3QgY2hhciAqbnVsbGVudHJ5OwotIAotICAgZG9tYWluX2ZpbGUtPmRlY2lkZWQgPSAxOwotICAgZG9tYWluX2ZpbGUtPmRhdGEgPSBOVUxMOwotIAotKyAgLyogTm90ZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWxlc3MgdG8gc3RvcmUgZG9tYWluYmluZGluZyBpbiBkb21haW5fZmlsZQotKyAgICAgYmVjYXVzZSBkb21haW5iaW5kaW5nIG1pZ2h0IGJlID09IE5VTEwgbm93IGJ1dCAhPSBOVUxMIGxhdGVyIChhZnRlcgotKyAgICAgYSBjYWxsIHRvIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KS4gICovCi0rCi0gICAvKiBJZiB0aGUgcmVjb3JkIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIGxvY2FsZSB0aGUgRklMRU5BTUUKLSAgICAgIG1pZ2h0IGJlIE5VTEwuICBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuCi0gICAgICBzcGVjaWZpY2F0aW9uIHRoZSBsb2NhbGUgZmlsZSBuYW1lIGlzIGRpZmZlcmVudCBmb3IgWFBHIGFuZCBDRU4KLUBAIC04NCwyNyArOTM3LDMyIEBACi0gICAgIHJldHVybjsKLSAKLSAgIC8qIFRyeSB0byBvcGVuIHRoZSBhZGRyZXNzZWQgZmlsZS4gICovCi0tICBmZCA9IG9wZW4gKGRvbWFpbl9maWxlLT5maWxlbmFtZSwgT19SRE9OTFkpOwotKyAgZmQgPSBvcGVuIChkb21haW5fZmlsZS0+ZmlsZW5hbWUsIE9fUkRPTkxZIHwgT19CSU5BUlkpOwotICAgaWYgKGZkID09IC0xKQotICAgICByZXR1cm47Ci0gCi0gICAvKiBXZSBtdXN0IGtub3cgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGZpbGUuICAqLwotLSAgaWYgKGZzdGF0IChmZCwgJnN0KSAhPSAwCi0tICAgICAgJiYgc3Quc3Rfc2l6ZSA8IChvZmZfdCkgc2l6ZW9mIChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIpKQotKyAgaWYgKAotKyNpZmRlZiBfTElCQwotKyAgICAgIF9fYnVpbHRpbl9leHBlY3QgKGZzdGF0NjQgKGZkLCAmc3QpICE9IDAsIDApCi0rI2Vsc2UKLSsgICAgICBfX2J1aWx0aW5fZXhwZWN0IChmc3RhdCAoZmQsICZzdCkgIT0gMCwgMCkKLSsjZW5kaWYKLSsgICAgICB8fCBfX2J1aWx0aW5fZXhwZWN0ICgoc2l6ZSA9IChzaXplX3QpIHN0LnN0X3NpemUpICE9IHN0LnN0X3NpemUsIDApCi0rICAgICAgfHwgX19idWlsdGluX2V4cGVjdCAoc2l6ZSA8IHNpemVvZiAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyKSwgMCkpCi0gICAgIHsKLSAgICAgICAvKiBTb21ldGhpbmcgd2VudCB3cm9uZy4gICovCi0gICAgICAgY2xvc2UgKGZkKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0rI2lmZGVmIEhBVkVfTU1BUAotICAgLyogTm93IHdlIGFyZSByZWFkeSB0byBsb2FkIHRoZSBmaWxlLiAgSWYgbW1hcCgpIGlzIGF2YWlsYWJsZSB3ZSB0cnkKLSAgICAgIHRoaXMgZmlyc3QuICBJZiBub3QgYXZhaWxhYmxlIG9yIGl0IGZhaWxlZCB3ZSB0cnkgdG8gbG9hZCBpdC4gICovCi0tICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtbWFwIChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUQsCi0rICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtbWFwIChOVUxMLCBzaXplLCBQUk9UX1JFQUQsCi0gCQkJCQkgTUFQX1BSSVZBVEUsIGZkLCAwKTsKLSAKLS0gIGlmIChkYXRhICE9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEpCi0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoZGF0YSAhPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xLCAxKSkKLSAgICAgewotICAgICAgIC8qIG1tYXAoKSBjYWxsIHdhcyBzdWNjZXNzZnVsLiAgKi8KLSAgICAgICBjbG9zZSAoZmQpOwotQEAgLTExNiwyNCArOTc0LDI3IEBACi0gICAgICBpdCBtYW51YWxseS4gICovCi0gICBpZiAoZGF0YSA9PSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQotICAgICB7Ci0tICAgICAgb2ZmX3QgdG9fcmVhZDsKLSsgICAgICBzaXplX3QgdG9fcmVhZDsKLSAgICAgICBjaGFyICpyZWFkX3B0cjsKLSAKLS0gICAgICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtYWxsb2MgKHN0LnN0X3NpemUpOwotKyAgICAgIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1hbGxvYyAoc2l6ZSk7Ci0gICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKLSAJcmV0dXJuOwotIAotLSAgICAgIHRvX3JlYWQgPSBzdC5zdF9zaXplOwotKyAgICAgIHRvX3JlYWQgPSBzaXplOwotICAgICAgIHJlYWRfcHRyID0gKGNoYXIgKikgZGF0YTsKLSAgICAgICBkbwotIAl7Ci0gCSAgbG9uZyBpbnQgbmIgPSAobG9uZyBpbnQpIHJlYWQgKGZkLCByZWFkX3B0ciwgdG9fcmVhZCk7Ci0tCSAgaWYgKG5iID09IC0xKQotKwkgIGlmIChuYiA8PSAwKQotIAkgICAgewotKyNpZmRlZiBFSU5UUgotKwkgICAgICBpZiAobmIgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpCi0rCQljb250aW51ZTsKLSsjZW5kaWYKLSAJICAgICAgY2xvc2UgKGZkKTsKLSAJICAgICAgcmV0dXJuOwotIAkgICAgfQotLQotIAkgIHJlYWRfcHRyICs9IG5iOwotIAkgIHRvX3JlYWQgLT0gbmI7Ci0gCX0KLUBAIC0xNDQsNDcgKzEwMDUsMzc4IEBACi0gCi0gICAvKiBVc2luZyB0aGUgbWFnaWMgbnVtYmVyIHdlIGNhbiB0ZXN0IHdoZXRoZXIgaXQgcmVhbGx5IGlzIGEgbWVzc2FnZQotICAgICAgY2F0YWxvZyBmaWxlLiAgKi8KLS0gIGlmIChkYXRhLT5tYWdpYyAhPSBfTUFHSUMgJiYgZGF0YS0+bWFnaWMgIT0gX01BR0lDX1NXQVBQRUQpCi0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoZGF0YS0+bWFnaWMgIT0gX01BR0lDICYmIGRhdGEtPm1hZ2ljICE9IF9NQUdJQ19TV0FQUEVELAotKwkJCTApKQotICAgICB7Ci0gICAgICAgLyogVGhlIG1hZ2ljIG51bWJlciBpcyB3cm9uZzogbm90IGEgbWVzc2FnZSBjYXRhbG9nIGZpbGUuICAqLwotLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCi0tICAgIHx8IGRlZmluZWQgX0xJQkMKLSsjaWZkZWYgSEFWRV9NTUFQCi0gICAgICAgaWYgKHVzZV9tbWFwKQotLQltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzdC5zdF9zaXplKTsKLSsJbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc2l6ZSk7Ci0gICAgICAgZWxzZQotICNlbmRpZgotIAlmcmVlIChkYXRhKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gIGRvbWFpbl9maWxlLT5kYXRhCi0tICAgID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbikpOwotLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCi0rICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgbWFsbG9jIChzaXplb2YgKHN0cnVjdCBsb2FkZWRfZG9tYWluKSk7Ci0rICBpZiAoZG9tYWluID09IE5VTEwpCi0gICAgIHJldHVybjsKLSsgIGRvbWFpbl9maWxlLT5kYXRhID0gZG9tYWluOwotIAotLSAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOwotICAgZG9tYWluLT5kYXRhID0gKGNoYXIgKikgZGF0YTsKLSsgIGRvbWFpbi0+dXNlX21tYXAgPSB1c2VfbW1hcDsKLSsgIGRvbWFpbi0+bW1hcF9zaXplID0gc2l6ZTsKLSAgIGRvbWFpbi0+bXVzdF9zd2FwID0gZGF0YS0+bWFnaWMgIT0gX01BR0lDOwotKyAgZG9tYWluLT5tYWxsb2NlZCA9IE5VTEw7Ci0gCi0gICAvKiBGaWxsIGluIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZhaWxhYmxlIHRhYmxlcy4gICovCi0tICBzd2l0Y2ggKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5yZXZpc2lvbikpCi0rICByZXZpc2lvbiA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5yZXZpc2lvbik7Ci0rICAvKiBXZSBzdXBwb3J0IG9ubHkgdGhlIG1ham9yIHJldmlzaW9ucyAwIGFuZCAxLiAgKi8KLSsgIHN3aXRjaCAocmV2aXNpb24gPj4gMTYpCi0gICAgIHsKLSAgICAgY2FzZSAwOgotKyAgICBjYXNlIDE6Ci0gICAgICAgZG9tYWluLT5uc3RyaW5ncyA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uc3RyaW5ncyk7Ci0tICAgICAgZG9tYWluLT5vcmlnX3RhYiA9IChzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKLSsgICAgICBkb21haW4tPm9yaWdfdGFiID0gKGNvbnN0IHN0cnVjdCBzdHJpbmdfZGVzYyAqKQotIAkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5vcmlnX3RhYl9vZmZzZXQpKTsKLS0gICAgICBkb21haW4tPnRyYW5zX3RhYiA9IChzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKLSsgICAgICBkb21haW4tPnRyYW5zX3RhYiA9IChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKLSAJKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+dHJhbnNfdGFiX29mZnNldCkpOwotICAgICAgIGRvbWFpbi0+aGFzaF9zaXplID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX3NpemUpOwotLSAgICAgIGRvbWFpbi0+aGFzaF90YWIgPSAobmxzX3VpbnQzMiAqKQotLQkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9vZmZzZXQpKTsKLSsgICAgICBkb21haW4tPmhhc2hfdGFiID0KLSsJKGRvbWFpbi0+aGFzaF9zaXplID4gMgotKwkgPyAoY29uc3QgbmxzX3VpbnQzMiAqKQotKwkgICAoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9vZmZzZXQpKQotKwkgOiBOVUxMKTsKLSsgICAgICBkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiA9IGRvbWFpbi0+bXVzdF9zd2FwOwotKwotKyAgICAgIC8qIE5vdyBkaXNwYXRjaCBvbiB0aGUgbWlub3IgcmV2aXNpb24uICAqLwotKyAgICAgIHN3aXRjaCAocmV2aXNpb24gJiAweGZmZmYpCi0rCXsKLSsJY2FzZSAwOgotKwkgIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IDA7Ci0rCSAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBOVUxMOwotKwkgIGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgMToKLSsJZGVmYXVsdDoKLSsJICB7Ci0rCSAgICBubHNfdWludDMyIG5fc3lzZGVwX3N0cmluZ3M7Ci0rCi0rCSAgICBpZiAoZG9tYWluLT5oYXNoX3RhYiA9PSBOVUxMKQotKwkgICAgICAvKiBUaGlzIGlzIGludmFsaWQuICBUaGVzZSBtaW5vciByZXZpc2lvbnMgbmVlZCBhIGhhc2ggdGFibGUuICAqLwotKwkgICAgICBnb3RvIGludmFsaWQ7Ci0rCi0rCSAgICBuX3N5c2RlcF9zdHJpbmdzID0KLSsJICAgICAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm5fc3lzZGVwX3N0cmluZ3MpOwotKwkgICAgaWYgKG5fc3lzZGVwX3N0cmluZ3MgPiAwKQotKwkgICAgICB7Ci0rCQlubHNfdWludDMyIG5fc3lzZGVwX3NlZ21lbnRzOwotKwkJY29uc3Qgc3RydWN0IHN5c2RlcF9zZWdtZW50ICpzeXNkZXBfc2VnbWVudHM7Ci0rCQljb25zdCBjaGFyICoqc3lzZGVwX3NlZ21lbnRfdmFsdWVzOwotKwkJY29uc3QgbmxzX3VpbnQzMiAqb3JpZ19zeXNkZXBfdGFiOwotKwkJY29uc3QgbmxzX3VpbnQzMiAqdHJhbnNfc3lzZGVwX3RhYjsKLSsJCW5sc191aW50MzIgbl9pbm1lbV9zeXNkZXBfc3RyaW5nczsKLSsJCXNpemVfdCBtZW1uZWVkOwotKwkJY2hhciAqbWVtOwotKwkJc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqaW5tZW1fb3JpZ19zeXNkZXBfdGFiOwotKwkJc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqaW5tZW1fdHJhbnNfc3lzZGVwX3RhYjsKLSsJCW5sc191aW50MzIgKmlubWVtX2hhc2hfdGFiOwotKwkJdW5zaWduZWQgaW50IGksIGo7Ci0rCi0rCQkvKiBHZXQgdGhlIHZhbHVlcyBvZiB0aGUgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4gICovCi0rCQluX3N5c2RlcF9zZWdtZW50cyA9Ci0rCQkgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uX3N5c2RlcF9zZWdtZW50cyk7Ci0rCQlzeXNkZXBfc2VnbWVudHMgPSAoY29uc3Qgc3RydWN0IHN5c2RlcF9zZWdtZW50ICopCi0rCQkgICgoY2hhciAqKSBkYXRhCi0rCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5zeXNkZXBfc2VnbWVudHNfb2Zmc2V0KSk7Ci0rCQlzeXNkZXBfc2VnbWVudF92YWx1ZXMgPQotKwkJICBhbGxvY2EgKG5fc3lzZGVwX3NlZ21lbnRzICogc2l6ZW9mIChjb25zdCBjaGFyICopKTsKLSsJCWZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zZWdtZW50czsgaSsrKQotKwkJICB7Ci0rCQkgICAgY29uc3QgY2hhciAqbmFtZSA9Ci0rCQkgICAgICAoY2hhciAqKSBkYXRhCi0rCQkgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc2VnbWVudHNbaV0ub2Zmc2V0KTsKLSsJCSAgICBubHNfdWludDMyIG5hbWVsZW4gPQotKwkJICAgICAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHN5c2RlcF9zZWdtZW50c1tpXS5sZW5ndGgpOwotKwotKwkJICAgIGlmICghKG5hbWVsZW4gPiAwICYmIG5hbWVbbmFtZWxlbiAtIDFdID09ICdcMCcpKQotKwkJICAgICAgewotKwkJCWZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOwotKwkJCWdvdG8gaW52YWxpZDsKLSsJCSAgICAgIH0KLSsKLSsJCSAgICBzeXNkZXBfc2VnbWVudF92YWx1ZXNbaV0gPSBnZXRfc3lzZGVwX3NlZ21lbnRfdmFsdWUgKG5hbWUpOwotKwkJICB9Ci0rCi0rCQlvcmlnX3N5c2RlcF90YWIgPSAoY29uc3QgbmxzX3VpbnQzMiAqKQotKwkJICAoKGNoYXIgKikgZGF0YQotKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ19zeXNkZXBfdGFiX29mZnNldCkpOwotKwkJdHJhbnNfc3lzZGVwX3RhYiA9IChjb25zdCBubHNfdWludDMyICopCi0rCQkgICgoY2hhciAqKSBkYXRhCi0rCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT50cmFuc19zeXNkZXBfdGFiX29mZnNldCkpOwotKwotKwkJLyogQ29tcHV0ZSB0aGUgYW1vdW50IG9mIGFkZGl0aW9uYWwgbWVtb3J5IG5lZWRlZCBmb3IgdGhlCi0rCQkgICBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgYW5kIHRoZSBhdWdtZW50ZWQgaGFzaCB0YWJsZS4KLSsJCSAgIEF0IHRoZSBzYW1lIHRpbWUsIGFsc28gZHJvcCBzdHJpbmcgcGFpcnMgd2hpY2ggcmVmZXIgdG8KLSsJCSAgIGFuIHVuZGVmaW5lZCBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnQuICAqLwotKwkJbl9pbm1lbV9zeXNkZXBfc3RyaW5ncyA9IDA7Ci0rCQltZW1uZWVkID0gZG9tYWluLT5oYXNoX3NpemUgKiBzaXplb2YgKG5sc191aW50MzIpOwotKwkJZm9yIChpID0gMDsgaSA8IG5fc3lzZGVwX3N0cmluZ3M7IGkrKykKLSsJCSAgewotKwkJICAgIGludCB2YWxpZCA9IDE7Ci0rCQkgICAgc2l6ZV90IG5lZWRzWzJdOwotKwotKwkJICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCi0rCQkgICAgICB7Ci0rCQkJY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQotKwkJCSAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCi0rCQkJICAoKGNoYXIgKikgZGF0YQotKwkJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCWogPT0gMAotKwkJCQk/IG9yaWdfc3lzZGVwX3RhYltpXQotKwkJCQk6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKLSsJCQlzaXplX3QgbmVlZCA9IDA7Ci0rCQkJY29uc3Qgc3RydWN0IHNlZ21lbnRfcGFpciAqcCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOwotKwotKwkJCWlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKSAhPSBTRUdNRU5UU19FTkQpCi0rCQkJICBmb3IgKHAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czs7IHArKykKLSsJCQkgICAgewotKwkJCSAgICAgIG5sc191aW50MzIgc3lzZGVwcmVmOwotKwotKwkJCSAgICAgIG5lZWQgKz0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnNlZ3NpemUpOwotKwotKwkJCSAgICAgIHN5c2RlcHJlZiA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpOwotKwkJCSAgICAgIGlmIChzeXNkZXByZWYgPT0gU0VHTUVOVFNfRU5EKQotKwkJCQlicmVhazsKLSsKLSsJCQkgICAgICBpZiAoc3lzZGVwcmVmID49IG5fc3lzZGVwX3NlZ21lbnRzKQotKwkJCQl7Ci0rCQkJCSAgLyogSW52YWxpZC4gICovCi0rCQkJCSAgZnJlZWEgKHN5c2RlcF9zZWdtZW50X3ZhbHVlcyk7Ci0rCQkJCSAgZ290byBpbnZhbGlkOwotKwkJCQl9Ci0rCi0rCQkJICAgICAgaWYgKHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdID09IE5VTEwpCi0rCQkJCXsKLSsJCQkJICAvKiBUaGlzIHBhcnRpY3VsYXIgc3RyaW5nIHBhaXIgaXMgaW52YWxpZC4gICovCi0rCQkJCSAgdmFsaWQgPSAwOwotKwkJCQkgIGJyZWFrOwotKwkJCQl9Ci0rCi0rCQkJICAgICAgbmVlZCArPSBzdHJsZW4gKHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdKTsKLSsJCQkgICAgfQotKwotKwkJCW5lZWRzW2pdID0gbmVlZDsKLSsJCQlpZiAoIXZhbGlkKQotKwkJCSAgYnJlYWs7Ci0rCQkgICAgICB9Ci0rCi0rCQkgICAgaWYgKHZhbGlkKQotKwkJICAgICAgewotKwkJCW5faW5tZW1fc3lzZGVwX3N0cmluZ3MrKzsKLSsJCQltZW1uZWVkICs9IG5lZWRzWzBdICsgbmVlZHNbMV07Ci0rCQkgICAgICB9Ci0rCQkgIH0KLSsJCW1lbW5lZWQgKz0gMiAqIG5faW5tZW1fc3lzZGVwX3N0cmluZ3MKLSsJCQkgICAqIHNpemVvZiAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyk7Ci0rCi0rCQlpZiAobl9pbm1lbV9zeXNkZXBfc3RyaW5ncyA+IDApCi0rCQkgIHsKLSsJCSAgICB1bnNpZ25lZCBpbnQgazsKLSsKLSsJCSAgICAvKiBBbGxvY2F0ZSBhZGRpdGlvbmFsIG1lbW9yeS4gICovCi0rCQkgICAgbWVtID0gKGNoYXIgKikgbWFsbG9jIChtZW1uZWVkKTsKLSsJCSAgICBpZiAobWVtID09IE5VTEwpCi0rCQkgICAgICBnb3RvIGludmFsaWQ7Ci0rCi0rCQkgICAgZG9tYWluLT5tYWxsb2NlZCA9IG1lbTsKLSsJCSAgICBpbm1lbV9vcmlnX3N5c2RlcF90YWIgPSAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqKSBtZW07Ci0rCQkgICAgbWVtICs9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3MKLSsJCQkgICAqIHNpemVvZiAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyk7Ci0rCQkgICAgaW5tZW1fdHJhbnNfc3lzZGVwX3RhYiA9IChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICopIG1lbTsKLSsJCSAgICBtZW0gKz0gbl9pbm1lbV9zeXNkZXBfc3RyaW5ncwotKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjKTsKLSsJCSAgICBpbm1lbV9oYXNoX3RhYiA9IChubHNfdWludDMyICopIG1lbTsKLSsJCSAgICBtZW0gKz0gZG9tYWluLT5oYXNoX3NpemUgKiBzaXplb2YgKG5sc191aW50MzIpOwotKwotKwkJICAgIC8qIENvbXB1dGUgdGhlIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5ncy4gICovCi0rCQkgICAgayA9IDA7Ci0rCQkgICAgZm9yIChpID0gMDsgaSA8IG5fc3lzZGVwX3N0cmluZ3M7IGkrKykKLSsJCSAgICAgIHsKLSsJCQlpbnQgdmFsaWQgPSAxOwotKwotKwkJCWZvciAoaiA9IDA7IGogPCAyOyBqKyspCi0rCQkJICB7Ci0rCQkJICAgIGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICpzeXNkZXBfc3RyaW5nID0KLSsJCQkgICAgICAoY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKikKLSsJCQkgICAgICAoKGNoYXIgKikgZGF0YQotKwkJCSAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQkgICAgaiA9PSAwCi0rCQkJCSAgICA/IG9yaWdfc3lzZGVwX3RhYltpXQotKwkJCQkgICAgOiB0cmFuc19zeXNkZXBfdGFiW2ldKSk7Ci0rCQkJICAgIGNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPQotKwkJCSAgICAgIHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOwotKwotKwkJCSAgICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZikKLSsJCQkJIT0gU0VHTUVOVFNfRU5EKQotKwkJCSAgICAgIGZvciAocCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOzsgcCsrKQotKwkJCQl7Ci0rCQkJCSAgbmxzX3VpbnQzMiBzeXNkZXByZWY7Ci0rCi0rCQkJCSAgc3lzZGVwcmVmID0KLSsJCQkJICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpOwotKwkJCQkgIGlmIChzeXNkZXByZWYgPT0gU0VHTUVOVFNfRU5EKQotKwkJCQkgICAgYnJlYWs7Ci0rCi0rCQkJCSAgaWYgKHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdID09IE5VTEwpCi0rCQkJCSAgICB7Ci0rCQkJCSAgICAgIC8qIFRoaXMgcGFydGljdWxhciBzdHJpbmcgcGFpciBpcwotKwkJCQkJIGludmFsaWQuICAqLwotKwkJCQkgICAgICB2YWxpZCA9IDA7Ci0rCQkJCSAgICAgIGJyZWFrOwotKwkJCQkgICAgfQotKwkJCQl9Ci0rCi0rCQkJICAgIGlmICghdmFsaWQpCi0rCQkJICAgICAgYnJlYWs7Ci0rCQkJICB9Ci0rCi0rCQkJaWYgKHZhbGlkKQotKwkJCSAgewotKwkJCSAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKQotKwkJCSAgICAgIHsKLSsJCQkJY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQotKwkJCQkgIChjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqKQotKwkJCQkgICgoY2hhciAqKSBkYXRhCi0rCQkJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCQlqID09IDAKLSsJCQkJCT8gb3JpZ19zeXNkZXBfdGFiW2ldCi0rCQkJCQk6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKLSsJCQkJY29uc3QgY2hhciAqc3RhdGljX3NlZ21lbnRzID0KLSsJCQkJICAoY2hhciAqKSBkYXRhCi0rCQkJCSAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgc3lzZGVwX3N0cmluZy0+b2Zmc2V0KTsKLSsJCQkJY29uc3Qgc3RydWN0IHNlZ21lbnRfcGFpciAqcCA9Ci0rCQkJCSAgc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7Ci0rCi0rCQkJCS8qIENvbmNhdGVuYXRlIHRoZSBzZWdtZW50cywgYW5kIGZpbGwKLSsJCQkJICAgaW5tZW1fb3JpZ19zeXNkZXBfdGFiW2tdIChmb3IgaiA9PSAwKSBhbmQKLSsJCQkJICAgaW5tZW1fdHJhbnNfc3lzZGVwX3RhYltrXSAoZm9yIGogPT0gMSkuICAqLwotKwotKwkJCQlzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICppbm1lbV90YWJfZW50cnkgPQotKwkJCQkgIChqID09IDAKLSsJCQkJICAgPyBpbm1lbV9vcmlnX3N5c2RlcF90YWIKLSsJCQkJICAgOiBpbm1lbV90cmFuc19zeXNkZXBfdGFiKQotKwkJCQkgICsgazsKLSsKLSsJCQkJaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpCi0rCQkJCSAgICA9PSBTRUdNRU5UU19FTkQpCi0rCQkJCSAgewotKwkJCQkgICAgLyogT25seSBvbmUgc3RhdGljIHNlZ21lbnQuICAqLwotKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5sZW5ndGggPQotKwkJCQkgICAgICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c2Vnc2l6ZSk7Ci0rCQkJCSAgICBpbm1lbV90YWJfZW50cnktPnBvaW50ZXIgPSBzdGF0aWNfc2VnbWVudHM7Ci0rCQkJCSAgfQotKwkJCQllbHNlCi0rCQkJCSAgewotKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyID0gbWVtOwotKwotKwkJCQkgICAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCi0rCQkJCSAgICAgIHsKLSsJCQkJCW5sc191aW50MzIgc2Vnc2l6ZSA9Ci0rCQkJCQkgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zZWdzaXplKTsKLSsJCQkJCW5sc191aW50MzIgc3lzZGVwcmVmID0KLSsJCQkJCSAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZik7Ci0rCQkJCQlzaXplX3QgbjsKLSsKLSsJCQkJCWlmIChzZWdzaXplID4gMCkKLSsJCQkJCSAgewotKwkJCQkJICAgIG1lbWNweSAobWVtLCBzdGF0aWNfc2VnbWVudHMsIHNlZ3NpemUpOwotKwkJCQkJICAgIG1lbSArPSBzZWdzaXplOwotKwkJCQkJICAgIHN0YXRpY19zZWdtZW50cyArPSBzZWdzaXplOwotKwkJCQkJICB9Ci0rCi0rCQkJCQlpZiAoc3lzZGVwcmVmID09IFNFR01FTlRTX0VORCkKLSsJCQkJCSAgYnJlYWs7Ci0rCi0rCQkJCQluID0gc3RybGVuIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSk7Ci0rCQkJCQltZW1jcHkgKG1lbSwgc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0sIG4pOwotKwkJCQkJbWVtICs9IG47Ci0rCQkJCSAgICAgIH0KLSsKLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+bGVuZ3RoID0KLSsJCQkJICAgICAgbWVtIC0gaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyOwotKwkJCQkgIH0KLSsJCQkgICAgICB9Ci0rCi0rCQkJICAgIGsrKzsKLSsJCQkgIH0KLSsJCSAgICAgIH0KLSsJCSAgICBpZiAoayAhPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzKQotKwkJICAgICAgYWJvcnQgKCk7Ci0rCi0rCQkgICAgLyogQ29tcHV0ZSB0aGUgYXVnbWVudGVkIGhhc2ggdGFibGUuICAqLwotKwkJICAgIGZvciAoaSA9IDA7IGkgPCBkb21haW4tPmhhc2hfc2l6ZTsgaSsrKQotKwkJICAgICAgaW5tZW1faGFzaF90YWJbaV0gPQotKwkJCVcgKGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiLCBkb21haW4tPmhhc2hfdGFiW2ldKTsKLSsJCSAgICBmb3IgKGkgPSAwOyBpIDwgbl9pbm1lbV9zeXNkZXBfc3RyaW5nczsgaSsrKQotKwkJICAgICAgewotKwkJCWNvbnN0IGNoYXIgKm1zZ2lkID0gaW5tZW1fb3JpZ19zeXNkZXBfdGFiW2ldLnBvaW50ZXI7Ci0rCQkJbmxzX3VpbnQzMiBoYXNoX3ZhbCA9IGhhc2hfc3RyaW5nIChtc2dpZCk7Ci0rCQkJbmxzX3VpbnQzMiBpZHggPSBoYXNoX3ZhbCAlIGRvbWFpbi0+aGFzaF9zaXplOwotKwkJCW5sc191aW50MzIgaW5jciA9Ci0rCQkJICAxICsgKGhhc2hfdmFsICUgKGRvbWFpbi0+aGFzaF9zaXplIC0gMikpOwotKwotKwkJCWZvciAoOzspCi0rCQkJICB7Ci0rCQkJICAgIGlmIChpbm1lbV9oYXNoX3RhYltpZHhdID09IDApCi0rCQkJICAgICAgewotKwkJCQkvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgVXNlIGl0LiAgKi8KLSsJCQkJaW5tZW1faGFzaF90YWJbaWR4XSA9IDEgKyBkb21haW4tPm5zdHJpbmdzICsgaTsKLSsJCQkJYnJlYWs7Ci0rCQkJICAgICAgfQotKwotKwkJCSAgICBpZiAoaWR4ID49IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcikKLSsJCQkgICAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOwotKwkJCSAgICBlbHNlCi0rCQkJICAgICAgaWR4ICs9IGluY3I7Ci0rCQkJICB9Ci0rCQkgICAgICB9Ci0rCi0rCQkgICAgZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gbl9pbm1lbV9zeXNkZXBfc3RyaW5nczsKLSsJCSAgICBkb21haW4tPm9yaWdfc3lzZGVwX3RhYiA9IGlubWVtX29yaWdfc3lzZGVwX3RhYjsKLSsJCSAgICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBpbm1lbV90cmFuc19zeXNkZXBfdGFiOwotKwotKwkJICAgIGRvbWFpbi0+aGFzaF90YWIgPSBpbm1lbV9oYXNoX3RhYjsKLSsJCSAgICBkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiA9IDA7Ci0rCQkgIH0KLSsJCWVsc2UKLSsJCSAgewotKwkJICAgIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IDA7Ci0rCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBOVUxMOwotKwkJICAgIGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCQkgIH0KLSsKLSsJCWZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCWRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IDA7Ci0rCQlkb21haW4tPm9yaWdfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCQlkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOwotKwkgICAgICB9Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0tICAgICAgLyogVGhpcyBpcyBhbiBpbGxlZ2FsIHJldmlzaW9uLiAgKi8KLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0rICAgICAgLyogVGhpcyBpcyBhbiBpbnZhbGlkIHJldmlzaW9uLiAgKi8KLSsgICAgaW52YWxpZDoKLSsgICAgICAvKiBUaGlzIGlzIGFuIGludmFsaWQgLm1vIGZpbGUuICAqLwotKyAgICAgIGlmIChkb21haW4tPm1hbGxvY2VkKQotKwlmcmVlIChkb21haW4tPm1hbGxvY2VkKTsKLSsjaWZkZWYgSEFWRV9NTUFQCi0gICAgICAgaWYgKHVzZV9tbWFwKQotLQltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzdC5zdF9zaXplKTsKLSsJbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc2l6ZSk7Ci0gICAgICAgZWxzZQotICNlbmRpZgotIAlmcmVlIChkYXRhKTsKLUBAIC0xOTMsNyArMTM4NSwzNiBAQAotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgLyogU2hvdyB0aGF0IG9uZSBkb21haW4gaXMgY2hhbmdlZC4gIFRoaXMgbWlnaHQgbWFrZSBzb21lIGNhY2hlZAotLSAgICAgdHJhbnNsYXRpb25zIGludmFsaWQuICAqLwotLSAgKytfbmxfbXNnX2NhdF9jbnRyOwotKyAgLyogTm93IGluaXRpYWxpemUgdGhlIGNoYXJhY3RlciBzZXQgY29udmVydGVyIGZyb20gdGhlIGNoYXJhY3RlciBzZXQKLSsgICAgIHRoZSBmaWxlIGlzIGVuY29kZWQgd2l0aCAoZm91bmQgaW4gdGhlIGhlYWRlciBlbnRyeSkgdG8gdGhlIGRvbWFpbidzCi0rICAgICBzcGVjaWZpZWQgY2hhcmFjdGVyIHNldCBvciB0aGUgbG9jYWxlJ3MgY2hhcmFjdGVyIHNldC4gICovCi0rICBudWxsZW50cnkgPSBfbmxfaW5pdF9kb21haW5fY29udiAoZG9tYWluX2ZpbGUsIGRvbWFpbiwgZG9tYWluYmluZGluZyk7Ci0rCi0rICAvKiBBbHNvIGxvb2sgZm9yIGEgcGx1cmFsIHNwZWNpZmljYXRpb24uICAqLwotKyAgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiAobnVsbGVudHJ5LCAmZG9tYWluLT5wbHVyYWwsICZkb21haW4tPm5wbHVyYWxzKTsKLSB9Ci0rCi0rCi0rI2lmZGVmIF9MSUJDCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX3VubG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW4pCi0rewotKyAgaWYgKGRvbWFpbi0+cGx1cmFsICE9ICZfX2dldHRleHRfZ2VybWFuaWNfcGx1cmFsKQotKyAgICBfX2dldHRleHRfZnJlZV9leHAgKGRvbWFpbi0+cGx1cmFsKTsKLSsKLSsgIF9ubF9mcmVlX2RvbWFpbl9jb252IChkb21haW4pOwotKwotKyAgaWYgKGRvbWFpbi0+bWFsbG9jZWQpCi0rICAgIGZyZWUgKGRvbWFpbi0+bWFsbG9jZWQpOwotKwotKyMgaWZkZWYgX1BPU0lYX01BUFBFRF9GSUxFUwotKyAgaWYgKGRvbWFpbi0+dXNlX21tYXApCi0rICAgIG11bm1hcCAoKGNhZGRyX3QpIGRvbWFpbi0+ZGF0YSwgZG9tYWluLT5tbWFwX3NpemUpOwotKyAgZWxzZQotKyMgZW5kaWYJLyogX1BPU0lYX01BUFBFRF9GSUxFUyAqLwotKyAgICBmcmVlICgodm9pZCAqKSBkb21haW4tPmRhdGEpOwotKwotKyAgZnJlZSAoZG9tYWluKTsKLSt9Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxjaGFyc2V0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxjaGFyc2V0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40Nzg3MjkzOTIgLTA0MDAKLUBAIC0wLDAgKzEsMzk4IEBACi0rLyogRGV0ZXJtaW5lIGEgY2Fub25pY2FsIG5hbWUgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaW5jbHVkZSAibG9jYWxjaGFyc2V0LmgiCi0rCi0rI2lmIEhBVkVfU1REREVGX0gKLSsjIGluY2x1ZGUgPHN0ZGRlZi5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpZiBIQVZFX1NUUklOR19ICi0rIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSA8c3RyaW5ncy5oPgotKyNlbmRpZgotKyNpZiBIQVZFX1NURExJQl9ICi0rIyBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KLSsjIHVuZGVmIFdJTjMyICAgLyogYXZvaWQgd2FybmluZyBvbiBtaW5ndzMyICovCi0rIyBkZWZpbmUgV0lOMzIKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfX0VNWF9fCi0rLyogQXNzdW1lIEVNWCBwcm9ncmFtIHJ1bnMgb24gT1MvMiwgZXZlbiBpZiBjb21waWxlZCB1bmRlciBET1MuICAqLwotKyMgZGVmaW5lIE9TMgotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZCBXSU4zMgotKyMgaWYgSEFWRV9MQU5HSU5GT19DT0RFU0VUCi0rIyAgaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjIGVsc2UKLSsjICBpZiBIQVZFX1NFVExPQ0FMRQotKyMgICBpbmNsdWRlIDxsb2NhbGUuaD4KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZWxpZiBkZWZpbmVkIFdJTjMyCi0rIyBkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotKyMgaW5jbHVkZSA8d2luZG93cy5oPgotKyNlbmRpZgotKyNpZiBkZWZpbmVkIE9TMgotKyMgZGVmaW5lIElOQ0xfRE9TCi0rIyBpbmNsdWRlIDxvczIuaD4KLSsjZW5kaWYKLSsKLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rIyBpbmNsdWRlICJyZWxvY2F0YWJsZS5oIgotKyNlbHNlCi0rIyBkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIERJUkVDVE9SWV9TRVBBUkFUT1IKLSsjIGRlZmluZSBESVJFQ1RPUllfU0VQQVJBVE9SICcvJwotKyNlbmRpZgotKwotKyNpZm5kZWYgSVNTTEFTSAotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSBESVJFQ1RPUllfU0VQQVJBVE9SKQotKyNlbmRpZgotKwotKyNpZiBIQVZFX0RFQ0xfR0VUQ19VTkxPQ0tFRAotKyMgdW5kZWYgZ2V0YwotKyMgZGVmaW5lIGdldGMgZ2V0Y191bmxvY2tlZAotKyNlbmRpZgotKwotKy8qIFRoZSBmb2xsb3dpbmcgc3RhdGljIHZhcmlhYmxlIGlzIGRlY2xhcmVkICd2b2xhdGlsZScgdG8gYXZvaWQgYQotKyAgIHBvc3NpYmxlIG11bHRpdGhyZWFkIHByb2JsZW0gaW4gdGhlIGZ1bmN0aW9uIGdldF9jaGFyc2V0X2FsaWFzZXMuIElmIHdlCi0rICAgYXJlIHJ1bm5pbmcgaW4gYSB0aHJlYWRlZCBlbnZpcm9ubWVudCwgYW5kIGlmIHR3byB0aHJlYWRzIGluaXRpYWxpemUKLSsgICAnY2hhcnNldF9hbGlhc2VzJyBzaW11bHRhbmVvdXNseSwgYm90aCB3aWxsIHByb2R1Y2UgdGhlIHNhbWUgdmFsdWUsCi0rICAgYW5kIGV2ZXJ5dGhpbmcgd2lsbCBiZSBvayBpZiB0aGUgdHdvIGFzc2lnbm1lbnRzIHRvICdjaGFyc2V0X2FsaWFzZXMnCi0rICAgYXJlIGF0b21pYy4gQnV0IEkgZG9uJ3Qga25vdyB3aGF0IHdpbGwgaGFwcGVuIGlmIHRoZSB0d28gYXNzaWdubWVudHMgbWl4LiAgKi8KLSsjaWYgX19TVERDX18gIT0gMQotKyMgZGVmaW5lIHZvbGF0aWxlIC8qIGVtcHR5ICovCi0rI2VuZGlmCi0rLyogUG9pbnRlciB0byB0aGUgY29udGVudHMgb2YgdGhlIGNoYXJzZXQuYWxpYXMgZmlsZSwgaWYgaXQgaGFzIGFscmVhZHkgYmVlbgotKyAgIHJlYWQsIGVsc2UgTlVMTC4gIEl0cyBmb3JtYXQgaXM6Ci0rICAgQUxJQVNfMSAnXDAnIENBTk9OSUNBTF8xICdcMCcgLi4uIEFMSUFTX24gJ1wwJyBDQU5PTklDQUxfbiAnXDAnICdcMCcgICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKiB2b2xhdGlsZSBjaGFyc2V0X2FsaWFzZXM7Ci0rCi0rLyogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY29udGVudHMgb2YgdGhlIGNoYXJzZXQuYWxpYXMgZmlsZS4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2dldF9jaGFyc2V0X2FsaWFzZXMgKCkKLSt7Ci0rICBjb25zdCBjaGFyICpjcDsKLSsKLSsgIGNwID0gY2hhcnNldF9hbGlhc2VzOwotKyAgaWYgKGNwID09IE5VTEwpCi0rICAgIHsKLSsjaWYgIShkZWZpbmVkIFZNUyB8fCBkZWZpbmVkIFdJTjMyKQotKyAgICAgIEZJTEUgKmZwOwotKyAgICAgIGNvbnN0IGNoYXIgKmRpciA9IHJlbG9jYXRlIChMSUJESVIpOwotKyAgICAgIGNvbnN0IGNoYXIgKmJhc2UgPSAiY2hhcnNldC5hbGlhcyI7Ci0rICAgICAgY2hhciAqZmlsZV9uYW1lOwotKwotKyAgICAgIC8qIENvbmNhdGVuYXRlIGRpciBhbmQgYmFzZSBpbnRvIGZyZXNobHkgYWxsb2NhdGVkIGZpbGVfbmFtZS4gICovCi0rICAgICAgewotKwlzaXplX3QgZGlyX2xlbiA9IHN0cmxlbiAoZGlyKTsKLSsJc2l6ZV90IGJhc2VfbGVuID0gc3RybGVuIChiYXNlKTsKLSsJaW50IGFkZF9zbGFzaCA9IChkaXJfbGVuID4gMCAmJiAhSVNTTEFTSCAoZGlyW2Rpcl9sZW4gLSAxXSkpOwotKwlmaWxlX25hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcl9sZW4gKyBhZGRfc2xhc2ggKyBiYXNlX2xlbiArIDEpOwotKwlpZiAoZmlsZV9uYW1lICE9IE5VTEwpCi0rCSAgewotKwkgICAgbWVtY3B5IChmaWxlX25hbWUsIGRpciwgZGlyX2xlbik7Ci0rCSAgICBpZiAoYWRkX3NsYXNoKQotKwkgICAgICBmaWxlX25hbWVbZGlyX2xlbl0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOwotKwkgICAgbWVtY3B5IChmaWxlX25hbWUgKyBkaXJfbGVuICsgYWRkX3NsYXNoLCBiYXNlLCBiYXNlX2xlbiArIDEpOwotKwkgIH0KLSsgICAgICB9Ci0rCi0rICAgICAgaWYgKGZpbGVfbmFtZSA9PSBOVUxMIHx8IChmcCA9IGZvcGVuIChmaWxlX25hbWUsICJyIikpID09IE5VTEwpCi0rCS8qIE91dCBvZiBtZW1vcnkgb3IgZmlsZSBub3QgZm91bmQsIHRyZWF0IGl0IGFzIGVtcHR5LiAgKi8KLSsJY3AgPSAiIjsKLSsgICAgICBlbHNlCi0rCXsKLSsJICAvKiBQYXJzZSB0aGUgZmlsZSdzIGNvbnRlbnRzLiAgKi8KLSsJICBpbnQgYzsKLSsJICBjaGFyIGJ1ZjFbNTArMV07Ci0rCSAgY2hhciBidWYyWzUwKzFdOwotKwkgIGNoYXIgKnJlc19wdHIgPSBOVUxMOwotKwkgIHNpemVfdCByZXNfc2l6ZSA9IDA7Ci0rCSAgc2l6ZV90IGwxLCBsMjsKLSsKLSsJICBmb3IgKDs7KQotKwkgICAgewotKwkgICAgICBjID0gZ2V0YyAoZnApOwotKwkgICAgICBpZiAoYyA9PSBFT0YpCi0rCQlicmVhazsKLSsJICAgICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09ICcgJyB8fCBjID09ICdcdCcpCi0rCQljb250aW51ZTsKLSsJICAgICAgaWYgKGMgPT0gJyMnKQotKwkJewotKwkJICAvKiBTa2lwIGNvbW1lbnQsIHRvIGVuZCBvZiBsaW5lLiAgKi8KLSsJCSAgZG8KLSsJCSAgICBjID0gZ2V0YyAoZnApOwotKwkJICB3aGlsZSAoIShjID09IEVPRiB8fCBjID09ICdcbicpKTsKLSsJCSAgaWYgKGMgPT0gRU9GKQotKwkJICAgIGJyZWFrOwotKwkJICBjb250aW51ZTsKLSsJCX0KLSsJICAgICAgdW5nZXRjIChjLCBmcCk7Ci0rCSAgICAgIGlmIChmc2NhbmYgKGZwLCAiJTUwcyAlNTBzIiwgYnVmMSwgYnVmMikgPCAyKQotKwkJYnJlYWs7Ci0rCSAgICAgIGwxID0gc3RybGVuIChidWYxKTsKLSsJICAgICAgbDIgPSBzdHJsZW4gKGJ1ZjIpOwotKwkgICAgICBpZiAocmVzX3NpemUgPT0gMCkKLSsJCXsKLSsJCSAgcmVzX3NpemUgPSBsMSArIDEgKyBsMiArIDE7Ci0rCQkgIHJlc19wdHIgPSAoY2hhciAqKSBtYWxsb2MgKHJlc19zaXplICsgMSk7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgcmVzX3NpemUgKz0gbDEgKyAxICsgbDIgKyAxOwotKwkJICByZXNfcHRyID0gKGNoYXIgKikgcmVhbGxvYyAocmVzX3B0ciwgcmVzX3NpemUgKyAxKTsKLSsJCX0KLSsJICAgICAgaWYgKHJlc19wdHIgPT0gTlVMTCkKLSsJCXsKLSsJCSAgLyogT3V0IG9mIG1lbW9yeS4gKi8KLSsJCSAgcmVzX3NpemUgPSAwOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgICAgc3RyY3B5IChyZXNfcHRyICsgcmVzX3NpemUgLSAobDIgKyAxKSAtIChsMSArIDEpLCBidWYxKTsKLSsJICAgICAgc3RyY3B5IChyZXNfcHRyICsgcmVzX3NpemUgLSAobDIgKyAxKSwgYnVmMik7Ci0rCSAgICB9Ci0rCSAgZmNsb3NlIChmcCk7Ci0rCSAgaWYgKHJlc19zaXplID09IDApCi0rCSAgICBjcCA9ICIiOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgKihyZXNfcHRyICsgcmVzX3NpemUpID0gJ1wwJzsKLSsJICAgICAgY3AgPSByZXNfcHRyOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgaWYgKGZpbGVfbmFtZSAhPSBOVUxMKQotKwlmcmVlIChmaWxlX25hbWUpOwotKwotKyNlbHNlCi0rCi0rIyBpZiBkZWZpbmVkIFZNUwotKyAgICAgIC8qIFRvIGF2b2lkIHRoZSB0cm91YmxlcyBvZiBhbiBleHRyYSBmaWxlIGNoYXJzZXQuYWxpYXNfdm1zIGluIHRoZQotKwkgc291cmNlcyBvZiBtYW55IEdOVSBwYWNrYWdlcywgc2ltcGx5IGlubGluZSB0aGUgYWxpYXNlcyBoZXJlLiAgKi8KLSsgICAgICAvKiBUaGUgbGlzdCBvZiBlbmNvZGluZ3MgaXMgdGFrZW4gZnJvbSB0aGUgT3BlblZNUyA3LjMtMSBkb2N1bWVudGF0aW9uCi0rCSAiQ29tcGFxIEMgUnVuLVRpbWUgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIGZvciBPcGVuVk1TIHN5c3RlbXMiCi0rCSBzZWN0aW9uIDEwLjcgIkhhbmRsaW5nIERpZmZlcmVudCBDaGFyYWN0ZXIgU2V0cyIuICAqLwotKyAgICAgIGNwID0gIklTTzg4NTktMSIgIlwwIiAiSVNPLTg4NTktMSIgIlwwIgotKwkgICAiSVNPODg1OS0yIiAiXDAiICJJU08tODg1OS0yIiAiXDAiCi0rCSAgICJJU084ODU5LTUiICJcMCIgIklTTy04ODU5LTUiICJcMCIKLSsJICAgIklTTzg4NTktNyIgIlwwIiAiSVNPLTg4NTktNyIgIlwwIgotKwkgICAiSVNPODg1OS04IiAiXDAiICJJU08tODg1OS04IiAiXDAiCi0rCSAgICJJU084ODU5LTkiICJcMCIgIklTTy04ODU5LTkiICJcMCIKLSsJICAgLyogSmFwYW5lc2UgKi8KLSsJICAgImV1Y0pQIiAiXDAiICJFVUMtSlAiICJcMCIKLSsJICAgIlNKSVMiICJcMCIgIlNISUZUX0pJUyIgIlwwIgotKwkgICAiREVDS0FOSkkiICJcMCIgIkRFQy1LQU5KSSIgIlwwIgotKwkgICAiU0RFQ0tBTkpJIiAiXDAiICJFVUMtSlAiICJcMCIKLSsJICAgLyogQ2hpbmVzZSAqLwotKwkgICAiZXVjVFciICJcMCIgIkVVQy1UVyIgIlwwIgotKwkgICAiREVDSEFOWVUiICJcMCIgIkRFQy1IQU5ZVSIgIlwwIgotKwkgICAiREVDSEFOWkkiICJcMCIgIkdCMjMxMiIgIlwwIgotKwkgICAvKiBLb3JlYW4gKi8KLSsJICAgIkRFQ0tPUkVBTiIgIlwwIiAiRVVDLUtSIiAiXDAiOwotKyMgZW5kaWYKLSsKLSsjIGlmIGRlZmluZWQgV0lOMzIKLSsgICAgICAvKiBUbyBhdm9pZCB0aGUgdHJvdWJsZXMgb2YgaW5zdGFsbGluZyBhIHNlcGFyYXRlIGZpbGUgaW4gdGhlIHNhbWUKLSsJIGRpcmVjdG9yeSBhcyB0aGUgRExMIGFuZCBvZiByZXRyaWV2aW5nIHRoZSBETEwncyBkaXJlY3RvcnkgYXQKLSsJIHJ1bnRpbWUsIHNpbXBseSBpbmxpbmUgdGhlIGFsaWFzZXMgaGVyZS4gICovCi0rCi0rICAgICAgY3AgPSAiQ1A5MzYiICJcMCIgIkdCSyIgIlwwIgotKwkgICAiQ1AxMzYxIiAiXDAiICJKT0hBQiIgIlwwIgotKwkgICAiQ1AyMDEyNyIgIlwwIiAiQVNDSUkiICJcMCIKLSsJICAgIkNQMjA4NjYiICJcMCIgIktPSTgtUiIgIlwwIgotKwkgICAiQ1AyMTg2NiIgIlwwIiAiS09JOC1SVSIgIlwwIgotKwkgICAiQ1AyODU5MSIgIlwwIiAiSVNPLTg4NTktMSIgIlwwIgotKwkgICAiQ1AyODU5MiIgIlwwIiAiSVNPLTg4NTktMiIgIlwwIgotKwkgICAiQ1AyODU5MyIgIlwwIiAiSVNPLTg4NTktMyIgIlwwIgotKwkgICAiQ1AyODU5NCIgIlwwIiAiSVNPLTg4NTktNCIgIlwwIgotKwkgICAiQ1AyODU5NSIgIlwwIiAiSVNPLTg4NTktNSIgIlwwIgotKwkgICAiQ1AyODU5NiIgIlwwIiAiSVNPLTg4NTktNiIgIlwwIgotKwkgICAiQ1AyODU5NyIgIlwwIiAiSVNPLTg4NTktNyIgIlwwIgotKwkgICAiQ1AyODU5OCIgIlwwIiAiSVNPLTg4NTktOCIgIlwwIgotKwkgICAiQ1AyODU5OSIgIlwwIiAiSVNPLTg4NTktOSIgIlwwIgotKwkgICAiQ1AyODYwNSIgIlwwIiAiSVNPLTg4NTktMTUiICJcMCI7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKyAgICAgIGNoYXJzZXRfYWxpYXNlcyA9IGNwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gY3A7Ci0rfQotKwotKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsIGFuZCBjYW5vbmljYWxpemUgaXQKLSsgICBpbnRvIG9uZSBvZiB0aGUgY2Fub25pY2FsIG5hbWVzIGxpc3RlZCBpbiBjb25maWcuY2hhcnNldC4KLSsgICBUaGUgcmVzdWx0IG11c3Qgbm90IGJlIGZyZWVkOyBpdCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZC4KLSsgICBJZiB0aGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSByZXN1bHQgaXMgYSBub24tY2Fub25pY2FsCi0rICAgbmFtZS4gICovCi0rCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbmRpZgotK2NvbnN0IGNoYXIgKgotK2xvY2FsZV9jaGFyc2V0ICgpCi0rewotKyAgY29uc3QgY2hhciAqY29kZXNldDsKLSsgIGNvbnN0IGNoYXIgKmFsaWFzZXM7Ci0rCi0rI2lmICEoZGVmaW5lZCBXSU4zMiB8fCBkZWZpbmVkIE9TMikKLSsKLSsjIGlmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAotKwotKyAgLyogTW9zdCBzeXN0ZW1zIHN1cHBvcnQgbmxfbGFuZ2luZm8gKENPREVTRVQpIG5vd2FkYXlzLiAgKi8KLSsgIGNvZGVzZXQgPSBubF9sYW5naW5mbyAoQ09ERVNFVCk7Ci0rCi0rIyBlbHNlCi0rCi0rICAvKiBPbiBvbGQgc3lzdGVtcyB3aGljaCBsYWNrIGl0LCB1c2Ugc2V0bG9jYWxlIG9yIGdldGVudi4gICovCi0rICBjb25zdCBjaGFyICpsb2NhbGUgPSBOVUxMOwotKwotKyAgLyogQnV0IG1vc3Qgb2xkIHN5c3RlbXMgZG9uJ3QgaGF2ZSBhIGNvbXBsZXRlIHNldCBvZiBsb2NhbGVzLiAgU29tZQotKyAgICAgKGxpa2UgU3VuT1MgNCBvciBESkdQUCkgaGF2ZSBvbmx5IHRoZSBDIGxvY2FsZS4gIFRoZXJlZm9yZSB3ZSBkb24ndAotKyAgICAgdXNlIHNldGxvY2FsZSBoZXJlOyBpdCB3b3VsZCByZXR1cm4gIkMiIHdoZW4gaXQgZG9lc24ndCBzdXBwb3J0IHRoZQotKyAgICAgbG9jYWxlIG5hbWUgdGhlIHVzZXIgaGFzIHNldC4gICovCi0rIyAgaWYgSEFWRV9TRVRMT0NBTEUgJiYgMAotKyAgbG9jYWxlID0gc2V0bG9jYWxlIChMQ19DVFlQRSwgTlVMTCk7Ci0rIyAgZW5kaWYKLSsgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIGxvY2FsZSA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsJewotKwkgIGxvY2FsZSA9IGdldGVudiAoIkxDX0NUWVBFIik7Ci0rCSAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKwkgICAgbG9jYWxlID0gZ2V0ZW52ICgiTEFORyIpOwotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIE9uIHNvbWUgb2xkIHN5c3RlbXMsIG9uZSB1c2VkIHRvIHNldCBsb2NhbGUgPSAiaXNvODg1OV8xIi4gT24gb3RoZXJzLAotKyAgICAgeW91IHNldCBpdCB0byAibGFuZ3VhZ2VfQ09VTlRSWS5jaGFyc2V0Ii4gSW4gYW55IGNhc2UsIHdlIHJlc29sdmUgaXQKLSsgICAgIHRocm91Z2ggdGhlIGNoYXJzZXQuYWxpYXMgZmlsZS4gICovCi0rICBjb2Rlc2V0ID0gbG9jYWxlOwotKwotKyMgZW5kaWYKLSsKLSsjZWxpZiBkZWZpbmVkIFdJTjMyCi0rCi0rICBzdGF0aWMgY2hhciBidWZbMiArIDEwICsgMV07Ci0rCi0rICAvKiBXb2UzMiBoYXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGxvY2FsZSdzIGNvZGVwYWdlIGFzIGEgbnVtYmVyLiAgKi8KLSsgIHNwcmludGYgKGJ1ZiwgIkNQJXUiLCBHZXRBQ1AgKCkpOwotKyAgY29kZXNldCA9IGJ1ZjsKLSsKLSsjZWxpZiBkZWZpbmVkIE9TMgotKwotKyAgY29uc3QgY2hhciAqbG9jYWxlOwotKyAgc3RhdGljIGNoYXIgYnVmWzIgKyAxMCArIDFdOwotKyAgVUxPTkcgY3BbM107Ci0rICBVTE9ORyBjcGxlbjsKLSsKLSsgIC8qIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGNvZGVzZXQsIGFzIHNldCBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSwKLSsgICAgIHdpdGggc3RhbmRhcmQgbGFuZ3VhZ2UgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgKi8KLSsgIGxvY2FsZSA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgbG9jYWxlID0gZ2V0ZW52ICgiTENfQ1RZUEUiKTsKLSsgICAgICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rCWxvY2FsZSA9IGdldGVudiAoIkxBTkciKTsKLSsgICAgfQotKyAgaWYgKGxvY2FsZSAhPSBOVUxMICYmIGxvY2FsZVswXSAhPSAnXDAnKQotKyAgICB7Ci0rICAgICAgLyogSWYgdGhlIGxvY2FsZSBuYW1lIGNvbnRhaW5zIGFuIGVuY29kaW5nIGFmdGVyIHRoZSBkb3QsIHJldHVybiBpdC4gICovCi0rICAgICAgY29uc3QgY2hhciAqZG90ID0gc3RyY2hyIChsb2NhbGUsICcuJyk7Ci0rCi0rICAgICAgaWYgKGRvdCAhPSBOVUxMKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqbW9kaWZpZXI7Ci0rCi0rCSAgZG90Kys7Ci0rCSAgLyogTG9vayBmb3IgdGhlIHBvc3NpYmxlIEAuLi4gdHJhaWxlciBhbmQgcmVtb3ZlIGl0LCBpZiBhbnkuICAqLwotKwkgIG1vZGlmaWVyID0gc3RyY2hyIChkb3QsICdAJyk7Ci0rCSAgaWYgKG1vZGlmaWVyID09IE5VTEwpCi0rCSAgICByZXR1cm4gZG90OwotKwkgIGlmIChtb2RpZmllciAtIGRvdCA8IHNpemVvZiAoYnVmKSkKLSsJICAgIHsKLSsJICAgICAgbWVtY3B5IChidWYsIGRvdCwgbW9kaWZpZXIgLSBkb3QpOwotKwkgICAgICBidWYgW21vZGlmaWVyIC0gZG90XSA9ICdcMCc7Ci0rCSAgICAgIHJldHVybiBidWY7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICAvKiBSZXNvbHZlIHRocm91Z2ggdGhlIGNoYXJzZXQuYWxpYXMgZmlsZS4gICovCi0rICAgICAgY29kZXNldCA9IGxvY2FsZTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogT1MvMiBoYXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGxvY2FsZSdzIGNvZGVwYWdlIGFzIGEgbnVtYmVyLiAgKi8KLSsgICAgICBpZiAoRG9zUXVlcnlDcCAoc2l6ZW9mIChjcCksIGNwLCAmY3BsZW4pKQotKwljb2Rlc2V0ID0gIiI7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgc3ByaW50ZiAoYnVmLCAiQ1AldSIsIGNwWzBdKTsKLSsJICBjb2Rlc2V0ID0gYnVmOwotKwl9Ci0rICAgIH0KLSsKLSsjZW5kaWYKLSsKLSsgIGlmIChjb2Rlc2V0ID09IE5VTEwpCi0rICAgIC8qIFRoZSBjYW5vbmljYWwgbmFtZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4gICovCi0rICAgIGNvZGVzZXQgPSAiIjsKLSsKLSsgIC8qIFJlc29sdmUgYWxpYXMuICovCi0rICBmb3IgKGFsaWFzZXMgPSBnZXRfY2hhcnNldF9hbGlhc2VzICgpOwotKyAgICAgICAqYWxpYXNlcyAhPSAnXDAnOwotKyAgICAgICBhbGlhc2VzICs9IHN0cmxlbiAoYWxpYXNlcykgKyAxLCBhbGlhc2VzICs9IHN0cmxlbiAoYWxpYXNlcykgKyAxKQotKyAgICBpZiAoc3RyY21wIChjb2Rlc2V0LCBhbGlhc2VzKSA9PSAwCi0rCXx8IChhbGlhc2VzWzBdID09ICcqJyAmJiBhbGlhc2VzWzFdID09ICdcMCcpKQotKyAgICAgIHsKLSsJY29kZXNldCA9IGFsaWFzZXMgKyBzdHJsZW4gKGFsaWFzZXMpICsgMTsKLSsJYnJlYWs7Ci0rICAgICAgfQotKwotKyAgLyogRG9uJ3QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4gIEdOVSBsaWJjIGFuZCBHTlUgbGliaWNvbnYgaW50ZXJwcmV0Ci0rICAgICB0aGUgZW1wdHkgc3RyaW5nIGFzIGRlbm90aW5nICJ0aGUgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nIiwKLSsgICAgIHRodXMgR05VIGxpYmljb252IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhIHNlY29uZCB0aW1lLiAgKi8KLSsgIGlmIChjb2Rlc2V0WzBdID09ICdcMCcpCi0rICAgIGNvZGVzZXQgPSAiQVNDSUkiOwotKwotKyAgcmV0dXJuIGNvZGVzZXQ7Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsY2hhcnNldC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsY2hhcnNldC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDgzNzI4NjMyIC0wNDAwCi1AQCAtMCwwICsxLDQyIEBACi0rLyogRGV0ZXJtaW5lIGEgY2Fub25pY2FsIG5hbWUgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIENIQVJTRVQgTGlicmFyeS4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfTE9DQUxDSEFSU0VUX0gKLSsjZGVmaW5lIF9MT0NBTENIQVJTRVRfSAotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKwotKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsIGFuZCBjYW5vbmljYWxpemUgaXQKLSsgICBpbnRvIG9uZSBvZiB0aGUgY2Fub25pY2FsIG5hbWVzIGxpc3RlZCBpbiBjb25maWcuY2hhcnNldC4KLSsgICBUaGUgcmVzdWx0IG11c3Qgbm90IGJlIGZyZWVkOyBpdCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZC4KLSsgICBJZiB0aGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSByZXN1bHQgaXMgYSBub24tY2Fub25pY2FsCi0rICAgbmFtZS4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBsb2NhbGVfY2hhcnNldCAodm9pZCk7Ci0rCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKwotKyNlbmRpZiAvKiBfTE9DQUxDSEFSU0VUX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGUuYWxpYXMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxlLmFsaWFzCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDk5NzI2MjAwIC0wNDAwCi1AQCAtMCwwICsxLDc4IEBACi0rIyBMb2NhbGUgbmFtZSBhbGlhcyBkYXRhIGJhc2UuCi0rIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rIyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyMgVVNBLgotKwotKyMgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgb2YKLSsjIHRoZSBYIFdpbmRvdyBTeXN0ZW0sIHdoaWNoIG5vcm1hbGx5IGNhbiBiZSBmb3VuZCBpbgotKyMJL3Vzci9saWIvWDExL2xvY2FsZS9sb2NhbGUuYWxpYXMKLSsjIEEgc2luZ2xlIGxpbmUgY29udGFpbnMgdHdvIGZpZWxkczogYW4gYWxpYXMgYW5kIGEgc3Vic3RpdHV0aW9uIHZhbHVlLgotKyMgQWxsIGVudHJpZXMgYXJlIGNhc2UgaW5kZXBlbmRlbnQuCi0rCi0rIyBOb3RlOiBUaGlzIGZpbGUgaXMgZmFyIGZyb20gYmVpbmcgY29tcGxldGUuICBJZiB5b3UgaGF2ZSBhIHZhbHVlIGZvcgotKyMgeW91ciBvd24gc2l0ZSB3aGljaCB5b3UgdGhpbmsgbWlnaHQgYmUgdXNlZnVsIGZvciBvdGhlcnMgdG9vLCBzaGFyZQotKyMgaXQgd2l0aCB0aGUgcmVzdCBvZiB1cy4gIFNlbmQgaXQgdXNpbmcgdGhlIGBnbGliY2J1Zycgc2NyaXB0IHRvCi0rIyBidWdzQGdudS5vcmcuCi0rCi0rIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6IAotKwotK2Jva21hbAkJbmJfTk8uSVNPLTg4NTktMQotK2Jva23lbAkJbmJfTk8uSVNPLTg4NTktMQotK2NhdGFsYW4JCWNhX0VTLklTTy04ODU5LTEKLStjcm9hdGlhbglocl9IUi5JU08tODg1OS0yCi0rY3plY2gJCWNzX0NaLklTTy04ODU5LTIKLStkYW5pc2ggICAgICAgICAgZGFfREsuSVNPLTg4NTktMQotK2RhbnNrCQlkYV9ESy5JU08tODg1OS0xCi0rZGV1dHNjaAkJZGVfREUuSVNPLTg4NTktMQotK2R1dGNoCQlubF9OTC5JU08tODg1OS0xCi0rZWVzdGkJCWV0X0VFLklTTy04ODU5LTEKLStlc3RvbmlhbglldF9FRS5JU08tODg1OS0xCi0rZmlubmlzaCAgICAgICAgIGZpX0ZJLklTTy04ODU5LTEKLStmcmFu52Fpcwlmcl9GUi5JU08tODg1OS0xCi0rZnJlbmNoCQlmcl9GUi5JU08tODg1OS0xCi0rZ2FsZWdvCQlnbF9FUy5JU08tODg1OS0xCi0rZ2FsaWNpYW4JZ2xfRVMuSVNPLTg4NTktMQotK2dlcm1hbgkJZGVfREUuSVNPLTg4NTktMQotK2dyZWVrICAgICAgICAgICBlbF9HUi5JU08tODg1OS03Ci0raGVicmV3ICAgICAgICAgIGhlX0lMLklTTy04ODU5LTgKLStocnZhdHNraQlocl9IUi5JU08tODg1OS0yCi0raHVuZ2FyaWFuICAgICAgIGh1X0hVLklTTy04ODU5LTIKLStpY2VsYW5kaWMgICAgICAgaXNfSVMuSVNPLTg4NTktMQotK2l0YWxpYW4gICAgICAgICBpdF9JVC5JU08tODg1OS0xCi0ramFwYW5lc2UJamFfSlAuZXVjSlAKLStqYXBhbmVzZS5ldWMJamFfSlAuZXVjSlAKLStqYV9KUAkJamFfSlAuZXVjSlAKLStqYV9KUC51amlzCWphX0pQLmV1Y0pQCi0ramFwYW5lc2Uuc2ppcwlqYV9KUC5TSklTCi0ra29yZWFuCQlrb19LUi5ldWNLUgotK2tvcmVhbi5ldWMgCWtvX0tSLmV1Y0tSCi0ra29fS1IJCWtvX0tSLmV1Y0tSCi0rbGl0aHVhbmlhbiAgICAgIGx0X0xULklTTy04ODU5LTEzCi0rbm9fTk8JCW5iX05PLklTTy04ODU5LTEKLStub19OTy5JU08tODg1OS0xIG5iX05PLklTTy04ODU5LTEKLStub3J3ZWdpYW4gICAgICAgbmJfTk8uSVNPLTg4NTktMQotK255bm9yc2sJCW5uX05PLklTTy04ODU5LTEKLStwb2xpc2ggICAgICAgICAgcGxfUEwuSVNPLTg4NTktMgotK3BvcnR1Z3Vlc2UgICAgICBwdF9QVC5JU08tODg1OS0xCi0rcm9tYW5pYW4gICAgICAgIHJvX1JPLklTTy04ODU5LTIKLStydXNzaWFuICAgICAgICAgcnVfUlUuSVNPLTg4NTktNQotK3Nsb3ZhayAgICAgICAgICBza19TSy5JU08tODg1OS0yCi0rc2xvdmVuZSAgICAgICAgIHNsX1NJLklTTy04ODU5LTIKLStzbG92ZW5pYW4gICAgICAgc2xfU0kuSVNPLTg4NTktMgotK3NwYW5pc2ggICAgICAgICBlc19FUy5JU08tODg1OS0xCi0rc3dlZGlzaCAgICAgICAgIHN2X1NFLklTTy04ODU5LTEKLSt0aGFpCQl0aF9USC5USVMtNjIwCi0rdHVya2lzaCAgICAgICAgIHRyX1RSLklTTy04ODU5LTkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGVhbGlhcy5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41MDU3MjUyODggLTA0MDAKLUBAIC0xLDIwICsxLDI3IEBACi0tLyogSGFuZGxlIGFsaWFzZXMgZm9yIGxvY2FsZSBuYW1lcwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsvKiBIYW5kbGUgYWxpYXNlcyBmb3IgbG9jYWxlIG5hbWVzLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RyaW5nLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIG1lbXBjcHkoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKLSsjZW5kaWYKLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci1AQCAtMjIsNTYgKzI5LDQ1IEBACi0gCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX19fRlNFVExPQ0tJTkcKLSsjIGluY2x1ZGUgPHN0ZGlvX2V4dC5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaWZkZWYgX19HTlVDX18KLSsjIHVuZGVmIGFsbG9jYQotICMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0gIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQotICNlbHNlCi0tIyBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgotKyMgaWZkZWYgX01TQ19WRVIKLSsjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLSAjIGVsc2UKLS0jICBpZmRlZiBfQUlYCi0tICNwcmFnbWEgYWxsb2NhCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0gIyAgZWxzZQotLSMgICBpZm5kZWYgYWxsb2NhCi0rIyAgIGlmZGVmIF9BSVgKLSsgI3ByYWdtYSBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZuZGVmIGFsbG9jYQotIGNoYXIgKmFsbG9jYSAoKTsKLSsjICAgIGVuZGlmCi0gIyAgIGVuZGlmCi0gIyAgZW5kaWYKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbHNlCi0tY2hhciAqZ2V0ZW52ICgpOwotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZWxzZQotLXZvaWQgZnJlZSAoKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBfR05VX1NPVVJDRQotLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCi0tIyBlbmRpZgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rCi0rI2lmIEVOQUJMRV9SRUxPQ0FUQUJMRQotKyMgaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKLSAjZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotLSNlbmRpZgotLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBzdHJjaHIKLS0jICBkZWZpbmUgc3RyY2hyIGluZGV4Ci0tIyBlbmRpZgotKyMgZGVmaW5lIHJlbG9jYXRlKHBhdGhuYW1lKSAocGF0aG5hbWUpCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLS0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLS0KLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0gI2lmZGVmIF9MSUJDCi1AQCAtNzksNDMgKzc1LDQ5IEBACi0gICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotICAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLSAjIGRlZmluZSBzdHJjYXNlY21wIF9fc3RyY2FzZWNtcAotKwotKyMgaWZuZGVmIG1lbXBjcHkKLSsjICBkZWZpbmUgbWVtcGNweSBfX21lbXBjcHkKLSsjIGVuZGlmCi0rIyBkZWZpbmUgSEFWRV9NRU1QQ1BZCTEKLSsjIGRlZmluZSBIQVZFX19fRlNFVExPQ0tJTkcJMQotKwotKy8qIFdlIG5lZWQgbG9ja2luZyBoZXJlIHNpbmNlIHdlIGNhbiBiZSBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgcGxhY2VzLiAgKi8KLSsjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+Ci0rCi0rX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOwotKyNlbmRpZgotKwotKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KLSsjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgotICNlbmRpZgotIAotKy8qIFNvbWUgb3B0aW1pemF0aW9ucyBmb3IgZ2xpYmMuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIEZFT0YoZnApCQlmZW9mX3VubG9ja2VkIChmcCkKLSsjIGRlZmluZSBGR0VUUyhidWYsIG4sIGZwKQlmZ2V0c191bmxvY2tlZCAoYnVmLCBuLCBmcCkKLSsjZWxzZQotKyMgZGVmaW5lIEZFT0YoZnApCQlmZW9mIChmcCkKLSsjIGRlZmluZSBGR0VUUyhidWYsIG4sIGZwKQlmZ2V0cyAoYnVmLCBuLCBmcCkKLSsjZW5kaWYKLSAKLS0vKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLSsvKiBGb3IgdGhvc2UgbG9zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotICAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0gI2lmZGVmIEhBVkVfQUxMT0NBCi0tLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCi0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KLS0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCi0rIyBkZWZpbmUgZnJlZWEocCkgLyogbm90aGluZyAqLwotICNlbHNlCi0tc3RydWN0IGJsb2NrX2xpc3QKLS17Ci0tICB2b2lkICphZGRyZXNzOwotLSAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7Ci0tfTsKLS0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCi0tICBkbyB7CQkJCQkJCQkJICAgICAgXAotLSAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKLS0gICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAotLSAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKLS0gICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCi0tICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCi0tICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCi0tICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAotLSAgICB9CQkJCQkJCQkJICAgICAgXAotLSAgfSB3aGlsZSAoMCkKLS0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKLS0gIGRvIHsJCQkJCQkJCQkgICAgICBcCi0tICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCi0tICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCi0tICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAotLSAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKLS0gICAgfQkJCQkJCQkJCSAgICAgIFwKLS0gIH0gd2hpbGUgKDApCi0tIyB1bmRlZiBhbGxvY2EKLS0jIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCi0tI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCi0rIyBkZWZpbmUgYWxsb2NhKG4pIG1hbGxvYyAobikKLSsjIGRlZmluZSBmcmVlYShwKSBmcmVlIChwKQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIF9MSUJDX1JFRU5UUkFOVCB8fCBIQVZFX0RFQ0xfRkdFVFNfVU5MT0NLRUQKLSsjIHVuZGVmIGZnZXRzCi0rIyBkZWZpbmUgZmdldHMoYnVmLCBsZW4sIHMpIGZnZXRzX3VubG9ja2VkIChidWYsIGxlbiwgcykKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBfTElCQ19SRUVOVFJBTlQgfHwgSEFWRV9ERUNMX0ZFT0ZfVU5MT0NLRUQKLSsjIHVuZGVmIGZlb2YKLSsjIGRlZmluZSBmZW9mKHMpIGZlb2ZfdW5sb2NrZWQgKHMpCi0rI2VuZGlmCi0gCi0gCi0gc3RydWN0IGFsaWFzX21hcAotQEAgLTEyNSwyNiArMTI3LDQxIEBACi0gfTsKLSAKLSAKLS1zdGF0aWMgc3RydWN0IGFsaWFzX21hcCAqbWFwOwotLXN0YXRpYyBzaXplX3Qgbm1hcCA9IDA7Ci0tc3RhdGljIHNpemVfdCBtYXhtYXAgPSAwOwotKyNpZm5kZWYgX0xJQkMKLSsjIGRlZmluZSBsaWJjX2ZyZWVyZXNfcHRyKGRlY2wpIGRlY2wKLSsjZW5kaWYKLSsKLStsaWJjX2ZyZWVyZXNfcHRyIChzdGF0aWMgY2hhciAqc3RyaW5nX3NwYWNlKTsKLStzdGF0aWMgc2l6ZV90IHN0cmluZ19zcGFjZV9hY3Q7Ci0rc3RhdGljIHNpemVfdCBzdHJpbmdfc3BhY2VfbWF4OwotK2xpYmNfZnJlZXJlc19wdHIgKHN0YXRpYyBzdHJ1Y3QgYWxpYXNfbWFwICptYXApOwotK3N0YXRpYyBzaXplX3Qgbm1hcDsKLStzdGF0aWMgc2l6ZV90IG1heG1hcDsKLSAKLSAKLSAvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotLXN0YXRpYyBzaXplX3QgcmVhZF9hbGlhc19maWxlIFBBUkFNUyAoKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZm5hbWVfbGVuKSk7Ci0tc3RhdGljIHZvaWQgZXh0ZW5kX2FsaWFzX3RhYmxlIFBBUkFNUyAoKHZvaWQpKTsKLS1zdGF0aWMgaW50IGFsaWFzX2NvbXBhcmUgUEFSQU1TICgoY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMSwKLS0JCQkJICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKSk7Ci0rc3RhdGljIHNpemVfdCByZWFkX2FsaWFzX2ZpbGUgKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZm5hbWVfbGVuKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rc3RhdGljIGludCBleHRlbmRfYWxpYXNfdGFibGUgKHZvaWQpOwotK3N0YXRpYyBpbnQgYWxpYXNfY29tcGFyZSAoY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMSwKLSsJCQkgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDIpOwotIAotIAotIGNvbnN0IGNoYXIgKgotLV9ubF9leHBhbmRfYWxpYXMgKG5hbWUpCi0tICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqbmFtZSkKLSB7Ci0tICBzdGF0aWMgY29uc3QgY2hhciAqbG9jYWxlX2FsaWFzX3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKLSsgIHN0YXRpYyBjb25zdCBjaGFyICpsb2NhbGVfYWxpYXNfcGF0aDsKLSAgIHN0cnVjdCBhbGlhc19tYXAgKnJldHZhbDsKLSsgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IE5VTEw7Ci0gICBzaXplX3QgYWRkZWQ7Ci0gCi0rI2lmZGVmIF9MSUJDCi0rICBfX2xpYmNfbG9ja19sb2NrIChsb2NrKTsKLSsjZW5kaWYKLSsKLSsgIGlmIChsb2NhbGVfYWxpYXNfcGF0aCA9PSBOVUxMKQotKyAgICBsb2NhbGVfYWxpYXNfcGF0aCA9IExPQ0FMRV9BTElBU19QQVRIOwotKwotICAgZG8KLSAgICAgewotICAgICAgIHN0cnVjdCBhbGlhc19tYXAgaXRlbTsKLUBAIC0xNTQsMTUgKzE3MSwxOCBAQAotICAgICAgIGlmIChubWFwID4gMCkKLSAJcmV0dmFsID0gKHN0cnVjdCBhbGlhc19tYXAgKikgYnNlYXJjaCAoJml0ZW0sIG1hcCwgbm1hcCwKLSAJCQkJCSAgICAgICBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAotLQkJCQkJICAgICAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwKLS0JCQkJCQkJCSBjb25zdCB2b2lkICopKQotKwkJCQkJICAgICAgIChpbnQgKCopIChjb25zdCB2b2lkICosCi0rCQkJCQkJCSBjb25zdCB2b2lkICopCi0gCQkJCQkJKSBhbGlhc19jb21wYXJlKTsKLSAgICAgICBlbHNlCi0gCXJldHZhbCA9IE5VTEw7Ci0gCi0gICAgICAgLyogV2UgcmVhbGx5IGZvdW5kIGFuIGFsaWFzLiAgUmV0dXJuIHRoZSB2YWx1ZS4gICovCi0gICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQotLQlyZXR1cm4gcmV0dmFsLT52YWx1ZTsKLSsJewotKwkgIHJlc3VsdCA9IHJldHZhbC0+dmFsdWU7Ci0rCSAgYnJlYWs7Ci0rCX0KLSAKLSAgICAgICAvKiBQZXJoYXBzIHdlIGNhbiBmaW5kIGFub3RoZXIgYWxpYXMgZmlsZS4gICovCi0gICAgICAgYWRkZWQgPSAwOwotQEAgLTE3MCwxMSArMTkwLDEyIEBACi0gCXsKLSAJICBjb25zdCBjaGFyICpzdGFydDsKLSAKLS0JICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gPT0gJzonKQotKwkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSA9PSBQQVRIX1NFUEFSQVRPUikKLSAJICAgICsrbG9jYWxlX2FsaWFzX3BhdGg7Ci0gCSAgc3RhcnQgPSBsb2NhbGVfYWxpYXNfcGF0aDsKLSAKLS0JICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJyAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnOicpCi0rCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcKLSsJCSAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSBQQVRIX1NFUEFSQVRPUikKLSAJICAgICsrbG9jYWxlX2FsaWFzX3BhdGg7Ci0gCi0gCSAgaWYgKHN0YXJ0IDwgbG9jYWxlX2FsaWFzX3BhdGgpCi1AQCAtMTgzLDc4ICsyMDQsODcgQEAKLSAgICAgfQotICAgd2hpbGUgKGFkZGVkICE9IDApOwotIAotLSAgcmV0dXJuIE5VTEw7Ci0rI2lmZGVmIF9MSUJDCi0rICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKyNlbmRpZgotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0gCi0gc3RhdGljIHNpemVfdAotLXJlYWRfYWxpYXNfZmlsZSAoZm5hbWUsIGZuYW1lX2xlbikKLS0gICAgIGNvbnN0IGNoYXIgKmZuYW1lOwotLSAgICAgaW50IGZuYW1lX2xlbjsKLStpbnRlcm5hbF9mdW5jdGlvbgotK3JlYWRfYWxpYXNfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUsIGludCBmbmFtZV9sZW4pCi0gewotLSNpZm5kZWYgSEFWRV9BTExPQ0EKLS0gIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKLS0jZW5kaWYKLSAgIEZJTEUgKmZwOwotICAgY2hhciAqZnVsbF9mbmFtZTsKLSAgIHNpemVfdCBhZGRlZDsKLSAgIHN0YXRpYyBjb25zdCBjaGFyIGFsaWFzZmlsZVtdID0gIi9sb2NhbGUuYWxpYXMiOwotIAotICAgZnVsbF9mbmFtZSA9IChjaGFyICopIGFsbG9jYSAoZm5hbWVfbGVuICsgc2l6ZW9mIGFsaWFzZmlsZSk7Ci0tICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGZ1bGxfZm5hbWUpOwotKyNpZmRlZiBIQVZFX01FTVBDUFkKLSsgIG1lbXBjcHkgKG1lbXBjcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pLAotKwkgICBhbGlhc2ZpbGUsIHNpemVvZiBhbGlhc2ZpbGUpOwotKyNlbHNlCi0gICBtZW1jcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pOwotICAgbWVtY3B5ICgmZnVsbF9mbmFtZVtmbmFtZV9sZW5dLCBhbGlhc2ZpbGUsIHNpemVvZiBhbGlhc2ZpbGUpOwotKyNlbmRpZgotIAotLSAgZnAgPSBmb3BlbiAoZnVsbF9mbmFtZSwgInIiKTsKLSsgIGZwID0gZm9wZW4gKHJlbG9jYXRlIChmdWxsX2ZuYW1lKSwgInIiKTsKLSsgIGZyZWVhIChmdWxsX2ZuYW1lKTsKLSAgIGlmIChmcCA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLSAgICAgIHJldHVybiAwOwotLSAgICB9Ci0rICAgIHJldHVybiAwOwotKwotKyNpZmRlZiBIQVZFX19fRlNFVExPQ0tJTkcKLSsgIC8qIE5vIHRocmVhZHMgcHJlc2VudC4gICovCi0rICBfX2ZzZXRsb2NraW5nIChmcCwgRlNFVExPQ0tJTkdfQllDQUxMRVIpOwotKyNlbmRpZgotIAotICAgYWRkZWQgPSAwOwotLSAgd2hpbGUgKCFmZW9mIChmcCkpCi0rICB3aGlsZSAoIUZFT0YgKGZwKSkKLSAgICAgewotICAgICAgIC8qIEl0IGlzIGEgcmVhc29uYWJsZSBhcHByb2FjaCB0byB1c2UgYSBmaXggYnVmZmVyIGhlcmUgYmVjYXVzZQotIAkgYSkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZmlyc3QgdHdvIGZpZWxkcwotIAkgYikgdGhlc2UgZmllbGRzIG11c3QgYmUgdXNhYmxlIGFzIGZpbGUgbmFtZXMgYW5kIHNvIG11c3Qgbm90Ci0gCSAgICBiZSB0aGF0IGxvbmcKLS0gICAgICAgKi8KLS0gICAgICBjaGFyIGJ1ZltCVUZTSVpdOwotKwkgV2UgYXZvaWQgYSBtdWx0aS1raWxvYnl0ZSBidWZmZXIgaGVyZSBzaW5jZSB0aGlzIHdvdWxkIHVzZSB1cAotKwkgc3RhY2sgc3BhY2Ugd2hpY2ggd2UgbWlnaHQgbm90IGhhdmUgaWYgdGhlIHByb2dyYW0gcmFuIG91dCBvZgotKwkgbWVtb3J5LiAgKi8KLSsgICAgICBjaGFyIGJ1Zls0MDBdOwotICAgICAgIGNoYXIgKmFsaWFzOwotICAgICAgIGNoYXIgKnZhbHVlOwotICAgICAgIGNoYXIgKmNwOwotIAotLSAgICAgIGlmIChmZ2V0cyAoYnVmLCBCVUZTSVosIGZwKSA9PSBOVUxMKQotKyAgICAgIGlmIChGR0VUUyAoYnVmLCBzaXplb2YgYnVmLCBmcCkgPT0gTlVMTCkKLSAJLyogRU9GIHJlYWNoZWQuICAqLwotIAlicmVhazsKLSAKLSAgICAgICBjcCA9IGJ1ZjsKLSAgICAgICAvKiBJZ25vcmUgbGVhZGluZyB3aGl0ZSBzcGFjZS4gICovCi0tICAgICAgd2hpbGUgKGlzc3BhY2UgKGNwWzBdKSkKLSsgICAgICB3aGlsZSAoaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJKytjcDsKLSAKLSAgICAgICAvKiBBIGxlYWRpbmcgJyMnIHNpZ25hbHMgYSBjb21tZW50IGxpbmUuICAqLwotICAgICAgIGlmIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcjJykKLSAJewotIAkgIGFsaWFzID0gY3ArKzsKLS0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoY3BbMF0pKQotKwkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlICgodW5zaWduZWQgY2hhcikgY3BbMF0pKQotIAkgICAgKytjcDsKLSAJICAvKiBUZXJtaW5hdGUgYWxpYXMgbmFtZS4gICovCi0gCSAgaWYgKGNwWzBdICE9ICdcMCcpCi0gCSAgICAqY3ArKyA9ICdcMCc7Ci0gCi0gCSAgLyogTm93IGxvb2sgZm9yIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHZhbHVlLiAgKi8KLS0JICB3aGlsZSAoaXNzcGFjZSAoY3BbMF0pKQotKwkgIHdoaWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgY3BbMF0pKQotIAkgICAgKytjcDsKLSAKLSAJICBpZiAoY3BbMF0gIT0gJ1wwJykKLSAJICAgIHsKLS0JICAgICAgY2hhciAqdHA7Ci0tCSAgICAgIHNpemVfdCBsZW47Ci0rCSAgICAgIHNpemVfdCBhbGlhc19sZW47Ci0rCSAgICAgIHNpemVfdCB2YWx1ZV9sZW47Ci0gCi0gCSAgICAgIHZhbHVlID0gY3ArKzsKLS0JICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKGNwWzBdKSkKLSsJICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCi0gCQkrK2NwOwotIAkgICAgICAvKiBUZXJtaW5hdGUgdmFsdWUuICAqLwotIAkgICAgICBpZiAoY3BbMF0gPT0gJ1xuJykKLUBAIC0yNjksMjggKzI5OSw0NCBAQAotIAkJKmNwKysgPSAnXDAnOwotIAotIAkgICAgICBpZiAobm1hcCA+PSBtYXhtYXApCi0tCQlleHRlbmRfYWxpYXNfdGFibGUgKCk7Ci0tCi0tCSAgICAgIC8qIFdlIGNhbm5vdCBkZXBlbmQgb24gc3RyZHVwIGF2YWlsYWJsZSBpbiB0aGUgbGliYy4gIFNpZ2ghICAqLwotLQkgICAgICBsZW4gPSBzdHJsZW4gKGFsaWFzKSArIDE7Ci0tCSAgICAgIHRwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLQkgICAgICBpZiAodHAgPT0gTlVMTCkKLS0JCXsKLS0JCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotKwkJaWYgKF9fYnVpbHRpbl9leHBlY3QgKGV4dGVuZF9hbGlhc190YWJsZSAoKSwgMCkpCi0gCQkgIHJldHVybiBhZGRlZDsKLS0JCX0KLS0JICAgICAgbWVtY3B5ICh0cCwgYWxpYXMsIGxlbik7Ci0tCSAgICAgIG1hcFtubWFwXS5hbGlhcyA9IHRwOwotIAotLQkgICAgICBsZW4gPSBzdHJsZW4gKHZhbHVlKSArIDE7Ci0tCSAgICAgIHRwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLQkgICAgICBpZiAodHAgPT0gTlVMTCkKLSsJICAgICAgYWxpYXNfbGVuID0gc3RybGVuIChhbGlhcykgKyAxOwotKwkgICAgICB2YWx1ZV9sZW4gPSBzdHJsZW4gKHZhbHVlKSArIDE7Ci0rCi0rCSAgICAgIGlmIChzdHJpbmdfc3BhY2VfYWN0ICsgYWxpYXNfbGVuICsgdmFsdWVfbGVuID4gc3RyaW5nX3NwYWNlX21heCkKLSAJCXsKLS0JCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkJICByZXR1cm4gYWRkZWQ7Ci0rCQkgIC8qIEluY3JlYXNlIHNpemUgb2YgbWVtb3J5IHBvb2wuICAqLwotKwkJICBzaXplX3QgbmV3X3NpemUgPSAoc3RyaW5nX3NwYWNlX21heAotKwkJCQkgICAgICsgKGFsaWFzX2xlbiArIHZhbHVlX2xlbiA+IDEwMjQKLSsJCQkJCT8gYWxpYXNfbGVuICsgdmFsdWVfbGVuIDogMTAyNCkpOwotKwkJICBjaGFyICpuZXdfcG9vbCA9IChjaGFyICopIHJlYWxsb2MgKHN0cmluZ19zcGFjZSwgbmV3X3NpemUpOwotKwkJICBpZiAobmV3X3Bvb2wgPT0gTlVMTCkKLSsJCSAgICByZXR1cm4gYWRkZWQ7Ci0rCi0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChzdHJpbmdfc3BhY2UgIT0gbmV3X3Bvb2wsIDApKQotKwkJICAgIHsKLSsJCSAgICAgIHNpemVfdCBpOwotKwotKwkJICAgICAgZm9yIChpID0gMDsgaSA8IG5tYXA7IGkrKykKLSsJCQl7Ci0rCQkJICBtYXBbaV0uYWxpYXMgKz0gbmV3X3Bvb2wgLSBzdHJpbmdfc3BhY2U7Ci0rCQkJICBtYXBbaV0udmFsdWUgKz0gbmV3X3Bvb2wgLSBzdHJpbmdfc3BhY2U7Ci0rCQkJfQotKwkJICAgIH0KLSsKLSsJCSAgc3RyaW5nX3NwYWNlID0gbmV3X3Bvb2w7Ci0rCQkgIHN0cmluZ19zcGFjZV9tYXggPSBuZXdfc2l6ZTsKLSAJCX0KLS0JICAgICAgbWVtY3B5ICh0cCwgdmFsdWUsIGxlbik7Ci0tCSAgICAgIG1hcFtubWFwXS52YWx1ZSA9IHRwOwotKwotKwkgICAgICBtYXBbbm1hcF0uYWxpYXMgPSBtZW1jcHkgKCZzdHJpbmdfc3BhY2Vbc3RyaW5nX3NwYWNlX2FjdF0sCi0rCQkJCQlhbGlhcywgYWxpYXNfbGVuKTsKLSsJICAgICAgc3RyaW5nX3NwYWNlX2FjdCArPSBhbGlhc19sZW47Ci0rCi0rCSAgICAgIG1hcFtubWFwXS52YWx1ZSA9IG1lbWNweSAoJnN0cmluZ19zcGFjZVtzdHJpbmdfc3BhY2VfYWN0XSwKLSsJCQkJCXZhbHVlLCB2YWx1ZV9sZW4pOwotKwkgICAgICBzdHJpbmdfc3BhY2VfYWN0ICs9IHZhbHVlX2xlbjsKLSAKLSAJICAgICAgKytubWFwOwotIAkgICAgICArK2FkZGVkOwotQEAgLTI5OSwxNCArMzQ1LDExIEBACi0gCi0gICAgICAgLyogUG9zc2libHkgbm90IHRoZSB3aG9sZSBsaW5lIGZpdHMgaW50byB0aGUgYnVmZmVyLiAgSWdub3JlCi0gCSB0aGUgcmVzdCBvZiB0aGUgbGluZS4gICovCi0tICAgICAgd2hpbGUgKHN0cmNociAoY3AsICdcbicpID09IE5VTEwpCi0tCXsKLS0JICBjcCA9IGJ1ZjsKLS0JICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKLS0JICAgIC8qIE1ha2Ugc3VyZSB0aGUgaW5uZXIgbG9vcCB3aWxsIGJlIGxlZnQuICBUaGUgb3V0ZXIgbG9vcAotLQkgICAgICAgd2lsbCBleGl0IGF0IHRoZSBgZmVvZicgdGVzdC4gICovCi0tCSAgICAqY3AgPSAnXG4nOwotLQl9Ci0rICAgICAgd2hpbGUgKHN0cmNociAoYnVmLCAnXG4nKSA9PSBOVUxMKQotKwlpZiAoRkdFVFMgKGJ1Ziwgc2l6ZW9mIGJ1ZiwgZnApID09IE5VTEwpCi0rCSAgLyogTWFrZSBzdXJlIHRoZSBpbm5lciBsb29wIHdpbGwgYmUgbGVmdC4gIFRoZSBvdXRlciBsb29wCi0rCSAgICAgd2lsbCBleGl0IGF0IHRoZSBgZmVvZicgdGVzdC4gICovCi0rCSAgYnJlYWs7Ci0gICAgIH0KLSAKLSAgIC8qIFNob3VsZCB3ZSB0ZXN0IGZvciBmZXJyb3IoKT8gIEkgdGhpbmsgd2UgaGF2ZSB0byBzaWxlbnRseSBpZ25vcmUKLUBAIC0zMTUsNDAgKzM1OCwzMyBAQAotIAotICAgaWYgKGFkZGVkID4gMCkKLSAgICAgcXNvcnQgKG1hcCwgbm1hcCwgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKLS0JICAgKGludCAoKikgUEFSQU1TICgoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSkgYWxpYXNfY29tcGFyZSk7Ci0rCSAgIChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIGFsaWFzX2NvbXBhcmUpOwotIAotLSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotICAgcmV0dXJuIGFkZGVkOwotIH0KLSAKLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyBpbnQKLSBleHRlbmRfYWxpYXNfdGFibGUgKCkKLSB7Ci0gICBzaXplX3QgbmV3X3NpemU7Ci0gICBzdHJ1Y3QgYWxpYXNfbWFwICpuZXdfbWFwOwotIAotICAgbmV3X3NpemUgPSBtYXhtYXAgPT0gMCA/IDEwMCA6IDIgKiBtYXhtYXA7Ci0tICBuZXdfbWFwID0gKHN0cnVjdCBhbGlhc19tYXAgKikgbWFsbG9jIChuZXdfc2l6ZQotLQkJCQkJICogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSk7Ci0rICBuZXdfbWFwID0gKHN0cnVjdCBhbGlhc19tYXAgKikgcmVhbGxvYyAobWFwLCAobmV3X3NpemUKLSsJCQkJCQkqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpKTsKLSAgIGlmIChuZXdfbWFwID09IE5VTEwpCi0gICAgIC8qIFNpbXBseSBkb24ndCBleHRlbmQ6IHdlIGRvbid0IGhhdmUgYW55IG1vcmUgY29yZS4gICovCi0tICAgIHJldHVybjsKLS0KLS0gIG1lbWNweSAobmV3X21hcCwgbWFwLCBubWFwICogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSk7Ci0tCi0tICBpZiAobWF4bWFwICE9IDApCi0tICAgIGZyZWUgKG1hcCk7Ci0rICAgIHJldHVybiAtMTsKLSAKLSAgIG1hcCA9IG5ld19tYXA7Ci0gICBtYXhtYXAgPSBuZXdfc2l6ZTsKLSsgIHJldHVybiAwOwotIH0KLSAKLSAKLSBzdGF0aWMgaW50Ci0tYWxpYXNfY29tcGFyZSAobWFwMSwgbWFwMikKLS0gICAgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDE7Ci0tICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyOwotK2FsaWFzX2NvbXBhcmUgKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDIpCi0gewotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJDQVNFQ01QCi0gICByZXR1cm4gc3RyY2FzZWNtcCAobWFwMS0+YWxpYXMsIG1hcDItPmFsaWFzKTsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGVuYW1lLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxlbmFtZS5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTEwNzI0NTI4IC0wNDAwCi1AQCAtMCwwICsxLDExNDIgQEAKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgbG9jYWxlLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251Lm9yZz4sIDE5OTUuICAqLwotKy8qIFdpbjMyIGNvZGUgd3JpdHRlbiBieSBUb3IgTGlsbHF2aXN0IDx0bWxAaWtpLmZpPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rIyB1bmRlZiBXSU4zMiAgIC8qIGF2b2lkIHdhcm5pbmcgb24gbWluZ3czMiAqLwotKyMgZGVmaW5lIFdJTjMyCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFdJTjMyCi0rIyBkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotKyMgaW5jbHVkZSA8d2luZG93cy5oPgotKy8qIExpc3Qgb2YgbGFuZ3VhZ2UgY29kZXMsIHNvcnRlZCBieSB2YWx1ZToKLSsgICAweDAxIExBTkdfQVJBQklDCi0rICAgMHgwMiBMQU5HX0JVTEdBUklBTgotKyAgIDB4MDMgTEFOR19DQVRBTEFOCi0rICAgMHgwNCBMQU5HX0NISU5FU0UKLSsgICAweDA1IExBTkdfQ1pFQ0gKLSsgICAweDA2IExBTkdfREFOSVNICi0rICAgMHgwNyBMQU5HX0dFUk1BTgotKyAgIDB4MDggTEFOR19HUkVFSwotKyAgIDB4MDkgTEFOR19FTkdMSVNICi0rICAgMHgwYSBMQU5HX1NQQU5JU0gKLSsgICAweDBiIExBTkdfRklOTklTSAotKyAgIDB4MGMgTEFOR19GUkVOQ0gKLSsgICAweDBkIExBTkdfSEVCUkVXCi0rICAgMHgwZSBMQU5HX0hVTkdBUklBTgotKyAgIDB4MGYgTEFOR19JQ0VMQU5ESUMKLSsgICAweDEwIExBTkdfSVRBTElBTgotKyAgIDB4MTEgTEFOR19KQVBBTkVTRQotKyAgIDB4MTIgTEFOR19LT1JFQU4KLSsgICAweDEzIExBTkdfRFVUQ0gKLSsgICAweDE0IExBTkdfTk9SV0VHSUFOCi0rICAgMHgxNSBMQU5HX1BPTElTSAotKyAgIDB4MTYgTEFOR19QT1JUVUdVRVNFCi0rICAgMHgxNyBMQU5HX1JIQUVUT19ST01BTkNFCi0rICAgMHgxOCBMQU5HX1JPTUFOSUFOCi0rICAgMHgxOSBMQU5HX1JVU1NJQU4KLSsgICAweDFhIExBTkdfQ1JPQVRJQU4gPT0gTEFOR19TRVJCSUFOCi0rICAgMHgxYiBMQU5HX1NMT1ZBSwotKyAgIDB4MWMgTEFOR19BTEJBTklBTgotKyAgIDB4MWQgTEFOR19TV0VESVNICi0rICAgMHgxZSBMQU5HX1RIQUkKLSsgICAweDFmIExBTkdfVFVSS0lTSAotKyAgIDB4MjAgTEFOR19VUkRVCi0rICAgMHgyMSBMQU5HX0lORE9ORVNJQU4KLSsgICAweDIyIExBTkdfVUtSQUlOSUFOCi0rICAgMHgyMyBMQU5HX0JFTEFSVVNJQU4KLSsgICAweDI0IExBTkdfU0xPVkVOSUFOCi0rICAgMHgyNSBMQU5HX0VTVE9OSUFOCi0rICAgMHgyNiBMQU5HX0xBVFZJQU4KLSsgICAweDI3IExBTkdfTElUSFVBTklBTgotKyAgIDB4MjggTEFOR19UQUpJSwotKyAgIDB4MjkgTEFOR19GQVJTSQotKyAgIDB4MmEgTEFOR19WSUVUTkFNRVNFCi0rICAgMHgyYiBMQU5HX0FSTUVOSUFOCi0rICAgMHgyYyBMQU5HX0FaRVJJCi0rICAgMHgyZCBMQU5HX0JBU1FVRQotKyAgIDB4MmUgTEFOR19TT1JCSUFOCi0rICAgMHgyZiBMQU5HX01BQ0VET05JQU4KLSsgICAweDMwIExBTkdfU1VUVQotKyAgIDB4MzEgTEFOR19UU09OR0EKLSsgICAweDMyIExBTkdfVFNXQU5BCi0rICAgMHgzMyBMQU5HX1ZFTkRBCi0rICAgMHgzNCBMQU5HX1hIT1NBCi0rICAgMHgzNSBMQU5HX1pVTFUKLSsgICAweDM2IExBTkdfQUZSSUtBQU5TCi0rICAgMHgzNyBMQU5HX0dFT1JHSUFOCi0rICAgMHgzOCBMQU5HX0ZBRVJPRVNFCi0rICAgMHgzOSBMQU5HX0hJTkRJCi0rICAgMHgzYSBMQU5HX01BTFRFU0UKLSsgICAweDNiIExBTkdfU0FBTUkKLSsgICAweDNjIExBTkdfR0FFTElDCi0rICAgMHgzZCBMQU5HX1lJRERJU0gKLSsgICAweDNlIExBTkdfTUFMQVkKLSsgICAweDNmIExBTkdfS0FaQUsKLSsgICAweDQwIExBTkdfS1lSR1laCi0rICAgMHg0MSBMQU5HX1NXQUhJTEkKLSsgICAweDQyIExBTkdfVFVSS01FTgotKyAgIDB4NDMgTEFOR19VWkJFSwotKyAgIDB4NDQgTEFOR19UQVRBUgotKyAgIDB4NDUgTEFOR19CRU5HQUxJCi0rICAgMHg0NiBMQU5HX1BVTkpBQkkKLSsgICAweDQ3IExBTkdfR1VKQVJBVEkKLSsgICAweDQ4IExBTkdfT1JJWUEKLSsgICAweDQ5IExBTkdfVEFNSUwKLSsgICAweDRhIExBTkdfVEVMVUdVCi0rICAgMHg0YiBMQU5HX0tBTk5BREEKLSsgICAweDRjIExBTkdfTUFMQVlBTEFNCi0rICAgMHg0ZCBMQU5HX0FTU0FNRVNFCi0rICAgMHg0ZSBMQU5HX01BUkFUSEkKLSsgICAweDRmIExBTkdfU0FOU0tSSVQKLSsgICAweDUwIExBTkdfTU9OR09MSUFOCi0rICAgMHg1MSBMQU5HX1RJQkVUQU4KLSsgICAweDUyIExBTkdfV0VMU0gKLSsgICAweDUzIExBTkdfQ0FNQk9ESUFOCi0rICAgMHg1NCBMQU5HX0xBTwotKyAgIDB4NTUgTEFOR19CVVJNRVNFCi0rICAgMHg1NiBMQU5HX0dBTElDSUFOCi0rICAgMHg1NyBMQU5HX0tPTktBTkkKLSsgICAweDU4IExBTkdfTUFOSVBVUkkKLSsgICAweDU5IExBTkdfU0lOREhJCi0rICAgMHg1YSBMQU5HX1NZUklBQwotKyAgIDB4NWIgTEFOR19TSU5IQUxFU0UKLSsgICAweDVjIExBTkdfQ0hFUk9LRUUKLSsgICAweDVkIExBTkdfSU5VS1RJVFVUCi0rICAgMHg1ZSBMQU5HX0FNSEFSSUMKLSsgICAweDVmIExBTkdfVEFNQVpJR0hUCi0rICAgMHg2MCBMQU5HX0tBU0hNSVJJCi0rICAgMHg2MSBMQU5HX05FUEFMSQotKyAgIDB4NjIgTEFOR19GUklTSUFOCi0rICAgMHg2MyBMQU5HX1BBU0hUTwotKyAgIDB4NjQgTEFOR19UQUdBTE9HCi0rICAgMHg2NSBMQU5HX0RJVkVISQotKyAgIDB4NjYgTEFOR19FRE8KLSsgICAweDY3IExBTkdfRlVMRlVMREUKLSsgICAweDY4IExBTkdfSEFVU0EKLSsgICAweDY5IExBTkdfSUJJQklPCi0rICAgMHg2YSBMQU5HX1lPUlVCQQotKyAgIDB4NzAgTEFOR19JR0JPCi0rICAgMHg3MSBMQU5HX0tBTlVSSQotKyAgIDB4NzIgTEFOR19PUk9NTwotKyAgIDB4NzMgTEFOR19USUdSSU5ZQQotKyAgIDB4NzQgTEFOR19HVUFSQU5JCi0rICAgMHg3NSBMQU5HX0hBV0FJSUFOCi0rICAgMHg3NiBMQU5HX0xBVElOCi0rICAgMHg3NyBMQU5HX1NPTUFMSQotKyAgIDB4NzggTEFOR19ZSQotKyAgIDB4NzkgTEFOR19QQVBJQU1FTlRVCi0rKi8KLSsvKiBNaW5ndyBoZWFkZXJzIGRvbid0IGhhdmUgbGF0ZXN0IGxhbmd1YWdlIGFuZCBzdWJsYW5ndWFnZSBjb2Rlcy4gICovCi0rIyBpZm5kZWYgTEFOR19BRlJJS0FBTlMKLSsjIGRlZmluZSBMQU5HX0FGUklLQUFOUyAweDM2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQUxCQU5JQU4KLSsjIGRlZmluZSBMQU5HX0FMQkFOSUFOIDB4MWMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BTUhBUklDCi0rIyBkZWZpbmUgTEFOR19BTUhBUklDIDB4NWUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BUkFCSUMKLSsjIGRlZmluZSBMQU5HX0FSQUJJQyAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVJNRU5JQU4KLSsjIGRlZmluZSBMQU5HX0FSTUVOSUFOIDB4MmIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BU1NBTUVTRQotKyMgZGVmaW5lIExBTkdfQVNTQU1FU0UgMHg0ZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FaRVJJCi0rIyBkZWZpbmUgTEFOR19BWkVSSSAweDJjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQkFTUVVFCi0rIyBkZWZpbmUgTEFOR19CQVNRVUUgMHgyZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0JFTEFSVVNJQU4KLSsjIGRlZmluZSBMQU5HX0JFTEFSVVNJQU4gMHgyMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0JFTkdBTEkKLSsjIGRlZmluZSBMQU5HX0JFTkdBTEkgMHg0NQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0JVUk1FU0UKLSsjIGRlZmluZSBMQU5HX0JVUk1FU0UgMHg1NQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0NBTUJPRElBTgotKyMgZGVmaW5lIExBTkdfQ0FNQk9ESUFOIDB4NTMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19DQVRBTEFOCi0rIyBkZWZpbmUgTEFOR19DQVRBTEFOIDB4MDMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19DSEVST0tFRQotKyMgZGVmaW5lIExBTkdfQ0hFUk9LRUUgMHg1YwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0RJVkVISQotKyMgZGVmaW5lIExBTkdfRElWRUhJIDB4NjUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19FRE8KLSsjIGRlZmluZSBMQU5HX0VETyAweDY2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRVNUT05JQU4KLSsjIGRlZmluZSBMQU5HX0VTVE9OSUFOIDB4MjUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19GQUVST0VTRQotKyMgZGVmaW5lIExBTkdfRkFFUk9FU0UgMHgzOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZBUlNJCi0rIyBkZWZpbmUgTEFOR19GQVJTSSAweDI5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRlJJU0lBTgotKyMgZGVmaW5lIExBTkdfRlJJU0lBTiAweDYyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRlVMRlVMREUKLSsjIGRlZmluZSBMQU5HX0ZVTEZVTERFIDB4NjcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HQUVMSUMKLSsjIGRlZmluZSBMQU5HX0dBRUxJQyAweDNjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR0FMSUNJQU4KLSsjIGRlZmluZSBMQU5HX0dBTElDSUFOIDB4NTYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HRU9SR0lBTgotKyMgZGVmaW5lIExBTkdfR0VPUkdJQU4gMHgzNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dVQVJBTkkKLSsjIGRlZmluZSBMQU5HX0dVQVJBTkkgMHg3NAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dVSkFSQVRJCi0rIyBkZWZpbmUgTEFOR19HVUpBUkFUSSAweDQ3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSEFVU0EKLSsjIGRlZmluZSBMQU5HX0hBVVNBIDB4NjgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19IQVdBSUlBTgotKyMgZGVmaW5lIExBTkdfSEFXQUlJQU4gMHg3NQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0hFQlJFVwotKyMgZGVmaW5lIExBTkdfSEVCUkVXIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ISU5ESQotKyMgZGVmaW5lIExBTkdfSElOREkgMHgzOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0lCSUJJTwotKyMgZGVmaW5lIExBTkdfSUJJQklPIDB4NjkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19JR0JPCi0rIyBkZWZpbmUgTEFOR19JR0JPIDB4NzAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19JTkRPTkVTSUFOCi0rIyBkZWZpbmUgTEFOR19JTkRPTkVTSUFOIDB4MjEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19JTlVLVElUVVQKLSsjIGRlZmluZSBMQU5HX0lOVUtUSVRVVCAweDVkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS0FOTkFEQQotKyMgZGVmaW5lIExBTkdfS0FOTkFEQSAweDRiCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS0FOVVJJCi0rIyBkZWZpbmUgTEFOR19LQU5VUkkgMHg3MQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBU0hNSVJJCi0rIyBkZWZpbmUgTEFOR19LQVNITUlSSSAweDYwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS0FaQUsKLSsjIGRlZmluZSBMQU5HX0tBWkFLIDB4M2YKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LT05LQU5JCi0rIyBkZWZpbmUgTEFOR19LT05LQU5JIDB4NTcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LWVJHWVoKLSsjIGRlZmluZSBMQU5HX0tZUkdZWiAweDQwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTEFPCi0rIyBkZWZpbmUgTEFOR19MQU8gMHg1NAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xBVElOCi0rIyBkZWZpbmUgTEFOR19MQVRJTiAweDc2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTEFUVklBTgotKyMgZGVmaW5lIExBTkdfTEFUVklBTiAweDI2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTElUSFVBTklBTgotKyMgZGVmaW5lIExBTkdfTElUSFVBTklBTiAweDI3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFDRURPTklBTgotKyMgZGVmaW5lIExBTkdfTUFDRURPTklBTiAweDJmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFMQVkKLSsjIGRlZmluZSBMQU5HX01BTEFZIDB4M2UKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQUxBWUFMQU0KLSsjIGRlZmluZSBMQU5HX01BTEFZQUxBTSAweDRjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFMVEVTRQotKyMgZGVmaW5lIExBTkdfTUFMVEVTRSAweDNhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFOSVBVUkkKLSsjIGRlZmluZSBMQU5HX01BTklQVVJJIDB4NTgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQVJBVEhJCi0rIyBkZWZpbmUgTEFOR19NQVJBVEhJIDB4NGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NT05HT0xJQU4KLSsjIGRlZmluZSBMQU5HX01PTkdPTElBTiAweDUwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTkVQQUxJCi0rIyBkZWZpbmUgTEFOR19ORVBBTEkgMHg2MQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX09SSVlBCi0rIyBkZWZpbmUgTEFOR19PUklZQSAweDQ4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfT1JPTU8KLSsjIGRlZmluZSBMQU5HX09ST01PIDB4NzIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19QQVBJQU1FTlRVCi0rIyBkZWZpbmUgTEFOR19QQVBJQU1FTlRVIDB4NzkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19QQVNIVE8KLSsjIGRlZmluZSBMQU5HX1BBU0hUTyAweDYzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUFVOSkFCSQotKyMgZGVmaW5lIExBTkdfUFVOSkFCSSAweDQ2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUkhBRVRPX1JPTUFOQ0UKLSsjIGRlZmluZSBMQU5HX1JIQUVUT19ST01BTkNFIDB4MTcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TQUFNSQotKyMgZGVmaW5lIExBTkdfU0FBTUkgMHgzYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NBTlNLUklUCi0rIyBkZWZpbmUgTEFOR19TQU5TS1JJVCAweDRmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0VSQklBTgotKyMgZGVmaW5lIExBTkdfU0VSQklBTiAweDFhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0lOREhJCi0rIyBkZWZpbmUgTEFOR19TSU5ESEkgMHg1OQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NJTkhBTEVTRQotKyMgZGVmaW5lIExBTkdfU0lOSEFMRVNFIDB4NWIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TTE9WQUsKLSsjIGRlZmluZSBMQU5HX1NMT1ZBSyAweDFiCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU09NQUxJCi0rIyBkZWZpbmUgTEFOR19TT01BTEkgMHg3NwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NPUkJJQU4KLSsjIGRlZmluZSBMQU5HX1NPUkJJQU4gMHgyZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NVVFUKLSsjIGRlZmluZSBMQU5HX1NVVFUgMHgzMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NXQUhJTEkKLSsjIGRlZmluZSBMQU5HX1NXQUhJTEkgMHg0MQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NZUklBQwotKyMgZGVmaW5lIExBTkdfU1lSSUFDIDB4NWEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQUdBTE9HCi0rIyBkZWZpbmUgTEFOR19UQUdBTE9HIDB4NjQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQUpJSwotKyMgZGVmaW5lIExBTkdfVEFKSUsgMHgyOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RBTUFaSUdIVAotKyMgZGVmaW5lIExBTkdfVEFNQVpJR0hUIDB4NWYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQU1JTAotKyMgZGVmaW5lIExBTkdfVEFNSUwgMHg0OQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RBVEFSCi0rIyBkZWZpbmUgTEFOR19UQVRBUiAweDQ0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEVMVUdVCi0rIyBkZWZpbmUgTEFOR19URUxVR1UgMHg0YQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RIQUkKLSsjIGRlZmluZSBMQU5HX1RIQUkgMHgxZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RJQkVUQU4KLSsjIGRlZmluZSBMQU5HX1RJQkVUQU4gMHg1MQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RJR1JJTllBCi0rIyBkZWZpbmUgTEFOR19USUdSSU5ZQSAweDczCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVFNPTkdBCi0rIyBkZWZpbmUgTEFOR19UU09OR0EgMHgzMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RTV0FOQQotKyMgZGVmaW5lIExBTkdfVFNXQU5BIDB4MzIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UVVJLTUVOCi0rIyBkZWZpbmUgTEFOR19UVVJLTUVOIDB4NDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19VS1JBSU5JQU4KLSsjIGRlZmluZSBMQU5HX1VLUkFJTklBTiAweDIyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVVJEVQotKyMgZGVmaW5lIExBTkdfVVJEVSAweDIwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVVpCRUsKLSsjIGRlZmluZSBMQU5HX1VaQkVLIDB4NDMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19WRU5EQQotKyMgZGVmaW5lIExBTkdfVkVOREEgMHgzMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1ZJRVROQU1FU0UKLSsjIGRlZmluZSBMQU5HX1ZJRVROQU1FU0UgMHgyYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1dFTFNICi0rIyBkZWZpbmUgTEFOR19XRUxTSCAweDUyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWEhPU0EKLSsjIGRlZmluZSBMQU5HX1hIT1NBIDB4MzQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ZSQotKyMgZGVmaW5lIExBTkdfWUkgMHg3OAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1lJRERJU0gKLSsjIGRlZmluZSBMQU5HX1lJRERJU0ggMHgzZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1lPUlVCQQotKyMgZGVmaW5lIExBTkdfWU9SVUJBIDB4NmEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19aVUxVCi0rIyBkZWZpbmUgTEFOR19aVUxVIDB4MzUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfU0FVRElfQVJBQklBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfU0FVRElfQVJBQklBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfSVJBUQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0lSQVEgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19FR1lQVAotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0VHWVBUIDB4MDMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfTElCWUEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19MSUJZQSAweDA0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0FMR0VSSUEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19BTEdFUklBIDB4MDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfTU9ST0NDTwotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX01PUk9DQ08gMHgwNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19UVU5JU0lBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfVFVOSVNJQSAweDA3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX09NQU4KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19PTUFOIDB4MDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfWUVNRU4KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19ZRU1FTiAweDA5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1NZUklBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfU1lSSUEgMHgwYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19KT1JEQU4KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19KT1JEQU4gMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19MRUJBTk9OCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfTEVCQU5PTiAweDBjCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0tVV0FJVAotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0tVV0FJVCAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1VBRQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1VBRSAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0JBSFJBSU4KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19CQUhSQUlOIDB4MGYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfUUFUQVIKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19RQVRBUiAweDEwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVpFUklfTEFUSU4KLSsjIGRlZmluZSBTVUJMQU5HX0FaRVJJX0xBVElOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BWkVSSV9DWVJJTExJQwotKyMgZGVmaW5lIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0JFTkdBTElfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX0JFTkdBTElfSU5ESUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0JFTkdBTElfQkFOR0xBREVTSAotKyMgZGVmaW5lIFNVQkxBTkdfQkVOR0FMSV9CQU5HTEFERVNIIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19DSElORVNFX01BQ0FVCi0rIyBkZWZpbmUgU1VCTEFOR19DSElORVNFX01BQ0FVIDB4MDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1NPVVRIX0FGUklDQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9TT1VUSF9BRlJJQ0EgMHgwNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSkFNQUlDQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9KQU1BSUNBIDB4MDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0NBUklCQkVBTgotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9DQVJJQkJFQU4gMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfQkVMSVpFCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0JFTElaRSAweDBhCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9UUklOSURBRAotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9UUklOSURBRCAweDBiCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9aSU1CQUJXRQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9aSU1CQUJXRSAweDBjCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9QSElMSVBQSU5FUwotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9QSElMSVBQSU5FUyAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9JTkRPTkVTSUEKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSU5ET05FU0lBIDB4MGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0hPTkdLT05HCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0hPTkdLT05HIDB4MGYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0lORElBIDB4MTAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX01BTEFZU0lBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX01BTEFZU0lBIDB4MTEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1NJTkdBUE9SRQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9TSU5HQVBPUkUgMHgxMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9MVVhFTUJPVVJHCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRyAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX01PTkFDTwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX01PTkFDTyAweDA2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX1dFU1RJTkRJRVMKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9XRVNUSU5ESUVTIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfUkVVTklPTgotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX1JFVU5JT04gMHgwOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9DT05HTwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0NPTkdPIDB4MDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfU0VORUdBTAotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX1NFTkVHQUwgMHgwYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTgotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0NBTUVST09OIDB4MGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkUKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DT1RFRElWT0lSRSAweDBjCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX01BTEkKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NQUxJIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTU9ST0NDTwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX01PUk9DQ08gMHgwZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9IQUlUSQotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0hBSVRJIDB4MGYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19HRVJNQU5fTFVYRU1CT1VSRwotKyMgZGVmaW5lIFNVQkxBTkdfR0VSTUFOX0xVWEVNQk9VUkcgMHgwNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0dFUk1BTl9MSUVDSFRFTlNURUlOCi0rIyBkZWZpbmUgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTiAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfS0FTSE1JUklfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX0tBU0hNSVJJX0lORElBIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19NQUxBWV9NQUxBWVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfTUFMQVlfTUFMQVlTSUEgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNCi0rIyBkZWZpbmUgU1VCTEFOR19NQUxBWV9CUlVORUlfREFSVVNTQUxBTSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfTkVQQUxJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19ORVBBTElfSU5ESUEgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1BVTkpBQklfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX1BVTkpBQklfSU5ESUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1BVTkpBQklfUEFLSVNUQU4KLSsjIGRlZmluZSBTVUJMQU5HX1BVTkpBQklfUEFLSVNUQU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1JPTUFOSUFOX1JPTUFOSUEKLSsjIGRlZmluZSBTVUJMQU5HX1JPTUFOSUFOX1JPTUFOSUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1JPTUFOSUFOX01PTERPVkEKLSsjIGRlZmluZSBTVUJMQU5HX1JPTUFOSUFOX01PTERPVkEgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NFUkJJQU5fTEFUSU4KLSsjIGRlZmluZSBTVUJMQU5HX1NFUkJJQU5fTEFUSU4gMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NFUkJJQU5fQ1lSSUxMSUMKLSsjIGRlZmluZSBTVUJMQU5HX1NFUkJJQU5fQ1lSSUxMSUMgMHgwMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NJTkRISV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfU0lOREhJX0lORElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TSU5ESElfUEFLSVNUQU4KLSsjIGRlZmluZSBTVUJMQU5HX1NJTkRISV9QQUtJU1RBTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9HVUFURU1BTEEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfR1VBVEVNQUxBIDB4MDQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0NPU1RBX1JJQ0EKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQ09TVEFfUklDQSAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QQU5BTUEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfUEFOQU1BIDB4MDYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0RPTUlOSUNBTl9SRVBVQkxJQwotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9ET01JTklDQU5fUkVQVUJMSUMgMHgwNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfVkVORVpVRUxBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1ZFTkVaVUVMQSAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9DT0xPTUJJQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9DT0xPTUJJQSAweDA5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QRVJVCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BFUlUgMHgwYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQVJHRU5USU5BCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0FSR0VOVElOQSAweDBiCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0VDVUFET1IgMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQ0hJTEUKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQ0hJTEUgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9VUlVHVUFZIDB4MGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BBUkFHVUFZCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BBUkFHVUFZIDB4MGYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0JPTElWSUEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQk9MSVZJQSAweDEwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9FTF9TQUxWQURPUgotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9FTF9TQUxWQURPUiAweDExCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9IT05EVVJBUwotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9IT05EVVJBUyAweDEyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9OSUNBUkFHVUEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfTklDQVJBR1VBIDB4MTMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BVRVJUT19SSUNPCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BVRVJUT19SSUNPIDB4MTQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQKLSsjIGRlZmluZSBTVUJMQU5HX1NXRURJU0hfRklOTEFORCAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVEFNQVpJR0hUX0FSQUJJQwotKyMgZGVmaW5lIFNVQkxBTkdfVEFNQVpJR0hUX0FSQUJJQyAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19UQU1BWklHSFRfTEFUSU4gMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RJR1JJTllBX0VUSElPUElBCi0rIyBkZWZpbmUgU1VCTEFOR19USUdSSU5ZQV9FVEhJT1BJQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVElHUklOWUFfRVJJVFJFQQotKyMgZGVmaW5lIFNVQkxBTkdfVElHUklOWUFfRVJJVFJFQSAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVVJEVV9QQUtJU1RBTgotKyMgZGVmaW5lIFNVQkxBTkdfVVJEVV9QQUtJU1RBTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVVJEVV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfVVJEVV9JTkRJQSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVVpCRUtfTEFUSU4KLSsjIGRlZmluZSBTVUJMQU5HX1VaQkVLX0xBVElOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19VWkJFS19DWVJJTExJQwotKyMgZGVmaW5lIFNVQkxBTkdfVVpCRUtfQ1lSSUxMSUMgMHgwMgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiAnc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgotKyAgICJEaXJlY3RzICdzZXRsb2NhbGUoKScgdG8gcXVlcnkgJ2NhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50Ci0rICAgIHNldHRpbmcgb2YgJ2xvY2FsJy4iCi0rICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBOZWl0aGVyIGRvIFNVU1YyIGFuZAotKyAgIElTTyBDIDk5LiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZCBzeXN0ZW1zIChlLmcuCi0rICAgdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLwotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IChkZWZpbmVkIF9fR05VX0xJQlJBUllfXyAmJiBfX0dOVV9MSUJSQVJZX18gPj0gMikKLSsjIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCi0rI2VuZGlmCi0rCi0rLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGxvY2FsZSdzIG5hbWUsIGFuZCBjYW5vbmljYWxpemUgaXQgaW50byBYUEcgc3ludGF4Ci0rICAgICBsYW5ndWFnZVtfdGVycml0b3J5Wy5jb2Rlc2V0XV1bQG1vZGlmaWVyXQotKyAgIFRoZSBjb2Rlc2V0IHBhcnQgaW4gdGhlIHJlc3VsdCBpcyBub3QgcmVsaWFibGU7IHRoZSBsb2NhbGVfY2hhcnNldCgpCi0rICAgc2hvdWxkIGJlIHVzZWQgZm9yIGNvZGVzZXQgaW5mb3JtYXRpb24gaW5zdGVhZC4KLSsgICBUaGUgcmVzdWx0IG11c3Qgbm90IGJlIGZyZWVkOyBpdCBpcyBzdGF0aWNhbGx5IGFsbG9jYXRlZC4gICovCi0rCi0rY29uc3QgY2hhciAqCi0rX25sX2xvY2FsZV9uYW1lIChpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkKLSt7Ci0rICBjb25zdCBjaGFyICpyZXR2YWw7Ci0rCi0rI2lmbmRlZiBXSU4zMgotKwotKyAgLyogVXNlIHRoZSBQT1NJWCBtZXRob2RzIG9mIGxvb2tpbmcgdG8gJ0xDX0FMTCcsICdMQ194eHgnLCBhbmQgJ0xBTkcnLgotKyAgICAgT24gc29tZSBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlICdzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCi0rIyBpZiBkZWZpbmVkIEhBVkVfU0VUTE9DQUxFICYmIGRlZmluZWQgSEFWRV9MQ19NRVNTQUdFUyAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKLSsgIHJldHZhbCA9IHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpOwotKyMgZWxzZQotKyAgLyogU2V0dGluZyBvZiBMQ19BTEwgb3ZlcndyaXRlcyBhbGwgb3RoZXIuICAqLwotKyAgcmV0dmFsID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0rICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICAvKiBOZXh0IGNvbWVzIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIGNhdGVnb3J5LiAgKi8KLSsgICAgICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7Ci0rICAgICAgaWYgKHJldHZhbCA9PSBOVUxMIHx8IHJldHZhbFswXSA9PSAnXDAnKQotKwl7Ci0rCSAgLyogTGFzdCBwb3NzaWJpbGl0eSBpcyB0aGUgTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCi0rCSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFORyIpOwotKwkgIGlmIChyZXR2YWwgPT0gTlVMTCB8fCByZXR2YWxbMF0gPT0gJ1wwJykKLSsJICAgIC8qIFdlIHVzZSBDIGFzIHRoZSBkZWZhdWx0IGRvbWFpbi4gIFBPU0lYIHNheXMgdGhpcyBpcwotKwkgICAgICAgaW1wbGVtZW50YXRpb24gZGVmaW5lZC4gICovCi0rCSAgICByZXR2YWwgPSAiQyI7Ci0rCX0KLSsgICAgfQotKyMgZW5kaWYKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rCi0rI2Vsc2UgLyogV0lOMzIgKi8KLSsKLSsgIC8qIFJldHVybiBhbiBYUEcgc3R5bGUgbG9jYWxlIG5hbWUgbGFuZ3VhZ2VbX3RlcnJpdG9yeV1bQG1vZGlmaWVyXS4KLSsgICAgIERvbid0IGV2ZW4gYm90aGVyIGRldGVybWluaW5nIHRoZSBjb2Rlc2V0OyBpdCdzIG5vdCB1c2VmdWwgaW4gdGhpcwotKyAgICAgY29udGV4dCwgYmVjYXVzZSBtZXNzYWdlIGNhdGFsb2dzIGFyZSBub3Qgc3BlY2lmaWMgdG8gYSBzaW5nbGUKLSsgICAgIGNvZGVzZXQuICAqLwotKwotKyAgTENJRCBsY2lkOwotKyAgTEFOR0lEIGxhbmdpZDsKLSsgIGludCBwcmltYXJ5LCBzdWI7Ci0rCi0rICAvKiBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHN5c3RlbSBzZXR0aW5ncyB0aHJvdWdoIGVudmlyb25tZW50Ci0rICAgICB2YXJpYWJsZXMsIGFzIG9uIFBPU0lYIHN5c3RlbXMuICAqLwotKyAgcmV0dmFsID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0rICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7Ci0rICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7Ci0rICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rCi0rICAvKiBVc2UgbmF0aXZlIFdpbjMyIEFQSSBsb2NhbGUgSUQuICAqLwotKyAgbGNpZCA9IEdldFRocmVhZExvY2FsZSAoKTsKLSsKLSsgIC8qIFN0cmlwIG9mZiB0aGUgc29ydGluZyBydWxlcywga2VlcCBvbmx5IHRoZSBsYW5ndWFnZSBwYXJ0LiAgKi8KLSsgIGxhbmdpZCA9IExBTkdJREZST01MQ0lEIChsY2lkKTsKLSsKLSsgIC8qIFNwbGl0IGludG8gbGFuZ3VhZ2UgYW5kIHRlcnJpdG9yeSBwYXJ0LiAgKi8KLSsgIHByaW1hcnkgPSBQUklNQVJZTEFOR0lEIChsYW5naWQpOwotKyAgc3ViID0gU1VCTEFOR0lEIChsYW5naWQpOwotKwotKyAgLyogRGlzcGF0Y2ggb24gbGFuZ3VhZ2UuCi0rICAgICBTZWUgYWxzbyBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvb25saW5lZGF0L2xhbmd1YWdlcy5odG1sIC4KLSsgICAgIEZvciBkZXRhaWxzIGFib3V0IGxhbmd1YWdlcywgc2VlIGh0dHA6Ly93d3cuZXRobm9sb2d1ZS5jb20vIC4gICovCi0rICBzd2l0Y2ggKHByaW1hcnkpCi0rICAgIHsKLSsgICAgY2FzZSBMQU5HX0FGUklLQUFOUzogcmV0dXJuICJhZl9aQSI7Ci0rICAgIGNhc2UgTEFOR19BTEJBTklBTjogcmV0dXJuICJzcV9BTCI7Ci0rICAgIGNhc2UgTEFOR19BTUhBUklDOiByZXR1cm4gImFtX0VUIjsKLSsgICAgY2FzZSBMQU5HX0FSQUJJQzoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQTogcmV0dXJuICJhcl9TQSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfSVJBUTogcmV0dXJuICJhcl9JUSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfRUdZUFQ6IHJldHVybiAiYXJfRUciOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0xJQllBOiByZXR1cm4gImFyX0xZIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19BTEdFUklBOiByZXR1cm4gImFyX0RaIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPOiByZXR1cm4gImFyX01BIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19UVU5JU0lBOiByZXR1cm4gImFyX1ROIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19PTUFOOiByZXR1cm4gImFyX09NIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19ZRU1FTjogcmV0dXJuICJhcl9ZRSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfU1lSSUE6IHJldHVybiAiYXJfU1kiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0pPUkRBTjogcmV0dXJuICJhcl9KTyI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfTEVCQU5PTjogcmV0dXJuICJhcl9MQiI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfS1VXQUlUOiByZXR1cm4gImFyX0tXIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19VQUU6IHJldHVybiAiYXJfQUUiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0JBSFJBSU46IHJldHVybiAiYXJfQkgiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1FBVEFSOiByZXR1cm4gImFyX1FBIjsKLSsJfQotKyAgICAgIHJldHVybiAiYXIiOwotKyAgICBjYXNlIExBTkdfQVJNRU5JQU46IHJldHVybiAiaHlfQU0iOwotKyAgICBjYXNlIExBTkdfQVNTQU1FU0U6IHJldHVybiAiYXNfSU4iOwotKyAgICBjYXNlIExBTkdfQVpFUkk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gQXplcmJhaWphbmkgbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rCWNhc2UgU1VCTEFOR19BWkVSSV9MQVRJTjogcmV0dXJuICJhel9BWkBsYXRpbiI7Ci0rCWNhc2UgU1VCTEFOR19BWkVSSV9DWVJJTExJQzogcmV0dXJuICJhel9BWkBjeXJpbGxpYyI7Ci0rCX0KLSsgICAgICByZXR1cm4gImF6IjsKLSsgICAgY2FzZSBMQU5HX0JBU1FVRToKLSsgICAgICByZXR1cm4gImV1IjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAiZXVfRVMiIG9yICJldV9GUiIuICAqLwotKyAgICBjYXNlIExBTkdfQkVMQVJVU0lBTjogcmV0dXJuICJiZV9CWSI7Ci0rICAgIGNhc2UgTEFOR19CRU5HQUxJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19CRU5HQUxJX0lORElBOiByZXR1cm4gImJuX0lOIjsKLSsJY2FzZSBTVUJMQU5HX0JFTkdBTElfQkFOR0xBREVTSDogcmV0dXJuICJibl9CRCI7Ci0rCX0KLSsgICAgICByZXR1cm4gImJuIjsKLSsgICAgY2FzZSBMQU5HX0JVTEdBUklBTjogcmV0dXJuICJiZ19CRyI7Ci0rICAgIGNhc2UgTEFOR19CVVJNRVNFOiByZXR1cm4gIm15X01NIjsKLSsgICAgY2FzZSBMQU5HX0NBTUJPRElBTjogcmV0dXJuICJrbV9LSCI7Ci0rICAgIGNhc2UgTEFOR19DQVRBTEFOOiByZXR1cm4gImNhX0VTIjsKLSsgICAgY2FzZSBMQU5HX0NIRVJPS0VFOiByZXR1cm4gImNocl9VUyI7Ci0rICAgIGNhc2UgTEFOR19DSElORVNFOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX1RSQURJVElPTkFMOiByZXR1cm4gInpoX1RXIjsKLSsJY2FzZSBTVUJMQU5HX0NISU5FU0VfU0lNUExJRklFRDogcmV0dXJuICJ6aF9DTiI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX0hPTkdLT05HOiByZXR1cm4gInpoX0hLIjsKLSsJY2FzZSBTVUJMQU5HX0NISU5FU0VfU0lOR0FQT1JFOiByZXR1cm4gInpoX1NHIjsKLSsJY2FzZSBTVUJMQU5HX0NISU5FU0VfTUFDQVU6IHJldHVybiAiemhfTU8iOwotKwl9Ci0rICAgICAgcmV0dXJuICJ6aCI7Ci0rICAgIGNhc2UgTEFOR19DUk9BVElBTjoJCS8qIExBTkdfQ1JPQVRJQU4gPT0gTEFOR19TRVJCSUFOCi0rCQkJCSAqIFdoYXQgdXNlZCB0byBiZSBjYWxsZWQgU2VyYm8tQ3JvYXRpYW4KLSsJCQkJICogc2hvdWxkIHJlYWxseSBub3cgYmUgdHdvIHNlcGFyYXRlCi0rCQkJCSAqIGxhbmd1YWdlcyBiZWNhdXNlIG9mIHBvbGl0aWNhbCByZWFzb25zLgotKwkJCQkgKiAoU2F5cyB0bWwsIHdobyBrbm93cyBub3RoaW5nIGFib3V0IFNlcmJpYW4KLSsJCQkJICogb3IgQ3JvYXRpYW4uKQotKwkJCQkgKiAoSSBjYW4gZmVlbCB0aG9zZSBmbGFtZXMgY29taW5nIGFscmVhZHkuKQotKwkJCQkgKi8KLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJocl9IUiI7Ci0rCWNhc2UgU1VCTEFOR19TRVJCSUFOX0xBVElOOiByZXR1cm4gInNyX0NTIjsKLSsJY2FzZSBTVUJMQU5HX1NFUkJJQU5fQ1lSSUxMSUM6IHJldHVybiAic3JfQ1NAY3lyaWxsaWMiOwotKwl9Ci0rICAgICAgcmV0dXJuICJociI7Ci0rICAgIGNhc2UgTEFOR19DWkVDSDogcmV0dXJuICJjc19DWiI7Ci0rICAgIGNhc2UgTEFOR19EQU5JU0g6IHJldHVybiAiZGFfREsiOwotKyAgICBjYXNlIExBTkdfRElWRUhJOiByZXR1cm4gImR2X01WIjsKLSsgICAgY2FzZSBMQU5HX0RVVENIOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19EVVRDSDogcmV0dXJuICJubF9OTCI7Ci0rCWNhc2UgU1VCTEFOR19EVVRDSF9CRUxHSUFOOiAvKiBGTEVNSVNILCBWTEFBTVMgKi8gcmV0dXJuICJubF9CRSI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm5sIjsKLSsgICAgY2FzZSBMQU5HX0VETzogcmV0dXJuICJiaW5fTkciOwotKyAgICBjYXNlIExBTkdfRU5HTElTSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwkvKiBTVUJMQU5HX0VOR0xJU0hfVVMgPT0gU1VCTEFOR19ERUZBVUxULiBIZWguIEkgdGhvdWdodAotKwkgKiBFbmdsaXNoIHdhcyB0aGUgbGFuZ3VhZ2Ugc3Bva2VuIGluIEVuZ2xhbmQuCi0rCSAqIE9oIHdlbGwuCi0rCSAqLwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9VUzogcmV0dXJuICJlbl9VUyI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1VLOiByZXR1cm4gImVuX0dCIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQVVTOiByZXR1cm4gImVuX0FVIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQ0FOOiByZXR1cm4gImVuX0NBIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfTlo6IHJldHVybiAiZW5fTloiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9FSVJFOiByZXR1cm4gImVuX0lFIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBOiByZXR1cm4gImVuX1pBIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfSkFNQUlDQTogcmV0dXJuICJlbl9KTSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0NBUklCQkVBTjogcmV0dXJuICJlbl9HRCI7IC8qIEdyZW5hZGE/ICovCi0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0JFTElaRTogcmV0dXJuICJlbl9CWiI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1RSSU5JREFEOiByZXR1cm4gImVuX1RUIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0U6IHJldHVybiAiZW5fWlciOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9QSElMSVBQSU5FUzogcmV0dXJuICJlbl9QSCI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQTogcmV0dXJuICJlbl9JRCI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0hPTkdLT05HOiByZXR1cm4gImVuX0hLIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfSU5ESUE6IHJldHVybiAiZW5fSU4iOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQTogcmV0dXJuICJlbl9NWSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1NJTkdBUE9SRTogcmV0dXJuICJlbl9TRyI7Ci0rCX0KLSsgICAgICByZXR1cm4gImVuIjsKLSsgICAgY2FzZSBMQU5HX0VTVE9OSUFOOiByZXR1cm4gImV0X0VFIjsKLSsgICAgY2FzZSBMQU5HX0ZBRVJPRVNFOiByZXR1cm4gImZvX0ZPIjsKLSsgICAgY2FzZSBMQU5HX0ZBUlNJOiByZXR1cm4gImZhX0lSIjsKLSsgICAgY2FzZSBMQU5HX0ZJTk5JU0g6IHJldHVybiAiZmlfRkkiOwotKyAgICBjYXNlIExBTkdfRlJFTkNIOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0g6IHJldHVybiAiZnJfRlIiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0JFTEdJQU46IC8qIFdBTExPT04gKi8gcmV0dXJuICJmcl9CRSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ0FOQURJQU46IHJldHVybiAiZnJfQ0EiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX1NXSVNTOiByZXR1cm4gImZyX0NIIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9MVVhFTUJPVVJHOiByZXR1cm4gImZyX0xVIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9NT05BQ086IHJldHVybiAiZnJfTUMiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX1dFU1RJTkRJRVM6IHJldHVybiAiZnIiOyAvKiBDYXJpYmJlYW4/ICovCi0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfUkVVTklPTjogcmV0dXJuICJmcl9SRSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ09OR086IHJldHVybiAiZnJfQ0ciOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX1NFTkVHQUw6IHJldHVybiAiZnJfU04iOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NBTUVST09OOiByZXR1cm4gImZyX0NNIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DT1RFRElWT0lSRTogcmV0dXJuICJmcl9DSSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTUFMSTogcmV0dXJuICJmcl9NTCI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTU9ST0NDTzogcmV0dXJuICJmcl9NQSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfSEFJVEk6IHJldHVybiAiZnJfSFQiOwotKwl9Ci0rICAgICAgcmV0dXJuICJmciI7Ci0rICAgIGNhc2UgTEFOR19GUklTSUFOOiByZXR1cm4gImZ5X05MIjsKLSsgICAgY2FzZSBMQU5HX0ZVTEZVTERFOgotKyAgICAgIC8qIFNwb2tlbiBpbiBOaWdlcmlhLCBHdWluZWEsIFNlbmVnYWwsIE1hbGksIE5pZ2VyLCBDYW1lcm9vbiwgQmVuaW4uICovCi0rICAgICAgcmV0dXJuICJmZl9ORyI7Ci0rICAgIGNhc2UgTEFOR19HQUVMSUM6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSAweDAxOiAvKiBTQ09UVElTSCAqLyByZXR1cm4gImdkX0dCIjsKLSsJY2FzZSAweDAyOiAvKiBJUklTSCAqLyByZXR1cm4gImdhX0lFIjsKLSsJfQotKyAgICAgIHJldHVybiAiQyI7Ci0rICAgIGNhc2UgTEFOR19HQUxJQ0lBTjogcmV0dXJuICJnbF9FUyI7Ci0rICAgIGNhc2UgTEFOR19HRU9SR0lBTjogcmV0dXJuICJrYV9HRSI7Ci0rICAgIGNhc2UgTEFOR19HRVJNQU46Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTjogcmV0dXJuICJkZV9ERSI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fU1dJU1M6IHJldHVybiAiZGVfQ0giOwotKwljYXNlIFNVQkxBTkdfR0VSTUFOX0FVU1RSSUFOOiByZXR1cm4gImRlX0FUIjsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHOiByZXR1cm4gImRlX0xVIjsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTl9MSUVDSFRFTlNURUlOOiByZXR1cm4gImRlX0xJIjsKLSsJfQotKyAgICAgIHJldHVybiAiZGUiOwotKyAgICBjYXNlIExBTkdfR1JFRUs6IHJldHVybiAiZWxfR1IiOwotKyAgICBjYXNlIExBTkdfR1VBUkFOSTogcmV0dXJuICJnbl9QWSI7Ci0rICAgIGNhc2UgTEFOR19HVUpBUkFUSTogcmV0dXJuICJndV9JTiI7Ci0rICAgIGNhc2UgTEFOR19IQVVTQTogcmV0dXJuICJoYV9ORyI7Ci0rICAgIGNhc2UgTEFOR19IQVdBSUlBTjoKLSsgICAgICAvKiBGSVhNRTogRG8gdGhleSBtZWFuIEhhd2FpaWFuICgiaGF3X1VTIiwgMTAwMCBzcGVha2VycykKLSsJIG9yIEhhd2FpaSBDcmVvbGUgRW5nbGlzaCAoImNwZV9VUyIsIDYwMDAwMCBzcGVha2Vycyk/ICAqLwotKyAgICAgIHJldHVybiAiY3BlX1VTIjsKLSsgICAgY2FzZSBMQU5HX0hFQlJFVzogcmV0dXJuICJoZV9JTCI7Ci0rICAgIGNhc2UgTEFOR19ISU5ESTogcmV0dXJuICJoaV9JTiI7Ci0rICAgIGNhc2UgTEFOR19IVU5HQVJJQU46IHJldHVybiAiaHVfSFUiOwotKyAgICBjYXNlIExBTkdfSUJJQklPOiByZXR1cm4gIm5pY19ORyI7Ci0rICAgIGNhc2UgTEFOR19JQ0VMQU5ESUM6IHJldHVybiAiaXNfSVMiOwotKyAgICBjYXNlIExBTkdfSUdCTzogcmV0dXJuICJpZ19ORyI7Ci0rICAgIGNhc2UgTEFOR19JTkRPTkVTSUFOOiByZXR1cm4gImlkX0lEIjsKLSsgICAgY2FzZSBMQU5HX0lOVUtUSVRVVDogcmV0dXJuICJpdV9DQSI7Ci0rICAgIGNhc2UgTEFOR19JVEFMSUFOOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19JVEFMSUFOOiByZXR1cm4gIml0X0lUIjsKLSsJY2FzZSBTVUJMQU5HX0lUQUxJQU5fU1dJU1M6IHJldHVybiAiaXRfQ0giOwotKwl9Ci0rICAgICAgcmV0dXJuICJpdCI7Ci0rICAgIGNhc2UgTEFOR19KQVBBTkVTRTogcmV0dXJuICJqYV9KUCI7Ci0rICAgIGNhc2UgTEFOR19LQU5OQURBOiByZXR1cm4gImtuX0lOIjsKLSsgICAgY2FzZSBMQU5HX0tBTlVSSTogcmV0dXJuICJrcl9ORyI7Ci0rICAgIGNhc2UgTEFOR19LQVNITUlSSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJrc19QSyI7Ci0rCWNhc2UgU1VCTEFOR19LQVNITUlSSV9JTkRJQTogcmV0dXJuICJrc19JTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gImtzIjsKLSsgICAgY2FzZSBMQU5HX0tBWkFLOiByZXR1cm4gImtrX0taIjsKLSsgICAgY2FzZSBMQU5HX0tPTktBTkk6Ci0rICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsgICAgICByZXR1cm4gImtva19JTiI7Ci0rICAgIGNhc2UgTEFOR19LT1JFQU46IHJldHVybiAia29fS1IiOwotKyAgICBjYXNlIExBTkdfS1lSR1laOiByZXR1cm4gImt5X0tHIjsKLSsgICAgY2FzZSBMQU5HX0xBTzogcmV0dXJuICJsb19MQSI7Ci0rICAgIGNhc2UgTEFOR19MQVRJTjogcmV0dXJuICJsYV9WQSI7Ci0rICAgIGNhc2UgTEFOR19MQVRWSUFOOiByZXR1cm4gImx2X0xWIjsKLSsgICAgY2FzZSBMQU5HX0xJVEhVQU5JQU46IHJldHVybiAibHRfTFQiOwotKyAgICBjYXNlIExBTkdfTUFDRURPTklBTjogcmV0dXJuICJta19NSyI7Ci0rICAgIGNhc2UgTEFOR19NQUxBWToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfTUFMQVlfTUFMQVlTSUE6IHJldHVybiAibXNfTVkiOwotKwljYXNlIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU06IHJldHVybiAibXNfQk4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJtcyI7Ci0rICAgIGNhc2UgTEFOR19NQUxBWUFMQU06IHJldHVybiAibWxfSU4iOwotKyAgICBjYXNlIExBTkdfTUFMVEVTRTogcmV0dXJuICJtdF9NVCI7Ci0rICAgIGNhc2UgTEFOR19NQU5JUFVSSToKLSsgICAgICAvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBzdWNoIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKyAgICAgIHJldHVybiAibW5pX0lOIjsKLSsgICAgY2FzZSBMQU5HX01BUkFUSEk6IHJldHVybiAibXJfSU4iOwotKyAgICBjYXNlIExBTkdfTU9OR09MSUFOOgotKyAgICAgIHJldHVybiAibW4iOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJtbl9DTiIgb3IgIm1uX01OIi4gICovCi0rICAgIGNhc2UgTEFOR19ORVBBTEk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAibmVfTlAiOwotKwljYXNlIFNVQkxBTkdfTkVQQUxJX0lORElBOiByZXR1cm4gIm5lX0lOIjsKLSsJfQotKyAgICAgIHJldHVybiAibmUiOwotKyAgICBjYXNlIExBTkdfTk9SV0VHSUFOOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMOiByZXR1cm4gIm5vX05PIjsKLSsJY2FzZSBTVUJMQU5HX05PUldFR0lBTl9OWU5PUlNLOiByZXR1cm4gIm5uX05PIjsKLSsJfQotKyAgICAgIHJldHVybiAibm8iOwotKyAgICBjYXNlIExBTkdfT1JJWUE6IHJldHVybiAib3JfSU4iOwotKyAgICBjYXNlIExBTkdfT1JPTU86IHJldHVybiAib21fRVQiOwotKyAgICBjYXNlIExBTkdfUEFQSUFNRU5UVTogcmV0dXJuICJwYXBfQU4iOwotKyAgICBjYXNlIExBTkdfUEFTSFRPOgotKyAgICAgIHJldHVybiAicHMiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJwc19QSyIgb3IgInBzX0FGIi4gICovCi0rICAgIGNhc2UgTEFOR19QT0xJU0g6IHJldHVybiAicGxfUEwiOwotKyAgICBjYXNlIExBTkdfUE9SVFVHVUVTRToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfUE9SVFVHVUVTRTogcmV0dXJuICJwdF9QVCI7Ci0rCS8qIEhtbS4gU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTiA9PSBTVUJMQU5HX0RFRkFVTFQuCi0rCSAgIFNhbWUgcGhlbm9tZW5vbiBhcyBTVUJMQU5HX0VOR0xJU0hfVVMgPT0gU1VCTEFOR19ERUZBVUxULiAqLwotKwljYXNlIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU46IHJldHVybiAicHRfQlIiOwotKwl9Ci0rICAgICAgcmV0dXJuICJwdCI7Ci0rICAgIGNhc2UgTEFOR19QVU5KQUJJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19QVU5KQUJJX0lORElBOiByZXR1cm4gInBhX0lOIjsgLyogR3VybXVraGkgc2NyaXB0ICovCi0rCWNhc2UgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOOiByZXR1cm4gInBhX1BLIjsgLyogQXJhYmljIHNjcmlwdCAqLwotKwl9Ci0rICAgICAgcmV0dXJuICJwYSI7Ci0rICAgIGNhc2UgTEFOR19SSEFFVE9fUk9NQU5DRTogcmV0dXJuICJybV9DSCI7Ci0rICAgIGNhc2UgTEFOR19ST01BTklBTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfUk9NQU5JQU5fUk9NQU5JQTogcmV0dXJuICJyb19STyI7Ci0rCWNhc2UgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBOiByZXR1cm4gInJvX01EIjsKLSsJfQotKyAgICAgIHJldHVybiAicm8iOwotKyAgICBjYXNlIExBTkdfUlVTU0lBTjoKLSsgICAgICByZXR1cm4gInJ1IjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAicnVfUlUiIG9yICJydV9VQSIgb3IgInJ1X01EIi4gICovCi0rICAgIGNhc2UgTEFOR19TQUFNSTogLyogYWN0dWFsbHkgTm9ydGhlcm4gU2FtaSAqLyByZXR1cm4gInNlX05PIjsKLSsgICAgY2FzZSBMQU5HX1NBTlNLUklUOiByZXR1cm4gInNhX0lOIjsKLSsgICAgY2FzZSBMQU5HX1NJTkRISToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfU0lOREhJX0lORElBOiByZXR1cm4gInNkX0lOIjsKLSsJY2FzZSBTVUJMQU5HX1NJTkRISV9QQUtJU1RBTjogcmV0dXJuICJzZF9QSyI7Ci0rCX0KLSsgICAgICByZXR1cm4gInNkIjsKLSsgICAgY2FzZSBMQU5HX1NJTkhBTEVTRTogcmV0dXJuICJzaV9MSyI7Ci0rICAgIGNhc2UgTEFOR19TTE9WQUs6IHJldHVybiAic2tfU0siOwotKyAgICBjYXNlIExBTkdfU0xPVkVOSUFOOiByZXR1cm4gInNsX1NJIjsKLSsgICAgY2FzZSBMQU5HX1NPTUFMSTogcmV0dXJuICJzb19TTyI7Ci0rICAgIGNhc2UgTEFOR19TT1JCSUFOOgotKyAgICAgIC8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIHN1Y2ggbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rICAgICAgcmV0dXJuICJ3ZW5fREUiOwotKyAgICBjYXNlIExBTkdfU1BBTklTSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfU1BBTklTSDogcmV0dXJuICJlc19FUyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX01FWElDQU46IHJldHVybiAiZXNfTVgiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9NT0RFUk46Ci0rCSAgcmV0dXJuICJlc19FU0Btb2Rlcm4iOwkvKiBub3Qgc2VlbiBvbiBVbml4ICovCi0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQTogcmV0dXJuICJlc19HVCI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0NPU1RBX1JJQ0E6IHJldHVybiAiZXNfQ1IiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QQU5BTUE6IHJldHVybiAiZXNfUEEiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9ET01JTklDQU5fUkVQVUJMSUM6IHJldHVybiAiZXNfRE8iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEE6IHJldHVybiAiZXNfVkUiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DT0xPTUJJQTogcmV0dXJuICJlc19DTyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1BFUlU6IHJldHVybiAiZXNfUEUiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkE6IHJldHVybiAiZXNfQVIiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SOiByZXR1cm4gImVzX0VDIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQ0hJTEU6IHJldHVybiAiZXNfQ0wiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9VUlVHVUFZOiByZXR1cm4gImVzX1VZIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEFSQUdVQVk6IHJldHVybiAiZXNfUFkiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9CT0xJVklBOiByZXR1cm4gImVzX0JPIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1I6IHJldHVybiAiZXNfU1YiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9IT05EVVJBUzogcmV0dXJuICJlc19ITiI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQTogcmV0dXJuICJlc19OSSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1BVRVJUT19SSUNPOiByZXR1cm4gImVzX1BSIjsKLSsJfQotKyAgICAgIHJldHVybiAiZXMiOwotKyAgICBjYXNlIExBTkdfU1VUVTogcmV0dXJuICJibnRfVFoiOyAvKiBvciAic3RfTFMiIG9yICJuc29fWkEiPyAqLwotKyAgICBjYXNlIExBTkdfU1dBSElMSTogcmV0dXJuICJzd19LRSI7Ci0rICAgIGNhc2UgTEFOR19TV0VESVNIOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gInN2X1NFIjsKLSsJY2FzZSBTVUJMQU5HX1NXRURJU0hfRklOTEFORDogcmV0dXJuICJzdl9GSSI7Ci0rCX0KLSsgICAgICByZXR1cm4gInN2IjsKLSsgICAgY2FzZSBMQU5HX1NZUklBQzogcmV0dXJuICJzeXJfVFIiOyAvKiBBbiBleHRpbmN0IGxhbmd1YWdlLiAgKi8KLSsgICAgY2FzZSBMQU5HX1RBR0FMT0c6IHJldHVybiAidGxfUEgiOwotKyAgICBjYXNlIExBTkdfVEFKSUs6IHJldHVybiAidGdfVEoiOwotKyAgICBjYXNlIExBTkdfVEFNQVpJR0hUOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCS8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIFRhbWF6aWdodCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsJY2FzZSBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUM6IHJldHVybiAiYmVyX01BQGFyYWJpYyI7Ci0rCWNhc2UgU1VCTEFOR19UQU1BWklHSFRfTEFUSU46IHJldHVybiAiYmVyX01BQGxhdGluIjsKLSsJfQotKyAgICAgIHJldHVybiAiYmVyX01BIjsKLSsgICAgY2FzZSBMQU5HX1RBTUlMOgotKyAgICAgIHJldHVybiAidGEiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJ0YV9JTiIgb3IgInRhX0xLIiBvciAidGFfU0ciLiAgKi8KLSsgICAgY2FzZSBMQU5HX1RBVEFSOiByZXR1cm4gInR0X1JVIjsKLSsgICAgY2FzZSBMQU5HX1RFTFVHVTogcmV0dXJuICJ0ZV9JTiI7Ci0rICAgIGNhc2UgTEFOR19USEFJOiByZXR1cm4gInRoX1RIIjsKLSsgICAgY2FzZSBMQU5HX1RJQkVUQU46IHJldHVybiAiYm9fQ04iOwotKyAgICBjYXNlIExBTkdfVElHUklOWUE6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1RJR1JJTllBX0VUSElPUElBOiByZXR1cm4gInRpX0VUIjsKLSsJY2FzZSBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUE6IHJldHVybiAidGlfRVIiOwotKwl9Ci0rICAgICAgcmV0dXJuICJ0aSI7Ci0rICAgIGNhc2UgTEFOR19UU09OR0E6IHJldHVybiAidHNfWkEiOwotKyAgICBjYXNlIExBTkdfVFNXQU5BOiByZXR1cm4gInRuX0JXIjsKLSsgICAgY2FzZSBMQU5HX1RVUktJU0g6IHJldHVybiAidHJfVFIiOwotKyAgICBjYXNlIExBTkdfVFVSS01FTjogcmV0dXJuICJ0a19UTSI7Ci0rICAgIGNhc2UgTEFOR19VS1JBSU5JQU46IHJldHVybiAidWtfVUEiOwotKyAgICBjYXNlIExBTkdfVVJEVToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfVVJEVV9QQUtJU1RBTjogcmV0dXJuICJ1cl9QSyI7Ci0rCWNhc2UgU1VCTEFOR19VUkRVX0lORElBOiByZXR1cm4gInVyX0lOIjsKLSsJfQotKyAgICAgIHJldHVybiAidXIiOwotKyAgICBjYXNlIExBTkdfVVpCRUs6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1VaQkVLX0xBVElOOiByZXR1cm4gInV6X1VaIjsKLSsJY2FzZSBTVUJMQU5HX1VaQkVLX0NZUklMTElDOiByZXR1cm4gInV6X1VaQGN5cmlsbGljIjsKLSsJfQotKyAgICAgIHJldHVybiAidXoiOwotKyAgICBjYXNlIExBTkdfVkVOREE6IHJldHVybiAidmVfWkEiOwotKyAgICBjYXNlIExBTkdfVklFVE5BTUVTRTogcmV0dXJuICJ2aV9WTiI7Ci0rICAgIGNhc2UgTEFOR19XRUxTSDogcmV0dXJuICJjeV9HQiI7Ci0rICAgIGNhc2UgTEFOR19YSE9TQTogcmV0dXJuICJ4aF9aQSI7Ci0rICAgIGNhc2UgTEFOR19ZSTogcmV0dXJuICJzaXRfQ04iOwotKyAgICBjYXNlIExBTkdfWUlERElTSDogcmV0dXJuICJ5aV9JTCI7Ci0rICAgIGNhc2UgTEFOR19ZT1JVQkE6IHJldHVybiAieW9fTkciOwotKyAgICBjYXNlIExBTkdfWlVMVTogcmV0dXJuICJ6dV9aQSI7Ci0rICAgIGRlZmF1bHQ6IHJldHVybiAiQyI7Ci0rICAgIH0KLSsKLSsjZW5kaWYKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9nLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9nLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41MTU3MjM3NjggLTA0MDAKLUBAIC0wLDAgKzEsOTggQEAKLSsvKiBMb2cgZmlsZSBvdXRwdXQuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rLyogUHJpbnQgYW4gQVNDSUkgc3RyaW5nIHdpdGggcXVvdGVzIGFuZCBlc2NhcGUgc2VxdWVuY2VzIHdoZXJlIG5lZWRlZC4gICovCi0rc3RhdGljIHZvaWQKLStwcmludF9lc2NhcGVkIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rICBwdXRjICgnIicsIHN0cmVhbSk7Ci0rICBmb3IgKDsgKnN0ciAhPSAnXDAnOyBzdHIrKykKLSsgICAgaWYgKCpzdHIgPT0gJ1xuJykKLSsgICAgICB7Ci0rCWZwdXRzICgiXFxuXCIiLCBzdHJlYW0pOwotKwlpZiAoc3RyWzFdID09ICdcMCcpCi0rCSAgcmV0dXJuOwotKwlmcHV0cyAoIlxuXCIiLCBzdHJlYW0pOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJaWYgKCpzdHIgPT0gJyInIHx8ICpzdHIgPT0gJ1xcJykKLSsJICBwdXRjICgnXFwnLCBzdHJlYW0pOwotKwlwdXRjICgqc3RyLCBzdHJlYW0pOwotKyAgICAgIH0KLSsgIHB1dGMgKCciJywgc3RyZWFtKTsKLSt9Ci0rCi0rLyogQWRkIHRvIHRoZSBsb2cgZmlsZSBhbiBlbnRyeSBkZW5vdGluZyBhIGZhaWxlZCB0cmFuc2xhdGlvbi4gICovCi0rdm9pZAotK19ubF9sb2dfdW50cmFuc2xhdGVkIChjb25zdCBjaGFyICpsb2dmaWxlbmFtZSwgY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCSAgICAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCBpbnQgcGx1cmFsKQotK3sKLSsgIHN0YXRpYyBjaGFyICpsYXN0X2xvZ2ZpbGVuYW1lID0gTlVMTDsKLSsgIHN0YXRpYyBGSUxFICpsYXN0X2xvZ2ZpbGUgPSBOVUxMOwotKyAgRklMRSAqbG9nZmlsZTsKLSsKLSsgIC8qIENhbiB3ZSByZXVzZSB0aGUgbGFzdCBvcGVuZWQgbG9nZmlsZT8gICovCi0rICBpZiAobGFzdF9sb2dmaWxlbmFtZSA9PSBOVUxMIHx8IHN0cmNtcCAobG9nZmlsZW5hbWUsIGxhc3RfbG9nZmlsZW5hbWUpICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBDbG9zZSB0aGUgbGFzdCB1c2VkIGxvZ2ZpbGUuICAqLwotKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGVuYW1lICE9IE5VTEwpCi0rCXsKLSsJICBpZiAobGFzdF9sb2dmaWxlICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGZjbG9zZSAobGFzdF9sb2dmaWxlKTsKLSsJICAgICAgbGFzdF9sb2dmaWxlID0gTlVMTDsKLSsJICAgIH0KLSsJICBmcmVlIChsYXN0X2xvZ2ZpbGVuYW1lKTsKLSsJICBsYXN0X2xvZ2ZpbGVuYW1lID0gTlVMTDsKLSsJfQotKyAgICAgIC8qIE9wZW4gdGhlIGxvZ2ZpbGUuICAqLwotKyAgICAgIGxhc3RfbG9nZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKHN0cmxlbiAobG9nZmlsZW5hbWUpICsgMSk7Ci0rICAgICAgaWYgKGxhc3RfbG9nZmlsZW5hbWUgPT0gTlVMTCkKLSsJcmV0dXJuOwotKyAgICAgIHN0cmNweSAobGFzdF9sb2dmaWxlbmFtZSwgbG9nZmlsZW5hbWUpOwotKyAgICAgIGxhc3RfbG9nZmlsZSA9IGZvcGVuIChsb2dmaWxlbmFtZSwgImEiKTsKLSsgICAgICBpZiAobGFzdF9sb2dmaWxlID09IE5VTEwpCi0rCXJldHVybjsKLSsgICAgfQotKyAgbG9nZmlsZSA9IGxhc3RfbG9nZmlsZTsKLSsKLSsgIGZwcmludGYgKGxvZ2ZpbGUsICJkb21haW4gIik7Ci0rICBwcmludF9lc2NhcGVkIChsb2dmaWxlLCBkb21haW5uYW1lKTsKLSsgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ2lkICIpOwotKyAgcHJpbnRfZXNjYXBlZCAobG9nZmlsZSwgbXNnaWQxKTsKLSsgIGlmIChwbHVyYWwpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dpZF9wbHVyYWwgIik7Ci0rICAgICAgcHJpbnRfZXNjYXBlZCAobG9nZmlsZSwgbXNnaWQyKTsKLSsgICAgICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dzdHJbMF0gXCJcIlxuIik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnc3RyIFwiXCJcbiIpOwotKyAgcHV0YyAoJ1xuJywgbG9nZmlsZSk7Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL01ha2VmaWxlLmluCTE5OTgtMDQtMjYgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL01ha2VmaWxlLmluCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTIxNzIyODU2IC0wNDAwCi1AQCAtMSwxOSArMSwyMCBAQAotLSMgTWFrZWZpbGUgZm9yIGRpcmVjdG9yeSB3aXRoIG1lc3NhZ2UgY2F0YWxvZyBoYW5kbGluZyBpbiBHTlUgTkxTIFV0aWxpdGllcy4KLS0jIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIE1ha2VmaWxlIGZvciBkaXJlY3Rvcnkgd2l0aCBtZXNzYWdlIGNhdGFsb2cgaGFuZGxpbmcgbGlicmFyeSBvZiBHTlUgZ2V0dGV4dAotKyMgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rIyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAjCi0gIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjIFVTQS4KLSAKLSBQQUNLQUdFID0gQFBBQ0tBR0VACi0gVkVSU0lPTiA9IEBWRVJTSU9OQAotQEAgLTIzLDExOCArMjQsMzQxIEBACi0gc3JjZGlyID0gQHNyY2RpckAKLSB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACi0gdG9wX2J1aWxkZGlyID0gLi4KLS1WUEFUSCA9IEBzcmNkaXJACi0rI1ZQQVRIID0gJChzcmNkaXIpCi0gCi0gcHJlZml4ID0gQHByZWZpeEAKLSBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLSB0cmFuc2Zvcm0gPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKLS1saWJkaXIgPSAkKGV4ZWNfcHJlZml4KS9saWIKLS1pbmNsdWRlZGlyID0gJChwcmVmaXgpL2luY2x1ZGUKLS1kYXRhZGlyID0gJChwcmVmaXgpL0BEQVRBRElSTkFNRUAKLStsaWJkaXIgPSBAbGliZGlyQAotK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKLStkYXRhZGlyID0gQGRhdGFkaXJACi0gbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKLS1nbnVsb2NhbGVkaXIgPSAkKHByZWZpeCkvc2hhcmUvbG9jYWxlCi0tZ2V0dGV4dHNyY2RpciA9IEBkYXRhZGlyQC9nZXR0ZXh0L2ludGwKLS1hbGlhc3BhdGggPSAkKGxvY2FsZWRpcik6LgotK2dldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvaW50bAotK2FsaWFzcGF0aCA9ICQobG9jYWxlZGlyKQotIHN1YmRpciA9IGludGwKLSAKLSBJTlNUQUxMID0gQElOU1RBTExACi0gSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLSBNS0lOU1RBTExESVJTID0gQE1LSU5TVEFMTERJUlNACi0rbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpICQoTUtJTlNUQUxMRElSUykKLSAKLS1sID0gQGxACi0rbCA9IEBJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWEAKLSAKLSBBUiA9IGFyCi0gQ0MgPSBAQ0NACi0gTElCVE9PTCA9IEBMSUJUT09MQAotIFJBTkxJQiA9IEBSQU5MSUJACi0rWUFDQyA9IEBJTlRMQklTT05AIC15IC1kCi0rWUZMQUdTID0gLS1uYW1lLXByZWZpeD1fX2dldHRleHQKLSAKLS1ERUZTID0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIiAtREdOVUxPQ0FMRURJUj1cIiQoZ251bG9jYWxlZGlyKVwiIFwKLS0tRExPQ0FMRV9BTElBU19QQVRIPVwiJChhbGlhc3BhdGgpXCIgQERFRlNACi0rREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIFwKLSstRExJQkRJUj1cIiQobGliZGlyKVwiIC1ESU5fTElCSU5UTCBcCi0rLURFTkFCTEVfUkVMT0NBVEFCTEU9MSAtRElOX0xJQlJBUlkgLURJTlNUQUxMRElSPVwiJChsaWJkaXIpXCIgLUROT19YTUFMTE9DIFwKLSstRHNldF9yZWxvY2F0aW9uX3ByZWZpeD1saWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCBcCi0rLURyZWxvY2F0ZT1saWJpbnRsX3JlbG9jYXRlIFwKLSstRERFUEVORFNfT05fTElCSUNPTlY9MSBAREVGU0AKLSBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKLSBDRkxBR1MgPSBAQ0ZMQUdTQAotIExERkxBR1MgPSBATERGTEFHU0AKLStMSUJTID0gQExJQlNACi0gCi0gQ09NUElMRSA9ICQoQ0MpIC1jICQoREVGUykgJChJTkNMVURFUykgJChDUFBGTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykKLSAKLS1IRUFERVJTID0gJChDT01IRFJTKSBsaWJnZXR0ZXh0LmggbG9hZGluZm8uaAotLUNPTUhEUlMgPSBnZXR0ZXh0LmggZ2V0dGV4dFAuaCBoYXNoLXN0cmluZy5oCi0tU09VUkNFUyA9ICQoQ09NU1JDUykgaW50bC1jb21wYXQuYyBjYXQtY29tcGF0LmMKLS1DT01TUkNTID0gYmluZHRleHRkb20uYyBkY2dldHRleHQuYyBkZ2V0dGV4dC5jIGdldHRleHQuYyBcCi0tZmluZGRvbWFpbi5jIGxvYWRtc2djYXQuYyBsb2NhbGVhbGlhcy5jIHRleHRkb21haW4uYyBsMTBuZmxpc3QuYyBcCi0tZXhwbG9kZW5hbWUuYwotLU9CSkVDVFMgPSBASU5UTE9CSlNAIGJpbmR0ZXh0ZG9tLiRsbyBkY2dldHRleHQuJGxvIGRnZXR0ZXh0LiRsbyBnZXR0ZXh0LiRsbyBcCi0tZmluZGRvbWFpbi4kbG8gbG9hZG1zZ2NhdC4kbG8gbG9jYWxlYWxpYXMuJGxvIHRleHRkb21haW4uJGxvIGwxMG5mbGlzdC4kbG8gXAotLWV4cGxvZGVuYW1lLiRsbwotLUNBVE9CSlMgPSBjYXQtY29tcGF0LiRsbyAuLi9wby9jYXQtaWQtdGJsLiRsbwotLUdFVFRPQkpTID0gaW50bC1jb21wYXQuJGxvCi0tRElTVEZJTEVTLmNvbW1vbiA9IENoYW5nZUxvZyBNYWtlZmlsZS5pbiBsaW51eC1tc2cuc2VkIHBvMnRibC5zZWQuaW4gXAotLXhvcGVuLW1zZy5zZWQgJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rSEVBREVSUyA9IFwKLSsgIGdtby5oIFwKLSsgIGdldHRleHRQLmggXAotKyAgaGFzaC1zdHJpbmcuaCBcCi0rICBsb2FkaW5mby5oIFwKLSsgIHBsdXJhbC1leHAuaCBcCi0rICBldmFsLXBsdXJhbC5oIFwKLSsgIGxvY2FsY2hhcnNldC5oIFwKLSsgIHJlbG9jYXRhYmxlLmggXAotKyAgeHNpemUuaCBcCi0rICBwcmludGYtYXJncy5oIHByaW50Zi1hcmdzLmMgXAotKyAgcHJpbnRmLXBhcnNlLmggd3ByaW50Zi1wYXJzZS5oIHByaW50Zi1wYXJzZS5jIFwKLSsgIHZhc25wcmludGYuaCB2YXNud3ByaW50Zi5oIHZhc25wcmludGYuYyBcCi0rICBvczJjb21wYXQuaCBcCi0rICBsaWJnbnVpbnRsLmguaW4KLStTT1VSQ0VTID0gXAotKyAgYmluZHRleHRkb20uYyBcCi0rICBkY2dldHRleHQuYyBcCi0rICBkZ2V0dGV4dC5jIFwKLSsgIGdldHRleHQuYyBcCi0rICBmaW5kZG9tYWluLmMgXAotKyAgbG9hZG1zZ2NhdC5jIFwKLSsgIGxvY2FsZWFsaWFzLmMgXAotKyAgdGV4dGRvbWFpbi5jIFwKLSsgIGwxMG5mbGlzdC5jIFwKLSsgIGV4cGxvZGVuYW1lLmMgXAotKyAgZGNpZ2V0dGV4dC5jIFwKLSsgIGRjbmdldHRleHQuYyBcCi0rICBkbmdldHRleHQuYyBcCi0rICBuZ2V0dGV4dC5jIFwKLSsgIHBsdXJhbC55IFwKLSsgIHBsdXJhbC1leHAuYyBcCi0rICBsb2NhbGNoYXJzZXQuYyBcCi0rICByZWxvY2F0YWJsZS5jIFwKLSsgIGxvY2FsZW5hbWUuYyBcCi0rICBsb2cuYyBcCi0rICBwcmludGYuYyBcCi0rICBvc2RlcC5jIFwKLSsgIG9zMmNvbXBhdC5jIFwKLSsgIGludGwtY29tcGF0LmMKLStPQkpFQ1RTID0gXAotKyAgYmluZHRleHRkb20uJGxvIFwKLSsgIGRjZ2V0dGV4dC4kbG8gXAotKyAgZGdldHRleHQuJGxvIFwKLSsgIGdldHRleHQuJGxvIFwKLSsgIGZpbmRkb21haW4uJGxvIFwKLSsgIGxvYWRtc2djYXQuJGxvIFwKLSsgIGxvY2FsZWFsaWFzLiRsbyBcCi0rICB0ZXh0ZG9tYWluLiRsbyBcCi0rICBsMTBuZmxpc3QuJGxvIFwKLSsgIGV4cGxvZGVuYW1lLiRsbyBcCi0rICBkY2lnZXR0ZXh0LiRsbyBcCi0rICBkY25nZXR0ZXh0LiRsbyBcCi0rICBkbmdldHRleHQuJGxvIFwKLSsgIG5nZXR0ZXh0LiRsbyBcCi0rICBwbHVyYWwuJGxvIFwKLSsgIHBsdXJhbC1leHAuJGxvIFwKLSsgIGxvY2FsY2hhcnNldC4kbG8gXAotKyAgcmVsb2NhdGFibGUuJGxvIFwKLSsgIGxvY2FsZW5hbWUuJGxvIFwKLSsgIGxvZy4kbG8gXAotKyAgcHJpbnRmLiRsbyBcCi0rICBvc2RlcC4kbG8gXAotKyAgaW50bC1jb21wYXQuJGxvCi0rRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluIFwKLStjb25maWcuY2hhcnNldCBsb2NhbGUuYWxpYXMgcmVmLWFkZC5zaW4gcmVmLWRlbC5zaW4gJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rRElTVEZJTEVTLmdlbmVyYXRlZCA9IHBsdXJhbC5jCi0gRElTVEZJTEVTLm5vcm1hbCA9IFZFUlNJT04KLS1ESVNURklMRVMuZ2V0dGV4dCA9IGxpYmludGwuZ2xpYmMgaW50bGguaW5zdC5pbgotK0RJU1RGSUxFUy5nZXR0ZXh0ID0gQ09QWUlORy5MSUItMi4wIENPUFlJTkcuTElCLTIuMSBsaWJpbnRsLmdsaWJjIFwKLStsaWJnbnVpbnRsLmhfdm1zIE1ha2VmaWxlLnZtcyBcCi0rbGliZ251aW50bC5oLm1zdmMtc3RhdGljIGxpYmdudWludGwuaC5tc3ZjLXNoYXJlZCBSRUFETUUud29lMzIgTWFrZWZpbGUubXN2YwotK0RJU1RGSUxFUy5vYnNvbGV0ZSA9IHhvcGVuLW1zZy5zZWQgbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIGNhdC1jb21wYXQuYyBcCi0rQ09QWUlORy5MSUItMiBnZXR0ZXh0LmggbGliZ2V0dGV4dC5oIHBsdXJhbC1ldmFsLmMgbGliZ251aW50bC5oCi0rCi0rYWxsOiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQAotK2FsbC15ZXM6IGxpYmludGwuJGxhIGxpYmludGwuaCBjaGFyc2V0LmFsaWFzIHJlZi1hZGQuc2VkIHJlZi1kZWwuc2VkCi0rYWxsLW5vOiBhbGwtbm8tQEJVSUxEX0lOQ0xVREVEX0xJQklOVExACi0rYWxsLW5vLXllczogbGliZ251aW50bC4kbGEKLSthbGwtbm8tbm86Ci0rCi0rbGliaW50bC5hIGxpYmdudWludGwuYTogJChPQkpFQ1RTKQotKwlybSAtZiAkQAotKwkkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQotKwkkKFJBTkxJQikgJEAKLSsKLStsaWJpbnRsLmxhIGxpYmdudWludGwubGE6ICQoT0JKRUNUUykKLSsJJChMSUJUT09MKSAtLW1vZGU9bGluayBcCi0rCSAgJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykgJChMREZMQUdTKSAtbyAkQCBcCi0rCSAgJChPQkpFQ1RTKSBATFRMSUJJQ09OVkAgJChMSUJTKSAtbGMgXAotKwkgIC12ZXJzaW9uLWluZm8gJChMVFZfQ1VSUkVOVCk6JChMVFZfUkVWSVNJT04pOiQoTFRWX0FHRSkgXAotKwkgIC1ycGF0aCAkKGxpYmRpcikgXAotKwkgIC1uby11bmRlZmluZWQKLSsKLSsjIExpYnRvb2wncyBsaWJyYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGxpYmludGwuCi0rIyBCZWZvcmUgbWFraW5nIGEgZ2V0dGV4dCByZWxlYXNlLCB0aGUgZ2V0dGV4dCBtYWludGFpbmVyIG11c3QgY2hhbmdlIHRoaXMKLSsjIGFjY29yZGluZyB0byB0aGUgbGlidG9vbCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICJMaWJyYXJ5IGludGVyZmFjZSB2ZXJzaW9ucyIuCi0rIyBNYWludGFpbmVycyBvZiBvdGhlciBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgdGhlIGludGwgZGlyZWN0b3J5IG11c3QgKm5vdCoKLSsjIGNoYW5nZSB0aGVzZSB2YWx1ZXMuCi0rTFRWX0NVUlJFTlQ9NwotK0xUVl9SRVZJU0lPTj0wCi0rTFRWX0FHRT00Ci0gCi0gLlNVRkZJWEVTOgotLS5TVUZGSVhFUzogLmMgLm8gLmxvCi0rLlNVRkZJWEVTOiAuYyAueSAubyAubG8gLnNpbiAuc2VkCi0rCi0gLmMubzoKLSAJJChDT01QSUxFKSAkPAotLS5jLmxvOgotLQkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJDwKLSAKLS1JTkNMVURFUyA9IC1JLi4gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKLSsueS5jOgotKwkkKFlBQ0MpICQoWUZMQUdTKSAtLW91dHB1dCAkQCAkPAotKwlybSAtZiAkKi5oCi0gCi0tYWxsOiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQAotK2JpbmR0ZXh0ZG9tLmxvOiAkKHNyY2RpcikvYmluZHRleHRkb20uYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2JpbmR0ZXh0ZG9tLmMKLStkY2dldHRleHQubG86ICQoc3JjZGlyKS9kY2dldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RjZ2V0dGV4dC5jCi0rZGdldHRleHQubG86ICQoc3JjZGlyKS9kZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZGdldHRleHQuYwotK2dldHRleHQubG86ICQoc3JjZGlyKS9nZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9nZXR0ZXh0LmMKLStmaW5kZG9tYWluLmxvOiAkKHNyY2RpcikvZmluZGRvbWFpbi5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZmluZGRvbWFpbi5jCi0rbG9hZG1zZ2NhdC5sbzogJChzcmNkaXIpL2xvYWRtc2djYXQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvYWRtc2djYXQuYwotK2xvY2FsZWFsaWFzLmxvOiAkKHNyY2RpcikvbG9jYWxlYWxpYXMuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvY2FsZWFsaWFzLmMKLSt0ZXh0ZG9tYWluLmxvOiAkKHNyY2RpcikvdGV4dGRvbWFpbi5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvdGV4dGRvbWFpbi5jCi0rbDEwbmZsaXN0LmxvOiAkKHNyY2RpcikvbDEwbmZsaXN0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sMTBuZmxpc3QuYwotK2V4cGxvZGVuYW1lLmxvOiAkKHNyY2RpcikvZXhwbG9kZW5hbWUuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2V4cGxvZGVuYW1lLmMKLStkY2lnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNpZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZGNpZ2V0dGV4dC5jCi0rZGNuZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RjbmdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RjbmdldHRleHQuYwotK2RuZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RuZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZG5nZXR0ZXh0LmMKLStuZ2V0dGV4dC5sbzogJChzcmNkaXIpL25nZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9uZ2V0dGV4dC5jCi0rcGx1cmFsLmxvOiAkKHNyY2RpcikvcGx1cmFsLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9wbHVyYWwuYwotK3BsdXJhbC1leHAubG86ICQoc3JjZGlyKS9wbHVyYWwtZXhwLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9wbHVyYWwtZXhwLmMKLStsb2NhbGNoYXJzZXQubG86ICQoc3JjZGlyKS9sb2NhbGNoYXJzZXQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvY2FsY2hhcnNldC5jCi0rcmVsb2NhdGFibGUubG86ICQoc3JjZGlyKS9yZWxvY2F0YWJsZS5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcmVsb2NhdGFibGUuYwotK2xvY2FsZW5hbWUubG86ICQoc3JjZGlyKS9sb2NhbGVuYW1lLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2NhbGVuYW1lLmMKLStsb2cubG86ICQoc3JjZGlyKS9sb2cuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvZy5jCi0rcHJpbnRmLmxvOiAkKHNyY2RpcikvcHJpbnRmLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9wcmludGYuYwotK29zZGVwLmxvOiAkKHNyY2Rpcikvb3NkZXAuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL29zZGVwLmMKLStpbnRsLWNvbXBhdC5sbzogJChzcmNkaXIpL2ludGwtY29tcGF0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9pbnRsLWNvbXBhdC5jCi0gCi0tYWxsLXllczogbGliaW50bC4kbGEgaW50bGguaW5zdAotLWFsbC1ubzoKLStyZWYtYWRkLnNlZDogJChzcmNkaXIpL3JlZi1hZGQuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0AnJ1BBQ0tBR0UnJ0AvQFBBQ0tBR0VAL2cnICQoc3JjZGlyKS9yZWYtYWRkLnNpbiA+IHQtcmVmLWFkZC5zZWQKLSsJbXYgdC1yZWYtYWRkLnNlZCByZWYtYWRkLnNlZAotK3JlZi1kZWwuc2VkOiAkKHNyY2RpcikvcmVmLWRlbC5zaW4KLSsJc2VkIC1lICcvXiMvZCcgLWUgJ3MvQCcnUEFDS0FHRScnQC9AUEFDS0FHRUAvZycgJChzcmNkaXIpL3JlZi1kZWwuc2luID4gdC1yZWYtZGVsLnNlZAotKwltdiB0LXJlZi1kZWwuc2VkIHJlZi1kZWwuc2VkCi0gCi0tbGliaW50bC5hOiAkKE9CSkVDVFMpCi0tCXJtIC1mICRACi0tCSQoQVIpIGNydSAkQCAkKE9CSkVDVFMpCi0tCSQoUkFOTElCKSAkQAotK0lOQ0xVREVTID0gLUkuIC1JJChzcmNkaXIpIC1JLi4KLSAKLS1saWJpbnRsLmxhOiAkKE9CSkVDVFMpCi0tCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChMREZMQUdTKSAtbyAkQCAkKE9CSkVDVFMpIFwKLS0JCSAgIC12ZXJzaW9uLWluZm8gMTowIC1ycGF0aCAkKGxpYmRpcikKLStsaWJnbnVpbnRsLmg6ICQoc3JjZGlyKS9saWJnbnVpbnRsLmguaW4KLSsJc2VkIC1lICdzLEAnJ0hBVkVfUE9TSVhfUFJJTlRGJydALEBIQVZFX1BPU0lYX1BSSU5URkAsZycgXAotKwkgICAgLWUgJ3MsQCcnSEFWRV9BU1BSSU5URicnQCxASEFWRV9BU1BSSU5URkAsZycgXAotKwkgICAgLWUgJ3MsQCcnSEFWRV9TTlBSSU5URicnQCxASEFWRV9TTlBSSU5URkAsZycgXAotKwkgICAgLWUgJ3MsQCcnSEFWRV9XUFJJTlRGJydALEBIQVZFX1dQUklOVEZALGcnIFwKLSsJICA8ICQoc3JjZGlyKS9saWJnbnVpbnRsLmguaW4gPiBsaWJnbnVpbnRsLmgKLSAKLS0uLi9wby9jYXQtaWQtdGJsLiRsbzogLi4vcG8vY2F0LWlkLXRibC5jICQodG9wX3NyY2RpcikvcG8vJChQQUNLQUdFKS5wb3QKLS0JY2QgLi4vcG8gJiYgJChNQUtFKSBjYXQtaWQtdGJsLiRsbwotK2xpYmludGwuaDogbGliZ251aW50bC5oCi0rCWNwIGxpYmdudWludGwuaCBsaWJpbnRsLmgKLSAKLS1jaGVjazogYWxsCi0rY2hhcnNldC5hbGlhczogJChzcmNkaXIpL2NvbmZpZy5jaGFyc2V0Ci0rCSQoU0hFTEwpICQoc3JjZGlyKS9jb25maWcuY2hhcnNldCAnQGhvc3RAJyA+IHQtJEAKLSsJbXYgdC0kQCAkQAotIAotLSMgVGhpcyBpbnN0YWxsYXRpb24gZ29hbCBpcyBvbmx5IHVzZWQgaW4gR05VIGdldHRleHQuICBQYWNrYWdlcyB3aGljaAotLSMgb25seSB1c2UgdGhlIGxpYnJhcnkgc2hvdWxkIHVzZSBpbnN0YWxsIGluc3RlYWQuCi0rY2hlY2s6IGFsbAotIAotICMgV2UgbXVzdCBub3QgaW5zdGFsbCB0aGUgbGliaW50bC5oL2xpYmludGwuYSBmaWxlcyBpZiB3ZSBhcmUgb24gYQotLSMgc3lzdGVtIHdoaWNoIGhhcyB0aGUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGluIGl0cyBDIGxpYnJhcnkgb3IgaW4gYQotLSMgc2VwYXJhdGUgbGlicmFyeSBvciB1c2UgdGhlIGNhdGdldHMgaW50ZXJmYWNlLiAgQSBzcGVjaWFsIGNhc2UgaXMKLS0jIHdoZXJlIGNvbmZpZ3VyZSBmb3VuZCBhIHByZXZpb3VzbHkgaW5zdGFsbGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCi0rIyBzeXN0ZW0gd2hpY2ggaGFzIHRoZSBHTlUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGluIGl0cyBDIGxpYnJhcnkgb3IgaW4gYQotKyMgc2VwYXJhdGUgbGlicmFyeS4KLSAjIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgb25lIHdoaWNoIGNvbWVzIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZQotICMgcGFja2FnZSwgeW91IGhhdmUgdG8gdXNlIGBjb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQnLgotIGluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKLSBpbnN0YWxsLWV4ZWM6IGFsbAotLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0IiBcCi0tCSAgICYmIHRlc3QgJ0BJTlRMT0JKU0AnID0gJyQoR0VUVE9CSlMpJzsgdGhlbiBcCi0tCSAgaWYgdGVzdCAtciAkKE1LSU5TVEFMTERJUlMpOyB0aGVuIFwKLS0JICAgICQoTUtJTlNUQUxMRElSUykgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKLS0JICBlbHNlIFwKLS0JICAgICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKGxpYmRpcikgJChpbmNsdWRlZGlyKTsgXAotKwlpZiB7IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IH0gXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpIGxpYmludGwuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9saWJpbnRsLmg7IFwKLSsJICAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsIFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLiRsYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwuJGxhOyBcCi0rCSAgaWYgdGVzdCAiQFJFTE9DQVRBQkxFQCIgPSB5ZXM7IHRoZW4gXAotKwkgICAgZGVwZW5kZW5jaWVzPWBzZWQgLW4gLWUgJ3MsXmRlcGVuZGVuY3lfbGlicz1cKC4qXCksXDEscCcgPCAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwubGEgfCBzZWQgLWUgInMsXicsLCIgLWUgInMsJ1wkJCwsImA7IFwKLSsJICAgIGlmIHRlc3QgLW4gIiQkZGVwZW5kZW5jaWVzIjsgdGhlbiBcCi0rCSAgICAgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliaW50bC5sYTsgXAotKwkgICAgZmk7IFwKLSAJICBmaTsgXAotLQkgICQoSU5TVEFMTF9EQVRBKSBpbnRsaC5pbnN0ICQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCi0tCSAgJChJTlNUQUxMX0RBVEEpIGxpYmludGwuYSAkKGxpYmRpcikvbGliaW50bC5hOyBcCi0gCWVsc2UgXAotIAkgIDogOyBcCi0gCWZpCi0taW5zdGFsbC1kYXRhOiBhbGwKLS0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gXAotLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCi0tCSAgICAkKE1LSU5TVEFMTERJUlMpICQoZ2V0dGV4dHNyY2Rpcik7IFwKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IG5vOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcik7IFwKLSsJICAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsIFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSBsaWJnbnVpbnRsLiRsYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmdudWludGwuJGxhOyBcCi0rCSAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC5zbyAkKERFU1RESVIpJChsaWJkaXIpL3ByZWxvYWRhYmxlX2xpYmludGwuc287IFwKLSsJICAkKExJQlRPT0wpIC0tbW9kZT11bmluc3RhbGwgXAotKwkgICAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJnbnVpbnRsLiRsYTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgdGVzdCBAR0xJQkMyMUAgIT0gbm8gfHwgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCSAgdGVtcD0kKERFU1RESVIpJChsaWJkaXIpL3QtY2hhcnNldC5hbGlhczsgXAotKwkgIGRlc3Q9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCi0rCSAgaWYgdGVzdCAtZiAkKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IHRoZW4gXAotKwkgICAgb3JpZz0kKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IFwKLSsJICAgIHNlZCAtZiByZWYtYWRkLnNlZCAkJG9yaWcgPiAkJHRlbXA7IFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgICBybSAtZiAkJHRlbXA7IFwKLSAJICBlbHNlIFwKLS0JICAgICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKGdldHRleHRzcmNkaXIpOyBcCi0rCSAgICBpZiB0ZXN0IEBHTElCQzIxQCA9IG5vOyB0aGVuIFwKLSsJICAgICAgb3JpZz1jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICAgIHNlZCAtZiByZWYtYWRkLnNlZCAkJG9yaWcgPiAkJHRlbXA7IFwKLSsJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICAgICAgcm0gLWYgJCR0ZW1wOyBcCi0rCSAgICBmaTsgXAotIAkgIGZpOyBcCi0tCSAgJChJTlNUQUxMX0RBVEEpIFZFUlNJT04gJChnZXR0ZXh0c3JjZGlyKS9WRVJTSU9OOyBcCi0tCSAgZGlzdHM9IiQoRElTVEZJTEVTLmNvbW1vbikiOyBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsb2NhbGVkaXIpOyBcCi0rCSAgdGVzdCAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhcyBcCi0rCSAgICAmJiBvcmlnPSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzIFwKLSsJICAgIHx8IG9yaWc9JChzcmNkaXIpL2xvY2FsZS5hbGlhczsgXAotKwkgIHRlbXA9JChERVNURElSKSQobG9jYWxlZGlyKS90LWxvY2FsZS5hbGlhczsgXAotKwkgIGRlc3Q9JChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM7IFwKLSsJICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICBybSAtZiAkJHRlbXA7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLStpbnN0YWxsLWRhdGE6IGFsbAotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSBWRVJTSU9OICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL1ZFUlNJT047IFwKLSsJICAkKElOU1RBTExfREFUQSkgQ2hhbmdlTG9nLmluc3QgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvQ2hhbmdlTG9nOyBcCi0rCSAgZGlzdHM9IkNPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgJChESVNURklMRVMuY29tbW9uKSI7IFwKLSAJICBmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0tCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAotKwkJCSAgICAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSAJICBkb25lOyBcCi0rCSAgY2htb2QgYSt4ICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL2NvbmZpZy5jaGFyc2V0OyBcCi0rCSAgZGlzdHM9IiQoRElTVEZJTEVTLmdlbmVyYXRlZCkiOyBcCi0rCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotKwkgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gZGlyPS47IGVsc2UgZGlyPSQoc3JjZGlyKTsgZmk7IFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSAkJGRpci8kJGZpbGUgXAotKwkJCSAgICAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSsJICBkb25lOyBcCi0rCSAgZGlzdHM9IiQoRElTVEZJTEVTLm9ic29sZXRlKSI7IFwKLSsJICBmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0rCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSsJICBkb25lOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCi0raW5zdGFsbC1zdHJpcDogaW5zdGFsbAotKwotK2luc3RhbGxkaXJzOgotKwlpZiB7IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IH0gXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSBubzsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICB0ZXN0IEBHTElCQzIxQCAhPSBubyB8fCAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcik7IFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxvY2FsZWRpcik7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLSAJZWxzZSBcCi0gCSAgOiA7IFwKLSAJZmkKLUBAIC0xNDMsMjIgKzM2Nyw3NiBAQAotIGluc3RhbGxjaGVjazoKLSAKLSB1bmluc3RhbGw6Ci0tCWRpc3RzPSIkKERJU1RGSUxFUy5jb21tb24pIjsgXAotLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0tCSAgcm0gLWYgJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLS0JZG9uZQotKwlpZiB7IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IH0gXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgcm0gLWYgJChERVNURElSKSQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9dW5pbnN0YWxsIFwKLSsJICAgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliaW50bC4kbGE7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IG5vOyB0aGVuIFwKLSsJICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL3ByZWxvYWRhYmxlX2xpYmludGwuc287IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIGlmIHRlc3QgLWYgJChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyB0aGVuIFwKLSsJICAgIHRlbXA9JChERVNURElSKSQobGliZGlyKS90LWNoYXJzZXQuYWxpYXM7IFwKLSsJICAgIGRlc3Q9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICBzZWQgLWYgcmVmLWRlbC5zZWQgJCRkZXN0ID4gJCR0ZW1wOyBcCi0rCSAgICBpZiBncmVwICdeIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6ICQkJyAkJHRlbXAgPiAvZGV2L251bGw7IHRoZW4gXAotKwkgICAgICBybSAtZiAkJGRlc3Q7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgZmk7IFwKLSsJICAgIHJtIC1mICQkdGVtcDsgXAotKwkgIGZpOyBcCi0rCSAgaWYgdGVzdCAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhczsgdGhlbiBcCi0rCSAgICB0ZW1wPSQoREVTVERJUikkKGxvY2FsZWRpcikvdC1sb2NhbGUuYWxpYXM7IFwKLSsJICAgIGRlc3Q9JChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM7IFwKLSsJICAgIHNlZCAtZiByZWYtZGVsLnNlZCAkJGRlc3QgPiAkJHRlbXA7IFwKLSsJICAgIGlmIGdyZXAgJ14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogJCQnICQkdGVtcCA+IC9kZXYvbnVsbDsgdGhlbiBcCi0rCSAgICAgIHJtIC1mICQkZGVzdDsgXAotKwkgICAgZWxzZSBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgICBmaTsgXAotKwkgICAgcm0gLWYgJCR0ZW1wOyBcCi0rCSAgZmk7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgIGZvciBmaWxlIGluIFZFUlNJT04gQ2hhbmdlTG9nIENPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpOyBkbyBcCi0rCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSsJICBkb25lOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0gCi0taW5mbyBkdmk6Ci0raW5mbyBkdmkgcHMgcGRmIGh0bWw6Ci0gCi0tJChPQkpFQ1RTKTogLi4vY29uZmlnLmggbGliZ2V0dGV4dC5oCi0tYmluZHRleHRkb20uJGxvIGZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvOiBnZXR0ZXh0UC5oIGdldHRleHQuaCBsb2FkaW5mby5oCi0tZGNnZXR0ZXh0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggaGFzaC1zdHJpbmcuaCBsb2FkaW5mby5oCi0rJChPQkpFQ1RTKTogLi4vY29uZmlnLmggbGliZ251aW50bC5oCi0rYmluZHRleHRkb20uJGxvIGRjZ2V0dGV4dC4kbG8gZGNpZ2V0dGV4dC4kbG8gZGNuZ2V0dGV4dC4kbG8gZGdldHRleHQuJGxvIGRuZ2V0dGV4dC4kbG8gZmluZGRvbWFpbi4kbG8gZ2V0dGV4dC4kbG8gaW50bC1jb21wYXQuJGxvIGxvYWRtc2djYXQuJGxvIGxvY2FsZWFsaWFzLiRsbyBuZ2V0dGV4dC4kbG8gdGV4dGRvbWFpbi4kbG86ICQoc3JjZGlyKS9nZXR0ZXh0UC5oICQoc3JjZGlyKS9nbW8uaCAkKHNyY2RpcikvbG9hZGluZm8uaAotK2RjaWdldHRleHQuJGxvIGxvYWRtc2djYXQuJGxvOiAkKHNyY2RpcikvaGFzaC1zdHJpbmcuaAotK2V4cGxvZGVuYW1lLiRsbyBsMTBuZmxpc3QuJGxvOiAkKHNyY2RpcikvbG9hZGluZm8uaAotK2RjaWdldHRleHQuJGxvIGxvYWRtc2djYXQuJGxvIHBsdXJhbC4kbG8gcGx1cmFsLWV4cC4kbG86ICQoc3JjZGlyKS9wbHVyYWwtZXhwLmgKLStkY2lnZXR0ZXh0LiRsbzogJChzcmNkaXIpL2V2YWwtcGx1cmFsLmgKLStsb2NhbGNoYXJzZXQuJGxvOiAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmgKLStsb2NhbGVhbGlhcy4kbG8gbG9jYWxjaGFyc2V0LiRsbyByZWxvY2F0YWJsZS4kbG86ICQoc3JjZGlyKS9yZWxvY2F0YWJsZS5oCi0rcHJpbnRmLiRsbzogJChzcmNkaXIpL3ByaW50Zi1hcmdzLmggJChzcmNkaXIpL3ByaW50Zi1hcmdzLmMgJChzcmNkaXIpL3ByaW50Zi1wYXJzZS5oICQoc3JjZGlyKS93cHJpbnRmLXBhcnNlLmggJChzcmNkaXIpL3hzaXplLmggJChzcmNkaXIpL3ByaW50Zi1wYXJzZS5jICQoc3JjZGlyKS92YXNucHJpbnRmLmggJChzcmNkaXIpL3Zhc253cHJpbnRmLmggJChzcmNkaXIpL3Zhc25wcmludGYuYwotIAotIHRhZ3M6IFRBR1MKLSAKLSBUQUdTOiAkKEhFQURFUlMpICQoU09VUkNFUykKLSAJaGVyZT1gcHdkYDsgY2QgJChzcmNkaXIpICYmIGV0YWdzIC1vICQkaGVyZS9UQUdTICQoSEVBREVSUykgJChTT1VSQ0VTKQotIAotK2N0YWdzOiBDVEFHUwotKwotK0NUQUdTOiAkKEhFQURFUlMpICQoU09VUkNFUykKLSsJaGVyZT1gcHdkYDsgY2QgJChzcmNkaXIpICYmIGN0YWdzIC1vICQkaGVyZS9DVEFHUyAkKEhFQURFUlMpICQoU09VUkNFUykKLSsKLSBpZDogSUQKLSAKLSBJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpCi1AQCAtMTY2LDEyICs0NDQsMTkgQEAKLSAKLSAKLSBtb3N0bHljbGVhbjoKLS0Jcm0gLWYgKi5hICoubyAqLmxvIGNvcmUgY29yZS4qCi0rCXJtIC1mICouYSAqLmxhICoubyAqLm9iaiAqLmxvIGNvcmUgY29yZS4qCi0rCXJtIC1mIGxpYmdudWludGwuaCBsaWJpbnRsLmggY2hhcnNldC5hbGlhcyByZWYtYWRkLnNlZCByZWYtZGVsLnNlZAotKwlybSAtZiAtciAubGlicyBfbGlicwotIAotIGNsZWFuOiBtb3N0bHljbGVhbgotIAotIGRpc3RjbGVhbjogY2xlYW4KLS0Jcm0gLWYgTWFrZWZpbGUgSUQgVEFHUyBwbzJtc2cuc2VkIHBvMnRibC5zZWQgbGliaW50bC5oCi0rCXJtIC1mIE1ha2VmaWxlIElEIFRBR1MKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0rCSAgcm0gLWYgQ2hhbmdlTG9nLmluc3QgJChESVNURklMRVMubm9ybWFsKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotIAotIG1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgotIAlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7IgotQEAgLTE4MSwzMyArNDY2LDI3IEBACi0gIyBHTlUgZ2V0dGV4dCBuZWVkcyBub3QgY29udGFpbiB0aGUgZmlsZSBgVkVSU0lPTicgYnV0IGNvbnRhaW5zIHNvbWUKLSAjIG90aGVyIGZpbGVzIHdoaWNoIHNob3VsZCBub3QgYmUgZGlzdHJpYnV0ZWQgaW4gb3RoZXIgcGFja2FnZXMuCi0gZGlzdGRpciA9IC4uLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKLS1kaXN0IGRpc3RkaXI6IE1ha2VmaWxlICQoRElTVEZJTEVTKQotLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9IGdldHRleHQ7IHRoZW4gXAotLQkgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLmdldHRleHQpIjsgXAotK2Rpc3QgZGlzdGRpcjogTWFrZWZpbGUKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgIDogOyBcCi0gCWVsc2UgXAotLQkgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLm5vcm1hbCkiOyBcCi0tCWZpOyBcCi0tCWZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgJCRhZGRpdGlvbmFsOyBkbyBcCi0tCSAgbG4gJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpIDI+IC9kZXYvbnVsbCBcCi0tCSAgICB8fCBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcik7IFwKLS0JZG9uZQotLQotLWRpc3QtbGliYzoKLS0JdGFyIHpjdmYgaW50bC1nbGliYy50YXIuZ3ogJChDT01TUkNTKSAkKENPTUhEUlMpIGxpYmludGwuaC5nbGliYwotLQotLU1ha2VmaWxlOiBNYWtlZmlsZS5pbiAuLi9jb25maWcuc3RhdHVzCi0tCWNkIC4uIFwKLS0JICAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSsJICBpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiOyB0aGVuIFwKLSsJICAgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLmdldHRleHQpIjsgXAotKwkgIGVsc2UgXAotKwkgICAgYWRkaXRpb25hbD0iJChESVNURklMRVMubm9ybWFsKSI7IFwKLSsJICBmaTsgXAotKwkgICQoTUFLRSkgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpICQkYWRkaXRpb25hbDsgXAotKwkgIGZvciBmaWxlIGluIENoYW5nZUxvZyAkKERJU1RGSUxFUy5jb21tb24pICQoRElTVEZJTEVTLmdlbmVyYXRlZCkgJCRhZGRpdGlvbmFsOyBkbyBcCi0rCSAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBkaXI9LjsgZWxzZSBkaXI9JChzcmNkaXIpOyBmaTsgXAotKwkgICAgY3AgLXAgJCRkaXIvJCRmaWxlICQoZGlzdGRpcik7IFwKLSsJICBkb25lOyBcCi0rCWZpCi0gCi0tIyBUaGUgZGVwZW5kZW5jeSBmb3IgaW50bGguaW5zdCBpcyBkaWZmZXJlbnQgaW4gZ2V0dGV4dCBhbmQgYWxsIG90aGVyCi0tIyBwYWNrYWdlcy4gIEJlY2F1c2Ugd2UgY2Fubm90IHlvdSBHTlUgbWFrZSBmZWF0dXJlcyB3ZSBoYXZlIHRvIHNvbHZlCi0tIyB0aGUgcHJvYmxlbSB3aGlsZSByZXdyaXRpbmcgTWFrZWZpbGUuaW4uCi0tQEdUX1lFU0BpbnRsaC5pbnN0OiBpbnRsaC5pbnN0LmluIC4uL2NvbmZpZy5zdGF0dXMKLS1AR1RfWUVTQAljZCAuLiBcCi0tQEdUX1lFU0AJJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gXAotLUBHVF9ZRVNACSAgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0tQEdUX05PQC5QSE9OWTogaW50bGguaW5zdAotLUBHVF9OT0BpbnRsaC5pbnN0OgotK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSsJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotKyMgVGhpcyB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCwgYnV0IGRvZXNuJ3Qgd29yayBhbnkgbW9yZSB3aXRoIGF1dG9jb25mLTIuNTcsCi0rIyB3aGVuIEFDX0NPTkZJR19GSUxFUyhbaW50bC9NYWtlZmlsZTpzb21lZGlyL01ha2VmaWxlLmluXSkgaXMgdXNlZC4KLSsjCWNkICQodG9wX2J1aWxkZGlyKSAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSAKLSAjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgotICMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL25nZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbmdldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUzMzcyMTAzMiAtMDQwMAotQEAgLTAsMCArMSw2NSBAQAotKy8qIEltcGxlbWVudGF0aW9uIG9mIG5nZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgX19uZWVkX05VTEwKLSsjIGluY2x1ZGUgPHN0ZGRlZi5oPgotKyNlbHNlCi0rIyBpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIEp1c3QgZm9yIE5VTEwuICAqLwotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbHNlCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0rICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgTkdFVFRFWFQgX19uZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBOR0VUVEVYVCBsaWJpbnRsX25nZXR0ZXh0Ci0rIyBkZWZpbmUgRENOR0VUVEVYVCBsaWJpbnRsX2RjbmdldHRleHQKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0Ci0rICAgdGV4dCkuICAqLwotK2NoYXIgKgotK05HRVRURVhUIChjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSt7Ci0rICByZXR1cm4gRENOR0VUVEVYVCAoTlVMTCwgbXNnaWQxLCBtc2dpZDIsIG4sIExDX01FU1NBR0VTKTsKLSt9Ci0rCi0rI2lmZGVmIF9MSUJDCi0rLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rd2Vha19hbGlhcyAoX19uZ2V0dGV4dCwgbmdldHRleHQpOwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL29zMmNvbXBhdC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL29zMmNvbXBhdC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTM5NzIwMTIwIC0wNDAwCi1AQCAtMCwwICsxLDk4IEBACi0rLyogT1MvMiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2RlZmluZSBPUzJfQVdBUkUKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsKLSsvKiBBIHZlcnNpb24gb2YgZ2V0ZW52KCkgdGhhdCB3b3JrcyBmcm9tIERMTHMgKi8KLStleHRlcm4gdW5zaWduZWQgbG9uZyBEb3NTY2FuRW52IChjb25zdCB1bnNpZ25lZCBjaGFyICpwc3pOYW1lLCB1bnNpZ25lZCBjaGFyICoqcHBzelZhbHVlKTsKLSsKLStjaGFyICoKLStfbmxfZ2V0ZW52IChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHVuc2lnbmVkIGNoYXIgKnZhbHVlOwotKyAgaWYgKERvc1NjYW5FbnYgKG5hbWUsICZ2YWx1ZSkpCi0rICAgIHJldHVybiBOVUxMOwotKyAgZWxzZQotKyAgICByZXR1cm4gdmFsdWU7Ci0rfQotKwotKy8qIEEgZml4ZWQgc2l6ZSBidWZmZXIuICAqLwotK2NoYXIgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWVbTUFYUEFUSExFTisxXTsKLSsKLStjaGFyICpfbmxvczJfbGliZGlyID0gTlVMTDsKLStjaGFyICpfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gTlVMTDsKLStjaGFyICpfbmxvczJfbG9jYWxlZGlyID0gTlVMTDsKLSsKLStzdGF0aWMgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKSB2b2lkCi0rbmxvczJfaW5pdGlhbGl6ZSAoKQotK3sKLSsgIGNoYXIgKnJvb3QgPSBnZXRlbnYgKCJVTklYUk9PVCIpOwotKyAgY2hhciAqZ251bG9jYWxlZGlyID0gZ2V0ZW52ICgiR05VTE9DQUxFRElSIik7Ci0rCi0rICBfbmxvczJfbGliZGlyID0gZ251bG9jYWxlZGlyOwotKyAgaWYgKCFfbmxvczJfbGliZGlyKQotKyAgICB7Ci0rICAgICAgaWYgKHJvb3QpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHNpemVfdCBzbCA9IHN0cmxlbiAocm9vdCk7Ci0rICAgICAgICAgIF9ubG9zMl9saWJkaXIgPSAoY2hhciAqKSBtYWxsb2MgKHNsICsgc3RybGVuIChMSUJESVIpICsgMSk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xpYmRpciwgcm9vdCwgc2wpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9saWJkaXIgKyBzbCwgTElCRElSLCBzdHJsZW4gKExJQkRJUikgKyAxKTsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgICBfbmxvczJfbGliZGlyID0gTElCRElSOwotKyAgICB9Ci0rCi0rICBfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gZ251bG9jYWxlZGlyOwotKyAgaWYgKCFfbmxvczJfbG9jYWxlYWxpYXNwYXRoKQotKyAgICB7Ci0rICAgICAgaWYgKHJvb3QpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHNpemVfdCBzbCA9IHN0cmxlbiAocm9vdCk7Ci0rICAgICAgICAgIF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSAoY2hhciAqKSBtYWxsb2MgKHNsICsgc3RybGVuIChMT0NBTEVfQUxJQVNfUEFUSCkgKyAxKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbG9jYWxlYWxpYXNwYXRoLCByb290LCBzbCk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWFsaWFzcGF0aCArIHNsLCBMT0NBTEVfQUxJQVNfUEFUSCwgc3RybGVuIChMT0NBTEVfQUxJQVNfUEFUSCkgKyAxKTsKLSsgICAgICAgIH0KLSsgICAgIGVsc2UKLSsgICAgICAgIF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKLSsgICAgfQotKwotKyAgX25sb3MyX2xvY2FsZWRpciA9IGdudWxvY2FsZWRpcjsKLSsgIGlmICghX25sb3MyX2xvY2FsZWRpcikKLSsgICAgewotKyAgICAgIGlmIChyb290KQotKyAgICAgICAgewotKyAgICAgICAgICBzaXplX3Qgc2wgPSBzdHJsZW4gKHJvb3QpOwotKyAgICAgICAgICBfbmxvczJfbG9jYWxlZGlyID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTE9DQUxFRElSKSArIDEpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9sb2NhbGVkaXIsIHJvb3QsIHNsKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbG9jYWxlZGlyICsgc2wsIExPQ0FMRURJUiwgc3RybGVuIChMT0NBTEVESVIpICsgMSk7Ci0rICAgICAgICB9Ci0rICAgICAgZWxzZQotKyAgICAgICAgX25sb3MyX2xvY2FsZWRpciA9IExPQ0FMRURJUjsKLSsgICAgfQotKwotKyAgaWYgKHN0cmxlbiAoX25sb3MyX2xvY2FsZWRpcikgPD0gTUFYUEFUSExFTikKLSsgICAgc3RyY3B5IChsaWJpbnRsX25sX2RlZmF1bHRfZGlybmFtZSwgX25sb3MyX2xvY2FsZWRpcik7Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL29zMmNvbXBhdC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL29zMmNvbXBhdC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTQ0NzE5MzYwIC0wNDAwCi1AQCAtMCwwICsxLDQ2IEBACi0rLyogT1MvMiBjb21wYXRpYmlsaXR5IGRlZmluZXMuCi0rICAgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIGluY2x1ZGVkIGZyb20gY29uZmlnLmgKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogV2hlbiBpbmNsdWRlZCBmcm9tIG9zMmNvbXBhdC5oIHdlIG5lZWQgYWxsIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9ucyAqLwotKyNpZm5kZWYgT1MyX0FXQVJFCi0rCi0rI3VuZGVmIExJQkRJUgotKyNkZWZpbmUgTElCRElSCQkJX25sb3MyX2xpYmRpcgotK2V4dGVybiBjaGFyICpfbmxvczJfbGliZGlyOwotKwotKyN1bmRlZiBMT0NBTEVESVIKLSsjZGVmaW5lIExPQ0FMRURJUgkJX25sb3MyX2xvY2FsZWRpcgotK2V4dGVybiBjaGFyICpfbmxvczJfbG9jYWxlZGlyOwotKwotKyN1bmRlZiBMT0NBTEVfQUxJQVNfUEFUSAotKyNkZWZpbmUgTE9DQUxFX0FMSUFTX1BBVEgJX25sb3MyX2xvY2FsZWFsaWFzcGF0aAotK2V4dGVybiBjaGFyICpfbmxvczJfbG9jYWxlYWxpYXNwYXRoOwotKwotKyNlbmRpZgotKwotKyN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKLSsjZGVmaW5lIEhBVkVfU1RSQ0FTRUNNUCAxCi0rI2RlZmluZSBzdHJjYXNlY21wIHN0cmljbXAKLSsjZGVmaW5lIHN0cm5jYXNlY21wIHN0cm5pY21wCi0rCi0rLyogV2UgaGF2ZSBvdXIgb3duIGdldGVudigpIHdoaWNoIHdvcmtzIGV2ZW4gaWYgbGlicmFyeSBpcyBjb21waWxlZCBhcyBETEwgKi8KLSsjZGVmaW5lIGdldGVudiBfbmxfZ2V0ZW52Ci0rCi0rLyogT2xkZXIgdmVyc2lvbnMgb2YgZ2V0dGV4dCB1c2VkIC0xIGFzIHRoZSB2YWx1ZSBvZiBMQ19NRVNTQUdFUyAqLwotKyNkZWZpbmUgTENfTUVTU0FHRVNfQ09NUEFUICgtMSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9vc2RlcC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL29zZGVwLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41NTA3MTg0NDggLTA0MDAKLUBAIC0wLDAgKzEsMjQgQEAKLSsvKiBPUyBkZXBlbmRlbnQgcGFydHMgb2YgbGliaW50bC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmIGRlZmluZWQgX19FTVhfXwotKyMgaW5jbHVkZSAib3MyY29tcGF0LmMiCi0rI2Vsc2UKLSsvKiBBdm9pZCBBSVggY29tcGlsZXIgd2FybmluZy4gICovCi0rdHlwZWRlZiBpbnQgZHVtbXk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcGx1cmFsLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcGx1cmFsLmMJMjAwNC0wOS0xMiAxNDo0MDozNi41NzE0MTEyNTYgLTA0MDAKLUBAIC0wLDAgKzEsMTQ5MCBAQAotKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGZyb20gcGx1cmFsLnkKLSsgICBieSBHTlUgYmlzb24gMS4zNS4gICovCi0rCi0rI2RlZmluZSBZWUJJU09OIDEgIC8qIElkZW50aWZ5IEJpc29uIG91dHB1dC4gICovCi0rCi0rI2RlZmluZSB5eXBhcnNlIF9fZ2V0dGV4dHBhcnNlCi0rI2RlZmluZSB5eWxleCBfX2dldHRleHRsZXgKLSsjZGVmaW5lIHl5ZXJyb3IgX19nZXR0ZXh0ZXJyb3IKLSsjZGVmaW5lIHl5bHZhbCBfX2dldHRleHRsdmFsCi0rI2RlZmluZSB5eWNoYXIgX19nZXR0ZXh0Y2hhcgotKyNkZWZpbmUgeXlkZWJ1ZyBfX2dldHRleHRkZWJ1ZwotKyNkZWZpbmUgeXluZXJycyBfX2dldHRleHRuZXJycwotKyMgZGVmaW5lCUVRVU9QMgkyNTcKLSsjIGRlZmluZQlDTVBPUDIJMjU4Ci0rIyBkZWZpbmUJQURET1AyCTI1OQotKyMgZGVmaW5lCU1VTE9QMgkyNjAKLSsjIGRlZmluZQlOVU1CRVIJMjYxCi0rCi0rI2xpbmUgMSAicGx1cmFsLnkiCi0rCi0rLyogRXhwcmVzc2lvbiBwYXJzaW5nIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGhlIGJpc29uIGdlbmVyYXRlZCBwYXJzZXIgdXNlcyBhbGxvY2EuICBBSVggMyBmb3JjZXMgdXMgdG8gcHV0IHRoaXMKLSsgICBkZWNsYXJhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGRlY2xhcmF0aW9uIGluIGJpc29uJ3MKLSsgICBza2VsZXRvbiBmaWxlIGNvbWVzIHRvbyBsYXRlLiAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4KLSsgICBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUgYXJiaXRyYXJ5IHN5c3RlbSBoZWFkZXJzLiAgKi8KLSsjaWYgZGVmaW5lZCBfQUlYICYmICFkZWZpbmVkIF9fR05VQ19fCi0rICNwcmFnbWEgYWxsb2NhCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsKLSsvKiBUaGUgbWFpbiBmdW5jdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIHBhcnNlciBpcyBjYWxsZWQgX19nZXR0ZXh0cGFyc2UsCi0rICAgYnV0IHdlIHdhbnQgaXQgdG8gYmUgY2FsbGVkIFBMVVJBTF9QQVJTRS4gICovCi0rI2lmbmRlZiBfTElCQwotKyMgZGVmaW5lIF9fZ2V0dGV4dHBhcnNlIFBMVVJBTF9QQVJTRQotKyNlbmRpZgotKwotKyNkZWZpbmUgWVlMRVhfUEFSQU0JJigoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+Y3AKLSsjZGVmaW5lIFlZUEFSU0VfUEFSQU0JYXJnCi0rCi0rI2xpbmUgNDkgInBsdXJhbC55IgotKyNpZm5kZWYgWVlTVFlQRQotK3R5cGVkZWYgdW5pb24gewotKyAgdW5zaWduZWQgbG9uZyBpbnQgbnVtOwotKyAgZW51bSBvcGVyYXRvciBvcDsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpleHA7Ci0rfSB5eXN0eXBlOwotKyMgZGVmaW5lIFlZU1RZUEUgeXlzdHlwZQotKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCi0rI2VuZGlmCi0rI2xpbmUgNTUgInBsdXJhbC55IgotKwotKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGludCB5eWxleCAoWVlTVFlQRSAqbHZhbCwgY29uc3QgY2hhciAqKnBleHApOwotK3N0YXRpYyB2b2lkIHl5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cik7Ci0rCi0rLyogQWxsb2NhdGlvbiBvZiBleHByZXNzaW9ucy4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwIChpbnQgbmFyZ3MsIGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICogY29uc3QgKmFyZ3MpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqbmV3cDsKLSsKLSsgIC8qIElmIGFueSBvZiB0aGUgYXJndW1lbnQgY291bGQgbm90IGJlIG1hbGxvYydlZCwganVzdCByZXR1cm4gTlVMTC4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICBpZiAoYXJnc1tpXSA9PSBOVUxMKQotKyAgICAgIGdvdG8gZmFpbDsKLSsKLSsgIC8qIEFsbG9jYXRlIGEgbmV3IGV4cHJlc3Npb24uICAqLwotKyAgbmV3cCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsKLSsgIGlmIChuZXdwICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBuZXdwLT5uYXJncyA9IG5hcmdzOwotKyAgICAgIG5ld3AtPm9wZXJhdGlvbiA9IG9wOwotKyAgICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rCW5ld3AtPnZhbC5hcmdzW2ldID0gYXJnc1tpXTsKLSsgICAgICByZXR1cm4gbmV3cDsKLSsgICAgfQotKwotKyBmYWlsOgotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgRlJFRV9FWFBSRVNTSU9OIChhcmdzW2ldKTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzAgKGVudW0gb3BlcmF0b3Igb3ApCi0rewotKyAgcmV0dXJuIG5ld19leHAgKDAsIG9wLCBOVUxMKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8xIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMV07Ci0rCi0rICBhcmdzWzBdID0gcmlnaHQ7Ci0rICByZXR1cm4gbmV3X2V4cCAoMSwgb3AsIGFyZ3MpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMiAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmxlZnQsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1syXTsKLSsKLSsgIGFyZ3NbMF0gPSBsZWZ0OwotKyAgYXJnc1sxXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDIsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8zIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqYmV4cCwKLSsJICAgc3RydWN0IGV4cHJlc3Npb24gKnRicmFuY2gsIHN0cnVjdCBleHByZXNzaW9uICpmYnJhbmNoKQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzNdOwotKwotKyAgYXJnc1swXSA9IGJleHA7Ci0rICBhcmdzWzFdID0gdGJyYW5jaDsKLSsgIGFyZ3NbMl0gPSBmYnJhbmNoOwotKyAgcmV0dXJuIG5ld19leHAgKDMsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rI2lmbmRlZiBZWURFQlVHCi0rIyBkZWZpbmUgWVlERUJVRyAwCi0rI2VuZGlmCi0rCi0rCi0rCi0rI2RlZmluZQlZWUZJTkFMCQkyNwotKyNkZWZpbmUJWVlGTEFHCQktMzI3NjgKLSsjZGVmaW5lCVlZTlRCQVNFCTE2Ci0rCi0rLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAqLwotKyNkZWZpbmUgWVlUUkFOU0xBVEUoeCkgKCh1bnNpZ25lZCkoeCkgPD0gMjYxID8geXl0cmFuc2xhdGVbeF0gOiAxOCkKLSsKLSsvKiBZWVRSQU5TTEFURVtZWUxFWF0gLS0gQmlzb24gdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICovCi0rc3RhdGljIGNvbnN0IGNoYXIgeXl0cmFuc2xhdGVbXSA9Ci0rewotKyAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgIDEwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDUsICAgICAyLAotKyAgICAgIDE0LCAgICAxNSwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgMTIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgIDEzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgNCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAotKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgNiwgICAgIDcsICAgICA4LAotKyAgICAgICA5LCAgICAxMQotK307Ci0rCi0rI2lmIFlZREVCVUcKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlwcmhzW10gPQotK3sKLSsgICAgICAgMCwgICAgIDAsICAgICAyLCAgICAgOCwgICAgMTIsICAgIDE2LCAgICAyMCwgICAgMjQsICAgIDI4LCAgICAzMiwKLSsgICAgICAzNSwgICAgMzcsICAgIDM5Ci0rfTsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlyaHNbXSA9Ci0rewotKyAgICAgIDE3LCAgICAgMCwgICAgMTcsICAgICAzLCAgICAxNywgICAgMTIsICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA0LAotKyAgICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA1LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNiwgICAgMTcsICAgICAwLAotKyAgICAgIDE3LCAgICAgNywgICAgMTcsICAgICAwLCAgICAxNywgICAgIDgsICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA5LAotKyAgICAgIDE3LCAgICAgMCwgICAgMTAsICAgIDE3LCAgICAgMCwgICAgMTMsICAgICAwLCAgICAxMSwgICAgIDAsICAgIDE0LAotKyAgICAgIDE3LCAgICAxNSwgICAgIDAKLSt9OwotKwotKyNlbmRpZgotKwotKyNpZiBZWURFQlVHCi0rLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gKi8KLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlybGluZVtdID0KLSt7Ci0rICAgICAgIDAsICAgMTUwLCAgIDE1OCwgICAxNjIsICAgMTY2LCAgIDE3MCwgICAxNzQsICAgMTc4LCAgIDE4MiwgICAxODYsCi0rICAgICAxOTAsICAgMTk0LCAgIDE5OQotK307Ci0rI2VuZGlmCi0rCi0rCi0rI2lmIChZWURFQlVHKSB8fCBkZWZpbmVkIFlZRVJST1JfVkVSQk9TRQotKwotKy8qIFlZVE5BTUVbVE9LRU5fTlVNXSAtLSBTdHJpbmcgbmFtZSBvZiB0aGUgdG9rZW4gVE9LRU5fTlVNLiAqLwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQotK3sKLSsgICIkIiwgImVycm9yIiwgIiR1bmRlZmluZWQuIiwgIic/JyIsICInfCciLCAiJyYnIiwgIkVRVU9QMiIsICJDTVBPUDIiLCAKLSsgICJBRERPUDIiLCAiTVVMT1AyIiwgIichJyIsICJOVU1CRVIiLCAiJzonIiwgIiduJyIsICInKCciLCAiJyknIiwgCi0rICAic3RhcnQiLCAiZXhwIiwgMAotK307Ci0rI2VuZGlmCi0rCi0rLyogWVlSMVtZWU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gKi8KLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlyMVtdID0KLSt7Ci0rICAgICAgIDAsICAgIDE2LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsCi0rICAgICAgMTcsICAgIDE3LCAgICAxNwotK307Ci0rCi0rLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cjJbXSA9Ci0rewotKyAgICAgICAwLCAgICAgMSwgICAgIDUsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAyLAotKyAgICAgICAxLCAgICAgMSwgICAgIDMKLSt9OwotKwotKy8qIFlZREVGQUNUW1NdIC0tIGRlZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZSBTIHdoZW4gWVlUQUJMRQotKyAgIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8gbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4KLSsgICBlcnJvci4gKi8KLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZhY3RbXSA9Ci0rewotKyAgICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEwLCAgICAgMCwgICAgIDEsICAgICA5LCAgICAgMCwgICAgIDAsICAgICAwLAotKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgICAwLCAgICAgMywgICAgIDQsICAgICA1LAotKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAwLCAgICAgMAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5ZGVmZ290b1tdID0KLSt7Ci0rICAgICAgMjUsICAgICA1Ci0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlwYWN0W10gPQotK3sKLSsgICAgICAtOSwgICAgLTksLTMyNzY4LC0zMjc2OCwgICAgLTksICAgIDM0LC0zMjc2OCwgICAgMTEsICAgIC05LCAgICAtOSwKLSsgICAgICAtOSwgICAgLTksICAgIC05LCAgICAtOSwgICAgLTksLTMyNzY4LCAgICAyNCwgICAgMzksICAgIDQzLCAgICAxNiwKLSsgICAgICAyNiwgICAgLTMsLTMyNzY4LCAgICAtOSwgICAgMzQsICAgIDIxLCAgICA1MywtMzI3NjgKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXBnb3RvW10gPQotK3sKLSsgIC0zMjc2OCwgICAgLTEKLSt9OwotKwotKwotKyNkZWZpbmUJWVlMQVNUCQk1MwotKwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXRhYmxlW10gPQotK3sKLSsgICAgICAgNiwgICAgIDEsICAgICAyLCAgICAgNywgICAgIDMsICAgICA0LCAgICAxNCwgICAgMTYsICAgIDE3LCAgICAxOCwKLSsgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKLSsgICAgICAxNCwgICAgMjYsICAgIDI0LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgIDgsICAgICA5LCAgICAxMCwKLSsgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTMsICAgIDE0LCAgICAyMywgICAgIDgsICAgICA5LCAgICAxMCwKLSsgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxMSwKLSsgICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAyNwotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5Y2hlY2tbXSA9Ci0rewotKyAgICAgICAxLCAgICAxMCwgICAgMTEsICAgICA0LCAgICAxMywgICAgMTQsICAgICA5LCAgICAgOCwgICAgIDksICAgIDEwLAotKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAotKyAgICAgICA5LCAgICAgMCwgICAgMjMsICAgICA3LCAgICAgOCwgICAgIDksICAgIDE1LCAgICAgMywgICAgIDQsICAgICA1LAotKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAgOCwgICAgIDksICAgIDEyLCAgICAgMywgICAgIDQsICAgICA1LAotKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgICA2LAotKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgICAwCi0rfTsKLSsjZGVmaW5lIFlZUFVSRSAxCi0rCi0rLyogLSotQy0qLSAgTm90ZSBzb21lIGNvbXBpbGVycyBjaG9rZSBvbiBjb21tZW50cyBvbiBgI2xpbmUnIGxpbmVzLiAgKi8KLSsjbGluZSAzICIvdXNyL2xvY2FsL3NoYXJlL2Jpc29uL2Jpc29uLnNpbXBsZSIKLSsKLSsvKiBTa2VsZXRvbiBvdXRwdXQgcGFyc2VyIGZvciBiaXNvbiwKLSsKLSsgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rCi0rLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgY29waWVkIGJ5IEJpc29uIGludG8gYQotKyAgIEJpc29uIG91dHB1dCBmaWxlLCB5b3UgbWF5IHVzZSB0aGF0IG91dHB1dCBmaWxlIHdpdGhvdXQgcmVzdHJpY3Rpb24uCi0rICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotKyAgIGluIHZlcnNpb24gMS4yNCBvZiBCaXNvbi4gICovCi0rCi0rLyogVGhpcyBpcyB0aGUgcGFyc2VyIGNvZGUgdGhhdCBpcyB3cml0dGVuIGludG8gZWFjaCBiaXNvbiBwYXJzZXIgd2hlbgotKyAgIHRoZSAlc2VtYW50aWNfcGFyc2VyIGRlY2xhcmF0aW9uIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGdyYW1tYXIuCi0rICAgSXQgd2FzIHdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiBieSBzaW1wbGlmeWluZyB0aGUgaGFpcnkgcGFyc2VyCi0rICAgdXNlZCB3aGVuICVzZW1hbnRpY19wYXJzZXIgaXMgc3BlY2lmaWVkLiAgKi8KLSsKLSsvKiBBbGwgc3ltYm9scyBkZWZpbmVkIGJlbG93IHNob3VsZCBiZWdpbiB3aXRoIHl5IG9yIFlZLCB0byBhdm9pZAotKyAgIGluZnJpbmdpbmcgb24gdXNlciBuYW1lIHNwYWNlLiAgVGhpcyBzaG91bGQgYmUgZG9uZSBldmVuIGZvciBsb2NhbAotKyAgIHZhcmlhYmxlcywgYXMgdGhleSBtaWdodCBvdGhlcndpc2UgYmUgZXhwYW5kZWQgYnkgdXNlciBtYWNyb3MuCi0rICAgVGhlcmUgYXJlIHNvbWUgdW5hdm9pZGFibGUgZXhjZXB0aW9ucyB3aXRoaW4gaW5jbHVkZSBmaWxlcyB0bwotKyAgIGRlZmluZSBuZWNlc3NhcnkgbGlicmFyeSBzeW1ib2xzOyB0aGV5IGFyZSBub3RlZCAiSU5GUklOR0VTIE9OCi0rICAgVVNFUiBOQU1FIFNQQUNFIiBiZWxvdy4gICovCi0rCi0rI2lmICEgZGVmaW5lZCAoeXlvdmVyZmxvdykgfHwgZGVmaW5lZCAoWVlFUlJPUl9WRVJCT1NFKQotKwotKy8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3IgbWFsbG9jOyBkZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAgKi8KLSsKLSsjIGlmIFlZU1RBQ0tfVVNFX0FMTE9DQQotKyMgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotKyMgZWxzZQotKyMgIGlmbmRlZiBZWVNUQUNLX1VTRV9BTExPQ0EKLSsjICAgaWYgZGVmaW5lZCAoYWxsb2NhKSB8fCBkZWZpbmVkIChfQUxMT0NBX0gpCi0rIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZkZWYgX19HTlVDX18KLSsjICAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBfX2J1aWx0aW5fYWxsb2NhCi0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKyMgaWZkZWYgWVlTVEFDS19BTExPQwotKyAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScgd2FybmluZy4gKi8KLSsjICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsgfSB3aGlsZSAoMCkKLSsjIGVsc2UKLSsjICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0rIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0rIyAgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSsjICBlbmRpZgotKyMgIGRlZmluZSBZWVNUQUNLX0FMTE9DIG1hbGxvYwotKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUgZnJlZQotKyMgZW5kaWYKLSsjZW5kaWYgLyogISBkZWZpbmVkICh5eW92ZXJmbG93KSB8fCBkZWZpbmVkIChZWUVSUk9SX1ZFUkJPU0UpICovCi0rCi0rCi0rI2lmICghIGRlZmluZWQgKHl5b3ZlcmZsb3cpIFwKLSsgICAgICYmICghIGRlZmluZWQgKF9fY3BsdXNwbHVzKSBcCi0rCSB8fCAoWVlMVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQotKwotKy8qIEEgdHlwZSB0aGF0IGlzIHByb3Blcmx5IGFsaWduZWQgZm9yIGFueSBzdGFjayBtZW1iZXIuICAqLwotK3VuaW9uIHl5YWxsb2MKLSt7Ci0rICBzaG9ydCB5eXNzOwotKyAgWVlTVFlQRSB5eXZzOwotKyMgaWYgWVlMU1BfTkVFREVECi0rICBZWUxUWVBFIHl5bHM7Ci0rIyBlbmRpZgotK307Ci0rCi0rLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KLSsjIGRlZmluZSBZWVNUQUNLX0dBUF9NQVggKHNpemVvZiAodW5pb24geXlhbGxvYykgLSAxKQotKwotKy8qIFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAotKyAgIE4gZWxlbWVudHMuICAqLwotKyMgaWYgWVlMU1BfTkVFREVECi0rIyAgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAotKyAgICAgKChOKSAqIChzaXplb2YgKHNob3J0KSArIHNpemVvZiAoWVlTVFlQRSkgKyBzaXplb2YgKFlZTFRZUEUpKQlcCi0rICAgICAgKyAyICogWVlTVEFDS19HQVBfTUFYKQotKyMgZWxzZQotKyMgIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSsgICAgICgoTikgKiAoc2l6ZW9mIChzaG9ydCkgKyBzaXplb2YgKFlZU1RZUEUpKQkJCQlcCi0rICAgICAgKyBZWVNUQUNLX0dBUF9NQVgpCi0rIyBlbmRpZgotKwotKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbwotKyAgIG5vdCBvdmVybGFwLiAgKi8KLSsjIGlmbmRlZiBZWUNPUFkKLSsjICBpZiAxIDwgX19HTlVDX18KLSsjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpIFwKLSsgICAgICBfX2J1aWx0aW5fbWVtY3B5IChUbywgRnJvbSwgKENvdW50KSAqIHNpemVvZiAoKihGcm9tKSkpCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwKLSsgICAgICBkbwkJCQkJXAotKwl7CQkJCQlcCi0rCSAgcmVnaXN0ZXIgWVlTSVpFX1QgeXlpOwkJXAotKwkgIGZvciAoeXlpID0gMDsgeXlpIDwgKENvdW50KTsgeXlpKyspCVwKLSsJICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAotKwl9CQkJCQlcCi0rICAgICAgd2hpbGUgKDApCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCi0rICAgbG9jYWwgdmFyaWFibGVzIFlZU0laRSBhbmQgWVlTVEFDS1NJWkUgZ2l2ZSB0aGUgb2xkIGFuZCBuZXcgbnVtYmVyIG9mCi0rICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlvbiBvZiB0aGUKLSsgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAotKyAgIHN0YWNrLiAgKi8KLSsjIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrKQkJCQkJXAotKyAgICBkbwkJCQkJCQkJCVwKLSsgICAgICB7CQkJCQkJCQkJXAotKwlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKLSsJWVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAotKwlTdGFjayA9ICZ5eXB0ci0+U3RhY2s7CQkJCQkJXAotKwl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVg7CVwKLSsJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAotKyAgICAgIH0JCQkJCQkJCQlcCi0rICAgIHdoaWxlICgwKQotKwotKyNlbmRpZgotKwotKwotKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKSAmJiBkZWZpbmVkIChfX1NJWkVfVFlQRV9fKQotKyMgZGVmaW5lIFlZU0laRV9UIF9fU0laRV9UWVBFX18KLSsjZW5kaWYKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkgJiYgZGVmaW5lZCAoc2l6ZV90KQotKyMgZGVmaW5lIFlZU0laRV9UIHNpemVfdAotKyNlbmRpZgotKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKQotKyMgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0rIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAotKyMgZW5kaWYKLSsjZW5kaWYKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkKLSsjIGRlZmluZSBZWVNJWkVfVCB1bnNpZ25lZCBpbnQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCi0rI2RlZmluZSB5eWNsZWFyaW4JKHl5Y2hhciA9IFlZRU1QVFkpCi0rI2RlZmluZSBZWUVNUFRZCQktMgotKyNkZWZpbmUgWVlFT0YJCTAKLSsjZGVmaW5lIFlZQUNDRVBUCWdvdG8geXlhY2NlcHRsYWIKLSsjZGVmaW5lIFlZQUJPUlQgCWdvdG8geXlhYm9ydGxhYgotKyNkZWZpbmUgWVlFUlJPUgkJZ290byB5eWVycmxhYjEKLSsvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNhbGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5Ci0rICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSsgICBPbmNlIEdDQyB2ZXJzaW9uIDIgaGFzIHN1cHBsYW50ZWQgdmVyc2lvbiAxLCB0aGlzIGNhbiBnby4gICovCi0rI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKLSsjZGVmaW5lIFlZUkVDT1ZFUklORygpICAoISF5eWVycnN0YXR1cykKLSsjZGVmaW5lIFlZQkFDS1VQKFRva2VuLCBWYWx1ZSkJCQkJCVwKLStkbwkJCQkJCQkJXAotKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVuID09IDEpCQkJCVwKLSsgICAgewkJCQkJCQkJXAotKyAgICAgIHl5Y2hhciA9IChUb2tlbik7CQkJCQkJXAotKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAotKyAgICAgIHl5Y2hhcjEgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsJCQkJXAotKyAgICAgIFlZUE9QU1RBQ0s7CQkJCQkJXAotKyAgICAgIGdvdG8geXliYWNrdXA7CQkJCQkJXAotKyAgICB9CQkJCQkJCQlcCi0rICBlbHNlCQkJCQkJCQlcCi0rICAgIHsgCQkJCQkJCQlcCi0rICAgICAgeXllcnJvciAoInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKTsJCQlcCi0rICAgICAgWVlFUlJPUjsJCQkJCQkJXAotKyAgICB9CQkJCQkJCQlcCi0rd2hpbGUgKDApCi0rCi0rI2RlZmluZSBZWVRFUlJPUgkxCi0rI2RlZmluZSBZWUVSUkNPREUJMjU2Ci0rCi0rCi0rLyogWVlMTE9DX0RFRkFVTFQgLS0gQ29tcHV0ZSB0aGUgZGVmYXVsdCBsb2NhdGlvbiAoYmVmb3JlIHRoZSBhY3Rpb25zCi0rICAgYXJlIHJ1bikuCi0rCi0rICAgV2hlbiBZWUxMT0NfREVGQVVMVCBpcyBydW4sIENVUlJFTlQgaXMgc2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUKLSsgICBmaXJzdCB0b2tlbi4gIEJ5IGRlZmF1bHQsIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciByYW5nZXMsIGV4dGVuZAotKyAgIGl0cyByYW5nZSB0byB0aGUgbGFzdCBzeW1ib2wuICAqLwotKwotKyNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKLSsjIGRlZmluZSBZWUxMT0NfREVGQVVMVChDdXJyZW50LCBSaHMsIE4pICAgICAgIAlcCi0rICAgQ3VycmVudC5sYXN0X2xpbmUgICA9IFJoc1tOXS5sYXN0X2xpbmU7CVwKLSsgICBDdXJyZW50Lmxhc3RfY29sdW1uID0gUmhzW05dLmxhc3RfY29sdW1uOwotKyNlbmRpZgotKwotKwotKy8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBhcmd1bWVudHMuICAqLwotKwotKyNpZiBZWVBVUkUKLSsjIGlmIFlZTFNQX05FRURFRAotKyMgIGlmZGVmIFlZTEVYX1BBUkFNCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MsIFlZTEVYX1BBUkFNKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCwgJnl5bGxvYykKLSsjICBlbmRpZgotKyMgZWxzZSAvKiAhWVlMU1BfTkVFREVEICovCi0rIyAgaWZkZWYgWVlMRVhfUEFSQU0KLSsjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgWVlMRVgJCXl5bGV4ICgmeXlsdmFsKQotKyMgIGVuZGlmCi0rIyBlbmRpZiAvKiAhWVlMU1BfTkVFREVEICovCi0rI2Vsc2UgLyogIVlZUFVSRSAqLwotKyMgZGVmaW5lIFlZTEVYCQkJeXlsZXggKCkKLSsjZW5kaWYgLyogIVlZUFVSRSAqLwotKwotKwotKy8qIEVuYWJsZSBkZWJ1Z2dpbmcgaWYgcmVxdWVzdGVkLiAgKi8KLSsjaWYgWVlERUJVRwotKwotKyMgaWZuZGVmIFlZRlBSSU5URgotKyMgIGluY2x1ZGUgPHN0ZGlvLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSsjICBkZWZpbmUgWVlGUFJJTlRGIGZwcmludGYKLSsjIGVuZGlmCi0rCi0rIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCQkJXAotK2RvIHsJCQkJCQlcCi0rICBpZiAoeXlkZWJ1ZykJCQkJCVwKLSsgICAgWVlGUFJJTlRGIEFyZ3M7CQkJCVwKLSt9IHdoaWxlICgwKQotKy8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0IHVuaW5pdGlhbGl6ZWQgc28gdGhhdAotKyAgIG11bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLwotK2ludCB5eWRlYnVnOwotKyNlbHNlIC8qICFZWURFQlVHICovCi0rIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCi0rI2VuZGlmIC8qICFZWURFQlVHICovCi0rCi0rLyogWVlJTklUREVQVEggLS0gaW5pdGlhbCBzaXplIG9mIHRoZSBwYXJzZXIncyBzdGFja3MuICAqLwotKyNpZm5kZWYJWVlJTklUREVQVEgKLSsjIGRlZmluZSBZWUlOSVRERVBUSCAyMDAKLSsjZW5kaWYKLSsKLSsvKiBZWU1BWERFUFRIIC0tIG1heGltdW0gc2l6ZSB0aGUgc3RhY2tzIGNhbiBncm93IHRvIChlZmZlY3RpdmUgb25seQotKyAgIGlmIHRoZSBidWlsdC1pbiBzdGFjayBleHRlbnNpb24gbWV0aG9kIGlzIHVzZWQpLgotKwotKyAgIERvIG5vdCBtYWtlIHRoaXMgdmFsdWUgdG9vIGxhcmdlOyB0aGUgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmCi0rICAgU0laRV9NQVggPCBZWVNUQUNLX0JZVEVTIChZWU1BWERFUFRIKQotKyAgIGV2YWx1YXRlZCB3aXRoIGluZmluaXRlLXByZWNpc2lvbiBpbnRlZ2VyIGFyaXRobWV0aWMuICAqLwotKwotKyNpZiBZWU1BWERFUFRIID09IDAKLSsjIHVuZGVmIFlZTUFYREVQVEgKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFlZTUFYREVQVEgKLSsjIGRlZmluZSBZWU1BWERFUFRIIDEwMDAwCi0rI2VuZGlmCi0rDAotKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSsKLSsjIGlmbmRlZiB5eXN0cmxlbgotKyMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19IKQotKyMgICBkZWZpbmUgeXlzdHJsZW4gc3RybGVuCi0rIyAgZWxzZQotKy8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KLStzdGF0aWMgWVlTSVpFX1QKLSsjICAgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotK3l5c3RybGVuIChjb25zdCBjaGFyICp5eXN0cikKLSsjICAgZWxzZQotK3l5c3RybGVuICh5eXN0cikKLSsgICAgIGNvbnN0IGNoYXIgKnl5c3RyOwotKyMgICBlbmRpZgotK3sKLSsgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3RyOwotKwotKyAgd2hpbGUgKCp5eXMrKyAhPSAnXDAnKQotKyAgICBjb250aW51ZTsKLSsKLSsgIHJldHVybiB5eXMgLSB5eXN0ciAtIDE7Ci0rfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKyMgaWZuZGVmIHl5c3RwY3B5Ci0rIyAgaWYgZGVmaW5lZCAoX19HTElCQ19fKSAmJiBkZWZpbmVkIChfU1RSSU5HX0gpICYmIGRlZmluZWQgKF9HTlVfU09VUkNFKQotKyMgICBkZWZpbmUgeXlzdHBjcHkgc3RwY3B5Ci0rIyAgZWxzZQotKy8qIENvcHkgWVlTUkMgdG8gWVlERVNULCByZXR1cm5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIHRlcm1pbmF0aW5nICdcMCcgaW4KLSsgICBZWURFU1QuICAqLwotK3N0YXRpYyBjaGFyICoKLSsjICAgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotK3l5c3RwY3B5IChjaGFyICp5eWRlc3QsIGNvbnN0IGNoYXIgKnl5c3JjKQotKyMgICBlbHNlCi0reXlzdHBjcHkgKHl5ZGVzdCwgeXlzcmMpCi0rICAgICBjaGFyICp5eWRlc3Q7Ci0rICAgICBjb25zdCBjaGFyICp5eXNyYzsKLSsjICAgZW5kaWYKLSt7Ci0rICByZWdpc3RlciBjaGFyICp5eWQgPSB5eWRlc3Q7Ci0rICByZWdpc3RlciBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKLSsKLSsgIHdoaWxlICgoKnl5ZCsrID0gKnl5cysrKSAhPSAnXDAnKQotKyAgICBjb250aW51ZTsKLSsKLSsgIHJldHVybiB5eWQgLSAxOwotK30KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsMCi0rI2xpbmUgMzE1ICIvdXNyL2xvY2FsL3NoYXJlL2Jpc29uL2Jpc29uLnNpbXBsZSIKLSsKLSsKLSsvKiBUaGUgdXNlciBjYW4gZGVmaW5lIFlZUEFSU0VfUEFSQU0gYXMgdGhlIG5hbWUgb2YgYW4gYXJndW1lbnQgdG8gYmUgcGFzc2VkCi0rICAgaW50byB5eXBhcnNlLiAgVGhlIGFyZ3VtZW50IHNob3VsZCBoYXZlIHR5cGUgdm9pZCAqLgotKyAgIEl0IHNob3VsZCBhY3R1YWxseSBwb2ludCB0byBhbiBvYmplY3QuCi0rICAgR3JhbW1hciBhY3Rpb25zIGNhbiBhY2Nlc3MgdGhlIHZhcmlhYmxlIGJ5IGNhc3RpbmcgaXQKLSsgICB0byB0aGUgcHJvcGVyIHBvaW50ZXIgdHlwZS4gICovCi0rCi0rI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSsjIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9BUkcgdm9pZCAqWVlQQVJTRV9QQVJBTQotKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0RFQ0wKLSsjIGVsc2UKLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9BUkcgWVlQQVJTRV9QQVJBTQotKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0RFQ0wgdm9pZCAqWVlQQVJTRV9QQVJBTTsKLSsjIGVuZGlmCi0rI2Vsc2UgLyogIVlZUEFSU0VfUEFSQU0gKi8KLSsjIGRlZmluZSBZWVBBUlNFX1BBUkFNX0FSRwotKyMgZGVmaW5lIFlZUEFSU0VfUEFSQU1fREVDTAotKyNlbmRpZiAvKiAhWVlQQVJTRV9QQVJBTSAqLwotKwotKy8qIFByZXZlbnQgd2FybmluZyBpZiAtV3N0cmljdC1wcm90b3R5cGVzLiAgKi8KLSsjaWZkZWYgX19HTlVDX18KLSsjIGlmZGVmIFlZUEFSU0VfUEFSQU0KLStpbnQgeXlwYXJzZSAodm9pZCAqKTsKLSsjIGVsc2UKLStpbnQgeXlwYXJzZSAodm9pZCk7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKy8qIFlZX0RFQ0xfVkFSSUFCTEVTIC0tIGRlcGVuZGluZyB3aGV0aGVyIHdlIHVzZSBhIHB1cmUgcGFyc2VyLAotKyAgIHZhcmlhYmxlcyBhcmUgZ2xvYmFsLCBvciBsb2NhbCB0byBZWVBBUlNFLiAgKi8KLSsKLSsjZGVmaW5lIFlZX0RFQ0xfTk9OX0xTUF9WQVJJQUJMRVMJCQlcCi0rLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwkJCQlcCi0raW50IHl5Y2hhcjsJCQkJCQlcCi0rCQkJCQkJCVwKLSsvKiBUaGUgc2VtYW50aWMgdmFsdWUgb2YgdGhlIGxvb2thaGVhZCBzeW1ib2wuICovCVwKLStZWVNUWVBFIHl5bHZhbDsJCQkJCQlcCi0rCQkJCQkJCVwKLSsvKiBOdW1iZXIgb2YgcGFyc2UgZXJyb3JzIHNvIGZhci4gICovCQkJXAotK2ludCB5eW5lcnJzOwotKwotKyNpZiBZWUxTUF9ORUVERUQKLSsjIGRlZmluZSBZWV9ERUNMX1ZBUklBQkxFUwkJCVwKLStZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCQkJXAotKwkJCQkJCVwKLSsvKiBMb2NhdGlvbiBkYXRhIGZvciB0aGUgbG9va2FoZWFkIHN5bWJvbC4gICovCVwKLStZWUxUWVBFIHl5bGxvYzsKLSsjZWxzZQotKyMgZGVmaW5lIFlZX0RFQ0xfVkFSSUFCTEVTCQkJXAotK1lZX0RFQ0xfTk9OX0xTUF9WQVJJQUJMRVMKLSsjZW5kaWYKLSsKLSsKLSsvKiBJZiBub25yZWVudHJhbnQsIGdlbmVyYXRlIHRoZSB2YXJpYWJsZXMgaGVyZS4gKi8KLSsKLSsjaWYgIVlZUFVSRQotK1lZX0RFQ0xfVkFSSUFCTEVTCi0rI2VuZGlmICAvKiAhWVlQVVJFICovCi0rCi0raW50Ci0reXlwYXJzZSAoWVlQQVJTRV9QQVJBTV9BUkcpCi0rICAgICBZWVBBUlNFX1BBUkFNX0RFQ0wKLSt7Ci0rICAvKiBJZiByZWVudHJhbnQsIGdlbmVyYXRlIHRoZSB2YXJpYWJsZXMgaGVyZS4gKi8KLSsjaWYgWVlQVVJFCi0rICBZWV9ERUNMX1ZBUklBQkxFUwotKyNlbmRpZiAgLyogIVlZUFVSRSAqLwotKwotKyAgcmVnaXN0ZXIgaW50IHl5c3RhdGU7Ci0rICByZWdpc3RlciBpbnQgeXluOwotKyAgaW50IHl5cmVzdWx0OwotKyAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZvcmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCi0rICBpbnQgeXllcnJzdGF0dXM7Ci0rICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCi0rICBpbnQgeXljaGFyMSA9IDA7Ci0rCi0rICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgotKyAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0YXRlcywKLSsgICAgIGB5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMsCi0rICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgotKwotKyAgICAgUmVmZXIgdG8gdGhlIHN0YWNrcyB0aHJ1IHNlcGFyYXRlIHBvaW50ZXJzLCB0byBhbGxvdyB5eW92ZXJmbG93Ci0rICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KLSsKLSsgIC8qIFRoZSBzdGF0ZSBzdGFjay4gKi8KLSsgIHNob3J0CXl5c3NhW1lZSU5JVERFUFRIXTsKLSsgIHNob3J0ICp5eXNzID0geXlzc2E7Ci0rICByZWdpc3RlciBzaG9ydCAqeXlzc3A7Ci0rCi0rICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLwotKyAgWVlTVFlQRSB5eXZzYVtZWUlOSVRERVBUSF07Ci0rICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0rICByZWdpc3RlciBZWVNUWVBFICp5eXZzcDsKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLwotKyAgWVlMVFlQRSB5eWxzYVtZWUlOSVRERVBUSF07Ci0rICBZWUxUWVBFICp5eWxzID0geXlsc2E7Ci0rICBZWUxUWVBFICp5eWxzcDsKLSsjZW5kaWYKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rIyBkZWZpbmUgWVlQT1BTVEFDSyAgICh5eXZzcC0tLCB5eXNzcC0tLCB5eWxzcC0tKQotKyNlbHNlCi0rIyBkZWZpbmUgWVlQT1BTVEFDSyAgICh5eXZzcC0tLCB5eXNzcC0tKQotKyNlbmRpZgotKwotKyAgWVlTSVpFX1QgeXlzdGFja3NpemUgPSBZWUlOSVRERVBUSDsKLSsKLSsKLSsgIC8qIFRoZSB2YXJpYWJsZXMgdXNlZCB0byByZXR1cm4gc2VtYW50aWMgdmFsdWUgYW5kIGxvY2F0aW9uIGZyb20gdGhlCi0rICAgICBhY3Rpb24gcm91dGluZXMuICAqLwotKyAgWVlTVFlQRSB5eXZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICBZWUxUWVBFIHl5bG9jOwotKyNlbmRpZgotKwotKyAgLyogV2hlbiByZWR1Y2luZywgdGhlIG51bWJlciBvZiBzeW1ib2xzIG9uIHRoZSBSSFMgb2YgdGhlIHJlZHVjZWQKLSsgICAgIHJ1bGUuICovCi0rICBpbnQgeXlsZW47Ci0rCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxuIikpOwotKwotKyAgeXlzdGF0ZSA9IDA7Ci0rICB5eWVycnN0YXR1cyA9IDA7Ci0rICB5eW5lcnJzID0gMDsKLSsgIHl5Y2hhciA9IFlZRU1QVFk7CQkvKiBDYXVzZSBhIHRva2VuIHRvIGJlIHJlYWQuICAqLwotKwotKyAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4KLSsgICAgIFdhc3RlIG9uZSBlbGVtZW50IG9mIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFjawotKyAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgotKyAgICAgVGhlIHdhc3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLwotKwotKyAgeXlzc3AgPSB5eXNzOwotKyAgeXl2c3AgPSB5eXZzOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIHl5bHNwID0geXlsczsKLSsjZW5kaWYKLSsgIGdvdG8geXlzZXRzdGF0ZTsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5bmV3c3RhdGUgLS0gUHVzaCBhIG5ldyBzdGF0ZSwgd2hpY2ggaXMgZm91bmQgaW4geXlzdGF0ZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSsgeXluZXdzdGF0ZToKLSsgIC8qIEluIGFsbCBjYXNlcywgd2hlbiB5b3UgZ2V0IGhlcmUsIHRoZSB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2tzCi0rICAgICBoYXZlIGp1c3QgYmVlbiBwdXNoZWQuIHNvIHB1c2hpbmcgYSBzdGF0ZSBoZXJlIGV2ZW5zIHRoZSBzdGFja3MuCi0rICAgICAqLwotKyAgeXlzc3ArKzsKLSsKLSsgeXlzZXRzdGF0ZToKLSsgICp5eXNzcCA9IHl5c3RhdGU7Ci0rCi0rICBpZiAoeXlzc3AgPj0geXlzcyArIHl5c3RhY2tzaXplIC0gMSkKLSsgICAgewotKyAgICAgIC8qIEdldCB0aGUgY3VycmVudCB1c2VkIHNpemUgb2YgdGhlIHRocmVlIHN0YWNrcywgaW4gZWxlbWVudHMuICAqLwotKyAgICAgIFlZU0laRV9UIHl5c2l6ZSA9IHl5c3NwIC0geXlzcyArIDE7Ci0rCi0rI2lmZGVmIHl5b3ZlcmZsb3cKLSsgICAgICB7Ci0rCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9jYXRlIHRoZSBzdGFjay4gVXNlIGNvcGllcyBvZgotKwkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCi0rCSAgIG1lbW9yeS4gICovCi0rCVlZU1RZUEUgKnl5dnMxID0geXl2czsKLSsJc2hvcnQgKnl5c3MxID0geXlzczsKLSsKLSsJLyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMgZm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCi0rCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgKi8KLSsjIGlmIFlZTFNQX05FRURFRAotKwlZWUxUWVBFICp5eWxzMSA9IHl5bHM7Ci0rCS8qIFRoaXMgdXNlZCB0byBiZSBhIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywKLSsJICAgYnV0IHRoYXQgbWlnaHQgYmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCi0rCXl5b3ZlcmZsb3cgKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciLAotKwkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAotKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotKwkJICAgICZ5eWxzMSwgeXlzaXplICogc2l6ZW9mICgqeXlsc3ApLAotKwkJICAgICZ5eXN0YWNrc2l6ZSk7Ci0rCXl5bHMgPSB5eWxzMTsKLSsjIGVsc2UKLSsJeXlvdmVyZmxvdyAoInBhcnNlciBzdGFjayBvdmVyZmxvdyIsCi0rCQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCi0rCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0rCQkgICAgJnl5c3RhY2tzaXplKTsKLSsjIGVuZGlmCi0rCXl5c3MgPSB5eXNzMTsKLSsJeXl2cyA9IHl5dnMxOwotKyAgICAgIH0KLSsjZWxzZSAvKiBubyB5eW92ZXJmbG93ICovCi0rIyBpZm5kZWYgWVlTVEFDS19SRUxPQ0FURQotKyAgICAgIGdvdG8geXlvdmVyZmxvd2xhYjsKLSsjIGVsc2UKLSsgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KLSsgICAgICBpZiAoeXlzdGFja3NpemUgPj0gWVlNQVhERVBUSCkKLSsJZ290byB5eW92ZXJmbG93bGFiOwotKyAgICAgIHl5c3RhY2tzaXplICo9IDI7Ci0rICAgICAgaWYgKHl5c3RhY2tzaXplID4gWVlNQVhERVBUSCkKLSsJeXlzdGFja3NpemUgPSBZWU1BWERFUFRIOwotKwotKyAgICAgIHsKLSsJc2hvcnQgKnl5c3MxID0geXlzczsKLSsJdW5pb24geXlhbGxvYyAqeXlwdHIgPQotKwkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7Ci0rCWlmICghIHl5cHRyKQotKwkgIGdvdG8geXlvdmVyZmxvd2xhYjsKLSsJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7Ci0rCVlZU1RBQ0tfUkVMT0NBVEUgKHl5dnMpOwotKyMgaWYgWVlMU1BfTkVFREVECi0rCVlZU1RBQ0tfUkVMT0NBVEUgKHl5bHMpOwotKyMgZW5kaWYKLSsjIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKLSsJaWYgKHl5c3MxICE9IHl5c3NhKQotKwkgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwotKyAgICAgIH0KLSsjIGVuZGlmCi0rI2VuZGlmIC8qIG5vIHl5b3ZlcmZsb3cgKi8KLSsKLSsgICAgICB5eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOwotKyAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgICAgIHl5bHNwID0geXlscyArIHl5c2l6ZSAtIDE7Ci0rI2VuZGlmCi0rCi0rICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhY2sgc2l6ZSBpbmNyZWFzZWQgdG8gJWx1XG4iLAotKwkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7Ci0rCi0rICAgICAgaWYgKHl5c3NwID49IHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEpCi0rCVlZQUJPUlQ7Ci0rICAgIH0KLSsKLSsgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0YXRlKSk7Ci0rCi0rICBnb3RvIHl5YmFja3VwOwotKwotKwotKy8qLS0tLS0tLS0tLS0uCi0rfCB5eWJhY2t1cC4gIHwKLStgLS0tLS0tLS0tLS0qLwotK3l5YmFja3VwOgotKwotKy8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICAqLwotKy8qIFJlYWQgYSBsb29rYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwotKy8qIHl5cmVzdW1lOiAqLwotKwotKyAgLyogRmlyc3QgdHJ5IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGhvdXQgcmVmZXJlbmNlIHRvIGxvb2thaGVhZCB0b2tlbi4gICovCi0rCi0rICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0rICBpZiAoeXluID09IFlZRkxBRykKLSsgICAgZ290byB5eWRlZmF1bHQ7Ci0rCi0rICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9va2FoZWFkIHRva2VuIGlmIGRvbid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwotKwotKyAgLyogeXljaGFyIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GCi0rICAgICBvciBhIHZhbGlkIHRva2VuIGluIGV4dGVybmFsIGZvcm0uICAqLwotKwotKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQotKyAgICB7Ci0rICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiUmVhZGluZyBhIHRva2VuOiAiKSk7Ci0rICAgICAgeXljaGFyID0gWVlMRVg7Ci0rICAgIH0KLSsKLSsgIC8qIENvbnZlcnQgdG9rZW4gdG8gaW50ZXJuYWwgZm9ybSAoaW4geXljaGFyMSkgZm9yIGluZGV4aW5nIHRhYmxlcyB3aXRoICovCi0rCi0rICBpZiAoeXljaGFyIDw9IDApCQkvKiBUaGlzIG1lYW5zIGVuZCBvZiBpbnB1dC4gKi8KLSsgICAgewotKyAgICAgIHl5Y2hhcjEgPSAwOwotKyAgICAgIHl5Y2hhciA9IFlZRU9GOwkJLyogRG9uJ3QgY2FsbCBZWUxFWCBhbnkgbW9yZSAqLwotKwotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIk5vdyBhdCBlbmQgb2YgaW5wdXQuXG4iKSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHl5Y2hhcjEgPSBZWVRSQU5TTEFURSAoeXljaGFyKTsKLSsKLSsjaWYgWVlERUJVRwotKyAgICAgLyogV2UgaGF2ZSB0byBrZWVwIHRoaXMgYCNpZiBZWURFQlVHJywgc2luY2Ugd2UgdXNlIHZhcmlhYmxlcwotKwl3aGljaCBhcmUgZGVmaW5lZCBvbmx5IGlmIGBZWURFQlVHJyBpcyBzZXQuICAqLwotKyAgICAgIGlmICh5eWRlYnVnKQotKwl7Ci0rCSAgWVlGUFJJTlRGIChzdGRlcnIsICJOZXh0IHRva2VuIGlzICVkICglcyIsCi0rCQkgICAgIHl5Y2hhciwgeXl0bmFtZVt5eWNoYXIxXSk7Ci0rCSAgLyogR2l2ZSB0aGUgaW5kaXZpZHVhbCBwYXJzZXIgYSB3YXkgdG8gcHJpbnQgdGhlIHByZWNpc2UKLSsJICAgICBtZWFuaW5nIG9mIGEgdG9rZW4sIGZvciBmdXJ0aGVyIGRlYnVnZ2luZyBpbmZvLiAgKi8KLSsjIGlmZGVmIFlZUFJJTlQKLSsJICBZWVBSSU5UIChzdGRlcnIsIHl5Y2hhciwgeXlsdmFsKTsKLSsjIGVuZGlmCi0rCSAgWVlGUFJJTlRGIChzdGRlcnIsICIpXG4iKTsKLSsJfQotKyNlbmRpZgotKyAgICB9Ci0rCi0rICB5eW4gKz0geXljaGFyMTsKLSsgIGlmICh5eW4gPCAwIHx8IHl5biA+IFlZTEFTVCB8fCB5eWNoZWNrW3l5bl0gIT0geXljaGFyMSkKLSsgICAgZ290byB5eWRlZmF1bHQ7Ci0rCi0rICB5eW4gPSB5eXRhYmxlW3l5bl07Ci0rCi0rICAvKiB5eW4gaXMgd2hhdCB0byBkbyBmb3IgdGhpcyB0b2tlbiB0eXBlIGluIHRoaXMgc3RhdGUuCi0rICAgICBOZWdhdGl2ZSA9PiByZWR1Y2UsIC15eW4gaXMgcnVsZSBudW1iZXIuCi0rICAgICBQb3NpdGl2ZSA9PiBzaGlmdCwgeXluIGlzIG5ldyBzdGF0ZS4KLSsgICAgICAgTmV3IHN0YXRlIGlzIGZpbmFsIHN0YXRlID0+IGRvbid0IGJvdGhlciB0byBzaGlmdCwKLSsgICAgICAganVzdCByZXR1cm4gc3VjY2Vzcy4KLSsgICAgIDAsIG9yIG1vc3QgbmVnYXRpdmUgbnVtYmVyID0+IGVycm9yLiAgKi8KLSsKLSsgIGlmICh5eW4gPCAwKQotKyAgICB7Ci0rICAgICAgaWYgKHl5biA9PSBZWUZMQUcpCi0rCWdvdG8geXllcnJsYWI7Ci0rICAgICAgeXluID0gLXl5bjsKLSsgICAgICBnb3RvIHl5cmVkdWNlOwotKyAgICB9Ci0rICBlbHNlIGlmICh5eW4gPT0gMCkKLSsgICAgZ290byB5eWVycmxhYjsKLSsKLSsgIGlmICh5eW4gPT0gWVlGSU5BTCkKLSsgICAgWVlBQ0NFUFQ7Ci0rCi0rICAvKiBTaGlmdCB0aGUgbG9va2FoZWFkIHRva2VuLiAgKi8KLSsgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlNoaWZ0aW5nIHRva2VuICVkICglcyksICIsCi0rCSAgICAgIHl5Y2hhciwgeXl0bmFtZVt5eWNoYXIxXSkpOwotKwotKyAgLyogRGlzY2FyZCB0aGUgdG9rZW4gYmVpbmcgc2hpZnRlZCB1bmxlc3MgaXQgaXMgZW9mLiAgKi8KLSsgIGlmICh5eWNoYXIgIT0gWVlFT0YpCi0rICAgIHl5Y2hhciA9IFlZRU1QVFk7Ci0rCi0rICAqKyt5eXZzcCA9IHl5bHZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAqKyt5eWxzcCA9IHl5bGxvYzsKLSsjZW5kaWYKLSsKLSsgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKLSsgICAgIHN0YXR1cy4gICovCi0rICBpZiAoeXllcnJzdGF0dXMpCi0rICAgIHl5ZXJyc3RhdHVzLS07Ci0rCi0rICB5eXN0YXRlID0geXluOwotKyAgZ290byB5eW5ld3N0YXRlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWRlZmF1bHQgLS0gZG8gdGhlIGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgY3VycmVudCBzdGF0ZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZGVmYXVsdDoKLSsgIHl5biA9IHl5ZGVmYWN0W3l5c3RhdGVdOwotKyAgaWYgKHl5biA9PSAwKQotKyAgICBnb3RvIHl5ZXJybGFiOwotKyAgZ290byB5eXJlZHVjZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlyZWR1Y2UgLS0gRG8gYSByZWR1Y3Rpb24uICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eXJlZHVjZToKLSsgIC8qIHl5biBpcyB0aGUgbnVtYmVyIG9mIGEgcnVsZSB0byByZWR1Y2Ugd2l0aC4gICovCi0rICB5eWxlbiA9IHl5cjJbeXluXTsKLSsKLSsgIC8qIElmIFlZTEVOIGlzIG5vbnplcm8sIGltcGxlbWVudCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYWN0aW9uOgotKyAgICAgYCQkID0gJDEnLgotKwotKyAgICAgT3RoZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0byB0aGUgc2VtYW50aWMgdmFsdWUgb2YKLSsgICAgIHRoZSBsb29rYWhlYWQgdG9rZW4uICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KLSsgICAgIHVzZXJzIHNob3VsZCBub3QgcmVseSB1cG9uIGl0LiAgQXNzaWduaW5nIHRvIFlZVkFMCi0rICAgICB1bmNvbmRpdGlvbmFsbHkgbWFrZXMgdGhlIHBhcnNlciBhIGJpdCBzbWFsbGVyLCBhbmQgaXQgYXZvaWRzIGEKLSsgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCi0rICB5eXZhbCA9IHl5dnNwWzEteXlsZW5dOwotKwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIC8qIFNpbWlsYXJseSBmb3IgdGhlIGRlZmF1bHQgbG9jYXRpb24uICBMZXQgdGhlIHVzZXIgcnVuIGFkZGl0aW9uYWwKLSsgICAgIGNvbW1hbmRzIGlmIGZvciBpbnN0YW5jZSBsb2NhdGlvbnMgYXJlIHJhbmdlcy4gICovCi0rICB5eWxvYyA9IHl5bHNwWzEteXlsZW5dOwotKyAgWVlMTE9DX0RFRkFVTFQgKHl5bG9jLCAoeXlsc3AgLSB5eWxlbiksIHl5bGVuKTsKLSsjZW5kaWYKLSsKLSsjaWYgWVlERUJVRwotKyAgLyogV2UgaGF2ZSB0byBrZWVwIHRoaXMgYCNpZiBZWURFQlVHJywgc2luY2Ugd2UgdXNlIHZhcmlhYmxlcyB3aGljaAotKyAgICAgYXJlIGRlZmluZWQgb25seSBpZiBgWVlERUJVRycgaXMgc2V0LiAgKi8KLSsgIGlmICh5eWRlYnVnKQotKyAgICB7Ci0rICAgICAgaW50IHl5aTsKLSsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVjaW5nIHZpYSBydWxlICVkIChsaW5lICVkKSwgIiwKLSsJCSB5eW4sIHl5cmxpbmVbeXluXSk7Ci0rCi0rICAgICAgLyogUHJpbnQgdGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZCwgYW5kIHRoZWlyIHJlc3VsdC4gICovCi0rICAgICAgZm9yICh5eWkgPSB5eXByaHNbeXluXTsgeXlyaHNbeXlpXSA+IDA7IHl5aSsrKQotKwlZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIHl5dG5hbWVbeXlyaHNbeXlpXV0pOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiIC0+ICVzXG4iLCB5eXRuYW1lW3l5cjFbeXluXV0pOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICBzd2l0Y2ggKHl5bikgewotKwotK2Nhc2UgMToKLSsjbGluZSAxNTEgInBsdXJhbC55IgotK3sKLSsJICAgIGlmICh5eXZzcFswXS5leHAgPT0gTlVMTCkKLSsJICAgICAgWVlBQk9SVDsKLSsJICAgICgoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+cmVzID0geXl2c3BbMF0uZXhwOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAyOgotKyNsaW5lIDE1OSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8zIChxbW9wLCB5eXZzcFstNF0uZXhwLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAzOgotKyNsaW5lIDE2MyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yIChsb3IsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDQ6Ci0rI2xpbmUgMTY3ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKGxhbmQsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDU6Ci0rI2xpbmUgMTcxICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgNjoKLSsjbGluZSAxNzUgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA3OgotKyNsaW5lIDE3OSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDg6Ci0rI2xpbmUgMTgzICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgOToKLSsjbGluZSAxODcgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMSAobG5vdCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMTA6Ci0rI2xpbmUgMTkxICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzAgKHZhcik7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDExOgotKyNsaW5lIDE5NSAicGx1cmFsLnkiCi0rewotKwkgICAgaWYgKCh5eXZhbC5leHAgPSBuZXdfZXhwXzAgKG51bSkpICE9IE5VTEwpCi0rCSAgICAgIHl5dmFsLmV4cC0+dmFsLm51bSA9IHl5dnNwWzBdLm51bTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMTI6Ci0rI2xpbmUgMjAwICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSB5eXZzcFstMV0uZXhwOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rfQotKwotKyNsaW5lIDcwNSAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCi0rCi0rDAotKyAgeXl2c3AgLT0geXlsZW47Ci0rICB5eXNzcCAtPSB5eWxlbjsKLSsjaWYgWVlMU1BfTkVFREVECi0rICB5eWxzcCAtPSB5eWxlbjsKLSsjZW5kaWYKLSsKLSsjaWYgWVlERUJVRwotKyAgaWYgKHl5ZGVidWcpCi0rICAgIHsKLSsgICAgICBzaG9ydCAqeXlzc3AxID0geXlzcyAtIDE7Ci0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJzdGF0ZSBzdGFjayBub3ciKTsKLSsgICAgICB3aGlsZSAoeXlzc3AxICE9IHl5c3NwKQotKwlZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICorK3l5c3NwMSk7Ci0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICAqKyt5eXZzcCA9IHl5dmFsOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgICorK3l5bHNwID0geXlsb2M7Ci0rI2VuZGlmCi0rCi0rICAvKiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQotKyAgICAgdGhhdCBnb2VzIHRvLCBiYXNlZCBvbiB0aGUgc3RhdGUgd2UgcG9wcGVkIGJhY2sgdG8gYW5kIHRoZSBydWxlCi0rICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCi0rCi0rICB5eW4gPSB5eXIxW3l5bl07Ci0rCi0rICB5eXN0YXRlID0geXlwZ290b1t5eW4gLSBZWU5UQkFTRV0gKyAqeXlzc3A7Ci0rICBpZiAoeXlzdGF0ZSA+PSAwICYmIHl5c3RhdGUgPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXlzdGF0ZV0gPT0gKnl5c3NwKQotKyAgICB5eXN0YXRlID0geXl0YWJsZVt5eXN0YXRlXTsKLSsgIGVsc2UKLSsgICAgeXlzdGF0ZSA9IHl5ZGVmZ290b1t5eW4gLSBZWU5UQkFTRV07Ci0rCi0rICBnb3RvIHl5bmV3c3RhdGU7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJsYWI6Ci0rICAvKiBJZiBub3QgYWxyZWFkeSByZWNvdmVyaW5nIGZyb20gYW4gZXJyb3IsIHJlcG9ydCB0aGlzIGVycm9yLiAgKi8KLSsgIGlmICgheXllcnJzdGF0dXMpCi0rICAgIHsKLSsgICAgICArK3l5bmVycnM7Ci0rCi0rI2lmZGVmIFlZRVJST1JfVkVSQk9TRQotKyAgICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSsKLSsgICAgICBpZiAoeXluID4gWVlGTEFHICYmIHl5biA8IFlZTEFTVCkKLSsJewotKwkgIFlZU0laRV9UIHl5c2l6ZSA9IDA7Ci0rCSAgY2hhciAqeXltc2c7Ci0rCSAgaW50IHl5eCwgeXljb3VudDsKLSsKLSsJICB5eWNvdW50ID0gMDsKLSsJICAvKiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCi0rCSAgICAgWVlDSEVDSy4gICovCi0rCSAgZm9yICh5eXggPSB5eW4gPCAwID8gLXl5biA6IDA7Ci0rCSAgICAgICB5eXggPCAoaW50KSAoc2l6ZW9mICh5eXRuYW1lKSAvIHNpemVvZiAoY2hhciAqKSk7IHl5eCsrKQotKwkgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXgpCi0rCSAgICAgIHl5c2l6ZSArPSB5eXN0cmxlbiAoeXl0bmFtZVt5eXhdKSArIDE1LCB5eWNvdW50Kys7Ci0rCSAgeXlzaXplICs9IHl5c3RybGVuICgicGFyc2UgZXJyb3IsIHVuZXhwZWN0ZWQgIikgKyAxOwotKwkgIHl5c2l6ZSArPSB5eXN0cmxlbiAoeXl0bmFtZVtZWVRSQU5TTEFURSAoeXljaGFyKV0pOwotKwkgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXlzaXplKTsKLSsJICBpZiAoeXltc2cgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgY2hhciAqeXlwID0geXlzdHBjcHkgKHl5bXNnLCAicGFyc2UgZXJyb3IsIHVuZXhwZWN0ZWQgIik7Ci0rCSAgICAgIHl5cCA9IHl5c3RwY3B5ICh5eXAsIHl5dG5hbWVbWVlUUkFOU0xBVEUgKHl5Y2hhcildKTsKLSsKLSsJICAgICAgaWYgKHl5Y291bnQgPCA1KQotKwkJewotKwkJICB5eWNvdW50ID0gMDsKLSsJCSAgZm9yICh5eXggPSB5eW4gPCAwID8gLXl5biA6IDA7Ci0rCQkgICAgICAgeXl4IDwgKGludCkgKHNpemVvZiAoeXl0bmFtZSkgLyBzaXplb2YgKGNoYXIgKikpOwotKwkJICAgICAgIHl5eCsrKQotKwkJICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4KQotKwkJICAgICAgewotKwkJCWNvbnN0IGNoYXIgKnl5cSA9ICEgeXljb3VudCA/ICIsIGV4cGVjdGluZyAiIDogIiBvciAiOwotKwkJCXl5cCA9IHl5c3RwY3B5ICh5eXAsIHl5cSk7Ci0rCQkJeXlwID0geXlzdHBjcHkgKHl5cCwgeXl0bmFtZVt5eXhdKTsKLSsJCQl5eWNvdW50Kys7Ci0rCQkgICAgICB9Ci0rCQl9Ci0rCSAgICAgIHl5ZXJyb3IgKHl5bXNnKTsKLSsJICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgeXllcnJvciAoInBhcnNlIGVycm9yOyBhbHNvIHZpcnR1YWwgbWVtb3J5IGV4aGF1c3RlZCIpOwotKwl9Ci0rICAgICAgZWxzZQotKyNlbmRpZiAvKiBkZWZpbmVkIChZWUVSUk9SX1ZFUkJPU0UpICovCi0rCXl5ZXJyb3IgKCJwYXJzZSBlcnJvciIpOwotKyAgICB9Ci0rICBnb3RvIHl5ZXJybGFiMTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJsYWIxIC0tIGVycm9yIHJhaXNlZCBleHBsaWNpdGx5IGJ5IGFuIGFjdGlvbiB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycmxhYjE6Ci0rICBpZiAoeXllcnJzdGF0dXMgPT0gMykKLSsgICAgewotKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KLSsJIGVycm9yLCBkaXNjYXJkIGl0LiAgKi8KLSsKLSsgICAgICAvKiByZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQgKi8KLSsgICAgICBpZiAoeXljaGFyID09IFlZRU9GKQotKwlZWUFCT1JUOwotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkRpc2NhcmRpbmcgdG9rZW4gJWQgKCVzKS5cbiIsCi0rCQkgIHl5Y2hhciwgeXl0bmFtZVt5eWNoYXIxXSkpOwotKyAgICAgIHl5Y2hhciA9IFlZRU1QVFk7Ci0rICAgIH0KLSsKLSsgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgotKyAgICAgdG9rZW4uICAqLwotKwotKyAgeXllcnJzdGF0dXMgPSAzOwkJLyogRWFjaCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzICovCi0rCi0rICBnb3RvIHl5ZXJyaGFuZGxlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJyZGVmYXVsdCAtLSBjdXJyZW50IHN0YXRlIGRvZXMgbm90IGRvIGFueXRoaW5nIHNwZWNpYWwgZm9yIHRoZSB8Ci0rfCBlcnJvciB0b2tlbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycmRlZmF1bHQ6Ci0rI2lmIDAKLSsgIC8qIFRoaXMgaXMgd3Jvbmc7IG9ubHkgc3RhdGVzIHRoYXQgZXhwbGljaXRseSB3YW50IGVycm9yIHRva2VucwotKyAgICAgc2hvdWxkIHNoaWZ0IHRoZW0uICAqLwotKwotKyAgLyogSWYgaXRzIGRlZmF1bHQgaXMgdG8gYWNjZXB0IGFueSB0b2tlbiwgb2suICBPdGhlcndpc2UgcG9wIGl0LiAgKi8KLSsgIHl5biA9IHl5ZGVmYWN0W3l5c3RhdGVdOwotKyAgaWYgKHl5bikKLSsgICAgZ290byB5eWRlZmF1bHQ7Ci0rI2VuZGlmCi0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycnBvcCAtLSBwb3AgdGhlIGN1cnJlbnQgc3RhdGUgYmVjYXVzZSBpdCBjYW5ub3QgaGFuZGxlIHRoZSB8Ci0rfCBlcnJvciB0b2tlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJwb3A6Ci0rICBpZiAoeXlzc3AgPT0geXlzcykKLSsgICAgWVlBQk9SVDsKLSsgIHl5dnNwLS07Ci0rICB5eXN0YXRlID0gKi0teXlzc3A7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgeXlsc3AtLTsKLSsjZW5kaWYKLSsKLSsjaWYgWVlERUJVRwotKyAgaWYgKHl5ZGVidWcpCi0rICAgIHsKLSsgICAgICBzaG9ydCAqeXlzc3AxID0geXlzcyAtIDE7Ci0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJFcnJvcjogc3RhdGUgc3RhY2sgbm93Iik7Ci0rICAgICAgd2hpbGUgKHl5c3NwMSAhPSB5eXNzcCkKLSsJWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqKyt5eXNzcDEpOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKLSsgICAgfQotKyNlbmRpZgotKwotKy8qLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycmhhbmRsZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJyaGFuZGxlOgotKyAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotKyAgaWYgKHl5biA9PSBZWUZMQUcpCi0rICAgIGdvdG8geXllcnJkZWZhdWx0OwotKwotKyAgeXluICs9IFlZVEVSUk9SOwotKyAgaWYgKHl5biA8IDAgfHwgeXluID4gWVlMQVNUIHx8IHl5Y2hlY2tbeXluXSAhPSBZWVRFUlJPUikKLSsgICAgZ290byB5eWVycmRlZmF1bHQ7Ci0rCi0rICB5eW4gPSB5eXRhYmxlW3l5bl07Ci0rICBpZiAoeXluIDwgMCkKLSsgICAgewotKyAgICAgIGlmICh5eW4gPT0gWVlGTEFHKQotKwlnb3RvIHl5ZXJycG9wOwotKyAgICAgIHl5biA9IC15eW47Ci0rICAgICAgZ290byB5eXJlZHVjZTsKLSsgICAgfQotKyAgZWxzZSBpZiAoeXluID09IDApCi0rICAgIGdvdG8geXllcnJwb3A7Ci0rCi0rICBpZiAoeXluID09IFlZRklOQUwpCi0rICAgIFlZQUNDRVBUOwotKwotKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU2hpZnRpbmcgZXJyb3IgdG9rZW4sICIpKTsKLSsKLSsgICorK3l5dnNwID0geXlsdmFsOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgICorK3l5bHNwID0geXlsbG9jOwotKyNlbmRpZgotKwotKyAgeXlzdGF0ZSA9IHl5bjsKLSsgIGdvdG8geXluZXdzdGF0ZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWFjY2VwdGxhYiAtLSBZWUFDQ0VQVCBjb21lcyBoZXJlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWFjY2VwdGxhYjoKLSsgIHl5cmVzdWx0ID0gMDsKLSsgIGdvdG8geXlyZXR1cm47Ci0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5YWJvcnRsYWIgLS0gWVlBQk9SVCBjb21lcyBoZXJlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlhYm9ydGxhYjoKLSsgIHl5cmVzdWx0ID0gMTsKLSsgIGdvdG8geXlyZXR1cm47Ci0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eW92ZXJmbG93YWIgLS0gcGFyc2VyIG92ZXJmbG93IGNvbWVzIGhlcmUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlvdmVyZmxvd2xhYjoKLSsgIHl5ZXJyb3IgKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciKTsKLSsgIHl5cmVzdWx0ID0gMjsKLSsgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rCi0reXlyZXR1cm46Ci0rI2lmbmRlZiB5eW92ZXJmbG93Ci0rICBpZiAoeXlzcyAhPSB5eXNzYSkKLSsgICAgWVlTVEFDS19GUkVFICh5eXNzKTsKLSsjZW5kaWYKLSsgIHJldHVybiB5eXJlc3VsdDsKLSt9Ci0rI2xpbmUgMjA1ICJwbHVyYWwueSIKLSsKLSsKLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStGUkVFX0VYUFJFU1NJT04gKHN0cnVjdCBleHByZXNzaW9uICpleHApCi0rewotKyAgaWYgKGV4cCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBIYW5kbGUgdGhlIHJlY3Vyc2l2ZSBjYXNlLiAgKi8KLSsgIHN3aXRjaCAoZXhwLT5uYXJncykKLSsgICAgewotKyAgICBjYXNlIDM6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzJdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIDI6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzFdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIDE6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzBdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICBmcmVlIChleHApOwotK30KLSsKLSsKLStzdGF0aWMgaW50Ci0reXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKQotK3sKLSsgIGNvbnN0IGNoYXIgKmV4cCA9ICpwZXhwOwotKyAgaW50IHJlc3VsdDsKLSsKLSsgIHdoaWxlICgxKQotKyAgICB7Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnXDAnKQotKwl7Ci0rCSAgKnBleHAgPSBleHA7Ci0rCSAgcmV0dXJuIFlZRU9GOwotKwl9Ci0rCi0rICAgICAgaWYgKGV4cFswXSAhPSAnICcgJiYgZXhwWzBdICE9ICdcdCcpCi0rCWJyZWFrOwotKwotKyAgICAgICsrZXhwOwotKyAgICB9Ci0rCi0rICByZXN1bHQgPSAqZXhwKys7Ci0rICBzd2l0Y2ggKHJlc3VsdCkKLSsgICAgewotKyAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6Ci0rICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKLSsgICAgICB7Ci0rCXVuc2lnbmVkIGxvbmcgaW50IG4gPSByZXN1bHQgLSAnMCc7Ci0rCXdoaWxlIChleHBbMF0gPj0gJzAnICYmIGV4cFswXSA8PSAnOScpCi0rCSAgewotKwkgICAgbiAqPSAxMDsKLSsJICAgIG4gKz0gZXhwWzBdIC0gJzAnOwotKwkgICAgKytleHA7Ci0rCSAgfQotKwlsdmFsLT5udW0gPSBuOwotKwlyZXN1bHQgPSBOVU1CRVI7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc9JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZXF1YWw7Ci0rCSAgcmVzdWx0ID0gRVFVT1AyOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXN1bHQgPSBZWUVSUkNPREU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyEnOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBub3RfZXF1YWw7Ci0rCSAgcmVzdWx0ID0gRVFVT1AyOwotKwl9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyYnOgotKyAgICBjYXNlICd8JzoKLSsgICAgICBpZiAoZXhwWzBdID09IHJlc3VsdCkKLSsJKytleHA7Ci0rICAgICAgZWxzZQotKwlyZXN1bHQgPSBZWUVSUkNPREU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJzwnOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBsZXNzX29yX2VxdWFsOwotKwl9Ci0rICAgICAgZWxzZQotKwlsdmFsLT5vcCA9IGxlc3NfdGhhbjsKLSsgICAgICByZXN1bHQgPSBDTVBPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJz4nOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBncmVhdGVyX29yX2VxdWFsOwotKwl9Ci0rICAgICAgZWxzZQotKwlsdmFsLT5vcCA9IGdyZWF0ZXJfdGhhbjsKLSsgICAgICByZXN1bHQgPSBDTVBPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyonOgotKyAgICAgIGx2YWwtPm9wID0gbXVsdDsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy8nOgotKyAgICAgIGx2YWwtPm9wID0gZGl2aWRlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnJSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtb2R1bGU7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcrJzoKLSsgICAgICBsdmFsLT5vcCA9IHBsdXM7Ci0rICAgICAgcmVzdWx0ID0gQURET1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICctJzoKLSsgICAgICBsdmFsLT5vcCA9IG1pbnVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnbic6Ci0rICAgIGNhc2UgJz8nOgotKyAgICBjYXNlICc6JzoKLSsgICAgY2FzZSAnKCc6Ci0rICAgIGNhc2UgJyknOgotKyAgICAgIC8qIE5vdGhpbmcsIGp1c3QgcmV0dXJuIHRoZSBjaGFyYWN0ZXIuICAqLwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc7JzoKLSsgICAgY2FzZSAnXG4nOgotKyAgICBjYXNlICdcMCc6Ci0rICAgICAgLyogQmUgc2FmZSBhbmQgbGV0IHRoZSB1c2VyIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4gICovCi0rICAgICAgLS1leHA7Ci0rICAgICAgcmVzdWx0ID0gWVlFT0Y7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmVzdWx0ID0gWVlFUlJDT0RFOwotKyNpZiBZWURFQlVHICE9IDAKLSsgICAgICAtLWV4cDsKLSsjZW5kaWYKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgKnBleHAgPSBleHA7Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsKLStzdGF0aWMgdm9pZAotK3l5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rICAvKiBEbyBub3RoaW5nLiAgV2UgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZS4gICovCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC1leHAuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwtZXhwLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41Nzg3MTQxOTIgLTA0MDAKLUBAIC0wLDAgKzEsMTU0IEBACi0rLyogRXhwcmVzc2lvbiBwYXJzaW5nIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsKLSsjaWYgKGRlZmluZWQgX19HTlVDX18gJiYgIWRlZmluZWQgX19BUFBMRV9DQ19fKSBcCi0rICAgIHx8IChkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMKQotKwotKy8qIFRoZXNlIHN0cnVjdHMgYXJlIHRoZSBjb25zdGFudCBleHByZXNzaW9uIGZvciB0aGUgZ2VybWFuaWMgcGx1cmFsCi0rICAgZm9ybSBkZXRlcm1pbmF0aW9uLiAgSXQgcmVwcmVzZW50cyB0aGUgZXhwcmVzc2lvbiAgIm4gIT0gMSIuICAqLwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiBwbHZhciA9Ci0rewotKyAgLm5hcmdzID0gMCwKLSsgIC5vcGVyYXRpb24gPSB2YXIsCi0rfTsKLStzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gcGxvbmUgPQotK3sKLSsgIC5uYXJncyA9IDAsCi0rICAub3BlcmF0aW9uID0gbnVtLAotKyAgLnZhbCA9Ci0rICB7Ci0rICAgIC5udW0gPSAxCi0rICB9Ci0rfTsKLStzdHJ1Y3QgZXhwcmVzc2lvbiBHRVJNQU5JQ19QTFVSQUwgPQotK3sKLSsgIC5uYXJncyA9IDIsCi0rICAub3BlcmF0aW9uID0gbm90X2VxdWFsLAotKyAgLnZhbCA9Ci0rICB7Ci0rICAgIC5hcmdzID0KLSsgICAgewotKyAgICAgIFswXSA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSAmcGx2YXIsCi0rICAgICAgWzFdID0gKHN0cnVjdCBleHByZXNzaW9uICopICZwbG9uZQotKyAgICB9Ci0rICB9Ci0rfTsKLSsKLSsjIGRlZmluZSBJTklUX0dFUk1BTklDX1BMVVJBTCgpCi0rCi0rI2Vsc2UKLSsKLSsvKiBGb3IgY29tcGlsZXJzIHdpdGhvdXQgc3VwcG9ydCBmb3IgSVNPIEMgOTkgc3RydWN0L3VuaW9uIGluaXRpYWxpemVyczoKLSsgICBJbml0aWFsaXphdGlvbiBhdCBydW4tdGltZS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uIHBsdmFyOwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiBwbG9uZTsKLStzdHJ1Y3QgZXhwcmVzc2lvbiBHRVJNQU5JQ19QTFVSQUw7Ci0rCi0rc3RhdGljIHZvaWQKLStpbml0X2dlcm1hbmljX3BsdXJhbCAoKQotK3sKLSsgIGlmIChwbG9uZS52YWwubnVtID09IDApCi0rICAgIHsKLSsgICAgICBwbHZhci5uYXJncyA9IDA7Ci0rICAgICAgcGx2YXIub3BlcmF0aW9uID0gdmFyOwotKwotKyAgICAgIHBsb25lLm5hcmdzID0gMDsKLSsgICAgICBwbG9uZS5vcGVyYXRpb24gPSBudW07Ci0rICAgICAgcGxvbmUudmFsLm51bSA9IDE7Ci0rCi0rICAgICAgR0VSTUFOSUNfUExVUkFMLm5hcmdzID0gMjsKLSsgICAgICBHRVJNQU5JQ19QTFVSQUwub3BlcmF0aW9uID0gbm90X2VxdWFsOwotKyAgICAgIEdFUk1BTklDX1BMVVJBTC52YWwuYXJnc1swXSA9ICZwbHZhcjsKLSsgICAgICBHRVJNQU5JQ19QTFVSQUwudmFsLmFyZ3NbMV0gPSAmcGxvbmU7Ci0rICAgIH0KLSt9Ci0rCi0rIyBkZWZpbmUgSU5JVF9HRVJNQU5JQ19QTFVSQUwoKSBpbml0X2dlcm1hbmljX3BsdXJhbCAoKQotKwotKyNlbmRpZgotKwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK0VYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gKGNvbnN0IGNoYXIgKm51bGxlbnRyeSwgc3RydWN0IGV4cHJlc3Npb24gKipwbHVyYWxwLAotKwkJCSAgIHVuc2lnbmVkIGxvbmcgaW50ICpucGx1cmFsc3ApCi0rewotKyAgaWYgKG51bGxlbnRyeSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgY29uc3QgY2hhciAqcGx1cmFsOwotKyAgICAgIGNvbnN0IGNoYXIgKm5wbHVyYWxzOwotKwotKyAgICAgIHBsdXJhbCA9IHN0cnN0ciAobnVsbGVudHJ5LCAicGx1cmFsPSIpOwotKyAgICAgIG5wbHVyYWxzID0gc3Ryc3RyIChudWxsZW50cnksICJucGx1cmFscz0iKTsKLSsgICAgICBpZiAocGx1cmFsID09IE5VTEwgfHwgbnBsdXJhbHMgPT0gTlVMTCkKLSsJZ290byBub19wbHVyYWw7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY2hhciAqZW5kcDsKLSsJICB1bnNpZ25lZCBsb25nIGludCBuOwotKwkgIHN0cnVjdCBwYXJzZV9hcmdzIGFyZ3M7Ci0rCi0rCSAgLyogRmlyc3QgZ2V0IHRoZSBudW1iZXIuICAqLwotKwkgIG5wbHVyYWxzICs9IDk7Ci0rCSAgd2hpbGUgKCpucGx1cmFscyAhPSAnXDAnICYmIGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSAqbnBsdXJhbHMpKQotKwkgICAgKytucGx1cmFsczsKLSsJICBpZiAoISgqbnBsdXJhbHMgPj0gJzAnICYmICpucGx1cmFscyA8PSAnOScpKQotKwkgICAgZ290byBub19wbHVyYWw7Ci0rI2lmIGRlZmluZWQgSEFWRV9TVFJUT1VMIHx8IGRlZmluZWQgX0xJQkMKLSsJICBuID0gc3RydG91bCAobnBsdXJhbHMsICZlbmRwLCAxMCk7Ci0rI2Vsc2UKLSsJICBmb3IgKGVuZHAgPSBucGx1cmFscywgbiA9IDA7ICplbmRwID49ICcwJyAmJiAqZW5kcCA8PSAnOSc7IGVuZHArKykKLSsJICAgIG4gPSBuICogMTAgKyAoKmVuZHAgLSAnMCcpOwotKyNlbmRpZgotKwkgIGlmIChucGx1cmFscyA9PSBlbmRwKQotKwkgICAgZ290byBub19wbHVyYWw7Ci0rCSAgKm5wbHVyYWxzcCA9IG47Ci0rCi0rCSAgLyogRHVlIHRvIHRoZSByZXN0cmljdGlvbnMgYmlzb24gaW1wb3NlcyBvbnRvIHRoZSBpbnRlcmZhY2Ugb2YgdGhlCi0rCSAgICAgc2Nhbm5lciBmdW5jdGlvbiB3ZSBoYXZlIHRvIHB1dCB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUgcmVzdWx0Ci0rCSAgICAgcGFzc2VkIHVwIGZyb20gdGhlIHBhcnNlciBpbnRvIHRoZSBzYW1lIHN0cnVjdHVyZSB3aGljaCBhZGRyZXNzCi0rCSAgICAgaXMgcGFzc2VkIGRvd24gdG8gdGhlIHBhcnNlci4gICovCi0rCSAgcGx1cmFsICs9IDc7Ci0rCSAgYXJncy5jcCA9IHBsdXJhbDsKLSsJICBpZiAoUExVUkFMX1BBUlNFICgmYXJncykgIT0gMCkKLSsJICAgIGdvdG8gbm9fcGx1cmFsOwotKwkgICpwbHVyYWxwID0gYXJncy5yZXM7Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogQnkgZGVmYXVsdCB3ZSBhcmUgdXNpbmcgdGhlIEdlcm1hbmljIGZvcm06IHNpbmd1bGFyIGZvcm0gb25seQotKyAgICAgICAgIGZvciBgb25lJywgdGhlIHBsdXJhbCBmb3JtIG90aGVyd2lzZS4gIFllcywgdGhpcyBpcyBhbHNvIHdoYXQKLSsgICAgICAgICBFbmdsaXNoIGlzIHVzaW5nIHNpbmNlIEVuZ2xpc2ggaXMgYSBHZXJtYW5pYyBsYW5ndWFnZS4gICovCi0rICAgIG5vX3BsdXJhbDoKLSsgICAgICBJTklUX0dFUk1BTklDX1BMVVJBTCAoKTsKLSsgICAgICAqcGx1cmFscCA9ICZHRVJNQU5JQ19QTFVSQUw7Ci0rICAgICAgKm5wbHVyYWxzcCA9IDI7Ci0rICAgIH0KLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcGx1cmFsLWV4cC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BsdXJhbC1leHAuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjU4NDcxMzI4MCAtMDQwMAotQEAgLTAsMCArMSwxMTggQEAKLSsvKiBFeHByZXNzaW9uIHBhcnNpbmcgYW5kIGV2YWx1YXRpb24gZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAyMDAwLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9QTFVSQUxfRVhQX0gKLSsjZGVmaW5lIF9QTFVSQUxfRVhQX0gKLSsKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGF0dHJpYnV0ZV9oaWRkZW4KLSsjIGRlZmluZSBhdHRyaWJ1dGVfaGlkZGVuCi0rI2VuZGlmCi0rCi0rCi0rLyogVGhpcyBpcyB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4cHJlc3Npb25zIHRvIGRldGVybWluZSB0aGUKLSsgICBwbHVyYWwgZm9ybS4gICovCi0rc3RydWN0IGV4cHJlc3Npb24KLSt7Ci0rICBpbnQgbmFyZ3M7CQkJLyogTnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCi0rICBlbnVtIG9wZXJhdG9yCi0rICB7Ci0rICAgIC8qIFdpdGhvdXQgYXJndW1lbnRzOiAgKi8KLSsgICAgdmFyLAkJCS8qIFRoZSB2YXJpYWJsZSAibiIuICAqLwotKyAgICBudW0sCQkJLyogRGVjaW1hbCBudW1iZXIuICAqLwotKyAgICAvKiBVbmFyeSBvcGVyYXRvcnM6ICAqLwotKyAgICBsbm90LAkJCS8qIExvZ2ljYWwgTk9ULiAgKi8KLSsgICAgLyogQmluYXJ5IG9wZXJhdG9yczogICovCi0rICAgIG11bHQsCQkJLyogTXVsdGlwbGljYXRpb24uICAqLwotKyAgICBkaXZpZGUsCQkJLyogRGl2aXNpb24uICAqLwotKyAgICBtb2R1bGUsCQkJLyogTW9kdWxvIG9wZXJhdGlvbi4gICovCi0rICAgIHBsdXMsCQkJLyogQWRkaXRpb24uICAqLwotKyAgICBtaW51cywJCQkvKiBTdWJ0cmFjdGlvbi4gICovCi0rICAgIGxlc3NfdGhhbiwJCQkvKiBDb21wYXJpc29uLiAgKi8KLSsgICAgZ3JlYXRlcl90aGFuLAkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGxlc3Nfb3JfZXF1YWwsCQkvKiBDb21wYXJpc29uLiAgKi8KLSsgICAgZ3JlYXRlcl9vcl9lcXVhbCwJCS8qIENvbXBhcmlzb24uICAqLwotKyAgICBlcXVhbCwJCQkvKiBDb21wYXJpc29uIGZvciBlcXVhbGl0eS4gICovCi0rICAgIG5vdF9lcXVhbCwJCQkvKiBDb21wYXJpc29uIGZvciBpbmVxdWFsaXR5LiAgKi8KLSsgICAgbGFuZCwJCQkvKiBMb2dpY2FsIEFORC4gICovCi0rICAgIGxvciwJCQkvKiBMb2dpY2FsIE9SLiAgKi8KLSsgICAgLyogVGVybmFyeSBvcGVyYXRvcnM6ICAqLwotKyAgICBxbW9wCQkJLyogUXVlc3Rpb24gbWFyayBvcGVyYXRvci4gICovCi0rICB9IG9wZXJhdGlvbjsKLSsgIHVuaW9uCi0rICB7Ci0rICAgIHVuc2lnbmVkIGxvbmcgaW50IG51bTsJLyogTnVtYmVyIHZhbHVlIGZvciBgbnVtJy4gICovCi0rICAgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzNdOwkvKiBVcCB0byB0aHJlZSBhcmd1bWVudHMuICAqLwotKyAgfSB2YWw7Ci0rfTsKLSsKLSsvKiBUaGlzIGlzIHRoZSBkYXRhIHN0cnVjdHVyZSB0byBwYXNzIGluZm9ybWF0aW9uIHRvIHRoZSBwYXJzZXIgYW5kIGdldAotKyAgIHRoZSByZXN1bHQgaW4gYSB0aHJlYWQtc2FmZSB3YXkuICAqLwotK3N0cnVjdCBwYXJzZV9hcmdzCi0rewotKyAgY29uc3QgY2hhciAqY3A7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmVzOwotK307Ci0rCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhpcyBzb3VyY2UgY29kZSBpcyB1c2VkCi0rICAgMS4gaW4gdGhlIEdOVSBDIExpYnJhcnkgbGlicmFyeSwKLSsgICAyLiBpbiB0aGUgR05VIGxpYmludGwgbGlicmFyeSwKLSsgICAzLiBpbiB0aGUgR05VIGdldHRleHQgdG9vbHMuCi0rICAgVGhlIGZ1bmN0aW9uIG5hbWVzIGluIGVhY2ggc2l0dWF0aW9uIG11c3QgYmUgZGlmZmVyZW50LCB0byBhbGxvdyBmb3IKLSsgICBiaW5hcnkgaW5jb21wYXRpYmxlIGNoYW5nZXMgaW4gJ3N0cnVjdCBleHByZXNzaW9uJy4gIEZ1cnRoZXJtb3JlLAotKyAgIDEuIGluIHRoZSBHTlUgQyBMaWJyYXJ5IGxpYnJhcnksIHRoZSBuYW1lcyBoYXZlIGEgX18gcHJlZml4LAotKyAgIDIuKzMuIGluIHRoZSBHTlUgbGliaW50bCBsaWJyYXJ5IGFuZCBpbiB0aGUgR05VIGdldHRleHQgdG9vbHMsIHRoZSBuYW1lcwotKyAgICAgICAgIG11c3QgZm9sbG93IEFOU0kgQyBhbmQgbm90IHN0YXJ0IHdpdGggX18uCi0rICAgU28gd2UgaGF2ZSB0byBkaXN0aW5ndWlzaCB0aGUgdGhyZWUgY2FzZXMuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIEZSRUVfRVhQUkVTU0lPTiBfX2dldHRleHRfZnJlZV9leHAKLSsjIGRlZmluZSBQTFVSQUxfUEFSU0UgX19nZXR0ZXh0cGFyc2UKLSsjIGRlZmluZSBHRVJNQU5JQ19QTFVSQUwgX19nZXR0ZXh0X2dlcm1hbmljX3BsdXJhbAotKyMgZGVmaW5lIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gX19nZXR0ZXh0X2V4dHJhY3RfcGx1cmFsCi0rI2VsaWYgZGVmaW5lZCAoSU5fTElCSU5UTCkKLSsjIGRlZmluZSBGUkVFX0VYUFJFU1NJT04gbGliaW50bF9nZXR0ZXh0X2ZyZWVfZXhwCi0rIyBkZWZpbmUgUExVUkFMX1BBUlNFIGxpYmludGxfZ2V0dGV4dHBhcnNlCi0rIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIGxpYmludGxfZ2V0dGV4dF9nZXJtYW5pY19wbHVyYWwKLSsjIGRlZmluZSBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIGxpYmludGxfZ2V0dGV4dF9leHRyYWN0X3BsdXJhbAotKyNlbHNlCi0rIyBkZWZpbmUgRlJFRV9FWFBSRVNTSU9OIGZyZWVfcGx1cmFsX2V4cHJlc3Npb24KLSsjIGRlZmluZSBQTFVSQUxfUEFSU0UgcGFyc2VfcGx1cmFsX2V4cHJlc3Npb24KLSsjIGRlZmluZSBHRVJNQU5JQ19QTFVSQUwgZ2VybWFuaWNfcGx1cmFsCi0rIyBkZWZpbmUgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiBleHRyYWN0X3BsdXJhbF9leHByZXNzaW9uCi0rI2VuZGlmCi0rCi0rZXh0ZXJuIHZvaWQgRlJFRV9FWFBSRVNTSU9OIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rZXh0ZXJuIGludCBQTFVSQUxfUEFSU0UgKHZvaWQgKmFyZyk7Ci0rZXh0ZXJuIHN0cnVjdCBleHByZXNzaW9uIEdFUk1BTklDX1BMVVJBTCBhdHRyaWJ1dGVfaGlkZGVuOwotK2V4dGVybiB2b2lkIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gKGNvbnN0IGNoYXIgKm51bGxlbnRyeSwKLSsJCQkJICAgICAgIHN0cnVjdCBleHByZXNzaW9uICoqcGx1cmFscCwKLSsJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgaW50ICpucGx1cmFsc3ApCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsKLSsjaWYgIWRlZmluZWQgKF9MSUJDKSAmJiAhZGVmaW5lZCAoSU5fTElCSU5UTCkKLStleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgcGx1cmFsX2V2YWwgKHN0cnVjdCBleHByZXNzaW9uICpwZXhwLAotKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGludCBuKTsKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogX1BMVVJBTF9FWFBfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC55CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BsdXJhbC55CTIwMDQtMDktMTIgMTQ6NDA6MzQuNTg5NzEyNTIwIC0wNDAwCi1AQCAtMCwwICsxLDM4MSBAQAotKyV7Ci0rLyogRXhwcmVzc2lvbiBwYXJzaW5nIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGhlIGJpc29uIGdlbmVyYXRlZCBwYXJzZXIgdXNlcyBhbGxvY2EuICBBSVggMyBmb3JjZXMgdXMgdG8gcHV0IHRoaXMKLSsgICBkZWNsYXJhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGRlY2xhcmF0aW9uIGluIGJpc29uJ3MKLSsgICBza2VsZXRvbiBmaWxlIGNvbWVzIHRvbyBsYXRlLiAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4KLSsgICBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUgYXJiaXRyYXJ5IHN5c3RlbSBoZWFkZXJzLiAgKi8KLSsjaWYgZGVmaW5lZCBfQUlYICYmICFkZWZpbmVkIF9fR05VQ19fCi0rICNwcmFnbWEgYWxsb2NhCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsKLSsvKiBUaGUgbWFpbiBmdW5jdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIHBhcnNlciBpcyBjYWxsZWQgX19nZXR0ZXh0cGFyc2UsCi0rICAgYnV0IHdlIHdhbnQgaXQgdG8gYmUgY2FsbGVkIFBMVVJBTF9QQVJTRS4gICovCi0rI2lmbmRlZiBfTElCQwotKyMgZGVmaW5lIF9fZ2V0dGV4dHBhcnNlIFBMVVJBTF9QQVJTRQotKyNlbmRpZgotKwotKyNkZWZpbmUgWVlMRVhfUEFSQU0JJigoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+Y3AKLSsjZGVmaW5lIFlZUEFSU0VfUEFSQU0JYXJnCi0rJX0KLSslcHVyZV9wYXJzZXIKLSslZXhwZWN0IDcKLSsKLSsldW5pb24gewotKyAgdW5zaWduZWQgbG9uZyBpbnQgbnVtOwotKyAgZW51bSBvcGVyYXRvciBvcDsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpleHA7Ci0rfQotKwotKyV7Ci0rLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLStzdGF0aWMgaW50IHl5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCk7Ci0rc3RhdGljIHZvaWQgeXllcnJvciAoY29uc3QgY2hhciAqc3RyKTsKLSsKLSsvKiBBbGxvY2F0aW9uIG9mIGV4cHJlc3Npb25zLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHAgKGludCBuYXJncywgZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKiBjb25zdCAqYXJncykKLSt7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpuZXdwOwotKwotKyAgLyogSWYgYW55IG9mIHRoZSBhcmd1bWVudCBjb3VsZCBub3QgYmUgbWFsbG9jJ2VkLCBqdXN0IHJldHVybiBOVUxMLiAgKi8KLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIGlmIChhcmdzW2ldID09IE5VTEwpCi0rICAgICAgZ290byBmYWlsOwotKwotKyAgLyogQWxsb2NhdGUgYSBuZXcgZXhwcmVzc2lvbi4gICovCi0rICBuZXdwID0gKHN0cnVjdCBleHByZXNzaW9uICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOwotKyAgaWYgKG5ld3AgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIG5ld3AtPm5hcmdzID0gbmFyZ3M7Ci0rICAgICAgbmV3cC0+b3BlcmF0aW9uID0gb3A7Ci0rICAgICAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsJbmV3cC0+dmFsLmFyZ3NbaV0gPSBhcmdzW2ldOwotKyAgICAgIHJldHVybiBuZXdwOwotKyAgICB9Ci0rCi0rIGZhaWw6Ci0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICBGUkVFX0VYUFJFU1NJT04gKGFyZ3NbaV0pOwotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMCAoZW51bSBvcGVyYXRvciBvcCkKLSt7Ci0rICByZXR1cm4gbmV3X2V4cCAoMCwgb3AsIE5VTEwpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzEgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1sxXTsKLSsKLSsgIGFyZ3NbMF0gPSByaWdodDsKLSsgIHJldHVybiBuZXdfZXhwICgxLCBvcCwgYXJncyk7Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8yIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqbGVmdCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzJdOwotKwotKyAgYXJnc1swXSA9IGxlZnQ7Ci0rICBhcmdzWzFdID0gcmlnaHQ7Ci0rICByZXR1cm4gbmV3X2V4cCAoMiwgb3AsIGFyZ3MpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzMgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpiZXhwLAotKwkgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqdGJyYW5jaCwgc3RydWN0IGV4cHJlc3Npb24gKmZicmFuY2gpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbM107Ci0rCi0rICBhcmdzWzBdID0gYmV4cDsKLSsgIGFyZ3NbMV0gPSB0YnJhbmNoOwotKyAgYXJnc1syXSA9IGZicmFuY2g7Ci0rICByZXR1cm4gbmV3X2V4cCAoMywgb3AsIGFyZ3MpOwotK30KLSsKLSslfQotKwotKy8qIFRoaXMgZGVjbGFyZXMgdGhhdCBhbGwgb3BlcmF0b3JzIGhhdmUgdGhlIHNhbWUgYXNzb2NpYXRpdml0eSBhbmQgdGhlCi0rICAgcHJlY2VkZW5jZSBvcmRlciBhcyBpbiBDLiAgU2VlIFtIYXJiaXNvbiwgU3RlZWxlOiBDLCBBIFJlZmVyZW5jZSBNYW51YWxdLgotKyAgIFRoZXJlIGlzIG5vIHVuYXJ5IG1pbnVzIGFuZCBubyBiaXR3aXNlIG9wZXJhdG9ycy4KLSsgICBPcGVyYXRvcnMgd2l0aCB0aGUgc2FtZSBzeW50YWN0aWMgYmVoYXZpb3VyIGhhdmUgYmVlbiBtZXJnZWQgaW50byBhIHNpbmdsZQotKyAgIHRva2VuLCB0byBzYXZlIHNwYWNlIGluIHRoZSBhcnJheSBnZW5lcmF0ZWQgYnkgYmlzb24uICAqLwotKyVyaWdodCAnPycJCS8qICAgPwkJKi8KLSslbGVmdCAnfCcJCS8qICAgfHwJCSovCi0rJWxlZnQgJyYnCQkvKiAgICYmCQkqLwotKyVsZWZ0IEVRVU9QMgkJLyogICA9PSAhPQkqLwotKyVsZWZ0IENNUE9QMgkJLyogICA8ID4gPD0gPj0JKi8KLSslbGVmdCBBRERPUDIJCS8qICAgKyAtCSovCi0rJWxlZnQgTVVMT1AyCQkvKiAgICogLyAlCSovCi0rJXJpZ2h0ICchJwkJLyogICAhCQkqLwotKwotKyV0b2tlbiA8b3A+IEVRVU9QMiBDTVBPUDIgQURET1AyIE1VTE9QMgotKyV0b2tlbiA8bnVtPiBOVU1CRVIKLSsldHlwZSA8ZXhwPiBleHAKLSsKLSslJQotKwotK3N0YXJ0OgkgIGV4cAotKwkgIHsKLSsJICAgIGlmICgkMSA9PSBOVUxMKQotKwkgICAgICBZWUFCT1JUOwotKwkgICAgKChzdHJ1Y3QgcGFyc2VfYXJncyAqKSBhcmcpLT5yZXMgPSAkMTsKLSsJICB9Ci0rCTsKLSsKLStleHA6CSAgZXhwICc/JyBleHAgJzonIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8zIChxbW9wLCAkMSwgJDMsICQ1KTsKLSsJICB9Ci0rCXwgZXhwICd8JyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAobG9yLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgJyYnIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yIChsYW5kLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgRVFVT1AyIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yICgkMiwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIENNUE9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCBBRERPUDIgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKCQyLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgTVVMT1AyIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yICgkMiwgJDEsICQzKTsKLSsJICB9Ci0rCXwgJyEnIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8xIChsbm90LCAkMik7Ci0rCSAgfQotKwl8ICduJwotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8wICh2YXIpOwotKwkgIH0KLSsJfCBOVU1CRVIKLSsJICB7Ci0rCSAgICBpZiAoKCQkID0gbmV3X2V4cF8wIChudW0pKSAhPSBOVUxMKQotKwkgICAgICAkJC0+dmFsLm51bSA9ICQxOwotKwkgIH0KLSsJfCAnKCcgZXhwICcpJwotKwkgIHsKLSsJICAgICQkID0gJDI7Ci0rCSAgfQotKwk7Ci0rCi0rJSUKLSsKLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStGUkVFX0VYUFJFU1NJT04gKHN0cnVjdCBleHByZXNzaW9uICpleHApCi0rewotKyAgaWYgKGV4cCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBIYW5kbGUgdGhlIHJlY3Vyc2l2ZSBjYXNlLiAgKi8KLSsgIHN3aXRjaCAoZXhwLT5uYXJncykKLSsgICAgewotKyAgICBjYXNlIDM6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzJdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIDI6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzFdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIDE6Ci0rICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzBdKTsKLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICBmcmVlIChleHApOwotK30KLSsKLSsKLStzdGF0aWMgaW50Ci0reXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKQotK3sKLSsgIGNvbnN0IGNoYXIgKmV4cCA9ICpwZXhwOwotKyAgaW50IHJlc3VsdDsKLSsKLSsgIHdoaWxlICgxKQotKyAgICB7Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnXDAnKQotKwl7Ci0rCSAgKnBleHAgPSBleHA7Ci0rCSAgcmV0dXJuIFlZRU9GOwotKwl9Ci0rCi0rICAgICAgaWYgKGV4cFswXSAhPSAnICcgJiYgZXhwWzBdICE9ICdcdCcpCi0rCWJyZWFrOwotKwotKyAgICAgICsrZXhwOwotKyAgICB9Ci0rCi0rICByZXN1bHQgPSAqZXhwKys7Ci0rICBzd2l0Y2ggKHJlc3VsdCkKLSsgICAgewotKyAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6Ci0rICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKLSsgICAgICB7Ci0rCXVuc2lnbmVkIGxvbmcgaW50IG4gPSByZXN1bHQgLSAnMCc7Ci0rCXdoaWxlIChleHBbMF0gPj0gJzAnICYmIGV4cFswXSA8PSAnOScpCi0rCSAgewotKwkgICAgbiAqPSAxMDsKLSsJICAgIG4gKz0gZXhwWzBdIC0gJzAnOwotKwkgICAgKytleHA7Ci0rCSAgfQotKwlsdmFsLT5udW0gPSBuOwotKwlyZXN1bHQgPSBOVU1CRVI7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc9JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZXF1YWw7Ci0rCSAgcmVzdWx0ID0gRVFVT1AyOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXN1bHQgPSBZWUVSUkNPREU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyEnOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBub3RfZXF1YWw7Ci0rCSAgcmVzdWx0ID0gRVFVT1AyOwotKwl9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyYnOgotKyAgICBjYXNlICd8JzoKLSsgICAgICBpZiAoZXhwWzBdID09IHJlc3VsdCkKLSsJKytleHA7Ci0rICAgICAgZWxzZQotKwlyZXN1bHQgPSBZWUVSUkNPREU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJzwnOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBsZXNzX29yX2VxdWFsOwotKwl9Ci0rICAgICAgZWxzZQotKwlsdmFsLT5vcCA9IGxlc3NfdGhhbjsKLSsgICAgICByZXN1bHQgPSBDTVBPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJz4nOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBncmVhdGVyX29yX2VxdWFsOwotKwl9Ci0rICAgICAgZWxzZQotKwlsdmFsLT5vcCA9IGdyZWF0ZXJfdGhhbjsKLSsgICAgICByZXN1bHQgPSBDTVBPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyonOgotKyAgICAgIGx2YWwtPm9wID0gbXVsdDsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy8nOgotKyAgICAgIGx2YWwtPm9wID0gZGl2aWRlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnJSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtb2R1bGU7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcrJzoKLSsgICAgICBsdmFsLT5vcCA9IHBsdXM7Ci0rICAgICAgcmVzdWx0ID0gQURET1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICctJzoKLSsgICAgICBsdmFsLT5vcCA9IG1pbnVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnbic6Ci0rICAgIGNhc2UgJz8nOgotKyAgICBjYXNlICc6JzoKLSsgICAgY2FzZSAnKCc6Ci0rICAgIGNhc2UgJyknOgotKyAgICAgIC8qIE5vdGhpbmcsIGp1c3QgcmV0dXJuIHRoZSBjaGFyYWN0ZXIuICAqLwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc7JzoKLSsgICAgY2FzZSAnXG4nOgotKyAgICBjYXNlICdcMCc6Ci0rICAgICAgLyogQmUgc2FmZSBhbmQgbGV0IHRoZSB1c2VyIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4gICovCi0rICAgICAgLS1leHA7Ci0rICAgICAgcmVzdWx0ID0gWVlFT0Y7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmVzdWx0ID0gWVlFUlJDT0RFOwotKyNpZiBZWURFQlVHICE9IDAKLSsgICAgICAtLWV4cDsKLSsjZW5kaWYKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgKnBleHAgPSBleHA7Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsKLStzdGF0aWMgdm9pZAotK3l5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rICAvKiBEbyBub3RoaW5nLiAgV2UgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZS4gICovCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BvMnRibC5zZWQuaW4JMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTAyICswLDAgQEAKLS0jIHBvMnRibC5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIGxvb2t1cCB0YWJsZSBmb3IgY2F0Z2V0cwotLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0tIwotLTEgewotLSAgaVwKLS0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gQFBBQ0tBR0UgTkFNRUAucG90LiAgKi9cCi0tXAotLSNpZiBIQVZFX0NPTkZJR19IXAotLSMgaW5jbHVkZSA8Y29uZmlnLmg+XAotLSNlbmRpZlwKLS1cCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCJcCi0tXAotLWNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdID0gewotLSAgaAotLSAgcy8uKi8wLwotLSAgeAotLX0KLS0jCi0tIyBXcml0ZSBtc2dpZCBlbnRyaWVzIGluIEMgYXJyYXkgZm9ybS4KLS0jCi0tL15tc2dpZC8gewotLSAgcy9tc2dpZFsgCV0qXCgiLioiXCkvICB7XDEvCi0tICB0YgotLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUKLS0gIDpiCi0tICBOCi0tIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgY29udGludWF0aW9uIGxpbmUuCi0tICBzL1woLipcKSJcKFxuXCkiXCguKiJcKS9cMVwyXDMvCi0tIyBZZXMsIHRoZW4gYnJhbmNoLgotLSAgdGEKLS0jIEJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgdGhlIGlucHV0IGZpbGUgY29ycmVjdGx5IGZvcm1lZCB0aGUgbGluZQotLSMganVzdCByZWFkIGNhbm5vdCBiZSBhZ2FpbiBiZSBhIG1zZ2lkIGxpbmUuICBTbyBpdCdzIHNhZmUgdG8gaWdub3JlCi0tIyBpdC4KLS0gIHMvXCguKlwpXG4uKi9cMS8KLS0gIGJjCi0tIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgotLSAgOmEKLS0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLwotLSAgUAotLSMgV2UgY2Fubm90IHVzZSBEIGhlcmUuCi0tICBzLy4qXG5cKC4qXCkvXDEvCi0tIyBTb21lIGJ1Z2d5IHNlZHMgZG8gbm90IGNsZWFyIHRoZSBgc3VjY2Vzc2Z1bCBzdWJzdGl0dXRpb24gc2luY2UgbGFzdCBgYHQnJycKLS0jIGZsYWcgb24gYE4nLCBzbyB3ZSBkbyBhIGB0JyBoZXJlIHRvIGNsZWFyIGl0LgotLSAgdGIKLS0jIE5vdCByZWFjaGVkCi0tICA6YwotLSAgeAotLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5Ci0tIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KLS0gIHRkCi0tIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgotLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgotLSAgOmQKLS0gIHMvOVwoXypcKSQvX1wxLwotLSAgdGQKLS0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgotLSAgcy9eXChfKlwpJC8wXDEvCi0tIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCi0tICBzLzhcKF8qXCkkLzlcMS8KLS0gIHMvN1woXypcKSQvOFwxLwotLSAgcy82XChfKlwpJC83XDEvCi0tICBzLzVcKF8qXCkkLzZcMS8KLS0gIHMvNFwoXypcKSQvNVwxLwotLSAgcy8zXChfKlwpJC80XDEvCi0tICBzLzJcKF8qXCkkLzNcMS8KLS0gIHMvMVwoXypcKSQvMlwxLwotLSAgcy8wXChfKlwpJC8xXDEvCi0tIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgotLSAgcy9fLzAvZwotLSAgeAotLSAgRwotLSAgcy9cKC4qXClcblwoWzAtOV0qXCkvXDEsIFwyfSwvCi0tICBzL1woLipcKSIkL1wxLwotLSAgcAotLX0KLS0jCi0tIyBMYXN0IGxpbmUuCi0tIwotLSQgewotLSAgaVwKLS19O1wKLS0KLS0gIGcKLS0gIHMvMCpcKC4qXCkvaW50IF9tc2dfdGJsX2xlbmd0aCA9IFwxOy9wCi0tfQotLWQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtYXJncy5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi1hcmdzLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41OTU3MTE2MDggLTA0MDAKLUBAIC0wLDAgKzEsMTE5IEBACi0rLyogRGVjb21wb3NlZCBwcmludGYgYXJndW1lbnQgbGlzdC4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgotKwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZW5kaWYKLStpbnQKLStwcmludGZfZmV0Y2hhcmdzICh2YV9saXN0IGFyZ3MsIGFyZ3VtZW50cyAqYSkKLSt7Ci0rICBzaXplX3QgaTsKLSsgIGFyZ3VtZW50ICphcDsKLSsKLSsgIGZvciAoaSA9IDAsIGFwID0gJmEtPmFyZ1swXTsgaSA8IGEtPmNvdW50OyBpKyssIGFwKyspCi0rICAgIHN3aXRjaCAoYXAtPnR5cGUpCi0rICAgICAgewotKyAgICAgIGNhc2UgVFlQRV9TQ0hBUjoKLSsJYXAtPmEuYV9zY2hhciA9IHZhX2FyZyAoYXJncywgLypzaWduZWQgY2hhciovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VQ0hBUjoKLSsJYXAtPmEuYV91Y2hhciA9IHZhX2FyZyAoYXJncywgLyp1bnNpZ25lZCBjaGFyKi8gaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1NIT1JUOgotKwlhcC0+YS5hX3Nob3J0ID0gdmFfYXJnIChhcmdzLCAvKnNob3J0Ki8gaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VTSE9SVDoKLSsJYXAtPmEuYV91c2hvcnQgPSB2YV9hcmcgKGFyZ3MsIC8qdW5zaWduZWQgc2hvcnQqLyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfSU5UOgotKwlhcC0+YS5hX2ludCA9IHZhX2FyZyAoYXJncywgaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VJTlQ6Ci0rCWFwLT5hLmFfdWludCA9IHZhX2FyZyAoYXJncywgdW5zaWduZWQgaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0xPTkdJTlQ6Ci0rCWFwLT5hLmFfbG9uZ2ludCA9IHZhX2FyZyAoYXJncywgbG9uZyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVUxPTkdJTlQ6Ci0rCWFwLT5hLmFfdWxvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICAgICAgY2FzZSBUWVBFX0xPTkdMT05HSU5UOgotKwlhcC0+YS5hX2xvbmdsb25naW50ID0gdmFfYXJnIChhcmdzLCBsb25nIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VMT05HTE9OR0lOVDoKLSsJYXAtPmEuYV91bG9uZ2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBjYXNlIFRZUEVfRE9VQkxFOgotKwlhcC0+YS5hX2RvdWJsZSA9IHZhX2FyZyAoYXJncywgZG91YmxlKTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsgICAgICBjYXNlIFRZUEVfTE9OR0RPVUJMRToKLSsJYXAtPmEuYV9sb25nZG91YmxlID0gdmFfYXJnIChhcmdzLCBsb25nIGRvdWJsZSk7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGNhc2UgVFlQRV9DSEFSOgotKwlhcC0+YS5hX2NoYXIgPSB2YV9hcmcgKGFyZ3MsIGludCk7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyAgICAgIGNhc2UgVFlQRV9XSURFX0NIQVI6Ci0rCWFwLT5hLmFfd2lkZV9jaGFyID0gdmFfYXJnIChhcmdzLCB3aW50X3QpOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBjYXNlIFRZUEVfU1RSSU5HOgotKwlhcC0+YS5hX3N0cmluZyA9IHZhX2FyZyAoYXJncywgY29uc3QgY2hhciAqKTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKyAgICAgIGNhc2UgVFlQRV9XSURFX1NUUklORzoKLSsJYXAtPmEuYV93aWRlX3N0cmluZyA9IHZhX2FyZyAoYXJncywgY29uc3Qgd2NoYXJfdCAqKTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX1BPSU5URVI6Ci0rCWFwLT5hLmFfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgdm9pZCAqKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfc2NoYXJfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgc2lnbmVkIGNoYXIgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X3Nob3J0X3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIHNob3J0ICopOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfSU5UX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfaW50X3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIGludCAqKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9sb25naW50X3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgaW50ICopOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfTE9OR0xPTkdJTlRfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9sb25nbG9uZ2ludF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBsb25nIGxvbmcgaW50ICopOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBkZWZhdWx0OgotKwkvKiBVbmtub3duIHR5cGUuICAqLwotKwlyZXR1cm4gLTE7Ci0rICAgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3ByaW50Zi1hcmdzLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLWFyZ3MuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjYwMTcxMDY5NiAtMDQwMAotQEAgLTAsMCArMSwxMzcgQEAKLSsvKiBEZWNvbXBvc2VkIHByaW50ZiBhcmd1bWVudCBsaXN0LgotKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9QUklOVEZfQVJHU19ICi0rI2RlZmluZSBfUFJJTlRGX0FSR1NfSAotKwotKy8qIEdldCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvKiBHZXQgd2NoYXJfdC4gICovCi0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKyMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2VuZGlmCi0rCi0rLyogR2V0IHdpbnRfdC4gICovCi0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rIyBpbmNsdWRlIDx3Y2hhci5oPgotKyNlbmRpZgotKwotKy8qIEdldCB2YV9saXN0LiAgKi8KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rCi0rCi0rLyogQXJndW1lbnQgdHlwZXMgKi8KLSt0eXBlZGVmIGVudW0KLSt7Ci0rICBUWVBFX05PTkUsCi0rICBUWVBFX1NDSEFSLAotKyAgVFlQRV9VQ0hBUiwKLSsgIFRZUEVfU0hPUlQsCi0rICBUWVBFX1VTSE9SVCwKLSsgIFRZUEVfSU5ULAotKyAgVFlQRV9VSU5ULAotKyAgVFlQRV9MT05HSU5ULAotKyAgVFlQRV9VTE9OR0lOVCwKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgIFRZUEVfTE9OR0xPTkdJTlQsCi0rICBUWVBFX1VMT05HTE9OR0lOVCwKLSsjZW5kaWYKLSsgIFRZUEVfRE9VQkxFLAotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rICBUWVBFX0xPTkdET1VCTEUsCi0rI2VuZGlmCi0rICBUWVBFX0NIQVIsCi0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rICBUWVBFX1dJREVfQ0hBUiwKLSsjZW5kaWYKLSsgIFRZUEVfU1RSSU5HLAotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsgIFRZUEVfV0lERV9TVFJJTkcsCi0rI2VuZGlmCi0rICBUWVBFX1BPSU5URVIsCi0rICBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVIsCi0rICBUWVBFX0NPVU5UX1NIT1JUX1BPSU5URVIsCi0rICBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVIKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSssIFRZUEVfQ09VTlRfTE9OR0xPTkdJTlRfUE9JTlRFUgotKyNlbmRpZgotK30gYXJnX3R5cGU7Ci0rCi0rLyogUG9seW1vcnBoaWMgYXJndW1lbnQgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGFyZ190eXBlIHR5cGU7Ci0rICB1bmlvbgotKyAgewotKyAgICBzaWduZWQgY2hhcgkJCWFfc2NoYXI7Ci0rICAgIHVuc2lnbmVkIGNoYXIJCWFfdWNoYXI7Ci0rICAgIHNob3J0CQkJYV9zaG9ydDsKLSsgICAgdW5zaWduZWQgc2hvcnQJCWFfdXNob3J0OwotKyAgICBpbnQJCQkJYV9pbnQ7Ci0rICAgIHVuc2lnbmVkIGludAkJYV91aW50OwotKyAgICBsb25nIGludAkJCWFfbG9uZ2ludDsKLSsgICAgdW5zaWduZWQgbG9uZyBpbnQJCWFfdWxvbmdpbnQ7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICAgIGxvbmcgbG9uZyBpbnQJCWFfbG9uZ2xvbmdpbnQ7Ci0rICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQJYV91bG9uZ2xvbmdpbnQ7Ci0rI2VuZGlmCi0rICAgIGZsb2F0CQkJYV9mbG9hdDsKLSsgICAgZG91YmxlCQkJYV9kb3VibGU7Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsgICAgbG9uZyBkb3VibGUJCQlhX2xvbmdkb3VibGU7Ci0rI2VuZGlmCi0rICAgIGludAkJCQlhX2NoYXI7Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rICAgIHdpbnRfdAkJCWFfd2lkZV9jaGFyOwotKyNlbmRpZgotKyAgICBjb25zdCBjaGFyKgkJCWFfc3RyaW5nOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsgICAgY29uc3Qgd2NoYXJfdCoJCWFfd2lkZV9zdHJpbmc7Ci0rI2VuZGlmCi0rICAgIHZvaWQqCQkJYV9wb2ludGVyOwotKyAgICBzaWduZWQgY2hhciAqCQlhX2NvdW50X3NjaGFyX3BvaW50ZXI7Ci0rICAgIHNob3J0ICoJCQlhX2NvdW50X3Nob3J0X3BvaW50ZXI7Ci0rICAgIGludCAqCQkJYV9jb3VudF9pbnRfcG9pbnRlcjsKLSsgICAgbG9uZyBpbnQgKgkJCWFfY291bnRfbG9uZ2ludF9wb2ludGVyOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICBsb25nIGxvbmcgaW50ICoJCWFfY291bnRfbG9uZ2xvbmdpbnRfcG9pbnRlcjsKLSsjZW5kaWYKLSsgIH0KLSsgIGE7Ci0rfQotK2FyZ3VtZW50OwotKwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgc2l6ZV90IGNvdW50OwotKyAgYXJndW1lbnQgKmFyZzsKLSt9Ci0rYXJndW1lbnRzOwotKwotKwotKy8qIEZldGNoIHRoZSBhcmd1bWVudHMsIHB1dHRpbmcgdGhlbSBpbnRvIGEuICovCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbHNlCi0rZXh0ZXJuCi0rI2VuZGlmCi0raW50IHByaW50Zl9mZXRjaGFyZ3MgKHZhX2xpc3QgYXJncywgYXJndW1lbnRzICphKTsKLSsKLSsjZW5kaWYgLyogX1BSSU5URl9BUkdTX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjYwNzcwOTc4NCAtMDQwMAotQEAgLTAsMCArMSwzNzEgQEAKLSsvKiBGb3JtYXR0ZWQgb3V0cHV0IHRvIHN0cmluZ3MsIHVzaW5nIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5ncyB3aXRoIHBvc2l0aW9ucy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMDMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19HTlVDX18KLSsjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotKyMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSsjZWxzZQotKyMgaWZkZWYgX01TQ19WRVIKLSsjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLSsjIGVsc2UKLSsjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjICBlbHNlCi0rIyAgIGlmZGVmIF9BSVgKLSsgI3ByYWdtYSBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZuZGVmIGFsbG9jYQotK2NoYXIgKmFsbG9jYSAoKTsKLSsjICAgIGVuZGlmCi0rIyAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rCi0rI2lmICFIQVZFX1BPU0lYX1BSSU5URgotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rLyogV2hlbiBidWlsZGluZyBhIERMTCwgd2UgbXVzdCBleHBvcnQgc29tZSBmdW5jdGlvbnMuICBOb3RlIHRoYXQgYmVjYXVzZQotKyAgIHRoZSBmdW5jdGlvbnMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgYmluYXJ5IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlCi0rICAgZG9uJ3QgbmVlZCB0byB1c2UgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGluIGFueSBjYXNlLiAgKi8KLSsjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBCVUlMRElOR19ETEwKLSsjIGRlZmluZSBETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0rI2Vsc2UKLSsjIGRlZmluZSBETExfRVhQT1JURUQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFNUQVRJQyBzdGF0aWMKLSsKLSsvKiBEZWZpbmUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAicHJpbnRmLWFyZ3MuaCIuICAqLwotKyNpbmNsdWRlICJwcmludGYtYXJncy5jIgotKwotKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJwcmludGYtcGFyc2UuaCIuICAqLwotKyNpbmNsdWRlICJwcmludGYtcGFyc2UuYyIKLSsKLSsvKiBEZWZpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ2YXNucHJpbnRmLmgiLiAgKi8KLSsjZGVmaW5lIHZhc25wcmludGYgbGliaW50bF92YXNucHJpbnRmCi0rI2luY2x1ZGUgInZhc25wcmludGYuYyIKLSsjaWYgMCAvKiBub3QgbmVlZGVkICovCi0rI2RlZmluZSBhc25wcmludGYgbGliaW50bF9hc25wcmludGYKLSsjaW5jbHVkZSAiYXNucHJpbnRmLmMiCi0rI2VuZGlmCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92ZnByaW50ZiAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAoc3RyY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHZmcHJpbnRmIChzdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoOwotKyAgICAgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAoTlVMTCwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpbnQgcmV0dmFsID0gLTE7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKGZ3cml0ZSAocmVzdWx0LCAxLCBsZW5ndGgsIHN0cmVhbSkgPT0gbGVuZ3RoKQotKwkgICAgcmV0dmFsID0gbGVuZ3RoOwotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCX0KLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfZnByaW50ZiAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3ZmcHJpbnRmIChzdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92cHJpbnRmIChjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICByZXR1cm4gbGliaW50bF92ZnByaW50ZiAoc3Rkb3V0LCBmb3JtYXQsIGFyZ3MpOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ByaW50ZiAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92cHJpbnRmIChmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdnNwcmludGYgKGNoYXIgKnJlc3VsdGJ1ZiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiB2c3ByaW50ZiAocmVzdWx0YnVmLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aCA9IChzaXplX3QpIH4wIC8gKDQgKiBzaXplb2YgKGNoYXIpKTsKLSsgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKHJlc3VsdGJ1ZiwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZikKLSsJewotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gbGVuZ3RoOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfc3ByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3ZzcHJpbnRmIChyZXN1bHRidWYsIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rI2lmIEhBVkVfU05QUklOVEYKLSsKLSsjIGlmIEhBVkVfREVDTF9fU05QUklOVEYKLSsgICAvKiBXaW5kb3dzLiAgKi8KLSsjICBkZWZpbmUgc3lzdGVtX3ZzbnByaW50ZiBfdnNucHJpbnRmCi0rIyBlbHNlCi0rICAgLyogVW5peC4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c25wcmludGYgdnNucHJpbnRmCi0rIyBlbmRpZgotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdnNucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmIChzdHJjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gc3lzdGVtX3ZzbnByaW50ZiAocmVzdWx0YnVmLCBsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzaXplX3QgbWF4bGVuZ3RoID0gbGVuZ3RoOwotKyAgICAgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAocmVzdWx0YnVmLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgICAgIGlmIChyZXN1bHQgIT0gcmVzdWx0YnVmKQotKwl7Ci0rCSAgaWYgKG1heGxlbmd0aCA+IDApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChsZW5ndGggPCBtYXhsZW5ndGgpCi0rCQlhYm9ydCAoKTsKLSsJICAgICAgbWVtY3B5IChyZXN1bHRidWYsIHJlc3VsdCwgbWF4bGVuZ3RoIC0gMSk7Ci0rCSAgICAgIHJlc3VsdGJ1ZlttYXhsZW5ndGggLSAxXSA9ICdcMCc7Ci0rCSAgICB9Ci0rCSAgZnJlZSAocmVzdWx0KTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXJldHVybiBsZW5ndGg7Ci0rICAgIH0KLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9zbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3ZzbnByaW50ZiAocmVzdWx0YnVmLCBsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIEhBVkVfQVNQUklOVEYKLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3Zhc3ByaW50ZiAoY2hhciAqKnJlc3VsdHAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIHNpemVfdCBsZW5ndGg7Ci0rICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKE5VTEwsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICBpZiAocmVzdWx0ID09IE5VTEwpCi0rICAgIHJldHVybiAtMTsKLSsgICpyZXN1bHRwID0gcmVzdWx0OwotKyAgcmV0dXJuIGxlbmd0aDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9hc3ByaW50ZiAoY2hhciAqKnJlc3VsdHAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdmFzcHJpbnRmIChyZXN1bHRwLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNlbmRpZgotKwotKyNpZiBIQVZFX0ZXUFJJTlRGCi0rCi0rI2luY2x1ZGUgPHdjaGFyLmg+Ci0rCi0rI2RlZmluZSBXSURFX0NIQVJfVkVSU0lPTiAxCi0rCi0rLyogRGVmaW5lIGF1eGlsaWFyeSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gIndwcmludGYtcGFyc2UuaCIuICAqLwotKyNpbmNsdWRlICJwcmludGYtcGFyc2UuYyIKLSsKLSsvKiBEZWZpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ2YXNucHJpbnRmLmgiLiAgKi8KLSsjZGVmaW5lIHZhc253cHJpbnRmIGxpYmludGxfdmFzbndwcmludGYKLSsjaW5jbHVkZSAidmFzbnByaW50Zi5jIgotKyNpZiAwIC8qIG5vdCBuZWVkZWQgKi8KLSsjZGVmaW5lIGFzbndwcmludGYgbGliaW50bF9hc253cHJpbnRmCi0rI2luY2x1ZGUgImFzbnByaW50Zi5jIgotKyNlbmRpZgotKwotKyMgaWYgSEFWRV9ERUNMX19TTldQUklOVEYKLSsgICAvKiBXaW5kb3dzLiAgKi8KLSsjICBkZWZpbmUgc3lzdGVtX3Zzd3ByaW50ZiBfdnNud3ByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBzeXN0ZW1fdnN3cHJpbnRmIHZzd3ByaW50ZgotKyMgZW5kaWYKLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3Zmd3ByaW50ZiAoRklMRSAqc3RyZWFtLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAod2NzY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHZmd3ByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aDsKLSsgICAgICB3Y2hhcl90ICpyZXN1bHQgPSBsaWJpbnRsX3Zhc253cHJpbnRmIChOVUxMLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgICAgIGludCByZXR2YWwgPSAtMTsKLSsgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCi0rCXsKLSsJICBzaXplX3QgaTsKLSsJICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0rCSAgICBpZiAoZnB1dHdjIChyZXN1bHRbaV0sIHN0cmVhbSkgPT0gV0VPRikKLSsJICAgICAgYnJlYWs7Ci0rCSAgaWYgKGkgPT0gbGVuZ3RoKQotKwkgICAgcmV0dmFsID0gbGVuZ3RoOwotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCX0KLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfZndwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92ZndwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3Z3cHJpbnRmIChjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICByZXR1cm4gbGliaW50bF92ZndwcmludGYgKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF93cHJpbnRmIChjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3Z3cHJpbnRmIChmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdnN3cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmICh3Y3NjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gc3lzdGVtX3Zzd3ByaW50ZiAocmVzdWx0YnVmLCBsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzaXplX3QgbWF4bGVuZ3RoID0gbGVuZ3RoOwotKyAgICAgIHdjaGFyX3QgKnJlc3VsdCA9IGxpYmludGxfdmFzbndwcmludGYgKHJlc3VsdGJ1ZiwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZikKLSsJewotKwkgIGlmIChtYXhsZW5ndGggPiAwKQotKwkgICAgewotKwkgICAgICBpZiAobGVuZ3RoIDwgbWF4bGVuZ3RoKQotKwkJYWJvcnQgKCk7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0YnVmLCByZXN1bHQsIChtYXhsZW5ndGggLSAxKSAqIHNpemVvZiAod2NoYXJfdCkpOwotKwkgICAgICByZXN1bHRidWZbbWF4bGVuZ3RoIC0gMV0gPSAwOwotKwkgICAgfQotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gbGVuZ3RoOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfc3dwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92c3dwcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNlbmRpZgotKwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3ByaW50Zi1wYXJzZS5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi1wYXJzZS5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjIyNzA3NTA0IC0wNDAwCi1AQCAtMCwwICsxLDUzNyBAQAotKy8qIEZvcm1hdHRlZCBvdXRwdXQgdG8gc3RyaW5ncy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBpbmNsdWRlICJ3cHJpbnRmLXBhcnNlLmgiCi0rI2Vsc2UKLSsjIGluY2x1ZGUgInByaW50Zi1wYXJzZS5oIgotKyNlbmRpZgotKwotKy8qIEdldCBzaXplX3QsIE5VTEwuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvKiBHZXQgaW50bWF4X3QuICAqLwotKyNpZiBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWAotKyMgaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rI2lmIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgKLSsjIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2VuZGlmCi0rCi0rLyogbWFsbG9jKCksIHJlYWxsb2MoKSwgZnJlZSgpLiAgKi8KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rLyogQ2hlY2tlZCBzaXplX3QgY29tcHV0YXRpb25zLiAgKi8KLSsjaW5jbHVkZSAieHNpemUuaCIKLSsKLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGRlZmluZSBQUklOVEZfUEFSU0Ugd3ByaW50Zl9wYXJzZQotKyMgZGVmaW5lIENIQVJfVCB3Y2hhcl90Ci0rIyBkZWZpbmUgRElSRUNUSVZFIHdjaGFyX3RfZGlyZWN0aXZlCi0rIyBkZWZpbmUgRElSRUNUSVZFUyB3Y2hhcl90X2RpcmVjdGl2ZXMKLSsjZWxzZQotKyMgZGVmaW5lIFBSSU5URl9QQVJTRSBwcmludGZfcGFyc2UKLSsjIGRlZmluZSBDSEFSX1QgY2hhcgotKyMgZGVmaW5lIERJUkVDVElWRSBjaGFyX2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgY2hhcl9kaXJlY3RpdmVzCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbmRpZgotK2ludAotK1BSSU5URl9QQVJTRSAoY29uc3QgQ0hBUl9UICpmb3JtYXQsIERJUkVDVElWRVMgKmQsIGFyZ3VtZW50cyAqYSkKLSt7Ci0rICBjb25zdCBDSEFSX1QgKmNwID0gZm9ybWF0OwkJLyogcG9pbnRlciBpbnRvIGZvcm1hdCAqLwotKyAgc2l6ZV90IGFyZ19wb3NuID0gMDsJCS8qIG51bWJlciBvZiByZWd1bGFyIGFyZ3VtZW50cyBjb25zdW1lZCAqLwotKyAgc2l6ZV90IGRfYWxsb2NhdGVkOwkJCS8qIGFsbG9jYXRlZCBlbGVtZW50cyBvZiBkLT5kaXIgKi8KLSsgIHNpemVfdCBhX2FsbG9jYXRlZDsJCQkvKiBhbGxvY2F0ZWQgZWxlbWVudHMgb2YgYS0+YXJnICovCi0rICBzaXplX3QgbWF4X3dpZHRoX2xlbmd0aCA9IDA7Ci0rICBzaXplX3QgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSAwOwotKwotKyAgZC0+Y291bnQgPSAwOwotKyAgZF9hbGxvY2F0ZWQgPSAxOwotKyAgZC0+ZGlyID0gbWFsbG9jIChkX2FsbG9jYXRlZCAqIHNpemVvZiAoRElSRUNUSVZFKSk7Ci0rICBpZiAoZC0+ZGlyID09IE5VTEwpCi0rICAgIC8qIE91dCBvZiBtZW1vcnkuICAqLwotKyAgICByZXR1cm4gLTE7Ci0rCi0rICBhLT5jb3VudCA9IDA7Ci0rICBhX2FsbG9jYXRlZCA9IDA7Ci0rICBhLT5hcmcgPSBOVUxMOwotKwotKyNkZWZpbmUgUkVHSVNURVJfQVJHKF9pbmRleF8sX3R5cGVfKSBcCi0rICB7CQkJCQkJCQkJXAotKyAgICBzaXplX3QgbiA9IChfaW5kZXhfKTsJCQkJCQlcCi0rICAgIGlmIChuID49IGFfYWxsb2NhdGVkKQkJCQkJCVwKLSsgICAgICB7CQkJCQkJCQkJXAotKwlzaXplX3QgbWVtb3J5X3NpemU7CQkJCQkJXAotKwlhcmd1bWVudCAqbWVtb3J5OwkJCQkJCVwKLSsJCQkJCQkJCQlcCi0rCWFfYWxsb2NhdGVkID0geHRpbWVzIChhX2FsbG9jYXRlZCwgMik7CQkJCVwKLSsJaWYgKGFfYWxsb2NhdGVkIDw9IG4pCQkJCQkJXAotKwkgIGFfYWxsb2NhdGVkID0geHN1bSAobiwgMSk7CQkJCQlcCi0rCW1lbW9yeV9zaXplID0geHRpbWVzIChhX2FsbG9jYXRlZCwgc2l6ZW9mIChhcmd1bWVudCkpOwkJXAotKwlpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCQkJCVwKLSsJICAvKiBPdmVyZmxvdywgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5LiAgKi8JCQlcCi0rCSAgZ290byBlcnJvcjsJCQkJCQkJXAotKwltZW1vcnkgPSAoYS0+YXJnCQkJCQkJXAotKwkJICA/IHJlYWxsb2MgKGEtPmFyZywgbWVtb3J5X3NpemUpCQkJXAotKwkJICA6IG1hbGxvYyAobWVtb3J5X3NpemUpKTsJCQkJXAotKwlpZiAobWVtb3J5ID09IE5VTEwpCQkJCQkJXAotKwkgIC8qIE91dCBvZiBtZW1vcnkuICAqLwkJCQkJCVwKLSsJICBnb3RvIGVycm9yOwkJCQkJCQlcCi0rCWEtPmFyZyA9IG1lbW9yeTsJCQkJCQlcCi0rICAgICAgfQkJCQkJCQkJCVwKLSsgICAgd2hpbGUgKGEtPmNvdW50IDw9IG4pCQkJCQkJXAotKyAgICAgIGEtPmFyZ1thLT5jb3VudCsrXS50eXBlID0gVFlQRV9OT05FOwkJCQlcCi0rICAgIGlmIChhLT5hcmdbbl0udHlwZSA9PSBUWVBFX05PTkUpCQkJCQlcCi0rICAgICAgYS0+YXJnW25dLnR5cGUgPSAoX3R5cGVfKTsJCQkJCVwKLSsgICAgZWxzZSBpZiAoYS0+YXJnW25dLnR5cGUgIT0gKF90eXBlXykpCQkJCVwKLSsgICAgICAvKiBBbWJpZ3VvdXMgdHlwZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCQkJXAotKyAgICAgIGdvdG8gZXJyb3I7CQkJCQkJCVwKLSsgIH0KLSsKLSsgIHdoaWxlICgqY3AgIT0gJ1wwJykKLSsgICAgewotKyAgICAgIENIQVJfVCBjID0gKmNwKys7Ci0rICAgICAgaWYgKGMgPT0gJyUnKQotKwl7Ci0rCSAgc2l6ZV90IGFyZ19pbmRleCA9IEFSR19OT05FOwotKwkgIERJUkVDVElWRSAqZHAgPSAmZC0+ZGlyW2QtPmNvdW50XTsvKiBwb2ludGVyIHRvIG5leHQgZGlyZWN0aXZlICovCi0rCi0rCSAgLyogSW5pdGlhbGl6ZSB0aGUgbmV4dCBkaXJlY3RpdmUuICAqLwotKwkgIGRwLT5kaXJfc3RhcnQgPSBjcCAtIDE7Ci0rCSAgZHAtPmZsYWdzID0gMDsKLSsJICBkcC0+d2lkdGhfc3RhcnQgPSBOVUxMOwotKwkgIGRwLT53aWR0aF9lbmQgPSBOVUxMOwotKwkgIGRwLT53aWR0aF9hcmdfaW5kZXggPSBBUkdfTk9ORTsKLSsJICBkcC0+cHJlY2lzaW9uX3N0YXJ0ID0gTlVMTDsKLSsJICBkcC0+cHJlY2lzaW9uX2VuZCA9IE5VTEw7Ci0rCSAgZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPSBBUkdfTk9ORTsKLSsJICBkcC0+YXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCi0rCSAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCi0rCSAgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKLSsJICAgIHsKLSsJICAgICAgY29uc3QgQ0hBUl9UICpucDsKLSsKLSsJICAgICAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQk7Ci0rCSAgICAgIGlmICgqbnAgPT0gJyQnKQotKwkJewotKwkJICBzaXplX3QgbiA9IDA7Ci0rCi0rCQkgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJICAgIG4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKLSsJCSAgaWYgKG4gPT0gMCkKLSsJCSAgICAvKiBQb3NpdGlvbmFsIGFyZ3VtZW50IDAuICAqLwotKwkJICAgIGdvdG8gZXJyb3I7Ci0rCQkgIGlmIChzaXplX292ZXJmbG93X3AgKG4pKQotKwkJICAgIC8qIG4gdG9vIGxhcmdlLCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkgbGF0ZXIuICAqLwotKwkJICAgIGdvdG8gZXJyb3I7Ci0rCQkgIGFyZ19pbmRleCA9IG4gLSAxOwotKwkJICBjcCA9IG5wICsgMTsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICAvKiBSZWFkIHRoZSBmbGFncy4gICovCi0rCSAgZm9yICg7OykKLSsJICAgIHsKLSsJICAgICAgaWYgKCpjcCA9PSAnXCcnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19HUk9VUDsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICctJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfTEVGVDsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICcrJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfU0hPV1NJR047Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnICcpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX1NQQUNFOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJyMnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19BTFQ7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnMCcpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX1pFUk87Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCWJyZWFrOwotKwkgICAgfQotKwotKwkgIC8qIFBhcnNlIHRoZSBmaWVsZCB3aWR0aC4gICovCi0rCSAgaWYgKCpjcCA9PSAnKicpCi0rCSAgICB7Ci0rCSAgICAgIGRwLT53aWR0aF9zdGFydCA9IGNwOwotKwkgICAgICBjcCsrOwotKwkgICAgICBkcC0+d2lkdGhfZW5kID0gY3A7Ci0rCSAgICAgIGlmIChtYXhfd2lkdGhfbGVuZ3RoIDwgMSkKLSsJCW1heF93aWR0aF9sZW5ndGggPSAxOwotKwotKwkgICAgICAvKiBUZXN0IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8KLSsJICAgICAgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKLSsJCXsKLSsJCSAgY29uc3QgQ0hBUl9UICpucDsKLSsKLSsJCSAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkgICAgOwotKwkJICBpZiAoKm5wID09ICckJykKLSsJCSAgICB7Ci0rCQkgICAgICBzaXplX3QgbiA9IDA7Ci0rCi0rCQkgICAgICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCQluID0geHN1bSAoeHRpbWVzIChuLCAxMCksICpucCAtICcwJyk7Ci0rCQkgICAgICBpZiAobiA9PSAwKQotKwkJCS8qIFBvc2l0aW9uYWwgYXJndW1lbnQgMC4gICovCi0rCQkJZ290byBlcnJvcjsKLSsJCSAgICAgIGlmIChzaXplX292ZXJmbG93X3AgKG4pKQotKwkJCS8qIG4gdG9vIGxhcmdlLCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkgbGF0ZXIuICAqLwotKwkJCWdvdG8gZXJyb3I7Ci0rCQkgICAgICBkcC0+d2lkdGhfYXJnX2luZGV4ID0gbiAtIDE7Ci0rCQkgICAgICBjcCA9IG5wICsgMTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGlmIChkcC0+d2lkdGhfYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJewotKwkJICBkcC0+d2lkdGhfYXJnX2luZGV4ID0gYXJnX3Bvc24rKzsKLSsJCSAgaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQkgICAgLyogYXJnX3Bvc24gd3JhcHBlZCBhcm91bmQuICAqLwotKwkJICAgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCSAgICAgIFJFR0lTVEVSX0FSRyAoZHAtPndpZHRoX2FyZ19pbmRleCwgVFlQRV9JTlQpOwotKwkgICAgfQotKwkgIGVsc2UgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKLSsJICAgIHsKLSsJICAgICAgc2l6ZV90IHdpZHRoX2xlbmd0aDsKLSsKLSsJICAgICAgZHAtPndpZHRoX3N0YXJ0ID0gY3A7Ci0rCSAgICAgIGZvciAoOyAqY3AgPj0gJzAnICYmICpjcCA8PSAnOSc7IGNwKyspCi0rCQk7Ci0rCSAgICAgIGRwLT53aWR0aF9lbmQgPSBjcDsKLSsJICAgICAgd2lkdGhfbGVuZ3RoID0gZHAtPndpZHRoX2VuZCAtIGRwLT53aWR0aF9zdGFydDsKLSsJICAgICAgaWYgKG1heF93aWR0aF9sZW5ndGggPCB3aWR0aF9sZW5ndGgpCi0rCQltYXhfd2lkdGhfbGVuZ3RoID0gd2lkdGhfbGVuZ3RoOwotKwkgICAgfQotKwotKwkgIC8qIFBhcnNlIHRoZSBwcmVjaXNpb24uICAqLwotKwkgIGlmICgqY3AgPT0gJy4nKQotKwkgICAgewotKwkgICAgICBjcCsrOwotKwkgICAgICBpZiAoKmNwID09ICcqJykKLSsJCXsKLSsJCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IGNwIC0gMTsKLSsJCSAgY3ArKzsKLSsJCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBjcDsKLSsJCSAgaWYgKG1heF9wcmVjaXNpb25fbGVuZ3RoIDwgMikKLSsJCSAgICBtYXhfcHJlY2lzaW9uX2xlbmd0aCA9IDI7Ci0rCi0rCQkgIC8qIFRlc3QgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwotKwkJICBpZiAoKmNwID49ICcwJyAmJiAqY3AgPD0gJzknKQotKwkJICAgIHsKLSsJCSAgICAgIGNvbnN0IENIQVJfVCAqbnA7Ci0rCi0rCQkgICAgICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCQk7Ci0rCQkgICAgICBpZiAoKm5wID09ICckJykKLSsJCQl7Ci0rCQkJICBzaXplX3QgbiA9IDA7Ci0rCi0rCQkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCQkgICAgbiA9IHhzdW0gKHh0aW1lcyAobiwgMTApLCAqbnAgLSAnMCcpOwotKwkJCSAgaWYgKG4gPT0gMCkKLSsJCQkgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KLSsJCQkgICAgZ290byBlcnJvcjsKLSsJCQkgIGlmIChzaXplX292ZXJmbG93X3AgKG4pKQotKwkJCSAgICAvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5Ci0rCQkJICAgICAgIGxhdGVyLiAgKi8KLSsJCQkgICAgZ290byBlcnJvcjsKLSsJCQkgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gbiAtIDE7Ci0rCQkJICBjcCA9IG5wICsgMTsKLSsJCQl9Ci0rCQkgICAgfQotKwkJICBpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQkgICAgewotKwkJICAgICAgZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPSBhcmdfcG9zbisrOwotKwkJICAgICAgaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJCS8qIGFyZ19wb3NuIHdyYXBwZWQgYXJvdW5kLiAgKi8KLSsJCQlnb3RvIGVycm9yOwotKwkJICAgIH0KLSsJCSAgUkVHSVNURVJfQVJHIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCwgVFlQRV9JTlQpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHNpemVfdCBwcmVjaXNpb25fbGVuZ3RoOwotKwotKwkJICBkcC0+cHJlY2lzaW9uX3N0YXJ0ID0gY3AgLSAxOwotKwkJICBmb3IgKDsgKmNwID49ICcwJyAmJiAqY3AgPD0gJzknOyBjcCsrKQotKwkJICAgIDsKLSsJCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBjcDsKLSsJCSAgcHJlY2lzaW9uX2xlbmd0aCA9IGRwLT5wcmVjaXNpb25fZW5kIC0gZHAtPnByZWNpc2lvbl9zdGFydDsKLSsJCSAgaWYgKG1heF9wcmVjaXNpb25fbGVuZ3RoIDwgcHJlY2lzaW9uX2xlbmd0aCkKLSsJCSAgICBtYXhfcHJlY2lzaW9uX2xlbmd0aCA9IHByZWNpc2lvbl9sZW5ndGg7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgewotKwkgICAgYXJnX3R5cGUgdHlwZTsKLSsKLSsJICAgIC8qIFBhcnNlIGFyZ3VtZW50IHR5cGUvc2l6ZSBzcGVjaWZpZXJzLiAgKi8KLSsJICAgIHsKLSsJICAgICAgaW50IGZsYWdzID0gMDsKLSsKLSsJICAgICAgZm9yICg7OykKLSsJCXsKLSsJCSAgaWYgKCpjcCA9PSAnaCcpCi0rCQkgICAgewotKwkJICAgICAgZmxhZ3MgfD0gKDEgPDwgKGZsYWdzICYgMSkpOwotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UgaWYgKCpjcCA9PSAnTCcpCi0rCQkgICAgewotKwkJICAgICAgZmxhZ3MgfD0gNDsKLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlIGlmICgqY3AgPT0gJ2wnKQotKwkJICAgIHsKLSsJCSAgICAgIGZsYWdzICs9IDg7Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsjaWZkZWYgSEFWRV9JTlRNQVhfVAotKwkJICBlbHNlIGlmICgqY3AgPT0gJ2onKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChzaXplb2YgKGludG1heF90KSA+IHNpemVvZiAobG9uZykpCi0rCQkJewotKwkJCSAgLyogaW50bWF4X3QgPSBsb25nIGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDE2OwotKwkJCX0KLSsJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAoaW50bWF4X3QpID4gc2l6ZW9mIChpbnQpKQotKwkJCXsKLSsJCQkgIC8qIGludG1heF90ID0gbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gODsKLSsJCQl9Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsjZW5kaWYKLSsJCSAgZWxzZSBpZiAoKmNwID09ICd6JyB8fCAqY3AgPT0gJ1onKQotKwkJICAgIHsKLSsJCSAgICAgIC8qICd6JyBpcyBzdGFuZGFyZGl6ZWQgaW4gSVNPIEMgOTksIGJ1dCBnbGliYyB1c2VzICdaJwotKwkJCSBiZWNhdXNlIHRoZSB3YXJuaW5nIGZhY2lsaXR5IGluIGdjYy0yLjk1LjIgdW5kZXJzdGFuZHMKLSsJCQkgb25seSAnWicgKHNlZSBnY2MtMi45NS4yL2djYy9jLWNvbW1vbi5jOjE3ODQpLiAgKi8KLSsJCSAgICAgIGlmIChzaXplb2YgKHNpemVfdCkgPiBzaXplb2YgKGxvbmcpKQotKwkJCXsKLSsJCQkgIC8qIHNpemVfdCA9IGxvbmcgbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gMTY7Ci0rCQkJfQotKwkJICAgICAgZWxzZSBpZiAoc2l6ZW9mIChzaXplX3QpID4gc2l6ZW9mIChpbnQpKQotKwkJCXsKLSsJCQkgIC8qIHNpemVfdCA9IGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDg7Ci0rCQkJfQotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UgaWYgKCpjcCA9PSAndCcpCi0rCQkgICAgewotKwkJICAgICAgaWYgKHNpemVvZiAocHRyZGlmZl90KSA+IHNpemVvZiAobG9uZykpCi0rCQkJewotKwkJCSAgLyogcHRyZGlmZl90ID0gbG9uZyBsb25nICovCi0rCQkJICBmbGFncyArPSAxNjsKLSsJCQl9Ci0rCQkgICAgICBlbHNlIGlmIChzaXplb2YgKHB0cmRpZmZfdCkgPiBzaXplb2YgKGludCkpCi0rCQkJewotKwkJCSAgLyogcHRyZGlmZl90ID0gbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gODsKLSsJCQl9Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsJCSAgZWxzZQotKwkJICAgIGJyZWFrOwotKwkJfQotKwotKwkgICAgICAvKiBSZWFkIHRoZSBjb252ZXJzaW9uIGNoYXJhY3Rlci4gICovCi0rCSAgICAgIGMgPSAqY3ArKzsKLSsJICAgICAgc3dpdGNoIChjKQotKwkJewotKwkJY2FzZSAnZCc6IGNhc2UgJ2knOgotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCi0rCQkgICAgdHlwZSA9IFRZUEVfTE9OR0xPTkdJTlQ7Ci0rCQkgIGVsc2UKLSsjZW5kaWYKLSsJCSAgaWYgKGZsYWdzID49IDgpCi0rCQkgICAgdHlwZSA9IFRZUEVfTE9OR0lOVDsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQotKwkJICAgIHR5cGUgPSBUWVBFX1NDSEFSOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDEpCi0rCQkgICAgdHlwZSA9IFRZUEVfU0hPUlQ7Ci0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9JTlQ7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnbyc6IGNhc2UgJ3UnOiBjYXNlICd4JzogY2FzZSAnWCc6Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKLSsJCSAgICB0eXBlID0gVFlQRV9VTE9OR0xPTkdJTlQ7Ci0rCQkgIGVsc2UKLSsjZW5kaWYKLSsJCSAgaWYgKGZsYWdzID49IDgpCi0rCQkgICAgdHlwZSA9IFRZUEVfVUxPTkdJTlQ7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMikKLSsJCSAgICB0eXBlID0gVFlQRV9VQ0hBUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAxKQotKwkJICAgIHR5cGUgPSBUWVBFX1VTSE9SVDsKLSsJCSAgZWxzZQotKwkJICAgIHR5cGUgPSBUWVBFX1VJTlQ7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnZic6IGNhc2UgJ0YnOiBjYXNlICdlJzogY2FzZSAnRSc6IGNhc2UgJ2cnOiBjYXNlICdHJzoKLSsJCWNhc2UgJ2EnOiBjYXNlICdBJzoKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCi0rCQkgICAgdHlwZSA9IFRZUEVfTE9OR0RPVUJMRTsKLSsJCSAgZWxzZQotKyNlbmRpZgotKwkJICB0eXBlID0gVFlQRV9ET1VCTEU7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnYyc6Ci0rCQkgIGlmIChmbGFncyA+PSA4KQotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJICAgIHR5cGUgPSBUWVBFX1dJREVfQ0hBUjsKLSsjZWxzZQotKwkJICAgIGdvdG8gZXJyb3I7Ci0rI2VuZGlmCi0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9DSEFSOwotKwkJICBicmVhazsKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsJCWNhc2UgJ0MnOgotKwkJICB0eXBlID0gVFlQRV9XSURFX0NIQVI7Ci0rCQkgIGMgPSAnYyc7Ci0rCQkgIGJyZWFrOwotKyNlbmRpZgotKwkJY2FzZSAncyc6Ci0rCQkgIGlmIChmbGFncyA+PSA4KQotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgICB0eXBlID0gVFlQRV9XSURFX1NUUklORzsKLSsjZWxzZQotKwkJICAgIGdvdG8gZXJyb3I7Ci0rI2VuZGlmCi0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9TVFJJTkc7Ci0rCQkgIGJyZWFrOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCWNhc2UgJ1MnOgotKwkJICB0eXBlID0gVFlQRV9XSURFX1NUUklORzsKLSsJCSAgYyA9ICdzJzsKLSsJCSAgYnJlYWs7Ci0rI2VuZGlmCi0rCQljYXNlICdwJzoKLSsJCSAgdHlwZSA9IFRZUEVfUE9JTlRFUjsKLSsJCSAgYnJlYWs7Ci0rCQljYXNlICduJzoKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI7Ci0rCQkgIGVsc2UKLSsjZW5kaWYKLSsJCSAgaWYgKGZsYWdzID49IDgpCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfTE9OR0lOVF9QT0lOVEVSOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDIpCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAxKQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX1NIT1JUX1BPSU5URVI7Ci0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9JTlRfUE9JTlRFUjsKLSsJCSAgYnJlYWs7Ci0rCQljYXNlICclJzoKLSsJCSAgdHlwZSA9IFRZUEVfTk9ORTsKLSsJCSAgYnJlYWs7Ci0rCQlkZWZhdWx0OgotKwkJICAvKiBVbmtub3duIGNvbnZlcnNpb24gY2hhcmFjdGVyLiAgKi8KLSsJCSAgZ290byBlcnJvcjsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICAgIGlmICh0eXBlICE9IFRZUEVfTk9ORSkKLSsJICAgICAgewotKwkJZHAtPmFyZ19pbmRleCA9IGFyZ19pbmRleDsKLSsJCWlmIChkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICB7Ci0rCQkgICAgZHAtPmFyZ19pbmRleCA9IGFyZ19wb3NuKys7Ci0rCQkgICAgaWYgKGRwLT5hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQkgICAgICAvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCi0rCQkgICAgICBnb3RvIGVycm9yOwotKwkJICB9Ci0rCQlSRUdJU1RFUl9BUkcgKGRwLT5hcmdfaW5kZXgsIHR5cGUpOwotKwkgICAgICB9Ci0rCSAgICBkcC0+Y29udmVyc2lvbiA9IGM7Ci0rCSAgICBkcC0+ZGlyX2VuZCA9IGNwOwotKwkgIH0KLSsKLSsJICBkLT5jb3VudCsrOwotKwkgIGlmIChkLT5jb3VudCA+PSBkX2FsbG9jYXRlZCkKLSsJICAgIHsKLSsJICAgICAgc2l6ZV90IG1lbW9yeV9zaXplOwotKwkgICAgICBESVJFQ1RJVkUgKm1lbW9yeTsKLSsKLSsJICAgICAgZF9hbGxvY2F0ZWQgPSB4dGltZXMgKGRfYWxsb2NhdGVkLCAyKTsKLSsJICAgICAgbWVtb3J5X3NpemUgPSB4dGltZXMgKGRfYWxsb2NhdGVkLCBzaXplb2YgKERJUkVDVElWRSkpOwotKwkgICAgICBpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCi0rCQkvKiBPdmVyZmxvdywgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5LiAgKi8KLSsJCWdvdG8gZXJyb3I7Ci0rCSAgICAgIG1lbW9yeSA9IHJlYWxsb2MgKGQtPmRpciwgbWVtb3J5X3NpemUpOwotKwkgICAgICBpZiAobWVtb3J5ID09IE5VTEwpCi0rCQkvKiBPdXQgb2YgbWVtb3J5LiAgKi8KLSsJCWdvdG8gZXJyb3I7Ci0rCSAgICAgIGQtPmRpciA9IG1lbW9yeTsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rICBkLT5kaXJbZC0+Y291bnRdLmRpcl9zdGFydCA9IGNwOwotKwotKyAgZC0+bWF4X3dpZHRoX2xlbmd0aCA9IG1heF93aWR0aF9sZW5ndGg7Ci0rICBkLT5tYXhfcHJlY2lzaW9uX2xlbmd0aCA9IG1heF9wcmVjaXNpb25fbGVuZ3RoOwotKyAgcmV0dXJuIDA7Ci0rCi0rZXJyb3I6Ci0rICBpZiAoYS0+YXJnKQotKyAgICBmcmVlIChhLT5hcmcpOwotKyAgaWYgKGQtPmRpcikKLSsgICAgZnJlZSAoZC0+ZGlyKTsKLSsgIHJldHVybiAtMTsKLSt9Ci0rCi0rI3VuZGVmIERJUkVDVElWRVMKLSsjdW5kZWYgRElSRUNUSVZFCi0rI3VuZGVmIENIQVJfVAotKyN1bmRlZiBQUklOVEZfUEFSU0UKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtcGFyc2UuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtcGFyc2UuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjYyODcwNjU5MiAtMDQwMAotQEAgLTAsMCArMSw3NSBAQAotKy8qIFBhcnNlIHByaW50ZiBmb3JtYXQgc3RyaW5nLgotKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9QUklOVEZfUEFSU0VfSAotKyNkZWZpbmUgX1BSSU5URl9QQVJTRV9ICi0rCi0rI2luY2x1ZGUgInByaW50Zi1hcmdzLmgiCi0rCi0rCi0rLyogRmxhZ3MgKi8KLSsjZGVmaW5lIEZMQUdfR1JPVVAJIDEJLyogJyBmbGFnICovCi0rI2RlZmluZSBGTEFHX0xFRlQJIDIJLyogLSBmbGFnICovCi0rI2RlZmluZSBGTEFHX1NIT1dTSUdOCSA0CS8qICsgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TUEFDRQkgOAkvKiBzcGFjZSBmbGFnICovCi0rI2RlZmluZSBGTEFHX0FMVAkxNgkvKiAjIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfWkVSTwkzMgotKwotKy8qIGFyZ19pbmRleCB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgbm8gYXJndW1lbnQgaXMgY29uc3VtZWQuICAqLwotKyNkZWZpbmUgQVJHX05PTkUJKH4oc2l6ZV90KTApCi0rCi0rLyogQSBwYXJzZWQgZGlyZWN0aXZlLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGNvbnN0IGNoYXIqIGRpcl9zdGFydDsKLSsgIGNvbnN0IGNoYXIqIGRpcl9lbmQ7Ci0rICBpbnQgZmxhZ3M7Ci0rICBjb25zdCBjaGFyKiB3aWR0aF9zdGFydDsKLSsgIGNvbnN0IGNoYXIqIHdpZHRoX2VuZDsKLSsgIHNpemVfdCB3aWR0aF9hcmdfaW5kZXg7Ci0rICBjb25zdCBjaGFyKiBwcmVjaXNpb25fc3RhcnQ7Ci0rICBjb25zdCBjaGFyKiBwcmVjaXNpb25fZW5kOwotKyAgc2l6ZV90IHByZWNpc2lvbl9hcmdfaW5kZXg7Ci0rICBjaGFyIGNvbnZlcnNpb247IC8qIGQgaSBvIHUgeCBYIGYgZSBFIGcgRyBjIHMgcCBuIFUgJSBidXQgbm90IEMgUyAqLwotKyAgc2l6ZV90IGFyZ19pbmRleDsKLSt9Ci0rY2hhcl9kaXJlY3RpdmU7Ci0rCi0rLyogQSBwYXJzZWQgZm9ybWF0IHN0cmluZy4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBzaXplX3QgY291bnQ7Ci0rICBjaGFyX2RpcmVjdGl2ZSAqZGlyOwotKyAgc2l6ZV90IG1heF93aWR0aF9sZW5ndGg7Ci0rICBzaXplX3QgbWF4X3ByZWNpc2lvbl9sZW5ndGg7Ci0rfQotK2NoYXJfZGlyZWN0aXZlczsKLSsKLSsKLSsvKiBQYXJzZXMgdGhlIGZvcm1hdCBzdHJpbmcuICBGaWxscyBpbiB0aGUgbnVtYmVyIE4gb2YgZGlyZWN0aXZlcywgYW5kIGZpbGxzCi0rICAgaW4gZGlyZWN0aXZlc1swXSwgLi4uLCBkaXJlY3RpdmVzW04tMV0sIGFuZCBzZXRzIGRpcmVjdGl2ZXNbTl0uZGlyX3N0YXJ0Ci0rICAgdG8gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZy4gIEFsc28gZmlsbHMgaW4gdGhlIGFyZ190eXBlIGZpZWxkcyBvZiB0aGUKLSsgICBhcmd1bWVudHMgYW5kIHRoZSBuZWVkZWQgY291bnQgb2YgYXJndW1lbnRzLiAgKi8KLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2Vsc2UKLStleHRlcm4KLSsjZW5kaWYKLStpbnQgcHJpbnRmX3BhcnNlIChjb25zdCBjaGFyICpmb3JtYXQsIGNoYXJfZGlyZWN0aXZlcyAqZCwgYXJndW1lbnRzICphKTsKLSsKLSsjZW5kaWYgLyogX1BSSU5URl9QQVJTRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcmVmLWFkZC5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcmVmLWFkZC5zaW4JMjAwNC0wOS0xMiAxNDo0MDozNC42MzM3MDU4MzIgLTA0MDAKLUBAIC0wLDAgKzEsMzEgQEAKLSsjIEFkZCB0aGlzIHBhY2thZ2UgdG8gYSBsaXN0IG9mIHJlZmVyZW5jZXMgc3RvcmVkIGluIGEgdGV4dCBmaWxlLgotKyMKLSsjICAgQ29weXJpZ2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsjICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjICAgVVNBLgotKyMKLSsjIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LgotKyMKLSsvXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAvIHsKLSsgIHMvIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6Ly8KLSsgIHRhCi0rICA6YQotKyAgcy8gQFBBQ0tBR0VAIC8gQFBBQ0tBR0VAIC8KLSsgIHRiCi0rICBzLyAkLyBAUEFDS0FHRUAgLwotKyAgOmIKLSsgIHMvXi8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3JlZi1kZWwuc2luCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlZi1kZWwuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjM4NzA1MDcyIC0wNDAwCi1AQCAtMCwwICsxLDI2IEBACi0rIyBSZW1vdmUgdGhpcyBwYWNrYWdlIGZyb20gYSBsaXN0IG9mIHJlZmVyZW5jZXMgc3RvcmVkIGluIGEgdGV4dCBmaWxlLgotKyMKLSsjICAgQ29weXJpZ2h0IChDKSAyMDAwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsjICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjICAgVVNBLgotKyMKLSsjIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LgotKyMKLSsvXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAvIHsKLSsgIHMvIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6Ly8KLSsgIHMvIEBQQUNLQUdFQCAvIC8KLSsgIHMvXi8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3JlbG9jYXRhYmxlLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcmVsb2NhdGFibGUuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjY0NDcwNDE2MCAtMDQwMAotQEAgLTAsMCArMSw0NDkgQEAKLSsvKiBQcm92aWRlIHJlbG9jYXRhYmxlIHBhY2thZ2VzLgotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwgMjAwMy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdGRpby5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBnZXRsaW5lKCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRQkxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpbmNsdWRlICJyZWxvY2F0YWJsZS5oIgotKwotKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaWZkZWYgTk9fWE1BTExPQwotKyMgZGVmaW5lIHhtYWxsb2MgbWFsbG9jCi0rI2Vsc2UKLSsjIGluY2x1ZGUgInhhbGxvYy5oIgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXwotKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSsjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSsjZW5kaWYKLSsKLSsjaWYgREVQRU5EU19PTl9MSUJDSEFSU0VUCi0rIyBpbmNsdWRlIDxsaWJjaGFyc2V0Lmg+Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSUNPTlYgJiYgSEFWRV9JQ09OVgotKyMgaW5jbHVkZSA8aWNvbnYuaD4KLSsjZW5kaWYKLSsjaWYgREVQRU5EU19PTl9MSUJJTlRMICYmIEVOQUJMRV9OTFMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZW5kaWYKLSsKLSsvKiBGYWtlZCBjaGVhcCAnYm9vbCcuICAqLwotKyN1bmRlZiBib29sCi0rI3VuZGVmIGZhbHNlCi0rI3VuZGVmIHRydWUKLSsjZGVmaW5lIGJvb2wgaW50Ci0rI2RlZmluZSBmYWxzZSAwCi0rI2RlZmluZSB0cnVlIDEKLSsKLSsvKiBQYXRobmFtZSBzdXBwb3J0LgotKyAgIElTU0xBU0goQykgICAgICAgICAgIHRlc3RzIHdoZXRoZXIgQyBpcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVyLgotKyAgIElTX1BBVEhfV0lUSF9ESVIoUCkgIHRlc3RzIHdoZXRoZXIgUCBjb250YWlucyBhIGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9uLgotKyAqLwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQotKyMgZGVmaW5lIEhBU19ERVZJQ0UoUCkgXAotKyAgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSBcCi0rICAgICAmJiAoUClbMV0gPT0gJzonKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgXAotKyAgICAoc3RyY2hyIChQLCAnLycpICE9IE5VTEwgfHwgc3RyY2hyIChQLCAnXFwnKSAhPSBOVUxMIHx8IEhBU19ERVZJQ0UgKFApKQotKyMgZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAoSEFTX0RFVklDRSAoUCkgPyAyIDogMCkKLSsjZWxzZQotKyAgLyogVW5peCAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycpCi0rIyBkZWZpbmUgSVNfUEFUSF9XSVRIX0RJUihQKSAoc3RyY2hyIChQLCAnLycpICE9IE5VTEwpCi0rIyBkZWZpbmUgRklMRVNZU1RFTV9QUkVGSVhfTEVOKFApIDAKLSsjZW5kaWYKLSsKLSsvKiBPcmlnaW5hbCBpbnN0YWxsYXRpb24gcHJlZml4LiAgKi8KLStzdGF0aWMgY2hhciAqb3JpZ19wcmVmaXg7Ci0rc3RhdGljIHNpemVfdCBvcmlnX3ByZWZpeF9sZW47Ci0rLyogQ3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4LiAgKi8KLStzdGF0aWMgY2hhciAqY3Vycl9wcmVmaXg7Ci0rc3RhdGljIHNpemVfdCBjdXJyX3ByZWZpeF9sZW47Ci0rLyogVGhlc2UgcHJlZml4ZXMgZG8gbm90IGVuZCBpbiBhIHNsYXNoLiAgQW55dGhpbmcgdGhhdCB3aWxsIGJlIGNvbmNhdGVuYXRlZAotKyAgIHRvIHRoZW0gbXVzdCBzdGFydCB3aXRoIGEgc2xhc2guICAqLwotKwotKy8qIFNldHMgdGhlIG9yaWdpbmFsIGFuZCB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IG9mIHRoaXMgbW9kdWxlLgotKyAgIFJlbG9jYXRpb24gc2ltcGx5IHJlcGxhY2VzIGEgcGF0aG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwgcHJlZml4Ci0rICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKLSsgICBwcmVmaXhlcyBzaG91bGQgYmUgZGlyZWN0b3J5IG5hbWVzIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2ggKGkuZS4gdXNlICIiCi0rICAgaW5zdGVhZCBvZiAiLyIpLiAgKi8KLStzdGF0aWMgdm9pZAotK3NldF90aGlzX3JlbG9jYXRpb25fcHJlZml4IChjb25zdCBjaGFyICpvcmlnX3ByZWZpeF9hcmcsCi0rCQkJICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4X2FyZykKLSt7Ci0rICBpZiAob3JpZ19wcmVmaXhfYXJnICE9IE5VTEwgJiYgY3Vycl9wcmVmaXhfYXJnICE9IE5VTEwKLSsgICAgICAvKiBPcHRpbWl6YXRpb246IGlmIG9yaWdfcHJlZml4IGFuZCBjdXJyX3ByZWZpeCBhcmUgZXF1YWwsIHRoZQotKwkgcmVsb2NhdGlvbiBpcyBhIG5vcC4gICovCi0rICAgICAgJiYgc3RyY21wIChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZykgIT0gMCkKLSsgICAgewotKyAgICAgIC8qIER1cGxpY2F0ZSB0aGUgYXJndW1lbnQgc3RyaW5ncy4gICovCi0rICAgICAgY2hhciAqbWVtb3J5OwotKwotKyAgICAgIG9yaWdfcHJlZml4X2xlbiA9IHN0cmxlbiAob3JpZ19wcmVmaXhfYXJnKTsKLSsgICAgICBjdXJyX3ByZWZpeF9sZW4gPSBzdHJsZW4gKGN1cnJfcHJlZml4X2FyZyk7Ci0rICAgICAgbWVtb3J5ID0gKGNoYXIgKikgeG1hbGxvYyAob3JpZ19wcmVmaXhfbGVuICsgMSArIGN1cnJfcHJlZml4X2xlbiArIDEpOwotKyNpZmRlZiBOT19YTUFMTE9DCi0rICAgICAgaWYgKG1lbW9yeSAhPSBOVUxMKQotKyNlbmRpZgotKwl7Ci0rCSAgbWVtY3B5IChtZW1vcnksIG9yaWdfcHJlZml4X2FyZywgb3JpZ19wcmVmaXhfbGVuICsgMSk7Ci0rCSAgb3JpZ19wcmVmaXggPSBtZW1vcnk7Ci0rCSAgbWVtb3J5ICs9IG9yaWdfcHJlZml4X2xlbiArIDE7Ci0rCSAgbWVtY3B5IChtZW1vcnksIGN1cnJfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfbGVuICsgMSk7Ci0rCSAgY3Vycl9wcmVmaXggPSBtZW1vcnk7Ci0rCSAgcmV0dXJuOwotKwl9Ci0rICAgIH0KLSsgIG9yaWdfcHJlZml4ID0gTlVMTDsKLSsgIGN1cnJfcHJlZml4ID0gTlVMTDsKLSsgIC8qIERvbid0IHdvcnJ5IGFib3V0IHdhc3RlZCBtZW1vcnkgaGVyZSAtIHRoaXMgZnVuY3Rpb24gaXMgdXN1YWxseSBvbmx5Ci0rICAgICBjYWxsZWQgb25jZS4gICovCi0rfQotKwotKy8qIFNldHMgdGhlIG9yaWdpbmFsIGFuZCB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IG9mIHRoZSBwYWNrYWdlLgotKyAgIFJlbG9jYXRpb24gc2ltcGx5IHJlcGxhY2VzIGEgcGF0aG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwgcHJlZml4Ci0rICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKLSsgICBwcmVmaXhlcyBzaG91bGQgYmUgZGlyZWN0b3J5IG5hbWVzIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2ggKGkuZS4gdXNlICIiCi0rICAgaW5zdGVhZCBvZiAiLyIpLiAgKi8KLSt2b2lkCi0rc2V0X3JlbG9jYXRpb25fcHJlZml4IChjb25zdCBjaGFyICpvcmlnX3ByZWZpeF9hcmcsIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4X2FyZykKLSt7Ci0rICBzZXRfdGhpc19yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKwotKyAgLyogTm93IG5vdGlmeSBhbGwgZGVwZW5kZW50IGxpYnJhcmllcy4gICovCi0rI2lmIERFUEVORFNfT05fTElCQ0hBUlNFVAotKyAgbGliY2hhcnNldF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKLSsjZW5kaWYKLSsjaWYgREVQRU5EU19PTl9MSUJJQ09OViAmJiBIQVZFX0lDT05WICYmIF9MSUJJQ09OVl9WRVJTSU9OID49IDB4MDEwOQotKyAgbGliaWNvbnZfc2V0X3JlbG9jYXRpb25fcHJlZml4IChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZyk7Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSU5UTCAmJiBFTkFCTEVfTkxTICYmIGRlZmluZWQgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXgKLSsgIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4IChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZyk7Ci0rI2VuZGlmCi0rfQotKwotKyNpZiAhZGVmaW5lZCBJTl9MSUJSQVJZIHx8IChkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIpCi0rCi0rLyogQ29udmVuaWVuY2UgZnVuY3Rpb246Ci0rICAgQ29tcHV0ZXMgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCwgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi0rICAgaW5zdGFsbGF0aW9uIHByZWZpeCwgdGhlIG9yaWdpbmFsIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb2YgYSBwYXJ0aWN1bGFyCi0rICAgZmlsZSwgYW5kIHRoZSBjdXJyZW50IHBhdGhuYW1lIG9mIHRoaXMgZmlsZS4gIFJldHVybnMgTlVMTCB1cG9uIGZhaWx1cmUuICAqLwotKyNpZmRlZiBJTl9MSUJSQVJZCi0rI2RlZmluZSBjb21wdXRlX2N1cnJfcHJlZml4IGxvY2FsX2NvbXB1dGVfY3Vycl9wcmVmaXgKLStzdGF0aWMKLSsjZW5kaWYKLStjb25zdCBjaGFyICoKLStjb21wdXRlX2N1cnJfcHJlZml4IChjb25zdCBjaGFyICpvcmlnX2luc3RhbGxwcmVmaXgsCi0rCQkgICAgIGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbGRpciwKLSsJCSAgICAgY29uc3QgY2hhciAqY3Vycl9wYXRobmFtZSkKLSt7Ci0rICBjb25zdCBjaGFyICpjdXJyX2luc3RhbGxkaXI7Ci0rICBjb25zdCBjaGFyICpyZWxfaW5zdGFsbGRpcjsKLSsKLSsgIGlmIChjdXJyX3BhdGhuYW1lID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogRGV0ZXJtaW5lIHRoZSByZWxhdGl2ZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LCByZWxhdGl2ZSB0byB0aGUgcHJlZml4LgotKyAgICAgVGhpcyBpcyBzaW1wbHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvcmlnX2luc3RhbGxwcmVmaXggYW5kCi0rICAgICBvcmlnX2luc3RhbGxkaXIuICAqLwotKyAgaWYgKHN0cm5jbXAgKG9yaWdfaW5zdGFsbHByZWZpeCwgb3JpZ19pbnN0YWxsZGlyLCBzdHJsZW4gKG9yaWdfaW5zdGFsbHByZWZpeCkpCi0rICAgICAgIT0gMCkKLSsgICAgLyogU2hvdWxkbid0IGhhcHBlbiAtIG5vdGhpbmcgc2hvdWxkIGJlIGluc3RhbGxlZCBvdXRzaWRlICQocHJlZml4KS4gICovCi0rICAgIHJldHVybiBOVUxMOwotKyAgcmVsX2luc3RhbGxkaXIgPSBvcmlnX2luc3RhbGxkaXIgKyBzdHJsZW4gKG9yaWdfaW5zdGFsbHByZWZpeCk7Ci0rCi0rICAvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4gICovCi0rICB7Ci0rICAgIGNvbnN0IGNoYXIgKnBfYmFzZSA9IGN1cnJfcGF0aG5hbWUgKyBGSUxFU1lTVEVNX1BSRUZJWF9MRU4gKGN1cnJfcGF0aG5hbWUpOwotKyAgICBjb25zdCBjaGFyICpwID0gY3Vycl9wYXRobmFtZSArIHN0cmxlbiAoY3Vycl9wYXRobmFtZSk7Ci0rICAgIGNoYXIgKnE7Ci0rCi0rICAgIHdoaWxlIChwID4gcF9iYXNlKQotKyAgICAgIHsKLSsJcC0tOwotKwlpZiAoSVNTTEFTSCAoKnApKQotKwkgIGJyZWFrOwotKyAgICAgIH0KLSsKLSsgICAgcSA9IChjaGFyICopIHhtYWxsb2MgKHAgLSBjdXJyX3BhdGhuYW1lICsgMSk7Ci0rI2lmZGVmIE5PX1hNQUxMT0MKLSsgICAgaWYgKHEgPT0gTlVMTCkKLSsgICAgICByZXR1cm4gTlVMTDsKLSsjZW5kaWYKLSsgICAgbWVtY3B5IChxLCBjdXJyX3BhdGhuYW1lLCBwIC0gY3Vycl9wYXRobmFtZSk7Ci0rICAgIHFbcCAtIGN1cnJfcGF0aG5hbWVdID0gJ1wwJzsKLSsgICAgY3Vycl9pbnN0YWxsZGlyID0gcTsKLSsgIH0KLSsKLSsgIC8qIENvbXB1dGUgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBieSByZW1vdmluZyB0aGUgdHJhaWxpbmcKLSsgICAgIHJlbF9pbnN0YWxsZGlyIGZyb20gaXQuICAqLwotKyAgewotKyAgICBjb25zdCBjaGFyICpycCA9IHJlbF9pbnN0YWxsZGlyICsgc3RybGVuIChyZWxfaW5zdGFsbGRpcik7Ci0rICAgIGNvbnN0IGNoYXIgKmNwID0gY3Vycl9pbnN0YWxsZGlyICsgc3RybGVuIChjdXJyX2luc3RhbGxkaXIpOwotKyAgICBjb25zdCBjaGFyICpjcF9iYXNlID0KLSsgICAgICBjdXJyX2luc3RhbGxkaXIgKyBGSUxFU1lTVEVNX1BSRUZJWF9MRU4gKGN1cnJfaW5zdGFsbGRpcik7Ci0rCi0rICAgIHdoaWxlIChycCA+IHJlbF9pbnN0YWxsZGlyICYmIGNwID4gY3BfYmFzZSkKLSsgICAgICB7Ci0rCWJvb2wgc2FtZSA9IGZhbHNlOwotKwljb25zdCBjaGFyICpycGkgPSBycDsKLSsJY29uc3QgY2hhciAqY3BpID0gY3A7Ci0rCi0rCXdoaWxlIChycGkgPiByZWxfaW5zdGFsbGRpciAmJiBjcGkgPiBjcF9iYXNlKQotKwkgIHsKLSsJICAgIHJwaS0tOwotKwkgICAgY3BpLS07Ci0rCSAgICBpZiAoSVNTTEFTSCAoKnJwaSkgfHwgSVNTTEFTSCAoKmNwaSkpCi0rCSAgICAgIHsKLSsJCWlmIChJU1NMQVNIICgqcnBpKSAmJiBJU1NMQVNIICgqY3BpKSkKLSsJCSAgc2FtZSA9IHRydWU7Ci0rCQlicmVhazsKLSsJICAgICAgfQotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsJICAgIC8qIFdpbjMyLCBPUy8yLCBET1MgLSBjYXNlIGluc2lnbmlmaWNhbnQgZmlsZXN5c3RlbSAqLwotKwkgICAgaWYgKCgqcnBpID49ICdhJyAmJiAqcnBpIDw9ICd6JyA/ICpycGkgLSAnYScgKyAnQScgOiAqcnBpKQotKwkJIT0gKCpjcGkgPj0gJ2EnICYmICpjcGkgPD0gJ3onID8gKmNwaSAtICdhJyArICdBJyA6ICpjcGkpKQotKwkgICAgICBicmVhazsKLSsjZWxzZQotKwkgICAgaWYgKCpycGkgIT0gKmNwaSkKLSsJICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0rCSAgfQotKwlpZiAoIXNhbWUpCi0rCSAgYnJlYWs7Ci0rCS8qIFRoZSBsYXN0IHBhdGhuYW1lIGNvbXBvbmVudCB3YXMgdGhlIHNhbWUuICBvcGkgYW5kIGNwaSBub3cgcG9pbnQKLSsJICAgdG8gdGhlIHNsYXNoIGJlZm9yZSBpdC4gICovCi0rCXJwID0gcnBpOwotKwljcCA9IGNwaTsKLSsgICAgICB9Ci0rCi0rICAgIGlmIChycCA+IHJlbF9pbnN0YWxsZGlyKQotKyAgICAgIC8qIFVuZXhwZWN0ZWQ6IFRoZSBjdXJyX2luc3RhbGxkaXIgZG9lcyBub3QgZW5kIHdpdGggcmVsX2luc3RhbGxkaXIuICAqLwotKyAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICB7Ci0rICAgICAgc2l6ZV90IGN1cnJfcHJlZml4X2xlbiA9IGNwIC0gY3Vycl9pbnN0YWxsZGlyOwotKyAgICAgIGNoYXIgKmN1cnJfcHJlZml4OwotKwotKyAgICAgIGN1cnJfcHJlZml4ID0gKGNoYXIgKikgeG1hbGxvYyAoY3Vycl9wcmVmaXhfbGVuICsgMSk7Ci0rI2lmZGVmIE5PX1hNQUxMT0MKLSsgICAgICBpZiAoY3Vycl9wcmVmaXggPT0gTlVMTCkKLSsJcmV0dXJuIE5VTEw7Ci0rI2VuZGlmCi0rICAgICAgbWVtY3B5IChjdXJyX3ByZWZpeCwgY3Vycl9pbnN0YWxsZGlyLCBjdXJyX3ByZWZpeF9sZW4pOwotKyAgICAgIGN1cnJfcHJlZml4W2N1cnJfcHJlZml4X2xlbl0gPSAnXDAnOwotKwotKyAgICAgIHJldHVybiBjdXJyX3ByZWZpeDsKLSsgICAgfQotKyAgfQotK30KLSsKLSsjZW5kaWYgLyogIUlOX0xJQlJBUlkgfHwgUElDICovCi0rCi0rI2lmIGRlZmluZWQgUElDICYmIGRlZmluZWQgSU5TVEFMTERJUgotKwotKy8qIEZ1bGwgcGF0aG5hbWUgb2Ygc2hhcmVkIGxpYnJhcnksIG9yIE5VTEwuICAqLwotK3N0YXRpYyBjaGFyICpzaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IHdoZW4gaXQgaXMgbG9hZGVkLiAgKi8KLSsKLStCT09MIFdJTkFQSQotK0RsbE1haW4gKEhJTlNUQU5DRSBtb2R1bGVfaGFuZGxlLCBEV09SRCBldmVudCwgTFBWT0lEIHJlc2VydmVkKQotK3sKLSsgICh2b2lkKSByZXNlcnZlZDsKLSsKLSsgIGlmIChldmVudCA9PSBETExfUFJPQ0VTU19BVFRBQ0gpCi0rICAgIHsKLSsgICAgICAvKiBUaGUgRExMIGlzIGJlaW5nIGxvYWRlZCBpbnRvIGFuIGFwcGxpY2F0aW9uJ3MgYWRkcmVzcyByYW5nZS4gICovCi0rICAgICAgc3RhdGljIGNoYXIgbG9jYXRpb25bTUFYX1BBVEhdOwotKwotKyAgICAgIGlmICghR2V0TW9kdWxlRmlsZU5hbWUgKG1vZHVsZV9oYW5kbGUsIGxvY2F0aW9uLCBzaXplb2YgKGxvY2F0aW9uKSkpCi0rCS8qIFNob3VsZG4ndCBoYXBwZW4uICAqLwotKwlyZXR1cm4gRkFMU0U7Ci0rCi0rICAgICAgaWYgKCFJU19QQVRIX1dJVEhfRElSIChsb2NhdGlvbikpCi0rCS8qIFNob3VsZG4ndCBoYXBwZW4uICAqLwotKwlyZXR1cm4gRkFMU0U7Ci0rCi0rICAgICAgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgPSBzdHJkdXAgKGxvY2F0aW9uKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotKyNlbHNlIC8qIFVuaXggKi8KLSsKLStzdGF0aWMgdm9pZAotK2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkKLSt7Ci0rI2lmIGRlZmluZWQgX19saW51eF9fICYmIF9fR0xJQkNfXyA+PSAyCi0rICAvKiBMaW51eCBoYXMgL3Byb2Mvc2VsZi9tYXBzLiBnbGliYyAyIGhhcyB0aGUgZ2V0bGluZSgpIGZ1bmN0aW9uLiAgKi8KLSsgIEZJTEUgKmZwOwotKwotKyAgLyogT3BlbiB0aGUgY3VycmVudCBwcm9jZXNzJyBtYXBzIGZpbGUuICBJdCBkZXNjcmliZXMgb25lIFZNQSBwZXIgbGluZS4gICovCi0rICBmcCA9IGZvcGVuICgiL3Byb2Mvc2VsZi9tYXBzIiwgInIiKTsKLSsgIGlmIChmcCkKLSsgICAgewotKyAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKSAmZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKLSsgICAgICBmb3IgKDs7KQotKwl7Ci0rCSAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwotKwkgIGludCBjOwotKwotKwkgIGlmIChmc2NhbmYgKGZwLCAiJWx4LSVseCIsICZzdGFydCwgJmVuZCkgIT0gMikKLSsJICAgIGJyZWFrOwotKwkgIGlmIChhZGRyZXNzID49IHN0YXJ0ICYmIGFkZHJlc3MgPD0gZW5kIC0gMSkKLSsJICAgIHsKLSsJICAgICAgLyogRm91bmQgaXQuICBOb3cgc2VlIGlmIHRoaXMgbGluZSBjb250YWlucyBhIGZpbGVuYW1lLiAgKi8KLSsJICAgICAgd2hpbGUgKGMgPSBnZXRjIChmcCksIGMgIT0gRU9GICYmIGMgIT0gJ1xuJyAmJiBjICE9ICcvJykKLSsJCWNvbnRpbnVlOwotKwkgICAgICBpZiAoYyA9PSAnLycpCi0rCQl7Ci0rCQkgIHNpemVfdCBzaXplOwotKwkJICBpbnQgbGVuOwotKwotKwkJICB1bmdldGMgKGMsIGZwKTsKLSsJCSAgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgPSBOVUxMOyBzaXplID0gMDsKLSsJCSAgbGVuID0gZ2V0bGluZSAoJnNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lLCAmc2l6ZSwgZnApOwotKwkJICBpZiAobGVuID49IDApCi0rCQkgICAgewotKwkJICAgICAgLyogU3VjY2VzczogZmlsbGVkIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lLiAgKi8KLSsJCSAgICAgIGlmIChsZW4gPiAwICYmIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lW2xlbiAtIDFdID09ICdcbicpCi0rCQkJc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWVbbGVuIC0gMV0gPSAnXDAnOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCSAgd2hpbGUgKGMgPSBnZXRjIChmcCksIGMgIT0gRU9GICYmIGMgIT0gJ1xuJykKLSsJICAgIGNvbnRpbnVlOwotKwl9Ci0rICAgICAgZmNsb3NlIChmcCk7Ci0rICAgIH0KLSsjZW5kaWYKLSt9Ci0rCi0rI2VuZGlmIC8qIFdJTjMyIC8gVW5peCAqLwotKwotKy8qIFJldHVybiB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgY3VycmVudCBzaGFyZWQgbGlicmFyeS4KLSsgICBSZXR1cm4gTlVMTCBpZiB1bmtub3duLgotKyAgIEd1YXJhbnRlZWQgdG8gd29yayBvbmx5IG9uIExpbnV4IGFuZCBXb2UzMi4gICovCi0rc3RhdGljIGNoYXIgKgotK2dldF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKQotK3sKLSsjaWYgIShkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXykKLSsgIHN0YXRpYyBib29sIHRyaWVkX2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rICBpZiAoIXRyaWVkX2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUpCi0rICAgIHsKLSsgICAgICBmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpOwotKyAgICAgIHRyaWVkX2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgPSB0cnVlOwotKyAgICB9Ci0rI2VuZGlmCi0rICByZXR1cm4gc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rfQotKwotKyNlbmRpZiAvKiBQSUMgKi8KLSsKLSsvKiBSZXR1cm5zIHRoZSBwYXRobmFtZSwgcmVsb2NhdGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24KLSsgICBkaXJlY3RvcnkuICAqLwotK2NvbnN0IGNoYXIgKgotK3JlbG9jYXRlIChjb25zdCBjaGFyICpwYXRobmFtZSkKLSt7Ci0rI2lmIGRlZmluZWQgUElDICYmIGRlZmluZWQgSU5TVEFMTERJUgotKyAgc3RhdGljIGludCBpbml0aWFsaXplZDsKLSsKLSsgIC8qIEluaXRpYWxpemF0aW9uIGNvZGUgZm9yIGEgc2hhcmVkIGxpYnJhcnkuICAqLwotKyAgaWYgKCFpbml0aWFsaXplZCkKLSsgICAgewotKyAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9yaWdfcHJlZml4IGFuZCBjdXJyX3ByZWZpeCBsaWtlbHkgaGF2ZSBhbHJlYWR5IGJlZW4KLSsJIHNldCB0aHJvdWdoIHRoZSBtYWluIHByb2dyYW0ncyBzZXRfcHJvZ3JhbV9uYW1lX2FuZF9pbnN0YWxsZGlyCi0rCSBmdW5jdGlvbi4gIFRoaXMgaXMgc3VmZmljaWVudCBpbiB0aGUgY2FzZSB0aGF0IHRoZSBsaWJyYXJ5IGhhcwotKwkgaW5pdGlhbGx5IGJlZW4gaW5zdGFsbGVkIGluIHRoZSBzYW1lIG9yaWdfcHJlZml4LiAgQnV0IHdlIGNhbiBkbwotKwkgYmV0dGVyLCB0byBhbHNvIGNvdmVyIHRoZSBjYXNlcyB0aGF0IDEuIGl0IGhhcyBiZWVuIGluc3RhbGxlZAotKwkgaW4gYSBkaWZmZXJlbnQgcHJlZml4IGJlZm9yZSBiZWluZyBtb3ZlZCB0byBvcmlnX3ByZWZpeCBhbmQgKGxhdGVyKQotKwkgdG8gY3Vycl9wcmVmaXgsIDIuIHVubGlrZSB0aGUgcHJvZ3JhbSwgaXQgaGFzIG5vdCBtb3ZlZCBhd2F5IGZyb20KLSsJIG9yaWdfcHJlZml4LiAgKi8KLSsgICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxwcmVmaXggPSBJTlNUQUxMUFJFRklYOwotKyAgICAgIGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbGRpciA9IElOU1RBTExESVI7Ci0rICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXhfYmV0dGVyOwotKwotKyAgICAgIGN1cnJfcHJlZml4X2JldHRlciA9Ci0rCWNvbXB1dGVfY3Vycl9wcmVmaXggKG9yaWdfaW5zdGFsbHByZWZpeCwgb3JpZ19pbnN0YWxsZGlyLAotKwkJCSAgICAgZ2V0X3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpKTsKLSsgICAgICBpZiAoY3Vycl9wcmVmaXhfYmV0dGVyID09IE5VTEwpCi0rCWN1cnJfcHJlZml4X2JldHRlciA9IGN1cnJfcHJlZml4OwotKwotKyAgICAgIHNldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19pbnN0YWxscHJlZml4LCBjdXJyX3ByZWZpeF9iZXR0ZXIpOwotKwotKyAgICAgIGluaXRpYWxpemVkID0gMTsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgLyogTm90ZTogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBwZXJmb3JtIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBoZXJlLAotKyAgICAgZXZlbiBmb3IgRE9TLWxpa2UgZmlsZXN5c3RlbXMsIGJlY2F1c2UgdGhlIHBhdGhuYW1lIGFyZ3VtZW50IHdhcwotKyAgICAgdHlwaWNhbGx5IGNyZWF0ZWQgZnJvbSB0aGUgc2FtZSBNYWtlZmlsZSB2YXJpYWJsZSBhcyBvcmlnX3ByZWZpeCBjYW1lCi0rICAgICBmcm9tLiAgKi8KLSsgIGlmIChvcmlnX3ByZWZpeCAhPSBOVUxMICYmIGN1cnJfcHJlZml4ICE9IE5VTEwKLSsgICAgICAmJiBzdHJuY21wIChwYXRobmFtZSwgb3JpZ19wcmVmaXgsIG9yaWdfcHJlZml4X2xlbikgPT0gMCkKLSsgICAgewotKyAgICAgIGlmIChwYXRobmFtZVtvcmlnX3ByZWZpeF9sZW5dID09ICdcMCcpCi0rCS8qIHBhdGhuYW1lIGVxdWFscyBvcmlnX3ByZWZpeC4gICovCi0rCXJldHVybiBjdXJyX3ByZWZpeDsKLSsgICAgICBpZiAoSVNTTEFTSCAocGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXSkpCi0rCXsKLSsJICAvKiBwYXRobmFtZSBzdGFydHMgd2l0aCBvcmlnX3ByZWZpeC4gICovCi0rCSAgY29uc3QgY2hhciAqcGF0aG5hbWVfdGFpbCA9ICZwYXRobmFtZVtvcmlnX3ByZWZpeF9sZW5dOwotKwkgIGNoYXIgKnJlc3VsdCA9Ci0rCSAgICAoY2hhciAqKSB4bWFsbG9jIChjdXJyX3ByZWZpeF9sZW4gKyBzdHJsZW4gKHBhdGhuYW1lX3RhaWwpICsgMSk7Ci0rCi0rI2lmZGVmIE5PX1hNQUxMT0MKLSsJICBpZiAocmVzdWx0ICE9IE5VTEwpCi0rI2VuZGlmCi0rCSAgICB7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0LCBjdXJyX3ByZWZpeCwgY3Vycl9wcmVmaXhfbGVuKTsKLSsJICAgICAgc3RyY3B5IChyZXN1bHQgKyBjdXJyX3ByZWZpeF9sZW4sIHBhdGhuYW1lX3RhaWwpOwotKwkgICAgICByZXR1cm4gcmVzdWx0OwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsgIC8qIE5vdGhpbmcgdG8gcmVsb2NhdGUuICAqLwotKyAgcmV0dXJuIHBhdGhuYW1lOwotK30KLSsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWxvY2F0YWJsZS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlbG9jYXRhYmxlLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42NTE3MDMwOTYgLTA0MDAKLUBAIC0wLDAgKzEsNzcgQEAKLSsvKiBQcm92aWRlIHJlbG9jYXRhYmxlIHBhY2thZ2VzLgotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwgMjAwMy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUkVMT0NBVEFCTEVfSAotKyNkZWZpbmUgX1JFTE9DQVRBQkxFX0gKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsKLSsvKiBUaGlzIGNhbiBiZSBlbmFibGVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyZSAtLWVuYWJsZS1yZWxvY2F0YWJsZSBvcHRpb24uICAqLwotKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKLSsKLSsvKiBXaGVuIGJ1aWxkaW5nIGEgRExMLCB3ZSBtdXN0IGV4cG9ydCBzb21lIGZ1bmN0aW9ucy4gIE5vdGUgdGhhdCBiZWNhdXNlCi0rICAgdGhpcyBpcyBhIHByaXZhdGUgLmggZmlsZSwgd2UgZG9uJ3QgbmVlZCB0byB1c2UgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0rICAgaW4gYW55IGNhc2UuICAqLwotKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIEJVSUxESU5HX0RMTAotKyMgZGVmaW5lIFJFTE9DQVRBQkxFX0RMTF9FWFBPUlRFRCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSsjZWxzZQotKyMgZGVmaW5lIFJFTE9DQVRBQkxFX0RMTF9FWFBPUlRFRAotKyNlbmRpZgotKwotKy8qIFNldHMgdGhlIG9yaWdpbmFsIGFuZCB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IG9mIHRoZSBwYWNrYWdlLgotKyAgIFJlbG9jYXRpb24gc2ltcGx5IHJlcGxhY2VzIGEgcGF0aG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwgcHJlZml4Ci0rICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKLSsgICBwcmVmaXhlcyBzaG91bGQgYmUgZGlyZWN0b3J5IG5hbWVzIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2ggKGkuZS4gdXNlICIiCi0rICAgaW5zdGVhZCBvZiAiLyIpLiAgKi8KLStleHRlcm4gUkVMT0NBVEFCTEVfRExMX0VYUE9SVEVEIHZvaWQKLSsgICAgICAgc2V0X3JlbG9jYXRpb25fcHJlZml4IChjb25zdCBjaGFyICpvcmlnX3ByZWZpeCwKLSsJCQkgICAgICBjb25zdCBjaGFyICpjdXJyX3ByZWZpeCk7Ci0rCi0rLyogUmV0dXJucyB0aGUgcGF0aG5hbWUsIHJlbG9jYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uCi0rICAgZGlyZWN0b3J5LiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqIHJlbG9jYXRlIChjb25zdCBjaGFyICpwYXRobmFtZSk7Ci0rCi0rLyogTWVtb3J5IG1hbmFnZW1lbnQ6IHJlbG9jYXRlKCkgbGVha3MgbWVtb3J5LCBiZWNhdXNlIGl0IGhhcyB0byBjb25zdHJ1Y3QKLSsgICBhIGZyZXNoIHBhdGhuYW1lLiAgSWYgdGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSB5b3VyIHByb2dyYW0gY2FsbHMKLSsgICByZWxvY2F0ZSgpIGZyZXF1ZW50bHksIHRoaW5rIGFib3V0IGNhY2hpbmcgdGhlIHJlc3VsdC4gICovCi0rCi0rLyogQ29udmVuaWVuY2UgZnVuY3Rpb246Ci0rICAgQ29tcHV0ZXMgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCwgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi0rICAgaW5zdGFsbGF0aW9uIHByZWZpeCwgdGhlIG9yaWdpbmFsIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb2YgYSBwYXJ0aWN1bGFyCi0rICAgZmlsZSwgYW5kIHRoZSBjdXJyZW50IHBhdGhuYW1lIG9mIHRoaXMgZmlsZS4gIFJldHVybnMgTlVMTCB1cG9uIGZhaWx1cmUuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICogY29tcHV0ZV9jdXJyX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19pbnN0YWxscHJlZml4LAotKwkJCQkJIGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbGRpciwKLSsJCQkJCSBjb25zdCBjaGFyICpjdXJyX3BhdGhuYW1lKTsKLSsKLSsjZWxzZQotKwotKy8qIEJ5IGRlZmF1bHQsIHdlIHVzZSB0aGUgaGFyZHdpcmVkIHBhdGhuYW1lcy4gICovCi0rI2RlZmluZSByZWxvY2F0ZShwYXRobmFtZSkgKHBhdGhuYW1lKQotKwotKyNlbmRpZgotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogX1JFTE9DQVRBQkxFX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC90ZXh0ZG9tYWluLmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjU2NzAyMzM2IC0wNDAwCi1AQCAtMSw1MSArMSw2MCBAQAotLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZXh0ZG9tYWluKDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZXh0ZG9tYWluKDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tIyBpZm5kZWYgbWVtY3B5Ci0tIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKLS0jIGVuZGlmCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0gCi0gI2lmZGVmIF9MSUJDCi0tIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rLyogV2UgaGF2ZSB0byBoYW5kbGUgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLiAgKi8KLSsjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsvKiBQcm92aWRlIGR1bW15IGltcGxlbWVudGF0aW9uIGlmIHRoaXMgaXMgb3V0c2lkZSBnbGliYy4gICovCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19kZWZpbmUoQ0xBU1MsIE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja193cmxvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3VubG9jayhOQU1FKQotKyNlbmRpZgotKwotKy8qIFRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gdGhlIHN0YW5kYWxvbmUgbGliaW50bC5hIG11c3QgaGF2ZSBkaWZmZXJlbnQKLSsgICBuYW1lcyB0aGFuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gR05VIGxpYmMsIG90aGVyd2lzZSBwcm9ncmFtcwotKyAgIHVzaW5nIGxpYmludGwuYSBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHkuICAqLwotKyNpZiAhZGVmaW5lZCBfTElCQwotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbgotKyMgZGVmaW5lIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLSAvKiBOYW1lIG9mIHRoZSBkZWZhdWx0IHRleHQgZG9tYWluLiAgKi8KLS1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdOwotK2V4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW10gYXR0cmlidXRlX2hpZGRlbjsKLSAKLSAvKiBEZWZhdWx0IHRleHQgZG9tYWluIGluIHdoaWNoIGVudHJpZXMgZm9yIGdldHRleHQoMykgYXJlIHRvIGJlIGZvdW5kLiAgKi8KLS1leHRlcm4gY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGF0dHJpYnV0ZV9oaWRkZW47Ci0gCi0gCi0gLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotQEAgLTU0LDUwICs2Myw3NiBAQAotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgVEVYVERPTUFJTiBfX3RleHRkb21haW4KLS0jIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQotKyMgaWZuZGVmIHN0cmR1cAotKyMgIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQotKyMgZW5kaWYKLSAjZWxzZQotLSMgZGVmaW5lIFRFWFRET01BSU4gdGV4dGRvbWFpbl9fCi0rIyBkZWZpbmUgVEVYVERPTUFJTiBsaWJpbnRsX3RleHRkb21haW4KLSAjZW5kaWYKLSAKLSsvKiBMb2NrIHZhcmlhYmxlIHRvIHByb3RlY3QgdGhlIGdsb2JhbCBkYXRhIGluIHRoZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLiAgKi8KLStfX2xpYmNfcndsb2NrX2RlZmluZSAoZXh0ZXJuLCBfbmxfc3RhdGVfbG9jayBhdHRyaWJ1dGVfaGlkZGVuKQotKwotIC8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgotICAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCi0gICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCi0gY2hhciAqCi0tVEVYVERPTUFJTiAoZG9tYWlubmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0rVEVYVERPTUFJTiAoY29uc3QgY2hhciAqZG9tYWlubmFtZSkKLSB7Ci0tICBjaGFyICpvbGQ7Ci0rICBjaGFyICpuZXdfZG9tYWluOwotKyAgY2hhciAqb2xkX2RvbWFpbjsKLSAKLSAgIC8qIEEgTlVMTCBwb2ludGVyIHJlcXVlc3RzIHRoZSBjdXJyZW50IHNldHRpbmcuICAqLwotICAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLSAgICAgcmV0dXJuIChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotIAotLSAgb2xkID0gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0rICBfX2xpYmNfcndsb2NrX3dybG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgb2xkX2RvbWFpbiA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotIAotICAgLyogSWYgZG9tYWluIG5hbWUgaXMgdGhlIG51bGwgc3RyaW5nIHNldCB0byBkZWZhdWx0IGRvbWFpbiAibWVzc2FnZXMiLiAgKi8KLSAgIGlmIChkb21haW5uYW1lWzBdID09ICdcMCcKLSAgICAgICB8fCBzdHJjbXAgKGRvbWFpbm5hbWUsIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKSA9PSAwKQotLSAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOwotKyAgICB7Ci0rICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgICBuZXdfZG9tYWluID0gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHN0cmNtcCAoZG9tYWlubmFtZSwgb2xkX2RvbWFpbikgPT0gMCkKLSsgICAgLyogVGhpcyBjYW4gaGFwcGVuIGFuZCBwZW9wbGUgd2lsbCB1c2UgaXQgdG8gc2lnbmFsIHRoYXQgc29tZQotKyAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBjaGFuZ2VkLiAgKi8KLSsgICAgbmV3X2RvbWFpbiA9IG9sZF9kb21haW47Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICAvKiBJZiB0aGUgZm9sbG93aW5nIG1hbGxvYyBmYWlscyBgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4nCi0gCSB3aWxsIGJlIE5VTEwuICBUaGlzIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgYW5kIHNvIHNpZ25hbHMgd2UKLSAJIGFyZSBvdXQgb2YgY29yZS4gICovCi0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotLSAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gc3RyZHVwIChkb21haW5uYW1lKTsKLSsgICAgICBuZXdfZG9tYWluID0gc3RyZHVwIChkb21haW5uYW1lKTsKLSAjZWxzZQotICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKLS0gICAgICBjaGFyICpjcCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0gICAgICBpZiAoY3AgIT0gTlVMTCkKLS0JbWVtY3B5IChjcCwgZG9tYWlubmFtZSwgbGVuKTsKLS0gICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IGNwOwotKyAgICAgIG5ld19kb21haW4gPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0rICAgICAgaWYgKG5ld19kb21haW4gIT0gTlVMTCkKLSsJbWVtY3B5IChuZXdfZG9tYWluLCBkb21haW5uYW1lLCBsZW4pOwotICNlbmRpZgotKwotKyAgICAgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCi0rCV9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gbmV3X2RvbWFpbjsKLSAgICAgfQotIAotLSAgaWYgKG9sZCAhPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikKLS0gICAgZnJlZSAob2xkKTsKLSsgIC8qIFdlIHVzZSB0aGlzIHBvc3NpYmlsaXR5IHRvIHNpZ25hbCBhIGNoYW5nZSBvZiB0aGUgbG9hZGVkIGNhdGFsb2dzCi0rICAgICBzaW5jZSB0aGlzIGlzIG1vc3QgbGlrZWx5IHRoZSBjYXNlIGFuZCB0aGVyZSBpcyBubyBvdGhlciBlYXN5IHdlCi0rICAgICB0byBkbyBpdC4gIERvIGl0IG9ubHkgd2hlbiB0aGUgY2FsbCB3YXMgc3VjY2Vzc2Z1bC4gICovCi0rICBpZiAobmV3X2RvbWFpbiAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgKytfbmxfbXNnX2NhdF9jbnRyOwotIAotLSAgcmV0dXJuIChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKyAgICAgIGlmIChvbGRfZG9tYWluICE9IG5ld19kb21haW4gJiYgb2xkX2RvbWFpbiAhPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikKLSsJZnJlZSAob2xkX2RvbWFpbik7Ci0rICAgIH0KLSsKLSsgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rCi0rICByZXR1cm4gbmV3X2RvbWFpbjsKLSB9Ci0gCi0gI2lmZGVmIF9MSUJDCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdmFzbnByaW50Zi5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3Zhc25wcmludGYuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjY2MjcwMTQyNCAtMDQwMAotQEAgLTAsMCArMSw4ODcgQEAKLSsvKiB2c3ByaW50ZiB3aXRoIGF1dG9tYXRpYyBtZW1vcnkgYWxsb2NhdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdGRpby5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBzbnByaW50ZigpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UgICAgMQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsjaWZuZGVmIElOX0xJQklOVEwKLSsjIGluY2x1ZGUgPGFsbG9jYS5oPgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgaW5jbHVkZSAidmFzbndwcmludGYuaCIKLSsjZWxzZQotKyMgaW5jbHVkZSAidmFzbnByaW50Zi5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgkvKiBzbnByaW50ZigpLCBzcHJpbnRmKCkgKi8KLSsjaW5jbHVkZSA8c3RkbGliLmg+CS8qIGFib3J0KCksIG1hbGxvYygpLCByZWFsbG9jKCksIGZyZWUoKSAqLwotKyNpbmNsdWRlIDxzdHJpbmcuaD4JLyogbWVtY3B5KCksIHN0cmxlbigpICovCi0rI2luY2x1ZGUgPGVycm5vLmg+CS8qIGVycm5vICovCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgkvKiBDSEFSX0JJVCAqLwotKyNpbmNsdWRlIDxmbG9hdC5oPgkvKiBEQkxfTUFYX0VYUCwgTERCTF9NQVhfRVhQICovCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBpbmNsdWRlICJ3cHJpbnRmLXBhcnNlLmgiCi0rI2Vsc2UKLSsjIGluY2x1ZGUgInByaW50Zi1wYXJzZS5oIgotKyNlbmRpZgotKwotKy8qIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4gICovCi0rI2luY2x1ZGUgInhzaXplLmgiCi0rCi0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKyMgaWZkZWYgSEFWRV9XQ1NMRU4KLSsjICBkZWZpbmUgbG9jYWxfd2NzbGVuIHdjc2xlbgotKyMgZWxzZQotKyAgIC8qIFNvbGFyaXMgMi41LjEgaGFzIHdjc2xlbigpIGluIGEgc2VwYXJhdGUgbGlicmFyeSBsaWJ3LnNvLiBUbyBhdm9pZAotKyAgICAgIGEgZGVwZW5kZW5jeSB0b3dhcmRzIHRoaXMgbGlicmFyeSwgaGVyZSBpcyBhIGxvY2FsIHN1YnN0aXR1dGUuCi0rICAgICAgRGVmaW5lIHRoaXMgc3Vic3RpdHV0ZSBvbmx5IG9uY2UsIGV2ZW4gaWYgdGhpcyBmaWxlIGlzIGluY2x1ZGVkCi0rICAgICAgdHdpY2UgaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdC4gICovCi0rIyAgaWZuZGVmIGxvY2FsX3djc2xlbl9kZWZpbmVkCi0rIyAgIGRlZmluZSBsb2NhbF93Y3NsZW5fZGVmaW5lZCAxCi0rc3RhdGljIHNpemVfdAotK2xvY2FsX3djc2xlbiAoY29uc3Qgd2NoYXJfdCAqcykKLSt7Ci0rICBjb25zdCB3Y2hhcl90ICpwdHI7Ci0rCi0rICBmb3IgKHB0ciA9IHM7ICpwdHIgIT0gKHdjaGFyX3QpIDA7IHB0cisrKQotKyAgICA7Ci0rICByZXR1cm4gcHRyIC0gczsKLSt9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBkZWZpbmUgVkFTTlBSSU5URiB2YXNud3ByaW50ZgotKyMgZGVmaW5lIENIQVJfVCB3Y2hhcl90Ci0rIyBkZWZpbmUgRElSRUNUSVZFIHdjaGFyX3RfZGlyZWN0aXZlCi0rIyBkZWZpbmUgRElSRUNUSVZFUyB3Y2hhcl90X2RpcmVjdGl2ZXMKLSsjIGRlZmluZSBQUklOVEZfUEFSU0Ugd3ByaW50Zl9wYXJzZQotKyMgZGVmaW5lIFVTRV9TTlBSSU5URiAxCi0rIyBpZiBIQVZFX0RFQ0xfX1NOV1BSSU5URgotKyAgIC8qIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBzd3ByaW50ZigpIGhhcyBhIGRpZmZlcmVudCBzaWduYXR1cmUgdGhhbgotKyAgICAgIG9uIFVuaXg7IHdlIHVzZSB0aGUgX3Nud3ByaW50ZigpIGZ1bmN0aW9uIGluc3RlYWQuICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBfc253cHJpbnRmCi0rIyBlbHNlCi0rICAgLyogVW5peC4gICovCi0rIyAgZGVmaW5lIFNOUFJJTlRGIHN3cHJpbnRmCi0rIyBlbmRpZgotKyNlbHNlCi0rIyBkZWZpbmUgVkFTTlBSSU5URiB2YXNucHJpbnRmCi0rIyBkZWZpbmUgQ0hBUl9UIGNoYXIKLSsjIGRlZmluZSBESVJFQ1RJVkUgY2hhcl9kaXJlY3RpdmUKLSsjIGRlZmluZSBESVJFQ1RJVkVTIGNoYXJfZGlyZWN0aXZlcwotKyMgZGVmaW5lIFBSSU5URl9QQVJTRSBwcmludGZfcGFyc2UKLSsjIGRlZmluZSBVU0VfU05QUklOVEYgKEhBVkVfREVDTF9fU05QUklOVEYgfHwgSEFWRV9TTlBSSU5URikKLSsjIGlmIEhBVkVfREVDTF9fU05QUklOVEYKLSsgICAvKiBXaW5kb3dzLiAgKi8KLSsjICBkZWZpbmUgU05QUklOVEYgX3NucHJpbnRmCi0rIyBlbHNlCi0rICAgLyogVW5peC4gICovCi0rIyAgZGVmaW5lIFNOUFJJTlRGIHNucHJpbnRmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotK0NIQVJfVCAqCi0rVkFTTlBSSU5URiAoQ0hBUl9UICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3QgQ0hBUl9UICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBESVJFQ1RJVkVTIGQ7Ci0rICBhcmd1bWVudHMgYTsKLSsKLSsgIGlmIChQUklOVEZfUEFSU0UgKGZvcm1hdCwgJmQsICZhKSA8IDApCi0rICAgIHsKLSsgICAgICBlcnJubyA9IEVJTlZBTDsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyNkZWZpbmUgQ0xFQU5VUCgpIFwKLSsgIGZyZWUgKGQuZGlyKTsJCQkJCQkJCVwKLSsgIGlmIChhLmFyZykJCQkJCQkJCVwKLSsgICAgZnJlZSAoYS5hcmcpOwotKwotKyAgaWYgKHByaW50Zl9mZXRjaGFyZ3MgKGFyZ3MsICZhKSA8IDApCi0rICAgIHsKLSsgICAgICBDTEVBTlVQICgpOwotKyAgICAgIGVycm5vID0gRUlOVkFMOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICB7Ci0rICAgIHNpemVfdCBidWZfbmVlZGVkbGVuZ3RoOwotKyAgICBDSEFSX1QgKmJ1ZjsKLSsgICAgQ0hBUl9UICpidWZfbWFsbG9jZWQ7Ci0rICAgIGNvbnN0IENIQVJfVCAqY3A7Ci0rICAgIHNpemVfdCBpOwotKyAgICBESVJFQ1RJVkUgKmRwOwotKyAgICAvKiBPdXRwdXQgc3RyaW5nIGFjY3VtdWxhdG9yLiAgKi8KLSsgICAgQ0hBUl9UICpyZXN1bHQ7Ci0rICAgIHNpemVfdCBhbGxvY2F0ZWQ7Ci0rICAgIHNpemVfdCBsZW5ndGg7Ci0rCi0rICAgIC8qIEFsbG9jYXRlIGEgc21hbGwgYnVmZmVyIHRoYXQgd2lsbCBob2xkIGEgZGlyZWN0aXZlIHBhc3NlZCB0bwotKyAgICAgICBzcHJpbnRmIG9yIHNucHJpbnRmLiAgKi8KLSsgICAgYnVmX25lZWRlZGxlbmd0aCA9Ci0rICAgICAgeHN1bTQgKDcsIGQubWF4X3dpZHRoX2xlbmd0aCwgZC5tYXhfcHJlY2lzaW9uX2xlbmd0aCwgNik7Ci0rI2lmIEhBVkVfQUxMT0NBCi0rICAgIGlmIChidWZfbmVlZGVkbGVuZ3RoIDwgNDAwMCAvIHNpemVvZiAoQ0hBUl9UKSkKLSsgICAgICB7Ci0rCWJ1ZiA9IChDSEFSX1QgKikgYWxsb2NhIChidWZfbmVlZGVkbGVuZ3RoICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJYnVmX21hbGxvY2VkID0gTlVMTDsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsjZW5kaWYKLSsgICAgICB7Ci0rCXNpemVfdCBidWZfbWVtc2l6ZSA9IHh0aW1lcyAoYnVmX25lZWRlZGxlbmd0aCwgc2l6ZW9mIChDSEFSX1QpKTsKLSsJaWYgKHNpemVfb3ZlcmZsb3dfcCAoYnVmX21lbXNpemUpKQotKwkgIGdvdG8gb3V0X29mX21lbW9yeV8xOwotKwlidWYgPSAoQ0hBUl9UICopIG1hbGxvYyAoYnVmX21lbXNpemUpOwotKwlpZiAoYnVmID09IE5VTEwpCi0rCSAgZ290byBvdXRfb2ZfbWVtb3J5XzE7Ci0rCWJ1Zl9tYWxsb2NlZCA9IGJ1ZjsKLSsgICAgICB9Ci0rCi0rICAgIGlmIChyZXN1bHRidWYgIT0gTlVMTCkKLSsgICAgICB7Ci0rCXJlc3VsdCA9IHJlc3VsdGJ1ZjsKLSsJYWxsb2NhdGVkID0gKmxlbmd0aHA7Ci0rICAgICAgfQotKyAgICBlbHNlCi0rICAgICAgewotKwlyZXN1bHQgPSBOVUxMOwotKwlhbGxvY2F0ZWQgPSAwOwotKyAgICAgIH0KLSsgICAgbGVuZ3RoID0gMDsKLSsgICAgLyogSW52YXJpYW50czoKLSsgICAgICAgcmVzdWx0IGlzIGVpdGhlciA9PSByZXN1bHRidWYgb3IgPT0gTlVMTCBvciBtYWxsb2MtYWxsb2NhdGVkLgotKyAgICAgICBJZiBsZW5ndGggPiAwLCB0aGVuIHJlc3VsdCAhPSBOVUxMLiAgKi8KLSsKLSsgICAgLyogRW5zdXJlcyB0aGF0IGFsbG9jYXRlZCA+PSBuZWVkZWQuICBBYm9ydHMgdGhyb3VnaCBhIGp1bXAgdG8KLSsgICAgICAgb3V0X29mX21lbW9yeSBpZiBuZWVkZWQgaXMgU0laRV9NQVggb3Igb3RoZXJ3aXNlIHRvbyBiaWcuICAqLwotKyNkZWZpbmUgRU5TVVJFX0FMTE9DQVRJT04obmVlZGVkKSBcCi0rICAgIGlmICgobmVlZGVkKSA+IGFsbG9jYXRlZCkJCQkJCQkgICAgIFwKLSsgICAgICB7CQkJCQkJCQkJICAgICBcCi0rCXNpemVfdCBtZW1vcnlfc2l6ZTsJCQkJCQkgICAgIFwKLSsJQ0hBUl9UICptZW1vcnk7CQkJCQkJCSAgICAgXAotKwkJCQkJCQkJCSAgICAgXAotKwlhbGxvY2F0ZWQgPSAoYWxsb2NhdGVkID4gMCA/IHh0aW1lcyAoYWxsb2NhdGVkLCAyKSA6IDEyKTsJICAgICBcCi0rCWlmICgobmVlZGVkKSA+IGFsbG9jYXRlZCkJCQkJCSAgICAgXAotKwkgIGFsbG9jYXRlZCA9IChuZWVkZWQpOwkJCQkJCSAgICAgXAotKwltZW1vcnlfc2l6ZSA9IHh0aW1lcyAoYWxsb2NhdGVkLCBzaXplb2YgKENIQVJfVCkpOwkJICAgICBcCi0rCWlmIChzaXplX292ZXJmbG93X3AgKG1lbW9yeV9zaXplKSkJCQkJICAgICBcCi0rCSAgZ290byBvdXRfb2ZfbWVtb3J5OwkJCQkJCSAgICAgXAotKwlpZiAocmVzdWx0ID09IHJlc3VsdGJ1ZiB8fCByZXN1bHQgPT0gTlVMTCkJCQkgICAgIFwKLSsJICBtZW1vcnkgPSAoQ0hBUl9UICopIG1hbGxvYyAobWVtb3J5X3NpemUpOwkJCSAgICAgXAotKwllbHNlCQkJCQkJCQkgICAgIFwKLSsJICBtZW1vcnkgPSAoQ0hBUl9UICopIHJlYWxsb2MgKHJlc3VsdCwgbWVtb3J5X3NpemUpOwkJICAgICBcCi0rCWlmIChtZW1vcnkgPT0gTlVMTCkJCQkJCQkgICAgIFwKLSsJICBnb3RvIG91dF9vZl9tZW1vcnk7CQkJCQkJICAgICBcCi0rCWlmIChyZXN1bHQgPT0gcmVzdWx0YnVmICYmIGxlbmd0aCA+IDApCQkJCSAgICAgXAotKwkgIG1lbWNweSAobWVtb3J5LCByZXN1bHQsIGxlbmd0aCAqIHNpemVvZiAoQ0hBUl9UKSk7CQkgICAgIFwKLSsJcmVzdWx0ID0gbWVtb3J5OwkJCQkJCSAgICAgXAotKyAgICAgIH0KLSsKLSsgICAgZm9yIChjcCA9IGZvcm1hdCwgaSA9IDAsIGRwID0gJmQuZGlyWzBdOyA7IGNwID0gZHAtPmRpcl9lbmQsIGkrKywgZHArKykKLSsgICAgICB7Ci0rCWlmIChjcCAhPSBkcC0+ZGlyX3N0YXJ0KQotKwkgIHsKLSsJICAgIHNpemVfdCBuID0gZHAtPmRpcl9zdGFydCAtIGNwOwotKwkgICAgc2l6ZV90IGF1Z21lbnRlZF9sZW5ndGggPSB4c3VtIChsZW5ndGgsIG4pOwotKwotKwkgICAgRU5TVVJFX0FMTE9DQVRJT04gKGF1Z21lbnRlZF9sZW5ndGgpOwotKwkgICAgbWVtY3B5IChyZXN1bHQgKyBsZW5ndGgsIGNwLCBuICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJICAgIGxlbmd0aCA9IGF1Z21lbnRlZF9sZW5ndGg7Ci0rCSAgfQotKwlpZiAoaSA9PSBkLmNvdW50KQotKwkgIGJyZWFrOwotKwotKwkvKiBFeGVjdXRlIGEgc2luZ2xlIGRpcmVjdGl2ZS4gICovCi0rCWlmIChkcC0+Y29udmVyc2lvbiA9PSAnJScpCi0rCSAgewotKwkgICAgc2l6ZV90IGF1Z21lbnRlZF9sZW5ndGg7Ci0rCi0rCSAgICBpZiAoIShkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKSkKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICBhdWdtZW50ZWRfbGVuZ3RoID0geHN1bSAobGVuZ3RoLCAxKTsKLSsJICAgIEVOU1VSRV9BTExPQ0FUSU9OIChhdWdtZW50ZWRfbGVuZ3RoKTsKLSsJICAgIHJlc3VsdFtsZW5ndGhdID0gJyUnOwotKwkgICAgbGVuZ3RoID0gYXVnbWVudGVkX2xlbmd0aDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBpZiAoIShkcC0+YXJnX2luZGV4ICE9IEFSR19OT05FKSkKLSsJICAgICAgYWJvcnQgKCk7Ci0rCi0rCSAgICBpZiAoZHAtPmNvbnZlcnNpb24gPT0gJ24nKQotKwkgICAgICB7Ci0rCQlzd2l0Y2ggKGEuYXJnW2RwLT5hcmdfaW5kZXhdLnR5cGUpCi0rCQkgIHsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9zY2hhcl9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKwkJICBjYXNlIFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X3Nob3J0X3BvaW50ZXIgPSBsZW5ndGg7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIGNhc2UgVFlQRV9DT1VOVF9JTlRfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2ludF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKwkJICBjYXNlIFRZUEVfQ09VTlRfTE9OR0lOVF9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfbG9uZ2ludF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBjYXNlIFRZUEVfQ09VTlRfTE9OR0xPTkdJTlRfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2xvbmdsb25naW50X3BvaW50ZXIgPSBsZW5ndGg7Ci0rCQkgICAgYnJlYWs7Ci0rI2VuZGlmCi0rCQkgIGRlZmF1bHQ6Ci0rCQkgICAgYWJvcnQgKCk7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlhcmdfdHlwZSB0eXBlID0gYS5hcmdbZHAtPmFyZ19pbmRleF0udHlwZTsKLSsJCUNIQVJfVCAqcDsKLSsJCXVuc2lnbmVkIGludCBwcmVmaXhfY291bnQ7Ci0rCQlpbnQgcHJlZml4ZXNbMl07Ci0rI2lmICFVU0VfU05QUklOVEYKLSsJCXNpemVfdCB0bXBfbGVuZ3RoOwotKwkJQ0hBUl9UIHRtcGJ1Zls3MDBdOwotKwkJQ0hBUl9UICp0bXA7Ci0rCi0rCQkvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIGZvciBjYWxsaW5nCi0rCQkgICBzcHJpbnRmLiAgKi8KLSsJCXsKLSsJCSAgc2l6ZV90IHdpZHRoOwotKwkJICBzaXplX3QgcHJlY2lzaW9uOwotKwotKwkJICB3aWR0aCA9IDA7Ci0rCQkgIGlmIChkcC0+d2lkdGhfc3RhcnQgIT0gZHAtPndpZHRoX2VuZCkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoZHAtPndpZHRoX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKLSsJCQl7Ci0rCQkJICBpbnQgYXJnOwotKwotKwkJCSAgaWYgKCEoYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkJICAgIGFib3J0ICgpOwotKwkJCSAgYXJnID0gYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0uYS5hX2ludDsKLSsJCQkgIHdpZHRoID0gKGFyZyA8IDAgPyAodW5zaWduZWQgaW50KSAoLWFyZykgOiBhcmcpOwotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsJCQl7Ci0rCQkJICBjb25zdCBDSEFSX1QgKmRpZ2l0cCA9IGRwLT53aWR0aF9zdGFydDsKLSsKLSsJCQkgIGRvCi0rCQkJICAgIHdpZHRoID0geHN1bSAoeHRpbWVzICh3aWR0aCwgMTApLCAqZGlnaXRwKysgLSAnMCcpOwotKwkJCSAgd2hpbGUgKGRpZ2l0cCAhPSBkcC0+d2lkdGhfZW5kKTsKLSsJCQl9Ci0rCQkgICAgfQotKwotKwkJICBwcmVjaXNpb24gPSA2OwotKwkJICBpZiAoZHAtPnByZWNpc2lvbl9zdGFydCAhPSBkcC0+cHJlY2lzaW9uX2VuZCkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkJewotKwkJCSAgaW50IGFyZzsKLSsKLSsJCQkgIGlmICghKGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS50eXBlID09IFRZUEVfSU5UKSkKLSsJCQkgICAgYWJvcnQgKCk7Ci0rCQkJICBhcmcgPSBhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0uYS5hX2ludDsKLSsJCQkgIHByZWNpc2lvbiA9IChhcmcgPCAwID8gMCA6IGFyZyk7Ci0rCQkJfQotKwkJICAgICAgZWxzZQotKwkJCXsKLSsJCQkgIGNvbnN0IENIQVJfVCAqZGlnaXRwID0gZHAtPnByZWNpc2lvbl9zdGFydCArIDE7Ci0rCi0rCQkJICBwcmVjaXNpb24gPSAwOwotKwkJCSAgZG8KLSsJCQkgICAgcHJlY2lzaW9uID0geHN1bSAoeHRpbWVzIChwcmVjaXNpb24sIDEwKSwgKmRpZ2l0cCsrIC0gJzAnKTsKLSsJCQkgIHdoaWxlIChkaWdpdHAgIT0gZHAtPnByZWNpc2lvbl9lbmQpOwotKwkJCX0KLSsJCSAgICB9Ci0rCi0rCQkgIHN3aXRjaCAoZHAtPmNvbnZlcnNpb24pCi0rCQkgICAgewotKwotKwkJICAgIGNhc2UgJ2QnOiBjYXNlICdpJzogY2FzZSAndSc6Ci0rIyBpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZyBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnbyc6Ci0rIyBpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZyBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMzMzMzQgLyogYmluYXJ5IC0+IG9jdGFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMzMzMzQgLyogYmluYXJ5IC0+IG9jdGFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgZWxzZQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMzMzMzQgLyogYmluYXJ5IC0+IG9jdGFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAneCc6IGNhc2UgJ1gnOgotKyMgaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiBvciBhbHRlcm5hdGUgZm9ybSAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduIG9yIGFsdGVybmF0ZSBmb3JtICovCi0rCQkgICAgICBlbHNlCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ2YnOiBjYXNlICdGJzoKLSsjIGlmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0RPVUJMRSkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChMREJMX01BWF9FWFAKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxMDsgLyogc2lnbiwgZGVjaW1hbCBwb2ludCBldGMuICovCi0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKERCTF9NQVhfRVhQCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTA7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQgZXRjLiAqLwotKwkJICAgICAgdG1wX2xlbmd0aCA9IHhzdW0gKHRtcF9sZW5ndGgsIHByZWNpc2lvbik7Ci0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdlJzogY2FzZSAnRSc6IGNhc2UgJ2cnOiBjYXNlICdHJzoKLSsJCSAgICBjYXNlICdhJzogY2FzZSAnQSc6Ci0rCQkgICAgICB0bXBfbGVuZ3RoID0KLSsJCQkxMjsgLyogc2lnbiwgZGVjaW1hbCBwb2ludCwgZXhwb25lbnQgZXRjLiAqLwotKwkJICAgICAgdG1wX2xlbmd0aCA9IHhzdW0gKHRtcF9sZW5ndGgsIHByZWNpc2lvbik7Ci0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdjJzoKLSsjIGlmIGRlZmluZWQgSEFWRV9XSU5UX1QgJiYgIVdJREVfQ0hBUl9WRVJTSU9OCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX1dJREVfQ0hBUikKLSsJCQl0bXBfbGVuZ3RoID0gTUJfQ1VSX01BWDsKLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkJdG1wX2xlbmd0aCA9IDE7Ci0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdzJzoKLSsjIGlmZGVmIEhBVkVfV0NIQVJfVAotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9XSURFX1NUUklORykKLSsJCQl7Ci0rCQkJICB0bXBfbGVuZ3RoID0KLSsJCQkgICAgbG9jYWxfd2NzbGVuIChhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfd2lkZV9zdHJpbmcpOwotKwotKyMgIGlmICFXSURFX0NIQVJfVkVSU0lPTgotKwkJCSAgdG1wX2xlbmd0aCA9IHh0aW1lcyAodG1wX2xlbmd0aCwgTUJfQ1VSX01BWCk7Ci0rIyAgZW5kaWYKLSsJCQl9Ci0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJCXRtcF9sZW5ndGggPSBzdHJsZW4gKGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zdHJpbmcpOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAncCc6Ci0rCQkgICAgICB0bXBfbGVuZ3RoID0KLSsJCQkodW5zaWduZWQgaW50KSAoc2l6ZW9mICh2b2lkICopICogQ0hBUl9CSVQKLSsJCQkJCSogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KLSsJCQkJICAgICAgICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIDB4ICovCi0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBkZWZhdWx0OgotKwkJICAgICAgYWJvcnQgKCk7Ci0rCQkgICAgfQotKwotKwkJICBpZiAodG1wX2xlbmd0aCA8IHdpZHRoKQotKwkJICAgIHRtcF9sZW5ndGggPSB3aWR0aDsKLSsKLSsJCSAgdG1wX2xlbmd0aCA9IHhzdW0gKHRtcF9sZW5ndGgsIDEpOyAvKiBhY2NvdW50IGZvciB0cmFpbGluZyBOVUwgKi8KLSsJCX0KLSsKLSsJCWlmICh0bXBfbGVuZ3RoIDw9IHNpemVvZiAodG1wYnVmKSAvIHNpemVvZiAoQ0hBUl9UKSkKLSsJCSAgdG1wID0gdG1wYnVmOwotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgc2l6ZV90IHRtcF9tZW1zaXplID0geHRpbWVzICh0bXBfbGVuZ3RoLCBzaXplb2YgKENIQVJfVCkpOwotKwotKwkJICAgIGlmIChzaXplX292ZXJmbG93X3AgKHRtcF9tZW1zaXplKSkKLSsJCSAgICAgIC8qIE92ZXJmbG93LCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkuICAqLwotKwkJICAgICAgZ290byBvdXRfb2ZfbWVtb3J5OwotKwkJICAgIHRtcCA9IChDSEFSX1QgKikgbWFsbG9jICh0bXBfbWVtc2l6ZSk7Ci0rCQkgICAgaWYgKHRtcCA9PSBOVUxMKQotKwkJICAgICAgLyogT3V0IG9mIG1lbW9yeS4gICovCi0rCQkgICAgICBnb3RvIG91dF9vZl9tZW1vcnk7Ci0rCQkgIH0KLSsjZW5kaWYKLSsKLSsJCS8qIENvbnN0cnVjdCB0aGUgZm9ybWF0IHN0cmluZyBmb3IgY2FsbGluZyBzbnByaW50ZiBvcgotKwkJICAgc3ByaW50Zi4gICovCi0rCQlwID0gYnVmOwotKwkJKnArKyA9ICclJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0dST1VQKQotKwkJICAqcCsrID0gJ1wnJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0xFRlQpCi0rCQkgICpwKysgPSAnLSc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19TSE9XU0lHTikKLSsJCSAgKnArKyA9ICcrJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1NQQUNFKQotKwkJICAqcCsrID0gJyAnOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfQUxUKQotKwkJICAqcCsrID0gJyMnOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfWkVSTykKLSsJCSAgKnArKyA9ICcwJzsKLSsJCWlmIChkcC0+d2lkdGhfc3RhcnQgIT0gZHAtPndpZHRoX2VuZCkKLSsJCSAgewotKwkJICAgIHNpemVfdCBuID0gZHAtPndpZHRoX2VuZCAtIGRwLT53aWR0aF9zdGFydDsKLSsJCSAgICBtZW1jcHkgKHAsIGRwLT53aWR0aF9zdGFydCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCQkgICAgcCArPSBuOwotKwkJICB9Ci0rCQlpZiAoZHAtPnByZWNpc2lvbl9zdGFydCAhPSBkcC0+cHJlY2lzaW9uX2VuZCkKLSsJCSAgewotKwkJICAgIHNpemVfdCBuID0gZHAtPnByZWNpc2lvbl9lbmQgLSBkcC0+cHJlY2lzaW9uX3N0YXJ0OwotKwkJICAgIG1lbWNweSAocCwgZHAtPnByZWNpc2lvbl9zdGFydCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCQkgICAgcCArPSBuOwotKwkJICB9Ci0rCi0rCQlzd2l0Y2ggKHR5cGUpCi0rCQkgIHsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgY2FzZSBUWVBFX0xPTkdMT05HSU5UOgotKwkJICBjYXNlIFRZUEVfVUxPTkdMT05HSU5UOgotKwkJICAgICpwKysgPSAnbCc7Ci0rCQkgICAgLypGQUxMVEhST1VHSCovCi0rI2VuZGlmCi0rCQkgIGNhc2UgVFlQRV9MT05HSU5UOgotKwkJICBjYXNlIFRZUEVfVUxPTkdJTlQ6Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rCQkgIGNhc2UgVFlQRV9XSURFX0NIQVI6Ci0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKwkJICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6Ci0rI2VuZGlmCi0rCQkgICAgKnArKyA9ICdsJzsKLSsJCSAgICBicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKwkJICBjYXNlIFRZUEVfTE9OR0RPVUJMRToKLSsJCSAgICAqcCsrID0gJ0wnOwotKwkJICAgIGJyZWFrOwotKyNlbmRpZgotKwkJICBkZWZhdWx0OgotKwkJICAgIGJyZWFrOwotKwkJICB9Ci0rCQkqcCA9IGRwLT5jb252ZXJzaW9uOwotKyNpZiBVU0VfU05QUklOVEYKLSsJCXBbMV0gPSAnJSc7Ci0rCQlwWzJdID0gJ24nOwotKwkJcFszXSA9ICdcMCc7Ci0rI2Vsc2UKLSsJCXBbMV0gPSAnXDAnOwotKyNlbmRpZgotKwotKwkJLyogQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgZm9yIGNhbGxpbmcgc25wcmludGYgb3Igc3ByaW50Zi4gICovCi0rCQlwcmVmaXhfY291bnQgPSAwOwotKwkJaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkgIHsKLSsJCSAgICBpZiAoIShhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS50eXBlID09IFRZUEVfSU5UKSkKLSsJCSAgICAgIGFib3J0ICgpOwotKwkJICAgIHByZWZpeGVzW3ByZWZpeF9jb3VudCsrXSA9IGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkgIH0KLSsJCWlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKLSsJCSAgewotKwkJICAgIGlmICghKGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS50eXBlID09IFRZUEVfSU5UKSkKLSsJCSAgICAgIGFib3J0ICgpOwotKwkJICAgIHByZWZpeGVzW3ByZWZpeF9jb3VudCsrXSA9IGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS5hLmFfaW50OwotKwkJICB9Ci0rCi0rI2lmIFVTRV9TTlBSSU5URgotKwkJLyogUHJlcGFyZSBjaGVja2luZyB3aGV0aGVyIHNucHJpbnRmIHJldHVybnMgdGhlIGNvdW50Ci0rCQkgICB2aWEgJW4uICAqLwotKwkJRU5TVVJFX0FMTE9DQVRJT04gKHhzdW0gKGxlbmd0aCwgMSkpOwotKwkJcmVzdWx0W2xlbmd0aF0gPSAnXDAnOwotKyNlbmRpZgotKwotKwkJZm9yICg7OykKLSsJCSAgewotKwkJICAgIHNpemVfdCBtYXhsZW47Ci0rCQkgICAgaW50IGNvdW50OwotKwkJICAgIGludCByZXRjb3VudDsKLSsKLSsJCSAgICBtYXhsZW4gPSBhbGxvY2F0ZWQgLSBsZW5ndGg7Ci0rCQkgICAgY291bnQgPSAtMTsKLSsJCSAgICByZXRjb3VudCA9IDA7Ci0rCi0rI2lmIFVTRV9TTlBSSU5URgotKyMgZGVmaW5lIFNOUFJJTlRGX0JVRihhcmcpIFwKLSsJCSAgICBzd2l0Y2ggKHByZWZpeF9jb3VudCkJCQkJICAgIFwKLSsJCSAgICAgIHsJCQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMDoJCQkJCQkgICAgXAotKwkJCXJldGNvdW50ID0gU05QUklOVEYgKHJlc3VsdCArIGxlbmd0aCwgbWF4bGVuLCBidWYsICBcCi0rCQkJCQkgICAgIGFyZywgJmNvdW50KTsJCSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMToJCQkJCQkgICAgXAotKwkJCXJldGNvdW50ID0gU05QUklOVEYgKHJlc3VsdCArIGxlbmd0aCwgbWF4bGVuLCBidWYsICBcCi0rCQkJCQkgICAgIHByZWZpeGVzWzBdLCBhcmcsICZjb3VudCk7CSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMjoJCQkJCQkgICAgXAotKwkJCXJldGNvdW50ID0gU05QUklOVEYgKHJlc3VsdCArIGxlbmd0aCwgbWF4bGVuLCBidWYsICBcCi0rCQkJCQkgICAgIHByZWZpeGVzWzBdLCBwcmVmaXhlc1sxXSwgYXJnLCBcCi0rCQkJCQkgICAgICZjb3VudCk7CQkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgZGVmYXVsdDoJCQkJCQkgICAgXAotKwkJCWFib3J0ICgpOwkJCQkJICAgIFwKLSsJCSAgICAgIH0KLSsjZWxzZQotKyMgZGVmaW5lIFNOUFJJTlRGX0JVRihhcmcpIFwKLSsJCSAgICBzd2l0Y2ggKHByZWZpeF9jb3VudCkJCQkJICAgIFwKLSsJCSAgICAgIHsJCQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMDoJCQkJCQkgICAgXAotKwkJCWNvdW50ID0gc3ByaW50ZiAodG1wLCBidWYsIGFyZyk7CQkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDE6CQkJCQkJICAgIFwKLSsJCQljb3VudCA9IHNwcmludGYgKHRtcCwgYnVmLCBwcmVmaXhlc1swXSwgYXJnKTsJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAyOgkJCQkJCSAgICBcCi0rCQkJY291bnQgPSBzcHJpbnRmICh0bXAsIGJ1ZiwgcHJlZml4ZXNbMF0sIHByZWZpeGVzWzFdLFwKLSsJCQkJCSBhcmcpOwkJCQkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBkZWZhdWx0OgkJCQkJCSAgICBcCi0rCQkJYWJvcnQgKCk7CQkJCQkgICAgXAotKwkJICAgICAgfQotKyNlbmRpZgotKwotKwkJICAgIHN3aXRjaCAodHlwZSkKLSsJCSAgICAgIHsKLSsJCSAgICAgIGNhc2UgVFlQRV9TQ0hBUjoKLSsJCQl7Ci0rCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3NjaGFyOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VQ0hBUjoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3VjaGFyOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9TSE9SVDoKLSsJCQl7Ci0rCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3Nob3J0OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VU0hPUlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91c2hvcnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX0lOVDoKLSsJCQl7Ci0rCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2ludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVUlOVDoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3VpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX0xPTkdJTlQ6Ci0rCQkJewotKwkJCSAgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2xvbmdpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VMT05HSU5UOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91bG9uZ2ludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgICAgICBjYXNlIFRZUEVfTE9OR0xPTkdJTlQ6Ci0rCQkJewotKwkJCSAgbG9uZyBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfbG9uZ2xvbmdpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VMT05HTE9OR0lOVDoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91bG9uZ2xvbmdpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNlbmRpZgotKwkJICAgICAgY2FzZSBUWVBFX0RPVUJMRToKLSsJCQl7Ci0rCQkJICBkb3VibGUgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2RvdWJsZTsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgICAgIGNhc2UgVFlQRV9MT05HRE9VQkxFOgotKwkJCXsKLSsJCQkgIGxvbmcgZG91YmxlIGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25nZG91YmxlOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjZW5kaWYKLSsJCSAgICAgIGNhc2UgVFlQRV9DSEFSOgotKwkJCXsKLSsJCQkgIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rCQkgICAgICBjYXNlIFRZUEVfV0lERV9DSEFSOgotKwkJCXsKLSsJCQkgIHdpbnRfdCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfd2lkZV9jaGFyOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjZW5kaWYKLSsJCSAgICAgIGNhc2UgVFlQRV9TVFJJTkc6Ci0rCQkJewotKwkJCSAgY29uc3QgY2hhciAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3N0cmluZzsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKwkJICAgICAgY2FzZSBUWVBFX1dJREVfU1RSSU5HOgotKwkJCXsKLSsJCQkgIGNvbnN0IHdjaGFyX3QgKmFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV93aWRlX3N0cmluZzsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfUE9JTlRFUjoKLSsJCQl7Ci0rCQkJICB2b2lkICphcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfcG9pbnRlcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBkZWZhdWx0OgotKwkJCWFib3J0ICgpOwotKwkJICAgICAgfQotKwotKyNpZiBVU0VfU05QUklOVEYKLSsJCSAgICAvKiBQb3J0YWJpbGl0eTogTm90IGFsbCBpbXBsZW1lbnRhdGlvbnMgb2Ygc25wcmludGYoKQotKwkJICAgICAgIGFyZSBJU08gQyA5OSBjb21wbGlhbnQuICBEZXRlcm1pbmUgdGhlIG51bWJlciBvZgotKwkJICAgICAgIGJ5dGVzIHRoYXQgc25wcmludGYoKSBoYXMgcHJvZHVjZWQgb3Igd291bGQgaGF2ZQotKwkJICAgICAgIHByb2R1Y2VkLiAgKi8KLSsJCSAgICBpZiAoY291bnQgPj0gMCkKLSsJCSAgICAgIHsKLSsJCQkvKiBWZXJpZnkgdGhhdCBzbnByaW50ZigpIGhhcyBOVUwtdGVybWluYXRlZCBpdHMKLSsJCQkgICByZXN1bHQuICAqLwotKwkJCWlmIChjb3VudCA8IG1heGxlbiAmJiByZXN1bHRbbGVuZ3RoICsgY291bnRdICE9ICdcMCcpCi0rCQkJICBhYm9ydCAoKTsKLSsJCQkvKiBQb3J0YWJpbGl0eSBoYWNrLiAgKi8KLSsJCQlpZiAocmV0Y291bnQgPiBjb3VudCkKLSsJCQkgIGNvdW50ID0gcmV0Y291bnQ7Ci0rCQkgICAgICB9Ci0rCQkgICAgZWxzZQotKwkJICAgICAgewotKwkJCS8qIHNucHJpbnRmKCkgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAnJW4nCi0rCQkJICAgZGlyZWN0aXZlLiAgKi8KLSsJCQlpZiAocFsxXSAhPSAnXDAnKQotKwkJCSAgewotKwkJCSAgICAvKiBEb24ndCB1c2UgdGhlICclbicgZGlyZWN0aXZlOyBpbnN0ZWFkLCBsb29rCi0rCQkJICAgICAgIGF0IHRoZSBzbnByaW50ZigpIHJldHVybiB2YWx1ZS4gICovCi0rCQkJICAgIHBbMV0gPSAnXDAnOwotKwkJCSAgICBjb250aW51ZTsKLSsJCQkgIH0KLSsJCQllbHNlCi0rCQkJICB7Ci0rCQkJICAgIC8qIExvb2sgYXQgdGhlIHNucHJpbnRmKCkgcmV0dXJuIHZhbHVlLiAgKi8KLSsJCQkgICAgaWYgKHJldGNvdW50IDwgMCkKLSsJCQkgICAgICB7Ci0rCQkJCS8qIEhQLVVYIDEwLjIwIHNucHJpbnRmKCkgaXMgZG91Ymx5IGRlZmljaWVudDoKLSsJCQkJICAgSXQgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAnJW4nIGRpcmVjdGl2ZSwKLSsJCQkJICAgKmFuZCogaXQgcmV0dXJucyAtMSAocmF0aGVyIHRoYW4gdGhlIGxlbmd0aAotKwkJCQkgICB0aGF0IHdvdWxkIGhhdmUgYmVlbiByZXF1aXJlZCkgd2hlbiB0aGUKLSsJCQkJICAgYnVmZmVyIGlzIHRvbyBzbWFsbC4gICovCi0rCQkJCXNpemVfdCBiaWdnZXJfbmVlZCA9Ci0rCQkJCSAgeHN1bSAoeHRpbWVzIChhbGxvY2F0ZWQsIDIpLCAxMik7Ci0rCQkJCUVOU1VSRV9BTExPQ0FUSU9OIChiaWdnZXJfbmVlZCk7Ci0rCQkJCWNvbnRpbnVlOwotKwkJCSAgICAgIH0KLSsJCQkgICAgZWxzZQotKwkJCSAgICAgIGNvdW50ID0gcmV0Y291bnQ7Ci0rCQkJICB9Ci0rCQkgICAgICB9Ci0rI2VuZGlmCi0rCi0rCQkgICAgLyogQXR0ZW1wdCB0byBoYW5kbGUgZmFpbHVyZS4gICovCi0rCQkgICAgaWYgKGNvdW50IDwgMCkKLSsJCSAgICAgIHsKLSsJCQlpZiAoIShyZXN1bHQgPT0gcmVzdWx0YnVmIHx8IHJlc3VsdCA9PSBOVUxMKSkKLSsJCQkgIGZyZWUgKHJlc3VsdCk7Ci0rCQkJaWYgKGJ1Zl9tYWxsb2NlZCAhPSBOVUxMKQotKwkJCSAgZnJlZSAoYnVmX21hbGxvY2VkKTsKLSsJCQlDTEVBTlVQICgpOwotKwkJCWVycm5vID0gRUlOVkFMOwotKwkJCXJldHVybiBOVUxMOwotKwkJICAgICAgfQotKwotKyNpZiAhVVNFX1NOUFJJTlRGCi0rCQkgICAgaWYgKGNvdW50ID49IHRtcF9sZW5ndGgpCi0rCQkgICAgICAvKiB0bXBfbGVuZ3RoIHdhcyBpbmNvcnJlY3RseSBjYWxjdWxhdGVkIC0gZml4IHRoZQotKwkJCSBjb2RlIGFib3ZlISAgKi8KLSsJCSAgICAgIGFib3J0ICgpOwotKyNlbmRpZgotKwotKwkJICAgIC8qIE1ha2Ugcm9vbSBmb3IgdGhlIHJlc3VsdC4gICovCi0rCQkgICAgaWYgKGNvdW50ID49IG1heGxlbikKLSsJCSAgICAgIHsKLSsJCQkvKiBOZWVkIGF0IGxlYXN0IGNvdW50IGJ5dGVzLiAgQnV0IGFsbG9jYXRlCi0rCQkJICAgcHJvcG9ydGlvbmFsbHksIHRvIGF2b2lkIGxvb3BpbmcgZXRlcm5hbGx5IGlmCi0rCQkJICAgc25wcmludGYoKSByZXBvcnRzIGEgdG9vIHNtYWxsIGNvdW50LiAgKi8KLSsJCQlzaXplX3QgbiA9Ci0rCQkJICB4bWF4ICh4c3VtIChsZW5ndGgsIGNvdW50KSwgeHRpbWVzIChhbGxvY2F0ZWQsIDIpKTsKLSsKLSsJCQlFTlNVUkVfQUxMT0NBVElPTiAobik7Ci0rI2lmIFVTRV9TTlBSSU5URgotKwkJCWNvbnRpbnVlOwotKyNlbmRpZgotKwkJICAgICAgfQotKwotKyNpZiBVU0VfU05QUklOVEYKLSsJCSAgICAvKiBUaGUgc25wcmludGYoKSByZXN1bHQgZGlkIGZpdC4gICovCi0rI2Vsc2UKLSsJCSAgICAvKiBBcHBlbmQgdGhlIHNwcmludGYoKSByZXN1bHQuICAqLwotKwkJICAgIG1lbWNweSAocmVzdWx0ICsgbGVuZ3RoLCB0bXAsIGNvdW50ICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJCSAgICBpZiAodG1wICE9IHRtcGJ1ZikKLSsJCSAgICAgIGZyZWUgKHRtcCk7Ci0rI2VuZGlmCi0rCi0rCQkgICAgbGVuZ3RoICs9IGNvdW50OwotKwkJICAgIGJyZWFrOwotKwkJICB9Ci0rCSAgICAgIH0KLSsJICB9Ci0rICAgICAgfQotKwotKyAgICAvKiBBZGQgdGhlIGZpbmFsIE5VTC4gICovCi0rICAgIEVOU1VSRV9BTExPQ0FUSU9OICh4c3VtIChsZW5ndGgsIDEpKTsKLSsgICAgcmVzdWx0W2xlbmd0aF0gPSAnXDAnOwotKwotKyAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZiAmJiBsZW5ndGggKyAxIDwgYWxsb2NhdGVkKQotKyAgICAgIHsKLSsJLyogU2hyaW5rIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGlmIHBvc3NpYmxlLiAgKi8KLSsJQ0hBUl9UICptZW1vcnk7Ci0rCi0rCW1lbW9yeSA9IChDSEFSX1QgKikgcmVhbGxvYyAocmVzdWx0LCAobGVuZ3RoICsgMSkgKiBzaXplb2YgKENIQVJfVCkpOwotKwlpZiAobWVtb3J5ICE9IE5VTEwpCi0rCSAgcmVzdWx0ID0gbWVtb3J5OwotKyAgICAgIH0KLSsKLSsgICAgaWYgKGJ1Zl9tYWxsb2NlZCAhPSBOVUxMKQotKyAgICAgIGZyZWUgKGJ1Zl9tYWxsb2NlZCk7Ci0rICAgIENMRUFOVVAgKCk7Ci0rICAgICpsZW5ndGhwID0gbGVuZ3RoOwotKyAgICByZXR1cm4gcmVzdWx0OwotKwotKyAgb3V0X29mX21lbW9yeToKLSsgICAgaWYgKCEocmVzdWx0ID09IHJlc3VsdGJ1ZiB8fCByZXN1bHQgPT0gTlVMTCkpCi0rICAgICAgZnJlZSAocmVzdWx0KTsKLSsgICAgaWYgKGJ1Zl9tYWxsb2NlZCAhPSBOVUxMKQotKyAgICAgIGZyZWUgKGJ1Zl9tYWxsb2NlZCk7Ci0rICBvdXRfb2ZfbWVtb3J5XzE6Ci0rICAgIENMRUFOVVAgKCk7Ci0rICAgIGVycm5vID0gRU5PTUVNOwotKyAgICByZXR1cm4gTlVMTDsKLSsgIH0KLSt9Ci0rCi0rI3VuZGVmIFNOUFJJTlRGCi0rI3VuZGVmIFVTRV9TTlBSSU5URgotKyN1bmRlZiBQUklOVEZfUEFSU0UKLSsjdW5kZWYgRElSRUNUSVZFUwotKyN1bmRlZiBESVJFQ1RJVkUKLSsjdW5kZWYgQ0hBUl9UCi0rI3VuZGVmIFZBU05QUklOVEYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC92YXNucHJpbnRmLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvdmFzbnByaW50Zi5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjY3NzAwNjY0IC0wNDAwCi1AQCAtMCwwICsxLDYxIEBACi0rLyogdnNwcmludGYgd2l0aCBhdXRvbWF0aWMgbWVtb3J5IGFsbG9jYXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1ZBU05QUklOVEZfSAotKyNkZWZpbmUgX1ZBU05QUklOVEZfSAotKwotKy8qIEdldCB2YV9saXN0LiAgKi8KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rCi0rLyogR2V0IHNpemVfdC4gICovCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKyNpZm5kZWYgX19hdHRyaWJ1dGVfXwotKy8qIFRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgaW4gZ2NjIHZlcnNpb25zIDIuNSBhbmQgbGF0ZXIuICAqLwotKyMgaWYgX19HTlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgNSkgfHwgX19TVFJJQ1RfQU5TSV9fCi0rIyAgZGVmaW5lIF9fYXR0cmlidXRlX18oU3BlYykgLyogZW1wdHkgKi8KLSsjIGVuZGlmCi0rLyogVGhlIF9fLXByb3RlY3RlZCB2YXJpYW50cyBvZiBgZm9ybWF0JyBhbmQgYHByaW50ZicgYXR0cmlidXRlcwotKyAgIGFyZSBhY2NlcHRlZCBieSBnY2MgdmVyc2lvbnMgMi42LjQgKGVmZmVjdGl2ZWx5IDIuNykgYW5kIGxhdGVyLiAgKi8KLSsjIGlmIF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDcpCi0rIyAgZGVmaW5lIF9fZm9ybWF0X18gZm9ybWF0Ci0rIyAgZGVmaW5lIF9fcHJpbnRmX18gcHJpbnRmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZmRlZglfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKy8qIFdyaXRlIGZvcm1hdHRlZCBvdXRwdXQgdG8gYSBzdHJpbmcgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHdpdGggbWFsbG9jKCkuCi0rICAgWW91IGNhbiBwYXNzIGEgcHJlYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBpbiBSRVNVTFRCVUYgYW5kIGl0cwotKyAgIHNpemUgaW4gKkxFTkdUSFA7IG90aGVyd2lzZSB5b3UgcGFzcyBSRVNVTFRCVUYgPSBOVUxMLgotKyAgIElmIHN1Y2Nlc3NmdWwsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RyaW5nICh0aGlzIG1heSBiZSA9IFJFU1VMVEJVRgotKyAgIGlmIG5vIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2FzIG5lY2Vzc2FyeSkgYW5kIHNldCAqTEVOR1RIUCB0byB0aGUKLSsgICBudW1iZXIgb2YgcmVzdWx0aW5nIGJ5dGVzLCBleGNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gIFVwb24gZXJyb3IsIHNldAotKyAgIGVycm5vIGFuZCByZXR1cm4gTlVMTC4gICovCi0rZXh0ZXJuIGNoYXIgKiBhc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSsgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7Ci0rZXh0ZXJuIGNoYXIgKiB2YXNucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwotKwotKyNpZmRlZglfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogX1ZBU05QUklOVEZfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3Zhc253cHJpbnRmLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvdmFzbndwcmludGYuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjY3MzY5OTc1MiAtMDQwMAotQEAgLTAsMCArMSw0NiBAQAotKy8qIHZzd3ByaW50ZiB3aXRoIGF1dG9tYXRpYyBtZW1vcnkgYWxsb2NhdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfVkFTTldQUklOVEZfSAotKyNkZWZpbmUgX1ZBU05XUFJJTlRGX0gKLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKy8qIEdldCB3Y2hhcl90LCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsvKiBXcml0ZSBmb3JtYXR0ZWQgb3V0cHV0IHRvIGEgc3RyaW5nIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB3aXRoIG1hbGxvYygpLgotKyAgIFlvdSBjYW4gcGFzcyBhIHByZWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSByZXN1bHQgaW4gUkVTVUxUQlVGIGFuZCBpdHMKLSsgICBzaXplIGluICpMRU5HVEhQOyBvdGhlcndpc2UgeW91IHBhc3MgUkVTVUxUQlVGID0gTlVMTC4KLSsgICBJZiBzdWNjZXNzZnVsLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0cmluZyAodGhpcyBtYXkgYmUgPSBSRVNVTFRCVUYKLSsgICBpZiBubyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdhcyBuZWNlc3NhcnkpIGFuZCBzZXQgKkxFTkdUSFAgdG8gdGhlCi0rICAgbnVtYmVyIG9mIHJlc3VsdGluZyBieXRlcywgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICBVcG9uIGVycm9yLCBzZXQKLSsgICBlcnJubyBhbmQgcmV0dXJuIE5VTEwuICAqLwotK2V4dGVybiB3Y2hhcl90ICogYXNud3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKTsKLStleHRlcm4gd2NoYXJfdCAqIHZhc253cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwotKwotKyNpZmRlZglfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogX1ZBU05XUFJJTlRGX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9WRVJTSU9OCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04JMjAwNC0wOS0xMiAxNDo0MDozNC42Nzk2OTg4NDAgLTA0MDAKLUBAIC0xICsxIEBACi0tR05VIGdldHRleHQgbGlicmFyeSBmcm9tIGdldHRleHQtMC4xMC4zMgotK0dOVSBnZXR0ZXh0IGxpYnJhcnkgZnJvbSBnZXR0ZXh0LTAuMTQuMQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3dwcmludGYtcGFyc2UuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC93cHJpbnRmLXBhcnNlLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42OTU2OTY0MDggLTA0MDAKLUBAIC0wLDAgKzEsNzUgQEAKLSsvKiBQYXJzZSBwcmludGYgZm9ybWF0IHN0cmluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfV1BSSU5URl9QQVJTRV9ICi0rI2RlZmluZSBfV1BSSU5URl9QQVJTRV9ICi0rCi0rI2luY2x1ZGUgInByaW50Zi1hcmdzLmgiCi0rCi0rCi0rLyogRmxhZ3MgKi8KLSsjZGVmaW5lIEZMQUdfR1JPVVAJIDEJLyogJyBmbGFnICovCi0rI2RlZmluZSBGTEFHX0xFRlQJIDIJLyogLSBmbGFnICovCi0rI2RlZmluZSBGTEFHX1NIT1dTSUdOCSA0CS8qICsgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TUEFDRQkgOAkvKiBzcGFjZSBmbGFnICovCi0rI2RlZmluZSBGTEFHX0FMVAkxNgkvKiAjIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfWkVSTwkzMgotKwotKy8qIGFyZ19pbmRleCB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgbm8gYXJndW1lbnQgaXMgY29uc3VtZWQuICAqLwotKyNkZWZpbmUgQVJHX05PTkUJKH4oc2l6ZV90KTApCi0rCi0rLyogQSBwYXJzZWQgZGlyZWN0aXZlLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGNvbnN0IHdjaGFyX3QqIGRpcl9zdGFydDsKLSsgIGNvbnN0IHdjaGFyX3QqIGRpcl9lbmQ7Ci0rICBpbnQgZmxhZ3M7Ci0rICBjb25zdCB3Y2hhcl90KiB3aWR0aF9zdGFydDsKLSsgIGNvbnN0IHdjaGFyX3QqIHdpZHRoX2VuZDsKLSsgIHNpemVfdCB3aWR0aF9hcmdfaW5kZXg7Ci0rICBjb25zdCB3Y2hhcl90KiBwcmVjaXNpb25fc3RhcnQ7Ci0rICBjb25zdCB3Y2hhcl90KiBwcmVjaXNpb25fZW5kOwotKyAgc2l6ZV90IHByZWNpc2lvbl9hcmdfaW5kZXg7Ci0rICB3Y2hhcl90IGNvbnZlcnNpb247IC8qIGQgaSBvIHUgeCBYIGYgZSBFIGcgRyBjIHMgcCBuIFUgJSBidXQgbm90IEMgUyAqLwotKyAgc2l6ZV90IGFyZ19pbmRleDsKLSt9Ci0rd2NoYXJfdF9kaXJlY3RpdmU7Ci0rCi0rLyogQSBwYXJzZWQgZm9ybWF0IHN0cmluZy4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBzaXplX3QgY291bnQ7Ci0rICB3Y2hhcl90X2RpcmVjdGl2ZSAqZGlyOwotKyAgc2l6ZV90IG1heF93aWR0aF9sZW5ndGg7Ci0rICBzaXplX3QgbWF4X3ByZWNpc2lvbl9sZW5ndGg7Ci0rfQotK3djaGFyX3RfZGlyZWN0aXZlczsKLSsKLSsKLSsvKiBQYXJzZXMgdGhlIGZvcm1hdCBzdHJpbmcuICBGaWxscyBpbiB0aGUgbnVtYmVyIE4gb2YgZGlyZWN0aXZlcywgYW5kIGZpbGxzCi0rICAgaW4gZGlyZWN0aXZlc1swXSwgLi4uLCBkaXJlY3RpdmVzW04tMV0sIGFuZCBzZXRzIGRpcmVjdGl2ZXNbTl0uZGlyX3N0YXJ0Ci0rICAgdG8gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZy4gIEFsc28gZmlsbHMgaW4gdGhlIGFyZ190eXBlIGZpZWxkcyBvZiB0aGUKLSsgICBhcmd1bWVudHMgYW5kIHRoZSBuZWVkZWQgY291bnQgb2YgYXJndW1lbnRzLiAgKi8KLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2Vsc2UKLStleHRlcm4KLSsjZW5kaWYKLStpbnQgd3ByaW50Zl9wYXJzZSAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB3Y2hhcl90X2RpcmVjdGl2ZXMgKmQsIGFyZ3VtZW50cyAqYSk7Ci0rCi0rI2VuZGlmIC8qIF9XUFJJTlRGX1BBUlNFX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC94b3Blbi1tc2cuc2VkCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwNCArMCwwIEBACi0tIyBwbzJtc2cuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBYL09wZW4gc3R5bGUgLm1zZyBmaWxlCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLS0jCi0tIwotLSMgVGhlIGZpcnN0IGRpcmVjdGl2ZSBpbiB0aGUgLm1zZyBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlCi0tIyBtZXNzYWdlIHNldCBudW1iZXIuICBXZSB1c2UgYWx3YXlzIHNldCBudW1iZXIgMS4KLS0jCi0tMSB7Ci0tICBpXAotLSRzZXQgMSAjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBwbzJtc2cuc2VkCi0tICBoCi0tICBzLy4qLzAvCi0tICB4Ci0tfQotLSMKLS0jIFdlIGNvcHkgYWxsIGNvbW1lbnRzIGludG8gdGhlIC5tc2cgZmlsZS4gIFBlcmhhcHMgdGhleSBjYW4gaGVscC4KLS0jCi0tL14jLyBzL14jWyAJXSovJCAvcAotLSMKLS0jIFdlIGNvcHkgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYXMgYSBjb21tZW50IGludG8gdGhlIC5tc2cgZmlsZS4KLS0jCi0tL15tc2dpZC8gewotLSMgRG9lcyBub3Qgd29yayBub3cKLS0jICAvIiQvISB7Ci0tIyAgICBzL1xcJC8vCi0tIyAgICBzLyQvIC4uLiAobW9yZSBsaW5lcyBmb2xsb3dpbmcpIi8KLS0jICB9Ci0tICBzL15tc2dpZFsgCV0qIlwoLipcKSIkLyQgT3JpZ2luYWwgTWVzc2FnZTogXDEvCi0tICBwCi0tfQotLSMKLS0jIFRoZSAubXNnIGZpbGUgY29udGFpbnMsIG90aGVyIHRoZW4gdGhlIC5wbyBmaWxlLCBvbmx5IHRoZSB0cmFuc2xhdGlvbnMKLS0jIGJ1dCBlYWNoIGdpdmVuIGEgdW5pcXVlIElELiAgU3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgYnkgMSBmb3IKLS0jIGVhY2ggbWVzc2FnZSB3ZSBhc3NpZ24gdGhlbSB0byB0aGUgbWVzc2FnZXMuCi0tIyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgLnBvIGZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY2F0LWlkLXRibC5jIGZpbGUKLS0jICh3aXRoIHBvLXRvLXRibCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGhlcmUuICAoQXQgbGVhc3QgdGhlIG9yZGVyCi0tIyBvZiBkZWNsYXJhdGlvbnMgbXVzdCBub3QgYmUgY2hhbmdlZC4pCi0tIwotLS9ebXNnc3RyLyB7Ci0tICBzL21zZ3N0clsgCV0qIlwoLipcKSIvXDEvCi0tICB4Ci0tIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKLS0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgotLSAgdGQKLS0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCi0tIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCi0tICA6ZAotLSAgcy85XChfKlwpJC9fXDEvCi0tICB0ZAotLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCi0tICBzL15cKF8qXCkkLzBcMS8KLS0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KLS0gIHMvOFwoXypcKSQvOVwxLwotLSAgcy83XChfKlwpJC84XDEvCi0tICBzLzZcKF8qXCkkLzdcMS8KLS0gIHMvNVwoXypcKSQvNlwxLwotLSAgcy80XChfKlwpJC81XDEvCi0tICBzLzNcKF8qXCkkLzRcMS8KLS0gIHMvMlwoXypcKSQvM1wxLwotLSAgcy8xXChfKlwpJC8yXDEvCi0tICBzLzBcKF8qXCkkLzFcMS8KLS0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCi0tICBzL18vMC9nCi0tICB4Ci0tIyBCcmluZyB0aGUgbGluZSBpbiB0aGUgZm9ybWF0IGA8bnVtYmVyPiA8bWVzc2FnZT4nCi0tICBHCi0tICBzL15bXlxuXSokLyYgLwotLSAgcy9cKC4qXClcblwoWzAtOV0qXCkvXDIgXDEvCi0tIyBDbGVhciBmbGFnIGZyb20gbGFzdCBzdWJzdGl0dXRpb24uCi0tICB0YgotLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUuCi0tICA6YgotLSAgTgotLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGEgY29udGludWF0aW9uIGxpbmUuCi0tICBzL1woLipcblwpIlwoLipcKSIvXDFcMi8KLS0jIFllcywgdGhlbiBicmFuY2guCi0tICB0YQotLSAgUAotLSAgRAotLSMgTm90ZSB0aGF0IGBEJyBpbmNsdWRlcyBhIGp1bXAgdG8gdGhlIHN0YXJ0ISEKLS0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCi0tICA6YQotLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCi0tICBQCi0tIyBXZSBjYW5ub3QgdXNlIHRoZSBzZWQgY29tbWFuZCBgRCcgaGVyZQotLSAgcy8uKlxuXCguKlwpL1wxLwotLSAgdGIKLS19Ci0tZAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3hzaXplLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwveHNpemUuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjcwMDY5NTY0OCAtMDQwMAotQEAgLTAsMCArMSwxMDkgQEAKLSsvKiB4c2l6ZS5oIC0tIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1hTSVpFX0gKLSsjZGVmaW5lIF9YU0laRV9ICi0rCi0rLyogR2V0IHNpemVfdC4gICovCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKy8qIEdldCBTSVpFX01BWC4gICovCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpZiBIQVZFX1NURElOVF9ICi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsKLSsvKiBUaGUgc2l6ZSBvZiBtZW1vcnkgb2JqZWN0cyBpcyBvZnRlbiBjb21wdXRlZCB0aHJvdWdoIGV4cHJlc3Npb25zIG9mCi0rICAgdHlwZSBzaXplX3QuIEV4YW1wbGU6Ci0rICAgICAgdm9pZCogcCA9IG1hbGxvYyAoaGVhZGVyX3NpemUgKyBuICogZWxlbWVudF9zaXplKS4KLSsgICBUaGVzZSBjb21wdXRhdGlvbnMgY2FuIGxlYWQgdG8gb3ZlcmZsb3cuICBXaGVuIHRoaXMgaGFwcGVucywgbWFsbG9jKCkKLSsgICByZXR1cm5zIGEgcGllY2Ugb2YgbWVtb3J5IHRoYXQgaXMgd2F5IHRvbyBzbWFsbCwgYW5kIHRoZSBwcm9ncmFtIHRoZW4KLSsgICBjcmFzaGVzIHdoaWxlIGF0dGVtcHRpbmcgdG8gZmlsbCB0aGUgbWVtb3J5LgotKyAgIFRvIGF2b2lkIHRoaXMsIHRoZSBmdW5jdGlvbnMgYW5kIG1hY3JvcyBpbiB0aGlzIGZpbGUgY2hlY2sgZm9yIG92ZXJmbG93LgotKyAgIFRoZSBjb252ZW50aW9uIGlzIHRoYXQgU0laRV9NQVggcmVwcmVzZW50cyBvdmVyZmxvdy4KLSsgICBtYWxsb2MgKFNJWkVfTUFYKSBpcyBub3QgZ3VhcmFudGVlZCB0byBmYWlsIC0tIHRoaW5rIG9mIGEgbWFsbG9jCi0rICAgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIG1tYXAgLS0sIGl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHNpemVfb3ZlcmZsb3dfcCgpCi0rICAgb3Igc2l6ZV9pbl9ib3VuZHNfcCgpIGJlZm9yZSBpbnZva2luZyBtYWxsb2MoKS4KLSsgICBUaGUgZXhhbXBsZSB0aHVzIGJlY29tZXM6Ci0rICAgICAgc2l6ZV90IHNpemUgPSB4c3VtIChoZWFkZXJfc2l6ZSwgeHRpbWVzIChuLCBlbGVtZW50X3NpemUpKTsKLSsgICAgICB2b2lkICpwID0gKHNpemVfaW5fYm91bmRzX3AgKHNpemUpID8gbWFsbG9jIChzaXplKSA6IE5VTEwpOwotKyovCi0rCi0rLyogQ29udmVydCBhbiBhcmJpdHJhcnkgdmFsdWUgPj0gMCB0byB0eXBlIHNpemVfdC4gICovCi0rI2RlZmluZSB4Y2FzdF9zaXplX3QoTikgXAotKyAgKChOKSA8PSBTSVpFX01BWCA/IChzaXplX3QpIChOKSA6IFNJWkVfTUFYKQotKwotKy8qIFN1bSBvZiB0d28gc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3hzdW0gKHNpemVfdCBzaXplMSwgc2l6ZV90IHNpemUyKQotK3sKLSsgIHNpemVfdCBzdW0gPSBzaXplMSArIHNpemUyOwotKyAgcmV0dXJuIChzdW0gPj0gc2l6ZTEgPyBzdW0gOiBTSVpFX01BWCk7Ci0rfQotKwotKy8qIFN1bSBvZiB0aHJlZSBzaXplcywgd2l0aCBvdmVyZmxvdyBjaGVjay4gICovCi0rc3RhdGljIGlubGluZSBzaXplX3QKLSsjaWYgX19HTlVDX18gPj0gMwotK19fYXR0cmlidXRlX18gKChfX3B1cmVfXykpCi0rI2VuZGlmCi0reHN1bTMgKHNpemVfdCBzaXplMSwgc2l6ZV90IHNpemUyLCBzaXplX3Qgc2l6ZTMpCi0rewotKyAgcmV0dXJuIHhzdW0gKHhzdW0gKHNpemUxLCBzaXplMiksIHNpemUzKTsKLSt9Ci0rCi0rLyogU3VtIG9mIGZvdXIgc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3hzdW00IChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMiwgc2l6ZV90IHNpemUzLCBzaXplX3Qgc2l6ZTQpCi0rewotKyAgcmV0dXJuIHhzdW0gKHhzdW0gKHhzdW0gKHNpemUxLCBzaXplMiksIHNpemUzKSwgc2l6ZTQpOwotK30KLSsKLSsvKiBNYXhpbXVtIG9mIHR3byBzaXplcywgd2l0aCBvdmVyZmxvdyBjaGVjay4gICovCi0rc3RhdGljIGlubGluZSBzaXplX3QKLSsjaWYgX19HTlVDX18gPj0gMwotK19fYXR0cmlidXRlX18gKChfX3B1cmVfXykpCi0rI2VuZGlmCi0reG1heCAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIpCi0rewotKyAgLyogTm8gZXhwbGljaXQgY2hlY2sgaXMgbmVlZGVkIGhlcmUsIGJlY2F1c2UgZm9yIGFueSBuOgotKyAgICAgbWF4IChTSVpFX01BWCwgbikgPT0gU0laRV9NQVggYW5kIG1heCAobiwgU0laRV9NQVgpID09IFNJWkVfTUFYLiAgKi8KLSsgIHJldHVybiAoc2l6ZTEgPj0gc2l6ZTIgPyBzaXplMSA6IHNpemUyKTsKLSt9Ci0rCi0rLyogTXVsdGlwbGljYXRpb24gb2YgYSBjb3VudCB3aXRoIGFuIGVsZW1lbnQgc2l6ZSwgd2l0aCBvdmVyZmxvdyBjaGVjay4KLSsgICBUaGUgY291bnQgbXVzdCBiZSA+PSAwIGFuZCB0aGUgZWxlbWVudCBzaXplIG11c3QgYmUgPiAwLgotKyAgIFRoaXMgaXMgYSBtYWNybywgbm90IGFuIGlubGluZSBmdW5jdGlvbiwgc28gdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkgZXZlbgotKyAgIHdoZW4gTiBpcyBvZiBhIHdpZGVyIHR1cGUgYW5kIE4gPiBTSVpFX01BWC4gICovCi0rI2RlZmluZSB4dGltZXMoTiwgRUxTSVpFKSBcCi0rICAoKE4pIDw9IFNJWkVfTUFYIC8gKEVMU0laRSkgPyAoc2l6ZV90KSAoTikgKiAoRUxTSVpFKSA6IFNJWkVfTUFYKQotKwotKy8qIENoZWNrIGZvciBvdmVyZmxvdy4gICovCi0rI2RlZmluZSBzaXplX292ZXJmbG93X3AoU0laRSkgXAotKyAgKChTSVpFKSA9PSBTSVpFX01BWCkKLSsvKiBDaGVjayBhZ2FpbnN0IG92ZXJmbG93LiAgKi8KLSsjZGVmaW5lIHNpemVfaW5fYm91bmRzX3AoU0laRSkgXAotKyAgKChTSVpFKSAhPSBTSVpFX01BWCkKLSsKLSsjZW5kaWYgLyogX1hTSVpFX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvQ2hhbmdlTG9nCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNS4wNTQ2NDE4NDAgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsyMDA0LTA5LTEyICBnZXR0ZXh0aXplICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0rCi0rCSogY29kZXNldC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogZ2V0dGV4dC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogZ2xpYmMyMS5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaWNvbnYubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludGRpdjAubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludG1heC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW50dHlwZXMubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludHR5cGVzX2gubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludHR5cGVzLXByaS5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaXNjLXBvc2l4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsY21lc3NhZ2UubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxpYi1sZC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbGliLWxpbmsubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxpYi1wcmVmaXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxvbmdkb3VibGUubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxvbmdsb25nLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBubHMubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHBvLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBwcmludGYtcG9zaXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHByb2d0ZXN0Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBzaWduZWQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHNpemVfbWF4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBzdGRpbnRfaC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogdWludG1heF90Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB1bG9uZ2xvbmcubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHdjaGFyX3QubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHdpbnRfdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogeHNpemUubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIE1ha2VmaWxlLmFtOiBOZXcgZmlsZS4KLSsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvY29kZXNldC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvY29kZXNldC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjgyMDY3NzQwOCAtMDQwMAotQEAgLTAsMCArMSwyMyBAQAotKyMgY29kZXNldC5tNCBzZXJpYWwgQU0xIChnZXR0ZXh0LTAuMTAuNDApCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtBTV9MQU5HSU5GT19DT0RFU0VUXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIG5sX2xhbmdpbmZvIGFuZCBDT0RFU0VUXSwgYW1fY3ZfbGFuZ2luZm9fY29kZXNldCwKLSsgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGFuZ2luZm8uaD5dLAotKyAgICAgIFtjaGFyKiBjcyA9IG5sX2xhbmdpbmZvKENPREVTRVQpO10sCi0rICAgICAgYW1fY3ZfbGFuZ2luZm9fY29kZXNldD15ZXMsCi0rICAgICAgYW1fY3ZfbGFuZ2luZm9fY29kZXNldD1ubykKLSsgICAgXSkKLSsgIGlmIHRlc3QgJGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTEFOR0lORk9fQ09ERVNFVCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIDxsYW5naW5mby5oPiBhbmQgbmxfbGFuZ2luZm8oQ09ERVNFVCkuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvZ2V0dGV4dC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvZ2V0dGV4dC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjgyNjY3NjQ5NiAtMDQwMAotQEAgLTAsMCArMSw0ODcgQEAKLSsjIGdldHRleHQubTQgc2VyaWFsIDI4IChnZXR0ZXh0LTAuMTMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgotK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgotKwotK2RubCBNYWNybyB0byBhZGQgZm9yIHVzaW5nIEdOVSBnZXR0ZXh0LgotKwotK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFQoW0lOVExTWU1CT0xdLCBbTkVFRFNZTUJPTF0sIFtJTlRMRElSXSkuCi0rZG5sIElOVExTWU1CT0wgY2FuIGJlIG9uZSBvZiAnZXh0ZXJuYWwnLCAnbm8tbGlidG9vbCcsICd1c2UtbGlidG9vbCcuIFRoZQotK2RubCAgICBkZWZhdWx0IChpZiBpdCBpcyBub3Qgc3BlY2lmaWVkIG9yIGVtcHR5KSBpcyAnbm8tbGlidG9vbCcuCi0rZG5sICAgIElOVExTWU1CT0wgc2hvdWxkIGJlICdleHRlcm5hbCcgZm9yIHBhY2thZ2VzIHdpdGggbm8gaW50bCBkaXJlY3RvcnksCi0rZG5sICAgIGFuZCAnbm8tbGlidG9vbCcgb3IgJ3VzZS1saWJ0b29sJyBmb3IgcGFja2FnZXMgd2l0aCBhbiBpbnRsIGRpcmVjdG9yeS4KLStkbmwgICAgSWYgSU5UTFNZTUJPTCBpcyAndXNlLWxpYnRvb2wnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5Ci0rZG5sICAgICQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwubGEgd2lsbCBiZSBjcmVhdGVkIChzaGFyZWQgYW5kL29yIHN0YXRpYywKLStkbmwgICAgZGVwZW5kaW5nIG9uIC0te2VuYWJsZSxkaXNhYmxlfS17c2hhcmVkLHN0YXRpY30gYW5kIG9uIHRoZSBwcmVzZW5jZSBvZgotK2RubCAgICBBTS1ESVNBQkxFLVNIQVJFRCkuIElmIElOVExTWU1CT0wgaXMgJ25vLWxpYnRvb2wnLCBhIHN0YXRpYyBsaWJyYXJ5Ci0rZG5sICAgICQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwuYSB3aWxsIGJlIGNyZWF0ZWQuCi0rZG5sIElmIE5FRURTWU1CT0wgaXMgc3BlY2lmaWVkIGFuZCBpcyAnbmVlZC1uZ2V0dGV4dCcsIHRoZW4gR05VIGdldHRleHQKLStkbmwgICAgaW1wbGVtZW50YXRpb25zIChpbiBsaWJjIG9yIGxpYmludGwpIHdpdGhvdXQgdGhlIG5nZXR0ZXh0KCkgZnVuY3Rpb24KLStkbmwgICAgd2lsbCBiZSBpZ25vcmVkLiAgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzCi0rZG5sICAgICduZWVkLWZvcm1hdHN0cmluZy1tYWNyb3MnLCB0aGVuIEdOVSBnZXR0ZXh0IGltcGxlbWVudGF0aW9ucyB0aGF0IGRvbid0Ci0rZG5sICAgIHN1cHBvcnQgdGhlIElTTyBDIDk5IDxpbnR0eXBlcy5oPiBmb3JtYXRzdHJpbmcgbWFjcm9zIHdpbGwgYmUgaWdub3JlZC4KLStkbmwgSU5UTERJUiBpcyB1c2VkIHRvIGZpbmQgdGhlIGludGwgbGlicmFyaWVzLiAgSWYgZW1wdHksCi0rZG5sICAgIHRoZSB2YWx1ZSBgJCh0b3BfYnVpbGRkaXIpL2ludGwvJyBpcyB1c2VkLgotK2RubAotK2RubCBUaGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIG9uZSBvZiB0aHJlZSBjYXNlczoKLStkbmwgMSkgR05VIGdldHRleHQsIGFzIGluY2x1ZGVkIGluIHRoZSBpbnRsIHN1YmRpcmVjdG9yeSwgd2lsbCBiZSBjb21waWxlZAotK2RubCAgICBhbmQgdXNlZC4KLStkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCi0rZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCi0rZG5sIDIpIEdOVSBnZXR0ZXh0IGhhcyBiZWVuIGZvdW5kIGluIHRoZSBzeXN0ZW0ncyBDIGxpYnJhcnkuCi0rZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQotK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogLm1vIGFmdGVyIGluc3RhbGxhdGlvbiwgLmdtbyBpbiBzb3VyY2UgdHJlZQotK2RubCAzKSBObyBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYWx3YXlzIHVzZSBFbmdsaXNoIG1zZ2lkLgotK2RubCAgICBDYXRhbG9nIGZvcm1hdDogbm9uZQotK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogbm9uZQotK2RubCBJZiBJTlRMU1lNQk9MIGlzICdleHRlcm5hbCcsIG9ubHkgY2FzZXMgMiBhbmQgMyBjYW4gb2NjdXIuCi0rZG5sIFRoZSB1c2Ugb2YgLmdtbyBpcyBoaXN0b3JpY2FsIChpdCB3YXMgbmVlZGVkIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZQotK2RubCBHTlUgZm9ybWF0IGNhdGFsb2dzIHdoZW4gYnVpbGRpbmcgb24gYSBwbGF0Zm9ybSB3aXRoIGFuIFgvT3BlbiBnZXR0ZXh0KSwKLStkbmwgYnV0IHdlIGtlZXAgaXQgaW4gb3JkZXIgbm90IHRvIGZvcmNlIGlycmVsZXZhbnQgZmlsZW5hbWUgY2hhbmdlcyBvbiB0aGUKLStkbmwgbWFpbnRhaW5lcnMuCi0rZG5sCi0rQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUXSwKLStbCi0rICBkbmwgQXJndW1lbnQgY2hlY2tpbmcuCi0rICBpZmVsc2UoWyQxXSwgW10sICwgW2lmZWxzZShbJDFdLCBbZXh0ZXJuYWxdLCAsIFtpZmVsc2UoWyQxXSwgW25vLWxpYnRvb2xdLCAsIFtpZmVsc2UoWyQxXSwgW3VzZS1saWJ0b29sXSwgLAotKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCi0rXSldKV0pXSldKQotKyAgaWZlbHNlKFskMl0sIFtdLCAsIFtpZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCAsIFtpZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sICwKLSsgICAgW2VycnByaW50KFtFUlJPUjogaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgdG8gQU1fR05VX0dFVFRFWFQKLStdKV0pXSldKQotKyAgZGVmaW5lKGd0X2luY2x1ZGVkX2ludGwsIGlmZWxzZShbJDFdLCBbZXh0ZXJuYWxdLCBbbm9dLCBbeWVzXSkpCi0rICBkZWZpbmUoZ3RfbGlidG9vbF9zdWZmaXhfcHJlZml4LCBpZmVsc2UoWyQxXSwgW3VzZS1saWJ0b29sXSwgW2xdLCBbXSkpCi0rCi0rICBBQ19SRVFVSVJFKFtBTV9QT19TVUJESVJTXSlkbmwKLSsgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgQUNfUkVRVUlSRShbQU1fSU5UTF9TVUJESVJdKWRubAotKyAgXSkKLSsKLSsgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQotKwotKyAgZG5sIFNvbWV0aW1lcyBsaWJpbnRsIHJlcXVpcmVzIGxpYmljb252LCBzbyBmaXJzdCBzZWFyY2ggZm9yIGxpYmljb252LgotKyAgZG5sIElkZWFsbHkgd2Ugd291bGQgZG8gdGhpcyBzZWFyY2ggb25seSBhZnRlciB0aGUKLSsgIGRubCAgICAgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rICBkbmwgICAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliYyIgIT0gInllcyI7IHRoZW4KLSsgIGRubCB0ZXN0cy4gQnV0IGlmIGNvbmZpZ3VyZS5pbiBpbnZva2VzIEFNX0lDT05WIGFmdGVyIEFNX0dOVV9HRVRURVhUCi0rICBkbmwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd291bGQgbmVlZCB0byBjb250YWluIHRoZSBzYW1lIHNoZWxsIGNvZGUKLSsgIGRubCBhZ2Fpbiwgb3V0c2lkZSBhbnkgJ2lmJy4gVGhlcmUgYXJlIHR3byBzb2x1dGlvbnM6Ci0rICBkbmwgLSBJbnZva2UgQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFkgaGVyZSwgb3V0c2lkZSBhbnkgJ2lmJy4KLSsgIGRubCAtIENvbnRyb2wgdGhlIGV4cGFuc2lvbnMgaW4gbW9yZSBkZXRhaWwgdXNpbmcgQUNfUFJPVklERV9JRkVMU0UuCi0rICBkbmwgU2luY2UgQUNfUFJPVklERV9JRkVMU0UgaXMgb25seSBpbiBhdXRvY29uZiA+PSAyLjUyIGFuZCBub3QKLSsgIGRubCBkb2N1bWVudGVkLCB3ZSBhdm9pZCBpdC4KLSsgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWwotKyAgICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0pCi0rICBdKQotKwotKyAgZG5sIFNldCBVU0VfTkxTLgotKyAgQU1fTkxTCi0rCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9bm8KLSsgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9bm8KLSsgIF0pCi0rICBMSUJJTlRMPQotKyAgTFRMSUJJTlRMPQotKyAgUE9TVUI9Ci0rCi0rICBkbmwgSWYgd2UgdXNlIE5MUyBmaWd1cmUgb3V0IHdoYXQgbWV0aG9kCi0rICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgotKyAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9bm8KLSsgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZF0pCi0rICAgICAgQUNfQVJHX1dJVEgoaW5jbHVkZWQtZ2V0dGV4dCwKLSsgICAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHVzZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpbmNsdWRlZCBoZXJlXSwKLSsgICAgICAgIG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQ9JHdpdGh2YWwsCi0rICAgICAgICBubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0PW5vKQotKyAgICAgIEFDX01TR19SRVNVTFQoJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQpCi0rCi0rICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD0iJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiCi0rICAgICAgaWYgdGVzdCAiJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiICE9ICJ5ZXMiOyB0aGVuCi0rICAgIF0pCi0rICAgICAgICBkbmwgVXNlciBkb2VzIG5vdCBpbnNpc3Qgb24gdXNpbmcgR05VIE5MUyBsaWJyYXJ5LiAgRmlndXJlIG91dCB3aGF0Ci0rICAgICAgICBkbmwgdG8gdXNlLiAgSWYgR05VIGdldHRleHQgaXMgYXZhaWxhYmxlIHdlIHVzZSB0aGlzLiAgRWxzZSB3ZSBoYXZlCi0rICAgICAgICBkbmwgdG8gZmFsbCBiYWNrIHRvIEdOVSBOTFMgbGlicmFyeS4KLSsKLSsgICAgICAgIGRubCBBZGQgYSB2ZXJzaW9uIG51bWJlciB0byB0aGUgY2FjaGUgbWFjcm9zLgotKyAgICAgICAgZGVmaW5lKFtndF9hcGlfdmVyc2lvbl0sIGlmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwgMywgaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgMiwgMSkpKQotKyAgICAgICAgZGVmaW5lKFtndF9jdl9mdW5jX2dudWdldHRleHRfbGliY10sIFtndF9jdl9mdW5jX2dudWdldHRleHRdZ3RfYXBpX3ZlcnNpb25bX2xpYmNdKQotKyAgICAgICAgZGVmaW5lKFtndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bF0sIFtndF9jdl9mdW5jX2dudWdldHRleHRdZ3RfYXBpX3ZlcnNpb25bX2xpYmludGxdKQotKwotKyAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBHTlUgZ2V0dGV4dCBpbiBsaWJjXSwgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmMsCi0rICAgICAgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliaW50bC5oPgotK11pZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sCi0rWyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KLSsjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKG1ham9yKSAoKG1ham9yKSA9PSAwID8gMCA6IC0xKQotKyNlbmRpZgotK2NoYW5nZXF1b3RlKCwpZG5sCi0rdHlwZWRlZiBpbnQgYXJyYXkgWzIgKiAoX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04oMCkgPj0gMSkgLSAxXTsKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rXSwgW10pW2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLStleHRlcm4gaW50ICpfbmxfZG9tYWluX2JpbmRpbmdzO10sCi0rICAgICAgICAgICAgW2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOwotK3JldHVybiAoaW50KSBnZXR0ZXh0ICgiIildaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgWyArIChpbnQpIG5nZXR0ZXh0ICgiIiwgIiIsIDApXSwgW10pWyArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2RvbWFpbl9iaW5kaW5nc10sCi0rICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmM9eWVzLAotKyAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjPW5vKV0pCi0rCi0rICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmMiICE9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICAgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KLSsgICAgICAgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgLCBbCi0rICAgICAgICAgICAgQU1fSUNPTlZfTElOSwotKyAgICAgICAgICBdKQotKyAgICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJpbnRsIGFuZCBkZWZpbmUgTElCSU5UTCwgTFRMSUJJTlRMIGFuZCBJTkNJTlRMCi0rICAgICAgICAgIGRubCBhY2NvcmRpbmdseS4gRG9uJ3QgdXNlIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbaW50bF0sW2ljb252XSkKLSsgICAgICAgICAgZG5sIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgIi1saWNvbnYiIHRvIExJQklOVEwgYW5kIExUTElCSU5UTAotKyAgICAgICAgICBkbmwgZXZlbiBpZiBsaWJpY29udiBkb2Vzbid0IGV4aXN0LgotKyAgICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdKQotKyAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmludGxdLAotKyAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsLAotKyAgICAgICAgICAgW2d0X3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSsgICAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNJTlRMIgotKyAgICAgICAgICAgIGd0X3NhdmVfTElCUz0iJExJQlMiCi0rICAgICAgICAgICAgTElCUz0iJExJQlMgJExJQklOVEwiCi0rICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIGxpYmljb252LgotKyAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliaW50bC5oPgotK11pZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sCi0rWyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KLSsjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKG1ham9yKSAoKG1ham9yKSA9PSAwID8gMCA6IC0xKQotKyNlbmRpZgotK2NoYW5nZXF1b3RlKCwpZG5sCi0rdHlwZWRlZiBpbnQgYXJyYXkgWzIgKiAoX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04oMCkgPj0gMSkgLSAxXTsKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rXSwgW10pW2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLStleHRlcm4KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSsiQyIKLSsjZW5kaWYKLStjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzICgpO10sCi0rICAgICAgICAgICAgICBbYmluZHRleHRkb21haW4gKCIiLCAiIik7Ci0rcmV0dXJuIChpbnQpIGdldHRleHQgKCIiKV1pZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCBbICsgKGludCkgbmdldHRleHQgKCIiLCAiIiwgMCldLCBbXSlbICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgwKV0sCi0rICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bD15ZXMsCi0rICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bD1ubykKLSsgICAgICAgICAgICBkbmwgTm93IHNlZSB3aGV0aGVyIGxpYmludGwgZXhpc3RzIGFuZCBkZXBlbmRzIG9uIGxpYmljb252LgotKyAgICAgICAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCIgIT0geWVzICYmIHRlc3QgLW4gIiRMSUJJQ09OViI7IHRoZW4KLSsgICAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKLSsgICAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliaW50bC5oPgotK11pZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sCi0rWyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KLSsjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKG1ham9yKSAoKG1ham9yKSA9PSAwID8gMCA6IC0xKQotKyNlbmRpZgotK2NoYW5nZXF1b3RlKCwpZG5sCi0rdHlwZWRlZiBpbnQgYXJyYXkgWzIgKiAoX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04oMCkgPj0gMSkgLSAxXTsKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rXSwgW10pW2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLStleHRlcm4KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSsiQyIKLSsjZW5kaWYKLStjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzICgpO10sCi0rICAgICAgICAgICAgICAgIFtiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKLStyZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpXWlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIFsgKyAoaW50KSBuZ2V0dGV4dCAoIiIsICIiLCAwKV0sIFtdKVsgKyBfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKDApXSwKLSsgICAgICAgICAgICAgICBbTElCSU5UTD0iJExJQklOVEwgJExJQklDT05WIgotKyAgICAgICAgICAgICAgICBMVExJQklOVEw9IiRMVExJQklOVEwgJExUTElCSUNPTlYiCi0rICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcwotKyAgICAgICAgICAgICAgIF0pCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBDUFBGTEFHUz0iJGd0X3NhdmVfQ1BQRkxBR1MiCi0rICAgICAgICAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQotKyAgICAgICAgZmkKLSsKLSsgICAgICAgIGRubCBJZiBhbiBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkIEdOVSBnZXR0ZXh0KCkgaXMgZm91bmQsCi0rICAgICAgICBkbmwgdXNlIGl0LiAgQnV0IGlmIHRoaXMgbWFjcm8gaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCwgYW5kIEdOVQotKyAgICAgICAgZG5sIGdldHRleHQgaXMgYWxyZWFkeSBwcmVpbnN0YWxsZWQgaW4gbGliaW50bCwgd2UgdXBkYXRlIHRoaXMKLSsgICAgICAgIGRubCBsaWJpbnRsLiAgKENmLiB0aGUgaW5zdGFsbCBydWxlIGluIGludGwvTWFrZWZpbGUuaW4uKQotKyAgICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjIiA9ICJ5ZXMiIFwKLSsgICAgICAgICAgIHx8IHsgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIiA9ICJ5ZXMiIFwKLSsgICAgICAgICAgICAgICAgJiYgdGVzdCAiJFBBQ0tBR0UiICE9IGdldHRleHQtcnVudGltZSBcCi0rICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXRvb2xzOyB9OyB0aGVuCi0rICAgICAgICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD15ZXMKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgZG5sIFJlc2V0IHRoZSB2YWx1ZXMgc2V0IGJ5IHNlYXJjaGluZyBmb3IgbGliaW50bC4KLSsgICAgICAgICAgTElCSU5UTD0KLSsgICAgICAgICAgTFRMSUJJTlRMPQotKyAgICAgICAgICBJTkNJTlRMPQotKyAgICAgICAgZmkKLSsKLSsgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICAgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgIT0gInllcyI7IHRoZW4KLSsgICAgICAgICAgZG5sIEdOVSBnZXR0ZXh0IGlzIG5vdCBmb3VuZCBpbiB0aGUgQyBsaWJyYXJ5LgotKyAgICAgICAgICBkbmwgRmFsbCBiYWNrIG9uIGluY2x1ZGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCi0rICAgICAgICAgIG5sc19jdl91c2VfZ251X2dldHRleHQ9eWVzCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rCi0rICAgICAgaWYgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdXNlZCB0byBnZW5lcmF0ZSBHTlUgTkxTIGxpYnJhcnkuCi0rICAgICAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPXllcwotKyAgICAgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9eWVzCi0rICAgICAgICBMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5bXWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeFtdYSAkTElCSUNPTlYiCi0rICAgICAgICBMVExJQklOVEw9ImlmZWxzZShbJDNdLFtdLFwke3RvcF9idWlsZGRpcn0vaW50bCxbJDNdKS9saWJpbnRsLltdZ3RfbGlidG9vbF9zdWZmaXhfcHJlZml4W11hICRMVExJQklDT05WIgotKyAgICAgICAgTElCUz1gZWNobyAiICRMSUJTICIgfCBzZWQgLWUgJ3MvIC1saW50bCAvIC8nIC1lICdzL14gLy8nIC1lICdzLyAkLy8nYAotKyAgICAgIGZpCi0rCi0rICAgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIiBcCi0rICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdG8gdXNlIEdOVSBnZXR0ZXh0IHRvb2xzLgotKyAgICAgICAgQ0FUT0JKRVhUPS5nbW8KLSsgICAgICBmaQotKyAgICBdKQotKwotKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKLSsgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICBBQ19ERUZJTkUoRU5BQkxFX05MUywgMSwKLSsgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlIGxhbmd1YWdlCi0rICAgaXMgcmVxdWVzdGVkLl0pCi0rICAgIGVsc2UKLSsgICAgICBVU0VfTkxTPW5vCi0rICAgIGZpCi0rICBmaQotKwotKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBOTFNdKQotKyAgQUNfTVNHX1JFU1VMVChbJFVTRV9OTFNdKQotKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KLSsgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0aGUgZ2V0dGV4dCBmdW5jdGlvbiBjb21lcyBmcm9tXSkKLSsgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCIgPSAieWVzIjsgdGhlbgotKyAgICAgICAgZ3Rfc291cmNlPSJleHRlcm5hbCBsaWJpbnRsIgotKyAgICAgIGVsc2UKLSsgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKLSsgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKLSsgICAgZmkKLSsgICAgQUNfTVNHX1JFU1VMVChbJGd0X3NvdXJjZV0pCi0rICBmaQotKwotKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KLSsKLSsgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCIgPSAieWVzIjsgdGhlbgotKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmludGxdKQotKyAgICAgICAgQUNfTVNHX1JFU1VMVChbJExJQklOVExdKQotKyAgICAgICAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DSU5UTF0pCi0rICAgICAgZmkKLSsKLSsgICAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgcGFja2FnZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgICAgQUNfREVGSU5FKEhBVkVfR0VUVEVYVCwgMSwKLSsgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCi0rICAgICAgQUNfREVGSU5FKEhBVkVfRENHRVRURVhULCAxLAotKyAgICAgICBbRGVmaW5lIGlmIHRoZSBHTlUgZGNnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC5dKQotKyAgICBmaQotKwotKyAgICBkbmwgV2UgbmVlZCB0byBwcm9jZXNzIHRoZSBwby8gZGlyZWN0b3J5LgotKyAgICBQT1NVQj1wbwotKyAgZmkKLSsKLSsgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgZG5sIElmIHRoaXMgaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCB3ZSBoYXZlIHRvIHNldCBCVUlMRF9JTkNMVURFRF9MSUJJTlRMCi0rICAgIGRubCB0byAneWVzJyBiZWNhdXNlIHNvbWUgb2YgdGhlIHRlc3RzdWl0ZSByZXF1aXJlcyBpdC4KLSsgICAgaWYgdGVzdCAiJFBBQ0tBR0UiID0gZ2V0dGV4dC1ydW50aW1lIHx8IHRlc3QgIiRQQUNLQUdFIiA9IGdldHRleHQtdG9vbHM7IHRoZW4KLSsgICAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPXllcwotKyAgICBmaQotKwotKyAgICBkbmwgTWFrZSBhbGwgdmFyaWFibGVzIHdlIHVzZSBrbm93biB0byBhdXRvY29uZi4KLSsgICAgQUNfU1VCU1QoQlVJTERfSU5DTFVERURfTElCSU5UTCkKLSsgICAgQUNfU1VCU1QoVVNFX0lOQ0xVREVEX0xJQklOVEwpCi0rICAgIEFDX1NVQlNUKENBVE9CSkVYVCkKLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIGNvbmZpZ3VyZS5pbnMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIG5sc19jdl9oZWFkZXJfaW50bD0KLSsgICAgbmxzX2N2X2hlYWRlcl9saWJndD0KLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgREFUQURJUk5BTUU9c2hhcmUKLSsgICAgQUNfU1VCU1QoREFUQURJUk5BTUUpCi0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIElOU1RPQkpFWFQ9Lm1vCi0rICAgIEFDX1NVQlNUKElOU1RPQkpFWFQpCi0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIEdFTkNBVD1nZW5jYXQKLSsgICAgQUNfU1VCU1QoR0VOQ0FUKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBpZiB0ZXN0ICIkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0geWVzOyB0aGVuCi0rICAgICAgSU5UTE9CSlM9IlwkKEdFVFRPQkpTKSIKLSsgICAgZmkKLSsgICAgQUNfU1VCU1QoSU5UTE9CSlMpCi0rCi0rICAgIGRubCBFbmFibGUgbGlidG9vbCBzdXBwb3J0IGlmIHRoZSBzdXJyb3VuZGluZyBwYWNrYWdlIHdpc2hlcyBpdC4KLSsgICAgSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVg9Z3RfbGlidG9vbF9zdWZmaXhfcHJlZml4Ci0rICAgIEFDX1NVQlNUKElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYKQotKyAgXSkKLSsKLSsgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICBJTlRMTElCUz0iJExJQklOVEwiCi0rICBBQ19TVUJTVChJTlRMTElCUykKLSsKLSsgIGRubCBNYWtlIGFsbCBkb2N1bWVudGVkIHZhcmlhYmxlcyBrbm93biB0byBhdXRvY29uZi4KLSsgIEFDX1NVQlNUKExJQklOVEwpCi0rICBBQ19TVUJTVChMVExJQklOVEwpCi0rICBBQ19TVUJTVChQT1NVQikKLStdKQotKwotKwotK2RubCBDaGVja3MgZm9yIGFsbCBwcmVyZXF1aXNpdGVzIG9mIHRoZSBpbnRsIHN1YmRpcmVjdG9yeSwKLStkbmwgZXhjZXB0IGZvciBJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWCAoYW5kIHBvc3NpYmx5IExJQlRPT0wpLCBJTlRMT0JKUywKLStkbmwgICAgICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTCwgQlVJTERfSU5DTFVERURfTElCSU5UTC4KLStBQ19ERUZVTihbQU1fSU5UTF9TVUJESVJdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBTV9NS0lOU1RBTExESVJTXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19SQU5MSUJdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfSVNDX1BPU0lYXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0hFQURFUl9TVERDXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NfQ09OU1RdKWRubAotKyAgQUNfUkVRVUlSRShbYmhfQ19TSUdORURdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfVFlQRV9PRkZfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19UWVBFX1NJWkVfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX0xPTkdfTE9OR10pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9UWVBFX0xPTkdET1VCTEVdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9XQ0hBUl9UXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X1RZUEVfV0lOVF9UXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9TVERJTlRfSF0pCi0rICBBQ19SRVFVSVJFKFtndF9UWVBFX0lOVE1BWF9UXSkKLSsgIEFDX1JFUVVJUkUoW2d0X1BSSU5URl9QT1NJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19GVU5DX0FMTE9DQV0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19GVU5DX01NQVBdKWRubAotKyAgQUNfUkVRVUlSRShbam1fR0xJQkMyMV0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9JTlRESVYwXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX1RZUEVfVUlOVE1BWF9UXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X0hFQURFUl9JTlRUWVBFU19IXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X0lOVFRZUEVTX1BSSV0pZG5sCi0rICBBQ19SRVFVSVJFKFtnbF9YU0laRV0pZG5sCi0rCi0rICBBQ19DSEVDS19UWVBFKFtwdHJkaWZmX3RdLCAsCi0rICAgIFtBQ19ERUZJTkUoW3B0cmRpZmZfdF0sIFtsb25nXSwKLSsgICAgICAgW0RlZmluZSBhcyB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHN1YnRyYWN0aW5nIHR3byBwb2ludGVycywgaWYgdGhlIHN5c3RlbSBkb2Vzbid0IGRlZmluZSBpdC5dKQotKyAgICBdKQotKyAgQUNfQ0hFQ0tfSEVBREVSUyhbYXJnei5oIGxpbWl0cy5oIGxvY2FsZS5oIG5sX3R5cGVzLmggbWFsbG9jLmggc3RkZGVmLmggXAotK3N0ZGxpYi5oIHN0cmluZy5oIHVuaXN0ZC5oIHN5cy9wYXJhbS5oXSkKLSsgIEFDX0NIRUNLX0ZVTkNTKFthc3ByaW50ZiBmd3ByaW50ZiBnZXRjd2QgZ2V0ZWdpZCBnZXRldWlkIGdldGdpZCBnZXR1aWQgXAotK21lbXBjcHkgbXVubWFwIHB1dGVudiBzZXRlbnYgc2V0bG9jYWxlIHNucHJpbnRmIHN0cGNweSBzdHJjYXNlY21wIHN0cmR1cCBcCi0rc3RydG91bCB0c2VhcmNoIHdjc2xlbiBfX2FyZ3pfY291bnQgX19hcmd6X3N0cmluZ2lmeSBfX2FyZ3pfbmV4dCBcCi0rX19mc2V0bG9ja2luZ10pCi0rCi0rICBkbmwgVXNlIHRoZSBfc25wcmludGYgZnVuY3Rpb24gb25seSBpZiBpdCBpcyBkZWNsYXJlZCAoYmVjYXVzZSBvbiBOZXRCU0QgaXQKLSsgIGRubCBpcyBkZWZpbmVkIGFzIGEgd2VhayBhbGlhcyBvZiBzbnByaW50Zjsgd2UgcHJlZmVyIHRvIHVzZSB0aGUgbGF0dGVyKS4KLSsgIGd0X0NIRUNLX0RFQ0woX3NucHJpbnRmLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsgIGd0X0NIRUNLX0RFQ0woX3Nud3ByaW50ZiwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rCi0rICBkbmwgVXNlIHRoZSAqX3VubG9ja2VkIGZ1bmN0aW9ucyBvbmx5IGlmIHRoZXkgYXJlIGRlY2xhcmVkLgotKyAgZG5sIChiZWNhdXNlIHNvbWUgb2YgdGhlbSB3ZXJlIGRlZmluZWQgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBpbiBTb2xhcmlzCi0rICBkbmwgMi41LjEgYnV0IHdlcmUgcmVtb3ZlZCBpbiBTb2xhcmlzIDIuNiwgd2hlcmVhcyB3ZSB3YW50IGJpbmFyaWVzIGJ1aWx0Ci0rICBkbmwgb24gU29sYXJpcyAyLjUuMSB0byBydW4gb24gU29sYXJpcyAyLjYpLgotKyAgZG5sIERvbid0IHVzZSBBQ19DSEVDS19ERUNMUyBiZWNhdXNlIGl0IGlzbid0IHN1cHBvcnRlZCBpbiBhdXRvY29uZi0yLjEzLgotKyAgZ3RfQ0hFQ0tfREVDTChmZW9mX3VubG9ja2VkLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsgIGd0X0NIRUNLX0RFQ0woZmdldHNfdW5sb2NrZWQsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKyAgZ3RfQ0hFQ0tfREVDTChnZXRjX3VubG9ja2VkLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsKLSsgIGNhc2UgJGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4IGluCi0rICAgICp5ZXMpIEhBVkVfUE9TSVhfUFJJTlRGPTEgOzsKLSsgICAgKikgSEFWRV9QT1NJWF9QUklOVEY9MCA7OwotKyAgZXNhYwotKyAgQUNfU1VCU1QoW0hBVkVfUE9TSVhfUFJJTlRGXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9mdW5jX2FzcHJpbnRmIiA9IHllczsgdGhlbgotKyAgICBIQVZFX0FTUFJJTlRGPTEKLSsgIGVsc2UKLSsgICAgSEFWRV9BU1BSSU5URj0wCi0rICBmaQotKyAgQUNfU1VCU1QoW0hBVkVfQVNQUklOVEZdKQotKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfc25wcmludGYiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfU05QUklOVEY9MQotKyAgZWxzZQotKyAgICBIQVZFX1NOUFJJTlRGPTAKLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9TTlBSSU5URl0pCi0rICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY193cHJpbnRmIiA9IHllczsgdGhlbgotKyAgICBIQVZFX1dQUklOVEY9MQotKyAgZWxzZQotKyAgICBIQVZFX1dQUklOVEY9MAotKyAgZmkKLSsgIEFDX1NVQlNUKFtIQVZFX1dQUklOVEZdKQotKwotKyAgQU1fSUNPTlYKLSsgIEFNX0xBTkdJTkZPX0NPREVTRVQKLSsgIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9sb2NhbGVfaCA9IHllczsgdGhlbgotKyAgICBBTV9MQ19NRVNTQUdFUwotKyAgZmkKLSsKLSsgIGRubCBpbnRsL3BsdXJhbC5jIGlzIGdlbmVyYXRlZCBmcm9tIGludGwvcGx1cmFsLnkuIEl0IHJlcXVpcmVzIGJpc29uLAotKyAgZG5sIGJlY2F1c2UgcGx1cmFsLnkgdXNlcyBiaXNvbiBzcGVjaWZpYyBmZWF0dXJlcy4gSXQgcmVxdWlyZXMgYXQgbGVhc3QKLSsgIGRubCBiaXNvbi0xLjI2IGJlY2F1c2UgZWFybGllciB2ZXJzaW9ucyBnZW5lcmF0ZSBhIHBsdXJhbC5jIHRoYXQgZG9lc24ndAotKyAgZG5sIGNvbXBpbGUuCi0rICBkbmwgYmlzb24gaXMgb25seSBuZWVkZWQgZm9yIHRoZSBtYWludGFpbmVyICh3aG8gdG91Y2hlcyBwbHVyYWwueSkuIEJ1dCBpbgotKyAgZG5sIG9yZGVyIHRvIGF2b2lkIHNlcGFyYXRlIE1ha2VmaWxlcyBvciAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUsIHdlIHB1dAotKyAgZG5sIHRoZSBydWxlIGluIGdlbmVyYWwgTWFrZWZpbGUuIE5vdywgc29tZSBwZW9wbGUgY2FyZWxlc3NseSB0b3VjaCB0aGUKLSsgIGRubCBmaWxlcyBvciBoYXZlIGEgYnJva2VuICJtYWtlIiBwcm9ncmFtLCBoZW5jZSB0aGUgcGx1cmFsLmMgcnVsZSB3aWxsCi0rICBkbmwgc29tZXRpbWVzIGZpcmUuIFRvIGF2b2lkIGFuIGVycm9yLCBkZWZpbmVzIEJJU09OIHRvICI6IiBpZiBpdCBpcyBub3QKLSsgIGRubCBwcmVzZW50IG9yIHRvbyBvbGQuCi0rICBBQ19DSEVDS19QUk9HUyhbSU5UTEJJU09OXSwgW2Jpc29uXSkKLSsgIGlmIHRlc3QgLXogIiRJTlRMQklTT04iOyB0aGVuCi0rICAgIGFjX3ZlcmNfZmFpbD15ZXMKLSsgIGVsc2UKLSsgICAgZG5sIEZvdW5kIGl0LCBub3cgY2hlY2sgdGhlIHZlcnNpb24uCi0rICAgIEFDX01TR19DSEVDS0lORyhbdmVyc2lvbiBvZiBiaXNvbl0pCi0rY2hhbmdlcXVvdGUoPDwsPj4pZG5sCi0rICAgIGFjX3Byb2dfdmVyc2lvbj1gJElOVExCSVNPTiAtLXZlcnNpb24gMj4mMSB8IHNlZCAtbiAncy9eLipHTlUgQmlzb24uKiBcKFswLTldKlwuWzAtOS5dKlwpLiokL1wxL3AnYAotKyAgICBjYXNlICRhY19wcm9nX3ZlcnNpb24gaW4KLSsgICAgICAnJykgYWNfcHJvZ192ZXJzaW9uPSJ2LiA/Lj8/LCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKLSsgICAgICAxLjJbNi05XSogfCAxLlszLTldWzAtOV0qIHwgWzItOV0uKikKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rICAgICAgICAgYWNfcHJvZ192ZXJzaW9uPSIkYWNfcHJvZ192ZXJzaW9uLCBvayI7IGFjX3ZlcmNfZmFpbD1ubzs7Ci0rICAgICAgKikgYWNfcHJvZ192ZXJzaW9uPSIkYWNfcHJvZ192ZXJzaW9uLCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKLSsgICAgZXNhYwotKyAgICBBQ19NU0dfUkVTVUxUKFskYWNfcHJvZ192ZXJzaW9uXSkKLSsgIGZpCi0rICBpZiB0ZXN0ICRhY192ZXJjX2ZhaWwgPSB5ZXM7IHRoZW4KLSsgICAgSU5UTEJJU09OPToKLSsgIGZpCi0rXSkKLSsKLSsKLStkbmwgZ3RfQ0hFQ0tfREVDTChGVU5DLCBJTkNMVURFUykKLStkbmwgQ2hlY2sgd2hldGhlciBhIGZ1bmN0aW9uIGlzIGRlY2xhcmVkLgotK0FDX0RFRlVOKFtndF9DSEVDS19ERUNMXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAkMSBpcyBkZWNsYXJlZF0sIGFjX2N2X2hhdmVfZGVjbF8kMSwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFskMl0sIFsKLSsjaWZuZGVmICQxCi0rICBjaGFyICpwID0gKGNoYXIgKikgJDE7Ci0rI2VuZGlmCi0rXSwgYWNfY3ZfaGF2ZV9kZWNsXyQxPXllcywgYWNfY3ZfaGF2ZV9kZWNsXyQxPW5vKV0pCi0rICBpZiB0ZXN0ICRhY19jdl9oYXZlX2RlY2xfJDEgPSB5ZXM7IHRoZW4KLSsgICAgZ3RfdmFsdWU9MQotKyAgZWxzZQotKyAgICBndF92YWx1ZT0wCi0rICBmaQotKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtIQVZFX0RFQ0xfXXRyYW5zbGl0KCQxLCBbYS16XSwgW0EtWl0pLCBbJGd0X3ZhbHVlXSwKLSsgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgJDEnLCBhbmQgdG8gMCBpZiB5b3UgZG9uJ3QuXSkKLStdKQotKwotKwotK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbZ2V0dGV4dC12ZXJzaW9uXSkKLStBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfVkVSU0lPTl0sIFtdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9nbGliYzIxLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9nbGliYzIxLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODMzNjc1NDMyIC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyBnbGliYzIxLm00IHNlcmlhbCAyIChmaWxldXRpbHMtNC4xLjMsIGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFRlc3QgZm9yIHRoZSBHTlUgQyBMaWJyYXJ5LCB2ZXJzaW9uIDIuMSBvciBuZXdlci4KLSsjIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtqbV9HTElCQzIxXSwKLSsgIFsKLSsgICAgQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExpYnJhcnkgMi4xIG9yIG5ld2VyLAotKyAgICAgIGFjX2N2X2dudV9saWJyYXJ5XzJfMSwKLSsgICAgICBbQUNfRUdSRVBfQ1BQKFtMdWNreSBHTlUgdXNlcl0sCi0rCVsKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19HTlVfTElCUkFSWV9fCi0rICNpZiAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEpIHx8IChfX0dMSUJDX18gPiAyKQotKyAgTHVja3kgR05VIHVzZXIKLSsgI2VuZGlmCi0rI2VuZGlmCi0rCV0sCi0rCWFjX2N2X2dudV9saWJyYXJ5XzJfMT15ZXMsCi0rCWFjX2N2X2dudV9saWJyYXJ5XzJfMT1ubykKLSsgICAgICBdCi0rICAgICkKLSsgICAgQUNfU1VCU1QoR0xJQkMyMSkKLSsgICAgR0xJQkMyMT0iJGFjX2N2X2dudV9saWJyYXJ5XzJfMSIKLSsgIF0KLSspCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ljb252Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pY29udi5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjgzOTY3NDUyMCAtMDQwMAotQEAgLTAsMCArMSwxMDMgQEAKLSsjIGljb252Lm00IHNlcmlhbCBBTTQgKGdldHRleHQtMC4xMS4zKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldLAotK1sKLSsgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQotKwotKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKLSsgIGRubCBhY2NvcmRpbmdseS4KLSsgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbaWNvbnZdKQotK10pCi0rCi0rQUNfREVGVU4oW0FNX0lDT05WX0xJTktdLAotK1sKLSsgIGRubCBTb21lIHN5c3RlbXMgaGF2ZSBpY29udiBpbiBsaWJjLCBzb21lIGhhdmUgaXQgaW4gbGliaWNvbnYgKE9TRi8xIGFuZAotKyAgZG5sIHRob3NlIHdpdGggdGhlIHN0YW5kYWxvbmUgcG9ydGFibGUgR05VIGxpYmljb252IGluc3RhbGxlZCkuCi0rCi0rICBkbmwgU2VhcmNoIGZvciBsaWJpY29udiBhbmQgZGVmaW5lIExJQklDT05WLCBMVExJQklDT05WIGFuZCBJTkNJQ09OVgotKyAgZG5sIGFjY29yZGluZ2x5LgotKyAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldKQotKwotKyAgZG5sIEFkZCAkSU5DSUNPTlYgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCi0rICBkbmwgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGxpYmljb252IGFuZCBub3QgZGlzYWJsZWQgaXRzIHVzZQotKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliaWNvbnYtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuIFRoZSBmaXJzdAotKyAgZG5sIEFDX1RSWV9MSU5LIHdpbGwgdGhlbiBmYWlsLCB0aGUgc2Vjb25kIEFDX1RSWV9MSU5LIHdpbGwgc3VjY2VlZC4KLSsgIGFtX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSsgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lDT05WXSkKLSsKLSsgIEFDX0NBQ0hFX0NIRUNLKGZvciBpY29udiwgYW1fY3ZfZnVuY19pY29udiwgWwotKyAgICBhbV9jdl9mdW5jX2ljb252PSJubywgY29uc2lkZXIgaW5zdGFsbGluZyBHTlUgbGliaWNvbnYiCi0rICAgIGFtX2N2X2xpYl9pY29udj1ubwotKyAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxpY29udi5oPl0sCi0rICAgICAgW2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKLSsgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVMTCk7Ci0rICAgICAgIGljb252X2Nsb3NlKGNkKTtdLAotKyAgICAgIGFtX2N2X2Z1bmNfaWNvbnY9eWVzKQotKyAgICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgIT0geWVzOyB0aGVuCi0rICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCi0rICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aWNvbnYuaD5dLAotKyAgICAgICAgW2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKLSsgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKLSsgICAgICAgICBpY29udl9jbG9zZShjZCk7XSwKLSsgICAgICAgIGFtX2N2X2xpYl9pY29udj15ZXMKLSsgICAgICAgIGFtX2N2X2Z1bmNfaWNvbnY9eWVzKQotKyAgICAgIExJQlM9IiRhbV9zYXZlX0xJQlMiCi0rICAgIGZpCi0rICBdKQotKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0lDT05WLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udigpIGZ1bmN0aW9uLl0pCi0rICBmaQotKyAgaWYgdGVzdCAiJGFtX2N2X2xpYl9pY29udiIgPSB5ZXM7IHRoZW4KLSsgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmljb252XSkKLSsgICAgQUNfTVNHX1JFU1VMVChbJExJQklDT05WXSkKLSsgIGVsc2UKLSsgICAgZG5sIElmICRMSUJJQ09OViBkaWRuJ3QgbGVhZCB0byBhIHVzYWJsZSBsaWJyYXJ5LCB3ZSBkb24ndCBuZWVkICRJTkNJQ09OVgotKyAgICBkbmwgZWl0aGVyLgotKyAgICBDUFBGTEFHUz0iJGFtX3NhdmVfQ1BQRkxBR1MiCi0rICAgIExJQklDT05WPQotKyAgICBMVExJQklDT05WPQotKyAgZmkKLSsgIEFDX1NVQlNUKExJQklDT05WKQotKyAgQUNfU1VCU1QoTFRMSUJJQ09OVikKLStdKQotKwotK0FDX0RFRlVOKFtBTV9JQ09OVl0sCi0rWwotKyAgQU1fSUNPTlZfTElOSwotKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCi0rICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGljb252IGRlY2xhcmF0aW9uXSkKLSsgICAgQUNfQ0FDSEVfVkFMKGFtX2N2X3Byb3RvX2ljb252LCBbCi0rICAgICAgQUNfVFJZX0NPTVBJTEUoWwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aWNvbnYuaD4KLStleHRlcm4KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSsiQyIKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykKLStzaXplX3QgaWNvbnYgKGljb252X3QgY2QsIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7Ci0rI2Vsc2UKLStzaXplX3QgaWNvbnYoKTsKLSsjZW5kaWYKLStdLCBbXSwgYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iIiwgYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iY29uc3QiKQotKyAgICAgIGFtX2N2X3Byb3RvX2ljb252PSJleHRlcm4gc2l6ZV90IGljb252IChpY29udl90IGNkLCAkYW1fY3ZfcHJvdG9faWNvbnZfYXJnMSBjaGFyICogKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LCBjaGFyICogKm91dGJ1Ziwgc2l6ZV90ICpvdXRieXRlc2xlZnQpOyJdKQotKyAgICBhbV9jdl9wcm90b19pY29udj1gZWNobyAiWyRdYW1fY3ZfcHJvdG9faWNvbnYiIHwgdHIgLXMgJyAnIHwgc2VkIC1lICdzLyggLygvJ2AKLSsgICAgQUNfTVNHX1JFU1VMVChbJF17YWNfdDotCi0rICAgICAgICAgfVskXWFtX2N2X3Byb3RvX2ljb252KQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSUNPTlZfQ09OU1QsICRhbV9jdl9wcm90b19pY29udl9hcmcxLAotKyAgICAgIFtEZWZpbmUgYXMgY29uc3QgaWYgdGhlIGRlY2xhcmF0aW9uIG9mIGljb252KCkgbmVlZHMgY29uc3QuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50ZGl2MC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50ZGl2MC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg0NTY3MzYwOCAtMDQwMAotQEAgLTAsMCArMSw3MiBAQAotKyMgaW50ZGl2MC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbZ3RfSU5URElWMF0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFNJR0ZQRV0sCi0rICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlLAotKyAgICBbCi0rICAgICAgQUNfVFJZX1JVTihbCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSsKLStzdGF0aWMgdm9pZAotKyNpZmRlZiBfX2NwbHVzcGx1cwotK3NpZ2ZwZV9oYW5kbGVyIChpbnQgc2lnKQotKyNlbHNlCi0rc2lnZnBlX2hhbmRsZXIgKHNpZykgaW50IHNpZzsKLSsjZW5kaWYKLSt7Ci0rICAvKiBFeGl0IHdpdGggY29kZSAwIGlmIFNJR0ZQRSwgd2l0aCBjb2RlIDEgaWYgYW55IG90aGVyIHNpZ25hbC4gICovCi0rICBleGl0IChzaWcgIT0gU0lHRlBFKTsKLSt9Ci0rCi0raW50IHggPSAxOwotK2ludCB5ID0gMDsKLStpbnQgejsKLStpbnQgbmFuOwotKwotK2ludCBtYWluICgpCi0rewotKyAgc2lnbmFsIChTSUdGUEUsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsvKiBJUklYIGFuZCBBSVggKHdoZW4gInhsYyAtcWNoZWNrIiBpcyB1c2VkKSB5aWVsZCBzaWduYWwgU0lHVFJBUC4gICovCi0rI2lmIChkZWZpbmVkIChfX3NnaSkgfHwgZGVmaW5lZCAoX0FJWCkpICYmIGRlZmluZWQgKFNJR1RSQVApCi0rICBzaWduYWwgKFNJR1RSQVAsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsvKiBMaW51eC9TUEFSQyB5aWVsZHMgc2lnbmFsIFNJR0lMTC4gICovCi0rI2lmIGRlZmluZWQgKF9fc3BhcmNfXykgJiYgZGVmaW5lZCAoX19saW51eF9fKQotKyAgc2lnbmFsIChTSUdJTEwsIHNpZ2ZwZV9oYW5kbGVyKTsKLSsjZW5kaWYKLSsKLSsgIHogPSB4IC8geTsKLSsgIG5hbiA9IHkgLyB5OwotKyAgZXhpdCAoMSk7Ci0rfQotK10sIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPXllcywgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9bm8sCi0rICAgICAgICBbCi0rICAgICAgICAgICMgR3Vlc3MgYmFzZWQgb24gdGhlIENQVS4KLSsgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotKyAgICAgICAgICAgIGFscGhhKiB8IGlbMzQ1NjddODYgfCBtNjhrIHwgczM5MCopCi0rICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3NpbmcgeWVzIjs7Ci0rICAgICAgICAgICAgKikKLSsgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyBubyI7OwotKyAgICAgICAgICBlc2FjCi0rICAgICAgICBdKQotKyAgICBdKQotKyAgY2FzZSAiJGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlIiBpbgotKyAgICAqeWVzKSB2YWx1ZT0xOzsKLSsgICAgKikgdmFsdWU9MDs7Ci0rICBlc2FjCi0rICBBQ19ERUZJTkVfVU5RVU9URUQoSU5URElWMF9SQUlTRVNfU0lHRlBFLCAkdmFsdWUsCi0rICAgIFtEZWZpbmUgaWYgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBzaWduYWwgU0lHRlBFLl0pCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50bWF4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnRtYXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NTU2NzIwODggLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGludG1heC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLStkbmwgVGVzdCB3aGV0aGVyIHRoZSBzeXN0ZW0gaGFzIHRoZSAnaW50bWF4X3QnIHR5cGUsIGJ1dCBkb24ndCBhdHRlbXB0IHRvCi0rZG5sIGZpbmQgYSByZXBsYWNlbWVudCBpZiBpdCBpcyBsYWNraW5nLgotKwotK0FDX0RFRlVOKFtndF9UWVBFX0lOVE1BWF9UXSwKLStbCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgQUNfQ0FDSEVfQ0hFQ0soZm9yIGludG1heF90LCBndF9jdl9jX2ludG1heF90LAotKyAgICBbQUNfVFJZX0NPTVBJTEUoWwotKyNpbmNsdWRlIDxzdGRkZWYuaD4gCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpZiBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWYgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWAotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgotK10sIFtpbnRtYXhfdCB4ID0gLTE7XSwgZ3RfY3ZfY19pbnRtYXhfdD15ZXMsIGd0X2N2X2NfaW50bWF4X3Q9bm8pXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2NfaW50bWF4X3QgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfSU5UTUFYX1QsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ludG1heF90JyB0eXBlIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludHR5cGVzX2gubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludHR5cGVzX2gubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44Njg2NzAxMTIgLTA0MDAKLUBAIC0wLDAgKzEsMjggQEAKLSsjIGludHR5cGVzX2gubTQgc2VyaWFsIDUgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMsCi0rIyBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4KLSsKLStBQ19ERUZVTihbam1fQUNfSEVBREVSX0lOVFRZUEVTX0hdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgaW50dHlwZXMuaF0sIGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oLAotKyAgW0FDX1RSWV9DT01QSUxFKAotKyAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPl0sCi0rICAgIFt1aW50bWF4X3QgaSA9ICh1aW50bWF4X3QpIC0xO10sCi0rICAgIGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oPXllcywKLSsgICAgam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2g9bm8pXSkKLSsgIGlmIHRlc3QgJGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cywgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sCi0rICAgICAgIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuIF0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludHR5cGVzLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnR0eXBlcy5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg2MTY3MTE3NiAtMDQwMAotQEAgLTAsMCArMSwyNyBAQAotKyMgaW50dHlwZXMubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMS40KQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfSU5UVFlQRVNfSCBpZiA8aW50dHlwZXMuaD4gZXhpc3RzIGFuZCBkb2Vzbid0IGNsYXNoIHdpdGgKLSsjIDxzeXMvdHlwZXMuaD4uCi0rCi0rQUNfREVGVU4oW2d0X0hFQURFUl9JTlRUWVBFU19IXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGludHR5cGVzLmhdLCBndF9jdl9oZWFkZXJfaW50dHlwZXNfaCwKLSsgIFsKLSsgICAgQUNfVFJZX0NPTVBJTEUoCi0rICAgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD5dLAotKyAgICAgIFtdLCBndF9jdl9oZWFkZXJfaW50dHlwZXNfaD15ZXMsIGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oPW5vKQotKyAgXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0lOVFRZUEVTX0gsIDEsCi0rICAgICAgW0RlZmluZSBpZiA8aW50dHlwZXMuaD4gZXhpc3RzIGFuZCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPi5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnR0eXBlcy1wcmkubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludHR5cGVzLXByaS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg3NDY2OTIwMCAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgaW50dHlwZXMtcHJpLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTEuNCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rIyBEZWZpbmUgUFJJX01BQ1JPU19CUk9LRU4gaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZGVmaW5lcyB0aGUgUFJJKgotKyMgbWFjcm9zIHRvIG5vbi1zdHJpbmcgdmFsdWVzLiAgVGhpcyBpcyB0aGUgY2FzZSBvbiBBSVggNC4zLjMuCi0rCi0rQUNfREVGVU4oW2d0X0lOVFRZUEVTX1BSSV0sCi0rWwotKyAgQUNfUkVRVUlSRShbZ3RfSEVBREVSX0lOVFRZUEVTX0hdKQotKyAgaWYgdGVzdCAkZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSB5ZXM7IHRoZW4KLSsgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGludHR5cGVzLmggUFJJeE5OIG1hY3JvcyBhcmUgYnJva2VuXSwKLSsgICAgICBndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuLAotKyAgICAgIFsKLSsgICAgICAgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjaWZkZWYgUFJJZDMyCi0rY2hhciAqcCA9IFBSSWQzMjsKLSsjZW5kaWYKLStdLCBbXSwgZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbj1ubywgZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbj15ZXMpCi0rICAgICAgXSkKLSsgIGZpCi0rICBpZiB0ZXN0ICIkZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbiIgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKFBSSV9NQUNST1NfQlJPS0VOLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZGVmaW5lcyB1bnVzYWJsZSBQUkkqIG1hY3Jvcy5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pc2MtcG9zaXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2lzYy1wb3NpeC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg4NTY2NzUyOCAtMDQwMAotQEAgLTAsMCArMSwyNiBAQAotKyMgaXNjLXBvc2l4Lm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTEuMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLSsjIFRoaXMgZmlsZSBpcyBub3QgbmVlZGVkIHdpdGggYXV0b2NvbmYtMi41MyBhbmQgbmV3ZXIuICBSZW1vdmUgaXQgaW4gMjAwNS4KLSsKLSsjIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb25lIGluIGF1dG9jb25mLgotKyMgQ3VycmVudGx5IHRoaXMgbWFjcm8gc2hvdWxkIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUgYXV0b2NvbmYgbWFjcm8KLSsjIGJlY2F1c2UgZ2V0dGV4dCdzIGdldHRleHQubTQgKGRpc3RyaWJ1dGVkIGluIHRoZSBhdXRvbWFrZSBwYWNrYWdlKQotKyMgc3RpbGwgdXNlcyBpdC4gIE90aGVyd2lzZSwgdGhlIHVzZSBpbiBnZXR0ZXh0Lm00IG1ha2VzIGF1dG9oZWFkZXIKLSsjIGdpdmUgdGhlc2UgZGlhZ25vc3RpY3M6Ci0rIyAgIGNvbmZpZ3VyZS5pbjo1NTY6IEFDX1RSWV9DT01QSUxFIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKyMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfUlVOIHdhcyBjYWxsZWQgYmVmb3JlIEFDX0lTQ19QT1NJWAotKwotK3VuZGVmaW5lKFtBQ19JU0NfUE9TSVhdKQotKwotK0FDX0RFRlVOKFtBQ19JU0NfUE9TSVhdLAotKyAgWwotKyAgICBkbmwgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvYnNvbGVzY2VudCBBQ19JU0NfUE9TSVgga2x1ZGdlLgotKyAgICBBQ19DSEVDS19MSUIoY3Bvc2l4LCBzdHJlcnJvciwgW0xJQlM9IiRMSUJTIC1sY3Bvc2l4Il0pCi0rICBdCi0rKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9sY21lc3NhZ2UubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xjbWVzc2FnZS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjkwMjY2NDk0NCAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgbGNtZXNzYWdlLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotKwotKyMgQ2hlY2sgd2hldGhlciBMQ19NRVNTQUdFUyBpcyBhdmFpbGFibGUgaW4gPGxvY2FsZS5oPi4KLSsKLStBQ19ERUZVTihbQU1fTENfTUVTU0FHRVNdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgTENfTUVTU0FHRVNdLCBhbV9jdl92YWxfTENfTUVTU0FHRVMsCi0rICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxvY2FsZS5oPl0sIFtyZXR1cm4gTENfTUVTU0FHRVNdLAotKyAgICAgICBhbV9jdl92YWxfTENfTUVTU0FHRVM9eWVzLCBhbV9jdl92YWxfTENfTUVTU0FHRVM9bm8pXSkKLSsgIGlmIHRlc3QgJGFtX2N2X3ZhbF9MQ19NRVNTQUdFUyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9MQ19NRVNTQUdFUywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdXIgPGxvY2FsZS5oPiBmaWxlIGRlZmluZXMgTENfTUVTU0FHRVMuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGliLWxkLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9saWItbGQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45MDg2NjQwMzIgLTA0MDAKLUBAIC0wLDAgKzEsMTEyIEBACi0rIyBsaWItbGQubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMykKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgU3Vicm91dGluZXMgb2YgbGlidG9vbC5tNCwKLStkbmwgd2l0aCByZXBsYWNlbWVudHMgcy9BQ18vQUNfTElCLyBhbmQgcy9sdF9jdi9hY2xfY3YvIHRvIGF2b2lkIGNvbGxpc2lvbgotK2RubCB3aXRoIGxpYnRvb2wubTQuCi0rCi0rZG5sIEZyb20gbGlidG9vbC0xLjQuIFNldHMgdGhlIHZhcmlhYmxlIHdpdGhfZ251X2xkIHRvIHllcyBvciBuby4KLStBQ19ERUZVTihbQUNfTElCX1BST0dfTERfR05VXSwKLStbQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkXSwgYWNsX2N2X3Byb2dfZ251X2xkLAotK1sjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZCdzIG9ubHkgYWNjZXB0IC12LgotK2Nhc2UgYCRMRCAtdiAyPiYxIDwvZGV2L251bGxgIGluCi0rKkdOVSogfCAqJ3dpdGggQkZEJyopCi0rICBhY2xfY3ZfcHJvZ19nbnVfbGQ9eWVzIDs7Ci0rKikKLSsgIGFjbF9jdl9wcm9nX2dudV9sZD1ubyA7OwotK2VzYWNdKQotK3dpdGhfZ251X2xkPSRhY2xfY3ZfcHJvZ19nbnVfbGQKLStdKQotKwotK2RubCBGcm9tIGxpYnRvb2wtMS40LiBTZXRzIHRoZSB2YXJpYWJsZSBMRC4KLStBQ19ERUZVTihbQUNfTElCX1BST0dfTERdLAotK1tBQ19BUkdfV0lUSChnbnUtbGQsCi0rWyAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXV0sCi0rdGVzdCAiJHdpdGh2YWwiID0gbm8gfHwgd2l0aF9nbnVfbGQ9eWVzLCB3aXRoX2dudV9sZD1ubykKLStBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKLStBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgotKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCi0rICBlY2hvICIjISAvYmluL3NoIiA+Y29uZiQkLnNoCi0rICBlY2hvICAiZXhpdCAwIiAgID4+Y29uZiQkLnNoCi0rICBjaG1vZCAreCBjb25mJCQuc2gKLSsgIGlmIChQQVRIPSIvbm9uZXhpc3RlbnQ7LiI7IGNvbmYkJC5zaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgIFBBVEhfU0VQQVJBVE9SPSc7JwotKyAgZWxzZQotKyAgICBQQVRIX1NFUEFSQVRPUj06Ci0rICBmaQotKyAgcm0gLWYgY29uZiQkLnNoCi0rZmkKLSthY19wcm9nPWxkCi0raWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGQgdXNlZCBieSBHQ0NdKQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KikKLSsgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndwotKyAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjUgfCB0ciAtZCAnXDAxNSdgIDs7Ci0rICAqKQotKyAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7Ci0rICBlc2FjCi0rICBjYXNlICRhY19wcm9nIGluCi0rICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgotKyAgICBbW1xcL10qIHwgW0EtWmEtel06W1xcL10qKV0KLSsgICAgICBbcmVfZGlyZWx0PScvW14vXVteL10qL1wuXC4vJ10KLSsgICAgICAjIENhbm9uaWNhbGl6ZSB0aGUgcGF0aCBvZiBsZAotKyAgICAgIGFjX3Byb2c9YGVjaG8gJGFjX3Byb2d8IHNlZCAncyVcXFxcJS8lZydgCi0rICAgICAgd2hpbGUgZWNobyAkYWNfcHJvZyB8IGdyZXAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCi0rCWFjX3Byb2c9YGVjaG8gJGFjX3Byb2d8IHNlZCAicyUkcmVfZGlyZWx0JS8lImAKLSsgICAgICBkb25lCi0rICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCi0rICAgICAgOzsKLSsgICIiKQotKyAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KLSsgICAgYWNfcHJvZz1sZAotKyAgICA7OwotKyAgKikKLSsgICAgIyBJZiBpdCBpcyByZWxhdGl2ZSwgdGhlbiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBsZCBpbiBQQVRILgotKyAgICB3aXRoX2dudV9sZD11bmtub3duCi0rICAgIDs7Ci0rICBlc2FjCi0rZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQotK2Vsc2UKLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIG5vbi1HTlUgbGRdKQotK2ZpCi0rQUNfQ0FDSEVfVkFMKGFjbF9jdl9wYXRoX0xELAotK1tpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCi0rICBJRlM9IiR7SUZTPSAJfSI7IGFjX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30ke1BBVEhfU0VQQVJBVE9SLTp9IgotKyAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSsgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCi0rICAgICAgYWNsX2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCi0rICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uLAotKyAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGQncyBvbmx5IGFjY2VwdCAtdi4KLSsgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KLSsgICAgICBjYXNlIGAiJGFjbF9jdl9wYXRoX0xEIiAtdiAyPiYxIDwgL2Rldi9udWxsYCBpbgotKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQotKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrIDs7Ci0rICAgICAgKikKLSsJdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsgOzsKLSsgICAgICBlc2FjCi0rICAgIGZpCi0rICBkb25lCi0rICBJRlM9IiRhY19zYXZlX2lmcyIKLStlbHNlCi0rICBhY2xfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLStmaV0pCi0rTEQ9IiRhY2xfY3ZfcGF0aF9MRCIKLStpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCi0rICBBQ19NU0dfUkVTVUxUKCRMRCkKLStlbHNlCi0rICBBQ19NU0dfUkVTVUxUKG5vKQotK2ZpCi0rdGVzdCAteiAiJExEIiAmJiBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIXSkKLStBQ19MSUJfUFJPR19MRF9HTlUKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9saWItbGluay5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbGliLWxpbmsubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45MTQ2NjMxMjAgLTA0MDAKLUBAIC0wLDAgKzEsNTUxIEBACi0rIyBsaWItbGluay5tNCBzZXJpYWwgNCAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStkbmwgQUNfTElCX0xJTktGTEFHUyhuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAotK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KLStkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9IGFuZCBMVExJQiR7TkFNRX0gdmFyaWFibGVzIGFuZAotK2RubCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUuCi0rQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQotKyAgZGVmaW5lKFtOYW1lXSxbdHJhbnNsaXQoWyQxXSxbLi8tXSwgW19fX10pXSkKLSsgIGRlZmluZShbTkFNRV0sW3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQotKyAgQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBsaW5rIHdpdGggbGliW10kMV0sIFthY19jdl9saWJbXU5hbWVbXV9saWJzXSwgWwotKyAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKLSsgICAgYWNfY3ZfbGliW11OYW1lW11fbGlicz0iJExJQltdTkFNRSIKLSsgICAgYWNfY3ZfbGliW11OYW1lW11fbHRsaWJzPSIkTFRMSUJbXU5BTUUiCi0rICAgIGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzPSIkSU5DW11OQU1FIgotKyAgXSkKLSsgIExJQltdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2xpYnMiCi0rICBMVExJQltdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicyIKLSsgIElOQ1tdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzIgotKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCi0rICBBQ19TVUJTVChbTElCXU5BTUUpCi0rICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKLSsgIGRubCBBbHNvIHNldCBIQVZFX0xJQltdTkFNRSBzbyB0aGF0IEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gcmV1c2UgdGhlCi0rICBkbmwgcmVzdWx0cyBvZiB0aGlzIHNlYXJjaCB3aGVuIHRoaXMgbGlicmFyeSBhcHBlYXJzIGFzIGEgZGVwZW5kZW5jeS4KLSsgIEhBVkVfTElCW11OQU1FPXllcwotKyAgdW5kZWZpbmUoW05hbWVdKQotKyAgdW5kZWZpbmUoW05BTUVdKQotK10pCi0rCi0rZG5sIEFDX0xJQl9IQVZFX0xJTktGTEFHUyhuYW1lLCBkZXBlbmRlbmNpZXMsIGluY2x1ZGVzLCB0ZXN0Y29kZSkKLStkbmwgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQKLStkbmwgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCB0b2dldGhlciB3aXRoIHRoZSBzcGVjaWZpZWQgaW5jbHVkZSBmaWxlcyBhbmQKLStkbmwgdGhlIGFiaWxpdHkgdG8gY29tcGlsZSBhbmQgbGluayB0aGUgc3BlY2lmaWVkIHRlc3Rjb2RlLiBJZiBmb3VuZCwgaXQKLStkbmwgc2V0cyBhbmQgQUNfU1VCU1RzIEhBVkVfTElCJHtOQU1FfT15ZXMgYW5kIHRoZSBMSUIke05BTUV9IGFuZAotK2RubCBMVExJQiR7TkFNRX0gdmFyaWFibGVzIGFuZCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUsIGFuZAotK2RubCAjZGVmaW5lcyBIQVZFX0xJQiR7TkFNRX0gdG8gMS4gT3RoZXJ3aXNlLCBpdCBzZXRzIGFuZCBBQ19TVUJTVHMKLStkbmwgSEFWRV9MSUIke05BTUV9PW5vIGFuZCBMSUIke05BTUV9IGFuZCBMVExJQiR7TkFNRX0gdG8gZW1wdHkuCi0rQUNfREVGVU4oW0FDX0xJQl9IQVZFX0xJTktGTEFHU10sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCi0rICBkZWZpbmUoW05hbWVdLFt0cmFuc2xpdChbJDFdLFsuLy1dLCBbX19fXSldKQotKyAgZGVmaW5lKFtOQU1FXSxbdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19dKV0pCi0rCi0rICBkbmwgU2VhcmNoIGZvciBsaWJbXU5hbWUgYW5kIGRlZmluZSBMSUJbXU5BTUUsIExUTElCW11OQU1FIGFuZCBJTkNbXU5BTUUKLSsgIGRubCBhY2NvcmRpbmdseS4KLSsgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbJDFdLCBbJDJdKQotKwotKyAgZG5sIEFkZCAkSU5DW11OQU1FIHRvIENQUEZMQUdTIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzLAotKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJbXU5hbWUgYW5kIG5vdCBkaXNhYmxlZCBpdHMgdXNlCi0rICBkbmwgdmlhIC0td2l0aG91dC1saWJbXU5hbWUtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuCi0rICBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNdTkFNRSkKLSsKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbGliW10kMV0sIFthY19jdl9saWJbXU5hbWVdLCBbCi0rICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0rICAgIExJQlM9IiRMSUJTICRMSUJbXU5BTUUiCi0rICAgIEFDX1RSWV9MSU5LKFskM10sIFskNF0sIFthY19jdl9saWJbXU5hbWU9eWVzXSwgW2FjX2N2X2xpYltdTmFtZT1ub10pCi0rICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0rICBdKQotKyAgaWYgdGVzdCAiJGFjX2N2X2xpYltdTmFtZSIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9MSUJbXU5BTUU9eWVzCi0rICAgIEFDX0RFRklORShbSEFWRV9MSUJdTkFNRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJDEgbGlicmFyeS5dKQotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBsaW5rIHdpdGggbGliW10kMV0pCi0rICAgIEFDX01TR19SRVNVTFQoWyRMSUJbXU5BTUVdKQotKyAgZWxzZQotKyAgICBIQVZFX0xJQltdTkFNRT1ubwotKyAgICBkbmwgSWYgJExJQltdTkFNRSBkaWRuJ3QgbGVhZCB0byBhIHVzYWJsZSBsaWJyYXJ5LCB3ZSBkb24ndCBuZWVkCi0rICAgIGRubCAkSU5DW11OQU1FIGVpdGhlci4KLSsgICAgQ1BQRkxBR1M9IiRhY19zYXZlX0NQUEZMQUdTIgotKyAgICBMSUJbXU5BTUU9Ci0rICAgIExUTElCW11OQU1FPQotKyAgZmkKLSsgIEFDX1NVQlNUKFtIQVZFX0xJQl1OQU1FKQotKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQotKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCi0rICB1bmRlZmluZShbTmFtZV0pCi0rICB1bmRlZmluZShbTkFNRV0pCi0rXSkKLSsKLStkbmwgRGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybSBkZXBlbmRlbnQgcGFyYW1ldGVycyBuZWVkZWQgdG8gdXNlIHJwYXRoOgotK2RubCBsaWJleHQsIHNobGliZXh0LCBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLAotK2RubCBoYXJkY29kZV9kaXJlY3QsIGhhcmRjb2RlX21pbnVzX0wuCi0rQUNfREVGVU4oW0FDX0xJQl9SUEFUSF0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pICAgICAgICAgICAgICAgIGRubCB3ZSB1c2UgJENDLCAkR0NDLCAkTERGTEFHUwotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BST0dfTERdKSAgICAgICAgICAgIGRubCB3ZSB1c2UgJExELCAkd2l0aF9nbnVfbGQKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkgICAgICAgICBkbmwgd2UgdXNlICRob3N0Ci0rICBBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJUl9ERUZBVUxUXSkgZG5sIHdlIHVzZSAkYWNfYXV4X2RpcgotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzaGFyZWQgbGlicmFyeSBydW4gcGF0aCBvcmlnaW5dLCBhY2xfY3ZfcnBhdGgsIFsKLSsgICAgQ0M9IiRDQyIgR0NDPSIkR0NDIiBMREZMQUdTPSIkTERGTEFHUyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIgXAotKyAgICAke0NPTkZJR19TSEVMTC0vYmluL3NofSAiJGFjX2F1eF9kaXIvY29uZmlnLnJwYXRoIiAiJGhvc3QiID4gY29uZnRlc3Quc2gKLSsgICAgLiAuL2NvbmZ0ZXN0LnNoCi0rICAgIHJtIC1mIC4vY29uZnRlc3Quc2gKLSsgICAgYWNsX2N2X3JwYXRoPWRvbmUKLSsgIF0pCi0rICB3bD0iJGFjbF9jdl93bCIKLSsgIGxpYmV4dD0iJGFjbF9jdl9saWJleHQiCi0rICBzaGxpYmV4dD0iJGFjbF9jdl9zaGxpYmV4dCIKLSsgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRhY2xfY3ZfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKLSsgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRhY2xfY3ZfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKLSsgIGhhcmRjb2RlX2RpcmVjdD0iJGFjbF9jdl9oYXJkY29kZV9kaXJlY3QiCi0rICBoYXJkY29kZV9taW51c19MPSIkYWNsX2N2X2hhcmRjb2RlX21pbnVzX0wiCi0rICBkbmwgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgcnBhdGggaGFuZGxpbmcgYXQgYWxsLgotKyAgQUNfQVJHX0VOQUJMRShycGF0aCwKLSsgICAgWyAgLS1kaXNhYmxlLXJwYXRoICAgICAgICAgZG8gbm90IGhhcmRjb2RlIHJ1bnRpbWUgbGlicmFyeSBwYXRoc10sCi0rICAgIDosIGVuYWJsZV9ycGF0aD15ZXMpCi0rXSkKLSsKLStkbmwgQUNfTElCX0xJTktGTEFHU19CT0RZKG5hbWUgWywgZGVwZW5kZW5jaWVzXSkgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kCi0rZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgotK2RubCBTZXRzIHRoZSBMSUIke05BTUV9LCBMVExJQiR7TkFNRX0gYW5kIElOQyR7TkFNRX0gdmFyaWFibGVzLgotK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0JPRFldLAotK1sKLSsgIGRlZmluZShbTkFNRV0sW3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQotKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCi0rICB1c2VfYWRkaXRpb25hbD15ZXMKLSsgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCi0rICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCi0rICBdKQotKyAgQUNfTElCX0FSR19XSVRIKFtsaWIkMS1wcmVmaXhdLAotK1sgIC0td2l0aC1saWIkMS1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliJDEgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLSsgIC0td2l0aG91dC1saWIkMS1wcmVmaXggICAgIGRvbid0IHNlYXJjaCBmb3IgbGliJDEgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXSwKLStbCi0rICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgotKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCi0rICAgIGVsc2UKLSsgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgICAgICAgXSkKLSsgICAgICBlbHNlCi0rICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCi0rICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvbGliIgotKyAgICAgIGZpCi0rICAgIGZpCi0rXSkKLSsgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgYW5kIGl0cyBkZXBlbmRlbmNpZXMgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZAotKyAgZG5sICRMREZMQUdTLiBVc2luZyBicmVhZHRoLWZpcnN0LXNlYWNoLgotKyAgTElCW11OQU1FPQotKyAgTFRMSUJbXU5BTUU9Ci0rICBJTkNbXU5BTUU9Ci0rICBycGF0aGRpcnM9Ci0rICBsdHJwYXRoZGlycz0KLSsgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KLSsgIG5hbWVzX25leHRfcm91bmQ9JyQxICQyJwotKyAgd2hpbGUgdGVzdCAtbiAiJG5hbWVzX25leHRfcm91bmQiOyBkbwotKyAgICBuYW1lc190aGlzX3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCIKLSsgICAgbmFtZXNfbmV4dF9yb3VuZD0KLSsgICAgZm9yIG5hbWUgaW4gJG5hbWVzX3RoaXNfcm91bmQ7IGRvCi0rICAgICAgYWxyZWFkeV9oYW5kbGVkPQotKyAgICAgIGZvciBuIGluICRuYW1lc19hbHJlYWR5X2hhbmRsZWQ7IGRvCi0rICAgICAgICBpZiB0ZXN0ICIkbiIgPSAiJG5hbWUiOyB0aGVuCi0rICAgICAgICAgIGFscmVhZHlfaGFuZGxlZD15ZXMKLSsgICAgICAgICAgYnJlYWsKLSsgICAgICAgIGZpCi0rICAgICAgZG9uZQotKyAgICAgIGlmIHRlc3QgLXogIiRhbHJlYWR5X2hhbmRsZWQiOyB0aGVuCi0rICAgICAgICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9IiRuYW1lc19hbHJlYWR5X2hhbmRsZWQgJG5hbWUiCi0rICAgICAgICBkbmwgU2VlIGlmIGl0IHdhcyBhbHJlYWR5IGxvY2F0ZWQgYnkgYW4gZWFybGllciBBQ19MSUJfTElOS0ZMQUdTCi0rICAgICAgICBkbmwgb3IgQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbGwuCi0rICAgICAgICB1cHBlcm5hbWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLXxBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX3wnYAotKyAgICAgICAgZXZhbCB2YWx1ZT1cIlwkSEFWRV9MSUIkdXBwZXJuYW1lXCIKLSsgICAgICAgIGlmIHRlc3QgLW4gIiR2YWx1ZSI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgotKyAgICAgICAgICAgIGV2YWwgdmFsdWU9XCJcJExJQiR1cHBlcm5hbWVcIgotKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kdmFsdWUiCi0rICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTFRMSUIkdXBwZXJuYW1lXCIKLSsgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9JHZhbHVlIgotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZG5sIEFuIGVhcmxpZXIgY2FsbCB0byBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgaGFzIGRldGVybWluZWQKLSsgICAgICAgICAgICBkbmwgdGhhdCB0aGlzIGxpYnJhcnkgZG9lc24ndCBleGlzdC4gU28ganVzdCBkcm9wIGl0LgotKyAgICAgICAgICAgIDoKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBsaWIkbmFtZSBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kICRMREZMQUdTCi0rICAgICAgICAgIGRubCBhbmQgdGhlIGFscmVhZHkgY29uc3RydWN0ZWQgJExJQk5BTUUvJExUTElCTkFNRS4KLSsgICAgICAgICAgZm91bmRfZGlyPQotKyAgICAgICAgICBmb3VuZF9sYT0KLSsgICAgICAgICAgZm91bmRfc289Ci0rICAgICAgICAgIGZvdW5kX2E9Ci0rICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1mICIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJHNobGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgZm91bmRfZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICBmb3VuZF9zbz0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCIKLSsgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSIKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRsaWJleHQiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJGxpYmV4dCIKLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgotKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KLSsgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICBjYXNlICIkeCIgaW4KLSsgICAgICAgICAgICAgICAgLUwqKQotKyAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCR4IiB8IHNlZCAtZSAncy9eWC1MLy8nYAotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYmV4dCIgJiYgdGVzdCAtZiAiJGRpci9saWIkbmFtZS4kc2hsaWJleHQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCi0rICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci9saWIkbmFtZS4kc2hsaWJleHQiCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci9saWIkbmFtZS5sYSIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci9saWIkbmFtZS4kbGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvbGliJG5hbWUuJGxpYmV4dCIKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci9saWIkbmFtZS5sYSIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgotKyAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBkb25lCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICBkbmwgRm91bmQgdGhlIGxpYnJhcnkuCi0rICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKLSsgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX3NvIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzaGFyZWQgbGlicmFyeS4gV2UgYXR0ZW1wdCB0byBoYXJkY29kZSBpdHMKLSsgICAgICAgICAgICAgIGRubCBkaXJlY3RvcnkgaW50byB0aGUgZXhlY3V0YWJsZSdzIHJ1bnBhdGgsIHVubGVzcyBpdCdzIHRoZQotKyAgICAgICAgICAgICAgZG5sIHN0YW5kYXJkIC91c3IvbGliLgotKyAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgPSBubyB8fCB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWC91c3IvbGliIjsgdGhlbgotKyAgICAgICAgICAgICAgICBkbmwgTm8gaGFyZGNvZGluZyBpcyBuZWVkZWQuCi0rICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCi0rICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCi0rICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgotKyAgICAgICAgICAgICAgICBkbmwgVGhlIGx0cnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExUTElCTkFNRSBhdCB0aGUgZW5kLgotKyAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZm91bmRfZGlyIgotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBkbmwgVGhlIGhhcmRjb2RpbmcgaW50byAkTElCTkFNRSBpcyBzeXN0ZW0gZGVwZW5kZW50LgotKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGRubCBVc2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0rICAgICAgICAgICAgICAgICAgZG5sIHJlc3VsdGluZyBiaW5hcnkuCi0rICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgJiYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIERJUiBpbnRvIHRoZSByZXN1bHRpbmcKLSsgICAgICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCi0rICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIHJwYXRoZGlycy4KLSsgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgZG5sIFJlbHkgb24gIi1MJGZvdW5kX2RpciIuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdCBpZiBpdCdzIGFscmVhZHkgY29udGFpbmVkIGluIHRoZSBMREZMQUdTCi0rICAgICAgICAgICAgICAgICAgICBkbmwgb3IgdGhlIGFscmVhZHkgY29uc3RydWN0ZWQgJExJQk5BTUUKLSsgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiAhPSBubzsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgRklYTUU6IE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgIi1MJGZvdW5kX2RpciAtbCRuYW1lIiBvciAiLUwkZm91bmRfZGlyICRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCi0rICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgV2UgY2Fubm90IHVzZSAkaGFyZGNvZGVfcnVucGF0aF92YXIgYW5kIExEX1JVTl9QQVRICi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLCBiZWNhdXNlIHRoaXMgZG9lc24ndCBmaXQgaW4gZmxhZ3MgcGFzc2VkIHRvIHRoZQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgY29tcGlsZXIuIFNvIGdpdmUgdXAuIE5vIGhhcmRjb2RpbmcuIFRoaXMgYWZmZWN0cyBvbmx5Ci0rICAgICAgICAgICAgICAgICAgICAgIGRubCB2ZXJ5IG9sZCBzeXN0ZW1zLgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgRklYTUU6IE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgIi1MJGZvdW5kX2RpciAtbCRuYW1lIiBvciAiLUwkZm91bmRfZGlyICRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCi0rICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LWwkbmFtZSIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZG5sIExpbmtpbmcgd2l0aCBhIHN0YXRpYyBsaWJyYXJ5LgotKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9hIgotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBkbmwgV2Ugc2hvdWxkbid0IGNvbWUgaGVyZSwgYnV0IGFueXdheSBpdCdzIGdvb2QgdG8gaGF2ZSBhCi0rICAgICAgICAgICAgICAgIGRubCBmYWxsYmFjay4KLSsgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBkbmwgQXNzdW1lIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBuZWFyYnkuCi0rICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQotKyAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9kaXIiIGluCi0rICAgICAgICAgICAgICAqL2xpYiB8ICovbGliLykKLSsgICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICdzLC9saWIvKiQsLCdgCi0rICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKLSsgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYIjsgdGhlbgotKyAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgotKyAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKLSsgICAgICAgICAgICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKLSsgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAotKyAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTIG9yIHRoZSBhbHJlYWR5Ci0rICAgICAgICAgICAgICBkbmwgICAgICBjb25zdHJ1Y3RlZCAkSU5DTkFNRSwKLSsgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGZvciB4IGluICRDUFBGTEFHUyAkSU5DW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJElOQ05BTUUuCi0rICAgICAgICAgICAgICAgICAgICAgIElOQ1tdTkFNRT0iJHtJTkNbXU5BTUV9JHtJTkNbXU5BTUU6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRubCBMb29rIGZvciBkZXBlbmRlbmNpZXMuCi0rICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZvdW5kX2xhIjsgdGhlbgotKyAgICAgICAgICAgICAgZG5sIFJlYWQgdGhlIC5sYSBmaWxlLiBJdCBkZWZpbmVzIHRoZSB2YXJpYWJsZXMKLSsgICAgICAgICAgICAgIGRubCBkbG5hbWUsIGxpYnJhcnlfbmFtZXMsIG9sZF9saWJyYXJ5LCBkZXBlbmRlbmN5X2xpYnMsIGN1cnJlbnQsCi0rICAgICAgICAgICAgICBkbmwgYWdlLCByZXZpc2lvbiwgaW5zdGFsbGVkLCBkbG9wZW4sIGRscHJlb3BlbiwgbGliZGlyLgotKyAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9IiRsaWJkaXIiCi0rICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCi0rICAgICAgICAgICAgICAgICovKiB8ICpcXCopIC4gIiRmb3VuZF9sYSIgOzsKLSsgICAgICAgICAgICAgICAgKikgLiAiLi8kZm91bmRfbGEiIDs7Ci0rICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICBsaWJkaXI9IiRzYXZlX2xpYmRpciIKLSsgICAgICAgICAgICAgIGRubCBXZSB1c2Ugb25seSBkZXBlbmRlbmN5X2xpYnMuCi0rICAgICAgICAgICAgICBmb3IgZGVwIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0rICAgICAgICAgICAgICAgIGNhc2UgIiRkZXAiIGluCi0rICAgICAgICAgICAgICAgICAgLUwqKQotKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1MLy8nYAotKyAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExJQk5BTUUgYW5kICRMVExJQk5BTUUuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCi0rICAgICAgICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvbGliIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1Mgb3IgdGhlIGFscmVhZHkKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRMSUJOQU1FLAotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvbGliIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQltdTkFNRTsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTFRMSUJOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgLVIqKQotKyAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIHJwYXRoZGlycy4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTElCTkFNRSBhdCB0aGUgZW5kLgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBsdHJwYXRoZGlycy4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICAgIC1sKikKLSsgICAgICAgICAgICAgICAgICAgIGRubCBIYW5kbGUgdGhpcyBpbiB0aGUgbmV4dCByb3VuZC4KLSsgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLWwvLydgCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICAgICoubGEpCi0rICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuIFRocm93IGF3YXkgdGhlIC5sYSdzCi0rICAgICAgICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5OyBpdCBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiBhIHByZWNlZGluZyAtTAotKyAgICAgICAgICAgICAgICAgICAgZG5sIG9wdGlvbi4KLSsgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICAgICopCi0rICAgICAgICAgICAgICAgICAgICBkbmwgTW9zdCBsaWtlbHkgYW4gaW1tZWRpYXRlIGxpYnJhcnkgbmFtZS4KLSsgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGRlcCIKLSsgICAgICAgICAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9JGRlcCIKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgZG5sIERpZG4ndCBmaW5kIHRoZSBsaWJyYXJ5OyBhc3N1bWUgaXQgaXMgaW4gdGhlIHN5c3RlbSBkaXJlY3RvcmllcwotKyAgICAgICAgICAgIGRubCBrbm93biB0byB0aGUgbGlua2VyIGFuZCBydW50aW1lIGxvYWRlci4gKEFsbCB0aGUgc3lzdGVtCi0rICAgICAgICAgICAgZG5sIGRpcmVjdG9yaWVzIGtub3duIHRvIHRoZSBsaW5rZXIgc2hvdWxkIGFsc28gYmUga25vd24gdG8gdGhlCi0rICAgICAgICAgICAgZG5sIHJ1bnRpbWUgbG9hZGVyLCBvdGhlcndpc2UgdGhlIHN5c3RlbSBpcyBzZXZlcmVseSBtaXNjb25maWd1cmVkLikKLSsgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCi0rICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tbCRuYW1lIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBkb25lCi0rICBkb25lCi0rICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCi0rICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotKyAgICAgIGRubCBXZWlyZCBwbGF0Zm9ybTogb25seSB0aGUgbGFzdCAtcnBhdGggb3B0aW9uIGNvdW50cywgdGhlIHVzZXIgbXVzdAotKyAgICAgIGRubCBwYXNzIGFsbCBwYXRoIGVsZW1lbnRzIGluIG9uZSBvcHRpb24uIFdlIGNhbiBhcnJhbmdlIHRoYXQgZm9yIGEKLSsgICAgICBkbmwgc2luZ2xlIGxpYnJhcnksIGJ1dCBub3Qgd2hlbiBtb3JlIHRoYW4gb25lICRMSUJOQU1FcyBhcmUgdXNlZC4KLSsgICAgICBhbGxkaXJzPQotKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yfSRmb3VuZF9kaXIiCi0rICAgICAgZG9uZQotKyAgICAgIGRubCBOb3RlOiBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIHVzZXMgJGxpYmRpciBhbmQgJHdsLgotKyAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKLSsgICAgICBsaWJkaXI9IiRhbGxkaXJzIgotKyAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCi0rICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZmxhZyIKLSsgICAgZWxzZQotKyAgICAgIGRubCBUaGUgLXJwYXRoIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCi0rICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgotKyAgICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgotKyAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZmxhZyIKLSsgICAgICBkb25lCi0rICAgIGZpCi0rICBmaQotKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCi0rICAgIGRubCBXaGVuIHVzaW5nIGxpYnRvb2wsIHRoZSBvcHRpb24gdGhhdCB3b3JrcyBmb3IgYm90aCBsaWJyYXJpZXMgYW5kCi0rICAgIGRubCBleGVjdXRhYmxlcyBpcyAtUi4gVGhlIC1SIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCi0rICAgIGZvciBmb3VuZF9kaXIgaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LVIkZm91bmRfZGlyIgotKyAgICBkb25lCi0rICBmaQotK10pCi0rCi0rZG5sIEFDX0xJQl9BUFBFTkRUT1ZBUihWQVIsIENPTlRFTlRTKSBhcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBDT05URU5UUyB0byBWQVIsCi0rZG5sIHVubGVzcyBhbHJlYWR5IHByZXNlbnQgaW4gVkFSLgotK2RubCBXb3JrcyBvbmx5IGZvciBDUFBGTEFHUywgbm90IGZvciBMSUIqIHZhcmlhYmxlcyBiZWNhdXNlIHRoYXQgc29tZXRpbWVzCi0rZG5sIGNvbnRhaW5zIHR3byBvciB0aHJlZSBjb25zZWN1dGl2ZSBlbGVtZW50cyB0aGF0IGJlbG9uZyB0b2dldGhlci4KLStBQ19ERUZVTihbQUNfTElCX0FQUEVORFRPVkFSXSwKLStbCi0rICBmb3IgZWxlbWVudCBpbiBbJDJdOyBkbwotKyAgICBoYXZlaXQ9Ci0rICAgIGZvciB4IGluICRbJDFdOyBkbwotKyAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGVsZW1lbnQiOyB0aGVuCi0rICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICBicmVhawotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICBbJDFdPSIke1skMV19JHtbJDFdOisgfSRlbGVtZW50IgotKyAgICBmaQotKyAgZG9uZQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xpYi1wcmVmaXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xpYi1wcmVmaXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45MjE2NjIwNTYgLTA0MDAKLUBAIC0wLDAgKzEsMTU1IEBACi0rIyBsaWItcHJlZml4Lm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTMpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK2RubCBBQ19MSUJfQVJHX1dJVEggaXMgc3lub255bW91cyB0byBBQ19BUkdfV0lUSCBpbiBhdXRvY29uZi0yLjEzLCBhbmQKLStkbmwgc2ltaWxhciB0byBBQ19BUkdfV0lUSCBpbiBhdXRvY29uZiAyLjUyLi4uMi41NyBleGNlcHQgdGhhdCBpcyBkb2Vzbid0Ci0rZG5sIHJlcXVpcmUgZXhjZXNzaXZlIGJyYWNrZXRpbmcuCi0raWZkZWYoW0FDX0hFTFBfU1RSSU5HXSwKLStbQUNfREVGVU4oW0FDX0xJQl9BUkdfV0lUSF0sIFtBQ19BUkdfV0lUSChbJDFdLFtbJDJdXSxbJDNdLFskNF0pXSldLAotK1tBQ19ERUZVTihbQUNfXVtMSUJfQVJHX1dJVEhdLCBbQUNfQVJHX1dJVEgoWyQxXSxbJDJdLFskM10sWyQ0XSldKV0pCi0rCi0rZG5sIEFDX0xJQl9QUkVGSVggYWRkcyB0byB0aGUgQ1BQRkxBR1MgYW5kIExERkxBR1MgdGhlIGZsYWdzIHRoYXQgYXJlIG5lZWRlZAotK2RubCB0byBhY2Nlc3MgcHJldmlvdXNseSBpbnN0YWxsZWQgbGlicmFyaWVzLiBUaGUgYmFzaWMgYXNzdW1wdGlvbiBpcyB0aGF0Ci0rZG5sIGEgdXNlciB3aWxsIHdhbnQgcGFja2FnZXMgdG8gdXNlIG90aGVyIHBhY2thZ2VzIGhlIHByZXZpb3VzbHkgaW5zdGFsbGVkCi0rZG5sIHdpdGggdGhlIHNhbWUgLS1wcmVmaXggb3B0aW9uLgotK2RubCBUaGlzIG1hY3JvIGlzIG5vdCBuZWVkZWQgaWYgb25seSBBQ19MSUJfTElOS0ZMQUdTIGlzIHVzZWQgdG8gbG9jYXRlCi0rZG5sIGxpYnJhcmllcywgYnV0IGlzIG90aGVyd2lzZSB2ZXJ5IGNvbnZlbmllbnQuCi0rQUNfREVGVU4oW0FDX0xJQl9QUkVGSVhdLAotK1sKLSsgIEFDX0JFRk9SRShbJDBdLCBbQUNfTElCX0xJTktGTEFHU10pCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBkbmwgQnkgZGVmYXVsdCwgbG9vayBpbiAkaW5jbHVkZWRpciBhbmQgJGxpYmRpci4KLSsgIHVzZV9hZGRpdGlvbmFsPXllcwotKyAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCi0rICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKLSsgIF0pCi0rICBBQ19MSUJfQVJHX1dJVEgoW2xpYi1wcmVmaXhdLAotK1sgIC0td2l0aC1saWItcHJlZml4Wz1ESVJdIHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi0rICAtLXdpdGhvdXQtbGliLXByZWZpeCAgICBkb24ndCBzZWFyY2ggZm9yIGxpYnJhcmllcyBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdLAotK1sKLSsgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCi0rICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KLSsgICAgZWxzZQotKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KLSsgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCi0rICAgICAgICBdKQotKyAgICAgIGVsc2UKLSsgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKLSsgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC9saWIiCi0rICAgICAgZmkKLSsgICAgZmkKLStdKQotKyAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KLSsgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KLSsgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKLSsgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9pbmNsdWRlLAotKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1MsCi0rICAgIGRubCAgIDMuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAotKyAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgotKyAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgaGF2ZWl0PQotKyAgICAgIGZvciB4IGluICRDUFBGTEFHUzsgZG8KLSsgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCi0rICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgYnJlYWsKLSsgICAgICAgIGZpCi0rICAgICAgZG9uZQotKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OwotKyAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJENQUEZMQUdTLgotKyAgICAgICAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBmaQotKyAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KLSsgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKLSsgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCi0rICAgIGRubCAgIDIuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTLAotKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvbGliIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAotKyAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgotKyAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvbGliIjsgdGhlbgotKyAgICAgIGhhdmVpdD0KLSsgICAgICBmb3IgeCBpbiAkTERGTEFHUzsgZG8KLSsgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICBicmVhawotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsL2xpYiI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OwotKyAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgotKyAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30ke0xERkxBR1M6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgIGZpCi0rICBmaQotK10pCi0rCi0rZG5sIEFDX0xJQl9QUkVQQVJFX1BSRUZJWCBjcmVhdGVzIHZhcmlhYmxlcyBhY2xfZmluYWxfcHJlZml4LAotK2RubCBhY2xfZmluYWxfZXhlY19wcmVmaXgsIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byB3aGljaCAkcHJlZml4IGFuZAotK2RubCAkZXhlY19wcmVmaXggd2lsbCBleHBhbmQgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdC4KLStBQ19ERUZVTihbQUNfTElCX1BSRVBBUkVfUFJFRklYXSwKLStbCi0rICBkbmwgVW5mb3J0dW5hdGVseSwgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBnZXQgb25seSBmaW5hbGx5IGRldGVybWluZWQKLSsgIGRubCBhdCB0aGUgZW5kIG9mIGNvbmZpZ3VyZS4KLSsgIGlmIHRlc3QgIlgkcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KLSsgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgZWxzZQotKyAgICBhY2xfZmluYWxfcHJlZml4PSIkcHJlZml4IgotKyAgZmkKLSsgIGlmIHRlc3QgIlgkZXhlY19wcmVmaXgiID0gIlhOT05FIjsgdGhlbgotKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSsgIGVsc2UKLSsgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCi0rICBmaQotKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKLSsgIGV2YWwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PVwiJGFjbF9maW5hbF9leGVjX3ByZWZpeFwiCi0rICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCi0rXSkKLSsKLStkbmwgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtzdGF0ZW1lbnRdKSBldmFsdWF0ZXMgc3RhdGVtZW50LCB3aXRoIHRoZQotK2RubCB2YXJpYWJsZXMgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBib3VuZCB0byB0aGUgdmFsdWVzIHRoZXkgd2lsbCBoYXZlCi0rZG5sIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCi0rQUNfREVGVU4oW0FDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWF0sCi0rWwotKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKLSsgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCi0rICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKLSsgICQxCi0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xvbmdkb3VibGUubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xvbmdkb3VibGUubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NDI2NTg4NjQgLTA0MDAKLUBAIC0wLDAgKzEsMzAgQEAKLSsjIGxvbmdkb3VibGUubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgdGhlICdsb25nIGRvdWJsZScgdHlwZS4KLStkbmwgUHJlcmVxdWlzaXRlOiBBQ19QUk9HX0NDCi0rCi0rQUNfREVGVU4oW2d0X1RZUEVfTE9OR0RPVUJMRV0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb25nIGRvdWJsZV0sIGd0X2N2X2NfbG9uZ19kb3VibGUsCi0rICAgIFtpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgICBndF9jdl9jX2xvbmdfZG91YmxlPXllcwotKyAgICAgZWxzZQotKyAgICAgICBBQ19UUllfQ09NUElMRShbCi0rICAgICAgICAgLyogVGhlIFN0YXJkZW50IFZpc3RyYSBrbm93cyBzaXplb2YobG9uZyBkb3VibGUpLCBidXQgZG9lcyBub3Qgc3VwcG9ydCBpdC4gICovCi0rICAgICAgICAgbG9uZyBkb3VibGUgZm9vID0gMC4wOwotKyAgICAgICAgIC8qIE9uIFVsdHJpeCA0LjMgY2MsIGxvbmcgZG91YmxlIGlzIDQgYW5kIGRvdWJsZSBpcyA4LiAgKi8KLSsgICAgICAgICBpbnQgYXJyYXkgWzIqKHNpemVvZihsb25nIGRvdWJsZSkgPj0gc2l6ZW9mKGRvdWJsZSkpIC0gMV07Ci0rICAgICAgICAgXSwgLAotKyAgICAgICAgIGd0X2N2X2NfbG9uZ19kb3VibGU9eWVzLCBndF9jdl9jX2xvbmdfZG91YmxlPW5vKQotKyAgICAgZmldKQotKyAgaWYgdGVzdCAkZ3RfY3ZfY19sb25nX2RvdWJsZSA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9MT05HX0RPVUJMRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2xvbmcgZG91YmxlJyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xvbmdsb25nLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9sb25nbG9uZy5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk0OTY1NzgwMCAtMDQwMAotQEAgLTAsMCArMSwyNSBAQAotKyMgbG9uZ2xvbmcubTQgc2VyaWFsIDQKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX0xPTkdfTE9ORyBpZiAnbG9uZyBsb25nJyB3b3Jrcy4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9MT05HX0xPTkddLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbG9uZyBsb25nXSwgYWNfY3ZfdHlwZV9sb25nX2xvbmcsCi0rICBbQUNfVFJZX0xJTksoW2xvbmcgbG9uZyBsbCA9IDFMTDsgaW50IGkgPSA2MztdLAotKyAgICBbbG9uZyBsb25nIGxsbWF4ID0gKGxvbmcgbG9uZykgLTE7Ci0rICAgICByZXR1cm4gbGwgPDwgaSB8IGxsID4+IGkgfCBsbG1heCAvIGxsIHwgbGxtYXggJSBsbDtdLAotKyAgICBhY19jdl90eXBlX2xvbmdfbG9uZz15ZXMsCi0rICAgIGFjX2N2X3R5cGVfbG9uZ19sb25nPW5vKV0pCi0rICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9MT05HX0xPTkcsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2xvbmcgbG9uZycgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9NYWtlZmlsZS5hbQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvTWFrZWZpbGUuYW0JMjAwNC0wOS0xMiAxNDo0MDozNS4wNDg2NDI3NTIgLTA0MDAKLUBAIC0wLDAgKzEgQEAKLStFWFRSQV9ESVNUID0gY29kZXNldC5tNCBnZXR0ZXh0Lm00IGdsaWJjMjEubTQgaWNvbnYubTQgaW50ZGl2MC5tNCBpbnRtYXgubTQgaW50dHlwZXMubTQgaW50dHlwZXNfaC5tNCBpbnR0eXBlcy1wcmkubTQgaXNjLXBvc2l4Lm00IGxjbWVzc2FnZS5tNCBsaWItbGQubTQgbGliLWxpbmsubTQgbGliLXByZWZpeC5tNCBsb25nZG91YmxlLm00IGxvbmdsb25nLm00IG5scy5tNCBwby5tNCBwcmludGYtcG9zaXgubTQgcHJvZ3Rlc3QubTQgc2lnbmVkLm00IHNpemVfbWF4Lm00IHN0ZGludF9oLm00IHVpbnRtYXhfdC5tNCB1bG9uZ2xvbmcubTQgd2NoYXJfdC5tNCB3aW50X3QubTQgeHNpemUubTQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbmxzLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9ubHMubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NTU2NTY4ODggLTA0MDAKLUBAIC0wLDAgKzEsNDkgQEAKLSsjIG5scy5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KLStkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KLSsKLStBQ19ERUZVTihbQU1fTkxTXSwKLStbCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgTkxTIGlzIHJlcXVlc3RlZF0pCi0rICBkbmwgRGVmYXVsdCBpcyBlbmFibGVkIE5MUwotKyAgQUNfQVJHX0VOQUJMRShubHMsCi0rICAgIFsgIC0tZGlzYWJsZS1ubHMgICAgICAgICAgIGRvIG5vdCB1c2UgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnRdLAotKyAgICBVU0VfTkxTPSRlbmFibGV2YWwsIFVTRV9OTFM9eWVzKQotKyAgQUNfTVNHX1JFU1VMVCgkVVNFX05MUykKLSsgIEFDX1NVQlNUKFVTRV9OTFMpCi0rXSkKLSsKLStBQ19ERUZVTihbQU1fTUtJTlNUQUxMRElSU10sCi0rWwotKyAgZG5sIElmIHRoZSBBQ19DT05GSUdfQVVYX0RJUiBtYWNybyBmb3IgYXV0b2NvbmYgaXMgdXNlZCB3ZSBwb3NzaWJseQotKyAgZG5sIGZpbmQgdGhlIG1raW5zdGFsbGRpcnMgc2NyaXB0IGluIGFub3RoZXIgc3ViZGlyIGJ1dCAkKHRvcF9zcmNkaXIpLgotKyAgZG5sIFRyeSB0byBsb2NhdGUgaXQuCi0rICBNS0lOU1RBTExESVJTPQotKyAgaWYgdGVzdCAtbiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0rICAgIGNhc2UgIiRhY19hdXhfZGlyIiBpbgotKyAgICAgIC8qKSBNS0lOU1RBTExESVJTPSIkYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIiA7OwotKyAgICAgICopIE1LSU5TVEFMTERJUlM9IlwkKHRvcF9idWlsZGRpcikvJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyIgOzsKLSsgICAgZXNhYwotKyAgZmkKLSsgIGlmIHRlc3QgLXogIiRNS0lOU1RBTExESVJTIjsgdGhlbgotKyAgICBNS0lOU1RBTExESVJTPSJcJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzIgotKyAgZmkKLSsgIEFDX1NVQlNUKE1LSU5TVEFMTERJUlMpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvcG8ubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3BvLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTYxNjU1OTc2IC0wNDAwCi1AQCAtMCwwICsxLDQyNiBAQAotKyMgcG8ubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xNCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCi0rZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCi0rCi0rZG5sIENoZWNrcyBmb3IgYWxsIHByZXJlcXVpc2l0ZXMgb2YgdGhlIHBvIHN1YmRpcmVjdG9yeS4KLStBQ19ERUZVTihbQU1fUE9fU1VCRElSU10sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19NQUtFX1NFVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAotKyAgQUNfUkVRVUlSRShbQU1fTUtJTlNUQUxMRElSU10pZG5sCi0rICBBQ19SRVFVSVJFKFtBTV9OTFNdKWRubAotKwotKyAgZG5sIFBlcmZvcm0gdGhlIGZvbGxvd2luZyB0ZXN0cyBhbHNvIGlmIC0tZGlzYWJsZS1ubHMgaGFzIGJlZW4gZ2l2ZW4sCi0rICBkbmwgYmVjYXVzZSB0aGV5IGFyZSBuZWVkZWQgZm9yICJtYWtlIGRpc3QiIHRvIHdvcmsuCi0rCi0rICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnZm10IGluIHRoZSBQQVRILgotKyAgZG5sIFRoZSBmaXJzdCB0ZXN0IGV4Y2x1ZGVzIFNvbGFyaXMgbXNnZm10IGFuZCBlYXJseSBHTlUgbXNnZm10IHZlcnNpb25zLgotKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIG1zZ2ZtdC4KLSsgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHRk1ULCBtc2dmbXQsCi0rICAgIFskYWNfZGlyLyRhY193b3JkIC0tc3RhdGlzdGljcyAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAotKyAgICA6KQotKyAgQUNfUEFUSF9QUk9HKEdNU0dGTVQsIGdtc2dmbXQsICRNU0dGTVQpCi0rCi0rICBkbmwgU2VhcmNoIGZvciBHTlUgeGdldHRleHQgMC4xMiBvciBuZXdlciBpbiB0aGUgUEFUSC4KLSsgIGRubCBUaGUgZmlyc3QgdGVzdCBleGNsdWRlcyBTb2xhcmlzIHhnZXR0ZXh0IGFuZCBlYXJseSBHTlUgeGdldHRleHQgdmVyc2lvbnMuCi0rICBkbmwgVGhlIHNlY29uZCB0ZXN0IGV4Y2x1ZGVzIEZyZWVCU0QgeGdldHRleHQuCi0rICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFhHRVRURVhULCB4Z2V0dGV4dCwKLSsgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKLSsgICAgOikKLSsgIGRubCBSZW1vdmUgbGVmdG92ZXIgZnJvbSBGcmVlQlNEIHhnZXR0ZXh0IGNhbGwuCi0rICBybSAtZiBtZXNzYWdlcy5wbwotKwotKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ21lcmdlIDAuMTEgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCi0rICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKE1TR01FUkdFLCBtc2dtZXJnZSwKLSsgICAgWyRhY19kaXIvJGFjX3dvcmQgLS11cGRhdGUgLXEgL2Rldi9udWxsIC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjFdLCA6KQotKwotKyAgZG5sIFRoaXMgY291bGQgZ28gYXdheSBzb21lIGRheTsgdGhlIFBBVEhfUFJPR19XSVRIX1RFU1QgYWxyZWFkeSBkb2VzIGl0LgotKyAgZG5sIFRlc3Qgd2hldGhlciB3ZSByZWFsbHkgZm91bmQgR05VIG1zZ2ZtdC4KLSsgIGlmIHRlc3QgIiRHTVNHRk1UIiAhPSAiOiI7IHRoZW4KLSsgICAgZG5sIElmIGl0IGlzIG5vIEdOVSBtc2dmbXQgd2UgZGVmaW5lIGl0IGFzIDogc28gdGhhdCB0aGUKLSsgICAgZG5sIE1ha2VmaWxlcyBzdGlsbCBjYW4gd29yay4KLSsgICAgaWYgJEdNU0dGTVQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgICAgKGlmICRHTVNHRk1UIC0tc3RhdGlzdGljcyAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKTsgdGhlbgotKyAgICAgIDogOwotKyAgICBlbHNlCi0rICAgICAgR01TR0ZNVD1gZWNobyAiJEdNU0dGTVQiIHwgc2VkIC1lICdzLF4uKi8sLCdgCi0rICAgICAgQUNfTVNHX1JFU1VMVCgKLSsgICAgICAgIFtmb3VuZCAkR01TR0ZNVCBwcm9ncmFtIGlzIG5vdCBHTlUgbXNnZm10OyBpZ25vcmUgaXRdKQotKyAgICAgIEdNU0dGTVQ9IjoiCi0rICAgIGZpCi0rICBmaQotKwotKyAgZG5sIFRoaXMgY291bGQgZ28gYXdheSBzb21lIGRheTsgdGhlIFBBVEhfUFJPR19XSVRIX1RFU1QgYWxyZWFkeSBkb2VzIGl0LgotKyAgZG5sIFRlc3Qgd2hldGhlciB3ZSByZWFsbHkgZm91bmQgR05VIHhnZXR0ZXh0LgotKyAgaWYgdGVzdCAiJFhHRVRURVhUIiAhPSAiOiI7IHRoZW4KLSsgICAgZG5sIElmIGl0IGlzIG5vIEdOVSB4Z2V0dGV4dCB3ZSBkZWZpbmUgaXQgYXMgOiBzbyB0aGF0IHRoZQotKyAgICBkbmwgTWFrZWZpbGVzIHN0aWxsIGNhbiB3b3JrLgotKyAgICBpZiAkWEdFVFRFWFQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAgIChpZiAkWEdFVFRFWFQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKTsgdGhlbgotKyAgICAgIDogOwotKyAgICBlbHNlCi0rICAgICAgQUNfTVNHX1JFU1VMVCgKLSsgICAgICAgIFtmb3VuZCB4Z2V0dGV4dCBwcm9ncmFtIGlzIG5vdCBHTlUgeGdldHRleHQ7IGlnbm9yZSBpdF0pCi0rICAgICAgWEdFVFRFWFQ9IjoiCi0rICAgIGZpCi0rICAgIGRubCBSZW1vdmUgbGVmdG92ZXIgZnJvbSBGcmVlQlNEIHhnZXR0ZXh0IGNhbGwuCi0rICAgIHJtIC1mIG1lc3NhZ2VzLnBvCi0rICBmaQotKwotKyAgQUNfT1VUUFVUX0NPTU1BTkRTKFsKLSsgICAgZm9yIGFjX2ZpbGUgaW4gJENPTkZJR19GSUxFUzsgZG8KLSsgICAgICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iCi0rICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluCi0rICAgICAgICAqOiopIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlOi4qJSUnYCA7OwotKyAgICAgIGVzYWMKLSsgICAgICAjIFBPIGRpcmVjdG9yaWVzIGhhdmUgYSBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgZnJvbSBNYWtlZmlsZS5pbi5pbi4KLSsgICAgICBjYXNlICIkYWNfZmlsZSIgaW4gKi9NYWtlZmlsZS5pbikKLSsgICAgICAgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgotKyAgICAgICAgYWNfZGlyPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAotKyAgICAgICAgYWNfZGlyX3N1ZmZpeD0iL2BlY2hvICIkYWNfZGlyInxzZWQgJ3MlXlwuLyUlJ2AiCi0rICAgICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCi0rICAgICAgICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCi0rICAgICAgICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVkICRzcmNkaXIuCi0rICAgICAgICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCi0rICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgICAgICAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7Ci0rICAgICAgICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotKyAgICAgICAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotKyAgICAgICAgZXNhYwotKyAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIjsgdGhlbgotKyAgICAgICAgICBybSAtZiAiJGFjX2Rpci9QT1RGSUxFUyIKLSsgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvUE9URklMRVMiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIiB8IHNlZCAtZSAiL14jL2QiIC1lICIvXlsgCV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxcXFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIKLSsgICAgICAgICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgotKyAgICAgICAgICAjIEFMTF9MSU5HVUFTLCBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTIGRlcGVuZAotKyAgICAgICAgICAjIG9uICRhY19kaXIgYnV0IGRvbid0IGRlcGVuZCBvbiB1c2VyLXNwZWNpZmllZCBjb25maWd1cmF0aW9uCi0rICAgICAgICAgICMgcGFyYW1ldGVycy4KLSsgICAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgIyBUaGUgTElOR1VBUyBmaWxlIGNvbnRhaW5zIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcy4KLSsgICAgICAgICAgICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiYAotKyAgICAgICAgICAgICMgSGlkZSB0aGUgQUxMX0xJTkdVQVMgYXNzaWdtZW50IGZyb20gYXV0b21ha2UuCi0rICAgICAgICAgICAgZXZhbCAnQUxMX0xJTkdVQVMnJz0kQUxMX0xJTkdVQVNfJwotKyAgICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VBUyIKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICMgVGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzIHdhcyBnaXZlbiBpbiBjb25maWd1cmUuaW4uCi0rICAgICAgICAgICAgZXZhbCAnQUxMX0xJTkdVQVMnJz0kT0JTT0xFVEVfQUxMX0xJTkdVQVMnCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgICMgQ29tcHV0ZSBQT0ZJTEVTCi0rICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQotKyAgICAgICAgICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKLSsgICAgICAgICAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKLSsgICAgICAgICAgIyBDb21wdXRlIEdNT0ZJTEVTCi0rICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKLSsgICAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KLSsgICAgICAgICAgICAuKSBzcmNkaXJwcmU9IDs7Ci0rICAgICAgICAgICAgKikgc3JjZGlycHJlPSckKHNyY2RpcikvJyA7OwotKyAgICAgICAgICBlc2FjCi0rICAgICAgICAgIFBPRklMRVM9Ci0rICAgICAgICAgIFVQREFURVBPRklMRVM9Ci0rICAgICAgICAgIERVTU1ZUE9GSUxFUz0KLSsgICAgICAgICAgR01PRklMRVM9Ci0rICAgICAgICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCi0rICAgICAgICAgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgotKyAgICAgICAgICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCi0rICAgICAgICAgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgotKyAgICAgICAgICBkb25lCi0rICAgICAgICAgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUwotKyAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgotKyAgICAgICAgICBJTlNUX0xJTkdVQVM9Ci0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KLSsgICAgICAgICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgICAgICAgICAgdXNlaXQ9bm8KLSsgICAgICAgICAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCi0rICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmb3IgZGVzaXJlZGxhbmcgaW4gJGRlc2lyZWRsYW5ndWFnZXM7IGRvCi0rICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCi0rICAgICAgICAgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKLSsgICAgICAgICAgICAgICAgIyAgIGIuIGEgdmFyaWFudCBvZiBwcmVzZW50bGFuZyAoYmVjYXVzZSBpbiB0aGlzIGNhc2UsCi0rICAgICAgICAgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcwotKyAgICAgICAgICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KLSsgICAgICAgICAgICAgICAgY2FzZSAiJGRlc2lyZWRsYW5nIiBpbgotKyAgICAgICAgICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKLSsgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICBmaQotKyAgICAgICAgICBDQVRBTE9HUz0KLSsgICAgICAgICAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KLSsgICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbwotKyAgICAgICAgICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCi0rICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICBmaQotKyAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9NYWtlZmlsZSIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9NYWtlZmlsZSIKLSsgICAgICAgICAgc2VkIC1lICIvXlBPVEZJTEVTID0vciAkYWNfZGlyL1BPVEZJTEVTIiAtZSAiL14jIE1ha2V2YXJzL3IgJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL01ha2V2YXJzIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QFBPTUFLRUZJTEVERVBTQHwkUE9NQUtFRklMRURFUFN8ZyIgIiRhY19kaXIvTWFrZWZpbGUuaW4iID4gIiRhY19kaXIvTWFrZWZpbGUiCi0rICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIiL1J1bGVzLSo7IGRvCi0rICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGYiOyB0aGVuCi0rICAgICAgICAgICAgICBjYXNlICIkZiIgaW4KLSsgICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsgfCAqfikgOzsKLSsgICAgICAgICAgICAgICAgKikgY2F0ICIkZiIgPj4gIiRhY19kaXIvTWFrZWZpbGUiIDs7Ci0rICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZG9uZQotKyAgICAgICAgZmkKLSsgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICBkb25lXSwKLSsgICBbIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBvYnNvbGV0ZSBBTExfTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZQotKyAgICAjIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMsIENBVEFMT0dTLiBCdXQgaGlkZSBpdAotKyAgICAjIGZyb20gYXV0b21ha2UuCi0rICAgIGV2YWwgJ09CU09MRVRFX0FMTF9MSU5HVUFTJyc9IiRBTExfTElOR1VBUyInCi0rICAgICMgQ2FwdHVyZSB0aGUgdmFsdWUgb2YgTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZSBDQVRBTE9HUy4KLSsgICAgTElOR1VBUz0iJHtMSU5HVUFTLSVVTlNFVCV9IgotKyAgIF0pCi0rXSkKLSsKLStkbmwgUG9zdHByb2Nlc3NlcyBhIE1ha2VmaWxlIGluIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgUE8gZmlsZXMuCi0rQUNfREVGVU4oW0FNX1BPU1RQUk9DRVNTX1BPX01BS0VGSUxFXSwKLStbCi0rICAjIFdoZW4gdGhpcyBjb2RlIGlzIHJ1biwgaW4gY29uZmlnLnN0YXR1cywgdHdvIHZhcmlhYmxlcyBoYXZlIGFscmVhZHkgYmVlbgotKyAgIyBzZXQ6Ci0rICAjIC0gT0JTT0xFVEVfQUxMX0xJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIExJTkdVQVMgc2V0IGluIGNvbmZpZ3VyZS5pbiwKLSsgICMgLSBMSU5HVUFTIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTElOR1VBUyBhdCBjb25maWd1cmUKLSsgICMgICB0aW1lLgotKwotK2NoYW5nZXF1b3RlKCwpZG5sCi0rICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KLSsgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgIGFjX2Rpcl9zdWZmaXg9Ii9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgIgotKyAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAotKyAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgotKyAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgotKyAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgotKyAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KLSsgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OwotKyAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgIGVzYWMKLSsKLSsgICMgRmluZCBhIHdheSB0byBlY2hvIHN0cmluZ3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgYmFja3NsYXNoLgotKyAgaWYgdGVzdCAiWGAoZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KLSsgICAgZ3RfZWNobz0nZWNobycKLSsgIGVsc2UKLSsgICAgaWYgdGVzdCAiWGAocHJpbnRmICclc1xuJyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KLSsgICAgICBndF9lY2hvPSdwcmludGYgJXNcbicKLSsgICAgZWxzZQotKyAgICAgIGVjaG9fZnVuYyAoKSB7Ci0rICAgICAgICBjYXQgPDxFT1QKLSskKgotK0VPVAotKyAgICAgIH0KLSsgICAgICBndF9lY2hvPSdlY2hvX2Z1bmMnCi0rICAgIGZpCi0rICBmaQotKwotKyAgIyBBIHNlZCBzY3JpcHQgdGhhdCBleHRyYWN0cyB0aGUgdmFsdWUgb2YgVkFSSUFCTEUgZnJvbSBhIE1ha2VmaWxlLgotKyAgc2VkX3hfdmFyaWFibGU9JwotKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLSt4Ci0rcy9QL1AvCi0reAotK3RhCi0rIyBZZXMgaXQgd2FzIGVtcHR5LiBMb29rIGlmIHdlIGhhdmUgdGhlIGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24uCi0rL15bCSBdKlZBUklBQkxFWwkgXSo9L3sKLSsgICMgU2VlbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KLSsgIHMvXlsJIF0qVkFSSUFCTEVbCSBdKj0vLwotKyAgYmEKLSt9Ci0rYmQKLSs6YQotKyMgSGVyZSB3ZSBhcmUgcHJvY2Vzc2luZyBhIGxpbmUgZnJvbSB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KLSsjIFJlbW92ZSBjb21tZW50LCBtb3JlIHByZWNpc2VseSByZXBsYWNlIGl0IHdpdGggYSBzcGFjZS4KLStzLyMuKiQvIC8KLSsjIFNlZSBpZiB0aGUgbGluZSBlbmRzIGluIGEgYmFja3NsYXNoLgotK3RiCi0rOmIKLStzL1xcJC8vCi0rIyBQcmludCB0aGUgbGluZSwgd2l0aG91dCB0aGUgdHJhaWxpbmcgYmFja3NsYXNoLgotK3AKLSt0YwotKyMgVGhlcmUgd2FzIG5vIHRyYWlsaW5nIGJhY2tzbGFzaC4gVGhlIGVuZCBvZiB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbiBpcwotKyMgcmVhY2hlZC4gQ2xlYXIgdGhlIGhvbGQgc3BhY2UuCi0rcy9eLiokLy8KLSt4Ci0rYmQKLSs6YwotKyMgQSB0cmFpbGluZyBiYWNrc2xhc2ggbWVhbnMgdGhhdCB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbiBjb250aW51ZXMgaW4gdGhlCi0rIyBuZXh0IGxpbmUuIFB1dCBhIG5vbmVtcHR5IHN0cmluZyBpbnRvIHRoZSBob2xkIHNwYWNlIHRvIGluZGljYXRlIHRoaXMuCi0rcy9eLiokL1AvCi0reAotKzpkCi0rJwotK2NoYW5nZXF1b3RlKFssXSlkbmwKLSsKLSsgICMgU2V0IFBPVEZJTEVTIHRvIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgUE9URklMRVMuCi0rICBzZWRfeF9QT1RGSUxFUz0iYCRndF9lY2hvIFwiJHNlZF94X3ZhcmlhYmxlXCIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL1BPVEZJTEVTL2cnYCIKLSsgIFBPVEZJTEVTPWBzZWQgLW4gLWUgIiRzZWRfeF9QT1RGSUxFUyIgPCAiJGFjX2ZpbGUiYAotKyAgIyBDb21wdXRlIFBPVEZJTEVTX0RFUFMgYXMKLSsgICMgICAkKGZvcmVhY2ggZmlsZSwgJChQT1RGSUxFUyksICQodG9wX3NyY2RpcikvJChmaWxlKSkKLSsgIFBPVEZJTEVTX0RFUFM9Ci0rICBmb3IgZmlsZSBpbiAkUE9URklMRVM7IGRvCi0rICAgIFBPVEZJTEVTX0RFUFM9IiRQT1RGSUxFU19ERVBTICInJCh0b3Bfc3JjZGlyKS8nIiRmaWxlIgotKyAgZG9uZQotKyAgUE9NQUtFRklMRURFUFM9IiIKLSsKLSsgIGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KLSsgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKLSsgIGZpCi0rICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KLSsgICAgIyBUaGUgTElOR1VBUyBmaWxlIGNvbnRhaW5zIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcy4KLSsgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiYAotKyAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCi0rICBlbHNlCi0rICAgICMgU2V0IEFMTF9MSU5HVUFTIHRvIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgTElOR1VBUy4KLSsgICAgc2VkX3hfTElOR1VBUz0iYCRndF9lY2hvIFwiJHNlZF94X3ZhcmlhYmxlXCIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL0xJTkdVQVMvZydgIgotKyAgICBBTExfTElOR1VBU189YHNlZCAtbiAtZSAiJHNlZF94X0xJTkdVQVMiIDwgIiRhY19maWxlImAKLSsgIGZpCi0rICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbWVudCBmcm9tIGF1dG9tYWtlLgotKyAgZXZhbCAnQUxMX0xJTkdVQVMnJz0kQUxMX0xJTkdVQVNfJwotKyAgIyBDb21wdXRlIFBPRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQotKyAgIyBDb21wdXRlIFVQREFURVBPRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQotKyAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5ub3ApCi0rICAjIENvbXB1dGUgR01PRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKLSsgICMgQ29tcHV0ZSBQUk9QRVJUSUVTRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQodG9wX3NyY2RpcikvJChET01BSU4pXyQobGFuZykucHJvcGVydGllcykKLSsgICMgQ29tcHV0ZSBDTEFTU0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHRvcF9zcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLmNsYXNzKQotKyAgIyBDb21wdXRlIFFNRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnFtKQotKyAgIyBDb21wdXRlIE1TR0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLm1zZykKLSsgICMgQ29tcHV0ZSBSRVNPVVJDRVNETExGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS8kKERPTUFJTikucmVzb3VyY2VzLmRsbCkKLSsgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgIC4pIHNyY2RpcnByZT0gOzsKLSsgICAgKikgc3JjZGlycHJlPSckKHNyY2RpcikvJyA7OwotKyAgZXNhYwotKyAgUE9GSUxFUz0KLSsgIFVQREFURVBPRklMRVM9Ci0rICBEVU1NWVBPRklMRVM9Ci0rICBHTU9GSUxFUz0KLSsgIFBST1BFUlRJRVNGSUxFUz0KLSsgIENMQVNTRklMRVM9Ci0rICBRTUZJTEVTPQotKyAgTVNHRklMRVM9Ci0rICBSRVNPVVJDRVNETExGSUxFUz0KLSsgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgUE9GSUxFUz0iJFBPRklMRVMgJHNyY2RpcnByZSRsYW5nLnBvIgotKyAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCi0rICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCi0rICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKLSsgICAgUFJPUEVSVElFU0ZJTEVTPSIkUFJPUEVSVElFU0ZJTEVTIFwkKHRvcF9zcmNkaXIpL1wkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKLSsgICAgQ0xBU1NGSUxFUz0iJENMQVNTRklMRVMgXCQodG9wX3NyY2RpcikvXCQoRE9NQUlOKV8kbGFuZy5jbGFzcyIKLSsgICAgUU1GSUxFUz0iJFFNRklMRVMgJHNyY2RpcnByZSRsYW5nLnFtIgotKyAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotKyAgICBNU0dGSUxFUz0iJE1TR0ZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcubXNnIgotKyAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZydgCi0rICAgIFJFU09VUkNFU0RMTEZJTEVTPSIkUkVTT1VSQ0VTRExMRklMRVMgJHNyY2RpcnByZSRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCi0rICBkb25lCi0rICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKLSsgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0rICBJTlNUX0xJTkdVQVM9Ci0rICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgdXNlaXQ9bm8KLSsgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCi0rICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKLSsgICAgICBlbHNlCi0rICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCi0rICAgICAgZmkKLSsgICAgICBmb3IgZGVzaXJlZGxhbmcgaW4gJGRlc2lyZWRsYW5ndWFnZXM7IGRvCi0rICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcwotKyAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgotKyAgICAgICAgIyAgIGIuIGEgdmFyaWFudCBvZiBwcmVzZW50bGFuZyAoYmVjYXVzZSBpbiB0aGlzIGNhc2UsCi0rICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKLSsgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgotKyAgICAgICAgY2FzZSAiJGRlc2lyZWRsYW5nIiBpbgotKyAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgZG9uZQotKyAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCi0rICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsgIGZpCi0rICBDQVRBTE9HUz0KLSsgIEpBVkFDQVRBTE9HUz0KLSsgIFFUQ0FUQUxPR1M9Ci0rICBUQ0xDQVRBTE9HUz0KLSsgIENTSEFSUENBVEFMT0dTPQotKyAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KLSsgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KLSsgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKLSsgICAgICBKQVZBQ0FUQUxPR1M9IiRKQVZBQ0FUQUxPR1MgXCQoRE9NQUlOKV8kbGFuZy5wcm9wZXJ0aWVzIgotKyAgICAgIFFUQ0FUQUxPR1M9IiRRVENBVEFMT0dTICRsYW5nLnFtIgotKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCi0rICAgICAgVENMQ0FUQUxPR1M9IiRUQ0xDQVRBTE9HUyAkZnJvYmJlZGxhbmcubXNnIgotKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJ2AKLSsgICAgICBDU0hBUlBDQVRBTE9HUz0iJENTSEFSUENBVEFMT0dTICRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCi0rICAgIGRvbmUKLSsgIGZpCi0rCi0rICBzZWQgLWUgInN8QFBPVEZJTEVTX0RFUFNAfCRQT1RGSUxFU19ERVBTfGciIC1lICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAtZSAic3xAUFJPUEVSVElFU0ZJTEVTQHwkUFJPUEVSVElFU0ZJTEVTfGciIC1lICJzfEBDTEFTU0ZJTEVTQHwkQ0xBU1NGSUxFU3xnIiAtZSAic3xAUU1GSUxFU0B8JFFNRklMRVN8ZyIgLWUgInN8QE1TR0ZJTEVTQHwkTVNHRklMRVN8ZyIgLWUgInN8QFJFU09VUkNFU0RMTEZJTEVTQHwkUkVTT1VSQ0VTRExMRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QEpBVkFDQVRBTE9HU0B8JEpBVkFDQVRBTE9HU3xnIiAtZSAic3xAUVRDQVRBTE9HU0B8JFFUQ0FUQUxPR1N8ZyIgLWUgInN8QFRDTENBVEFMT0dTQHwkVENMQ0FUQUxPR1N8ZyIgLWUgInN8QENTSEFSUENBVEFMT0dTQHwkQ1NIQVJQQ0FUQUxPR1N8ZyIgLWUgJ3MsXiNkaXN0ZGlyOixkaXN0ZGlyOiwnIDwgIiRhY19maWxlIiA+ICIkYWNfZmlsZS50bXAiCi0rICBpZiBncmVwIC1sICdAVENMQ0FUQUxPR1NAJyAiJGFjX2ZpbGUiID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgotKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKLSsgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLSskZnJvYmJlZGxhbmcubXNnOiAkbGFuZy5wbwotKwlAZWNobyAiXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotK0VPRgotKyAgICBkb25lCi0rICBmaQotKyAgaWYgZ3JlcCAtbCAnQENTSEFSUENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KLSsgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJ2AKLSsgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLSskZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsOiAkbGFuZy5wbwotKwlAZWNobyAiXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciBcJChET01BSU4pIjsgXAotKwlcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgIlwkKERPTUFJTikiIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQotK0VPRgotKyAgICBkb25lCi0rICBmaQotKyAgaWYgdGVzdCAtbiAiJFBPTUFLRUZJTEVERVBTIjsgdGhlbgotKyAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLStNYWtlZmlsZTogJFBPTUFLRUZJTEVERVBTCi0rRU9GCi0rICBmaQotKyAgbXYgIiRhY19maWxlLnRtcCIgIiRhY19maWxlIgotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3ByaW50Zi1wb3NpeC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvcHJpbnRmLXBvc2l4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTc0NjU0MDAwIC0wNDAwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBwcmludGYtcG9zaXgubTQgc2VyaWFsIDIgKGdldHRleHQtMC4xMy4xKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciB0aGUgcHJpbnRmKCkgZnVuY3Rpb24gc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzIHdpdGgKLStkbmwgcG9zaXRpb25zLgotKwotK0FDX0RFRlVOKFtndF9QUklOVEZfUE9TSVhdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgcHJpbnRmKCkgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzXSwKLSsgICAgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXgsCi0rICAgIFsKLSsgICAgICBBQ19UUllfUlVOKFsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rLyogVGhlIHN0cmluZyAiJTIkZCAlMSRkIiwgd2l0aCBkb2xsYXIgY2hhcmFjdGVycyBwcm90ZWN0ZWQgZnJvbSB0aGUgc2hlbGwncwotKyAgIGRvbGxhciBleHBhbnNpb24gKHBvc3NpYmx5IGFuIGF1dG9jb25mIGJ1ZykuICAqLwotK3N0YXRpYyBjaGFyIGZvcm1hdFtdID0geyAnJScsICcyJywgJyQnLCAnZCcsICcgJywgJyUnLCAnMScsICckJywgJ2QnLCAnXDAnIH07Ci0rc3RhdGljIGNoYXIgYnVmWzEwMF07Ci0raW50IG1haW4gKCkKLSt7Ci0rICBzcHJpbnRmIChidWYsIGZvcm1hdCwgMzMsIDU1KTsKLSsgIHJldHVybiAoc3RyY21wIChidWYsICI1NSAzMyIpICE9IDApOwotK31dLCBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD15ZXMsIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PW5vLAotKyAgICAgIFsKLSsgICAgICAgIEFDX0VHUkVQX0NQUChub3Rwb3NpeCwgWwotKyNpZiBkZWZpbmVkIF9fTmV0QlNEX18gfHwgZGVmaW5lZCBfTVNDX1ZFUiB8fCBkZWZpbmVkIF9fTUlOR1czMl9fIHx8IGRlZmluZWQgX19DWUdXSU5fXwotKyAgbm90cG9zaXgKLSsjZW5kaWYKLSsgICAgICAgIF0sIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PSJndWVzc2luZyBubyIsCi0rICAgICAgICAgICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3NpbmcgeWVzIikKLSsgICAgICBdKQotKyAgICBdKQotKyAgY2FzZSAkZ3RfY3ZfZnVuY19wcmludGZfcG9zaXggaW4KLSsgICAgKnllcykKLSsgICAgICBBQ19ERUZJTkUoSEFWRV9QT1NJWF9QUklOVEYsIDEsCi0rICAgICAgICBbRGVmaW5lIGlmIHlvdXIgcHJpbnRmKCkgZnVuY3Rpb24gc3VwcG9ydHMgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMuXSkKLSsgICAgICA7OwotKyAgZXNhYwotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3Byb2d0ZXN0Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9wcm9ndGVzdC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk5MDY1MTU2OCAtMDQwMAotQEAgLTAsMCArMSw5MSBAQAotKyMgcHJvZ3Rlc3QubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk2LgotKwotKyMgU2VhcmNoIHBhdGggZm9yIGEgcHJvZ3JhbSB3aGljaCBwYXNzZXMgdGhlIGdpdmVuIHRlc3QuCi0rCi0rZG5sIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoVkFSSUFCTEUsIFBST0ctVE8tQ0hFQ0stRk9SLAotK2RubCAgIFRFU1QtUEVSRk9STUVELU9OLUZPVU5EX1BST0dSQU0gWywgVkFMVUUtSUYtTk9ULUZPVU5EIFssIFBBVEhdXSkKLStBQ19ERUZVTihbQU1fUEFUSF9QUk9HX1dJVEhfVEVTVF0sCi0rWwotKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KLSsjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLStpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotKyAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotKyAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotKyAgY2htb2QgK3ggY29uZiQkLnNoCi0rICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICBQQVRIX1NFUEFSQVRPUj0nOycKLSsgIGVsc2UKLSsgICAgUEFUSF9TRVBBUkFUT1I9OgotKyAgZmkKLSsgIHJtIC1mIGNvbmYkJC5zaAotK2ZpCi0rCi0rIyBGaW5kIG91dCBob3cgdG8gdGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCi0rIyBhcyBzeXN0ZW1zIG1heSB1c2UgbWV0aG9kcyBvdGhlciB0aGFuIG1vZGUgYml0cyB0byBkZXRlcm1pbmUgZXhlY3V0YWJpbGl0eS4KLStjYXQgPmNvbmYkJC5maWxlIDw8X0FTRU9GCi0rIyEgL2Jpbi9zaAotK2V4aXQgMAotK19BU0VPRgotK2NobW9kICt4IGNvbmYkJC5maWxlCi0raWYgdGVzdCAteCBjb25mJCQuZmlsZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAteCIKLStlbHNlCi0rICBhY19leGVjdXRhYmxlX3A9InRlc3QgLWYiCi0rZmkKLStybSAtZiBjb25mJCQuZmlsZQotKwotKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJDIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkMjsgYWNfd29yZD1bJF0yCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGFjX3dvcmRdKQotK0FDX0NBQ0hFX1ZBTChhY19jdl9wYXRoXyQxLAotK1tjYXNlICJbJF0kMSIgaW4KLSsgIFtbXFwvXV0qIHwgPzpbW1xcL11dKikKLSsgICAgYWNfY3ZfcGF0aF8kMT0iWyRdJDEiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotKyAgICA7OwotKyAgKikKLSsgICAgYWNfc2F2ZV9JRlM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rICAgIGZvciBhY19kaXIgaW4gaWZlbHNlKFskNV0sICwgJFBBVEgsIFskNV0pOyBkbwotKyAgICAgIElGUz0iJGFjX3NhdmVfSUZTIgotKyAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICAgICAgICBpZiAkYWNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICAgICAgICBpZiBbJDNdOyB0aGVuCi0rICAgICAgICAgICAgYWNfY3ZfcGF0aF8kMT0iJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSsgICAgICAgICAgICBicmVhayAyCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgZG9uZQotKyAgICBJRlM9IiRhY19zYXZlX0lGUyIKLStkbmwgSWYgbm8gNHRoIGFyZyBpcyBnaXZlbiwgbGVhdmUgdGhlIGNhY2hlIHZhcmlhYmxlIHVuc2V0LAotK2RubCBzbyBBQ19QQVRIX1BST0dTIHdpbGwga2VlcCBsb29raW5nLgotK2lmZWxzZShbJDRdLCAsICwgWyAgdGVzdCAteiAiWyRdYWNfY3ZfcGF0aF8kMSIgJiYgYWNfY3ZfcGF0aF8kMT0iJDQiCi0rXSlkbmwKLSsgICAgOzsKLStlc2FjXSlkbmwKLSskMT0iJGFjX2N2X3BhdGhfJDEiCi0raWYgdGVzdCBpZmVsc2UoWyQ0XSwgLCBbLW4gIlskXSQxIl0sIFsiWyRdJDEiICE9ICIkNCJdKTsgdGhlbgotKyAgQUNfTVNHX1JFU1VMVChbJF0kMSkKLStlbHNlCi0rICBBQ19NU0dfUkVTVUxUKG5vKQotK2ZpCi0rQUNfU1VCU1QoJDEpZG5sCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvc2lnbmVkLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9zaWduZWQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45OTY2NTA2NTYgLTA0MDAKLUBAIC0wLDAgKzEsMTkgQEAKLSsjIHNpZ25lZC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEwLjQwKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbYmhfQ19TSUdORURdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc2lnbmVkXSwgYmhfY3ZfY19zaWduZWQsCi0rICAgW0FDX1RSWV9DT01QSUxFKCwgW3NpZ25lZCBjaGFyIHg7XSwgYmhfY3ZfY19zaWduZWQ9eWVzLCBiaF9jdl9jX3NpZ25lZD1ubyldKQotKyAgaWYgdGVzdCAkYmhfY3ZfY19zaWduZWQgPSBubzsgdGhlbgotKyAgICBBQ19ERUZJTkUoc2lnbmVkLCAsCi0rICAgICAgICAgICAgICBbRGVmaW5lIHRvIGVtcHR5IGlmIHRoZSBDIGNvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGtleXdvcmQuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvc2l6ZV9tYXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3NpemVfbWF4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDAzNjQ5NTkyIC0wNDAwCi1AQCAtMCwwICsxLDYxIEBACi0rIyBzaXplX21heC5tNCBzZXJpYWwgMgotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2dsX1NJWkVfTUFYXSwKLStbCi0rICBBQ19DSEVDS19IRUFERVJTKHN0ZGludC5oKQotKyAgZG5sIEZpcnN0IHRlc3Qgd2hldGhlciB0aGUgc3lzdGVtIGFscmVhZHkgaGFzIFNJWkVfTUFYLgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgU0laRV9NQVhdKQotKyAgcmVzdWx0PQotKyAgQUNfRUdSRVBfQ1BQKFtGb3VuZCBpdF0sIFsKLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2lmIEhBVkVfU1RESU5UX0gKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rI2lmZGVmIFNJWkVfTUFYCi0rRm91bmQgaXQKLSsjZW5kaWYKLStdLCByZXN1bHQ9eWVzKQotKyAgaWYgdGVzdCAteiAiJHJlc3VsdCI7IHRoZW4KLSsgICAgZG5sIERlZmluZSBpdCBvdXJzZWx2ZXMuIEhlcmUgd2UgYXNzdW1lIHRoYXQgdGhlIHR5cGUgJ3NpemVfdCcgaXMgbm90IHdpZGVyCi0rICAgIGRubCB0aGFuIHRoZSB0eXBlICd1bnNpZ25lZCBsb25nJy4KLSsgICAgZG5sIFRoZSBfQUNfQ09NUFVURV9JTlQgbWFjcm8gd29ya3MgdXAgdG8gTE9OR19NQVgsIHNpbmNlIGl0IHVzZXMgJ2V4cHInLAotKyAgICBkbmwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byB3b3JrIGZyb20gTE9OR19NSU4gdG8gTE9OR19NQVguCi0rICAgIF9BQ19DT01QVVRFX0lOVChbfihzaXplX3QpMCAvIDEwXSwgcmVzX2hpLAotKyAgICAgIFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgcmVzdWx0PT8pCi0rICAgIF9BQ19DT01QVVRFX0lOVChbfihzaXplX3QpMCAlIDEwXSwgcmVzX2xvLAotKyAgICAgIFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgcmVzdWx0PT8pCi0rICAgIF9BQ19DT01QVVRFX0lOVChbc2l6ZW9mIChzaXplX3QpIDw9IHNpemVvZiAodW5zaWduZWQgaW50KV0sIGZpdHNfaW5fdWludCwKLSsgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHJlc3VsdD0/KQotKyAgICBpZiB0ZXN0ICIkZml0c19pbl91aW50IiA9IDE7IHRoZW4KLSsgICAgICBkbmwgRXZlbiB0aG91Z2ggU0laRV9NQVggZml0cyBpbiBhbiB1bnNpZ25lZCBpbnQsIGl0IG11c3QgYmUgb2YgdHlwZQotKyAgICAgIGRubCAndW5zaWduZWQgbG9uZycgaWYgdGhlIHR5cGUgJ3NpemVfdCcgaXMgdGhlIHNhbWUgYXMgJ3Vuc2lnbmVkIGxvbmcnLgotKyAgICAgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rICAgICAgICBleHRlcm4gc2l6ZV90IGZvbzsKLSsgICAgICAgIGV4dGVybiB1bnNpZ25lZCBsb25nIGZvbzsKLSsgICAgICAgIF0sIFtdLCBmaXRzX2luX3VpbnQ9MCkKLSsgICAgZmkKLSsgICAgaWYgdGVzdCAteiAiJHJlc3VsdCI7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkZml0c19pbl91aW50IiA9IDE7IHRoZW4KLSsgICAgICAgIHJlc3VsdD0iJHJlc19oaSRyZXNfbG8iVQotKyAgICAgIGVsc2UKLSsgICAgICAgIHJlc3VsdD0iJHJlc19oaSRyZXNfbG8iVUwKLSsgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgZG5sIFNob3VsZG4ndCBoYXBwZW4sIGJ1dCB3aG8ga25vd3MuLi4KLSsgICAgICByZXN1bHQ9J34oc2l6ZV90KTAnCi0rICAgIGZpCi0rICBmaQotKyAgQUNfTVNHX1JFU1VMVChbJHJlc3VsdF0pCi0rICBpZiB0ZXN0ICIkcmVzdWx0IiAhPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKFtTSVpFX01BWF0sIFskcmVzdWx0XSwKLSsgICAgICBbRGVmaW5lIGFzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHR5cGUgJ3NpemVfdCcsIGlmIHRoZSBzeXN0ZW0gZG9lc24ndCBkZWZpbmUgaXQuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvc3RkaW50X2gubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3N0ZGludF9oLm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDA5NjQ4NjgwIC0wNDAwCi1AQCAtMCwwICsxLDI4IEBACi0rIyBzdGRpbnRfaC5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYIGlmIDxzdGRpbnQuaD4gZXhpc3RzLAotKyMgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuCi0rCi0rQUNfREVGVU4oW2ptX0FDX0hFQURFUl9TVERJTlRfSF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdGRpbnQuaF0sIGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaCwKLSsgIFtBQ19UUllfQ09NUElMRSgKLSsgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+XSwKLSsgICAgW3VpbnRtYXhfdCBpID0gKHVpbnRtYXhfdCkgLTE7XSwKLSsgICAgam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oPXllcywKLSsgICAgam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oPW5vKV0pCi0rICBpZiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfc3RkaW50X2ggPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgPHN0ZGludC5oPiBleGlzdHMsIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LAotKyAgICAgICBhbmQgZGVjbGFyZXMgdWludG1heF90LiBdKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC91aW50bWF4X3QubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3VpbnRtYXhfdC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAyMTY0Njg1NiAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgdWludG1heF90Lm00IHNlcmlhbCA3IChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rQUNfUFJFUkVRKDIuMTMpCi0rCi0rIyBEZWZpbmUgdWludG1heF90IHRvICd1bnNpZ25lZCBsb25nJyBvciAndW5zaWduZWQgbG9uZyBsb25nJwotKyMgaWYgaXQgaXMgbm90IGFscmVhZHkgZGVmaW5lZCBpbiA8c3RkaW50Lmg+IG9yIDxpbnR0eXBlcy5oPi4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9VSU5UTUFYX1RdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9TVERJTlRfSF0pCi0rICBpZiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCA9IG5vICYmIHRlc3QgJGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaCA9IG5vOyB0aGVuCi0rICAgIEFDX1JFUVVJUkUoW2ptX0FDX1RZUEVfVU5TSUdORURfTE9OR19MT05HXSkKLSsgICAgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcgPSB5ZXMgXAotKyAgICAgICYmIGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcgbG9uZycgXAotKyAgICAgIHx8IGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcnCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRCh1aW50bWF4X3QsICRhY190eXBlLAotKyAgICAgIFtEZWZpbmUgdG8gdW5zaWduZWQgbG9uZyBvciB1bnNpZ25lZCBsb25nIGxvbmcKLSsgICAgICAgaWYgPHN0ZGludC5oPiBhbmQgPGludHR5cGVzLmg+IGRvbid0IGRlZmluZS5dKQotKyAgZWxzZQotKyAgICBBQ19ERUZJTkUoSEFWRV9VSU5UTUFYX1QsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3VpbnRtYXhfdCcgdHlwZSBpbiA8c3RkaW50Lmg+IG9yIDxpbnR0eXBlcy5oPi5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC91bG9uZ2xvbmcubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3Vsb25nbG9uZy5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAyODY0NTc5MiAtMDQwMAotQEAgLTAsMCArMSwyNSBAQAotKyMgdWxvbmdsb25nLm00IHNlcmlhbCAzCi0rZG5sIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9VTlNJR05FRF9MT05HX0xPTkcgaWYgJ3Vuc2lnbmVkIGxvbmcgbG9uZycgd29ya3MuCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfVU5TSUdORURfTE9OR19MT05HXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHVuc2lnbmVkIGxvbmcgbG9uZ10sIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nLAotKyAgW0FDX1RSWV9MSU5LKFt1bnNpZ25lZCBsb25nIGxvbmcgdWxsID0gMVVMTDsgaW50IGkgPSA2MztdLAotKyAgICBbdW5zaWduZWQgbG9uZyBsb25nIHVsbG1heCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xOwotKyAgICAgcmV0dXJuIHVsbCA8PCBpIHwgdWxsID4+IGkgfCB1bGxtYXggLyB1bGwgfCB1bGxtYXggJSB1bGw7XSwKLSsgICAgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmc9eWVzLAotKyAgICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZz1ubyldKQotKyAgaWYgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfVU5TSUdORURfTE9OR19MT05HLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd1bnNpZ25lZCBsb25nIGxvbmcnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvd2NoYXJfdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvd2NoYXJfdC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAzNDY0NDg4MCAtMDQwMAotQEAgLTAsMCArMSwyMiBAQAotKyMgd2NoYXJfdC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLStkbmwgVGVzdCB3aGV0aGVyIDxzdGRkZWYuaD4gaGFzIHRoZSAnd2NoYXJfdCcgdHlwZS4KLStkbmwgUHJlcmVxdWlzaXRlOiBBQ19QUk9HX0NDCi0rCi0rQUNfREVGVU4oW2d0X1RZUEVfV0NIQVJfVF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3Y2hhcl90XSwgZ3RfY3ZfY193Y2hhcl90LAotKyAgICBbQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsgICAgICAgd2NoYXJfdCBmb28gPSAod2NoYXJfdCknXDAnO10sICwKLSsgICAgICAgZ3RfY3ZfY193Y2hhcl90PXllcywgZ3RfY3ZfY193Y2hhcl90PW5vKV0pCi0rICBpZiB0ZXN0ICRndF9jdl9jX3djaGFyX3QgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfV0NIQVJfVCwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3djaGFyX3QnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvd2ludF90Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC93aW50X3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wNDA2NDM5NjggLTA0MDAKLUBAIC0wLDAgKzEsMjIgQEAKLSsjIHdpbnRfdC5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciA8d2NoYXIuaD4gaGFzIHRoZSAnd2ludF90JyB0eXBlLgotK2RubCBQcmVyZXF1aXNpdGU6IEFDX1BST0dfQ0MKLSsKLStBQ19ERUZVTihbZ3RfVFlQRV9XSU5UX1RdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2ludF90XSwgZ3RfY3ZfY193aW50X3QsCi0rICAgIFtBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHdjaGFyLmg+Ci0rICAgICAgIHdpbnRfdCBmb28gPSAod2NoYXJfdCknXDAnO10sICwKLSsgICAgICAgZ3RfY3ZfY193aW50X3Q9eWVzLCBndF9jdl9jX3dpbnRfdD1ubyldKQotKyAgaWYgdGVzdCAkZ3RfY3ZfY193aW50X3QgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfV0lOVF9ULCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnd2ludF90JyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3hzaXplLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC94c2l6ZS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjA0NzY0MjkwNCAtMDQwMAotQEAgLTAsMCArMSwxNCBAQAotKyMgeHNpemUubTQgc2VyaWFsIDIKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rQUNfREVGVU4oW2dsX1hTSVpFXSwKLStbCi0rICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBsaWIveHNpemUuaC4KLSsgIEFDX1JFUVVJUkUoW2dsX1NJWkVfTUFYXSkKLSsgIEFDX0NIRUNLX0hFQURFUlMoc3RkaW50LmgpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvTWFrZWZpbGUuYW0JMTk5OC0xMi0zMCAwNjoxOTo0MC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL01ha2VmaWxlLmFtCTIwMDQtMDktMTIgMTQ6NDA6MzUuMTIxNjMxNjU2IC0wNDAwCi1AQCAtMSw1ICsxLDUgQEAKLSBTVUJESVJTID0gbGliIGludGwgc3JjIHBvIG1hbiB0ZXN0c3VpdGUKLS1FWFRSQV9ESVNUID0gY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKLStFWFRSQV9ESVNUID0gY29uZmlnLnJwYXRoICBjaGVjay5scnpzeiBDT01QQVRBQklMSVRZIFJFQURNRS5jdnMgUkVBRE1FLmlzZG40bGludXggXAotIAlSRUFETUUuZ2V0dGV4dCBycG1yYyBidWlsZHJwbSBzeXN0eXBlLmluIGZhc3RjaGVjay5zaCBSRUFETUUudGVzdHMgXAotIAliZW9zLXJ1bnBpcGVkLmMgZmFzdGNoZWNrLmJlb3MKLSBub2luc3RfU0NSSVBUUz1zeXN0eXBlCi1AQCAtODMsMyArODMsNSBAQAotIHJwbTogJChQUikudGFyLmd6IFNwZWNmaWxlCi0gCSQoc3JjZGlyKS9idWlsZHJwbSAkKHNyY2RpcikKLSAKLSsKLStBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9NYWtlZmlsZS5pbgkxOTk4LTEyLTMwIDExOjMxOjQwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvTWFrZWZpbGUuaW4JMjAwNC0wOS0xMiAxNDo0MDozNS4xMDk2MzM0ODAgLTA0MDAKLUBAIC0xMjUsNyArMTI1LDcgQEAKLSAJICAmJiBDT05GSUdfRklMRVM9JEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotIAotICQoQUNMT0NBTF9NNCk6ICBjb25maWd1cmUuaW4gIGFjaW5jbHVkZS5tNAotLQljZCAkKHNyY2RpcikgJiYgJChBQ0xPQ0FMKQotKwljZCAkKHNyY2RpcikgJiYgJChBQ0xPQ0FMKSAtSSBtNAotIAotIGNvbmZpZy5zdGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUKLSAJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjawotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9ta2luc3RhbGxkaXJzCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9ta2luc3RhbGxkaXJzCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzM3NzUwODI0IC0wNDAwCi1AQCAtMSwzNCArMSwxNTAgQEAKLSAjISAvYmluL3NoCi0gIyBta2luc3RhbGxkaXJzIC0tLSBtYWtlIGRpcmVjdG9yeSBoaWVyYXJjaHkKLS0jIEF1dGhvcjogTm9haCBGcmllZG1hbiA8ZnJpZWRtYW5AcHJlcC5haS5taXQuZWR1PgotKwotK3NjcmlwdHZlcnNpb249MjAwNC0wMi0xNS4yMAotKwotKyMgT3JpZ2luYWwgYXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBwcmVwLmFpLm1pdC5lZHU+Ci0gIyBDcmVhdGVkOiAxOTkzLTA1LTE2Ci0tIyBMYXN0IG1vZGlmaWVkOiAxOTk1LTAzLTA1Ci0tIyBQdWJsaWMgZG9tYWluCi0rIyBQdWJsaWMgZG9tYWluLgotKyMKLSsjIFRoaXMgZmlsZSBpcyBtYWludGFpbmVkIGluIEF1dG9tYWtlLCBwbGVhc2UgcmVwb3J0Ci0rIyBidWdzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4gb3Igc2VuZCBwYXRjaGVzIHRvCi0rIyA8YXV0b21ha2UtcGF0Y2hlc0BnbnUub3JnPi4KLSAKLSBlcnJzdGF0dXM9MAotK2Rpcm1vZGU9IiIKLSAKLS1mb3IgZmlsZSBpbiAkezErIiRAIn0gOyBkbwotLSAgIHNldCBmbm9yZCBgZWNobyAiOiRmaWxlIiB8IHNlZCAtbmUgJ3MvXjpcLy8jLztzL146Ly87cy9cLy8gL2c7cy9eIy9cLy87cCdgCi0tICAgc2hpZnQKLSt1c2FnZT0iXAotK1VzYWdlOiBta2luc3RhbGxkaXJzIFstaF0gWy0taGVscF0gWy0tdmVyc2lvbl0gWy1tIE1PREVdIERJUiAuLi4KLSAKLS0gICBwYXRoY29tcD0KLS0gICBmb3IgZCBpbiAkezErIiRAIn0gOyBkbwotLSAgICAgcGF0aGNvbXA9IiRwYXRoY29tcCRkIgotLSAgICAgY2FzZSAiJHBhdGhjb21wIiBpbgotLSAgICAgICAtKiApIHBhdGhjb21wPS4vJHBhdGhjb21wIDs7Ci0tICAgICBlc2FjCi0rQ3JlYXRlIGVhY2ggZGlyZWN0b3J5IERJUiAod2l0aCBtb2RlIE1PREUsIGlmIHNwZWNpZmllZCksIGluY2x1ZGluZyBhbGwKLStsZWFkaW5nIGZpbGUgbmFtZSBjb21wb25lbnRzLgotIAotLSAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0tICAgICAgICBlY2hvICJta2RpciAkcGF0aGNvbXAiIDE+JjIKLS0gICAgICAgIG1rZGlyICIkcGF0aGNvbXAiID4gL2Rldi9udWxsIDI+JjEgfHwgbGFzdGVycj0kPwotLSAgICAgZmkKLStSZXBvcnQgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKLSAKLS0gICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotKyMgcHJvY2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzCi0rd2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCi0rICBjYXNlICQxIGluCi0rICAgIC1oIHwgLS1oZWxwIHwgLS1oKikgICAgICAgICAjIC1oIGZvciBoZWxwCi0rICAgICAgZWNobyAiJHVzYWdlIgotKyAgICAgIGV4aXQgMAotKyAgICAgIDs7Ci0rICAgIC1tKSAgICAgICAgICAgICAgICAgICAgICAgICAjIC1tIFBFUk0gYXJnCi0rICAgICAgc2hpZnQKLSsgICAgICB0ZXN0ICQjIC1lcSAwICYmIHsgZWNobyAiJHVzYWdlIiAxPiYyOyBleGl0IDE7IH0KLSsgICAgICBkaXJtb2RlPSQxCi0rICAgICAgc2hpZnQKLSsgICAgICA7OwotKyAgICAtLXZlcnNpb24pCi0rICAgICAgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iCi0rICAgICAgZXhpdCAwCi0rICAgICAgOzsKLSsgICAgLS0pICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcCBvcHRpb24gcHJvY2Vzc2luZwotKyAgICAgIHNoaWZ0Ci0rICAgICAgYnJlYWsKLSsgICAgICA7OwotKyAgICAtKikgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmtub3duIG9wdGlvbgotKyAgICAgIGVjaG8gIiR1c2FnZSIgMT4mMgotKyAgICAgIGV4aXQgMQotKyAgICAgIDs7Ci0rICAgICopICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZpcnN0IG5vbi1vcHQgYXJnCi0rICAgICAgYnJlYWsKLSsgICAgICA7OwotKyAgZXNhYwotK2RvbmUKLSsKLStmb3IgZmlsZQotK2RvCi0rICBpZiB0ZXN0IC1kICIkZmlsZSI7IHRoZW4KLSsgICAgc2hpZnQKLSsgIGVsc2UKLSsgICAgYnJlYWsKLSsgIGZpCi0rZG9uZQotKwotK2Nhc2UgJCMgaW4KLSsgIDApIGV4aXQgMCA7OwotK2VzYWMKLSsKLSsjIFNvbGFyaXMgOCdzIG1rZGlyIC1wIGlzbid0IHRocmVhZC1zYWZlLiAgSWYgeW91IG1rZGlyIC1wIGEvYiBhbmQKLSsjIG1rZGlyIC1wIGEvYyBhdCB0aGUgc2FtZSB0aW1lLCBib3RoIHdpbGwgZGV0ZWN0IHRoYXQgYSBpcyBtaXNzaW5nLAotKyMgb25lIHdpbGwgY3JlYXRlIGEsIHRoZW4gdGhlIG90aGVyIHdpbGwgdHJ5IHRvIGNyZWF0ZSBhIGFuZCBkaWUgd2l0aAotKyMgYSAiRmlsZSBleGlzdHMiIGVycm9yLiAgVGhpcyBpcyBhIHByb2JsZW0gd2hlbiBjYWxsaW5nIG1raW5zdGFsbGRpcnMKLSsjIGZyb20gYSBwYXJhbGxlbCBtYWtlLiAgV2UgdXNlIC0tdmVyc2lvbiBpbiB0aGUgcHJvYmUgdG8gcmVzdHJpY3QKLSsjIG91cnNlbHZlcyB0byBHTlUgbWtkaXIsIHdoaWNoIGlzIHRocmVhZC1zYWZlLgotK2Nhc2UgJGRpcm1vZGUgaW4KLSsgICcnKQotKyAgICBpZiBta2RpciAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAhIC1kIC4vLS12ZXJzaW9uOyB0aGVuCi0rICAgICAgZWNobyAibWtkaXIgLXAgLS0gJCoiCi0rICAgICAgZXhlYyBta2RpciAtcCAtLSAiJEAiCi0rICAgIGVsc2UKLSsgICAgICAjIE9uIE5leHRTdGVwIGFuZCBPcGVuU3RlcCwgdGhlIGBta2RpcicgY29tbWFuZCBkb2VzIG5vdAotKyAgICAgICMgcmVjb2duaXplIGFueSBvcHRpb24uICBJdCB3aWxsIGludGVycHJldCBhbGwgb3B0aW9ucyBhcwotKyAgICAgICMgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLCBhbmQgdGhlbiBhYm9ydCBiZWNhdXNlIGAuJyBhbHJlYWR5Ci0rICAgICAgIyBleGlzdHMuCi0rICAgICAgdGVzdCAtZCAuLy1wICYmIHJtZGlyIC4vLXAKLSsgICAgICB0ZXN0IC1kIC4vLS12ZXJzaW9uICYmIHJtZGlyIC4vLS12ZXJzaW9uCi0rICAgIGZpCi0rICAgIDs7Ci0rICAqKQotKyAgICBpZiBta2RpciAtbSAiJGRpcm1vZGUiIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgICB0ZXN0ICEgLWQgLi8tLXZlcnNpb247IHRoZW4KLSsgICAgICBlY2hvICJta2RpciAtbSAkZGlybW9kZSAtcCAtLSAkKiIKLSsgICAgICBleGVjIG1rZGlyIC1tICIkZGlybW9kZSIgLXAgLS0gIiRAIgotKyAgICBlbHNlCi0rICAgICAgIyBDbGVhbiB1cCBhZnRlciBOZXh0U3RlcCBhbmQgT3BlblN0ZXAgbWtkaXIuCi0rICAgICAgZm9yIGQgaW4gLi8tbSAuLy1wIC4vLS12ZXJzaW9uICIuLyRkaXJtb2RlIjsKLSsgICAgICBkbwotKyAgICAgICAgdGVzdCAtZCAkZCAmJiBybWRpciAkZAotKyAgICAgIGRvbmUKLSsgICAgZmkKLSsgICAgOzsKLStlc2FjCi0rCi0rZm9yIGZpbGUKLStkbwotKyAgc2V0IGZub3JkIGBlY2hvICI6JGZpbGUiIHwgc2VkIC1uZSAncy9eOlwvLyMvO3MvXjovLztzL1wvLyAvZztzL14jL1wvLztwJ2AKLSsgIHNoaWZ0Ci0rCi0rICBwYXRoY29tcD0KLSsgIGZvciBkCi0rICBkbwotKyAgICBwYXRoY29tcD0iJHBhdGhjb21wJGQiCi0rICAgIGNhc2UgJHBhdGhjb21wIGluCi0rICAgICAgLSopIHBhdGhjb21wPS4vJHBhdGhjb21wIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0rICAgICAgZWNobyAibWtkaXIgJHBhdGhjb21wIgotKwotKyAgICAgIG1rZGlyICIkcGF0aGNvbXAiIHx8IGxhc3RlcnI9JD8KLSsKLSsgICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSAJZXJyc3RhdHVzPSRsYXN0ZXJyCi0tICAgICBmaQotKyAgICAgIGVsc2UKLSsJaWYgdGVzdCAhIC16ICIkZGlybW9kZSI7IHRoZW4KLSsJICBlY2hvICJjaG1vZCAkZGlybW9kZSAkcGF0aGNvbXAiCi0rCSAgbGFzdGVycj0iIgotKwkgIGNobW9kICIkZGlybW9kZSIgIiRwYXRoY29tcCIgfHwgbGFzdGVycj0kPwotIAotLSAgICAgcGF0aGNvbXA9IiRwYXRoY29tcC8iCi0tICAgZG9uZQotKwkgIGlmIHRlc3QgISAteiAiJGxhc3RlcnIiOyB0aGVuCi0rCSAgICBlcnJzdGF0dXM9JGxhc3RlcnIKLSsJICBmaQotKwlmaQotKyAgICAgIGZpCi0rICAgIGZpCi0rCi0rICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgotKyAgZG9uZQotIGRvbmUKLSAKLSBleGl0ICRlcnJzdGF0dXMKLSsKLSsjIExvY2FsIFZhcmlhYmxlczoKLSsjIG1vZGU6IHNoZWxsLXNjcmlwdAotKyMgc2gtaW5kZW50YXRpb246IDIKLSsjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKLSsjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKLSsjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotKyMgdGltZS1zdGFtcC1lbmQ6ICIkIgotKyMgRW5kOgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9ib2xkcXVvdC5zZWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2JvbGRxdW90LnNlZAkyMDA0LTA5LTEyIDE0OjQwOjM0LjcyMzY5MjE1MiAtMDQwMAotQEAgLTAsMCArMSwxMCBAQAotK3MvIlwoW14iXSpcKSIv4oCcXDHigJ0vZwotK3MvYFwoW15gJ10qXCknL+KAmFwx4oCZL2cKLStzLyAnXChbXmAnXSpcKScgLyDigJhcMeKAmSAvZwotK3MvICdcKFteYCddKlwpJyQvIOKAmFwx4oCZL2cKLStzL14nXChbXmAnXSpcKScgL+KAmFwx4oCZIC9nCi0rcy/igJzigJ0vIiIvZwotK3Mv4oCcL+KAnBtbMW0vZwotK3Mv4oCdLxtbMG3igJ0vZwotK3Mv4oCYL+KAmBtbMW0vZwotK3Mv4oCZLxtbMG3igJkvZwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9jYXQtaWQtdGJsLmMJMTk5OC0xMi0yOSAwNDoyNDoyNC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMjM0ICswLDAgQEAKLS0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gbHJ6c3oucG90LiAgKi8KLS0KLS0jaWYgSEFWRV9DT05GSUdfSAotLSMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCIKLS0KLS1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKLS0gIHsiIiwgMX0sCi0tICB7ImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIsIDJ9LAotLSAgeyJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIiwgM30sCi0tICB7ImNvbW1hbmQgdHJpZXMiLCA0fSwKLS0gIHsicGFja2V0bGVuZ3RoIiwgNX0sCi0tICB7InBhY2tldGxlbmd0aCBvdXQgb2YgcmFuZ2UgMjQuLiVsZCIsIDZ9LAotLSAgeyJmcmFtZWxlbmd0aCIsIDd9LAotLSAgeyJmcmFtZWxlbmd0aCBvdXQgb2YgcmFuZ2UgMzIuLiVsZCIsIDh9LAotLSAgeyJtaW5fYnBzIiwgOX0sCi0tICB7Im1pbl9icHMgbXVzdCBiZSA+PSAwIiwgMTB9LAotLSAgeyJtaW5fYnBzX3RpbWUiLCAxMX0sCi0tICB7Im1pbl9icHNfdGltZSBtdXN0IGJlID4gMSIsIDEyfSwKLS0gIHsiaG91ciB0byBsYXJnZSAoMC4uMjMpIiwgMTN9LAotLSAgeyJ1bnBhcnNhYmxlIHN0b3AgdGltZVxuIiwgMTR9LAotLSAgeyJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIsIDE1fSwKLS0gIHsic3RvcCB0aW1lIHRvIHNtYWxsIiwgMTZ9LAotLSAgeyJzdG9wLWF0IiwgMTd9LAotLSAgeyJ0aW1lb3V0IiwgMTh9LAotLSAgeyJ0aW1lb3V0IG91dCBvZiByYW5nZSAxMC4uMTAwMCIsIDE5fSwKLS0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBjYW4ndCBkbyB0aGF0IHVuZGVyIHJlc3RyaWN0ZWQgc2hlbGxcbiIsIDIwfSwKLS0gIHsid2luZG93IHNpemUiLCAyMX0sCi0tICB7ImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIsIDIyfSwKLS0gIHsic3RhcnR1cCBkZWxheSIsIDIzfSwKLS0gIHsib3V0IG9mIG1lbW9yeSIsIDI0fSwKLS0gIHsidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIiwgMjV9LAotLSAgeyJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiLCAyNn0sCi0tICB7IkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIsIDI3fSwKLS0gIHsiaG9zdG5hbWUgdG9vIGxvbmdcbiIsIDI4fSwKLS0gIHsiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIiwgMjl9LAotLSAgeyJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iLCAzMH0sCi0tICB7IlRyYW5zZmVyIGluY29tcGxldGVcbiIsIDMxfSwKLS0gIHsiVHJhbnNmZXIgY29tcGxldGVcbiIsIDMyfSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBvcGVuIHRtcGZpbGUgJXM6ICVzIiwgMzN9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IGxzdGF0IHRtcGZpbGUgJXM6ICVzIiwgMzR9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogYXZvaWRpbmcgc3ltbGluayB0cmFwIiwgMzV9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IHdyaXRlIHRvIHRtcGZpbGUgJXM6ICVzIiwgMzZ9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogZmFpbGVkIiwgMzd9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogb2siLCAzOH0sCi0tICB7InRjcCBwcm90b2NvbCBpbml0IGZhaWxlZFxuIiwgMzl9LAotLSAgeyJBbnN3ZXJpbmcgVElNRVNZTkMgYXQgJXMiLCA0MH0sCi0tICB7InRpbWV6b25lIiwgNDF9LAotLSAgeyJ0aW1lem9uZSB1bmtub3duIiwgNDJ9LAotLSAgeyJDYW4ndCBvcGVuIGFueSByZXF1ZXN0ZWQgZmlsZXMuIiwgNDN9LAotLSAgeyJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIiwgNDR9LAotLSAgeyJjYW5ub3Qgb3BlbiAlcyIsIDQ1fSwKLS0gIHsiaXMgbm90IGEgZmlsZTogJXMiLCA0Nn0sCi0tICB7IiVzLyVzOiBlcnJvciBvY2N1cmVkIiwgNDd9LAotLSAgeyJza2lwcGVkOiAlcyIsIDQ4fSwKLS0gIHsiJXMvJXM6IHNraXBwZWQiLCA0OX0sCi0tICB7IkJ5dGVzIFNlbnQ6JTdsZCAgIEJQUzolLThsZCAgICAgICAgICAgICAgICAgICAgICAgIFxuIiwgNTB9LAotLSAgeyJTZW5kaW5nICVzLCAlbGQgYmxvY2tzOiAiLCA1MX0sCi0tICB7IkdpdmUgeW91ciBsb2NhbCBYTU9ERU0gcmVjZWl2ZSBjb21tYW5kIG5vdy4iLCA1Mn0sCi0tICB7IlNlbmRpbmc6ICVzXG4iLCA1M30sCi0tICB7IlRpbWVvdXQgb24gcGF0aG5hbWUiLCA1NH0sCi0tICB7IlJlY2VpdmVyIENhbmNlbGxlZCIsIDU1fSwKLS0gIHsiTm8gQUNLIG9uIEVPVCIsIDU2fSwKLS0gIHsiWG1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTd9LAotLSAgeyJZbW9kZW0gc2VjdG9ycy9rYnl0ZXMgc2VudDogJTNkLyUyZGsiLCA1OH0sCi0tICB7IkNhbmNlbGxlZCIsIDU5fSwKLS0gIHsiVGltZW91dCBvbiBzZWN0b3IgQUNLIiwgNjB9LAotLSAgeyJOQUsgb24gc2VjdG9yIiwgNjF9LAotLSAgeyJHb3QgYnVyc3QgZm9yIHNlY3RvciBBQ0siLCA2Mn0sCi0tICB7IkdvdCAlMDJ4IGZvciBzZWN0b3IgQUNLIiwgNjN9LAotLSAgeyJSZXRyeSBDb3VudCBFeGNlZWRlZCIsIDY0fSwKLS0gIHsiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwgNjV9LAotLSAgeyIlcyB2ZXJzaW9uICVzXG4iLCA2Nn0sCi0tICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZSAuLi5cbiIsIDY3fSwKLS0gIHsiICAgb3I6ICVzIFtvcHRpb25zXSAte2N8aX0gQ09NTUFORFxuIiwgNjh9LAotLSAgeyJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgNjl9LAotLSAgeyJcCi0tICAgIChYKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFhNT0RFTSBvbmx5XG5cCi0tICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG5cCi0tICAgIChaKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFpNT0RFTSBvbmx5XG4iLCA3MH0sCi0tICB7IlwKLS0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKLS0gIC0yLCAtLXR3b3N0b3AgICAgICAgICAgICAgICB1c2UgMiBzdG9wIGJpdHNcblwKLS0gIC00LCAtLXRyeS00ayAgICAgICAgICAgICAgICBnbyB1cCB0byA0SyBibG9ja3NpemVcblwKLS0gICAgICAtLXN0YXJ0LTRrICAgICAgICAgICAgICBzdGFydCB3aXRoIDRLIGJsb2Nrc2l6ZSAoZG9lc24ndCB0cnkgOClcblwKLS0gIC04LCAtLXRyeS04ayAgICAgICAgICAgICAgICBnbyB1cCB0byA4SyBibG9ja3NpemVcblwKLS0gICAgICAtLXN0YXJ0LThrICAgICAgICAgICAgICBzdGFydCB3aXRoIDhLIGJsb2Nrc2l6ZVxuXAotLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCi0tICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCi0tICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAotLSAgLWMsIC0tY29tbWFuZCBDT01NQU5EICAgICAgIGV4ZWN1dGUgcmVtb3RlIGNvbW1hbmQgQ09NTUFORCAoWilcblwKLS0gIC1DLCAtLWNvbW1hbmQtdHJpZXMgTiAgICAgICB0cnkgTiB0aW1lcyB0byBleGVjdXRlIGEgY29tbWFuZCAoWilcblwKLS0gIC1kLCAtLWRvdC10by1zbGFzaCAgICAgICAgICBjaGFuZ2UgJy4nIHRvICcvJyBpbiBwYXRobmFtZXMgKFkvWilcblwKLS0gICAgICAtLWRlbGF5LXN0YXJ0dXAgTiAgICAgICBzbGVlcCBOIHNlY29uZHMgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG5cCi0tICAtZSwgLS1lc2NhcGUgICAgICAgICAgICAgICAgZXNjYXBlIGFsbCBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCi0tICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgZm9yY2UgcmVjZWl2ZXIgdG8gcmVuYW1lIGZpbGVzIGl0IGFscmVhZHkgaGFzXG5cCi0tICAtZiwgLS1mdWxsLXBhdGggICAgICAgICAgICAgc2VuZCBmdWxsIHBhdGhuYW1lIChZL1opXG5cCi0tICAtaSwgLS1pbW1lZGlhdGUtY29tbWFuZCBDTUQgc2VuZCByZW1vdGUgQ01ELCByZXR1cm4gaW1tZWRpYXRlbHkgKFopXG5cCi0tICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCi0tICAtaywgLS0xayAgICAgICAgICAgICAgICAgICAgc2VuZCAxMDI0IGJ5dGUgcGFja2V0cyAoWClcblwKLS0gIC1MLCAtLXBhY2tldGxlbiBOICAgICAgICAgICBsaW1pdCBzdWJwYWNrZXQgbGVuZ3RoIHRvIE4gYnl0ZXMgKFopXG5cCi0tICAtbCwgLS1mcmFtZWxlbiBOICAgICAgICAgICAgbGltaXQgZnJhbWUgbGVuZ3RoIHRvIE4gYnl0ZXMgKGw+PUwpIChaKVxuXAotLSAgLW0sIC0tbWluLWJwcyBOICAgICAgICAgICAgIHN0b3AgdHJhbnNtaXNzaW9uIGlmIEJQUyBiZWxvdyBOXG5cCi0tICAtTSwgLS1taW4tYnBzLXRpbWUgTiAgICAgICAgICBmb3IgYXQgbGVhc3QgTiBzZWNvbmRzIChkZWZhdWx0OiAxMjApXG4iLCA3MX0sCi0tICB7IlwKLS0gIC1uLCAtLW5ld2VyICAgICAgICAgICAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIChaKVxuXAotLSAgLU4sIC0tbmV3ZXItb3ItbG9uZ2VyICAgICAgIHNlbmQgZmlsZSBpZiBzb3VyY2UgbmV3ZXIgb3IgbG9uZ2VyIChaKVxuXAotLSAgLW8sIC0tMTYtYml0LWNyYyAgICAgICAgICAgIHVzZSAxNiBiaXQgQ1JDIGluc3RlYWQgb2YgMzIgYml0IENSQyAoWilcblwKLS0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyXG5cCi0tICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlIChaKVxuXAotLSAgLXIsIC0tcmVzdW1lICAgICAgICAgICAgICAgIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAotLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKLS0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBxdWlldCAobm8gcHJvZ3Jlc3MgcmVwb3J0cylcblwKLS0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKLS0gICAgICAtLXRjcCAgICAgICAgICAgICAgICAgICBidWlsZCBhIFRDUCBjb25uZWN0aW9uIHRvIHRyYW5zbWl0IGZpbGVzXG5cCi0tICAgICAgLS10Y3Atc2VydmVyICAgICAgICAgICAgb3BlbiBzb2NrZXQsIHdhaXQgZm9yIGNvbm5lY3Rpb25cblwKLS0gIC11LCAtLXVubGluayAgICAgICAgICAgICAgICB1bmxpbmsgZmlsZSBhZnRlciB0cmFuc21pc3Npb25cblwKLS0gIC1VLCAtLXVucmVzdHJpY3QgICAgICAgICAgICB0dXJuIG9mZiByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCi0tICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKLS0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKLS0gIC1YLCAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCi0tICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzXG5cCi0tICAtWSwgLS1vdmVyd3JpdGUtb3Itc2tpcCAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLCBlbHNlIHNraXBcblwKLS0gICAgICAtLXltb2RlbSAgICAgICAgICAgICAgICB1c2UgWU1PREVNIHByb3RvY29sXG5cCi0tICAtWiwgLS16bW9kZW0gICAgICAgICAgICAgICAgdXNlIFpNT0RFTSBwcm90b2NvbFxuXAotLVxuXAotLXNob3J0IG9wdGlvbnMgdXNlIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbG9uZyBvbmVzXG4iLCA3Mn0sCi0tICB7ImdvdCBaUlFJTklUIiwgNzN9LAotLSAgeyJnb3QgWkNBTiIsIDc0fSwKLS0gIHsiYmxrbGVuIG5vdyAlZFxuIiwgNzV9LAotLSAgeyJ6c2VuZGZkYXRhOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIsIDc2fSwKLS0gIHsienNlbmRmZGF0YTogcmVhY2hlZCBzdG9wIHRpbWUiLCA3N30sCi0tICB7IkJ5dGVzIFNlbnQ6JTdsZC8lN2xkICAgQlBTOiUtOGxkIEVUQSAlMDJkOiUwMmQgICIsIDc4fSwKLS0gIHsiY2FsY19ibGtsZW46IHJlZHVjZWQgdG8gJWQgZHVlIHRvIGVycm9yXG4iLCA3OX0sCi0tICB7ImNhbGNfYmxrbGVuOiByZXR1cm5lZCBvbGQgdmFsdWUgJWQgZHVlIHRvIGxvdyBicGUgZGlmZlxuIiwgODB9LAotLSAgeyJjYWxjX2Jsa2xlbjogb2xkICVsZCwgbmV3ICVsZCwgZCAlbGRcbiIsIDgxfSwKLS0gIHsiY2FsY19ibGtsZW46IGNhbGMgdG90YWxfYnl0ZXM9JWxkLCBicGU9JWxkLCBlYz0lbGRcbiIsIDgyfSwKLS0gIHsiY2FsY19ibGtsZW46IGJsa2xlbiAlZCwgb2sgJWxkLCBmYWlsZWQgJWxkIC0+ICVsdVxuIiwgODN9LAotLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgJWQgYXMgYmVzdFxuIiwgODR9LAotLSAgeyJcCi0tXG5cCi0tY291bnRlbTogVG90YWwgJWQgJWxkXG4iLCA4NX0sCi0tICB7IkJhZCBlc2NhcGUgc2VxdWVuY2UgJXgiLCA4Nn0sCi0tICB7IlNlbmRlciBDYW5jZWxlZCIsIDg3fSwKLS0gIHsiVElNRU9VVCIsIDg4fSwKLS0gIHsiQmFkIGRhdGEgc3VicGFja2V0IiwgODl9LAotLSAgeyJEYXRhIHN1YnBhY2tldCB0b28gbG9uZyIsIDkwfSwKLS0gIHsiR2FyYmFnZSBjb3VudCBleGNlZWRlZCIsIDkxfSwKLS0gIHsiR290ICVzIiwgOTJ9LAotLSAgeyJSZXRyeSAlZDogIiwgOTN9LAotLSAgeyJkb24ndCBoYXZlIHNldHRpbWVvZmRheSwgd2lsbCBub3Qgc2V0IHRpbWVcbiIsIDk0fSwKLS0gIHsibm90IHJ1bm5pbmcgYXMgcm9vdCAodGhpcyBpcyBnb29kISksIGNhbiBub3Qgc2V0IHRpbWVcbiIsIDk1fSwKLS0gIHsiYnl0ZXNfcGVyX2Vycm9yIiwgOTZ9LAotLSAgeyJieXRlcy1wZXItZXJyb3Igc2hvdWxkIGJlID4xMDAiLCA5N30sCi0tICB7Ik9fU1lOQyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwiLCA5OH0sCi0tICB7ImdhcmJhZ2Ugb24gY29tbWFuZGxpbmUiLCA5OX0sCi0tICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gW2ZpbGVuYW1lLmlmLnhtb2RlbV1cbiIsIDEwMH0sCi0tICB7IlJlY2VpdmUgZmlsZXMgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgMTAxfSwKLS0gIHsiXAotLSAgLSssIC0tYXBwZW5kICAgICAgICAgICAgICAgIGFwcGVuZCB0byBleGlzdGluZyBmaWxlc1xuXAotLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCi0tICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCi0tICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAotLSAgLWMsIC0td2l0aC1jcmMgICAgICAgICAgICAgIFVzZSAxNiBiaXQgQ1JDIChYKVxuXAotLSAgLUMsIC0tYWxsb3ctcmVtb3RlLWNvbW1hbmRzIGFsbG93IGV4ZWN1dGlvbiBvZiByZW1vdGUgY29tbWFuZHMgKFopXG5cCi0tICAtRCwgLS1udWxsICAgICAgICAgICAgICAgICAgd3JpdGUgYWxsIHJlY2VpdmVkIGRhdGEgdG8gL2Rldi9udWxsXG5cCi0tICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAotLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCi0tICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgcmVuYW1lIGFueSBmaWxlcyBhbHJlYWR5IGV4aXN0aW5nXG5cCi0tICAgICAgLS1lcnJvcnMgTiAgICAgICAgICAgICAgZ2VuZXJhdGUgQ1JDIGVycm9yIGV2ZXJ5IE4gYnl0ZXMgKGRlYnVnZ2luZylcblwKLS0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBIZWxwLCBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2VcblwKLS0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAotLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuXAotLSAgLU8sIC0tZGlzYWJsZS10aW1lb3V0cyAgICAgIGRpc2FibGUgdGltZW91dCBjb2RlLCB3YWl0IGZvcmV2ZXIgZm9yIGRhdGFcblwKLS0gICAgICAtLW8tc3luYyAgICAgICAgICAgICAgICBvcGVuIG91dHB1dCBmaWxlKHMpIGluIHN5bmNocm9ub3VzIHdyaXRlIG1vZGVcblwKLS0gIC1wLCAtLXByb3RlY3QgICAgICAgICAgICAgICBwcm90ZWN0IGV4aXN0aW5nIGZpbGVzXG5cCi0tICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQsIG5vIHByb2dyZXNzIHJlcG9ydHNcblwKLS0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICB0cnkgdG8gcmVzdW1lIGludGVycnVwdGVkIGZpbGUgdHJhbnNmZXIgKFopXG5cCi0tICAtUiwgLS1yZXN0cmljdGVkICAgICAgICAgICAgcmVzdHJpY3RlZCwgbW9yZSBzZWN1cmUgbW9kZVxuXAotLSAgLXMsIC0tc3RvcC1hdCB7SEg6TU18K059ICAgIHN0b3AgdHJhbnNtaXNzaW9uIGF0IEhIOk1NIG9yIGluIE4gc2Vjb25kc1xuXAotLSAgLVMsIC0tdGltZXN5bmMgICAgICAgICAgICAgIHJlcXVlc3QgcmVtb3RlIHRpbWUgKHR3aWNlOiBzZXQgbG9jYWwgdGltZSlcblwKLS0gICAgICAtLXN5c2xvZ1s9b2ZmXSAgICAgICAgICB0dXJuIHN5c2xvZyBvbiBvciBvZmYsIGlmIHBvc3NpYmxlXG5cCi0tICAtdCwgLS10aW1lb3V0IE4gICAgICAgICAgICAgc2V0IHRpbWVvdXQgdG8gTiB0ZW50aHMgb2YgYSBzZWNvbmRcblwKLS0gIC11LCAtLWtlZXAtdXBwZXJjYXNlICAgICAgICBrZWVwIHVwcGVyIGNhc2UgZmlsZW5hbWVzXG5cCi0tICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgZGlzYWJsZSByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCi0tICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKLS0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKLS0gIC1YICAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCi0tICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgWWVzLCBjbG9iYmVyIGV4aXN0aW5nIGZpbGUgaWYgYW55XG5cCi0tICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAotLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKLS1cblwKLS1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgMTAyfSwKLS0gIHsiJXMgd2FpdGluZyB0byByZWNlaXZlLiIsIDEwM30sCi0tICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA0fSwKLS0gIHsiJXM6IHJlYWR5IHRvIHJlY2VpdmUgJXMiLCAxMDV9LAotLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkICAgQlBTOiUtNmxkICAgICAgICAgICAgICAgIFxyXG4iLCAxMDZ9LAotLSAgeyJcCi0tXHJcblwKLS0lczogJXMgcmVtb3ZlZC5cclxuIiwgMTA3fSwKLS0gIHsiUGF0aG5hbWUgZmV0Y2ggcmV0dXJuZWQgRU9UIiwgMTA4fSwKLS0gIHsiUmVjZWl2ZWQgZHVwIFNlY3RvciIsIDEwOX0sCi0tICB7IlN5bmMgRXJyb3IiLCAxMTB9LAotLSAgeyJDUkMiLCAxMTF9LAotLSAgeyJDaGVja3N1bSIsIDExMn0sCi0tICB7IlNlY3RvciBudW1iZXIgZ2FyYmxlZCIsIDExM30sCi0tICB7IlNlbmRlciBDYW5jZWxsZWQiLCAxMTR9LAotLSAgeyJHb3QgMCVvIHNlY3RvciBoZWFkZXIiLCAxMTV9LAotLSAgeyJmaWxlIG5hbWUgZW5kcyB3aXRoIGEgLywgc2tpcHBlZDogJXNcbiIsIDExNn0sCi0tICB7InptYW5hZz0lZCwgTHptYW5hZz0lZFxuIiwgMTE3fSwKLS0gIHsiemNvbnY9JWRcbiIsIDExOH0sCi0tICB7ImZpbGUgZXhpc3RzLCBza2lwcGVkOiAlc1xuIiwgMTE5fSwKLS0gIHsiVElNRVNZTkM6IGhlcmUgJWxkLCByZW1vdGUgJWxkLCBkaWZmICVsZCBzZWNvbmRzXG4iLCAxMjB9LAotLSAgeyJUSU1FU1lOQzogY2Fubm90IHNldCB0aW1lOiAlc1xuIiwgMTIxfSwKLS0gIHsiY2Fubm90IHRtcGZpbGUoKSBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiIsIDEyMn0sCi0tICB7IlRvcGlwZSIsIDEyM30sCi0tICB7IlJlY2VpdmluZzogJXNcbiIsIDEyNH0sCi0tICB7IkJsb2NrcyByZWNlaXZlZDogJWQiLCAxMjV9LAotLSAgeyIlczogJXMgZXhpc3RzXG4iLCAxMjZ9LAotLSAgeyIlczpcdFNlY3VyaXR5IFZpb2xhdGlvbiIsIDEyN30sCi0tICB7InJlbW90ZSBjb21tYW5kIGV4ZWN1dGlvbiByZXF1ZXN0ZWQiLCAxMjh9LAotLSAgeyJub3QgZXhlY3V0ZWQiLCAxMjl9LAotLSAgeyJnb3QgWlJJTklUIiwgMTMwfSwKLS0gIHsiU2tpcHBlZCIsIDEzMX0sCi0tICB7InJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCAxMzJ9LAotLSAgeyJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIiwgMTMzfSwKLS0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZC8lN2xkICAgQlBTOiUtNmxkIEVUQSAlMDJkOiUwMmQgICIsIDEzNH0sCi0tICB7ImZnZXRzIGZvciB0Y3AgcHJvdG9jb2wgc3luY2hyb25pemF0aW9uIGZhaWxlZDogIiwgMTM1fSwKLS0gIHsiZmlsZSBjbG9zZSBlcnJvciIsIDEzNn0sCi0tfTsKLS0KLS1pbnQgX21zZ190YmxfbGVuZ3RoID0gMTM2OwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9DaGFuZ2VMb2cJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL0NoYW5nZUxvZwkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc5MzY4MTUxMiAtMDQwMAotQEAgLTEsMyArMSwxNSBAQAotKzIwMDQtMDktMTIgIGdldHRleHRpemUgIDxidWctZ251LWdldHRleHRAZ251Lm9yZz4KLSsKLSsJKiBib2xkcXVvdC5zZWQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGVuQGJvbGRxdW90LmhlYWRlcjogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogZW5AcXVvdC5oZWFkZXI6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGluc2VydC1oZWFkZXIuc2luOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBxdW90LnNlZDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcmVtb3ZlLXBvdGNkYXRlLnNpbjogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogUnVsZXMtcXVvdDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogY2F0LWlkLXRibC5jOiBSZW1vdmUgZmlsZS4KLSsJKiBzdGFtcC1jYXQtaWQ6IFJlbW92ZSBmaWxlLgotKwotIC8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBscnpzei5wb3QuICAqLwotIAotICNpZiBIQVZFX0NPTkZJR19ICi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL2VuQGJvbGRxdW90LmhlYWRlcgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vZW5AYm9sZHF1b3QuaGVhZGVyCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzMxNjkwOTM2IC0wNDAwCi1AQCAtMCwwICsxLDI1IEBACi0rIyBBbGwgdGhpcyBjYXRhbG9nICJ0cmFuc2xhdGVzIiBhcmUgcXVvdGF0aW9uIGNoYXJhY3RlcnMuCi0rIyBUaGUgbXNnaWRzIG11c3QgYmUgQVNDSUkgYW5kIHRoZXJlZm9yZSBjYW5ub3QgY29udGFpbiByZWFsIHF1b3RhdGlvbgotKyMgY2hhcmFjdGVycywgb25seSBzdWJzdGl0dXRlcyBsaWtlIGdyYXZlIGFjY2VudCAoMHg2MCksIGFwb3N0cm9waGUgKDB4MjcpCi0rIyBhbmQgZG91YmxlIHF1b3RlICgweDIyKS4gVGhlc2Ugc3Vic3RpdHV0ZXMgbG9vayBzdHJhbmdlOyBzZWUKLSsjIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91Y3MvcXVvdGVzLmh0bWwKLSsjCi0rIyBUaGlzIGNhdGFsb2cgdHJhbnNsYXRlcyBncmF2ZSBhY2NlbnQgKDB4NjApIGFuZCBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KS4KLSsjIEl0IGFsc28gdHJhbnNsYXRlcyBwYWlycyBvZiBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KQotKyMgYW5kIHBhaXJzIG9mIHF1b3RhdGlvbiBtYXJrICgweDIyKSB0bwotKyMgbGVmdCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxQykgYW5kIHJpZ2h0IGRvdWJsZSBxdW90YXRpb24gbWFyayAoVSsyMDFEKS4KLSsjCi0rIyBXaGVuIG91dHB1dCB0byBhbiBVVEYtOCB0ZXJtaW5hbCwgdGhlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzIGFwcGVhciBwZXJmZWN0bHkuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBJU08tODg1OS0xIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzIChieSBpY29udiBpbiBnbGliYyAyLjIgb3IgbmV3ZXIpIG9yIHRvCi0rIyBncmF2ZS9hY3V0ZSBhY2NlbnQgKGJ5IGxpYmljb252KSwgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjIFdoZW4gb3V0cHV0IHRvIGFuIEFTQ0lJIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byAweDIyLgotKyMKLSsjIFRoaXMgY2F0YWxvZyBmdXJ0aGVybW9yZSBkaXNwbGF5cyB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBxdW90YXRpb24gbWFya3MgaW4KLSsjIGJvbGQgZmFjZSwgYXNzdW1pbmcgdGhlIFZUMTAwL1hUZXJtIGVzY2FwZSBzZXF1ZW5jZXMuCi0rIwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9lbkBxdW90LmhlYWRlcgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vZW5AcXVvdC5oZWFkZXIJMjAwNC0wOS0xMiAxNDo0MDozNC43Mzc2OTAwMjQgLTA0MDAKLUBAIC0wLDAgKzEsMjIgQEAKLSsjIEFsbCB0aGlzIGNhdGFsb2cgInRyYW5zbGF0ZXMiIGFyZSBxdW90YXRpb24gY2hhcmFjdGVycy4KLSsjIFRoZSBtc2dpZHMgbXVzdCBiZSBBU0NJSSBhbmQgdGhlcmVmb3JlIGNhbm5vdCBjb250YWluIHJlYWwgcXVvdGF0aW9uCi0rIyBjaGFyYWN0ZXJzLCBvbmx5IHN1YnN0aXR1dGVzIGxpa2UgZ3JhdmUgYWNjZW50ICgweDYwKSwgYXBvc3Ryb3BoZSAoMHgyNykKLSsjIGFuZCBkb3VibGUgcXVvdGUgKDB4MjIpLiBUaGVzZSBzdWJzdGl0dXRlcyBsb29rIHN0cmFuZ2U7IHNlZQotKyMgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3Vjcy9xdW90ZXMuaHRtbAotKyMKLSsjIFRoaXMgY2F0YWxvZyB0cmFuc2xhdGVzIGdyYXZlIGFjY2VudCAoMHg2MCkgYW5kIGFwb3N0cm9waGUgKDB4MjcpIHRvCi0rIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpLgotKyMgSXQgYWxzbyB0cmFuc2xhdGVzIHBhaXJzIG9mIGFwb3N0cm9waGUgKDB4MjcpIHRvCi0rIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpCi0rIyBhbmQgcGFpcnMgb2YgcXVvdGF0aW9uIG1hcmsgKDB4MjIpIHRvCi0rIyBsZWZ0IGRvdWJsZSBxdW90YXRpb24gbWFyayAoVSsyMDFDKSBhbmQgcmlnaHQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUQpLgotKyMKLSsjIFdoZW4gb3V0cHV0IHRvIGFuIFVURi04IHRlcm1pbmFsLCB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcnMgYXBwZWFyIHBlcmZlY3RseS4KLSsjIFdoZW4gb3V0cHV0IHRvIGFuIElTTy04ODU5LTEgdGVybWluYWwsIHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMgKGJ5IGljb252IGluIGdsaWJjIDIuMiBvciBuZXdlcikgb3IgdG8KLSsjIGdyYXZlL2FjdXRlIGFjY2VudCAoYnkgbGliaWNvbnYpLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byAweDIyLgotKyMgV2hlbiBvdXRwdXQgdG8gYW4gQVNDSUkgdGVybWluYWwsIHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMsIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCi0rIwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9pbnNlcnQtaGVhZGVyLnNpbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vaW5zZXJ0LWhlYWRlci5zaW4JMjAwNC0wOS0xMiAxNDo0MDozNC43NDM2ODkxMTIgLTA0MDAKLUBAIC0wLDAgKzEsMjMgQEAKLSsjIFNlZCBzY3JpcHQgdGhhdCBpbnNlcnRzIHRoZSBmaWxlIGNhbGxlZCBIRUFERVIgYmVmb3JlIHRoZSBoZWFkZXIgZW50cnkuCi0rIwotKyMgQXQgZWFjaCBvY2N1cnJlbmNlIG9mIGEgbGluZSBzdGFydGluZyB3aXRoICJtc2dpZCAiLCB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcKLSsjIGNvbW1hbmRzLiBBdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSwgaW5zZXJ0IHRoZSBmaWxlLiBBdCB0aGUgZm9sbG93aW5nCi0rIyBvY2N1cnJlbmNlcywgZG8gbm90aGluZy4gVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUgZm9sbG93aW5nCi0rIyBvY2N1cnJlbmNlcyBpcyBhY2hpZXZlZCBieSBsb29raW5nIGF0IHRoZSBob2xkIHNwYWNlLgotKy9ebXNnaWQgL3sKLSt4Ci0rIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5LgotK3MvbS9tLwotK3RhCi0rIyBZZXMgaXQgd2FzIGVtcHR5LiBGaXJzdCBvY2N1cnJlbmNlLiBSZWFkIHRoZSBmaWxlLgotK3IgSEVBREVSCi0rIyBPdXRwdXQgdGhlIGZpbGUncyBjb250ZW50cyBieSByZWFkaW5nIHRoZSBuZXh0IGxpbmUuIEJ1dCBkb24ndCBsb3NlIHRoZQotKyMgY3VycmVudCBsaW5lIHdoaWxlIGRvaW5nIHRoaXMuCi0rZwotK04KLStiYgotKzphCi0rIyBUaGUgaG9sZCBzcGFjZSB3YXMgbm9uZW1wdHkuIEZvbGxvd2luZyBvY2N1cnJlbmNlcy4gRG8gbm90aGluZy4KLSt4Ci0rOmIKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL01ha2V2YXJzCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycwkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc0ODY4ODM1MiAtMDQwMAotQEAgLTAsMCArMSw0MSBAQAotKyMgTWFrZWZpbGUgdmFyaWFibGVzIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCi0rCi0rIyBVc3VhbGx5IHRoZSBtZXNzYWdlIGRvbWFpbiBpcyB0aGUgc2FtZSBhcyB0aGUgcGFja2FnZSBuYW1lLgotK0RPTUFJTiA9ICQoUEFDS0FHRSkKLSsKLSsjIFRoZXNlIHR3byB2YXJpYWJsZXMgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeS4KLStzdWJkaXIgPSBwbwotK3RvcF9idWlsZGRpciA9IC4uCi0rCi0rIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8geGdldHRleHQuCi0rWEdFVFRFWFRfT1BUSU9OUyA9IC0ta2V5d29yZD1fIC0ta2V5d29yZD1OXwotKwotKyMgVGhpcyBpcyB0aGUgY29weXJpZ2h0IGhvbGRlciB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byB0aGUgaGVhZGVyIG9mIHRoZQotKyMgJChET01BSU4pLnBvdCBmaWxlLiAgU2V0IHRoaXMgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHN1cnJvdW5kaW5nCi0rIyBwYWNrYWdlLiAgKE5vdGUgdGhhdCB0aGUgbXNnc3RyIHN0cmluZ3MsIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrYWdlJ3MKLSsjIHNvdXJjZXMsIGJlbG9uZyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgcGFja2FnZS4pICBUcmFuc2xhdG9ycyBhcmUKLSsjIGV4cGVjdGVkIHRvIHRyYW5zZmVyIHRoZSBjb3B5cmlnaHQgZm9yIHRoZWlyIHRyYW5zbGF0aW9ucyB0byB0aGlzIHBlcnNvbgotKyMgb3IgZW50aXR5LCBvciB0byBkaXNjbGFpbSB0aGVpciBjb3B5cmlnaHQuICBUaGUgZW1wdHkgc3RyaW5nIHN0YW5kcyBmb3IKLSsjIHRoZSBwdWJsaWMgZG9tYWluOyBpbiB0aGlzIGNhc2UgdGhlIHRyYW5zbGF0b3JzIGFyZSBleHBlY3RlZCB0byBkaXNjbGFpbQotKyMgdGhlaXIgY29weXJpZ2h0LgotK0NPUFlSSUdIVF9IT0xERVIgPSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKLSsjIGJ1Z3MgaW4gdGhlIHVudHJhbnNsYXRlZCBzdHJpbmdzOgotKyMgLSBTdHJpbmdzIHdoaWNoIGFyZSBub3QgZW50aXJlIHNlbnRlbmNlcywgc2VlIHRoZSBtYWludGFpbmVyIGd1aWRlbGluZXMKLSsjICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KLSsjIC0gU3RyaW5ncyB3aGljaCB1c2UgdW5jbGVhciB0ZXJtcyBvciByZXF1aXJlIGFkZGl0aW9uYWwgY29udGV4dCB0byBiZQotKyMgICB1bmRlcnN0b29kLgotKyMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCi0rIyAgIG1vbmV5LgotKyMgLSBQbHVyYWxpc2F0aW9uIHByb2JsZW1zLgotKyMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KLSsjIC0gSW5jb3JyZWN0IGZvcm1hdHRpbmcuCi0rIyBJdCBjYW4gYmUgeW91ciBlbWFpbCBhZGRyZXNzLCBvciBhIG1haWxpbmcgbGlzdCBhZGRyZXNzIHdoZXJlIHRyYW5zbGF0b3JzCi0rIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAotKyMgd2hpY2ggdGhlIHRyYW5zbGF0b3JzIGNhbiBjb250YWN0IHlvdS4KLStNU0dJRF9CVUdTX0FERFJFU1MgPQotKwotKyMgVGhpcyBpcyB0aGUgbGlzdCBvZiBsb2NhbGUgY2F0ZWdvcmllcywgYmV5b25kIExDX01FU1NBR0VTLCBmb3Igd2hpY2ggdGhlCi0rIyBtZXNzYWdlIGNhdGFsb2dzIHNoYWxsIGJlIHVzZWQuICBJdCBpcyB1c3VhbGx5IGVtcHR5LgotK0VYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vcXVvdC5zZWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL3F1b3Quc2VkCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzU0Njg3NDQwIC0wNDAwCi1AQCAtMCwwICsxLDYgQEAKLStzLyJcKFteIl0qXCkiL+KAnFwx4oCdL2cKLStzL2BcKFteYCddKlwpJy/igJhcMeKAmS9nCi0rcy8gJ1woW15gJ10qXCknIC8g4oCYXDHigJkgL2cKLStzLyAnXChbXmAnXSpcKSckLyDigJhcMeKAmS9nCi0rcy9eJ1woW15gJ10qXCknIC/igJhcMeKAmSAvZwotK3Mv4oCc4oCdLyIiL2cKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc2MjY4NjIyNCAtMDQwMAotQEAgLTAsMCArMSwxOSBAQAotKyMgU2VkIHNjcmlwdCB0aGF0IHJlbW92ZSB0aGUgUE9ULUNyZWF0aW9uLURhdGUgbGluZSBpbiB0aGUgaGVhZGVyIGVudHJ5Ci0rIyBmcm9tIGEgUE9UIGZpbGUuCi0rIwotKyMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUgZm9sbG93aW5nIG9jY3VycmVuY2VzIG9mIHRoZQotKyMgcGF0dGVybiBpcyBhY2hpZXZlZCBieSBsb29raW5nIGF0IHRoZSBob2xkIHNwYWNlLgotKy9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKLSt4Ci0rIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5LgotK3MvUC9QLwotK3RhCi0rIyBZZXMgaXQgd2FzIGVtcHR5LiBGaXJzdCBvY2N1cnJlbmNlLiBSZW1vdmUgdGhlIGxpbmUuCi0rZwotK2QKLStiYgotKzphCi0rIyBUaGUgaG9sZCBzcGFjZSB3YXMgbm9uZW1wdHkuIEZvbGxvd2luZyBvY2N1cnJlbmNlcy4gRG8gbm90aGluZy4KLSt4Ci0rOmIKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL1J1bGVzLXF1b3QJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL1J1bGVzLXF1b3QJMjAwNC0wOS0xMiAxNDo0MDozNC43Nzg2ODM3OTIgLTA0MDAKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIFNwZWNpYWwgTWFrZWZpbGUgcnVsZXMgZm9yIEVuZ2xpc2ggbWVzc2FnZSBjYXRhbG9ncyB3aXRoIHF1b3RhdGlvbiBtYXJrcy4KLSsKLStESVNURklMRVMuY29tbW9uLmV4dHJhMSA9IHF1b3Quc2VkIGJvbGRxdW90LnNlZCBlbkBxdW90LmhlYWRlciBlbkBib2xkcXVvdC5oZWFkZXIgaW5zZXJ0LWhlYWRlci5zaW4gUnVsZXMtcXVvdAotKwotKy5TVUZGSVhFUzogLmluc2VydC1oZWFkZXIgLnBvLXVwZGF0ZS1lbgotKwotK2VuQHF1b3QucG8tY3JlYXRlOgotKwkkKE1BS0UpIGVuQHF1b3QucG8tdXBkYXRlCi0rZW5AYm9sZHF1b3QucG8tY3JlYXRlOgotKwkkKE1BS0UpIGVuQGJvbGRxdW90LnBvLXVwZGF0ZQotKwotK2VuQHF1b3QucG8tdXBkYXRlOiBlbkBxdW90LnBvLXVwZGF0ZS1lbgotK2VuQGJvbGRxdW90LnBvLXVwZGF0ZTogZW5AYm9sZHF1b3QucG8tdXBkYXRlLWVuCi0rCi0rLmluc2VydC1oZWFkZXIucG8tdXBkYXRlLWVuOgotKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLXVwZGF0ZS1lbiQkLy8nYDsgXAotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0IjsgdGhlbiBQQVRIPWBwd2RgLy4uL3NyYzokJFBBVEg7IEdFVFRFWFRMSUJESVI9YGNkICQodG9wX3NyY2Rpcikvc3JjICYmIHB3ZGA7IGV4cG9ydCBHRVRURVhUTElCRElSOyBmaTsgXAotKwl0bXBkaXI9YHB3ZGA7IFwKLSsJZWNobyAiJCRsYW5nOiI7IFwKLSsJbGw9YGVjaG8gJCRsYW5nIHwgc2VkIC1lICdzL0AuKi8vJ2A7IFwKLSsJTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IFwKLSsJY2QgJChzcmNkaXIpOyBcCi0rCWlmICQoTVNHSU5JVCkgLWkgJChET01BSU4pLnBvdCAtLW5vLXRyYW5zbGF0b3IgLWwgJCRsbCAtbyAtIDI+L2Rldi9udWxsIHwgc2VkIC1mICQkdG1wZGlyLyQkbGFuZy5pbnNlcnQtaGVhZGVyIHwgJChNU0dDT05WKSAtdCBVVEYtOCB8ICQoTVNHRklMVEVSKSBzZWQgLWYgYGVjaG8gJCRsYW5nIHwgc2VkIC1lICdzLy4qQC8vJ2Auc2VkIDI+L2Rldi9udWxsID4gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgdGhlbiBcCi0rCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0rCSAgICBybSAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvOyBcCi0rCSAgZWxzZSBcCi0rCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCi0rCSAgICAgIDo7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICBlY2hvICJjcmVhdGlvbiBvZiAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAotKwkgICAgICBleGl0IDE7IFwKLSsJICAgIGZpOyBcCi0rCSAgZmk7IFwKLSsJZWxzZSBcCi0rCSAgZWNobyAiY3JlYXRpb24gb2YgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKLSsJICBybSAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvOyBcCi0rCWZpCi0rCi0rZW5AcXVvdC5pbnNlcnQtaGVhZGVyOiBpbnNlcnQtaGVhZGVyLnNpbgotKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9IRUFERVIvZW5AcXVvdC5oZWFkZXIvZycgJChzcmNkaXIpL2luc2VydC1oZWFkZXIuc2luID4gZW5AcXVvdC5pbnNlcnQtaGVhZGVyCi0rCi0rZW5AYm9sZHF1b3QuaW5zZXJ0LWhlYWRlcjogaW5zZXJ0LWhlYWRlci5zaW4KLSsJc2VkIC1lICcvXiMvZCcgLWUgJ3MvSEVBREVSL2VuQGJvbGRxdW90LmhlYWRlci9nJyAkKHNyY2RpcikvaW5zZXJ0LWhlYWRlci5zaW4gPiBlbkBib2xkcXVvdC5pbnNlcnQtaGVhZGVyCi0rCi0rbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLXF1b3QKLSttb3N0bHljbGVhbi1xdW90OgotKwlybSAtZiAqLmluc2VydC1oZWFkZXIKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vc3RhbXAtY2F0LWlkCTE5OTgtMTItMzAgMDI6NTA6MDEuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xICswLDAgQEAKLS10aW1lc3RhbXAKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvc3JjL01ha2VmaWxlLmFtCTE5OTgtMTItMjggMDM6Mzg6NDcuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0JMjAwNC0wOS0xMiAxNDo0MDo1My42NjU4MTI1MTIgLTA0MDAKLUBAIC0yLDEyICsyLDEyIEBACi0gbHJ6X1NPVVJDRVM9bHJ6LmMgdGltaW5nLmMgenBlcnIuYyB6cmVhZGxpbmUuYyBjcmN0YWIuYyByYnNiLmMgem0uYyBwcm90bmFtZS5jIHRjcC5jIGxzeXNsb2cuYyBjYW5pdC5jCi0gbHN6X1NPVVJDRVM9bHN6LmMgdGltaW5nLmMgenBlcnIuYyB6cmVhZGxpbmUuYyBjcmN0YWIuYyByYnNiLmMgem0uYyBwcm90bmFtZS5jIHRjcC5jIGxzeXNsb2cuYyBjYW5pdC5jCi0gbm9pbnN0X0hFQURFUlMgPSB0aW1pbmcuaCB6Z2xvYmFsLmggem1vZGVtLmgKLS1kYXRhZGlyID0gJChwcmVmaXgpL0BEQVRBRElSTkFNRUAKLStkYXRhZGlyID0gJChwcmVmaXgpL3NoYXJlCi0gbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKLSBDRkxBR1M9QENGTEFHU0AKLSBESVNUQ0xFQU5fRklMRVM9bHJ6c3pidWcKLSAKLS1MREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBASU5UTExJQlNACi0rTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQExJQklOVExACi0gQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgotIEVYVFJBX0RJU1QgPSBhbnNpMmtuci4xIGFuc2kya25yLmMgbHJ6c3pidWcuaW4KLSBJTkNMVURFUyA9IC1JLi4gLUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYyAtSS4uL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODJmMWM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBpc3N1ZSB3aXRoIGF1dG9tYWtlIDEuMTIKLQotfCBjb25maWd1cmUuaW46OTU6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLS4uLgotfCBsaWIvTWFrZWZpbGUuYW06MzogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAotfCBsaWIvTWFrZWZpbGUuYW06IGluc3RhbGxpbmcgJy4vZGVwY29tcCcKLXwgc3JjL01ha2VmaWxlLmFtOjExOiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCi0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDUvMDMKLQotSW5kZXg6IGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHJ6c3otMC4xMi4yMC5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCi1AQCAtOTIsNyArOTIsNiBAQCBBQ19QUk9HX1JBTkxJQgotIEFDX0lTQ19QT1NJWAotIEFDX0FJWAotIEFDX01JTklYCi0tQU1fQ19QUk9UT1RZUEVTCi0gQUNfQ19DT05TVAotIEFDX0NfSU5MSU5FCi0gCi1JbmRleDogbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBscnpzei0wLjEyLjIwLm9yaWcvbGliL01ha2VmaWxlLmFtCi0rKysgbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNSBAQAotIG5vaW5zdF9MSUJSQVJJRVM9bGliem1vZGVtLmEKLSBDRkxBR1M9QENGTEFHU0AKLS1BVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCi0gCi0gRVhUUkFfRElTVCA9IGFsbG9jYS5jIGFuc2kya25yLjEgYW5zaTJrbnIuYyBcCi0gCWdldG9wdC5jIGdldG9wdDEuYyBta2Rpci5jIG1rdGltZS5jIFwKLUluZGV4OiBscnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxyenN6LTAuMTIuMjAub3JpZy9zcmMvTWFrZWZpbGUuYW0KLSsrKyBscnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQotQEAgLTgsNyArOCw2IEBAIENGTEFHUz1AQ0ZMQUdTQAotIERJU1RDTEVBTl9GSUxFUz1scnpzemJ1ZwotIAotIExEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBMSUJJTlRMQAotLUFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKLSBFWFRSQV9ESVNUID0gYW5zaTJrbnIuMSBhbnNpMmtuci5jIGxyenN6YnVnLmluCi0gSU5DTFVERVMgPSAtSS4uIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLUkuLi9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKLSAjREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURPUz1cIkBob3N0X29zQFwiIC1EQ1BVPVwiQGhvc3RfY3B1QFwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzel8wLjEyLjIwLmJiCmluZGV4IDM0NTU2YjIuLjQxMjkyMzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzel8wLjEyLjIwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzel8wLjEyLjIwLmJiCkBAIC0xMywxMSArMTMsOSBAQAogUFIgPSAicjYiCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5vaHNlLmRlL3V3ZS9yZWxlYXNlcy9scnpzei0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLXVwZGF0ZS5wYXRjaCBcCiAJICAgZmlsZTovL2F1dG90b29scy5wYXRjaCBcCiAJICAgZmlsZTovL21ha2VmaWxlLnBhdGNoIFwKLQkgICBmaWxlOi8vZ2V0dGV4dC5wYXRjaCBcCi0JICAgZmlsZTovL2FjZGVmaW5lLnBhdGNoIFwKLQkgICBmaWxlOi8vbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xyenN6LWNoZWNrLWxvY2FsZS5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2N2ZS0yMDE4LTEwMTk1LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUucGF0Y2ggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9maWxlcy8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaAppbmRleCA5YzJkMGViLi5kMmE4MDQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9maWxlcy8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9maWxlcy8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZjU4NzFlMWYzNjUwZDZjOGEwMzI5MjhjYjVkOGNhMDBjMjc1YzM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmU5ODYwZmQ4NWU0OWE3NWJlZjU0NWU1ZDk5MTQwNzA0OTFlODAwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KIERhdGU6IEZyaSwgMTUgRmViIDIwMTkgMTQ6NTc6NDEgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IERvbid0IHNwZWNpZnkgbWFiaSBvciBtYXJjaApAQCAtNywyNSArNywyNiBAQAogICAgIGNhbid0IGxpbmsgZG91YmxlLWZsb2F0IG1vZHVsZXMgd2l0aCBzb2Z0LWZsb2F0IG1vZHVsZXMKIGVycm9ycyB3aGVuIGJ1aWxkaW5nIDMyLWJpdCBvcGVuU0JJIGRvbid0IHNwZWNpZnkgbWFiaSBvciBtYXJjaC4KIAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtGaXhlcyBhIDMyLWJpdCBZb2N0byBmbG93IGJ1Z10KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRml4ZXMgYSAzMi1iaXQgT0UgZmxvdyBidWddCiBTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CisKIC0tLQogIE1ha2VmaWxlIHwgMiAtLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYWU2OGY1NS4uMTA4NTFmYyAxMDA2NDQKK2luZGV4IGNjZjhlYTMuLjY5ZTViMzggMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC0xNDUsNyArMTQ1LDYgQEAgR0VORkxBR1MJKz0JJChmaXJtd2FyZS1nZW5mbGFncy15KQotIENGTEFHUwkJPQktZyAtV2FsbCAtV2Vycm9yIC1ub3N0ZGxpYiAtZm5vLXN0cmljdC1hbGlhc2luZyAtTzIKK0BAIC0xNjksNyArMTY5LDYgQEAgR0VORkxBR1MJKz0JJChmaXJtd2FyZS1nZW5mbGFncy15KQorIENGTEFHUwkJPQktZyAtV2FsbCAtV2Vycm9yIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGxpYiAtZm5vLXN0cmljdC1hbGlhc2luZyAtTzIKICBDRkxBR1MJCSs9CS1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscwogIENGTEFHUwkJKz0JLW1uby1zYXZlLXJlc3RvcmUgLW1zdHJpY3QtYWxpZ24KIC1DRkxBR1MJCSs9CS1tYWJpPSQoUExBVEZPUk1fUklTQ1ZfQUJJKSAtbWFyY2g9JChQTEFURk9STV9SSVNDVl9JU0EpCiAgQ0ZMQUdTCQkrPQktbWNtb2RlbD0kKFBMQVRGT1JNX1JJU0NWX0NPREVfTU9ERUwpCiAgQ0ZMQUdTCQkrPQkkKEdFTkZMQUdTKQogIENGTEFHUwkJKz0JJChwbGF0Zm9ybS1jZmxhZ3MteSkKLUBAIC0xNTgsNyArMTU3LDYgQEAgQ1BQRkxBR1MJKz0JJChmaXJtd2FyZS1jcHBmbGFncy15KQorQEAgLTE4Myw3ICsxODIsNiBAQCBDUFBGTEFHUwkrPQkkKGZpcm13YXJlLWNwcGZsYWdzLXkpCiAgQVNGTEFHUwkJPQktZyAtV2FsbCAtbm9zdGRsaWIgLURfX0FTU0VNQkxZX18KICBBU0ZMQUdTCQkrPQktZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLW9wdGltaXplLXNpYmxpbmctY2FsbHMKICBBU0ZMQUdTCQkrPQktbW5vLXNhdmUtcmVzdG9yZSAtbXN0cmljdC1hbGlnbgpAQCAtMzMsNiArMzQsMyBAQAogIEFTRkxBR1MJCSs9CS1tY21vZGVsPSQoUExBVEZPUk1fUklTQ1ZfQ09ERV9NT0RFTCkKICBBU0ZMQUdTCQkrPQkkKEdFTkZMQUdTKQogIEFTRkxBR1MJCSs9CSQocGxhdGZvcm0tYXNmbGFncy15KQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpLXBheWxvYWRzLmluYwppbmRleCBiOTcxNGE3Li4yZTMyOTQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpLXBheWxvYWRzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpLXBheWxvYWRzLmluYwpAQCAtNywxOCArNyw4IEBACiAKICAgICByZXR1cm4gIkZXX1BBWUxPQURfUEFUSD0iICsgZGVwbG95X2RpciArICIvIiArIHNiaV9wYXlsb2FkCiAKLWRlZiByaXNjdl9nZXRfZXh0cmFfb2VtYWtlX2ZkdChkKToKLSAgICBzYmlfZmR0X3BheWxvYWQgPSBkLmdldFZhcignUklTQ1ZfU0JJX0ZEVCcpCi0gICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJykKLQotICAgIGlmIHNiaV9mZHRfcGF5bG9hZCBpcyBOb25lOgotICAgICAgICByZXR1cm4gIiIKLQotICAgIHJldHVybiAiRldfUEFZTE9BRF9GRFRfUEFUSD0iICsgZGVwbG95X2RpciArICIvIiArIHNiaV9mZHRfcGF5bG9hZAotCiBkZWYgcmlzY3ZfZ2V0X2RvX2NvbXBpbGVfZGVwZW5kcyhkKToKICAgICBzYmlfcGF5bG9hZCA9IGQuZ2V0VmFyKCdSSVNDVl9TQklfUEFZTE9BRCcpCi0gICAgc2JpX2ZkdF9wYXlsb2FkID0gZC5nZXRWYXIoJ1JJU0NWX1NCSV9GRFQnKQogCiAgICAgaWYgc2JpX3BheWxvYWQgaXMgTm9uZToKICAgICAgICAgcmV0dXJuICIiCkBAIC0yNiwxNCArMTYsNiBAQAogICAgIGlmICdsaW51eCcgaW4gc2JpX3BheWxvYWQgb3IgJ0ltYWdlJyBpbiBzYmlfcGF5bG9hZDoKICAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kiCiAgICAgaWYgJ3UtYm9vdC5iaW4nIGluIHNiaV9wYXlsb2FkOgotICAgICAgICAjIElmIHdlIHdhbnQgVS1Cb290IGFuZCBhIEZEVCB0aGVuIHdlIG5lZWQgdG8gZGVwZW5kIG9uIFUtQm9vdCBhbmQKLSAgICAgICAgIyB0aGUga2VybmVsCi0gICAgICAgIGlmIHNiaV9mZHRfcGF5bG9hZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAidmlydHVhbC9ib290bG9hZGVyOmRvX2RlcGxveSB2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gInZpcnR1YWwvYm9vdGxvYWRlcjpkb19kZXBsb3kiCi0gICAgIyBJZiB3ZSB3YW50IGEgY3VzdG9tIEZEVCB0aGVuIHdlIG5lZWQgdG8gZGVwZW5kIG9uIHRoZSBrZXJuZWwKLSAgICBpZiBzYmlfZmR0X3BheWxvYWQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJldHVybiAidmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgorICAgICAgICByZXR1cm4gInZpcnR1YWwvYm9vdGxvYWRlcjpkb19kZXBsb3kiCiAKICAgICByZXR1cm4gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OWJiYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIlJJU0MtViBPcGVuIFNvdXJjZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKE9wZW5TQkkpIgotREVTQ1JJUFRJT04gPSAiT3BlblNCSSBhaW1zIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgYW5kIGV4dGVuc2libGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJJU0MtViBTQkkgc3BlY2lmaWNhdGlvbiBmb3IgYSBwbGF0Zm9ybSBzcGVjaWZpYyBmaXJtd2FyZSAoTS1tb2RlKSBhbmQgYSBnZW5lcmFsIHB1cnBvc2UgT1MsIGh5cGVydmlzb3Igb3IgYm9vdGxvYWRlciAoUy1tb2RlIG9yIEhTLW1vZGUpLiBPcGVuU0JJIGltcGxlbWVudGF0aW9uIGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgYnkgUklTQy1WIHBsYXRmb3JtIG9yIFN5c3RlbS1vbi1DaGlwIHZlbmRvcnMgdG8gZml0IGEgcGFydGljdWxhciBoYWR3YXJlIGNvbmZpZ3VyYXRpb24uIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9NDJkZDk1NTVlYjE3N2YzNTE1MGNmOWFhMjQwYjYxZTUiCi1ERVBFTkRTICs9ICJkdGMtbmF0aXZlIgotCi1yZXF1aXJlIG9wZW5zYmktcGF5bG9hZHMuaW5jCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkZXBsb3kKLQotU1JDUkVWID0gImJlOTJkYTI4MGQ4N2MzOGEyZTBhZGM1ZDNmNDNiYWI3YjU0NjhmMDkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmlzY3Yvb3BlbnNiaS5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYyMWYzOGQ4MjA1ZWY1ZmIxODVlNDA1NTAyNWU3M2RmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3ZjE4YjczYWJmM2I4NWFhYmU1YmVhZDE5YTkyMzcxNmMxMDBkMzBlYjU4MDMzNDU5ZjM5YzNhMjI0YmUzMDAiCi0KLUVYVFJBX09FTUFLRSArPSAiUExBVEZPUk09JHtSSVNDVl9TQklfUExBVH0gST0ke0R9IgotIyBJZiBSSVNDVl9TQklfUEFZTE9BRCBpcyBzZXQgdGhlbiBpbmNsdWRlIGl0IGFzIGEgcGF5bG9hZAotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgJHtAcmlzY3ZfZ2V0X2V4dHJhX29lbWFrZV9pbWFnZShkKX0gJHtAcmlzY3ZfZ2V0X2V4dHJhX29lbWFrZV9mZHQoZCl9IgotCi0jIFJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgYSBjdXN0b20gcGF5bG9hZAotZG9fY29tcGlsZVtkZXBlbmRzXSArPSAiJHtAcmlzY3ZfZ2V0X2RvX2NvbXBpbGVfZGVwZW5kcyhkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgSW4gdGhlIGZ1dHVyZSB0aGVzZSBtaWdodCBiZSByZXF1aXJlZCBhcyBhIGRlcGVuZGVuY3kgZm9yIG90aGVyIHBhY2thZ2VzLgotCSMgQXQgdGhlIG1vbWVudCBqdXN0IGRlbGV0ZSB0aGVtIHRvIGF2b2lkIHdhcm5pbmdzCi0Jcm0gLXIgJHtEfS9pbmNsdWRlCi0Jcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9saWIKLQlybSAtciAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL3BheWxvYWRzCi0Jcm0gLXIgJHtEfS9saWIKLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X3BheWxvYWQuKiAke0RFUExPWURJUn0vCi0JaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19qdW1wLiogJHtERVBMT1lESVJ9LwotCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfZHluYW1pYy4qICR7REVQTE9ZRElSfS8KLX0KLQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKLQotRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19qdW1wLioiCi1GSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X3BheWxvYWQuKiIKLUZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfZHluYW1pYy4qIgotCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIocmlzY3Y2NHxyaXNjdjMyKS4qIgotSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCi0KLVNFQ1VSSVRZX0NGTEFHUyA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZjJkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNi5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIlJJU0MtViBPcGVuIFNvdXJjZSBTdXBlcnZpc29yIEJpbmFyeSBJbnRlcmZhY2UgKE9wZW5TQkkpIgorREVTQ1JJUFRJT04gPSAiT3BlblNCSSBhaW1zIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgYW5kIGV4dGVuc2libGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJJU0MtViBTQkkgc3BlY2lmaWNhdGlvbiBmb3IgYSBwbGF0Zm9ybSBzcGVjaWZpYyBmaXJtd2FyZSAoTS1tb2RlKSBhbmQgYSBnZW5lcmFsIHB1cnBvc2UgT1MsIGh5cGVydmlzb3Igb3IgYm9vdGxvYWRlciAoUy1tb2RlIG9yIEhTLW1vZGUpLiBPcGVuU0JJIGltcGxlbWVudGF0aW9uIGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQgYnkgUklTQy1WIHBsYXRmb3JtIG9yIFN5c3RlbS1vbi1DaGlwIHZlbmRvcnMgdG8gZml0IGEgcGFydGljdWxhciBoYWR3YXJlIGNvbmZpZ3VyYXRpb24uIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9NDJkZDk1NTVlYjE3N2YzNTE1MGNmOWFhMjQwYjYxZTUiCisKK3JlcXVpcmUgb3BlbnNiaS1wYXlsb2Fkcy5pbmMKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRlcGxveQorCitTUkNSRVYgPSAiYWM1ZTgyMWQ1MGJlNjMxZjI2Mjc0NzY1YTU5YmMxYjQ0NGZmZDg2MiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaXNjdi9vcGVuc2JpLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRU1BS0UgKz0gIlBMQVRGT1JNPSR7UklTQ1ZfU0JJX1BMQVR9IEk9JHtEfSIKKyMgSWYgUklTQ1ZfU0JJX1BBWUxPQUQgaXMgc2V0IHRoZW4gaW5jbHVkZSBpdCBhcyBhIHBheWxvYWQKK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiICR7QHJpc2N2X2dldF9leHRyYV9vZW1ha2VfaW1hZ2UoZCl9IgorCisjIFJlcXVpcmVkIGlmIHNwZWNpZnlpbmcgYSBjdXN0b20gcGF5bG9hZAorZG9fY29tcGlsZVtkZXBlbmRzXSArPSAiJHtAcmlzY3ZfZ2V0X2RvX2NvbXBpbGVfZGVwZW5kcyhkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgSW4gdGhlIGZ1dHVyZSB0aGVzZSBtaWdodCBiZSByZXF1aXJlZCBhcyBhIGRlcGVuZGVuY3kgZm9yIG90aGVyIHBhY2thZ2VzLgorCSMgQXQgdGhlIG1vbWVudCBqdXN0IGRlbGV0ZSB0aGVtIHRvIGF2b2lkIHdhcm5pbmdzCisJcm0gLXIgJHtEfS9pbmNsdWRlCisJcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9saWIKKwlybSAtciAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL3BheWxvYWRzCisJcm0gLXIgJHtEfS9saWIKK30KKworZG9fZGVwbG95ICgpIHsKKwlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X3BheWxvYWQuKiAke0RFUExPWURJUn0vCisJaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19qdW1wLiogJHtERVBMT1lESVJ9LworCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfZHluYW1pYy4qICR7REVQTE9ZRElSfS8KK30KKworYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKKworRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19qdW1wLioiCitGSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X3BheWxvYWQuKiIKK0ZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfZHluYW1pYy4qIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHJpc2N2NjR8cmlzY3YzMikuKiIKK0lOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorCitTRUNVUklUWV9DRkxBR1MgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKaW5kZXggYTdlNDQ1Ny4uZTQ0NGMxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCkBAIC0yNCw3ICsyNCw3IEBACiAtCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMRExJQlMpIC1vICRACiArCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMSUJfTERMSUJTKSAkKExETElCUykgLW8gJEAKICAKLSAlLjggJS43OiAlLm1hbgorICUuOCAlLjcgJS41OiAlLm1hbgogIAlNPWBlY2hvICQoREFURSkgfCBzZWQgJ3MvLTAxLS8tSmFudWFyeS0vO3MvLTAyLS8tRmVicnVhcnktLztzLy0wMy0vLU1hcmNoLS87cy8tMDQtLy1BcHJpbC0vO3MvLTA1LS8tTWF5LS87cy8tMDYtLy1KdW5lLS87cy8tMDctLy1KdWx5LS87cy8tMDgtLy1BdWd1c3QtLztzLy0wOS0vLVNlcHRlbWJlci0vO3MvLTEwLS8tT2N0b2Jlci0vO3MvLTExLS8tTm92ZW1iZXItLztzLy0xMi0vLURlY2VtYmVyLS87cy9cKC4qXCktXCguKlwpLVwoLipcKS9cMyBcMiBcMS8nYCA7IHNlZCA8JDwgPiRAICJzL0BUT0RBWUAvJCRNLztzL0BWRVJTSU9OQC9wY2l1dGlscy0kKFZFUlNJT04pLztzI0BJRFNESVJAIyQoSURTRElSKSMiCiBJbmRleDogcGNpdXRpbHMtMy41LjYvbGliL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNzAsNyArNzAsNyBAQAogIGZpCiAgWyAtbiAiJFJFTEVBU0UiIF0gJiYgcmVsPSIke1JFTEVBU0V9IgogICMgQ0FWRUFUOiB0ciBvbiBTb2xhcmlzIGlzIGEgYml0IHdlaXJkIGFuZCB0aGUgZXh0cmEgW10gaXMgb3RoZXJ3aXNlIGhhcm1sZXNzLgotQEAgLTQ0LDYgKzQ4LDggQEAgY3B1PWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXgorQEAgLTQ0LDYgKzQ4LDggQEAgY3B1PWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKICBzeXM9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAogIGVjaG8gIiAkaG9zdCAkcmVsICRjcHUgJHN5cyIKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEzNDIxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1TVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKLXRvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKLUhPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJ6bGliIGttb2QiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzc5NjM3OTZkMWJlNGY0NTFiODNlNmRhMjhiYTRmODIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI0NTJlYzk4NmVkZWZkODhhZjBkMjIyZDIyZjYxMDJmODAzMGE4NjMzZmRmZTg0NmMzYWU0YmRlOWJiOTNmMyIKLQotaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKLQotUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCi0KLSMgc2VlIGNvbmZpZ3VyZS5wYXRjaAotZG9fY29uZmlndXJlICgpIHsKLQkoCi0JICBjZCBsaWIgJiYgXAotCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKLQkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQotCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9Ci0JKQotfQotCi1leHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKLWV4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCi1leHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKLWV4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgotCi1BU05FRURFRCA9ICIiCi0KLSMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAotSE9TVFt1bmV4cG9ydF0gPSAiMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgotCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgotRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCi1GSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgotU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKLURFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzRiYjYzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi40LmJiCkBAIC0wLDAgKzEsNjAgQEAKK1NVTU1BUlkgPSAiUENJIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gJ1RoZSBQQ0kgVXRpbGl0aWVzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJyYXJ5IGZvciBwb3J0YWJsZSBhY2Nlc3MgXAordG8gUENJIGJ1cyBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBzZXZlcmFsIHV0aWxpdGllcyBiYXNlZCBvbiB0aGlzIGxpYnJhcnkuJworSE9NRVBBR0UgPSAiaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+bWovcGNpdXRpbHMuc2h0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gInpsaWIga21vZCIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL3BjaXV0aWxzL3BjaXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MzQzYjM3ZTE5ZjMxOWNlOGYzZDU5YzMwMDMxNzkwZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjdmZjczMjk3NmUyZGIyYTVjY2RmMzk2MDAyMDc5NjUyNmJhNmIwNWY2YjFjZGQyNGI3YjIwNmFmNzA2MDU1IgorCitpbmhlcml0IG11bHRpbGliX2hlYWRlciBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdod2RiJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiSFdEQj15ZXMsSFdEQj1ubyx1ZGV2IgorCitQQ0lfQ09ORl9GTEFHID0gIlpMSUI9eWVzIEROUz15ZXMgU0hBUkVEPXllcyBTVFJJUD0gTElCRElSPSR7bGliZGlyfSIKKworIyBzZWUgY29uZmlndXJlLnBhdGNoCitkb19jb25maWd1cmUgKCkgeworCSgKKwkgIGNkIGxpYiAmJiBcCisJICAjIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MgZm9yIHRoaXMgcmVjaXBlIGNvdWxkIG9ubHkgcG9zc2libHkgY29udGFpbiAnSFdEQj15ZXMvbm8nLAorCSAgIyBzbyB3ZSBwdXQgaXQgYmVmb3JlIC4vY29uZmlndXJlCisJICAke1BDSV9DT05GX0ZMQUd9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KKwkpCit9CisKK2V4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgorZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKK2V4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgorZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCisKK0VYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCisKK0FTTkVFREVEID0gIiIKKworIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0CitIT1NUW3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCisKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKKworCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCitGSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKK0ZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCitTVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgorREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtaW5jbHVkZS1lbnYuaC1FbnN1cmUtdWxvbmctaXMtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxMTgxNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtaW5jbHVkZS1lbnYuaC1FbnN1cmUtdWxvbmctaXMtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMDU2NWEwODBkMTUzZDViYWFhYWNmZWI1MDQ1YTgzMmUxMjZmNGY5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLURhdGU6IE1vbiwgMTQgT2N0IDIwMTkgMTc6Mzc6MzAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZS9lbnYuaDogRW5zdXJlIHVsb25nIGlzIGRlZmluZWQKLQotVG8gZml4IHRoZXNlIGZhaWx1cmVzIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsOgotICAgaW5jbHVkZS9lbnYuaDoxNjY6MTogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd1bG9uZyc7IGRpZCB5b3UgbWVhbiAnbG9uZyc/Ci1lbnN1cmUgdGhhdCB1bG9uZyBpcyBkZWZpbmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLS0tLQotIGluY2x1ZGUvZW52LmggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbnYuaCBiL2luY2x1ZGUvZW52LmgKLWluZGV4IGI3MjIzOWY2YTUuLjVjYTQ5YTM0NTYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2Vudi5oCi0rKysgYi9pbmNsdWRlL2Vudi5oCi1AQCAtMTMsNiArMTMsOCBAQAotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgICB1bG9uZzsKLSsKLSBzdHJ1Y3QgZW52aXJvbm1lbnRfczsKLSAKLSAvKiBWYWx1ZSBmb3IgZW52aXJvbm1lbnQgdmFsaWRpdHkgKi8KLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvbGlidWJvb3RlbnZfMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9saWJ1Ym9vdGVudl8wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1MWQwZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvbGlidWJvb3RlbnZfMC4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiVS1Cb290IGxpYnJhcmllcyBhbmQgdG9vbHMgdG8gYWNjZXNzIGVudmlyb25tZW50IgorREVQRU5EUyArPSAibXRkLXV0aWxzIgorCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdG9vbHMgYW5kIGxpYnJhcmllcyB0byByZWFkIFwKK2FuZCBtb2RpZnkgVS1Cb290IGVudmlyb25tZW50LiBcCitJdCBwcm92aWRlcyBhIGhhcmR3YXJlLWluZGVwZW5kZW50IHJlcGxhY2VtZW50IGZvciBmd19wcmludGVudi9zZXRlbnYgdXRpbGl0aWVzIFwKK3Byb3ZpZGVkIGJ5IFUtQm9vdCIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NiYWJpYy9saWJ1Ym9vdGVudiIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9sZ3BsLTIuMS50eHQ7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorU0VDVElPTiA9ICJsaWJzIgorCitQViA9ICIwLjIrZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2JhYmljL2xpYnVib290ZW52O3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gImY0YjljZGUzODE1YWJlODRhOTgwNzljZWRkNTE1MjgzZWEwOGMxNmIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDTUFLRSA9ICItRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKKworUFJPVklERVMgKz0gInUtYm9vdC1mdy11dGlscyIKK1JQUk9WSURFU18ke1BOfS1iaW4gKz0gInUtYm9vdC1mdy11dGlscyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYwppbmRleCBjM2U0NThlLi5mNDc5MDUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbi5pbmMKQEAgLTEyLDkgKzEyLDExIEBACiAKICMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKICMgcmVwbyBkdXJpbmcgcGFyc2UKLVNSQ1JFViA9ICI2MWJhMTI0NGI1NDg0NjNkYmZiM2M1Mjg1YjZiMjJlN2M3NzJjNWJkIgorU1JDUkVWID0gIjEwNzllYzBhNzdjM2ZkYTUxMGYwNzg2MGIyNTQ5YzQ3ZjNhNDZjMjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE5LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDMyMWI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTkuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyIKLURFUEVORFMgKz0gIm10ZC11dGlscyIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtaW5jbHVkZS1lbnYuaC1FbnN1cmUtdWxvbmctaXMtZGVmaW5lZC5wYXRjaCIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYWxyZWFkeS1zdHJpcHBlZCIKLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLWNyb3NzID0gJ0hPU1RDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIFY9MScKLQotaW5oZXJpdCB1Ym9vdC1jb25maWcKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSAke1VCT09UX01BQ0hJTkV9Ci0Jb2VfcnVubWFrZSBlbnZ0b29scwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfc2V0ZW52Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvZW52L2Z3X2Vudi5jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZndfZW52LmNvbmZpZwotfQotCi1kb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc30KLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3ByaW50ZW52Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19zZXRlbnYKLX0KLQotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgJHtiaW5kaXJfY3Jvc3N9IgotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotQkJDTEFTU0VYVEVORCA9ICJjcm9zcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWUyOTBhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHMuaW5jCkBAIC0wLDAgKzEsNjYgQEAKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgdG9vbHMiCitERVBFTkRTICs9ICJvcGVuc3NsIgorCitQUk9WSURFUyA9ICIke01MUFJFRklYfXUtYm9vdC1ta2ltYWdlICR7TUxQUkVGSVh9dS1ib290LW1rZW52aW1hZ2UiCitQUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIHUtYm9vdC1ta2VudmltYWdlLW5hdGl2ZSIKKworUEFDS0FHRVMgKz0gIiR7UE59LW1raW1hZ2UgJHtQTn0tbWtlbnZpbWFnZSIKKworIyBSZXF1aXJlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoICJ1LWJvb3QtbWtpbWFnZS14eHguYmIiCitSUFJPVklERVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKK1JSRVBMQUNFU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgorUkNPTkZMSUNUU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgorCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworCitTRURfQ09ORklHX0VGSSA9ICctZSAicy9DT05GSUdfRUZJX0xPQURFUj0uKi8jIENPTkZJR19FRklfTE9BREVSIGlzIG5vdCBzZXQvIicKK1NFRF9DT05GSUdfRUZJX3g4NiA9ICcnCitTRURfQ09ORklHX0VGSV94ODYtNjQgPSAnJworU0VEX0NPTkZJR19FRklfYXJtID0gJycKK1NFRF9DT05GSUdfRUZJX2FybWViID0gJycKK1NFRF9DT05GSUdfRUZJX2FhcmNoNjQgPSAnJworCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIC1DICR7U30gc2FuZGJveF9kZWZjb25maWcgTz0ke0J9CisKKwkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCisJIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAorCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCisJc2VkIC1pIC1lICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgJHtTRURfQ09ORklHX0VGSX0gJHtCfS8uY29uZmlnCisKKwlvZV9ydW5tYWtlIC1DICR7U30gY3Jvc3NfdG9vbHMgTk9fU0RMPTEgTz0ke0J9Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCisJIyBta2ltYWdlCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCisJbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCisKKwkjIG1rZW52aW1hZ2UKKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtlbnZpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UKKwlsbiAtc2YgdWJvb3QtbWtlbnZpbWFnZSAke0R9JHtiaW5kaXJ9L21rZW52aW1hZ2UKKworCSMgZHVtcGltYWdlCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2R1bXBpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LWR1bXBpbWFnZQorCWxuIC1zZiB1Ym9vdC1kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS9kdW1waW1hZ2UKKworCSMgZml0X2NoZWNrX3NpZ24KKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS91Ym9vdC1maXRfY2hlY2tfc2lnbgorCWxuIC1zZiB1Ym9vdC1maXRfY2hlY2tfc2lnbiAke0R9JHtiaW5kaXJ9L2ZpdF9jaGVja19zaWduCit9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU18ke1BOfS1ta2ltYWdlID0gIiR7YmluZGlyfS91Ym9vdC1ta2ltYWdlICR7YmluZGlyfS9ta2ltYWdlICR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UgJHtiaW5kaXJ9L2R1bXBpbWFnZSAke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtiaW5kaXJ9L2ZpdF9jaGVja19zaWduIgorRklMRVNfJHtQTn0tbWtlbnZpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtlbnZpbWFnZSAke2JpbmRpcn0vbWtlbnZpbWFnZSIKKworUkRFUEVORFNfJHtQTn0tbWtpbWFnZSArPSAiZHRjIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LW1raW1hZ2UgJHtQTn0tbWtlbnZpbWFnZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAxOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMTkuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZGU5ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAxOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLXJlcXVpcmUgdS1ib290LWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciB0b29scyIKLURFUEVORFMgKz0gIm9wZW5zc2wiCi0KLVBST1ZJREVTID0gIiR7TUxQUkVGSVh9dS1ib290LW1raW1hZ2UgJHtNTFBSRUZJWH11LWJvb3QtbWtlbnZpbWFnZSIKLVBST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ1LWJvb3QtbWtpbWFnZS1uYXRpdmUgdS1ib290LW1rZW52aW1hZ2UtbmF0aXZlIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWtpbWFnZSAke1BOfS1ta2VudmltYWdlIgotCi0jIFJlcXVpcmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggInUtYm9vdC1ta2ltYWdlLXh4eC5iYiIKLVJQUk9WSURFU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgotUlJFUExBQ0VTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCi1SQ09ORkxJQ1RTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi0KLVNFRF9DT05GSUdfRUZJID0gJy1lICJzL0NPTkZJR19FRklfTE9BREVSPS4qLyMgQ09ORklHX0VGSV9MT0FERVIgaXMgbm90IHNldC8iJwotU0VEX0NPTkZJR19FRklfeDg2ID0gJycKLVNFRF9DT05GSUdfRUZJX3g4Ni02NCA9ICcnCi1TRURfQ09ORklHX0VGSV9hcm0gPSAnJwotU0VEX0NPTkZJR19FRklfYXJtZWIgPSAnJwotU0VEX0NPTkZJR19FRklfYWFyY2g2NCA9ICcnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKLQotCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKLQkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCi0JIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KLQlzZWQgLWkgLWUgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAke1NFRF9DT05GSUdfRUZJfSAuY29uZmlnCi0KLQlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCi0JIyBta2ltYWdlCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCi0JbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCi0KLQkjIG1rZW52aW1hZ2UKLQlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtlbnZpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UKLQlsbiAtc2YgdWJvb3QtbWtlbnZpbWFnZSAke0R9JHtiaW5kaXJ9L21rZW52aW1hZ2UKLQotCSMgZHVtcGltYWdlCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2R1bXBpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LWR1bXBpbWFnZQotCWxuIC1zZiB1Ym9vdC1kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS9kdW1waW1hZ2UKLQotCSMgZml0X2NoZWNrX3NpZ24KLQlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS91Ym9vdC1maXRfY2hlY2tfc2lnbgotCWxuIC1zZiB1Ym9vdC1maXRfY2hlY2tfc2lnbiAke0R9JHtiaW5kaXJ9L2ZpdF9jaGVja19zaWduCi19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1ta2ltYWdlID0gIiR7YmluZGlyfS91Ym9vdC1ta2ltYWdlICR7YmluZGlyfS9ta2ltYWdlICR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UgJHtiaW5kaXJ9L2R1bXBpbWFnZSAke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtiaW5kaXJ9L2ZpdF9jaGVja19zaWduIgotRklMRVNfJHtQTn0tbWtlbnZpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtlbnZpbWFnZSAke2JpbmRpcn0vbWtlbnZpbWFnZSIKLQotUkRFUEVORFNfJHtQTn0tbWtpbWFnZSArPSAiZHRjIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LW1raW1hZ2UgJHtQTn0tbWtlbnZpbWFnZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMjAuMDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDIwLjA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYWY3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDIwLjA0LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSB1LWJvb3QtY29tbW9uLmluYworcmVxdWlyZSB1LWJvb3QtdG9vbHMuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKaW5kZXggOWE3NTRmZC4uODBmODI4ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwpAQCAtMSwxOSArMSwxNyBAQAogU1VNTUFSWSA9ICJVbml2ZXJzYWwgQm9vdCBMb2FkZXIgZm9yIGVtYmVkZGVkIGRldmljZXMiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2Jvb3Rsb2FkZXIiCiAKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAogREVQRU5EUyArPSAia2Vybi10b29scy1uYXRpdmUiCiAKLWluaGVyaXQgdWJvb3QtY29uZmlnIHVib290LWV4dGxpbnV4LWNvbmZpZyB1Ym9vdC1zaWduIGRlcGxveSBjbWwxCitpbmhlcml0IHVib290LWNvbmZpZyB1Ym9vdC1leHRsaW51eC1jb25maWcgdWJvb3Qtc2lnbiBkZXBsb3kgY21sMSBweXRob24zbmF0aXZlCiAKLURFUEVORFMgKz0gInN3aWctbmF0aXZlIHB5dGhvbi1uYXRpdmUiCitERVBFTkRTICs9ICJzd2lnLW5hdGl2ZSIKIAogRVhUUkFfT0VNQUtFID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RPT0xDSEFJTl9PUFRJT05TfSIgVj0xJwogRVhUUkFfT0VNQUtFICs9ICdIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IicKLUVYVFJBX09FTUFLRSArPSAnUFlUSE9OMj1uYXRpdmVweXRob24gU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfScKK0VYVFJBX09FTUFLRSArPSAnU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfScKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wiCiAjIHUtYm9vdCB3aWxsIGNvbXBpbGUgaXRzIG93biB0b29scyBkdXJpbmcgdGhlIGJ1aWxkLCB3aXRoIHNwZWNpZmljCkBAIC04Nyw2ICs4NSw4IEBACiAgICAgICAgIGZpCiAgICAgICAgIG1lcmdlX2NvbmZpZy5zaCAtbSAuY29uZmlnICR7QCIgIi5qb2luKGZpbmRfY2ZncyhkKSl9CiAgICAgICAgIGNtbDFfZG9fY29uZmlndXJlCisgICAgZWxzZQorICAgICAgICBERVZUT09MX0RJU0FCTEVfTUVOVUNPTkZJRz10cnVlCiAgICAgZmkKIH0KIApAQCAtMTIyLDYgKzEyMiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwICR7Qn0vJHtjb25maWd9LyR7YmluYXJ5fSAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAgICAgIGRvbmUKKworICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICAgICAgICAgICAgICBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9LyR7Y29uZmlnfSB1LWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgICAgICAgICAgICAgY3AgJHtCfS8ke2NvbmZpZ30vdS1ib290LWluaXRpYWwtZW52ICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudi0ke3R5cGV9CisKICAgICAgICAgICAgICAgICAgICAgdW5zZXQgawogICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICBkb25lCkBAIC0xMzAsNiArMTM1LDkgQEAKICAgICAgICAgdW5zZXQgIGkKICAgICBlbHNlCiAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0gJHtVQk9PVF9NQUtFX1RBUkdFVH0KKworICAgICAgICAjIEdlbmVyYXRlIHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9IHUtYm9vdC1pbml0aWFsLWVudgogICAgIGZpCiAKIH0KQEAgLTE0MywxOSArMTUxLDI4IEBACiAgICAgICAgICAgICAgICAgaj0kKGV4cHIgJGogKyAxKTsKICAgICAgICAgICAgICAgICBpZiBbICRqIC1lcSAkaSBdCiAgICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0vYm9vdAotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtEfS9ib290L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtEfS9ib290L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC8ke1VCT09UX0JJTkFSWX0tJHt0eXBlfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC8ke1VCT09UX0JJTkFSWX0KKworICAgICAgICAgICAgICAgICAgICAjIEluc3RhbGwgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudi0ke3R5cGV9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7dHlwZX0KKyAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgdW5zZXQgIGoKICAgICAgICAgZG9uZQogICAgICAgICB1bnNldCAgaQogICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2Jvb3QKLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke1VCT09UX0JJTkFSWX0gJHtEfS9ib290LyR7VUJPT1RfSU1BR0V9CisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0lNQUdFfQogICAgICAgICBsbiAtc2YgJHtVQk9PVF9JTUFHRX0gJHtEfS9ib290LyR7VUJPT1RfQklOQVJZfQorCisgICAgICAgICMgSW5zdGFsbCB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS91LWJvb3QtaW5pdGlhbC1lbnYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0KKyAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0KKyAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52CiAgICAgZmkKIAogICAgIGlmIFsgLW4gIiR7VUJPT1RfRUxGfSIgXQpAQCAtMjI0LDcgKzI0MSwxNiBAQAogCiB9CiAKLUZJTEVTXyR7UE59ID0gIi9ib290ICR7c3lzY29uZmRpcn0gJHtkYXRhZGlyfSIKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1lbnYiCisKK1JQUk9WSURFU18ke1BOfS1lbnYgKz0gInUtYm9vdC1kZWZhdWx0LWVudiIKK0ZJTEVTXyR7UE59LWVudiA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYqIFwKKyAgICAke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcgXAorIgorCitGSUxFU18ke1BOfSA9ICIvYm9vdCAke2RhdGFkaXJ9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWVudiIKIAogZG9fZGVwbG95ICgpIHsKICAgICBpZiBbIC1uICIke1VCT09UX0NPTkZJR30iIF0KQEAgLTIzNSwyNSArMjYxLDQzIEBACiAgICAgICAgICAgICAgICAgaj0kKGV4cHIgJGogKyAxKTsKICAgICAgICAgICAgICAgICBpZiBbICRqIC1lcSAkaSBdCiAgICAgICAgICAgICAgICAgdGhlbgotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtERVBMT1lESVJ9L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtJHt0eXBlfS4ke1VCT09UX1NVRkZJWH0gJHtERVBMT1lESVJ9L3UtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfQogICAgICAgICAgICAgICAgICAgICBjZCAke0RFUExPWURJUn0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX1NZTUxJTkt9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX0JJTkFSWX0KKworICAgICAgICAgICAgICAgICAgICAjIERlcGxveSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LWluaXRpYWwtZW52LSR7dHlwZX0gJHtERVBMT1lESVJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfQorICAgICAgICAgICAgICAgICAgICBjZCAke0RFUExPWURJUn0KKyAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0KKyAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke1BOfS1pbml0aWFsLWVudi0ke3R5cGV9CiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0ICBqCiAgICAgICAgIGRvbmUKICAgICAgICAgdW5zZXQgIGkKICAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLWQgJHtERVBMT1lESVJ9Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX0lNQUdFfQorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9JTUFHRX0KKwogICAgICAgICBjZCAke0RFUExPWURJUn0KICAgICAgICAgcm0gLWYgJHtVQk9PVF9CSU5BUll9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7VUJPT1RfQklOQVJZfQorCisgICAgICAgICMgRGVwbG95IHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9L3UtYm9vdC1pbml0aWFsLWVudiAke0RFUExPWURJUn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfQorICAgICAgICBjZCAke0RFUExPWURJUn0KKyAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfQorICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfSAke1BOfS1pbml0aWFsLWVudgorICAgIGZpCisKKyAgICBpZiBbIC1lICR7V09SS0RJUn0vZndfZW52LmNvbmZpZyBdIDsgdGhlbgorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L2Z3X2Vudi5jb25maWcgJHtERVBMT1lESVJ9L2Z3X2Vudi5jb25maWctJHtNQUNISU5FfS0ke1BWfS0ke1BSfQorICAgICAgICBjZCAke0RFUExPWURJUn0KKyAgICAgICAgbG4gLXNmIGZ3X2Vudi5jb25maWctJHtNQUNISU5FfS0ke1BWfS0ke1BSfSBmd19lbnYuY29uZmlnLSR7TUFDSElORX0KKyAgICAgICAgbG4gLXNmIGZ3X2Vudi5jb25maWctJHtNQUNISU5FfS0ke1BWfS0ke1BSfSBmd19lbnYuY29uZmlnCiAgICAgZmkKIAogICAgIGlmIFsgLW4gIiR7VUJPT1RfRUxGfSIgXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMjAuMDQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTkuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMjAuMDQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCmluZGV4IDJlMDRkMzAuLjI0NTIzYzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgpAQCAtMTAsNiArMTAsMTYgQEAKIAogUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QgYXZhaGktZGFlbW9uIGxpYmF2YWhpLWNvbW1vbiBsaWJhdmFoaS1jb3JlIGxpYmF2YWhpLWNsaWVudCBhdmFoaS1kbnNjb25mZCBsaWJhdmFoaS1nbGliIGF2YWhpLWF1dG9pcGQgYXZhaGktdXRpbHMiCiAKK0xJQ0VOU0VfbGliYXZhaGktZ29iamVjdCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLWRhZW1vbiA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2xpYmF2YWhpLWNvbW1vbiA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2xpYmF2YWhpLWNvcmUgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS1jbGllbnQgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS1kbnNjb25mZCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2xpYmF2YWhpLWdsaWIgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS1hdXRvaXBkID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktdXRpbHMgPSAiTEdQTHYyLjErIgorCiAjIEFzIGF2YWhpIGRvZXNuJ3QgcHV0IGFueSBmaWxlcyBpbnRvIFBOLCBjbGVhciB0aGUgZmlsZXMgbGlzdCB0byBhdm9pZCBwcm9ibGVtcwogIyBpZiBleHRyYSBsaWJyYXJpZXMgYXBwZWFyLgogRklMRVNfJHtQTn0gPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYmluZC1maXgtQ1ZFLTIwMTktNjQ3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZlZDk5ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYmluZC1maXgtQ1ZFLTIwMTktNjQ3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOS02NDcxLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE5LTY0NzEKLQotQ1ZFOiBDVkUtMjAxOS02NDcxCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvM2E5YzdiYl0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gM2E5YzdiYjgwZDRhNjA5Yjg2NDI3NDA2ZDlkZDc4MzE5OTkyMGI1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IFR1ZSwgMTkgTWFyIDIwMTkgMTQ6MTQ6MjEgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gbW92ZSBpdGVtX291dCB0ZXN0IGluc2lkZSBsb2NrIGluIGRuc19kaXNwYXRjaF9nZXRuZXh0KCkKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNjBjNDJmODQ5ZDUyMDU2NGVkNDJlNWVkMGJhNDZiNGI2OWMwNzcxMikKLS0tLQotIGxpYi9kbnMvZGlzcGF0Y2guYyB8IDEyICsrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZG5zL2Rpc3BhdGNoLmMgYi9saWIvZG5zL2Rpc3BhdGNoLmMKLWluZGV4IDQwOGJlZGEzNjcuLjMyNzhkYjRhMDcgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2Rpc3BhdGNoLmMKLSsrKyBiL2xpYi9kbnMvZGlzcGF0Y2guYwotQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgZG5zX2Rpc3BlbnRyeSB7Ci0gCWlzY190YXNrX3QJCSAgICAgICAqdGFzazsKLSAJaXNjX3Rhc2thY3Rpb25fdAkJYWN0aW9uOwotIAl2b2lkCQkJICAgICAgICphcmc7Ci0tCWJvb2wJCQlpdGVtX291dDsKLSsJYm9vbAkJCQlpdGVtX291dDsKLSAJZGlzcHNvY2tldF90CQkJKmRpc3Bzb2NrZXQ7Ci0gCUlTQ19MSVNUKGRuc19kaXNwYXRjaGV2ZW50X3QpCWl0ZW1zOwotIAlJU0NfTElOSyhkbnNfZGlzcGVudHJ5X3QpCWxpbms7Ci1AQCAtMzQyMiwxMyArMzQyMiwxNCBAQCBkbnNfZGlzcGF0Y2hfZ2V0bmV4dChkbnNfZGlzcGVudHJ5X3QgKnJlc3AsIGRuc19kaXNwYXRjaGV2ZW50X3QgKipzb2NrZXZlbnQpIHsKLSAJZGlzcCA9IHJlc3AtPmRpc3A7Ci0gCVJFUVVJUkUoVkFMSURfRElTUEFUQ0goZGlzcCkpOwotIAotLQlSRVFVSVJFKHJlc3AtPml0ZW1fb3V0ID09IHRydWUpOwotLQlyZXNwLT5pdGVtX291dCA9IGZhbHNlOwotLQotIAlldiA9ICpzb2NrZXZlbnQ7Ci0gCSpzb2NrZXZlbnQgPSBOVUxMOwotIAotIAlMT0NLKCZkaXNwLT5sb2NrKTsKLSsKLSsJUkVRVUlSRShyZXNwLT5pdGVtX291dCA9PSB0cnVlKTsKLSsJcmVzcC0+aXRlbV9vdXQgPSBmYWxzZTsKLSsKLSAJaWYgKGV2LT5idWZmZXIuYmFzZSAhPSBOVUxMKQotIAkJZnJlZV9idWZmZXIoZGlzcCwgZXYtPmJ1ZmZlci5iYXNlLCBldi0+YnVmZmVyLmxlbmd0aCk7Ci0gCWZyZWVfZGV2ZW50KGRpc3AsIGV2KTsKLUBAIC0zNTczLDYgKzM1NzQsOSBAQCBkbnNfZGlzcGF0Y2hfcmVtb3ZlcmVzcG9uc2UoZG5zX2Rpc3BlbnRyeV90ICoqcmVzcCwKLSAJCWlzY190YXNrX3NlbmQoZGlzcC0+dGFza1swXSwgJmRpc3AtPmN0bGV2ZW50KTsKLSB9Ci0gCi0rLyoKLSsgKiBkaXNwIG11c3QgYmUgbG9ja2VkLgotKyAqLwotIHN0YXRpYyB2b2lkCi0gZG9fY2FuY2VsKGRuc19kaXNwYXRjaF90ICpkaXNwKSB7Ci0gCWRuc19kaXNwYXRjaGV2ZW50X3QgKmV2OwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKaW5kZXggODcxYmIyYS4uOWQzMWI5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5NTA4NjdkOWZkM2Y2OTBlMjcxYzhjODA3YjZlZWQxNDRiMjkzNWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMzI1YTkyZjE4OTZhMmE3ZjU4NjYxMTY4NjgwMWI0MWZiYzkxYjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNyBBdWcgMjAxOCAxNTowMDo1MSArMDgwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuaW46IHJlbW92ZSB1c2VsZXNzIGAtTCR1c2Vfb3BlbnNzbC9saWInCkBAIC0xMCwxNSArMTAsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBjb25maWd1cmUuaW4gfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCA1NGVmYzU1Li43NmFjMGViIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xNjkxLDcgKzE2OTEsNyBAQCBJZiB5b3UgZG9uJ3Qgd2FudCBPcGVuU1NMLCB1c2UgLS13aXRob3V0LW9wZW5zc2xdKQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZTg1YTVjNi4uMmJiZmM1OCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTYzMSw3ICsxNjMxLDcgQEAgSWYgeW91IGRvbid0IHdhbnQgT3BlblNTTCwgdXNlIC0td2l0aG91dC1vcGVuc3NsXSkKICAJCQkJZmkKICAJCQkJOzsKICAJCQkqKQpAQCAtMjcsNiArMjgsMyBAQAogIAkJCQk7OwogIAkJCWVzYWMKICAJCWZpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1maXgtZW5mb3JjZW1lbnQtb2YtdGNwLWNsaWVudHMtdjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGFlMTI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1maXgtZW5mb3JjZW1lbnQtb2YtdGNwLWNsaWVudHMtdjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0L2VjMmQ1MGRdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIGVjMmQ1MGRhOGQ4MTgxNDY0MGUyODU5M2Q5MTJmNGI5NmM3ZWZlY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/V2l0b2xkPTIwS3I9QzQ9OTljaWNraT89IDx3cGtAaXNjLm9yZz4KLURhdGU6IFRodSwgMyBKYW4gMjAxOSAxNDoxNzo0MyArMDEwMAotU3ViamVjdDogW1BBVENIIDEvNl0gZml4IGVuZm9yY2VtZW50IG9mIHRjcC1jbGllbnRzICh2MSkKLQotdGNwLWNsaWVudHMgc2V0dGluZ3MgY291bGQgYmUgZXhjZWVkZWQgaW4gc29tZSBjYXNlcyBieQotY3JlYXRpbmcgbW9yZSBhbmQgbW9yZSBhY3RpdmUgVENQIGNsaWVudHMgdGhhdCBhcmUgb3ZlcgotdGhlIHNldCBxdW90YSBsaW1pdCwgd2hpY2ggaW4gdGhlIGVuZCBjb3VsZCBsZWFkIHRvIGEKLURvUyBhdHRhY2sgYnkgZS5nLiBleGhhdXN0aW9uIG9mIGZpbGUgZGVzY3JpcHRvcnMuCi0KLUlmIFRDUCBjbGllbnQgd2UncmUgY2xvc2luZyB3ZW50IG92ZXIgdGhlIHF1b3RhIChzbyBpdCdzCi1ub3QgYXR0YWNoZWQgdG8gYSBxdW90YSkgbWFyayBpdCBhcyBtb3J0YWwgLSBzbyB0aGF0IGl0Ci13aWxsIGJlIGRlc3Ryb3llZCBhbmQgbm90IHNldCB1cCB0byBsaXN0ZW4gZm9yIG5ldwotY29ubmVjdGlvbnMgLSB1bmxlc3MgaXQncyB0aGUgbGFzdCBjbGllbnQgZm9yIGEgc3BlY2lmaWMKLWludGVyZmFjZS4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZjk3MTMxZDIxYjk3MzgxY2VmNzJiOTcxYjE1NzM0NWMxZjliNDExNSkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDk2ODlmZmM0ODVkZjhmOTcxZjBhZDgxYWI4YWIxZjUzODk0OTM3NzYpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgfCAxMyArKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggZDQ4MmRhNzEyMS4uMDczOWRkNDhhZiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtNDIxLDggKzQyMSwxOSBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3Bzb2NrZXQpOwotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSAJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCX0gZWxzZSB7Ci0rCQkJLyoKLSsJCQkgKiBXZSB3ZW50IG92ZXIgcXVvdGEgd2l0aCB0aGlzIGNsaWVudCwgd2UgZG9uJ3QKLSsJCQkgKiB3YW50IHRvIHJlc3RhcnQgbGlzdGVuaW5nIHVubGVzcyB0aGlzIGlzIHRoZQotKwkJCSAqIGxhc3QgY2xpZW50IG9uIHRoaXMgaW50ZXJmYWNlLCB3aGljaCBpcwotKwkJCSAqIGNoZWNrZWQgbGF0ZXIuCi0rCQkJICovCi0rCQkJaWYgKFRDUF9DTElFTlQoY2xpZW50KSkgewotKwkJCQljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0rCQkJfQotKwkJfQotIAotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLSAJCQkodm9pZClpc2NfdGltZXJfcmVzZXQoY2xpZW50LT50aW1lciwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZDYwMWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU3ViamVjdDogZ2VuLmM6IGV4dGVuZCBESVJOQU1FU0laRSBmcm9tIDI1NiB0byA1MTIKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2Rucy9nZW4uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiaW5kLTkuMTEuMy5vcmlnL2xpYi9kbnMvZ2VuLmMKLSsrKyBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCi1AQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KLSAjZGVmaW5lIFRZUEVDTEFTU0JVRiAoVFlQRUNMQVNTTEVOICsgMSkKLSAjZGVmaW5lIFRZUEVDTEFTU0ZNVCAiJSIgU1RSKFRZUEVDTEFTU0xFTikgIlstMC05YS16XV8lZCIKLSAjZGVmaW5lIEFUVFJJQlVURVNJWkUgMjU2Ci0tI2RlZmluZSBESVJOQU1FU0laRSAyNTYKLSsjZGVmaW5lIERJUk5BTUVTSVpFIDUxMgotIAotIHN0YXRpYyBzdHJ1Y3QgY2MgewotIAlzdHJ1Y3QgY2MgKm5leHQ7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxODc0YTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA1YmMzMTY3YThiNzE0ZWMwYzRhM2YxYzdmM2I5NDExMjk2ZWMwYTIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IFNlcCAyMDE1IDIwOjIzOjQ3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYi9kbnMvZ2VuLmM6IGZpeCB0b28gbG9uZyBlcnJvcgotCi1UaGUgNTEyIGlzIGEgbGl0dGxlIHNob3J0IHdoZW4gYnVpbGQgaW4gZGVlcCBkaXIsIGFuZCBjYXVzZSAidG9vIGxvbmciCi1lcnJvciwgdXNlIFBBVEhfTUFYIGlmIGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9kbnMvZ2VuLmMgfCAgICA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjExLjMub3JpZy9saWIvZG5zL2dlbi5jCi0rKysgYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotQEAgLTEzMCw3ICsxMzAsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQotICNkZWZpbmUgVFlQRUNMQVNTQlVGIChUWVBFQ0xBU1NMRU4gKyAxKQotICNkZWZpbmUgVFlQRUNMQVNTRk1UICIlIiBTVFIoVFlQRUNMQVNTTEVOKSAiWy0wLTlhLXpdXyVkIgotICNkZWZpbmUgQVRUUklCVVRFU0laRSAyNTYKLSsjaWZkZWYgUEFUSF9NQVgKLSsjZGVmaW5lIERJUk5BTUVTSVpFIFBBVEhfTUFYCi0rI2Vsc2UKLSAjZGVmaW5lIERJUk5BTUVTSVpFIDUxMgotKyNlbmRpZgotIAotIHN0YXRpYyBzdHJ1Y3QgY2MgewotIAlzdHJ1Y3QgY2MgKm5leHQ7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDItdGNwLWNsaWVudHMtY291bGQtc3RpbGwtYmUtZXhjZWVkZWQtdjIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDItdGNwLWNsaWVudHMtY291bGQtc3RpbGwtYmUtZXhjZWVkZWQtdjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNGU4YjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcwICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvNzE5ZjYwNF0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gNzE5ZjYwNGUzZmFkNWI3NDc5YmQxNGUyZmEwZWY0NDEzZjBhOGZkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9XaXRvbGQ9MjBLcj1DND05OWNpY2tpPz0gPHdwa0Bpc2Mub3JnPgotRGF0ZTogRnJpLCA0IEphbiAyMDE5IDEyOjUwOjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi82XSB0Y3AtY2xpZW50cyBjb3VsZCBzdGlsbCBiZSBleGNlZWRlZCAodjIpCi0KLXRoZSBUQ1AgY2xpZW50IHF1b3RhIGNvdWxkIHN0aWxsIGJlIGluZWZmZWN0aXZlIHVuZGVyIHNvbWUKLWNpcmN1bXN0YW5jZXMuICB0aGlzIGNoYW5nZToKLQotLSBpbXByb3ZlcyBxdW90YSBhY2NvdW50aW5nIHRvIGVuc3VyZSB0aGF0IFRDUCBjbGllbnRzIGFyZQotICBwcm9wZXJseSBsaW1pdGVkLCB3aGlsZSBzdGlsbCBndWFyYW50ZWVpbmcgdGhhdCBhdCBsZWFzdCBvbmUgY2xpZW50Ci0gIGlzIGFsd2F5cyBhdmFpbGFibGUgdG8gc2VydmUgVENQIGNvbm5lY3Rpb25zIG9uIGVhY2ggaW50ZXJmYWNlLgotLSB1c2VzIG1vcmUgZGVzY3JpcHRpdmUgbmFtZXMgYW5kIHJlbW92ZXMgb25lIChudGNwdGFyZ2V0KSB0aGF0Ci0gIHdhcyBubyBsb25nZXIgbmVlZGVkCi0tIGFkZHMgY29tbWVudHMKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgOTI0NjUxZjFkNWU2MDVjZDE4NmQwM2Y0ZjczNDBiY2M1NGQ3N2NjMikKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDU1YTdhNDU4ZTMwZTQ3ODc0ZDM0YmRmMTA3OWViODYzYTA1MTIzOTYpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICB8IDMxMSArKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggICAgICAgfCAgMTQgKy0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCB8ICAxMSArLQotIGJpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyAgICAgICAgICAgICAgIHwgICA4ICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNjcgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDA3MzlkZDQ4YWYuLmE3YjQ5YTBmNzEgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI0NiwxMCArMjQ2LDExIEBAIHN0YXRpYyB2b2lkIG5zX2NsaWVudF9kdW1wbWVzc2FnZShuc19jbGllbnRfdCAqY2xpZW50LCBjb25zdCBjaGFyICpyZWFzb24pOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jayk7Ci0rCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jaywgbnNfY2xpZW50X3QgKm9sZGNsaWVudCk7Ci0gc3RhdGljIGlubGluZSBib29sCi0tYWxsb3dlZChpc2NfbmV0YWRkcl90ICphZGRyLCBkbnNfbmFtZV90ICpzaWduZXIsIGlzY19uZXRhZGRyX3QgKmVjc19hZGRyLAotLQl1aW50OF90IGVjc19hZGRybGVuLCB1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKTsKLSthbGxvd2VkKGlzY19uZXRhZGRyX3QgKmFkZHIsIGRuc19uYW1lX3QgKnNpZ25lciwKLSsJaXNjX25ldGFkZHJfdCAqZWNzX2FkZHIsIHVpbnQ4X3QgZWNzX2FkZHJsZW4sCi0rCXVpbnQ4X3QgKmVjc19zY29wZSwgZG5zX2FjbF90ICphY2wpCi0gc3RhdGljIHZvaWQgY29tcHV0ZV9jb29raWUobnNfY2xpZW50X3QgKmNsaWVudCwgdWludDMyX3Qgd2hlbiwKLSAJCQkgICB1aW50MzJfdCBub25jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LAotIAkJCSAgIGlzY19idWZmZXJfdCAqYnVmKTsKLUBAIC00MDUsOCArNDA2LDExIEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICovCi0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLSAJCUlOU0lTVChjbGllbnQtPm5ld3N0YXRlIDw9IE5TX0NMSUVOVFNUQVRFX1JFQURZKTsKLS0JCWlmIChjbGllbnQtPm5yZWFkcyA+IDApCi0rCi0rCQlpZiAoY2xpZW50LT5ucmVhZHMgPiAwKSB7Ci0gCQkJZG5zX3RjcG1zZ19jYW5jZWxyZWFkKCZjbGllbnQtPnRjcG1zZyk7Ci0rCQl9Ci0rCi0gCQlpZiAoY2xpZW50LT5ucmVhZHMgIT0gMCkgewotIAkJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlYWQgY2FuY2VsIGNvbXBsZXRpb24uICovCi0gCQkJcmV0dXJuICh0cnVlKTsKLUBAIC00MTYsMjUgKzQyMCw1OCBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQlkbnNfdGNwbXNnX2ludmFsaWRhdGUoJmNsaWVudC0+dGNwbXNnKTsKLSAJCQljbGllbnQtPnRjcG1zZ192YWxpZCA9IGZhbHNlOwotIAkJfQotKwotIAkJaWYgKGNsaWVudC0+dGNwc29ja2V0ICE9IE5VTEwpIHsKLSAJCQlDVFJBQ0UoImNsb3NldGNwIik7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwc29ja2V0KTsKLSsKLSsJCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLSsJCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLSsJCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0rCQkJfQotIAkJfQotIAotIAkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJfSBlbHNlIHsKLSAJCQkvKgotLQkJCSAqIFdlIHdlbnQgb3ZlciBxdW90YSB3aXRoIHRoaXMgY2xpZW50LCB3ZSBkb24ndAotLQkJCSAqIHdhbnQgdG8gcmVzdGFydCBsaXN0ZW5pbmcgdW5sZXNzIHRoaXMgaXMgdGhlCi0tCQkJICogbGFzdCBjbGllbnQgb24gdGhpcyBpbnRlcmZhY2UsIHdoaWNoIGlzCi0tCQkJICogY2hlY2tlZCBsYXRlci4KLSsJCQkgKiBJZiB3ZSBhcmUgbm90IGluIGEgcGlwZWxpbmUgZ3JvdXAsIG9yCi0rCQkJICogd2UgYXJlIHRoZSBsYXN0IGNsaWVudCBpbiB0aGUgZ3JvdXAsIGRldGFjaCBmcm9tCi0rCQkJICogdGNwcXVvdGE7IG90aGVyd2lzZSwgdHJhbnNmZXIgdGhlIHF1b3RhIHRvCi0rCQkJICogYW5vdGhlciBjbGllbnQgaW4gdGhlIHNhbWUgZ3JvdXAuCi0gCQkJICovCi0tCQkJaWYgKFRDUF9DTElFTlQoY2xpZW50KSkgewotLQkJCQljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0rCQkJaWYgKCFJU0NfTElOS19MSU5LRUQoY2xpZW50LCBnbGluaykgfHwKLSsJCQkgICAgKGNsaWVudC0+Z2xpbmsubmV4dCA9PSBOVUxMICYmCi0rCQkJICAgICBjbGllbnQtPmdsaW5rLnByZXYgPT0gTlVMTCkpCi0rCQkJewotKwkJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCQl9IGVsc2UgaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLm5leHQtPnRjcHF1b3RhID09IE5VTEwpOwotKwkJCQljbGllbnQtPmdsaW5rLm5leHQtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLSsJCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCQkJfSBlbHNlIHsKLSsJCQkJSU5TSVNUKGNsaWVudC0+Z2xpbmsucHJldi0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0rCQkJCWNsaWVudC0+Z2xpbmsucHJldi0+dGNwcXVvdGEgPSBjbGllbnQtPnRjcHF1b3RhOwotKwkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSAJCQl9Ci0gCQl9Ci0gCi0rCQkvKgotKwkJICogVW5saW5rIGZyb20gcGlwZWxpbmUgZ3JvdXAuCi0rCQkgKi8KLSsJCWlmIChJU0NfTElOS19MSU5LRUQoY2xpZW50LCBnbGluaykpIHsKLSsJCQlpZiAoY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLSsJCQkJY2xpZW50LT5nbGluay5uZXh0LT5nbGluay5wcmV2ID0KLSsJCQkJCWNsaWVudC0+Z2xpbmsucHJldjsKLSsJCQl9Ci0rCQkJaWYgKGNsaWVudC0+Z2xpbmsucHJldiAhPSBOVUxMKSB7Ci0rCQkJCWNsaWVudC0+Z2xpbmsucHJldi0+Z2xpbmsubmV4dCA9Ci0rCQkJCQljbGllbnQtPmdsaW5rLm5leHQ7Ci0rCQkJfQotKwkJCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBnbGluayk7Ci0rCQl9Ci0rCi0gCQlpZiAoY2xpZW50LT50aW1lcnNldCkgewotIAkJCSh2b2lkKWlzY190aW1lcl9yZXNldChjbGllbnQtPnRpbWVyLAotIAkJCQkJICAgICAgaXNjX3RpbWVydHlwZV9pbmFjdGl2ZSwKLUBAIC00NTUsMTUgKzQ5MiwxNiBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIHRoYXQgYWxyZWFkeS4gIENoZWNrIHdoZXRoZXIgdGhpcyBjbGllbnQgbmVlZHMgdG8gcmVtYWluCi0gCQkgKiBhY3RpdmUgYW5kIGZvcmNlIGl0IHRvIGdvIGluYWN0aXZlIGlmIG5vdC4KLSAJCSAqCi0tCQkgKiBVRFAgY2xpZW50cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgVENQIGNsaWVudHMKLS0JCSAqIG1heSByZW1haW4gYWN0aXZlIGlmIHdlIGhhdmUgZmV3ZXIgYWN0aXZlIFRDUCBjbGllbnQKLS0JCSAqIG9iamVjdHMgdGhhbiBkZXNpcmVkIGR1ZSB0byBhbiBlYXJsaWVyIHF1b3RhIGV4aGF1c3Rpb24uCi0rCQkgKiBVRFAgY2xpZW50cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AgY2xpZW50Ci0rCQkgKiB3aWxsIG5lZWRzIHRvIHJlbWFpbiBhY3RpdmUgaWYgbm8gb3RoZXIgY2xpZW50cyBhcmUKLSsJCSAqIGxpc3RlbmluZyBmb3IgVENQIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlLCB0bwotKwkJICogcHJldmVudCB0aGlzIGludGVyZmFjZSBmcm9tIGdvaW5nIG5vbnJlc3BvbnNpdmUuCi0gCQkgKi8KLSAJCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgIW5zX2dfY2xpZW50dGVzdCkgewotIAkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BjdXJyZW50IDwKLS0JCQkJICAgIGNsaWVudC0+aW50ZXJmYWNlLT5udGNwdGFyZ2V0KQotKwkJCWlmIChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA9PSAwKSB7Ci0gCQkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0rCQkJfQotIAkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAkJfQotIAotQEAgLTQ3MiwxNSArNTEwLDE3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogcXVldWUgZm9yIHJlY3ljbGluZy4KLSAJCSAqLwotIAkJaWYgKGNsaWVudC0+bW9ydGFsKSB7Ci0tCQkJaWYgKGNsaWVudC0+bmV3c3RhdGUgPiBOU19DTElFTlRTVEFURV9JTkFDVElWRSkKLSsJCQlpZiAoY2xpZW50LT5uZXdzdGF0ZSA+IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFKSB7Ci0gCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSsJCQl9Ci0gCQl9Ci0gCi0gCQlpZiAoTlNfQ0xJRU5UU1RBVEVfUkVBRFkgPT0gY2xpZW50LT5uZXdzdGF0ZSkgewotIAkJCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLSAJCQkJY2xpZW50X2FjY2VwdChjbGllbnQpOwotLQkJCX0gZWxzZQotKwkJCX0gZWxzZSB7Ci0gCQkJCWNsaWVudF91ZHByZWN2KGNsaWVudCk7Ci0rCQkJfQotIAkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9NQVg7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSAJCX0KLUBAIC00OTIsNDEgKzUzMiw1NyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCS8qCi0gCQkgKiBXZSBhcmUgdHJ5aW5nIHRvIGVudGVyIHRoZSBpbmFjdGl2ZSBzdGF0ZS4KLSAJCSAqLwotLQkJaWYgKGNsaWVudC0+bmFjY2VwdHMgPiAwKQotKwkJaWYgKGNsaWVudC0+bmFjY2VwdHMgPiAwKSB7Ci0gCQkJaXNjX3NvY2tldF9jYW5jZWwoY2xpZW50LT50Y3BsaXN0ZW5lciwgY2xpZW50LT50YXNrLAotIAkJCQkJICBJU0NfU09DS0NBTkNFTF9BQ0NFUFQpOwotKwkJfQotIAotIAkJLyogU3RpbGwgd2FpdGluZyBmb3IgYWNjZXB0IGNhbmNlbCBjb21wbGV0aW9uLiAqLwotLQkJaWYgKCEgKGNsaWVudC0+bmFjY2VwdHMgPT0gMCkpCi0rCQlpZiAoISAoY2xpZW50LT5uYWNjZXB0cyA9PSAwKSkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0rCQl9Ci0gCi0gCQkvKiBBY2NlcHQgY2FuY2VsIGlzIGNvbXBsZXRlLiAqLwotLQkJaWYgKGNsaWVudC0+bnJlY3ZzID4gMCkKLSsJCWlmIChjbGllbnQtPm5yZWN2cyA+IDApIHsKLSAJCQlpc2Nfc29ja2V0X2NhbmNlbChjbGllbnQtPnVkcHNvY2tldCwgY2xpZW50LT50YXNrLAotIAkJCQkJICBJU0NfU09DS0NBTkNFTF9SRUNWKTsKLSsJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlY3YgY2FuY2VsIGNvbXBsZXRpb24uICovCi0tCQlpZiAoISAoY2xpZW50LT5ucmVjdnMgPT0gMCkpCi0rCQlpZiAoISAoY2xpZW50LT5ucmVjdnMgPT0gMCkpIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotKwkJfQotIAotIAkJLyogU3RpbGwgd2FpdGluZyBmb3IgY29udHJvbCBldmVudCB0byBiZSBkZWxpdmVyZWQgKi8KLS0JCWlmIChjbGllbnQtPm5jdGxzID4gMCkKLSsJCWlmIChjbGllbnQtPm5jdGxzID4gMCkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0tCi0tCQkvKiBEZWFjdGl2YXRlIHRoZSBjbGllbnQuICovCi0tCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UpCi0tCQkJbnNfaW50ZXJmYWNlX2RldGFjaCgmY2xpZW50LT5pbnRlcmZhY2UpOwotKwkJfQotIAotIAkJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMCk7Ci0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0JCWlmIChjbGllbnQtPnRjcGxpc3RlbmVyICE9IE5VTEwpCi0rCQlpZiAoY2xpZW50LT50Y3BsaXN0ZW5lciAhPSBOVUxMKSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotIAotLQkJaWYgKGNsaWVudC0+dWRwc29ja2V0ICE9IE5VTEwpCi0rCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0rCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotKwkJCX0KLSsJCX0KLSsJCWlmIChjbGllbnQtPnVkcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dWRwc29ja2V0KTsKLSsJCX0KLSAKLS0JCWlmIChjbGllbnQtPmRpc3BhdGNoICE9IE5VTEwpCi0rCQkvKiBEZWFjdGl2YXRlIHRoZSBjbGllbnQuICovCi0rCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UgIT0gTlVMTCkgewotKwkJCW5zX2ludGVyZmFjZV9kZXRhY2goJmNsaWVudC0+aW50ZXJmYWNlKTsKLSsJCX0KLSsKLSsJCWlmIChjbGllbnQtPmRpc3BhdGNoICE9IE5VTEwpIHsKLSAJCQlkbnNfZGlzcGF0Y2hfZGV0YWNoKCZjbGllbnQtPmRpc3BhdGNoKTsKLSsJCX0KLSAKLSAJCWNsaWVudC0+YXR0cmlidXRlcyA9IDA7Ci0gCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotQEAgLTU1MSwxMCArNjA3LDEzIEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9NQVg7Ci0gCQkJaWYgKCFuc19nX2NsaWVudHRlc3QgJiYgbWFuYWdlciAhPSBOVUxMICYmCi0gCQkJICAgICFtYW5hZ2VyLT5leGl0aW5nKQotKwkJCXsKLSAJCQkJSVNDX1FVRVVFX1BVU0gobWFuYWdlci0+aW5hY3RpdmUsIGNsaWVudCwKLSAJCQkJCSAgICAgICBpbGluayk7Ci0tCQkJaWYgKGNsaWVudC0+bmVlZHNodXRkb3duKQotKwkJCX0KLSsJCQlpZiAoY2xpZW50LT5uZWVkc2h1dGRvd24pIHsKLSAJCQkJaXNjX3Rhc2tfc2h1dGRvd24oY2xpZW50LT50YXNrKTsKLSsJCQl9Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSAJCX0KLSAJfQotQEAgLTY3NSw3ICs3MzQsNiBAQCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCX0KLSB9Ci0gCi0tCi0gLyolCi0gICogVGhlIGNsaWVudCdzIHRhc2sgaGFzIHJlY2VpdmVkIGEgc2h1dGRvd24gZXZlbnQuCi0gICovCi1AQCAtMjUwNywxNyArMjU2NSwxMiBAQCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJLyoKLSAJICogUGlwZWxpbmUgVENQIHF1ZXJ5IHByb2Nlc3NpbmcuCi0gCSAqLwotLQlpZiAoY2xpZW50LT5tZXNzYWdlLT5vcGNvZGUgIT0gZG5zX29wY29kZV9xdWVyeSkKLSsJaWYgKGNsaWVudC0+bWVzc2FnZS0+b3Bjb2RlICE9IGRuc19vcGNvZGVfcXVlcnkpIHsKLSAJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCX0KLSAJaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotLQkJcmVzdWx0ID0gaXNjX3F1b3RhX3Jlc2VydmUoJm5zX2dfc2VydmVyLT50Y3BxdW90YSk7Ci0tCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpCi0tCQkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSsJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotLQkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX1dBUk5JTkcsCi0tCQkJCSAgICAgICJubyBtb3JlIFRDUCBjbGllbnRzKHJlYWQpOiAlcyIsCi0tCQkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCQl9Ci0gCX0KLUBAIC0zMDg3LDYgKzMxNDAsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5maWx0ZXJfYWFhYSA9IGRuc19hYWFhX29rOwotICNlbmRpZgotIAljbGllbnQtPm5lZWRzaHV0ZG93biA9IG5zX2dfY2xpZW50dGVzdDsKLSsJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLSAKLSAJSVNDX0VWRU5UX0lOSVQoJmNsaWVudC0+Y3RsZXZlbnQsIHNpemVvZihjbGllbnQtPmN0bGV2ZW50KSwgMCwgTlVMTCwKLSAJCSAgICAgICBOU19FVkVOVF9DTElFTlRDT05UUk9MLCBjbGllbnRfc3RhcnQsIGNsaWVudCwgY2xpZW50LAotQEAgLTMxMDAsNiArMzE1NCw3IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPmZvcm1lcnJjYWNoZS5pZCA9IDA7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBsaW5rKTsKLSAJSVNDX0xJTktfSU5JVChjbGllbnQsIHJsaW5rKTsKLSsJSVNDX0xJTktfSU5JVChjbGllbnQsIGdsaW5rKTsKLSAJSVNDX1FMSU5LX0lOSVQoY2xpZW50LCBpbGluayk7Ci0gCWNsaWVudC0+a2V5dGFnID0gTlVMTDsKLSAJY2xpZW50LT5rZXl0YWdfbGVuID0gMDsKLUBAIC0zMTkzLDEyICszMjQ4LDE5IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAotIAlJTlNJU1QoY2xpZW50LT5zdGF0ZSA9PSBOU19DTElFTlRTVEFURV9SRUFEWSk7Ci0gCi0rCS8qCi0rCSAqIFRoZSBhY2NlcHQoKSB3YXMgc3VjY2Vzc2Z1bCBhbmQgd2UncmUgbm93IGVzdGFibGlzaGluZyBhIG5ldwotKwkgKiBjb25uZWN0aW9uLiBXZSBuZWVkIHRvIG1ha2Ugbm90ZSBvZiBpdCBpbiB0aGUgY2xpZW50IGFuZAotKwkgKiBpbnRlcmZhY2Ugb2JqZWN0cyBzbyBjbGllbnQgb2JqZWN0cyBjYW4gZG8gdGhlIHJpZ2h0IHRoaW5nCi0rCSAqIHdoZW4gZ29pbmcgaW5hY3RpdmUgaW4gZXhpdF9jaGVjaygpIChzZWUgY29tbWVudHMgaW4KLSsJICogY2xpZW50X2FjY2VwdCgpIGZvciBkZXRhaWxzKS4KLSsJICovCi0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDEpOwotIAljbGllbnQtPm5hY2NlcHRzLS07Ci0gCi0gCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudCA+IDApOwotLQljbGllbnQtPmludGVyZmFjZS0+bnRjcGN1cnJlbnQtLTsKLSsJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID4gMCk7Ci0rCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLS07Ci0gCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAotIAkvKgotQEAgLTMyMzIsNiArMzI5NCw5IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfREVCVUcoMyksCi0gCQkJICAgICAgImFjY2VwdCBmYWlsZWQ6ICVzIiwKLSAJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChuZXZlbnQtPnJlc3VsdCkpOwotKwkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotKwkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJfQotIAl9Ci0gCi0gCWlmIChleGl0X2NoZWNrKGNsaWVudCkpCi1AQCAtMzI3MCwxOCArMzMzNSwxMiBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCSAqIGRlbnkgc2VydmljZSB0byBsZWdpdGltYXRlIFRDUCBjbGllbnRzLgotIAkJICovCi0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotLQkJcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhLAotLQkJCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpCi0tCQkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLS0JCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJCW5zX2NsaWVudF9sb2coY2xpZW50LCBOU19MT0dDQVRFR09SWV9DTElFTlQsCi0tCQkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfV0FSTklORywKLS0JCQkJICAgICAgIm5vIG1vcmUgVENQIGNsaWVudHMoYWNjZXB0KTogJXMiLAotLQkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLS0JCX0gZWxzZSBpZiAobnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotLQkJCSAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotLQkJCQkgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSB7Ci0rCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotKwkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmCi0rCQkgICAgKGNsaWVudC0+c2N0eC0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0rCQkgICAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotKwkJCSAgICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkpCi0rCQl7Ci0gCQkJY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotIAkJfQotIAotQEAgLTMyOTgsMTIgKzMzNTcsODAgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCi0gCUNUUkFDRSgiYWNjZXB0Iik7Ci0gCi0rCS8qCi0rCSAqIFRoZSB0Y3BxdW90YSBvYmplY3QgY2FuIG9ubHkgYmUgc2ltdWx0YW5lb3VzbHkgcmVmZXJlbmNlZCBhCi0rCSAqIHByZS1kZWZpbmVkIG51bWJlciBvZiB0aW1lczsgdGhpcyBpcyBjb25maWd1cmVkIGJ5ICd0Y3AtY2xpZW50cycKLSsJICogaW4gbmFtZWQuY29uZi4gSWYgd2UgY2FuJ3QgYXR0YWNoIHRvIGl0IGhlcmUsIHRoYXQgbWVhbnMgdGhlIFRDUAotKwkgKiBjbGllbnQgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuCi0rCSAqLwotKwlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZjbGllbnQtPnNjdHgtPnRjcHF1b3RhLAotKwkJCQkgICZjbGllbnQtPnRjcHF1b3RhKTsKLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQkJYm9vbCBleGl0OwotKwotKwkJCW5zX2NsaWVudF9sb2coY2xpZW50LCBOU19MT0dDQVRFR09SWV9DTElFTlQsCi0rCQkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfREVCVUcoMSksCi0rCQkJCSAgICAgICJubyBtb3JlIFRDUCBjbGllbnRzOiAlcyIsCi0rCQkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotKwotKwkJCS8qCi0rCQkJICogV2UgaGF2ZSBleGNlZWRlZCB0aGUgc3lzdGVtLXdpZGUgVENQIGNsaWVudAotKwkJCSAqIHF1b3RhLiAgQnV0LCB3ZSBjYW4ndCBqdXN0IGJsb2NrIHRoaXMgYWNjZXB0Ci0rCQkJICogaW4gYWxsIGNhc2VzLCBiZWNhdXNlIGlmIHdlIGRpZCwgYSBoZWF2eSBUQ1AKLSsJCQkgKiBsb2FkIG9uIG90aGVyIGludGVyZmFjZXMgbWlnaHQgY2F1c2UgdGhpcwotKwkJCSAqIGludGVyZmFjZSB0byBiZSBzdGFydmVkLCB3aXRoIG5vIGNsaWVudHMgYWJsZQotKwkJCSAqIHRvIGFjY2VwdCBuZXcgY29ubmVjdGlvbnMuCi0rCQkJICoKLSsJCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudAotKwkJCSAqIGlzIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLSsJCQkgKiBpbnRlcmZhY2UgKHdoZXRoZXIgYWNjZXB0aW5nLCByZWFkaW5nLCBvcgotKwkJCSAqIHByb2Nlc3NpbmcpLgotKwkJCSAqCi0rCQkJICogSWYgc28sIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwKLSsJCQkgKiBhY2NlcHQgLSB3ZSBjYW4gbGV0IHRoaXMgY2xpZW50IHRvIGdvIGluYWN0aXZlCi0rCQkJICogYW5kIHRoZSBvdGhlciBvbmUgaGFuZGxlIHRoZSBuZXh0IGNvbm5lY3Rpb24KLSsJCQkgKiB3aGVuIGl0J3MgcmVhZHkuCi0rCQkJICoKLSsJCQkgKiBCdXQgaWYgbm90LCB0aGVuIHdlIG5lZWQgdG8gYmUgYSBsaXR0bGUgYml0Ci0rCQkJICogZmxleGlibGUgYWJvdXQgdGhlIHF1b3RhLiBXZSBhbGxvdyAqb25lKiBleHRyYQotKwkJCSAqIFRDUCBjbGllbnQgdGhyb3VnaCwgdG8gZW5zdXJlIHdlJ3JlIGxpc3RlbmluZyBvbgotKwkJCSAqIGV2ZXJ5IGludGVyZmFjZS4KLSsJCQkgKgotKwkJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlICpyZWFsKgotKwkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyCi0rCQkJICogb2YgaW50ZXJmYWNlcy4pCi0rCQkJICovCi0rCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCWV4aXQgPSAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLSsJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsKLSsJCQlpZiAoZXhpdCkgewotKwkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0rCQkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJfQotKwotKwkvKgotKwkgKiBCeSBpbmNyZW1lbnRpbmcgdGhlIGludGVyZmFjZSdzIG50Y3BhY3RpdmUgY291bnRlciB3ZSBzaWduYWwKLSsJICogdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2xpZW50IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBmb3IgdGhlCi0rCSAqIGludGVyZmFjZS4KLSsJICoKLSsJICogV2UgYWxzbyBtYWtlIG5vdGUgb2YgdGhlIGZhY3QgaW4gdGhlIGNsaWVudCBpdHNlbGYgd2l0aCB0aGUKLSsJICogdGNwYWN0aXZlIGZsYWcuIFRoaXMgZW5zdXJlcyBwcm9wZXIgYWNjb3VudGluZyBieSBwcmV2ZW50aW5nCi0rCSAqIHVzIGZyb20gYWNjaWRlbnRhbGx5IGluY3JlbWVudGluZyBvciBkZWNyZW1lbnRpbmcgbnRjcGFjdGl2ZQotKwkgKiBtb3JlIHRoYW4gb25jZSBwZXIgY2xpZW50IG9iamVjdC4KLSsJICovCi0rCWlmICghY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0rCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsJfQotKwotIAlyZXN1bHQgPSBpc2Nfc29ja2V0X2FjY2VwdChjbGllbnQtPnRjcGxpc3RlbmVyLCBjbGllbnQtPnRhc2ssCi0gCQkJCSAgIGNsaWVudF9uZXdjb25uLCBjbGllbnQpOwotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCVVORVhQRUNURURfRVJST1IoX19GSUxFX18sIF9fTElORV9fLAotLQkJCQkgImlzY19zb2NrZXRfYWNjZXB0KCkgZmFpbGVkOiAlcyIsCi0tCQkJCSBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAJCS8qCi0gCQkgKiBYWFhSVEggIFdoYXQgc2hvdWxkIHdlIGRvPyAgV2UncmUgdHJ5aW5nIHRvIGFjY2VwdCBidXQKLSAJCSAqCSAgIGl0IGRpZG4ndCB3b3JrLiAgSWYgd2UganVzdCBnaXZlIHVwLCB0aGVuIFRDUAotQEAgLTMzMTEsMTIgKzM0MzgsMzkgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKgotIAkJICoJICAgRm9yIG5vdywgd2UganVzdCBnbyBpZGxlLgotIAkJICovCi0rCQlVTkVYUEVDVEVEX0VSUk9SKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotKwkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0rCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0rCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQl9Ci0gCQlyZXR1cm47Ci0gCX0KLSsKLSsJLyoKLSsJICogVGhlIGNsaWVudCdzICduYWNjZXB0cycgY291bnRlciBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNsaWVudCBoYXMKLSsJICogY2FsbGVkIGFjY2VwdCgpIGFuZCBpcyB3YWl0aW5nIGZvciBhIG5ldyBjb25uZWN0aW9uLiBJdCBzaG91bGQKLSsJICogbmV2ZXIgZXhjZWVkIDEuCi0rCSAqLwotIAlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAwKTsKLSAJY2xpZW50LT5uYWNjZXB0cysrOwotKwotKwkvKgotKwkgKiBUaGUgaW50ZXJmYWNlJ3MgJ250Y3BhY2NlcHRpbmcnIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgd2hlbgotKwkgKiBhbnkgY2xpZW50IGNhbGxzIGFjY2VwdCgpLCBhbmQgZGVjcmVtZW50ZWQgaW4gY2xpZW50X25ld2Nvbm4oKQotKwkgKiBvbmNlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgotKwkgKgotKwkgKiBXaGVuIHRoZSBjbGllbnQgb2JqZWN0IGlzIHNodXR0aW5nIGRvd24gYWZ0ZXIgaGFuZGxpbmcgYSBUQ1AKLSsJICogcmVxdWVzdCAoc2VlIGV4aXRfY2hlY2soKSksIGl0IGxvb2tzIHRvIHNlZSB3aGV0aGVyIHRoaXMgdmFsdWUgaXMKLSsJICogbm9uLXplcm8uIElmIHNvLCB0aGF0IG1lYW5zIGFub3RoZXIgY2xpZW50IGhhcyBhbHJlYWR5IGNhbGxlZAotKwkgKiBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyB0byBlc3RhYmxpc2ggdGhlIG5leHQgY29ubmVjdGlvbiwgd2hpY2gKLSsJICogbWVhbnMgdGhlIGZpcnN0IGNsaWVudCBpcyBmcmVlIHRvIGdvIGluYWN0aXZlLiBPdGhlcndpc2UsCi0rCSAqIHRoZSBmaXJzdCBjbGllbnQgbXVzdCBjb21lIGJhY2sgYW5kIGNhbGwgYWNjZXB0KCkgYWdhaW47IHRoaXMKLSsJICogZ3VhcmFudGVlcyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgY2xpZW50IGxpc3RlbmluZwotKwkgKiBmb3IgbmV3IFRDUCBjb25uZWN0aW9ucyBvbiBlYWNoIGludGVyZmFjZS4KLSsJICovCi0gCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BjdXJyZW50Kys7Ci0rCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nKys7Ci0gCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIH0KLSAKLUBAIC0zMzkwLDEzICszNTQ0LDE0IEBAIG5zX2NsaWVudF9yZXBsYWNlKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJdGNwID0gVENQX0NMSUVOVChjbGllbnQpOwotIAlpZiAodGNwICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0gCQlyZXN1bHQgPSBnZXRfd29ya2VyKGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0tCQkJCSAgICBjbGllbnQtPnRjcHNvY2tldCk7Ci0rCQkJCSAgICBjbGllbnQtPnRjcHNvY2tldCwgY2xpZW50KTsKLSAJfSBlbHNlIHsKLSAJCXJlc3VsdCA9IGdldF9jbGllbnQoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLSAJCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIHRjcCk7Ci0gCX0KLS0JaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotKwlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCXJldHVybiAocmVzdWx0KTsKLSsJfQotIAotIAkvKgotIAkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotQEAgLTM1ODUsNiArMzc0MCw3IEBAIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0gCQlpc2Nfc29ja2V0X2F0dGFjaChpZnAtPnRjcHNvY2tldCwKLSAJCQkJICAmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0rCi0gCX0gZWxzZSB7Ci0gCQlpc2Nfc29ja2V0X3QgKnNvY2s7Ci0gCi1AQCAtMzYwMiw3ICszNzU4LDggQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSB9Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotLWdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaykKLStnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0rCSAgIG5zX2NsaWVudF90ICpvbGRjbGllbnQpCi0gewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSAJaXNjX2V2ZW50X3QgKmV2OwotQEAgLTM2MTAsNiArMzc2Nyw3IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaykKLSAJTVRSQUNFKCJnZXQgd29ya2VyIik7Ci0gCi0gCVJFUVVJUkUobWFuYWdlciAhPSBOVUxMKTsKLSsJUkVRVUlSRShvbGRjbGllbnQgIT0gTlVMTCk7Ci0gCi0gCWlmIChtYW5hZ2VyLT5leGl0aW5nKQotIAkJcmV0dXJuIChJU0NfUl9TSFVUVElOR0RPV04pOwotQEAgLTM2NDIsNyArMzgwMCwyOCBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gJm5zX2dfc2VydmVyLT50Y3BxdW90YTsKLSsKLSsJLyoKLSsJICogVHJhbnNmZXIgVENQIHF1b3RhIHRvIHRoZSBuZXcgY2xpZW50LgotKwkgKi8KLSsJSU5TSVNUKGNsaWVudC0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0rCUlOU0lTVChvbGRjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpOwotKwljbGllbnQtPnRjcHF1b3RhID0gb2xkY2xpZW50LT50Y3BxdW90YTsKLSsJb2xkY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCi0rCS8qCi0rCSAqIExpbmsgdG8gYSBwaXBlbGluZSBncm91cCwgY3JlYXRpbmcgaXQgaWYgbmVlZGVkLgotKwkgKi8KLSsJaWYgKCFJU0NfTElOS19MSU5LRUQob2xkY2xpZW50LCBnbGluaykpIHsKLSsJCW9sZGNsaWVudC0+Z2xpbmsubmV4dCA9IE5VTEw7Ci0rCQlvbGRjbGllbnQtPmdsaW5rLnByZXYgPSBOVUxMOwotKwl9Ci0rCWNsaWVudC0+Z2xpbmsubmV4dCA9IG9sZGNsaWVudC0+Z2xpbmsubmV4dDsKLSsJY2xpZW50LT5nbGluay5wcmV2ID0gb2xkY2xpZW50OwotKwlpZiAob2xkY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLSsJCW9sZGNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9IGNsaWVudDsKLSsJfQotKwlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBjbGllbnQ7Ci0gCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLUBAIC0zNjU2LDYgKzM4MzUsMTIgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrKQotIAkodm9pZClpc2Nfc29ja2V0X2dldHBlZXJuYW1lKGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT5wZWVyYWRkcik7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSB0cnVlOwotIAotKwlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0rCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwotKwljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0rCi0gCUlOU0lTVChjbGllbnQtPnRjcG1zZ192YWxpZCA9PSBmYWxzZSk7Ci0gCWRuc190Y3Btc2dfaW5pdChjbGllbnQtPm1jdHgsIGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3Btc2cpOwotIAljbGllbnQtPnRjcG1zZ192YWxpZCA9IHRydWU7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotaW5kZXggYjIzYTdiMTkxZC4uMWY3OTczZjljNSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotQEAgLTk0LDcgKzk0LDggQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWludAkJCW51cGRhdGVzOwotIAlpbnQJCQluY3RsczsKLSAJaW50CQkJcmVmZXJlbmNlczsKLS0JYm9vbAkJbmVlZHNodXRkb3duOyAJLyoKLSsJYm9vbAkJCXRjcGFjdGl2ZTsKLSsJYm9vbAkJCW5lZWRzaHV0ZG93bjsgCS8qCi0gCQkJCQkJICogVXNlZCBieSBjbGllbnR0ZXN0IHRvIGdldAotIAkJCQkJCSAqIHRoZSBjbGllbnQgdG8gZ28gZnJvbQotIAkJCQkJCSAqIGluYWN0aXZlIHRvIGZyZWUgc3RhdGUKLUBAIC0xMzAsOSArMTMxLDkgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWlzY19zdGR0aW1lX3QJCW5vdzsKLSAJaXNjX3RpbWVfdAkJdG5vdzsKLSAJZG5zX25hbWVfdAkJc2lnbmVybmFtZTsgICAvKiU8IFtUXVNJRyBrZXkgbmFtZSAqLwotLQlkbnNfbmFtZV90ICoJCXNpZ25lcjsJICAgICAgLyolPCBOVUxMIGlmIG5vdCB2YWxpZCBzaWcgKi8KLS0JYm9vbAkJbW9ydGFsOwkgICAgICAvKiU8IERpZSBhZnRlciBoYW5kbGluZyByZXF1ZXN0ICovCi0tCWJvb2wJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotKwlkbnNfbmFtZV90CQkqc2lnbmVyOyAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0rCWJvb2wJCQltb3J0YWw7CSAgICAgIC8qJTwgRGllIGFmdGVyIGhhbmRsaW5nIHJlcXVlc3QgKi8KLSsJYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotIAlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotIAlpc2NfcXVvdGFfdAkJKnJlY3Vyc2lvbnF1b3RhOwotIAluc19pbnRlcmZhY2VfdAkJKmludGVyZmFjZTsKLUBAIC0xNDMsOCArMTQ0LDggQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWlzY19zb2NrYWRkcl90CQlkZXN0c29ja2FkZHI7Ci0gCi0gCWlzY19uZXRhZGRyX3QJCWVjc19hZGRyOwkvKiU8IEVETlMgY2xpZW50IHN1Ym5ldCAqLwotLQl1aW50OF90CQllY3NfYWRkcmxlbjsKLS0JdWludDhfdAkJZWNzX3Njb3BlOwotKwl1aW50OF90CQkJZWNzX2FkZHJsZW47Ci0rCXVpbnQ4X3QJCQllY3Nfc2NvcGU7Ci0gCi0gCXN0cnVjdCBpbjZfcGt0aW5mbwlwa3RpbmZvOwotIAlpc2NfZHNjcF90CQlkc2NwOwotQEAgLTE2Niw2ICsxNjcsNyBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAKLSAJSVNDX0xJTksobnNfY2xpZW50X3QpCWxpbms7Ci0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlybGluazsKLSsJSVNDX0xJTksobnNfY2xpZW50X3QpCWdsaW5rOwotIAlJU0NfUUxJTksobnNfY2xpZW50X3QpCWlsaW5rOwotIAl1bnNpZ25lZCBjaGFyCQljb29raWVbOF07Ci0gCXVpbnQzMl90CQlleHBpcmU7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotaW5kZXggN2QxODgzZTFlOC4uNjFiMDg4MjZhNiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotQEAgLTc3LDkgKzc3LDE0IEBAIHN0cnVjdCBuc19pbnRlcmZhY2UgewotIAkJCQkJCS8qJTwgVURQIGRpc3BhdGNoZXJzLiAqLwotIAlpc2Nfc29ja2V0X3QgKgkJdGNwc29ja2V0OwkvKiU8IFRDUCBzb2NrZXQuICovCi0gCWlzY19kc2NwX3QJCWRzY3A7CQkvKiU8ICJsaXN0ZW4tb24iIERTQ1AgdmFsdWUgKi8KLS0JaW50CQkJbnRjcHRhcmdldDsJLyolPCBEZXNpcmVkIG51bWJlciBvZiBjb25jdXJyZW50Ci0tCQkJCQkJICAgICBUQ1AgYWNjZXB0cyAqLwotLQlpbnQJCQludGNwY3VycmVudDsJLyolPCBDdXJyZW50IGRpdHRvLCBsb2NrZWQgKi8KLSsJaW50CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwkJCQkJCSAgICAgcmVhZHkgdG8gYWNjZXB0IG5ldwotKwkJCQkJCSAgICAgVENQIGNvbm5lY3Rpb25zIG9uIHRoaXMKLSsJCQkJCQkgICAgIGludGVyZmFjZSAqLwotKwlpbnQJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCQkJCQkJICAgICBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMKLSsJCQkJCQkgICAgICh3aGV0aGVyIGFjY2VwdGluZyBvcgotKwkJCQkJCSAgICAgY29ubmVjdGVkKSAqLwotIAlpbnQJCQludWRwZGlzcGF0Y2g7CS8qJTwgTnVtYmVyIG9mIFVEUCBkaXNwYXRjaGVzICovCi0gCW5zX2NsaWVudG1ncl90ICoJY2xpZW50bWdyOwkvKiU8IENsaWVudCBtYW5hZ2VyLiAqLwotIAlJU0NfTElOSyhuc19pbnRlcmZhY2VfdCkgbGluazsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLWluZGV4IDQxOTkyN2JmNTQuLjk1NTA5NmVmNDcgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLSsrKyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotQEAgLTM4Niw4ICszODYsOCBAQCBuc19pbnRlcmZhY2VfY3JlYXRlKG5zX2ludGVyZmFjZW1ncl90ICptZ3IsIGlzY19zb2NrYWRkcl90ICphZGRyLAotIAkgKiBjb25uZWN0aW9ucyB3aWxsIGJlIGhhbmRsZWQgaW4gcGFyYWxsZWwgZXZlbiB0aG91Z2ggdGhlcmUgaXMKLSAJICogb25seSBvbmUgY2xpZW50IGluaXRpYWxseS4KLSAJICovCi0tCWlmcC0+bnRjcHRhcmdldCA9IDE7Ci0tCWlmcC0+bnRjcGN1cnJlbnQgPSAwOwotKwlpZnAtPm50Y3BhY2NlcHRpbmcgPSAwOwotKwlpZnAtPm50Y3BhY3RpdmUgPSAwOwotIAlpZnAtPm51ZHBkaXNwYXRjaCA9IDA7Ci0gCi0gCWlmcC0+ZHNjcCA9IC0xOwotQEAgLTUyMiw5ICs1MjIsNyBAQCBuc19pbnRlcmZhY2VfYWNjZXB0dGNwKG5zX2ludGVyZmFjZV90ICppZnApIHsKLSAJICovCi0gCSh2b2lkKWlzY19zb2NrZXRfZmlsdGVyKGlmcC0+dGNwc29ja2V0LCAiZGF0YXJlYWR5Iik7Ci0gCi0tCXJlc3VsdCA9IG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKGlmcC0+Y2xpZW50bWdyLAotLQkJCQkJICAgIGlmcC0+bnRjcHRhcmdldCwgaWZwLAotLQkJCQkJICAgIHRydWUpOwotKwlyZXN1bHQgPSBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cyhpZnAtPmNsaWVudG1nciwgMSwgaWZwLCB0cnVlKTsKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlVTkVYUEVDVEVEX0VSUk9SKF9fRklMRV9fLCBfX0xJTkVfXywKLSAJCQkJICJUQ1AgbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMoKTogJXMiLAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAzLXVzZS1yZWZlcmVuY2UtY291bnRlci1mb3ItcGlwZWxpbmUtZ3JvdXBzLXYzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAzLXVzZS1yZWZlcmVuY2UtY291bnRlci1mb3ItcGlwZWxpbmUtZ3JvdXBzLXYzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzJjZmI4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3OCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzM2NmI0ZTFdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDM2NmI0ZTFlZGU4YWVkNjkwZTk4MWUwNzEzN2NiMWNiNzc4NzljMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/TWljaGE9QzU9ODI9MjBLPUM0PTk5cGllPUM1PTg0Pz0gPG1pY2hhbEBpc2Mub3JnPgotRGF0ZTogVGh1LCAxNyBKYW4gMjAxOSAxNTo1MzozOCArMDEwMAotU3ViamVjdDogW1BBVENIIDMvNl0gdXNlIHJlZmVyZW5jZSBjb3VudGVyIGZvciBwaXBlbGluZSBncm91cHMgKHYzKQotCi1UcmFjayBwaXBlbGluZSBncm91cHMgdXNpbmcgYSBzaGFyZWQgcmVmZXJlbmNlIGNvdW50ZXIKLWluc3RlYWQgb2YgYSBsaW5rZWQgbGlzdC4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNTEzYWZkMzNlYjE3ZDVkYzQxYTNmMGQyZDM4MjA0ZWY4YzVmNmY5MSkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDk0NDY2MjliNzMwYzU5YzQyMTVmMDhkMzdmYmFmODEwMjgyZmJjY2IpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICAgICAgICAgICB8IDE3MSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggfCAgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggYTdiNDlhMGY3MS4uMjc3NjU2Y2VmMCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMjk5LDYgKzI5OSw3NSBAQCBuc19jbGllbnRfc2V0dGltZW91dChuc19jbGllbnRfdCAqY2xpZW50LCB1bnNpZ25lZCBpbnQgc2Vjb25kcykgewotIAl9Ci0gfQotIAotKy8qJQotKyAqIEFsbG9jYXRlIGEgcmVmZXJlbmNlIGNvdW50ZXIgdGhhdCB3aWxsIHRyYWNrIHRoZSBudW1iZXIgb2YgY2xpZW50IHN0cnVjdHVyZXMKLSsgKiB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdCAnY2xpZW50JyBjYWxsZWQgYWNjZXB0KCkgZm9yLiAgVGhpcyBjb3VudGVyCi0rICogd2lsbCBiZSBzaGFyZWQgYmV0d2VlbiBhbGwgY2xpZW50IHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVENQCi0rICogY29ubmVjdGlvbi4KLSsgKi8KLStzdGF0aWMgdm9pZAotK3BpcGVsaW5lX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCkgewotKwlpc2NfcmVmY291bnRfdCAqcmVmczsKLSsKLSsJUkVRVUlSRShjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0rCi0rCS8qCi0rCSAqIEEgZ2xvYmFsIG1lbW9yeSBjb250ZXh0IGlzIHVzZWQgZm9yIHRoZSBhbGxvY2F0aW9uIGFzIGRpZmZlcmVudAotKwkgKiBjbGllbnQgc3RydWN0dXJlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgbWVtb3J5IGNvbnRleHRzIGFzc2lnbmVkIGFuZCBhCi0rCSAqIHJlZmVyZW5jZSBjb3VudGVyIGFsbG9jYXRlZCBoZXJlIG1pZ2h0IG5lZWQgdG8gYmUgZnJlZWQgYnkgYQotKwkgKiBkaWZmZXJlbnQgY2xpZW50LiAgVGhlIHBlcmZvcm1hbmNlIGltcGFjdCBjYXVzZWQgYnkgbWVtb3J5IGNvbnRleHQKLSsJICogY29udGVudGlvbiBoZXJlIGlzIGV4cGVjdGVkIHRvIGJlIG5lZ2xpZ2libGUsIGdpdmVuIHRoYXQgdGhpcyBjb2RlCi0rCSAqIGlzIG9ubHkgZXhlY3V0ZWQgZm9yIFRDUCBjb25uZWN0aW9ucy4KLSsJICovCi0rCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKGNsaWVudC0+c2N0eC0+bWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0rCWlzY19yZWZjb3VudF9pbml0KHJlZnMsIDEpOwotKwljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSByZWZzOwotK30KLSsKLSsvKiUKLSsgKiBJbmNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSsgKiAnc291cmNlJyBpcyBhc3NvY2lhdGVkIHdpdGggYW5kIHB1dCBhIHBvaW50ZXIgdG8gdGhhdCBjb3VudCBpbiAndGFyZ2V0JywKLSsgKiB0aHVzIGFzc29jaWF0aW5nIGl0IHdpdGggdGhlIHNhbWUgVENQIGNvbm5lY3Rpb24uCi0rICovCi0rc3RhdGljIHZvaWQKLStwaXBlbGluZV9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotKwlpbnQgb2xkX3JlZnM7Ci0rCi0rCVJFUVVJUkUoc291cmNlLT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotKwlSRVFVSVJFKHRhcmdldC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsKLSsJb2xkX3JlZnMgPSBpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcyk7Ci0rCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwl0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPSBzb3VyY2UtPnBpcGVsaW5lX3JlZnM7Ci0rfQotKwotKy8qJQotKyAqIERlY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotKyAqICdjbGllbnQnIGlzIGFzc29jaWF0ZWQgd2l0aC4gIElmIHRoaXMgaXMgdGhlIGxhc3QgY2xpZW50IHVzaW5nIHRoaXMgVENQCi0rICogY29ubmVjdGlvbiwgZnJlZSB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgYW5kIHJldHVybiB0cnVlOyBvdGhlcndpc2UsIHJldHVybgotKyAqIGZhbHNlLgotKyAqLwotK3N0YXRpYyBib29sCi0rcGlwZWxpbmVfZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0rCWludCBvbGRfcmVmczsKLSsKLSsJUkVRVUlSRShjbGllbnQtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0rCi0rCXJlZnMgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0rCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0rCi0rCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2RlY3JlbWVudChyZWZzKTsKLSsJSU5TSVNUKG9sZF9yZWZzID4gMCk7Ci0rCi0rCWlmIChvbGRfcmVmcyA9PSAxKSB7Ci0rCQlpc2NfbWVtX2ZyZWUoY2xpZW50LT5zY3R4LT5tY3R4LCByZWZzKTsKLSsJCXJldHVybiAodHJ1ZSk7Ci0rCX0KLSsKLSsJcmV0dXJuIChmYWxzZSk7Ci0rfQotKwotIC8qJQotICAqIENoZWNrIGZvciBhIGRlYWN0aXZhdGlvbiBvciBzaHV0ZG93biByZXF1ZXN0IGFuZCB0YWtlIGFwcHJvcHJpYXRlCi0gICogYWN0aW9uLiAgUmV0dXJucyB0cnVlIGlmIGVpdGhlciBpcyBpbiBwcm9ncmVzczsgaW4gdGhpcyBjYXNlCi1AQCAtNDIxLDYgKzQ5MCw0MCBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPnRjcG1zZ192YWxpZCA9IGZhbHNlOwotIAkJfQotIAotKwkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotKwkJCWlmIChjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCB8fAotKwkJCSAgICBwaXBlbGluZV9kZXRhY2goY2xpZW50KSkKLSsJCQl7Ci0rCQkJCS8qCi0rCQkJCSAqIE9ubHkgZGV0YWNoIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEgaWYKLSsJCQkJICogdGhlcmUgYXJlIG5vIG1vcmUgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcKLSsJCQkJICogdGhpcyBUQ1AgY29ubmVjdGlvbi4KLSsJCQkJICoKLSsJCQkJICogTm90ZSB0aGF0IHdlIGNoZWNrICdwaXBlbGluZV9yZWZzJyBhbmQgbm90Ci0rCQkJCSAqICdwaXBlbGluZWQnIGJlY2F1c2UgaW4gc29tZSBjYXNlcyAoZS5nLgotKwkJCQkgKiBhZnRlciByZWNlaXZpbmcgYSByZXF1ZXN0IHdpdGggYW4gb3Bjb2RlCi0rCQkJCSAqIGRpZmZlcmVudCB0aGFuIFFVRVJZKSAncGlwZWxpbmVkJyBpcyBzZXQgdG8KLSsJCQkJICogZmFsc2UgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGdldHMKLSsJCQkJICogYWxsb2NhdGVkIGluIHBpcGVsaW5lX2luaXQoKSBhbmQgd2UgbXVzdAotKwkJCQkgKiBzdGlsbCBkcm9wIG91ciByZWZlcmVuY2UgYXMgZmFpbGluZyB0byBkbyBzbwotKwkJCQkgKiB3b3VsZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnRlciBpdHNlbGYKLSsJCQkJICogZnJvbSBiZWluZyBmcmVlZC4KLSsJCQkJICovCi0rCQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJCX0gZWxzZSB7Ci0rCQkJCS8qCi0rCQkJCSAqIFRoZXJlIGFyZSBvdGhlciBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGlzCi0rCQkJCSAqIFRDUCBjb25uZWN0aW9uLCBzbyB3ZSBjYW5ub3QgZGV0YWNoIGZyb20gdGhlCi0rCQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgdG8gcHJldmVudCBleGNlc3MgVENQCi0rCQkJCSAqIGNvbm5lY3Rpb25zIGZyb20gYmVpbmcgYWNjZXB0ZWQuICBIb3dldmVyLAotKwkJCQkgKiB0aGlzIGNsaWVudCBzdHJ1Y3R1cmUgbWlnaHQgbGF0ZXIgYmUgcmV1c2VkCi0rCQkJCSAqIGZvciBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIGFuZCB0aHVzIG11c3QKLSsJCQkJICogaGF2ZSBpdHMgJ3RjcHF1b3RhJyBmaWVsZCBzZXQgdG8gTlVMTC4KLSsJCQkJICovCi0rCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwkJCX0KLSsJCX0KLSsKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJQ1RSQUNFKCJjbG9zZXRjcCIpOwotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci1AQCAtNDM0LDQ0ICs1MzcsNiBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQl9Ci0gCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJLyoKLS0JCQkgKiBJZiB3ZSBhcmUgbm90IGluIGEgcGlwZWxpbmUgZ3JvdXAsIG9yCi0tCQkJICogd2UgYXJlIHRoZSBsYXN0IGNsaWVudCBpbiB0aGUgZ3JvdXAsIGRldGFjaCBmcm9tCi0tCQkJICogdGNwcXVvdGE7IG90aGVyd2lzZSwgdHJhbnNmZXIgdGhlIHF1b3RhIHRvCi0tCQkJICogYW5vdGhlciBjbGllbnQgaW4gdGhlIHNhbWUgZ3JvdXAuCi0tCQkJICovCi0tCQkJaWYgKCFJU0NfTElOS19MSU5LRUQoY2xpZW50LCBnbGluaykgfHwKLS0JCQkgICAgKGNsaWVudC0+Z2xpbmsubmV4dCA9PSBOVUxMICYmCi0tCQkJICAgICBjbGllbnQtPmdsaW5rLnByZXYgPT0gTlVMTCkpCi0tCQkJewotLQkJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCQl9IGVsc2UgaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0tCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLm5leHQtPnRjcHF1b3RhID09IE5VTEwpOwotLQkJCQljbGllbnQtPmdsaW5rLm5leHQtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLS0JCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJfSBlbHNlIHsKLS0JCQkJSU5TSVNUKGNsaWVudC0+Z2xpbmsucHJldi0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0tCQkJCWNsaWVudC0+Z2xpbmsucHJldi0+dGNwcXVvdGEgPSBjbGllbnQtPnRjcHF1b3RhOwotLQkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0JCQl9Ci0tCQl9Ci0tCi0tCQkvKgotLQkJICogVW5saW5rIGZyb20gcGlwZWxpbmUgZ3JvdXAuCi0tCQkgKi8KLS0JCWlmIChJU0NfTElOS19MSU5LRUQoY2xpZW50LCBnbGluaykpIHsKLS0JCQlpZiAoY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLS0JCQkJY2xpZW50LT5nbGluay5uZXh0LT5nbGluay5wcmV2ID0KLS0JCQkJCWNsaWVudC0+Z2xpbmsucHJldjsKLS0JCQl9Ci0tCQkJaWYgKGNsaWVudC0+Z2xpbmsucHJldiAhPSBOVUxMKSB7Ci0tCQkJCWNsaWVudC0+Z2xpbmsucHJldi0+Z2xpbmsubmV4dCA9Ci0tCQkJCQljbGllbnQtPmdsaW5rLm5leHQ7Ci0tCQkJfQotLQkJCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBnbGluayk7Ci0tCQl9Ci0tCi0gCQlpZiAoY2xpZW50LT50aW1lcnNldCkgewotIAkJCSh2b2lkKWlzY190aW1lcl9yZXNldChjbGllbnQtPnRpbWVyLAotIAkJCQkJICAgICAgaXNjX3RpbWVydHlwZV9pbmFjdGl2ZSwKLUBAIC0zMTMwLDYgKzMxOTUsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJZG5zX25hbWVfaW5pdCgmY2xpZW50LT5zaWduZXJuYW1lLCBOVUxMKTsKLSAJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLSAJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSsJY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLSAJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0gCWNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPSBOVUxMOwotIAljbGllbnQtPmludGVyZmFjZSA9IE5VTEw7Ci1AQCAtMzE1NCw3ICszMjIwLDYgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+Zm9ybWVycmNhY2hlLmlkID0gMDsKLSAJSVNDX0xJTktfSU5JVChjbGllbnQsIGxpbmspOwotIAlJU0NfTElOS19JTklUKGNsaWVudCwgcmxpbmspOwotLQlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotIAlJU0NfUUxJTktfSU5JVChjbGllbnQsIGlsaW5rKTsKLSAJY2xpZW50LT5rZXl0YWcgPSBOVUxMOwotIAljbGllbnQtPmtleXRhZ19sZW4gPSAwOwotQEAgLTMzNDEsNiArMzQwNiw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSAJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotIAkJewotKwkJCXBpcGVsaW5lX2luaXQoY2xpZW50KTsKLSAJCQljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0gCQl9Ci0gCi1AQCAtMzgwMCwzNSArMzg2NiwxNiBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQotLQkvKgotLQkgKiBUcmFuc2ZlciBUQ1AgcXVvdGEgdG8gdGhlIG5ldyBjbGllbnQuCi0tCSAqLwotLQlJTlNJU1QoY2xpZW50LT50Y3BxdW90YSA9PSBOVUxMKTsKLS0JSU5TSVNUKG9sZGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCk7Ci0tCWNsaWVudC0+dGNwcXVvdGEgPSBvbGRjbGllbnQtPnRjcHF1b3RhOwotLQlvbGRjbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0KLS0JLyoKLS0JICogTGluayB0byBhIHBpcGVsaW5lIGdyb3VwLCBjcmVhdGluZyBpdCBpZiBuZWVkZWQuCi0tCSAqLwotLQlpZiAoIUlTQ19MSU5LX0xJTktFRChvbGRjbGllbnQsIGdsaW5rKSkgewotLQkJb2xkY2xpZW50LT5nbGluay5uZXh0ID0gTlVMTDsKLS0JCW9sZGNsaWVudC0+Z2xpbmsucHJldiA9IE5VTEw7Ci0tCX0KLS0JY2xpZW50LT5nbGluay5uZXh0ID0gb2xkY2xpZW50LT5nbGluay5uZXh0OwotLQljbGllbnQtPmdsaW5rLnByZXYgPSBvbGRjbGllbnQ7Ci0tCWlmIChvbGRjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotLQkJb2xkY2xpZW50LT5nbGluay5uZXh0LT5nbGluay5wcmV2ID0gY2xpZW50OwotLQl9Ci0tCW9sZGNsaWVudC0+Z2xpbmsubmV4dCA9IGNsaWVudDsKLSsJY2xpZW50LT50Y3BxdW90YSA9ICZjbGllbnQtPnNjdHgtPnRjcHF1b3RhOwotIAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi0gCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLS0JY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotIAljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0gCi0rCXBpcGVsaW5lX2F0dGFjaChvbGRjbGllbnQsIGNsaWVudCk7Ci0rCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSsKLSAJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSAJaXNjX3NvY2tldF9hdHRhY2goc29jaywgJmNsaWVudC0+dGNwc29ja2V0KTsKLSAJaXNjX3NvY2tldF9zZXRuYW1lKGNsaWVudC0+dGNwc29ja2V0LCAid29ya2VyLXRjcCIsIE5VTEwpOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLWluZGV4IDFmNzk3M2Y5YzUuLmFlZWQ5Y2NkZGEgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLUBAIC0xMzQsNiArMTM0LDcgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWRuc19uYW1lX3QJCSpzaWduZXI7ICAgICAgLyolPCBOVUxMIGlmIG5vdCB2YWxpZCBzaWcgKi8KLSAJYm9vbAkJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotIAlib29sCQkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0rCWlzY19yZWZjb3VudF90CQkqcGlwZWxpbmVfcmVmczsKLSAJaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci1AQCAtMTY3LDcgKzE2OCw2IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAotIAlJU0NfTElOSyhuc19jbGllbnRfdCkJbGluazsKLSAJSVNDX0xJTksobnNfY2xpZW50X3QpCXJsaW5rOwotLQlJU0NfTElOSyhuc19jbGllbnRfdCkJZ2xpbms7Ci0gCUlTQ19RTElOSyhuc19jbGllbnRfdCkJaWxpbms7Ci0gCXVuc2lnbmVkIGNoYXIJCWNvb2tpZVs4XTsKLSAJdWludDMyX3QJCWV4cGlyZTsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA0LWJldHRlci10Y3BxdW90YS1hY2NvdW50aW5nLWFuZC1jbGllbnQtbW9ydGFsaXR5LWNoZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNGFiMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA0LWJldHRlci10Y3BxdW90YS1hY2NvdW50aW5nLWFuZC1jbGllbnQtbW9ydGFsaXR5LWNoZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MTIgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC8yYWI4YTA4XQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSAyYWI4YTA4NWIzYzY2NmYyOGYxZjkyMjliZDZlY2I1OTkxNWIyNmMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDUgQXByIDIwMTkgMTY6MTI6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzZdIGJldHRlciB0Y3BxdW90YSBhY2NvdW50aW5nIGFuZCBjbGllbnQgbW9ydGFsaXR5IGNoZWNrcwotCi0tIGVuc3VyZSB0aGF0IHRjcGFjdGl2ZSBpcyBjbGVhbmVkIHVwIGNvcnJlY3RseSB3aGVuIGFjY2VwdCgpIGZhaWxzLgotLSBzZXQgJ2NsaWVudC0+dGNwYXR0YWNoZWQnIHdoZW4gdGhlIGNsaWVudCBpcyBhdHRhY2hlZCB0byB0aGUgdGNwcXVvdGEuCi0gIGNhcnJ5IHRoaXMgdmFsdWUgb24gdG8gbmV3IGNsaWVudHMgc2hhcmluZyB0aGUgc2FtZSBwaXBlbGluZSBncm91cC4KLSAgZG9uJ3QgY2FsbCBpc2NfcXVvdGFfZGV0YWNoKCkgb24gdGhlIHRjcHF1b3RhIHVubGVzcyB0Y3BhdHRhY2hlZCBpcwotICBzZXQuICB0aGlzIHdheSBjbGllbnRzIHRoYXQgd2VyZSBhbGxvd2VkIHRvIGFjY2VwdCBUQ1AgY29ubmVjdGlvbnMKLSAgZGVzcGl0ZSBiZWluZyBvdmVyIHF1b3RhIChhbmQgdGhlcmVmb3JlLCB3ZXJlIG5ldmVyIGF0dGFjaGVkIHRvIHRoZQotICBxdW90YSkgd2lsbCBub3QgaW5hZHZlcnRlbnRseSBkZXRhY2ggZnJvbSBpdCBhbmQgbWVzcyB1cCB0aGUKLSAgYWNjb3VudGluZy4KLS0gc2ltcGxpZnkgdGhlIGNvZGUgZm9yIHRjcHF1b3RhIGRpc2Nvbm5lY3Rpb24gYnkgdXNpbmcgYSBuZXcgZnVuY3Rpb24KLSAgdGNwcXVvdGFfZGlzY29ubmVjdCgpLgotLSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciB0byByZWplY3QgYSBuZXcgY29ubmVjdGlvbiBkdWUgdG8gcXVvdGEKLSAgZXhoYXVzdGlvbiwgY2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlcmUgYXJlIGF0IGxlYXN0IHR3byBhY3RpdmUKLSAgY2xpZW50cy4gcHJldmlvdXNseSwgdGhpcyB3YXMgImF0IGxlYXN0IG9uZSIsIGJ1dCB0aGF0IGNvdWxkIGJlCi0gIGluc3VmZmljaWVudCBpZiB0aGVyZSB3YXMgb25lIG90aGVyIGNsaWVudCBpbiBSRUFESU5HIHN0YXRlICh3YWl0aW5nCi0gIGZvciBtZXNzYWdlcyBvbiBhbiBvcGVuIGNvbm5lY3Rpb24pIGJ1dCBub25lIGluIFJFQURZIChsaXN0ZW5pbmcKLSAgZm9yIG5ldyBjb25uZWN0aW9ucykuCi0tIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIGEgVENQIGNsaWVudCBvYmplY3QgY2FuIHRvIGdvIGluYWN0aXZlLCB3ZQotICBtdXN0IGVuc3VyZSB0aGVyZSBhcmUgZW5vdWdoIG90aGVyIGNsaWVudHMgdG8gbWFpbnRhaW4gc2VydmljZQotICBhZnRlcndhcmQgLS0gYm90aCBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIGFuZCByZWFkaW5nL3Byb2Nlc3NpbmcgbmV3Ci0gIHF1ZXJpZXMuICBBIFRDUCBjbGllbnQgY2FuJ3Qgc2h1dCBkb3duIHVubGVzcyBhdCBsZWFzdCBvbmUKLSAgY2xpZW50IGlzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgYW5kIChpbiB0aGUgY2FzZSBvZiBwaXBlbGluZWQKLSAgY2xpZW50cykgYXQgbGVhc3Qgb25lIGFkZGl0aW9uYWwgY2xpZW50IGlzIHdhaXRpbmcgdG8gcmVhZC4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYzczOTQ3MzhiMjQ0NWMxNmY3MjhhODgzOTQ4NjRkZDYxYmFhZDkwMCkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGU5NjVkNWYxMWQzZDBmNmQ1OTcwNGU2MTRmY2VjYTIwOTNjYjE4NTYpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA4N2Q0MzExNjE0NTA3NzdlYTA5MzgyMTIxMmFiZmI1MmQ1MWIzNmUzKQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgfCAyNDQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIHwgICAzICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDI3NzY1NmNlZjAuLjYxZTk2ZGQyOGMgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI0NCwxMyArMjQ0LDE0IEBAIHN0YXRpYyB2b2lkIGNsaWVudF9zdGFydChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCk7Ci0gc3RhdGljIHZvaWQgbnNfY2xpZW50X2R1bXBtZXNzYWdlKG5zX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IGNoYXIgKnJlYXNvbik7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkJCSAgICAgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgYm9vbCB0Y3ApOwotKwkJCSAgICAgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgbnNfY2xpZW50X3QgKm9sZGNsaWVudCwKLSsJCQkgICAgICAgYm9vbCB0Y3ApOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJCQkgICAgICAgaXNjX3NvY2tldF90ICpzb2NrLCBuc19jbGllbnRfdCAqb2xkY2xpZW50KTsKLSBzdGF0aWMgaW5saW5lIGJvb2wKLSBhbGxvd2VkKGlzY19uZXRhZGRyX3QgKmFkZHIsIGRuc19uYW1lX3QgKnNpZ25lciwKLSAJaXNjX25ldGFkZHJfdCAqZWNzX2FkZHIsIHVpbnQ4X3QgZWNzX2FkZHJsZW4sCi0tCXVpbnQ4X3QgKmVjc19zY29wZSwgZG5zX2FjbF90ICphY2wpCi0rCXVpbnQ4X3QgKmVjc19zY29wZSwgZG5zX2FjbF90ICphY2wpOwotIHN0YXRpYyB2b2lkIGNvbXB1dGVfY29va2llKG5zX2NsaWVudF90ICpjbGllbnQsIHVpbnQzMl90IHdoZW4sCi0gCQkJICAgdWludDMyX3Qgbm9uY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlY3JldCwKLSAJCQkgICBpc2NfYnVmZmVyX3QgKmJ1Zik7Ci1AQCAtMzE5LDcgKzMyMCw3IEBAIHBpcGVsaW5lX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBjb250ZW50aW9uIGhlcmUgaXMgZXhwZWN0ZWQgdG8gYmUgbmVnbGlnaWJsZSwgZ2l2ZW4gdGhhdCB0aGlzIGNvZGUKLSAJICogaXMgb25seSBleGVjdXRlZCBmb3IgVENQIGNvbm5lY3Rpb25zLgotIAkgKi8KLS0JcmVmcyA9IGlzY19tZW1fYWxsb2NhdGUoY2xpZW50LT5zY3R4LT5tY3R4LCBzaXplb2YoKnJlZnMpKTsKLSsJcmVmcyA9IGlzY19tZW1fYWxsb2NhdGUobnNfZ19tY3R4LCBzaXplb2YoKnJlZnMpKTsKLSAJaXNjX3JlZmNvdW50X2luaXQocmVmcywgMSk7Ci0gCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IHJlZnM7Ci0gfQotQEAgLTMzMSwxMyArMzMyLDEzIEBAIHBpcGVsaW5lX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCkgewotICAqLwotIHN0YXRpYyB2b2lkCi0gcGlwZWxpbmVfYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLS0JaW50IG9sZF9yZWZzOwotKwlpbnQgcmVmczsKLSAKLSAJUkVRVUlSRShzb3VyY2UtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0gCVJFUVVJUkUodGFyZ2V0LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotIAotLQlvbGRfcmVmcyA9IGlzY19yZWZjb3VudF9pbmNyZW1lbnQoc291cmNlLT5waXBlbGluZV9yZWZzKTsKLS0JSU5TSVNUKG9sZF9yZWZzID4gMCk7Ci0rCWlzY19yZWZjb3VudF9pbmNyZW1lbnQoc291cmNlLT5waXBlbGluZV9yZWZzLCAmcmVmcyk7Ci0rCUlOU0lTVChyZWZzID4gMSk7Ci0gCXRhcmdldC0+cGlwZWxpbmVfcmVmcyA9IHNvdXJjZS0+cGlwZWxpbmVfcmVmczsKLSB9Ci0gCi1AQCAtMzQ5LDI1ICszNTAsNTEgQEAgcGlwZWxpbmVfYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSAgKi8KLSBzdGF0aWMgYm9vbAotIHBpcGVsaW5lX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlzY19yZWZjb3VudF90ICpyZWZzOwotLQlpbnQgb2xkX3JlZnM7Ci0rCWlzY19yZWZjb3VudF90ICpyZWZjb3VudDsKLSsJaW50IHJlZnM7Ci0gCi0gCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotIAotLQlyZWZzID0gY2xpZW50LT5waXBlbGluZV9yZWZzOwotKwlyZWZjb3VudCA9IGNsaWVudC0+cGlwZWxpbmVfcmVmczsKLSAJY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLSAKLS0Jb2xkX3JlZnMgPSBpc2NfcmVmY291bnRfZGVjcmVtZW50KHJlZnMpOwotLQlJTlNJU1Qob2xkX3JlZnMgPiAwKTsKLSsJaXNjX3JlZmNvdW50X2RlY3JlbWVudChyZWZjb3VudCwgcmVmcyk7Ci0gCi0tCWlmIChvbGRfcmVmcyA9PSAxKSB7Ci0tCQlpc2NfbWVtX2ZyZWUoY2xpZW50LT5zY3R4LT5tY3R4LCByZWZzKTsKLSsJaWYgKHJlZnMgPT0gMCkgewotKwkJaXNjX21lbV9mcmVlKG5zX2dfbWN0eCwgcmVmcyk7Ci0gCQlyZXR1cm4gKHRydWUpOwotIAl9Ci0gCi0gCXJldHVybiAoZmFsc2UpOwotIH0KLSAKLSsvKgotKyAqIERldGFjaCBhIGNsaWVudCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlmIGFwcHJvcHJpYXRlLCBhbmQgc2V0Ci0rICogdGhlIHF1b3RhIHBvaW50ZXIgdG8gTlVMTC4KLSsgKgotKyAqIFNvbWV0aW1lcyB3aGVuIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlzIGV4aGF1c3RlZCBidXQgdGhlcmUgYXJlIG5vIG90aGVyCi0rICogY2xpZW50cyBzZXJ2aWNpbmcgdGhlIGludGVyZmFjZSwgYSBjbGllbnQgd2lsbCBiZSBhbGxvd2VkIHRvIGNvbnRpbnVlCi0rICogcnVubmluZyBkZXNwaXRlIG5vdCBoYXZpbmcgYmVlbiBhdHRhY2hlZCB0byB0aGUgcXVvdGEuIEluIHRoaXMgZXZlbnQsCi0rICogdGhlIFRDUCBxdW90YSB3YXMgbmV2ZXIgYXR0YWNoZWQgdG8gdGhlIGNsaWVudCwgc28gd2hlbiB0aGUgY2xpZW50IChvcgotKyAqIGFzc29jaWF0ZWQgcGlwZWxpbmUgZ3JvdXApIHNodXRzIGRvd24sIHRoZSBxdW90YSBtdXN0IE5PVCBiZSBkZXRhY2hlZC4KLSsgKgotKyAqIE90aGVyd2lzZSwgaWYgdGhlIHF1b3RhIHBvaW50ZXIgaXMgc2V0LCBpdCBzaG91bGQgYmUgZGV0YWNoZWQuIElmIG5vdAotKyAqIHNldCBhdCBhbGwsIHdlIGp1c3QgcmV0dXJuIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuCi0rICovCi0rc3RhdGljIHZvaWQKLSt0Y3BxdW90YV9kaXNjb25uZWN0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJaWYgKGNsaWVudC0+dGNwcXVvdGEgPT0gTlVMTCkgewotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCWlmIChjbGllbnQtPnRjcGF0dGFjaGVkKSB7Ci0rCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSsJfSBlbHNlIHsKLSsJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwl9Ci0rfQotKwotIC8qJQotICAqIENoZWNrIGZvciBhIGRlYWN0aXZhdGlvbiBvciBzaHV0ZG93biByZXF1ZXN0IGFuZCB0YWtlIGFwcHJvcHJpYXRlCi0gICogYWN0aW9uLiAgUmV0dXJucyB0cnVlIGlmIGVpdGhlciBpcyBpbiBwcm9ncmVzczsgaW4gdGhpcyBjYXNlCi1AQCAtNDkwLDM4ICs1MTcsMzEgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSBmYWxzZTsKLSAJCX0KLSAKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpZiAoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwgfHwKLS0JCQkgICAgcGlwZWxpbmVfZGV0YWNoKGNsaWVudCkpCi0tCQkJewotLQkJCQkvKgotLQkJCQkgKiBPbmx5IGRldGFjaCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlmCi0tCQkJCSAqIHRoZXJlIGFyZSBubyBtb3JlIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nCi0tCQkJCSAqIHRoaXMgVENQIGNvbm5lY3Rpb24uCi0tCQkJCSAqCi0tCQkJCSAqIE5vdGUgdGhhdCB3ZSBjaGVjayAncGlwZWxpbmVfcmVmcycgYW5kIG5vdAotLQkJCQkgKiAncGlwZWxpbmVkJyBiZWNhdXNlIGluIHNvbWUgY2FzZXMgKGUuZy4KLS0JCQkJICogYWZ0ZXIgcmVjZWl2aW5nIGEgcmVxdWVzdCB3aXRoIGFuIG9wY29kZQotLQkJCQkgKiBkaWZmZXJlbnQgdGhhbiBRVUVSWSkgJ3BpcGVsaW5lZCcgaXMgc2V0IHRvCi0tCQkJCSAqIGZhbHNlIGFmdGVyIHRoZSByZWZlcmVuY2UgY291bnRlciBnZXRzCi0tCQkJCSAqIGFsbG9jYXRlZCBpbiBwaXBlbGluZV9pbml0KCkgYW5kIHdlIG11c3QKLS0JCQkJICogc3RpbGwgZHJvcCBvdXIgcmVmZXJlbmNlIGFzIGZhaWxpbmcgdG8gZG8gc28KLS0JCQkJICogd291bGQgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgaXRzZWxmCi0tCQkJCSAqIGZyb20gYmVpbmcgZnJlZWQuCi0tCQkJCSAqLwotLQkJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCQl9IGVsc2UgewotLQkJCQkvKgotLQkJCQkgKiBUaGVyZSBhcmUgb3RoZXIgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhpcwotLQkJCQkgKiBUQ1AgY29ubmVjdGlvbiwgc28gd2UgY2Fubm90IGRldGFjaCBmcm9tIHRoZQotLQkJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIHRvIHByZXZlbnQgZXhjZXNzIFRDUAotLQkJCQkgKiBjb25uZWN0aW9ucyBmcm9tIGJlaW5nIGFjY2VwdGVkLiAgSG93ZXZlciwKLS0JCQkJICogdGhpcyBjbGllbnQgc3RydWN0dXJlIG1pZ2h0IGxhdGVyIGJlIHJldXNlZAotLQkJCQkgKiBmb3IgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgdGh1cyBtdXN0Ci0tCQkJCSAqIGhhdmUgaXRzICd0Y3BxdW90YScgZmllbGQgc2V0IHRvIE5VTEwuCi0tCQkJCSAqLwotLQkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0JCQl9Ci0rCQkvKgotKwkJICogRGV0YWNoIGZyb20gcGlwZWxpbmUgZ3JvdXAgYW5kIGZyb20gVENQIGNsaWVudCBxdW90YSwKLSsJCSAqIGlmIGFwcHJvcHJpYXRlLgotKwkJICoKLSsJCSAqIC0gSWYgbm8gcGlwZWxpbmUgZ3JvdXAgaXMgYWN0aXZlLCBhdHRlbXB0IHRvCi0rCQkgKiAgIGRldGFjaCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhLgotKwkJICoKLSsJCSAqIC0gSWYgYSBwaXBlbGluZSBncm91cCBpcyBhY3RpdmUsIGRldGFjaCBmcm9tIGl0OwotKwkJICogICBpZiB0aGUgcmV0dXJuIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlcmUgbm8gbW9yZQotKwkJICogICBjbGllbnRzIGxlZnQgaWYgdGhpcyBwaXBlbGluZSBncm91cCwgd2UgYWxzbyBkZXRhY2gKLSsJCSAqICAgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLSsJCSAqCi0rCQkgKiAtIE90aGVyd2lzZSB3ZSBkb24ndCB0cnkgdG8gZGV0YWNoLCB3ZSBqdXN0IHNldCB0aGUKLSsJCSAqICAgVENQIHF1b3RhIHBvaW50ZXIgdG8gTlVMTCBpZiBpdCB3YXNuJ3QgTlVMTCBhbHJlYWR5LgotKwkJICoKLSsJCSAqIHRjcHF1b3RhX2Rpc2Nvbm5lY3QoKSB3aWxsIHNldCB0Y3BxdW90YSB0byBOVUxMLCBlaXRoZXIKLSsJCSAqIGJ5IGRldGFjaGluZyBpdCBvciBieSBhc3NpZ25tZW50LCBkZXBlbmRpbmcgb24gdGhlCi0rCQkgKiBuZWVkcyBvZiB0aGUgY2xpZW50LiBTZWUgdGhlIGNvbW1lbnRzIG9uIHRoYXQgZnVuY3Rpb24KLSsJCSAqIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotKwkJICovCi0rCQlpZiAoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwgfHwgcGlwZWxpbmVfZGV0YWNoKGNsaWVudCkpIHsKLSsJCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0rCQl9IGVsc2UgewotKwkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwkJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci1AQCAtNTQ0LDggKzU2NCw2IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWNsaWVudC0+dGltZXJzZXQgPSBmYWxzZTsKLSAJCX0KLSAKLS0JCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0tCi0gCQljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gZmFsc2U7Ci0gCi0gCQljbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci1AQCAtNTU4LDE4ICs1NzYsMjcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBhY3RpdmUgYW5kIGZvcmNlIGl0IHRvIGdvIGluYWN0aXZlIGlmIG5vdC4KLSAJCSAqCi0gCQkgKiBVRFAgY2xpZW50cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AgY2xpZW50Ci0tCQkgKiB3aWxsIG5lZWRzIHRvIHJlbWFpbiBhY3RpdmUgaWYgbm8gb3RoZXIgY2xpZW50cyBhcmUKLS0JCSAqIGxpc3RlbmluZyBmb3IgVENQIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlLCB0bwotLQkJICogcHJldmVudCB0aGlzIGludGVyZmFjZSBmcm9tIGdvaW5nIG5vbnJlc3BvbnNpdmUuCi0rCQkgKiBtYXkgbmVlZCB0byByZW1haW4gYWN0aXZlIGFuZCBnbyBpbnRvIHJlYWR5IHN0YXRlIGlmCi0rCQkgKiBubyBvdGhlciBjbGllbnRzIGFyZSBhdmFpbGFibGUgdG8gbGlzdGVuIGZvciBUQ1AKLSsJCSAqIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlIG9yIChpbiB0aGUgY2FzZSBvZiBwaXBlbGluZWQKLSsJCSAqIGNsaWVudHMpIHRvIHJlYWQgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgb24gdGhlIGN1cnJlbnQKLSsJCSAqIGNvbm5lY3Rpb24uCi0gCQkgKi8KLSAJCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgIW5zX2dfY2xpZW50dGVzdCkgewotIAkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPT0gMCkgewotKwkJCWlmICgoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPT0gMCB8fAotKwkJCSAgICAoY2xpZW50LT5waXBlbGluZWQgJiYKLSsJCQkgICAgIGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlIDwgMikpICYmCi0rCQkJICAgIGNsaWVudC0+bmV3c3RhdGUgIT0gTlNfQ0xJRU5UU1RBVEVfRlJFRUQpCi0rCQkJewotIAkJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotKwkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci0gCQkJfQotIAkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAkJfQotIAotKwkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSsKLSAJCS8qCi0gCQkgKiBXZSBkb24ndCBuZWVkIHRoZSBjbGllbnQ7IHNlbmQgaXQgdG8gdGhlIGluYWN0aXZlCi0gCQkgKiBxdWV1ZSBmb3IgcmVjeWNsaW5nLgotQEAgLTI2MzQsNiArMjY2MSwxOCBAQCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCX0KLSAJaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotKwkJLyoKLSsJCSAqIFdlJ3JlIHBpcGVsaW5pbmcuIFJlcGxhY2UgdGhlIGNsaWVudDsgdGhlCi0rCQkgKiB0aGUgcmVwbGFjZW1lbnQgY2FuIHJlYWQgdGhlIFRDUCBzb2NrZXQgbG9va2luZwotKwkJICogZm9yIG5ldyBtZXNzYWdlcyBhbmQgdGhpcyBjbGllbnQgY2FuIHByb2Nlc3MgdGhlCi0rCQkgKiBjdXJyZW50IG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkuCi0rCQkgKgotKwkJICogVGhlcmUgYXJlIG5vdyBhdCBsZWFzdCB0aHJlZSBjbGllbnRzIHVzaW5nIHRoaXMKLSsJCSAqIFRDUCBzb2NrZXQgLSBvbmUgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucywKLSsJCSAqIG9uZSByZWFkaW5nIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gZ2V0IG5ldwotKwkJICogbWVzc2FnZXMsIGFuZCBvbmUgYW5zd2VyaW5nIHRoZSBtZXNzYWdlIGFscmVhZHkKLSsJCSAqIHJlY2VpdmVkLgotKwkJICovCi0gCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLUBAIC0zMTk3LDYgKzMyMzYsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLSAJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSAJY2xpZW50LT5yZWN1cnNpb25xdW90YSA9IE5VTEw7Ci0gCWNsaWVudC0+aW50ZXJmYWNlID0gTlVMTDsKLSAJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotQEAgLTMzNTksOSArMzM5OSw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfREVCVUcoMyksCi0gCQkJICAgICAgImFjY2VwdCBmYWlsZWQ6ICVzIiwKLSAJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChuZXZlbnQtPnJlc3VsdCkpOwotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJfQotKwkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotIAl9Ci0gCi0gCWlmIChleGl0X2NoZWNrKGNsaWVudCkpCi1AQCAtMzQwMiw3ICszNDQwLDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJgotLQkJICAgIChjbGllbnQtPnNjdHgtPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotKwkJICAgIChuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0gCQkgICAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotIAkJCSAgICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkpCi0gCQl7Ci1AQCAtMzQyOSw3ICszNDY3LDcgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGluIG5hbWVkLmNvbmYuIElmIHdlIGNhbid0IGF0dGFjaCB0byBpdCBoZXJlLCB0aGF0IG1lYW5zIHRoZSBUQ1AKLSAJICogY2xpZW50IHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotIAkgKi8KLS0JcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmY2xpZW50LT5zY3R4LT50Y3BxdW90YSwKLSsJcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhLAotIAkJCQkgICZjbGllbnQtPnRjcHF1b3RhKTsKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQkJYm9vbCBleGl0OwotQEAgLTM0NDcsMjcgKzM0ODUsMjcgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJICogaW50ZXJmYWNlIHRvIGJlIHN0YXJ2ZWQsIHdpdGggbm8gY2xpZW50cyBhYmxlCi0gCQkJICogdG8gYWNjZXB0IG5ldyBjb25uZWN0aW9ucy4KLSAJCQkgKgotLQkJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50Ci0tCQkJICogaXMgYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcwotKwkJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cwotKwkJCSAqIGFyZSBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzCi0gCQkJICogaW50ZXJmYWNlICh3aGV0aGVyIGFjY2VwdGluZywgcmVhZGluZywgb3IKLS0JCQkgKiBwcm9jZXNzaW5nKS4KLS0JCQkgKgotLQkJCSAqIElmIHNvLCB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsCi0tCQkJICogYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzIGNsaWVudCB0byBnbyBpbmFjdGl2ZQotLQkJCSAqIGFuZCB0aGUgb3RoZXIgb25lIGhhbmRsZSB0aGUgbmV4dCBjb25uZWN0aW9uCi0tCQkJICogd2hlbiBpdCdzIHJlYWR5LgotKwkJCSAqIHByb2Nlc3NpbmcpLiBJZiB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvCi0rCQkJICogKG9uZSByZWFkaW5nIGFuZCBvbmUgcHJvY2Vzc2luZyBhIHJlcXVlc3QpCi0rCQkJICogdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZQotKwkJCSAqIGNhbiBsZXQgdGhpcyBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIKLSsJCQkgKiBvbmUgd2lsbCByZXN1bWUgYWNjZXB0aW5nIHdoZW4gaXQncyBkb25lLgotIAkJCSAqCi0tCQkJICogQnV0IGlmIG5vdCwgdGhlbiB3ZSBuZWVkIHRvIGJlIGEgbGl0dGxlIGJpdAotLQkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UgYWxsb3cgKm9uZSogZXh0cmEKLS0JCQkgKiBUQ1AgY2xpZW50IHRocm91Z2gsIHRvIGVuc3VyZSB3ZSdyZSBsaXN0ZW5pbmcgb24KLS0JCQkgKiBldmVyeSBpbnRlcmZhY2UuCi0rCQkJICogSWYgdGhlcmUgYXJlbid0IGVub3VnaCBhY3RpdmUgY2xpZW50cyBvbiB0aGUKLSsJCQkgKiBpbnRlcmZhY2UsIHRoZW4gd2UgY2FuIGJlIGEgbGl0dGxlIGJpdAotKwkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UnbGwgYWxsb3cgKm9uZSoKLSsJCQkgKiBleHRyYSBjbGllbnQgdGhyb3VnaCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nCi0rCQkJICogb24gZXZlcnkgaW50ZXJmYWNlLgotIAkJCSAqCi0tCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgKnJlYWwqCi0tCQkJICogVENQIGNsaWVudCBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIKLS0JCQkgKiBvZiBpbnRlcmZhY2VzLikKLSsJCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSByZWFsCi0rCQkJICogVENQIGNsaWVudCBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZQotKwkJCSAqIG51bWJlciBvZiBsaXN0ZW5pbmcgaW50ZXJmYWNlcyBwbHVzIDIuKQotIAkJCSAqLwotIAkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlleGl0ID0gKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDEpOwotIAkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAotIAkJCWlmIChleGl0KSB7Ci1AQCAtMzQ3NSw2ICszNTEzLDkgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLSAJCQkJcmV0dXJuOwotIAkJCX0KLSsKLSsJfSBlbHNlIHsKLSsJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSB0cnVlOwotIAl9Ci0gCi0gCS8qCi1AQCAtMzUwNyw5ICszNTQ4LDE2IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJCSAiaXNjX3NvY2tldF9hY2NlcHQoKSBmYWlsZWQ6ICVzIiwKLSAJCQkJIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwotKwkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotKwotKwkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0rCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLSAJCX0KLSsKLSAJCXJldHVybjsKLSAJfQotIAotQEAgLTM1MjcsMTMgKzM1NzUsMTIgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIG9uY2UgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCi0gCSAqCi0gCSAqIFdoZW4gdGhlIGNsaWVudCBvYmplY3QgaXMgc2h1dHRpbmcgZG93biBhZnRlciBoYW5kbGluZyBhIFRDUAotLQkgKiByZXF1ZXN0IChzZWUgZXhpdF9jaGVjaygpKSwgaXQgbG9va3MgdG8gc2VlIHdoZXRoZXIgdGhpcyB2YWx1ZSBpcwotLQkgKiBub24temVyby4gSWYgc28sIHRoYXQgbWVhbnMgYW5vdGhlciBjbGllbnQgaGFzIGFscmVhZHkgY2FsbGVkCi0tCSAqIGFjY2VwdCgpIGFuZCBpcyB3YWl0aW5nIHRvIGVzdGFibGlzaCB0aGUgbmV4dCBjb25uZWN0aW9uLCB3aGljaAotLQkgKiBtZWFucyB0aGUgZmlyc3QgY2xpZW50IGlzIGZyZWUgdG8gZ28gaW5hY3RpdmUuIE90aGVyd2lzZSwKLS0JICogdGhlIGZpcnN0IGNsaWVudCBtdXN0IGNvbWUgYmFjayBhbmQgY2FsbCBhY2NlcHQoKSBhZ2FpbjsgdGhpcwotLQkgKiBndWFyYW50ZWVzIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGF0IGxlYXN0IG9uZSBjbGllbnQgbGlzdGVuaW5nCi0tCSAqIGZvciBuZXcgVENQIGNvbm5lY3Rpb25zIG9uIGVhY2ggaW50ZXJmYWNlLgotKwkgKiByZXF1ZXN0IChzZWUgZXhpdF9jaGVjaygpKSwgaWYgdGhpcyB2YWx1ZSBpcyBhdCBsZWFzdCBvbmUsIHRoYXQKLSsJICogbWVhbnMgYW5vdGhlciBjbGllbnQgaGFzIGNhbGxlZCBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyB0bwotKwkgKiBlc3RhYmxpc2ggdGhlIG5leHQgY29ubmVjdGlvbi4gVGhhdCBtZWFucyB0aGUgY2xpZW50IG1heSBiZQotKwkgKiBiZSBmcmVlIHRvIGJlY29tZSBpbmFjdGl2ZTsgb3RoZXJ3aXNlIGl0IG1heSBuZWVkIHRvIHN0YXJ0Ci0rCSAqIGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgaXRzZWxmIHRvIHByZXZlbnQgdGhlIGludGVyZmFjZQotKwkgKiBnb2luZyBkZWFkLgotIAkgKi8KLSAJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZysrOwotQEAgLTM2MTMsMTkgKzM2NjAsMTkgQEAgbnNfY2xpZW50X3JlcGxhY2UobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQsIGNsaWVudCk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXN1bHQgPSBnZXRfY2xpZW50KGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0tCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCB0Y3ApOwotKwkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgY2xpZW50LCB0Y3ApOwotKwotKwkJLyoKLSsJCSAqIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgbGlzdGVuaW5nIGZvciBuZXcgcmVxdWVzdHMgaXMgaGVyZWJ5Ci0rCQkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLSsJCSAqIHNob3VsZCByZWZyYWluIGZyb20gbGlzdGVuaW5nIGZvciBhbnkgbW9yZSByZXF1ZXN0cy4KLSsJCSAqLwotKwkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotIAl9Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJcmV0dXJuIChyZXN1bHQpOwotIAl9Ci0gCi0tCS8qCi0tCSAqIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgbGlzdGVuaW5nIGZvciBuZXcgcmVxdWVzdHMgaXMgaGVyZWJ5Ci0tCSAqIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgY2xpZW50LiAgVGhlcmVmb3JlLCB0aGUgb2xkIGNsaWVudAotLQkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0tCSAqLwotLQljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0tCi0gCXJldHVybiAoSVNDX1JfU1VDQ0VTUyk7Ci0gfQotIAotQEAgLTM3NTksNyArMzgwNiw3IEBAIG5zX2NsaWVudG1ncl9kZXN0cm95KG5zX2NsaWVudG1ncl90ICoqbWFuYWdlcnApIHsKLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKQotKwkgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgbnNfY2xpZW50X3QgKm9sZGNsaWVudCwgYm9vbCB0Y3ApCi0gewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSAJaXNjX2V2ZW50X3QgKmV2OwotQEAgLTM4MDMsNiArMzg1MCwxNiBAQCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi0gCWlmICh0Y3ApIHsKLSsJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSsJCWlmIChvbGRjbGllbnQgIT0gTlVMTCkgewotKwkJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBvbGRjbGllbnQtPnRjcGF0dGFjaGVkOwotKwkJfQotKwotKwkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLSsJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotKwotIAkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAkJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsCi0gCQkJCSAgJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotQEAgLTM4NjYsNyArMzkyMyw4IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJbnNfaW50ZXJmYWNlX2F0dGFjaChpZnAsICZjbGllbnQtPmludGVyZmFjZSk7Ci0gCWNsaWVudC0+bmV3c3RhdGUgPSBjbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfV09SS0lORzsKLSAJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCWNsaWVudC0+dGNwcXVvdGEgPSAmY2xpZW50LT5zY3R4LT50Y3BxdW90YTsKLSsJY2xpZW50LT50Y3BxdW90YSA9ICZuc19nX3NlcnZlci0+dGNwcXVvdGE7Ci0rCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBvbGRjbGllbnQtPnRjcGF0dGFjaGVkOwotIAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi1AQCAtMzg4NSw3ICszOTQzLDYgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0gCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQotIAljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0gCi0gCUlOU0lTVChjbGllbnQtPnRjcG1zZ192YWxpZCA9PSBmYWxzZSk7Ci1AQCAtMzkxMyw3ICszOTcwLDggQEAgbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIHVuc2lnbmVkIGludCBuLAotIAlNVFJBQ0UoImNyZWF0ZWNsaWVudHMiKTsKLSAKLSAJZm9yIChkaXNwID0gMDsgZGlzcCA8IG47IGRpc3ArKykgewotLQkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sIHRjcCk7Ci0rCQlyZXN1bHQgPSBnZXRfY2xpZW50KG1hbmFnZXIsIGlmcCwgaWZwLT51ZHBkaXNwYXRjaFtkaXNwXSwKLSsJCQkJICAgIE5VTEwsIHRjcCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJYnJlYWs7Ci0gCX0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCBhZWVkOWNjZGRhLi5lMmM0MGFjZDI4IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtOSw4ICs5LDYgQEAKLSAgKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KLSAgKi8KLSAKLS0vKiAkSWQ6IGNsaWVudC5oLHYgMS45NiAyMDEyLzAxLzMxIDIzOjQ3OjMxIHRib3ggRXhwICQgKi8KLS0KLSAjaWZuZGVmIE5BTUVEX0NMSUVOVF9ICi0gI2RlZmluZSBOQU1FRF9DTElFTlRfSCAxCi0gCi1AQCAtMTM2LDYgKzEzNCw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlib29sCQkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0gCWlzY19yZWZjb3VudF90CQkqcGlwZWxpbmVfcmVmczsKLSAJaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLSsJYm9vbAkJCXRjcGF0dGFjaGVkOwotIAlpc2NfcXVvdGFfdAkJKnJlY3Vyc2lvbnF1b3RhOwotIAluc19pbnRlcmZhY2VfdAkJKmludGVyZmFjZTsKLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA1LXJlZmFjdG9yLXRjcHF1b3RhLWFuZC1waXBlbGluZS1yZWZzLWFsbG93LXNwZWNpYWwtY2EucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4N2U3NWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA1LXJlZmFjdG9yLXRjcHF1b3RhLWFuZC1waXBlbGluZS1yZWZzLWFsbG93LXNwZWNpYWwtY2EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MTEgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC9jNDdjY2Y2XQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBjNDdjY2Y2MzBmMTQ3Mzc4NTY4YjMzZThmZGI3Yjc1NGYyMjhjMzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDUgQXByIDIwMTkgMTY6MjY6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzZdIHJlZmFjdG9yIHRjcHF1b3RhIGFuZCBwaXBlbGluZSByZWZzOyBhbGxvdyBzcGVjaWFsLWNhc2UKLSBvdmVycnVuIGluIGlzY19xdW90YQotCi0tIGlmIHRoZSBUQ1AgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQgYnV0IHRoZXJlIGFyZSBubyBjbGllbnRzIGxpc3RlbmluZwotICBmb3IgbmV3IGNvbm5lY3Rpb25zIG9uIHRoZSBpbnRlcmZhY2UsIHdlIGNhbiBub3cgZm9yY2UgYXR0YWNobWVudCB0byB0aGUKLSAgcXVvdGEgdXNpbmcgaXNjX3F1b3RhX2ZvcmNlKCksIGluc3RlYWQgb2YgY2Fycnlpbmcgb24gd2l0aCB0aGUgcXVvdGEgbm90Ci0gIGF0dGFjaGVkLgotLSB0aGUgVENQIGNsaWVudCBxdW90YSBpcyBub3cgcmVmZXJlbmNlZCB2aWEgYSByZWZlcmVuY2UtY291bnRlZAotICAnbnNfdGNwY29ubicgb2JqZWN0LCBvbmUgb2Ygd2hpY2ggaXMgY3JlYXRlZCB3aGVuZXZlciBhIGNsaWVudCBiZWdpbnMKLSAgbGlzdGVuaW5nIGZvciBuZXcgY29ubmVjdGlvbnMsIGFuZCBhdHRhY2hlZCB0byBieSBtZW1iZXJzIG9mIHRoYXQKLSAgY2xpZW50J3MgcGlwZWxpbmUgZ3JvdXAuIHdoZW4gdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSB0Y3Bjb25uCi0gIG9iamVjdCBpcyBkZXRhY2hlZCwgaXQgaXMgZnJlZWQgYW5kIHRoZSBUQ1AgcXVvdGEgc2xvdCBpcyByZWxlYXNlZC4KLS0gcmVkdWNlIGNvZGUgZHVwbGljYXRpb24gYnkgYWRkaW5nIG1hcmtfdGNwX2FjdGl2ZSgpIGZ1bmN0aW9uLgotLSBjb252ZXJ0IGNvdW50ZXJzIHRvIGF0b21pYy4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgN2U4MjIyMzc4Y2EyNGYxMzAyYTBjMWM2Mzg1NjUwNTBhYjA0NjgxYikKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDQ5Mzk0NTEyNzU3MjJiZmRhNDkwZWE4NmNhMTNlODRmNmJjNzFlNDYpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxM2Y3YzkxOGI4NzIwZDg5MDQwOGY2NzhiZDczYzIwZTYzNDUzOWQ5KQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgfCA0NDQgKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oICAgICAgIHwgIDEyICstCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggfCAgIDYgKy0KLSBiaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgICAgICAgICAgICAgICB8ICAgMSArCi0gbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oICAgICAgICAgICAgfCAgIDcgKwotIGxpYi9pc2MvcXVvdGEuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMzICstCi0gbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluICAgICAgICAgICAgfCAgIDEgKwotIDcgZmlsZXMgY2hhbmdlZCwgMjM2IGluc2VydGlvbnMoKyksIDI2OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggNjFlOTZkZDI4Yy4uZDgyNmFiMzJiZiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMjQ0LDggKzI0NCw3IEBAIHN0YXRpYyB2b2lkIGNsaWVudF9zdGFydChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCk7Ci0gc3RhdGljIHZvaWQgbnNfY2xpZW50X2R1bXBtZXNzYWdlKG5zX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IGNoYXIgKnJlYXNvbik7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkJCSAgICAgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgbnNfY2xpZW50X3QgKm9sZGNsaWVudCwKLS0JCQkgICAgICAgYm9vbCB0Y3ApOwotKwkJCSAgICAgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgYm9vbCB0Y3ApOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJCQkgICAgICAgaXNjX3NvY2tldF90ICpzb2NrLCBuc19jbGllbnRfdCAqb2xkY2xpZW50KTsKLSBzdGF0aWMgaW5saW5lIGJvb2wKLUBAIC0zMDEsMTYgKzMwMCwzMiBAQCBuc19jbGllbnRfc2V0dGltZW91dChuc19jbGllbnRfdCAqY2xpZW50LCB1bnNpZ25lZCBpbnQgc2Vjb25kcykgewotIH0KLSAKLSAvKiUKLS0gKiBBbGxvY2F0ZSBhIHJlZmVyZW5jZSBjb3VudGVyIHRoYXQgd2lsbCB0cmFjayB0aGUgbnVtYmVyIG9mIGNsaWVudCBzdHJ1Y3R1cmVzCi0tICogdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQgJ2NsaWVudCcgY2FsbGVkIGFjY2VwdCgpIGZvci4gIFRoaXMgY291bnRlcgotLSAqIHdpbGwgYmUgc2hhcmVkIGJldHdlZW4gYWxsIGNsaWVudCBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFRDUAotLSAqIGNvbm5lY3Rpb24uCi0rICogQWxsb2NhdGUgYSByZWZlcmVuY2UtY291bnRlZCBvYmplY3QgdGhhdCB3aWxsIG1haW50YWluIGEgc2luZ2xlIHBvaW50ZXIgdG8KLSsgKiB0aGUgKGFsc28gcmVmZXJlbmNlLWNvdW50ZWQpIFRDUCBjbGllbnQgcXVvdGEsIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGUKLSsgKiBjbGllbnRzIHByb2Nlc3NpbmcgcXVlcmllcyBvbiBhIHNpbmdsZSBUQ1AgY29ubmVjdGlvbiwgc28gdGhhdCBhbGwKLSsgKiBjbGllbnRzIHNoYXJpbmcgdGhlIG9uZSBzb2NrZXQgd2lsbCB0b2dldGhlciBjb25zdW1lIG9ubHkgb25lIHNsb3QgaW4KLSsgKiB0aGUgJ3RjcC1jbGllbnRzJyBxdW90YS4KLSAgKi8KLS1zdGF0aWMgdm9pZAotLXBpcGVsaW5lX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCkgewotLQlpc2NfcmVmY291bnRfdCAqcmVmczsKLStzdGF0aWMgaXNjX3Jlc3VsdF90Ci0rdGNwY29ubl9pbml0KG5zX2NsaWVudF90ICpjbGllbnQsIGJvb2wgZm9yY2UpIHsKLSsJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSsJaXNjX3F1b3RhX3QgKnF1b3RhID0gTlVMTDsKLSsJbnNfdGNwY29ubl90ICp0Y29ubiA9IE5VTEw7Ci0gCi0tCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotKwlSRVFVSVJFKGNsaWVudC0+dGNwY29ubiA9PSBOVUxMKTsKLSsKLSsJLyoKLSsJICogVHJ5IHRvIGF0dGFjaCB0byB0aGUgcXVvdGEgZmlyc3QsIHNvIHdlIHdvbid0IHBvaW50bGVzc2x5Ci0rCSAqIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSB0Y3Bjb25uIG9iamVjdCBpZiB3ZSBjYW4ndCBnZXQgb25lLgotKwkgKi8KLSsJaWYgKGZvcmNlKSB7Ci0rCQlyZXN1bHQgPSBpc2NfcXVvdGFfZm9yY2UoJm5zX2dfc2VydmVyLT50Y3BxdW90YSwgJnF1b3RhKTsKLSsJfSBlbHNlIHsKLSsJCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwgJnF1b3RhKTsKLSsJfQotKwlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsJCXJldHVybiAocmVzdWx0KTsKLSsJfQotIAotIAkvKgotIAkgKiBBIGdsb2JhbCBtZW1vcnkgY29udGV4dCBpcyB1c2VkIGZvciB0aGUgYWxsb2NhdGlvbiBhcyBkaWZmZXJlbnQKLUBAIC0zMjAsNzggKzMzNSw4MCBAQCBwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogY29udGVudGlvbiBoZXJlIGlzIGV4cGVjdGVkIHRvIGJlIG5lZ2xpZ2libGUsIGdpdmVuIHRoYXQgdGhpcyBjb2RlCi0gCSAqIGlzIG9ubHkgZXhlY3V0ZWQgZm9yIFRDUCBjb25uZWN0aW9ucy4KLSAJICovCi0tCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKG5zX2dfbWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0tCWlzY19yZWZjb3VudF9pbml0KHJlZnMsIDEpOwotLQljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSByZWZzOwotKwl0Y29ubiA9IGlzY19tZW1fYWxsb2NhdGUobnNfZ19tY3R4LCBzaXplb2YoKnRjb25uKSk7Ci0rCi0rCWlzY19yZWZjb3VudF9pbml0KCZ0Y29ubi0+cmVmcywgMSk7Ci0rCXRjb25uLT50Y3BxdW90YSA9IHF1b3RhOwotKwlxdW90YSA9IE5VTEw7Ci0rCXRjb25uLT5waXBlbGluZWQgPSBmYWxzZTsKLSsKLSsJY2xpZW50LT50Y3Bjb25uID0gdGNvbm47Ci0rCi0rCXJldHVybiAoSVNDX1JfU1VDQ0VTUyk7Ci0gfQotIAotIC8qJQotLSAqIEluY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotLSAqICdzb3VyY2UnIGlzIGFzc29jaWF0ZWQgd2l0aCBhbmQgcHV0IGEgcG9pbnRlciB0byB0aGF0IGNvdW50IGluICd0YXJnZXQnLAotLSAqIHRodXMgYXNzb2NpYXRpbmcgaXQgd2l0aCB0aGUgc2FtZSBUQ1AgY29ubmVjdGlvbi4KLSsgKiBJbmNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgc2hhcmluZyB0aGUgVENQIGNvbm5lY3Rpb24KLSsgKiB0aGF0ICdzb3VyY2UnIGlzIGFzc29jaWF0ZWQgd2l0aDsgYWRkIGEgcG9pbnRlciB0byB0aGUgc2FtZSB0Y3Bjb25uCi0rICogdG8gJ3RhcmdldCcsIHRodXMgYXNzb2NpYXRpbmcgaXQgd2l0aCB0aGUgc2FtZSBUQ1AgY29ubmVjdGlvbi4KLSAgKi8KLSBzdGF0aWMgdm9pZAotLXBpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0rdGNwY29ubl9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotIAlpbnQgcmVmczsKLSAKLS0JUkVRVUlSRShzb3VyY2UtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0tCVJFUVVJUkUodGFyZ2V0LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotKwlSRVFVSVJFKHNvdXJjZS0+dGNwY29ubiAhPSBOVUxMKTsKLSsJUkVRVUlSRSh0YXJnZXQtPnRjcGNvbm4gPT0gTlVMTCk7Ci0rCVJFUVVJUkUoc291cmNlLT50Y3Bjb25uLT5waXBlbGluZWQpOwotIAotLQlpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcywgJnJlZnMpOwotKwlpc2NfcmVmY291bnRfaW5jcmVtZW50KCZzb3VyY2UtPnRjcGNvbm4tPnJlZnMsICZyZWZzKTsKLSAJSU5TSVNUKHJlZnMgPiAxKTsKLS0JdGFyZ2V0LT5waXBlbGluZV9yZWZzID0gc291cmNlLT5waXBlbGluZV9yZWZzOwotKwl0YXJnZXQtPnRjcGNvbm4gPSBzb3VyY2UtPnRjcGNvbm47Ci0gfQotIAotIC8qJQotLSAqIERlY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotKyAqIERlY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyBzaGFyaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0gICogJ2NsaWVudCcgaXMgYXNzb2NpYXRlZCB3aXRoLiAgSWYgdGhpcyBpcyB0aGUgbGFzdCBjbGllbnQgdXNpbmcgdGhpcyBUQ1AKLS0gKiBjb25uZWN0aW9uLCBmcmVlIHRoZSByZWZlcmVuY2UgY291bnRlciBhbmQgcmV0dXJuIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuCi0tICogZmFsc2UuCi0rICogY29ubmVjdGlvbiwgd2UgZGV0YWNoIGZyb20gdGhlIFRDUCBxdW90YSBhbmQgZnJlZSB0aGUgdGNwY29ubgotKyAqIG9iamVjdC4gRWl0aGVyIHdheSwgY2xpZW50LT50Y3Bjb25uIGlzIHNldCB0byBOVUxMLgotICAqLwotLXN0YXRpYyBib29sCi0tcGlwZWxpbmVfZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLS0JaXNjX3JlZmNvdW50X3QgKnJlZmNvdW50OwotK3N0YXRpYyB2b2lkCi0rdGNwY29ubl9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotKwluc190Y3Bjb25uX3QgKnRjb25uID0gTlVMTDsKLSAJaW50IHJlZnM7Ci0gCi0tCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotLQotLQlyZWZjb3VudCA9IGNsaWVudC0+cGlwZWxpbmVfcmVmczsKLS0JY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLSsJUkVRVUlSRShjbGllbnQtPnRjcGNvbm4gIT0gTlVMTCk7Ci0gCi0tCWlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmY291bnQsIHJlZnMpOwotKwl0Y29ubiA9IGNsaWVudC0+dGNwY29ubjsKLSsJY2xpZW50LT50Y3Bjb25uID0gTlVMTDsKLSAKLSsJaXNjX3JlZmNvdW50X2RlY3JlbWVudCgmdGNvbm4tPnJlZnMsICZyZWZzKTsKLSAJaWYgKHJlZnMgPT0gMCkgewotLQkJaXNjX21lbV9mcmVlKG5zX2dfbWN0eCwgcmVmcyk7Ci0tCQlyZXR1cm4gKHRydWUpOwotKwkJaXNjX3F1b3RhX2RldGFjaCgmdGNvbm4tPnRjcHF1b3RhKTsKLSsJCWlzY19tZW1fZnJlZShuc19nX21jdHgsIHRjb25uKTsKLSAJfQotLQotLQlyZXR1cm4gKGZhbHNlKTsKLSB9Ci0gCi0tLyoKLS0gKiBEZXRhY2ggYSBjbGllbnQgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZiBhcHByb3ByaWF0ZSwgYW5kIHNldAotLSAqIHRoZSBxdW90YSBwb2ludGVyIHRvIE5VTEwuCi0tICoKLS0gKiBTb21ldGltZXMgd2hlbiB0aGUgVENQIGNsaWVudCBxdW90YSBpcyBleGhhdXN0ZWQgYnV0IHRoZXJlIGFyZSBubyBvdGhlcgotLSAqIGNsaWVudHMgc2VydmljaW5nIHRoZSBpbnRlcmZhY2UsIGEgY2xpZW50IHdpbGwgYmUgYWxsb3dlZCB0byBjb250aW51ZQotLSAqIHJ1bm5pbmcgZGVzcGl0ZSBub3QgaGF2aW5nIGJlZW4gYXR0YWNoZWQgdG8gdGhlIHF1b3RhLiBJbiB0aGlzIGV2ZW50LAotLSAqIHRoZSBUQ1AgcXVvdGEgd2FzIG5ldmVyIGF0dGFjaGVkIHRvIHRoZSBjbGllbnQsIHNvIHdoZW4gdGhlIGNsaWVudCAob3IKLS0gKiBhc3NvY2lhdGVkIHBpcGVsaW5lIGdyb3VwKSBzaHV0cyBkb3duLCB0aGUgcXVvdGEgbXVzdCBOT1QgYmUgZGV0YWNoZWQuCi0rLyolCi0rICogTWFyayBhIGNsaWVudCBhcyBhY3RpdmUgYW5kIGluY3JlbWVudCB0aGUgaW50ZXJmYWNlJ3MgJ250Y3BhY3RpdmUnCi0rICogY291bnRlciwgYXMgYSBzaWduYWwgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2xpZW50IHNlcnZpY2luZwotKyAqIFRDUCBxdWVyaWVzIGZvciB0aGUgaW50ZXJmYWNlLiBJZiB3ZSByZWFjaCB0aGUgVENQIGNsaWVudCBxdW90YSBhdAotKyAqIHNvbWUgcG9pbnQsIHRoaXMgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcXVvdGEgb3ZlcnJ1bgotKyAqIHNob3VsZCBiZSBwZXJtaXR0ZWQuCi0gICoKLS0gKiBPdGhlcndpc2UsIGlmIHRoZSBxdW90YSBwb2ludGVyIGlzIHNldCwgaXQgc2hvdWxkIGJlIGRldGFjaGVkLiBJZiBub3QKLS0gKiBzZXQgYXQgYWxsLCB3ZSBqdXN0IHJldHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgotKyAqIE1hcmtpbmcgdGhlIGNsaWVudCBhY3RpdmUgd2l0aCB0aGUgJ3RjcGFjdGl2ZScgZmxhZyBlbnN1cmVzIHByb3BlcgotKyAqIGFjY291bnRpbmcsIGJ5IHByZXZlbnRpbmcgdXMgZnJvbSBpbmNyZW1lbnRpbmcgb3IgZGVjcmVtZW50aW5nCi0rICogJ250Y3BhY3RpdmUnIG1vcmUgdGhhbiBvbmNlIHBlciBjbGllbnQuCi0gICovCi0gc3RhdGljIHZvaWQKLS10Y3BxdW90YV9kaXNjb25uZWN0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLS0JaWYgKGNsaWVudC0+dGNwcXVvdGEgPT0gTlVMTCkgewotLQkJcmV0dXJuOwotLQl9Ci0tCi0tCWlmIChjbGllbnQtPnRjcGF0dGFjaGVkKSB7Ci0tCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLS0JfSBlbHNlIHsKLS0JCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotK21hcmtfdGNwX2FjdGl2ZShuc19jbGllbnRfdCAqY2xpZW50LCBib29sIGFjdGl2ZSkgewotKwlpZiAoYWN0aXZlICYmICFjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMSk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSsJfSBlbHNlIGlmICghYWN0aXZlICYmIGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQl1aW50MzJfdCBvbGQgPQotKwkJCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIC0xKTsKLSsJCUlOU0lTVChvbGQgPiAwKTsKLSsJCWNsaWVudC0+dGNwYWN0aXZlID0gYWN0aXZlOwotIAl9Ci0gfQotIAotQEAgLTQ4NCw3ICs1MDEsOCBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotIAotIAkJaWYgKE5TX0NMSUVOVFNUQVRFX1JFQURJTkcgPT0gY2xpZW50LT5uZXdzdGF0ZSkgewotLQkJCWlmICghY2xpZW50LT5waXBlbGluZWQpIHsKLSsJCQlJTlNJU1QoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpOwotKwkJCWlmICghY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQpIHsKLSAJCQkJY2xpZW50X3JlYWQoY2xpZW50KTsKLSAJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX01BWDsKLSAJCQkJcmV0dXJuICh0cnVlKTsgLyogV2UncmUgZG9uZS4gKi8KLUBAIC01MDcsOCArNTI1LDggQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJZG5zX3RjcG1zZ19jYW5jZWxyZWFkKCZjbGllbnQtPnRjcG1zZyk7Ci0gCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT5ucmVhZHMgIT0gMCkgewotLQkJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlYWQgY2FuY2VsIGNvbXBsZXRpb24uICovCi0rCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWFkIGNhbmNlbCBjb21wbGV0aW9uLiAqLwotKwkJaWYgKGNsaWVudC0+bnJlYWRzID4gMCkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci0gCi1AQCAtNTE4LDQzICs1MzYsNDUgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQl9Ci0gCi0gCQkvKgotLQkJICogRGV0YWNoIGZyb20gcGlwZWxpbmUgZ3JvdXAgYW5kIGZyb20gVENQIGNsaWVudCBxdW90YSwKLS0JCSAqIGlmIGFwcHJvcHJpYXRlLgotKwkJICogU29vbiB0aGUgY2xpZW50IHdpbGwgYmUgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IFRDUAotKwkJICogY29ubmVjdGlvbiBvciBVRFAgcmVxdWVzdCwgYnV0IHdlIG1heSBoYXZlIGVub3VnaAotKwkJICogY2xpZW50cyBkb2luZyB0aGF0IGFscmVhZHkuICBDaGVjayB3aGV0aGVyIHRoaXMgY2xpZW50Ci0rCQkgKiBuZWVkcyB0byByZW1haW4gYWN0aXZlIGFuZCBhbGxvdyBpdCBnbyBpbmFjdGl2ZSBpZgotKwkJICogbm90LgotIAkJICoKLS0JCSAqIC0gSWYgbm8gcGlwZWxpbmUgZ3JvdXAgaXMgYWN0aXZlLCBhdHRlbXB0IHRvCi0tCQkgKiAgIGRldGFjaCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhLgotKwkJICogVURQIGNsaWVudHMgYWx3YXlzIGdvIGluYWN0aXZlIGF0IHRoaXMgcG9pbnQsIGJ1dCBhIFRDUAotKwkJICogY2xpZW50IG1heSBuZWVkIHRvIHN0YXkgYWN0aXZlIGFuZCByZXR1cm4gdG8gUkVBRFkKLSsJCSAqIHN0YXRlIGlmIG5vIG90aGVyIGNsaWVudHMgYXJlIGF2YWlsYWJsZSB0byBsaXN0ZW4KLSsJCSAqIGZvciBUQ1AgcmVxdWVzdHMgb24gdGhpcyBpbnRlcmZhY2UuCi0gCQkgKgotLQkJICogLSBJZiBhIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgZGV0YWNoIGZyb20gaXQ7Ci0tCQkgKiAgIGlmIHRoZSByZXR1cm4gY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBubyBtb3JlCi0tCQkgKiAgIGNsaWVudHMgbGVmdCBpZiB0aGlzIHBpcGVsaW5lIGdyb3VwLCB3ZSBhbHNvIGRldGFjaAotLQkJICogICBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhLgotLQkJICoKLS0JCSAqIC0gT3RoZXJ3aXNlIHdlIGRvbid0IHRyeSB0byBkZXRhY2gsIHdlIGp1c3Qgc2V0IHRoZQotLQkJICogICBUQ1AgcXVvdGEgcG9pbnRlciB0byBOVUxMIGlmIGl0IHdhc24ndCBOVUxMIGFscmVhZHkuCi0tCQkgKgotLQkJICogdGNwcXVvdGFfZGlzY29ubmVjdCgpIHdpbGwgc2V0IHRjcHF1b3RhIHRvIE5VTEwsIGVpdGhlcgotLQkJICogYnkgZGV0YWNoaW5nIGl0IG9yIGJ5IGFzc2lnbm1lbnQsIGRlcGVuZGluZyBvbiB0aGUKLS0JCSAqIG5lZWRzIG9mIHRoZSBjbGllbnQuIFNlZSB0aGUgY29tbWVudHMgb24gdGhhdCBmdW5jdGlvbgotLQkJICogZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCi0rCQkgKiBSZWdhcmRsZXNzLCBpZiB3ZSdyZSBnb2luZyB0byBGUkVFRCBzdGF0ZSwgdGhhdCBtZWFucwotKwkJICogdGhlIHN5c3RlbSBpcyBzaHV0dGluZyBkb3duIGFuZCB3ZSBkb24ndCBuZWVkIHRvCi0rCQkgKiByZXRhaW4gY2xpZW50cy4KLSAJCSAqLwotLQkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8IHBpcGVsaW5lX2RldGFjaChjbGllbnQpKSB7Ci0tCQkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotLQkJfSBlbHNlIHsKLS0JCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0JCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmCi0rCQkgICAgY2xpZW50LT5uZXdzdGF0ZSAhPSBOU19DTElFTlRTVEFURV9GUkVFRCAmJgotKwkJICAgICFuc19nX2NsaWVudHRlc3QgJiYKLSsJCSAgICBpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAwKSA9PSAwKQotKwkJewotKwkJCS8qIE5vYm9keSBlbHNlIGlzIGFjY2VwdGluZyAqLwotKwkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0rCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotKwkJfQotKwotKwkJLyoKLSsJCSAqIERldGFjaCBmcm9tIFRDUCBjb25uZWN0aW9uIGFuZCBUQ1AgY2xpZW50IHF1b3RhLAotKwkJICogaWYgYXBwcm9wcmlhdGUuIElmIHRoaXMgaXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvCi0rCQkgKiB0aGUgVENQIGNvbm5lY3Rpb24gaW4gb3VyIHBpcGVsaW5lIGdyb3VwLCB0aGUKLSsJCSAqIFRDUCBxdW90YSBzbG90IHdpbGwgYmUgcmVsZWFzZWQuCi0rCQkgKi8KLSsJCWlmIChjbGllbnQtPnRjcGNvbm4pIHsKLSsJCQl0Y3Bjb25uX2RldGFjaChjbGllbnQpOwotIAkJfQotIAotIAkJaWYgKGNsaWVudC0+dGNwc29ja2V0ICE9IE5VTEwpIHsKLSAJCQlDVFJBQ0UoImNsb3NldGNwIik7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwc29ja2V0KTsKLS0KLS0JCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLS0JCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLS0JCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0tCQkJfQotKwkJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIGZhbHNlKTsKLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRpbWVyc2V0KSB7Ci1AQCAtNTY3LDM1ICs1ODcsNiBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSBmYWxzZTsKLSAKLSAJCWNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLS0JCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQotLQkJLyoKLS0JCSAqIE5vdyB0aGUgY2xpZW50IGlzIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBUQ1AgY29ubmVjdGlvbgotLQkJICogb3IgVURQIHJlcXVlc3QsIGJ1dCB3ZSBtYXkgaGF2ZSBlbm91Z2ggY2xpZW50cyBkb2luZwotLQkJICogdGhhdCBhbHJlYWR5LiAgQ2hlY2sgd2hldGhlciB0aGlzIGNsaWVudCBuZWVkcyB0byByZW1haW4KLS0JCSAqIGFjdGl2ZSBhbmQgZm9yY2UgaXQgdG8gZ28gaW5hY3RpdmUgaWYgbm90LgotLQkJICoKLS0JCSAqIFVEUCBjbGllbnRzIGdvIGluYWN0aXZlIGF0IHRoaXMgcG9pbnQsIGJ1dCBhIFRDUCBjbGllbnQKLS0JCSAqIG1heSBuZWVkIHRvIHJlbWFpbiBhY3RpdmUgYW5kIGdvIGludG8gcmVhZHkgc3RhdGUgaWYKLS0JCSAqIG5vIG90aGVyIGNsaWVudHMgYXJlIGF2YWlsYWJsZSB0byBsaXN0ZW4gZm9yIFRDUAotLQkJICogcmVxdWVzdHMgb24gdGhpcyBpbnRlcmZhY2Ugb3IgKGluIHRoZSBjYXNlIG9mIHBpcGVsaW5lZAotLQkJICogY2xpZW50cykgdG8gcmVhZCBmb3IgYWRkaXRpb25hbCBtZXNzYWdlcyBvbiB0aGUgY3VycmVudAotLQkJICogY29ubmVjdGlvbi4KLS0JCSAqLwotLQkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJiAhbnNfZ19jbGllbnR0ZXN0KSB7Ci0tCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWlmICgoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPT0gMCB8fAotLQkJCSAgICAoY2xpZW50LT5waXBlbGluZWQgJiYKLS0JCQkgICAgIGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlIDwgMikpICYmCi0tCQkJICAgIGNsaWVudC0+bmV3c3RhdGUgIT0gTlNfQ0xJRU5UU1RBVEVfRlJFRUQpCi0tCQkJewotLQkJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotLQkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci0tCQkJfQotLQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJfQotLQotLQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAKLSAJCS8qCi0gCQkgKiBXZSBkb24ndCBuZWVkIHRoZSBjbGllbnQ7IHNlbmQgaXQgdG8gdGhlIGluYWN0aXZlCi1AQCAtNjMwLDcgKzYyMSw3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJfQotIAotIAkJLyogU3RpbGwgd2FpdGluZyBmb3IgYWNjZXB0IGNhbmNlbCBjb21wbGV0aW9uLiAqLwotLQkJaWYgKCEgKGNsaWVudC0+bmFjY2VwdHMgPT0gMCkpIHsKLSsJCWlmIChjbGllbnQtPm5hY2NlcHRzID4gMCkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci0gCi1AQCAtNjQxLDcgKzYzMiw3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJfQotIAotIAkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVjdiBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5yZWN2cyA9PSAwKSkgewotKwkJaWYgKGNsaWVudC0+bnJlY3ZzID4gMCkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci0gCi1AQCAtNjU0LDE0ICs2NDUsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotIAkJaWYgKGNsaWVudC0+dGNwbGlzdGVuZXIgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLS0KLS0JCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLS0JCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLS0JCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0tCQkJfQotKwkJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIGZhbHNlKTsKLSAJCX0KLSAJCWlmIChjbGllbnQtPnVkcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dWRwc29ja2V0KTsKLUBAIC04MTYsNyArODAwLDcgQEAgY2xpZW50X3N0YXJ0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJcmV0dXJuOwotIAotIAlpZiAoVENQX0NMSUVOVChjbGllbnQpKSB7Ci0tCQlpZiAoY2xpZW50LT5waXBlbGluZWQpIHsKLSsJCWlmIChjbGllbnQtPnRjcGNvbm4gIT0gTlVMTCkgewotIAkJCWNsaWVudF9yZWFkKGNsaWVudCk7Ci0gCQl9IGVsc2UgewotIAkJCWNsaWVudF9hY2NlcHQoY2xpZW50KTsKLUBAIC0yNDcwLDYgKzI0NTQsNyBAQCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCWNsaWVudC0+bnJlY3ZzLS07Ci0gCX0gZWxzZSB7Ci0gCQlJTlNJU1QoVENQX0NMSUVOVChjbGllbnQpKTsKLSsJCUlOU0lTVChjbGllbnQtPnRjcGNvbm4gIT0gTlVMTCk7Ci0gCQlSRVFVSVJFKGV2ZW50LT5ldl90eXBlID09IEROU19FVkVOVF9UQ1BNU0cpOwotIAkJUkVRVUlSRShldmVudC0+ZXZfc2VuZGVyID09ICZjbGllbnQtPnRjcG1zZyk7Ci0gCQlidWZmZXIgPSAmY2xpZW50LT50Y3Btc2cuYnVmZmVyOwotQEAgLTI2NTcsMTcgKzI2NDIsMTkgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCS8qCi0gCSAqIFBpcGVsaW5lIFRDUCBxdWVyeSBwcm9jZXNzaW5nLgotIAkgKi8KLS0JaWYgKGNsaWVudC0+bWVzc2FnZS0+b3Bjb2RlICE9IGRuc19vcGNvZGVfcXVlcnkpIHsKLS0JCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYKLSsJICAgIGNsaWVudC0+bWVzc2FnZS0+b3Bjb2RlICE9IGRuc19vcGNvZGVfcXVlcnkpCi0rCXsKLSsJCWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCX0KLS0JaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotKwlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmIGNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkKSB7Ci0gCQkvKgotIAkJICogV2UncmUgcGlwZWxpbmluZy4gUmVwbGFjZSB0aGUgY2xpZW50OyB0aGUKLS0JCSAqIHRoZSByZXBsYWNlbWVudCBjYW4gcmVhZCB0aGUgVENQIHNvY2tldCBsb29raW5nCi0tCQkgKiBmb3IgbmV3IG1lc3NhZ2VzIGFuZCB0aGlzIGNsaWVudCBjYW4gcHJvY2VzcyB0aGUKLSsJCSAqIHJlcGxhY2VtZW50IGNhbiByZWFkIHRoZSBUQ1Agc29ja2V0IGxvb2tpbmcKLSsJCSAqIGZvciBuZXcgbWVzc2FnZXMgYW5kIHRoaXMgb25lIGNhbiBwcm9jZXNzIHRoZQotIAkJICogY3VycmVudCBtZXNzYWdlIGFzeW5jaHJvbm91c2x5LgotIAkJICoKLS0JCSAqIFRoZXJlIGFyZSBub3cgYXQgbGVhc3QgdGhyZWUgY2xpZW50cyB1c2luZyB0aGlzCi0rCQkgKiBUaGVyZSB3aWxsIG5vdyBiZSBhdCBsZWFzdCB0aHJlZSBjbGllbnRzIHVzaW5nIHRoaXMKLSAJCSAqIFRDUCBzb2NrZXQgLSBvbmUgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucywKLSAJCSAqIG9uZSByZWFkaW5nIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gZ2V0IG5ldwotIAkJICogbWVzc2FnZXMsIGFuZCBvbmUgYW5zd2VyaW5nIHRoZSBtZXNzYWdlIGFscmVhZHkKLUBAIC0yNjc1LDcgKzI2NjIsNyBAQCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCSAqLwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCQkJY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQgPSBmYWxzZTsKLSAJCX0KLSAJfQotIAotQEAgLTMyMzMsMTAgKzMyMjAsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5zaWduZXIgPSBOVUxMOwotIAlkbnNfbmFtZV9pbml0KCZjbGllbnQtPnNpZ25lcm5hbWUsIE5VTEwpOwotIAljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotLQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotLQljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotLQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0JY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotKwljbGllbnQtPnRjcGNvbm4gPSBOVUxMOwotIAljbGllbnQtPnJlY3Vyc2lvbnF1b3RhID0gTlVMTDsKLSAJY2xpZW50LT5pbnRlcmZhY2UgPSBOVUxMOwotIAljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gZmFsc2U7Ci1AQCAtMzM0MSw5ICszMzI1LDEwIEBAIGNsaWVudF9yZWFkKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAKLSBzdGF0aWMgdm9pZAotIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotKwlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAluc19jbGllbnRfdCAqY2xpZW50ID0gZXZlbnQtPmV2X2FyZzsKLSAJaXNjX3NvY2tldF9uZXdjb25uZXZfdCAqbmV2ZW50ID0gKGlzY19zb2NrZXRfbmV3Y29ubmV2X3QgKilldmVudDsKLS0JaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSsJdWludDMyX3Qgb2xkOwotIAotIAlSRVFVSVJFKGV2ZW50LT5ldl90eXBlID09IElTQ19TT0NLRVZFTlRfTkVXQ09OTik7Ci0gCVJFUVVJUkUoTlNfQ0xJRU5UX1ZBTElEKGNsaWVudCkpOwotQEAgLTMzNjMsMTAgKzMzNDgsOCBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMSk7Ci0gCWNsaWVudC0+bmFjY2VwdHMtLTsKLSAKLS0JTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPiAwKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmctLTsKLS0JVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCW9sZCA9IGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIC0xKTsKLSsJSU5TSVNUKG9sZCA+IDApOwotIAotIAkvKgotIAkgKiBXZSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBuZXcgc29ja2V0IGJlZm9yZSB0aGUgZXhpdAotQEAgLTMzOTksNyArMzM4Miw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfREVCVUcoMyksCi0gCQkJICAgICAgImFjY2VwdCBmYWlsZWQ6ICVzIiwKLSAJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChuZXZlbnQtPnJlc3VsdCkpOwotLQkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotKwkJdGNwY29ubl9kZXRhY2goY2xpZW50KTsKLSAJfQotIAotIAlpZiAoZXhpdF9jaGVjayhjbGllbnQpKQotQEAgLTM0MzcsMTUgKzM0MjAsMTMgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgKiB0ZWxuZXR0aW5nIHRvIHBvcnQgNTMgKG9uY2UgcGVyIENQVSkgd2lsbAotIAkJICogZGVueSBzZXJ2aWNlIHRvIGxlZ2l0aW1hdGUgVENQIGNsaWVudHMuCi0gCQkgKi8KLS0JCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmCi0gCQkgICAgKG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLSAJCSAgICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0gCQkJICAgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSkKLSAJCXsKLS0JCQlwaXBlbGluZV9pbml0KGNsaWVudCk7Ci0tCQkJY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotKwkJCWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJCX0KLSAKLSAJCWNsaWVudF9yZWFkKGNsaWVudCk7Ci1AQCAtMzQ2Miw3OCArMzQ0Myw1OSBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJQ1RSQUNFKCJhY2NlcHQiKTsKLSAKLSAJLyoKLS0JICogVGhlIHRjcHF1b3RhIG9iamVjdCBjYW4gb25seSBiZSBzaW11bHRhbmVvdXNseSByZWZlcmVuY2VkIGEKLS0JICogcHJlLWRlZmluZWQgbnVtYmVyIG9mIHRpbWVzOyB0aGlzIGlzIGNvbmZpZ3VyZWQgYnkgJ3RjcC1jbGllbnRzJwotLQkgKiBpbiBuYW1lZC5jb25mLiBJZiB3ZSBjYW4ndCBhdHRhY2ggdG8gaXQgaGVyZSwgdGhhdCBtZWFucyB0aGUgVENQCi0tCSAqIGNsaWVudCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZC4KLSsJICogU2V0IHVwIGEgbmV3IFRDUCBjb25uZWN0aW9uLiBUaGlzIG1lYW5zIHRyeSB0byBhdHRhY2ggdG8gdGhlCi0rCSAqIFRDUCBjbGllbnQgcXVvdGEgKHRjcC1jbGllbnRzKSwgYnV0IGZhaWwgaWYgd2UncmUgb3ZlciBxdW90YS4KLSAJICovCi0tCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwKLS0JCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0rCXJlc3VsdCA9IHRjcGNvbm5faW5pdChjbGllbnQsIGZhbHNlKTsKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQkJYm9vbCBleGl0OwotKwkJYm9vbCBleGl0OwotIAotLQkJCW5zX2NsaWVudF9sb2coY2xpZW50LCBOU19MT0dDQVRFR09SWV9DTElFTlQsCi0tCQkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfREVCVUcoMSksCi0tCQkJCSAgICAgICJubyBtb3JlIFRDUCBjbGllbnRzOiAlcyIsCi0tCQkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotLQotLQkJCS8qCi0tCQkJICogV2UgaGF2ZSBleGNlZWRlZCB0aGUgc3lzdGVtLXdpZGUgVENQIGNsaWVudAotLQkJCSAqIHF1b3RhLiAgQnV0LCB3ZSBjYW4ndCBqdXN0IGJsb2NrIHRoaXMgYWNjZXB0Ci0tCQkJICogaW4gYWxsIGNhc2VzLCBiZWNhdXNlIGlmIHdlIGRpZCwgYSBoZWF2eSBUQ1AKLS0JCQkgKiBsb2FkIG9uIG90aGVyIGludGVyZmFjZXMgbWlnaHQgY2F1c2UgdGhpcwotLQkJCSAqIGludGVyZmFjZSB0byBiZSBzdGFydmVkLCB3aXRoIG5vIGNsaWVudHMgYWJsZQotLQkJCSAqIHRvIGFjY2VwdCBuZXcgY29ubmVjdGlvbnMuCi0tCQkJICoKLS0JCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudHMKLS0JCQkgKiBhcmUgYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcwotLQkJCSAqIGludGVyZmFjZSAod2hldGhlciBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yCi0tCQkJICogcHJvY2Vzc2luZykuIElmIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28KLS0JCQkgKiAob25lIHJlYWRpbmcgYW5kIG9uZSBwcm9jZXNzaW5nIGEgcmVxdWVzdCkKLS0JCQkgKiB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlCi0tCQkJICogY2FuIGxldCB0aGlzIGNsaWVudCBnbyBpbmFjdGl2ZSBhbmQgYW5vdGhlcgotLQkJCSAqIG9uZSB3aWxsIHJlc3VtZSBhY2NlcHRpbmcgd2hlbiBpdCdzIGRvbmUuCi0tCQkJICoKLS0JCQkgKiBJZiB0aGVyZSBhcmVuJ3QgZW5vdWdoIGFjdGl2ZSBjbGllbnRzIG9uIHRoZQotLQkJCSAqIGludGVyZmFjZSwgdGhlbiB3ZSBjYW4gYmUgYSBsaXR0bGUgYml0Ci0tCQkJICogZmxleGlibGUgYWJvdXQgdGhlIHF1b3RhLiBXZSdsbCBhbGxvdyAqb25lKgotLQkJCSAqIGV4dHJhIGNsaWVudCB0aHJvdWdoIHRvIGVuc3VyZSB3ZSdyZSBsaXN0ZW5pbmcKLS0JCQkgKiBvbiBldmVyeSBpbnRlcmZhY2UuCi0tCQkJICoKLS0JCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSByZWFsCi0tCQkJICogVENQIGNsaWVudCBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZQotLQkJCSAqIG51bWJlciBvZiBsaXN0ZW5pbmcgaW50ZXJmYWNlcyBwbHVzIDIuKQotLQkJCSAqLwotLQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlleGl0ID0gKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMSk7Ci0tCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotKwkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfV0FSTklORywKLSsJCQkgICAgICAiVENQIGNsaWVudCBxdW90YSByZWFjaGVkOiAlcyIsCi0rCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCi0tCQkJaWYgKGV4aXQpIHsKLS0JCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotLQkJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0tCQkJCXJldHVybjsKLS0JCQl9Ci0rCQkvKgotKwkJICogV2UgaGF2ZSBleGNlZWRlZCB0aGUgc3lzdGVtLXdpZGUgVENQIGNsaWVudCBxdW90YS4gIEJ1dCwKLSsJCSAqIHdlIGNhbid0IGp1c3QgYmxvY2sgdGhpcyBhY2NlcHQgaW4gYWxsIGNhc2VzLCBiZWNhdXNlIGlmCi0rCQkgKiB3ZSBkaWQsIGEgaGVhdnkgVENQIGxvYWQgb24gb3RoZXIgaW50ZXJmYWNlcyBtaWdodCBjYXVzZQotKwkJICogdGhpcyBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUgdG8KLSsJCSAqIGFjY2VwdCBuZXcgY29ubmVjdGlvbnMuCi0rCQkgKgotKwkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnRzIGFyZQotKwkJICogYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcyBpbnRlcmZhY2UgKHdoZXRoZXIKLSsJCSAqIGFjY2VwdGluZywgcmVhZGluZywgb3IgcHJvY2Vzc2luZykuIElmIHdlIGZpbmQgYXQgbGVhc3QKLSsJCSAqIG9uZSwgdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZSBjYW4gbGV0IHRoaXMKLSsJCSAqIGNsaWVudCBnbyBpbmFjdGl2ZSBhbmQgYW5vdGhlciB3aWxsIHRha2Ugb3ZlciB3aGVuIGl0J3MKLSsJCSAqIGRvbmUuCi0rCQkgKgotKwkJICogSWYgdGhlcmUgYXJlbid0IGVub3VnaCBhY3RpdmUgY2xpZW50cyBvbiB0aGUgaW50ZXJmYWNlLAotKwkJICogdGhlbiB3ZSBjYW4gYmUgYSBsaXR0bGUgYml0IGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4KLSsJCSAqIFdlJ2xsIGFsbG93ICpvbmUqIGV4dHJhIGNsaWVudCB0aHJvdWdoIHRvIGVuc3VyZSB3ZSdyZQotKwkJICogbGlzdGVuaW5nIG9uIGV2ZXJ5IGludGVyZmFjZTsgd2UgZG8gdGhpcyBieSBzZXR0aW5nIHRoZQotKwkJICogJ2ZvcmNlJyBvcHRpb24gdG8gdGNwY29ubl9pbml0KCkuCi0rCQkgKgotKwkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVhbCBUQ1AgY2xpZW50Ci0rCQkgKiBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIgb2YgbGlzdGVuaW5nCi0rCQkgKiBpbnRlcmZhY2VzIHBsdXMgMS4pCi0rCQkgKi8KLSsJCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPiAwKTsKLSsJCWlmIChleGl0KSB7Ci0rCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotKwkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0gCi0tCX0gZWxzZSB7Ci0tCQljbGllbnQtPnRjcGF0dGFjaGVkID0gdHJ1ZTsKLSsJCXJlc3VsdCA9IHRjcGNvbm5faW5pdChjbGllbnQsIHRydWUpOwotKwkJUlVOVElNRV9DSEVDSyhyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyk7Ci0gCX0KLSAKLSAJLyoKLS0JICogQnkgaW5jcmVtZW50aW5nIHRoZSBpbnRlcmZhY2UncyBudGNwYWN0aXZlIGNvdW50ZXIgd2Ugc2lnbmFsCi0tCSAqIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsaWVudCBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgZm9yIHRoZQotLQkgKiBpbnRlcmZhY2UuCi0tCSAqCi0tCSAqIFdlIGFsc28gbWFrZSBub3RlIG9mIHRoZSBmYWN0IGluIHRoZSBjbGllbnQgaXRzZWxmIHdpdGggdGhlCi0tCSAqIHRjcGFjdGl2ZSBmbGFnLiBUaGlzIGVuc3VyZXMgcHJvcGVyIGFjY291bnRpbmcgYnkgcHJldmVudGluZwotLQkgKiB1cyBmcm9tIGFjY2lkZW50YWxseSBpbmNyZW1lbnRpbmcgb3IgZGVjcmVtZW50aW5nIG50Y3BhY3RpdmUKLS0JICogbW9yZSB0aGFuIG9uY2UgcGVyIGNsaWVudCBvYmplY3QuCi0rCSAqIElmIHRoaXMgY2xpZW50IHdhcyBzZXQgdXAgdXNpbmcgZ2V0X2NsaWVudCgpIG9yIGdldF93b3JrZXIoKSwKLSsJICogdGhlbiBUQ1AgaXMgYWxyZWFkeSBtYXJrZWQgYWN0aXZlLiBIb3dldmVyLCBpZiBpdCB3YXMgcmVzdGFydGVkCi0rCSAqIGZyb20gZXhpdF9jaGVjaygpLCBpdCBtaWdodCBub3QgYmUsIHNvIHdlIHRha2UgY2FyZSBvZiBpdCBub3cuCi0gCSAqLwotLQlpZiAoIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotLQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0tCX0KLSsJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgdHJ1ZSk7Ci0gCi0gCXJlc3VsdCA9IGlzY19zb2NrZXRfYWNjZXB0KGNsaWVudC0+dGNwbGlzdGVuZXIsIGNsaWVudC0+dGFzaywKLSAJCQkJICAgY2xpZW50X25ld2Nvbm4sIGNsaWVudCk7Ci1AQCAtMzU0OSwxNSArMzUxMSw4IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCQkgImlzY19zb2NrZXRfYWNjZXB0KCkgZmFpbGVkOiAlcyIsCi0gCQkJCSBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAKLS0JCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLS0KLS0JCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotLQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0tCQl9Ci0tCi0rCQl0Y3Bjb25uX2RldGFjaChjbGllbnQpOwotKwkJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgZmFsc2UpOwotIAkJcmV0dXJuOwotIAl9Ci0gCi1AQCAtMzU4Miw5ICszNTM3LDcgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgaXRzZWxmIHRvIHByZXZlbnQgdGhlIGludGVyZmFjZQotIAkgKiBnb2luZyBkZWFkLgotIAkgKi8KLS0JTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZysrOwotLQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgMSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzY1NSwyNCArMzYwOCwyNSBAQCBuc19jbGllbnRfcmVwbGFjZShuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCVJFUVVJUkUoY2xpZW50LT5tYW5hZ2VyICE9IE5VTEwpOwotIAotIAl0Y3AgPSBUQ1BfQ0xJRU5UKGNsaWVudCk7Ci0tCWlmICh0Y3AgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSsJaWYgKHRjcCAmJiBjbGllbnQtPnRjcGNvbm4gIT0gTlVMTCAmJiBjbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCkgewotIAkJcmVzdWx0ID0gZ2V0X3dvcmtlcihjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotIAkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQsIGNsaWVudCk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXN1bHQgPSBnZXRfY2xpZW50KGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0tCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCBjbGllbnQsIHRjcCk7Ci0rCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCB0Y3ApOwotIAotLQkJLyoKLS0JCSAqIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgbGlzdGVuaW5nIGZvciBuZXcgcmVxdWVzdHMgaXMgaGVyZWJ5Ci0tCQkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLS0JCSAqIHNob3VsZCByZWZyYWluIGZyb20gbGlzdGVuaW5nIGZvciBhbnkgbW9yZSByZXF1ZXN0cy4KLS0JCSAqLwotLQkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotIAl9Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJcmV0dXJuIChyZXN1bHQpOwotIAl9Ci0gCi0rCS8qCi0rCSAqIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgbGlzdGVuaW5nIGZvciBuZXcgcmVxdWVzdHMgaXMgaGVyZWJ5Ci0rCSAqIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgY2xpZW50LiAgVGhlcmVmb3JlLCB0aGUgb2xkIGNsaWVudAotKwkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0rCSAqLwotKwljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0rCi0gCXJldHVybiAoSVNDX1JfU1VDQ0VTUyk7Ci0gfQotIAotQEAgLTM4MDYsNyArMzc2MCw3IEBAIG5zX2NsaWVudG1ncl9kZXN0cm95KG5zX2NsaWVudG1ncl90ICoqbWFuYWdlcnApIHsKLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsIGJvb2wgdGNwKQotKwkgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgYm9vbCB0Y3ApCi0gewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSAJaXNjX2V2ZW50X3QgKmV2OwotQEAgLTM4NTAsMTUgKzM4MDQsNyBAQCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi0gCWlmICh0Y3ApIHsKLS0JCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLS0JCWlmIChvbGRjbGllbnQgIT0gTlVMTCkgewotLQkJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBvbGRjbGllbnQtPnRjcGF0dGFjaGVkOwotLQkJfQotLQotLQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLS0JCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotKwkJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgdHJ1ZSk7Ci0gCi0gCQljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0gCQlpc2Nfc29ja2V0X2F0dGFjaChpZnAtPnRjcHNvY2tldCwKLUBAIC0zOTIzLDE2ICszODY5LDE0IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJbnNfaW50ZXJmYWNlX2F0dGFjaChpZnAsICZjbGllbnQtPmludGVyZmFjZSk7Ci0gCWNsaWVudC0+bmV3c3RhdGUgPSBjbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfV09SS0lORzsKLSAJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCWNsaWVudC0+dGNwcXVvdGEgPSAmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhOwotLQljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0gCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAKLS0JcGlwZWxpbmVfYXR0YWNoKG9sZGNsaWVudCwgY2xpZW50KTsKLS0JY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotKwl0Y3Bjb25uX2F0dGFjaChvbGRjbGllbnQsIGNsaWVudCk7Ci0rCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIHRydWUpOwotIAotIAlpc2Nfc29ja2V0X2F0dGFjaChpZnAtPnRjcHNvY2tldCwgJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotIAlpc2Nfc29ja2V0X2F0dGFjaChzb2NrLCAmY2xpZW50LT50Y3Bzb2NrZXQpOwotQEAgLTM5NDAsMTEgKzM4ODQsNiBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCSh2b2lkKWlzY19zb2NrZXRfZ2V0cGVlcm5hbWUoY2xpZW50LT50Y3Bzb2NrZXQsICZjbGllbnQtPnBlZXJhZGRyKTsKLSAJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IHRydWU7Ci0gCi0tCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLS0JVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLS0KLSAJSU5TSVNUKGNsaWVudC0+dGNwbXNnX3ZhbGlkID09IGZhbHNlKTsKLSAJZG5zX3RjcG1zZ19pbml0KGNsaWVudC0+bWN0eCwgY2xpZW50LT50Y3Bzb2NrZXQsICZjbGllbnQtPnRjcG1zZyk7Ci0gCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gdHJ1ZTsKLUBAIC0zOTcwLDggKzM5MDksNyBAQCBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cyhuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgdW5zaWduZWQgaW50IG4sCi0gCU1UUkFDRSgiY3JlYXRlY2xpZW50cyIpOwotIAotIAlmb3IgKGRpc3AgPSAwOyBkaXNwIDwgbjsgZGlzcCsrKSB7Ci0tCQlyZXN1bHQgPSBnZXRfY2xpZW50KG1hbmFnZXIsIGlmcCwgaWZwLT51ZHBkaXNwYXRjaFtkaXNwXSwKLS0JCQkJICAgIE5VTEwsIHRjcCk7Ci0rCQlyZXN1bHQgPSBnZXRfY2xpZW50KG1hbmFnZXIsIGlmcCwgaWZwLT51ZHBkaXNwYXRjaFtkaXNwXSwgdGNwKTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlicmVhazsKLSAJfQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLWluZGV4IGUyYzQwYWNkMjguLjk2OWVlNGMwOGYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLUBAIC03OCw2ICs3OCwxMyBAQAotICAqKiogVHlwZXMKLSAgKioqLwotIAotKy8qJSByZWZlcmVuY2UtY291bnRlZCBUQ1AgY29ubmVjdGlvbiBvYmplY3QgKi8KLSt0eXBlZGVmIHN0cnVjdCBuc190Y3Bjb25uIHsKLSsJaXNjX3JlZmNvdW50X3QJCXJlZnM7Ci0rCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0rCWJvb2wJCQlwaXBlbGluZWQ7Ci0rfSBuc190Y3Bjb25uX3Q7Ci0rCi0gLyolIG5hbWVzZXJ2ZXIgY2xpZW50IHN0cnVjdHVyZSAqLwotIHN0cnVjdCBuc19jbGllbnQgewotIAl1bnNpZ25lZCBpbnQJCW1hZ2ljOwotQEAgLTEzMSwxMCArMTM4LDcgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWRuc19uYW1lX3QJCXNpZ25lcm5hbWU7ICAgLyolPCBbVF1TSUcga2V5IG5hbWUgKi8KLSAJZG5zX25hbWVfdAkJKnNpZ25lcjsgICAgICAvKiU8IE5VTEwgaWYgbm90IHZhbGlkIHNpZyAqLwotIAlib29sCQkJbW9ydGFsOwkgICAgICAvKiU8IERpZSBhZnRlciBoYW5kbGluZyByZXF1ZXN0ICovCi0tCWJvb2wJCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLS0JaXNjX3JlZmNvdW50X3QJCSpwaXBlbGluZV9yZWZzOwotLQlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotLQlib29sCQkJdGNwYXR0YWNoZWQ7Ci0rCW5zX3RjcGNvbm5fdAkJKnRjcGNvbm47Ci0gCWlzY19xdW90YV90CQkqcmVjdXJzaW9ucXVvdGE7Ci0gCW5zX2ludGVyZmFjZV90CQkqaW50ZXJmYWNlOwotIAotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLWluZGV4IDYxYjA4ODI2YTYuLjM1MzVlZjIyYTggMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLUBAIC05LDggKzksNiBAQAotICAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotICAqLwotIAotLS8qICRJZDogaW50ZXJmYWNlbWdyLmgsdiAxLjM1IDIwMTEvMDcvMjggMjM6NDc6NTggdGJveCBFeHAgJCAqLwotLQotICNpZm5kZWYgTkFNRURfSU5URVJGQUNFTUdSX0gKLSAjZGVmaW5lIE5BTUVEX0lOVEVSRkFDRU1HUl9IIDEKLSAKLUBAIC03NywxMSArNzUsMTEgQEAgc3RydWN0IG5zX2ludGVyZmFjZSB7Ci0gCQkJCQkJLyolPCBVRFAgZGlzcGF0Y2hlcnMuICovCi0gCWlzY19zb2NrZXRfdCAqCQl0Y3Bzb2NrZXQ7CS8qJTwgVENQIHNvY2tldC4gKi8KLSAJaXNjX2RzY3BfdAkJZHNjcDsJCS8qJTwgImxpc3Rlbi1vbiIgRFNDUCB2YWx1ZSAqLwotLQlpbnQJCQludGNwYWNjZXB0aW5nOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCWludDMyX3QJCQludGNwYWNjZXB0aW5nOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0gCQkJCQkJICAgICByZWFkeSB0byBhY2NlcHQgbmV3Ci0gCQkJCQkJICAgICBUQ1AgY29ubmVjdGlvbnMgb24gdGhpcwotIAkJCQkJCSAgICAgaW50ZXJmYWNlICovCi0tCWludAkJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaW50MzJfdAkJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHNlcnZpY2luZyBUQ1AgcXVlcmllcwotIAkJCQkJCSAgICAgKHdoZXRoZXIgYWNjZXB0aW5nIG9yCi0gCQkJCQkJICAgICBjb25uZWN0ZWQpICovCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1pbmRleCA5NTUwOTZlZjQ3Li5kOWY2ZGY1ODAyIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi0rKysgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLUBAIC0zODgsNiArMzg4LDcgQEAgbnNfaW50ZXJmYWNlX2NyZWF0ZShuc19pbnRlcmZhY2VtZ3JfdCAqbWdyLCBpc2Nfc29ja2FkZHJfdCAqYWRkciwKLSAJICovCi0gCWlmcC0+bnRjcGFjY2VwdGluZyA9IDA7Ci0gCWlmcC0+bnRjcGFjdGl2ZSA9IDA7Ci0rCi0gCWlmcC0+bnVkcGRpc3BhdGNoID0gMDsKLSAKLSAJaWZwLT5kc2NwID0gLTE7Ci1kaWZmIC0tZ2l0IGEvbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oIGIvbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oCi1pbmRleCBiOWJmNTk4NzdhLi4zNmM1ODMwMjQyIDEwMDY0NAotLS0tIGEvbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oCi0rKysgYi9saWIvaXNjL2luY2x1ZGUvaXNjL3F1b3RhLmgKLUBAIC0xMDAsNiArMTAwLDEzIEBAIGlzY19xdW90YV9hdHRhY2goaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApOwotICAqIHF1b3RhIGlmIHN1Y2Nlc3NmdWwgKElTQ19SX1NVQ0NFU1Mgb3IgSVNDX1JfU09GVFFVT1RBKS4KLSAgKi8KLSAKLStpc2NfcmVzdWx0X3QKLStpc2NfcXVvdGFfZm9yY2UoaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApOwotKy8qJTwKLSsgKiBMaWtlIGlzY19xdW90YV9hdHRhY2gsIGJ1dCB3aWxsIGF0dGFjaCAnKnAnIHRvIHRoZSBxdW90YQotKyAqIGV2ZW4gaWYgdGhlIGhhcmQgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuCi0rICovCi0rCi0gdm9pZAotIGlzY19xdW90YV9kZXRhY2goaXNjX3F1b3RhX3QgKipwKTsKLSAvKiU8Ci1kaWZmIC0tZ2l0IGEvbGliL2lzYy9xdW90YS5jIGIvbGliL2lzYy9xdW90YS5jCi1pbmRleCAzZGRmZjBkODc1Li41NTZhNjFmMjFkIDEwMDY0NAotLS0tIGEvbGliL2lzYy9xdW90YS5jCi0rKysgYi9saWIvaXNjL3F1b3RhLmMKLUBAIC03NCwyMCArNzQsMzkgQEAgaXNjX3F1b3RhX3JlbGVhc2UoaXNjX3F1b3RhX3QgKnF1b3RhKSB7Ci0gCVVOTE9DSygmcXVvdGEtPmxvY2spOwotIH0KLSAKLS1pc2NfcmVzdWx0X3QKLS1pc2NfcXVvdGFfYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKQotLXsKLStzdGF0aWMgaXNjX3Jlc3VsdF90Ci0rZG9hdHRhY2goaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnAsIGJvb2wgZm9yY2UpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLS0JSU5TSVNUKHAgIT0gTlVMTCAmJiAqcCA9PSBOVUxMKTsKLSsJUkVRVUlSRShwICE9IE5VTEwgJiYgKnAgPT0gTlVMTCk7Ci0rCi0gCXJlc3VsdCA9IGlzY19xdW90YV9yZXNlcnZlKHF1b3RhKTsKLS0JaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTIHx8IHJlc3VsdCA9PSBJU0NfUl9TT0ZUUVVPVEEpCi0rCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyB8fCByZXN1bHQgPT0gSVNDX1JfU09GVFFVT1RBKSB7Ci0rCQkqcCA9IHF1b3RhOwotKwl9IGVsc2UgaWYgKHJlc3VsdCA9PSBJU0NfUl9RVU9UQSAmJiBmb3JjZSkgewotKwkJLyogYXR0YWNoIGFueXdheSAqLwotKwkJTE9DSygmcXVvdGEtPmxvY2spOwotKwkJcXVvdGEtPnVzZWQrKzsKLSsJCVVOTE9DSygmcXVvdGEtPmxvY2spOwotKwotIAkJKnAgPSBxdW90YTsKLSsJCXJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0rCX0KLSsKLSAJcmV0dXJuIChyZXN1bHQpOwotIH0KLSAKLStpc2NfcmVzdWx0X3QKLStpc2NfcXVvdGFfYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKSB7Ci0rCXJldHVybiAoZG9hdHRhY2gocXVvdGEsIHAsIGZhbHNlKSk7Ci0rfQotKwotK2lzY19yZXN1bHRfdAotK2lzY19xdW90YV9mb3JjZShpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCkgewotKwlyZXR1cm4gKGRvYXR0YWNoKHF1b3RhLCBwLCB0cnVlKSk7Ci0rfQotKwotIHZvaWQKLS1pc2NfcXVvdGFfZGV0YWNoKGlzY19xdW90YV90ICoqcCkKLS17Ci0raXNjX3F1b3RhX2RldGFjaChpc2NfcXVvdGFfdCAqKnApIHsKLSAJSU5TSVNUKHAgIT0gTlVMTCAmJiAqcCAhPSBOVUxMKTsKLSAJaXNjX3F1b3RhX3JlbGVhc2UoKnApOwotIAkqcCA9IE5VTEw7Ci1kaWZmIC0tZ2l0IGEvbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluIGIvbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluCi1pbmRleCBhODJmYWNlYzBmLi43YjlmMjNkNzc2IDEwMDY0NAotLS0tIGEvbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluCi0rKysgYi9saWIvaXNjL3dpbjMyL2xpYmlzYy5kZWYuaW4KLUBAIC01MTksNiArNTE5LDcgQEAgaXNjX3BvcnRzZXRfcmVtb3ZlcmFuZ2UKLSBpc2NfcXVvdGFfYXR0YWNoCi0gaXNjX3F1b3RhX2Rlc3Ryb3kKLSBpc2NfcXVvdGFfZGV0YWNoCi0raXNjX3F1b3RhX2ZvcmNlCi0gaXNjX3F1b3RhX2luaXQKLSBpc2NfcXVvdGFfbWF4Ci0gaXNjX3F1b3RhX3JlbGVhc2UKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNi1yZXN0b3JlLWFsbG93YW5jZS1mb3ItdGNwLWNsaWVudHMtaW50ZXJmYWNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNi1yZXN0b3JlLWFsbG93YW5jZS1mb3ItdGNwLWNsaWVudHMtaW50ZXJmYWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgyMWQxOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzU5NDM0YjldCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDU5NDM0Yjk4N2U4ZWI0MzZiMDhjMjRlNTU5ZWUwOTRjNGU5MzlkYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmFuIEh1bnQgPGVhY2hAaXNjLm9yZz4KLURhdGU6IEZyaSwgNSBBcHIgMjAxOSAxNjoyNjoxOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDYvNl0gcmVzdG9yZSBhbGxvd2FuY2UgZm9yIHRjcC1jbGllbnRzIDwgaW50ZXJmYWNlcwotCi1pbiB0aGUgInJlZmFjdG9yIHRjcHF1b3RhIGFuZCBwaXBlbGluZSByZWZzIiBjb21taXQsIHRoZSBjb3VudGluZwotb2YgYWN0aXZlIGludGVyZmFjZXMgd2FzIHRpZ2h0ZW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgbmFtZWQgY291bGQKLWZhaWwgdG8gbGlzdGVuIG9uIGFuIGludGVyZmFjZSBpZiB0aGVyZSB3ZXJlIG1vcmUgaW50ZXJmYWNlcyB0aGFuCi10Y3AtY2xpZW50cy4gd2hlbiBjaGVja2luZyB0aGUgcXVvdGEgdG8gc3RhcnQgYWNjZXB0aW5nIG9uIGFuCi1pbnRlcmZhY2UsIGlmIHRoZSBudW1iZXIgb2YgYWN0aXZlIGNsaWVudHMgd2FzIGFib3ZlIHplcm8sIHRoZW4KLWl0IHdhcyBwcmVzdW1lZCB0aGF0IHNvbWUgb3RoZXIgY2xpZW50IHdhcyBhYmxlIHRvIGhhbmRsZSBhY2NlcHRpbmcKLW5ldyBjb25uZWN0aW9ucy4gdGhpcywgaG93ZXZlciwgaWdub3JlZCB0aGUgZmFjdCB0aGF0IHRoZSBjdXJyZW50IGNsaWVudAotY291bGQgYmUgaW5jbHVkZWQgaW4gdGhhdCBjb3VudCwgc28gaWYgdGhlIHF1b3RhIHdhcyBhbHJlYWR5IGV4Y2VlZGVkCi1iZWZvcmUgYWxsIHRoZSBpbnRlcmZhY2VzIHdlcmUgbGlzdGVuaW5nLCBzb21lIGludGVyZmFjZXMgd291bGQgbmV2ZXIKLWxpc3Rlbi4KLQotd2Ugbm93IGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgY2xpZW50IGhhcyBiZWVuIG1hcmtlZCBhY3RpdmU7IGlmIHNvLAotdGhlbiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjbGllbnRzIG9uIHRoZSBpbnRlcmZhY2UgbXVzdCBiZSBncmVhdGVyCi10aGFuIDEsIG5vdCAwLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwYjRlMmNkNGMzMTkyYmE4ODU2OWRkMzQ0ZjU0MmE4Y2M0Mzc0MmI1KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZDAxMDIzYWFhYzM1NTQzZGFmZmJkZjQ4NDY0ZTMyMDE1MDIzNWQ0MSkKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgIHwgOCArKysrKy0tLQotIGRvYy9hcm0vQnY5QVJNLWJvb2sueG1sIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggZDgyNmFiMzJiZi4uODQ1MzI2YWJjMCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMzQ2NCw4ICszNDY0LDkgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKgotIAkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnRzIGFyZQotIAkJICogYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcyBpbnRlcmZhY2UgKHdoZXRoZXIKLS0JCSAqIGFjY2VwdGluZywgcmVhZGluZywgb3IgcHJvY2Vzc2luZykuIElmIHdlIGZpbmQgYXQgbGVhc3QKLS0JCSAqIG9uZSwgdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZSBjYW4gbGV0IHRoaXMKLSsJCSAqIGFjY2VwdGluZywgcmVhZGluZywgb3IgcHJvY2Vzc2luZykuIElmIHdlIGZpbmQgdGhhdCBhdAotKwkJICogbGVhc3Qgb25lIGNsaWVudCBvdGhlciB0aGFuIHRoaXMgb25lIGlzIGFjdGl2ZSwgdGhlbgotKwkJICogaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzCi0gCQkgKiBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIgd2lsbCB0YWtlIG92ZXIgd2hlbiBpdCdzCi0gCQkgKiBkb25lLgotIAkJICoKLUBAIC0zNDc5LDcgKzM0ODAsOCBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlciBvZiBsaXN0ZW5pbmcKLSAJCSAqIGludGVyZmFjZXMgcGx1cyAxLikKLSAJCSAqLwotLQkJZXhpdCA9IChpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAwKSA+IDApOwotKwkJZXhpdCA9IChpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAwKSA+Ci0rCQkJKGNsaWVudC0+dGNwYWN0aXZlID8gMSA6IDApKTsKLSAJCWlmIChleGl0KSB7Ci0gCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotIAkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLWRpZmYgLS1naXQgYS9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbCBiL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi1pbmRleCAzODE3NjhkNTQwLi45Yzc2ZDNjZDZmIDEwMDY0NAotLS0tIGEvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLSsrKyBiL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi1AQCAtODQ5Myw3ICs4NDkzLDggQEAgYXZvaWQtdjYtdWRwLXBvcnRzIHsgNDAwMDA7IHJhbmdlIDUwMDAwIDYwMDAwOyB9OwotIAkJPHBhcmE+Ci0gCQkgIFRoZSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyByZXNlcnZlZCBmb3IgVENQLCBzdGRpbywKLSAJCSAgZXRjLiAgVGhpcyBuZWVkcyB0byBiZSBiaWcgZW5vdWdoIHRvIGNvdmVyIHRoZSBudW1iZXIgb2YKLS0JCSAgaW50ZXJmYWNlcyA8Y29tbWFuZD5uYW1lZDwvY29tbWFuZD4gbGlzdGVucyBvbiwgPGNvbW1hbmQ+dGNwLWNsaWVudHM8L2NvbW1hbmQ+IGFzIHdlbGwgYXMKLSsJCSAgaW50ZXJmYWNlcyA8Y29tbWFuZD5uYW1lZDwvY29tbWFuZD4gbGlzdGVucyBvbiBwbHVzCi0rCQkgIDxjb21tYW5kPnRjcC1jbGllbnRzPC9jb21tYW5kPiwgYXMgd2VsbCBhcwotIAkJICB0byBwcm92aWRlIHJvb20gZm9yIG91dGdvaW5nIFRDUCBxdWVyaWVzIGFuZCBpbmNvbWluZyB6b25lCi0gCQkgIHRyYW5zZmVycy4gIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPjUxMjwvbGl0ZXJhbD4uCi0gCQkgIFRoZSBtaW5pbXVtIHZhbHVlIGlzIDxsaXRlcmFsPjEyODwvbGl0ZXJhbD4gYW5kIHRoZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDctUmVwbGFjZS1hdG9taWMtb3BlcmF0aW9ucy1pbi1iaW4tbmFtZWQtY2xpZW50LmMtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4NGVjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDctUmVwbGFjZS1hdG9taWMtb3BlcmF0aW9ucy1pbi1iaW4tbmFtZWQtY2xpZW50LmMtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi1CYWNrcG9ydCBjb21taXQgdG8gZml4IGNvbXBpbGUgZXJyb3Igb24gYXJtIGNhdXNlZCBieSBjb21taXRzIHdoaWNoIGFyZQotdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0L2VmNDk3ODBdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIGVmNDk3ODBkMzBkM2RkYzU3MzVjZmMzMjU2MWI2NzhhNjM0ZmE3MmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/T25kPUM1PTk5ZWo9MjBTdXI9QzM9QkQ/PSA8b25kcmVqQHN1cnkub3JnPgotRGF0ZTogV2VkLCAxNyBBcHIgMjAxOSAxNToyMjoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZXBsYWNlIGF0b21pYyBvcGVyYXRpb25zIGluIGJpbi9uYW1lZC9jbGllbnQuYyB3aXRoCi0gaXNjX3JlZmNvdW50IHJlZmVyZW5jZSBjb3VudGluZwotCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKystLS0tLS0tLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIHwgIDUgKysrLS0KLSBiaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgICAgICAgICAgICAgICB8ICA3ICsrKysrLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCA4NDUzMjZhYmMwLi4yOWZlY2FkY2E4IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC00MDIsMTIgKzQwMiwxMCBAQCB0Y3Bjb25uX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gc3RhdGljIHZvaWQKLSBtYXJrX3RjcF9hY3RpdmUobnNfY2xpZW50X3QgKmNsaWVudCwgYm9vbCBhY3RpdmUpIHsKLSAJaWYgKGFjdGl2ZSAmJiAhY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDEpOwotKwkJaXNjX3JlZmNvdW50X2luY3JlbWVudDAoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCBOVUxMKTsKLSAJCWNsaWVudC0+dGNwYWN0aXZlID0gYWN0aXZlOwotIAl9IGVsc2UgaWYgKCFhY3RpdmUgJiYgY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCXVpbnQzMl90IG9sZCA9Ci0tCQkJaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgLTEpOwotLQkJSU5TSVNUKG9sZCA+IDApOwotKwkJaXNjX3JlZmNvdW50X2RlY3JlbWVudCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIE5VTEwpOwotIAkJY2xpZW50LT50Y3BhY3RpdmUgPSBhY3RpdmU7Ci0gCX0KLSB9Ci1AQCAtNTU0LDcgKzU1Miw3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJgotIAkJICAgIGNsaWVudC0+bmV3c3RhdGUgIT0gTlNfQ0xJRU5UU1RBVEVfRlJFRUQgJiYKLSAJCSAgICAhbnNfZ19jbGllbnR0ZXN0ICYmCi0tCQkgICAgaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgMCkgPT0gMCkKLSsJCSAgICBpc2NfcmVmY291bnRfY3VycmVudCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcpID09IDApCi0gCQl7Ci0gCQkJLyogTm9ib2R5IGVsc2UgaXMgYWNjZXB0aW5nICovCi0gCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLUBAIC0zMzI4LDcgKzMzMjYsNiBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJbnNfY2xpZW50X3QgKmNsaWVudCA9IGV2ZW50LT5ldl9hcmc7Ci0gCWlzY19zb2NrZXRfbmV3Y29ubmV2X3QgKm5ldmVudCA9IChpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICopZXZlbnQ7Ci0tCXVpbnQzMl90IG9sZDsKLSAKLSAJUkVRVUlSRShldmVudC0+ZXZfdHlwZSA9PSBJU0NfU09DS0VWRU5UX05FV0NPTk4pOwotIAlSRVFVSVJFKE5TX0NMSUVOVF9WQUxJRChjbGllbnQpKTsKLUBAIC0zMzQ4LDggKzMzNDUsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMSk7Ci0gCWNsaWVudC0+bmFjY2VwdHMtLTsKLSAKLS0Jb2xkID0gaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgLTEpOwotLQlJTlNJU1Qob2xkID4gMCk7Ci0rCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCBOVUxMKTsKLSAKLSAJLyoKLSAJICogV2UgbXVzdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgbmV3IHNvY2tldCBiZWZvcmUgdGhlIGV4aXQKLUBAIC0zNDgwLDggKzM0NzYsOCBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlciBvZiBsaXN0ZW5pbmcKLSAJCSAqIGludGVyZmFjZXMgcGx1cyAxLikKLSAJCSAqLwotLQkJZXhpdCA9IChpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAwKSA+Ci0tCQkJKGNsaWVudC0+dGNwYWN0aXZlID8gMSA6IDApKTsKLSsJCWV4aXQgPSAoaXNjX3JlZmNvdW50X2N1cnJlbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKSA+Ci0rCQkJKGNsaWVudC0+dGNwYWN0aXZlID8gMVUgOiAwVSkpOwotIAkJaWYgKGV4aXQpIHsKLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0gCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotQEAgLTM1MzksNyArMzUzNSw3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zIGl0c2VsZiB0byBwcmV2ZW50IHRoZSBpbnRlcmZhY2UKLSAJICogZ29pbmcgZGVhZC4KLSAJICovCi0tCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDEpOwotKwlpc2NfcmVmY291bnRfaW5jcmVtZW50MCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIE5VTEwpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLWluZGV4IDM1MzVlZjIyYTguLjZlMTBmMjEwZmQgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLUBAIC00NSw2ICs0NSw3IEBACi0gI2luY2x1ZGUgPGlzYy9tYWdpYy5oPgotICNpbmNsdWRlIDxpc2MvbWVtLmg+Ci0gI2luY2x1ZGUgPGlzYy9zb2NrZXQuaD4KLSsjaW5jbHVkZSA8aXNjL3JlZmNvdW50Lmg+Ci0gCi0gI2luY2x1ZGUgPGRucy9yZXN1bHQuaD4KLSAKLUBAIC03NSwxMSArNzYsMTEgQEAgc3RydWN0IG5zX2ludGVyZmFjZSB7Ci0gCQkJCQkJLyolPCBVRFAgZGlzcGF0Y2hlcnMuICovCi0gCWlzY19zb2NrZXRfdCAqCQl0Y3Bzb2NrZXQ7CS8qJTwgVENQIHNvY2tldC4gKi8KLSAJaXNjX2RzY3BfdAkJZHNjcDsJCS8qJTwgImxpc3Rlbi1vbiIgRFNDUCB2YWx1ZSAqLwotLQlpbnQzMl90CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwlpc2NfcmVmY291bnRfdAkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotIAkJCQkJCSAgICAgcmVhZHkgdG8gYWNjZXB0IG5ldwotIAkJCQkJCSAgICAgVENQIGNvbm5lY3Rpb25zIG9uIHRoaXMKLSAJCQkJCQkgICAgIGludGVyZmFjZSAqLwotLQlpbnQzMl90CQkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwlpc2NfcmVmY291bnRfdAkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotIAkJCQkJCSAgICAgc2VydmljaW5nIFRDUCBxdWVyaWVzCi0gCQkJCQkJICAgICAod2hldGhlciBhY2NlcHRpbmcgb3IKLSAJCQkJCQkgICAgIGNvbm5lY3RlZCkgKi8KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLWluZGV4IGQ5ZjZkZjU4MDIuLjEzNTUzM2JlNmIgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLSsrKyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotQEAgLTM4Niw4ICszODYsOCBAQCBuc19pbnRlcmZhY2VfY3JlYXRlKG5zX2ludGVyZmFjZW1ncl90ICptZ3IsIGlzY19zb2NrYWRkcl90ICphZGRyLAotIAkgKiBjb25uZWN0aW9ucyB3aWxsIGJlIGhhbmRsZWQgaW4gcGFyYWxsZWwgZXZlbiB0aG91Z2ggdGhlcmUgaXMKLSAJICogb25seSBvbmUgY2xpZW50IGluaXRpYWxseS4KLSAJICovCi0tCWlmcC0+bnRjcGFjY2VwdGluZyA9IDA7Ci0tCWlmcC0+bnRjcGFjdGl2ZSA9IDA7Ci0rCWlzY19yZWZjb3VudF9pbml0KCZpZnAtPm50Y3BhY2NlcHRpbmcsIDApOwotKwlpc2NfcmVmY291bnRfaW5pdCgmaWZwLT5udGNwYWN0aXZlLCAwKTsKLSAKLSAJaWZwLT5udWRwZGlzcGF0Y2ggPSAwOwotIAotQEAgLTYxOCw2ICs2MTgsOSBAQCBuc19pbnRlcmZhY2VfZGVzdHJveShuc19pbnRlcmZhY2VfdCAqaWZwKSB7Ci0gCi0gCW5zX2ludGVyZmFjZW1ncl9kZXRhY2goJmlmcC0+bWdyKTsKLSAKLSsJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJmlmcC0+bnRjcGFjdGl2ZSk7Ci0rCWlzY19yZWZjb3VudF9kZXN0cm95KCZpZnAtPm50Y3BhY2NlcHRpbmcpOwotKwotIAlpZnAtPm1hZ2ljID0gMDsKLSAJaXNjX21lbV9wdXQobWN0eCwgaWZwLCBzaXplb2YoKmlmcCkpOwotIH0KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaAppbmRleCAzN2UyMTBlLi44NDU1OWU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5NDczZDI5ODQzNTc5ODAyZTk2YjAyOTNhM2U5NTNmZWQ5M2RlODJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlZGRhMjBmYjVhNmU4ODU0OGY4NWUzOWQzNGQ2YzA3NDMwNmUxNWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDkgSnVuIDIwMTUgMTE6MjI6MDAgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gYmluZDogZW5zdXJlIHNlYXJjaGluZyBmb3IganNvbiBoZWFkZXJzIHNlYXJjaGVzIHN5c3Jvb3QKQEAgLTI3LDE1ICsyNywxNiBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBiaW5kLTkuMTEuMy9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiaW5kLTkuMTEuMy5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGJpbmQtOS4xMS4zL2NvbmZpZ3VyZS5pbgotQEAgLTI1NzQsNyArMjU3NCw3IEBAIGNhc2UgIiR1c2VfbGlianNvbiIgaW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDE3MzkyZmQuLmU4NWE1YzYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI0NDksNyArMjQ0OSw3IEBAIGNhc2UgIiR1c2VfbGlianNvbiIgaW4KICAJCWxpYmpzb25fbGlicz0iIgogIAkJOzsKICAJYXV0b3x5ZXMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2NDE3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS4xMy5iYgpAQCAtMCwwICsxLDE0MSBAQAorU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiSVNDICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04ZjE3ZjY0ZTQ3ZTgzYjYwY2Q5MjBhMWU0YjU0NDE5ZSIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCB6bGliIgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmFtZWQtbHdyZXNkLVYtYW5kLXN0YXJ0LWxvZy1oaWRlLWJ1aWxkLW9wdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTdkZTBkMDI0YWIxZWFjMzc3ZjFjMjg1NGRjMjUwNTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQzZjNjYzlmY2ZjZGFhNzUyZGIzNWViMjQ1OThhZmExZmRjYzI1MDlkMzIyN2ZjOTBhODYzMWI3YjQwMGY3ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKKyMgc3RheSBhdCA5LjExIHVudGlsIDkuMTYsIGZyb20gOS4xNiBmb2xsb3cgdGhlIEVTViB2ZXJzaW9ucyBkaXZpc2libGUgYnkgNAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OS4oMTF8MTZ8MjB8MjR8MjgpKFwuXGQrKSsoLVBcZCspKikvIgorCisjIEJJTkQgPj0gOS4xMS4yIG5lZWQgZGhjcGQgPj0gNC40LjAsCisjIGRvbid0IHJlcG9ydCBpdCBoZXJlIHNpbmNlIGRoY3BkIGlzIGFscmVhZHkgcmVjZW50IGVub3VnaC4KK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTY0NzAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0IG11bHRpbGliX2hlYWRlcgorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9iaW5kOS1jb25maWcgJHtQTn06JHtiaW5kaXJ9L2lzYy1jb25maWcuc2giCisKKyMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbj15ZXMgLS13aXRoLXB5dGhvbi1pbnN0YWxsLWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAsIC0td2l0aG91dC1weXRob24sIHB5dGhvbjMtcGx5LW5hdGl2ZSwiCisKK0VOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKK0VYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIC0td2l0aC1lZGRzYT1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sbWRiPW5vIFwKKyAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAorICAgICAgICAgICAgICAgIgorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZSBkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9CisKKyMgZGhjcCBuZWVkcyAubGEgc28ga2VlcCB0aGVtCitSRU1PVkVfTElCVE9PTF9MQSA9ICIwIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKKworSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAorCSMgYnkgIm1ha2UgaW5zdGFsbCI6CisJIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCisJc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKworCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKwlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCisJaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWtleW1ncgorCWZpCisKKwkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgorCWZpCisKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgaXNjL3BsYXRmb3JtLmgKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKKwkiCisKK0FMVEVSTkFUSVZFXyR7UE59LXV0aWxzID0gIm5zbG9va3VwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW25zbG9va3VwXSA9ICIke2JpbmRpcn0vbnNsb29rdXAiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWcgJHtiaW5kaXJ9L21kaWcgJHtiaW5kaXJ9L25zbG9va3VwICR7YmluZGlyfS9uc3VwZGF0ZSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKK0ZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tbGlicyIKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9Lyouc28qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vKi5sYSIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1iaW5kJywgJycsIGQpfSIKK0ZJTEVTX3B5dGhvbjMtYmluZCA9ICIke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzIFwKKyAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSREVQRU5EU19weXRob24zLWJpbmQgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtcGx5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg5NzcwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi1TVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJJU0MgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PThmMTdmNjRlNDdlODNiNjBjZDkyMGExZTRiNTQ0MTllIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIHpsaWIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25hbWVkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYmluZDkgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAotICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdC5kLWFkZC1zdXBwb3J0LWZvci1yZWFkLW9ubHktcm9vdGZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYW1lZC1sd3Jlc2QtVi1hbmQtc3RhcnQtbG9nLWhpZGUtYnVpbGQtb3B0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXN0YXJ0LWZhaWx1cmUtd2l0aC1iaW5kLXVzZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iaW5kLWZpeC1DVkUtMjAxOS02NDcxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdGNwLWNsaWVudHMtY291bGQtc3RpbGwtYmUtZXhjZWVkZWQtdjIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWJldHRlci10Y3BxdW90YS1hY2NvdW50aW5nLWFuZC1jbGllbnQtbW9ydGFsaXR5LWNoZWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1SZXBsYWNlLWF0b21pYy1vcGVyYXRpb25zLWluLWJpbi1uYW1lZC1jbGllbnQuYy13aXRoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhkZGFiNGI2MWZhNDUxNmZlNDA0Njc5Yzc0ZTM3OTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOGMwODE5MmJjYmFlYjZlOWYyMzkxYTcwZTY3NTgzYjAyN2I5MGU4YzRiYzE2MDVkYTZlYjEyNmVkZGU0MzQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCi0jIHN0YXkgYXQgOS4xMSB1bnRpbCA5LjE2LCBmcm9tIDkuMTYgZm9sbG93IHRoZSBFU1YgdmVyc2lvbnMgZGl2aXNpYmxlIGJ5IDQKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkuKDExfDE2fDIwfDI0fDI4KShcLlxkKykrKC1QXGQrKSopLyIKLQotIyBCSU5EID49IDkuMTEuMiBuZWVkIGRoY3BkID49IDQuNC4wLAotIyBkb24ndCByZXBvcnQgaXQgaGVyZSBzaW5jZSBkaGNwZCBpcyBhbHJlYWR5IHJlY2VudCBlbm91Z2guCi1DVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS02NDcwIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIG11bHRpbGliX3NjcmlwdAotCi1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9iaW5kOS1jb25maWcgJHtQTn06JHtiaW5kaXJ9L2lzYy1jb25maWcuc2giCi0KLSMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCi1QQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbj15ZXMgLS13aXRoLXB5dGhvbi1pbnN0YWxsLWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAsIC0td2l0aG91dC1weXRob24sIHB5dGhvbjMtcGx5LW5hdGl2ZSwiCi0KLUVOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKLUVYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIC0td2l0aC1lZGRzYT1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1sbWRiPW5vIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIgotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uM25hdGl2ZSBkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9Ci0KLSMgZGhjcCBuZWVkcyAubGEgc28ga2VlcCB0aGVtCi1SRU1PVkVfTElCVE9PTF9MQSA9ICIwIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYmluZCIKLQotSU5JVFNDUklQVF9OQU1FID0gImJpbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5hbWVkLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIGNsZWFuIGhvc3QgcGF0aCBpbiBpc2MtY29uZmlnLnNoIGJlZm9yZSB0aGUgaGFyZGxpbmsgY3JlYXRlZAotCSMgYnkgIm1ha2UgaW5zdGFsbCI6Ci0JIyAgIGJpbmQ5LWNvbmZpZyAtPiBpc2MtY29uZmlnLnNoCi0Jc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSwiICR7Qn0vaXNjLWNvbmZpZy5zaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQotCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0Jcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCi0JaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCi0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyBcCi0JCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSBcCi0JCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzIFwKLQkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWtleW1ncgotCWZpCi0KLQkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgotCWZpCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCi0JIgotCi1BTFRFUk5BVElWRV8ke1BOfS11dGlscyA9ICJuc2xvb2t1cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtuc2xvb2t1cF0gPSAiJHtiaW5kaXJ9L25zbG9va3VwIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnICR7YmluZGlyfS9tZGlnICR7YmluZGlyfS9uc2xvb2t1cCAke2JpbmRpcn0vbnN1cGRhdGUiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCi1GSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyoubGEiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtYmluZCcsICcnLCBkKX0iCi1GSUxFU19weXRob24zLWJpbmQgPSAiJHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCi0gICAgICAgICAgICAgICAgJHtzYmluZGlyfS9kbnNzZWMta2V5bWdyICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUkRFUEVORFNfcHl0aG9uMy1iaW5kID0gInB5dGhvbjMtY29yZSBweXRob24zLXBseSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwppbmRleCA0ODQ1MDkzLi4xNTBkOTA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCkBAIC00NiwyMCArNDYsMTMgQEAKIFBBQ0tBR0VDT05GSUdbYnRwY2xpZW50XSA9ICItLWVuYWJsZS1idHBjbGllbnQsLS1kaXNhYmxlLWJ0cGNsaWVudCwgZWxsIgogUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCiAKLVNSQ19VUkkgPSAiXAotICAgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL291dC1vZi10cmVlLnBhdGNoIFwKLSAgICBmaWxlOi8vaW5pdCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKLSAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS10ZXN0LWdhdHQtRml4LWh1bmctaXNzdWUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUZpeC1hLXJhY2UtaXNzdWUtZm9yLXRvb2xzLnBhdGNoIFwKLSAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA5MTAucGF0Y2ggXAotICAgIGZpbGU6Ly9nY2M5LWZpeGVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdG9vbHMtYnRwY2xpZW50LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaCBcCi0iCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvYmx1ZXRvb3RoL2JsdWV6LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnZmlsZTovLzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCcsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LWdhdHQtRml4LWh1bmctaXNzdWUucGF0Y2ggXAorICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vYmx1ZXotJHtQVn0iCiAKIENWRV9QUk9EVUNUID0gImJsdWV6IgpAQCAtNzAsNiArNjMsNyBAQAogICAtLWVuYWJsZS10ZXN0IFwKICAgLS1lbmFibGUtZGF0YWZpbGVzIFwKICAgLS1lbmFibGUtbGlicmFyeSBcCisgIC0td2l0aG91dC16c2gtY29tcGxldGlvbi1kaXIgXAogIgogCiAjIGJsdWV6NSBidWlsZHMgYSBsYXJnZSBudW1iZXIgb2YgdXNlZnVsIHV0aWxpdGllcyBidXQgZG9lcyBub3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaAppbmRleCBkYTcxNDA5Li42MThlZDczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5OWNjZGJlMTU1MDI4YzRjNzg5ODAzYTQyOTA3MjY3NWI4N2QwYzNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmNzRlYjk3YzlmYjNjMGVlMjg5NTc0MmU3NzNhYzZhM2M0MWM5OTljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogR2lvdmFubmkgQ2FtcGFnbmEgPGdjYW1wYWduYS1jTlVkbFJvdEZNbk5MeGpUZW5MZXR3QHB1YmxpYy5nbWFuZS5vcmc+CiBEYXRlOiBTYXQsIDEyIE9jdCAyMDEzIDE3OjQ1OjI1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IHVzaW5nIG9iZXhkIHdpdGhvdXQgc3lzdGVtZCBpbiB0aGUgdXNlciBzZXNzaW9uCkBAIC0xNywyMiArMTcsMjIgQEAKIFNpZ25lZC1vZmYtYnk6IEphdmllciBWaWd1ZXJhIDxqYXZpZXIudmlndWVyYUBkaWdpLmNvbT4KIAogLS0tCi0gTWFrZWZpbGUub2JleGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gb2JleGQvc3JjL3tvcmcuYmx1ZXoub2JleC5zZXJ2aWNlID0+IG9yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW59IHwgMiArLQorIE1ha2VmaWxlLm9iZXhkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyAuLi4vc3JjL3tvcmcuYmx1ZXoub2JleC5zZXJ2aWNlID0+IG9yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW59IHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogIHJlbmFtZSBvYmV4ZC9zcmMve29yZy5ibHVlei5vYmV4LnNlcnZpY2UgPT4gb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbn0gKDc2JSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9iZXhkIGIvTWFrZWZpbGUub2JleGQKLWluZGV4IGM0NjI2OTIuLjAzMjVmNjYgMTAwNjQ0CitpbmRleCBkZTU5ZDI5Li43MzAwNGEzIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUub2JleGQKICsrKyBiL01ha2VmaWxlLm9iZXhkCiBAQCAtMSwxMiArMSwxMiBAQAogIGlmIFNZU1RFTUQKLSBzeXN0ZW1kdXNlcnVuaXRkaXIgPSBAU1lTVEVNRF9VU0VSVU5JVERJUkAKKyBzeXN0ZW1kdXNlcnVuaXRkaXIgPSAkKFNZU1RFTURfVVNFUlVOSVRESVIpCiAgc3lzdGVtZHVzZXJ1bml0X0RBVEEgPSBvYmV4ZC9zcmMvb2JleC5zZXJ2aWNlCiArZW5kaWYKICAKLSBkYnVzc2Vzc2lvbmJ1c2RpciA9IEBEQlVTX1NFU1NJT05CVVNESVJACisgZGJ1c3Nlc3Npb25idXNkaXIgPSAkKERCVVNfU0VTU0lPTkJVU0RJUikKICBkYnVzc2Vzc2lvbmJ1c19EQVRBID0gb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKIC1lbmRpZgogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Y2I5NzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMTE3YzQxMjQyYzAxZTA1NzI5NWFlZDgwZWQ5NzNjNmRjN2UzNWZlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDggT2N0IDIwMTkgMTE6MDE6NTYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCBCbHVlWl0gTWFrZWZpbGUuYW06IGFkZCBtaXNzaW5nIG1rZGlyIGluIHJ1bGVzIGdlbmVyYXRpb24KLQotSW4gcGFyYWxsZWwgb3V0LW9mLXRyZWUgYnVpbGRzIGl0J3MgcG9zc2libGUgdGhhdCB0b29scy8qLnJ1bGVzIGFyZQotZ2VuZXJhdGVkIGJlZm9yZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBoYXMgYmVlbiBpbXBsaWNpdGx5IGNyZWF0ZWQuIFNvbHZlIHRoaXMgYnkKLWNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgYmVmb3JlIHdyaXRpbmcgaW50byBpdC4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyYWMyOGIyM2QuLmU3YmNkMjM2NiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTU4OSw2ICs1ODksNyBAQCBzcmMvYnVpbHRpbi5oOiBzcmMvZ2VuYnVpbHRpbiAkKGJ1aWx0aW5fc291cmNlcykKLSAJJChBTV9WX0dFTikkKHNyY2Rpcikvc3JjL2dlbmJ1aWx0aW4gJChidWlsdGluX21vZHVsZXMpID4gJEAKLSAKLSB0b29scy8lLnJ1bGVzOgotKwkkKEFNX1ZfYXQpJChNS0RJUl9QKSB0b29scwotIAkkKEFNX1ZfR0VOKWNwICQoc3JjZGlyKS8kKHN1YnN0IDk3LSwsJEApICRACi0gCi0gJChsaWJfbGliYmx1ZXRvb3RoX2xhX09CSkVDVFMpOiAkKGxvY2FsX2hlYWRlcnMpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNhMjBhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSBmMzZmNzFmNjBiMWU2OGMwZjEyZTYxNWI5YjEyOGQwODllYzNkZDE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRlc3MubmV0PgotRGF0ZTogRnJpLCA3IEp1biAyMDE5IDA5OjUxOjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzOiBGaXggYnVpbGQgYWZ0ZXIgeTIwMzggY2hhbmdlcyBpbiBnbGliYwotCi1UaGUgMzItYml0IFNJT0NHU1RBTVAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHRoZSBkZXByZWNhdGVkIG5hbWUKLXRvIGZpeCB0aGUgYnVpbGQuCi0KLVVwc3RyZWFtLVN0YXR1czogYmFja3BvcnQgY29tbWl0IGYzNmY3MWY2MGIxZTY4YzBmMTJlNjE1YjliMTI4ZDA4OWVjM2RkMTkKLQotU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4KLQotLS0tCi0gdG9vbHMvbDJ0ZXN0LmMgfCA2ICsrKysrLQotIHRvb2xzL3JjdGVzdC5jIHwgNiArKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9sMnRlc3QuYyBiL3Rvb2xzL2wydGVzdC5jCi1pbmRleCBlNzU1YWM4ODEuLmU3ODdjMmNlMiAxMDA2NDQKLS0tLSBhL3Rvb2xzL2wydGVzdC5jCi0rKysgYi90b29scy9sMnRlc3QuYwotQEAgLTU1LDYgKzU1LDEwIEBACi0gI2RlZmluZSBCUkVEUl9ERUZBVUxUX1BTTQkweDEwMTEKLSAjZGVmaW5lIExFX0RFRkFVTFRfUFNNCQkweDAwODAKLSAKLSsjaWZuZGVmIFNJT0NHU1RBTVBfT0xECi0rI2RlZmluZSBTSU9DR1NUQU1QX09MRCBTSU9DR1NUQU1QCi0rI2VuZGlmCi0rCi0gLyogVGVzdCBtb2RlcyAqLwotIGVudW0gewotIAlTRU5ELAotQEAgLTkwNyw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCByZWN2X21vZGUoaW50IHNrKQotIAkJCWlmICh0aW1lc3RhbXApIHsKLSAJCQkJc3RydWN0IHRpbWV2YWwgdHY7Ci0gCi0tCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUCwgJnR2KSA8IDApIHsKLSsJCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QX09MRCwgJnR2KSA8IDApIHsKLSAJCQkJCXRpbWVzdGFtcCA9IDA7Ci0gCQkJCQltZW1zZXQodHMsIDAsIHNpemVvZih0cykpOwotIAkJCQl9IGVsc2UgewotZGlmZiAtLWdpdCBhL3Rvb2xzL3JjdGVzdC5jIGIvdG9vbHMvcmN0ZXN0LmMKLWluZGV4IDk0NDkwZjQ2Mi4uYmM4ZWQ4NzVkIDEwMDY0NAotLS0tIGEvdG9vbHMvcmN0ZXN0LmMKLSsrKyBiL3Rvb2xzL3JjdGVzdC5jCi1AQCAtNTAsNiArNTAsMTAgQEAKLSAKLSAjaW5jbHVkZSAic3JjL3NoYXJlZC91dGlsLmgiCi0gCi0rI2lmbmRlZiBTSU9DR1NUQU1QX09MRAotKyNkZWZpbmUgU0lPQ0dTVEFNUF9PTEQgU0lPQ0dTVEFNUAotKyNlbmRpZgotKwotIC8qIFRlc3QgbW9kZXMgKi8KLSBlbnVtIHsKLSAJU0VORCwKLUBAIC01MDUsNyArNTA5LDcgQEAgc3RhdGljIHZvaWQgcmVjdl9tb2RlKGludCBzaykKLSAJCQlpZiAodGltZXN0YW1wKSB7Ci0gCQkJCXN0cnVjdCB0aW1ldmFsIHR2OwotIAotLQkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVAsICZ0dikgPCAwKSB7Ci0rCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUF9PTEQsICZ0dikgPCAwKSB7Ci0gCQkJCQl0aW1lc3RhbXAgPSAwOwotIAkJCQkJbWVtc2V0KHRzLCAwLCBzaXplb2YodHMpKTsKLSAJCQkJfSBlbHNlIHsKLS0tIAotMi4xOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtYnRwY2xpZW50LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtYnRwY2xpZW50LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIwYWFhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDBiMTc2NjUxNGY2ODQ3YzczNjdmY2UwN2YxOWE3NTBlYzc0YzExYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjYgU2VwIDIwMTkgMTY6MTk6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9vbHMvYnRwY2xpZW50LmM6IGluY2x1ZGUgc2lnbmFsLmgKLQotRml4IGNvbXBpbGUgZmFpbHVyZSB3aGVuIGNvbmZpZ3VyZSAtLWVuYWJsZS1idHBjbGllbnQ6Ci1idHBjbGllbnQuYzoyODM0Ojc6IGVycm9yOiAnU0lHSU5UJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbQSBzdWJzZXQgb2YgdGhlIGZ1bGwgZml4IHRoYXQgd2VudCB1cHN0cmVhbV0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0b29scy9idHBjbGllbnQuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvYnRwY2xpZW50LmMgYi90b29scy9idHBjbGllbnQuYwotaW5kZXggYjIxN2RmNS4uYWVjZTdmZSAxMDA2NDQKLS0tLSBhL3Rvb2xzL2J0cGNsaWVudC5jCi0rKysgYi90b29scy9idHBjbGllbnQuYwotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gCi0gI2luY2x1ZGUgPGVsbC9lbGwuaD4KLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQ1ZFLTIwMTgtMTA5MTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9DVkUtMjAxOC0xMDkxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE3ODA3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9DVkUtMjAxOC0xMDkxMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwNSArMCwwIEBACi1Gcm9tIDk3NzMyMWYyYzdmOTc0ZWE2OGEzZDkwZGYyOTZjNjYxODlhM2YyNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBGcmksIDIxIEp1biAyMDE5IDE3OjU3OjM1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE4LTEwOTEwCi0KLUEgYnVnIGluIEJsdWV6IG1heSBhbGxvdyBmb3IgdGhlIEJsdWV0b290aCBEaXNjb3ZlcmFibGUgc3RhdGUgYmVpbmcgc2V0IHRvIG9uCi13aGVuIG5vIEJsdWV0b290aCBhZ2VudCBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN5c3RlbS4gVGhpcyBzaXR1YXRpb24gY291bGQKLWxlYWQgdG8gdGhlIHVuYXV0aG9yaXplZCBwYWlyaW5nIG9mIGNlcnRhaW4gQmx1ZXRvb3RoIGRldmljZXMgd2l0aG91dCBhbnkKLWZvcm0gb2YgYXV0aGVudGljYXRpb24uCi0KLUNWRTogQ1ZFLTIwMTgtMTA5MTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLVN1YmplY3Q6ICAgIFtQQVRDSCBCbHVlWiAxLzRdIGNsaWVudDogQWRkIGRpc2NvdmVyYWJsZS10aW1lb3V0IGNvbW1hbmQKLUZyb206ICAgICAgIEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXouZGVudHogKCkgZ21haWwgISBjb20+Ci1EYXRlOiAgICAgICAyMDE4LTA3LTI1IDEwOjIwOjMyCi1NZXNzYWdlLUlEOiAyMDE4MDcyNTEwMjAzNS4xOTQzOS0xLWx1aXouZGVudHogKCkgZ21haWwgISBjb20KLVtEb3dubG9hZCBSQVcgbWVzc2FnZSBvciBib2R5XQotCi1Gcm9tOiBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LnZvbi5kZW50ekBpbnRlbC5jb20+Ci0KLVRoaXMgYWRkcyBkaXNjb3ZlcmFibGUtdGltZW91dCBjb21tYW5kIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGdldC9zZXQKLURpc2NvdmVyYWJsZVRpbWVvdXQgcHJvcGVydHk6Ci0KLVtibHVldG9vdGhdIyBkaXNjb3ZlcmFibGUtdGltZW91dCAxODAKLUNoYW5naW5nIGRpc2NvdmVyYWJsZS10aW1lb3V0IDE4MCBzdWNjZWVkZWQKLS0tLQotIGNsaWVudC9tYWluLmMgICAgICAgfCAgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGRvYy9hZGFwdGVyLWFwaS50eHQgfCAgIDYgKysrCi0gc3JjL2FkYXB0ZXIuYyAgICAgICB8IDEyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvbWFpbi5jIGIvY2xpZW50L21haW4uYwotaW5kZXggODczMjNkOC4uMWE2NmEzYSAxMDA2NDQKLS0tLSBhL2NsaWVudC9tYWluLmMKLSsrKyBiL2NsaWVudC9tYWluLmMKLUBAIC04NzcsNiArODc3LDcgQEAgc3RhdGljIHZvaWQgY21kX3Nob3coaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJDbGFzcyIpOwotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIlBvd2VyZWQiKTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJEaXNjb3ZlcmFibGUiKTsKLSsJcHJpbnRfcHJvcGVydHkocHJveHksICJEaXNjb3ZlcmFibGVUaW1lb3V0Iik7Ci0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiUGFpcmFibGUiKTsKLSAJcHJpbnRfdXVpZHMocHJveHkpOwotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIk1vZGFsaWFzIik7Ci1AQCAtMTA2MSw2ICsxMDYyLDQ3IEBAIHN0YXRpYyB2b2lkIGNtZF9kaXNjb3ZlcmFibGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgY21kX2Rpc2NvdmVyYWJsZV90aW1lb3V0KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKwl1aW50MzJfdCB2YWx1ZTsKLSsJY2hhciAqZW5kcHRyID0gTlVMTDsKLSsJY2hhciAqc3RyOwotKwotKwlpZiAoYXJnYyA8IDIpIHsKLSsJCURCdXNNZXNzYWdlSXRlciBpdGVyOwotKwotKwkJaWYgKCFnX2RidXNfcHJveHlfZ2V0X3Byb3BlcnR5KGRlZmF1bHRfY3RybC0+cHJveHksCi0rCQkJCQkiRGlzY292ZXJhYmxlVGltZW91dCIsICZpdGVyKSkgewotKwkJCWJ0X3NoZWxsX3ByaW50ZigiVW5hYmxlIHRvIGdldCBEaXNjb3ZlcmFibGVUaW1lb3V0XG4iKTsKLSsJCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotKwkJfQotKwotKwkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZpdGVyLCAmdmFsdWUpOwotKwotKwkJYnRfc2hlbGxfcHJpbnRmKCJEaXNjb3ZlcmFibGVUaW1lb3V0OiAlZCBzZWNvbmRzXG4iLCB2YWx1ZSk7Ci0rCi0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJdmFsdWUgPSBzdHJ0b2woYXJndlsxXSwgJmVuZHB0ciwgMCk7Ci0rCWlmICghZW5kcHRyIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCB2YWx1ZSA+IFVJTlQzMl9NQVgpIHsKLSsJCWJ0X3NoZWxsX3ByaW50ZigiSW52YWxpZCBhcmd1bWVudFxuIik7Ci0rCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rCXN0ciA9IGdfc3RyZHVwX3ByaW50ZigiZGlzY292ZXJhYmxlLXRpbWVvdXQgJWQiLCB2YWx1ZSk7Ci0rCi0rCWlmIChnX2RidXNfcHJveHlfc2V0X3Byb3BlcnR5X2Jhc2ljKGRlZmF1bHRfY3RybC0+cHJveHksCi0rCQkJCQkiRGlzY292ZXJhYmxlVGltZW91dCIsCi0rCQkJCQlEQlVTX1RZUEVfVUlOVDMyLCAmdmFsdWUsCi0rCQkJCQlnZW5lcmljX2NhbGxiYWNrLCBzdHIsIGdfZnJlZSkpCi0rCQlyZXR1cm47Ci0rCi0rCWdfZnJlZShzdHIpOwotKwotKwlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotK30KLSsKLSBzdGF0aWMgdm9pZCBjbWRfYWdlbnQoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gCWRidXNfYm9vbF90IGVuYWJsZTsKLUBAIC0xMTI0LDYgKzExNjYsNyBAQCBzdGF0aWMgc3RydWN0IHNldF9kaXNjb3ZlcnlfZmlsdGVyX2FyZ3MgewotIAljaGFyICoqdXVpZHM7Ci0gCXNpemVfdCB1dWlkc19sZW47Ci0gCWRidXNfYm9vbF90IGR1cGxpY2F0ZTsKLSsJZGJ1c19ib29sX3QgZGlzY292ZXJhYmxlOwotIAlib29sIHNldDsKLSB9IGZpbHRlciA9IHsKLSAJLnJzc2kgPSBESVNUQU5DRV9WQUxfSU5WQUxJRCwKLUBAIC0xMTYzLDYgKzEyMDYsMTEgQEAgc3RhdGljIHZvaWQgc2V0X2Rpc2NvdmVyeV9maWx0ZXJfc2V0dXAoREJ1c01lc3NhZ2VJdGVyICppdGVyLCB2b2lkICp1c2VyX2RhdGEpCi0gCQkJCQkJREJVU19UWVBFX0JPT0xFQU4sCi0gCQkJCQkJJmFyZ3MtPmR1cGxpY2F0ZSk7Ci0gCi0rCWlmIChhcmdzLT5kaXNjb3ZlcmFibGUpCi0rCQlnX2RidXNfZGljdF9hcHBlbmRfZW50cnkoJmRpY3QsICJEaXNjb3ZlcmFibGUiLAotKwkJCQkJCURCVVNfVFlQRV9CT09MRUFOLAotKwkJCQkJCSZhcmdzLT5kaXNjb3ZlcmFibGUpOwotKwotIAlkYnVzX21lc3NhZ2VfaXRlcl9jbG9zZV9jb250YWluZXIoaXRlciwgJmRpY3QpOwotIH0KLSAKLUBAIC0xMzIwLDYgKzEzNjgsMjYgQEAgc3RhdGljIHZvaWQgY21kX3NjYW5fZmlsdGVyX2R1cGxpY2F0ZV9kYXRhKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCWZpbHRlci5zZXQgPSBmYWxzZTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgY21kX3NjYW5fZmlsdGVyX2Rpc2NvdmVyYWJsZShpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsJaWYgKGFyZ2MgPCAyIHx8ICFzdHJsZW4oYXJndlsxXSkpIHsKLSsJCWJ0X3NoZWxsX3ByaW50ZigiRGlzY292ZXJhYmxlOiAlc1xuIiwKLSsJCQkJZmlsdGVyLmRpc2NvdmVyYWJsZSA/ICJvbiIgOiAib2ZmIik7Ci0rCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX1NVQ0NFU1MpOwotKwl9Ci0rCi0rCWlmICghc3RyY21wKGFyZ3ZbMV0sICJvbiIpKQotKwkJZmlsdGVyLmRpc2NvdmVyYWJsZSA9IHRydWU7Ci0rCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgIm9mZiIpKQotKwkJZmlsdGVyLmRpc2NvdmVyYWJsZSA9IGZhbHNlOwotKwllbHNlIHsKLSsJCWJ0X3NoZWxsX3ByaW50ZigiSW52YWxpZCBvcHRpb246ICVzXG4iLCBhcmd2WzFdKTsKLSsJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsKLSsJZmlsdGVyLnNldCA9IGZhbHNlOwotK30KLSsKLSBzdGF0aWMgdm9pZCBmaWx0ZXJfY2xlYXJfdXVpZHModm9pZCkKLSB7Ci0gCWdfc3RyZnJlZXYoZmlsdGVyLnV1aWRzKTsKLUBAIC0xMzQ4LDYgKzE0MTYsMTEgQEAgc3RhdGljIHZvaWQgZmlsdGVyX2NsZWFyX2R1cGxpY2F0ZSh2b2lkKQotIAlmaWx0ZXIuZHVwbGljYXRlID0gZmFsc2U7Ci0gfQotIAotK3N0YXRpYyB2b2lkIGZpbHRlcl9jbGVhcl9kaXNjb3ZlcmFibGUodm9pZCkKLSt7Ci0rCWZpbHRlci5kaXNjb3ZlcmFibGUgPSBmYWxzZTsKLSt9Ci0rCi0gc3RydWN0IGNsZWFyX2VudHJ5IHsKLSAJY29uc3QgY2hhciAqbmFtZTsKLSAJdm9pZCAoKmNsZWFyKSAodm9pZCk7Ci1AQCAtMTM1OSw2ICsxNDMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGVhcl9lbnRyeSBmaWx0ZXJfY2xlYXJbXSA9IHsKLSAJeyAicGF0aGxvc3MiLCBmaWx0ZXJfY2xlYXJfcGF0aGxvc3MgfSwKLSAJeyAidHJhbnNwb3J0IiwgZmlsdGVyX2NsZWFyX3RyYW5zcG9ydCB9LAotIAl7ICJkdXBsaWNhdGUtZGF0YSIsIGZpbHRlcl9jbGVhcl9kdXBsaWNhdGUgfSwKLSsJeyAiZGlzY292ZXJhYmxlIiwgZmlsdGVyX2NsZWFyX2Rpc2NvdmVyYWJsZSB9LAotIAl7fQotIH07Ci0gCi1AQCAtMjQ2OCw3ICsyNTQyLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRfc2hlbGxfbWVudSBzY2FuX21lbnUgPSB7Ci0gCXsgImR1cGxpY2F0ZS1kYXRhIiwgIltvbi9vZmZdIiwgY21kX3NjYW5fZmlsdGVyX2R1cGxpY2F0ZV9kYXRhLAotIAkJCQkiU2V0L0dldCBkdXBsaWNhdGUgZGF0YSBmaWx0ZXIiLAotIAkJCQlOVUxMIH0sCi0tCXsgImNsZWFyIiwgIlt1dWlkcy9yc3NpL3BhdGhsb3NzL3RyYW5zcG9ydC9kdXBsaWNhdGUtZGF0YV0iLAotKwl7ICJkaXNjb3ZlcmFibGUiLCAiW29uL29mZl0iLCBjbWRfc2Nhbl9maWx0ZXJfZGlzY292ZXJhYmxlLAotKwkJCQkiU2V0L0dldCBkaXNjb3ZlcmFibGUgZmlsdGVyIiwKLSsJCQkJTlVMTCB9LAotKwl7ICJjbGVhciIsCi0rCQkiW3V1aWRzL3Jzc2kvcGF0aGxvc3MvdHJhbnNwb3J0L2R1cGxpY2F0ZS1kYXRhL2Rpc2NvdmVyYWJsZV0iLAotIAkJCQljbWRfc2Nhbl9maWx0ZXJfY2xlYXIsCi0gCQkJCSJDbGVhcnMgZGlzY292ZXJ5IGZpbHRlci4iLAotIAkJCQlmaWx0ZXJfY2xlYXJfZ2VuZXJhdG9yIH0sCi1AQCAtMjU0OSw2ICsyNjI3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBidF9zaGVsbF9tZW51IG1haW5fbWVudSA9IHsKLSAJeyAiZGlzY292ZXJhYmxlIiwgIjxvbi9vZmY+IiwgY21kX2Rpc2NvdmVyYWJsZSwKLSAJCQkJCSJTZXQgY29udHJvbGxlciBkaXNjb3ZlcmFibGUgbW9kZSIsCi0gCQkJCQkJCU5VTEwgfSwKLSsJeyAiZGlzY292ZXJhYmxlLXRpbWVvdXQiLCAiW3ZhbHVlXSIsIGNtZF9kaXNjb3ZlcmFibGVfdGltZW91dCwKLSsJCQkJCSJTZXQgZGlzY292ZXJhYmxlIHRpbWVvdXQiLCBOVUxMIH0sCi0gCXsgImFnZW50IiwgICAgICAgICI8b24vb2ZmL2NhcGFiaWxpdHk+IiwgY21kX2FnZW50LAotIAkJCQkiRW5hYmxlL2Rpc2FibGUgYWdlbnQgd2l0aCBnaXZlbiBjYXBhYmlsaXR5IiwKLSAJCQkJCQkJY2FwYWJpbGl0eV9nZW5lcmF0b3J9LAotZGlmZiAtLWdpdCBhL2RvYy9hZGFwdGVyLWFwaS50eHQgYi9kb2MvYWRhcHRlci1hcGkudHh0Ci1pbmRleCBkMTRkMGNhLi40NzkxYWYyIDEwMDY0NAotLS0tIGEvZG9jL2FkYXB0ZXItYXBpLnR4dAotKysrIGIvZG9jL2FkYXB0ZXItYXBpLnR4dAotQEAgLTExMyw2ICsxMTMsMTIgQEAgTWV0aG9kcwkJdm9pZCBTdGFydERpc2NvdmVyeSgpCi0gCQkJCWdlbmVyYXRlZCBmb3IgZWl0aGVyIE1hbnVmYWN0dXJlckRhdGEgYW5kCi0gCQkJCVNlcnZpY2VEYXRhIGV2ZXJ5dGltZSB0aGV5IGFyZSBkaXNjb3ZlcmVkLgotIAotKwkJCWJvb2wgRGlzY292ZXJhYmxlIChEZWZhdWx0OiBmYWxzZSkKLSsKLSsJCQkJTWFrZSBhZGFwdGVyIGRpc2NvdmVyYWJsZSB3aGlsZSBkaXNjb3ZlcmluZywKLSsJCQkJaWYgdGhlIGFkYXB0ZXIgaXMgYWxyZWFkeSBkaXNjb3ZlcmFibGUgdGhpcwotKwkJCQlzZXR0aW5nIHRoaXMgZmlsdGVyIHdvbid0IGRvIGFueXRoaW5nLgotKwotIAkJCVdoZW4gZGlzY292ZXJ5IGZpbHRlciBpcyBzZXQsIERldmljZSBvYmplY3RzIHdpbGwgYmUKLSAJCQljcmVhdGVkIGFzIG5ldyBkZXZpY2VzIHdpdGggbWF0Y2hpbmcgY3JpdGVyaWEgYXJlCi0gCQkJZGlzY292ZXJlZCByZWdhcmRsZXNzIG9mIHRoZXkgYXJlIGNvbm5lY3RhYmxlIG9yCi1kaWZmIC0tZ2l0IGEvc3JjL2FkYXB0ZXIuYyBiL3NyYy9hZGFwdGVyLmMKLWluZGV4IGFmMzQwZmQuLjgyMmJkMzQgMTAwNjQ0Ci0tLS0gYS9zcmMvYWRhcHRlci5jCi0rKysgYi9zcmMvYWRhcHRlci5jCi1AQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCBkaXNjb3ZlcnlfZmlsdGVyIHsKLSAJaW50MTZfdCByc3NpOwotIAlHU0xpc3QgKnV1aWRzOwotIAlib29sIGR1cGxpY2F0ZTsKLSsJYm9vbCBkaXNjb3ZlcmFibGU7Ci0gfTsKLSAKLSBzdHJ1Y3Qgd2F0Y2hfY2xpZW50IHsKLUBAIC0xOTYsNiArMTk3LDcgQEAgc3RydWN0IGJ0ZF9hZGFwdGVyIHsKLSAJY2hhciAqbmFtZTsJCQkvKiBjb250cm9sbGVyIGRldmljZSBuYW1lICovCi0gCWNoYXIgKnNob3J0X25hbWU7CQkvKiBjb250cm9sbGVyIHNob3J0IG5hbWUgKi8KLSAJdWludDMyX3Qgc3VwcG9ydGVkX3NldHRpbmdzOwkvKiBjb250cm9sbGVyIHN1cHBvcnRlZCBzZXR0aW5ncyAqLwotKwl1aW50MzJfdCBwZW5kaW5nX3NldHRpbmdzOwkvKiBwZW5kaW5nIGNvbnRyb2xsZXIgc2V0dGluZ3MgKi8KLSAJdWludDMyX3QgY3VycmVudF9zZXR0aW5nczsJLyogY3VycmVudCBjb250cm9sbGVyIHNldHRpbmdzICovCi0gCi0gCWNoYXIgKnBhdGg7CQkJLyogYWRhcHRlciBvYmplY3QgcGF0aCAqLwotQEAgLTIxMyw2ICsyMTUsNyBAQCBzdHJ1Y3QgYnRkX2FkYXB0ZXIgewotIAotIAlib29sIGRpc2NvdmVyaW5nOwkJLyogZGlzY292ZXJpbmcgcHJvcGVydHkgc3RhdGUgKi8KLSAJYm9vbCBmaWx0ZXJlZF9kaXNjb3Zlcnk7CS8qIHdlIGFyZSBkb2luZyBmaWx0ZXJlZCBkaXNjb3ZlcnkgKi8KLSsJYm9vbCBmaWx0ZXJlZF9kaXNjb3ZlcmFibGU7CS8qIHdlIGFyZSBkb2luZyBmaWx0ZXJlZCBkaXNjb3ZlcnkgKi8KLSAJYm9vbCBub19zY2FuX3Jlc3RhcnRfZGVsYXk7CS8qIHdoZW4gdGhpcyBmbGFnIGlzIHNldCwgcmVzdGFydCBzY2FuCi0gCQkJCQkgKiB3aXRob3V0IGRlbGF5ICovCi0gCXVpbnQ4X3QgZGlzY292ZXJ5X3R5cGU7CQkvKiBjdXJyZW50IGFjdGl2ZSBkaXNjb3ZlcnkgdHlwZSAqLwotQEAgLTUwOSw4ICs1MTIsMTAgQEAgc3RhdGljIHZvaWQgc2V0dGluZ3NfY2hhbmdlZChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQzMl90IHNldHRpbmdzKQotIAljaGFuZ2VkX21hc2sgPSBhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzIF4gc2V0dGluZ3M7Ci0gCi0gCWFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgPSBzZXR0aW5nczsKLSsJYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyAmPSB+Y2hhbmdlZF9tYXNrOwotIAotIAlEQkcoIkNoYW5nZWQgc2V0dGluZ3M6IDB4JTA4eCIsIGNoYW5nZWRfbWFzayk7Ci0rCURCRygiUGVuZGluZyBzZXR0aW5nczogMHglMDh4IiwgYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyk7Ci0gCi0gCWlmIChjaGFuZ2VkX21hc2sgJiBNR01UX1NFVFRJTkdfUE9XRVJFRCkgewotIAkgICAgICAgIGdfZGJ1c19lbWl0X3Byb3BlcnR5X2NoYW5nZWQoZGJ1c19jb25uLCBhZGFwdGVyLT5wYXRoLAotQEAgLTU5NiwxMCArNjAxLDMxIEBAIHN0YXRpYyBib29sIHNldF9tb2RlKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgdWludDE2X3Qgb3Bjb2RlLAotIAkJCQkJCQl1aW50OF90IG1vZGUpCi0gewotIAlzdHJ1Y3QgbWdtdF9tb2RlIGNwOwotKwl1aW50MzJfdCBzZXR0aW5nID0gMDsKLSAKLSAJbWVtc2V0KCZjcCwgMCwgc2l6ZW9mKGNwKSk7Ci0gCWNwLnZhbCA9IG1vZGU7Ci0gCi0rCXN3aXRjaCAobW9kZSkgewotKwljYXNlIE1HTVRfT1BfU0VUX1BPV0VSRUQ6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX1BPV0VSRUQ7Ci0rCQlicmVhazsKLSsJY2FzZSBNR01UX09QX1NFVF9DT05ORUNUQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfQ09OTkVDVEFCTEU7Ci0rCQlicmVhazsKLSsJY2FzZSBNR01UX09QX1NFVF9GQVNUX0NPTk5FQ1RBQkxFOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19GQVNUX0NPTk5FQ1RBQkxFOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfRElTQ09WRVJBQkxFOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEU7Ci0rCQlicmVhazsKLSsJY2FzZSBNR01UX09QX1NFVF9CT05EQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFOwotKwkJYnJlYWs7Ci0rCX0KLSsKLSsJYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyB8PSBzZXR0aW5nOwotKwotIAlEQkcoInNlbmRpbmcgc2V0IG1vZGUgY29tbWFuZCBmb3IgaW5kZXggJXUiLCBhZGFwdGVyLT5kZXZfaWQpOwotIAotIAlpZiAobWdtdF9zZW5kKGFkYXB0ZXItPm1nbXQsIG9wY29kZSwKLUBAIC0xODE4LDcgKzE4NDQsMTcgQEAgc3RhdGljIHZvaWQgZGlzY292ZXJ5X2ZyZWUodm9pZCAqdXNlcl9kYXRhKQotIAlnX2ZyZWUoY2xpZW50KTsKLSB9Ci0gCi0tc3RhdGljIHZvaWQgZGlzY292ZXJ5X3JlbW92ZShzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQpCi0rc3RhdGljIGJvb2wgc2V0X2ZpbHRlcmVkX2Rpc2NvdmVyYWJsZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgZW5hYmxlKQotK3sKLSsJaWYgKGFkYXB0ZXItPmZpbHRlcmVkX2Rpc2NvdmVyYWJsZSA9PSBlbmFibGUpCi0rCQlyZXR1cm4gdHJ1ZTsKLSsKLSsJYWRhcHRlci0+ZmlsdGVyZWRfZGlzY292ZXJhYmxlID0gZW5hYmxlOwotKwotKwlyZXR1cm4gc2V0X2Rpc2NvdmVyYWJsZShhZGFwdGVyLCBlbmFibGUsIDApOwotK30KLSsKLStzdGF0aWMgdm9pZCBkaXNjb3ZlcnlfcmVtb3ZlKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCwgYm9vbCBleGl0KQotIHsKLSAJc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyID0gY2xpZW50LT5hZGFwdGVyOwotIAotQEAgLTE4MzAsNyArMTg2NiwyNyBAQCBzdGF0aWMgdm9pZCBkaXNjb3ZlcnlfcmVtb3ZlKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCkKLSAJYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QgPSBnX3NsaXN0X3JlbW92ZShhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCwKLSAJCQkJCQkJCWNsaWVudCk7Ci0gCi0tCWRpc2NvdmVyeV9mcmVlKGNsaWVudCk7Ci0rCWlmIChhZGFwdGVyLT5maWx0ZXJlZF9kaXNjb3ZlcmFibGUgJiYKLSsJCQljbGllbnQtPmRpc2NvdmVyeV9maWx0ZXItPmRpc2NvdmVyYWJsZSkgewotKwkJR1NMaXN0ICpsOwotKwotKwkJZm9yIChsID0gYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3Q7IGw7IGwgPSBnX3NsaXN0X25leHQobCkpIHsKLSsJCQlzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQgPSBsLT5kYXRhOwotKwotKwkJCWlmIChjbGllbnQtPmRpc2NvdmVyeV9maWx0ZXItPmRpc2NvdmVyYWJsZSkKLSsJCQkJYnJlYWs7Ci0rCQl9Ci0rCi0rCQkvKiBEaXNhYmxlIGZpbHRlcmVkIGRpc2NvdmVyYWJsZSBpZiB0aGVyZSBhcmUgbm8gY2xpZW50cyAqLwotKwkJaWYgKCFsKQotKwkJCXNldF9maWx0ZXJlZF9kaXNjb3ZlcmFibGUoYWRhcHRlciwgZmFsc2UpOwotKwl9Ci0rCi0rCWlmICghZXhpdCAmJiBjbGllbnQtPmRpc2NvdmVyeV9maWx0ZXIpCi0rCQlhZGFwdGVyLT5zZXRfZmlsdGVyX2xpc3QgPSBnX3NsaXN0X3ByZXBlbmQoCi0rCQkJCQlhZGFwdGVyLT5zZXRfZmlsdGVyX2xpc3QsIGNsaWVudCk7Ci0rCWVsc2UKLSsJCWRpc2NvdmVyeV9mcmVlKGNsaWVudCk7Ci0gCi0gCS8qCi0gCSAqIElmIHRoZXJlIGFyZSBvdGhlciBjbGllbnQgZGlzY292ZXJpZXMgaW4gcHJvZ3Jlc3MsIHRoZW4gbGVhdmUKLUBAIC0xODU5LDggKzE5MTUsMTEgQEAgc3RhdGljIHZvaWQgc3RvcF9kaXNjb3ZlcnlfY29tcGxldGUodWludDhfdCBzdGF0dXMsIHVpbnQxNl90IGxlbmd0aCwKLSAJCWdvdG8gZG9uZTsKLSAJfQotIAotLQlpZiAoY2xpZW50LT5tc2cpCi0rCWlmIChjbGllbnQtPm1zZykgewotIAkJZ19kYnVzX3NlbmRfcmVwbHkoZGJ1c19jb25uLCBjbGllbnQtPm1zZywgREJVU19UWVBFX0lOVkFMSUQpOwotKwkJZGJ1c19tZXNzYWdlX3VucmVmKGNsaWVudC0+bXNnKTsKLSsJCWNsaWVudC0+bXNnID0gTlVMTDsKLSsJfQotIAotIAlhZGFwdGVyLT5kaXNjb3ZlcnlfdHlwZSA9IDB4MDA7Ci0gCWFkYXB0ZXItPmRpc2NvdmVyeV9lbmFibGUgPSAweDAwOwotQEAgLTE4NzMsNyArMTkzMiw3IEBAIHN0YXRpYyB2b2lkIHN0b3BfZGlzY292ZXJ5X2NvbXBsZXRlKHVpbnQ4X3Qgc3RhdHVzLCB1aW50MTZfdCBsZW5ndGgsCi0gCXRyaWdnZXJfcGFzc2l2ZV9zY2FubmluZyhhZGFwdGVyKTsKLSAKLSBkb25lOgotLQlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCk7Ci0rCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50LCBmYWxzZSk7Ci0gfQotIAotIHN0YXRpYyBpbnQgY29tcGFyZV9zZW5kZXIoZ2NvbnN0cG9pbnRlciBhLCBnY29uc3Rwb2ludGVyIGIpCi1AQCAtMjA5NCwxNCArMjE1MywxNCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9kaXNjb3ZlcnlfZmlsdGVyKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlcikKLSAJcmV0dXJuIC1FSU5QUk9HUkVTUzsKLSB9Ci0gCi0tc3RhdGljIGludCBkaXNjb3Zlcnlfc3RvcChzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQpCi0rc3RhdGljIGludCBkaXNjb3Zlcnlfc3RvcChzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQsIGJvb2wgZXhpdCkKLSB7Ci0gCXN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciA9IGNsaWVudC0+YWRhcHRlcjsKLSAJc3RydWN0IG1nbXRfY3Bfc3RvcF9kaXNjb3ZlcnkgY3A7Ci0gCi0gCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBtb3JlIGNsaWVudCBkaXNjb3ZlcmluZyAqLwotIAlpZiAoZ19zbGlzdF9uZXh0KGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0KSkgewotLQkJZGlzY292ZXJ5X3JlbW92ZShjbGllbnQpOwotKwkJZGlzY292ZXJ5X3JlbW92ZShjbGllbnQsIGV4aXQpOwotIAkJdXBkYXRlX2Rpc2NvdmVyeV9maWx0ZXIoYWRhcHRlcik7Ci0gCQlyZXR1cm4gMDsKLSAJfQotQEAgLTIxMTEsNyArMjE3MCw3IEBAIHN0YXRpYyBpbnQgZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotIAkgKiBhbmQgc28gaXQgaXMgZW5vdWdoIHRvIHNlbmQgb3V0IHRoZSBzaWduYWwgYW5kIGp1c3QgcmV0dXJuLgotIAkgKi8KLSAJaWYgKGFkYXB0ZXItPmRpc2NvdmVyeV9lbmFibGUgPT0gMHgwMCkgewotLQkJZGlzY292ZXJ5X3JlbW92ZShjbGllbnQpOwotKwkJZGlzY292ZXJ5X3JlbW92ZShjbGllbnQsIGV4aXQpOwotIAkJYWRhcHRlci0+ZGlzY292ZXJpbmcgPSBmYWxzZTsKLSAJCWdfZGJ1c19lbWl0X3Byb3BlcnR5X2NoYW5nZWQoZGJ1c19jb25uLCBhZGFwdGVyLT5wYXRoLAotIAkJCQkJQURBUFRFUl9JTlRFUkZBQ0UsICJEaXNjb3ZlcmluZyIpOwotQEAgLTIxMzYsNyArMjE5NSw3IEBAIHN0YXRpYyB2b2lkIGRpc2NvdmVyeV9kaXNjb25uZWN0KERCdXNDb25uZWN0aW9uICpjb25uLCB2b2lkICp1c2VyX2RhdGEpCi0gCi0gCURCRygib3duZXIgJXMiLCBjbGllbnQtPm93bmVyKTsKLSAKLS0JZGlzY292ZXJ5X3N0b3AoY2xpZW50KTsKLSsJZGlzY292ZXJ5X3N0b3AoY2xpZW50LCB0cnVlKTsKLSB9Ci0gCi0gLyoKLUBAIC0yMjAwLDYgKzIyNTksMTUgQEAgc3RhdGljIERCdXNNZXNzYWdlICpzdGFydF9kaXNjb3ZlcnkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCi0gCQkJCQkgICAgIGFkYXB0ZXItPnNldF9maWx0ZXJfbGlzdCwgY2xpZW50KTsKLSAJCWFkYXB0ZXItPmRpc2NvdmVyeV9saXN0ID0gZ19zbGlzdF9wcmVwZW5kKAotIAkJCQkJICAgICAgYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QsIGNsaWVudCk7Ci0rCi0rCQkvKiBSZXNldCBkaXNjb3ZlcmFibGUgZmlsdGVyIGlmIGFscmVhZHkgc2V0ICovCi0rCQlpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfT1BfU0VUX0RJU0NPVkVSQUJMRSkKLSsJCQlnb3RvIGRvbmU7Ci0rCi0rCQkvKiBTZXQgZGlzY292ZXJhYmxlIGlmIGZpbHRlciByZXF1aXJlcyBhbmQgaXQqLwotKwkJaWYgKGNsaWVudC0+ZGlzY292ZXJ5X2ZpbHRlci0+ZGlzY292ZXJhYmxlKQotKwkJCXNldF9maWx0ZXJlZF9kaXNjb3ZlcmFibGUoYWRhcHRlciwgdHJ1ZSk7Ci0rCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLUBAIC0yMzI0LDYgKzIzOTIsMTcgQEAgc3RhdGljIGJvb2wgcGFyc2VfZHVwbGljYXRlX2RhdGEoREJ1c01lc3NhZ2VJdGVyICp2YWx1ZSwKLSAJcmV0dXJuIHRydWU7Ci0gfQotIAotK3N0YXRpYyBib29sIHBhcnNlX2Rpc2NvdmVyYWJsZShEQnVzTWVzc2FnZUl0ZXIgKnZhbHVlLAotKwkJCQkJc3RydWN0IGRpc2NvdmVyeV9maWx0ZXIgKmZpbHRlcikKLSt7Ci0rCWlmIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUodmFsdWUpICE9IERCVVNfVFlQRV9CT09MRUFOKQotKwkJcmV0dXJuIGZhbHNlOwotKwotKwlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWModmFsdWUsICZmaWx0ZXItPmRpc2NvdmVyYWJsZSk7Ci0rCi0rCXJldHVybiB0cnVlOwotK30KLSsKLSBzdHJ1Y3QgZmlsdGVyX3BhcnNlciB7Ci0gCWNvbnN0IGNoYXIgKm5hbWU7Ci0gCWJvb2wgKCpmdW5jKShEQnVzTWVzc2FnZUl0ZXIgKml0ZXIsIHN0cnVjdCBkaXNjb3ZlcnlfZmlsdGVyICpmaWx0ZXIpOwotQEAgLTIzMzMsNiArMjQxMiw3IEBAIHN0cnVjdCBmaWx0ZXJfcGFyc2VyIHsKLSAJeyAiUGF0aGxvc3MiLCBwYXJzZV9wYXRobG9zcyB9LAotIAl7ICJUcmFuc3BvcnQiLCBwYXJzZV90cmFuc3BvcnQgfSwKLSAJeyAiRHVwbGljYXRlRGF0YSIsIHBhcnNlX2R1cGxpY2F0ZV9kYXRhIH0sCi0rCXsgIkRpc2NvdmVyYWJsZSIsIHBhcnNlX2Rpc2NvdmVyYWJsZSB9LAotIAl7IH0KLSB9OwotIAotQEAgLTIzNzIsNiArMjQ1Miw3IEBAIHN0YXRpYyBib29sIHBhcnNlX2Rpc2NvdmVyeV9maWx0ZXJfZGljdChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsCi0gCSgqZmlsdGVyKS0+cnNzaSA9IERJU1RBTkNFX1ZBTF9JTlZBTElEOwotIAkoKmZpbHRlciktPnR5cGUgPSBnZXRfc2Nhbl90eXBlKGFkYXB0ZXIpOwotIAkoKmZpbHRlciktPmR1cGxpY2F0ZSA9IGZhbHNlOwotKwkoKmZpbHRlciktPmRpc2NvdmVyYWJsZSA9IGZhbHNlOwotIAotIAlkYnVzX21lc3NhZ2VfaXRlcl9pbml0KG1zZywgJml0ZXIpOwotIAlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZpdGVyKSAhPSBEQlVTX1RZUEVfQVJSQVkgfHwKLUBAIC0yNDE3LDggKzI0OTgsMTAgQEAgc3RhdGljIGJvb2wgcGFyc2VfZGlzY292ZXJ5X2ZpbHRlcl9kaWN0KHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwKLSAJCWdvdG8gaW52YWxpZF9hcmdzOwotIAotIAlEQkcoImZpbHRlcmVkIGRpc2NvdmVyeSBwYXJhbXM6IHRyYW5zcG9ydDogJWQgcnNzaTogJWQgcGF0aGxvc3M6ICVkICIKLS0JCSIgZHVwbGljYXRlIGRhdGE6ICVzICIsICgqZmlsdGVyKS0+dHlwZSwgKCpmaWx0ZXIpLT5yc3NpLAotLQkJKCpmaWx0ZXIpLT5wYXRobG9zcywgKCpmaWx0ZXIpLT5kdXBsaWNhdGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSsJCSIgZHVwbGljYXRlIGRhdGE6ICVzIGRpc2NvdmVyYWJsZSAlcyIsICgqZmlsdGVyKS0+dHlwZSwKLSsJCSgqZmlsdGVyKS0+cnNzaSwgKCpmaWx0ZXIpLT5wYXRobG9zcywKLSsJCSgqZmlsdGVyKS0+ZHVwbGljYXRlID8gInRydWUiIDogImZhbHNlIiwKLSsJCSgqZmlsdGVyKS0+ZGlzY292ZXJhYmxlID8gInRydWUiIDogImZhbHNlIik7Ci0gCi0gCXJldHVybiB0cnVlOwotIAotQEAgLTI1MTAsNyArMjU5Myw3IEBAIHN0YXRpYyBEQnVzTWVzc2FnZSAqc3RvcF9kaXNjb3ZlcnkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCi0gCWlmIChjbGllbnQtPm1zZykKLSAJCXJldHVybiBidGRfZXJyb3JfYnVzeShtc2cpOwotIAotLQllcnIgPSBkaXNjb3Zlcnlfc3RvcChjbGllbnQpOwotKwllcnIgPSBkaXNjb3Zlcnlfc3RvcChjbGllbnQsIGZhbHNlKTsKLSAJc3dpdGNoIChlcnIpIHsKLSAJY2FzZSAwOgotIAkJcmV0dXJuIGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwotQEAgLTI3MzksMTMgKzI4MjIsMTUgQEAgc3RhdGljIHZvaWQgcHJvcGVydHlfc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5nLAotIAllbHNlCi0gCQljdXJyZW50X2VuYWJsZSA9IEZBTFNFOwotIAotLQlpZiAoZW5hYmxlID09IGN1cnJlbnRfZW5hYmxlKSB7Ci0rCWlmIChlbmFibGUgPT0gY3VycmVudF9lbmFibGUgfHwgYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyAmIHNldHRpbmcpIHsKLSAJCWdfZGJ1c19wZW5kaW5nX3Byb3BlcnR5X3N1Y2Nlc3MoaWQpOwotIAkJcmV0dXJuOwotIAl9Ci0gCi0gCW1vZGUgPSAoZW5hYmxlID09IFRSVUUpID8gMHgwMSA6IDB4MDA7Ci0gCi0rCWFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgfD0gc2V0dGluZzsKLSsKLSAJc3dpdGNoIChzZXR0aW5nKSB7Ci0gCWNhc2UgTUdNVF9TRVRUSU5HX1BPV0VSRUQ6Ci0gCQlvcGNvZGUgPSBNR01UX09QX1NFVF9QT1dFUkVEOwotQEAgLTI3OTgsNyArMjg4Myw3IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9tb2RlKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgdWludDMyX3Qgc2V0dGluZywKLSAJZGF0YS0+aWQgPSBpZDsKLSAKLSAJaWYgKG1nbXRfc2VuZChhZGFwdGVyLT5tZ210LCBvcGNvZGUsIGFkYXB0ZXItPmRldl9pZCwgbGVuLCBwYXJhbSwKLS0JCQkJcHJvcGVydHlfc2V0X21vZGVfY29tcGxldGUsIGRhdGEsIGdfZnJlZSkgPiAwKQotKwkJCXByb3BlcnR5X3NldF9tb2RlX2NvbXBsZXRlLCBkYXRhLCBnX2ZyZWUpID4gMCkKLSAJCXJldHVybjsKLSAKLSAJZ19mcmVlKGRhdGEpOwotQEAgLTI4NzUsNiArMjk2MCw3IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9kaXNjb3ZlcmFibGVfdGltZW91dCgKLSAJCQkJR0RCdXNQZW5kaW5nUHJvcGVydHlTZXQgaWQsIHZvaWQgKnVzZXJfZGF0YSkKLSB7Ci0gCXN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciA9IHVzZXJfZGF0YTsKLSsJYm9vbCBlbmFibGVkOwotIAlkYnVzX3VpbnQzMl90IHZhbHVlOwotIAotIAlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoaXRlciwgJnZhbHVlKTsKLUBAIC0yODg4LDggKzI5NzQsMTkgQEAgc3RhdGljIHZvaWQgcHJvcGVydHlfc2V0X2Rpc2NvdmVyYWJsZV90aW1lb3V0KAotIAlnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLSAJCQkJQURBUFRFUl9JTlRFUkZBQ0UsICJEaXNjb3ZlcmFibGVUaW1lb3V0Iik7Ci0gCi0rCWlmIChhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkgewotKwkJaWYgKGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgJiBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFKQotKwkJCWVuYWJsZWQgPSBmYWxzZTsKLSsJCWVsc2UKLSsJCQllbmFibGVkID0gdHJ1ZTsKLSsJfSBlbHNlIHsKLSsJCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkKLSsJCQllbmFibGVkID0gdHJ1ZTsKLSsJCWVsc2UKLSsJCQllbmFibGVkID0gZmFsc2U7Ci0rCX0KLSAKLS0JaWYgKGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgJiBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFKQotKwlpZiAoZW5hYmxlZCkKLSAJCXNldF9kaXNjb3ZlcmFibGUoYWRhcHRlciwgMHgwMSwgYWRhcHRlci0+ZGlzY292ZXJhYmxlX3RpbWVvdXQpOwotIH0KLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvZ2NjOS1maXhlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2djYzktZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNjc4ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvZ2NjOS1maXhlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi1CYWNrcG9ydGVkIGNvbW1pdCBmcm9tIHVwc3RyZWFtIG1hc3RlciBicmFuY2ggKHBvc3QgNS41MCByZWxlYXNlKSwgd2hpY2gKLXJlc29sdmVzIGFzc2VydGlvbiBmYWlsdXJlcyBpbiBzZXZlcmFsIHVuaXQgdGVzdHMuCi0KLWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9ibHVldG9vdGgvYmx1ZXouZ2l0L3BhdGNoLz9pZD0wYmU1MjQ2MTcwCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtYXZjdHAuYyBiL3VuaXQvdGVzdC1hdmN0cC5jCi1pbmRleCAzYmMzNTY5Li4yNGRlNjYzIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWF2Y3RwLmMKLSsrKyBiL3VuaXQvdGVzdC1hdmN0cC5jCi1AQCAtNDMsNyArNDMsNyBAQAotIAotIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgdmFsaWQ7Ci0tCWNvbnN0IHVpbnQ4X3QgKmRhdGE7Ci0rCXVpbnQ4X3QgKmRhdGE7Ci0gCXNpemVfdCBzaXplOwotIH07Ci0gCi1AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC05MSw2ICs5MSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RlYnVnKGNvbnN0IGNoYXIgKnN0ciwgdm9pZCAqdXNlcl9kYXRhKQotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1hdmR0cC5jIGIvdW5pdC90ZXN0LWF2ZHRwLmMKLWluZGV4IGRkOGFlZDcuLmUyYzk1MWEgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtYXZkdHAuYwotKysrIGIvdW5pdC90ZXN0LWF2ZHRwLmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCB2YWxpZDsKLSAJYm9vbCBmcmFnbWVudGVkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pIFwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLSAJCS5mcmFnbWVudGVkID0gdHJ1ZSwJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTgxLDcgKzgxLDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gCQlzdGF0aWMgc3RydWN0IHRlc3RfZGF0YSBkYXRhOwkJCQlcCi0gCQlkYXRhLnRlc3RfbmFtZSA9IGdfc3RyZHVwKG5hbWUpOwkJCVwKLSAJCWRhdGEucGR1X2xpc3QgPSBnX21lbWR1cChwZHVzLCBzaXplb2YocGR1cykpOwkJXAotLQkJdGVzdGVyX2FkZChuYW1lLCAmZGF0YSwgTlVMTCwgZnVuY3Rpb24sIE5VTEwpOwkJXAotKwkJdGVzdGVyX2FkZChuYW1lLCAmZGF0YSwgTlVMTCwgZnVuY3Rpb24sIE5VTEwpOwlcCi0gCX0gd2hpbGUgKDApCi0gCi0gc3RydWN0IGNvbnRleHQgewotQEAgLTEwOSw2ICsxMDksMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9kZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtYXZyY3AuYyBiL3VuaXQvdGVzdC1hdnJjcC5jCi1pbmRleCAwMTMwN2U2Li5mMWFhMzUzIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWF2cmNwLmMKLSsrKyBiL3VuaXQvdGVzdC1hdnJjcC5jCi1AQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIGZyYWdtZW50ZWQ7Ci0gCWJvb2wgY29udGludWluZzsKLSAJYm9vbCBicm93c2U7Ci0tCWNvbnN0IHVpbnQ4X3QgKmRhdGE7Ci0rCXVpbnQ4X3QgKmRhdGE7Ci0gCXNpemVfdCBzaXplOwotIH07Ci0gCi1AQCAtNzQsNyArNzQsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC04Miw3ICs4Miw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotIAkJLmJyb3dzZSA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLSAJCS5mcmFnbWVudGVkID0gdHJ1ZSwJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTk4LDcgKzk4LDcgQEAgc3RydWN0IGNvbnRleHQgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuY29udGludWluZyA9IHRydWUsCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC0xMjMsNiArMTIzLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZGVidWcoY29uc3QgY2hhciAqc3RyLCB2b2lkICp1c2VyX2RhdGEpCi0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWdhdHQuYyBiL3VuaXQvdGVzdC1nYXR0LmMKLWluZGV4IGM3ZTI4ZjguLmQ0OWY3YTAgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtZ2F0dC5jCi0rKysgYi91bml0L3Rlc3QtZ2F0dC5jCi1AQCAtNDgsNyArNDgsNyBAQAotIAotIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgdmFsaWQ7Ci0tCWNvbnN0IHVpbnQ4X3QgKmRhdGE7Ci0rCXVpbnQ4X3QgKmRhdGE7Ci0gCXNpemVfdCBzaXplOwotIH07Ci0gCi1AQCAtODYsNyArODYsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC0zMDYsNiArMzA2LDExIEBAIHN0YXRpYyBidF91dWlkX3QgdXVpZF9jaGFyXzEyOCA9IHsKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLUBAIC0xOTExLDYgKzE5MTYsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NlcnZlcihnY29uc3Rwb2ludGVyIGRhdGEpCi0gCWdfYXNzZXJ0X2NtcGludChsZW4sID09LCBwZHUuc2l6ZSk7Ci0gCi0gCXV0aWxfaGV4ZHVtcCgnPCcsIHBkdS5kYXRhLCBsZW4sIHRlc3RfZGVidWcsICJHQVRUOiAiKTsKLSsKLSsJZ19mcmVlKHBkdS5kYXRhKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdGVzdF9zZWFyY2hfcHJpbWFyeShnY29uc3Rwb2ludGVyIGRhdGEpCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWhmcC5jIGIvdW5pdC90ZXN0LWhmcC5jCi1pbmRleCBmMmI5NjIyLi44OTBlZWU2IDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWhmcC5jCi0rKysgYi91bml0L3Rlc3QtaGZwLmMKLUBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSAJZW51bSBoZnBfZ3dfY21kX3R5cGUgdHlwZTsKLSAJYm9vbCBmcmFnbWVudGVkOwotQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC03NSw3ICs3NSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgdHlwZV9wZHUoY21kX3R5cGUsIGFyZ3MuLi4pCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJCS50eXBlID0gY21kX3R5cGUsCQkJCVwKLSAJfQotQEAgLTgzLDcgKzgzLDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSBmcmdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCQkuZnJhZ21lbnRlZCA9IHRydWUsCQkJCVwKLSAJfQotQEAgLTExOSw2ICsxMTksMTEgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWhvZy5jIGIvdW5pdC90ZXN0LWhvZy5jCi1pbmRleCBkMTE3OTY4Li4yNWJkYjQyIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWhvZy5jCi0rKysgYi91bml0L3Rlc3QtaG9nLmMKLUBAIC02OCwxMSArNjgsMTEgQEAgc3RydWN0IGNvbnRleHQgewotIAotICNkZWZpbmUgZGF0YShhcmdzLi4uKSAoKGNvbnN0IHVuc2lnbmVkIGNoYXJbXSkgeyBhcmdzIH0pCi0gCi0tI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pICAgIFwKLS17ICAgICAgXAotLQkudmFsaWQgPSB0cnVlLAkJXAotLQkuZGF0YSA9IGRhdGEoYXJncyksIFwKLS0JLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksXAotKyNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotK3sJCQkJCQkJCVwKLSsJLnZhbGlkID0gdHJ1ZSwJCQkJCQlcCi0rCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwJXAotKwkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQkJXAotIH0KLSAKLSAjZGVmaW5lIGZhbHNlX3BkdSgpCVwKLWRpZmYgLS1naXQgYS91bml0L3Rlc3Qtc2RwLmMgYi91bml0L3Rlc3Qtc2RwLmMKLWluZGV4IGFjOTIxYTkuLmM3MWVlMWYgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3Qtc2RwLmMKLSsrKyBiL3VuaXQvdGVzdC1zZHAuYwotQEAgLTU5LDE0ICs1OSwxNCBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikgXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkucmF3X2RhdGEgPSByYXdfZGF0YShhcmdzKSwJCQlcCi0rCQkucmF3X2RhdGEgPSBnX21lbWR1cChyYXdfZGF0YShhcmdzKSwgc2l6ZW9mKHJhd19kYXRhKGFyZ3MpKSksIFwKLSAJCS5yYXdfc2l6ZSA9IHNpemVvZihyYXdfZGF0YShhcmdzKSksCQlcCi0gCX0KLSAKLSAjZGVmaW5lIHJhd19wZHVfY29udChjb250LCBhcmdzLi4uKSBcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5yYXdfZGF0YSA9IHJhd19kYXRhKGFyZ3MpLAkJCVwKLSsJCS5yYXdfZGF0YSA9IGdfbWVtZHVwKHJhd19kYXRhKGFyZ3MpLCBzaXplb2YocmF3X2RhdGEoYXJncykpKSwgXAotIAkJLnJhd19zaXplID0gc2l6ZW9mKHJhd19kYXRhKGFyZ3MpKSwJCVwKLSAJCS5jb250X2xlbiA9IGNvbnQsCQkJCVwKLSAJfQotQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhX2RlIHsKLSAjZGVmaW5lIGRlZmluZV90ZXN0X2RlX2F0dHIobmFtZSwgaW5wdXQsIGV4cCkgXAotIAlkbyB7CQkJCQkJCQlcCi0gCQlzdGF0aWMgc3RydWN0IHRlc3RfZGF0YV9kZSBkYXRhOwkJCVwKLS0JCWRhdGEuaW5wdXRfZGF0YSA9IGlucHV0OwkJCQlcCi0rCQlkYXRhLmlucHV0X2RhdGEgPSBnX21lbWR1cChpbnB1dCwgc2l6ZW9mKGlucHV0KSk7CVwKLSAJCWRhdGEuaW5wdXRfc2l6ZSA9IHNpemVvZihpbnB1dCk7CQkJXAotIAkJZGF0YS5leHBlY3RlZCA9IGV4cDsJCQkJCVwKLSAJCXRlc3Rlcl9hZGQoIi9zZHAvREUvQVRUUi8iIG5hbWUsICZkYXRhLAlOVUxMLAkJXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvb3V0LW9mLXRyZWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9vdXQtb2YtdHJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZlZDc3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9vdXQtb2YtdHJlZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gZWQ1NWI0OWEyMjZjYTM5MDlmNTI0MTZiZTJhZTVjZTFjNWNhMmNiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDIyIEFwciAyMDE2IDE1OjQwOjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLm9iZXhkOiBhZGQgbWlzc2luZyBta2RpciBpbiBidWlsdGluLmggZ2VuZXJhdGlvbgotCi1JbiBwYXJhbGxlbCBvdXQtb2YtdHJlZSBidWlsZHMgaXQncyBwb3NzaWJsZSB0aGF0IG9iZXhkL3NyYy9idWlsdGluLmggaXMKLWdlbmVyYXRlZCBiZWZvcmUgdGhlIHRhcmdldCBkaXJlY3RvcnkgaGFzIGJlZW4gaW1wbGljaXRseSBjcmVhdGVkLiBTb2x2ZSB0aGlzIGJ5Ci1jcmVhdGluZyB0aGUgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5vYmV4ZCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUub2JleGQgYi9NYWtlZmlsZS5vYmV4ZAotaW5kZXggMmUzM2NiYy4uYzgyODZmMCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLm9iZXhkCi0rKysgYi9NYWtlZmlsZS5vYmV4ZAotQEAgLTEwNSwyICsxMDUsMyBAQCBvYmV4ZC9zcmMvcGx1Z2luLiQoT0JKRVhUKTogb2JleGQvc3JjL2J1aWx0aW4uaAotIG9iZXhkL3NyYy9idWlsdGluLmg6IG9iZXhkL3NyYy9nZW5idWlsdGluICQob2JleGRfYnVpbHRpbl9zb3VyY2VzKQotKwkkKEFNX1ZfYXQpJChNS0RJUl9QKSAkKGRpciAkQCkKLSAJJChBTV9WX0dFTikkKHNyY2Rpcikvb2JleGQvc3JjL2dlbmJ1aWx0aW4gJChvYmV4ZF9idWlsdGluX21vZHVsZXMpID4gJEAKLS0tIAotMi44LjAucmMzCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L3J1bi1wdGVzdAppbmRleCAyMWRmMDBjLi4wMzM1ZTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvcnVuLXB0ZXN0CkBAIC02LDcgKzYsNyBAQAogYWxsPTAKIAogZm9yIGYgaW4gdGVzdC0qOyBkbwotICAgICIuLyRmIgorICAgICIuLyRmIiAtcQogICAgIGNhc2UgIiQ/IiBpbgogICAgICAgICAwKQogICAgICAgICAgICAgZWNobyAiUEFTUzogJGYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU0NDNlNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjUwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotcmVxdWlyZSBibHVlejUuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZTM1YzY3YzgxYTU1ZDNhZDRjOWYyMjI4MGRhZTE3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmZjYWFlMThiYmI2MTU1ZjE1OTFiZThjMjQ4OThkYzEyZjA2MjA3NWE0MGI1MzhiNzQ1YmZkNDc3NDgxOTExIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKLSAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKLSAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKLSAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKLSAgICB0b29scy9vYmV4Y3RsIFwKLSAgICB0b29scy9idG1nbXQgXAotIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAotICAgIGVtdWxhdG9yL2J0dmlydCBcCi0gICAgZW11bGF0b3IvYjFlZSBcCi0gICAgZW11bGF0b3IvaGZwIFwKLSAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKLSAgICB0b29scy8zZHNwIFwKLSAgICB0b29scy9tZ210LXRlc3RlciBcCi0gICAgdG9vbHMvZ2FwLXRlc3RlciBcCi0gICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKLSAgICB0b29scy9zY28tdGVzdGVyIFwKLSAgICB0b29scy9zbXAtdGVzdGVyIFwKLSAgICB0b29scy9oY2ktdGVzdGVyIFwKLSAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKLSAgICB0b29scy9ibmVwLXRlc3RlciBcCi0gICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX0JUID89ICIgXAotICAgIHRvb2xzL2JkYWRkciBcCi0gICAgdG9vbHMvYXZpbmZvIFwKLSAgICB0b29scy9hdnRlc3QgXAotICAgIHRvb2xzL3Njb3Rlc3QgXAotICAgIHRvb2xzL2FtcHRlc3QgXAotICAgIHRvb2xzL2h3ZGIgXAotICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCi0gICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKLSAgICB0b29scy9idGluZm8gXAotICAgIHRvb2xzL2J0c25vb3AgXAotICAgIHRvb2xzL2J0cHJveHkgXAotICAgIHRvb2xzL2J0aW90ZXN0IFwKLSAgICB0b29scy9ibmVwdGVzdCBcCi0gICAgdG9vbHMvbWNhcHRlc3QgXAotICAgIHRvb2xzL2NsdGVzdCBcCi0gICAgdG9vbHMvb29idGVzdCBcCi0gICAgdG9vbHMvYWR2dGVzdCBcCi0gICAgdG9vbHMvc2VxMmJzZXEgXAotICAgIHRvb2xzL25va2Z3IFwKLSAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAotICAgIHRvb2xzL2VkZHlzdG9uZSBcCi0gICAgdG9vbHMvaWJlYWNvbiBcCi0gICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCi0gICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCi0gICAgdG9vbHMvdGVzdC1ydW5uZXIgXAotICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKLSAgICB0b29scy9nYXR0LXNlcnZpY2UgXAotICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdidHBjbGllbnQnLCAndG9vbHMvYnRwY2xpZW50JywgJycsIGQpfSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjU0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjBlZWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41NC5iYgpAQCAtMCwwICsxLDY4IEBACityZXF1aXJlIGJsdWV6NS5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gImU2MzdmZWIyZGJiNzU4MmJiYmZmMTcwODM2N2E4NDdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4Y2RhYjllNjNlODgzMmIxMzBkNTk3OWRjOGM5NmZkYjA4N2IzMTI3OGYzNDI4NzRkOTkyYWYzZTU2NjU2ZGMiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAorICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAorICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAorICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAorICAgIHRvb2xzL29iZXhjdGwgXAorICAgIHRvb2xzL2J0bWdtdCBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCisgICAgZW11bGF0b3IvYnR2aXJ0IFwKKyAgICBlbXVsYXRvci9iMWVlIFwKKyAgICBlbXVsYXRvci9oZnAgXAorICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAorICAgIHRvb2xzLzNkc3AgXAorICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKKyAgICB0b29scy9nYXAtdGVzdGVyIFwKKyAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAorICAgIHRvb2xzL3Njby10ZXN0ZXIgXAorICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAorICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAorICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAorICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKKyAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfQlQgPz0gIiBcCisgICAgdG9vbHMvYmRhZGRyIFwKKyAgICB0b29scy9hdmluZm8gXAorICAgIHRvb2xzL2F2dGVzdCBcCisgICAgdG9vbHMvc2NvdGVzdCBcCisgICAgdG9vbHMvYW1wdGVzdCBcCisgICAgdG9vbHMvaHdkYiBcCisgICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKKyAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAorICAgIHRvb2xzL2J0aW5mbyBcCisgICAgdG9vbHMvYnRzbm9vcCBcCisgICAgdG9vbHMvYnRwcm94eSBcCisgICAgdG9vbHMvYnRpb3Rlc3QgXAorICAgIHRvb2xzL2JuZXB0ZXN0IFwKKyAgICB0b29scy9tY2FwdGVzdCBcCisgICAgdG9vbHMvY2x0ZXN0IFwKKyAgICB0b29scy9vb2J0ZXN0IFwKKyAgICB0b29scy9hZHZ0ZXN0IFwKKyAgICB0b29scy9zZXEyYnNlcSBcCisgICAgdG9vbHMvbm9rZncgXAorICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCisgICAgdG9vbHMvZWRkeXN0b25lIFwKKyAgICB0b29scy9pYmVhY29uIFwKKyAgICB0b29scy9idGdhdHQtY2xpZW50IFwKKyAgICB0b29scy9idGdhdHQtc2VydmVyIFwKKyAgICB0b29scy90ZXN0LXJ1bm5lciBcCisgICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAorICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCisgICAgcHJvZmlsZXMvaWFwL2lhcGQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2J0cGNsaWVudCcsICd0b29scy9idHBjbGllbnQnLCAnJywgZCl9IFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKaW5kZXggZmIzOGFiNC4uZDNlZWIzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKQEAgLTE1LDcgKzE1LDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcwogCi1ERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHBwcCByZWFkbGluZSIKK0RFUEVORFMgID0gImRidXMgZ2xpYi0yLjAgcHBwIgogCiBJTkNfUFIgPSAicjIwIgogCkBAIC0yNywxMyArMjcsMTEgQEAKICAgICAtLWVuYWJsZS1ldGhlcm5ldCBcCiAgICAgLS1lbmFibGUtdG9vbHMgXAogICAgIC0tZGlzYWJsZS1wb2xraXQgXAotICAgIC0tZW5hYmxlLWNsaWVudCBcCiAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ3aXNwciBcCitQQUNLQUdFQ09ORklHID8/PSAid2lzcHIgaXB0YWJsZXMgY2xpZW50XAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJzNnIHN5c3RlbWQgd2lmaScsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBpcHRhYmxlcyBcCiAiCiAKICMgSWYgeW91IHdhbnQgQ29ubk1hbiB0byBzdXBwb3J0IFZQTiwgYWRkIGZvbGxvd2luZyBzdGF0ZW1lbnQgaW50bwpAQCAtNTEsOSArNDksMTAgQEAKIFBBQ0tBR0VDT05GSUdbcHB0cF0gPSAiLS1lbmFibGUtcHB0cCAtLXdpdGgtcHB0cD0ke3NiaW5kaXJ9L3BwdHAsLS1kaXNhYmxlLXBwdHAsLHBwdHAtbGludXgiCiAjIFdJU1ByIHN1cHBvcnQgZm9yIGxvZ2dpbmcgaW50byBob3RzcG90cywgcmVxdWlyZXMgVExTCiBQQUNLQUdFQ09ORklHW3dpc3ByXSA9ICItLWVuYWJsZS13aXNwciwtLWRpc2FibGUtd2lzcHIsZ251dGxzLCIKLVBBQ0tBR0VDT05GSUdbbmZ0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1uZnRhYmxlcyAsLGxpYm1ubCBsaWJuZnRubCwsa2VybmVsLW1vZHVsZS1uZi10YWJsZXMtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1uYXQtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1yb3V0ZS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW1ldGEga2VybmVsLW1vZHVsZS1uZnQtbWFzcS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW5hdCIKK1BBQ0tBR0VDT05GSUdbbmZ0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1uZnRhYmxlcyAsLGxpYm1ubCBsaWJuZnRubCwsa2VybmVsLW1vZHVsZS1uZi10YWJsZXMga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tbmF0LWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tcm91dGUtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1tYXNxLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbmF0IgogUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS13aXRoLWZpcmV3YWxsPWlwdGFibGVzICwsaXB0YWJsZXMsaXB0YWJsZXMiCiBQQUNLQUdFQ09ORklHW25mY10gPSAiLS1lbmFibGUtbmVhcmQsIC0tZGlzYWJsZS1uZWFyZCwgbmVhcmQsIG5lYXJkIgorUEFDS0FHRUNPTkZJR1tjbGllbnRdID0gIi0tZW5hYmxlLWNsaWVudCwtLWRpc2FibGUtY2xpZW50LHJlYWRsaW5lIgogCiBJTklUU0NSSVBUX05BTUUgPSAiY29ubm1hbiIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA1IDUgMiAzIC4gc3RvcCAyMiAwIDEgNiAuIgpAQCAtODcsNyArODYsNiBAQAogCWlmIFsgLWUgJHtCfS90b29scy93aXNwciBdOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke0J9L3Rvb2xzL3dpc3ByICR7RH0ke2JpbmRpcn0KIAlmaQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2NsaWVudC9jb25ubWFuY3RsICR7RH0ke2JpbmRpcn0KIAogCSMgV2UgZG9uJ3QgbmVlZCB0byBwYWNrYWdlIGFuIGVtcHR5IGRpcmVjdG9yeQogCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmRpcn0vY29ubm1hbi9zY3JpcHRzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCmluZGV4IGM0Njk3YmUuLmQ0NjEzMGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCkBAIC0xMDAsNiArMTAwLDcgQEAKIFBBQ0tBR0VTICs9ICJkaGNwLWxpYnMgZGhjcC1zZXJ2ZXIgZGhjcC1zZXJ2ZXItY29uZmlnIGRoY3AtY2xpZW50IGRoY3AtcmVsYXkgZGhjcC1vbXNoZWxsIgogCiBQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1jbGllbnQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdpcHJvdXRlMicsICcnLCBkKX0iCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKIEZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9L2xpYmRoY3BjdGwuc28uMCogJHtsaWJkaXJ9L2xpYm9tYXBpLnNvLjAqICR7bGliZGlyfS9saWJkaGNwLnNvLjAqIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLUZpeC1hLU5TVVBEQVRFLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMmExMTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLUZpeC1hLU5TVVBEQVRFLWNvbXBpbGluZy1pc3N1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYTU5Y2I5OGE0NzNjYWEyYWZkNjRkN2FlMzY4NDgwYjZlOWY5MWIzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgTWF5IDIwMTkgMTE6MDc6MTUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGEgTlNVUERBVEUgY29tcGlsaW5nIGlzc3VlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbUGF0Y2ggc2VudCB0bzogaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvZGhjcC9pc3N1ZXMvMTZdCi0KLUEgZm9sbG93aW5nIGVycm9yIHdhcyBvYnNlcnZlZCB3aGVuIE5TVVBEQVRFIGlzIG5vdCBkZWZpbmVkOgotfCBvbWFwaXAvaXNjbGliLmM6IEluIGZ1bmN0aW9uICdkbnNfY2xpZW50X2luaXQnOgotfCBvbWFwaXAvaXNjbGliLmM6MzU2OjE4OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2Ruc2NsaWVudCcKLXwgICBpZiAoZGhjcF9nYmxfY3R4LmRuc2NsaWVudCA9PSBOVUxMKSB7Ci18ICAgICAgICAgICAgICAgICAgIF4KLXwgb21hcGlwL2lzY2xpYi5jOjM2MzoyNDogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICdkbnNjbGllbnQnCi18ICAgICAgICAgICAgJmRoY3BfZ2JsX2N0eC5kbnNjbGllbnQsCi18ICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgb21hcGlwL2lzY2xpYi5jOjM2NDoyNDogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICd1c2VfbG9jYWw0JwotfCAgICAgICAgICAgIChkaGNwX2dibF9jdHgudXNlX2xvY2FsNCA/Ci18ICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgb21hcGlwL2lzY2xpYi5jOjM2NToyNTogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICdsb2NhbDRfc29ja2FkZHInCi18ICAgICAgICAgICAgICZkaGNwX2dibF9jdHgubG9jYWw0X3NvY2thZGRyCi18ICAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjc6MjQ6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAndXNlX2xvY2FsNicKLXwgICAgICAgICAgICAoZGhjcF9nYmxfY3R4LnVzZV9sb2NhbDYgPwotfCAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjg6MjU6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnbG9jYWw2X3NvY2thZGRyJwotfCAgICAgICAgICAgICAmZGhjcF9nYmxfY3R4LmxvY2FsNl9zb2NrYWRkcgotCi1GaXggaXQgYnkgYWRkaW5nIE5TVVBEQVRFIGNvbmRpdGlvbmFsIGNoZWNraW5nLgotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci0tLS0KLSBpbmNsdWRlcy9vbWFwaXAvaXNjbGliLmggfCAyICsrCi0gb21hcGlwL2lzY2xpYi5jICAgICAgICAgIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmggYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLWluZGV4IDUzOGI5MjcuLjZjMjA1ODQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLSsrKyBiL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotQEAgLTE0MSw2ICsxNDEsOCBAQCB2b2lkIGlzY2xpYl9jbGVhbnVwKHZvaWQpOwotIHZvaWQgZGhjcF9zaWduYWxfaGFuZGxlcihpbnQgc2lnbmFsKTsKLSBleHRlcm4gaW50IHNodXRkb3duX3NpZ25hbDsKLSAKLSsjaWYgZGVmaW5lZCAoTlNVUERBVEUpCi0gaXNjX3Jlc3VsdF90IGRuc19jbGllbnRfaW5pdCgpOwotKyNlbmRpZgotIAotICNlbmRpZiAvKiBJU0NMSUJfSCAqLwotZGlmZiAtLWdpdCBhL29tYXBpcC9pc2NsaWIuYyBiL29tYXBpcC9pc2NsaWIuYwotaW5kZXggZGIzYjg5NS4uY2U0YjRhMSAxMDA2NDQKLS0tLSBhL29tYXBpcC9pc2NsaWIuYwotKysrIGIvb21hcGlwL2lzY2xpYi5jCi1AQCAtMzUxLDYgKzM1MSw3IEBAIHZvaWQgZGhjcF9zaWduYWxfaGFuZGxlcihpbnQgc2lnbmFsKSB7Ci0gCX0KLSB9Ci0gCi0rI2lmIGRlZmluZWQgKE5TVVBEQVRFKQotIGlzY19yZXN1bHRfdCBkbnNfY2xpZW50X2luaXQoKSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWlmIChkaGNwX2dibF9jdHguZG5zY2xpZW50ID09IE5VTEwpIHsKLUBAIC0zODcsMyArMzg4LDQgQEAgaXNjX3Jlc3VsdF90IGRuc19jbGllbnRfaW5pdCgpIHsKLSAKLSAJcmV0dXJuIElTQ19SX1NVQ0NFU1M7Ci0gfQotKyNlbmRpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1tYXN0ZXItQWRkZWQtaW5jbHVkZXMtb2YtbmV3LUJJTkQ5LWNvbXBhdGliaWxpdHktaGVhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmMxNDIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1tYXN0ZXItQWRkZWQtaW5jbHVkZXMtb2YtbmV3LUJJTkQ5LWNvbXBhdGliaWxpdHktaGVhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSA4MTk0ZGFhYmZkNTkwZjE3ODI1ZjBjNjFlOTUzNGJlZTVjOTljYzg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIE1hcmt3YWxkZXIgPHRtYXJrQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDE0IFNlcCAyMDE4IDEzOjQxOjQxIC0wNDAwCi1TdWJqZWN0OiBbbWFzdGVyXSBBZGRlZCBpbmNsdWRlcyBvZiBuZXcgQklORDkgY29tcGF0aWJpbGl0eSBoZWFkZXJzCi0KLSAgICBNZXJnZXMgaW4gcnQ0ODA3Mi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQWRyaWFuIEJ1bmsgPGJ1bmtAc3R1c3RhLmRlPgotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oIGIvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi1pbmRleCA3NWE4N2ZmNi4uNTM4YjkyN2YgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLSsrKyBiL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotQEAgLTQ4LDYgKzQ4LDkgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG5ldGRiLmg+Ci0gCi0rI2luY2x1ZGUgPGlzYy9ib29sZWFuLmg+Ci0rI2luY2x1ZGUgPGlzYy9pbnQuaD4KLSsKLSAjaW5jbHVkZSA8aXNjL2J1ZmZlci5oPgotICNpbmNsdWRlIDxpc2MvbGV4Lmg+Ci0gI2luY2x1ZGUgPGlzYy9saWIuaD4KLWRpZmYgLS1naXQgYS9pbmNsdWRlcy9vbWFwaXAvcmVzdWx0LmggYi9pbmNsdWRlcy9vbWFwaXAvcmVzdWx0LmgKLWluZGV4IDkxMjQzZTFiLi44NjAyOThmNiAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL29tYXBpcC9yZXN1bHQuaAotKysrIGIvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oCi1AQCAtMjYsNiArMjYsNyBAQAotICNpZm5kZWYgREhDUF9SRVNVTFRfSAotICNkZWZpbmUgREhDUF9SRVNVTFRfSCAxCi0gCi0rI2luY2x1ZGUgPGlzYy9ib29sZWFuLmg+Ci0gI2luY2x1ZGUgPGlzYy9sYW5nLmg+Ci0gI2luY2x1ZGUgPGlzYy9yZXN1bHRjbGFzcy5oPgotICNpbmNsdWRlIDxpc2MvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zZXJ2ZXIvZGhjcHY2LmMgYi9zZXJ2ZXIvZGhjcHY2LmMKLWluZGV4IGE3MTEwZjk4Li5jZGU0ZjYxNyAxMDA2NDQKLS0tLSBhL3NlcnZlci9kaGNwdjYuYwotKysrIGIvc2VydmVyL2RoY3B2Ni5jCi1AQCAtMTAzNCw3ICsxMDM0LDggQEAgdm9pZCBjaGVja19wb29sNl90aHJlc2hvbGQoc3RydWN0IHJlcGx5X3N0YXRlICpyZXBseSwKLSAJCQkJICBzaGFyZWRfbmFtZSwKLSAJCQkJICBpbmV0X250b3AoQUZfSU5FVDYsICZsZWFzZS0+YWRkciwKLSAJCQkJCSAgICB0bXBfYWRkciwgc2l6ZW9mKHRtcF9hZGRyKSksCi0tCQkJCSAgdXNlZCwgY291bnQpOwotKwkJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKHVzZWQpLAotKwkJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGNvdW50KSk7Ci0gCQl9Ci0gCQlyZXR1cm47Ci0gCX0KLUBAIC0xMDY2LDcgKzEwNjcsOCBAQCB2b2lkIGNoZWNrX3Bvb2w2X3RocmVzaG9sZChzdHJ1Y3QgcmVwbHlfc3RhdGUgKnJlcGx5LAotIAkJICAiYWRkcmVzczogJXM7IGhpZ2ggdGhyZXNob2xkICVkJSUgJWxsdS8lbGx1LiIsCi0gCQkgIHNoYXJlZF9uYW1lLAotIAkJICBpbmV0X250b3AoQUZfSU5FVDYsICZsZWFzZS0+YWRkciwgdG1wX2FkZHIsIHNpemVvZih0bXBfYWRkcikpLAotLQkJICBwb29saGlnaCwgdXNlZCwgY291bnQpOwotKwkJICBwb29saGlnaCwgKGxvbmcgbG9uZyB1bnNpZ25lZCkodXNlZCksCi0rCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGNvdW50KSk7Ci0gCi0gCS8qIGhhbmRsZSB0aGUgbG93IHRocmVzaG9sZCBub3csIGlmIHdlIGRvbid0Ci0gCSAqIGhhdmUgb25lIHdlIGRlZmF1bHQgdG8gMC4gKi8KLUBAIC0xNDM2LDEyICsxNDM4LDE1IEBAIHBpY2tfdjZfYWRkcmVzcyhzdHJ1Y3QgcmVwbHlfc3RhdGUgKnJlcGx5KQotIAkJbG9nX2RlYnVnKCJVbmFibGUgdG8gcGljayBjbGllbnQgYWRkcmVzczogIgotIAkJCSAgIm5vIGFkZHJlc3NlcyBhdmFpbGFibGUgIC0gc2hhcmVkIG5ldHdvcmsgJXM6ICIKLSAJCQkgICIgMl42NC0xIDwgdG90YWwsICVsbHUgYWN0aXZlLCAgJWxsdSBhYmFuZG9uZWQiLAotLQkJCSAgc2hhcmVkX25hbWUsIGFjdGl2ZSAtIGFiYW5kb25lZCwgYWJhbmRvbmVkKTsKLSsJCQkgIHNoYXJlZF9uYW1lLCAobG9uZyBsb25nIHVuc2lnbmVkKShhY3RpdmUgLSBhYmFuZG9uZWQpLAotKwkJCSAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWJhbmRvbmVkKSk7Ci0gCX0gZWxzZSB7Ci0gCQlsb2dfZGVidWcoIlVuYWJsZSB0byBwaWNrIGNsaWVudCBhZGRyZXNzOiAiCi0gCQkJICAibm8gYWRkcmVzc2VzIGF2YWlsYWJsZSAgLSBzaGFyZWQgbmV0d29yayAlczogIgotIAkJCSAgIiVsbHUgdG90YWwsICVsbHUgYWN0aXZlLCAgJWxsdSBhYmFuZG9uZWQiLAotLQkJCSAgc2hhcmVkX25hbWUsIHRvdGFsLCBhY3RpdmUgLSBhYmFuZG9uZWQsIGFiYW5kb25lZCk7Ci0rCQkJICBzaGFyZWRfbmFtZSwgKGxvbmcgbG9uZyB1bnNpZ25lZCkodG90YWwpLAotKwkJCSAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWN0aXZlIC0gYWJhbmRvbmVkKSwKLSsJCSAgICAgICAgICAobG9uZyBsb25nIHVuc2lnbmVkKShhYmFuZG9uZWQpKTsKLSAJfQotIAotIAlyZXR1cm4gSVNDX1JfTk9SRVNPVVJDRVM7Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKaW5kZXggYjcxYzkzZC4uN2I1NzczMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTg1LDkgKzg1LDExIEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZGhjcC00LjQuMS5vcmlnL3JlbGF5L01ha2VmaWxlLmFtCiArKysgZGhjcC00LjQuMS9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLiB0ZXN0cworCiAtQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwogK0FNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCisKICBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKICBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMDc3N2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXJlcXVpcmUgZGhjcC5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTMtZml4dXBfdXNlX2xpYmJpbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtd29ya2Fyb3VuZC1idXN5Ym94LWxpbWl0YXRpb24taW4tbGludXgtZGhjbGllbnQtc2NyaXB0LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE4YzdmNGRjYmIwYTYzZGYyNTA5ODIxNmQ0N2IxZWRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMjI1MDg5MjJhYjM2N2I0YWY0NjY0YTA0NzJkYzIyMGNjOTYwMzQ4MmNmM2MxNmQ5YWZmMTRmM2E3NmI2MDgiCi0KLUxERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1tiaW5kLWh0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NmEyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgZGhjcC5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTMtZml4dXBfdXNlX2xpYmJpbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtd29ya2Fyb3VuZC1idXN5Ym94LWxpbWl0YXRpb24taW4tbGludXgtZGhjbGllbnQtc2NyaXB0LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjJhZmRhZjg0OThkYzFlZGFmMzAxMmVmZGQ1ODliM2UxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhN2NjZDY0YTE2ZTVlNjhmN2I1ZTBmNTI3ZmQwNzI0MGEyODkyZWE1M2ZlMjQ1NjIwZjRmNWY2MDcwMDQ1MjEiCisKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tiaW5kLWh0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKaW5kZXggNjg0ZmJlMC4uY2M5NDEwYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKQEAgLTE0MywxMSArMTQzLDE1IEBACiBBTFRFUk5BVElWRV8ke1BOfS1ob3N0bmFtZSA9ICJob3N0bmFtZSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZV0gID0gIiR7YmFzZV9iaW5kaXJ9L2hvc3RuYW1lIgogCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaG9zdG5hbWUuMSBkbnNkb21haW5uYW1lLjEgbG9nZ2VyLjEgc3lzbG9nZC44IgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhvc3RuYW1lLjEgZG5zZG9tYWlubmFtZS4xIGxvZ2dlci4xIHN5c2xvZ2QuOCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdGZ0cGQuOCB0ZnRwLjEgdGVsbmV0ZC44IgogQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbZG5zZG9tYWlubmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9kbnNkb21haW5uYW1lLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbG9nZ2VyLjFdID0gIiR7bWFuZGlyfS9tYW4xL2xvZ2dlci4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZ2QuOF0gPSAiJHttYW5kaXJ9L21hbjgvc3lzbG9nZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbG5ldGQuOF0gPSAiJHttYW5kaXJ9L21hbjgvdGVsbmV0ZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RmdHBkLjhdID0gIiR7bWFuZGlyfS9tYW44L3RmdHBkLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGZ0cC4xXSA9ICIke21hbmRpcn0vbWFuMS90ZnRwLjEiCiAKIEFMVEVSTkFUSVZFXyR7UE59LWlmY29uZmlnID0gImlmY29uZmlnIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2lmY29uZmlnXSAgPSAiJHtiYXNlX3NiaW5kaXJ9L2lmY29uZmlnIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKaW5kZXggZmMzMWI4NC4uNDAzZDI2NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCkBAIC0xNSwxMiArMTUsMTkgQEAKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInRpcGMgZWxmIgorUEFDS0FHRUNPTkZJRyA/Pz0gInRpcGMgZWxmIGRldmxpbmsiCiBQQUNLQUdFQ09ORklHW3RpcGNdID0gIiwsbGlibW5sLCIKIFBBQ0tBR0VDT05GSUdbZWxmXSA9ICIsLGVsZnV0aWxzLCIKK1BBQ0tBR0VDT05GSUdbZGV2bGlua10gPSAiLCxsaWJtbmwsIgogCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBLRVJORUxfSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFNVQkRJUlM9J2xpYiB0YyBpcCBicmlkZ2UgbWlzYyBnZW5sIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aXBjJywgJ3RpcGMnLCAnJywgZCl9JyBTQklORElSPScke2Jhc2Vfc2JpbmRpcn0nIExJQkRJUj0nJHtsaWJkaXJ9JyIKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgQ0M9JyR7Q0N9JyBcCisgICAgS0VSTkVMX0lOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgIERPQ0RJUj0ke2RvY2Rpcn0vaXByb3V0ZTIgXAorICAgIFNVQkRJUlM9J2xpYiB0YyBpcCBicmlkZ2UgbWlzYyBnZW5sICR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdkZXZsaW5rIHRpcGMnLCBkKX0nIFwKKyAgICBTQklORElSPScke2Jhc2Vfc2JpbmRpcn0nIFwKKyAgICBMSUJESVI9JyR7bGliZGlyfScgXAorIgogCiBkb19jb25maWd1cmVfYXBwZW5kICgpIHsKICAgICBzaCBjb25maWd1cmUgJHtTVEFHSU5HX0lOQ0RJUn0KQEAgLTM5LDE0ICs0NiwxOCBAQAogIyBUaGUgLnNvIGZpbGVzIGluIGlwcm91dGUyLXRjIGFyZSBtb2R1bGVzLCBub3QgdHJhZGl0aW9uYWwgbGlicmFyaWVzCiBJTlNBTkVfU0tJUF8ke1BOfS10YyA9ICJkZXYtc28iCiAKLVBBQ0tBR0VTID0rICIke1BOfS10YyBcCi0gICAgICAgICAgICAgJHtQTn0tbG5zdGF0IFwKLSAgICAgICAgICAgICAke1BOfS1pZnN0YXQgXAotICAgICAgICAgICAgICR7UE59LWdlbmwgXAotICAgICAgICAgICAgICR7UE59LXJ0YWNjdCBcCi0gICAgICAgICAgICAgJHtQTn0tbnN0YXQgXAotICAgICAgICAgICAgICR7UE59LXNzIFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aXBjJywgJyR7UE59LXRpcGMnLCAnJywgZCl9IgorUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1kZXZsaW5rIFwKKyAgICAke1BOfS1nZW5sIFwKKyAgICAke1BOfS1pZnN0YXQgXAorICAgICR7UE59LWxuc3RhdCBcCisgICAgJHtQTn0tbnN0YXQgXAorICAgICR7UE59LXJ0YWNjdCBcCisgICAgJHtQTn0tc3MgXAorICAgICR7UE59LXRjIFwKKyAgICAke1BOfS10aXBjIFwKKyIKKwogRklMRVNfJHtQTn0tdGMgPSAiJHtiYXNlX3NiaW5kaXJ9L3RjKiBcCiAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdGMvKi5zbyIKIEZJTEVTXyR7UE59LWxuc3RhdCA9ICIke2Jhc2Vfc2JpbmRpcn0vbG5zdGF0IFwKQEAgLTU4LDYgKzY5LDcgQEAKIEZJTEVTXyR7UE59LW5zdGF0ID0gIiR7YmFzZV9zYmluZGlyfS9uc3RhdCIKIEZJTEVTXyR7UE59LXNzID0gIiR7YmFzZV9zYmluZGlyfS9zcyIKIEZJTEVTXyR7UE59LXRpcGMgPSAiJHtiYXNlX3NiaW5kaXJ9L3RpcGMiCitGSUxFU18ke1BOfS1kZXZsaW5rID0gIiR7YmFzZV9zYmluZGlyfS9kZXZsaW5rIgogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJpcCIKIEFMVEVSTkFUSVZFX1RBUkdFVFtpcF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lwLiR7QlBOfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE4NmNiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIGlwcm91dGUyLmluYwotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIyNzQwNDQxM2M4ZDZkYjY0OWQ2MTg4ZWFkMWU1YTZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiMWMxZTQ1OTkzYTNiZDI0Mzg1NDNmZDQzMzJkNzBmMTcyNmE2ZTZmZjk3ZGM2MTNhODI1OGM5OTMxMTdiM2YiCi0KLSMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUwotIwotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGFiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS41LjAuYmIKQEAgLTAsMCArMSwxMiBAQAorcmVxdWlyZSBpcHJvdXRlMi5pbmMKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZThlMmNkYjQxNmQ0YThlZjM5NTI1ZDM5YWI3YzJkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWM1NDM0MzVjYWMyMDhhMTFkYjQ0YzljYzhlMzVhYTkwMmJlZmVmODc1MDU5NDY1NGVlNzE5NDFjMzg4ZjdiIgorCisjIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKKyMKK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9IC1mY29tbW9uJyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pdy9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoCmluZGV4IGViMDFhNWEuLjE3OWZkOTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pdy9zZXBhcmF0ZS1vYmpkaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3L3NlcGFyYXRlLW9iamRpci5wYXRjaApAQCAtMSwzICsxLDYgQEAKK0Zyb20gZmY5ZjBhNjMxYzk5ZmI2ZTI2NzdjMDJiZjU3MmE1ZTY5YzcwZjVjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDIyOjQ4OjAzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgc2VwYXJhdGlvbiBvZiBTUkNESVIgYW5kIE9CSkRJUgogCiBUeXBpY2FsIHVzZSBvZiBWUEFUSCB0byBsb2NhdGUgdGhlIHNvdXJjZXMuCkBAIC0xMSwxMiArMTQsMTIgQEAKICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMzNhYWY2YS4uOTAzMDc5NiAxMDA2NDQKK2luZGV4IDkwZjIyNTEuLjcxNGNkYjkgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC0xLDUgKzEsOSBAQAogIE1BS0VGTEFHUyArPSAtLW5vLXByaW50LWRpcmVjdG9yeQotCisgCiArU1JDRElSID89ICQoZGlyICQobGFzdHdvcmQgJChNQUtFRklMRV9MSVNUKSkpCiArT0JKRElSID89ICQoUFdEKQogK1ZQQVRIID0gJChTUkNESVIpCkBAIC0yNCwxOSArMjcsMjQgQEAKICBQUkVGSVggPz0gL3VzcgogIFNCSU5ESVIgPz0gJChQUkVGSVgpL3NiaW4KICBNQU5ESVIgPz0gJChQUkVGSVgpL3NoYXJlL21hbgotQEAgLTEwMywxMSArMTA3LDExIEBAIFZFUlNJT05fT0JKUyA6PSAkKGZpbHRlci1vdXQgdmVyc2lvbi5vLCAkKE9CSlMpKQorQEAgLTkyLDcgKzk2LDcgQEAgYWxsOiAkKEFMTCkKICB2ZXJzaW9uLmM6IHZlcnNpb24uc2ggJChwYXRzdWJzdCAlLm8sJS5jLCQoVkVSU0lPTl9PQkpTKSkgbmw4MDIxMS5oIGl3LmggTWFrZWZpbGUgXAogIAkJJCh3aWxkY2FyZCAuZ2l0L2luZGV4IC5naXQvcmVmcy90YWdzKQogIAlAJChOUSkgJyBHRU4gJyAkQAogLQkkKFEpLi92ZXJzaW9uLnNoICRACiArCSQoUSljZCAkKFNSQ0RJUikgJiYgLi92ZXJzaW9uLnNoICQoT0JKRElSKS8kQAotCi0gJS5vOiAlLmMgaXcuaCBubDgwMjExLmgKKyAKKyBubDgwMjExLWNvbW1hbmRzLmluYzogbmw4MDIxMS5oCisgCUAkKE5RKSAnIEdFTiAnICRACitAQCAtMTAwLDcgKzEwNCw3IEBAIG5sODAyMTEtY29tbWFuZHMuaW5jOiBubDgwMjExLmgKKyAKKyAlLm86ICUuYyBpdy5oIG5sODAyMTEuaCBubDgwMjExLWNvbW1hbmRzLmluYwogIAlAJChOUSkgJyBDQyAgJyAkQAogLQkkKFEpJChDQykgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8CiArCSQoUSkkKENDKSAtSSQoU1JDRElSKSAkKENGTEFHUykgJChDUFBGTEFHUykgLWMgLW8gJEAgJDwKLQorIAogIGlmZXEgKCQoSVdfQU5EUk9JRF9CVUlMRCksKQogIGl3OgkkKE9CSlMpCi0tLQotMi4yMC4xIChBcHBsZSBHaXQtMTE3KQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ZjEzZjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAibmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciB3aXJlbGVzcyBkZXZpY2VzIgotREVTQ1JJUFRJT04gPSAiaXcgaXMgYSBuZXcgbmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciBcCi13aXJlbGVzcyBkZXZpY2VzLiBJdCBzdXBwb3J0cyBhbG1vc3QgYWxsIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIFwKLXRvIHRoZSBrZXJuZWwgcmVjZW50bHkuICIKLUhPTUVQQUdFID0gImh0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL3VzZXJzL0RvY3VtZW50YXRpb24vaXciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3ODYxOGE1YzRhZjI1ZTliOTNlZjBiZTFhOTNmNzc0IgotCi1ERVBFTkRTID0gImxpYm5sIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9pdy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGUtb2JqZGlyLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZkNGQxYzBlZTM0ZjNhN2JkYTBlNmFhZmNkN2FhZjMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3NWFiYmZjZTg2MzQ4YzBiNzBlNzc4YzEzYTk0YzBiZmM5YWJjN2E1MDZkMmJkNjA4MjYxNTgzYWVlZGY2NGEiCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgLWYgJyR7U30vTWFrZWZpbGUnIFwKLSAgICBcCi0gICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0gICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNThlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS40LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAibmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciB3aXJlbGVzcyBkZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiaXcgaXMgYSBuZXcgbmw4MDIxMSBiYXNlZCBDTEkgY29uZmlndXJhdGlvbiB1dGlsaXR5IGZvciBcCit3aXJlbGVzcyBkZXZpY2VzLiBJdCBzdXBwb3J0cyBhbG1vc3QgYWxsIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkIFwKK3RvIHRoZSBrZXJuZWwgcmVjZW50bHkuICIKK0hPTUVQQUdFID0gImh0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL3VzZXJzL0RvY3VtZW50YXRpb24vaXciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3ODYxOGE1YzRhZjI1ZTliOTNlZjBiZTFhOTNmNzc0IgorCitERVBFTkRTID0gImxpYm5sIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9pdy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pdy12ZXJzaW9uLnNoLWRvbi10LXVzZS1naXQtZGVzY3JpYmUtZm9yLXZlcnNpb25pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGUtb2JqZGlyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjA4YTRmNTgxYTM5ZGM2MmZhODVkM2FmNzk2ZDg0NGI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0M2NkMjQ0NmE2YzcyNDJmZGVkMzc2NmQwNTRhYjJhMjE0YTM1MTRiOWE4YjdlOTQyZmVkOGZiMTNjMTM3MGMiCisKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgLWYgJyR7U30vTWFrZWZpbGUnIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisgICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKKyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MzUwNTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIk5hbWUgU2VydmljZSBTd2l0Y2ggbW9kdWxlIGZvciBNdWx0aWNhc3QgRE5TICh6ZXJvY29uZikgbmFtZSByZXNvbHV0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovLzBwb2ludGVyLmRlL2xlbm5hcnQvcHJvamVjdHMvbnNzLW1kbnMvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1ERVBFTkRTID0gImF2YWhpIgotUFIgPSAicjciCi0KLVNSQ19VUkkgPSAiaHR0cDovLzBwb2ludGVyLmRlL2xlbm5hcnQvcHJvamVjdHMvbnNzLW1kbnMvbnNzLW1kbnMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDM5MzhmMTc2NDZlZmJiNTBhYTcwYmE1Zjk5ZjUxZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU2ODNjMmU3YzM5MjE4MTQ3MDZkNjJmYmJkM2U5Y2JmNDkzYTc1ZmEwMDI1NWUwZTcxNTUwOGQ4MTM0ZmE2ZCIKLQotUyA9ICIke1dPUktESVJ9L25zcy1tZG5zLSR7UFZ9IgotCi1sb2NhbHN0YXRlZGlyID0gIi8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQotRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tZGlzYWJsZS1seW54IC0tZW5hYmxlLWF2YWhpIgotCi0jIHN1cHByZXNzIHdhcm5pbmcsIGJ1dCBkb24ndCBib3RoZXIgd2l0aCBhdXRvbmFtZXIKLUxFQURfU09OQU1FID0gImxpYm5zc19tZG5zLnNvIgotREVCSUFOTkFNRV8ke1BOfSA9ICJsaWJuc3MtbWRucyIKLQotUkRFUEVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCXNlZCAnCi0JCS9eaG9zdHM6LyAhYgotCQkvXDxtZG5zXCg0XHw2XClcP1woX21pbmltYWxcKVw/XD4vIGIKLQkJcy9cKFtbOmJsYW5rOl1dXCtcKWRuc1w+L1wxbWRuczRfbWluaW1hbCBbTk9URk9VTkQ9cmV0dXJuXSBkbnMvZwotCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLXBrZ19wcmVybV8ke1BOfSAoKSB7Ci0Jc2VkICcKLQkJL15ob3N0czovICFiCi0JCXMvW1s6Ymxhbms6XV1cK21kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwoIFxbTk9URk9VTkQ9cmV0dXJuXF1cKVw/XClcPy8vZwotCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQ0NjAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTQuMS5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIk5hbWUgU2VydmljZSBTd2l0Y2ggbW9kdWxlIGZvciBNdWx0aWNhc3QgRE5TICh6ZXJvY29uZikgbmFtZSByZXNvbHV0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xhdGhpYXQvbnNzLW1kbnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK0RFUEVORFMgPSAiYXZhaGkiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sYXRoaWF0L25zcy1tZG5zIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNDFjOWM1ZTc4ZjI4N2VkNGI0MWFjNDM4YzE4NzNmYTcxYmZhNzBhZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKworRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IgorCitSREVQRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJc2VkICcKKwkJL15ob3N0czovICFiCisJCS9cPG1kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwpXD9cPi8gYgorCQlzL1woW1s6Ymxhbms6XV1cK1wpZG5zXD4vXDFtZG5zNF9taW5pbWFsIFtOT1RGT1VORD1yZXR1cm5dIGRucy9nCisJCScgLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59ICgpIHsKKwlzZWQgJworCQkvXmhvc3RzOi8gIWIKKwkJcy9bWzpibGFuazpdXVwrbWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXCggXFtOT1RGT1VORD1yZXR1cm5cXVwpXD9cKVw/Ly9nCisJCScgLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2JjM2VhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDc5MDE5ZDk3NjU4NGM1OThmOGQwYTlkOGRlNDNjOTg5OTQ2Zjk3NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci1EYXRlOiBXZWQsIDEzIEZlYiAyMDE5IDA5OjI4OjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIHRvb2xzIHdpdGggQ0NfRk9SX0JVSUxECi0KLVRoZSB0b29scyBhcmUgaW50ZW5kZWQgZm9yIHRoZSB0YXJnZXQgbm90IGZvciB0aGUgaG9zdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLS0tLQotIHRvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtIHwgMSAtCi0gdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtICAgfCAxIC0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbSBiL3Rvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtCi1pbmRleCAzMTU2ODE1Li44N2QwYmFjIDEwMDY0NAotLS0tIGEvdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0KLSsrKyBiL3Rvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDUgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KLSAKLS1DQz0kKENDX0ZPUl9CVUlMRCkKLSBMSUJUT09MID0gQExJQlRPT0xAIC0tdGFnPUNDCi0gCi0gbm9pbnN0X1BST0dSQU1TID0gdGVzdGxrCi1kaWZmIC0tZ2l0IGEvdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtIGIvdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtCi1pbmRleCA4YTllYzg5Li4zZTA5MmM5IDEwMDY0NAotLS0tIGEvdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtCi0rKysgYi90b29scy9ycGNnZW4vTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNSBAQAotICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgotIAotLUNDPSQoQ0NfRk9SX0JVSUxEKQotIExJQlRPT0wgPSBATElCVE9PTEAgLS10YWc9Q0MKLSAKLSBub2luc3RfUFJPR1JBTVMgPSBycGNnZW4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1GaXgtaW5jbHVkZS1vcmRlci1iZXR3ZWVuLWNvbmZpZy5oLWFuZC1zdGF0LmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMGY5MzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1GaXgtaW5jbHVkZS1vcmRlci1iZXR3ZWVuLWNvbmZpZy5oLWFuZC1zdGF0LmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotRnJvbSAyZmJjNjJlMmExM2ZjMjJiNmFlNDkxMGUyOTVhMmMxMGZiNzkwNDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWm9sdGFuIEthcmNhZ2kgPHprcjc0MzJAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMiBBdWcgMjAxOSAxMzoyNzoxNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBGaXggaW5jbHVkZSBvcmRlciBiZXR3ZWVuIGNvbmZpZy5oIGFuZCBzdGF0LmgKLQotQXQgbGVhc3Qgb24gQXJjaCBsaW51eCBBUk0sIHRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzdGF0IGluIHN0YXQuaCBkZXBlbmRzCi1vbiBfX1VTRV9GSUxFX09GRlNFVDY0LiBUaGlzIHN5bWJvbCBjb21lcyBmcm9tIGNvbmZpZy5oIHdoZW4gZGVmaW5lZCwKLXRoZXJlZm9yZSBjb25maWcuaCBtdXN0IGFsd2F5cyBiZSBpbmNsdWRlZCBiZWZvcmUgc3RhdC5oLiBGaXggYWxsCi1vY2N1cnJlbmNlcyB3aGVyZSB0aGUgb3JkZXIgaXMgd3JvbmcgYnkgbW92aW5nIGNvbmZpZy5oIHRvIHRoZSB0b3AuCi0KLVRoaXMgZml4ZXMgdGhlIGNsaWVudCBzaWRlIGVycm9yICJTdGFsZSBmaWxlIGhhbmRsZSIgd2hlbiBtb3VudGluZyBmcm9tCi1hIHNlcnZlciBydW5uaW5nIEFyY2ggTGludXggQVJNLgotCi1TaWduZWQtb2ZmLWJ5OiBab2x0YW4gS2FyY2FnaSA8emtyNzQzMkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHA6Ly9naXQubGludXgtbmZzLm9yZy8/cD1zdGV2ZWQvbmZzLXV0aWxzLmdpdDthPWNvbW1pdDtoPTJmYmM2MmUyYTEzZmMyMmI2YWU0OTEwZTI5NWEyYzEwZmI3OTA0ODZdCi0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHN1cHBvcnQvbWlzYy9uZnNkX3BhdGguYyAgICAgICAgIHwgNSArKysrLQotIHN1cHBvcnQvbWlzYy94c3RhdC5jICAgICAgICAgICAgIHwgNSArKysrLQotIHN1cHBvcnQvbmZzL2NvbmZmaWxlLmMgICAgICAgICAgIHwgOCArKysrKysrLQotIHV0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jIHwgOCArKysrLS0tLQotIHV0aWxzL2lkbWFwZC9pZG1hcGQuYyAgICAgICAgICAgIHwgOCArKysrLS0tLQotIDUgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMgYi9zdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMKLWluZGV4IDg0ZTQ4MDIuLmYwNzhhNjYgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMKLSsrKyBiL3N1cHBvcnQvbWlzYy9uZnNkX3BhdGguYwotQEAgLTEsMyArMSw3IEBACi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTUsNyArOSw2IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0gI2luY2x1ZGUgImNvbmZmaWxlLmgiCi0gI2luY2x1ZGUgInhtYWxsb2MuaCIKLSAjaW5jbHVkZSAieGxvZy5oIgotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy94c3RhdC5jIGIvc3VwcG9ydC9taXNjL3hzdGF0LmMKLWluZGV4IGZhMDQ3ODguLjRjOTk3ZWUgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L21pc2MveHN0YXQuYwotKysrIGIvc3VwcG9ydC9taXNjL3hzdGF0LmMKLUBAIC0xLDMgKzEsNyBAQAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLUBAIC01LDcgKzksNiBAQAotICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLSNpbmNsdWRlICJjb25maWcuaCIKLSAjaW5jbHVkZSAieHN0YXQuaCIKLSAKLSAjaWZkZWYgSEFWRV9GU1RBVEFUCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMvY29uZmZpbGUuYyBiL3N1cHBvcnQvbmZzL2NvbmZmaWxlLmMKLWluZGV4IGI2NDAwYmUuLjZiYThhMzUgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L25mcy9jb25mZmlsZS5jCi0rKysgYi9zdXBwb3J0L25mcy9jb25mZmlsZS5jCi1AQCAtNTAwLDcgKzUwMCw3IEBAIGNvbmZfcmVhZGZpbGUoY29uc3QgY2hhciAqcGF0aCkKLSAKLSAJaWYgKChzdGF0IChwYXRoLCAmc2IpID09IDApIHx8IChlcnJubyAhPSBFTk9FTlQpKSB7Ci0gCQljaGFyICpuZXdfY29uZl9hZGRyID0gTlVMTDsKLS0JCXNpemVfdCBzeiA9IHNiLnN0X3NpemU7Ci0rCQlvZmZfdCBzejsKLSAJCWludCBmZCA9IG9wZW4gKHBhdGgsIE9fUkRPTkxZLCAwKTsKLSAKLSAJCWlmIChmZCA9PSAtMSkgewotQEAgLTUxNyw2ICs1MTcsMTEgQEAgY29uZl9yZWFkZmlsZShjb25zdCBjaGFyICpwYXRoKQotIAotIAkJLyogb25seSBhZnRlciB3ZSBoYXZlIHRoZSBsb2NrLCBjaGVjayB0aGUgZmlsZSBzaXplIHJlYWR5IHRvIHJlYWQgaXQgKi8KLSAJCXN6ID0gbHNlZWsoZmQsIDAsIFNFRUtfRU5EKTsKLSsJCWlmIChzeiA8IDApIHsKLSsJCQl4bG9nX3dhcm4oImNvbmZfcmVhZGZpbGU6IHVuYWJsZSB0byBkZXRlcm1pbmUgZmlsZSBzaXplOiAlcyIsCi0rCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKLSsJCQlnb3RvIGZhaWw7Ci0rCQl9Ci0gCQlsc2VlayhmZCwgMCwgU0VFS19TRVQpOwotIAotIAkJbmV3X2NvbmZfYWRkciA9IG1hbGxvYyhzeisxKTsKLUBAIC0yMTYyLDYgKzIxNjcsNyBAQCBjb25mX3dyaXRlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzZWN0aW9uLCBjb25zdCBjaGFyICphcmcsCi0gCXJldCA9IDA7Ci0gCi0gY2xlYW51cDoKLSsJZmx1c2hfb3V0cXVldWUoJmlucXVldWUsIE5VTEwpOwotIAlmbHVzaF9vdXRxdWV1ZSgmb3V0cXVldWUsIE5VTEwpOwotIAotIAlpZiAoYnVmZikKLWRpZmYgLS1naXQgYS91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYyBiL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi1pbmRleCBlODExNzAzLi5mNWY5YjEwIDEwMDY0NAotLS0tIGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKLSsrKyBiL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi1AQCAtMjYsNiArMjYsMTAgQEAKLSAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICAqLwotIAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rCi0gI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1AQCAtNTEsMTAgKzU1LDYgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8bGliZGV2bWFwcGVyLmg+Ci0gCi0tI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLS0KLSAjaW5jbHVkZSAiZGV2aWNlLWRpc2NvdmVyeS5oIgotICNpbmNsdWRlICJ4Y29tbW9uLmgiCi0gI2luY2x1ZGUgIm5mc2xpYi5oIgotZGlmZiAtLWdpdCBhL3V0aWxzL2lkbWFwZC9pZG1hcGQuYyBiL3V0aWxzL2lkbWFwZC9pZG1hcGQuYwotaW5kZXggNjJlMzdiOC4uMjY3YWNlYSAxMDA2NDQKLS0tLSBhL3V0aWxzL2lkbWFwZC9pZG1hcGQuYwotKysrIGIvdXRpbHMvaWRtYXBkL2lkbWFwZC5jCi1AQCAtMzQsNiArMzQsMTAgQEAKLSAgKiAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICovCi0gCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy9pbm90aWZ5Lmg+Ci1AQCAtNjIsMTAgKzY2LDYgQEAKLSAjaW5jbHVkZSA8bGliZ2VuLmg+Ci0gI2luY2x1ZGUgPG5mc2lkbWFwLmg+Ci0gCi0tI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0tI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLS0KLSAjaW5jbHVkZSAieGxvZy5oIgotICNpbmNsdWRlICJjb25mZmlsZS5oIgotICNpbmNsdWRlICJxdWV1ZS5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaAppbmRleCBmY2IwZTk5Li5iZDM1MDE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKQEAgLTI4LDEwICsyOCwxMCBAQAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KICBzdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0gfCAgIDIgKy0KLSBzdXBwb3J0L21pc2MvZmlsZS5jICAgICAgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgIHwgMTE1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHN1cHBvcnQvbWlzYy9taXNjLmMgICAgICB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICBzdXBwb3J0L25zbS9NYWtlZmlsZS5hbSAgfCAgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCAxMTMgZGVsZXRpb25zKC0pCisgNCBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMTE3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtIGIvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtCiBpbmRleCBmOTk5M2UzLi44YjBlOWRiIDEwMDY0NApAQCAtNDgsMTAgKzQ4LDEwIEBACiAgTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmlsZS5pbgogZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9maWxlLmMgYi9zdXBwb3J0L21pc2MvZmlsZS5jCiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IGU3YzM4MTkuLjAwMDAwMDAKK2luZGV4IDA2ZjZiYjIuLjAwMDAwMDAKIC0tLSBhL3N1cHBvcnQvbWlzYy9maWxlLmMKICsrKyAvZGV2L251bGwKLUBAIC0xLDExMSArMCwwIEBACitAQCAtMSwxMTUgKzAsMCBAQAogLS8qCiAtICogQ29weXJpZ2h0IDIwMDkgT3JhY2xlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC0gKiBDb3B5cmlnaHQgMjAxNyBSZWQgSGF0LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzIsNiArNzIsMTAgQEAKIC0gKiBhbG9uZyB3aXRoIG5mcy11dGlscy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIC0gKi8KIC0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSNpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KIC0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KIC0KIC0jaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTRmMDc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA2NjQ3MWZiZjcxMDY5MTdkYTdhMTUzNmIxOGEwYTc3ZDA3NDc5Nzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTcgRGVjIDIwMTggMTU6Mjk6NDcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEbyBub3QgZmF0YWxpemUgLVdtaXNzaW5nLXByb3RvdHlwZXMKLQotVGhlcmUgY29tZXMgYmVsb3cgZXJyb3Igd2hlbiBydW4gIm1ha2UgLUMgdGVzdHMvbnNtX2NsaWVudCBuc21fY2xpZW50IgotfCBubG1fc21faW50ZXJfc3ZjLmM6MjA6MTogZXJyb3I6IG5vIHByZXZpb3VzIHByb3RvdHlwZSBmb3IgJ25sbV9zbV9wcm9nXzMnIFstV2Vycm9yPW1pc3NpbmctcHJvdG90eXBlc10KLQotSXQgaXMgYmVjYXVzZSBycGNnZW4gZG9lc24ndCBnZW5lcmF0ZSAtV21pc3NpbmctcHJvdG90eXBlcwotZnJlZSBjb2RlIGZvciBubG1fc21faW50ZXJfc3ZjLmMgd2l0aCBiZWxvdyBsb2dpYwotaW4gdGVzdHMvbnNtX2NsaWVudC9NYWtlZmlsZS5hbQotW3NuaXBdCi1HRU5GSUxFU19TVkMgICAgPSBubG1fc21faW50ZXJfc3ZjLmMKLVtzbmlwXQotJChHRU5GSUxFU19TVkMpOiAlX3N2Yy5jOiAlLnggJChSUENHRU4pCi0gICAgICAgIHRlc3QgLWYgJEAgJiYgcm0gLXJmICRAIHx8IHRydWUKLSAgICAgICAgJChSUENHRU4pIC1tIC1vICRAICQ8Ci0KLVNvIGFkZCB0aGUgbG9naWMgbm90IHRvIGZhdGFsaXplIC1XbWlzc2luZy1wcm90b3R5cGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZFtodHRwczovL21hcmMuaW5mby8/bD1saW51eC1uZnMmbT0xNTQ1MDMyNjAzMjM5MzYmdz0yXQotCi1TaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1MDAwMmI0Li5hZWJmZjAxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01ODIsNyArNTgyLDcgQEAgbXlfYW1fY2ZsYWdzPSJcCi0gIC1XYWxsIFwKLSAgLVdleHRyYSBcCi0gICRycGNnZW5fY2ZsYWdzIFwKLS0gLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXMgXAotKyAtV21pc3NpbmctcHJvdG90eXBlcyBcCi0gIC1XZXJyb3I9bWlzc2luZy1kZWNsYXJhdGlvbnMgXAotICAtV2Vycm9yPWZvcm1hdD0yIFwKLSAgLVdlcnJvcj11bmRlZiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy1mb3JtYXQtc3RyaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ2OTNlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy1mb3JtYXQtc3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLUNsYW5nIGNvbWVzIHVwIHdpdGggbW9yZSBwcmludGYgZm9ybWF0IHdhcm5pbmdzCi1Db3JyZWN0aW5nIOKAnGZvcm1hdCBzdHJpbmcgaXMgbm90IGEgc3RyaW5nIGxpdGVyYWzigJ0gd2FybmluZwotcmVxdWlyZXMgdXMgdG8gZGVjbGFyZSB0aGF0IHBhcmFtZXRlciBpcyBhIHByaW50ZiBzdHlsZSAKLWZvcm1hdCB1c2luZyB0aGUgYXR0cmlidXRlIGZsYWcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9pbmNsdWRlL3hjb21tb24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvaW5jbHVkZS94Y29tbW9uLmgKLSsrKyBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9pbmNsdWRlL3hjb21tb24uaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAKLSAvKiBGdW5jdGlvbnMgaW4gc3VuZHJpZXMuYyB0aGF0IGFyZSB1c2VkIGluIG1vdW50LmMgYW5kIHVtb3VudC5jICAqLyAKLSBjaGFyICpjYW5vbmljYWxpemUgKGNvbnN0IGNoYXIgKnBhdGgpOwotLXZvaWQgbmZzX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBuZnNfZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpOwotIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBzaXplKTsKLSB2b2lkICp4cmVhbGxvYyh2b2lkICpwLCBzaXplX3Qgc2l6ZSk7Ci0gdm9pZCB4ZnJlZSh2b2lkICopOwotQEAgLTM2LDkgKzM2LDkgQEAgY2hhciAqeHN0cm5kdXAgKGNvbnN0IGNoYXIgKnMsIGludCBuKTsKLSBjaGFyICp4c3RyY29uY2F0MiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotIGNoYXIgKnhzdHJjb25jYXQzIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSBjaGFyICp4c3RyY29uY2F0NCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLS12b2lkIGRpZSAoaW50IGVycmNvZGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLSt2b2lkIGRpZSAoaW50IGVycmNvZGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotIAotLWV4dGVybiB2b2lkIGRpZShpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rZXh0ZXJuIHZvaWQgZGllKGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotIGV4dGVybiB2b2lkICgqYXRfZGllKSh2b2lkKTsKLSAKLSAvKiBleGl0IHN0YXR1cyAtIGJpdHMgYmVsb3cgYXJlIE9SZWQgKi8KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9pbmNsdWRlL3hsb2cuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvaW5jbHVkZS94bG9nLmgKLSsrKyBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9pbmNsdWRlL3hsb2cuaAotQEAgLTQzLDEwICs0MywxMCBAQCB2b2lkCQkJeGxvZ19jb25maWcoaW50IGZhYywgaW50IG9uKTsKLSB2b2lkCQkJeGxvZ19zY29uZmlnKGNoYXIgKiwgaW50IG9uKTsKLSB2b2lkCQkJeGxvZ19mcm9tX2NvbmZmaWxlKGNoYXIgKik7Ci0gaW50CQkJeGxvZ19lbmFibGVkKGludCBmYWMpOwotLXZvaWQJCQl4bG9nKGludCBmYWMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLS12b2lkCQkJeGxvZ193YXJuKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLS12b2lkCQkJeGxvZ19lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pOwotLXZvaWQJCQl4bG9nX2Vycm5vKGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLS12b2lkCQkJeGxvZ19iYWNrZW5kKGludCBmYWMsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKLSt2b2lkCQkJeGxvZyhpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSt2b2lkCQkJeGxvZ193YXJuKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpOwotK3ZvaWQJCQl4bG9nX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKLSt2b2lkCQkJeGxvZ19lcnJubyhpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSt2b2lkCQkJeGxvZ19iYWNrZW5kKGludCBmYWMsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwotIAotICNlbmRpZiAvKiBYTE9HX0ggKi8KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uZnMveGNvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9uZnMveGNvbW1vbi5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3hjb21tb24uYwotQEAgLTkzLDcgKzkzLDEwIEBAIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pIHsKLSAKLSAgICAgIGZtdDIgPSB4c3RyY29uY2F0MiAoZm10LCAiXG4iKTsKLSAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCi0gICAgICB2ZnByaW50ZiAoc3RkZXJyLCBmbXQyLCBhcmdzKTsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICB2YV9lbmQgKGFyZ3MpOwotICAgICAgZnJlZSAoZm10Mik7Ci0gfQotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9leHBvcnRmcy9leHBvcnRmcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9leHBvcnRmcy9leHBvcnRmcy5jCi1AQCAtNjQ0LDYgKzY0NCw3IEBAIG91dDoKLSAJcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0rX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKQotIHN0YXRpYyBjaGFyCi0gZHVtcG9wdChjaGFyIGMsIGNoYXIgKmZtdCwgLi4uKQotIHsKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvc3RhdGQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL3N0YXRkL3N0YXRkLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvc3RhdGQuYwotQEAgLTEzNiw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBsb2dfbW9kZXModm9pZCkKLSAJc3RyY2F0KGJ1ZiwgIlRJLVJQQyAiKTsKLSAjZW5kaWYKLSAKLS0JeGxvZ193YXJuKGJ1Zik7Ci0rCXhsb2dfd2FybigiJXMiLCBidWYpOwotIH0KLSAKLSAvKgotSW5kZXg6IG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25mcy9zdmNfY3JlYXRlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L25mcy9zdmNfY3JlYXRlLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uZnMvc3ZjX2NyZWF0ZS5jCi1AQCAtMTg0LDcgKzE4NCw3IEBAIHN2Y19jcmVhdGVfc29jayhjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnMKLSAJCXR5cGUgPSBTT0NLX1NUUkVBTTsKLSAJCWJyZWFrOwotIAlkZWZhdWx0OgotLQkJeGxvZyhEX0dFTkVSQUwsICIlczogVW5yZWNvZ25pemVkIGJpbmQgYWRkcmVzcyBzZW1hbnRpY3M6ICV1IiwKLSsJCXhsb2coRF9HRU5FUkFMLCAiJXM6IFVucmVjb2duaXplZCBiaW5kIGFkZHJlc3Mgc2VtYW50aWNzOiAlbHUiLAotIAkJCV9fZnVuY19fLCBuY29uZi0+bmNfc2VtYW50aWNzKTsKLSAJCXJldHVybiAtMTsKLSAJfQotSW5kZXg6IG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25zbS9ycGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvbnNtL3JwYy5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbnNtL3JwYy5jCi1AQCAtMTgyLDcgKzE4Miw3IEBAIG5zbV94bWl0X2dldHBvcnQoY29uc3QgaW50IHNvY2ssIGNvbnN0IHMKLSAJdWludDMyX3QgeGlkOwotIAlYRFIgeGRyOwotIAotLQl4bG9nKERfQ0FMTCwgIlNlbmRpbmcgUE1BUF9HRVRQT1JUIGZvciAldSwgJXUsIHVkcCIsIHByb2dyYW0sIHZlcnNpb24pOwotKwl4bG9nKERfQ0FMTCwgIlNlbmRpbmcgUE1BUF9HRVRQT1JUIGZvciAlbHUsICVsdSwgdWRwIiwgcHJvZ3JhbSwgdmVyc2lvbik7Ci0gCi0gCW5zbV9pbml0X3hkcm1lbShtc2didWYsIE5TTV9NQVhNU0dTSVpFLCAmeGRyKTsKLSAJeGlkID0gbnNtX2luaXRfcnBjX2hlYWRlcihQTUFQUFJPRywgUE1BUFZFUlMsCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9jYWNoZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvbW91bnRkL2NhY2hlLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvbW91bnRkL2NhY2hlLmMKLUBAIC05NjgsOCArOTY4LDcgQEAgbG9va3VwX2V4cG9ydChjaGFyICpkb20sIGNoYXIgKnBhdGgsIHN0cgotIAkJCX0gZWxzZSBpZiAoZm91bmRfdHlwZSA9PSBpICYmIGZvdW5kLT5tX3dhcm5lZCA9PSAwKSB7Ci0gCQkJCXhsb2coTF9XQVJOSU5HLCAiJXMgZXhwb3J0ZWQgdG8gYm90aCAlcyBhbmQgJXMsICIKLSAJCQkJICAgICAiYXJiaXRyYXJpbHkgY2hvb3Npbmcgb3B0aW9ucyBmcm9tIGZpcnN0IiwKLS0JCQkJICAgICBwYXRoLCBmb3VuZC0+bV9jbGllbnQtPm1faG9zdG5hbWUsIGV4cC0+bV9jbGllbnQtPm1faG9zdG5hbWUsCi0tCQkJCSAgICAgZG9tKTsKLSsJCQkJICAgICBwYXRoLCBmb3VuZC0+bV9jbGllbnQtPm1faG9zdG5hbWUsIGV4cC0+bV9jbGllbnQtPm1faG9zdG5hbWUpOwotIAkJCQlmb3VuZC0+bV93YXJuZWQgPSAxOwotIAkJCX0KLSAJCX0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvbW91bnRkL21vdW50ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvbW91bnRkL21vdW50ZC5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9tb3VudGQuYwotQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgdm9pZAotIHNpZ19odXAgKGludCBzaWcpCi0gewotIAkvKiBkb24ndCBleGl0IG9uIFNJR0hVUCAqLwotLQl4bG9nIChMX05PVElDRSwgIlJlY2VpdmVkIFNJR0hVUC4uLiBJZ25vcmluZy5cbiIsIHNpZyk7Ci0rCXhsb2cgKExfTk9USUNFLCAiUmVjZWl2ZWQgU0lHSFVQKCVkKS4uLiBJZ25vcmluZy5cbiIsIHNpZyk7Ci0gCXJldHVybjsKLSB9Ci0gCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3JtdGNhbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL3N0YXRkL3JtdGNhbGwuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9ybXRjYWxsLmMKLUBAIC0yNDcsNyArMjQ3LDcgQEAgcHJvY2Vzc19yZXBseShGRF9TRVRfVFlQRSAqcmZkcykKLSAJCXhsb2dfd2FybigiJXM6IHNlcnZpY2UgJWQgbm90IHJlZ2lzdGVyZWQgb24gbG9jYWxob3N0IiwKLSAJCQlfX2Z1bmNfXywgTkxfTVlfUFJPRyhscCkpOwotIAl9IGVsc2UgewotLQkJeGxvZyhEX0dFTkVSQUwsICIlczogQ2FsbGJhY2sgdG8gJXMgKGZvciAlZCkgc3VjY2VlZGVkIiwKLSsJCXhsb2coRF9HRU5FUkFMLCAiJXM6IENhbGxiYWNrIHRvICVzIChmb3IgJXMpIHN1Y2NlZWRlZCIsCi0gCQkJX19mdW5jX18sIE5MX01ZX05BTUUobHApLCBOTF9NT05fTkFNRShscCkpOwotIAl9Ci0gCW5saXN0X2ZyZWUoJm5vdGlmeSwgbHApOwotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9zdmNfcnVuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9zdGF0ZC9zdmNfcnVuLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvc3ZjX3J1bi5jCi1AQCAtNTMsNiArNTMsNyBAQAotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgInN0YXRkLmgiCi0gI2luY2x1ZGUgIm5vdGxpc3QuaCIKLSAKLUBAIC0xMDQsOCArMTA1LDggQEAgbXlfc3ZjX3J1bihpbnQgc29ja2ZkKQotIAotIAkJCXR2LnR2X3NlYyAgPSBOTF9XSEVOKG5vdGlmeSkgLSBub3c7Ci0gCQkJdHYudHZfdXNlYyA9IDA7Ci0tCQkJeGxvZyhEX0dFTkVSQUwsICJXYWl0aW5nIGZvciByZXBseS4uLiAodGltZW8gJWQpIiwKLS0JCQkJCQkJdHYudHZfc2VjKTsKLSsJCQl4bG9nKERfR0VORVJBTCwgIldhaXRpbmcgZm9yIHJlcGx5Li4uICh0aW1lbyAlamQpIiwKLSsJCQkJCQkJKGludG1heF90KXR2LnR2X3NlYyk7Ci0gCQkJc2VscmV0ID0gc2VsZWN0KEZEX1NFVFNJWkUsICZyZWFkZmRzLAotIAkJCQkodm9pZCAqKSAwLCAodm9pZCAqKSAwLCAmdHYpOwotIAkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLXdhcm5pbmdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA0MDBmZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsNjEgQEAKK0RldGVjdCB3YXJuaW5nIG9wdGlvbnMgZHVyaW5nIGNvbmZpZ3VyZQorCitDZXJ0YWluIG9wdGlvbnMgbWF5YmUgY29tcGlsZXIgc3BlY2lmaWMgdGhlcmVmb3JlIGl0cyBiZXR0ZXIKK3RvIGRldGVjdCB0aGVtIGJlZm9yZSB1c2UuCisKK25mc19lcnJvciBjb3BpZXMgdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGFwcGVuZHMgbmV3bGluZSB0byBpdAorYnV0IGNvbXBpbGVyIGNhbiBmb3JnZXQgdGhhdCBpdCB3YXMgZm9ybWF0IHN0cmluZyBzaW5jZSBpdHMgbm90CitzYW1lIGZtdCBzdHJpbmcgdGhhdCB3YXMgcGFzc2VkLiBJZ25vcmUgdGhlIHdhcm5pbmcKKworV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIGlzIGdjYyBzcGVjaWZpYyBhbmQgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01OTksNyArNTk5LDYgQEAgbXlfYW1fY2ZsYWdzPSJcCisgIC1XZXJyb3I9cGFyZW50aGVzZXMgXAorICAtV2Vycm9yPWFnZ3JlZ2F0ZS1yZXR1cm4gXAorICAtV2Vycm9yPXVudXNlZC1yZXN1bHQgXAorLSAtV25vLWNhc3QtZnVuY3Rpb24tdHlwZSBcCisgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFwKKyAiCisgCitAQCAtNjE5LDkgKzYxOCwxMCBAQCBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9Zm9ybWF0LW92ZXJmbG93CisgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWludC1jb252ZXJzaW9uXSwgW2ZsZzJdKQorIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10sIFtmbGczXSkKKyBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9bWlzbGVhZGluZy1pbmRlbnRhdGlvbl0sIFtmbGc0XSkKKytDSEVDS19DQ1NVUFBPUlQoWy1Xbm8tY2FzdC1mdW5jdGlvbi10eXBlXSwgW2ZsZzVdKQorIEFYX0dDQ19GVU5DX0FUVFJJQlVURShbZm9ybWF0XSkKKyAKKy1BQ19TVUJTVChbQU1fQ0ZMQUdTXSwgWyIkbXlfYW1fY2ZsYWdzICRmbGcxICRmbGcyICRmbGczICRmbGc0Il0pCisrQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnMyAkZmxnNCAkZmxnNSJdKQorIAorICMgTWFrZSBzdXJlIHRoYXQgJEFDTE9DQUxfRkxBR1MgYXJlIHVzZWQgZHVyaW5nIGEgcmVidWlsZAorIEFDX1NVQlNUKFtBQ0xPQ0FMX0FNRkxBR1NdLCBbIi1JICRhY19tYWNyb19kaXIgXCQoQUNMT0NBTF9GTEFHUykiXSkKKy0tLSBhL3N1cHBvcnQvbmZzL3hjb21tb24uYworKysrIGIvc3VwcG9ydC9uZnMveGNvbW1vbi5jCitAQCAtOTgsNyArOTgsMTAgQEAgbmZzX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikgeworIAorICAgICAgZm10MiA9IHhzdHJjb25jYXQyIChmbXQsICJcbiIpOworICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgorICAgICAgdmZwcmludGYgKHN0ZGVyciwgZm10MiwgYXJncyk7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAgICAgIHZhX2VuZCAoYXJncyk7CisgICAgICBmcmVlIChmbXQyKTsKKyB9CistLS0gYS91dGlscy9tb3VudC9zdHJvcHRzLmMKKysrKyBiL3V0aWxzL21vdW50L3N0cm9wdHMuYworQEAgLTEwOTQsOSArMTA5NCw3IEBAIHN0YXRpYyBpbnQgbmZzbW91bnRfZmcoc3RydWN0IG5mc21vdW50X2kKKyAJCWlmIChuZnNfdHJ5X21vdW50KG1pKSkKKyAJCQlyZXR1cm4gRVhfU1VDQ0VTUzsKKyAKKy0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGlzY2FyZGVkLXF1YWxpZmllcnMiCisgCQlpZiAoZXJybm8gPT0gRUJVU1kgJiYgaXNfbW91bnRwb2ludChtaS0+bm9kZSkpIHsKKy0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIHdhcm5pbmcgIi1XZGlzY2FyZGVkLXF1YWxpZmllcnMiCisgCQkJLyoKKyAJCQkgKiBFQlVTWSBjYW4gaGFwcGVuIHdoZW4gbW91bnRpbmcgYSBmaWxlc3lzdGVtIHRoYXQKKyAJCQkgKiBpcyBhbHJlYWR5IG1vdW50ZWQgb3Igd2hlbiB0aGUgY29udGV4dD0gYXJlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMWY1ZWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBjYWExOTIzMTE5NmQ3MzU0MTQ0NTcyOGU2ODEzYzhmYTcwMzQ1YWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI2IEp1biAyMDE4IDE1OjU5OjAwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5mcy11dGlsczogMi4xLjEgLT4gMi4zLjEKLQotRml4ZWQ6Ci1jb25maWd1cmU6IGVycm9yOiByZXNfcXVlcnlkb21haW4gbmVlZGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9naXRodWIuY29tL2FscGluZWxpbnV4L2Fwb3J0cy9ibG9iL21hc3Rlci9tYWluL25mcy11dGlscy9tdXNsLWNvbmZpZ3VyZV9hYy5wYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDkgKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTAwMDJiNC4uZGNhZGIyMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTgyLDEwICs1ODIsMTAgQEAgbXlfYW1fY2ZsYWdzPSJcCi0gIC1XYWxsIFwKLSAgLVdleHRyYSBcCi0gICRycGNnZW5fY2ZsYWdzIFwKLS0gLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXMgXAotLSAtV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zIFwKLSsgLVdtaXNzaW5nLXByb3RvdHlwZXMgXAotKyAtV21pc3NpbmctZGVjbGFyYXRpb25zIFwKLSAgLVdlcnJvcj1mb3JtYXQ9MiBcCi0tIC1XZXJyb3I9dW5kZWYgXAotKyAtV3VuZGVmIFwKLSAgLVdlcnJvcj1taXNzaW5nLWluY2x1ZGUtZGlycyBcCi0gIC1XZXJyb3I9c3RyaWN0LWFsaWFzaW5nPTIgXAotICAtV2Vycm9yPWluaXQtc2VsZiBcCi1AQCAtNjE0LDEwICs2MTQsOSBAQCBBQ19ERUZVTihbQ0hFQ0tfQ0NTVVBQT1JUXSwgWwotIAotIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1mb3JtYXQtb3ZlcmZsb3c9Ml0sIFtmbGcxXSkKLSBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW50LWNvbnZlcnNpb25dLCBbZmxnMl0pCi0tQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzXSwgW2ZsZzNdKQotIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1taXNsZWFkaW5nLWluZGVudGF0aW9uXSwgW2ZsZzRdKQotIAotLUFDX1NVQlNUKFtBTV9DRkxBR1NdLCBbIiRteV9hbV9jZmxhZ3MgJGZsZzEgJGZsZzIgJGZsZzMgJGZsZzQiXSkKLStBQ19TVUJTVChbQU1fQ0ZMQUdTXSwgWyIkbXlfYW1fY2ZsYWdzICRmbGcxICRmbGcyICRmbGc0Il0pCi0gCi0gIyBNYWtlIHN1cmUgdGhhdCAkQUNMT0NBTF9GTEFHUyBhcmUgdXNlZCBkdXJpbmcgYSByZWJ1aWxkCi0gQUNfU1VCU1QoW0FDTE9DQUxfQU1GTEFHU10sIFsiLUkgJGFjX21hY3JvX2RpciBcJChBQ0xPQ0FMX0ZMQUdTKSJdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzMmJjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1TVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCi1ERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAotTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKLQotIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAotREVQRU5EUyA9ICJsaWJjYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZnNkIgotCi1pbmhlcml0IHVzZXJhZGQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1jbGllbnQiCi1VU0VSQUREX1BBUkFNXyR7UE59LWNsaWVudCA9ICItLXN5c3RlbSAgLS1ob21lLWRpciAvdmFyL2xpYi9uZnMgXAotCQkJICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGN1c2VyIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmZzLXV0aWxzLyR7UFZ9L25mcy11dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbmZzc2VydmVyIFwKLSAgICAgICAgICAgZmlsZTovL25mc2NvbW1vbiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtc2VydmVyLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLW1vdW50ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zdGF0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3Byb2MtZnMtbmZzZC5tb3VudCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2FjaGVpby11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1JTy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGFuZy1mb3JtYXQtc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1pbmNsdWRlLW9yZGVyLWJldHdlZW4tY29uZmlnLmgtYW5kLXN0YXQuaC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLWdsaWJjID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNjFlZmU0NjllYzFiMDZmMWM3NTBiZDg3ZjhiYTZkZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTI3NGFkYTk0NDc5YjFiZWJhOWY4ZWVmZmQxOWY0NzdjNTNhNjcxMGI5OTk4ZDExOTJjODA3ODU0MDg3NzM2IgotCi0jIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCi0jIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKLUlOSVRTQ1JJUFRfTkFNRSA9ICJuZnNzZXJ2ZXIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1jbGllbnQgPSAibmZzY29tbW9uIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tY2xpZW50ID0gImRlZmF1bHRzIDE5IDIxIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmZzLXNlcnZlci5zZXJ2aWNlIG5mcy1tb3VudGQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAibmZzLXN0YXRkLnNlcnZpY2UiCi0KLSMgLS1lbmFibGUtdXVpZCBpcyBuZWVkIGZvciBjcm9zcy1jb21waWxpbmcKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCi0gICAgICAgICAgICAgICAiCi0KLUNGTEFHUyArPSAiLVduby1lcnJvcj1mb3JtYXQtb3ZlcmZsb3ciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLSMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCi1QQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyIgotIyBrZXl1dGlscyBpcyBhdmFpbGFibGUgaW4gbWV0YS1zZWN1cml0eQotUEFDS0FHRUNPTkZJR1tuZnN2NF0gPSAiLS1lbmFibGUtbmZzdjQsLS1kaXNhYmxlLW5mc3Y0LGtleXV0aWxzIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgotCi1DT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKLQkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKLQotRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKLQkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKLQkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKLQkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCi0JCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCi1SREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKLQotRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgotCi1GSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCi1SREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCi0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQotfQotCi0jIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAotIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW1ha2UgY2xlYW4KLX0KLQotIyBXb3JrcyBvbiBzeXN0ZW1kIG9ubHkKLUhJR0hfUkxJTUlUX05PRklMRSA/Pz0gIjQwOTYiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc3NlcnZlciAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzc2VydmVyCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzY29tbW9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24KLQotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mcy11dGlscy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U30vdXRpbHMvbW91bnQvbmZzbW91bnQuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtbW91bnRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXN0YXRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQktZSAncyxASElHSF9STElNSVRfTk9GSUxFQCwke0hJR0hfUkxJTUlUX05PRklMRX0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy8KLQkgICAgbG4gLXNmIC4uL3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9wcm9jLWZzLW5mc2QubW91bnQKLQlmaQotCi0JIyBrZXJuZWwgY29kZSBhcyBvZiAzLjggaGFyZC1jb2RlcyB0aGlzIHBhdGggYXMgYSBkZWZhdWx0Ci0JaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvbmZzL3Y0cmVjb3ZlcnkKLQotCSMgY2hvd24gdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcwotCWNob3duIC1SIHJwY3VzZXI6cnBjdXNlciAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkCi0JY2htb2QgMDY0NCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlCi0KLSAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0Ci0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJkYjZmNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4zLmJiCkBAIC0wLDAgKzEsMTQ3IEBACitTVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCitERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAorTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKKworIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAorREVQRU5EUyA9ICJsaWJjYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgorUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1uZnNkIgorCitpbmhlcml0IHVzZXJhZGQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1jbGllbnQiCitVU0VSQUREX1BBUkFNXyR7UE59LWNsaWVudCA9ICItLXN5c3RlbSAgLS1ob21lLWRpciAvdmFyL2xpYi9uZnMgXAorCQkJICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBycGN1c2VyIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmZzLXV0aWxzLyR7UFZ9L25mcy11dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbmZzc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL25mc2NvbW1vbiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc2VydmVyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLW1vdW50ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zdGF0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3Byb2MtZnMtbmZzZC5tb3VudCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2FjaGVpby11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1JTy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsYW5nLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjA2MDIwYzc2ZjUzMWVkOTdmMzE0NTUxNDkwMWUwZTdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmNjVmY2U1ZGQ4MzcwY2ZmOWVhZDY3YmFhYzVhNmNkNjljMzc2ZGNhZGZlZjI2NGRjMmM3OGM5MDRmMjY1OTkiCisKKyMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKKyMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorSU5JVFNDUklQVF9OQU1FID0gIm5mc3NlcnZlciIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LWNsaWVudCA9ICJuZnNjb21tb24iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1jbGllbnQgPSAiZGVmYXVsdHMgMTkgMjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZnMtc2VydmVyLnNlcnZpY2UgbmZzLW1vdW50ZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJuZnMtc3RhdGQuc2VydmljZSIKKworIyAtLWVuYWJsZS11dWlkIGlzIG5lZWQgZm9yIGNyb3NzLWNvbXBpbGluZworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zdGF0ZHVzZXI9cnBjdXNlciBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbW91bnRjb25maWcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYm1vdW50LW1vdW50IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS11dWlkIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3NzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzZGNsdHJhY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zdGF0ZHBhdGg9L3Zhci9saWIvbmZzL3N0YXRkIFwKKyAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC10Y3Atd3JhcHBlcnMsLS13aXRob3V0LXRjcC13cmFwcGVycyx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorIyBsaWJkZXZtYXBwZXIgaXMgYXZhaWxhYmxlIGluIG1ldGEtb2UKK1BBQ0tBR0VDT05GSUdbbmZzdjQxXSA9ICItLWVuYWJsZS1uZnN2NDEsLS1kaXNhYmxlLW5mc3Y0MSxsaWJkZXZtYXBwZXIsbGliZGV2bWFwcGVyIgorIyBrZXl1dGlscyBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQorUEFDS0FHRUNPTkZJR1tuZnN2NF0gPSAiLS1lbmFibGUtbmZzdjQsLS1kaXNhYmxlLW5mc3Y0LGtleXV0aWxzLHB5dGhvbjMtY29yZSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKKworQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL2V0YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3JtdGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy94dGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZSBcCisJCQkgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYiCisKK0ZJTEVTXyR7UE59LWNsaWVudCA9ICIke3NiaW5kaXJ9LypzdGF0ZCBcCisJCSAgICAgICR7c2JpbmRpcn0vcnBjLmlkbWFwZCAke3NiaW5kaXJ9L3NtLW5vdGlmeSBcCisJCSAgICAgICR7c2JpbmRpcn0vc2hvd21vdW50ICR7c2JpbmRpcn0vbmZzc3RhdCBcCisJCSAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcyBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vbmZzLXV0aWxzLmNvbmYgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24gXAorCQkgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25mcy1zdGF0ZC5zZXJ2aWNlIgorUkRFUEVORFNfJHtQTn0tY2xpZW50ID0gIiR7UE59LW1vdW50IHJwY2JpbmQiCisKK0ZJTEVTXyR7UE59LW1vdW50ID0gIiR7YmFzZV9zYmluZGlyfS8qbW91bnQubmZzKiIKKworRklMRVNfJHtQTn0tc3RhdHMgPSAiJHtzYmluZGlyfS9tb3VudHN0YXRzICR7c2JpbmRpcn0vbmZzaW9zdGF0IgorUkRFUEVORFNfJHtQTn0tc3RhdHMgPSAicHl0aG9uMy1jb3JlIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9saWJuZnNpZG1hcC8qLmEiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0gJHtsaWJkaXJ9L2xpYm5mc2lkbWFwLyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCit9CisKKyMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCisjIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJbWFrZSBjbGVhbgorfQorCisjIFdvcmtzIG9uIHN5c3RlbWQgb25seQorSElHSF9STElNSVRfTk9GSUxFID8/PSAiNDA5NiIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgorCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCS1lICdzLEBISUdIX1JMSU1JVF9OT0ZJTEVALCR7SElHSF9STElNSVRfTk9GSUxFfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLworCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAorCWZpCisKKwkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKKwlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQorCisJIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCisJY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKKwljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKKworICAgICAgICAjIE1ha2UgcHl0aG9uIHRvb2xzIHVzZSBweXRob24gMworICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vbW91bnRzdGF0cyAke0R9JHtzYmluZGlyfS9uZnNpb3N0YXQKKworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtdXBzdHJlYW0tZml4LWludGVnZXItb3ZlcmZsb3ctaW4tWE1TUy1wcml2YXRlLWtleS1wYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2NWJlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtdXBzdHJlYW0tZml4LWludGVnZXItb3ZlcmZsb3ctaW4tWE1TUy1wcml2YXRlLWtleS1wYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMjAxNGZhZDNkMjgwOTBiNTlkMmY4YTA5NzExNjZjMDZlNWZhNmRhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTggT2N0IDIwMTkgMTQ6NTY6NTggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdXBzdHJlYW06IGZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIFhNU1MgcHJpdmF0ZSBrZXkgcGFyc2luZy4KLQotUmVwb3J0ZWQgYnkgQWRhbSBaYWJyb2NraSB2aWEgU2VjdXJpVGVhbSdzIFNTSCBwcm9ncmFtLgotCi1Ob3RlIHRoYXQgdGhpcyBjb2RlIGlzIGV4cGVyaW1lbnRhbCBhbmQgbm90IGNvbXBpbGVkIGJ5IGRlZmF1bHQuCi0KLW9rIG1hcmt1c0AKLQotT3BlbkJTRC1Db21taXQtSUQ6IGNkMDM2MTg5NmQxNWU4YTFiYWM0OTVhYzU4M2ZmMDY1ZmZjYTJiZTEKLQotU2lnbmVkLW9mZi1ieTogImRqbUBvcGVuYnNkLm9yZyIgPGRqbUBvcGVuYnNkLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9jb21taXQvYTU0NmIxN2JiYWViMTJiZWFjNGM5YWVlZDU2Zjc0YTQyYjE4YTkzYV0KLUNWRTogQ1ZFLTIwMTktMTY5MDUKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3Noa2V5LXhtc3MuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3Noa2V5LXhtc3MuYyBiL3NzaGtleS14bXNzLmMKLWluZGV4IGFhYWU3MDIuLmM1NzY4MWEgMTAwNjQ0Ci0tLS0gYS9zc2hrZXkteG1zcy5jCi0rKysgYi9zc2hrZXkteG1zcy5jCi1AQCAtOTc3LDcgKzk3Nyw4IEBAIHNzaGtleV94bXNzX2RlY3J5cHRfc3RhdGUoY29uc3Qgc3RydWN0IHNzaGtleSAqaywgc3RydWN0IHNzaGJ1ZiAqZW5jb2RlZCwKLSAJCWdvdG8gb3V0OwotIAl9Ci0gCS8qIGNoZWNrIHRoYXQgYW4gYXBwcm9wcmlhdGUgYW1vdW50IG9mIGF1dGggZGF0YSBpcyBwcmVzZW50ICovCi0tCWlmIChzc2hidWZfbGVuKGVuY29kZWQpIDwgZW5jcnlwdGVkX2xlbiArIGF1dGhsZW4pIHsKLSsJaWYgKHNzaGJ1Zl9sZW4oZW5jb2RlZCkgPCBhdXRobGVuIHx8Ci0rCSAgICBzc2hidWZfbGVuKGVuY29kZWQpIC0gYXV0aGxlbiA8IGVuY3J5cHRlZF9sZW4pIHsKLSAJCXIgPSBTU0hfRVJSX0lOVkFMSURfRk9STUFUOwotIAkJZ290byBvdXQ7Ci0gCX0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3J1bi1wdGVzdAppbmRleCBkYWY2MmNjLi5hZTAzZTkyIDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3J1bi1wdGVzdApAQCAtMSw2ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBleHBvcnQgVEVTVF9TSEVMTD1zaAorZXhwb3J0IFNLSVBfVU5JVD0xCiAKIGNkIHJlZ3Jlc3MKIHNlZCAtaSAiL1x0XHRhZ2VudC1wdHJhY2UgL2QiIE1ha2VmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGQuc29ja2V0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldAppbmRleCAxMmMzOWIyLi44ZDc2ZDYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGQuc29ja2V0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZC5zb2NrZXQKQEAgLTEsNSArMSw2IEBACiBbVW5pdF0KIENvbmZsaWN0cz1zc2hkLnNlcnZpY2UKK1dhbnRzPXNzaGRnZW5rZXlzLnNlcnZpY2UKIAogW1NvY2tldF0KIEV4ZWNTdGFydFByZT1AQkFTRV9CSU5ESVJAL21rZGlyIC1wIC92YXIvcnVuL3NzaGQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZEAuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZEAuc2VydmljZQppbmRleCA5ZDgzZGZiLi40MjI0NTBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkQC5zZXJ2aWNlCkBAIC0xLDEzICsxLDExIEBACiBbVW5pdF0KIERlc2NyaXB0aW9uPU9wZW5TU0ggUGVyLUNvbm5lY3Rpb24gRGFlbW9uCi1XYW50cz1zc2hkZ2Vua2V5cy5zZXJ2aWNlCiBBZnRlcj1zc2hkZ2Vua2V5cy5zZXJ2aWNlCiAKIFtTZXJ2aWNlXQogRW52aXJvbm1lbnQ9IlNTSERfT1BUUz0iCiBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC9zc2gKIEV4ZWNTdGFydD0tQFNCSU5ESVJAL3NzaGQgLWkgJFNTSERfT1BUUwotRXhlY1JlbG9hZD1AQkFTRV9CSU5ESVJAL2tpbGwgLUhVUCAkTUFJTlBJRAogU3RhbmRhcmRJbnB1dD1zb2NrZXQKIFN0YW5kYXJkRXJyb3I9c3lzbG9nCiBLaWxsTW9kZT1wcm9jZXNzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMHAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjBwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZmYmM5YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMHAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKLXRoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKLURFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKLVNzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKLWFuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNEICYgSVNDICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9NDI5NjU4YzY2MTJmM2E5YjEyOTM3ODIzNjZhYjI5ZDgiCi0KLURFUEVORFMgPSAiemxpYiBvcGVuc3NsIHZpcnR1YWwvY3J5cHQiCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAotICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11cHN0cmVhbS1maXgtaW50ZWdlci1vdmVyZmxvdy1pbi1YTVNTLXByaXZhdGUta2V5LXBhLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImJmMDUwZjAwMmZlNTEwZTFkYWVjZDM5MDQ0ZTExMjJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkOTQzODc5ZTY5NDk4ZTgwMzFlYjZiN2Y0NGQwOGNkYzM3ZDU5YTdhYjY4OWFhMGI0MzczMjBjMzQ4MWZkNjgiCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgotCi1pbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi0jIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUVYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkIFwKLSAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAotICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0ke2JpbmRpcn0veGF1dGggXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCi0gICAgICAgICAgICAgICAgIgotCi0jIG11c2wgZG9lc24ndCBpbXBsZW1lbnQgd3RtcC91dG1wCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLXd0bXAiCi0KLSMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKLSMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAotIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKLQotIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgotCi0jIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JZXhwb3J0IExEPSIke0NDfSIKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgIyBza2lwIHJlZ3Jlc3MvdW5pdHRlc3RzLyBiaW5hcmllczogdGhpcyB3aWxsIHNpbGVudGx5IHNraXAKLSAgICAgICAgIyB1bml0dGVzdHMgaW4gcnVuLXB0ZXN0cyB3aGljaCBpcyBnb29kIGJlY2F1c2UgdGhleSBhcmUgc28gc2xvdy4KLSAgICAgICAgb2VfcnVubWFrZSByZWdyZXNzL21vZHBpcGUgcmVncmVzcy9zZXR1aWQtYWxsb3dlZCByZWdyZXNzL25ldGNhdCBcCi0gICAgICAgICAgICAgICAgICAgcmVncmVzcy9jaGVjay1wZXJtIHJlZ3Jlc3MvbWtkdGVtcAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZAotCQlzZWQgLWkgLWUgJ3M6I1VzZVBBTSBubzpVc2VQQU0geWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3M6I1gxMUZvcndhcmRpbmcgbm86WDExRm9yd2FyZGluZyB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9zbG9naW4gJHtEfSR7ZGF0YWRpcn0vU3NoLmJpbgotCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfc3NoZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZAotCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvc3NoLWNvcHktaWQgJHtEfSR7YmluZGlyfQotCi0JIyBDcmVhdGUgY29uZmlnIGZpbGVzIGZvciByZWFkLW9ubHkgcm9vdGZzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2gKLQlpbnN0YWxsIC1tIDY0NCAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0Jc2VkIC1pICcvSG9zdEtleS9kJyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9yc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lY2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VkMjU1MTlfa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkZ2Vua2V5cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQktZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCS1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0Jc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCi0JCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCi0KLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9zc2hkX2NoZWNrX2tleXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQlzZWQgLWkgLWUgInN8XlNGVFBTRVJWRVI9Lip8U0ZUUFNFUlZFUj0ke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyfCIgcmVncmVzcy90ZXN0LWV4ZWMuc2gKLQljcCAtciByZWdyZXNzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1rZXlnZW4gJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LXNjcCA9ICIke2JpbmRpcn0vc2NwLiR7QlBOfSIKLUZJTEVTXyR7UE59LXNzaCA9ICIke2JpbmRpcn0vc3NoLiR7QlBOfSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotRklMRVNfJHtQTn0tc3NoZCA9ICIke3NiaW5kaXJ9L3NzaGQgJHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtzeXNjb25mZGlyfS9zc2gvbW9kdWxpICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZCAke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQiCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMiCi1GSUxFU18ke1BOfS1zZnRwID0gIiR7YmluZGlyfS9zZnRwIgotRklMRVNfJHtQTn0tc2Z0cC1zZXJ2ZXIgPSAiJHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlciIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L3NzaCogJHtsaWJleGVjZGlyfS9zc2gqIgotRklMRVNfJHtQTn0ta2V5Z2VuID0gIiR7YmluZGlyfS9zc2gta2V5Z2VuIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LWtleWdlbiIKLVJERVBFTkRTXyR7UE59LXNzaGQgKz0gIiR7UE59LWtleWdlbiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWtleWluaXQgcGFtLXBsdWdpbi1sb2dpbnVpZCcsICcnLCBkKX0iCi1SUkVDT01NRU5EU18ke1BOfS1zc2hkX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHJuZy10b29scyIKLSMgZ2RiIHdvdWxkIG1ha2UgYXR0YWNoLXB0cmFjZSB0ZXN0IHBhc3MgcmF0aGVyIHRoYW4gc2tpcCBidXQgbm90IHdvcnRoIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSBzZWQgc3VkbyBjb3JldXRpbHMiCi0KLVJQUk9WSURFU18ke1BOfS1zc2ggPSAic3NoIgotUlBST1ZJREVTXyR7UE59LXNzaGQgPSAic3NoZCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJkcm9wYmVhciIKLVJDT05GTElDVFNfJHtQTn0tc3NoZCA9ICJkcm9wYmVhciIKLQotQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCi1DT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgotQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKLUFMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4ycDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMnAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NzllZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMnAxLmJiCkBAIC0wLDAgKzEsMTcwIEBACitTVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCit0aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCitTc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCithbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRCAmIElTQyAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTE4ZDllNWE4YjNkZDE3OTBkNzM1MDJmNTA0MjZkNGQzIgorCitERVBFTkRTID0gInpsaWIgb3BlbnNzbCB2aXJ0dWFsL2NyeXB0IgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjMwNzZlNjQxM2U4ZGJlNTZkMzM4NDhjMTA1NGFjMDkxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzOTI1MTUxZTZjZjZjZWUxNDUwMTkwYzBlOWFmNGRjMzZiNDFjMTI3Mzc2MTllZGZmOGJjZWJkZmY2NGU2NzEiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zc2hkIgorCitpbmhlcml0IG1hbnBhZ2VzIHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2tlcmJlcm9zXSA9ICItLXdpdGgta2VyYmVyb3M1LC0td2l0aG91dC1rZXJiZXJvczUsa3JiNSIKK1BBQ0tBR0VDT05GSUdbbGRuc10gPSAiLS13aXRoLWxkbnMsLS13aXRob3V0LWxkbnMsbGRucyIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLWxpYmVkaXQsLS13aXRob3V0LWxpYmVkaXQsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0td2l0aC1tYW50eXBlPW1hbiwtLXdpdGgtbWFudHlwZT1jYXQiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCisjIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0VYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkIFwKKyAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAorICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0ke2JpbmRpcn0veGF1dGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdHJpcCBcCisgICAgICAgICAgICAgICAgIgorCisjIG11c2wgZG9lc24ndCBpbXBsZW1lbnQgd3RtcC91dG1wCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLXd0bXAiCisKKyMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKKyMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAorIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKKworIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgorCisjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJZXhwb3J0IExEPSIke0NDfSIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgIyBza2lwIHJlZ3Jlc3MvdW5pdHRlc3RzLyBiaW5hcmllczogdGhpcyB3aWxsIHNpbGVudGx5IHNraXAKKyAgICAgICAgIyB1bml0dGVzdHMgaW4gcnVuLXB0ZXN0cyB3aGljaCBpcyBnb29kIGJlY2F1c2UgdGhleSBhcmUgc28gc2xvdy4KKyAgICAgICAgb2VfcnVubWFrZSByZWdyZXNzL21vZHBpcGUgcmVncmVzcy9zZXR1aWQtYWxsb3dlZCByZWdyZXNzL25ldGNhdCBcCisgICAgICAgICAgICAgICAgICAgcmVncmVzcy9jaGVjay1wZXJtIHJlZ3Jlc3MvbWtkdGVtcAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZAorCQlzZWQgLWkgLWUgJ3M6I1VzZVBBTSBubzpVc2VQQU0geWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3M6I1gxMUZvcndhcmRpbmcgbm86WDExRm9yd2FyZGluZyB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCisJcm0gLWYgJHtEfSR7YmluZGlyfS9zbG9naW4gJHtEfSR7ZGF0YWRpcn0vU3NoLmJpbgorCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi9zc2hkICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfQorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfc3NoZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZAorCWluc3RhbGwgLW0gMDc1NSAke1N9L2NvbnRyaWIvc3NoLWNvcHktaWQgJHtEfSR7YmluZGlyfQorCisJIyBDcmVhdGUgY29uZmlnIGZpbGVzIGZvciByZWFkLW9ubHkgcm9vdGZzCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2gKKwlpbnN0YWxsIC1tIDY0NCAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJc2VkIC1pICcvSG9zdEtleS9kJyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9yc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lY2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VkMjU1MTlfa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkZ2Vua2V5cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQktZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCS1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCisJc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LyR7QlBOfSxnJyBcCisJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkCisKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9zc2hkX2NoZWNrX2tleXMgJHtEfSR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwlzZWQgLWkgLWUgInN8XlNGVFBTRVJWRVI9Lip8U0ZUUFNFUlZFUj0ke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyfCIgcmVncmVzcy90ZXN0LWV4ZWMuc2gKKwljcCAtciByZWdyZXNzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1rZXlnZW4gJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciIKK0ZJTEVTXyR7UE59LXNjcCA9ICIke2JpbmRpcn0vc2NwLiR7QlBOfSIKK0ZJTEVTXyR7UE59LXNzaCA9ICIke2JpbmRpcn0vc3NoLiR7QlBOfSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorRklMRVNfJHtQTn0tc3NoZCA9ICIke3NiaW5kaXJ9L3NzaGQgJHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtzeXNjb25mZGlyfS9zc2gvbW9kdWxpICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfc3NoZCAke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQiCitGSUxFU18ke1BOfS1zc2hkICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMiCitGSUxFU18ke1BOfS1zZnRwID0gIiR7YmluZGlyfS9zZnRwIgorRklMRVNfJHtQTn0tc2Z0cC1zZXJ2ZXIgPSAiJHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlciIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9L3NzaCogJHtsaWJleGVjZGlyfS9zc2gqIgorRklMRVNfJHtQTn0ta2V5Z2VuID0gIiR7YmluZGlyfS9zc2gta2V5Z2VuIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tc2NwICR7UE59LXNzaCAke1BOfS1zc2hkICR7UE59LWtleWdlbiIKK1JERVBFTkRTXyR7UE59LXNzaGQgKz0gIiR7UE59LWtleWdlbiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0tcGx1Z2luLWtleWluaXQgcGFtLXBsdWdpbi1sb2dpbnVpZCcsICcnLCBkKX0iCitSUkVDT01NRU5EU18ke1BOfS1zc2hkX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHJuZy10b29scyIKKyMgZ2RiIHdvdWxkIG1ha2UgYXR0YWNoLXB0cmFjZSB0ZXN0IHBhc3MgcmF0aGVyIHRoYW4gc2tpcCBidXQgbm90IHdvcnRoIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSBzZWQgc3VkbyBjb3JldXRpbHMiCisKK1JQUk9WSURFU18ke1BOfS1zc2ggPSAic3NoIgorUlBST1ZJREVTXyR7UE59LXNzaGQgPSAic3NoZCIKKworUkNPTkZMSUNUU18ke1BOfSA9ICJkcm9wYmVhciIKK1JDT05GTElDVFNfJHtQTn0tc3NoZCA9ICJkcm9wYmVhciIKKworQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCitDT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKK0FMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcmVwcm9kdWNpYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9yZXByb2R1Y2libGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0MjYwYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK1RoZSB2YWx1ZSBmb3IgcGVybF9hcmNobmFtZSBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIGhvc3QsIGUuZy4gCit4ODZfNjQtbGludXgtZ251LXRocmVhZC1tdWx0aSBvciB4ODZfNjQtbGludXgtdGhyZWFkLW11bHRpIHdoaWNoCittYWtlcyB0aGUgcHRlc3QgcGFja2FnZSBub24tcmVwcm9kdWNpYmxlLiBJdHMgdW51c2VkIG90aGVyIHRoYW4gCit0aGVzZSByZWZlcmVuY2VzIHNvIGRyb3AgaXQuCisKK1JQIDIwMjAvMi82CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBvcGVuc3NsLTEuMS4xZC9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMS4xZC5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4xLjFkL0NvbmZpZ3VyZQorQEAgLTI4Niw3ICsyODYsNyBAQCBpZiAoZGVmaW5lZCBlbnYoJGxvY2FsX2NvbmZpZ19lbnZuYW1lKSkKKyAjIFNhdmUgYXdheSBwZXJsIGNvbW1hbmQgaW5mb3JtYXRpb24KKyAkY29uZmlne3BlcmxfY21kfSA9ICReWDsKKyAkY29uZmlne3BlcmxfdmVyc2lvbn0gPSAkQ29uZmlne3ZlcnNpb259OworLSRjb25maWd7cGVybF9hcmNobmFtZX0gPSAkQ29uZmlne2FyY2huYW1lfTsKKysjJGNvbmZpZ3twZXJsX2FyY2huYW1lfSA9ICRDb25maWd7YXJjaG5hbWV9OworIAorICRjb25maWd7cHJlZml4fT0iIjsKKyAkY29uZmlne29wZW5zc2xkaXJ9PSIiOworQEAgLTI1MTcsNyArMjUxNyw3IEBAIF9fX19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICBAeyRjb25maWd7cGVybGFyZ3Z9fSksICJcbiI7CisgICAgICAgICBwcmludCAiXG5QZXJsIGluZm9ybWF0aW9uOlxuXG4iOworICAgICAgICAgcHJpbnQgJyAgICAnLCRjb25maWd7cGVybF9jbWR9LCJcbiI7CistICAgICAgICBwcmludCAnICAgICcsJGNvbmZpZ3twZXJsX3ZlcnNpb259LCcgZm9yICcsJGNvbmZpZ3twZXJsX2FyY2huYW1lfSwiXG4iOworKyAgICAgICAgcHJpbnQgJyAgICAnLCRjb25maWd7cGVybF92ZXJzaW9ufSwiXG4iOworICAgICB9CisgICAgIGlmICgkZHVtcCB8fCAkb3B0aW9ucykgeworICAgICAgICAgbXkgJGxvbmdlc3QgPSAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgxOWUxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCIgaGVyZSBhY3R1YWxseSBtZWFucyBib3RoIE9wZW5TU0wgYW5kIFNTTGVheSBsaWNlbnNlcyBhcHBseQotIyAoc2VlIG1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL09wZW5TU0wgdG8gd2hpY2ggIm9wZW5zc2wiIGlzIFNQRFhMSUNFTlNFTUFQcGVkKQotTElDRU5TRSA9ICJvcGVuc3NsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDM0M2U2MmZjOWM4MzM3MTBiYmJlZDI1ZjI3MzY0YzgiCi0KLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2tpcC10ZXN0X3N5bWJvbF9wcmVzZW5jZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWZhbGcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAotICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2JlMjA5MDAwZGJjN2UxYjk1YmNkZjQ3OTgwYTNiYWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWUzYTkxYmMxZjlkZmNlMDFhZjI2MDI2Zjg1NmUwNjRlYWI0YzhlZTBhOGY0NTdiNWFlMzBiNDBiOGI3MTFmMiIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0IHB0ZXN0Ci1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWJpbjoke2JpbmRpcn0vY19yZWhhc2giCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gImVuYWJsZS1kZXZjcnlwdG9lbmcsZGlzYWJsZS1kZXZjcnlwdG9lbmcsY3J5cHRvZGV2LWxpbnV4IgotCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgotCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JwotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIG5vLWFzeW5jIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2xfcG93ZXJwYzY0ID0gIiBuby1hc20iCi0KLSMgYWRkaW5nIGRldnJhbmRvbSBwcmV2ZW50cyBvcGVuc3NsIGZyb20gdXNpbmcgZ2V0cmFuZG9tKCkgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbiBvbGRlciBnbGliYyB2ZXJzaW9ucwotIyAobmF0aXZlIHZlcnNpb25zIGNhbiBiZSBidWlsdCB3aXRoIG5ld2VyIGdsaWJjLCBidXQgdGhlbiByZWxvY2F0ZWQgb250byBhIHN5c3RlbSB3aXRoIG9sZGVyIGdsaWJjKQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGgtcmFuZC1zZWVkPW9zLGRldnJhbmRvbSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCi0KLSMgUmVseWluZyBvbiBoYXJkY29kZWQgYnVpbHQtaW4gcGF0aHMgY2F1c2VzIG9wZW5zc2wtbmF0aXZlIHRvIG5vdCBiZSByZWxvY2F0ZWFibGUgZnJvbSBzc3RhdGUuCi1DRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgotQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKLQotZG9fY29uZmlndXJlICgpIHsKLQlvcz0ke0hPU1RfT1N9Ci0JY2FzZSAkb3MgaW4KLQlsaW51eC1nbnVlYWJpIHxcCi0JbGludXgtZ251c3BlIHxcCi0JbGludXgtbXVzbGVhYmkgfFwKLQlsaW51eC1tdXNsc3BlIHxcCi0JbGludXgtbXVzbCApCi0JCW9zPWxpbnV4Ci0JCTs7Ci0JKikKLQkJOzsKLQllc2FjCi0JdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgotCWNhc2UgJHRhcmdldCBpbgotCWxpbnV4LWFybSopCi0JCXRhcmdldD1saW51eC1hcm12NAotCQk7OwotCWxpbnV4LWFhcmNoNjQqKQotCQl0YXJnZXQ9bGludXgtYWFyY2g2NAotCQk7OwotCWxpbnV4LWk/ODYgfCBsaW51eC12aWFjMykKLQkJdGFyZ2V0PWxpbnV4LXg4NgotCQk7OwotCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCi0JCXRhcmdldD1saW51eC14MzIKLQkJOzsKLQlsaW51eC1nbnU2NC14ODZfNjQpCi0JCXRhcmdldD1saW51eC14ODZfNjQKLQkJOzsKLQlsaW51eC1taXBzIHwgbGludXgtbWlwc2VsKQotCQkjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKLQkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCi0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqKQotCQl0YXJnZXQ9bGludXgtbWlwczY0Ci0JCTs7Ci0JbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQgfCBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCi0JCXRhcmdldD1saW51eDY0LW1pcHM2NAotCQk7OwotCWxpbnV4LW1pY3JvYmxhemUqIHwgbGludXgtbmlvczIqIHwgbGludXgtc2gzIHwgbGludXgtc2g0IHwgbGludXgtYXJjKikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXBvd2VycGMpCi0JCXRhcmdldD1saW51eC1wcGMKLQkJOzsKLQlsaW51eC1wb3dlcnBjNjQpCi0JCXRhcmdldD1saW51eC1wcGM2NAotCQk7OwotCWxpbnV4LXJpc2N2MzIpCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1yaXNjdjY0KQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0Ci0JCTs7Ci0JbGludXgtc3BhcmMgfCBsaW51eC1zdXBlcnNwYXJjKQotCQl0YXJnZXQ9bGludXgtc3BhcmN2OQotCQk7OwotCWVzYWMKLQotCXVzZXByZWZpeD0ke3ByZWZpeH0KLQlpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgotCQl1c2VwcmVmaXg9LwotCWZpCi0JIyBXQVJOSU5HOiBkbyBub3Qgc2V0IGNvbXBpbGVyL2xpbmtlciBmbGFncyAoLUkvLUQgZXRjLikgaW4gRVhUUkFfT0VDT05GLCBhcyB0aGV5IHdpbGwgZnVsbHkgcmVwbGFjZSB0aGUKLQkjIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgYnkgYml0YmFrZS4gQWRqdXN0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5zdGVhZC4KLQlQRVJMNUxJQj0iJHtTfS9leHRlcm5hbC9wZXJsL1RleHQtVGVtcGxhdGUtMS40Ni9saWIvIiBcCi0JcGVybCAke1N9L0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj0ke2xpYmRpcn0gJHRhcmdldAotCXBlcmwgJHtCfS9jb25maWdkYXRhLnBtIC0tZHVtcAotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKLQotCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLQotCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUgZm9yIHBhY2thZ2VzIHN1Y2ggYXMgY2EtY2VydGlmaWNhdGVzIHdoaWNoCi0JIyBjb250YWluIGhhcmQtY29kZWQgcGF0aHMgdG8gL2V0Yy9zc2wuIERlYmlhbiBkb2VzIHRoZSBzYW1lLgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsCi0JbXYgJHtEfSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzIFwKLQkgICAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZSBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mIFwKLQkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCi0KLQkjIEFsdGhvdWdoIGFic29sdXRlIHN5bWxpbmtzIHdvdWxkIGJlIE9LIGZvciB0aGUgdGFyZ2V0LCB0aGV5IGJlY29tZQotCSMgaW52YWxpZCBpZiBuYXRpdmUgb3IgbmF0aXZlc2RrIGFyZSByZWxvY2F0ZWQgZnJvbSBzc3RhdGUuCi0JbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL2NlcnRzJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cwotCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9wcml2YXRlJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9wcml2YXRlCi0JbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3BlbnNzbCBcCi0JICAgIE9QRU5TU0xfQ09ORj0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCi0JICAgIFNTTF9DRVJUX0RJUj0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCi0JICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydC5wZW0gXAotCSAgICBPUEVOU1NMX0VOR0lORVM9JHtsaWJkaXJ9L2VuZ2luZXMtMS4xCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAotCXNlZCAnc3wvdXNyL2xpYi9zc2wvfC91c3IvbGliL3NzbC0xLjEvfGcnIC1pICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAotfQotCi1QVEVTVF9CVUlMRF9IT1NUX0ZJTEVTICs9ICJjb25maWdkYXRhLnBtIgotUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gInBlcmxfdmVyc2lvbiA9IgotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JIyBQcnVuZSB0aGUgYnVpbGQgdHJlZQotCXJtIC1mICR7Qn0vZnV6ei8qLiogJHtCfS90ZXN0LyouKgotCi0JY3AgJHtTfS9Db25maWd1cmUgJHtCfS9jb25maWdkYXRhLnBtICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgJHtTfS9leHRlcm5hbCAke0J9L3Rlc3QgJHtTfS90ZXN0ICR7Qn0vZnV6eiAke1N9L3V0aWwgJHtCfS91dGlsICR7RH0ke1BURVNUX1BBVEh9Ci0KLQkjIEZvciB0ZXN0X3NobGlibG9hZAotCWxuIC1zICR7bGliZGlyfS9saWJjcnlwdG8uc28uMS4xICR7RH0ke1BURVNUX1BBVEh9LwotCWxuIC1zICR7bGliZGlyfS9saWJzc2wuc28uMS4xICR7RH0ke1BURVNUX1BBVEh9LwotCi0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JbG4gLXMgJHtiaW5kaXJ9L29wZW5zc2wgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWluc3RhbGwgLW02NDQgJHtTfS9hcHBzLyoucGVtICR7U30vYXBwcy8qLnNybCAke1N9L2FwcHMvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWluc3RhbGwgLW03NTUgJHtCfS9hcHBzL0NBLnBsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcwotCWluc3RhbGwgLW03NTUgJHtCfS9lbmdpbmVzL29zc2x0ZXN0LnNvICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKLX0KLQotIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiBNYWtlIHRoZSBsaWJjcnlwdG8KLSMgcGFja2FnZSBSUkVDT01NRU5EUyBvbiB0aGlzIHBhY2thZ2UuIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KLSMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KLSMgcGFja2FnZSBzaW5jZSB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBkZXBlbmRzIG9uIHRoZSBsaWJjcnlwdG8gcGFja2FnZS4KLQotUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgb3BlbnNzbC1jb25mICR7UE59LWVuZ2luZXMgJHtQTn0tbWlzYyIKLQotRklMRVNfbGliY3J5cHRvID0gIiR7bGliZGlyfS9saWJjcnlwdG8ke1NPTElCU30iCi1GSUxFU19saWJzc2wgPSAiJHtsaWJkaXJ9L2xpYnNzbCR7U09MSUJTfSIKLUZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vc3NsLTEuMS9taXNjIgotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wtMS4xLyoiCi1GSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKLQotQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLQotUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAib3BlbnNzbC1iaW4gcGVybCBwZXJsLW1vZHVsZXMgYmFzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DVkVfUFJPRFVDVCA9ICJvcGVuc3NsOm9wZW5zc2wiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFmLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYTJiNDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZi5iYgpAQCAtMCwwICsxLDIxMSBAQAorU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKKyMgIm9wZW5zc2wiIGhlcmUgYWN0dWFsbHkgbWVhbnMgYm90aCBPcGVuU1NMIGFuZCBTU0xlYXkgbGljZW5zZXMgYXBwbHkKKyMgKHNlZSBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9PcGVuU1NMIHRvIHdoaWNoICJvcGVuc3NsIiBpcyBTUERYTElDRU5TRU1BUHBlZCkKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzNDNlNjJmYzljODMzNzEwYmJiZWQyNWYyNzM2NGM4IgorCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGVzdF9zeW1ib2xfcHJlc2VuY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZGluZm8tc3RyaXAtc3lzcm9vdC1hbmQtZGVidWctcHJlZml4LW1hcC1mcm9tLWNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FmYWxnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxODZjNmJmZTZlY2ZiYTdhNWI0OGM0N2Y4YTE2NzNkMGYzYjBlNWJhMmUyNTYwMmRkMjNiNjI5OTc1ZGEzZjM1IgorCitpbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBtdWx0aWxpYl9zY3JpcHQgcHRlc3QKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tYmluOiR7YmluZGlyfS9jX3JlaGFzaCIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW2NyeXB0b2Rldi1saW51eF0gPSAiZW5hYmxlLWRldmNyeXB0b2VuZyxkaXNhYmxlLWRldmNyeXB0b2VuZyxjcnlwdG9kZXYtbGludXgsLGNyeXB0b2Rldi1tb2R1bGUiCisKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCisKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbm8tYXN5bmMiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbF9wb3dlcnBjNjQgPSAiIG5vLWFzbSIKKworIyBhZGRpbmcgZGV2cmFuZG9tIHByZXZlbnRzIG9wZW5zc2wgZnJvbSB1c2luZyBnZXRyYW5kb20oKSB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIG9sZGVyIGdsaWJjIHZlcnNpb25zCisjIChuYXRpdmUgdmVyc2lvbnMgY2FuIGJlIGJ1aWx0IHdpdGggbmV3ZXIgZ2xpYmMsIGJ1dCB0aGVuIHJlbG9jYXRlZCBvbnRvIGEgc3lzdGVtIHdpdGggb2xkZXIgZ2xpYmMpCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aC1yYW5kLXNlZWQ9b3MsZGV2cmFuZG9tIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGgtcmFuZC1zZWVkPW9zLGRldnJhbmRvbSIKKworIyBSZWx5aW5nIG9uIGhhcmRjb2RlZCBidWlsdC1pbiBwYXRocyBjYXVzZXMgb3BlbnNzbC1uYXRpdmUgdG8gbm90IGJlIHJlbG9jYXRlYWJsZSBmcm9tIHNzdGF0ZS4KK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgorCitkb19jb25maWd1cmUgKCkgeworCW9zPSR7SE9TVF9PU30KKwljYXNlICRvcyBpbgorCWxpbnV4LWdudWVhYmkgfFwKKwlsaW51eC1nbnVzcGUgfFwKKwlsaW51eC1tdXNsZWFiaSB8XAorCWxpbnV4LW11c2xzcGUgfFwKKwlsaW51eC1tdXNsICkKKwkJb3M9bGludXgKKwkJOzsKKwkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtaT84NiB8IGxpbnV4LXZpYWMzKQorCQl0YXJnZXQ9bGludXgteDg2CisJCTs7CisJbGludXgtZ251eDMyLXg4Nl82NCB8IGxpbnV4LW11c2x4MzIteDg2XzY0ICkKKwkJdGFyZ2V0PWxpbnV4LXgzMgorCQk7OworCWxpbnV4LWdudTY0LXg4Nl82NCkKKwkJdGFyZ2V0PWxpbnV4LXg4Nl82NAorCQk7OworCWxpbnV4LW1pcHMgfCBsaW51eC1taXBzZWwpCisJCSMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncworCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyopCisJCXRhcmdldD1saW51eC1taXBzNjQKKwkJOzsKKwlsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCB8IGxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKKwkJdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisJCTs7CisJbGludXgtbWljcm9ibGF6ZSogfCBsaW51eC1uaW9zMiogfCBsaW51eC1zaDMgfCBsaW51eC1zaDQgfCBsaW51eC1hcmMqKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcG93ZXJwYykKKwkJdGFyZ2V0PWxpbnV4LXBwYworCQk7OworCWxpbnV4LXBvd2VycGM2NCkKKwkJdGFyZ2V0PWxpbnV4LXBwYzY0CisJCTs7CisJbGludXgtcG93ZXJwYzY0bGUpCisJCXRhcmdldD1saW51eC1wcGM2NGxlCisJCTs7CisJbGludXgtcmlzY3YzMikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXJpc2N2NjQpCisJCXRhcmdldD1saW51eC1nZW5lcmljNjQKKwkJOzsKKwlsaW51eC1zcGFyYyB8IGxpbnV4LXN1cGVyc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJZXNhYworCisJdXNlcHJlZml4PSR7cHJlZml4fQorCWlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisJCXVzZXByZWZpeD0vCisJZmkKKwkjIFdBUk5JTkc6IGRvIG5vdCBzZXQgY29tcGlsZXIvbGlua2VyIGZsYWdzICgtSS8tRCBldGMuKSBpbiBFWFRSQV9PRUNPTkYsIGFzIHRoZXkgd2lsbCBmdWxseSByZXBsYWNlIHRoZQorCSMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSBiaXRiYWtlLiBBZGp1c3QgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnN0ZWFkLgorCUhBU0hCQU5HUEVSTD0iL3Vzci9iaW4vZW52IHBlcmwiIFBFUkw9cGVybCBQRVJMNUxJQj0iJHtTfS9leHRlcm5hbC9wZXJsL1RleHQtVGVtcGxhdGUtMS40Ni9saWIvIiBcCisJcGVybCAke1N9L0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsLTEuMSAtLWxpYmRpcj0ke2xpYmRpcn0gJHRhcmdldAorCXBlcmwgJHtCfS9jb25maWdkYXRhLnBtIC0tZHVtcAorfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKKworCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKKworCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUgZm9yIHBhY2thZ2VzIHN1Y2ggYXMgY2EtY2VydGlmaWNhdGVzIHdoaWNoCisJIyBjb250YWluIGhhcmQtY29kZWQgcGF0aHMgdG8gL2V0Yy9zc2wuIERlYmlhbiBkb2VzIHRoZSBzYW1lLgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsCisJbXYgJHtEfSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzIFwKKwkgICAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZSBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mIFwKKwkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCisKKwkjIEFsdGhvdWdoIGFic29sdXRlIHN5bWxpbmtzIHdvdWxkIGJlIE9LIGZvciB0aGUgdGFyZ2V0LCB0aGV5IGJlY29tZQorCSMgaW52YWxpZCBpZiBuYXRpdmUgb3IgbmF0aXZlc2RrIGFyZSByZWxvY2F0ZWQgZnJvbSBzc3RhdGUuCisJbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL2NlcnRzJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cworCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9wcml2YXRlJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9wcml2YXRlCisJbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mJyl9ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3BlbnNzbCBcCisJICAgIE9QRU5TU0xfQ09ORj0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCisJICAgIFNTTF9DRVJUX0RJUj0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCisJICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydC5wZW0gXAorCSAgICBPUEVOU1NMX0VOR0lORVM9JHtsaWJkaXJ9L2VuZ2luZXMtMS4xCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAorCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAorCXNlZCAnc3wvdXNyL2xpYi9zc2wvfC91c3IvbGliL3NzbC0xLjEvfGcnIC1pICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAorfQorCitQVEVTVF9CVUlMRF9IT1NUX0ZJTEVTICs9ICJjb25maWdkYXRhLnBtIgorUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gInBlcmxfdmVyc2lvbiA9IgorZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJIyBQcnVuZSB0aGUgYnVpbGQgdHJlZQorCXJtIC1mICR7Qn0vZnV6ei8qLiogJHtCfS90ZXN0LyouKgorCisJY3AgJHtTfS9Db25maWd1cmUgJHtCfS9jb25maWdkYXRhLnBtICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS9leHRlcm5hbCAke0J9L3Rlc3QgJHtTfS90ZXN0ICR7Qn0vZnV6eiAke1N9L3V0aWwgJHtCfS91dGlsICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIEZvciB0ZXN0X3NobGlibG9hZAorCWxuIC1zICR7bGliZGlyfS9saWJjcnlwdG8uc28uMS4xICR7RH0ke1BURVNUX1BBVEh9LworCWxuIC1zICR7bGliZGlyfS9saWJzc2wuc28uMS4xICR7RH0ke1BURVNUX1BBVEh9LworCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXMgJHtiaW5kaXJ9L29wZW5zc2wgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWluc3RhbGwgLW02NDQgJHtTfS9hcHBzLyoucGVtICR7U30vYXBwcy8qLnNybCAke1N9L2FwcHMvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWluc3RhbGwgLW03NTUgJHtCfS9hcHBzL0NBLnBsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcworCWluc3RhbGwgLW03NTUgJHtCfS9lbmdpbmVzL29zc2x0ZXN0LnNvICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKK30KKworIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiBNYWtlIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBSUkVDT01NRU5EUyBvbiB0aGlzIHBhY2thZ2UuIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KKyMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBzaW5jZSB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBkZXBlbmRzIG9uIHRoZSBsaWJjcnlwdG8gcGFja2FnZS4KKworUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgb3BlbnNzbC1jb25mICR7UE59LWVuZ2luZXMgJHtQTn0tbWlzYyIKKworRklMRVNfbGliY3J5cHRvID0gIiR7bGliZGlyfS9saWJjcnlwdG8ke1NPTElCU30iCitGSUxFU19saWJzc2wgPSAiJHtsaWJkaXJ9L2xpYnNzbCR7U09MSUJTfSIKK0ZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vc3NsLTEuMS9taXNjIgorRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wtMS4xLyoiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKKworQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKKworUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAib3BlbnNzbC1iaW4gcGVybCBwZXJsLW1vZHVsZXMgYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDVkVfUFJPRFVDVCA9ICJvcGVuc3NsOm9wZW5zc2wiCisKKyMgT25seSBhZmZlY3RzIE9wZW5TU0wgPj0gMS4xLjEgaW4gY29tYmluYXRpb24gd2l0aCBBcGFjaGUgPCAyLjQuMzcKKyMgQXBhY2hlIGluIG1ldGEtd2Vic2VydmVyIGlzIGFscmVhZHkgcmVjZW50IGVub3VnaAorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktMDE5MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwZC1GaXgtYm91bmRzLWNoZWNrLWluLUVBUC1jb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBkLUZpeC1ib3VuZHMtY2hlY2staW4tRUFQLWNvZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdiYTdiYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwZC1GaXgtYm91bmRzLWNoZWNrLWluLUVBUC1jb2RlLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gOGQ3OTcwYjhmM2RiNzI3ZmU3OThiNjVmMzM3N2ZlNjc4NzU3NTQyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAb3psYWJzLm9yZz4KK0RhdGU6IE1vbiwgMyBGZWIgMjAyMCAxNTo1MzoyOCArMTEwMAorU3ViamVjdDogW1BBVENIXSBwcHBkOiBGaXggYm91bmRzIGNoZWNrIGluIEVBUCBjb2RlCisKK0dpdmVuIHRoYXQgd2UgaGF2ZSBqdXN0IGNoZWNrZWQgdmFsbGVuIDwgbGVuLCBpdCBjYW4gbmV2ZXIgYmUgdGhlIGNhc2UKK3RoYXQgdmFsbGVuID49IGxlbiArIHNpemVvZihyaG9zdG5hbWUpLiAgVGhpcyBmaXhlcyB0aGUgY2hlY2sgc28gd2UKK2FjdHVhbGx5IGF2b2lkIG92ZXJmbG93aW5nIHRoZSByaG9zdG5hbWUgYXJyYXkuCisKK1JlcG9ydGVkLWJ5OiBJbGphIFZhbiBTcHJ1bmRlbCA8aXZhbnNwcnVuZGVsQGlvYWN0aXZlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBhdWwgTWFja2VycmFzIDxwYXVsdXNAb3psYWJzLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9wYXVsdXNtYWNrL3BwcC9jb21taXQvOGQ3OTcwYjhmM2RiNzI3ZmU3OThiNjVmMzM3N2ZlNjc4NzU3NTQyNl0KKworQ1ZFOiBDVkUtMjAyMC04NTk3CisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHBwcGQvZWFwLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHBwZC9lYXAuYyBiL3BwcGQvZWFwLmMKK2luZGV4IDk0NDA3ZjUuLjFiOTNkYjAgMTAwNjQ0CistLS0gYS9wcHBkL2VhcC5jCisrKysgYi9wcHBkL2VhcC5jCitAQCAtMTQyMCw3ICsxNDIwLDcgQEAgaW50IGxlbjsKKyAJCX0KKyAKKyAJCS8qIE5vdCBzbyBsaWtlbHkgdG8gaGFwcGVuLiAqLworLQkJaWYgKHZhbGxlbiA+PSBsZW4gKyBzaXplb2YgKHJob3N0bmFtZSkpIHsKKysJCWlmIChsZW4gLSB2YWxsZW4gPj0gc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisgCQkJZGJnbG9nKCJFQVA6IHRyaW1taW5nIHJlYWxseSBsb25nIHBlZXIgbmFtZSBkb3duIik7CisgCQkJQkNPUFkoaW5wICsgdmFsbGVuLCByaG9zdG5hbWUsIHNpemVvZiAocmhvc3RuYW1lKSAtIDEpOworIAkJCXJob3N0bmFtZVtzaXplb2YgKHJob3N0bmFtZSkgLSAxXSA9ICdcMCc7CitAQCAtMTg0Niw3ICsxODQ2LDcgQEAgaW50IGxlbjsKKyAJCX0KKyAKKyAJCS8qIE5vdCBzbyBsaWtlbHkgdG8gaGFwcGVuLiAqLworLQkJaWYgKHZhbGxlbiA+PSBsZW4gKyBzaXplb2YgKHJob3N0bmFtZSkpIHsKKysJCWlmIChsZW4gLSB2YWxsZW4gPj0gc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisgCQkJZGJnbG9nKCJFQVA6IHRyaW1taW5nIHJlYWxseSBsb25nIHBlZXIgbmFtZSBkb3duIik7CisgCQkJQkNPUFkoaW5wICsgdmFsbGVuLCByaG9zdG5hbWUsIHNpemVvZiAocmhvc3RuYW1lKSAtIDEpOworIAkJCXJob3N0bmFtZVtzaXplb2YgKHJob3N0bmFtZSkgLSAxXSA9ICdcMCc7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCmluZGV4IDY0NGNkZTQuLjYwYzU2ZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcG9lLWluY2x1ZGUtbmV0aW5ldC1pbi5oLWJlZm9yZS1saW51eC1pbi5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwLVJlbW92ZS11bm5lZWRlZC1pbmNsdWRlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BwcC0yLjQuNy1ERVMtb3BlbnNzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaCBcCiAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NTAxNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjc5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJuYW1lIHNlcnZlciBpbmZvcm1hdGlvbiBoYW5kbGVyIgotREVTQ1JJUFRJT04gPSAiUmVzb2x2Y29uZiBpcyBhIGZyYW1ld29yayBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3lzdGVtJ3MgXAotaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudGx5IGF2YWlsYWJsZSBuYW1lc2VydmVycy4gSXQgc2V0cyBcCi1pdHNlbGYgdXAgYXMgdGhlIGludGVybWVkaWFyeSBiZXR3ZWVuIHByb2dyYW1zIHRoYXQgc3VwcGx5IFwKLW5hbWVzZXJ2ZXIgaW5mb3JtYXRpb24gYW5kIHByb2dyYW1zIHRoYXQgbmVlZCBuYW1lc2VydmVyIFwKLWluZm9ybWF0aW9uLiIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLUFVVEhPUiA9ICJUaG9tYXMgSG9vZCIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Jlc29sdmNvbmYiCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNTIwVDA0NDM0MFovcG9vbC9tYWluL3IvJHtCUE59LyR7QlBOfV8xLjc5LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGF0aC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9yZXNvbHZjb25mIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYWIyMzgyMDIwZmM1MThmMDZhMDZlOTI0YzU2ZDMwMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTI4NDNjZDQxNjJiNzA2ZjA0ODFiM2MyODE2NTc3MjhjYmMyODIyZTUwYTY0ZmZmNzliNzliZDhhYTg3MGEwIgotCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL3IvcmVzb2x2Y29uZi8iCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19jb21waWxlICgpIHsKLQk6Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9yZXNvbHZjb25mICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JCWVjaG8gImQgL3J1bi8ke0JQTn0vaW50ZXJmYWNlIC0gLSAtIC0iIFwKLQkJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCi0JZmkKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQotCWxuIC1zbmYgJHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9ydW4KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9ICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCAke0R9JHtkb2NkaXJ9LyR7UH0KLQljcCAtcFBSIGV0Yy8qICR7RH0ke3N5c2NvbmZkaXJ9LwotCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS8KLQlpbnN0YWxsIC1tIDA3NTUgYmluL3Jlc29sdmNvbmYgJHtEfSR7YmFzZV9zYmluZGlyfS8KLQlpbnN0YWxsIC1tIDA3NTUgYmluL2xpc3QtcmVjb3JkcyAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kCi0JaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLjAwMHJlc29sdmNvbmYuaWYtdXAgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC8wMDByZXNvbHZjb25mCi0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQKLQlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYucmVzb2x2Y29uZi5pZi1kb3duICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZC9yZXNvbHZjb25mCi0JaW5zdGFsbCAtbSAwNjQ0IFJFQURNRSAke0R9JHtkb2NkaXJ9LyR7UH0vCi0JaW5zdGFsbCAtbSAwNjQ0IG1hbi9yZXNvbHZjb25mLjggJHtEfSR7bWFuZGlyfS9tYW44LwotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWlmIFsgLXogIiREIiBdOyB0aGVuCi0JCWlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCi0JCQlzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKLQkJZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KLQkJCSR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCQlmaQotCWZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8ke0JQTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuODIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuODIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc5NTk1NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS44Mi5iYgpAQCAtMCwwICsxLDY4IEBACitTVU1NQVJZID0gIm5hbWUgc2VydmVyIGluZm9ybWF0aW9uIGhhbmRsZXIiCitERVNDUklQVElPTiA9ICJSZXNvbHZjb25mIGlzIGEgZnJhbWV3b3JrIGZvciBrZWVwaW5nIHRyYWNrIG9mIHRoZSBzeXN0ZW0ncyBcCitpbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50bHkgYXZhaWxhYmxlIG5hbWVzZXJ2ZXJzLiBJdCBzZXRzIFwKK2l0c2VsZiB1cCBhcyB0aGUgaW50ZXJtZWRpYXJ5IGJldHdlZW4gcHJvZ3JhbXMgdGhhdCBzdXBwbHkgXAorbmFtZXNlcnZlciBpbmZvcm1hdGlvbiBhbmQgcHJvZ3JhbXMgdGhhdCBuZWVkIG5hbWVzZXJ2ZXIgXAoraW5mb3JtYXRpb24uIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgorQVVUSE9SID0gIlRob21hcyBIb29kIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvcmVzb2x2Y29uZiIKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vcmVzb2x2Y29uZi5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBhdGgtZm9yLWJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vOTlfcmVzb2x2Y29uZiBcCisgICAgICAgICAgIgorCitTUkNSRVYgPSAiY2IxOWJiZmJlN2U1MjE3NDMzMmY2OGJmMmYyOTViMzlkMTE5ZmFkMyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9yL3Jlc29sdmNvbmYvIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9fY29tcGlsZSAoKSB7CisJOgorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfcmVzb2x2Y29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vJHtCUE59L2ludGVyZmFjZSAtIC0gLSAtIiBcCisJCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgorCWZpCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KKwlsbiAtc25mICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcnVuCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSAke0R9JHtiYXNlX3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfSR7ZG9jZGlyfS8ke1B9CisJY3AgLXBQUiBldGMvKiAke0R9JHtzeXNjb25mZGlyfS8KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vCisJaW5zdGFsbCAtbSAwNzU1IGJpbi9yZXNvbHZjb25mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCisJaW5zdGFsbCAtbSAwNzU1IGJpbi9saXN0LXJlY29yZHMgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAorCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi4wMDByZXNvbHZjb25mLmlmLXVwICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvMDAwcmVzb2x2Y29uZgorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kCisJaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLnJlc29sdmNvbmYuaWYtZG93biAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQvcmVzb2x2Y29uZgorCWluc3RhbGwgLW0gMDY0NCBSRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1B9LworCWluc3RhbGwgLW0gMDY0NCBtYW4vcmVzb2x2Y29uZi44ICR7RH0ke21hbmRpcn0vbWFuOC8KK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlpZiBbIC16ICIkRCIgXTsgdGhlbgorCQlpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgorCQkJc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCisJCWVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCisJCQkke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwkJZmkKKwlmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiYmU1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiTXVsdGlwdXJwb3NlIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgdHJhbnNmZXIiCi1ERVNDUklQVElPTiA9ICJTb2NhdCBpcyBhIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgXAotdHJhbnNmZXIgYmV0d2VlbiB0d28gaW5kZXBlbmRlbnQgZGF0YSBjaGFubmVscy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvIgotCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1MSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjU3O2VuZGxpbmU9Mjg3O21kNT0zMzhjMDVlYWRkMDEzODcyYWJiMWQ2ZTE5OGUxMGEzZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvZG93bmxvYWQvc29jYXQtJHtQVn0udGFyLmJ6MiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmEwMzJhNDdiOGI4OWExODQ4NTY5N2ZhOTc1MTU0ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGQ2M2ZmZTQ5ODE2OGE0YWFjNDFkMzA3NTk0YzUwNzZmZjMwN2FhMGFjMDRiMTQxZjhmMWNlYzY1OTRkMDRhIgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9oYXZlX3pfbW9kaWZpZXI9eWVzIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gXAotICAgICAgICAgICAgICAgICBzY19jdl90ZXJtaW9zX2lzcGVlZD1ubyBcCi0gICAgICAgICAgICAgICAgICR7VEVSTUJJVFNfU0hJRlRTfSBcCi0iCi0KLVRFUk1CSVRTX1NISUZUUyA/PSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTkgXAotICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTExIFwKLSAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTQiCi0KLVRFUk1CSVRTX1NISUZUU19wb3dlcnBjID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgotCi1URVJNQklUU19TSElGVFNfcG93ZXJwYzY0ID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ0Y3Atd3JhcHBlcnMgcmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS1lbmFibGUtbGlid3JhcCwtLWRpc2FibGUtbGlid3JhcCx0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZSwtLWRpc2FibGUtcmVhZGxpbmUscmVhZGxpbmUiCi0KLWRvX2luc3RhbGxfcHJlcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHttYW5kaXJ9L21hbjEKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjBkNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjQuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJNdWx0aXB1cnBvc2UgcmVsYXkgZm9yIGJpZGlyZWN0aW9uYWwgZGF0YSB0cmFuc2ZlciIKK0RFU0NSSVBUSU9OID0gIlNvY2F0IGlzIGEgcmVsYXkgZm9yIGJpZGlyZWN0aW9uYWwgZGF0YSBcCit0cmFuc2ZlciBiZXR3ZWVuIHR3byBpbmRlcGVuZGVudCBkYXRhIGNoYW5uZWxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC8iCisKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK0xJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTc7ZW5kbGluZT0yODc7bWQ1PTMzOGMwNWVhZGQwMTM4NzJhYmIxZDZlMTk4ZTEwYTNmIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC9kb3dubG9hZC9zb2NhdC0ke1BWfS50YXIuYnoyIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNjY2E0ZjhjZDlkMmQxY2FhYmQ5Y2MwOTk0NTFiYWM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3MjM3NGNhODZmNjU0OThlMjNlMzI1OWMyZWUxYjhmOWRiZWIwNGQxMmMyYTc4YzBjOWI1ZDFjYjk3ZGZkZmMiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2hhdmVfel9tb2RpZmllcj15ZXMgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBcCisgICAgICAgICAgICAgICAgIHNjX2N2X3Rlcm1pb3NfaXNwZWVkPW5vIFwKKyAgICAgICAgICAgICAgICAgJHtURVJNQklUU19TSElGVFN9IFwKKyIKKworVEVSTUJJVFNfU0hJRlRTID89ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9OSBcCisgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTEgXAorICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9NCIKKworVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGMgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCisKK1RFUk1CSVRTX1NISUZUU19wb3dlcnBjNjQgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInRjcC13cmFwcGVycyByZWFkbGluZSIKK1BBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0tZW5hYmxlLXJlYWRsaW5lLC0tZGlzYWJsZS1yZWFkbGluZSxyZWFkbGluZSIKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKKworZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKKyAgICBta2RpciAtcCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL2ZzdGFiCmluZGV4IGQ3OWEwMTYuLjcwZTQwMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL2ZzdGFiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL2ZzdGFiCkBAIC0yLDcgKzIsNyBAQAogCiAvZGV2L3Jvb3QgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICBhdXRvICAgICAgIGRlZmF1bHRzICAgICAgICAgICAgICAxICAxCiBwcm9jICAgICAgICAgICAgICAgICAvcHJvYyAgICAgICAgICAgICAgICBwcm9jICAgICAgIGRlZmF1bHRzICAgICAgICAgICAgICAwICAwCi1kZXZwdHMgICAgICAgICAgICAgICAvZGV2L3B0cyAgICAgICAgICAgICBkZXZwdHMgICAgIG1vZGU9MDYyMCxnaWQ9NSAgICAgICAwICAwCitkZXZwdHMgICAgICAgICAgICAgICAvZGV2L3B0cyAgICAgICAgICAgICBkZXZwdHMgICAgIG1vZGU9MDYyMCxwdG14bW9kZT0wNjY2LGdpZD01ICAgICAgMCAgMAogdG1wZnMgICAgICAgICAgICAgICAgL3J1biAgICAgICAgICAgICAgICAgdG1wZnMgICAgICBtb2RlPTA3NTUsbm9kZXYsbm9zdWlkLHN0cmljdGF0aW1lIDAgIDAKIHRtcGZzICAgICAgICAgICAgICAgIC92YXIvdm9sYXRpbGUgICAgICAgIHRtcGZzICAgICAgZGVmYXVsdHMgICAgICAgICAgICAgIDAgIDAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtcGFzc3dkL2Jhc2UtcGFzc3dkXzMuNS4yOS5iYgppbmRleCBkMWFhYjA5Li5kMDFjZDdlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtcGFzc3dkL2Jhc2UtcGFzc3dkXzMuNS4yOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtcGFzc3dkL2Jhc2UtcGFzc3dkXzMuNS4yOS5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQmFzZSBzeXN0ZW0gbWFzdGVyIHBhc3N3b3JkL2dyb3VwIGZpbGVzIgogREVTQ1JJUFRJT04gPSAiVGhlIG1hc3RlciBjb3BpZXMgb2YgdGhlIHVzZXIgZGF0YWJhc2UgZmlsZXMgKC9ldGMvcGFzc3dkIGFuZCAvZXRjL2dyb3VwKS4gIFRoZSB1cGRhdGUtcGFzc3dkIHRvb2wgaXMgYWxzbyBwcm92aWRlZCB0byBrZWVwIHRoZSBzeXN0ZW0gZGF0YWJhc2VzIHN5bmNocm9uaXplZCB3aXRoIHRoZXNlIG1hc3RlciBmaWxlcy4iCiBTRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKK0xJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKIAogUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVmVyc2lvbiAzLjUuMzggcmVxdWlyZXMgY2RlYmNvbmYgZm9yIHVwZGF0ZS1wYXNzd2QgdXRpbGl0eSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwppbmRleCBkMDhmYThkLi42Y2ZkY2Q3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCkBAIC0xLDEzICsxLDEzIEBACiBTVU1NQVJZID0gIlRpbnkgdmVyc2lvbnMgb2YgbWFueSBjb21tb24gVU5JWCB1dGlsaXRpZXMgaW4gYSBzaW5nbGUgc21hbGwgZXhlY3V0YWJsZSIKIERFU0NSSVBUSU9OID0gIkJ1c3lCb3ggY29tYmluZXMgdGlueSB2ZXJzaW9ucyBvZiBtYW55IGNvbW1vbiBVTklYIHV0aWxpdGllcyBpbnRvIGEgc2luZ2xlIHNtYWxsIGV4ZWN1dGFibGUuIEl0IHByb3ZpZGVzIG1pbmltYWxpc3QgcmVwbGFjZW1lbnRzIGZvciBtb3N0IG9mIHRoZSB1dGlsaXRpZXMgeW91IHVzdWFsbHkgZmluZCBpbiBHTlUgZmlsZXV0aWxzLCBzaGVsbHV0aWxzLCBldGMuIFRoZSB1dGlsaXRpZXMgaW4gQnVzeUJveCBnZW5lcmFsbHkgaGF2ZSBmZXdlciBvcHRpb25zIHRoYW4gdGhlaXIgZnVsbC1mZWF0dXJlZCBHTlUgY291c2luczsgaG93ZXZlciwgdGhlIG9wdGlvbnMgdGhhdCBhcmUgaW5jbHVkZWQgcHJvdmlkZSB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSBhbmQgYmVoYXZlIHZlcnkgbXVjaCBsaWtlIHRoZWlyIEdOVSBjb3VudGVycGFydHMuIEJ1c3lCb3ggcHJvdmlkZXMgYSBmYWlybHkgY29tcGxldGUgUE9TSVggZW52aXJvbm1lbnQgZm9yIGFueSBzbWFsbCBvciBlbWJlZGRlZCBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmJ1c3lib3gubmV0IgogQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvIgogCiBERVBFTkRTICs9ICJrZXJuLXRvb2xzLW5hdGl2ZSB2aXJ0dWFsL2NyeXB0IgogCiAjIGJ6aXAyIGFwcGxldCBpbiBidXN5Ym94IGlzIGJhc2VkIG9uIGxpZ2h0bHktbW9kaWZpZWQgYnppcDIgc291cmNlCiAjIHRoZSBHUEwgaXMgdmVyc2lvbiAyIG9ubHkKLUxJQ0VOU0UgPSAiR1BMdjIgJiBiemlwMiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBiemlwMi0xLjAuNiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRlMTBkZTQ4NjQyYWI3NDMxOGU4OTNhNjExMDVhZmJiIgogCiBTRUNUSU9OID0gImJhc2UiCkBAIC0zNTQsNyArMzU0LDkgQEAKIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJY3AgLXIgJHtCfS90ZXN0c3VpdGUgJHtEfSR7UFRFU1RfUEFUSH0vCi0JY3AgJHtCfS8uY29uZmlnICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgICAgICMgVGhlc2UgYWNjZXNzIHRoZSBpbnRlcm5ldCB3aGljaCBpcyBub3QgZ3VhcmFudGVlZCB0byB3b3JrIG9uIG1hY2hpbmVzIHJ1bm5pbmcgdGhlIHRlc3RzCisgICAgICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvd2dldAorCXNvcnQgJHtCfS8uY29uZmlnID4gJHtEfSR7UFRFU1RfUEFUSH0vLmNvbmZpZwogCWxuIC1zIC9iaW4vYnVzeWJveCAgICR7RH0ke1BURVNUX1BBVEh9L2J1c3lib3gKIH0KIApAQCAtNDMxLDYgKzQzMywzMiBAQAogICAgIGQucHJlcGVuZFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCiB9CiAKK3BrZ19wb3N0aW5zdF8ke1BOfV9wcmVwZW5kICgpIHsKKyAgICAgICAgIyBOZWVkIHBhdGggdG8gc2F2ZWQgdXRpbHMsIGJ1dCB0aGV5IG1heSBoYXZlIGJlIHJlbW92ZWQgb24gdXBncmFkZSBvZiBidXN5Ym94CisgICAgICAgICMgT25seSB1c2Ugc2hlbGwgdG8gZ2V0IHBhdGhzLiBBbHNvIGNhcHR1cmUgaWYgYnVzeWJveCB3YXMgc2F2ZWQuCisgICAgICAgIEJVU1lCT1g9IiIKKyAgICAgICAgaWYgWyAieCREIiA9ICJ4IiBdIDsgdGhlbiAKKyAgICAgICAgICAgZm9yIGJ1c3lib3hfcm1kaXIgaW4gL3RtcC9idXN5Ym94cm0tKjsgZG8KKyAgICAgICAgICAgICAgIGlmIFsgIiRidXN5Ym94X3JtZGlyIiAhPSAnL3RtcC9idXN5Ym94cm0tKicgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGV4cG9ydCBQQVRIPSRidXN5Ym94X3JtZGlyOiRQQVRICisgICAgICAgICAgICAgICAgICBpZiBbIC1lICRidXN5Ym94X3JtZGlyL2J1c3lib3gqIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIEJVU1lCT1g9IiRidXN5Ym94X3JtZGlyL2J1c3lib3gqIgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59X2FwcGVuZCAoKSB7CisgICAgICAgICMgSWYgYnVzeWJveCBleGlzdHMgaW4gdGhlIHJlbW92ZSBkaXJlY3RvcnkgaXQgaXMgYmVjYXVzZSBpdCB3YXMgdGhlIG9ubHkgc2hlbGwgbGVmdC4KKyAgICAgICAgaWYgWyAieCREIiA9ICJ4IiBdIDsgdGhlbgorICAgICAgICAgICBpZiBbICJ4JEJVU1lCT1giICE9ICJ4IiBdIDsgdGhlbgorICAgICAgICAgICAgICB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlIHNoICRCVVNZQk9YCisgICAgICAgICAgICAgIHJtIC1mICRCVVNZQk9YCisgICAgICAgICAgIGZpCisgICAgICAgIGZpCit9IAorCiBwa2dfcHJlcm1fJHtQTn0gKCkgewogCSMgVGhpcyBpcyBzbyB5b3UgY2FuIG1ha2UgYnVzeWJveCBjb21taXQgc3VpY2lkZSAtIHJlbW92aW5nIGJ1c3lib3ggd2l0aCBubyBvdGhlciBwYWNrYWdlcwogCSMgcHJvdmlkaW5nIGl0cyBmaWxlcywgdGhpcyB3aWxsIG1ha2UgdXBkYXRlLWFsdGVybmF0aXZlcyB3b3JrLCBidXQgdGhlIHVwZGF0ZS1yYy5kIHBhcnQKQEAgLTQ1MSw5ICs0NzksMjYgQEAKIAlsbiAtcyAke2Jhc2VfYmluZGlyfS9idXN5Ym94ICR0bXBkaXIvZ3JlcAogCWxuIC1zICR7YmFzZV9iaW5kaXJ9L2J1c3lib3ggJHRtcGRpci90YWlsCiAJZXhwb3J0IFBBVEg9JFBBVEg6JHRtcGRpcgorCisgICAgICAgICMgSWYgYnVzeWJveCBpcyB0aGUgc2hlbGwsIHdlIG5lZWQgdG8gc2F2ZSBpdCBzaW5jZSBpdHMgdGhlIGxvd2VzdCBwcmlvcml0eSBzaGVsbAorICAgICAgICAjIFJlZ2lzdGVyIHNhdmVkIGJpdGJha2UgYXMgdGhlIGxvd2VzdCBwcmlvcml0eSBzaGVsbCBwb3NzaWJsZSBhcyBiYWNrIHVwLgorICAgICAgICBpZiBbIC1uICIkKHJlYWRsaW5rIC1mIC9iaW4vc2ggfCBncmVwIGJ1c3lib3gpIiBdIDsgdGhlbgorICAgICAgICAgICBCVVNZQk9YPSQocmVhZGxpbmsgLWYgL2Jpbi9zaCkKKyAgICAgICAgICAgY3AgJEJVU1lCT1ggJHRtcGRpci8kKGJhc2VuYW1lICRCVVNZQk9YKQorICAgICAgICAgICB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvYmluL3NoIHNoICR0bXBkaXIvJChiYXNlbmFtZSAkQlVTWUJPWCkgMSAKKyAgICAgICAgZmkKIH0KIAogcGtnX3Bvc3RybV8ke1BOfSAoKSB7CisgICAgICAgICMgQWRkIHBhdGggdG8gcmVtb3ZlIGRpciBpbiBjYXNlIHdlIHJlbW92ZWQgb3VyIG9ubHkgZ3JlcAorICAgICAgICBpZiBbICJ4JEQiID0gIngiIF0gOyB0aGVuCisgICAgICAgICAgIGZvciBidXN5Ym94X3JtZGlyIGluIC90bXAvYnVzeWJveHJtLSo7IGRvCisgICAgICAgICAgICAgICBpZiBbICIkYnVzeWJveF9ybWRpciIgIT0gJy90bXAvYnVzeWJveHJtLSonIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICBleHBvcnQgUEFUSD0kYnVzeWJveF9ybWRpcjokUEFUSAorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgZG9uZQorICAgICAgICBmaQorCiAJaWYgZ3JlcCAtcSAiXiR7YmFzZV9iaW5kaXJ9L2Jhc2gkIiAkRCR7c3lzY29uZmRpcn0vYnVzeWJveC5saW5rcyogJiYgWyAhIC1lICREJHtiYXNlX2JpbmRpcn0vYmFzaCBdOyB0aGVuCiAJCXByaW50ZiAiJChncmVwIC12ICJeJHtiYXNlX2JpbmRpcn0vYmFzaCQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwogCWZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN0aW1lLWZ1bmN0aW9uLWNhbGxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTQzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIGQzNTM5YmU4ZjI3YjhjYmZkZmVlNDYwZmUwODI5OTE1OGYwOGJjZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDEzOjA2OjQwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBzdGltZSgpIGZ1bmN0aW9uIGNhbGxzCisKK3N0aW1lKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBnbGliYyAyLjMxIGFuZCByZXBsYWNlZCB3aXRoCitjbG9ja19zZXR0aW1lKCkuIExldCdzIHJlcGxhY2UgdGhlIHN0aW1lKCkgZnVuY3Rpb24gY2FsbHMgd2l0aAorY2xvY2tfc2V0dGltZSgpIGluIHByZXBlcmF0aW9uLgorCitmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKK3JkYXRlX21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk3ICAgICAyMjQgICAgICsyNworY2xvY2tfc2V0dGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gICAgICAyNyAgICAgKzI3CitkYXRlX21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkyNiAgICAgOTQxICAgICArMTUKK3N0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3ICAgICAgIC0gICAgIC0zNworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoYWRkL3JlbW92ZTogMi8yIGdyb3cvc2hyaW5rOiAyLzAgdXAvZG93bjogNjkvLTM3KSAgICAgICAgICAgICBUb3RhbDogMzIgYnl0ZXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWQzNTM5YmU4ZjI3YjhjYmZkZmVlNDYwZmUwODI5OTE1OGYwOGJjZDldIAorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGNvcmV1dGlscy9kYXRlLmMgICAgICAgICB8IDYgKysrKystCisgbGliYmIvbWlzc2luZ19zeXNjYWxscy5jIHwgOCAtLS0tLS0tLQorIHV0aWwtbGludXgvcmRhdGUuYyAgICAgICB8IDggKysrKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCistLS0gYS9jb3JldXRpbHMvZGF0ZS5jCisrKysgYi9jb3JldXRpbHMvZGF0ZS5jCitAQCAtMjc5LDYgKzI3OSw5IEBAIGludCBkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGEKKyAJCXRpbWUoJnRzLnR2X3NlYyk7CisgI2VuZGlmCisgCX0KKysjaWYgIUVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTworKwl0cy50dl9uc2VjID0gMDsKKysjZW5kaWYKKyAJbG9jYWx0aW1lX3IoJnRzLnR2X3NlYywgJnRtX3RpbWUpOworIAorIAkvKiBJZiBkYXRlIHN0cmluZyBpcyBnaXZlbiwgdXBkYXRlIHRtX3RpbWUsIGFuZCBtYXliZSBzZXQgZGF0ZSAqLworQEAgLTMwMSw5ICszMDQsMTAgQEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYQorIAkJaWYgKGRhdGVfc3RyWzBdICE9ICdAJykKKyAJCQl0bV90aW1lLnRtX2lzZHN0ID0gLTE7CisgCQl0cy50dl9zZWMgPSB2YWxpZGF0ZV90bV90aW1lKGRhdGVfc3RyLCAmdG1fdGltZSk7CisrCQl0cy50dl9uc2VjID0gMDsKKyAKKyAJCS8qIGlmIHNldHRpbmcgdGltZSwgc2V0IGl0ICovCistCQlpZiAoKG9wdCAmIE9QVF9TRVQpICYmIHN0aW1lKCZ0cy50dl9zZWMpIDwgMCkgeworKwkJaWYgKChvcHQgJiBPUFRfU0VUKSAmJiBjbG9ja19zZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpIDwgMCkgeworIAkJCWJiX3BlcnJvcl9tc2coImNhbid0IHNldCBkYXRlIik7CisgCQl9CisgCX0KKy0tLSBhL2xpYmJiL21pc3Npbmdfc3lzY2FsbHMuYworKysrIGIvbGliYmIvbWlzc2luZ19zeXNjYWxscy5jCitAQCAtMTUsMTQgKzE1LDYgQEAgcGlkX3QgZ2V0c2lkKHBpZF90IHBpZCkKKyAJcmV0dXJuIHN5c2NhbGwoX19OUl9nZXRzaWQsIHBpZCk7CisgfQorIAorLWludCBzdGltZShjb25zdCB0aW1lX3QgKnQpCisteworLQlzdHJ1Y3QgdGltZXZhbCB0djsKKy0JdHYudHZfc2VjID0gKnQ7CistCXR2LnR2X3VzZWMgPSAwOworLQlyZXR1cm4gc2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CistfQorLQorIGludCBzZXRob3N0bmFtZShjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuKQorIHsKKyAJcmV0dXJuIHN5c2NhbGwoX19OUl9zZXRob3N0bmFtZSwgbmFtZSwgbGVuKTsKKy0tLSBhL3V0aWwtbGludXgvcmRhdGUuYworKysrIGIvdXRpbC1saW51eC9yZGF0ZS5jCitAQCAtOTUsOSArOTUsMTMgQEAgaW50IHJkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaAorIAlpZiAoIShmbGFncyAmIDIpKSB7IC8qIG5vIC1wICgtcyBtYXkgYmUgcHJlc2VudCkgKi8KKyAJCWlmICh0aW1lKE5VTEwpID09IHJlbW90ZV90aW1lKQorIAkJCWJiX2Vycm9yX21zZygiY3VycmVudCB0aW1lIG1hdGNoZXMgcmVtb3RlIHRpbWUiKTsKKy0JCWVsc2UKKy0JCQlpZiAoc3RpbWUoJnJlbW90ZV90aW1lKSA8IDApCisrCQllbHNlIHsKKysJCQlzdHJ1Y3QgdGltZXNwZWMgdHM7CisrCQkJdHMudHZfc2VjID0gcmVtb3RlX3RpbWU7CisrCQkJdHMudHZfbnNlYyA9IDA7CisrCQkJaWYgKGNsb2NrX3NldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cykgPCAwKQorIAkJCQliYl9wZXJyb3JfbXNnX2FuZF9kaWUoImNhbid0IHNldCB0aW1lIG9mIGRheSIpOworKwkJfQorIAl9CisgCisgCWlmIChmbGFncyAhPSAxKSAvKiBub3QgbG9uZSAtcyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3lzY2FsbC13cmFwcGVycy1hcm91bmQtY2xvY2tfZ2V0dGltZS1jbG9zZXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3lzY2FsbC13cmFwcGVycy1hcm91bmQtY2xvY2tfZ2V0dGltZS1jbG9zZXMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjN2Y5YjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zeXNjYWxsLXdyYXBwZXJzLWFyb3VuZC1jbG9ja19nZXR0aW1lLWNsb3Nlcy0ucGF0Y2gKQEAgLTAsMCArMSwxMjAgQEAKK0Zyb20gYmU1YTUwNWQ3NzFhNzdjNjQwYWNjMzVjZWFhNDcwYzgwZTYyZjk1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUaHUsIDI0IE9jdCAyMDE5IDE2OjI2OjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBzeXNjYWxsIHdyYXBwZXJzIGFyb3VuZCBjbG9ja19nZXR0aW1lLCBjbG9zZXMgMTIwOTEKKworMTIwOTEgIkRpcmVjdCB1c2Ugb2YgX19OUl9jbG9ja19nZXR0aW1lIGlzIG5vdCB0aW1lNjQtc2FmZSIuCisKK2Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQorcnVuc3ZfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2OTggICAgMTcxMiAgICAgKzE0CitzdGFydHNlcnZpY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3OCAgICAgMzgzICAgICAgKzUKK2dldF9tb25vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxICAgICAgMjUgICAgICAtNgorZGF0ZV9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MzIgICAgIDkyNiAgICAgIC02CitnZXR0aW1lb2ZkYXlfbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNyAgICAgICAtICAgICAtMTcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKGFkZC9yZW1vdmU6IDAvMSBncm93L3NocmluazogMi8yIHVwL2Rvd246IDE5Ly0yOSkgICAgICAgICAgICBUb3RhbDogLTEwIGJ5dGVzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1iZTVhNTA1ZDc3MWE3N2M2NDBhY2MzNWNlYWE0NzBjODBlNjJmOTU0XQorU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmZsYWdzICAgfCAgNiArKysrLS0KKyBjb3JldXRpbHMvZGF0ZS5jIHwgMTYgKysrLS0tLS0tLS0tLS0tLQorIGxpYmJiL3RpbWUuYyAgICAgfCAxMSArLS0tLS0tLS0tLQorIHJ1bml0L3J1bnN2LmMgICAgfCAxMSArLS0tLS0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKKworLS0tIGEvTWFrZWZpbGUuZmxhZ3MKKysrKyBiL01ha2VmaWxlLmZsYWdzCitAQCAtMTI5LDEwICsxMjksMTIgQEAgZW5kaWYKKyAjIGZhbGwgYmFjayB0byB1c2luZyBhIHRlbXAgZmlsZToKKyBDUllQVF9BVkFJTEFCTEUgOj0gJChzaGVsbCBlY2hvICdpbnQgbWFpbih2b2lkKXtyZXR1cm4gMDt9JyA+Y3J5cHR0ZXN0LmM7ICQoQ0MpICQoQ0ZMQUdTKSAtbGNyeXB0IC1vIC9kZXYvbnVsbCBjcnlwdHRlc3QuYyA+L2Rldi9udWxsIDI+JjEgJiYgZWNobyAieSI7IHJtIGNyeXB0dGVzdC5jKQorIGlmZXEgKCQoQ1JZUFRfQVZBSUxBQkxFKSx5KQorLUxETElCUyArPSBtIGNyeXB0CisrTERMSUJTICs9IG0gcnQgY3J5cHQKKyBlbHNlCistTERMSUJTICs9IG0KKytMRExJQlMgKz0gbSBydAorIGVuZGlmCisrIyBsaWJtIG1heSBiZSBuZWVkZWQgZm9yIGRjLCBhd2ssIG50cGQKKysjIGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKQorIAorICMgbGlicGFtIG1heSB1c2UgbGlicHRocmVhZCwgbGliZGwgYW5kL29yIGxpYmF1ZGl0LgorICMgT24gc29tZSBwbGF0Zm9ybXMgdGhhdCByZXF1aXJlcyBhbiBleHBsaWNpdCAtbHB0aHJlYWQsIC1sZGwsIC1sYXVkaXQuCistLS0gYS9jb3JldXRpbHMvZGF0ZS5jCisrKysgYi9jb3JldXRpbHMvZGF0ZS5jCitAQCAtMzMsMTAgKzMzLDkgQEAKKyAvL2NvbmZpZzoJRW5hYmxlIG9wdGlvbiAoLUkpIHRvIG91dHB1dCBhbiBJU08tODYwMSBjb21wbGlhbnQKKyAvL2NvbmZpZzoJZGF0ZS90aW1lIHN0cmluZy4KKyAvL2NvbmZpZzoKKy0vL2NvbmZpZzojIGRlZmF1bHRzIHRvICJubyI6IHN0YXQncyBuYW5vc2Vjb25kIGZpZWxkIGlzIGEgYml0IG5vbi1wb3J0YWJsZQorIC8vY29uZmlnOmNvbmZpZyBGRUFUVVJFX0RBVEVfTkFOTworIC8vY29uZmlnOglib29sICJTdXBwb3J0ICVbbnVtXU4gbmFub3NlY29uZCBmb3JtYXQgc3BlY2lmaWVyIgorLS8vY29uZmlnOglkZWZhdWx0IG4gICMgc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUpIG9yIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQpCisrLy9jb25maWc6CWRlZmF1bHQgbiAjIHN0YXQncyBuYW5vc2Vjb25kIGZpZWxkIGlzIGEgYml0IG5vbi1wb3J0YWJsZQorIC8vY29uZmlnOglkZXBlbmRzIG9uIERBVEUKKyAvL2NvbmZpZzoJc2VsZWN0IFBMQVRGT1JNX0xJTlVYCisgLy9jb25maWc6CWhlbHAKK0BAIC0yNzEsMTcgKzI3MCw4IEBAIGludCBkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGEKKyAJCSAqLworICNlbmRpZgorIAl9IGVsc2UgeworLSNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCistCQkvKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorLQkJICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworLQkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworLSNlbGlmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTyAmJiBfX1RJTUVTSVpFID09IDY0CistCQkvKiBMZXQncyBvbmx5IHN1cHBvcnQgdGhlIDY0IHN1ZmZpeCBzeXNjYWxscyBmb3IgNjQtYml0IHRpbWVfdC4KKy0JCSAqIFRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBmb3IgdXMgYXMgd2UgZG9uJ3QgbmVlZCB0byBjb252ZXJ0CistCQkgKiBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0LiBXZSBhbHNvIGRvbid0IGhhdmUgYSB3YXkgdG8KKy0JCSAqIHJlcG9ydCBvdmVyZmxvdyBlcnJvcnMgaGVyZS4KKy0JCSAqLworLQkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisrI2lmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTworKwkJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKyAjZWxzZQorIAkJdGltZSgmdHMudHZfc2VjKTsKKyAjZW5kaWYKKy0tLSBhL2xpYmJiL3RpbWUuYworKysrIGIvbGliYmIvdGltZS5jCitAQCAtMjUzLDE4ICsyNTMsOSBAQCBjaGFyKiBGQVNUX0ZVTkMgc3RyZnRpbWVfWVlZWU1NRERISE1NU1MoCisgI2RlZmluZSBDTE9DS19NT05PVE9OSUMgMQorICNlbmRpZgorIAorLS8qIGxpYmMgaGFzIGluY3JlZGlibHkgbWVzc3kgd2F5IG9mIGRvaW5nIHRoaXMsCistICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIHN0YXRpYyB2b2lkIGdldF9tb25vKHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLSNpZiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKy0gCWlmIChzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfTU9OT1RPTklDLCB0cykpCistI2VsaWYgX19USU1FU0laRSA9PSA2NAorLQlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfTU9OT1RPTklDLCB0cykpCistI2Vsc2UKKy0jIGVycm9yICJXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgIiBcCistCSJ0aGUgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGwgYW5kIDMyLWJpdCB0aW1lX3QiCistI2VuZGlmCisrCWlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgdHMpKQorIAkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoImNsb2NrX2dldHRpbWUoTU9OT1RPTklDKSBmYWlsZWQiKTsKKyB9CisgdW5zaWduZWQgbG9uZyBsb25nIEZBU1RfRlVOQyBtb25vdG9uaWNfbnModm9pZCkKKy0tLSBhL3J1bml0L3J1bnN2LmMKKysrKyBiL3J1bml0L3J1bnN2LmMKK0BAIC01MSwxOCArNTEsOSBAQCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHCisgI2lmIEVOQUJMRV9NT05PVE9OSUNfU1lTQ0FMTAorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorIAorLS8qIGxpYmMgaGFzIGluY3JlZGlibHkgbWVzc3kgd2F5IG9mIGRvaW5nIHRoaXMsCistICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIHN0YXRpYyB2b2lkIGdldHRpbWVvZmRheV9ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0jaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCistCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgdHMpOworLSNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKy0Jc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKy0jZWxzZQorLSMgZXJyb3IgIldlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCAiIFwKKy0JInRoZSBfX05SX2Nsb2NrX2dldHRpbWUgc3lzY2FsbCBhbmQgMzItYml0IHRpbWVfdCIKKy0jZW5kaWYKKysJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgdHMpOworIH0KKyAjZWxzZQorIHN0YXRpYyB2b2lkIGdldHRpbWVvZmRheV9ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NDUyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWRhdGUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBiN2I3NDUyZjI5MmYwM2VlZmFmYTZmZDFkYTliY2ZjOTMzZGVlMTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogV2VkLCAxOCBTZXAgMjAxOSAwOToyODo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkYXRlOiBVc2UgNjQgcHJlZml4IHN5c2NhbGwgaWYgd2UgaGF2ZSB0bworCitTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIG5vIGxvbmdlciBoYXZlIHRoZSAzMi1iaXQgdGltZV90IHN5c2NhbGxzLgorSW5zdGVhZCB0aGV5IGhhdmUgc3VmZml4ZWQgc3lzY2FsbHMgdGhhdCByZXR1cm5zIGEgNjQtYml0IHRpbWVfdC4gSWYKK3RoZSBhcmNoaXRlY3R1cmUgZG9lc24ndCBoYXZlIHRoZSBub24tc3VmZml4ZWQgc3lzY2FsbCBhbmQgaXMgdXNpbmcgYQorNjQtYml0IHRpbWVfdCBsZXQncyB1c2UgdGhlIHN1ZmZpeGVkIHN5c2NhbGwgaW5zdGVhZC4KKworVGhpcyBmaXhlcyBidWlsZCBpc3N1ZXMgd2hlbiBidWlsZGluZyBmb3IgUklTQy1WIDMyLWJpdCB3aXRoIDUuMSsga2VybmVsCitoZWFkZXJzLgorCitJZiBhbiBhcmNoaXRlY3R1cmUgb25seSBzdXBwb3J0cyB0aGUgc3VmZml4ZWQgc3lzY2FsbHMsIGJ1dCBpcyBzdGlsbAordXNpbmcgYSAzMi1iaXQgdGltZV90IGZhbGwgYmFjayB0byB0aGUgbGliYyBjYWxsLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YjdiNzQ1MmYyOTJmMDNlZWZhZmE2ZmQxZGE5YmNmYzkzM2RlZTE1YV0KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb3JldXRpbHMvZGF0ZS5jIHwgMTEgKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9jb3JldXRpbHMvZGF0ZS5jCisrKysgYi9jb3JldXRpbHMvZGF0ZS5jCitAQCAtMzYsNyArMzYsNyBAQAorIC8vY29uZmlnOiMgZGVmYXVsdHMgdG8gIm5vIjogc3RhdCdzIG5hbm9zZWNvbmQgZmllbGQgaXMgYSBiaXQgbm9uLXBvcnRhYmxlCisgLy9jb25maWc6Y29uZmlnIEZFQVRVUkVfREFURV9OQU5PCisgLy9jb25maWc6CWJvb2wgIlN1cHBvcnQgJVtudW1dTiBuYW5vc2Vjb25kIGZvcm1hdCBzcGVjaWZpZXIiCistLy9jb25maWc6CWRlZmF1bHQgbiAgIyBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSkKKysvL2NvbmZpZzoJZGVmYXVsdCBuICAjIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lKSBvciBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0KQorIC8vY29uZmlnOglkZXBlbmRzIG9uIERBVEUKKyAvL2NvbmZpZzoJc2VsZWN0IFBMQVRGT1JNX0xJTlVYCisgLy9jb25maWc6CWhlbHAKK0BAIC0yNzEsMTAgKzI3MSwxNyBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQkgKi8KKyAjZW5kaWYKKyAJfSBlbHNlIHsKKy0jaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PCisrI2lmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTyAmJiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKyAJCS8qIGxpYmMgaGFzIGluY3JlZGlibHkgbWVzc3kgd2F5IG9mIGRvaW5nIHRoaXMsCisgCQkgKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCisgCQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisrI2VsaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PICYmIF9fVElNRVNJWkUgPT0gNjQKKysJCS8qIExldCdzIG9ubHkgc3VwcG9ydCB0aGUgNjQgc3VmZml4IHN5c2NhbGxzIGZvciA2NC1iaXQgdGltZV90LgorKwkJICogVGhpcyBzaW1wbGlmaWVzIHRoZSBjb2RlIGZvciB1cyBhcyB3ZSBkb24ndCBuZWVkIHRvIGNvbnZlcnQKKysJCSAqIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQuIFdlIGFsc28gZG9uJ3QgaGF2ZSBhIHdheSB0bworKwkJICogcmVwb3J0IG92ZXJmbG93IGVycm9ycyBoZXJlLgorKwkJICovCisrCQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19SRUFMVElNRSwgJnRzKTsKKyAjZWxzZQorIAkJdGltZSgmdHMudHZfc2VjKTsKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjU4ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zeXNjdGwtaWdub3JlLUVJTy1vZi1zdGFibGVfc2VjcmV0LWJlbG93LXByb2Mtc3lzLW5lLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gM2JlZTA0NjBkNzRiYWQ4OGVjYTY1OTJlNjNjYTkyNjk2MWI0M2I2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAxNjowOToyNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBzeXNjdGw6IGlnbm9yZSBFSU8gb2Ygc3RhYmxlX3NlY3JldCBiZWxvdworIC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mCisKK0F2b2lkIGNvbmZ1c2luZyBtZXNzYWdlcyBjYXVzZWQgYnkgRUlPIG9uIHJlYWRpbmcKKy9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mLyovc3RhYmxlX3NlY3JldCBpZiB0aG9zZSBhcmUgbm90IHNldCB5ZXQuCitNYWtlIGl0IGJlaGF2ZSB0aGUgc2FtZSBhcyBwcm9jcHMoPj0zLjMuMTMpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbYnVzeWJveEBidXN5Ym94Lm5ldCBtYWlsaW5nIGxpc3RdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHByb2Nwcy9zeXNjdGwuYyB8IDkgKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHJvY3BzL3N5c2N0bC5jIGIvcHJvY3BzL3N5c2N0bC5jCitpbmRleCA2ZDc3MTg1Y2EuLjQyYzUxY2M5MSAxMDA2NDQKKy0tLSBhL3Byb2Nwcy9zeXNjdGwuYworKysrIGIvcHJvY3BzL3N5c2N0bC5jCitAQCAtMjAyLDcgKzIwMiwxNCBAQCBzdGF0aWMgaW50IHN5c2N0bF9hY3Rfb25fc2V0dGluZyhjaGFyICpzZXR0aW5nKQorIAkJdmFsdWUgPSBjcHRyID0geG1hbGxvY19yZWFkKGZkLCBOVUxMKTsKKyAJCWNsb3NlKGZkKTsKKyAJCWlmICh2YWx1ZSA9PSBOVUxMKSB7CistCQkJYmJfcGVycm9yX21zZygiZXJyb3IgcmVhZGluZyBrZXkgJyVzJyIsIG91dG5hbWUpOworKwkJCXN3aXRjaCAoZXJybm8pIHsKKysJCQkJY2FzZSBFSU86CisrCQkJCQkvKiBJZ25vcmUgc3RhYmxlX3NlY3JldCBiZWxvdyAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZiAqLworKwkJCQkJYnJlYWs7CisrCQkJCWRlZmF1bHQ6CisrCQkJCQliYl9wZXJyb3JfbXNnKCJlcnJvciByZWFkaW5nIGtleSAnJXMnIiwgb3V0bmFtZSk7CisrCQkJCQlicmVhazsKKysJCQl9CisgCQkJcmV0dmFsID0gRVhJVF9GQUlMVVJFOworIAkJCWdvdG8gZW5kOworIAkJfQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS10aW1lLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS10aW1lLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YTZjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXRpbWUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA5MDJkMzk5MjkyMmZjOGRiODQ5NWQ1ZmIzMGE0NTgxNzExYjYwYzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogV2VkLCAxOCBTZXAgMjAxOSAwOToyODo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSB0aW1lOiBVc2UgNjQgcHJlZml4IHN5c2NhbGwgaWYgd2UgaGF2ZSB0bworCitTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIG5vIGxvbmdlciBoYXZlIHRoZSAzMi1iaXQgdGltZV90IHN5c2NhbGxzLgorSW5zdGVhZCB0aGV5IGhhdmUgc3VmZml4ZWQgc3lzY2FsbHMgdGhhdCByZXR1cm5zIGEgNjQtYml0IHRpbWVfdC4gSWYKK3RoZSBhcmNoaXRlY3R1cmUgZG9lc24ndCBoYXZlIHRoZSBub24tc3VmZml4ZWQgc3lzY2FsbCBhbmQgaXMgdXNpbmcgYQorNjQtYml0IHRpbWVfdCBsZXQncyB1c2UgdGhlIHN1ZmZpeGVkIHN5c2NhbGwgaW5zdGVhZC4KKworVGhpcyBmaXhlcyBidWlsZCBpc3N1ZXMgd2hlbiBidWlsZGluZyBmb3IgUklTQy1WIDMyLWJpdCB3aXRoIDUuMSsga2VybmVsCitoZWFkZXJzLgorCitJZiBhbiBhcmNoaXRlY3R1cmUgb25seSBzdXBwb3J0cyB0aGUgc3VmZml4ZWQgc3lzY2FsbHMsIGJ1dCBpcyBzdGlsbAordXNpbmcgYSAzMi1iaXQgdGltZV90IHJlcG9ydCBhIGNvbXBpbGF0aW9uIGVycm9yLiBUaGlzIGF2b2lkcyB1cyBoYXZlIHRvCitkZWFsIHdpdGggY29udmVydGluZyBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0IHZhbHVlcy4gVGhlcmUgYXJlCitjdXJyZW50bHkgbm8gYXJjaGl0ZWN0dXJlcyB3aGVyZSB0aGlzIGlzIHRoZSBjYXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9OTAyZDM5OTI5MjJmYzhkYjg0OTVkNWZiMzBhNDU4MTcxMWI2MGM2Ml0KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBsaWJiYi90aW1lLmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKKy0tLSBhL2xpYmJiL3RpbWUuYworKysrIGIvbGliYmIvdGltZS5jCitAQCAtMjU3LDcgKzI1NywxNCBAQCBjaGFyKiBGQVNUX0ZVTkMgc3RyZnRpbWVfWVlZWU1NRERISE1NU1MoCisgICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIHN0YXRpYyB2b2lkIGdldF9tb25vKHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLQlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX01PTk9UT05JQywgdHMpKQorKyNpZiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKysgCWlmIChzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfTU9OT1RPTklDLCB0cykpCisrI2VsaWYgX19USU1FU0laRSA9PSA2NAorKwlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfTU9OT1RPTklDLCB0cykpCisrI2Vsc2UKKysjIGVycm9yICJXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgIiBcCisrCSJ0aGUgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGwgYW5kIDMyLWJpdCB0aW1lX3QiCisrI2VuZGlmCisgCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiY2xvY2tfZ2V0dGltZShNT05PVE9OSUMpIGZhaWxlZCIpOworIH0KKyB1bnNpZ25lZCBsb25nIGxvbmcgRkFTVF9GVU5DIG1vbm90b25pY19ucyh2b2lkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMy1ydW5zdi1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDMtcnVuc3YtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc2MDU3MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDMtcnVuc3YtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA4Yzc0MTk2NDlkNmU2ZmRhOGZhN2QwZTg2MzA4NGM3OGFjNzI4NjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxMDo1NDoxNSAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gcnVuc3Y6IFVzZSA2NCBwcmVmaXggc3lzY2FsbCBpZiB3ZSBoYXZlIHRvCisKK1NvbWUgMzItYml0IGFyY2hpdGVjdHVyZXMgbm8gbG9uZ2VyIGhhdmUgdGhlIDMyLWJpdCB0aW1lX3Qgc3lzY2FsbHMuCitJbnN0ZWFkIHRoZXkgaGF2ZSBzdWZmaXhlZCBzeXNjYWxscyB0aGF0IHJldHVybnMgYSA2NC1iaXQgdGltZV90LiBJZgordGhlIGFyY2hpdGVjdHVyZSBkb2Vzbid0IGhhdmUgdGhlIG5vbi1zdWZmaXhlZCBzeXNjYWxsIGFuZCBpcyB1c2luZyBhCis2NC1iaXQgdGltZV90IGxldCdzIHVzZSB0aGUgc3VmZml4ZWQgc3lzY2FsbCBpbnN0ZWFkLgorCitUaGlzIGZpeGVzIGJ1aWxkIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIGZvciBSSVNDLVYgMzItYml0IHdpdGggNS4xKyBrZXJuZWwKK2hlYWRlcnMuCisKK0lmIGFuIGFyY2hpdGVjdHVyZSBvbmx5IHN1cHBvcnRzIHRoZSBzdWZmaXhlZCBzeXNjYWxscywgYnV0IGlzIHN0aWxsCit1c2luZyBhIDMyLWJpdCB0aW1lX3QgcmVwb3J0IGEgY29tcGlsYXRpb24gZXJyb3IuIFRoaXMgYXZvaWRzIHVzIGhhdmUgdG8KK2RlYWwgd2l0aCBjb252ZXJ0aW5nIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQgdmFsdWVzLiBUaGVyZSBhcmUKK2N1cnJlbnRseSBubyBhcmNoaXRlY3R1cmVzIHdoZXJlIHRoaXMgaXMgdGhlIGNhc2UuCisKK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1hZDI3ZDQ0ZWJlOTUwMzM1NjE2ZjM3ZTM2ODYzNDY5ZGMxODFiNDU1XQorLS0tCisgcnVuaXQvcnVuc3YuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3J1bml0L3J1bnN2LmMgYi9ydW5pdC9ydW5zdi5jCitpbmRleCBjY2M3NjJkNzguLjczNzkwOWIwZSAxMDA2NDQKKy0tLSBhL3J1bml0L3J1bnN2LmMKKysrKyBiL3J1bml0L3J1bnN2LmMKK0BAIC01NSw3ICs1NSwxNCBAQCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAgKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCisgc3RhdGljIHZvaWQgZ2V0dGltZW9mZGF5X25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworKyNpZiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKyAJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX1JFQUxUSU1FLCB0cyk7CisrI2VsaWYgX19USU1FU0laRSA9PSA2NAorKwlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19SRUFMVElNRSwgdHMpOworKyNlbHNlCisrIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorKwkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorKyNlbmRpZgorIH0KKyAjZWxzZQorIHN0YXRpYyB2b2lkIGdldHRpbWVvZmRheV9ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorLS0gCisyLjIyLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGIxZjJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLXJlcXVpcmUgYnVzeWJveC5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpbmQtdG91Y2hzY3JlZW4uc2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9uIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtaHR0cGQgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGQgXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC5zY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vc2ltcGxlLnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9od2Nsb2NrLnNoIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2ctc3RhcnR1cC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vbWRldiBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2LmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi1tb3VudC5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vZmFpbF9vbl9ub19tZWRpYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmV0ZCBcCi0gICAgICAgICAgIGZpbGU6Ly9sb2dpbi11dGlsaXRpZXMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3JlY29nbml6ZV9jb25ubWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0Mtd2hlbi1saW5raW5nLWluc3RlYWQtb2YtTEQtYW5kLXVzZS1DRkxBR1MtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vdW50LXZpYS1sYWJlbC5jZmcgXAotICAgICAgICAgICBmaWxlOi8vc2hhMXN1bS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vc2hhMjU2c3VtLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9nZXRvcHRzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXNpemUuY2ZnIFwKLSAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL2luaXQuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ2J1c3lib3gnKV19IFwKLSAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL21kZXYuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXInKSA9PSAnYnVzeWJveC1tZGV2JyldfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3VuaWNvZGUuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3JjUyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY0sgXAotICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbGliYmItcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzdWl0ZS1jaGVjay11dWRlY29kZS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtdXNlLXd3dy5leGFtcGxlLm9yZy1mb3Itd2dldC10ZXN0LWNhc2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZHUtbC13b3Jrcy1maXgtdG8tdXNlLTE0NS1pbnN0ZWFkLW9mLTE0NC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImNkYmE1ZDQ0NThmOTQ0Y2VlYzVjZGNmN2M0OTE0YjY5IgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMGU0OTI1MzkyZmQ5ZjM3NDNjYzUxN2UwMzFiNjhiMDEyYjI0YTYzYjBjZjZjMWZmMDNjY2U3YmIzODQ2Y2M5OSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmIxZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4xLmJiCkBAIC0wLDAgKzEsNTUgQEAKK3JlcXVpcmUgYnVzeWJveC5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL2J1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbmQtdG91Y2hzY3JlZW4uc2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9uIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtaHR0cGQgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGQgXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vc2ltcGxlLnNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9od2Nsb2NrLnNoIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2ctc3RhcnR1cC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbWRldiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi1tb3VudC5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZjb25maWcgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vZmFpbF9vbl9ub19tZWRpYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZCBcCisgICAgICAgICAgIGZpbGU6Ly9sb2dpbi11dGlsaXRpZXMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3JlY29nbml6ZV9jb25ubWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb3NzLW1lbnVjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0Mtd2hlbi1saW5raW5nLWluc3RlYWQtb2YtTEQtYW5kLXVzZS1DRkxBR1MtYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LXZpYS1sYWJlbC5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMXN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vc2hhMjU2c3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRvcHRzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZXNpemUuY2ZnIFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL2luaXQuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ2J1c3lib3gnKV19IFwKKyAgICAgICAgICAgJHtAWyIiLCAiZmlsZTovL21kZXYuY2ZnIl1bKGQuZ2V0VmFyKCdWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXInKSA9PSAnYnVzeWJveC1tZGV2JyldfSBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3VuaWNvZGUuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3JjUyBcCisgICAgICAgICAgIGZpbGU6Ly9yY0sgXAorICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbGliYmItcmFjZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzdWl0ZS1jaGVjay11dWRlY29kZS1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtdXNlLXd3dy5leGFtcGxlLm9yZy1mb3Itd2dldC10ZXN0LWNhc2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHUtbC13b3Jrcy1maXgtdG8tdXNlLTE0NS1pbnN0ZWFkLW9mLTE0NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRhdGUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10aW1lLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtcnVuc3YtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtc3lzY2FsbC13cmFwcGVycy1hcm91bmQtY2xvY2tfZ2V0dGltZS1jbG9zZXMtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXN0aW1lLWZ1bmN0aW9uLWNhbGxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjcwOTEzZWRhZjIyNjNhMTU3MzkzYWYwNzU2NWMxN2YwIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiZDBmOTQwYTcyZjY0ODk0M2MxZjIyMTFlMGUzMTE3Mzg3YzMxZDc2NTEzN2Q5MmJkODI4NGEzZmI5NzUyYTk5OCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2luaXR0YWIKaW5kZXggMmJjODMxYy4uZThlYzJhYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2luaXR0YWIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2luaXR0YWIKQEAgLTgsMTEgKzgsMTcgQEAKIDo6c3lzaW5pdDovYmluL21rZGlyIC1wIC9kZXYvcHRzCiA6OnN5c2luaXQ6L2Jpbi9tb3VudCAtdCBkZXZwdHMgZGV2cHRzIC9kZXYvcHRzCiA6OnN5c2luaXQ6L2Jpbi9tb3VudCAtYQotCis6OnN5c2luaXQ6L3NiaW4vc3dhcG9uIC1hCitudWxsOjpzeXNpbml0Oi9iaW4vbG4gLXNmIC9wcm9jL3NlbGYvZmQgL2Rldi9mZAorbnVsbDo6c3lzaW5pdDovYmluL2xuIC1zZiAvcHJvYy9zZWxmL2ZkLzAgL2Rldi9zdGRpbgorbnVsbDo6c3lzaW5pdDovYmluL2xuIC1zZiAvcHJvYy9zZWxmL2ZkLzEgL2Rldi9zdGRvdXQKK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZC8yIC9kZXYvc3RkZXJyCisjIHNldCBob3N0bmFtZQorbnVsbDo6c3lzaW5pdDovYmluL2J1c3lib3ggaG9zdG5hbWUgLUYgL2V0Yy9ob3N0bmFtZQogOjpzeXNpbml0Oi9ldGMvaW5pdC5kL3JjUwogCiAjIFN0dWZmIHRvIGRvIGJlZm9yZSByZWJvb3RpbmcKLTo6Y3RybGFsdGRlbDovc2Jpbi9yZWJvb3QKKyM6OmN0cmxhbHRkZWw6L3NiaW4vcmVib290CiA6OnNodXRkb3duOi9ldGMvaW5pdC5kL3JjSwogOjpzaHV0ZG93bjovc2Jpbi9zd2Fwb2ZmIC1hCiA6OnNodXRkb3duOi9iaW4vdW1vdW50IC1hIC1yCkBAIC0yMCw1ICsyNiwzIEBACiAjIFN0dWZmIHRvIGRvIHdoZW4gcmVzdGFydGluZyB0aGUgaW5pdCBwcm9jZXNzCiA6OnJlc3RhcnQ6L3NiaW4vaW5pdAogCi0jIHNldCBob3N0bmFtZQotbnVsbDo6c3lzaW5pdDovYmluL2J1c3lib3ggaG9zdG5hbWUgLUYgL2V0Yy9ob3N0bmFtZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QKaW5kZXggYjE5ZTViNS4uNzY4NzNjOWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bi1wdGVzdApAQCAtNiw0ICs2LDQgQEAKIGV4cG9ydCBTS0lQX0tOT1dOX0JVR1M9MQogCiBjZCB0ZXN0c3VpdGUgfHwgZXhpdCAxCi0uL3J1bnRlc3QgLXYgfCBzZWQgLXIgJ3MvXihTS0lQUEVEfFVOVEVTVEVEKTovU0tJUDovJworTEFORz1DLlVURi04IC4vcnVudGVzdCAtdiB8IHNlZCAtciAncy9eKFNLSVBQRUR8VU5URVNURUQpOi9TS0lQOi8nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CmluZGV4IDZlZDAyOTMuLjAxMzQ0MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CkBAIC0yOCw3ICsyOCw3IEBACiAJCWZpCiAJCWlmICEgcm9vdF9pc19uZnMgOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCAtNCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBsaW5rIHNldCBkZXYgJGludGVyZmFjZSB1cAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaWZjb25maWcgJGludGVyZmFjZSAwLjAuMC4wCkBAIC01OSw3ICs1OSw3IEBACiAJCQltZXRyaWM9MTAKIAkJCWZvciBpIGluICRyb3V0ZXIgOyBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1NCSU5fRElSL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAkaSBtZXRyaWMgJG1ldHJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJGkgbWV0cmljICRtZXRyaWMgZGV2ICRpbnRlcmZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9yb3V0ZSBhZGQgZGVmYXVsdCBndyAkaSBkZXYgJGludGVyZmFjZSBtZXRyaWMgJG1ldHJpYyAyPi9kZXYvbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTRiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gYjZhNTliMDVmMWZhNTE0YzZiMzg3Yzk1NDRiZDYzYjFiZmNmMmVlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEphbiAyMDE2IDA1OjM4OjI5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvdmVyIHRoZSBlbHNlIHdpdGggX19HTElCQ19fCi0KLUZpeGVzIGJ1aWxkIGVycm9ycyBvbiBtdXNsL3g4NgotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9hc20vdGVybWlvcy5oOjE6MCwKLXwgICAgICAgICAgICAgICAgICBmcm9tCi0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaDo1LAotfCAgICAgICAgICAgICAgICAgIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2NvbnNvbGUtdG9vbHMvMC4zLjItcjgvY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL3Jlc2l6ZWNvbnMuYzo4NjoKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvdGVybWlvcy5oOjE0Ojg6Ci1lcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3Qgd2luc2l6ZScKLXwgIHN0cnVjdCB3aW5zaXplIHsKLXwgICAgICAgICBeCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaDo3OjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvY29uc29sZS10b29scy8wLjMuMi1yOC9jb25zb2xlLXRvb2xzLTAuMy4yL3Z0dG9vbHMvcmVzaXplY29ucy5jOjgxOgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9iaXRzL2lvY3RsLmg6OTA6ODoKLW5vdGU6IG9yaWdpbmFsbHkgZGVmaW5lZCBoZXJlCi18ICBzdHJ1Y3Qgd2luc2l6ZSB7Ci18ICAgICAgICAgXgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHZ0dG9vbHMvcmVzaXplY29ucy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdnR0b29scy9yZXNpemVjb25zLmMgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotaW5kZXggZjBhNzA1NS4uZTg3NTNiMSAxMDA2NDQKLS0tLSBhL3Z0dG9vbHMvcmVzaXplY29ucy5jCi0rKysgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotQEAgLTgxLDcgKzgxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2lmIChfX0dOVV9MSUJSQVJZX18gPj0gNikKLSAjIGluY2x1ZGUgPHN5cy9wZXJtLmg+Ci0tI2Vsc2UKLSsjZWxpZiBkZWZpbmVkIF9fR0xJQkNfXwotICMgaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjIGluY2x1ZGUgPGxpbnV4L3Rlcm1pb3MuaD4KLSAjZW5kaWYKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTcyZWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVN1YmplY3Q6IEZpeCAnZm9ybWF0LXNlY3VyaXR5JyBjb21waWxhdGlvbiBlcnJvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGtiZHRvb2xzL2tiZF9tb2RlLmMgICAgfCA2ICsrKy0tLQotIGtiZHRvb2xzL3NldG1ldGFtb2RlLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9rYmRfbW9kZS5jIGIva2JkdG9vbHMva2JkX21vZGUuYwotaW5kZXggMDJkY2EzOC4uOGRiY2QzOSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2tiZF9tb2RlLmMKLSsrKyBiL2tiZHRvb2xzL2tiZF9tb2RlLmMKLUBAIC0xMjAsNyArMTIwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAvKiByZXBvcnQgbW9kZSAqLwotICAgICAgIGlmIChpb2N0bChmZCwgS0RHS0JNT0RFLCAmbW9kZSkpIAotIAl7Ci0tCSAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAkgIHBlcnJvcihfKCI6IGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgbW9kZVxuIikpOwotIAkgIGV4aXQoMSk7Ci0gCX0KLUBAIC0xNTEsNyArMTUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAga2JkX3JlcC5wZXJpb2QgPSByYXRlOwotICAgICBpZiAoaW9jdGwoZmQsIEtES0JEUkVQLCAma2JkX3JlcCkpCi0gICAgICAgewotLQlmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAlwZXJyb3IoXygiOiBlcnJvciBzZXR0aW5nIGtleWJvYXJkIHJlcGVhdCBtb2RlXG4iKSk7Ci0gCWV4aXQoMSk7Ci0gICAgICAgfQotQEAgLTE2MCw3ICsxNjAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgCi0gICBpZiAoaW9jdGwoZmQsIEtEU0tCTU9ERSwgbW9kZSkpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBwcm9nbmFtZSk7Ci0gICAgICAgcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCBtb2RlXG4iKSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL2tiZHRvb2xzL3NldG1ldGFtb2RlLmMgYi9rYmR0b29scy9zZXRtZXRhbW9kZS5jCi1pbmRleCA1YmVkOTQ1Li4wYmE3Njc2IDEwMDY0NAotLS0tIGEva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotKysrIGIva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCByZXBvcnQoaW50IG1ldGEpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcyA9IE5fKCJTdHJhbmdlIG1vZGUgZm9yIE1ldGEga2V5P1xuIik7Ci0gICAgIH0KLS0gIHByaW50ZihfKHMpKTsKLSsgIHByaW50ZigiJXMiLCBfKHMpKTsKLSB9Ci0gCi0gc3RydWN0IG1ldGEgCi0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRiNWIwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLWtiZHRvb2xzLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfY2hhci1hbmQtdV9zaG9ydC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDBmZDVkZGE1MWQ2OGUxZWMyYTg3ZTI3YjVlZDBkZmYzNTAzYjQ2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwODoxMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrYmR0b29sczogSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdV9jaGFyIGFuZCB1X3Nob3J0Ci0gZGVmaW5pdGlvbgotCi1vbiBtdXNsIHRoaXMgZ2V0cyBleHBvc2VkIHNpbmNlIHN5cy90eXBlcy5oIGlzIG5vdAotaW5jbHVkZWQgdmlhIHNvbWUgb3RoZXIgaW5kaXJlY3QgaW5jbHVzaW9uIGFzIGlzIHRoZSBjYXNlIHdpdGggZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrYmR0b29scy9kdW1wa2V5cy5jIHwgMSArCi0ga2JkdG9vbHMvbG9hZGtleXMueSB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9kdW1wa2V5cy5jIGIva2JkdG9vbHMvZHVtcGtleXMuYwotaW5kZXggNjE1OWQ0OS4uYzE5ZmIyMSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2R1bXBrZXlzLmMKLSsrKyBiL2tiZHRvb2xzL2R1bXBrZXlzLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5c2V4aXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgva2QuaD4KLSAjaW5jbHVkZSA8bGludXgva2V5Ym9hcmQuaD4KLWRpZmYgLS1naXQgYS9rYmR0b29scy9sb2Fka2V5cy55IGIva2JkdG9vbHMvbG9hZGtleXMueQotaW5kZXggYjZhOGUwMS4uNDQ2OGY3NyAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2xvYWRrZXlzLnkKLSsrKyBiL2tiZHRvb2xzL2xvYWRrZXlzLnkKLUBAIC03MSw2ICs3MSw3IEBACi0gI2luY2x1ZGUgPGxpbnV4L2tkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2tleWJvYXJkLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3lzZXhpdHMuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL01ha2V2YXJzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjkyYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgotCi0jIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCi1ET01BSU4gPSAkKFBBQ0tBR0UpCi0KLSMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5Lgotc3ViZGlyID0gcG8KLXRvcF9idWlsZGRpciA9IC4uCi0KLSMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgotWEdFVFRFWFRfT1BUSU9OUyA9IC0ta2V5d29yZD1fIC0ta2V5d29yZD1OXwotCi0jIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKLSMgJChET01BSU4pLnBvdCBmaWxlLiAgU2V0IHRoaXMgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHN1cnJvdW5kaW5nCi0jIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncwotIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCi0jIGV4cGVjdGVkIHRvIHRyYW5zZmVyIHRoZSBjb3B5cmlnaHQgZm9yIHRoZWlyIHRyYW5zbGF0aW9ucyB0byB0aGlzIHBlcnNvbgotIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgotIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KLSMgdGhlaXIgY29weXJpZ2h0LgotQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKLSMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6Ci0jIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCi0jICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KLSMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCi0jICAgdW5kZXJzdG9vZC4KLSMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCi0jICAgbW9uZXkuCi0jIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KLSMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KLSMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KLSMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycwotIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAotIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgotTVNHSURfQlVHU19BRERSRVNTID0KLQotIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKLSMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KLUVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvZGVwYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODcwMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cubW4tbG9naXN0aWsuZGUvdW5zdXBwb3J0ZWQvcHhhMjUwL3BhdGNoZXIKLSMKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvY29udHJpYi9jb2RlcGFnZS5jfmNvZGVwYWdlCi0rKysgY29uc29sZS10b29scy0wLjMuMi9jb250cmliL2NvZGVwYWdlLmMKLUBAIC0yMjksNyArMjI5LDcgQEAKLSAJICByZXR1cm4gMDsKLSAKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXAotLVdhcm5pbmc6IENQIGZvcm1hdCBpcyBhIGhhY2shXG4KLStXYXJuaW5nOiBDUCBmb3JtYXQgaXMgYSBoYWNrIVxuXAotICAgICAgICAgIFRoZSBmaWxlcyBwcm9kdWNlZCBtYXkgb3IgbWF5IG5vdCBiZSB1c2FibGUhXG4iKTsKLSAKLSAJc3ByaW50ZihvdXRmaWxlLCAiJWQuY3AiLCBDUEVudHJ5SGVhZGVyLmNvZGVwYWdlKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb21waWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTNmNTExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvc2hvd2tleS5jfmNvbXBpbGUJMTk5OS0wOC0yNSAxNzoyMDowOC4wMDAwMDAwMDAgLTA0MDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL3Nob3drZXkuYwkyMDA0LTA1LTA5IDAzOjAzOjIzLjAwMDAwMDAwMCAtMDQwMAotQEAgLTI2NCw3ICsyNjQsNiBAQAotIAkgIGJyZWFrOwotIAljYXNlIGNtZF9rZXltYXA6Ci0gCSAgcHJpbnRmKCIpXG4iKTsKLS0JZGVmYXVsdDoKLSAJfQotICAgICB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YzEwMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbn5jb25maWd1cmUKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbgotQEAgLTIsMTMgKzIsMTQgQEAKLSBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSAKLSAjIEluaXRpYWxpemUKLS1BQ19JTklUKGtiZHRvb2xzL2xvYWRrZXlzLnkpCi0rQUNfSU5JVAotK0FDX0NPTkZJR19TUkNESVIoW2tiZHRvb2xzL2xvYWRrZXlzLnldKQotIAotIGRlZmluZShjdF91bmljb2RlZGF0YV9kZWZhdWx0LC91c3Ivc2hhcmUvdW5pZGF0YS9Vbmljb2RlRGF0YS0yLnR4dCkKLSBjdF9sb2NhbGRhdGFkaXJfZGVmYXVsdD0vdXNyL2xvY2FsL3NoYXJlICAgICAjIGlmZiAtLWVuYWJsZS1sb2NhbGRhdGFkaXIgd2l0aG91dCBzcGVjaWZpYyBkaXIKLSAKLSAjQUNfQ09ORklHX0FVWF9ESVIoYXV0b2NvbmYpCi0tQUNfQ0FOT05JQ0FMX1NZU1RFTQotK0FDX0NBTk9OSUNBTF9UQVJHRVQoW10pCi0gQU1fSU5JVF9BVVRPTUFLRShjb25zb2xlLXRvb2xzLCAwLjMuMikKLSAKLSAjIERlZmF1bHRzCi1AQCAtMjUsNyArMjYsNiBAQAotICMgaTE4biBzdHVmZgotIEFMTF9MSU5HVUFTPSJjcyBkZSBydSBnYSBmciIKLSBBTV9HTlVfR0VUVEVYVAotLUFDX09VVFBVVF9DT01NQU5EUyhbc2VkIC1lICIvUE9URklMRVMgPS9yIHBvL1BPVEZJTEVTIiBwby9NYWtlZmlsZS5pbiA+IHBvL01ha2VmaWxlXSkKLSAKLSBBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCAiL3Vzci9zaGFyZS9sb2NhbGUiKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNjFlYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZpeCB0aGUgZm9sbG93aW5nIGVycm9yIGRldGVjdGVkIHdpdGggaTU4Ni1wb2t5bWxsaWIzMi1saW51eC1nY2MgKHRoZQotbXVsdGlsaWIgeDg2LTY0IGxpYjMyIGNvbXBpbGVyKToKLSAgICAuLi9saWIvY3R1dGlscy8ubGlicy9saWJjdHV0aWxzLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRfa2VybmVsX3NmbScKLSAgICBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotSXQgc2VlbXMgdGhhdCBsaWJjdHV0aWxzLnNvICh0aGUgbGlicmFyeSB0aGF0IHVzZXMgZ2V0X2tlcm5lbF9zZm0pIG11c3QKLWJlIHN0YXRlZCBiZWZvcmUgbGliY29uc29sZS5zbyAodGhlIGxpYnJhcnkgdGhhdCBleHBvcnRzIHRoZSBmdW5jdGlvbikgd2hlbgotdXNpbmcgbXVsdGlsaWIgZ2NjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9mb250ZmlsZXRvb2xzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29uc29sZS10b29scy0wLjMuMi5vcmlnL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xMCw1ICsxMCw1IEBAIEVYVFJBX0RJU1QgPSBmb250czJ2aXJmb250LmMgdmlyZm9udC5oCi0gCi0gIyBsaWJjb25zb2xlIGlzIG5lZWRlZCBieSBjdHV0aWxzCi0gTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEgLi4vbGliL2Nmb250L2xpYmNmb250LmxhIFwKLS0JLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSBcCi0tCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0rCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvdnR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy92dHRvb2xzL01ha2VmaWxlLmFtCi0rKysgY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtNyw5ICs3LDkgQEAgYmluX1BST0dSQU1TID0gY2h2dCBkZWFsbG9jdnQgd3JpdGV2dCBmZwotIAl2Y3N0aW1lIHZ0LWlzLVVURjggb3BlbnZ0IEBSRVNJWkVDT05TQAotIEVYVFJBX1BST0dSQU1TID0gcmVzaXplY29ucwotIAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIHZjc3RpbWVfTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEKLSBzY3JlZW5kdW1wX0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy9rYmR0b29scy9NYWtlZmlsZS5hbQotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xNSw5ICsxNSw5IEBAIEVYVFJBX1BST0dSQU1TID0gZ2V0a2V5Y29kZXMgc2V0a2V5Y29kZXMKLSBsb2Fka2V5c19TT1VSQ0VTID0gbG9hZGtleXMueSBhbmFseXplLmwKLSAKLSBZRkxBR1MgPSAtZAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIGxvYWRrZXlzX0xEQUREID0gJChMREFERCkgQExFWExJQkAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9rYmRyYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzcwYmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1QYXRjaCBmcm9tIE1hdHRoaWFzIEdvZWJsIDxvZUBtLmdvZWJsLm5ldD4KLUFkZGVkIHZpYSBPRSBidWd0cmFja2VyOiBidWcgIzQ3OAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMva2JkX21vZGUuYy5vcmlnCi0rKysgY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9rYmRfbW9kZS5jCi1AQCAtMjksMTEgKzI5LDE2IEBACi0gICBPUFQoIi11IC0tdW5pY29kZSAgIiwgXygiVVRGLTggbW9kZSAoVU5JQ09ERSkiKSk7Ci0gICBPUFQoIi1zIC0tc2NhbmNvZGUgIiwgXygic2NhbmNvZGUgbW9kZSAoUkFXKSIpKTsKLSAgIE9QVCgiICAgLS1tb2RlPXs4Yml0LGtleWNvZGUsdW5pY29kZSxzY2FuY29kZX0gIiwgXygic2V0IG1vZGUiKSk7Ci0rICBPUFQoIi1yIC0tcmF0ZT1SQVRFICIsIF8oInNldCByZXBlYXQgcmF0ZSAoZGVmYXVsdDogMzMpIikpOwotKyAgT1BUKCItZCAtLWRlbGF5PURFTEFZICIsIF8oInNldCByZXBlYXQgZGVsYXkgKGRlZmF1bHQ6IDI1MCkiKSk7Ci0gCi0gICBPUFQoIi1oIC0taGVscCAgICAgIiwgSEVMUERFU0MpOwotICAgT1BUKCItViAtLXZlcnNpb24gICIsIFZFUlNJT05ERVNDKTsKLSB9Ci0gCi0raW50IHJhdGU9LTE7Ci0raW50IGRlbGF5PS0xOwotKwotIHN0YXRpYyBpbnQgcGFyc2VfY21kbGluZSAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gICAgIGludCBtb2RlID0gLTE7Ci1AQCAtNDYsMTEgKzUxLDEzIEBACi0gICAgICAgeyAibW9kZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdtJyB9LAotICAgICAgIHsgInNjYW5jb2RlIiAsIG5vX2FyZ3VtZW50LCBOVUxMLCAncycgfSwKLSAgICAgICB7ICJ1bmljb2RlIiAgLCBub19hcmd1bWVudCwgTlVMTCwgJ3UnIH0sCi0rICAgICAgeyAicmF0ZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdyJyB9LAotKyAgICAgIHsgImRlbGF5IiAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCcgfSwKLSAgICAgICB7IE5VTEwsIDAsIE5VTEwsIDAgfQotICAgICB9OwotICAgICBpbnQgYzsKLSAKLS0gICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1IiwgbG9uZ19vcHRzLCBOVUxMKSkgIT0gRU9GKSAKLSsgICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1cjpkOiIsIGxvbmdfb3B0cywgTlVMTCkpICE9IEVPRikgCi0gICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgY2FzZSAnaCc6Ci0gCXVzYWdlICgpOwotQEAgLTU4LDYgKzY1LDE0IEBACi0gICAgICAgY2FzZSAnVic6Ci0gCXZlcnNpb24gKCk7Ci0gCWV4aXQoMCk7Ci0rICAgICAgY2FzZSAncic6Ci0rCXJhdGUgPSBhdG9pKG9wdGFyZyk7Ci0rCW1vZGUgPSAtMjsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAnZCc6Ci0rCWRlbGF5ID0gYXRvaShvcHRhcmcpOwotKwltb2RlID0gLTI7Ci0rCWJyZWFrOwotICAgICAgIGNhc2UgJ2EnOgotIAltb2RlID0gS19YTEFURTsKLSAJYnJlYWs7Ci1AQCAtMTI5LDYgKzE0NCwyMCBAQAotICAgICAgIGV4aXQoMCk7Ci0gICAgIH0KLSAgIAotKyAgaWYgKCByYXRlICE9IC0xIHx8IGRlbGF5ICE9IC0xICkKLSsgICAgewotKyAgICBzdHJ1Y3Qga2JkX3JlcGVhdCBrYmRfcmVwOwotKyAgICBrYmRfcmVwLmRlbGF5ID0gZGVsYXk7Ci0rICAgIGtiZF9yZXAucGVyaW9kID0gcmF0ZTsKLSsgICAgaWYgKGlvY3RsKGZkLCBLREtCRFJFUCwgJmtiZF9yZXApKQotKyAgICAgIHsKLSsJZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCByZXBlYXQgbW9kZVxuIikpOwotKwlleGl0KDEpOwotKyAgICAgIH0KLSsgICAgaWYobW9kZT09LTIpIGV4aXQoMCk7Ci0rICAgIH0KLSsgIAotICAgaWYgKGlvY3RsKGZkLCBLRFNLQk1PREUsIG1vZGUpKQotICAgICB7Ci0gICAgICAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkNDdhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9sY21lc3NhZ2UubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotIwotIyBUaGlzIGZpbGUgY2FuIGJlIGNvcGllZCBhbmQgdXNlZCBmcmVlbHkgd2l0aG91dCByZXN0cmljdGlvbnMuICBJdCBjYW4KLSMgYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQKLSMgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQgZnVuY3Rpb25hbGl0eS4KLSMgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotIyBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLSMgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0jIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotCi0jIHNlcmlhbCAyCi0KLUFDX0RFRlVOKFtBTV9MQ19NRVNTQUdFU10sCi0gIFtpZiB0ZXN0ICRhY19jdl9oZWFkZXJfbG9jYWxlX2ggPSB5ZXM7IHRoZW4KLSAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotICAgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bG9jYWxlLmg+XSwgW3JldHVybiBMQ19NRVNTQUdFU10sCi0gICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0gICAgaWYgdGVzdCAkYW1fY3ZfdmFsX0xDX01FU1NBR0VTID0geWVzOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoSEFWRV9MQ19NRVNTQUdFUywgMSwKLSAgICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0gICAgZmkKLSAgZmldKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjczNWE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vLWRlcC1vbi1saWJmbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU5vIHJlYXNvbiB0byBsaW5rIHdpdGggbGliZmwgc2luY2UgJ2xvYWRrZXlzJyBpbXBsZW1lbnRzCi1pdHMgb3duIHl5d3JhcCgpL3l5bGV4KCkgZnVuY3Rpb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEphY29iIEtyb29uIDxqYWNvYi5rcm9vbkBtaWtyb2RpZGFrdC5zZT4KLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcva2JkdG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtMTksOCArMTksNiBAQCBMREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9sCi0gCS4uL2xpYi9jZm9udC9saWJjZm9udC5sYSBcCi0gCS4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0gCi0tbG9hZGtleXNfTERBREQgPSAkKExEQUREKSBATEVYTElCQAotLQotIGJpbl9TQ1JJUFRTID0gbWtfbW9kbWFwCi0gCi0gbm9pbnN0X0hFQURFUlMgPSBsb2Fka2V5cy5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZDYwOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm9kb2NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIGRvY3MgbmVlZCB0b29scyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxkIHNvIGRpc2FibGUgdGhlbS4KLQotQWxzbyByZW1vdmUgaW50bCBzaW5jZSB0aGUgTWFrZWZpbGUgZG9lc24ndCB3b3JrIHdpdGggMy44MiBhbmQgd2UKLWRvbid0IHdhbnQgdG8gYnVpbGQgbGliaW50bCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVJQIDIwMTIvMTAvMTcKLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcvTWFrZWZpbGUuYW0JMTk5OS0wNC0xNSAwMTozMzoyNC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL01ha2VmaWxlLmFtCTIwMTItMTAtMTcgMTE6NDg6MTQuMTA3MDY5MTQ1ICswMDAwCi1AQCAtMSw3ICsxLDcgQEAKLSAjIC0qLSBtYWtlZmlsZSAtKi0KLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotLVNVQkRJUlMgPSBsaWIgZm9udGZpbGV0b29scyB2dHRvb2xzIGtiZHRvb2xzIHNjcmVlbmZvbnR0b29scyBjb250cmliIGRvYyBcCi0tCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvIGludGwKLStTVUJESVJTID0gbGliIGZvbnRmaWxldG9vbHMgdnR0b29scyBrYmR0b29scyBzY3JlZW5mb250dG9vbHMgY29udHJpYiBcCi0rCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvCi0gCi0gRVhUUkFfRElTVCA9IEJVR1MgUkVMRUFTRSBDUkVESVRTIENPUFlJTkcua2JkIGxvY2FsLXNjcmlwdHMvKiBkZWJpYW4vKiAqLmxzbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL3VjbGliYy1maWxlbm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTUwNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZpeGluZyB0aGUgbG9jYWxlIGlzc3VlcyBpc24ndCBlbm91Z2gsIGNvbnNvbGUtdG9vbHMgYWxzbyBkb2VzIGEgY291cGxlIG9mCi1vdGhlciBwcmV0dHkgc3R1cGlkIHRoaW5ncyAobGlrZSBGSUxFICpmOyBmLT5fZmlsZW5vIGluc3RlYWQgb2YgZmlsZW5vKGYpKSwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jZm9udC9mb250c3RydWN0LmMuYXJrCTIwMDUtMDUtMjIgMTk6MTI6MzguMDAwMDAwMDAwICswMDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9saWIvY2ZvbnQvZm9udHN0cnVjdC5jCTIwMDUtMDUtMjIgMTk6MTM6MjMuMDAwMDAwMDAwICswMDAwCi1AQCAtNTAsOCArNTAsNyBAQAotICAgICogZ2V0IGZpbGVzaXplCi0gICAgKi8KLSAgIAotLSAgLyogRklYTUU6IHNob3VsZCBub3QgdXNlIF9maWxlbm8gISAqLwotLSAgaWYgKGZzdGF0KGZvbnRmaWxlLT5fZmlsZW5vLCAmc3RidWYpID09IC0xKQotKyAgaWYgKGZzdGF0KGZpbGVubyhmb250ZmlsZSksICZzdGJ1ZikgPT0gLTEpCi0gICAgIGdvdG8gcnNmX3JldHVybl9lcnJvcjsKLSAgIAotICAgaWYgKFNfSVNSRUcoc3RidWYuc3RfbW9kZSkpCi1AQCAtMjExLDggKzIxMCw3IEBACi0gICAgKiBnZXQgZmlsZXNpemUKLSAgICAqLwotICAgCi0tICAvKiBGSVhNRTogc2hvdWxkIG5vdCB1c2UgX2ZpbGVubyAhICovCi0tICBpZiAoZnN0YXQoZm9udGZpbGUtPl9maWxlbm8sICZzdGJ1ZikgPT0gLTEpCi0rICBpZiAoZnN0YXQoZmlsZW5vKGZvbnRmaWxlKSwgJnN0YnVmKSA9PSAtMSkKLSAgICAgZ290byByZmdfcmV0dXJuX2Vycm9yOwotICAgCi0gICBpZiAoU19JU1JFRyhzdGJ1Zi5zdF9tb2RlKSkKLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jb25zb2xlL2FjbS5jLmFyawkyMDA1LTA1LTIyIDE5OjE3OjE1LjAwMDAwMDAwMCArMDAwMAotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvbGliL2NvbnNvbGUvYWNtLmMJMjAwNS0wNS0yMiAxOToxNzoyMy4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zMCw3ICszMCw3IEBACi0gICBsY3RfYm9vbGVhbiBwYXJzZV9mYWlsZWQgPSBGYWxzZTsKLSAgIGxjdF9ib29sZWFuIGlzX3VuaWNvZGU7Ci0gCi0tICBpZiAoZnN0YXQoZnAtPl9maWxlbm8sICZzdGJ1ZikpIAotKyAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdGJ1ZikpIAotICAgICBwZXJyb3IoXygiQ2Fubm90IHN0YXQgQUNNIGZpbGUiKSksIGV4aXQoMSk7Ci0gCi0gICAvKiBmaXJzdCB0cnkgYSB3ZzE1LWNoYXJtYXAgKGdsaWJjKSBmaWxlIGZvcm1hdCAqLwotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvaW5jbHVkZS9sY3QvbG9jYWwuaC5hcmsJMjAwNS0wNS0yMiAxOTowODo1NC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2luY2x1ZGUvbGN0L2xvY2FsLmgJMjAwNS0wNS0yMiAxOTowOToxMi4wMDAwMDAwMDAgKzAwMDAKLUBAIC04LDcgKzgsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS0jaWZkZWYgSEFWRV9MT0NBTEVfSAotKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX0gpICYmIGRlZmluZWQoSEFWRV9MSUJJTlRMX0gpCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gIyBkZWZpbmUgXyhTdHJpbmcpIGdldHRleHQgKFN0cmluZykKLSAjIGlmZGVmIGdldHRleHRfbm9vcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE0NGZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiQWxsb3dzIHlvdSB0byBzZXQtdXAgYW5kIG1hbmlwdWxhdGUgdGhlIExpbnV4IGNvbnNvbGUiCi1ERVNDUklQVElPTiA9ICJQcm92aWRlcyB0b29scyB0aGF0IGVuYWJsZSB0aGUgc2V0LXVwIGFuZCBtYW5pcHVsYXRpb24gb2YgdGhlIGxpbnV4IGNvbnNvbGUgYW5kIGNvbnNvbGUtZm9udCBmaWxlcy4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5rYmQ7bWQ1PTliMmQ5MTUxMWQzZDgwZDRkMjBhYzZlNmIwMTM3ZmU5IgotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi1QUiA9ICJyOCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGN0L2NvbnNvbGUtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvZGVwYWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tiZHJhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjLWZpbGVuby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub2RvY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kZXAtb24tbGliZmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1rYmR0b29scy1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X2NoYXItYW5kLXVfc2hvcnQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xjbWVzc2FnZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtldmFycyIKLQotU1JDX1VSSVttZDVzdW1dID0gImJmMjE1NjRmYzM4YjNhZjg1M2VmNzI0YmFiZGRiYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlYTZiNDQxNjcyZGFjZDI1MTA3OWZjODVlZDMyMmUxOTYyODJlMGU2NmMxNjMwM2VjNjRjM2EyYjFjMTI2YzIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xjdC9maWxlcy9jb25zb2xlLXRvb2xzLWRldmVsLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9jb25zb2xlLXRvb2xzLWRldmVsLyg/UDxwdmVyPihcZFxkP1wuKStcZFxkPykvIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtRF9VU0VfVEVSTUlPUyAiCi0KLUFTTkVFREVEID0gIiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wICR7U30vbTQKLQljcCAke1dPUktESVJ9L2xjbWVzc2FnZS5tNCAke1N9L200LwotCXJtIC1mICR7U30vYWNpbmNsdWRlLm00Ci0JY3AgJHtXT1JLRElSfS9NYWtldmFycyAke1N9L3BvLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKLQotYmluZGlyX3Byb2dzID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30iCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZDRhN2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworIyByZW1vdmUgYW55IHN0YWxlIGxvY2sgZmlsZXMgc28gdGhhdCB0aGUgY2FsbHMgdG8gZ3JvdXBhZGQvdXNlcmFkZCBkb24ndCBzdG9wCisjIHRoZSBwdGVzdCBpZiByZS11c2luZyB0aGUgc2FtZSBpbWFnZQorcm0gLXJmIC9ldGMvcGFzc3dkLmxvY2sgL2V0Yy9ncm91cC5sb2NrIC9ldGMvZ3NoYWRvdy5sb2NrCisKK0NPUkVVVElMU0xJQj1AbGliZGlyQC9jb3JldXRpbHMKK0xPRz0iJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0L2NvcmV1dGlsc19wdGVzdF8kKGRhdGUgKyVZJW0lZC0lSCVNJVMpLmxvZyIKK1VTRVJOQU1FPSJ0ZXN0ZXIiCitncm91cGFkZCB1Z3JvdXAxCitncm91cGFkZCB1Z3JvdXAyCit1c2VyYWRkIC1HIHVncm91cDEsdWdyb3VwMiAkVVNFUk5BTUUgfHwgZWNobyAidXNlciAkVVNFUk5BTUUgYWxyZWFkeSBleGlzdHMiCisKK3N1IHRlc3RlciAtYyAiY2QgJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0ICYmIG1ha2UgY2hlY2stVEVTVFMgdG9wX3NyY2Rpcj0uIHNyY2Rpcj0uIiAyPiYxIHwgdGVlIC1hICR7TE9HfQordXNlcmRlbCAkVVNFUk5BTUUgCitncm91cGRlbCB1Z3JvdXAxCitncm91cGRlbCB1Z3JvdXAyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCmluZGV4IDU3YjJjMWIuLjJiMTk2YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiZmlsZTovL3N0cnRvZF9maXhfY2xhc2hfd2l0aF9zdHJ0b2xkLnBhdGNoIgpAQCAtMTQzLDMgKzE0NCw0NyBAQAogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZmluZHV0aWxzIGdhd2sgbGliZXJyb3ItcGVybCBsaWJtb2R1bGUtYnVpbGQtcGVybCBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1zdGF0IHB5dGhvbjMtY29yZSBzZWQgc2hhZG93IgorCisjIC1kZXYgYXV0b21hdGljIGRlcGVuZGVuY2llcyBmYWlscyBhcyB3ZSBkb24ndCB3YW50IGxpYm1vZHVsZS1idWlsZC1wZXJsLWRldiwgaXRzIHRvbyBoZWF2eQorIyBtYXkgbmVlZCB0d2Vha2luZyBpZiBERVBFTkRTIGNoYW5nZXMKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXZbbm9kZXBycmVjc10gPSAiMSIKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXYgPSAiYWNsLWRldiBhdHRyLWRldiBnbXAtZGV2IGxpYmNhcC1kZXYgYmFzaC1kZXYgZmluZHV0aWxzLWRldiBnYXdrLWRldiBzaGFkb3ctZGV2IgorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgc2VkIC1pICdzL2dpbnN0YWxsL2luc3RhbGwvZycgIGBncmVwIC1SIGdpbnN0YWxsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIHwgYXdrIC1GOiAne3ByaW50ICQxfScgfCB1bmlxYAorICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4CisgICAgaW5zdGFsbCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCisgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBjcCAke1N9L2luaXQuY2ZnICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7Qn0vc3JjICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7U30vc3JjLyouYyAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICBzZWQgLWkgJy9eVlBBVEgvcy89IC4qJC89IC4vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eUFJPR1JBTVMvcy9eLyMvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eTWFrZWZpbGU6IC9zL14uKiQvTWFrZWZpbGU6L2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXmFic19zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15hYnNfdG9wX2J1aWxkZGlyL3MvPSAuKiQvPSBcJFx7UFdEXH0vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eYWJzX3RvcF9zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15idWlsdF9wcm9ncmFtcy9zL2dpbnN0YWxsL2luc3RhbGwvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBjaG1vZCAtUiA3NzcgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHN0dHktcGFpcnMuc2gsIGl0IHdpbGwgY2F1c2UgdGVzdCBmcmFtZXdvcmsgaGFuZworICAgIHNlZCAtaSAnL3N0dHktcGFpcnMuc2gvZCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHRhaWwtMi9hc3NlcnQuc2ggYXMgaXQgaGFzIGlzc3VlcyBvbiAzMi1iaXQgc3lzdGVtcworICAgIHNlZCAtaSAnL2Fzc2VydC5zaC9kJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgIyBUd2VhayB0ZXN0IGRfdHlwZS1jaGVjayB0byB1c2UgcHl0aG9uMyBpbnN0ZWFkIG9mIHB5dGhvbgorICAgIHNlZCAtaSAiMXNALipAIyEvdXNyL2Jpbi9weXRob24zQCIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZF90eXBlLWNoZWNrCisgICAgaW5zdGFsbCAke0J9L3NyYy9nZXRsaW1pdHMgJHtEfS8ke2JpbmRpcn0KKyAgICAKKyAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQorCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtiaW5kaXJ9L2dldGxpbWl0cyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCmluZGV4IDlhZmJjMmIuLjBiNDU4MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiSGlnaCBsZXZlbCBsYW5ndWFnZSAoR0xpYikgYmluZGluZyBmb3IgRC1CdXMiCiBERVNDUklQVElPTiA9ICJHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CdXMgbWVzc2FnZSBidXMgdGhhdCBpbnRlZ3JhdGUgXAogdGhlIEQtQnVzIGxpYnJhcnkgd2l0aCB0aGUgR0xpYiB0aHJlYWQgYWJzdHJhY3Rpb24gYW5kIG1haW4gbG9vcC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZjViM2EyZjcwODM3NTBkNTA0MzMzMTE0ZTczODY1NiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMtZ2xpYi5oO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgpAQCAtMTAsNyArMTAsNyBAQAogREVQRU5EUyA9ICJleHBhdCBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwgZGJ1cy1nbGliLW5hdGl2ZSBkYnVzIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2xpYi0yLjAtbmF0aXZlIGRidXMtbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLWdsaWIvZGJ1cy1nbGliLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tZXhhbXBsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdAppbmRleCA0ODUzNWUxLi5kM2VlYzA4IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xOSwxMCArMTksMTIgQEAKIGZvciBpIGluICRmaWxlcwogZG8KICAgICAgI3RoZXNlIHByb2dyYW1zIGFyZSB1c2VkIGJ5IHRlc3RjYXNlIHRlc3QtYnVzLCBkb24ndCBydW4gaGVyZQorICAgICAjYWRkaXRpb25hbGx5LCB0ZXN0LW5hbWVzIG5lZWRzIHRvIGJlIHJ1biB1bmRlciBYCiAgICAgIGlmIFsgJGkgPSAidGVzdC90ZXN0LXNlcnZpY2UiIF0gXAogICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1zaGVsbC1zZXJ2aWNlIiBdIFwKICAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3Qtc2VnZmF1bHQiIF0gXAotICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1idXMiIF0KKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtYnVzIiBdIFwKKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtbmFtZXMiIF0KICAgICAgdGhlbgogICAgICAgICAgY29udGludWUKICAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjE2LmJiCmluZGV4IDk2YjUwMzYuLjgyYmI3NTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xNi5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCiBERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCkBAIC0xMiw3ICsxMiw3IEBACiBBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCiBSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKICAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjI2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjI1MmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZICA9ICJFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVtYmVkZGVkIExpbnV4IExpYnJhcnkgKEVMTCkgcHJvdmlkZXMgY29yZSwgXAotbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgZm9yIHN5c3RlbSBkYWVtb25zLiBJdCB0eXBpY2FsbHkgaGFzIG5vIFwKLWRlcGVuZGVuY2llcyBvdGhlciB0aGFuIHRoZSBMaW51eCBrZXJuZWwsIEMgc3RhbmRhcmQgbGlicmFyeSwgYW5kIFwKLWxpYmRsIChmb3IgZHluYW1pYyBsaW5raW5nKS4gV2hpbGUgRUxMIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBcCi1hbmQgY29tcGFjdCBlbm91Z2ggZm9yIHVzZSBvbiBlbWJlZGRlZCBMaW51eCBwbGF0Zm9ybXMsIGl0IGlzIG5vdCBcCi1saW1pdGVkIHRvIHJlc291cmNlLWNvbnN0cmFpbmVkIHN5c3RlbXMuIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSAgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLQotREVQRU5EUyA9ICJkYnVzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwczovL21pcnJvcnMuZWRnZS5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ2NjBlMjU1NDEwNzFlOTMzYTJiYjAyZWYyZjk0ZTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4NTViNGI4ZjI3MWJhNmVlNjdkODdkMDk2NWI5NzVhOWE4ZGJlYWE2MTY2NjVjYTIyNDhhZmEzYjVmY2JjNzciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI3MTMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IChFTEwpIHByb3ZpZGVzIGNvcmUsIFwKK2xvdy1sZXZlbCBmdW5jdGlvbmFsaXR5IGZvciBzeXN0ZW0gZGFlbW9ucy4gSXQgdHlwaWNhbGx5IGhhcyBubyBcCitkZXBlbmRlbmNpZXMgb3RoZXIgdGhhbiB0aGUgTGludXgga2VybmVsLCBDIHN0YW5kYXJkIGxpYnJhcnksIGFuZCBcCitsaWJkbCAoZm9yIGR5bmFtaWMgbGlua2luZykuIFdoaWxlIEVMTCBpcyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgXAorYW5kIGNvbXBhY3QgZW5vdWdoIGZvciB1c2Ugb24gZW1iZWRkZWQgTGludXggcGxhdGZvcm1zLCBpdCBpcyBub3QgXAorbGltaXRlZCB0byByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCisKK0RFUEVORFMgPSAiZGJ1cyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZjY3MDIzMGJlNGQ4OWQ2MjFiMDUwOGM3MGIxZDM2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTg4NjE3Mjc1NDUyZjlmNTg0MGIyMzY1ZTMzZTZjN2ZiNmZhMzQwNWQ0MmNiZjkzNjdkZTY0MmVlOGI2NzAxIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtTfS9idWlsZC1hdXgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYxNjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIGU1NDZkZTY1YTMzMzc4OWU4M2Y1NDg1NzU3OTY3Y2VlMjllZTM2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKLQotRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKLXwgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Ci18IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLQotQW5kOgotZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCi0gICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQotIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oICAgICAgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLWluZGV4IDYxNzUyMGYuLjEwMDEwNGIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYwotQEAgLTI2MDcsNyArMjYwNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX3J1bGVzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ2xvbmcgYV9pbmRlbnQpCi0gICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhX2ZwICYmIGFfdGhpcyk7Ci0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfcnVsZXNldF90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEw7Ci0gICAgICAgICB9Ci1AQCAtMjY1OCw3ICsyNjU4LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfY2hhcnNldF90b19zdHJpbmcgKGFfdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9pbmRlbnQpIDsKLSAgICAgICAgIGlmIChzdHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKLSAgICAgICAgIH0KLUBAIC0yNjg1LDcgKzI2ODUsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9wYWdlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGd1bG9uZyBhX2luZGVudCkKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9hdF9wYWdlX3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cik7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cik7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOyAKLSAgICAgICAgIH0KLUBAIC0yNzExLDcgKzI3MTEsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9tZWRpYV9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9tZWRpYV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOwotICAgICAgICAgfQotQEAgLTI3MzcsNyArMjczNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2ltcG9ydF9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsCi0gCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfaW1wb3J0X3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKLSAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7Ci0gICAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0LmggYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotaW5kZXggNzk1ZjI3Mi4uNDQzOTE4YSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBUSU1fU09SVF9SRVNJWkUoVEVNUF9TVE9SQUdFX1QgKnN0b3JlLCBjb25zdCBzaXplX3QgbmV3X3NpemUpCi0gICAgIFNPUlRfVFlQRSAqdGVtcHN0b3JlID0gKFNPUlRfVFlQRSAqKXJlYWxsb2Moc3RvcmUtPnN0b3JhZ2UsIG5ld19zaXplICogc2l6ZW9mKFNPUlRfVFlQRSkpOwotICAgICBpZiAodGVtcHN0b3JlID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9jYXRpbmcgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHRpbSBzb3J0OiBuZWVkICVsdSBieXRlcyIsIHNpemVvZihTT1JUX1RZUEUpICogbmV3X3NpemUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgdGltIHNvcnQ6IG5lZWQgJXp1IGJ5dGVzIiwgc2l6ZW9mKFNPUlRfVFlQRSkgKiBuZXdfc2l6ZSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotICAgICBzdG9yZS0+c3RvcmFnZSA9IHRlbXBzdG9yZTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmZTIwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z2V0dGV4dC5naXQ7YT1jb21taXQ7aD1kY2UzYTE2XQotQ1ZFOiBDVkUtMjAxOC0xODc1MQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBkY2UzYTE2ZTVlOTM2ODI0NTczNWUyOWJmNDk4ZGNkNWUzZTQ3NGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFpa2kgVWVubyA8dWVub0BnbnUub3JnPgotRGF0ZTogVGh1LCAxNSBTZXAgMjAxNiAxMzo1NzoyNCArMDIwMAotU3ViamVjdDogW1BBVENIXSB4Z2V0dGV4dDogRml4IGNyYXNoIHdpdGggKi5wbyBmaWxlIGlucHV0Ci0KLVdoZW4geGdldHRleHQgd2FzIGdpdmVuIHR3byAqLnBvIGZpbGVzIHdpdGggdGhlIHNhbWUgbXNnaWRfcGx1cmFsLCBpdAotY3Jhc2hlZCB3aXRoIGRvdWJsZS1mcmVlLiAgUHJvYmxlbSByZXBvcnRlZCBieSBEYXZsZXQgUGFuZWNoIGluOgotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTYtMDkvbXNnMDAwMDEuaHRtbAotKiBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55OiBEb24ndCBmcmVlIG1zZ2lkX3BsdXJhbGZvcm0gYWZ0ZXIKLWNhbGxpbmcgZG9fY2FsbGJhY2tfbWVzc2FnZSwgYXNzdW1pbmcgdGhhdCBpdCB0YWtlcyBvd25lcnNoaXAuCi0qIGdldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIChkZWZhdWx0X2FkZF9tZXNzYWdlKTogRnJlZQotbXNnaWRfcGx1cmFsIGFmdGVyIGNhbGxpbmcgbWVzc2FnZV9hbGxvYy4KLSogZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yOiBOZXcgZmlsZS4KLSogZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBBZGQgbmV3IHRlc3QuCi0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55ICAgfCAxMyArKysrLS0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYyAgfCAgMiArKwotIGdldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gICB8ICAyICstCi0gZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLQotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3BvLWdyYW0tZ2VuLnkgYi9nZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55Ci1pbmRleCBiZWNmNWU2Li40NDI4ZTc3IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotQEAgLTIyMSwxNCArMjIxLDExIEBAIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQzKTsKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQ0KTsKLSAgICAgICAgICAgICAgICAgICBpZiAoISQxLm9ic29sZXRlIHx8IHBhc3Nfb2Jzb2xldGVfZW50cmllcykKLS0gICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNC5yaHMubXNnc3RyLCAkNC5yaHMubXNnc3RyX2xlbiwgJiQ0LnBvcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9jdHh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEub2Jzb2xldGUpOwotLSAgICAgICAgICAgICAgICAgICAgICBmcmVlICgkMy5zdHJpbmcpOwotLSAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDQucmhzLm1zZ3N0ciwgJDQucmhzLm1zZ3N0cl9sZW4sICYkNC5wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2N0eHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLm9ic29sZXRlKTsKLSAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIGZyZWVfbWVzc2FnZV9pbnRybyAoJDEpOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLWluZGV4IDU3MWQxOGUuLjZhZjZkMjAgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYwotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLUBAIC0zOTcsNiArMzk3LDggQEAgZGVmYXVsdF9hZGRfbWVzc2FnZSAoZGVmYXVsdF9jYXRhbG9nX3JlYWRlcl90eSAqdGhpcywKLSAgICAgICAgICBhcHByb3ByaWF0ZS4gICovCi0gICAgICAgbXAgPSBtZXNzYWdlX2FsbG9jIChtc2djdHh0LCBtc2dpZCwgbXNnaWRfcGx1cmFsLCBtc2dzdHIsIG1zZ3N0cl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dzdHJfcG9zKTsKLSsgICAgICBpZiAobXNnaWRfcGx1cmFsICE9IE5VTEwpCi0rICAgICAgICBmcmVlIChtc2dpZF9wbHVyYWwpOwotICAgICAgIG1wLT5wcmV2X21zZ2N0eHQgPSBwcmV2X21zZ2N0eHQ7Ci0gICAgICAgbXAtPnByZXZfbXNnaWQgPSBwcmV2X21zZ2lkOwotICAgICAgIG1wLT5wcmV2X21zZ2lkX3BsdXJhbCA9IHByZXZfbXNnaWRfcGx1cmFsOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAyM2IwOWIxLi4wZGZiNGQ4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTk1LDcgKzk1LDcgQEAgVEVTVFMgPSBnZXR0ZXh0LTEgZ2V0dGV4dC0yIGdldHRleHQtMyBnZXR0ZXh0LTQgZ2V0dGV4dC01IGdldHRleHQtNiBnZXR0ZXh0LTcgXAotIAl4Z2V0dGV4dC1wZXJsLTEgeGdldHRleHQtcGVybC0yIHhnZXR0ZXh0LXBlcmwtMyB4Z2V0dGV4dC1wZXJsLTQgXAotIAl4Z2V0dGV4dC1wZXJsLTUgeGdldHRleHQtcGVybC02IHhnZXR0ZXh0LXBlcmwtNyB4Z2V0dGV4dC1wZXJsLTggXAotIAl4Z2V0dGV4dC1waHAtMSB4Z2V0dGV4dC1waHAtMiB4Z2V0dGV4dC1waHAtMyB4Z2V0dGV4dC1waHAtNCBcCi0tCXhnZXR0ZXh0LXBvLTEgXAotKwl4Z2V0dGV4dC1wby0xIHhnZXR0ZXh0LXBvLTIgXAotIAl4Z2V0dGV4dC1wcm9wZXJ0aWVzLTEgXAotIAl4Z2V0dGV4dC1weXRob24tMSB4Z2V0dGV4dC1weXRob24tMiB4Z2V0dGV4dC1weXRob24tMyBcCi0gCXhnZXR0ZXh0LXB5dGhvbi00IFwKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAwMDAwMDAwLi5jNGJkOWQwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLUBAIC0wLDAgKzEsNTUgQEAKLSsjISAvYmluL3NoCi0rLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLiAuLi9zcmMKLSsKLSsjIFRlc3QgUE8gZXh0cmFjdG9ycyB3aXRoIG11bHRpcGxlIGlucHV0IGZpbGVzLgotKwotK2NhdCA8PEVPRiA+IHhnLXBvLTItMS5wbwotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi0yLnBvCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInNlY29uZCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgInNlY29uZCBtc2dpZCAocGx1cmFsKSIKLSttc2dzdHJbMF0gIiIKLSttc2dzdHJbMV0gIiIKLStFT0YKLSsKLSs6ICR7WEdFVFRFWFQ9eGdldHRleHR9Ci0rJHtYR0VUVEVYVH0gLS1vbWl0LWhlYWRlciB4Zy1wby0yLTEucG8geGctcG8tMi0yLnBvIC1vIHhnLXBvLTIudG1wLnBvIHx8IEV4aXQgMQotK0xDX0FMTD1DIHRyIC1kICdccicgPCB4Zy1wby0yLnRtcC5wbyA+IHhnLXBvLTIucG8gfHwgRXhpdCAxCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi5vawotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rOiAke0RJRkY9ZGlmZn0KLSske0RJRkZ9IHhnLXBvLTIub2sgeGctcG8tMi5wbwotK3Jlc3VsdD0kPwotKwotK2V4aXQgJHJlc3VsdAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGUyYzk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaW5zdGFsIGxpYmdldHRleHRsaWIuYSBiZWZvcmUgcmVtb3ZpbmcgaXQKLQotSW4gYSBtdWx0aXBsZSBqb2IgYnVpbGQsIE1ha2VmaWxlIGNhbiBzaW11bHRhbmVvdXNseQotYmUgaW5zdGFsbGluZyBhbmQgcmVtb3ZpbmcgbGliZ2V0dGV4dGxpYi5hLiAgV2Ugc2VyaWFsaXplCi10aGUgb3BlcmF0aW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0KLUBAIC01Nyw2ICs1NywxMCBAQCBlbmRpZgotICMgUnVsZXMgZ2VuZXJhdGVkIGFuZCBjb2xsZWN0ZWQgYnkgZ251bGliLXRvb2wuCi0gaW5jbHVkZSBNYWtlZmlsZS5nbnVsaWIKLSAKLSsjIGRlZmluZWQgaW4gTWFrZWZpbGUuZ251bGliIGJ1dCBtaXNzaW5nIHRoaXMgZGVwZW5kZW5jeQotKyMKLStpbnN0YWxsLWV4ZWMtY2xlYW46IGluc3RhbGwtbGliTFRMSUJSQVJJRVMKLSsKLSAjIFdoaWNoIGNsYXNzZXMgdG8gZXhwb3J0IGZyb20gdGhlIHNoYXJlZCBsaWJyYXJ5LgotIE1PT1BQRkxBR1MgKz0gLS1kbGxleHBvcnQ9c3R5bGVkX29zdHJlYW0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWZmOTEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIGM0YjFmM2EwYzdiN2M0MGIzNDNiZTliOTVkZWI4NGUwNDg1NjQzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZ2p1bi5ZYW5nIiA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI4IEp1bCAyMDE2IDEyOjM2OjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBmb3IgcHRlc3QKLQotQWRkIHNlcmlhbC10ZXN0cyBzdXBwb3J0LCBwdGVzdCBuZWVkIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMiArLQotIGdldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgfCAyICstCi0gZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWU5OTZmYS4uODgwNTgxZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjMsNyArMjMsNyBAQCBBQ19JTklUKFtnZXR0ZXh0XSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgZGlzdC14eiBkaXN0LWx6aXBdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTMgc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyBkaXN0LXh6IGRpc3QtbHppcF0pCi0gCi0gZG5sIE92ZXJyaWRlIGF1dG9tYWtlJ3MgdGFyIGNvbW1hbmQgdXNlZCBmb3IgY3JlYXRpbmcgZGlzdHJpYnV0aW9ucy4KLSBhbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAiJCR0YXJkaXIiJwotZGlmZiAtLWdpdCBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgYi9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjCi1pbmRleCBlOTI5OWI2Li5kNGY1NTI4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dC1ydW50aW1lXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gCi0gZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1pbmRleCA5MjBlZWI2Li5jNTA3NDM0IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKLSsrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtzcmMvbXNnZm10LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIAotIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTU2YTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjEgKzAsMCBAQAotRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCi1maW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Ci1jb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCi1jYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCi0KLVNpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAodXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWcpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00Ci1pbmRleCBmNzllYTgyZjEuLjFmNjcyNzRkYiAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmNyb2NvLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJjcm9jby5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLSAKLSBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KLSAgIEFDX1JFUVVJUkUoW2dsX0xJQkdMSUJdKQotIAotQEAgLTIzLDY1ICsyNCwxMCBAQCBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotICAgTFRMSUJDUk9DTz0KLSAgIElOQ0NST0NPPQotICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KLS0gICAgZG5sIHVzZSB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWwotLSAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCi0tICAgICAgZ2xfY3ZfTElCQ1JPQ089Ci0tICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KLS0gICAgICBnbF9jdl9JTkNDUk9DTz0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKLS0gICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgY3JvY28tMC42LWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KLS0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQotLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2Nyb2NvLTAuNl0sIFtnbGliLTIuMF0pCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKLS0gICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCi0tICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgotLSAgICAgICAgXSkKLS0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgotLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAotLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAotLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KLS0gICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCi0tICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oPl0sCi0tICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKLS0gICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQotLSAgICAgICAgICAgICBsaWJjcm9jb19pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYmNyb2NvXzBfNl9saWJjcm9jb19saWJjcm9jb19jb25maWdfaCIgfCBzZWQgLWUgJ3MsLmxpYmNyb2NvLWNvbmZpZ1wuaCQsLCdgCi0tICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgotLSAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIF0pCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQotLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJjcm9jbyA9IHllczsgdGhlbgotLSAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCi0tICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCi0tICAgICAgSU5DQ1JPQ089IiRnbF9jdl9JTkNDUk9DTyIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NST0NPXSwgW2xpYmNyb2NvLTAuNl0pCi0rICAgIExJQkNST0NPPSRDUk9DT19MSUJTCi0rICAgIExUTElCQ1JPQ089JENST0NPX0xJQlMKLSsgICAgSU5DQ1JPQ089JENST0NPX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJDUk9DT10pCi0gICBBQ19TVUJTVChbTFRMSUJDUk9DT10pCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAotaW5kZXggNDJlNTVlNmZkLi5hYjI1YTViMjIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci1AQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotIAotIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCi0gICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCi0gICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCi1AQCAtMjAsNzYgKzIxLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSAgIExUTElCR0xJQj0KLSAgIElOQ0dMSUI9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgotLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCi0tICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCi0tICAgICAgZ2xfY3ZfbGliZ2xpYj1ubwotLSAgICAgIGdsX2N2X0xJQkdMSUI9Ci0tICAgICAgZ2xfY3ZfTFRMSUJHTElCPQotLSAgICAgIGdsX2N2X0lOQ0dMSUI9Ci0tICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAotLSAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KLS0gICAgICBkbmwgRG9uJ3QgdXNlIGdsaWItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgotLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCi0tICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgotLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbZ2xpYi0yLjBdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgotLSNpZm5kZWYgR19CRUdJTl9ERUNMUwotLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54Ci0tI2VuZGlmCi0tXSwKLS0gICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAotLSAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgotLSAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCi0tICAgICAgICBdKQotLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLS0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKLS0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgotLSAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgotLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKLS0gICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkTElCR0xJQl8yXzBfUFJFRklYIjsgdGhlbgotLSAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKLS0gICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKLS0gICAgICBmaQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCi0tICAgIF0pCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdsaWJdKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KLS0gICAgICBMSUJHTElCPSIkZ2xfY3ZfTElCR0xJQiIKLS0gICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCi0tICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCi0tICAgIGVsc2UKLS0gICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjBdKQotKyAgICBMSUJHTElCPSIkR0xJQl9MSUJTIgotKyAgICBMVExJQkdMSUI9IiRHTElCX0xJQlMiCi0rICAgIElOQ0dMSUI9IiRHTElCX0NGTEFHUyIKLSAgIGZpCi0gICBBQ19TVUJTVChbTElCR0xJQl0pCi0gICBBQ19TVUJTVChbTFRMSUJHTElCXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGlieG1sLm00IGIvZ251bGliLWxvY2FsL200L2xpYnhtbC5tNAotaW5kZXggNDgwYzcwMGQyLi5jYjM5MzA5ZDUgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLQotIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS10pCi0KLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJ4bWwgaXMgcmVxdWVzdGVkXSkKLUBAIC0yMiwxMDAgKzIyLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotICAgTFRMSUJYTUw9Ci0gICBJTkNYTUw9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJ4bWwyLCBvciBoYXZlIHRvIHVzZQotLSAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KLS0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCi0tICAgICAgZ2xfY3ZfbGlieG1sPW5vCi0tICAgICAgZ2xfY3ZfTElCWE1MPQotLSAgICAgIGdsX2N2X0xUTElCWE1MPQotLSAgICAgIGdsX2N2X0lOQ1hNTD0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJ4bWwyIGFuZCBkZWZpbmUgTElCWE1MMiwgTFRMSUJYTUwyIGFuZCBJTkNYTUwyCi0tICAgICAgZG5sIGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCi0tICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKLS0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCi0tICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCi0tICAgICAgZG5sIGxpYnhtbDIgaXMgYnVpbHQgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXMgb2YgeG1sRnJlZSB3b3JrIGZpbmUgd2l0aAotLSAgICAgIGRubCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgYnV0IGxlYWQgdG8gYSBsaW5rIGVycm9yIHdpdGgKLS0gICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW3htbDJdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKLS0gICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7Ci0tICAgICAgICBdLAotLSAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNYTUwyIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+Ci0tICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7Ci0tICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgXSwKLS0gICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCi0tICAgICAgICAgICBnbF9jdl9JTkNYTUw9IiRJTkNYTUwyIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9saWJ4bWwyLgotLSAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KLS0gICAgICAgICAgZG5sIEluIGxpYnhtbDItMi42LCBpdCBpbmNsdWRlcyA8bGlieG1sL3htbGV4cG9ydHMuaD4gd2hpY2ggaXMKLS0gICAgICAgICAgZG5sIHNlbGYtY29udGFpbmVkLgotLSAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQotLSAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oPl0sCi0tICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oXSkKLS0gICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKLS0gICAgICAgICAgICBdKQotLSAgICAgICAgICBpZiB0ZXN0IC16ICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCi0tICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmhdKQotLSAgICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWx2ZXJzaW9uX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sdmVyc2lvblwuaCQsLCdgCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkbGlieG1sMl9pbmNsdWRlX2RpciIgJiYgdGVzdCAtZCAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCi0tICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOwotLSAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOwotLSAgICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcwotLSAgICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKLS0gICAgICAgICAgICAgIF0pCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGlieG1sXSkKLS0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYnhtbCA9IHllczsgdGhlbgotLSAgICAgIExJQlhNTD0iJGdsX2N2X0xJQlhNTCIKLS0gICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgotLSAgICAgIElOQ1hNTD0iJGdsX2N2X0lOQ1hNTCIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCi0tICAgIGZpCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFtYTUxdLCBbbGlieG1sLTIuMF0pCi0rICAgIExJQlhNTD0kWE1MX0xJQlMKLSsgICAgTFRMSUJYTUw9JFhNTF9MSUJTCi0rICAgIElOQ1hNTD0kWE1MX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJYTUxdKQotICAgQUNfU1VCU1QoW0xUTElCWE1MXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYyBiL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCi1pbmRleCA4MWE0MDc0NjcuLjIxODU2NTMyOSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLUBAIC0yNSw0ICsyNSw0IEBACi0tI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgotLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+Ci0tI2luY2x1ZGUgPGNyLXN0eWxlLmg+Ci0tI2luY2x1ZGUgPGNyLXJnYi5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KLUBAIC0zMSArMzEgQEAKLS0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+Ci0rIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgotQEAgLTMzICszMyBAQAotLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1Yjc1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLWluaXQtZW52LmluLWRvLW5vdC1hZGQtQy1DWFgtcGFyYW1ldGVycy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDliOTEyYTQ3Zjc5MGE3YjI4MmVjMGMyMjk1YTE4OGM1ZDhmYjZhN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMTowNDowNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbml0LWVudi5pbjogZG8gbm90IGFkZCBDL0NYWCBwYXJhbWV0ZXJzCisKK1RoZXNlIGFyZSB0YWtlbiBmcm9tIHRoZSBjcm9zcyBlbnZpcm9ubWVudCBhbmQgaW5jbHVkZQorc3lzcm9vdCBwYXRocywgc28gYXJlIG5vdCByZXByb2R1Y2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiBiL2dldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYuaW4KK2luZGV4IGNjODRmZmQuLmI2OWM5OTAgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCisrKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCitAQCAtMywxMCArMyw2IEBAIHRvcF9idWlsZGRpcj0uLi8uLgorIAorIE9CSkVYVD0iQE9CSkVYVEAiCisgRVhFRVhUPSJARVhFRVhUQCIKKy1DQz0iQENDQCIKKy1DRkxBR1M9IkBDRkxBR1NAIgorLUNYWD0iQENYWEAiCistQ1hYRkxBR1M9IkBDWFhGTEFHU0AiCisgQ1BQRkxBR1M9IkBDUFBGTEFHU0AiCisgTERGTEFHUz0iQExERkxBR1NAIgorIExUTElCSU5UTD0iQExUTElCSU5UTEAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1tc2dtZXJnZS1GaXgtYmVoYXZpb3VyLW9mLWZvci1tc2dmbXQtb24tUE8tZmlsZXMtd2l0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDc1ZTMxNWZkZWM4MmQxYTE3ZWJjZDllMDcxMmQxMDkzMjM1NzhkNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4KK0RhdGU6IFN1biwgMTkgTWF5IDIwMTkgMTE6MTA6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXNnbWVyZ2U6IEZpeCBiZWhhdmlvdXIgb2YgLS1mb3ItbXNnZm10IG9uIFBPIGZpbGVzIHdpdGggbm8KKyB0cmFuc2xhdGlvbnMuCisKK21zZ21lcmdlOiBGaXggYmVoYXZpb3VyIG9mIC0tZm9yLW1zZ2ZtdCBvbiBQTyBmaWxlcyB3aXRoIG5vIHRyYW5zbGF0aW9ucy4KKworUmVwb3J0ZWQgYnkgRG9uIExhd3JlbmNlIDxkbGF3cmVuY2VAaWVjb2suY29tPgoraW4gPGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3AxMS1nbHVlLzIwMTktTWF5LzAwMDcwMC5odG1sPgordmlhIERhaWtpIFVlbm8KK2luIDxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTktMDUvbXNnMDAxMjQuaHRtbD4uCisKKyogZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYyAobWFpbik6IFRyZWF0IGZvcmNlX3BvIGxpa2UgdHJ1ZSBpZiBmb3JfbXNnZm10CitpcyB0cnVlLgorKiBnZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2OiBBZGQgdGVzdCBvZiBQTyBmaWxlIHdpdGggbm8gdHJhbnNsYXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1nZXR0ZXh0LmdpdDthPWNvbW1pdGRpZmY7aD0yMzM2NDUxZWQ2OGQ5MWZmNGI1YWUxYWNiYzFlY2EzMGU0N2E4NmE5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgICAgfCAgNCArKy0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNiB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgYi9nZXR0ZXh0LXRvb2xzL3NyYy9tc2dtZXJnZS5jCitpbmRleCBjZDc2MmMwLi45MmM5YjdhIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworKysrIGIvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworQEAgLTUyMCw4ICs1MjAsOCBAQCBUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LlxuXAorICAgZWxzZQorICAgICB7CisgICAgICAgLyogV3JpdGUgdGhlIG1lcmdlZCBtZXNzYWdlIGxpc3Qgb3V0LiAgKi8KKy0gICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwgZm9yY2VfcG8sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKysgICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yX21zZ2ZtdCB8fCBmb3JjZV9wbywgZmFsc2UpOworICAgICB9CisgCisgICBleGl0IChFWElUX1NVQ0NFU1MpOworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2CitpbmRleCBjZDM4NjJlLi5iODZmN2EwIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorQEAgLTczLDcgKzczLDM3IEBAIG1zZ3N0ciAiUGFwYXlhIgorIEVPRgorIAorIDogJHtESUZGPWRpZmZ9CistJHtESUZGfSBtbS10ZXN0MjYub2sgbW0tdGVzdDI2Lm91dAorLXJlc3VsdD0kPworKyR7RElGRn0gbW0tdGVzdDI2Lm9rIG1tLXRlc3QyNi5vdXQgfHwgRXhpdCAxCisgCistZXhpdCAkcmVzdWx0CisrIyBUZXN0IHdpdGggYSBQTyBmaWxlIHRoYXQgaGFzIG5vIHRyYW5zbGF0ZWQgbWVzc2FnZXMuCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEuaW4xCisrbXNnaWQgIiIKKyttc2dzdHIgIiIKKysiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrCisrbXNnaWQgIkhlbGxvIHdvcmxkIgorK21zZ3N0ciAiSGFsbG8gV2VsdCIKKytFT0YKKysKKytjYXQgPDxcRU9GID4gbW0tdGVzdDI2YS5pbjIKKyttc2dpZCAiIgorK21zZ3N0ciAiIgorKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9QVNDSUlcbiIKKysKKyttc2dpZCAiSGVsbG8sIHdvcmxkISIKKyttc2dzdHIgIiIKKytFT0YKKysKKys6ICR7TVNHTUVSR0U9bXNnbWVyZ2V9CisrJHtNU0dNRVJHRX0gLS1mb3ItbXNnZm10IC1vIG1tLXRlc3QyNmEudG1wIG1tLXRlc3QyNmEuaW4xIG1tLXRlc3QyNmEuaW4yIFwKKysgICAgfHwgRXhpdCAxCisrTENfQUxMPUMgdHIgLWQgJ1xyJyA8IG1tLXRlc3QyNmEudG1wID4gbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEub2sKKyttc2dpZCAiIgorK21zZ3N0ciAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrRU9GCisrCisrOiAke0RJRkY9ZGlmZn0KKyske0RJRkZ9IG1tLXRlc3QyNmEub2sgbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBiYzZiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLXRlc3RzLWF1dG9wb2ludC0zLXVuc2V0LU1BS0VGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDM4YjI1NmU1YWE3ZGZlYjQyYWNmZmQ4OTU2NWU1M2EyYzBiYWIzZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxNjo0NDozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9hdXRvcG9pbnQtMzogdW5zZXQgTUFLRUZMQUdTCisKK1RoaXMgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBwdGVzdHMsIGFzIHRoZSBNQUtFRkxBR1MgdmFsdWUgKHNldCB1cCBieSBydW4tcHRlc3QpCitpcyBtZXNzaW5nIHVwIHRoZSB0ZXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2F1dG9wb2ludC0zCitpbmRleCBlMTM1NTJiLi41NTE4OGRmIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworQEAgLTEyNiw2ICsxMjYsNyBAQCB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAke0NPTkZJR19TSEVMTH0gLi9jb25maWd1cmUgPi9kZXYvbnVsbCAyPmF1dHBvaW50LmVycgorIHRlc3QgJD8gPSAwIHx8IHsgY2F0IGF1dG9wb2ludC5lcnI7IEV4aXQgMTsgfQorIAorK3Vuc2V0IE1BS0VGTEFHUworICR7TUFLRX0gPi9kZXYvbnVsbCAyPmF1dG9wb2ludC5lcnIKKyB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NjFlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGY2MjQ1ZWY1NTMwZmMzN2E2MjQzZTc5OGRmMzQxNjJmYmJlYWI2ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKKworRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKK3wgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Cit8IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKworQW5kOgorZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCisgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIGIvbGlidGV4dHN0eWxlL2xpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYworaW5kZXggNjE3NTIwZi4uMTAwMTA0YiAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKKysrKyBiL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKK0BAIC0yNjA3LDcgKzI2MDcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9ydWxlc2V0IChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGdsb25nIGFfaW5kZW50KQorICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYV9mcCAmJiBhX3RoaXMpOworICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X3J1bGVzZXRfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KTsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKTsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMOworICAgICAgICAgfQorQEAgLTI2NTgsNyArMjY1OCw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ3Vsb25nIGFfaW5kZW50KQorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2NoYXJzZXRfdG9fc3RyaW5nIChhX3RoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfaW5kZW50KSA7CisgICAgICAgICBpZiAoc3RyKSB7CistICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7CisgICAgICAgICB9CitAQCAtMjY4NSw3ICsyNjg1LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfcGFnZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfYXRfcGFnZV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsgCisgICAgICAgICB9CitAQCAtMjcxMSw3ICsyNzExLDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfbWVkaWFfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfbWVkaWFfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7CisrICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKKyAgICAgICAgIH0KK0BAIC0yNzM3LDcgKzI3MzcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9pbXBvcnRfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLAorIAorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2ltcG9ydF9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7CisgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7CisgICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOworICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NmEzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA0YTJhMGE5M2I0NjkwOTNiNjBmZmQwYmVjNTVkMzNkMWUwM2Q0NzEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA3IEp1biAyMDEyIDE2OjM3OjAxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluc3RhbCBsaWJnZXR0ZXh0bGliLmEgYmVmb3JlIHJlbW92aW5nIGl0CisKK0luIGEgbXVsdGlwbGUgam9iIGJ1aWxkLCBNYWtlZmlsZSBjYW4gc2ltdWx0YW5lb3VzbHkKK2JlIGluc3RhbGxpbmcgYW5kIHJlbW92aW5nIGxpYmdldHRleHRsaWIuYS4gIFdlIHNlcmlhbGl6ZQordGhlIG9wZXJhdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQoraW5kZXggMjEyNjY5OS4uZDJkZDdlNCAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCitAQCAtNTgsNiArNTgsMTAgQEAgZW5kaWYKKyAjIFJ1bGVzIGdlbmVyYXRlZCBhbmQgY29sbGVjdGVkIGJ5IGdudWxpYi10b29sLgorIGluY2x1ZGUgTWFrZWZpbGUuZ251bGliCisgCisrIyBkZWZpbmVkIGluIE1ha2VmaWxlLmdudWxpYiBidXQgbWlzc2luZyB0aGlzIGRlcGVuZGVuY3kKKysjCisraW5zdGFsbC1leGVjLWNsZWFuOiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTCisrCisgIyBPUy8yIGRvZXMgbm90IHN1cHBvcnQgYSBETEwgbmFtZSBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMuCisgaWYgT1MyCisgbGliZ2V0dGV4dGxpYl9sYV9MREZMQUdTICs9IC1vczJkbGxuYW1lIGd0bGliCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmN2MwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gZWQ2NGE1NzI0ZWY3ZDZlYjRlOWE4NzZmODE3ZWEyNjZhNTM2ZTE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJIb25nanVuLllhbmciIDxob25nanVuLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjggSnVsIDIwMTYgMTI6MzY6MTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGZvciBwdGVzdAorCitBZGQgc2VyaWFsLXRlc3RzIHN1cHBvcnQsIHB0ZXN0IG5lZWQgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIHwgMiArLQorIGdldHRleHQtdG9vbHMvY29uZmlndXJlLmFjICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM4ZGI2ZmQuLmYwMTlhZTAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dF0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgdGFyLXVzdGFyXSkKKytBTV9JTklUX0FVVE9NQUtFKFsxLjEzIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHMgdGFyLXVzdGFyXSkKKyAKKyBkbmwgT3ZlcnJpZGUgYXV0b21ha2UncyB0YXIgY29tbWFuZCB1c2VkIGZvciBjcmVhdGluZyBkaXN0cmlidXRpb25zLgorIGFtX190YXI9JyR7QU1UQVJ9IGNoZiAtIC0tZm9ybWF0PXVzdGFyIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgIiQkdGFyZGlyIicKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYworaW5kZXggZGUyMDNlNy4uMTM4YTA3ZiAxMDA2NDQKKy0tLSBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKK0BAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW2dldHRleHQtcnVudGltZV0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitpbmRleCBjZjFkZDczLi5iNTQ0ZDZkIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitAQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKKyAJW2J1Zy1nZXR0ZXh0QGdudS5vcmddKQorIEFDX0NPTkZJR19TUkNESVIoW3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3VzZS1wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNzEzIEBACitGcm9tIGVmNDE0YjA2YmU4MGM2ZjYwNTczMWFiYzllNjc0ZTM5NmI4MGVjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAwMDo1NDoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBnZXR0ZXh0OiBiZWF0IGxpYnJhcnkgZGV0ZWN0aW9uIGludG8gc2hhcGUKKworRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCitmaW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Citjb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCitjYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCisKK1NpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWddCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0KKyBnZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQgICAgICAgICAgICAgfCAgOTkgKy0tLS0tLS0tLS0tLS0tLS0KKyAuLi4vZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgfCAgMTIgKy0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00ICAgICAgfCAgOTkgKysrLS0tLS0tLS0tLS0tLS0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgICAgICAgfCAxMDQgKysrLS0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCAgICAgICAgICAgIHwgIDk5ICsrKy0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00ICAgICAgICAgICAgIHwgMTA0ICsrKy0tLS0tLS0tLS0tLS0tLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jICAgICAgICB8ICAxMiArLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jICAgICB8ICAxMiArLQorIDggZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNDU0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00IGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitpbmRleCAwNWI5NTUwLi4wMzFlZTY1IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CisrKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKK0BAIC0xMyw2ICsxMyw3IEBAIGRubCBnbF9MSUJYTUwoRk9SQ0UtSU5DTFVERUQpCisgZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYnhtbC4KKyBBQ19ERUZVTihbZ2xfTElCWE1MXSwKKyBbCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktdKQorIAorICAgaWZlbHNlKFskMV0sICwgWworQEAgLTMwLDEwMCArMzEsMTAgQEAgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgICBJTkNYTUw9CisgICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYnhtbDIsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCistICAgICAgICBnbF9jdl9saWJ4bWw9bm8KKy0gICAgICAgIGdsX2N2X0xJQlhNTD0KKy0gICAgICAgIGdsX2N2X0xUTElCWE1MPQorLSAgICAgICAgZ2xfY3ZfSU5DWE1MPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYnhtbDIgYW5kIGRlZmluZSBMSUJYTUwyLCBMVExJQlhNTDIgYW5kIElOQ1hNTDIKKy0gICAgICAgIGRubCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCistICAgICAgICBkbmwgbGlieG1sMiBpcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgdXNlcyBvZiB4bWxGcmVlIHdvcmsgZmluZSB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IGJ1dCBsZWFkIHRvIGEgbGluayBlcnJvciB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbeG1sMl0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgIF0sCistICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DWE1MMiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSIkSU5DWE1MMiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvbGlieG1sMi4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjYsIGl0IGluY2x1ZGVzIDxsaWJ4bWwveG1sZXhwb3J0cy5oPiB3aGljaCBpcworLSAgICAgICAgICAgIGRubCBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQorLSAgICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmg+XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0pCistICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgaWYgdGVzdCAteiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCistICAgICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaF0pCistICAgICAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sdmVyc2lvbl9oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbHZlcnNpb25cLmgkLCwnYAorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiICYmIHRlc3QgLWQgIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnhtbF0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGlieG1sID0geWVzOyB0aGVuCistICAgICAgICBMSUJYTUw9IiRnbF9jdl9MSUJYTUwiCistICAgICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgorLSAgICAgICAgSU5DWE1MPSIkZ2xfY3ZfSU5DWE1MIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKysgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbWE1MXSwgW2xpYnhtbC0yLjBdKQorKyAgICAgIExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBMVExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBJTkNYTUw9JFhNTF9DRkxBR1MKKyAgICAgZmkKKyAgIF0pCisgICBBQ19TVUJTVChbTElCWE1MXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDJjZmQ0YTguLmQ0MmM4YjQgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNAoraW5kZXggYmM1M2NjNi4uMTBiMjQ1NSAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK0BAIC0xLDk5ICsxLDM0IEBACistIyBsaWJjcm9jby5tNCBzZXJpYWwgMworLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmNyb2NvLm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTcpCisrZG5sIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJDUk9DTworLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorLWRubCBnbF9MSUJDUk9DTyhGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliY3JvY28uCisgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKKyBbCistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorLSAgICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKy0gIF0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCisrICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKyAKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCistICAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvICB1c2UgdGhlIGxpYmNyb2NvIGluY2x1ZGVkIGhlcmVdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkXSkKKy0gIF0sIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGliY3JvY28gaXMgcmVxdWVzdGVkXSkKKysgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCisgCisgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkNST0NPPQorICAgTFRMSUJDUk9DTz0KKyAgIElOQ0NST0NPPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmNyb2NvLTAuNiwgb3IgaGF2ZSB0bworLSAgICAgIGRubCB1c2UgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWworLSAgICAgICAgZ2xfY3ZfbGliY3JvY289bm8KKy0gICAgICAgIGdsX2N2X0xJQkNST0NPPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0lOQ0NST0NPPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKKy0gICAgICAgIGRubCBJTkNDUk9DT18wXzYgYWNjb3JkaW5nbHkuCistICAgICAgICBkbmwgRG9uJ3QgdXNlIGNyb2NvLTAuNi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtjcm9jby0wLjZdLCBbZ2xpYi0yLjBdKQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KKy0gICAgICAgICAgICBkbmwgL3Vzci9pbmNsdWRlL2xpYmNyb2NvLTAuNi9saWJjcm9jby4KKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaF0pCistICAgICAgICAgICAgICAgbGliY3JvY29faW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJjcm9jb18wXzZfbGliY3JvY29fbGliY3JvY29fY29uZmlnX2giIHwgc2VkIC1lICdzLC5saWJjcm9jby1jb25maWdcLmgkLCwnYAorLSAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgIGdsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iLUkkbGliY3JvY29faW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQorLSAgICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb10pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliY3JvY28gPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCistICAgICAgICBMVExJQkNST0NPPSIkZ2xfY3ZfTFRMSUJDUk9DTyIKKy0gICAgICAgIElOQ0NST0NPPSIkZ2xfY3ZfSU5DQ1JPQ08iCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPXllcworLSAgICAgIGZpCistICAgIGZpCistICBdKQorKyAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtDUk9DT10sIFtsaWJjcm9jby0wLjZdKQorKyAgICBMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBMVExJQkNST0NPPSRDUk9DT19MSUJTCisrICAgIElOQ0NST0NPPSRDUk9DT19DRkxBR1MKKysgIGZpCisgICBBQ19TVUJTVChbTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0xUTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0lOQ0NST0NPXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKK2luZGV4IGJlZjZmYTMuLjg4NDE3NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAorQEAgLTEsMTA1ICsxLDMxIEBACistIyBsaWJnbGliLm00IHNlcmlhbCA0CistZG5sIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgbGliZ2xpYi5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJHTElCCistZG5sICAgZ2l2ZXMgdGhlIHVzZXIgdGhlIG9wdGlvbiB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIGluY2x1ZGVkIG9yCistZG5sICAgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKy1kbmwgZ2xfTElCR0xJQihGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKyBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCisgWworLSAgaWZlbHNlKFskMV0sICwgWworLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkIgorICAgTElCR0xJQj0KKyAgIExUTElCR0xJQj0KKyAgIElOQ0dMSUI9CistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJnbGliLTIuMCwgb3IgaGF2ZSB0byB1c2UKKy0gICAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCistICAgICAgICBnbF9jdl9saWJnbGliPW5vCistICAgICAgICBnbF9jdl9MSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfSU5DR0xJQj0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAorLSAgICAgICAgZG5sIElOQ0dMSUJfMl8wIGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBnbGliLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKKy0gICAgICAgICAgICBkbmwgYW5kIC91c3IvbGliL2dsaWItMi4wL2luY2x1ZGUuCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJExJQkdMSUJfMl8wX1BSRUZJWCI7IHRoZW4KKy0gICAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgICAgZmkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgICAgXSkKKy0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnbGliXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliZ2xpYiA9IHllczsgdGhlbgorLSAgICAgICAgTElCR0xJQj0iJGdsX2N2X0xJQkdMSUIiCistICAgICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCistICAgICAgICBJTkNHTElCPSIkZ2xfY3ZfSU5DR0xJQiIKKy0gICAgICBlbHNlCistICAgICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTElCXSwgW2dsaWItMi4wXSkKKysgICAgTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgTFRMSUJHTElCPSIkR0xJQl9MSUJTIgorKyAgICBJTkNHTElCPSIkR0xJQl9DRkxBR1MiCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkdMSUJdKQorICAgQUNfU1VCU1QoW0xUTElCR0xJQl0pCisgICBBQ19TVUJTVChbSU5DR0xJQl0pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCBiL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliY3JvY28ubTQKK2luZGV4IGJjNTNjYzYuLjEwYjI0NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CitAQCAtMSw5OSArMSwzNCBAQAorLSMgbGliY3JvY28ubTQgc2VyaWFsIDMKKy1kbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBsaWJjcm9jby5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCQ1JPQ08KKy1kbmwgICBnaXZlcyB0aGUgdXNlciB0aGUgb3B0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgaW5jbHVkZWQgb3IKKy1kbmwgICBhbiBleHRlcm5hbCBsaWJjcm9jby4KKy1kbmwgZ2xfTElCQ1JPQ08oRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KKy0gICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCistICBdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorKyAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCistICBpZmVsc2UoWyQxXSwgLCBbCistICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJjcm9jbyBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gIHVzZSB0aGUgbGliY3JvY28gaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCisrICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQiCisgICBMSUJDUk9DTz0KKyAgIExUTElCQ1JPQ089CisgICBJTkNDUk9DTz0KKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KKy0gICAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCistICAgICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0xUTElCQ1JPQ089CistICAgICAgICBnbF9jdl9JTkNDUk9DTz0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCistICAgICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCistICAgICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCistICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQorLSAgICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgorLSAgICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCistICAgICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtJTkNDUk9DT10pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CitpbmRleCBiZWY2ZmEzLi44ODQxNzU1IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmdsaWIubTQKK0BAIC0xLDEwNSArMSwzMSBAQAorLSMgbGliZ2xpYi5tNCBzZXJpYWwgNAorLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmdsaWIubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xNykKKytkbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCR0xJQgorLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmdsaWIuCistZG5sIGdsX0xJQkdMSUIoRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmdsaWIuCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKy0gICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorLSAgXSwgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorKyAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorKyAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkXSkKKyAKKyAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkdMSUI9CisgICBMVExJQkdMSUI9CisgICBJTkNHTElCPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWworLSAgICAgICAgZ2xfY3ZfbGliZ2xpYj1ubworLSAgICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0xUTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0lOQ0dMSUI9CistICAgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKKy0gICAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCistICAgICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgorLSAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgorLSAgICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKy0gICAgZmkKKy0gIF0pCisrICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorKyAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorICAgQUNfU1VCU1QoW0lOQ0dMSUJdKQorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK2luZGV4IDM2NzViNWYuLjgxMWU1NDYgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0uYworKysrIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK0BAIC0yOCwxNSArMjgsMTUgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgCistI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgorLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+CistI2luY2x1ZGUgPGNyLXN0eWxlLmg+CistI2luY2x1ZGUgPGNyLXJnYi5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KKyAvKiA8Y3ItZm9udHMuaD4gaGFzIGEgYnJva2VuIGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQgaW4gbGliY3JvY28tMC42LjEuICAqLworICNpZm5kZWYgX19DUl9GT05UU19IX18KKy0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+CisrIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CisgCisgI2luY2x1ZGUgInRlcm0tb3N0cmVhbS5oIgorICNpbmNsdWRlICJoYXNoLmgiCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworaW5kZXggMmNmZDRhOC4uZDQyYzhiNCAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCisrKysgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZWYyYTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1bUEFUQ0hdIERpc2FibGUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKLQotUmVtb3ZlIHRoZSB0ZXN0ICJUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOgotTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzIHByb3ZpZGVkIgotc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBIUC1VWCBhbmQgaWYgdGhlIGV1Yy1qcCBpcyBub3QKLWluc3RhbGxlZCBvbiB0aGUgaG9zdCwgdGhlIGRlcGVuZGVuY2Ugd2lsbCBiZSBidWlsdCB3aXRob3V0Ci1pY29udiBzdXBwb3J0IGFuZCB3aWxsIGNhdXNlIGd1aWxlLW5hdGl2ZSBidWlsZGluZyBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpY29udi5tNCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pY29udi5tNCBiL2ljb252Lm00Ci1pbmRleCA0ZTM3MzYzLi4zNWY1NGJkIDEwMDY0NAotLS0tIGEvaWNvbnYubTQKLSsrKyBiL2ljb252Lm00Ci1AQCAtMTY1LDYgKzE2NSw3IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKLSAgICAgICB9Ci0gICB9Ci0gI2VuZGlmCi0rI2lmIDAKLSAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwotICAgICAgcHJvdmlkZWQuICAqLwotICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotQEAgLTE3Niw2ICsxNzcsNyBAQCBBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCi0gICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLSAgICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0gICAgIHJlc3VsdCB8PSAxNjsKLSsjZW5kaWYKLSAgIHJldHVybiByZXN1bHQ7Ci0gXV0pXSwKLSAgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhjMjkzZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KLSMgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwNywgMjAwOS0yMDEwIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PgotIwotIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKLSMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCi0jIHdpdGhvdXQgYW55IHdhcnJhbnR5LgotIwotIyBPcmlnaW46IGdldHRleHQtMC4xOS44Ci1HRVRURVhUX01BQ1JPX1ZFUlNJT04gPSAwLjE5Ci0KLVBBQ0tBR0UgPSBAUEFDS0FHRUAKLVZFUlNJT04gPSBAVkVSU0lPTkAKLVBBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAotCi1TRUQgPSBAU0VEQAotU0hFTEwgPSAvYmluL3NoCi1AU0VUX01BS0VACi0KLXNyY2RpciA9IEBzcmNkaXJACi10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACi1WUEFUSCA9IEBzcmNkaXJACi0KLXByZWZpeCA9IEBwcmVmaXhACi1leGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAotZGF0YWRpciA9IEBkYXRhZGlyQAotbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLWdldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvcG8KLQotSU5TVEFMTCA9IEBJTlNUQUxMQAotSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLQotIyBXZSB1c2UgJChta2Rpcl9wKS4KLSMgSW4gYXV0b21ha2UgPD0gMS45LngsICQobWtkaXJfcCkgaXMgZGVmaW5lZCBlaXRoZXIgYXMgIm1rZGlyIC1wIC0tIiBvciBhcwotIyAiJChta2luc3RhbGxkaXJzKSIgb3IgYXMgIiQoaW5zdGFsbF9zaCkgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UgdmVyc2lvbnMsCi0jIEBpbnN0YWxsX3NoQCBkb2VzIG5vdCBzdGFydCB3aXRoICQoU0hFTEwpLCBzbyB3ZSBhZGQgaXQuCi0jIEluIGF1dG9tYWtlID49IDEuMTAsIEBta2Rpcl9wQCBpcyBkZXJpdmVkIGZyb20gJHtNS0RJUl9QfSwgd2hpY2ggaXMgZGVmaW5lZAotIyBlaXRoZXIgYXMgIi9wYXRoL3RvL21rZGlyIC1wIiBvciAiLi4uL2luc3RhbGwtc2ggLWMgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UKLSMgdmVyc2lvbnMsICQobWtpbnN0YWxsZGlycykgYW5kICQoaW5zdGFsbF9zaCkgYXJlIHVudXNlZC4KLW1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAgLWQKLWluc3RhbGxfc2ggPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAKLU1LRElSX1AgPSBATUtESVJfUEAKLW1rZGlyX3AgPSBAbWtkaXJfcEAKLQotIyBXaGVuIGJ1aWxkaW5nIGdldHRleHQtdG9vbHMsIHdlIHByZWZlciB0byB1c2UgdGhlIGJ1aWx0IHByb2dyYW1zCi0jIHJhdGhlciB0aGFuIGluc3RhbGxlZCBwcm9ncmFtcy4gIEhvd2V2ZXIsIHdlIGNhbid0IGRvIHRoYXQgd2hlbiB3ZQotIyBhcmUgY3Jvc3MgY29tcGlsaW5nLgotQ1JPU1NfQ09NUElMSU5HID0gQENST1NTX0NPTVBJTElOR0AKLQotR01TR0ZNVF8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfbm8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfeWVzID0gQEdNU0dGTVRfMDE1QAotR01TR0ZNVCA9ICQoR01TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKLU1TR0ZNVF8gPSBATVNHRk1UQAotTVNHRk1UX25vID0gQE1TR0ZNVEAKLU1TR0ZNVF95ZXMgPSBATVNHRk1UXzAxNUAKLU1TR0ZNVCA9ICQoTVNHRk1UXyQoVVNFX01TR0NUWFQpKQotWEdFVFRFWFRfID0gQFhHRVRURVhUQAotWEdFVFRFWFRfbm8gPSBAWEdFVFRFWFRACi1YR0VUVEVYVF95ZXMgPSBAWEdFVFRFWFRfMDE1QAotWEdFVFRFWFQgPSAkKFhHRVRURVhUXyQoVVNFX01TR0NUWFQpKQotTVNHTUVSR0UgPSBtc2dtZXJnZQotTVNHTUVSR0VfVVBEQVRFID0gQE1TR01FUkdFQCAtLXVwZGF0ZQotTVNHSU5JVCA9IG1zZ2luaXQKLU1TR0NPTlYgPSBtc2djb252Ci1NU0dGSUxURVIgPSBtc2dmaWx0ZXIKLQotUE9GSUxFUyA9IEBQT0ZJTEVTQAotR01PRklMRVMgPSBAR01PRklMRVNACi1VUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACi1EVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAotRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAotJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKLURJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAotJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCi0kKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQotCi1QT1RGSUxFUyA9IFwKLQotQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACi0KLVBPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90Ci1QT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKLVBPRklMRVNERVBTX25vID0KLVBPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKLQotRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KLURJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKLURJU1RGSUxFU0RFUFNfbm8gPQotRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQotCi0jIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQotCi0uU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5wbyAuZ21vIC5tbyAuc2VkIC5zaW4gLm5vcCAucG8tY3JlYXRlIC5wby11cGRhdGUKLQotLnBvLm1vOgotCUBlY2hvICIkKE1TR0ZNVCkgLWMgLW8gJEAgJDwiOyBcCi0JJChNU0dGTVQpIC1jIC1vIHQtJEAgJDwgJiYgbXYgdC0kQCAkQAotCi0ucG8uZ21vOgotCUBsYW5nPWBlY2hvICQqIHwgc2VkIC1lICdzLC4qLywsJ2A7IFwKLQl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKLQllY2hvICIkJHtjZGNtZH1ybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLS12ZXJib3NlIC1vICQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyI7IFwKLQljZCAkKHNyY2RpcikgJiYgcm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyAmJiBtdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8KLQotLnNpbi5zZWQ6Ci0Jc2VkIC1lICcvXiMvZCcgJDwgPiB0LSRACi0JbXYgdC0kQCAkQAotCi0KLWFsbDogYWxsLUBVU0VfTkxTQAotCi1hbGwteWVzOiBzdGFtcC1wbwotYWxsLW5vOgotCi0jIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KLUNIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCi0JdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAotCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAotCSAgICAgICBleGl0IDE7IFwKLQkgICAgIH0KLQotIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KLSMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKLSMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAotIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCi0jIEluIHRoaXMgY2FzZSwgc3RhbXAtcG8gaXMgYSBub3AgKGkuZS4gYSBwaG9ueSB0YXJnZXQpLgotCi0jIHN0YW1wLXBvIGlzIGEgdGltZXN0YW1wIGRlbm90aW5nIHRoZSBsYXN0IHRpbWUgYXQgd2hpY2ggdGhlIENBVEFMT0dTIGhhdmUKLSMgYmVlbiBsb29zZWx5IHVwZGF0ZWQuIEl0cyBwdXJwb3NlIGlzIHRoYXQgd2hlbiBhIGRldmVsb3BlciBvciB0cmFuc2xhdG9yCi0jIGNoZWNrcyBvdXQgdGhlIHBhY2thZ2UgdmlhIENWUywgYW5kIHRoZSAkKERPTUFJTikucG90IGZpbGUgaXMgbm90IGluIENWUywKLSMgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZCB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50Ci0jIGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkKLSMgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IKLSMgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2ggZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlCi0jIGNoYW5nZWQuCi1zdGFtcC1wbzogJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKLQlAJChDSEVDS19NQUNST19WRVJTSU9OKQotCXRlc3QgISAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCBcCi0JICB0ZXN0IC16ICIkKEdNT0ZJTEVTKSIgfHwgJChNQUtFKSAkKEdNT0ZJTEVTKQotCUB0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgeyBcCi0JICBlY2hvICJ0b3VjaCBzdGFtcC1wbyIgJiYgXAotCSAgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1wb1QgJiYgXAotCSAgbXYgc3RhbXAtcG9UIHN0YW1wLXBvOyBcCi0JfQotCi0jIE5vdGU6IFRhcmdldCAnYWxsJyBtdXN0IG5vdCBkZXBlbmQgb24gdGFyZ2V0ICckKERPTUFJTikucG90LXVwZGF0ZScsCi0jIG90aGVyd2lzZSBwYWNrYWdlcyBsaWtlIEdDQyBjYW4gbm90IGJlIGJ1aWx0IGlmIG9ubHkgcGFydHMgb2YgdGhlIHNvdXJjZQotIyBoYXZlIGJlZW4gZG93bmxvYWRlZC4KLQotIyBUaGlzIHRhcmdldCByZWJ1aWxkcyAkKERPTUFJTikucG90OyBpdCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uLgotIyBOb3RlIHRoYXQgJChET01BSU4pLnBvdCBpcyBub3QgdG91Y2hlZCBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hhbmdlZC4KLSMgVGhlIGRldGVybWluYXRpb24gb2Ygd2hldGhlciB0aGUgcGFja2FnZSB4eXogaXMgYSBHTlUgb25lIGlzIGJhc2VkIG9uIHRoZQotIyBoZXVyaXN0aWMgd2hldGhlciBzb21lIGZpbGUgaW4gdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgbWVudGlvbnMgIkdOVSB4eXoiLgotIyBJZiBHTlUgJ2ZpbmQnIGlzIGF2YWlsYWJsZSwgd2UgYXZvaWQgZ3JlcHBpbmcgdGhyb3VnaCBtb25zdGVyIGZpbGVzLgotJChET01BSU4pLnBvdC11cGRhdGU6ICQoUE9URklMRVMpICQoc3JjZGlyKS9QT1RGSUxFUy5pbiByZW1vdmUtcG90Y2RhdGUuc2VkCi0JcGFja2FnZV9nbnU9IiQoUEFDS0FHRV9HTlUpIjsgXAotCXRlc3QgLW4gIiQkcGFja2FnZV9nbnUiIHx8IHsgXAotCSAgaWYgeyBpZiAoTENfQUxMPUMgZmluZCAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwgZ3JlcCBHTlUgPi9kZXYvbnVsbDsgdGhlbiBcCi0JCSBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiBcCi0JCQkgICAgICAgLXNpemUgLTEwMDAwMDAwYyAtZXhlYyBncmVwICdHTlUgQFBBQ0tBR0VAJyBcCi0JCQkgICAgICAgL2Rldi9udWxsICd7fScgJzsnIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGVsc2UgXAotCQkgTENfQUxMPUMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgJCh0b3Bfc3JjZGlyKS8qIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGZpOyBcCi0JICAgICB9IHwgZ3JlcCAtdiAnbGlidG9vbDonID4vZGV2L251bGw7IHRoZW4gXAotCSAgICAgcGFja2FnZV9nbnU9eWVzOyBcCi0JICAgZWxzZSBcCi0JICAgICBwYWNrYWdlX2dudT1ubzsgXAotCSAgIGZpOyBcCi0JfTsgXAotCWlmIHRlc3QgIiQkcGFja2FnZV9nbnUiID0gInllcyI7IHRoZW4gXAotCSAgcGFja2FnZV9wcmVmaXg9J0dOVSAnOyBcCi0JZWxzZSBcCi0JICBwYWNrYWdlX3ByZWZpeD0nJzsgXAotCWZpOyBcCi0JaWYgdGVzdCAtbiAnJChNU0dJRF9CVUdTX0FERFJFU1MpJyB8fCB0ZXN0ICckKFBBQ0tBR0VfQlVHUkVQT1JUKScgPSAnQCdQQUNLQUdFX0JVR1JFUE9SVCdAJzsgdGhlbiBcCi0JICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoTVNHSURfQlVHU19BRERSRVNTKSc7IFwKLQllbHNlIFwKLQkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChQQUNLQUdFX0JVR1JFUE9SVCknOyBcCi0JZmk7IFwKLQljYXNlIGAkKFhHRVRURVhUKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTVdIHwgMC4xWzAtNV0uKiB8IDAuMTYgfCAwLjE2LlswLTFdKikgXAotCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKLQkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAotCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAotCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAotCSAgICAgIC0tbXNnaWQtYnVncy1hZGRyZXNzPSIkJG1zZ2lkX2J1Z3NfYWRkcmVzcyIgXAotCSAgICA7OyBcCi0JICAqKSBcCi0JICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAotCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCi0JICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCi0JICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCi0JICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAotCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKLQkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKLQkgICAgOzsgXAotCWVzYWMKLQl0ZXN0ICEgLWYgJChET01BSU4pLnBvIHx8IHsgXAotCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXI7IHRoZW4gXAotCSAgICBzZWQgLWUgJzEsL14jJCQvZCcgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMXBvICYmIFwKLQkgICAgY2F0ICQoc3JjZGlyKS8kKERPTUFJTikucG90LWhlYWRlciAkKERPTUFJTikuMXBvID4gJChET01BSU4pLnBvOyBcCi0JICAgIHJtIC1mICQoRE9NQUlOKS4xcG87IFwKLQkgIGZpOyBcCi0JICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKLQkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAotCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAotCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0JICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAotCSAgICBlbHNlIFwKLQkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAotCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgICBmaTsgXAotCSAgZWxzZSBcCi0JICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgZmk7IFwKLQl9Ci0KLSMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKLSMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KLSMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCi0kKHNyY2RpcikvJChET01BSU4pLnBvdDoKLQkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCi0KLSMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCi0jIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCi0kKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzLC4qLywsJyAtZSAncy9cLnBvJCQvLydgOyBcCi0JaWYgdGVzdCAtZiAiJChzcmNkaXIpLyQke2xhbmd9LnBvIjsgdGhlbiBcCi0JICB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKLQkgIHRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAotCSAgZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQke2xhbmd9ICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3QiOyBcCi0JICBjZCAkKHNyY2RpcikgXAotCSAgICAmJiB7IGNhc2UgYCQoTVNHTUVSR0UpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAotCSAgICAgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICAgICAgICAqKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAgIGVzYWM7IFwKLQkgICAgICAgfTsgXAotCWVsc2UgXAotCSAgJChNQUtFKSAkJHtsYW5nfS5wby1jcmVhdGU7IFwKLQlmaQotCi0KLWluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKLWluc3RhbGwtZXhlYzoKLWluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLQkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAotCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotCSAgZG9uZTsgXAotCSAgZm9yIGZpbGUgaW4gTWFrZXZhcnM7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0JICBkb25lOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsLWRhdGEtbm86IGFsbAotaW5zdGFsbC1kYXRhLXllczogYWxsCi0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKLQkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAotCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAotCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCi0JICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAotCSAgICBmaTsgXAotCSAgZG9uZTsgXAotCWRvbmUKLQotaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotCi1pbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCi1pbnN0YWxsZGlycy1leGVjOgotaW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsZGlycy1kYXRhLW5vOgotaW5zdGFsbGRpcnMtZGF0YS15ZXM6Ci0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgZmk7IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLSMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KLWluc3RhbGxjaGVjazoKLQotdW5pbnN0YWxsOiB1bmluc3RhbGwtZXhlYyB1bmluc3RhbGwtZGF0YQotdW5pbnN0YWxsLWV4ZWM6Ci11bmluc3RhbGwtZGF0YTogdW5pbnN0YWxsLWRhdGEtQFVTRV9OTFNACi0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAotCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLQkgIGRvbmU7IFwKLQllbHNlIFwKLQkgIDogOyBcCi0JZmkKLXVuaW5zdGFsbC1kYXRhLW5vOgotdW5pbnN0YWxsLWRhdGEteWVzOgotCWNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBmb3IgbGMgaW4gTENfTUVTU0FHRVMgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLWNoZWNrOiBhbGwKLQotaW5mbyBkdmkgcHMgcGRmIGh0bWwgdGFncyBUQUdTIGN0YWdzIENUQUdTIElEOgotCi1tb3N0bHljbGVhbjoKLQlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCi0Jcm0gLWYgc3RhbXAtcG9UCi0Jcm0gLWYgY29yZSBjb3JlLiogJChET01BSU4pLnBvICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAqLm5ldy5wbwotCXJtIC1mciAqLm8KLQotY2xlYW46IG1vc3RseWNsZWFuCi0KLWRpc3RjbGVhbjogY2xlYW4KLQlybSAtZiBNYWtlZmlsZSBNYWtlZmlsZS5pbiBQT1RGSUxFUyAqLm1vCi0KLW1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgotCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCi0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotCXJtIC1mIHN0YW1wLXBvICQoR01PRklMRVMpCi0KLWRpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQotZGlzdCBkaXN0ZGlyOgotCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQotCUAkKE1BS0UpIGRpc3QyCi0jIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KLWRpc3QyOiBzdGFtcC1wbyAkKERJU1RGSUxFUykKLQlkaXN0cz0iJChESVNURklMRVMpIjsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIE1ha2V2YXJzLnRlbXBsYXRlIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyAkKERPTUFJTikucG90IHN0YW1wLXBvIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZyI7IFwKLQlmaTsgXAotCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZy4kJGk7IHRoZW4gXAotCSAgICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2cuJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvTElOR1VBUzsgdGhlbiBkaXN0cz0iJCRkaXN0cyBMSU5HVUFTIjsgZmk7IFwKLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgIGNwIC1wICQkZmlsZSAkKGRpc3RkaXIpIHx8IGV4aXQgMTsgXAotCSAgZWxzZSBcCi0JICAgIGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKLQkgIGZpOyBcCi0JZG9uZQotCi11cGRhdGUtcG86IE1ha2VmaWxlCi0JJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQotCXRlc3QgLXogIiQoVVBEQVRFUE9GSUxFUykiIHx8ICQoTUFLRSkgJChVUERBVEVQT0ZJTEVTKQotCSQoTUFLRSkgdXBkYXRlLWdtbwotCi0jIEdlbmVyYWwgcnVsZSBmb3IgY3JlYXRpbmcgUE8gZmlsZXMuCi0KLS5ub3AucG8tY3JlYXRlOgotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tY3JlYXRlJCQvLydgOyBcCi0JZWNobyAiRmlsZSAkJGxhbmcucG8gZG9lcyBub3QgZXhpc3QuIElmIHlvdSBhcmUgYSB0cmFuc2xhdG9yLCB5b3UgY2FuIGNyZWF0ZSBpdCB0aHJvdWdoICdtc2dpbml0Jy4iIDE+JjI7IFwKLQlleGl0IDEKLQotIyBHZW5lcmFsIHJ1bGUgZm9yIHVwZGF0aW5nIFBPIGZpbGVzLgotCi0ubm9wLnBvLXVwZGF0ZToKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLXVwZGF0ZSQkLy8nYDsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiICYmIHRlc3QgIiQoQ1JPU1NfQ09NUElMSU5HKSIgIT0gInllcyI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBmaTsgXAotCXRtcGRpcj1gcHdkYDsgXAotCWVjaG8gIiQkbGFuZzoiOyBcCi0JdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCi0JY2QgJChzcmNkaXIpOyBcCi0JaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAqKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICBlc2FjOyBcCi0JICAgfTsgdGhlbiBcCi0JICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLQkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCSAgZWxzZSBcCi0JICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKLQkgICAgICA6OyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgZmk7IFwKLQllbHNlIFwKLQkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAotCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCWZpCi0KLSQoRFVNTVlQT0ZJTEVTKToKLQotdXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKLQlAOgotCi0jIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKLSMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KLSMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cwotIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCi1NYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAotCWNkICQodG9wX2J1aWxkZGlyKSBcCi0JICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKLQotZm9yY2U6Ci0KLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCi0jIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3ogYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2FjbG9jYWwudGd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjJkMWY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODE4M2ZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNjg0ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCBzZXQgb2YgdmFyaWFibGVzLCBkZXNjcmliaW5nIGhvdyB0byBzZXQgdGhlCi0jIHJ1biB0aW1lIHNlYXJjaCBwYXRoIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW4gYW4gZXhlY3V0YWJsZS4KLSMKLSMgICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIwotIyAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi0jICAgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0jICAgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0jCi0jIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQotIyBvcgotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDQywgR0NDLCBMREZMQUdTLCBMRCwgd2l0aF9nbnVfbGQKLSMgc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLgotIwotIyBUaGUgc2V0IG9mIGRlZmluZWQgdmFyaWFibGVzIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBzY3JpcHQuCi0KLSMgS25vd24gbGltaXRhdGlvbnM6Ci0jIC0gT24gSVJJWCA2LjUgd2l0aCBDQz0iY2MiLCB0aGUgcnVuIHRpbWUgc2VhcmNoIHBhdGNoIG11c3Qgbm90IGJlIGxvbmdlcgotIyAgIHRoYW4gMjU2IGJ5dGVzLCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGR1bXAgY29yZS4gVGhlIG9ubHkKLSMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCi0jICAgZGlyZWN0b3J5IGFuZC9vciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLQotIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi0jIHdoaWNoIG5lZWRzICcubGliJykuCi1saWJleHQ9YQotc2hyZXh0PS5zbwotCi1ob3N0PSIkMSIKLWhvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotaG9zdF92ZW5kb3I9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi1ob3N0X29zPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NDX0JBU0VOQU1FLgotCi1mb3IgY2NfdGVtcCBpbiAkQ0MiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1xcL11jb21waWxlIHwgY2NhY2hlIHwgKltcXC9dY2NhY2hlICkgOzsKLSAgICBkaXN0Y2MgfCAqW1xcL11kaXN0Y2MgfCBwdXJpZnkgfCAqW1xcL11wdXJpZnkgKSA7OwotICAgIFwtKikgOzsKLSAgICAqKSBicmVhazs7Ci0gIGVzYWMKLWRvbmUKLWNjX2Jhc2VuYW1lPWBlY2hvICIkY2NfdGVtcCIgfCBzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DT01QSUxFUl9QSUMuCi0KLXdsPQotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgd2w9Jy1XbCwnCi1lbHNlCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgIGFpeCopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKLSAgICAgIDs7Ci0gICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBlY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIGljYyogfCBpZm9ydCopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbGY5NSopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbmFnZm9yKikKLSAgICAgICAgICB3bD0nLVdsLC1XbCwsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjb21vKQotICAgICAgICAgIHdsPSctbG9wdD0nCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgICAgICAgICAgICpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKLSAgICAgICAgICAgICAgd2w9Ci0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqU3VuXCBDKikKLSAgICAgICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgZXNhYwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIG5ld3NvczYpCi0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICByZG9zKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gICAgICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSAgICAgICAgICA7OwotICAgICAgICAqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICB3bD0nLVFvcHRpb24gbGQgJwotICAgICAgOzsKLSAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgc3lzdjQqTVAqKQotICAgICAgOzsKLSAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHVuaWNvcyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICA7OwotICBlc2FjCi1maQotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0xJTktFUl9TSExJQlMuCi0KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci1oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotaGFyZGNvZGVfZGlyZWN0PW5vCi1oYXJkY29kZV9taW51c19MPW5vCi0KLWNhc2UgIiRob3N0X29zIiBpbgotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgIyBGSVhNRTogdGhlIE1TVkMrKyBwb3J0IGhhc24ndCBiZWVuIHRlc3RlZCBpbiBhIGxvb29vbmcgdGltZQotICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgIHdpdGhfZ251X2xkPW5vCi0gICAgZmkKLSAgICA7OwotICBpbnRlcml4KikKLSAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQotICAgIHdpdGhfZ251X2xkPXllcwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIHdpdGhfZ251X2xkPW5vCi0gICAgOzsKLWVzYWMKLQotbGRfc2hsaWJzPXllcwotaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQotICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KLSAgIyBoZXJlIGFsbG93cyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVjZXNzYXJ5LgotICAjIFVubGlrZSBsaWJ0b29sLCB3ZSB1c2UgLXJwYXRoIGhlcmUsIG5vdCAtLXJwYXRoLCBzaW5jZSB0aGUgZG9jdW1lbnRlZAotICAjIG9wdGlvbiBvZiBHTlUgbGQgaXMgY2FsbGVkIC1ycGF0aCwgbm90IC0tcnBhdGguCi0gIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgYWl4WzMtOV0qKQotICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBiZW9zKikKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaGFpa3UqKQotICAgICAgOzsKLSAgICBpbnRlcml4WzMtOV0qKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgOzsKLSAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgbmV0YnNkKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQotICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCi0gICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMVswLTVdLiopCi0gICAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1ycGF0aCwkbGliZGlyYCcKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgICAgICBmaQotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgICopCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICBlc2FjCi0gIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KLSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotICBmaQotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAgICBhaXgzKikKLSAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCi0gICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICAgIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0gICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgotICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFpeFs0LTldKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKLSAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0gICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSAgICAgIGVsc2UKLSAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwotICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKLSAgICAgICAgIyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGluIExERkxBR1MsIHdlCi0gICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeFs1LTldKikKLSAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gICAgICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCi0gICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmaQotICAgICAgICAgIGRvbmUKLSAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCi0gICAgICAgICAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAotICAgICAgICAgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKLSAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKLSAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKLSAgICAgICAgICAgIDoKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotICAgICAgICAgIGZpCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgICMgQmVnaW4gX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYwotICAgICAgJHtDQ30gJHtMREZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Ci0gICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci19J2AKLSAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotfSdgCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKLSAgICAgIGZpCi0gICAgICBybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Ci0gICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBmaQotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBic2RpWzQ1XSopCi0gICAgICA7OwotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0gICAgICBsaWJleHQ9bGliCi0gICAgICA7OwotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSAgICAgIGlmIHsgY2FzZSAkY2NfYmFzZW5hbWUgaW4gaWZvcnQqKSB0cnVlOzsgKikgdGVzdCAiJEdDQyIgPSB5ZXM7OyBlc2FjOyB9OyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBkZ3V4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgZnJlZWJzZDIuWzAxXSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgIGhwdXg5KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICAgICAgICA7OwotICAgICAgICAgICopCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICBuZXRic2QqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICBuZXdzb3M2KQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9wZW5ic2QqKQotICAgICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICBlbHNlCi0gICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAgICBvcGVuYnNkWzAxXS4qIHwgb3BlbmJzZDIuWzAtN10gfCBvcGVuYnNkMi5bMC03XS4qKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLSAgICAgICAgZmkKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBvczIqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgb3NmMyopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgIDs7Ci0gICAgb3NmNCogfCBvc2Y1KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGVsc2UKLSAgICAgICAgIyBCb3RoIGNjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgc3lzdjQpCi0gICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgotICAgICAgICBzbmkpCi0gICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KLSAgICAgICAgICA7OwotICAgICAgICBzaWVtZW5zKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgICAgIDs7Ci0gICAgICAgIG1vdG9yb2xhKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgc3lzdjQuMyopCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLSAgICAgICAgbGRfc2hsaWJzPXllcwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuWzAxXS5bMTBdKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLlswMjRdKikKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICA7OwotICAgICopCi0gICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIDs7Ci0gIGVzYWMKLWZpCi0KLSMgQ2hlY2sgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX1NZU19EWU5BTUlDX0xJTktFUi4KLSMgVW5saWtlIGxpYnRvb2wubTQsIGhlcmUgd2UgZG9uJ3QgY2FyZSBhYm91dCBfYWxsXyBuYW1lcyBvZiB0aGUgbGlicmFyeSwgYnV0Ci0jIG9ubHkgYWJvdXQgdGhlIG9uZSB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4gVGhpcyBpcyB0aGUgbGFzdAotIyBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00LCBvciBwb3NzaWJseSB0d28gb2YgdGhlbSBpZiB0aGUKLSMgbGlua2VyIGhhcyBzcGVjaWFsIHNlYXJjaCBydWxlcy4KLWxpYnJhcnlfbmFtZXNfc3BlYz0gICAgICAjIHRoZSBsYXN0IGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQKLWxpYm5hbWVfc3BlYz0nbGliJG5hbWUnCi1jYXNlICIkaG9zdF9vcyIgaW4KLSAgYWl4MyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJwotICAgIDs7Ci0gIGFpeFs0LTldKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBhbWlnYW9zKikKLSAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICBwb3dlcnBjKikKLSAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnIDs7Ci0gICAgICBtNjhrKQotICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGJlb3MqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGJzZGlbNDVdKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hICRsaWJuYW1lLmxpYicKLSAgICA7OwotICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgIHNocmV4dD0uZHlsaWIKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBkZ3V4KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBmcmVlYnNkWzIzXS4qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZ251KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBoYWlrdSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgIGlhNjQqKQotICAgICAgICBzaHJleHQ9LnNvCi0gICAgICAgIDs7Ci0gICAgICBocHBhKjY0KikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgIGVzYWMKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBpbnRlcml4WzMtOV0qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICBpcml4NSogfCBub25zdG9wdXgqKQotICAgICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9Ci0gICAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICBjYXNlICRMRCBpbgotICAgICAgICAgICotMzJ8KiItMzIgInwqLW1lbGYzMmJzbWlwfCoiLW1lbGYzMmJzbWlwICIpIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKLSAgICAgICAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikgbGlic3VmZj02NCBzaGxpYnN1ZmY9NjQgOzsKLSAgICAgICAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKLSAgICA7OwotICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAga25ldGJzZCotZ251KQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG5ldGJzZCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgbmV3c29zNikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICAqbnRvKiB8ICpxbngqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBvczIqKQotICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCi0gICAgOzsKLSAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHJkb3MqKQotICAgIDs7Ci0gIHNvbGFyaXMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN1bm9zNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JwotICAgIDs7Ci0gIHN5c3Y0IHwgc3lzdjQuMyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgc3lzdjQqTVAqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHRwZiopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgdXRzNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLWVzYWMKLQotc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLWVzY2FwZWRfd2w9YGVjaG8gIlgkd2wiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLXNobGliZXh0PWBlY2hvICIkc2hyZXh0IiB8IHNlZCAtZSAncyxeXC4sLCdgCi1lc2NhcGVkX2xpYm5hbWVfc3BlYz1gZWNobyAiWCRsaWJuYW1lX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLWVzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjPWBlY2hvICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPWBlY2hvICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQotTENfQUxMPUMgc2VkIC1lICdzL15cKFthLXpBLVowLTlfXSpcKT0vYWNsX2N2X1wxPS8nIDw8RU9GCi0KLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLXdsPSIkZXNjYXBlZF93bCIKLQotIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCi1saWJleHQ9IiRsaWJleHQiCi0KLSMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KLXNobGliZXh0PSIkc2hsaWJleHQiCi0KLSMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCi1saWJuYW1lX3NwZWM9IiRlc2NhcGVkX2xpYm5hbWVfc3BlYyIKLQotIyBMaWJyYXJ5IG5hbWVzIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuCi1saWJyYXJ5X25hbWVzX3NwZWM9IiRlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYyIKLQotIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0jIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotCi0jIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBhdGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9kaXJlY3Q9IiRoYXJkY29kZV9kaXJlY3QiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9taW51c19MPSIkaGFyZGNvZGVfbWludXNfTCIKLQotRU9GCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzZjNDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBsaW5lIGluIHRoZSBoZWFkZXIgZW50cnkKLSMgZnJvbSBhIFBPVCBmaWxlLgotIwotIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCi0jIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLS9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKLXgKLSMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLXMvUC9QLwotdGEKLSMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgotZwotZAotYmIKLTphCi0jIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgoteAotOmIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL0NPUFlJTkcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORwpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvQ09QWUlORwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9NYWtlZmlsZS5pbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGI2YWQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4KQEAgLTAsMCArMSw1MDMgQEAKKyMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+CisjIENvcHlyaWdodCAoQykgMjAwMC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCisjIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorIworIyBPcmlnaW46IGdldHRleHQtMC4yMAorR0VUVEVYVF9NQUNST19WRVJTSU9OID0gMC4yMAorCitQQUNLQUdFID0gQFBBQ0tBR0VACitWRVJTSU9OID0gQFZFUlNJT05ACitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKKworU0VEID0gQFNFREAKK1NIRUxMID0gL2Jpbi9zaAorQFNFVF9NQUtFQAorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAorCitwcmVmaXggPSBAcHJlZml4QAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L3BvCisKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisKKyMgV2UgdXNlICQobWtkaXJfcCkuCisjIEluIGF1dG9tYWtlIDw9IDEuOS54LCAkKG1rZGlyX3ApIGlzIGRlZmluZWQgZWl0aGVyIGFzICJta2RpciAtcCAtLSIgb3IgYXMKKyMgIiQobWtpbnN0YWxsZGlycykiIG9yIGFzICIkKGluc3RhbGxfc2gpIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlIHZlcnNpb25zLAorIyBAaW5zdGFsbF9zaEAgZG9lcyBub3Qgc3RhcnQgd2l0aCAkKFNIRUxMKSwgc28gd2UgYWRkIGl0LgorIyBJbiBhdXRvbWFrZSA+PSAxLjEwLCBAbWtkaXJfcEAgaXMgZGVyaXZlZCBmcm9tICR7TUtESVJfUH0sIHdoaWNoIGlzIGRlZmluZWQKKyMgZWl0aGVyIGFzICIvcGF0aC90by9ta2RpciAtcCIgb3IgIi4uLi9pbnN0YWxsLXNoIC1jIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlCisjIHZlcnNpb25zLCAkKG1raW5zdGFsbGRpcnMpIGFuZCAkKGluc3RhbGxfc2gpIGFyZSB1bnVzZWQuCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgQGluc3RhbGxfc2hAIC1kCitpbnN0YWxsX3NoID0gJChTSEVMTCkgQGluc3RhbGxfc2hACitNS0RJUl9QID0gQE1LRElSX1BACitta2Rpcl9wID0gQG1rZGlyX3BACisKKyMgV2hlbiBidWlsZGluZyBnZXR0ZXh0LXRvb2xzLCB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBidWlsdCBwcm9ncmFtcworIyByYXRoZXIgdGhhbiBpbnN0YWxsZWQgcHJvZ3JhbXMuICBIb3dldmVyLCB3ZSBjYW4ndCBkbyB0aGF0IHdoZW4gd2UKKyMgYXJlIGNyb3NzIGNvbXBpbGluZy4KK0NST1NTX0NPTVBJTElORyA9IEBDUk9TU19DT01QSUxJTkdACisKK0dNU0dGTVRfID0gQEdNU0dGTVRACitHTVNHRk1UX25vID0gQEdNU0dGTVRACitHTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKK0dNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCitYR0VUVEVYVF8gPSBAWEdFVFRFWFRACitYR0VUVEVYVF9ubyA9IEBYR0VUVEVYVEAKK1hHRVRURVhUX3llcyA9IEBYR0VUVEVYVF8wMTVACitYR0VUVEVYVCA9ICQoWEdFVFRFWFRfJChVU0VfTVNHQ1RYVCkpCitNU0dNRVJHRSA9IEBNU0dNRVJHRUAKK01TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKK01TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OID0gQE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OQAorTVNHSU5JVCA9IG1zZ2luaXQKK01TR0NPTlYgPSBtc2djb252CitNU0dGSUxURVIgPSBtc2dmaWx0ZXIKKworUE9GSUxFUyA9IEBQT0ZJTEVTQAorR01PRklMRVMgPSBAR01PRklMRVNACitVUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACitEVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAorRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAorJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKK0RJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAorJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCiskKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQorCitQT1RGSUxFUyA9IFwKKworQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACisKK1BPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90CitQT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKK1BPRklMRVNERVBTX25vID0KK1BPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKKworRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KK0RJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKK0RJU1RGSUxFU0RFUFNfbm8gPQorRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQorCisjIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5wbyAuZ21vIC5zZWQgLnNpbiAubm9wIC5wby1jcmVhdGUgLnBvLXVwZGF0ZQorCisjIFRoZSAucG90IGZpbGUsIHN0YW1wLXBvLCAucG8gZmlsZXMsIGFuZCAuZ21vIGZpbGVzIGFwcGVhciBpbiByZWxlYXNlIHRhcmJhbGxzLgorIyBUaGUgR05VIENvZGluZyBTdGFuZGFyZHMgc2F5IGluCisjIDxodHRwczovL3d3dy5nbnUub3JnL3ByZXAvc3RhbmRhcmRzL2h0bWxfbm9kZS9NYWtlZmlsZS1CYXNpY3MuaHRtbD46CisjICAgIkdOVSBkaXN0cmlidXRpb25zIHVzdWFsbHkgY29udGFpbiBzb21lIGZpbGVzIHdoaWNoIGFyZSBub3Qgc291cmNlIGZpbGVzCisjICAgIC4uLiAuIFNpbmNlIHRoZXNlIGZpbGVzIG5vcm1hbGx5IGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhleQorIyAgICBzaG91bGQgYWx3YXlzIGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgbm90IGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCisjICAgIFNvIE1ha2VmaWxlIHJ1bGVzIHRvIHVwZGF0ZSB0aGVtIHNob3VsZCBwdXQgdGhlIHVwZGF0ZWQgZmlsZXMgaW4gdGhlCisjICAgIHNvdXJjZSBkaXJlY3RvcnkuIgorIyBUaGVyZWZvcmUgd2UgcHV0IHRoZXNlIGZpbGVzIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCBub3QgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworIyBEdXJpbmcgLnBvIC0+IC5nbW8gY29udmVyc2lvbiwgdGFrZSBpbnRvIGFjY291bnQgdGhlIG1vc3QgcmVjZW50IGNoYW5nZXMgdG8KKyMgdGhlIC5wb3QgZmlsZS4gVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIHRvIHVwZGF0ZSB0aGUgLnBvIGZpbGVzIHdoZW4gdGhlCisjIC5wb3QgZmlsZSBoYXMgY2hhbmdlZCwgd2hpY2ggd291bGQgYmUgdHJvdWJsZXNvbWUgaWYgdGhlIC5wbyBmaWxlcyBhcmUgcHV0CisjIHVuZGVyIHZlcnNpb24gY29udHJvbC4KKy5wby5nbW86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQGxhbmc9YGVjaG8gJCogfCBzZWQgLWUgJ3MsLiovLCwnYDsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfXJtIC1mICQke2xhbmd9LmdtbyAmJiAkKE1TR01FUkdFKSAkKE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OKSAtbyAkJHtsYW5nfS4xcG8gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gJCR7bGFuZ30uZ21vICQke2xhbmd9LjFwbyAmJiBybSAtZiAkJHtsYW5nfS4xcG8iOyBcCisJY2QgJChzcmNkaXIpICYmIFwKKwlybSAtZiAkJHtsYW5nfS5nbW8gJiYgXAorCSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT04pIC1vICQke2xhbmd9LjFwbyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90ICYmIFwKKwkkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uMXBvICYmIFwKKwltdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8gJiYgXAorCXJtIC1mICQke2xhbmd9LjFwbworCisuc2luLnNlZDoKKwlzZWQgLWUgJy9eIy9kJyAkPCA+IHQtJEAKKwltdiB0LSRAICRACisKKworYWxsOiBhbGwtQFVTRV9OTFNACisKK2FsbC15ZXM6ICQoc3JjZGlyKS9zdGFtcC1wbworYWxsLW5vOgorCisjIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KK0NIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCisJdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAorCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAorCSAgICAgICBleGl0IDE7IFwKKwkgICAgIH0KKworIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KKyMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKKyMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAorIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCisjIEluIHRoaXMgY2FzZSwgJChzcmNkaXIpL3N0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KKworIyAkKHNyY2Rpcikvc3RhbXAtcG8gaXMgYSB0aW1lc3RhbXAgZGVub3RpbmcgdGhlIGxhc3QgdGltZSBhdCB3aGljaCB0aGUgQ0FUQUxPR1MKKyMgaGF2ZSBiZWVuIGxvb3NlbHkgdXBkYXRlZC4gSXRzIHB1cnBvc2UgaXMgdGhhdCB3aGVuIGEgZGV2ZWxvcGVyIG9yIHRyYW5zbGF0b3IKKyMgY2hlY2tzIG91dCB0aGUgcGFja2FnZSBmcm9tIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgYW5kIHRoZSAkKERPTUFJTikucG90CisjIGZpbGUgaXMgbm90IHVuZGVyIHZlcnNpb24gY29udHJvbCwgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZAorIyB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMKKyMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cworIyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2gKKyMgZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKHNyY2Rpcikvc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKKwl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAorCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKKwlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAorCSAgZWNobyAidG91Y2ggJChzcmNkaXIpL3N0YW1wLXBvIiAmJiBcCisJICBlY2hvIHRpbWVzdGFtcCA+ICQoc3JjZGlyKS9zdGFtcC1wb1QgJiYgXAorCSAgbXYgJChzcmNkaXIpL3N0YW1wLXBvVCAkKHNyY2Rpcikvc3RhbXAtcG87IFwKKwl9CisKKyMgTm90ZTogVGFyZ2V0ICdhbGwnIG11c3Qgbm90IGRlcGVuZCBvbiB0YXJnZXQgJyQoRE9NQUlOKS5wb3QtdXBkYXRlJywKKyMgb3RoZXJ3aXNlIHBhY2thZ2VzIGxpa2UgR0NDIGNhbiBub3QgYmUgYnVpbHQgaWYgb25seSBwYXJ0cyBvZiB0aGUgc291cmNlCisjIGhhdmUgYmVlbiBkb3dubG9hZGVkLgorCisjIFRoaXMgdGFyZ2V0IHJlYnVpbGRzICQoRE9NQUlOKS5wb3Q7IGl0IGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uCisjIE5vdGUgdGhhdCAkKERPTUFJTikucG90IGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorIyBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHRoZSBwYWNrYWdlIHh5eiBpcyBhIEdOVSBvbmUgaXMgYmFzZWQgb24gdGhlCisjIGhldXJpc3RpYyB3aGV0aGVyIHNvbWUgZmlsZSBpbiB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSBtZW50aW9ucyAiR05VIHh5eiIuCisjIElmIEdOVSAnZmluZCcgaXMgYXZhaWxhYmxlLCB3ZSBhdm9pZCBncmVwcGluZyB0aHJvdWdoIG1vbnN0ZXIgZmlsZXMuCiskKERPTUFJTikucG90LXVwZGF0ZTogJChQT1RGSUxFUykgJChzcmNkaXIpL1BPVEZJTEVTLmluIHJlbW92ZS1wb3RjZGF0ZS5zZWQKKwlwYWNrYWdlX2dudT0iJChQQUNLQUdFX0dOVSkiOyBcCisJdGVzdCAtbiAiJCRwYWNrYWdlX2dudSIgfHwgeyBcCisJICBpZiB7IGlmIChMQ19BTEw9QyBmaW5kIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCBncmVwIEdOVSA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgICBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiAtc2l6ZSAtMTAwMDAwMDBjIC1leGVjIGdyZXAgLWkgJ0dOVSBAUEFDS0FHRUAnIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAorCSAgICAgICBlbHNlIFwKKwkgICAgICAgICBMQ19BTEw9QyBncmVwIC1pICdHTlUgQFBBQ0tBR0VAJyAkKHRvcF9zcmNkaXIpLyogMj4vZGV2L251bGw7IFwKKwkgICAgICAgZmk7IFwKKwkgICAgIH0gfCBncmVwIC12ICdsaWJ0b29sOicgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICBwYWNrYWdlX2dudT15ZXM7IFwKKwkgICBlbHNlIFwKKwkgICAgIHBhY2thZ2VfZ251PW5vOyBcCisJICAgZmk7IFwKKwl9OyBcCisJaWYgdGVzdCAiJCRwYWNrYWdlX2dudSIgPSAieWVzIjsgdGhlbiBcCisJICBwYWNrYWdlX3ByZWZpeD0nR05VICc7IFwKKwllbHNlIFwKKwkgIHBhY2thZ2VfcHJlZml4PScnOyBcCisJZmk7IFwKKwlpZiB0ZXN0IC1uICckKE1TR0lEX0JVR1NfQUREUkVTUyknIHx8IHRlc3QgJyQoUEFDS0FHRV9CVUdSRVBPUlQpJyA9ICdAJ1BBQ0tBR0VfQlVHUkVQT1JUJ0AnOyB0aGVuIFwKKwkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChNU0dJRF9CVUdTX0FERFJFU1MpJzsgXAorCWVsc2UgXAorCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKFBBQ0tBR0VfQlVHUkVQT1JUKSc7IFwKKwlmaTsgXAorCWNhc2UgYCQoWEdFVFRFWFQpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAorCSAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qIHwgMC4xNiB8IDAuMTYuWzAtMV0qKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCisJICAgICAgJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAorCSAgICA7OyBcCisJICAqKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAorCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKKwkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKKwkgICAgICAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCisJICAgIDs7IFwKKwllc2FjCisJdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKKwkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyOyB0aGVuIFwKKwkgICAgc2VkIC1lICcxLC9eIyQkL2QnIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjFwbyAmJiBcCisJICAgIGNhdCAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXIgJChET01BSU4pLjFwbyA+ICQoRE9NQUlOKS5wbyAmJiBcCisJICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAorCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAorCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAorCSAgICBlbHNlIFwKKwkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAorCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgICBmaTsgXAorCSAgZWxzZSBcCisJICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgZmk7IFwKKwl9CisKKyMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKKyMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KKyMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCiskKHNyY2RpcikvJChET01BSU4pLnBvdDoKKwkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCisjIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQorCUB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncywuKi8sLCcgLWUgJ3MvXC5wbyQkLy8nYDsgXAorCWlmIHRlc3QgLWYgIiQoc3JjZGlyKS8kJHtsYW5nfS5wbyI7IHRoZW4gXAorCSAgdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCisJICBlY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gLS1wcmV2aW91cyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAorCSAgY2QgJChzcmNkaXIpIFwKKwkgICAgJiYgeyBjYXNlIGAkKE1TR01FUkdFX1VQREFURSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAgICAgICAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiopIFwKKwkgICAgICAgICAgICAgJChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgICAgIDAuMVs2LTddIHwgMC4xWzYtN10uKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgICAqKSBcCisJICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgZXNhYzsgXAorCSAgICAgICB9OyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQke2xhbmd9LnBvLWNyZWF0ZTsgXAorCWZpCisKKworaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQoraW5zdGFsbC1leGVjOgoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAorCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSBcCisJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJICBmb3IgZmlsZSBpbiBNYWtldmFyczsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGwtZGF0YS1ubzogYWxsCitpbnN0YWxsLWRhdGEteWVzOiBhbGwKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgaWYgdGVzdCAtciAkJGNhdDsgdGhlbiByZWFsY2F0PSQkY2F0OyBlbHNlIHJlYWxjYXQ9JChzcmNkaXIpLyQkY2F0OyBmaTsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQkcmVhbGNhdCAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vOyBcCisJICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBhcyAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vIjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICAgICAgbG4gLXMgLi4vTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgICBsbiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8gMj4vZGV2L251bGwgfHwgXAorCSAgICAgIGNwIC1wICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgICAgIGVjaG8gImluc3RhbGxpbmcgJCRyZWFsY2F0IGxpbmsgYXMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8iOyBcCisJICAgIGZpOyBcCisJICBkb25lOyBcCisJZG9uZQorCitpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1leGVjIGluc3RhbGxkaXJzLWRhdGEKK2luc3RhbGxkaXJzLWV4ZWM6CitpbnN0YWxsZGlycy1kYXRhOiBpbnN0YWxsZGlycy1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGxkaXJzLWRhdGEtbm86CitpbnN0YWxsZGlycy1kYXRhLXllczoKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworIyBEZWZpbmUgdGhpcyBhcyBlbXB0eSB1bnRpbCBJIGZvdW5kIGEgdXNlZnVsIGFwcGxpY2F0aW9uLgoraW5zdGFsbGNoZWNrOgorCit1bmluc3RhbGw6IHVuaW5zdGFsbC1leGVjIHVuaW5zdGFsbC1kYXRhCit1bmluc3RhbGwtZXhlYzoKK3VuaW5zdGFsbC1kYXRhOiB1bmluc3RhbGwtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzLnRlbXBsYXRlOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQordW5pbnN0YWxsLWRhdGEtbm86Cit1bmluc3RhbGwtZGF0YS15ZXM6CisJY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGZvciBsYyBpbiBMQ19NRVNTQUdFUyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworY2hlY2s6IGFsbAorCitpbmZvIGR2aSBwcyBwZGYgaHRtbCB0YWdzIFRBR1MgY3RhZ3MgQ1RBR1MgSUQ6CisKK2luc3RhbGwtZHZpIGluc3RhbGwtcHMgaW5zdGFsbC1wZGYgaW5zdGFsbC1odG1sOgorCittb3N0bHljbGVhbjoKKwlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCisJcm0gLWYgJChzcmNkaXIpL3N0YW1wLXBvVAorCXJtIC1mIGNvcmUgY29yZS4qICQoRE9NQUlOKS5wbyAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gKi5uZXcucG8KKwlybSAtZnIgKi5vCisKK2NsZWFuOiBtb3N0bHljbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMKKworbWFpbnRhaW5lci1jbGVhbjogZGlzdGNsZWFuCisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKwlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCisJcm0gLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJChzcmNkaXIpL3N0YW1wLXBvICQoR01PRklMRVMpCisKK2Rpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQorZGlzdCBkaXN0ZGlyOgorCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQorCUAkKE1BS0UpIGRpc3QyCisjIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KK2Rpc3QyOiAkKHNyY2Rpcikvc3RhbXAtcG8gJChESVNURklMRVMpCisJZGlzdHM9IiQoRElTVEZJTEVTKSI7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBNYWtldmFycy50ZW1wbGF0ZSI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgJChET01BSU4pLnBvdCBzdGFtcC1wbyI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZzsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2ciOyBcCisJZmk7IFwKKwlmb3IgaSBpbiAwIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2cuJCRpOyB0aGVuIFwKKwkgICAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nLiQkaSI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0xJTkdVQVM7IHRoZW4gZGlzdHM9IiQkZGlzdHMgTElOR1VBUyI7IGZpOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICBjcCAtcCAkJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwordXBkYXRlLXBvOiBNYWtlZmlsZQorCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKKwl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKKwkkKE1BS0UpIHVwZGF0ZS1nbW8KKworIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgorCisubm9wLnBvLWNyZWF0ZToKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAorCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCisJZXhpdCAxCisKKyMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby11cGRhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiAmJiB0ZXN0ICIkKENST1NTX0NPTVBJTElORykiICE9ICJ5ZXMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKKwl0bXBkaXI9YHB3ZGA7IFwKKwllY2hvICIkJGxhbmc6IjsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCisJY2QgJChzcmNkaXIpOyBcCisJaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKKwkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qKSBcCisJICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAwLjFbNi03XSB8IDAuMVs2LTddLiopIFwKKwkgICAgICAgICAkKE1TR01FUkdFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tcHJldmlvdXMgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICBlc2FjOyBcCisJICAgfTsgdGhlbiBcCisJICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCSAgZWxzZSBcCisJICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKKwkgICAgICA6OyBcCisJICAgIGVsc2UgXAorCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAorCSAgICAgIGV4aXQgMTsgXAorCSAgICBmaTsgXAorCSAgZmk7IFwKKwllbHNlIFwKKwkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAorCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCWZpCisKKyQoRFVNTVlQT0ZJTEVTKToKKwordXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKKwlAOgorCisjIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKKyMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KKyMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cworIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCitNYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAorCWNkICQodG9wX2J1aWxkZGlyKSBcCisJICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKKworZm9yY2U6CisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgzMjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9nZXR0ZXh0Lm00CkBAIC0wLDAgKzEsMzg2IEBACisjIGdldHRleHQubTQgc2VyaWFsIDcwIChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTQsIDIwMTYsIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwNiwgMjAwOC0yMDEwLgorCitkbmwgTWFjcm8gdG8gYWRkIGZvciB1c2luZyBHTlUgZ2V0dGV4dC4KKworZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVChbSU5UTFNZTUJPTF0sIFtORUVEU1lNQk9MXSwgW0lOVExESVJdKS4KK2RubCBJTlRMU1lNQk9MIG11c3QgYmUgb25lIG9mICdleHRlcm5hbCcsICd1c2UtbGlidG9vbCcuCitkbmwgICAgSU5UTFNZTUJPTCBzaG91bGQgYmUgJ2V4dGVybmFsJyBmb3IgcGFja2FnZXMgb3RoZXIgdGhhbiBHTlUgZ2V0dGV4dCwgYW5kCitkbmwgICAgJ3VzZS1saWJ0b29sJyBmb3IgdGhlIHBhY2thZ2VzICdnZXR0ZXh0LXJ1bnRpbWUnIGFuZCAnZ2V0dGV4dC10b29scycuCitkbmwgICAgSWYgSU5UTFNZTUJPTCBpcyAndXNlLWxpYnRvb2wnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5CitkbmwgICAgJCh0b3BfYnVpbGRkaXIpL2ludGwvbGliaW50bC5sYSB3aWxsIGJlIGNyZWF0ZWQgKHNoYXJlZCBhbmQvb3Igc3RhdGljLAorZG5sICAgIGRlcGVuZGluZyBvbiAtLXtlbmFibGUsZGlzYWJsZX0te3NoYXJlZCxzdGF0aWN9IGFuZCBvbiB0aGUgcHJlc2VuY2Ugb2YKK2RubCAgICBBTS1ESVNBQkxFLVNIQVJFRCkuCitkbmwgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzICduZWVkLW5nZXR0ZXh0JywgdGhlbiBHTlUgZ2V0dGV4dAorZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCitkbmwgICAgd2lsbCBiZSBpZ25vcmVkLiAgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzCitkbmwgICAgJ25lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcycsIHRoZW4gR05VIGdldHRleHQgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QKK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCitkbmwgSU5UTERJUiBpcyB1c2VkIHRvIGZpbmQgdGhlIGludGwgbGlicmFyaWVzLiAgSWYgZW1wdHksCitkbmwgICAgdGhlIHZhbHVlICckKHRvcF9idWlsZGRpcikvaW50bC8nIGlzIHVzZWQuCitkbmwKK2RubCBUaGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIG9uZSBvZiB0aHJlZSBjYXNlczoKK2RubCAxKSBHTlUgZ2V0dGV4dCwgYXMgaW5jbHVkZWQgaW4gdGhlIGludGwgc3ViZGlyZWN0b3J5LCB3aWxsIGJlIGNvbXBpbGVkCitkbmwgICAgYW5kIHVzZWQuCitkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCitkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgorZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCitkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KK2RubCAgICBDYXRhbG9nIGZvcm1hdDogbm9uZQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiBub25lCitkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgorZG5sIFRoZSB1c2Ugb2YgLmdtbyBpcyBoaXN0b3JpY2FsIChpdCB3YXMgbmVlZGVkIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZQorZG5sIEdOVSBmb3JtYXQgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBvbiBhIHBsYXRmb3JtIHdpdGggYW4gWC9PcGVuIGdldHRleHQpLAorZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCitkbmwgbWFpbnRhaW5lcnMuCitkbmwKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCitbCisgIGRubCBBcmd1bWVudCBjaGVja2luZy4KKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBpZmVsc2UoaWZlbHNlKFskMV0sIFtdLCBbb2xkXSlbXWlmZWxzZShbJDFdLCBbbm8tbGlidG9vbF0sIFtvbGRdKSwgW29sZF0sCisgICAgW2VycnByaW50KFtFUlJPUjogVXNlIG9mIEFNX0dOVV9HRVRURVhUIHdpdGhvdXQgW2V4dGVybmFsXSBhcmd1bWVudCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorXSldKQorICBpZmVsc2UoWyQyXSwgW10sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwgLAorICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgc2Vjb25kIGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBkZWZpbmUoW2d0X2luY2x1ZGVkX2ludGxdLAorICAgIGlmZWxzZShbJDFdLCBbZXh0ZXJuYWxdLCBbbm9dLCBbeWVzXSkpCisgIGd0X05FRURTX0lOSVQKKyAgQU1fR05VX0dFVFRFWFRfTkVFRChbJDJdKQorCisgIEFDX1JFUVVJUkUoW0FNX1BPX1NVQkRJUlNdKWRubAorICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgQUNfUkVRVUlSRShbQU1fSU5UTF9TVUJESVJdKWRubAorICBdKQorCisgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKworICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCisgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCisgIGRubCAgICAgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisgIGRubCAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAorICBkbmwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd291bGQgbmVlZCB0byBjb250YWluIHRoZSBzYW1lIHNoZWxsIGNvZGUKKyAgZG5sIGFnYWluLCBvdXRzaWRlIGFueSAnaWYnLiBUaGVyZSBhcmUgdHdvIHNvbHV0aW9uczoKKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCisgIGRubCAtIENvbnRyb2wgdGhlIGV4cGFuc2lvbnMgaW4gbW9yZSBkZXRhaWwgdXNpbmcgQUNfUFJPVklERV9JRkVMU0UuCisgIGRubCBTaW5jZSBBQ19QUk9WSURFX0lGRUxTRSBpcyBub3QgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWworICAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKyAgXSkKKworICBkbmwgU29tZXRpbWVzLCBvbiBNYWMgT1MgWCwgbGliaW50bCByZXF1aXJlcyBsaW5raW5nIHdpdGggQ29yZUZvdW5kYXRpb24uCisgIGd0X0lOVExfTUFDT1NYCisKKyAgZG5sIFNldCBVU0VfTkxTLgorICBBQ19SRVFVSVJFKFtBTV9OTFNdKQorCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCisgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9bm8KKyAgXSkKKyAgTElCSU5UTD0KKyAgTFRMSUJJTlRMPQorICBQT1NVQj0KKworICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KKyAgY2FzZSAiICRndF9uZWVkcyAiIGluCisgICAgKiIgbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zICIqKSBndF9hcGlfdmVyc2lvbj0zIDs7CisgICAgKiIgbmVlZC1uZ2V0dGV4dCAiKikgZ3RfYXBpX3ZlcnNpb249MiA7OworICAgICopIGd0X2FwaV92ZXJzaW9uPTEgOzsKKyAgZXNhYworICBndF9mdW5jX2dudWdldHRleHRfbGliYz0iZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0JHtndF9hcGlfdmVyc2lvbn1fbGliYyIKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmludGwiCisKKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAorICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD1ubworICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZF0pCisgICAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2V0dGV4dF0sCisgICAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHVzZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpbmNsdWRlZCBoZXJlXSwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbCwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKKyAgICAgIEFDX01TR19SRVNVTFQoWyRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0XSkKKworICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD0iJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiCisgICAgICBpZiB0ZXN0ICIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKyAgICBdKQorICAgICAgICBkbmwgVXNlciBkb2VzIG5vdCBpbnNpc3Qgb24gdXNpbmcgR05VIE5MUyBsaWJyYXJ5LiAgRmlndXJlIG91dCB3aGF0CisgICAgICAgIGRubCB0byB1c2UuICBJZiBHTlUgZ2V0dGV4dCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMuICBFbHNlIHdlIGhhdmUKKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCisKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDM7IHRoZW4KKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9JworI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKKyNlbmRpZgorY2hhbmdlcXVvdGUoLClkbmwKK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07CitjaGFuZ2VxdW90ZShbLF0pZG5sCisnCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9CisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAyOyB0aGVuCisgICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9JyArICogbmdldHRleHQgKCIiLCAiIiwgMCknCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9leHByZXNzaW9uX3Rlc3RfY29kZT0KKyAgICAgICAgZmkKKworICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmNdLCBbJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjXSwKKyAgICAgICAgIFtBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybiBpbnQgKl9ubF9kb21haW5fYmluZGluZ3M7CisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gKF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2RvbWFpbl9iaW5kaW5ncykKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjPXllcyJdLAorICAgICAgICAgICAgW2V2YWwgIiRndF9mdW5jX2dudWdldHRleHRfbGliYz1ubyJdKV0pCisKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICAgICAgICAgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KKyAgICAgICAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKKyAgICAgICAgICAgIEFNX0lDT05WX0xJTksKKyAgICAgICAgICBdKQorICAgICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmludGwgYW5kIGRlZmluZSBMSUJJTlRMLCBMVExJQklOVEwgYW5kIElOQ0lOVEwKKyAgICAgICAgICBkbmwgYWNjb3JkaW5nbHkuIERvbid0IHVzZSBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdLFtpY29udl0pCisgICAgICAgICAgZG5sIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgIi1saWNvbnYiIHRvIExJQklOVEwgYW5kIExUTElCSU5UTAorICAgICAgICAgIGRubCBldmVuIGlmIGxpYmljb252IGRvZXNuJ3QgZXhpc3QuCisgICAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSkKKyAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmludGxdLAorICAgICAgICAgICAgWyRndF9mdW5jX2dudWdldHRleHRfbGliaW50bF0sCisgICAgICAgICAgIFtndF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNJTlRMIgorICAgICAgICAgICAgZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgorICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIGxpYmljb252LgorICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICAgIFtbCisjaW5jbHVkZSA8bGliaW50bC5oPgorI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICopOworI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIChfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKCIiKSkKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzIl0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8iXSkKKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRlcGVuZHMgb24gbGliaWNvbnYuCisgICAgICAgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiICE9IHllczsgfSAmJiB0ZXN0IC1uICIkTElCSUNPTlYiOyB0aGVuCisgICAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybgorI2lmZGVmIF9fY3BsdXNwbHVzCisiQyIKKyNlbmRpZgorY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqKTsKKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAoX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgiIikpCisjZWxzZQorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKyNlbmRpZgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorICAgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICAgIFtMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKKyAgICAgICAgICAgICAgICAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyIKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIENQUEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgICAgICAgZmkKKworICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAorICAgICAgICBkbmwgdXNlIGl0LiAgQnV0IGlmIHRoaXMgbWFjcm8gaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCwgYW5kIEdOVQorICAgICAgICBkbmwgZ2V0dGV4dCBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBpbiBsaWJpbnRsLCB3ZSB1cGRhdGUgdGhpcworICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9IFwKKyAgICAgICAgICAgfHwgeyB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH0gXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXRvb2xzOyB9OyB0aGVuCisgICAgICAgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PXllcworICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFJlc2V0IHRoZSB2YWx1ZXMgc2V0IGJ5IHNlYXJjaGluZyBmb3IgbGliaW50bC4KKyAgICAgICAgICBMSUJJTlRMPQorICAgICAgICAgIExUTElCSU5UTD0KKyAgICAgICAgICBJTkNJTlRMPQorICAgICAgICBmaQorCisgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgorICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KKyAgICAgICAgICBkbmwgRmFsbCBiYWNrIG9uIGluY2x1ZGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCisgICAgICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD15ZXMKKyAgICAgICAgZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdXNlZCB0byBnZW5lcmF0ZSBHTlUgTkxTIGxpYnJhcnkuCisgICAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCisgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTElCSUNPTlYgJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTFRMSUJJQ09OViAkTFRMSUJUSFJFQUQiCisgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKKyAgICAgIGZpCisKKyAgICAgIENBVE9CSkVYVD0KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB0byB1c2UgR05VIGdldHRleHQgdG9vbHMuCisgICAgICAgIENBVE9CSkVYVD0uZ21vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0IC1uICIkSU5UTF9NQUNPU1hfTElCUyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIFNvbWUgZXh0cmEgZmxhZ3MgYXJlIG5lZWRlZCBkdXJpbmcgbGlua2luZy4KKyAgICAgICAgTElCSU5UTD0iJExJQklOVEwgJElOVExfTUFDT1NYX0xJQlMiCisgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkSU5UTF9NQUNPU1hfTElCUyIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoW0VOQUJMRV9OTFNdLCBbMV0sCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlIGxhbmd1YWdlCisgICBpcyByZXF1ZXN0ZWQuXSkKKyAgICBlbHNlCisgICAgICBVU0VfTkxTPW5vCisgICAgZmkKKyAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE5MU10pCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb21dKQorICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCisgICAgICBlbHNlCisgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQorICBmaQorCisgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH07IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmludGxdKQorICAgICAgICBBQ19NU0dfUkVTVUxUKFskTElCSU5UTF0pCisgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQorICAgICAgZmkKKworICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgorICAgICAgQUNfREVGSU5FKFtIQVZFX0dFVFRFWFRdLCBbMV0sCisgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgICBBQ19ERUZJTkUoW0hBVkVfRENHRVRURVhUXSwgWzFdLAorICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBkY2dldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgZmkKKworICAgIGRubCBXZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHBvLyBkaXJlY3RvcnkuCisgICAgUE9TVUI9cG8KKyAgZmkKKworICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgZG5sIEluIEdOVSBnZXR0ZXh0IHdlIGhhdmUgdG8gc2V0IEJVSUxEX0lOQ0xVREVEX0xJQklOVEwgdG8gJ3llcycKKyAgICBkbmwgYmVjYXVzZSBzb21lIG9mIHRoZSB0ZXN0c3VpdGUgcmVxdWlyZXMgaXQuCisgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKKworICAgIGRubCBNYWtlIGFsbCB2YXJpYWJsZXMgd2UgdXNlIGtub3duIHRvIGF1dG9jb25mLgorICAgIEFDX1NVQlNUKFtCVUlMRF9JTkNMVURFRF9MSUJJTlRMXSkKKyAgICBBQ19TVUJTVChbVVNFX0lOQ0xVREVEX0xJQklOVExdKQorICAgIEFDX1NVQlNUKFtDQVRPQkpFWFRdKQorICBdKQorCisgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCisgIElOVExMSUJTPSIkTElCSU5UTCIKKyAgQUNfU1VCU1QoW0lOVExMSUJTXSkKKworICBkbmwgTWFrZSBhbGwgZG9jdW1lbnRlZCB2YXJpYWJsZXMga25vd24gdG8gYXV0b2NvbmYuCisgIEFDX1NVQlNUKFtMSUJJTlRMXSkKKyAgQUNfU1VCU1QoW0xUTElCSU5UTF0pCisgIEFDX1NVQlNUKFtQT1NVQl0pCitdKQorCisKK2RubCBndF9ORUVEU19JTklUIGVuc3VyZXMgdGhhdCB0aGUgZ3RfbmVlZHMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQuCittNF9kZWZpbmUoW2d0X05FRURTX0lOSVRdLAorWworICBtNF9kaXZlcnRfdGV4dChbREVGQVVMVFNdLCBbZ3RfbmVlZHM9XSkKKyAgbTRfZGVmaW5lKFtndF9ORUVEU19JTklUXSwgW10pCitdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfTkVFRChbTkVFRFNZTUJPTF0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfTkVFRF0sCitbCisgIG00X2RpdmVydF90ZXh0KFtJTklUX1BSRVBBUkVdLCBbZ3RfbmVlZHM9IiRndF9uZWVkcyAkMSJdKQorXSkKKworCitkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oW2dldHRleHQtdmVyc2lvbl0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfVkVSU0lPTl0sIFtdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfUkVRVUlSRV9WRVJTSU9OKFtnZXR0ZXh0LXZlcnNpb25dKQorQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1JFUVVJUkVfVkVSU0lPTl0sIFtdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ob3N0LWNwdS1jLWFiaS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwNzI5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKQEAgLTAsMCArMSw2NDQgQEAKKyMgaG9zdC1jcHUtYy1hYmkubTQgc2VyaWFsIDExCitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlIGFuZCBTYW0gU3RlaW5nb2xkLgorCitkbmwgU2V0cyB0aGUgSE9TVF9DUFUgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUuCitkbmwgU2V0cyB0aGUgSE9TVF9DUFVfQ19BQkkgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUgd2l0aCBpdHMKK2RubCBDIGxhbmd1YWdlIEFCSSAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkuCitkbmwgQWxzbyBkZWZpbmVzIF9fJHtIT1NUX0NQVX1fXyBhbmQgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIGFzIEMgbWFjcm9zIGluCitkbmwgY29uZmlnLmguCitkbmwKK2RubCBUaGlzIGNhbm9uaWNhbCBuYW1lIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIHBhcnRpY3VsYXIgYXNzZW1ibHkgbGFuZ3VhZ2UKK2RubCBzb3VyY2UgZmlsZSB0aGF0IHdpbGwgaW50ZXJvcGVyYXRlIHdpdGggQyBjb2RlIG9uIHRoZSBnaXZlbiBob3N0LgorZG5sCitkbmwgRm9yIGV4YW1wbGU6CitkbmwgKiAnaTM4NicgYW5kICdzcGFyYycgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IgaTM4NgorZG5sICAgd2lsbCBub3QgcnVuIG9uIFNQQVJDIENQVXMgYW5kIHZpY2UgdmVyc2EuIFRoZXkgaGF2ZSBkaWZmZXJlbnQKK2RubCAgIGluc3RydWN0aW9uIHNldHMuCitkbmwgKiAnc3BhcmMnIGFuZCAnc3BhcmM2NCcgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IKK2RubCAgICdzcGFyYycgYW5kIGNvZGUgZm9yICdzcGFyYzY0JyBjYW5ub3QgYmUgbGlua2VkIHRvZ2V0aGVyOiAnc3BhcmMnIGNvZGUKK2RubCAgIGNvbnRhaW5zIDMyLWJpdCBpbnN0cnVjdGlvbnMsIHdoZXJlYXMgJ3NwYXJjNjQnIGNvZGUgY29udGFpbnMgNjQtYml0CitkbmwgICBpbnN0cnVjdGlvbnMuIEEgcHJvY2VzcyBvbiBhIFNQQVJDIENQVSBjYW4gYmUgaW4gMzItYml0IG1vZGUgb3IgaW4gNjQtYml0CitkbmwgICBtb2RlLCBidXQgbm90IGJvdGguCitkbmwgKiAnbWlwcycgYW5kICdtaXBzbjMyJyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IGFyZ3VtZW50IHBhc3NpbmcgYW5kIHJldHVybiBjb252ZW50aW9ucyBmb3IgQyBmdW5jdGlvbnMsIGFuZAorZG5sICAgYWx0aG91Z2ggdGhlIGluc3RydWN0aW9uIHNldCBvZiAnbWlwcycgaXMgYSBsYXJnZSBzdWJzZXQgb2YgdGhlCitkbmwgICBpbnN0cnVjdGlvbiBzZXQgb2YgJ21pcHNuMzInLgorZG5sICogJ21pcHNuMzInIGFuZCAnbWlwczY0JyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IHNpemVzIGZvciB0aGUgQyB0eXBlcyBsaWtlICdpbnQnIGFuZCAndm9pZCAqJywgYW5kIGFsdGhvdWdoCitkbmwgICB0aGUgaW5zdHJ1Y3Rpb24gc2V0cyBvZiAnbWlwc24zMicgYW5kICdtaXBzNjQnIGFyZSB0aGUgc2FtZS4KK2RubCAqIFRoZSBzYW1lIGNhbm9uaWNhbCBuYW1lIGlzIHVzZWQgZm9yIGRpZmZlcmVudCBlbmRpYW5uZXNzZXMuIFlvdSBjYW4KK2RubCAgIGRldGVybWluZSB0aGUgZW5kaWFubmVzcyB0aHJvdWdoIHByZXByb2Nlc3NvciBzeW1ib2xzOgorZG5sICAgLSAnYXJtJzogdGVzdCBfX0FSTUVMX18uCitkbmwgICAtICdtaXBzJywgJ21pcHNuMzInLCAnbWlwczY0JzogdGVzdCBfTUlQU0VCIHZzLiBfTUlQU0VMLgorZG5sICAgLSAncG93ZXJwYzY0JzogdGVzdCBfQklHX0VORElBTiB2cy4gX0xJVFRMRV9FTkRJQU4uCitkbmwgKiBUaGUgc2FtZSBuYW1lICdpMzg2JyBpcyB1c2VkIGZvciBDUFVzIG9mIHR5cGUgaTM4NiwgaTQ4NiwgaTU4NgorZG5sICAgKFBlbnRpdW0pLCBBTUQgSzcsIFBlbnRpdW0gSUksIFBlbnRpdW0gSVYsIGV0Yy4sIGJlY2F1c2UKK2RubCAgIC0gSW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90IGV4aXN0IG9uIGFsbCBvZiB0aGVzZSBDUFVzIChjbXB4Y2hnLAorZG5sICAgICBNTVgsIFNTRSwgU1NFMiwgM0ROb3chIGV0Yy4pIGFyZSBub3QgZnJlcXVlbnRseSB1c2VkLiBJZiB5b3VyCitkbmwgICAgIGFzc2VtYmx5IGxhbmd1YWdlIHNvdXJjZSBmaWxlcyB1c2Ugc3VjaCBpbnN0cnVjdGlvbnMsIHlvdSB3aWxsCitkbmwgICAgIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICAtIFNwZWVkIG9mIGV4ZWN1dGlvbiBvZiB0aGUgY29tbW9uIGluc3RydWN0aW9uIHNldCBpcyByZWFzb25hYmxlIGFjcm9zcworZG5sICAgICB0aGUgZW50aXJlIGZhbWlseSBvZiBDUFVzLiBJZiB5b3UgaGF2ZSBhc3NlbWJseSBsYW5ndWFnZSBzb3VyY2UgZmlsZXMKK2RubCAgICAgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBwYXJ0aWN1bGFyIENQVSB0eXBlcyAobGlrZSBHTlUgZ21wIGhhcyksIHlvdQorZG5sICAgICB3aWxsIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICBTZWUgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Nl9pbnN0cnVjdGlvbl9saXN0aW5ncz4uCitBQ19ERUZVTihbZ2xfSE9TVF9DUFVfQ19BQkldLAorWworICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW2dsX0NfQVNNXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2hvc3QgQ1BVIGFuZCBDIEFCSV0sIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV0sCisgICAgW2Nhc2UgIiRob3N0X2NwdSIgaW4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgICAgICBpWzQ1NjddODYgKQorY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aTM4NgorICAgICAgICAgOzsKKworICAgICAgIHg4Nl82NCApCisgICAgICAgICAjIE9uIHg4Nl82NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgIyB0aGVzZSBBQklzOgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0CisgICAgICAgICAjICAgd2l0aCBuYXRpdmUgV2luZG93cyAobWluZ3csIE1TVkMpLgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGkzODYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiAoZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fIFwKKyAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQgX01fWDY0IHx8IGRlZmluZWQgX01fQU1ENjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9eDg2XzY0LXgzMl0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT14ODZfNjRdKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pMzg2XSkKKyAgICAgICAgIDs7CisKK2NoYW5nZXF1b3RlKCwpZG5sCisgICAgICAgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFwY2E1WzY3XSB8IGFscGhhZXY2Wzc4XSApCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1hbHBoYQorICAgICAgICAgOzsKKworICAgICAgIGFybSogfCBhYXJjaDY0ICkKKyAgICAgICAgICMgQXNzdW1lIGFybSB3aXRoIEVBQkkuCisgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAjIHRoZXNlIEFCSXM6CisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogYXJtNjQuCisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBhcm0gb3IgYXJtaGYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZmRlZiBfX2FhcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0LWlscDMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0XSldLAorICAgICAgICAgICBbIyBEb24ndCBkaXN0aW5ndWlzaCBsaXR0bGUtZW5kaWFuIGFuZCBiaWctZW5kaWFuIGFybSwgc2luY2UgdGhleQorICAgICAgICAgICAgIyBkb24ndCByZXF1aXJlIGRpZmZlcmVudCBtYWNoaW5lIGNvZGUgZm9yIHNpbXBsZSBvcGVyYXRpb25zIGFuZAorICAgICAgICAgICAgIyBzaW5jZSB0aGUgdXNlciBjYW4gZGlzdGluZ3Vpc2ggdGhlbSB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IKKyAgICAgICAgICAgICMgZGVmaW5lcyBfX0FSTUVMX18gdnMuIF9fQVJNRUJfXy4KKyAgICAgICAgICAgICMgQnV0IGRpc3Rpbmd1aXNoIGFybSB3aGljaCBwYXNzZXMgZmxvYXRpbmctcG9pbnQgYXJndW1lbnRzIGFuZAorICAgICAgICAgICAgIyByZXR1cm4gdmFsdWVzIGluIGludGVnZXIgcmVnaXN0ZXJzIChyMCwgcjEsIC4uLikgLSB0aGlzIGlzCisgICAgICAgICAgICAjIGdjYyAtbWZsb2F0LWFiaT1zb2Z0IG9yIGdjYyAtbWZsb2F0LWFiaT1zb2Z0ZnAgLSBmcm9tIGFybSB3aGljaAorICAgICAgICAgICAgIyBwYXNzZXMgdGhlbSBpbiBmbG9hdCByZWdpc3RlcnMgKHMwLCBzMSwgLi4uKSBhbmQgZG91YmxlIHJlZ2lzdGVycworICAgICAgICAgICAgIyAoZDAsIGQxLCAuLi4pIC0gdGhpcyBpcyBnY2MgLW1mbG9hdC1hYmk9aGFyZC4gR0NDIDQuNiBvciBuZXdlcgorICAgICAgICAgICAgIyBzZXRzIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBfX0FSTV9QQ1MgKGZvciB0aGUgZmlyc3QgY2FzZSkgYW5kCisgICAgICAgICAgICAjIF9fQVJNX1BDU19WRlAgKGZvciB0aGUgc2Vjb25kIGNhc2UpLCBidXQgb2xkZXIgR0NDIGRvZXMgbm90LgorICAgICAgICAgICAgZWNobyAnZG91YmxlIGRkZDsgdm9pZCBmdW5jIChkb3VibGUgZGQpIHsgZGRkID0gZGQ7IH0nID4gY29uZnRlc3QuYworICAgICAgICAgICAgIyBMb29rIGZvciBhIHJlZmVyZW5jZSB0byB0aGUgcmVnaXN0ZXIgZDAgaW4gdGhlIC5zIGZpbGUuCisgICAgICAgICAgICBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkZ2xfY19hc21fb3B0IGNvbmZ0ZXN0LmMpID4vZGV2L251bGwgMj4mMQorICAgICAgICAgICAgaWYgTENfQUxMPUMgZ3JlcCAnZDAsJyBjb25mdGVzdC4kZ2xfYXNtZXh0ID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtaGYKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgcm0gLWYgY29uZnRlc3QqCisgICAgICAgICAgIF0pCisgICAgICAgICA7OworCisgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAjIE9uIGhwcGEsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDMyLWJpdCBjb2RlIG9yIDY0LWJpdAorICAgICAgICAgIyBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0xQNjQgYW5kIF9fTFA2NF9fLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWhwcGE2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1ocHBhXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBpYTY0KiApCisgICAgICAgICAjIE9uIGlhNjQgb24gSFAtVVgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlIG9yCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pYTY0LWlscDMyXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWlhNjRdKQorICAgICAgICAgOzsKKworICAgICAgIG1pcHMqICkKKyAgICAgICAgICMgV2Ugc2hvdWxkIGFsc28gY2hlY2sgZm9yIChfTUlQU19TWlBUUiA9PSA2NCksIGJ1dCBnY2Mga2VlcHMgdGhpcworICAgICAgICAgIyBhdCAzMi4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX01JUFNfU1pMT05HICYmIChfTUlQU19TWkxPTkcgPT0gNjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzNjRdLAorICAgICAgICAgICBbIyBJbiB0aGUgbjMyIEFCSSwgX0FCSU4zMiBpcyBkZWZpbmVkLCBfQUJJTzMyIGlzIG5vdCBkZWZpbmVkIChidXQKKyAgICAgICAgICAgICMgbWF5IGxhdGVyIGdldCBkZWZpbmVkIGJ5IDxzZ2lkZWZzLmg+KSwgYW5kIF9NSVBTX1NJTSA9PSBfQUJJTjMyLgorICAgICAgICAgICAgIyBJbiB0aGUgMzIgQUJJLCBfQUJJTzMyIGlzIGRlZmluZWQsIF9BQklOMzIgaXMgbm90IGRlZmluZWQgKGJ1dAorICAgICAgICAgICAgIyBtYXkgbGF0ZXIgZ2V0IGRlZmluZWQgYnkgPHNnaWRlZnMuaD4pLCBhbmQgX01JUFNfU0lNID09IF9BQklPMzIuCisgICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiAoX01JUFNfU0lNID09IF9BQklOMzIpCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzbjMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPW1pcHNdKV0pCisgICAgICAgICA7OworCisgICAgICAgcG93ZXJwYyogKQorICAgICAgICAgIyBEaWZmZXJlbnQgQUJJcyBhcmUgaW4gdXNlIG9uIEFJWCB2cy4gTWFjIE9TIFggdnMuIExpbnV4LCpCU0QuCisgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgIyB0aGVtIGJhc2VkIG9uIHRoZSBPUy4KKyAgICAgICAgICMgT24gcG93ZXJwYzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBzdGlsbCBiZSBnZW5lcmF0aW5nCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgIyBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Bvd2VycGM2NF9fIHx8IGRlZmluZWQgX0FSQ0hfUFBDNjQKKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgWyMgT24gcG93ZXJwYzY0LCB0aGVyZSBhcmUgdHdvIEFCSXMgb24gTGludXg6IFRoZSBBSVggY29tcGF0aWJsZQorICAgICAgICAgICAgIyBvbmUgYW5kIHRoZSBFTEZ2MiBvbmUuIFRoZSBsYXR0ZXIgZGVmaW5lcyBfQ0FMTF9FTEY9Mi4KKyAgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX0NBTExfRUxGICYmIF9DQUxMX0VMRiA9PSAyCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjNjQtZWxmdjJdLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9cG93ZXJwYzY0XSkKKyAgICAgICAgICAgXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXBvd2VycGNdKQorICAgICAgICAgOzsKKworICAgICAgIHJzNjAwMCApCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjCisgICAgICAgICA7OworCisgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgIyBUaGVyZSBhcmUgMiBhcmNoaXRlY3R1cmVzICh3aXRoIHZhcmlhbnRzKTogcnYzMiogYW5kIHJ2NjQqLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgX19yaXNjdl94bGVuID09IDY0CisgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjY0XSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjMyXSkKKyAgICAgICAgICMgVGhlcmUgYXJlIDYgQUJJczogaWxwMzIsIGlscDMyZiwgaWxwMzJkLCBscDY0LCBscDY0ZiwgbHA2NGQuCisgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbbWFpbl9hYmk9bHA2NF0sCisgICAgICAgICAgIFttYWluX2FiaT1pbHAzMl0pCisgICAgICAgICAjIEZsb2F0IEFCSXM6CisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX2RvdWJsZToKKyAgICAgICAgICMgICAnZmxvYXQnIGFuZCAnZG91YmxlJyBhcmUgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKyAgICAgICAgICMgX19yaXNjdl9mbG9hdF9hYmlfc2luZ2xlOgorICAgICAgICAgIyAgICdmbG9hdCcgYXJlIHBhc3NlZCBpbiBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX3NvZnQ6CisgICAgICAgICAjICAgTm8gdmFsdWVzIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9kb3VibGUKKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZmxvYXRfYWJpPWRdLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPWZdLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPScnXSkKKyAgICAgICAgICAgXSkKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIke2NwdX0tJHttYWluX2FiaX0ke2Zsb2F0X2FiaX0iCisgICAgICAgICA7OworCisgICAgICAgczM5MCogKQorICAgICAgICAgIyBPbiBzMzkweCwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0ICg9IHMzOTB4KSBjb2RlCisgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkweF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkwXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBzcGFyYyB8IHNwYXJjNjQgKQorICAgICAgICAgIyBVbHRyYVNQQVJDcyBydW5uaW5nIExpbnV4IGhhdmUgYHVuYW1lIC1tYCA9ICJzcGFyYzY0IiwgYnV0IHRoZQorICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9c3BhcmM2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zcGFyY10pCisgICAgICAgICA7OworCisgICAgICAgKikKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIkaG9zdF9jcHUiCisgICAgICAgICA7OworICAgICBlc2FjCisgICAgXSkKKworICBkbmwgSW4gbW9zdCBjYXNlcywgJEhPU1RfQ1BVIGFuZCAkSE9TVF9DUFVfQ19BQkkgYXJlIHRoZSBzYW1lLgorICBIT1NUX0NQVT1gZWNobyAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiB8IHNlZCAtZSAncy8tLiovLydgCisgIEhPU1RfQ1BVX0NfQUJJPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiCisgIEFDX1NVQlNUKFtIT1NUX0NQVV0pCisgIEFDX1NVQlNUKFtIT1NUX0NQVV9DX0FCSV0pCisKKyAgIyBUaGlzIHdhcworICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFV9X19dKQorICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFVfQ19BQkl9X19dKQorICAjIGVhcmxpZXIsIGJ1dCBLQUkgQysrIDMuMmQgZG9lc24ndCBsaWtlIHRoaXMuCisgIHNlZCAtZSAncy8tL18vZycgPj4gY29uZmRlZnMuaCA8PEVPRgorI2lmbmRlZiBfXyR7SE9TVF9DUFV9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVfV9fIDEKKyNlbmRpZgorI2lmbmRlZiBfXyR7SE9TVF9DUFVfQ19BQkl9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIDEKKyNlbmRpZgorRU9GCisgIEFIX1RPUChbLyogQ1BVIGFuZCBDIEFCSSBpbmRpY2F0b3IgKi8KKyNpZm5kZWYgX19pMzg2X18KKyN1bmRlZiBfX2kzODZfXworI2VuZGlmCisjaWZuZGVmIF9feDg2XzY0X3gzMl9fCisjdW5kZWYgX194ODZfNjRfeDMyX18KKyNlbmRpZgorI2lmbmRlZiBfX3g4Nl82NF9fCisjdW5kZWYgX194ODZfNjRfXworI2VuZGlmCisjaWZuZGVmIF9fYWxwaGFfXworI3VuZGVmIF9fYWxwaGFfXworI2VuZGlmCisjaWZuZGVmIF9fYXJtX18KKyN1bmRlZiBfX2FybV9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm1oZl9fCisjdW5kZWYgX19hcm1oZl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9pbHAzMl9fCisjdW5kZWYgX19hcm02NF9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9fCisjdW5kZWYgX19hcm02NF9fCisjZW5kaWYKKyNpZm5kZWYgX19ocHBhX18KKyN1bmRlZiBfX2hwcGFfXworI2VuZGlmCisjaWZuZGVmIF9faHBwYTY0X18KKyN1bmRlZiBfX2hwcGE2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19pYTY0X2lscDMyX18KKyN1bmRlZiBfX2lhNjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9faWE2NF9fCisjdW5kZWYgX19pYTY0X18KKyNlbmRpZgorI2lmbmRlZiBfX202OGtfXworI3VuZGVmIF9fbTY4a19fCisjZW5kaWYKKyNpZm5kZWYgX19taXBzX18KKyN1bmRlZiBfX21pcHNfXworI2VuZGlmCisjaWZuZGVmIF9fbWlwc24zMl9fCisjdW5kZWYgX19taXBzbjMyX18KKyNlbmRpZgorI2lmbmRlZiBfX21pcHM2NF9fCisjdW5kZWYgX19taXBzNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwY19fCisjdW5kZWYgX19wb3dlcnBjX18KKyNlbmRpZgorI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisjdW5kZWYgX19wb3dlcnBjNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwYzY0X2VsZnYyX18KKyN1bmRlZiBfX3Bvd2VycGM2NF9lbGZ2Ml9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX18KKyN1bmRlZiBfX3Jpc2N2MzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9fCisjdW5kZWYgX19yaXNjdjY0X18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2MzJfaWxwMzJfXworI3VuZGVmIF9fcmlzY3YzMl9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2lscDMyX18KKyN1bmRlZiBfX3Jpc2N2NjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0X18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2xwNjRmX18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NGZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0ZF9fCisjdW5kZWYgX19yaXNjdjY0X2xwNjRkX18KKyNlbmRpZgorI2lmbmRlZiBfX3MzOTBfXworI3VuZGVmIF9fczM5MF9fCisjZW5kaWYKKyNpZm5kZWYgX19zMzkweF9fCisjdW5kZWYgX19zMzkweF9fCisjZW5kaWYKKyNpZm5kZWYgX19zaF9fCisjdW5kZWYgX19zaF9fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyY19fCisjdW5kZWYgX19zcGFyY19fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyYzY0X18KKyN1bmRlZiBfX3NwYXJjNjRfXworI2VuZGlmCitdKQorCitdKQorCisKK2RubCBTZXRzIHRoZSBIT1NUX0NQVV9DX0FCSV8zMkJJVCB2YXJpYWJsZSB0byAneWVzJyBpZiB0aGUgQyBsYW5ndWFnZSBBQkkKK2RubCAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkgaXMgYSAzMi1iaXQgb25lLCBvciB0byAnbm8nIG90aGVyd2lzZS4KK2RubCBUaGlzIGlzIGEgc2ltcGxpZmllZCB2YXJpYW50IG9mIGdsX0hPU1RfQ1BVX0NfQUJJLgorQUNfREVGVU4oW2dsX0hPU1RfQ1BVX0NfQUJJXzMyQklUXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19DQUNIRV9DSEVDSyhbMzItYml0IGhvc3QgQyBBQkldLCBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXRdLAorICAgIFtpZiB0ZXN0IC1uICIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiOyB0aGVuCisgICAgICAgY2FzZSAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiBpbgorICAgICAgICAgaTM4NiB8IHg4Nl82NC14MzIgfCBhcm0gfCBhcm1oZiB8IGFybTY0LWlscDMyIHwgaHBwYSB8IGlhNjQtaWxwMzIgfCBtaXBzIHwgbWlwc24zMiB8IHBvd2VycGMgfCByaXNjdiotaWxwMzIqIHwgczM5MCB8IHNwYXJjKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMgOzsKKyAgICAgICAgICopCisgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vIDs7CisgICAgICAgZXNhYworICAgICBlbHNlCisgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgICAgaVs0NTY3XTg2ICkKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHg4Nl82NCApCisgICAgICAgICAgICMgT24geDg2XzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgICAjIC0gNjQtYml0IGluc3RydWN0aW9uIHNldCwgNjQtYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiB4ODZfNjQKKyAgICAgICAgICAgIyAgIHdpdGggbmF0aXZlIFdpbmRvd3MgKG1pbmd3LCBNU1ZDKS4KKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICAgIyAtIDMyLWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogaTM4Ni4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIChkZWZpbmVkIF9feDg2XzY0X18gfHwgZGVmaW5lZCBfX2FtZDY0X18gXAorICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkIF9NX1g2NCB8fCBkZWZpbmVkIF9NX0FNRDY0KSBcCisgICAgICAgICAgICAgICAgICAgICAgJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgYXJtKiB8IGFhcmNoNjQgKQorICAgICAgICAgICAjIEFzc3VtZSBhcm0gd2l0aCBFQUJJLgorICAgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IGFybTY0LgorICAgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGFybSBvciBhcm1oZi4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19hYXJjaDY0X18gJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAgICMgT24gaHBwYSwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgMzItYml0IGNvZGUgb3IgNjQtYml0CisgICAgICAgICAgICMgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9MUDY0IGFuZCBfX0xQNjRfXy4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmZGVmIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIGlhNjQqICkKKyAgICAgICAgICAgIyBPbiBpYTY0IG9uIEhQLVVYLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyA2NC1iaXQgY29kZSBvcgorICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIG1pcHMqICkKKyAgICAgICAgICAgIyBXZSBzaG91bGQgYWxzbyBjaGVjayBmb3IgKF9NSVBTX1NaUFRSID09IDY0KSwgYnV0IGdjYyBrZWVwcyB0aGlzCisgICAgICAgICAgICMgYXQgMzIuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9NSVBTX1NaTE9ORyAmJiAoX01JUFNfU1pMT05HID09IDY0KQorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBwb3dlcnBjKiApCisgICAgICAgICAgICMgRGlmZmVyZW50IEFCSXMgYXJlIGluIHVzZSBvbiBBSVggdnMuIE1hYyBPUyBYIHZzLiBMaW51eCwqQlNELgorICAgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgICAjIHRoZW0gYmFzZWQgb24gdGhlIE9TLgorICAgICAgICAgICAjIE9uIHBvd2VycGM2NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgc3RpbGwgYmUgZ2VuZXJhdGluZworICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgICAjIGJlIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fcG93ZXJwYzY0X18gfHwgZGVmaW5lZCBfQVJDSF9QUEM2NAorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICByczYwMDAgKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMKKyAgICAgICAgICAgOzsKKworICAgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgICAjIFRoZXJlIGFyZSA2IEFCSXM6IGlscDMyLCBpbHAzMmYsIGlscDMyZCwgbHA2NCwgbHA2NGYsIGxwNjRkLgorICAgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBzMzkwKiApCisgICAgICAgICAgICMgT24gczM5MHgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCAoPSBzMzkweCkgY29kZQorICAgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHNwYXJjIHwgc3BhcmM2NCApCisgICAgICAgICAgICMgVWx0cmFTUEFSQ3MgcnVubmluZyBMaW51eCBoYXZlIGB1bmFtZSAtbWAgPSAic3BhcmM2NCIsIGJ1dCB0aGUKKyAgICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICAqKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ubworICAgICAgICAgICA7OworICAgICAgIGVzYWMKKyAgICAgZmkKKyAgICBdKQorCisgIEhPU1RfQ1BVX0NfQUJJXzMyQklUPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQiCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pY29udi5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4NWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKQEAgLTAsMCArMSwyODggQEAKKyMgaWNvbnYubTQgc2VyaWFsIDIxCitkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIDIwMDctMjAxNCwgMjAxNi0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKK2RubCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19ERUZVTihbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldLAorWworICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ljb252XSkKK10pCisKK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKK1sKKyAgZG5sIFNvbWUgc3lzdGVtcyBoYXZlIGljb252IGluIGxpYmMsIHNvbWUgaGF2ZSBpdCBpbiBsaWJpY29udiAoT1NGLzEgYW5kCisgIGRubCB0aG9zZSB3aXRoIHRoZSBzdGFuZGFsb25lIHBvcnRhYmxlIEdOVSBsaWJpY29udiBpbnN0YWxsZWQpLgorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKworICBkbmwgU2VhcmNoIGZvciBsaWJpY29udiBhbmQgZGVmaW5lIExJQklDT05WLCBMVExJQklDT05WIGFuZCBJTkNJQ09OVgorICBkbmwgYWNjb3JkaW5nbHkuCisgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKworICBkbmwgQWRkICRJTkNJQ09OViB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJpY29udiBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliaWNvbnYtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuIFRoZSBmaXJzdAorICBkbmwgQUNfTElOS19JRkVMU0Ugd2lsbCB0aGVuIGZhaWwsIHRoZSBzZWNvbmQgQUNfTElOS19JRkVMU0Ugd2lsbCBzdWNjZWVkLgorICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lDT05WXSkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGljb252XSwgW2FtX2N2X2Z1bmNfaWNvbnZdLCBbCisgICAgYW1fY3ZfZnVuY19pY29udj0ibm8sIGNvbnNpZGVyIGluc3RhbGxpbmcgR05VIGxpYmljb252IgorICAgIGFtX2N2X2xpYl9pY29udj1ubworICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgIFtbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aWNvbnYuaD4KKyAgICAgICAgIF1dLAorICAgICAgICAgW1tpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOworICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiICE9IHllczsgdGhlbgorICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CisgICAgICAgICAgIF1dLAorICAgICAgICAgICBbW2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKKyAgICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgICAgW2FtX2N2X2xpYl9pY29udj15ZXNdCisgICAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgorICAgIGZpCisgIF0pCisgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd29ya2luZyBpY29udl0sIFthbV9jdl9mdW5jX2ljb252X3dvcmtzXSwgWworICAgICAgZG5sIFRoaXMgdGVzdHMgYWdhaW5zdCBidWdzIGluIEFJWCA1LjEsIEFJWCA2LjEuLjcuMSwgSFAtVVggMTEuMTEsCisgICAgICBkbmwgU29sYXJpcyAxMC4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBpZiB0ZXN0ICRhbV9jdl9saWJfaWNvbnYgPSB5ZXM7IHRoZW4KKyAgICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorICAgICAgZmkKKyAgICAgIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9bm8KKyAgICAgIGZvciBhY19pY29udl9jb25zdCBpbiAnJyAnY29uc3QnOyBkbworICAgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxpY29udi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZuZGVmIElDT05WX0NPTlNUCisjIGRlZmluZSBJQ09OVl9DT05TVCAkYWNfaWNvbnZfY29uc3QKKyNlbmRpZgorICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgIFtbaW50IHJlc3VsdCA9IDA7CisgIC8qIFRlc3QgYWdhaW5zdCBBSVggNS4xIGJ1ZzogRmFpbHVyZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGFibGUgZnJvbSBzdWNjZXNzZnVsCisgICAgIHJldHVybnMuICAqLworICB7CisgICAgaWNvbnZfdCBjZF91dGY4X3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICJVVEYtOCIpOworICAgIGlmIChjZF91dGY4X3RvXzg4NTkxICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBJQ09OVl9DT05TVCBjaGFyIGlucHV0W10gPSAiXDM0MlwyMDJcMjU0IjsgLyogRVVSTyBTSUdOICovCisgICAgICAgIGNoYXIgYnVmWzEwXTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gc3RybGVuIChpbnB1dCk7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF91dGY4X3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzID09IDApCisgICAgICAgICAgcmVzdWx0IHw9IDE7CisgICAgICAgIGljb252X2Nsb3NlIChjZF91dGY4X3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgU29sYXJpcyAxMCBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20KKyAgICAgc3VjY2Vzc2Z1bCByZXR1cm5zLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfYXNjaWlfdG9fODg1OTEgPSBpY29udl9vcGVuICgiSVNPODg1OS0xIiwgIjY0NiIpOworICAgIGlmIChjZF9hc2NpaV90b184ODU5MSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwyNjMiOworICAgICAgICBjaGFyIGJ1ZlsxMF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfYXNjaWlfdG9fODg1OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkX2FzY2lpX3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgQUlYIDYuMS4uNy4xIGJ1ZzogQnVmZmVyIG92ZXJydW4uICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIklTTy04ODU5LTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDQiOworICAgICAgICBzdGF0aWMgY2hhciBidWZbMl0gPSB7IChjaGFyKTB4REUsIChjaGFyKTB4QUQgfTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF84ODU5MV90b191dGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzICE9IChzaXplX3QpKC0xKSB8fCBvdXRwdHIgLSBidWYgPiAxIHx8IGJ1ZlsxXSAhPSAoY2hhcikweEFEKQorICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CisgICAgICB9CisgIH0KKyNpZiAwIC8qIFRoaXMgYnVnIGNvdWxkIGJlIHdvcmtlZCBhcm91bmQgYnkgdGhlIGNhbGxlci4gICovCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IFBvc2l0aXZlIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIDAuICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiaXNvODg1OTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDRyZ2VyIG1pdCBiXDM2NnNlbiBCXDM3NGJjaGVuIG9obmUgQXVnZW5tYVwzMzciOworICAgICAgICBjaGFyIGJ1Zls1MF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKChpbnQpcmVzID4gMCkKKyAgICAgICAgICByZXN1bHQgfD0gODsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkXzg4NTkxX3RvX3V0ZjgpOworICAgICAgfQorICB9CisjZW5kaWYKKyAgLyogVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzogTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzCisgICAgIHByb3ZpZGVkLiAgKi8KKyAgeworICAgIC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCisgICAgaWNvbnZfdCBjZDIgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiZXVjSlAiKTsKKyAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKyAgICBpY29udl90IGNkMyA9IGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKTsKKyAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLworICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKyAgICBpZiAoY2QxID09IChpY29udl90KSgtMSkgJiYgY2QyID09IChpY29udl90KSgtMSkKKyAgICAgICAgJiYgY2QzID09IChpY29udl90KSgtMSkgJiYgY2Q0ID09IChpY29udl90KSgtMSkpCisgICAgICByZXN1bHQgfD0gMTY7CisgICAgaWYgKGNkMSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMSk7CisgICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMik7CisgICAgaWYgKGNkMyAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CisgICAgaWYgKGNkNCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkNCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK11dKV0sCisgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAorICAgICAgICAgIFtjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICBhaXgqIHwgaHB1eCopIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICopICAgICAgICAgICAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICBlc2FjXSkKKyAgICAgICAgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiID0gbm8gfHwgYnJlYWsKKyAgICAgIGRvbmUKKyAgICAgIExJQlM9IiRhbV9zYXZlX0xJQlMiCisgICAgXSkKKyAgICBjYXNlICIkYW1fY3ZfZnVuY19pY29udl93b3JrcyIgaW4KKyAgICAgICpubykgYW1fZnVuY19pY29udj1ubyBhbV9jdl9saWJfaWNvbnY9bm8gOzsKKyAgICAgICopICAgYW1fZnVuY19pY29udj15ZXMgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBhbV9mdW5jX2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubworICBmaQorICBpZiB0ZXN0ICIkYW1fZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfSUNPTlZdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udigpIGZ1bmN0aW9uIGFuZCBpdCB3b3Jrcy5dKQorICBmaQorICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udl0pCisgICAgQUNfTVNHX1JFU1VMVChbJExJQklDT05WXSkKKyAgZWxzZQorICAgIGRubCBJZiAkTElCSUNPTlYgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZCAkSU5DSUNPTlYKKyAgICBkbmwgZWl0aGVyLgorICAgIENQUEZMQUdTPSIkYW1fc2F2ZV9DUFBGTEFHUyIKKyAgICBMSUJJQ09OVj0KKyAgICBMVExJQklDT05WPQorICBmaQorICBBQ19TVUJTVChbTElCSUNPTlZdKQorICBBQ19TVUJTVChbTFRMSUJJQ09OVl0pCitdKQorCitkbmwgRGVmaW5lIEFNX0lDT05WIHVzaW5nIEFDX0RFRlVOX09OQ0UgZm9yIEF1dG9jb25mID49IDIuNjQsIGluIG9yZGVyIHRvCitkbmwgYXZvaWQgd2FybmluZ3MgbGlrZQorZG5sICJ3YXJuaW5nOiBBQ19SRVFVSVJFOiBgQU1fSUNPTlYnIHdhcyBleHBhbmRlZCBiZWZvcmUgaXQgd2FzIHJlcXVpcmVkIi4KK2RubCBUaGlzIGlzIHRyaWNreSBiZWNhdXNlIG9mIHRoZSB3YXkgJ2FjbG9jYWwnIGlzIGltcGxlbWVudGVkOgorZG5sIC0gSXQgcmVxdWlyZXMgZGVmaW5pbmcgYW4gYXV4aWxpYXJ5IG1hY3JvIHdob3NlIG5hbWUgZW5kcyBpbiBBQ19ERUZVTi4KK2RubCAgIE90aGVyd2lzZSBhY2xvY2FsJ3MgaW5pdGlhbCBzY2FuIHBhc3Mgd291bGQgbWlzcyB0aGUgbWFjcm8gZGVmaW5pdGlvbi4KK2RubCAtIEl0IHJlcXVpcmVzIGEgbGluZSBicmVhayBpbnNpZGUgdGhlIEFDX0RFRlVOX09OQ0UgYW5kIEFDX0RFRlVOIGV4cGFuc2lvbnMuCitkbmwgICBPdGhlcndpc2UgYWNsb2NhbCB3b3VsZCBlbWl0IG1hbnkgIlVzZSBvZiB1bmluaXRpYWxpemVkIHZhbHVlICQxIgorZG5sICAgd2FybmluZ3MuCittNF9kZWZpbmUoW2dsX2ljb252X0FDX0RFRlVOXSwKKyAgbTRfdmVyc2lvbl9wcmVyZXEoWzIuNjRdLAorICAgIFtbQUNfREVGVU5fT05DRSgKKyAgICAgICAgWyQxXSwgWyQyXSldXSwKKyAgICBbbTRfaWZkZWYoW2dsXzAwR05VTElCXSwKKyAgICAgICBbW0FDX0RFRlVOX09OQ0UoCisgICAgICAgICAgIFskMV0sIFskMl0pXV0sCisgICAgICAgW1tBQ19ERUZVTigKKyAgICAgICAgICAgWyQxXSwgWyQyXSldXSldKSkKK2dsX2ljb252X0FDX0RFRlVOKFtBTV9JQ09OVl0sCitbCisgIEFNX0lDT05WX0xJTksKKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNvbnYgZGVjbGFyYXRpb25dKQorICAgIEFDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvdG9faWNvbnZdLCBbCisgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCisjaWYgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykKK3NpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKKyNlbHNlCitzaXplX3QgaWNvbnYoKTsKKyNlbmRpZgorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tdXSldLAorICAgICAgICBbYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iIl0sCisgICAgICAgIFthbV9jdl9wcm90b19pY29udl9hcmcxPSJjb25zdCJdKQorICAgICAgYW1fY3ZfcHJvdG9faWNvbnY9ImV4dGVybiBzaXplX3QgaWNvbnYgKGljb252X3QgY2QsICRhbV9jdl9wcm90b19pY29udl9hcmcxIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7Il0pCisgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIlskXWFtX2N2X3Byb3RvX2ljb252IiB8IHRyIC1zICcgJyB8IHNlZCAtZSAncy8oIC8oLydgCisgICAgQUNfTVNHX1JFU1VMVChbCisgICAgICAgICAkYW1fY3ZfcHJvdG9faWNvbnZdKQorICBlbHNlCisgICAgZG5sIFdoZW4gY29tcGlsaW5nIEdOVSBsaWJpY29udiBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IGhhdmUgaWNvbnYgeWV0LAorICAgIGRubCBwaWNrIHRoZSBQT1NJWCBjb21wbGlhbnQgZGVjbGFyYXRpb24gd2l0aG91dCAnY29uc3QnLgorICAgIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtJQ09OVl9DT05TVF0sIFskYW1fY3ZfcHJvdG9faWNvbnZfYXJnMV0sCisgICAgW0RlZmluZSBhcyBjb25zdCBpZiB0aGUgZGVjbGFyYXRpb24gb2YgaWNvbnYoKSBuZWVkcyBjb25zdC5dKQorICBkbmwgQWxzbyBzdWJzdGl0dXRlIElDT05WX0NPTlNUIGluIHRoZSBnbnVsaWIgZ2VuZXJhdGVkIDxpY29udi5oPi4KKyAgbTRfaWZkZWYoW2dsX0lDT05WX0hfREVGQVVMVFNdLAorICAgIFtBQ19SRVFVSVJFKFtnbF9JQ09OVl9IX0RFRkFVTFRTXSkKKyAgICAgaWYgdGVzdCAtbiAiJGFtX2N2X3Byb3RvX2ljb252X2FyZzEiOyB0aGVuCisgICAgICAgSUNPTlZfQ09OU1Q9ImNvbnN0IgorICAgICBmaQorICAgIF0pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZTZmNTBlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00CkBAIC0wLDAgKzEsNzIgQEAKKyMgaW50bG1hY29zeC5tNCBzZXJpYWwgNiAoZ2V0dGV4dC0wLjIwKQorZG5sIENvcHlyaWdodCAoQykgMjAwNC0yMDE0LCAyMDE2LCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIENoZWNrcyBmb3Igc3BlY2lhbCBvcHRpb25zIG5lZWRlZCBvbiBNYWMgT1MgWC4KK2RubCBEZWZpbmVzIElOVExfTUFDT1NYX0xJQlMuCitBQ19ERUZVTihbZ3RfSU5UTF9NQUNPU1hdLAorWworICBkbmwgQ2hlY2sgZm9yIEFQSSBpbnRyb2R1Y2VkIGluIE1hYyBPUyBYIDEwLjQuCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZV0sCisgICAgW2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZV0sCisgICAgW2d0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICBbWyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+XV0sCisgICAgICAgICAgW1tDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKE5VTEwsIE5VTEwpXV0pXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlPXllc10sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT1ub10pCisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0NGUFJFRkVSRU5DRVNDT1BZQVBQVkFMVUVdLCBbMV0sCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1hYyBPUyBYIGZ1bmN0aW9uIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgaW4gdGhlIENvcmVGb3VuZGF0aW9uIGZyYW1ld29yay5dKQorICBmaQorICBkbmwgQ2hlY2sgZm9yIEFQSSBpbnRyb2R1Y2VkIGluIE1hYyBPUyBYIDEwLjUuCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgQ0ZMb2NhbGVDb3B5Q3VycmVudF0sIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnRdLAorICAgIFtndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaD5dXSwKKyAgICAgICAgICBbW0NGTG9jYWxlQ29weUN1cnJlbnQoKTtdXSldLAorICAgICAgIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQ9eWVzXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PW5vXSkKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfQ0ZMT0NBTEVDT1BZQ1VSUkVOVF0sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTWFjIE9TIFggZnVuY3Rpb24gQ0ZMb2NhbGVDb3B5Q3VycmVudCBpbiB0aGUgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLl0pCisgIGZpCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzXSwgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzXSwKKyAgICBbZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+XV0sCisgICAgICAgICAgW1tDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKTtdXSldLAorICAgICAgIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcz15ZXNdLAorICAgICAgIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcz1ub10pCisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfQ0ZMT0NBTEVDT1BZUFJFRkVSUkVETEFOR1VBR0VTXSwgWzFdLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMgaW4gdGhlIENvcmVGb3VuZGF0aW9uIGZyYW1ld29yay5dKQorICBmaQorICBJTlRMX01BQ09TWF9MSUJTPQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXMgXAorICAgICB8fCB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQgPSB5ZXMgXAorICAgICB8fCB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyA9IHllczsgdGhlbgorICAgIElOVExfTUFDT1NYX0xJQlM9Ii1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgZmkKKyAgQUNfU1VCU1QoW0lOVExfTUFDT1NYX0xJQlNdKQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxkLm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4NzE5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxkLm00CkBAIC0wLDAgKzEsMTY4IEBACisjIGxpYi1sZC5tNCBzZXJpYWwgOQorZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzLCAyMDA5LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIFN1YnJvdXRpbmVzIG9mIGxpYnRvb2wubTQsCitkbmwgd2l0aCByZXBsYWNlbWVudHMgcy9fKkxUX1BBVEgvQUNfTElCX1BST0cvIGFuZCBzL2x0Xy9hY2xfLyB0byBhdm9pZAorZG5sIGNvbGxpc2lvbiB3aXRoIGxpYnRvb2wubTQuCisKK2RubCBGcm9tIGxpYnRvb2wtMi40LiBTZXRzIHRoZSB2YXJpYWJsZSB3aXRoX2dudV9sZCB0byB5ZXMgb3Igbm8uCitBQ19ERUZVTihbQUNfTElCX1BST0dfTERfR05VXSwKK1tBQ19DQUNIRV9DSEVDSyhbaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGRdLCBbYWNsX2N2X3Byb2dfZ251X2xkXSwKK1sjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZHMgb25seSBhY2NlcHQgLXYuCitjYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgorKkdOVSogfCAqJ3dpdGggQkZEJyopCisgIGFjbF9jdl9wcm9nX2dudV9sZD15ZXMKKyAgOzsKKyopCisgIGFjbF9jdl9wcm9nX2dudV9sZD1ubworICA7OworZXNhY10pCit3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCitdKQorCitkbmwgRnJvbSBsaWJ0b29sLTIuNC4gU2V0cyB0aGUgdmFyaWFibGUgTEQuCitBQ19ERUZVTihbQUNfTElCX1BST0dfTERdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorCitBQ19BUkdfV0lUSChbZ251LWxkXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLAorICAgICAgICBbYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXV0pXSwKKyAgICBbdGVzdCAiJHdpdGh2YWwiID0gbm8gfHwgd2l0aF9nbnVfbGQ9eWVzXSwKKyAgICBbd2l0aF9nbnVfbGQ9bm9dKWRubAorCisjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdoaWNoCisgICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRoYXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorICAjIHNvIHdlIGhhdmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhlIHRlc3QuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICYmIHsgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKKyAgICAgICB9CitmaQorCitpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCisgIEFDX01TR19DSEVDS0lORyhbZm9yIGxkXSkKK2VsaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGQgdXNlZCBieSAkQ0NdKQorZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCitlbHNlCisgIEFDX01TR19DSEVDS0lORyhbZm9yIG5vbi1HTlUgbGRdKQorZmkKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDoKK2Vsc2UKKyAgQUNfQ0FDSEVfVkFMKFthY2xfY3ZfcGF0aF9MRF0sCisgIFsKKyAgICBhY2xfY3ZfcGF0aF9MRD0gIyBGaW5hbCByZXN1bHQgb2YgdGhpcyB0ZXN0CisgICAgYWNfcHJvZz1sZCAjIFByb2dyYW0gdG8gc2VhcmNoIGluICRQQVRICisgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgorICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgICAqLSotbWluZ3cqKQorICAgICAgICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICAgICAgICBhY2xfb3V0cHV0PWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjUgfCB0ciAtZCAnXDAxNSdgIDs7CisgICAgICAgICopCisgICAgICAgICAgYWNsX291dHB1dD1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1YCA7OworICAgICAgZXNhYworICAgICAgY2FzZSAkYWNsX291dHB1dCBpbgorICAgICAgICAjIEFjY2VwdCBhYnNvbHV0ZSBwYXRocy4KKyAgICAgICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQorICAgICAgICAgIHJlX2RpcmVsdD0nL1tbXi9dXVtbXi9dXSovXC5cLi8nCisgICAgICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGhuYW1lIG9mIGxkCisgICAgICAgICAgYWNsX291dHB1dD1gZWNobyAiJGFjbF9vdXRwdXQiIHwgc2VkICdzJVxcXFwlLyVnJ2AKKyAgICAgICAgICB3aGlsZSBlY2hvICIkYWNsX291dHB1dCIgfCBncmVwICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbworICAgICAgICAgICAgYWNsX291dHB1dD1gZWNobyAkYWNsX291dHB1dCB8IHNlZCAicyUkcmVfZGlyZWx0JS8lImAKKyAgICAgICAgICBkb25lCisgICAgICAgICAgIyBHb3QgdGhlIHBhdGhuYW1lLiBObyBzZWFyY2ggaW4gUEFUSCBpcyBuZWVkZWQuCisgICAgICAgICAgYWNsX2N2X3BhdGhfTEQ9IiRhY2xfb3V0cHV0IgorICAgICAgICAgIGFjX3Byb2c9CisgICAgICAgICAgOzsKKyAgICAgICAgIiIpCisgICAgICAgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCisgICAgICAgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgICBpZiB0ZXN0IC1uICIkYWNfcHJvZyI7IHRoZW4KKyAgICAgICMgU2VhcmNoIGZvciAkYWNfcHJvZyBpbiAkUEFUSC4KKyAgICAgIGFjbF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICAgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgICAgIElGUz0iJGFjbF9zYXZlX2lmcyIKKyAgICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCisgICAgICAgICAgYWNsX2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uLAorICAgICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCisgICAgICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCisgICAgICAgICAgY2FzZSBgIiRhY2xfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgorICAgICAgICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCisgICAgICAgICAgICAgIHRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgIHRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYmIGJyZWFrCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkYWNsX3NhdmVfaWZzIgorICAgIGZpCisgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKi0qLWFpeCopCisgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fcG93ZXJwYzY0X18gfHwgZGVmaW5lZCBfQVJDSF9QUEM2NAorICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICBbIyBUaGUgY29tcGlsZXIgcHJvZHVjZXMgNjQtYml0IGNvZGUuIEFkZCBvcHRpb24gJy1iNjQnIHNvIHRoYXQgdGhlCisgICAgICAgICAgICMgbGlua2VyIGdyb2tzIDY0LWJpdCBvYmplY3QgZmlsZXMuCisgICAgICAgICAgIGNhc2UgIiRhY2xfY3ZfcGF0aF9MRCAiIGluCisgICAgICAgICAgICAgKiIgLWI2NCAiKikgOzsKKyAgICAgICAgICAgICAqKSBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9jdl9wYXRoX0xEIC1iNjQiIDs7CisgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBdLCBbXSkKKyAgICAgICAgOzsKKyAgICAgIHNwYXJjNjQtKi1uZXRic2QqKQorICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3NwYXJjdjkgfHwgZGVmaW5lZCBfX2FyY2g2NF9fCisgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICBdXSldLAorICAgICAgICAgIFtdLAorICAgICAgICAgIFsjIFRoZSBjb21waWxlciBwcm9kdWNlcyAzMi1iaXQgY29kZS4gQWRkIG9wdGlvbiAnLW0gZWxmMzJfc3BhcmMnCisgICAgICAgICAgICMgc28gdGhhdCB0aGUgbGlua2VyIGdyb2tzIDMyLWJpdCBvYmplY3QgZmlsZXMuCisgICAgICAgICAgIGNhc2UgIiRhY2xfY3ZfcGF0aF9MRCAiIGluCisgICAgICAgICAgICAgKiIgLW0gZWxmMzJfc3BhcmMgIiopIDs7CisgICAgICAgICAgICAgKikgYWNsX2N2X3BhdGhfTEQ9IiRhY2xfY3ZfcGF0aF9MRCAtbSBlbGYzMl9zcGFyYyIgOzsKKyAgICAgICAgICAgZXNhYworICAgICAgICAgIF0pCisgICAgICAgIDs7CisgICAgZXNhYworICBdKQorICBMRD0iJGFjbF9jdl9wYXRoX0xEIgorZmkKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbJExEXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm9dKQorICBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIXSkKK2ZpCitBQ19MSUJfUFJPR19MRF9HTlUKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1saW5rLm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGluay5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmYxMDczCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGluay5tNApAQCAtMCwwICsxLDc3NCBAQAorIyBsaWItbGluay5tNCBzZXJpYWwgMjgKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK0FDX1BSRVJFUShbMi42MV0pCisKK2RubCBBQ19MSUJfTElOS0ZMQUdTKG5hbWUgWywgZGVwZW5kZW5jaWVzXSkgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kCitkbmwgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCitkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9IGFuZCBMVExJQiR7TkFNRX0gdmFyaWFibGVzIGFuZAorZG5sIGF1Z21lbnRzIHRoZSBDUFBGTEFHUyB2YXJpYWJsZS4KK2RubCBTZXRzIGFuZCBBQ19TVUJTVHMgdGhlIExJQiR7TkFNRX1fUFJFRklYIHZhcmlhYmxlIHRvIG5vbmVtcHR5IGlmIGxpYm5hbWUKK2RubCB3YXMgZm91bmQgaW4gJHtMSUIke05BTUV9X1BSRUZJWH0vJGFjbF9saWJkaXJzdGVtLgorQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NdLAorWworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorICBwdXNoZGVmKFtOYW1lXSxbbTRfdHJhbnNsaXQoWyQxXSxbLi8rLV0sIFtfX19fXSldKQorICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBsaW5rIHdpdGggbGliW10kMV0sIFthY19jdl9saWJbXU5hbWVbXV9saWJzXSwgWworICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbJDFdLCBbJDJdKQorICAgIGFjX2N2X2xpYltdTmFtZVtdX2xpYnM9IiRMSUJbXU5BTUUiCisgICAgYWNfY3ZfbGliW11OYW1lW11fbHRsaWJzPSIkTFRMSUJbXU5BTUUiCisgICAgYWNfY3ZfbGliW11OYW1lW11fY3BwZmxhZ3M9IiRJTkNbXU5BTUUiCisgICAgYWNfY3ZfbGliW11OYW1lW11fcHJlZml4PSIkTElCW11OQU1FW11fUFJFRklYIgorICBdKQorICBMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9saWJzIgorICBMVExJQltdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicyIKKyAgSU5DW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fY3BwZmxhZ3MiCisgIExJQltdTkFNRVtdX1BSRUZJWD0iJGFjX2N2X2xpYltdTmFtZVtdX3ByZWZpeCIKKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRVtfUFJFRklYXSkKKyAgZG5sIEFsc28gc2V0IEhBVkVfTElCW11OQU1FIHNvIHRoYXQgQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbiByZXVzZSB0aGUKKyAgZG5sIHJlc3VsdHMgb2YgdGhpcyBzZWFyY2ggd2hlbiB0aGlzIGxpYnJhcnkgYXBwZWFycyBhcyBhIGRlcGVuZGVuY3kuCisgIEhBVkVfTElCW11OQU1FPXllcworICBwb3BkZWYoW05BTUVdKQorICBwb3BkZWYoW05hbWVdKQorXSkKKworZG5sIEFDX0xJQl9IQVZFX0xJTktGTEFHUyhuYW1lLCBkZXBlbmRlbmNpZXMsIGluY2x1ZGVzLCB0ZXN0Y29kZSwgW21pc3NpbmctbWVzc2FnZV0pCitkbmwgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQKK2RubCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMsIHRvZ2V0aGVyIHdpdGggdGhlIHNwZWNpZmllZCBpbmNsdWRlIGZpbGVzIGFuZAorZG5sIHRoZSBhYmlsaXR5IHRvIGNvbXBpbGUgYW5kIGxpbmsgdGhlIHNwZWNpZmllZCB0ZXN0Y29kZS4gVGhlIG1pc3NpbmctbWVzc2FnZQorZG5sIGRlZmF1bHRzIHRvICdubycgYW5kIG1heSBjb250YWluIGFkZGl0aW9uYWwgaGludHMgZm9yIHRoZSB1c2VyLgorZG5sIElmIGZvdW5kLCBpdCBzZXRzIGFuZCBBQ19TVUJTVHMgSEFWRV9MSUIke05BTUV9PXllcyBhbmQgdGhlIExJQiR7TkFNRX0KK2RubCBhbmQgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLCBhbmQKK2RubCAjZGVmaW5lcyBIQVZFX0xJQiR7TkFNRX0gdG8gMS4gT3RoZXJ3aXNlLCBpdCBzZXRzIGFuZCBBQ19TVUJTVHMKK2RubCBIQVZFX0xJQiR7TkFNRX09bm8gYW5kIExJQiR7TkFNRX0gYW5kIExUTElCJHtOQU1FfSB0byBlbXB0eS4KK2RubCBTZXRzIGFuZCBBQ19TVUJTVHMgdGhlIExJQiR7TkFNRX1fUFJFRklYIHZhcmlhYmxlIHRvIG5vbmVtcHR5IGlmIGxpYm5hbWUKK2RubCB3YXMgZm91bmQgaW4gJHtMSUIke05BTUV9X1BSRUZJWH0vJGFjbF9saWJkaXJzdGVtLgorQUNfREVGVU4oW0FDX0xJQl9IQVZFX0xJTktGTEFHU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisgIHB1c2hkZWYoW05hbWVdLFttNF90cmFuc2xpdChbJDFdLFsuLystXSwgW19fX19dKV0pCisgIHB1c2hkZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorCisgIGRubCBTZWFyY2ggZm9yIGxpYltdTmFtZSBhbmQgZGVmaW5lIExJQltdTkFNRSwgTFRMSUJbXU5BTUUgYW5kIElOQ1tdTkFNRQorICBkbmwgYWNjb3JkaW5nbHkuCisgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbJDFdLCBbJDJdKQorCisgIGRubCBBZGQgJElOQ1tdTkFNRSB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJbXU5hbWUgYW5kIG5vdCBkaXNhYmxlZCBpdHMgdXNlCisgIGRubCB2aWEgLS13aXRob3V0LWxpYltdTmFtZS1wcmVmaXgsIGhlIHdhbnRzIHRvIHVzZSBpdC4KKyAgYWNfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNdTkFNRSkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lXSwgWworICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCisgICAgZG5sIElmICRMSUJbXU5BTUUgY29udGFpbnMgc29tZSAtbCBvcHRpb25zLCBhZGQgaXQgdG8gdGhlIGVuZCBvZiBMSUJTLAorICAgIGRubCBiZWNhdXNlIHRoZXNlIC1sIG9wdGlvbnMgbWlnaHQgcmVxdWlyZSAtTCBvcHRpb25zIHRoYXQgYXJlIHByZXNlbnQgaW4KKyAgICBkbmwgTElCUy4gLWwgb3B0aW9ucyBiZW5lZml0IG9ubHkgZnJvbSB0aGUgLUwgb3B0aW9ucyBsaXN0ZWQgYmVmb3JlIGl0LgorICAgIGRubCBPdGhlcndpc2UsIGFkZCBpdCB0byB0aGUgZnJvbnQgb2YgTElCUywgYmVjYXVzZSBpdCBtYXkgYmUgYSBzdGF0aWMKKyAgICBkbmwgbGlicmFyeSB0aGF0IGRlcGVuZHMgb24gYW5vdGhlciBzdGF0aWMgbGlicmFyeSB0aGF0IGlzIHByZXNlbnQgaW4gTElCUy4KKyAgICBkbmwgU3RhdGljIGxpYnJhcmllcyBiZW5lZml0IG9ubHkgZnJvbSB0aGUgc3RhdGljIGxpYnJhcmllcyBsaXN0ZWQgYWZ0ZXIKKyAgICBkbmwgaXQuCisgICAgY2FzZSAiICRMSUJbXU5BTUUiIGluCisgICAgICAqIiAtbCIqKSBMSUJTPSIkTElCUyAkTElCW11OQU1FIiA7OworICAgICAgKikgICAgICAgTElCUz0iJExJQltdTkFNRSAkTElCUyIgOzsKKyAgICBlc2FjCisgICAgQUNfTElOS19JRkVMU0UoCisgICAgICBbQUNfTEFOR19QUk9HUkFNKFtbJDNdXSwgW1skNF1dKV0sCisgICAgICBbYWNfY3ZfbGliW11OYW1lPXllc10sCisgICAgICBbYWNfY3ZfbGliW11OYW1lPSdtNF9pZihbJDVdLCBbXSwgW25vXSwgW1skNV1dKSddKQorICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCisgIF0pCisgIGlmIHRlc3QgIiRhY19jdl9saWJbXU5hbWUiID0geWVzOyB0aGVuCisgICAgSEFWRV9MSUJbXU5BTUU9eWVzCisgICAgQUNfREVGSU5FKFtIQVZFX0xJQl1OQU1FLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJdWyQxIGxpYnJhcnkuXSkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBsaW5rIHdpdGggbGliW10kMV0pCisgICAgQUNfTVNHX1JFU1VMVChbJExJQltdTkFNRV0pCisgIGVsc2UKKyAgICBIQVZFX0xJQltdTkFNRT1ubworICAgIGRubCBJZiAkTElCW11OQU1FIGRpZG4ndCBsZWFkIHRvIGEgdXNhYmxlIGxpYnJhcnksIHdlIGRvbid0IG5lZWQKKyAgICBkbmwgJElOQ1tdTkFNRSBlaXRoZXIuCisgICAgQ1BQRkxBR1M9IiRhY19zYXZlX0NQUEZMQUdTIgorICAgIExJQltdTkFNRT0KKyAgICBMVExJQltdTkFNRT0KKyAgICBMSUJbXU5BTUVbXV9QUkVGSVg9CisgIGZpCisgIEFDX1NVQlNUKFtIQVZFX0xJQl1OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUVbX1BSRUZJWF0pCisgIHBvcGRlZihbTkFNRV0pCisgIHBvcGRlZihbTmFtZV0pCitdKQorCitkbmwgRGV0ZXJtaW5lIHRoZSBwbGF0Zm9ybSBkZXBlbmRlbnQgcGFyYW1ldGVycyBuZWVkZWQgdG8gdXNlIHJwYXRoOgorZG5sICAgYWNsX2xpYmV4dCwKK2RubCAgIGFjbF9zaGxpYmV4dCwKK2RubCAgIGFjbF9saWJuYW1lX3NwZWMsCitkbmwgICBhY2xfbGlicmFyeV9uYW1lc19zcGVjLAorZG5sICAgYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsCitkbmwgICBhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwKK2RubCAgIGFjbF9oYXJkY29kZV9kaXJlY3QsCitkbmwgICBhY2xfaGFyZGNvZGVfbWludXNfTC4KK0FDX0RFRlVOKFtBQ19MSUJfUlBBVEhdLAorWworICBkbmwgQ29tcGxhaW4gaWYgY29uZmlnLnJwYXRoIGlzIG1pc3NpbmcuCisgIEFDX1JFUVVJUkVfQVVYX0ZJTEUoW2NvbmZpZy5ycGF0aF0pCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKSAgICAgICAgICAgICAgICBkbmwgd2UgdXNlICRDQywgJEdDQywgJExERkxBR1MKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BST0dfTERdKSAgICAgICAgICAgIGRubCB3ZSB1c2UgJExELCAkd2l0aF9nbnVfbGQKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSAgICAgICAgIGRubCB3ZSB1c2UgJGhvc3QKKyAgQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pIGRubCB3ZSB1c2UgJGFjX2F1eF9kaXIKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzaGFyZWQgbGlicmFyeSBydW4gcGF0aCBvcmlnaW5dLCBbYWNsX2N2X3JwYXRoXSwgWworICAgIENDPSIkQ0MiIEdDQz0iJEdDQyIgTERGTEFHUz0iJExERkxBR1MiIExEPSIkTEQiIHdpdGhfZ251X2xkPSIkd2l0aF9nbnVfbGQiIFwKKyAgICAke0NPTkZJR19TSEVMTC0vYmluL3NofSAiJGFjX2F1eF9kaXIvY29uZmlnLnJwYXRoIiAiJGhvc3QiID4gY29uZnRlc3Quc2gKKyAgICAuIC4vY29uZnRlc3Quc2gKKyAgICBybSAtZiAuL2NvbmZ0ZXN0LnNoCisgICAgYWNsX2N2X3JwYXRoPWRvbmUKKyAgXSkKKyAgd2w9IiRhY2xfY3Zfd2wiCisgIGFjbF9saWJleHQ9IiRhY2xfY3ZfbGliZXh0IgorICBhY2xfc2hsaWJleHQ9IiRhY2xfY3Zfc2hsaWJleHQiCisgIGFjbF9saWJuYW1lX3NwZWM9IiRhY2xfY3ZfbGlibmFtZV9zcGVjIgorICBhY2xfbGlicmFyeV9uYW1lc19zcGVjPSIkYWNsX2N2X2xpYnJhcnlfbmFtZXNfc3BlYyIKKyAgYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRhY2xfY3ZfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKKyAgYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRhY2xfY3ZfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKKyAgYWNsX2hhcmRjb2RlX2RpcmVjdD0iJGFjbF9jdl9oYXJkY29kZV9kaXJlY3QiCisgIGFjbF9oYXJkY29kZV9taW51c19MPSIkYWNsX2N2X2hhcmRjb2RlX21pbnVzX0wiCisgIGRubCBEZXRlcm1pbmUgd2hldGhlciB0aGUgdXNlciB3YW50cyBycGF0aCBoYW5kbGluZyBhdCBhbGwuCisgIEFDX0FSR19FTkFCTEUoW3JwYXRoXSwKKyAgICBbICAtLWRpc2FibGUtcnBhdGggICAgICAgICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzXSwKKyAgICA6LCBlbmFibGVfcnBhdGg9eWVzKQorXSkKKworZG5sIEFDX0xJQl9GUk9NUEFDS0FHRShuYW1lLCBwYWNrYWdlKQorZG5sIGRlY2xhcmVzIHRoYXQgbGlibmFtZSBjb21lcyBmcm9tIHRoZSBnaXZlbiBwYWNrYWdlLiBUaGUgY29uZmlndXJlIGZpbGUKK2RubCB3aWxsIHRoZW4gbm90IGhhdmUgYSAtLXdpdGgtbGlibmFtZS1wcmVmaXggb3B0aW9uIGJ1dCBhCitkbmwgLS13aXRoLXBhY2thZ2UtcHJlZml4IG9wdGlvbi4gU2V2ZXJhbCBsaWJyYXJpZXMgY2FuIGNvbWUgZnJvbSB0aGUgc2FtZQorZG5sIHBhY2thZ2UuIFRoaXMgZGVjbGFyYXRpb24gbXVzdCBvY2N1ciBiZWZvcmUgYW4gQUNfTElCX0xJTktGTEFHUyBvciBzaW1pbGFyCitkbmwgbWFjcm8gY2FsbCB0aGF0IHNlYXJjaGVzIGZvciBsaWJuYW1lLgorQUNfREVGVU4oW0FDX0xJQl9GUk9NUEFDS0FHRV0sCitbCisgIHB1c2hkZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBkZWZpbmUoW2FjbF9mcm9tcGFja2FnZV9dTkFNRSwgWyQyXSkKKyAgcG9wZGVmKFtOQU1FXSkKKyAgcHVzaGRlZihbUEFDS10sWyQyXSkKKyAgcHVzaGRlZihbUEFDS1VQXSxbbTRfdHJhbnNsaXQoUEFDSyxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBkZWZpbmUoW2FjbF9saWJzaW5wYWNrYWdlX11QQUNLVVAsCisgICAgbTRfaWZkZWYoW2FjbF9saWJzaW5wYWNrYWdlX11QQUNLVVAsIFttNF9kZWZuKFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQKVssIF1dLClbbGliJDFdKQorICBwb3BkZWYoW1BBQ0tVUF0pCisgIHBvcGRlZihbUEFDS10pCitdKQorCitkbmwgQUNfTElCX0xJTktGTEFHU19CT0RZKG5hbWUgWywgZGVwZW5kZW5jaWVzXSkgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kCitkbmwgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCitkbmwgU2V0cyB0aGUgTElCJHtOQU1FfSwgTFRMSUIke05BTUV9IGFuZCBJTkMke05BTUV9IHZhcmlhYmxlcy4KK2RubCBBbHNvLCBzZXRzIHRoZSBMSUIke05BTUV9X1BSRUZJWCB2YXJpYWJsZSB0byBub25lbXB0eSBpZiBsaWJuYW1lIHdhcyBmb3VuZAorZG5sIGluICR7TElCJHtOQU1FfV9QUkVGSVh9LyRhY2xfbGliZGlyc3RlbS4KK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0JPRFldLAorWworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQl0pCisgIHB1c2hkZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBwdXNoZGVmKFtQQUNLXSxbbTRfaWZkZWYoW2FjbF9mcm9tcGFja2FnZV9dTkFNRSwgW2FjbF9mcm9tcGFja2FnZV9dTkFNRSwgbGliWyQxXSldKQorICBwdXNoZGVmKFtQQUNLVVBdLFttNF90cmFuc2xpdChQQUNLLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIHB1c2hkZWYoW1BBQ0tMSUJTXSxbbTRfaWZkZWYoW2FjbF9mcm9tcGFja2FnZV9dTkFNRSwgW2FjbF9saWJzaW5wYWNrYWdlX11QQUNLVVAsIGxpYlskMV0pXSkKKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCisgIHVzZV9hZGRpdGlvbmFsPXllcworICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgXSkKKyAgQUNfQVJHX1dJVEgoUEFDS1stcHJlZml4XSwKK1tbICAtLXdpdGgtXV1QQUNLW1stcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIF1QQUNLTElCU1sgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKKyAgLS13aXRob3V0LV1dUEFDS1tbLXByZWZpeCAgICAgZG9uJ3Qgc2VhcmNoIGZvciBdUEFDS0xJQlNbIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl1dLAorWworICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgorICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICAgICAgICBdKQorICAgICAgZWxzZQorICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iCisgICAgICAgIGlmIHRlc3QgIiRhY2xfbGliZGlyc3RlbTIiICE9ICIkYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgJiYgdGVzdCAhIC1kICIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbTIiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCitdKQorICBkbmwgU2VhcmNoIHRoZSBsaWJyYXJ5IGFuZCBpdHMgZGVwZW5kZW5jaWVzIGluICRhZGRpdGlvbmFsX2xpYmRpciBhbmQKKyAgZG5sICRMREZMQUdTLiBVc2luZyBicmVhZHRoLWZpcnN0LXNlYWNoLgorICBMSUJbXU5BTUU9CisgIExUTElCW11OQU1FPQorICBJTkNbXU5BTUU9CisgIExJQltdTkFNRVtdX1BSRUZJWD0KKyAgZG5sIEhBVkVfTElCJHtOQU1FfSBpcyBhbiBpbmRpY2F0b3IgdGhhdCBMSUIke05BTUV9LCBMVExJQiR7TkFNRX0gaGF2ZSBiZWVuCisgIGRubCBjb21wdXRlZC4gU28gaXQgaGFzIHRvIGJlIHJlc2V0IGhlcmUuCisgIEhBVkVfTElCW11OQU1FPQorICBycGF0aGRpcnM9CisgIGx0cnBhdGhkaXJzPQorICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9CisgIG5hbWVzX25leHRfcm91bmQ9JyQxICQyJworICB3aGlsZSB0ZXN0IC1uICIkbmFtZXNfbmV4dF9yb3VuZCI7IGRvCisgICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQiCisgICAgbmFtZXNfbmV4dF9yb3VuZD0KKyAgICBmb3IgbmFtZSBpbiAkbmFtZXNfdGhpc19yb3VuZDsgZG8KKyAgICAgIGFscmVhZHlfaGFuZGxlZD0KKyAgICAgIGZvciBuIGluICRuYW1lc19hbHJlYWR5X2hhbmRsZWQ7IGRvCisgICAgICAgIGlmIHRlc3QgIiRuIiA9ICIkbmFtZSI7IHRoZW4KKyAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgLXogIiRhbHJlYWR5X2hhbmRsZWQiOyB0aGVuCisgICAgICAgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0iJG5hbWVzX2FscmVhZHlfaGFuZGxlZCAkbmFtZSIKKyAgICAgICAgZG5sIFNlZSBpZiBpdCB3YXMgYWxyZWFkeSBsb2NhdGVkIGJ5IGFuIGVhcmxpZXIgQUNfTElCX0xJTktGTEFHUworICAgICAgICBkbmwgb3IgQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbGwuCisgICAgICAgIHVwcGVybmFtZT1gZWNobyAiJG5hbWUiIHwgc2VkIC1lICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLXxBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX198J2AKKyAgICAgICAgZXZhbCB2YWx1ZT1cIlwkSEFWRV9MSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgaWYgdGVzdCAtbiAiJHZhbHVlIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgIiR2YWx1ZSIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgIGV2YWwgdmFsdWU9XCJcJExJQiR1cHBlcm5hbWVcIgorICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSR2YWx1ZSIKKyAgICAgICAgICAgIGV2YWwgdmFsdWU9XCJcJExUTElCJHVwcGVybmFtZVwiCisgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9JHZhbHVlIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRubCBBbiBlYXJsaWVyIGNhbGwgdG8gQUNfTElCX0hBVkVfTElOS0ZMQUdTIGhhcyBkZXRlcm1pbmVkCisgICAgICAgICAgICBkbmwgdGhhdCB0aGlzIGxpYnJhcnkgZG9lc24ndCBleGlzdC4gU28ganVzdCBkcm9wIGl0LgorICAgICAgICAgICAgOgorICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBkbmwgU2VhcmNoIHRoZSBsaWJyYXJ5IGxpYiRuYW1lIGluICRhZGRpdGlvbmFsX2xpYmRpciBhbmQgJExERkxBR1MKKyAgICAgICAgICBkbmwgYW5kIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FLyRMVExJQk5BTUUuCisgICAgICAgICAgZm91bmRfZGlyPQorICAgICAgICAgIGZvdW5kX2xhPQorICAgICAgICAgIGZvdW5kX3NvPQorICAgICAgICAgIGZvdW5kX2E9CisgICAgICAgICAgZXZhbCBsaWJuYW1lPVwiJGFjbF9saWJuYW1lX3NwZWNcIiAgICAjIHR5cGljYWxseTogbGlibmFtZT1saWIkbmFtZQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICBzaHJleHQ9Ii4kYWNsX3NobGliZXh0IiAgICAgICAgICAgICAjIHR5cGljYWxseTogc2hyZXh0PS5zbworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNocmV4dD0KKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCisgICAgICAgICAgICBkaXI9IiRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgIGRubCBUaGUgc2FtZSBjb2RlIGFzIGluIHRoZSBsb29wIGJlbG93OgorICAgICAgICAgICAgZG5sIEZpcnN0IGxvb2sgZm9yIGEgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCisgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxcLiwsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBldmFsIGxpYnJhcnlfbmFtZXM9XCIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlY1wiCisgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCisgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRubCBUaGVuIGxvb2sgZm9yIGEgc3RhdGljIGxpYnJhcnkuCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUubGEiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgorICAgICAgICAgICAgICAgIC1MKikKKyAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCR4IiB8IHNlZCAtZSAncy9eWC1MLy8nYAorICAgICAgICAgICAgICAgICAgZG5sIEZpcnN0IGxvb2sgZm9yIGEgc2hhcmVkIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxcLiwsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBldmFsIGxpYnJhcnlfbmFtZXM9XCIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlY1wiCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRubCBUaGVuIGxvb2sgZm9yIGEgc3RhdGljIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUubGEiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGRubCBGb3VuZCB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX3NvIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgZG5sIExpbmtpbmcgd2l0aCBhIHNoYXJlZCBsaWJyYXJ5LiBXZSBhdHRlbXB0IHRvIGhhcmRjb2RlIGl0cworICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5IGludG8gdGhlIGV4ZWN1dGFibGUncyBydW5wYXRoLCB1bmxlc3MgaXQncyB0aGUKKyAgICAgICAgICAgICAgZG5sIHN0YW5kYXJkIC91c3IvbGliLgorICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICBkbmwgTm8gaGFyZGNvZGluZyBpcyBuZWVkZWQuCisgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgZG5sIGJpbmFyeS4KKyAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBsdHJwYXRoZGlycy4KKyAgICAgICAgICAgICAgICBkbmwgVGhlIGx0cnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExUTElCTkFNRSBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG5sIFRoZSBoYXJkY29kaW5nIGludG8gJExJQk5BTUUgaXMgc3lzdGVtIGRlcGVuZGVudC4KKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2hhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGRubCBVc2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCisgICAgICAgICAgICAgICAgICBkbmwgcmVzdWx0aW5nIGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgJiYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIERJUiBpbnRvIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgICAgICAgICAgZG5sIGJpbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIHJwYXRoZGlycy4KKyAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTElCTkFNRSBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBkbmwgUmVseSBvbiAiLUwkZm91bmRfZGlyIi4KKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQgaWYgaXQncyBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUgTERGTEFHUworICAgICAgICAgICAgICAgICAgICBkbmwgb3IgdGhlIGFscmVhZHkgY29uc3RydWN0ZWQgJExJQk5BTUUKKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgRklYTUU6IE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICAgIGRubCAiLUwkZm91bmRfZGlyIC1sJG5hbWUiIG9yICItTCRmb3VuZF9kaXIgJGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFdlIGNhbm5vdCB1c2UgJGFjbF9oYXJkY29kZV9ydW5wYXRoX3ZhciBhbmQgTERfUlVOX1BBVEgKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZSwgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgZml0IGluIGZsYWdzIHBhc3NlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgY29tcGlsZXIuIFNvIGdpdmUgdXAuIE5vIGhhcmRjb2RpbmcuIFRoaXMgYWZmZWN0cyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgZG5sIHZlcnkgb2xkIHN5c3RlbXMuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgIi1MJGZvdW5kX2RpciAtbCRuYW1lIiBvciAiLUwkZm91bmRfZGlyICRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgZG5sIExpbmtpbmcgd2l0aCBhIHN0YXRpYyBsaWJyYXJ5LgorICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX2EiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkbmwgV2Ugc2hvdWxkbid0IGNvbWUgaGVyZSwgYnV0IGFueXdheSBpdCdzIGdvb2QgdG8gaGF2ZSBhCisgICAgICAgICAgICAgICAgZG5sIGZhbGxiYWNrLgorICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG5sIEFzc3VtZSB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgbmVhcmJ5LgorICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQorICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2RpciIgaW4KKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCisgICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJzLC8kYWNsX2xpYmRpcnN0ZW0vIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnJDEnOyB0aGVuCisgICAgICAgICAgICAgICAgICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRiYXNlZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICovJGFjbF9saWJkaXJzdGVtMiB8ICovJGFjbF9saWJkaXJzdGVtMi8pCisgICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJzLC8kYWNsX2xpYmRpcnN0ZW0yLyInKiQsLCdgCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiID0gJyQxJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCW11OQU1FW11fUFJFRklYPSIkYmFzZWRpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJElOQ05BTUUuCisgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0CisgICAgICAgICAgICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKKyAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2luY2x1ZGUgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRDUFBGTEFHUyBvciB0aGUgYWxyZWFkeQorICAgICAgICAgICAgICBkbmwgICAgICBjb25zdHJ1Y3RlZCAkSU5DTkFNRSwKKyAgICAgICAgICAgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgICBJTkNbXU5BTUU9IiR7SU5DW11OQU1FfSR7SU5DW11OQU1FOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkbmwgTG9vayBmb3IgZGVwZW5kZW5jaWVzLgorICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZvdW5kX2xhIjsgdGhlbgorICAgICAgICAgICAgICBkbmwgUmVhZCB0aGUgLmxhIGZpbGUuIEl0IGRlZmluZXMgdGhlIHZhcmlhYmxlcworICAgICAgICAgICAgICBkbmwgZGxuYW1lLCBsaWJyYXJ5X25hbWVzLCBvbGRfbGlicmFyeSwgZGVwZW5kZW5jeV9saWJzLCBjdXJyZW50LAorICAgICAgICAgICAgICBkbmwgYWdlLCByZXZpc2lvbiwgaW5zdGFsbGVkLCBkbG9wZW4sIGRscHJlb3BlbiwgbGliZGlyLgorICAgICAgICAgICAgICBzYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2xhIiBpbgorICAgICAgICAgICAgICAgICovKiB8ICpcXCopIC4gIiRmb3VuZF9sYSIgOzsKKyAgICAgICAgICAgICAgICAqKSAuICIuLyRmb3VuZF9sYSIgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBsaWJkaXI9IiRzYXZlX2xpYmRpciIKKyAgICAgICAgICAgICAgZG5sIFdlIHVzZSBvbmx5IGRlcGVuZGVuY3lfbGlicy4KKyAgICAgICAgICAgICAgZm9yIGRlcCBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworICAgICAgICAgICAgICAgIGNhc2UgIiRkZXAiIGluCisgICAgICAgICAgICAgICAgICAtTCopCisgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKyAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExJQk5BTUUgYW5kICRMVExJQk5BTUUuCisgICAgICAgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0CisgICAgICAgICAgICAgICAgICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAorICAgICAgICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvbGliIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgICAgICAgICAgICAgICAgICBkbmwgICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUyBvciB0aGUgYWxyZWFkeQorICAgICAgICAgICAgICAgICAgICBkbmwgICAgICBjb25zdHJ1Y3RlZCAkTElCTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExUTElCTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgLVIqKQorICAgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1SLy8nYAorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIHJwYXRoZGlycy4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBsdHJwYXRoZGlycy4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIGx0cnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExUTElCTkFNRSBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtbCopCisgICAgICAgICAgICAgICAgICAgIGRubCBIYW5kbGUgdGhpcyBpbiB0aGUgbmV4dCByb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtbC8vJ2AKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICoubGEpCisgICAgICAgICAgICAgICAgICAgIGRubCBIYW5kbGUgdGhpcyBpbiB0aGUgbmV4dCByb3VuZC4gVGhyb3cgYXdheSB0aGUgLmxhJ3MKKyAgICAgICAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeTsgaXQgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gYSBwcmVjZWRpbmcgLUwKKyAgICAgICAgICAgICAgICAgICAgZG5sIG9wdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAtZSAncyxcLmxhJCwsJ2AKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgICAgIGRubCBNb3N0IGxpa2VseSBhbiBpbW1lZGlhdGUgbGlicmFyeSBuYW1lLgorICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRkZXAiCisgICAgICAgICAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9JGRlcCIKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZG5sIERpZG4ndCBmaW5kIHRoZSBsaWJyYXJ5OyBhc3N1bWUgaXQgaXMgaW4gdGhlIHN5c3RlbSBkaXJlY3RvcmllcworICAgICAgICAgICAgZG5sIGtub3duIHRvIHRoZSBsaW5rZXIgYW5kIHJ1bnRpbWUgbG9hZGVyLiAoQWxsIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgIGRubCBkaXJlY3RvcmllcyBrbm93biB0byB0aGUgbGlua2VyIHNob3VsZCBhbHNvIGJlIGtub3duIHRvIHRoZQorICAgICAgICAgICAgZG5sIHJ1bnRpbWUgbG9hZGVyLCBvdGhlcndpc2UgdGhlIHN5c3RlbSBpcyBzZXZlcmVseSBtaXNjb25maWd1cmVkLikKKyAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LWwkbmFtZSIKKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LWwkbmFtZSIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBkb25lCisgIGRvbmUKKyAgaWYgdGVzdCAiWCRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKyAgICAgIGRubCBXZWlyZCBwbGF0Zm9ybTogb25seSB0aGUgbGFzdCAtcnBhdGggb3B0aW9uIGNvdW50cywgdGhlIHVzZXIgbXVzdAorICAgICAgZG5sIHBhc3MgYWxsIHBhdGggZWxlbWVudHMgaW4gb25lIG9wdGlvbi4gV2UgY2FuIGFycmFuZ2UgdGhhdCBmb3IgYQorICAgICAgZG5sIHNpbmdsZSBsaWJyYXJ5LCBidXQgbm90IHdoZW4gbW9yZSB0aGFuIG9uZSAkTElCTkFNRXMgYXJlIHVzZWQuCisgICAgICBhbGxkaXJzPQorICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKKyAgICAgIGRvbmUKKyAgICAgIGRubCBOb3RlOiBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyB1c2VzICRsaWJkaXIgYW5kICR3bC4KKyAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCisgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZmxhZyIKKyAgICBlbHNlCisgICAgICBkbmwgVGhlIC1ycGF0aCBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgorICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgIGxpYmRpcj0iJGZvdW5kX2RpciIKKyAgICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmbGFnIgorICAgICAgZG9uZQorICAgIGZpCisgIGZpCisgIGlmIHRlc3QgIlgkbHRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgorICAgIGRubCBXaGVuIHVzaW5nIGxpYnRvb2wsIHRoZSBvcHRpb24gdGhhdCB3b3JrcyBmb3IgYm90aCBsaWJyYXJpZXMgYW5kCisgICAgZG5sIGV4ZWN1dGFibGVzIGlzIC1SLiBUaGUgLVIgb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KKyAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LVIkZm91bmRfZGlyIgorICAgIGRvbmUKKyAgZmkKKyAgcG9wZGVmKFtQQUNLTElCU10pCisgIHBvcGRlZihbUEFDS1VQXSkKKyAgcG9wZGVmKFtQQUNLXSkKKyAgcG9wZGVmKFtOQU1FXSkKK10pCisKK2RubCBBQ19MSUJfQVBQRU5EVE9WQVIoVkFSLCBDT05URU5UUykgYXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgQ09OVEVOVFMgdG8gVkFSLAorZG5sIHVubGVzcyBhbHJlYWR5IHByZXNlbnQgaW4gVkFSLgorZG5sIFdvcmtzIG9ubHkgZm9yIENQUEZMQUdTLCBub3QgZm9yIExJQiogdmFyaWFibGVzIGJlY2F1c2UgdGhhdCBzb21ldGltZXMKK2RubCBjb250YWlucyB0d28gb3IgdGhyZWUgY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBiZWxvbmcgdG9nZXRoZXIuCitBQ19ERUZVTihbQUNfTElCX0FQUEVORFRPVkFSXSwKK1sKKyAgZm9yIGVsZW1lbnQgaW4gWyQyXTsgZG8KKyAgICBoYXZlaXQ9CisgICAgZm9yIHggaW4gJFskMV07IGRvCisgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGVsZW1lbnQiOyB0aGVuCisgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICBbJDFdPSIke1skMV19JHtbJDFdOisgfSRlbGVtZW50IgorICAgIGZpCisgIGRvbmUKK10pCisKK2RubCBGb3IgdGhvc2UgY2FzZXMgd2hlcmUgYSB2YXJpYWJsZSBjb250YWlucyBzZXZlcmFsIC1MIGFuZCAtbCBvcHRpb25zCitkbmwgcmVmZXJyaW5nIHRvIHVua25vd24gbGlicmFyaWVzIGFuZCBkaXJlY3RvcmllcywgdGhpcyBtYWNybyBkZXRlcm1pbmVzIHRoZQorZG5sIG5lY2Vzc2FyeSBhZGRpdGlvbmFsIGxpbmtlciBvcHRpb25zIGZvciB0aGUgcnVudGltZSBwYXRoLgorZG5sIEFDX0xJQl9MSU5LRkxBR1NfRlJPTV9MSUJTKFtMREFERFZBUl0sIFtMSUJTVkFMVUVdLCBbVVNFLUxJQlRPT0xdKQorZG5sIHNldHMgTERBRERWQVIgdG8gbGlua2VyIG9wdGlvbnMgbmVlZGVkIHRvZ2V0aGVyIHdpdGggTElCU1ZBTFVFLgorZG5sIElmIFVTRS1MSUJUT09MIGV2YWx1YXRlcyB0byBub24tZW1wdHksIGxpbmtpbmcgd2l0aCBsaWJ0b29sIGlzIGFzc3VtZWQsCitkbmwgb3RoZXJ3aXNlIGxpbmtpbmcgd2l0aG91dCBsaWJ0b29sIGlzIGFzc3VtZWQuCitBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19GUk9NX0xJQlNdLAorWworICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQl0pCisgICQxPQorICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgJiYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCisgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBkaXJlY3RvcmllcyBpbnRvIHRoZSByZXN1bHRpbmcKKyAgICAgIGRubCBiaW5hcnkuCisgICAgICBycGF0aGRpcnM9CisgICAgICBuZXh0PQorICAgICAgZm9yIG9wdCBpbiAkMjsgZG8KKyAgICAgICAgaWYgdGVzdCAtbiAiJG5leHQiOyB0aGVuCisgICAgICAgICAgZGlyPSIkbmV4dCIKKyAgICAgICAgICBkbmwgTm8gbmVlZCB0byBoYXJkY29kZSB0aGUgc3RhbmRhcmQgL3Vzci9saWIuCisgICAgICAgICAgaWYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAmJiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICBmaQorICAgICAgICAgIG5leHQ9CisgICAgICAgIGVsc2UKKyAgICAgICAgICBjYXNlICRvcHQgaW4KKyAgICAgICAgICAgIC1MKSBuZXh0PXllcyA7OworICAgICAgICAgICAgLUwqKSBkaXI9YGVjaG8gIlgkb3B0IiB8IHNlZCAtZSAncyxeWC1MLCwnYAorICAgICAgICAgICAgICAgICBkbmwgTm8gbmVlZCB0byBoYXJkY29kZSB0aGUgc3RhbmRhcmQgL3Vzci9saWIuCisgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICYmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgbmV4dD0gOzsKKyAgICAgICAgICAgICopIG5leHQ9IDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAiWCRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgorICAgICAgICBpZiB0ZXN0IC1uICIiJDMiIjsgdGhlbgorICAgICAgICAgIGRubCBsaWJ0b29sIGlzIHVzZWQgZm9yIGxpbmtpbmcuIFVzZSAtUiBvcHRpb25zLgorICAgICAgICAgIGZvciBkaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICQxPSIkeyQxfSR7JDE6KyB9LVIkZGlyIgorICAgICAgICAgIGRvbmUKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRubCBUaGUgbGlua2VyIGlzIHVzZWQgZm9yIGxpbmtpbmcgZGlyZWN0bHkuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorICAgICAgICAgICAgZG5sIFdlaXJkIHBsYXRmb3JtOiBvbmx5IHRoZSBsYXN0IC1ycGF0aCBvcHRpb24gY291bnRzLCB0aGUgdXNlcgorICAgICAgICAgICAgZG5sIG11c3QgcGFzcyBhbGwgcGF0aCBlbGVtZW50cyBpbiBvbmUgb3B0aW9uLgorICAgICAgICAgICAgYWxsZGlycz0KKyAgICAgICAgICAgIGZvciBkaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yfSRkaXIiCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgICAgICBsaWJkaXI9IiRhbGxkaXJzIgorICAgICAgICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgICAgICQxPSIkZmxhZyIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBkbmwgVGhlIC1ycGF0aCBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgorICAgICAgICAgICAgZm9yIGRpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgICAgICAgIGxpYmRpcj0iJGRpciIKKyAgICAgICAgICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgICAgICAgICAkMT0iJHskMX0keyQxOisgfSRmbGFnIgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFskMV0pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItcHJlZml4Lm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItcHJlZml4Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZGIxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1wcmVmaXgubTQKQEAgLTAsMCArMSwyNDkgQEAKKyMgbGliLXByZWZpeC5tNCBzZXJpYWwgMTQKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNSwgMjAwOC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworZG5sIEFDX0xJQl9QUkVGSVggYWRkcyB0byB0aGUgQ1BQRkxBR1MgYW5kIExERkxBR1MgdGhlIGZsYWdzIHRoYXQgYXJlIG5lZWRlZAorZG5sIHRvIGFjY2VzcyBwcmV2aW91c2x5IGluc3RhbGxlZCBsaWJyYXJpZXMuIFRoZSBiYXNpYyBhc3N1bXB0aW9uIGlzIHRoYXQKK2RubCBhIHVzZXIgd2lsbCB3YW50IHBhY2thZ2VzIHRvIHVzZSBvdGhlciBwYWNrYWdlcyBoZSBwcmV2aW91c2x5IGluc3RhbGxlZAorZG5sIHdpdGggdGhlIHNhbWUgLS1wcmVmaXggb3B0aW9uLgorZG5sIFRoaXMgbWFjcm8gaXMgbm90IG5lZWRlZCBpZiBvbmx5IEFDX0xJQl9MSU5LRkxBR1MgaXMgdXNlZCB0byBsb2NhdGUKK2RubCBsaWJyYXJpZXMsIGJ1dCBpcyBvdGhlcndpc2UgdmVyeSBjb252ZW5pZW50LgorQUNfREVGVU4oW0FDX0xJQl9QUkVGSVhdLAorWworICBBQ19CRUZPUkUoWyQwXSwgW0FDX0xJQl9MSU5LRkxBR1NdKQorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQl0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgorICB1c2VfYWRkaXRpb25hbD15ZXMKKyAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgIF0pCisgIEFDX0FSR19XSVRIKFtsaWItcHJlZml4XSwKK1tbICAtLXdpdGgtbGliLXByZWZpeFs9RElSXSBzZWFyY2ggZm9yIGxpYnJhcmllcyBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgorICAtLXdpdGhvdXQtbGliLXByZWZpeCAgICBkb24ndCBzZWFyY2ggZm9yIGxpYnJhcmllcyBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdXSwKK1sKKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCisgICAgZWxzZQorICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgorICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgICAgICAgXSkKKyAgICAgIGVsc2UKKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgorICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIgorICAgICAgZmkKKyAgICBmaQorXSkKKyAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KKyAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJENQUEZMQUdTLgorICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0CisgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9pbmNsdWRlLAorICAgIGRubCAgIDIuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRDUFBGTEFHUywKKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KKyAgICAgIGhhdmVpdD0KKyAgICAgIGZvciB4IGluICRDUFBGTEFHUzsgZG8KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgZXNhYworICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJENQUEZMQUdTLgorICAgICAgICAgICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9JHtDUFBGTEFHUzorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KKyAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAorICAgIGRubCAgIDIuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTLAorICAgIGRubCAgIDMuIGlmIGl0J3MgL3Vzci9sb2NhbC9saWIgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KKyAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgorICAgICAgaGF2ZWl0PQorICAgICAgZm9yIHggaW4gJExERkxBR1M7IGRvCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCisgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9JHtMREZMQUdTOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgIGZpCitdKQorCitkbmwgQUNfTElCX1BSRVBBUkVfUFJFRklYIGNyZWF0ZXMgdmFyaWFibGVzIGFjbF9maW5hbF9wcmVmaXgsCitkbmwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4LCBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gd2hpY2ggJHByZWZpeCBhbmQKK2RubCAkZXhlY19wcmVmaXggd2lsbCBleHBhbmQgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdC4KK0FDX0RFRlVOKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdLAorWworICBkbmwgVW5mb3J0dW5hdGVseSwgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBnZXQgb25seSBmaW5hbGx5IGRldGVybWluZWQKKyAgZG5sIGF0IHRoZSBlbmQgb2YgY29uZmlndXJlLgorICBpZiB0ZXN0ICJYJHByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCisgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorICBlbHNlCisgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJHByZWZpeCIKKyAgZmkKKyAgaWYgdGVzdCAiWCRleGVjX3ByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCisgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PScke3ByZWZpeH0nCisgIGVsc2UKKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZmkKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBldmFsIGFjbF9maW5hbF9leGVjX3ByZWZpeD1cIiRhY2xfZmluYWxfZXhlY19wcmVmaXhcIgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCitdKQorCitkbmwgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtzdGF0ZW1lbnRdKSBldmFsdWF0ZXMgc3RhdGVtZW50LCB3aXRoIHRoZQorZG5sIHZhcmlhYmxlcyBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGJvdW5kIHRvIHRoZSB2YWx1ZXMgdGhleSB3aWxsIGhhdmUKK2RubCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgorQUNfREVGVU4oW0FDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWF0sCitbCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgICQxCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKK10pCisKK2RubCBBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQiBjcmVhdGVzCitkbmwgLSBhIHZhcmlhYmxlIGFjbF9saWJkaXJzdGVtLCBjb250YWluaW5nIHRoZSBiYXNlbmFtZSBvZiB0aGUgbGliZGlyLCBlaXRoZXIKK2RubCAgICJsaWIiIG9yICJsaWI2NCIgb3IgImxpYi82NCIsCitkbmwgLSBhIHZhcmlhYmxlIGFjbF9saWJkaXJzdGVtMiwgYXMgYSBzZWNvbmRhcnkgcG9zc2libGUgdmFsdWUgZm9yCitkbmwgICBhY2xfbGliZGlyc3RlbSwgZWl0aGVyIHRoZSBzYW1lIGFzIGFjbF9saWJkaXJzdGVtIG9yICJsaWIvc3BhcmN2OSIgb3IKK2RubCAgICJsaWIvYW1kNjQiLgorQUNfREVGVU4oW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSwKK1sKKyAgZG5sIFRoZXJlIGlzIG5vIGZvcm1hbCBzdGFuZGFyZCByZWdhcmRpbmcgbGliIGFuZCBsaWI2NC4KKyAgZG5sIE9uIGdsaWJjIHN5c3RlbXMsIHRoZSBjdXJyZW50IHByYWN0aWNlIGlzIHRoYXQgb24gYSBzeXN0ZW0gc3VwcG9ydGluZworICBkbmwgMzItYml0IGFuZCA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0cyBvciBBQklzLCA2NC1iaXQgbGlicmFyaWVzIGdvIHVuZGVyCisgIGRubCAkcHJlZml4L2xpYjY0IGFuZCAzMi1iaXQgbGlicmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliLiBXZSBkZXRlcm1pbmUKKyAgZG5sIHRoZSBjb21waWxlcidzIGRlZmF1bHQgbW9kZSBieSBsb29raW5nIGF0IHRoZSBjb21waWxlcidzIGxpYnJhcnkgc2VhcmNoCisgIGRubCBwYXRoLiBJZiBhdCBsZWFzdCBvbmUgb2YgaXRzIGVsZW1lbnRzIGVuZHMgaW4gL2xpYjY0IG9yIHBvaW50cyB0byBhCisgIGRubCBkaXJlY3Rvcnkgd2hvc2UgYWJzb2x1dGUgcGF0aG5hbWUgZW5kcyBpbiAvbGliNjQsIHdlIGFzc3VtZSBhIDY0LWJpdCBBQkkuCisgIGRubCBPdGhlcndpc2Ugd2UgdXNlIHRoZSBkZWZhdWx0LCBuYW1lbHkgImxpYiIuCisgIGRubCBPbiBTb2xhcmlzIHN5c3RlbXMsIHRoZSBjdXJyZW50IHByYWN0aWNlIGlzIHRoYXQgb24gYSBzeXN0ZW0gc3VwcG9ydGluZworICBkbmwgMzItYml0IGFuZCA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0cyBvciBBQklzLCA2NC1iaXQgbGlicmFyaWVzIGdvIHVuZGVyCisgIGRubCAkcHJlZml4L2xpYi82NCAod2hpY2ggaXMgYSBzeW1saW5rIHRvIGVpdGhlciAkcHJlZml4L2xpYi9zcGFyY3Y5IG9yCisgIGRubCAkcHJlZml4L2xpYi9hbWQ2NCkgYW5kIDMyLWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIgJHByZWZpeC9saWIuCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKyAgQUNfUkVRVUlSRShbZ2xfSE9TVF9DUFVfQ19BQklfMzJCSVRdKQorCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIHNvbGFyaXMqKQorICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciA2NC1iaXQgaG9zdF0sIFtnbF9jdl9zb2xhcmlzXzY0Yml0XSwKKyAgICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmZGVmIF9MUDY0CisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9zb2xhcmlzXzY0Yml0PXllc10sCisgICAgICAgICAgIFtnbF9jdl9zb2xhcmlzXzY0Yml0PW5vXSkKKyAgICAgICAgXSk7OworICBlc2FjCisKKyAgZG5sIEFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSByZXN1bHQgYnkgc2V0dGluZyBhY2xfY3ZfbGliZGlyc3RlbXMuCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdGhlIGNvbW1vbiBzdWZmaXhlcyBvZiBkaXJlY3RvcmllcyBpbiB0aGUgbGlicmFyeSBzZWFyY2ggcGF0aF0sCisgICAgW2FjbF9jdl9saWJkaXJzdGVtc10sCisgICAgW2FjbF9saWJkaXJzdGVtPWxpYgorICAgICBhY2xfbGliZGlyc3RlbTI9CisgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgIHNvbGFyaXMqKQorICAgICAgICAgZG5sIFNlZSBTb2xhcmlzIDEwIFNvZnR3YXJlIERldmVsb3BlciBDb2xsZWN0aW9uID4gU29sYXJpcyA2NC1iaXQgRGV2ZWxvcGVyJ3MgR3VpZGUgPiBUaGUgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQKKyAgICAgICAgIGRubCA8aHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vY2QvRTE5MjUzLTAxLzgxNi01MTM4L2Rldi1lbnYvaW5kZXguaHRtbD4uCisgICAgICAgICBkbmwgIlBvcnRhYmxlIE1ha2VmaWxlcyBzaG91bGQgcmVmZXIgdG8gYW55IGxpYnJhcnkgZGlyZWN0b3JpZXMgdXNpbmcgdGhlIDY0IHN5bWJvbGljIGxpbmsuIgorICAgICAgICAgZG5sIEJ1dCB3ZSB3YW50IHRvIHJlY29nbml6ZSB0aGUgc3BhcmN2OSBvciBhbWQ2NCBzdWJkaXJlY3RvcnkgYWxzbyBpZiB0aGUKKyAgICAgICAgIGRubCBzeW1saW5rIGlzIG1pc3NpbmcsIHNvIHdlIHNldCBhY2xfbGliZGlyc3RlbTIgdG9vLgorICAgICAgICAgaWYgdGVzdCAkZ2xfY3Zfc29sYXJpc182NGJpdCA9IHllczsgdGhlbgorICAgICAgICAgICBhY2xfbGliZGlyc3RlbT1saWIvNjQKKyAgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICAgICAgIHNwYXJjKikgICAgICAgIGFjbF9saWJkaXJzdGVtMj1saWIvc3BhcmN2OSA7OworICAgICAgICAgICAgIGkqODYgfCB4ODZfNjQpIGFjbF9saWJkaXJzdGVtMj1saWIvYW1kNjQgOzsKKyAgICAgICAgICAgZXNhYworICAgICAgICAgZmkKKyAgICAgICAgIDs7CisgICAgICAgKikKKyAgICAgICAgIGRubCBJZiAkQ0MgZ2VuZXJhdGVzIGNvZGUgZm9yIGEgMzItYml0IEFCSSwgdGhlIGxpYnJhcmllcyBhcmUKKyAgICAgICAgIGRubCBzdXJlbHkgdW5kZXIgJHByZWZpeC9saWIsIG5vdCAkcHJlZml4L2xpYjY0LgorICAgICAgICAgaWYgdGVzdCAiJEhPU1RfQ1BVX0NfQUJJXzMyQklUIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgZG5sIFRoZSByZXN1bHQgaXMgYSBwcm9wZXJ0eSBvZiB0aGUgc3lzdGVtLiBIb3dldmVyLCBub24tc3lzdGVtCisgICAgICAgICAgIGRubCBjb21waWxlcnMgc29tZXRpbWVzIGhhdmUgb2RkIGxpYnJhcnkgc2VhcmNoIHBhdGhzLiBUaGVyZWZvcmUKKyAgICAgICAgICAgZG5sIHByZWZlciBhc2tpbmcgL3Vzci9iaW4vZ2NjLCBpZiBhdmFpbGFibGUsIHJhdGhlciB0aGFuICRDQy4KKyAgICAgICAgICAgc2VhcmNocGF0aD1gKGlmIHRlc3QgLWYgL3Vzci9iaW4vZ2NjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIExDX0FMTD1DIC91c3IvYmluL2djYyAtcHJpbnQtc2VhcmNoLWRpcnMgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIExDX0FMTD1DIC91c3IvYmluL2djYyAtcHJpbnQtc2VhcmNoLWRpcnM7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBMQ19BTEw9QyAkQ0MgLXByaW50LXNlYXJjaC1kaXJzOyBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaSkgMj4vZGV2L251bGwgXAorICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtbiAtZSAncyxebGlicmFyaWVzOiAsLHAnIHwgc2VkIC1lICdzLF49LCwnYAorICAgICAgICAgICBpZiB0ZXN0IC1uICIkc2VhcmNocGF0aCI7IHRoZW4KKyAgICAgICAgICAgICBhY2xfc2F2ZV9JRlM9IiR7SUZTPSAJfSI7IElGUz0iOiIKKyAgICAgICAgICAgICBmb3Igc2VhcmNoZGlyIGluICRzZWFyY2hwYXRoOyBkbworICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJHNlYXJjaGRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgY2FzZSAiJHNlYXJjaGRpciIgaW4KKyAgICAgICAgICAgICAgICAgICAqL2xpYjY0LyB8ICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAgICAgICovLi4vIHwgKi8uLiApCisgICAgICAgICAgICAgICAgICAgICAjIEJldHRlciBpZ25vcmUgZGlyZWN0b3JpZXMgb2YgdGhpcyBmb3JtLiBUaGV5IGFyZSBtaXNsZWFkaW5nLgorICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAqKSBzZWFyY2hkaXI9YGNkICIkc2VhcmNoZGlyIiAmJiBwd2RgCisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHNlYXJjaGRpciIgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgSUZTPSIkYWNsX3NhdmVfSUZTIgorICAgICAgICAgICBmaQorICAgICAgICAgZmkKKyAgICAgICAgIDs7CisgICAgIGVzYWMKKyAgICAgdGVzdCAtbiAiJGFjbF9saWJkaXJzdGVtMiIgfHwgYWNsX2xpYmRpcnN0ZW0yPSIkYWNsX2xpYmRpcnN0ZW0iCisgICAgIGFjbF9jdl9saWJkaXJzdGVtcz0iJGFjbF9saWJkaXJzdGVtLCRhY2xfbGliZGlyc3RlbTIiCisgICAgXSkKKyAgIyBEZWNvbXBvc2UgYWNsX2N2X2xpYmRpcnN0ZW1zIGludG8gYWNsX2xpYmRpcnN0ZW0gYW5kIGFjbF9saWJkaXJzdGVtMi4KKyAgYWNsX2xpYmRpcnN0ZW09YGVjaG8gIiRhY2xfY3ZfbGliZGlyc3RlbXMiIHwgc2VkIC1lICdzLywuKi8vJ2AKKyAgYWNsX2xpYmRpcnN0ZW0yPWBlY2hvICIkYWNsX2N2X2xpYmRpcnN0ZW1zIiB8IHNlZCAtZSAnLywvcy8uKiwvLydgCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ubHMubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL25scy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjJmNjE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ubHMubTQKQEAgLTAsMCArMSwzMiBAQAorIyBubHMubTQgc2VyaWFsIDUgKGdldHRleHQtMC4xOCkKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAwNS0yMDA2LCAyMDA4LTIwMTQsIDIwMTYsIDIwMTkgRnJlZSBTb2Z0d2FyZQorZG5sIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgorCitBQ19QUkVSRVEoWzIuNTBdKQorCitBQ19ERUZVTihbQU1fTkxTXSwKK1sKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWRdKQorICBkbmwgRGVmYXVsdCBpcyBlbmFibGVkIE5MUworICBBQ19BUkdfRU5BQkxFKFtubHNdLAorICAgIFsgIC0tZGlzYWJsZS1ubHMgICAgICAgICAgIGRvIG5vdCB1c2UgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnRdLAorICAgIFVTRV9OTFM9JGVuYWJsZXZhbCwgVVNFX05MUz15ZXMpCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKKyAgQUNfU1VCU1QoW1VTRV9OTFNdKQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcG8ubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3BvLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzc5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3BvLm00CkBAIC0wLDAgKzEsNDUwIEBACisjIHBvLm00IHNlcmlhbCAzMCAoZ2V0dGV4dC0wLjIwKQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDE0LCAyMDE2LCAyMDE4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KKworQUNfUFJFUkVRKFsyLjYwXSkKKworZG5sIENoZWNrcyBmb3IgYWxsIHByZXJlcXVpc2l0ZXMgb2YgdGhlIHBvIHN1YmRpcmVjdG9yeS4KK0FDX0RFRlVOKFtBTV9QT19TVUJESVJTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19NQUtFX1NFVF0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfTUtESVJfUF0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfU0VEXSlkbmwKKyAgQUNfUkVRVUlSRShbQU1fTkxTXSlkbmwKKworICBkbmwgUmVsZWFzZSB2ZXJzaW9uIG9mIHRoZSBnZXR0ZXh0IG1hY3Jvcy4gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0CisgIGRubCB0aGUgZ2V0dGV4dCBtYWNyb3MgYW5kIHBvL01ha2VmaWxlLmluLmluIGFyZSBpbiBzeW5jLgorICBBQ19TVUJTVChbR0VUVEVYVF9NQUNST19WRVJTSU9OXSwgWzAuMjBdKQorCisgIGRubCBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGVzdHMgYWxzbyBpZiAtLWRpc2FibGUtbmxzIGhhcyBiZWVuIGdpdmVuLAorICBkbmwgYmVjYXVzZSB0aGV5IGFyZSBuZWVkZWQgZm9yICJtYWtlIGRpc3QiIHRvIHdvcmsuCisKKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ2ZtdCBpbiB0aGUgUEFUSC4KKyAgZG5sIFRoZSBmaXJzdCB0ZXN0IGV4Y2x1ZGVzIFNvbGFyaXMgbXNnZm10IGFuZCBlYXJseSBHTlUgbXNnZm10IHZlcnNpb25zLgorICBkbmwgVGhlIHNlY29uZCB0ZXN0IGV4Y2x1ZGVzIEZyZWVCU0QgbXNnZm10LgorICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKE1TR0ZNVCwgbXNnZm10LAorICAgIFskYWNfZGlyLyRhY193b3JkIC0tc3RhdGlzdGljcyAvZGV2L251bGwgPiZdQVNfTUVTU0FHRV9MT0dfRkRbIDI+JjEgJiYKKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKKyAgICA6KQorICBBQ19QQVRIX1BST0coW0dNU0dGTVRdLCBbZ21zZ2ZtdF0sIFskTVNHRk1UXSkKKworICBkbmwgVGVzdCB3aGV0aGVyIGl0IGlzIEdOVSBtc2dmbXQgPj0gMC4xNS4KK2NoYW5nZXF1b3RlKCwpZG5sCisgIGNhc2UgYCRHTVNHRk1UIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4KKyAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC00XSB8IDAuMVswLTRdLiopIEdNU0dGTVRfMDE1PTogOzsKKyAgICAqKSBHTVNHRk1UXzAxNT0kR01TR0ZNVCA7OworICBlc2FjCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgIEFDX1NVQlNUKFtHTVNHRk1UXzAxNV0pCisKKyAgZG5sIFNlYXJjaCBmb3IgR05VIHhnZXR0ZXh0IDAuMTIgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCisgIGRubCBUaGUgZmlyc3QgdGVzdCBleGNsdWRlcyBTb2xhcmlzIHhnZXR0ZXh0IGFuZCBlYXJseSBHTlUgeGdldHRleHQgdmVyc2lvbnMuCisgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCB4Z2V0dGV4dC4KKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChYR0VUVEVYVCwgeGdldHRleHQsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgPiZdQVNfTUVTU0FHRV9MT0dfRkRbIDI+JjEgJiYKKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKV0sCisgICAgOikKKyAgZG5sIFJlbW92ZSBsZWZ0b3ZlciBmcm9tIEZyZWVCU0QgeGdldHRleHQgY2FsbC4KKyAgcm0gLWYgbWVzc2FnZXMucG8KKworICBkbmwgVGVzdCB3aGV0aGVyIGl0IGlzIEdOVSB4Z2V0dGV4dCA+PSAwLjE1LgorY2hhbmdlcXVvdGUoLClkbmwKKyAgY2FzZSBgJFhHRVRURVhUIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4KKyAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC00XSB8IDAuMVswLTRdLiopIFhHRVRURVhUXzAxNT06IDs7CisgICAgKikgWEdFVFRFWFRfMDE1PSRYR0VUVEVYVCA7OworICBlc2FjCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgIEFDX1NVQlNUKFtYR0VUVEVYVF8wMTVdKQorCisgIGRubCBTZWFyY2ggZm9yIEdOVSBtc2dtZXJnZSAwLjExIG9yIG5ld2VyIGluIHRoZSBQQVRILgorICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKE1TR01FUkdFLCBtc2dtZXJnZSwKKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLXVwZGF0ZSAtcSAvZGV2L251bGwgL2Rldi9udWxsID4mXUFTX01FU1NBR0VfTE9HX0ZEWyAyPiYxXSwgOikKKworICBkbmwgVGVzdCB3aGV0aGVyIGl0IGlzIEdOVSBtc2dtZXJnZSA+PSAwLjIwLgorICBpZiBMQ19BTEw9QyAkTVNHTUVSR0UgLS1oZWxwIHwgZ3JlcCAnIC0tZm9yLW1zZ2ZtdCAnID4vZGV2L251bGw7IHRoZW4KKyAgICBNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTj0nLS1mb3ItbXNnZm10JworICBlbHNlCisgICAgZG5sIFRlc3Qgd2hldGhlciBpdCBpcyBHTlUgbXNnbWVyZ2UgPj0gMC4xMi4KKyAgICBpZiBMQ19BTEw9QyAkTVNHTUVSR0UgLS1oZWxwIHwgZ3JlcCAnIC0tbm8tZnV6enktbWF0Y2hpbmcgJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICBNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTj0nLS1uby1mdXp6eS1tYXRjaGluZyAtLW5vLWxvY2F0aW9uIC0tcXVpZXQnCisgICAgZWxzZQorICAgICAgZG5sIFdpdGggdGhlc2Ugb2xkIHZlcnNpb25zLCAkKE1TR01FUkdFKSAkKE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OKSBpcworICAgICAgZG5sIHNsb3cuIEJ1dCB0aGlzIGlzIG5vdCBhIGJpZyBwcm9ibGVtLCBhcyBzdWNoIG9sZCBnZXR0ZXh0IHZlcnNpb25zIGFyZQorICAgICAgZG5sIGhhcmRseSBpbiB1c2UgYW55IG1vcmUuCisgICAgICBNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTj0nLS1uby1sb2NhdGlvbiAtLXF1aWV0JworICAgIGZpCisgIGZpCisgIEFDX1NVQlNUKFtNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTl0pCisKKyAgZG5sIFN1cHBvcnQgZm9yIEFNX1hHRVRURVhUX09QVElPTi4KKyAgdGVzdCAtbiAiJHtYR0VUVEVYVF9FWFRSQV9PUFRJT05TK3NldH0iIHx8IFhHRVRURVhUX0VYVFJBX09QVElPTlM9CisgIEFDX1NVQlNUKFtYR0VUVEVYVF9FWFRSQV9PUFRJT05TXSkKKworICBBQ19DT05GSUdfQ09NTUFORFMoW3BvLWRpcmVjdG9yaWVzXSwgW1sKKyAgICBmb3IgYWNfZmlsZSBpbiAkQ09ORklHX0ZJTEVTOyBkbworICAgICAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIgorICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluCisgICAgICAgICo6KikgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6LiolJSdgIDs7CisgICAgICBlc2FjCisgICAgICAjIFBPIGRpcmVjdG9yaWVzIGhhdmUgYSBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgZnJvbSBNYWtlZmlsZS5pbi5pbi4KKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbiAqL01ha2VmaWxlLmluKQorICAgICAgICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KKyAgICAgICAgYWNfZGlyPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAorICAgICAgICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgCisgICAgICAgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgorICAgICAgICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVkICRzcmNkaXIuCisgICAgICAgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKKyAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAgICAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7CisgICAgICAgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgICAgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgICAgICAgZXNhYworICAgICAgICAjIFRyZWF0IGEgZGlyZWN0b3J5IGFzIGEgUE8gZGlyZWN0b3J5IGlmIGFuZCBvbmx5IGlmIGl0IGhhcyBhCisgICAgICAgICMgUE9URklMRVMuaW4gZmlsZS4gVGhpcyBhbGxvd3MgcGFja2FnZXMgdG8gaGF2ZSBtdWx0aXBsZSBQTworICAgICAgICAjIGRpcmVjdG9yaWVzIHVuZGVyIGRpZmZlcmVudCBuYW1lcyBvciBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLgorICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iOyB0aGVuCisgICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklMRVMiCisgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvUE9URklMRVMiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvUE9URklMRVMiCisgICAgICAgICAgZ3RfdGFiPWBwcmludGYgJ1x0J2AKKyAgICAgICAgICBjYXQgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiIgfCBzZWQgLWUgIi9eIy9kIiAtZSAiL15bICR7Z3RfdGFifV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxcXFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIKKyAgICAgICAgICBQT01BS0VGSUxFREVQUz0iUE9URklMRVMuaW4iCisgICAgICAgICAgIyBBTExfTElOR1VBUywgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUyBkZXBlbmQKKyAgICAgICAgICAjIG9uICRhY19kaXIgYnV0IGRvbid0IGRlcGVuZCBvbiB1c2VyLXNwZWNpZmllZCBjb25maWd1cmF0aW9uCisgICAgICAgICAgIyBwYXJhbWV0ZXJzLgorICAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgIyBUaGUgTElOR1VBUyBmaWxlIGNvbnRhaW5zIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcy4KKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBBTExfTElOR1VBUz1gc2VkIC1lICIvXiMvZCIgLWUgInMvIy4qLy8iICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyJgCisgICAgICAgICAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBUaGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMgd2FzIGdpdmVuIGluIGNvbmZpZ3VyZS5pbi4KKyAgICAgICAgICAgIEFMTF9MSU5HVUFTPSRPQlNPTEVURV9BTExfTElOR1VBUworICAgICAgICAgIGZpCisgICAgICAgICAgIyBDb21wdXRlIFBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKKyAgICAgICAgICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorICAgICAgICAgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKKyAgICAgICAgICAjIENvbXB1dGUgR01PRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCisgICAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAgICAgICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAgICAgICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgUE9GSUxFUz0KKyAgICAgICAgICBVUERBVEVQT0ZJTEVTPQorICAgICAgICAgIERVTU1ZUE9GSUxFUz0KKyAgICAgICAgICBHTU9GSUxFUz0KKyAgICAgICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgICAgICAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCisgICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgorICAgICAgICAgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgICAgICAgIGRvbmUKKyAgICAgICAgICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKKyAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICAgIElOU1RfTElOR1VBUz0KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICB1c2VpdD1ubworICAgICAgICAgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcworICAgICAgICAgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKKyAgICAgICAgICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCisgICAgICAgICAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIENBVEFMT0dTPQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rpci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9NYWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01ha2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIiL1J1bGVzLSo7IGRvCisgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KKyAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCisgICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsgfCAqfikgOzsKKyAgICAgICAgICAgICAgICAqKSBjYXQgIiRmIiA+PiAiJGFjX2Rpci9NYWtlZmlsZSIgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZG9uZV1dLAorICAgWyMgQ2FwdHVyZSB0aGUgdmFsdWUgb2Ygb2Jzb2xldGUgQUxMX0xJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUKKyAgICAjIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMsIENBVEFMT0dTLgorICAgIE9CU09MRVRFX0FMTF9MSU5HVUFTPSIkQUxMX0xJTkdVQVMiCisgICAgIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBMSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlIENBVEFMT0dTLgorICAgIExJTkdVQVM9IiR7TElOR1VBUy0lVU5TRVQlfSIKKyAgIF0pCitdKQorCitkbmwgUG9zdHByb2Nlc3NlcyBhIE1ha2VmaWxlIGluIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgUE8gZmlsZXMuCitBQ19ERUZVTihbQU1fUE9TVFBST0NFU1NfUE9fTUFLRUZJTEVdLAorWworICAjIFdoZW4gdGhpcyBjb2RlIGlzIHJ1biwgaW4gY29uZmlnLnN0YXR1cywgdHdvIHZhcmlhYmxlcyBoYXZlIGFscmVhZHkgYmVlbgorICAjIHNldDoKKyAgIyAtIE9CU09MRVRFX0FMTF9MSU5HVUFTIGlzIHRoZSB2YWx1ZSBvZiBMSU5HVUFTIHNldCBpbiBjb25maWd1cmUuaW4sCisgICMgLSBMSU5HVUFTIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTElOR1VBUyBhdCBjb25maWd1cmUKKyAgIyAgIHRpbWUuCisKK2NoYW5nZXF1b3RlKCwpZG5sCisgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgorICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCisgIGFjX2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyInxzZWQgJ3MlXlwuLyUlJ2AKKyAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAorICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCisgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KKyAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgorICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKKyAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICBlc2FjCisKKyAgIyBGaW5kIGEgd2F5IHRvIGVjaG8gc3RyaW5ncyB3aXRob3V0IGludGVycHJldGluZyBiYWNrc2xhc2guCisgIGlmIHRlc3QgIlhgKGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCisgICAgZ3RfZWNobz0nZWNobycKKyAgZWxzZQorICAgIGlmIHRlc3QgIlhgKHByaW50ZiAnJXNcbicgJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCisgICAgICBndF9lY2hvPSdwcmludGYgJXNcbicKKyAgICBlbHNlCisgICAgICBlY2hvX2Z1bmMgKCkgeworICAgICAgICBjYXQgPDxFT1QKKyQqCitFT1QKKyAgICAgIH0KKyAgICAgIGd0X2VjaG89J2VjaG9fZnVuYycKKyAgICBmaQorICBmaQorCisgICMgQSBzZWQgc2NyaXB0IHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIFZBUklBQkxFIGZyb20gYSBNYWtlZmlsZS4KKyAgdGFiPWBwcmludGYgJ1x0J2AKKyAgc2VkX3hfdmFyaWFibGU9JworIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5LgoreAorcy9QL1AvCit4Cit0YQorIyBZZXMgaXQgd2FzIGVtcHR5LiBMb29rIGlmIHdlIGhhdmUgdGhlIGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24uCisvXlsnIiR7dGFifSInIF0qVkFSSUFCTEVbJyIke3RhYn0iJyBdKj0veworICAjIFNlZW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCisgIHMvXlsnIiR7dGFifSInIF0qVkFSSUFCTEVbJyIke3RhYn0iJyBdKj0vLworICBiYQorfQorYmQKKzphCisjIEhlcmUgd2UgYXJlIHByb2Nlc3NpbmcgYSBsaW5lIGZyb20gdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCisjIFJlbW92ZSBjb21tZW50LCBtb3JlIHByZWNpc2VseSByZXBsYWNlIGl0IHdpdGggYSBzcGFjZS4KK3MvIy4qJC8gLworIyBTZWUgaWYgdGhlIGxpbmUgZW5kcyBpbiBhIGJhY2tzbGFzaC4KK3RiCis6Ygorcy9cXCQvLworIyBQcmludCB0aGUgbGluZSwgd2l0aG91dCB0aGUgdHJhaWxpbmcgYmFja3NsYXNoLgorcAordGMKKyMgVGhlcmUgd2FzIG5vIHRyYWlsaW5nIGJhY2tzbGFzaC4gVGhlIGVuZCBvZiB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbiBpcworIyByZWFjaGVkLiBDbGVhciB0aGUgaG9sZCBzcGFjZS4KK3MvXi4qJC8vCit4CitiZAorOmMKKyMgQSB0cmFpbGluZyBiYWNrc2xhc2ggbWVhbnMgdGhhdCB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbiBjb250aW51ZXMgaW4gdGhlCisjIG5leHQgbGluZS4gUHV0IGEgbm9uZW1wdHkgc3RyaW5nIGludG8gdGhlIGhvbGQgc3BhY2UgdG8gaW5kaWNhdGUgdGhpcy4KK3MvXi4qJC9QLworeAorOmQKKycKK2NoYW5nZXF1b3RlKFssXSlkbmwKKworICAjIFNldCBQT1RGSUxFUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIFBPVEZJTEVTLgorICBzZWRfeF9QT1RGSUxFUz1gJGd0X2VjaG8gIiRzZWRfeF92YXJpYWJsZSIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL1BPVEZJTEVTL2cnYAorICBQT1RGSUxFUz1gc2VkIC1uIC1lICIkc2VkX3hfUE9URklMRVMiIDwgIiRhY19maWxlImAKKyAgIyBDb21wdXRlIFBPVEZJTEVTX0RFUFMgYXMKKyAgIyAgICQoZm9yZWFjaCBmaWxlLCAkKFBPVEZJTEVTKSwgJCh0b3Bfc3JjZGlyKS8kKGZpbGUpKQorICBQT1RGSUxFU19ERVBTPQorICBmb3IgZmlsZSBpbiAkUE9URklMRVM7IGRvCisgICAgUE9URklMRVNfREVQUz0iJFBPVEZJTEVTX0RFUFMgIickKHRvcF9zcmNkaXIpLyciJGZpbGUiCisgIGRvbmUKKyAgUE9NQUtFRklMRURFUFM9IiIKKworICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKKyAgZmkKKyAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCisgICAgIyBUaGUgTElOR1VBUyBmaWxlIGNvbnRhaW5zIHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcy4KKyAgICBBTExfTElOR1VBUz1gc2VkIC1lICIvXiMvZCIgLWUgInMvIy4qLy8iICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyJgCisgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgorICBlbHNlCisgICAgIyBTZXQgQUxMX0xJTkdVQVMgdG8gdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBMSU5HVUFTLgorICAgIHNlZF94X0xJTkdVQVM9YCRndF9lY2hvICIkc2VkX3hfdmFyaWFibGUiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9MSU5HVUFTL2cnYAorICAgIEFMTF9MSU5HVUFTPWBzZWQgLW4gLWUgIiRzZWRfeF9MSU5HVUFTIiA8ICIkYWNfZmlsZSJgCisgIGZpCisgICMgQ29tcHV0ZSBQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQorICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKKyAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKKyAgIyBDb21wdXRlIEdNT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKKyAgIyBDb21wdXRlIFBST1BFUlRJRVNGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChET01BSU4pXyQobGFuZykucHJvcGVydGllcykKKyAgIyBDb21wdXRlIENMQVNTRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLmNsYXNzKQorICAjIENvbXB1dGUgUU1GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5xbSkKKyAgIyBDb21wdXRlIE1TR0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGZyb2IgJChsYW5nKSkubXNnKQorICAjIENvbXB1dGUgUkVTT1VSQ0VTRExMRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS8kKERPTUFJTikucmVzb3VyY2VzLmRsbCkKKyAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAuKSBzcmNkaXJwcmU9IDs7CisgICAgKikgc3JjZGlycHJlPSckKHNyY2RpcikvJyA7OworICBlc2FjCisgIFBPRklMRVM9CisgIFVQREFURVBPRklMRVM9CisgIERVTU1ZUE9GSUxFUz0KKyAgR01PRklMRVM9CisgIFBST1BFUlRJRVNGSUxFUz0KKyAgQ0xBU1NGSUxFUz0KKyAgUU1GSUxFUz0KKyAgTVNHRklMRVM9CisgIFJFU09VUkNFU0RMTEZJTEVTPQorICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgUE9GSUxFUz0iJFBPRklMRVMgJHNyY2RpcnByZSRsYW5nLnBvIgorICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKKyAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgorICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKKyAgICBQUk9QRVJUSUVTRklMRVM9IiRQUk9QRVJUSUVTRklMRVMgXCQoc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCisgICAgQ0xBU1NGSUxFUz0iJENMQVNTRklMRVMgXCQoc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLmNsYXNzIgorICAgIFFNRklMRVM9IiRRTUZJTEVTICRzcmNkaXJwcmUkbGFuZy5xbSIKKyAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAorICAgIE1TR0ZJTEVTPSIkTVNHRklMRVMgJHNyY2RpcnByZSRmcm9iYmVkbGFuZy5tc2ciCisgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnIC1lICdzL15zci1DUy9zci1TUC8nIC1lICdzL0BsYXRpbiQvLUxhdG4vJyAtZSAncy9AY3lyaWxsaWMkLy1DeXJsLycgLWUgJ3MvXnNyLVNQJC9zci1TUC1MYXRuLycgLWUgJ3MvXnV6LVVaJC91ei1VWi1MYXRuLydgCisgICAgUkVTT1VSQ0VTRExMRklMRVM9IiRSRVNPVVJDRVNETExGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbCIKKyAgZG9uZQorICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKKyAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgSU5TVF9MSU5HVUFTPQorICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgZm9yIHByZXNlbnRsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgIHVzZWl0PW5vCisgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCisgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRMSU5HVUFTIgorICAgICAgZWxzZQorICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCisgICAgICBmaQorICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbworICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcworICAgICAgICAjICAgYS4gZXF1YWwgdG8gcHJlc2VudGxhbmcsIG9yCisgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAorICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKKyAgICAgICAgIyAgICAgIHdoaWNoIGFyZSBub3QgdHJhbnNsYXRlZCBpbiB0aGUgZGVzaXJlZGxhbmcgY2F0YWxvZykuCisgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KKyAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7CisgICAgICAgIGVzYWMKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCisgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxhbmciCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKyAgQ0FUQUxPR1M9CisgIEpBVkFDQVRBTE9HUz0KKyAgUVRDQVRBTE9HUz0KKyAgVENMQ0FUQUxPR1M9CisgIENTSEFSUENBVEFMT0dTPQorICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5HVUFTIjsgdGhlbgorICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCisgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKKyAgICAgIEpBVkFDQVRBTE9HUz0iJEpBVkFDQVRBTE9HUyBcJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCisgICAgICBRVENBVEFMT0dTPSIkUVRDQVRBTE9HUyAkbGFuZy5xbSIKKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCisgICAgICBUQ0xDQVRBTE9HUz0iJFRDTENBVEFMT0dTICRmcm9iYmVkbGFuZy5tc2ciCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKKyAgICAgIENTSEFSUENBVEFMT0dTPSIkQ1NIQVJQQ0FUQUxPR1MgJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbCIKKyAgICBkb25lCisgIGZpCisKKyAgc2VkIC1lICJzfEBQT1RGSUxFU19ERVBTQHwkUE9URklMRVNfREVQU3xnIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QFBST1BFUlRJRVNGSUxFU0B8JFBST1BFUlRJRVNGSUxFU3xnIiAtZSAic3xAQ0xBU1NGSUxFU0B8JENMQVNTRklMRVN8ZyIgLWUgInN8QFFNRklMRVNAfCRRTUZJTEVTfGciIC1lICJzfEBNU0dGSUxFU0B8JE1TR0ZJTEVTfGciIC1lICJzfEBSRVNPVVJDRVNETExGSUxFU0B8JFJFU09VUkNFU0RMTEZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBKQVZBQ0FUQUxPR1NAfCRKQVZBQ0FUQUxPR1N8ZyIgLWUgInN8QFFUQ0FUQUxPR1NAfCRRVENBVEFMT0dTfGciIC1lICJzfEBUQ0xDQVRBTE9HU0B8JFRDTENBVEFMT0dTfGciIC1lICJzfEBDU0hBUlBDQVRBTE9HU0B8JENTSEFSUENBVEFMT0dTfGciIC1lICdzLF4jZGlzdGRpcjosZGlzdGRpcjosJyA8ICIkYWNfZmlsZSIgPiAiJGFjX2ZpbGUudG1wIgorICB0YWI9YHByaW50ZiAnXHQnYAorICBpZiBncmVwIC1sICdAVENMQ0FUQUxPR1NAJyAiJGFjX2ZpbGUiID4gL2Rldi9udWxsOyB0aGVuCisgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCisgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKKyAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgorJGZyb2JiZWRsYW5nLm1zZzogJGxhbmcucG8KKyR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tdGNsIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIjsgXAorJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLXRjbCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQorRU9GCisgICAgZG9uZQorICBmaQorICBpZiBncmVwIC1sICdAQ1NIQVJQQ0FUQUxPR1NAJyAiJGFjX2ZpbGUiID4gL2Rldi9udWxsOyB0aGVuCisgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCisgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnIC1lICdzL15zci1DUy9zci1TUC8nIC1lICdzL0BsYXRpbiQvLUxhdG4vJyAtZSAncy9AY3lyaWxsaWMkLy1DeXJsLycgLWUgJ3MvXnNyLVNQJC9zci1TUC1MYXRuLycgLWUgJ3MvXnV6LVVaJC91ei1VWi1MYXRuLydgCisgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKKyRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGw6ICRsYW5nLnBvCiske3RhYn1AZWNobyAiXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciBcJChET01BSU4pIjsgXAorJHt0YWJ9XCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KK0VPRgorICAgIGRvbmUKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJFBPTUFLRUZJTEVERVBTIjsgdGhlbgorICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgorTWFrZWZpbGU6ICRQT01BS0VGSUxFREVQUworRU9GCisgIGZpCisgIG12ICIkYWNfZmlsZS50bXAiICIkYWNfZmlsZSIKK10pCisKK2RubCBJbml0aWFsaXplcyB0aGUgYWNjdW11bGF0b3IgdXNlZCBieSBBTV9YR0VUVEVYVF9PUFRJT04uCitBQ19ERUZVTihbQU1fWEdFVFRFWFRfT1BUSU9OX0lOSVRdLAorWworICBYR0VUVEVYVF9FWFRSQV9PUFRJT05TPQorXSkKKworZG5sIFJlZ2lzdGVycyBhbiBvcHRpb24gdG8gYmUgcGFzc2VkIHRvIHhnZXR0ZXh0IGluIHRoZSBwbyBzdWJkaXJlY3RvcnkuCitBQ19ERUZVTihbQU1fWEdFVFRFWFRfT1BUSU9OXSwKK1sKKyAgQUNfUkVRVUlSRShbQU1fWEdFVFRFWFRfT1BUSU9OX0lOSVRdKQorICBYR0VUVEVYVF9FWFRSQV9PUFRJT05TPSIkWEdFVFRFWFRfRVhUUkFfT1BUSU9OUyAkMSIKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3Byb2d0ZXN0Lm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wcm9ndGVzdC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjE4NmIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wcm9ndGVzdC5tNApAQCAtMCwwICsxLDkxIEBACisjIHByb2d0ZXN0Lm00IHNlcmlhbCA3IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMywgMjAwNSwgMjAwOC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KKworQUNfUFJFUkVRKFsyLjUwXSkKKworIyBTZWFyY2ggcGF0aCBmb3IgYSBwcm9ncmFtIHdoaWNoIHBhc3NlcyB0aGUgZ2l2ZW4gdGVzdC4KKworZG5sIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoVkFSSUFCTEUsIFBST0ctVE8tQ0hFQ0stRk9SLAorZG5sICAgVEVTVC1QRVJGT1JNRUQtT04tRk9VTkRfUFJPR1JBTSBbLCBWQUxVRS1JRi1OT1QtRk9VTkQgWywgUEFUSF1dKQorQUNfREVGVU4oW0FNX1BBVEhfUFJPR19XSVRIX1RFU1RdLAorWworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworIyBGaW5kIG91dCBob3cgdG8gdGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCisjIGFzIHN5c3RlbXMgbWF5IHVzZSBtZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5LgorY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgorIyEgL2Jpbi9zaAorZXhpdCAwCitfQVNFT0YKK2NobW9kICt4IGNvbmYkJC5maWxlCitpZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCitlbHNlCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKK2ZpCitybSAtZiBjb25mJCQuZmlsZQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiQyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkMjsgYWNfd29yZD1bJF0yCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkYWNfd29yZF0pCitBQ19DQUNIRV9WQUwoW2FjX2N2X3BhdGhfJDFdLAorW2Nhc2UgIlskXSQxIiBpbgorICBbW1xcL11dKiB8ID86W1tcXC9dXSopCisgICAgYWNfY3ZfcGF0aF8kMT0iWyRdJDEiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICAgIDs7CisgICopCisgICAgYWNfc2F2ZV9JRlM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgZm9yIGFjX2RpciBpbiBpZmVsc2UoWyQ1XSwgLCAkUEFUSCwgWyQ1XSk7IGRvCisgICAgICBJRlM9IiRhY19zYXZlX0lGUyIKKyAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgICAgaWYgJGFjX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgICAgICBlY2hvICIkYXNfbWU6IHRyeWluZyAkYWNfZGlyLyRhY193b3JkLi4uIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgICAgaWYgWyQzXTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfcGF0aF8kMT0iJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAgICAgICAgIGJyZWFrIDIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBJRlM9IiRhY19zYXZlX0lGUyIKK2RubCBJZiBubyA0dGggYXJnIGlzIGdpdmVuLCBsZWF2ZSB0aGUgY2FjaGUgdmFyaWFibGUgdW5zZXQsCitkbmwgc28gQUNfUEFUSF9QUk9HUyB3aWxsIGtlZXAgbG9va2luZy4KK2lmZWxzZShbJDRdLCAsICwgWyAgdGVzdCAteiAiWyRdYWNfY3ZfcGF0aF8kMSIgJiYgYWNfY3ZfcGF0aF8kMT0iJDQiCitdKWRubAorICAgIDs7Citlc2FjXSlkbmwKKyQxPSIkYWNfY3ZfcGF0aF8kMSIKK2lmIHRlc3QgaWZlbHNlKFskNF0sICwgWy1uICJbJF0kMSJdLCBbIlskXSQxIiAhPSAiJDQiXSk7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbJF1bJDFdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub10pCitmaQorQUNfU1VCU1QoWyQxXSlkbmwKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9jb25maWcucnBhdGggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9jb25maWcucnBhdGgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmUyMDJjMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2NvbmZpZy5ycGF0aApAQCAtMCwwICsxLDY4NCBAQAorIyEgL2Jpbi9zaAorIyBPdXRwdXQgYSBzeXN0ZW0gZGVwZW5kZW50IHNldCBvZiB2YXJpYWJsZXMsIGRlc2NyaWJpbmcgaG93IHRvIHNldCB0aGUKKyMgcnVuIHRpbWUgc2VhcmNoIHBhdGggb2Ygc2hhcmVkIGxpYnJhcmllcyBpbiBhbiBleGVjdXRhYmxlLgorIworIyAgIENvcHlyaWdodCAxOTk2LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgVGFrZW4gZnJvbSBHTlUgbGlidG9vbCwgMjAwMQorIyAgIE9yaWdpbmFsbHkgYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CisjCisjICAgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgICB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgICBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyMKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZpbGUgaXMgdGhlIGNhbm9uaWNhbCBob3N0IHNwZWNpZmljYXRpb24sCisjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yCisjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIENDLCBHQ0MsIExERkxBR1MsIExELCB3aXRoX2dudV9sZAorIyBzaG91bGQgYmUgc2V0IGJ5IHRoZSBjYWxsZXIuCisjCisjIFRoZSBzZXQgb2YgZGVmaW5lZCB2YXJpYWJsZXMgaXMgYXQgdGhlIGVuZCBvZiB0aGlzIHNjcmlwdC4KKworIyBLbm93biBsaW1pdGF0aW9uczoKKyMgLSBPbiBJUklYIDYuNSB3aXRoIENDPSJjYyIsIHRoZSBydW4gdGltZSBzZWFyY2ggcGF0Y2ggbXVzdCBub3QgYmUgbG9uZ2VyCisjICAgdGhhbiAyNTYgYnl0ZXMsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgZHVtcCBjb3JlLiBUaGUgb25seQorIyAgIGtub3duIHdvcmthcm91bmQgaXMgdG8gY2hvb3NlIHNob3J0ZXIgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgYnVpbGQKKyMgICBkaXJlY3RvcnkgYW5kL29yIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgorCisjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSAnLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKKyMgd2hpY2ggbmVlZHMgJy5saWInKS4KK2xpYmV4dD1hCitzaHJleHQ9LnNvCisKK2hvc3Q9IiQxIgoraG9zdF9jcHU9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCitob3N0X3ZlbmRvcj1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKK2hvc3Rfb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ0NfQkFTRU5BTUUuCisKK2ZvciBjY190ZW1wIGluICRDQyIiOyBkbworICBjYXNlICRjY190ZW1wIGluCisgICAgY29tcGlsZSB8ICpbXFwvXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1xcL11jY2FjaGUgKSA7OworICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgXC0qKSA7OworICAgICopIGJyZWFrOzsKKyAgZXNhYworZG9uZQorY2NfYmFzZW5hbWU9YGVjaG8gIiRjY190ZW1wIiB8IHNlZCAtZSAncyVeLiovJSUnYAorCisjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NPTVBJTEVSX1BJQy4KKword2w9CitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICB3bD0nLVdsLCcKK2Vsc2UKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4KikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgOzsKKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIGVjYyopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgaWNjKiB8IGlmb3J0KikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBsZjk1KikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBuYWdmb3IqKQorICAgICAgICAgIHdsPSctV2wsLVdsLCwnCisgICAgICAgICAgOzsKKyAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGNjYyopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGNvbW8pCisgICAgICAgICAgd2w9Jy1sb3B0PScKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorICAgICAgICAgICAgKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorICAgICAgICAgICAgICB3bD0KKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICpTdW5cIEMqKQorICAgICAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgbmV3c29zNikKKyAgICAgIDs7CisgICAgKm50byogfCAqcW54KikKKyAgICAgIDs7CisgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHJkb3MqKQorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAgICAgICAgICB3bD0nLVFvcHRpb24gbGQgJworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIHdsPSctUW9wdGlvbiBsZCAnCisgICAgICA7OworICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBzeXN2NCpNUCopCisgICAgICA7OworICAgIHN5c3Y1KiB8IHVuaXh3YXJlKiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCBPcGVuVU5JWCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgdW5pY29zKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICB1dHM0KikKKyAgICAgIDs7CisgIGVzYWMKK2ZpCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfTElOS0VSX1NITElCUy4KKworaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CitoYXJkY29kZV9kaXJlY3Q9bm8KK2hhcmRjb2RlX21pbnVzX0w9bm8KKworY2FzZSAiJGhvc3Rfb3MiIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCisgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICBmaQorICAgIDs7CisgIGludGVyaXgqKQorICAgICMgd2UganVzdCBob3BlL2Fzc3VtZSB0aGlzIGlzIGdjYyBhbmQgbm90IGM4OSAoPSBNU1ZDKyspCisgICAgd2l0aF9nbnVfbGQ9eWVzCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICA7OworZXNhYworCitsZF9zaGxpYnM9eWVzCitpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICMgU2V0IHNvbWUgZGVmYXVsdHMgZm9yIEdOVSBsZCB3aXRoIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuIFRoZXNlCisgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQorICAjIGhlcmUgYWxsb3dzIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCisgICMgVW5saWtlIGxpYnRvb2wsIHdlIHVzZSAtcnBhdGggaGVyZSwgbm90IC0tcnBhdGgsIHNpbmNlIHRoZSBkb2N1bWVudGVkCisgICMgb3B0aW9uIG9mIEdOVSBsZCBpcyBjYWxsZWQgLXJwYXRoLCBub3QgLS1ycGF0aC4KKyAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXhbMy05XSopCisgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgcG93ZXJwYykKKyAgICAgICAgICA7OworICAgICAgICBtNjhrKQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGJlb3MqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBoYWlrdSopCisgICAgICA7OworICAgIGludGVyaXhbMy05XSopCisgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICA7OworICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBuZXRic2QqKQorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGlmICRMRCAtdiAyPiYxIHwgZ3JlcCAnQkZEIDJcLjgnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCisgICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xWzAtNV0uKikKKyAgICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LXJwYXRoLCRsaWJkaXJgJworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxkX3NobGlicz1ubworICAgICAgICAgIGZpCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgIGVzYWMKKyAgaWYgdGVzdCAiJGxkX3NobGlicyIgPSBubzsgdGhlbgorICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgIGZpCitlbHNlCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeDMqKQorICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICAjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKKyAgICAgICAgIyBicm9rZW4gY29sbGVjdDIuCisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAorICAgICAgZmkKKyAgICAgIDs7CisgICAgYWl4WzQtOV0qKQorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAorICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKyAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubworICAgICAgZWxzZQorICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICAgICMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAorICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKyAgICAgICAgIyBuZWVkIHRvIGRvIHJ1bnRpbWUgbGlua2luZy4KKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlsyM118YWl4NC5bMjNdLip8YWl4WzUtOV0qKQorICAgICAgICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbworICAgICAgICAgICAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKyAgICAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZG9uZQorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKKyAgICAgICAgICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCisgICAgICAgICAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYgXAorICAgICAgICAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgorICAgICAgICAgICAgOgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAorICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9CisgICAgICAgICAgZmkKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICBmaQorICAgICAgIyBCZWdpbiBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgorICAgICAgZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC5jCisgICAgICAke0NDfSAke0xERkxBR1N9IGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QKKyAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KK30nYAorICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorICAgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Cit9J2AKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCisgICAgICAgIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIgorICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3QKKyAgICAgICMgRW5kIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCisgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKyAgICAgICAgZWxzZQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgOzsKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgcG93ZXJwYykKKyAgICAgICAgICA7OworICAgICAgICBtNjhrKQorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGJzZGlbNDVdKikKKyAgICAgIDs7CisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKyAgICAgIGxpYmV4dD1saWIKKyAgICAgIDs7CisgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgaWYgeyBjYXNlICRjY19iYXNlbmFtZSBpbiBpZm9ydCopIHRydWU7OyAqKSB0ZXN0ICIkR0NDIiA9IHllczs7IGVzYWM7IH07IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGRndXgqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgOzsKKyAgICBmcmVlYnNkMi5bMDFdKikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgaHB1eDkqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIGhwdXgxMCopCisgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgZmkKKyAgICAgIDs7CisgICAgaHB1eDExKikKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCisgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCisgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICBmaQorICAgICAgOzsKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIG5ldGJzZCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICA7OworICAgIG5ld3NvczYpCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgKm50byogfCAqcW54KikKKyAgICAgIDs7CisgICAgb3BlbmJzZCopCisgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICAgIGVsc2UKKyAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCisgICAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIG9zMiopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBvc2YzKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBvc2Y0KiB8IG9zZjUqKQorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgZWxzZQorICAgICAgICAjIEJvdGggY2MgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKKyAgICAgIGZpCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgc29sYXJpcyopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICA7OworICAgIHN1bm9zNCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBzeXN2NCkKKyAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCisgICAgICAgIHNuaSkKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzICMgaXMgdGhpcyByZWFsbHkgdHJ1ZT8/PworICAgICAgICAgIDs7CisgICAgICAgIHNpZW1lbnMpCisgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICAgICAgOzsKKyAgICAgICAgbW90b3JvbGEpCisgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vICNNb3Rvcm9sYSBtYW51YWwgc2F5cyB5ZXMsIGJ1dCBteSB0ZXN0cyBzYXkgdGhleSBsaWUKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzeXN2NC4zKikKKyAgICAgIDs7CisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9eWVzCisgICAgICBmaQorICAgICAgOzsKKyAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bMDFdLlsxMF0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuWzAyNF0qKQorICAgICAgOzsKKyAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LVIsJGxpYmRpcmAnCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JworICAgICAgOzsKKyAgICB1dHM0KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGxkX3NobGlicz1ubworICAgICAgOzsKKyAgZXNhYworZmkKKworIyBDaGVjayBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSLgorIyBVbmxpa2UgbGlidG9vbC5tNCwgaGVyZSB3ZSBkb24ndCBjYXJlIGFib3V0IF9hbGxfIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LCBidXQKKyMgb25seSBhYm91dCB0aGUgb25lIHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLiBUaGlzIGlzIHRoZSBsYXN0CisjIGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQsIG9yIHBvc3NpYmx5IHR3byBvZiB0aGVtIGlmIHRoZQorIyBsaW5rZXIgaGFzIHNwZWNpYWwgc2VhcmNoIHJ1bGVzLgorbGlicmFyeV9uYW1lc19zcGVjPSAgICAgICMgdGhlIGxhc3QgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNAorbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKK2Nhc2UgIiRob3N0X29zIiBpbgorICBhaXgzKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCisgICAgOzsKKyAgYWl4WzQtOV0qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGFtaWdhb3MqKQorICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgIHBvd2VycGMqKQorICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcgOzsKKyAgICAgIG02OGspCisgICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgYmVvcyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgYnNkaVs0NV0qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBzaHJleHQ9LmRsbAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEgJGxpYm5hbWUubGliJworICAgIDs7CisgIGRhcndpbiogfCByaGFwc29keSopCisgICAgc2hyZXh0PS5keWxpYgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGRndXgqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGZyZWVic2RbMjNdLiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JworICAgIDs7CisgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBnbnUqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGhhaWt1KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgaWE2NCopCisgICAgICAgIHNocmV4dD0uc28KKyAgICAgICAgOzsKKyAgICAgIGhwcGEqNjQqKQorICAgICAgICBzaHJleHQ9LnNsCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBzaHJleHQ9LnNsCisgICAgICAgIDs7CisgICAgZXNhYworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGludGVyaXhbMy05XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCisgICAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGNhc2UgJExEIGluCisgICAgICAgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OworICAgICAgICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpIGxpYnN1ZmY9MzIgc2hsaWJzdWZmPU4zMiA7OworICAgICAgICAgICotNjR8KiItNjQgInwqLW1lbGY2NGJtaXB8KiItbWVsZjY0Ym1pcCAiKSBsaWJzdWZmPTY0IHNobGlic3VmZj02NCA7OworICAgICAgICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBsaW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQorICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBrbmV0YnNkKi1nbnUpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgbmV0YnNkKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBuZXdzb3M2KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgICpudG8qIHwgKnFueCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JworICAgIDs7CisgIG9zMiopCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzaHJleHQ9LmRsbAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKKyAgICA7OworICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgcmRvcyopCisgICAgOzsKKyAgc29sYXJpcyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgc3Vub3M0KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgc3lzdjQgfCBzeXN2NC4zKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzeXN2NCpNUCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKiB8IHN5c3Y0KnV3MiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgdHBmKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICB1dHM0KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworZXNhYworCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbImAkXFxdXCkvXFxcMS9nJworZXNjYXBlZF93bD1gZWNobyAiWCR3bCIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorc2hsaWJleHQ9YGVjaG8gIiRzaHJleHQiIHwgc2VkIC1lICdzLF5cLiwsJ2AKK2VzY2FwZWRfbGlibmFtZV9zcGVjPWBlY2hvICJYJGxpYm5hbWVfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWM9YGVjaG8gIlgkbGlicmFyeV9uYW1lc19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9YGVjaG8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCitMQ19BTEw9QyBzZWQgLWUgJ3MvXlwoW2EtekEtWjAtOV9dKlwpPS9hY2xfY3ZfXDE9LycgPDxFT0YKKworIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgord2w9IiRlc2NhcGVkX3dsIgorCisjIFN0YXRpYyBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgImEiKS4KK2xpYmV4dD0iJGxpYmV4dCIKKworIyBTaGFyZWQgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJzbyIpLgorc2hsaWJleHQ9IiRzaGxpYmV4dCIKKworIyBGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeC4KK2xpYm5hbWVfc3BlYz0iJGVzY2FwZWRfbGlibmFtZV9zcGVjIgorCisjIExpYnJhcnkgbmFtZXMgdGhhdCB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4KK2xpYnJhcnlfbmFtZXNfc3BlYz0iJGVzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjIgorCisjIEZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KKyMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdC4KK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiRlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCisKKyMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlIC1ycGF0aCBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKKworIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyMgcmVzdWx0aW5nIGJpbmFyeS4KK2hhcmRjb2RlX2RpcmVjdD0iJGhhcmRjb2RlX2RpcmVjdCIKKworIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyMgcmVzdWx0aW5nIGJpbmFyeS4KK2hhcmRjb2RlX21pbnVzX0w9IiRoYXJkY29kZV9taW51c19MIgorCitFT0YKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9yZW1vdmUtcG90Y2RhdGUuc2luCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNzBkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9yZW1vdmUtcG90Y2RhdGUuc2luCkBAIC0wLDAgKzEsMjUgQEAKKyMgU2VkIHNjcmlwdCB0aGF0IHJlbW92ZXMgdGhlIFBPVC1DcmVhdGlvbi1EYXRlIGxpbmUgaW4gdGhlIGhlYWRlciBlbnRyeQorIyBmcm9tIGEgUE9UIGZpbGUuCisjCisjIENvcHlyaWdodCAoQykgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyMgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CisjIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLAorIyB3aXRob3V0IGFueSB3YXJyYW50eS4KKyMKKyMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUgZm9sbG93aW5nIG9jY3VycmVuY2VzIG9mIHRoZQorIyBwYXR0ZXJuIGlzIGFjaGlldmVkIGJ5IGxvb2tpbmcgYXQgdGhlIGhvbGQgc3BhY2UuCisvXiJQT1QtQ3JlYXRpb24tRGF0ZTogLioiJC97Cit4CisjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCitzL1AvUC8KK3RhCisjIFllcyBpdCB3YXMgZW1wdHkuIEZpcnN0IG9jY3VycmVuY2UuIFJlbW92ZSB0aGUgbGluZS4KK2cKK2QKK2JiCis6YQorIyBUaGUgaG9sZCBzcGFjZSB3YXMgbm9uZW1wdHkuIEZvbGxvd2luZyBvY2N1cnJlbmNlcy4gRG8gbm90aGluZy4KK3gKKzpiCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjE5LjguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMTkuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmZmMTk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMTkuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJNaW5pbWFsIGdldHRleHQgZm9yIHN1cHBvcnRpbmcgbmF0aXZlIGF1dG9jb25mL2F1dG9tYWtlIgotREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIG00IG1hY3JvcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYnVpbGRpbmcgXAotYXV0b2NvbmYvYXV0b21ha2UuIFRoaXMgcHJvdmlkZXMgYSBzaWduaWZpY2FudCBidWlsZCB0aW1lIHNwZWVkdXAgYnkgXAotdGhlIHJlbW92YWwgb2YgZ2V0dGV4dC1uYXRpdmUgZnJvbSBtb3N0IGRlcGVuZGVuY3kgY2hhaW5zIChub3cgb25seSBcCi1uZWVkZWQgZm9yIGdldHRleHQgZm9yIHRoZSB0YXJnZXQpLiIKLVNSQ19VUkkgPSAiZmlsZTovL2FjbG9jYWwudGd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZy5ycGF0aCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG90Y2RhdGUuc2luIFwKLSAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSIKLQotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLUlOSElCSVRfQVVUT1RPT0xTX0RFUFMgPSAiMSIKLQotTElDRU5TRSA9ICJGU0YtVW5saW1pdGVkIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGJkMDkwYTIwYmZjZDFhMThmMWY3OTgzN2I1ZTNlOTEiCi0KLWluaGVyaXQgbmF0aXZlCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLwotCWNwICR7V09SS0RJUn0vKi5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLwotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KLQljcCAke1dPUktESVJ9L2NvbmZpZy5ycGF0aCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0LwotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUuaW4uaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KLQljcCAke1dPUktESVJ9L3JlbW92ZS1wb3RjZGF0ZS5zaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTRkY2JlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4yMC4xLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTWluaW1hbCBnZXR0ZXh0IGZvciBzdXBwb3J0aW5nIG5hdGl2ZSBhdXRvY29uZi9hdXRvbWFrZSIKK0RFU0NSSVBUSU9OID0gIkNvbnRhaW5zIHRoZSBtNCBtYWNyb3Mgc3VmZmljaWVudCB0byBzdXBwb3J0IGJ1aWxkaW5nIFwKK2F1dG9jb25mL2F1dG9tYWtlLiBUaGlzIHByb3ZpZGVzIGEgc2lnbmlmaWNhbnQgYnVpbGQgdGltZSBzcGVlZHVwIGJ5IFwKK3RoZSByZW1vdmFsIG9mIGdldHRleHQtbmF0aXZlIGZyb20gbW9zdCBkZXBlbmRlbmN5IGNoYWlucyAobm93IG9ubHkgXAorbmVlZGVkIGZvciBnZXR0ZXh0IGZvciB0aGUgdGFyZ2V0KS4iCitTUkNfVVJJID0gImZpbGU6Ly9hY2xvY2FsLyBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWcucnBhdGggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4uaW4gXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXBvdGNkYXRlLnNpbiBcCisgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HIFwKKyIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0lOSElCSVRfQVVUT1RPT0xTX0RFUFMgPSAiMSIKKworTElDRU5TRSA9ICJGU0YtVW5saW1pdGVkIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGJkMDkwYTIwYmZjZDFhMThmMWY3OTgzN2I1ZTNlOTEiCisKK2luaGVyaXQgbmF0aXZlCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLworCWNwICR7V09SS0RJUn0vYWNsb2NhbC8qLm00ICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLworCWNwICR7V09SS0RJUn0vY29uZmlnLnJwYXRoICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvCisJY3AgJHtXT1JLRElSfS9NYWtlZmlsZS5pbi5pbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLworCWNwICR7V09SS0RJUn0vcmVtb3ZlLXBvdGNkYXRlLnNpbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAxMjFhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4OCArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBwcm9kdWNpbmcgbXVsdGktbGluZ3VhbCBtZXNzYWdlcyIKLURFU0NSSVBUSU9OID0gIkdOVSBnZXR0ZXh0IGlzIGEgc2V0IG9mIHRvb2xzIHRoYXQgcHJvdmlkZXMgYSBmcmFtZXdvcmsgdG8gaGVscCBvdGhlciBwcm9ncmFtcyBwcm9kdWNlIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMuIFwKLVRoZXNlIHRvb2xzIGluY2x1ZGUgYSBzZXQgb2YgY29udmVudGlvbnMgYWJvdXQgaG93IHByb2dyYW1zIHNob3VsZCBiZSB3cml0dGVuIHRvIHN1cHBvcnQgbWVzc2FnZSBjYXRhbG9ncywgYSBkaXJlY3RvcnkgYW5kIGZpbGUgXAotbmFtaW5nIG9yZ2FuaXphdGlvbiBmb3IgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MgdGhlbXNlbHZlcywgYSBydW50aW1lIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgcmV0cmlldmFsIG9mIHRyYW5zbGF0ZWQgbWVzc2FnZXMsIGFuZCBcCi1hIGZldyBzdGFuZC1hbG9uZSBwcm9ncmFtcyB0byBtYXNzYWdlIGluIHZhcmlvdXMgd2F5cyB0aGUgc2V0cyBvZiB0cmFuc2xhdGFibGUgYW5kIGFscmVhZHkgdHJhbnNsYXRlZCBzdHJpbmdzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZXR0ZXh0L2dldHRleHQuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLSMgQmVjYXVzZSBwby1ncmFtLWdlbi55IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCwKLSMgaXQgcmVxdWlyZXMgeWFjYyB3aGljaCBwcm92aWRlZCBieSBiaXNvbi1uYXRpdmUKLSMgUGxlYXNlIHJlbW92ZSBiaXNvbi1uYXRpdmUgZnJvbSBERVBFTkRTKiB3aGVuIG5leHQgdXBncmFkZQotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIgotUFJPVklERVMgPSAidmlydHVhbC9saWJpbnRsIHZpcnR1YWwvZ2V0dGV4dCIKLVBST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ2aXJ0dWFsL2dldHRleHQtbmF0aXZlIgotUkNPTkZMSUNUU18ke1BOfSA9ICJwcm94eS1saWJpbnRsIgotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dldHRleHQvZ2V0dGV4dC0ke1BWfS50YXIuZ3ogXAotCSAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCi0JICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKLQkgICBmaWxlOi8vY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCi0JICAgZmlsZTovL3VzZS1wa2djb25maWcucGF0Y2ggXAotCSAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2ggXAotCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotCSAgIGZpbGU6Ly9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk3ZTAzNGNmOGNlNWJhNzNhMjhmZjZjM2MwNjM4MDkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmOTQyYWYwZTQzOGNlZDRhOGIwZWE0YjBiNmUwZDZkNjU3MTU3YzVlMjM2NGRlNTdiYWEyNzljMWMxMjVjNDMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmFzcHJpbnRmIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWphdmEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1lbWFjcyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ2l0IFwKLSAgICAgICAgICAgICAgICAgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIFwKLSAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtYmlzb25sb2NhbGVkaXI9JHtkYXRhZGlyfS9sb2NhbGUgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY3JvY28gZ2xpYiBsaWJ4bWwiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbY3JvY29dID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJjcm9jbywtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28sbGliY3JvY28iCi1QQUNLQUdFQ09ORklHW2dsaWJdID0gIi0td2l0aG91dC1pbmNsdWRlZC1nbGliLC0td2l0aC1pbmNsdWRlZC1nbGliLGdsaWItMi4wIgotUEFDS0FHRUNPTkZJR1tsaWJ4bWxdID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJ4bWwsLS13aXRoLWluY2x1ZGVkLWxpYnhtbCxsaWJ4bWwyIgotIyBOZWVkIHBhdGhzIGhlcmUgdG8gYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uIGJ1dCB0aGlzIGNhbiBjYXVzZSBSUEFUSCB3YXJuaW5ncwotIyBvciBwcm9ibGVtcyBpZiAkbGliZGlyIGlzbid0ICRwcmVmaXgvbGliLgotUEFDS0FHRUNPTkZJR1tsaWJ1bmlzdHJpbmddID0gIi0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0td2l0aC1pbmNsdWRlZC1saWJ1bmlzdHJpbmcsbGlidW5pc3RyaW5nIgotUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKLQotYWNwYXRocyA9ICctSSAke1N9L2dldHRleHQtcnVudGltZS9tNCBcCi0gICAgICAgICAgIC1JICR7U30vZ2V0dGV4dC10b29scy9tNCcKLQotZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsICgpIHsKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLQlybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJpbnRsLmgKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmludGwubGEKLX0KLQotIyB0aGVzZSBsYWNrIHRoZSAueCBiZWhpbmQgdGhlIC5zbywgYnV0IHNob3VsZG4ndCBiZSBpbiB0aGUgLWRldiBwYWNrYWdlCi0jIE90aGVyd2lzZSB5b3UgZ2V0IHRoZSBmb2xsb3dpbmcgcmVzdWx0czoKLSMgNy40TSAgICBnbGliYy9pbWFnZXMvZXA5M3h4L0FuZ3N0cm9tLWNvbnNvbGUtaW1hZ2UtZ2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6Ci0jIDI1TSAgICAgdWNsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS11Y2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6Ci0jIGJlY2F1c2UgZ2V0dGV4dCBkZXBlbmRzIG9uIGdldHRleHQtZGV2LCB3aGljaCBwdWxscyBpbiBtb3JlIC1kZXYgcGFja2FnZXM6Ci0jIDE1MjI4ICAgS2lCIC9lcDkzeHgvbGlic3RkYysrLWRldl80LjIuMi1yMl9lcDkzeHguaXBrCi0jIDEzMDAgICAgS2lCIC9lcDkzeHgvdWNsaWJjLWRldl8wLjkuMjktcjhfZXA5M3h4LmlwawotIyAxNDAgICAgIEtpQiAvYXJtdjR0L2dldHRleHQtZGV2XzAuMTQuMS1yNl9hcm12NHQuaXBrCi0jIDQgICAgICAgS2lCIC9lcDkzeHgvbGliZ2NjLXMtZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKLQotUEFDS0FHRVMgPSsgImxpYmdldHRleHRsaWIgbGliZ2V0dGV4dHNyYyIKLUZJTEVTX2xpYmdldHRleHRsaWIgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRsaWItKi5zbyoiCi1GSUxFU19saWJnZXR0ZXh0c3JjID0gIiR7bGliZGlyfS9saWJnZXR0ZXh0c3JjLSouc28qIgotCi1QQUNLQUdFUyA9KyAiZ2V0dGV4dC1ydW50aW1lIGdldHRleHQtcnVudGltZS1kZXYgZ2V0dGV4dC1ydW50aW1lLWRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vKiIKLQotIyBUaGUgaXRzL01ha2VmaWxlLmFtIGhhcyBkZWZpbmVkOgotIyBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpJChQQUNLQUdFX1NVRkZJWCkvaXRzCi0jIG5vdCBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpLCBzbyB1c2Ugd2lsZGNhcmQgdG8gbWF0Y2ggdGhlIHZlcnNpb24uCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0tKi8qIgotCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUgPSAiJHtiaW5kaXJ9L2dldHRleHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZ2V0dGV4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2VudnN1YnN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2V0dGV4dC5zaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKLSAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kb2MgPSAiJHttYW5kaXJ9L21hbjEvZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvbmdldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2VudnN1YnN0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS8uKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4zLyogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9uZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZW52c3Vic3QuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0LyouMy5odG1sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nZXR0ZXh0L0FCT1VULU5MUyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2NzaGFycGRvYy8qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2xpYmFzcHJpbnRmL2F1dG9zcHJpbnRmLmh0bWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luZm9kaXJ9L2F1dG9zcHJpbnRmLmluZm8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0Jcm0gJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8qCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9jb25maWcucnBhdGgKLQlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9yZW1vdmUtcG90Y2RhdGUuc2luCi0KLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9tc2dmbXQgXAotICAgICAgICAgICAgICAgIEdFVFRFWFREQVRBRElSPSIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQtMC4xOS44LyIKLQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICBjZCAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvCi0gICAgICAgIHNlZCAtaSAnL15idWlsZHRlc3QtVEVTVFM6IC9jIGJ1aWxkdGVzdC1URVNUUzogJChURVNUUykgJChjaGVja19QUk9HUkFNUyknIE1ha2VmaWxlCi0gICAgICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi0gICAgICAgIGNkIC0KLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vcG8KLSAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbWlzYwotICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLyogICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLy5saWJzLyogICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvaW50bC8ubGlicy9saWJnbnVpbnRsLnNvLjgqICAgICAgICAgJHtEfSR7bGliZGlyfS8KLSAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICAgICAgc2VkIC1pICcvXk1ha2VmaWxlOi9jIE1ha2VmaWxlOicgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLSAgICAgICAgc2VkIC1pIC1lICdzOkNPTkZJR19TSEVMTD0uKjomIExPQ0FMRV9GUj0nZnJfRlIuaXNvODg1OTEnIExPQ0FMRV9GUl9VVEY4PSdmcl9GUi51dGY4JyBMT0NBTEVfSkE9J2phX0pQLmV1Y2pwJzpnJyBcCi0gICAgICAgICAgICAtZSAnczpsYW5nLWMgbGFuZy1jKys6bGFuZy1jKys6ZycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLSAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL21zZ3VuZm10LnRjbCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3NyYy9wcm9qZWN0LWlkICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9nZXR0ZXh0LnNoICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvbmdldHRleHQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2VudnN1YnN0ICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9nZXR0ZXh0ICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtdG9vbHMvc3JjLy5saWJzL2NsZHItcGx1cmFscyAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9wby9nZXR0ZXh0LXRvb2xzLnBvdCAke0R9JHtQVEVTVF9QQVRIfS9wbwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9taXNjLyogICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbWlzYwotICAgICAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyAtbmFtZSAiKi5vIiAtZXhlYyBybSB7fSBcOwotICAgICAgICBjaG1vZCAwNzU1ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2xhbmctdmFsYSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9wbHVyYWwtMSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC10Y2wtNCBcCi0gICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtdmFsYS0xICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC1wby0yCi0gICAgZmkKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCi0gICAgZ2xpYmMtZ2NvbnYtYmlnNSBcCi0gICAgZ2xpYmMtY2hhcm1hcC1iaWc1IFwKLSAgICBnbGliYy1nY29udi1jcDEyNTEgXAotICAgIGdsaWJjLWNoYXJtYXAtY3AxMjUxIFwKLSAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTkgXAotICAgIGdsaWJjLWdjb252LWlzbzg4NTktOSBcCi0gICAgZ2xpYmMtY2hhcm1hcC1rb2k4LXIgXAotICAgIGdsaWJjLWdjb252LWtvaTgtciBcCi0gICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIFwKLSAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTIgXAotICAgIGdsaWJjLWdjb252LWV1Yy1rciBcCi0gICAgZ2xpYmMtY2hhcm1hcC1ldWMta3IgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAibGRmbGFncyIKLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJycGF0aHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTQ5M2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4yMC4xLmJiCkBAIC0wLDAgKzEsMjEyIEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBwcm9kdWNpbmcgbXVsdGktbGluZ3VhbCBtZXNzYWdlcyIKK0RFU0NSSVBUSU9OID0gIkdOVSBnZXR0ZXh0IGlzIGEgc2V0IG9mIHRvb2xzIHRoYXQgcHJvdmlkZXMgYSBmcmFtZXdvcmsgdG8gaGVscCBvdGhlciBwcm9ncmFtcyBwcm9kdWNlIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMuIFwKK1RoZXNlIHRvb2xzIGluY2x1ZGUgYSBzZXQgb2YgY29udmVudGlvbnMgYWJvdXQgaG93IHByb2dyYW1zIHNob3VsZCBiZSB3cml0dGVuIHRvIHN1cHBvcnQgbWVzc2FnZSBjYXRhbG9ncywgYSBkaXJlY3RvcnkgYW5kIGZpbGUgXAorbmFtaW5nIG9yZ2FuaXphdGlvbiBmb3IgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MgdGhlbXNlbHZlcywgYSBydW50aW1lIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgcmV0cmlldmFsIG9mIHRyYW5zbGF0ZWQgbWVzc2FnZXMsIGFuZCBcCithIGZldyBzdGFuZC1hbG9uZSBwcm9ncmFtcyB0byBtYXNzYWdlIGluIHZhcmlvdXMgd2F5cyB0aGUgc2V0cyBvZiB0cmFuc2xhdGFibGUgYW5kIGFscmVhZHkgdHJhbnNsYXRlZCBzdHJpbmdzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZXR0ZXh0L2dldHRleHQuaHRtbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUiCisKKyMgQmVjYXVzZSBwby1ncmFtLWdlbi55IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IGZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCwKKyMgaXQgcmVxdWlyZXMgeWFjYyB3aGljaCBwcm92aWRlZCBieSBiaXNvbi1uYXRpdmUKKyMgUGxlYXNlIHJlbW92ZSBiaXNvbi1uYXRpdmUgZnJvbSBERVBFTkRTKiB3aGVuIG5leHQgdXBncmFkZQorREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgdmlydHVhbC9saWJpY29udiIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIgorUFJPVklERVMgPSAidmlydHVhbC9saWJpbnRsIHZpcnR1YWwvZ2V0dGV4dCIKK1BST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ2aXJ0dWFsL2dldHRleHQtbmF0aXZlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJwcm94eS1saWJpbnRsIgorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dldHRleHQvZ2V0dGV4dC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWF1dG9wb2ludC0zLXVuc2V0LU1BS0VGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluaXQtZW52LmluLWRvLW5vdC1hZGQtQy1DWFgtcGFyYW1ldGVycy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYjViMGMwY2FhMDI4MTA1ZjNjYTE5MDVkZGMzMDZlMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjQxNTYzNGM2ZThjM2ZhOGI3MTM2Mjg3OWVjNzU3NWUyN2RhNDNkYTU2MmM3OThhOGEyZjIyM2U2ZTQ3ZjVjIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHBrZ2NvbmZpZyBwdGVzdAorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwZGlyIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNzaGFycCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhc3ByaW50ZiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1qYXZhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5hdGl2ZS1qYXZhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5tcCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1hY2wgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZW1hY3MgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdpdCBcCisgICAgICAgICAgICAgICAgIC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWJpc29ubG9jYWxlZGlyPSR7ZGF0YWRpcn0vbG9jYWxlIFwKKyAgICAgICAgICAgICAgICAgZ3RfY3ZfbG9jYWxlX2ZyX3V0Zjg9ZnJfRlIgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZnI9ZnJfRlIuSVNPLTg4NTktMSBcCisgICAgICAgICAgICAgICAgIGd0X2N2X2xvY2FsZV9kZV91dGY4PWRlX0RFIFwKKyAgICAgICAgICAgICAgICAgZ3RfY3ZfbG9jYWxlX2RlPWRlX0RFLklTTy04ODU5LTEgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiY3JvY28gZ2xpYiBsaWJ4bWwiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbY3JvY29dID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJjcm9jbywtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28sbGliY3JvY28iCitQQUNLQUdFQ09ORklHW2dsaWJdID0gIi0td2l0aG91dC1pbmNsdWRlZC1nbGliLC0td2l0aC1pbmNsdWRlZC1nbGliLGdsaWItMi4wIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWxdID0gIi0td2l0aG91dC1pbmNsdWRlZC1saWJ4bWwsLS13aXRoLWluY2x1ZGVkLWxpYnhtbCxsaWJ4bWwyIgorIyBOZWVkIHBhdGhzIGhlcmUgdG8gYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uIGJ1dCB0aGlzIGNhbiBjYXVzZSBSUEFUSCB3YXJuaW5ncworIyBvciBwcm9ibGVtcyBpZiAkbGliZGlyIGlzbid0ICRwcmVmaXgvbGliLgorUEFDS0FHRUNPTkZJR1tsaWJ1bmlzdHJpbmddID0gIi0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0td2l0aC1pbmNsdWRlZC1saWJ1bmlzdHJpbmcsbGlidW5pc3RyaW5nIgorUEFDS0FHRUNPTkZJR1ttc2djYXQtY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS1kaXNhYmxlLWN1cnNlcyxuY3Vyc2VzLCIKKworYWNwYXRocyA9ICctSSAke1N9L2dldHRleHQtcnVudGltZS9tNCBcCisgICAgICAgICAgIC1JICR7U30vZ2V0dGV4dC10b29scy9tNCcKKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsICgpIHsKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKKwlybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJpbnRsLmgKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmludGwubGEKK30KKworIyB0aGVzZSBsYWNrIHRoZSAueCBiZWhpbmQgdGhlIC5zbywgYnV0IHNob3VsZG4ndCBiZSBpbiB0aGUgLWRldiBwYWNrYWdlCisjIE90aGVyd2lzZSB5b3UgZ2V0IHRoZSBmb2xsb3dpbmcgcmVzdWx0czoKKyMgNy40TSAgICBnbGliYy9pbWFnZXMvZXA5M3h4L0FuZ3N0cm9tLWNvbnNvbGUtaW1hZ2UtZ2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6CisjIDI1TSAgICAgdWNsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS11Y2xpYmMtaXBrLTIwMDguMS10ZXN0LTIwMDgwMTA0LWVwOTN4eC5yb290ZnMudGFyLmd6CisjIGJlY2F1c2UgZ2V0dGV4dCBkZXBlbmRzIG9uIGdldHRleHQtZGV2LCB3aGljaCBwdWxscyBpbiBtb3JlIC1kZXYgcGFja2FnZXM6CisjIDE1MjI4ICAgS2lCIC9lcDkzeHgvbGlic3RkYysrLWRldl80LjIuMi1yMl9lcDkzeHguaXBrCisjIDEzMDAgICAgS2lCIC9lcDkzeHgvdWNsaWJjLWRldl8wLjkuMjktcjhfZXA5M3h4LmlwaworIyAxNDAgICAgIEtpQiAvYXJtdjR0L2dldHRleHQtZGV2XzAuMTQuMS1yNl9hcm12NHQuaXBrCisjIDQgICAgICAgS2lCIC9lcDkzeHgvbGliZ2NjLXMtZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKKworUEFDS0FHRVMgPSsgImxpYmdldHRleHRsaWIgbGliZ2V0dGV4dHNyYyIKK0ZJTEVTX2xpYmdldHRleHRsaWIgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRsaWItKi5zbyoiCitGSUxFU19saWJnZXR0ZXh0c3JjID0gIiR7bGliZGlyfS9saWJnZXR0ZXh0c3JjLSouc28qIgorCitQQUNLQUdFUyA9KyAiZ2V0dGV4dC1ydW50aW1lIGdldHRleHQtcnVudGltZS1kZXYgZ2V0dGV4dC1ydW50aW1lLWRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8ke0JQTn0vKiIKKworIyBUaGUgaXRzL01ha2VmaWxlLmFtIGhhcyBkZWZpbmVkOgorIyBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpJChQQUNLQUdFX1NVRkZJWCkvaXRzCisjIG5vdCBpdHNkaXIgPSAkKHBrZ2RhdGFkaXIpLCBzbyB1c2Ugd2lsZGNhcmQgdG8gbWF0Y2ggdGhlIHZlcnNpb24uCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0tKi8qIgorCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUgPSAiJHtiaW5kaXJ9L2dldHRleHQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZ2V0dGV4dCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2VudnN1YnN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2V0dGV4dC5zaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKKyAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTX2dldHRleHQtcnVudGltZS1kb2MgPSAiJHttYW5kaXJ9L21hbjEvZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvbmdldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2VudnN1YnN0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS8uKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4zLyogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9uZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZW52c3Vic3QuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0LyouMy5odG1sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nZXR0ZXh0L0FCT1VULU5MUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2NzaGFycGRvYy8qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2xpYmFzcHJpbnRmL2F1dG9zcHJpbnRmLmh0bWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luZm9kaXJ9L2F1dG9zcHJpbnRmLmluZm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJcm0gJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8qCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9jb25maWcucnBhdGgKKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9yZW1vdmUtcG90Y2RhdGUuc2luCisKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9tc2dmbXQgXAorICAgICAgICAgICAgICAgIEdFVFRFWFREQVRBRElSPSIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQtMC4yMC8iCisKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgY2QgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLworICAgICAgICBzZWQgLWkgJy9eYnVpbGR0ZXN0LVRFU1RTOiAvYyBidWlsZHRlc3QtVEVTVFM6ICQoVEVTVFMpICQoY2hlY2tfUFJPR1JBTVMpJyBNYWtlZmlsZQorICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUworICAgICAgICBjZCAtCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaWYgWyAke1BURVNUX0VOQUJMRUR9ID0gIjEiIF07IHRoZW4KKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3BvCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L21pc2MKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vaXRzCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3N0eWxlcworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9nbnVsaWItbGliCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V4YW1wbGVzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvaXRzLyogICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2l0cworICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL3N0eWxlcy8qICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zdHlsZXMKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2dldHRleHQuaCAgJHtEfSR7UFRFU1RfUEFUSH0vZ251bGliLWxpYgorICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL2V4YW1wbGVzL2hlbGxvLWMgICAgICAke0R9JHtQVEVTVF9QQVRIfS9leGFtcGxlcworICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLyogICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLy5saWJzLyogICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvaW50bC8ubGlicy9saWJnbnVpbnRsLnNvLjgqICAgICAgICAgJHtEfSR7bGliZGlyfS8KKyAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudiAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICAgICAgc2VkIC1pICcvXk1ha2VmaWxlOi9jIE1ha2VmaWxlOicgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pIC1lICdzOmxhbmctYyBsYW5nLWMrKzpsYW5nLWMrKzpnJyAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKyAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL21zZ3VuZm10LnRjbCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3NyYy9wcm9qZWN0LWlkICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9nZXR0ZXh0LnNoICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvbmdldHRleHQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2VudnN1YnN0ICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9nZXR0ZXh0ICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtdG9vbHMvc3JjLy5saWJzL2NsZHItcGx1cmFscyAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9wby9nZXR0ZXh0LXRvb2xzLnBvdCAke0R9JHtQVEVTVF9QQVRIfS9wbworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9taXNjLyogICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbWlzYworICAgICAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyAtbmFtZSAiKi5vIiAtZXhlYyBybSB7fSBcOworICAgICAgICBjaG1vZCAwNzU1ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2xhbmctdmFsYSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9wbHVyYWwtMSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC10Y2wtNCBcCisgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtdmFsYS0xICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC1wby0yCisgICAgZmkKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCisgICAgZ2xpYmMtZ2NvbnYtYmlnNSBcCisgICAgZ2xpYmMtY2hhcm1hcC1iaWc1IFwKKyAgICBnbGliYy1nY29udi1jcDEyNTEgXAorICAgIGdsaWJjLWNoYXJtYXAtY3AxMjUxIFwKKyAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTkgXAorICAgIGdsaWJjLWdjb252LWlzbzg4NTktOSBcCisgICAgZ2xpYmMtY2hhcm1hcC1rb2k4LXIgXAorICAgIGdsaWJjLWdjb252LWtvaTgtciBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0yIFwKKyAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTIgXAorICAgIGdsaWJjLWdjb252LWlzbzg4NTktMSBcCisgICAgZ2xpYmMtY2hhcm1hcC1pc28tODg1OS0xIFwKKyAgICBnbGliYy1nY29udi1ldWMta3IgXAorICAgIGdsaWJjLWNoYXJtYXAtZXVjLWtyIFwKKyAgICBnbGliYy1nY29udi1ldWMtanAgXAorICAgIGdsaWJjLWNoYXJtYXAtZXVjLWpwIFwKKyAgICBsb2NhbGUtYmFzZS1kZS1kZSBcCisgICAgbG9jYWxlLWJhc2UtZnItZnIgXAorIgorCitSUkVDT01NRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCisgICAgbG9jYWxlLWJhc2UtZGUtZGUuaXNvLTg4NTktMSBcCisgICAgbG9jYWxlLWJhc2UtZnItZnIuaXNvLTg4NTktMSBcCisiCisKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJsZGZsYWdzIgorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInJwYXRocyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLWdpby10ZXN0cy1yZXNvdXJjZXMuYy1jb21tZW50LW91dC1hLWJ1aWxkLWhvc3Qtb25seS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGZlZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLWdpby10ZXN0cy1yZXNvdXJjZXMuYy1jb21tZW50LW91dC1hLWJ1aWxkLWhvc3Qtb25seS0ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA3MzA4MDNmMmJjM2YyZjFhNzRmNGRiODA5YTIyNDA2NmU3ZWFlMTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDggSmFuIDIwMjAgMTg6MjI6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2lvL3Rlc3RzL3Jlc291cmNlcy5jOiBjb21tZW50IG91dCBhIGJ1aWxkIGhvc3Qtb25seSB0ZXN0CisKK1RoaXMgdGVzdCByZXF1aXJlcyBidWlsZGluZyByZXNvdXJjZXMgaW4gYSB3YXkgdGhhdCBpcworbm90IGNyb3NzLWNvbXBhdGlibGUgKGhhcmRjb2RlcyBsZCBhbmQgb2JqY29weSkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2lvL3Rlc3RzL3Jlc291cmNlcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL3Jlc291cmNlcy5jIGIvZ2lvL3Rlc3RzL3Jlc291cmNlcy5jCitpbmRleCBjNDRkMjE0Li5lMjg5YTAxIDEwMDY0NAorLS0tIGEvZ2lvL3Rlc3RzL3Jlc291cmNlcy5jCisrKysgYi9naW8vdGVzdHMvcmVzb3VyY2VzLmMKK0BAIC05OTMsNyArOTkzLDcgQEAgbWFpbiAoaW50ICAgYXJnYywKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9hdXRvbWF0aWMiLCB0ZXN0X3Jlc291cmNlX2F1dG9tYXRpYyk7CisgICAvKiBUaGlzIG9ubHkgdXNlcyBhdXRvbWF0aWMgcmVzb3VyY2VzIHRvbywgc28gaXQgdGVzdHMgdGhlIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgKi8KKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9tb2R1bGUiLCB0ZXN0X3Jlc291cmNlX21vZHVsZSk7CistICBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvYmluYXJ5LWxpbmtlZCIsIHRlc3RfcmVzb3VyY2VfYmluYXJ5X2xpbmtlZCk7CisrICAvKiBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvYmluYXJ5LWxpbmtlZCIsIHRlc3RfcmVzb3VyY2VfYmluYXJ5X2xpbmtlZCk7ICovCisgI2VuZGlmCisgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvdXJpL3F1ZXJ5LWluZm8iLCB0ZXN0X3VyaV9xdWVyeV9pbmZvKTsKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS91cmkvZmlsZSIsIHRlc3RfdXJpX2ZpbGUpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDExLUdNYWluQ29udGV4dC1GaXgtR1NvdXJjZS1pdGVyYXRvci1pZi1pdGVyYXRpb24tY2FuLW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2I3N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDExLUdNYWluQ29udGV4dC1GaXgtR1NvdXJjZS1pdGVyYXRvci1pZi1pdGVyYXRpb24tY2FuLW0ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBlZjJiZTQyOTk4ZTNmYzEwMjk5MDU1YTVhMDFmN2M3OTE1MzgxNzRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1NlYmFzdGlhbj0yMERyPUMzPUI2Z2U/PSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IE1vbiwgMyBGZWIgMjAyMCAxNTozODoyOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBHTWFpbkNvbnRleHQgLSBGaXggR1NvdXJjZSBpdGVyYXRvciBpZiBpdGVyYXRpb24gY2FuIG1vZGlmeQorIHRoZSBsaXN0CisKK1dlIGZpcnN0IGhhdmUgdG8gcmVmIHRoZSBuZXh0IHNvdXJjZSBhbmQgdGhlbiB1bnJlZiB0aGUgcHJldmlvdXMgb25lLgorVGhpcyBtaWdodCBiZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIHNvdXJjZSwgYW5kIGZyZWVpbmcgdGhlCitwcmV2aW91cyBzb3VyY2UgbWlnaHQgdW5yZWYgYW5kIGZyZWUgdGhlIG5leHQgb25lIHdoaWNoIHdvdWxkIHRoZW4gbGVhdmUKK3VzZSB3aXRoIGEgZGFuZ2xpbmcgcG9pbnRlciBoZXJlLgorCitGaXhlcyBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi9pc3N1ZXMvMjAzMQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi8tL2NvbW1pdC9iMDZjNDhkZTc1NTQ2MDdmZjNmYjU4ZDZjMDUxMGNmYTUwODhlOTA5XQorCistLS0KKyBnbGliL2dtYWluLmMgfCA4ICsrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ21haW4uYyBiL2dsaWIvZ21haW4uYworaW5kZXggYWY5NzljOC4uYTlhMjg3ZCAxMDA2NDQKKy0tLSBhL2dsaWIvZ21haW4uYworKysrIGIvZ2xpYi9nbWFpbi5jCitAQCAtOTY5LDEzICs5NjksMTcgQEAgZ19zb3VyY2VfaXRlcl9uZXh0IChHU291cmNlSXRlciAqaXRlciwgR1NvdXJjZSAqKnNvdXJjZSkKKyAgICAqIEdTb3VyY2VMaXN0IHRvIGJlIHJlbW92ZWQgZnJvbSBzb3VyY2VfbGlzdHMgKGlmIGl0ZXItPnNvdXJjZSBpcworICAgICogdGhlIG9ubHkgc291cmNlIGluIGl0cyBsaXN0LCBhbmQgaXQgaXMgZGVzdHJveWVkKSwgc28gd2UgaGF2ZSB0bworICAgICoga2VlcCBpdCByZWZmZWQgdW50aWwgYWZ0ZXIgd2UgYWR2YW5jZSBpdGVyLT5jdXJyZW50X2xpc3QsIGFib3ZlLgorKyAgICoKKysgICAqIEFsc28gd2UgZmlyc3QgaGF2ZSB0byByZWYgdGhlIG5leHQgc291cmNlIGJlZm9yZSB1bnJlZmZpbmcgdGhlCisrICAgKiBwcmV2aW91cyBvbmUgYXMgdW5yZWZmaW5nIHRoZSBwcmV2aW91cyBzb3VyY2UgY2FuIHBvdGVudGlhbGx5CisrICAgKiBmcmVlIHRoZSBuZXh0IG9uZS4KKyAgICAqLworKyAgaWYgKG5leHRfc291cmNlICYmIGl0ZXItPm1heV9tb2RpZnkpCisrICAgIGdfc291cmNlX3JlZiAobmV4dF9zb3VyY2UpOworCisgICBpZiAoaXRlci0+c291cmNlICYmIGl0ZXItPm1heV9tb2RpZnkpCisgICAgIGdfc291cmNlX3VucmVmX2ludGVybmFsIChpdGVyLT5zb3VyY2UsIGl0ZXItPmNvbnRleHQsIFRSVUUpOworICAgaXRlci0+c291cmNlID0gbmV4dF9zb3VyY2U7CistICBpZiAoaXRlci0+c291cmNlICYmIGl0ZXItPm1heV9tb2RpZnkpCistICAgIGdfc291cmNlX3JlZiAoaXRlci0+c291cmNlKTsKKworICAgKnNvdXJjZSA9IGl0ZXItPnNvdXJjZTsKKyAgIHJldHVybiAqc291cmNlICE9IE5VTEw7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTItR01haW5Db250ZXh0LUZpeC1tZW1vcnktbGVha3MtYW5kLW1lbW9yeS1jb3JydXB0aW9uLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOTdkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTItR01haW5Db250ZXh0LUZpeC1tZW1vcnktbGVha3MtYW5kLW1lbW9yeS1jb3JydXB0aW9uLS5wYXRjaApAQCAtMCwwICsxLDEwOSBAQAorRnJvbSA2MTE0MzBhMzJhNDZkMGRjODA2YTgyOTE2MWUyZGNjZjljMDE5NmE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1NlYmFzdGlhbj0yMERyPUMzPUI2Z2U/PSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IE1vbiwgMyBGZWIgMjAyMCAxNTozNTo1MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBHTWFpbkNvbnRleHQgLSBGaXggbWVtb3J5IGxlYWtzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiB3aGVuCisgZnJlZWluZyBzb3VyY2VzIHdoaWxlIGZyZWVpbmcgYSBjb250ZXh0CisKK0luc3RlYWQgb2YgZGVzdHJveWluZyBzb3VyY2VzIGRpcmVjdGx5IHdoaWxlIGZyZWVpbmcgdGhlIGNvbnRleHQsIGFuZAorcG90ZW50aWFsbHkgZnJlZWluZyB0aGVtIGlmIHRoaXMgd2FzIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGVtLCBjb2xsZWN0CituZXcgcmVmZXJlbmNlcyBvZiBhbGwgc291cmNlcyBpbiBhIHNlcGFyYXRlIGxpc3QgYmVmb3JlIGFuZCBhdCB0aGUgc2FtZQordGltZSBpbnZhbGlkYXRlIHRoZWlyIGNvbnRleHQgc28gdGhhdCB0aGV5IGNhbid0IGFjY2VzcyBpdCBhbnltb3JlLiBPbmx5CitvbmNlIGFsbCBzb3VyY2VzIGhhdmUgdGhlaXIgY29udGV4dCBpbnZhbGlkYXRlZCwgZGVzdHJveSB0aGVtIHdoaWxlCitzdGlsbCBrZWVwaW5nIGEgcmVmZXJlbmNlIHRvIHRoZW0uIE9uY2UgYWxsIHNvdXJjZXMgYXJlIGRlc3Ryb3llZCB3ZSBnZXQKK3JpZCBvZiB0aGUgYWRkaXRpb25hbCByZWZlcmVuY2VzIGFuZCBmcmVlIHRoZW0gaWYgbm90aGluZyBlbHNlIGtlZXBzIGEKK3JlZmVyZW5jZSB0byB0aGVtIGFueW1vcmUuCisKK1RoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgMjYwNTY1NThiZSBpbiAyMDEyLgorCitUaGUgcHJldmlvdXMgY29kZSB0aGF0IGludmFsaWRhdGVkIHRoZSBjb250ZXh0IG9mIGVhY2ggc291cmNlIGFuZCB0aGVuCitkZXN0cm95ZWQgaXQgYmVmb3JlIGdvaW5nIHRvIHRoZSBuZXh0IHNvdXJjZSB3aXRob3V0IGtlZXBpbmcgYW4KK2FkZGl0aW9uYWwgcmVmZXJlbmNlIGNhdXNlZCBtZW1vcnkgbGVha3Mgb3IgbWVtb3J5IGNvcnJ1cHRpb24gZGVwZW5kaW5nCitvbiB0aGUgb3JkZXIgb2YgdGhlIHNvdXJjZXMgaW4gdGhlIHNvdXJjZXMgbGlzdHMuCisKK0lmIGEgc291cmNlIHdhcyBkZXN0cm95ZWQgaXQgbWlnaHQgaGFwcGVuIHRoYXQgdGhpcyB3YXMgdGhlIGxhc3QKK3JlZmVyZW5jZSB0byB0aGlzIHNvdXJjZSwgYW5kIGl0IHdvdWxkIHRoZW4gYmUgZnJlZWQuIFRoaXMgd291bGQgY2F1c2UKK3RoZSBmaW5hbGl6ZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIHdoaWNoIG1pZ2h0IGRlc3Ryb3kgYW5kIHVucmVmCithbm90aGVyIHNvdXJjZSBhbmQgcG90ZW50aWFsbHkgZnJlZSBpdC4gVGhpcyBvdGhlciBzb3VyY2Ugd291bGQgdGhlbgorZWl0aGVyCistIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBmcmVlIGxvZ2ljIGFuZCBjaGFuZ2UgdGhlIGludGVybiBsaW5rZWQgbGlzdAorICBiZXR3ZWVuIHRoZSBzb3VyY2VzLCB3aGlsZSBvdGhlciBzb3VyY2VzIHRoYXQgYXJlIHVucmVmZmVkIGFzIHBhcnQgb2YKKyAgdGhlIG1haW4gY29udGV4dCBmcmVlaW5nIHdvdWxkIG5vdC4gQXMgc3VjaCB0aGUgbGlzdCB3b3VsZCBiZSBpbiBhbgorICBpbmNvbnNpc3RlbnQgc3RhdGUgYW5kIHdlIG1pZ2h0IGRlcmVmZXJlbmNlIGZyZWVkIG1lbW9yeS4KKy0gZ28gdGhyb3VnaCB0aGUgbm9ybWFsIGRlc3Ryb3kgYW5kIGZyZWUgbG9naWMgYnV0IGJlY2F1c2UgdGhlIGNvbnRleHQKKyAgcG9pbnRlciB3YXMgYWxyZWFkeSBpbnZhbGlkYXRlZCBpdCB3b3VsZCBzaW1wbHkgbWFyayB0aGUgc291cmNlIGFzCisgIGRlc3Ryb3llZCB3aXRob3V0IGFjdHVhbGx5IHJlbW92aW5nIGl0IGZyb20gdGhlIGNvbnRleHQuIFRoaXMgd291bGQKKyAgdGhlbiBjYXVzZSBhIG1lbW9yeSBsZWFrIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBvd25lZCBieSB0aGUgY29udGV4dCBpcworICBub3QgZnJlZWQuCisKK0ZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndGstcnMvZ2xpYi9pc3N1ZXMvNTgzIHdoaWxlIHN0aWxsIGtlZXBpbmcKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NjE3NjcgZml4ZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vY29tbWl0L2FhMjAxNjdkNDE5YzY0OWYzNGZlZDA2YTk0NjM4OTBiNDFiMWViYTBdCisKKy0tLQorIGdsaWIvZ21haW4uYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ21haW4uYyBiL2dsaWIvZ21haW4uYworaW5kZXggYTlhMjg3ZC4uMTBiYTJmOCAxMDA2NDQKKy0tLSBhL2dsaWIvZ21haW4uYworKysrIGIvZ2xpYi9nbWFpbi5jCitAQCAtNTM4LDYgKzUzOCw3IEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisgICBHU291cmNlSXRlciBpdGVyOworICAgR1NvdXJjZSAqc291cmNlOworICAgR0xpc3QgKnNsX2l0ZXI7CisrICBHU0xpc3QgKnNfaXRlciwgKnJlbWFpbmluZ19zb3VyY2VzID0gTlVMTDsKKyAgIEdTb3VyY2VMaXN0ICpsaXN0OworICAgZ3VpbnQgaTsKKworQEAgLTU1NywxMCArNTU4LDMwIEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisKKyAgIC8qIGdfc291cmNlX2l0ZXJfbmV4dCgpIGFzc3VtZXMgdGhlIGNvbnRleHQgaXMgbG9ja2VkLiAqLworICAgTE9DS19DT05URVhUIChjb250ZXh0KTsKKy0gIGdfc291cmNlX2l0ZXJfaW5pdCAoJml0ZXIsIGNvbnRleHQsIFRSVUUpOworKworKyAgLyogRmlyc3QgY29sbGVjdCBhbGwgcmVtYWluaW5nIHNvdXJjZXMgZnJvbSB0aGUgc291cmNlcyBsaXN0cyBhbmQgc3RvcmUgYQorKyAgICogbmV3IHJlZmVyZW5jZSBpbiBhIHNlcGFyYXRlIGxpc3QuIEFsc28gc2V0IHRoZSBjb250ZXh0IG9mIHRoZSBzb3VyY2VzCisrICAgKiB0byBOVUxMIHNvIHRoYXQgdGhleSBjYW4ndCBhY2Nlc3MgYSBwYXJ0aWFsbHkgZGVzdHJveWVkIGNvbnRleHQgYW55bW9yZS4KKysgICAqCisrICAgKiBXZSBoYXZlIHRvIGRvIHRoaXMgZmlyc3Qgc28gdGhhdCB3ZSBoYXZlIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBhbGwKKysgICAqIHNvdXJjZXMgYW5kIGRlc3Ryb3lpbmcgdGhlbSBiZWxvdyBkb2VzIG5vdCBhbHNvIGZyZWUgdGhlbSwgYW5kIHNvIHRoYXQKKysgICAqIG5vbmUgb2YgdGhlIHNvdXJjZXMgY2FuIGFjY2VzcyB0aGUgY29udGV4dCBmcm9tIHRoZWlyIGZpbmFsaXplL2Rpc3Bvc2UKKysgICAqIGZ1bmN0aW9ucy4gKi8KKysgIGdfc291cmNlX2l0ZXJfaW5pdCAoJml0ZXIsIGNvbnRleHQsIEZBTFNFKTsKKyAgIHdoaWxlIChnX3NvdXJjZV9pdGVyX25leHQgKCZpdGVyLCAmc291cmNlKSkKKyAgICAgeworICAgICAgIHNvdXJjZS0+Y29udGV4dCA9IE5VTEw7CisrICAgICAgcmVtYWluaW5nX3NvdXJjZXMgPSBnX3NsaXN0X3ByZXBlbmQgKHJlbWFpbmluZ19zb3VyY2VzLCBnX3NvdXJjZV9yZWYgKHNvdXJjZSkpOworKyAgICB9CisrICBnX3NvdXJjZV9pdGVyX2NsZWFyICgmaXRlcik7CisrCisrICAvKiBOZXh0IGRlc3Ryb3kgYWxsIHNvdXJjZXMuIEFzIHdlIHN0aWxsIGhvbGQgYSByZWZlcmVuY2UgdG8gYWxsIG9mIHRoZW0sCisrICAgKiB0aGlzIHdvbid0IGNhdXNlIGFueSBvZiB0aGVtIHRvIGJlIGZyZWVkIHlldCBhbmQgZXNwZWNpYWxseSBwcmV2ZW50cyBhbnkKKysgICAqIHNvdXJjZSB0aGF0IHVucmVmcyBhbm90aGVyIHNvdXJjZSBmcm9tIGl0cyBmaW5hbGl6ZSBmdW5jdGlvbiB0byBiZSBmcmVlZC4KKysgICAqLworKyAgZm9yIChzX2l0ZXIgPSByZW1haW5pbmdfc291cmNlczsgc19pdGVyOyBzX2l0ZXIgPSBzX2l0ZXItPm5leHQpCisrICAgIHsKKysgICAgICBzb3VyY2UgPSBzX2l0ZXItPmRhdGE7CisgICAgICAgZ19zb3VyY2VfZGVzdHJveV9pbnRlcm5hbCAoc291cmNlLCBjb250ZXh0LCBUUlVFKTsKKyAgICAgfQorICAgVU5MT0NLX0NPTlRFWFQgKGNvbnRleHQpOworQEAgLTU4NSw2ICs2MDYsMTggQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKyAgIGdfY29uZF9jbGVhciAoJmNvbnRleHQtPmNvbmQpOworCisgICBnX2ZyZWUgKGNvbnRleHQpOworKworKyAgLyogQW5kIG5vdyBmaW5hbGx5IGdldCByaWQgb2Ygb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNvdXJjZXMuIFRoaXMgd2lsbCBjYXVzZQorKyAgICogdGhlbSB0byBiZSBmcmVlZCB1bmxlc3Mgc29tZXRoaW5nIGVsc2Ugc3RpbGwgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZW0uIER1ZQorKyAgICogdG8gc2V0dGluZyB0aGUgY29udGV4dCBwb2ludGVycyBpbiB0aGUgc291cmNlcyB0byBOVUxMIGFib3ZlLCB0aGlzIHdvbid0CisrICAgKiBldmVyIGFjY2VzcyB0aGUgY29udGV4dCBvciB0aGUgaW50ZXJuYWwgbGlua2VkIGxpc3QgaW5zaWRlIHRoZSBHU291cmNlLgorKyAgICogV2UgYWxyZWFkeSByZW1vdmVkIHRoZSBzb3VyY2VzIGNvbXBsZXRlbHkgZnJvbSB0aGUgY29udGV4dCBhYm92ZS4gKi8KKysgIGZvciAoc19pdGVyID0gcmVtYWluaW5nX3NvdXJjZXM7IHNfaXRlcjsgc19pdGVyID0gc19pdGVyLT5uZXh0KQorKyAgICB7CisrICAgICAgc291cmNlID0gc19pdGVyLT5kYXRhOworKyAgICAgIGdfc291cmNlX3VucmVmX2ludGVybmFsIChzb3VyY2UsIE5VTEwsIEZBTFNFKTsKKysgICAgfQorKyAgZ19zbGlzdF9mcmVlIChyZW1haW5pbmdfc291cmNlcyk7CisgfQorCisgLyogSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgbWFpbmxvb3Avb3ZlcmZsb3cgdGVzdC4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMy1HTWFpbkNvbnRleHQtTW92ZS1tdXRleC11bmxvY2tpbmctaW4tZGVzdHJ1Y3Rvci1yaWdoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM5ZTlmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMy1HTWFpbkNvbnRleHQtTW92ZS1tdXRleC11bmxvY2tpbmctaW4tZGVzdHJ1Y3Rvci1yaWdoLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gM2U5ZDg1ZjFiNzVlMmIxMDk2ZDk2NDM1NjNkN2QxNzM4MDc1MmZjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBUdWUsIDExIEZlYiAyMDIwIDA5OjM0OjM4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEdNYWluQ29udGV4dCAtIE1vdmUgbXV0ZXggdW5sb2NraW5nIGluIGRlc3RydWN0b3IgcmlnaHQKKyBiZWZvcmUgZnJlZWluZyB0aGUgbXV0ZXgKKworVGhpcyBkb2VzIG5vdCBoYXZlIGFueSBiZWhhdmlvdXIgY2hhbmdlcyBidXQgaXMgY2xlYW5lci4gVGhlIG11dGV4IGlzCitvbmx5IHVubG9ja2VkIG5vdyBhZnRlciBhbGwgb3BlcmF0aW9ucyBvbiB0aGUgY29udGV4dCBhcmUgZG9uZSBhbmQgcmlnaHQKK2JlZm9yZSBmcmVlaW5nIHRoZSBtdXRleCBhbmQgdGhlIGNvbnRleHQgaXRzZWxmLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi8tL2NvbW1pdC83MzBhNzVmYzhlODI3MWMzOGZiZDUzNjNkMWY3N2EwMDg3NmI5ZGRjXQorCistLS0KKyBnbGliL2dtYWluLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nbGliL2dtYWluLmMgYi9nbGliL2dtYWluLmMKK2luZGV4IDEwYmEyZjguLmIxZGY0NzAgMTAwNjQ0CistLS0gYS9nbGliL2dtYWluLmMKKysrKyBiL2dsaWIvZ21haW4uYworQEAgLTU4NCw3ICs1ODQsNiBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorICAgICAgIHNvdXJjZSA9IHNfaXRlci0+ZGF0YTsKKyAgICAgICBnX3NvdXJjZV9kZXN0cm95X2ludGVybmFsIChzb3VyY2UsIGNvbnRleHQsIFRSVUUpOworICAgICB9CistICBVTkxPQ0tfQ09OVEVYVCAoY29udGV4dCk7CisKKyAgIGZvciAoc2xfaXRlciA9IGNvbnRleHQtPnNvdXJjZV9saXN0czsgc2xfaXRlcjsgc2xfaXRlciA9IHNsX2l0ZXItPm5leHQpCisgICAgIHsKK0BAIC01OTUsNiArNTk0LDcgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKworICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKGNvbnRleHQtPnNvdXJjZXMpOworCisrICBVTkxPQ0tfQ09OVEVYVCAoY29udGV4dCk7CisgICBnX211dGV4X2NsZWFyICgmY29udGV4dC0+bXV0ZXgpOworCisgICBnX3B0cl9hcnJheV9mcmVlIChjb250ZXh0LT5wZW5kaW5nX2Rpc3BhdGNoZXMsIFRSVUUpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAppbmRleCBmZjI2MjlmLi40ODg5OWNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjNjZDE1NzM1MmFjOGE1M2Y5OTJkZGM2ZDZkMDFjYWFkZjFjNzliYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDA2MWQ2NjA1N2RmZDdlNzI2Nzc3MmRmNjBiMzY0NzRmYjE4MGVlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDkgTm92IDIwMTUgMTE6MDc6MjcgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gRW5hYmxlIG1vcmUgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nCkBAIC0xMSwxNCArMTEsMTQgQEAKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiAKIC0tLQotIGdpby90ZXN0cy9tZXNvbi5idWlsZCB8IDI2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorIGdpby90ZXN0cy9tZXNvbi5idWlsZCB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dpby90ZXN0cy9tZXNvbi5idWlsZCBiL2dpby90ZXN0cy9tZXNvbi5idWlsZAotaW5kZXggNjVmNDNlMi4uMDI4YjE5NiAxMDA2NDQKK2luZGV4IDM4MmRmY2MuLmMxNzE3MTcgMTAwNjQ0CiAtLS0gYS9naW8vdGVzdHMvbWVzb24uYnVpbGQKICsrKyBiL2dpby90ZXN0cy9tZXNvbi5idWlsZAotQEAgLTE4NSw3ICsxODUsNyBAQCBpZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnCitAQCAtMTkxLDcgKzE5MSw3IEBAIGlmIGhvc3RfbWFjaGluZS5zeXN0ZW0oKSAhPSAnd2luZG93cycKICAKICAgICMgIFRlc3QgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJyaW5nIHVwIGEgc2Vzc2lvbiBidXMgKHJlcXVpcmVzIGRidXMtZGFlbW9uKQogICAgaGF2ZV9kYnVzX2RhZW1vbiA9IGZpbmRfcHJvZ3JhbSgnZGJ1cy1kYWVtb24nLCByZXF1aXJlZCA6IGZhbHNlKS5mb3VuZCgpCkBAIC0yNywxMiArMjcsMTEgQEAKICAgICAgYW5ub3RhdGVfYXJncyA9IFsKICAgICAgICAnLS1hbm5vdGF0ZScsICdvcmcucHJvamVjdC5CYXInLCAnS2V5MScsICdWYWx1ZTEnLAogICAgICAgICctLWFubm90YXRlJywgJ29yZy5wcm9qZWN0LkJhcicsICdvcmcuZ3RrLkdEQnVzLkludGVybmFsJywgJ1ZhbHVlMicsCi1AQCAtNDUzLDEyICs0NTMsMTMgQEAgaWYgaW5zdGFsbGVkX3Rlc3RzX2VuYWJsZWQKK0BAIC00NjUsMTIgKzQ2NSwxMiBAQCBpZiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAogICAgaW5zdGFsbF9kYXRhKCdzdGF0aWMtbGluay5weScsIGluc3RhbGxfZGlyIDogaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIpCiAgZW5kaWYKICAKIC1pZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQotKyNpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogK2lmIG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKICAKICAgIHBsdWdpbl9yZXNvdXJjZXNfYyA9IGN1c3RvbV90YXJnZXQoJ3BsdWdpbi1yZXNvdXJjZXMuYycsCkBAIC00Myw3ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlLXNvdXJjZScsCi1AQCAtNDgyLDcgKzQ4Myw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNDk0LDcgKzQ5NCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICB0ZXN0X2dyZXNvdXJjZSA9IGN1c3RvbV90YXJnZXQoJ3Rlc3QuZ3Jlc291cmNlJywKICAgICAgaW5wdXQgOiAndGVzdC5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ3Rlc3QuZ3Jlc291cmNlJywKQEAgLTUyLDcgKzUxLDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotQEAgLTQ5Myw3ICs0OTQsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTUwNSw3ICs1MDUsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgdGVzdF9yZXNvdXJjZXMyX2MgPSBjdXN0b21fdGFyZ2V0KCd0ZXN0X3Jlc291cmNlczIuYycsCiAgICAgIGlucHV0IDogJ3Rlc3QzLmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAndGVzdF9yZXNvdXJjZXMyLmMnLApAQCAtNjEsNyArNjAsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1nZW5lcmF0ZScsCi1AQCAtNTA0LDcgKzUwNSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTE2LDcgKzUxNiw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICB0ZXN0X3Jlc291cmNlczJfaCA9IGN1c3RvbV90YXJnZXQoJ3Rlc3RfcmVzb3VyY2VzMi5oJywKICAgICAgaW5wdXQgOiAndGVzdDMuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlczIuaCcsCkBAIC03MCw3ICs2OSw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlJywKLUBAIC01MTYsNyArNTE3LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MjgsNyArNTI4LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgICAgaW5wdXQgOiAndGVzdDIuZ3Jlc291cmNlLnhtbCcsCiAgICAgIGRlcGVuZHMgOiBiaWdfdGVzdF9yZXNvdXJjZSwKICAgICAgb3V0cHV0IDogJ3Rlc3RfcmVzb3VyY2VzLmMnLApAQCAtNzksNyArNzgsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNTI3LDcgKzUyOCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTM5LDcgKzUzOSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICBkaWdpdF90ZXN0X3Jlc291cmNlc19jID0gY3VzdG9tX3RhcmdldCgnZGlnaXRfdGVzdF9yZXNvdXJjZXMuYycsCiAgICAgIGlucHV0IDogJzExMV9kaWdpdF90ZXN0LmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAnZGlnaXRfdGVzdF9yZXNvdXJjZXMuYycsCkBAIC04OCw3ICs4Nyw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLUBAIC01MzgsNyArNTM5LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01NTAsNyArNTUwLDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIGRpZ2l0X3Rlc3RfcmVzb3VyY2VzX2ggPSBjdXN0b21fdGFyZ2V0KCdkaWdpdF90ZXN0X3Jlc291cmNlcy5oJywKICAgICAgaW5wdXQgOiAnMTExX2RpZ2l0X3Rlc3QuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICdkaWdpdF90ZXN0X3Jlc291cmNlcy5oJywKQEAgLTk3LDEyICs5NiwxMSBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1nZW5lcmF0ZScsCi1AQCAtNTY1LDExICs1NjYsMTIgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKLSAgICMgU3VwcG9ydCBmb3IgLS1hZGQtc3ltYm9sIHdhcyBhZGRlZCB0byBMTFZNIG9iamNvcHkgaW4gMjAxOQotICAgIyAoaHR0cHM6Ly9yZXZpZXdzLmxsdm0ub3JnL0Q1ODIzNCkuIEZJWE1FOiBUaGlzIHRlc3QgY291bGQgYmUgZW5hYmxlZCBmb3IKK0BAIC01NzksMTEgKzU3OSwxMSBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgIyBMTFZNIG9uY2UgdGhhdCBzdXBwb3J0IGlzIGluIGEgc3RhYmxlIHJlbGVhc2UuCi0tICBpZiBidWlsZF9tYWNoaW5lLnN5c3RlbSgpID09ICdsaW51eCcgYW5kIGNjLmdldF9pZCgpID09ICdnY2MnCi0rICAjaWYgYnVpbGRfbWFjaGluZS5zeXN0ZW0oKSA9PSAnbGludXgnIGFuZCBjYy5nZXRfaWQoKSA9PSAnZ2NjJworICAgb2JqY29weSA9IGZpbmRfcHJvZ3JhbSgnb2JqY29weScsIHJlcXVpcmVkIDogZmFsc2UpCisgCistICBpZiBidWlsZF9tYWNoaW5lLnN5c3RlbSgpID09ICdsaW51eCcgYW5kIGNjLmdldF9pZCgpID09ICdnY2MnIGFuZCBvYmpjb3B5LmZvdW5kKCkKICsgIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpCiAgICAgIHRlc3RfZ3Jlc291cmNlX2JpbmFyeSA9IGN1c3RvbV90YXJnZXQoJ3Rlc3Q1LmdyZXNvdXJjZScsCiAgICAgICAgaW5wdXQgOiAndGVzdDUuZ3Jlc291cmNlLnhtbCcsCkBAIC0xMTIsNyArMTEwLDcgQEAKICAgICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotQEAgLTU4MSw3ICs1ODMsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTU5NSw3ICs1OTUsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgICB0ZXN0X3Jlc291cmNlc19iaW5hcnlfYyA9IGN1c3RvbV90YXJnZXQoJ3Rlc3RfcmVzb3VyY2VzX2JpbmFyeS5jJywKICAgICAgICBpbnB1dCA6ICd0ZXN0NS5ncmVzb3VyY2UueG1sJywKICAgICAgICBvdXRwdXQgOiAndGVzdF9yZXNvdXJjZXNfYmluYXJ5LmMnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9nbGliLW1lc29uLmNyb3NzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9nbGliLW1lc29uLmNyb3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRmNDAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1tZXNvbi5jcm9zcworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotW3Byb3BlcnRpZXNdCi1oYXZlX2M5OV92c25wcmludGYgPSB0cnVlCi1oYXZlX2M5OV9zbnByaW50ZiA9IHRydWUKLWhhdmVfdW5peDk4X3ByaW50ZiA9IHRydWUKLXZhX3ZhbF9jb3B5ID0gdHJ1ZQotZ3Jvd2luZ19zdGFjayA9IGZhbHNlCi0KLVtiaW5hcmllc10KLWVudiA9ICIvdXNyL2Jpbi9lbnYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDdjNWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbgpAQCAtMCwwICsxLDMgQEAKK1twcm9wZXJ0aWVzXQorIyBPbiBhbGwga25vd24gc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgdGhlIHN0YWNrIGdyb3dzIGRvd24KK2dyb3dpbmdfc3RhY2sgPSBmYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1nbGliYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tZ2xpYmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2NDhmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tZ2xpYmMKQEAgLTAsMCArMSw1IEBACitbcHJvcGVydGllc10KK2hhdmVfYzk5X3ZzbnByaW50ZiA9IHRydWUKK2hhdmVfYzk5X3NucHJpbnRmID0gdHJ1ZQoraGF2ZV91bml4OThfcHJpbnRmID0gdHJ1ZQordmFfdmFsX2NvcHkgPSB0cnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWxpbnV4IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1saW51eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzU5NmUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1saW51eApAQCAtMCwwICsxLDUgQEAKK1twcm9wZXJ0aWVzXQoraGF2ZV9wcm9jX3NlbGZfY21kbGluZSA9IHRydWUKKworW2JpbmFyaWVzXQorZW52ID0gIi91c3IvYmluL2VudiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbWluZ3cgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW1pbmd3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZjkxMWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW1pbmd3CkBAIC0wLDAgKzEsNiBAQAorW3Byb3BlcnRpZXNdCitoYXZlX2M5OV92c25wcmludGYgPSBmYWxzZQoraGF2ZV9jOTlfc25wcmludGYgPSBmYWxzZQoraGF2ZV91bml4OThfcHJpbnRmID0gZmFsc2UKK3ZhX3ZhbF9jb3B5ID0gdHJ1ZQoraGF2ZV9wcm9jX3NlbGZfY21kbGluZSA9IGZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW11c2wgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW11c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0OWU1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbXVzbApAQCAtMCwwICsxLDYgQEAKK1twcm9wZXJ0aWVzXQoraGF2ZV9jOTlfdnNucHJpbnRmID0gdHJ1ZQoraGF2ZV9jOTlfc25wcmludGYgPSB0cnVlCitoYXZlX3VuaXg5OF9wcmludGYgPSB0cnVlCit2YV92YWxfY29weSA9IHRydWUKK2hhdmVfc3RybGNweSA9IHRydWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaAppbmRleCA3ZTk5MjU4Li5mYzMyMGRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2MzI1YmY0ZThhMmY1NjljNTVjOGUxYTM2Yjk0MzlkMzU2NmY5OGY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4YzYyM2FjZGJlYTNlY2MyODEyYmJhYWZjZmM4OTI3NThmYTk3OGRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTEgTWFyIDIwMTYgMTU6MzU6NTUgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gZ2xpYi0yLjA6IHJlbG9jYXRlIHRoZSBHSU8gbW9kdWxlIGRpcmVjdG9yeSBmb3IgbmF0aXZlIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3J1bi1wdGVzdAppbmRleCBmYzUwMDgyLi43YTIzMWI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3J1bi1wdGVzdApAQCAtMSw2ICsxLDkgQEAKICMhIC9iaW4vc2gKIAogc2V0IC1ldXgKK2lmIGlkIC11IGdsaWIyLXRlc3Q7IHRoZW4KKyAgIHVzZXJkZWwgZ2xpYjItdGVzdAorZmkKIHVzZXJhZGQgZ2xpYjItdGVzdAogc3UgZ2xpYjItdGVzdCAtYyAnZ25vbWUtZGVza3RvcC10ZXN0aW5nLXJ1bm5lciBnbGliJwogdXNlcmRlbCBnbGliMi10ZXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2ExNWE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBnbGliLmluYwotCi1QRSA9ICIxIgotCi1TSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1EQVRBRElSTkFNRS1vbi11Y2xpYmMtTGludXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TZXQtaG9zdF9tYWNoaW5lLWNvcnJlY3RseS13aGVuLWJ1aWxkaW5nLXdpdGgtbWluZ3czLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXdyaXRlLWJpbmRpci1pbnRvLXBrZy1jb25maWctZmlsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1SdW4tYXRvbWljcy10ZXN0LW9uLWNsYW5nLWFzLXdlbGwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly9nbGliLW1lc29uLmNyb3NzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmVkM2E3MDM5N2EwMTk5NjVlZmFjMGM0OWY5YzgxNjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjk4ODI0YTQxM2Y3NmRmMDM5NzM5YzJhNzhmNDViMTA5MzlkNTI2YWU3NDk1YmFiNGU2OTRlNjczMGRlYjNmMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ5NjIzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi40LmJiCkBAIC0wLDAgKzEsNTMgQEAKK3JlcXVpcmUgZ2xpYi5pbmMKKworUEUgPSAiMSIKKworU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtREFUQURJUk5BTUUtb24tdWNsaWJjLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU2V0LWhvc3RfbWFjaGluZS1jb3JyZWN0bHktd2hlbi1idWlsZGluZy13aXRoLW1pbmd3My5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC13cml0ZS1iaW5kaXItaW50by1wa2ctY29uZmlnLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tUnVuLWF0b21pY3MtdGVzdC1vbi1jbGFuZy1hcy13ZWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLUdNYWluQ29udGV4dC1GaXgtR1NvdXJjZS1pdGVyYXRvci1pZi1pdGVyYXRpb24tY2FuLW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtR01haW5Db250ZXh0LU1vdmUtbXV0ZXgtdW5sb2NraW5nLWluLWRlc3RydWN0b3ItcmlnaC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImQ1MjIzNGVjYmExMjg5MzJiZWQ5MGJiYzM1NTNiZmU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjODQwMzBkNzdmYTk3MTIxMzVkZmE4MDM2YWQ2NjM5MjU2NTVhZTk1YjFkMTkzOTliNjIwMGU4Njk5MjViYmMiCisKKyMgRmluZCBhbnkgbWVzb24gY3Jvc3MgZmlsZXMgaW4gRklMRVNQQVRIIHRoYXQgYXJlIHJlbGV2YW50IGZvciB0aGUgY3VycmVudAorIyBidWlsZCAodXNpbmcgc2l0ZWluZm8pIGFuZCBhZGQgdGhlbSB0byBFWFRSQV9PRU1FU09OLgoraW5oZXJpdCBzaXRlaW5mbworZGVmIGZpbmRfbWVzb25fY3Jvc3NfZmlsZXMoZCk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCk6CisgICAgICAgIHJldHVybiAiIgorCisgICAgY29yZWJhc2UgPSBkLmdldFZhcigiQ09SRUJBU0UiKQorICAgIGltcG9ydCBjb2xsZWN0aW9ucworICAgIHNpdGVkYXRhID0gc2l0ZWluZm9fZGF0YShkKQorICAgICMgZmlsZW5hbWUgLT4gZm91bmQKKyAgICBmaWxlcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKKyAgICBmb3IgcGF0aCBpbiBkLmdldFZhcigiRklMRVNQQVRIIikuc3BsaXQoIjoiKToKKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gc2l0ZWRhdGE6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHBhdGgsICJtZXNvbi5jcm9zcy5kIiwgZWxlbWVudCkpCisgICAgICAgICAgICBmaWxlc1tmaWxlbmFtZS5yZXBsYWNlKGNvcmViYXNlLCAiJHtDT1JFQkFTRX0iKV0gPSBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSkKKworICAgIGl0ZW1zID0gWyItLWNyb3NzLWZpbGU9IiArIGsgZm9yIGssdiBpbiBmaWxlcy5pdGVtcygpIGlmIHZdCisgICAgZC5hcHBlbmRWYXIoIkVYVFJBX09FTUVTT04iLCAiICIgKyAiICIuam9pbihpdGVtcykpCisgICAgaXRlbXMgPSBbIiVzOiVzIiAlIChrLCAiVHJ1ZSIgaWYgdiBlbHNlICJGYWxzZSIpIGZvciBrLHYgaW4gZmlsZXMuaXRlbXMoKV0KKyAgICBkLmFwcGVuZFZhckZsYWcoImRvX2NvbmZpZ3VyZSIsICJmaWxlLWNoZWNrc3VtcyIsICIgIiArICIgIi5qb2luKGl0ZW1zKSkKKworcHl0aG9uICgpIHsKKyAgICBmaW5kX21lc29uX2Nyb3NzX2ZpbGVzKGQpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwppbmRleCBlODExYjQyLi43ZWJlZDBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKQEAgLTQ5LDcgKzQ5LDYgQEAKIFBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbGVkX3Rlc3RzPXRydWUsLURpbnN0YWxsZWRfdGVzdHM9ZmFsc2UsZGJ1cyIKIAogRVhUUkFfT0VNRVNPTiA9ICItRGR0cmFjZT1mYWxzZSAtRGZhbT1mYWxzZSAtRHN5c3RlbXRhcD1mYWxzZSAtRHNlbGludXg9ZGlzYWJsZWQiCi1FWFRSQV9PRU1FU09OX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L2dsaWItbWVzb24uY3Jvc3MiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L2dpby9nZGJ1cy0yLjAvY29kZWdlbi9nZGJ1cy1jb2RlZ2VuLmluCkBAIC01OSwxMyArNTgsMTUgQEAKICAgICAgICAgICAgICAgICR7bGliZGlyfS9naW8gXAogICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS8qZ2lvLXF1ZXJ5bW9kdWxlcyBcCiAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMiCisKK0ZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vZ2xpYi1nZW5tYXJzaGFsIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1nZXR0ZXh0aXplIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1ta2VudW1zIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1jb21waWxlLXJlc291cmNlcyIKKwogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2xpYi0yLjAvaW5jbHVkZSBcCiAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy9saWIqJHtTT0xJQlNERVZ9IFwKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1nZW5tYXJzaGFsIFwKLSAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItZ2V0dGV4dGl6ZSBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLW1rZW51bXMgXAotICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1jb21waWxlLXJlc291cmNlcyBcCiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiBcCiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcy9nc2NoZW1hLmR0ZCBcCiAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvdmFsZ3JpbmQvZ2xpYi5zdXBwIFwKQEAgLTEyNyw2ICsxMjgsMTEgQEAKIAkJCXJtICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL2dkYnVzLXNlcmlhbGl6YXRpb24udGVzdAogCQlmaQogCWZpCisJaWYgWyAtZiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9zdGF0aWMtbGluay50ZXN0IF07IHRoZW4KKyAgICAgICAgaWYgdGVzdCAieCR7TUxQUkVGSVh9IiAhPSAieCI7IHRoZW4KKyAgICAgICAgICAgICAgICBtdiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9zdGF0aWMtbGluay50ZXN0ICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliLyR7TUxQUkVGSVh9c3RhdGljLWxpbmsudGVzdAorICAgICAgICBmaQorCWZpCiB9CiAKICMgQXMgd2UgZG8gbm90IGJ1aWxkIHB5dGhvbjMgZm9yIHdpbmRvd3MsIG1ha2VzIG5vIHNlbnNlIHRvIHNoaXAgdGhlIHNjcmlwdCB0aGF0J3MgdXNpbmcgaXQKQEAgLTEzOSw2ICsxNDUsOCBAQAogCiBSREVQRU5EU18ke1BOfS1jb2RlZ2VuICs9ICIke0NPREVHRU5fUFlUSE9OX1JERVBFTkRTfSIKIAorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXV0aWxzIgorCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiXAogICAgICAgICAgICAgY29yZXV0aWxzIFwKICAgICAgICAgICAgIGxpYmdjYyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFkM2ZkNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiR0xpYiBuZXR3b3JraW5nIGV4dGVuc2lvbnMiCi1ERVNDUklQVElPTiA9ICJnbGliLW5ldHdvcmtpbmcgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBjZXJ0YWluIEdMaWIgbmV0d29ya2luZyBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBHTGliIGl0c2VsZiBiZWNhdXNlIG9mIHRoZWlyIGRlcGVuZGVuY2llcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi1uZXR3b3JraW5nLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2NGNhMWUxZTQzZTYyM2I5MTYwNTk1ODViZjdlNDc1OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNjNTVhZTY3NzFhZDdhNzlmYTYwNmE4MzRmNDY4NmVkNTU1YzI3NzRlZDZlOWVjZTZmM2MwZjZhM2RhYjcxMTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi0KLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz1lbmFibGVkLC1EZ251dGxzPWRpc2FibGVkLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLURvcGVuc3NsPWVuYWJsZWQsLURvcGVuc3NsPWRpc2FibGVkLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItRGxpYnByb3h5PWVuYWJsZWQsLURsaWJwcm94eT1kaXNhYmxlZCxsaWJwcm94eSIKLQotRVhUUkFfT0VNRVNPTiA9ICItRGdub21lX3Byb3h5PWRpc2FibGVkIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2lvLW1vZHVsZS1jYWNoZQotCi1GSUxFU18ke1BOfSArPSAiXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8gXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NTk2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4zLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiR0xpYiBuZXR3b3JraW5nIGV4dGVuc2lvbnMiCitERVNDUklQVElPTiA9ICJnbGliLW5ldHdvcmtpbmcgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBjZXJ0YWluIEdMaWIgbmV0d29ya2luZyBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBHTGliIGl0c2VsZiBiZWNhdXNlIG9mIHRoZWlyIGRlcGVuZGVuY2llcy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi1uZXR3b3JraW5nLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhNzU4Y2E2MmJkNTQ5ODJhNzk4YjM5Yzc0NGNiZjc4MyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhjYTFmODZmMjNhNzZiNWM3NjQwNjI0ZjdkNTQ5MDcwNWM3OGU4MTM3NWUxNzQxYzlhMWM0MWNlN2Y4ZjdmZjciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCisKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz1lbmFibGVkLC1EZ251dGxzPWRpc2FibGVkLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLURvcGVuc3NsPWVuYWJsZWQsLURvcGVuc3NsPWRpc2FibGVkLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2xpYnByb3h5XSA9ICItRGxpYnByb3h5PWVuYWJsZWQsLURsaWJwcm94eT1kaXNhYmxlZCxsaWJwcm94eSIKKworRVhUUkFfT0VNRVNPTiA9ICItRGdub21lX3Byb3h5PWRpc2FibGVkIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2lvLW1vZHVsZS1jYWNoZQorCitGSUxFU18ke1BOfSArPSAiXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8gXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5hIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5Y2Q0M2UuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWNmYzBlZDc3YTlmNjJmYTYyZWRlZDA0MmViZTMxZDcyIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYwotCi0jIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQotIwotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgotCi1pbmhlcml0IG5hdGl2ZQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy1jb21waWxlLXNlcGFyYXRlLWZyb20tdXRpbC1saW51eC1oYXJkbGluay5wYXRjaCBcCi0iCi0jIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgotIwotU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKLUNGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgotCWluc3RhbGwgLW0gMDc1NSAke0J9L2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluayAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluawotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGRlNTVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzEuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT0xNTQxZmQ4ZjVlOGYxNTc5NTEyYmYwNWY1MzMzNzFiYSBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK3JlcXVpcmUgZ2xpYmMtdmVyc2lvbi5pbmMKKworIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKKyMKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKKworaW5oZXJpdCBuYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLXRvLWJ1aWxkLnBhdGNoO3BhdGNoZGlyPWxvY2FsZWRlZiBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1sb2NhbGVkZWYtZml4LXVwcy1oYXJkbGluay10by1tYWtlLWl0LWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKKyIKKyMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCisjCitTUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgorQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbW1vbi5pbmMKaW5kZXggZmE0NmZkOC4uOGQ0MTJjYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYwpAQCAtNCw3ICs0LDcgQEAKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKIAotTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0VTO21kNT1jZmMwZWQ3N2E5ZjYyZmE2MmVkZWQwNDJlYmUzMWQ3MiBcCitMSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TRVM7bWQ1PTE1NDFmZDhmNWU4ZjE1Nzk1MTJiZjA1ZjUzMzM3MWJhIFwKICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCiAgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAogICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKQEAgLTIyLDQgKzIyLDQgQEAKICMKIENPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCiAKLVBWID0gIjIuMzAiCitQViA9ICIyLjMxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjMwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjMxLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwppbmRleCA5ZGQ1YTBkLi4yODVhOWFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKQEAgLTEsNiArMSw2IEBACiBJTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKIAotUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGNhdGNoc2VndiBzbG4gbnNjZCBsZGQgdHpjb2RlIGdsaWJjLXRocmVhZC1kYiAke1BOfS1waWMgbGliY2lkbiBsaWJtZW11c2FnZSBsaWJuc3MtZGIgbGlic2VnZmF1bHQgJHtQTn0tcGNwcm9maWxlIGxpYnNvdHJ1c3MgJHtQTn0gJHtQTn0tdXRpbHMgZ2xpYmMtZXh0cmEtbnNzICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jIGxkY29uZmlnIgorUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGNhdGNoc2VndiBzbG4gbnNjZCBsZGNvbmZpZyBsZGQgdHpjb2RlIGdsaWJjLXRocmVhZC1kYiAke1BOfS1waWMgbGliY2lkbiBsaWJtZW11c2FnZSBsaWJuc3MtZGIgbGlic2VnZmF1bHQgJHtQTn0tcGNwcm9maWxlIGxpYnNvdHJ1c3MgJHtQTn0gJHtQTn0tdXRpbHMgZ2xpYmMtZXh0cmEtbnNzICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jIgogCiAjIFRoZSBsZC5zbyBpbiB0aGlzIGdsaWJjIHN1cHBvcnRzIHRoZSBHTlVfSEFTSAogUlBST1ZJREVTXyR7UE59ID0gImVnbGliYyBydGxkKEdOVV9IQVNIKSIKQEAgLTY1LDkgKzY1LDIxIEBACiBERVNDUklQVElPTl9saWJzb3RydXNzID0gIkxpYnJhcnkgdG8gc3VwcG9ydCBzb3RydXNzIHdoaWNoIHRyYWNlcyBjYWxscyB0aHJvdWdoIFBMVHMiCiBERVNDUklQVElPTl90emNvZGUgPSAidHpjb2RlLCB0aW1lem9uZSB6b25laW5mbyB1dGlscyAtLSB6aWMsIHpkdW1wLCB0enNlbGVjdCIKIAotaW5oZXJpdCBsaWJjLWNvbW1vbiBtdWx0aWxpYl9oZWFkZXIKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyCiAKLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsX3Jvb3Q9JHtEfSBpbnN0YWxsCisJaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2V0Yy9sZC5zby5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9sZC5zby5jb25mCisJaW5zdGFsbCAtZCAke0R9JHtsb2NhbGVkaXJ9CisJbWFrZSAtZiAke1dPUktESVJ9L2dlbmVyYXRlLXN1cHBvcnRlZC5tayBJTj0iJHtTfS9sb2NhbGVkYXRhL1NVUFBPUlRFRCIgT1VUPSIke1dPUktESVJ9L1NVUFBPUlRFRCIKKwkjIGdldCByaWQgb2Ygc29tZSBicm9rZW4gZmlsZXMuLi4KKwlmb3IgaSBpbiAke0dMSUJDX0JST0tFTl9MT0NBTEVTfTsgZG8KKwkJc2VkIC1pICIvJGkvZCIgJHtXT1JLRElSfS9TVVBQT1JURUQKKwlkb25lCisJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vcnBjCisJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisJcm0gLXJmICR7RH0ke2xpYmV4ZWNkaXJ9L2dldGNvbmYKKwogCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQogCiAJIyByZW1vdmUgZW1wdHkgZ2xpYmMgZGlyCkBAIC03NSw3ICs4Nyw3IEBACiAJCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmV4ZWNkaXJ9CiAJZmkKIAotCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3N5c2NhbGwuaCBiaXRzL2xvbmctZG91YmxlLmggYml0cy9mbG9hdG4uaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3N5c2NhbGwuaCBiaXRzL2xvbmctZG91YmxlLmggYml0cy9mbG9hdG4uaCBiaXRzL2VuZGlhbm5lc3MuaCBiaXRzL3N0cnVjdF9yd2xvY2suaAogCiAJaWYgWyAtZiAke0R9JHtiaW5kaXJ9L210cmFjZSBdOyB0aGVuCiAJCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnIC1lICcycyxleGVjLipwZXJsLGV4ZWMgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vbXRyYWNlCkBAIC0xMDgsNiArMTIwLDExIEBACiAJZmkKIH0KIAorZGVmIGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKToKKyAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnLCAncHBjLWVmZCcgXToKKyAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtZnAiCisgICAgcmV0dXJuICIiCisKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKQEAgLTIxMyw2ICsyMzAsOCBAQAogCXJtIC1yZiAkY2xlYW51cGRpciR7bGliZGlyfS9nY29udgogCXJtIC1yZiAkY2xlYW51cGRpciR7bG9jYWxlZGlyfQogCXJtIC1yZiAkY2xlYW51cGRpciR7ZGF0YWRpcn0vbG9jYWxlCisJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJGNsZWFudXBkaXIke2RhdGFkaXJ9CisKIAlpZiBbICIke2xpYmRpcn0iICE9ICIke2V4ZWNfcHJlZml4fS9saWIiIF0gJiYgWyAiJHtyb290X3ByZWZpeH0vbGliIiAhPSAiJHtleGVjX3ByZWZpeH0vbGliIiBdOyB0aGVuCiAJCWlmIFsgLWQgIiRjbGVhbnVwZGlyJHtleGVjX3ByZWZpeH0vbGliIiBdOyB0aGVuCiAJCQlpZiBbIC16ICIke0FSQ0hfRFlOQU1JQ19MT0FERVJ9IiAtbyBcCkBAIC0yMzMsNiArMjUyLDI1IEBACiAJc3Rhc2hfbG9jYWxlX2NsZWFudXAgJHtQS0dEfQogfQogCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgorICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgICAgICBicG4gPSBkLmdldFZhcignQlBOJykKKyAgICAgICAgcHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJykgb3IgIiIKKyAgICAgICAgIyBTZXQgdGhlIGJhc2UgcGFja2FnZS4uLgorICAgICAgICBkLnNldFZhcignUEtHXycgKyBwcmVmaXggKyBicG4sIHByZWZpeCArICdsaWJjNicpCisgICAgICAgIGxpYmNwcmVmaXggPSBwcmVmaXggKyBicG4gKyAnLScKKyAgICAgICAgZm9yIHAgaW4gcGtnczoKKyAgICAgICAgICAgICMgQW5kIGFsbCB0aGUgc3VicGFja2FnZXMuCisgICAgICAgICAgICBpZiBwLnN0YXJ0c3dpdGgobGliY3ByZWZpeCk6CisgICAgICAgICAgICAgICAgcmVuYW1lZCA9IHAucmVwbGFjZShicG4sICdsaWJjNicsIDEpCisgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcCwgcmVuYW1lZCkKKyAgICAgICAgIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCAtZGJnIHBhY2thZ2UKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JQUk9WSURFU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQorICAgICAgICBkLmFwcGVuZFZhcignUkNPTkZMSUNUU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFUExBQ0VTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCit9CisKIHBrZ19wb3N0aW5zdF9uc2NkICgpIHsKIAlpZiBbIC16ICIkRCIgXTsgdGhlbgogCQlpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjMxLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RpbmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0aW5nLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE0MmFlNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RpbmcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotZG9fY29tcGlsZV9hcHBlbmQgKCkgewotCSMgbm93IGdlbmVyYXRlIHNjcmlwdCB0byBkcml2ZSB0ZXN0aW5nCi0JZWNobyAiIyEvdXNyL2Jpbi9lbnYgc2giID4ke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2V0ID4+ICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQkjIHBydW5lIG91dCB0aGUgdW5uZWVkZWQgdmFycwotCXNlZCAtaSAtZSAiL15CQVNIL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eVVNFUi9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXk9QVC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkRJUlNUQUNLL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eRVVJRC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkZVTkNOQU1FL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eR1JPVVBTL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eSE9TVC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkhPTUUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15JRlMvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15MQ19BTEwvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15MT0dOQU1FL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eTUFDSFRZUEUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15PU1RZUEUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QSVBFL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eU0hFTEwvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL14nL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eVUlEL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eVEVSTS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBLR18vZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QT1NJWExZXy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBQSUQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QUzQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15RL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eU0hMVkwvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15TVEFHSU5HL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eTERfTElCUkFSWV9QQVRIL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUFNFVURPL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQotCSMgcG9pbnQgdG8gcmVhbCBzeXNyb290IG5vdCB0aGUgdG9vbGNoYWluIGJvb3RzdHJhcCBzeXNyb290Ci0Jc2VkIC1pIC1lICJzL1wtdGNib290c3RyYXAvL2ciICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQotCSMgdXNlIHRoZSBmaW5hbCBjcm9zcy1nY2MgdG8gdGVzdCBzaW5jZSBzb21lIHRlc3RzIG5lZWQgbGlic3RkYysrCi0Jc2VkIC1pIC1lICJzL15QQVRIPS4qXC5nY2MtY3Jvc3MtaW5pdGlhbFw6L1BBVEg9L2ciICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQotCSMgYXBwZW5kIGV4ZWN1dGlvbiBwYXJ0IHNjcmlwdAotY2F0ID4+ICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMgPDwgU1RPUAotdGFyZ2V0PSJcJDEiCi1pZiBbICJ4XCR0YXJnZXQiID0gIngiIF0KLXRoZW4KLQllY2hvICJQbGVhc2Ugc3BlY2lmeSB0aGUgdGFyZ2V0IG1hY2hpbmUgYW5kIHJlbW90ZSB1c2VyIGluIGZvcm0gb2YgdXNlckB0YXJnZXQiCi0JZXhpdCAxOwotZmkKLXNzaCBcJHRhcmdldCBscyBcJFBXRFwgIDI+JjEgPiAvZGV2L251bGwKLWlmIFsgInhcJD8iICE9ICJ4MCIgXQotdGhlbgotCWVjaG8gIkZhaWxlZCBjb25uZWN0aW5nIHRvIFwkdGFyZ2V0IGl0IGNvdWxkIGJlIGJlY2F1c2Ugb2Y6IgotCWVjaG8gIjEuIFlvdSBkb250IGhhdmUgcGFzc3dvcmRsZXNzIHNzaCBzZXR1cCB0byBhY2Nlc3MgXCR0YXJnZXQiCi0JZWNobyAiMi4gTkZTIHNoYXJlIG9uIFwkdGFyZ2V0IGlzIG5vdCBtb3VudGVkIG9yIGlmIG1vdW50ZWQgdGhlbiBub3QgbWF0Y2hpbmcgdGhlIGJ1aWxkIHRyZWUgbGF5b3V0LiIKLQllY2hvICIgICBUaGUgdHJlZSBzaG91bGQgYmUgYWNjZXNzaWJsZSBhdCBzYW1lIGxvY2F0aW9uIG9uIGJ1aWxkIGhvc3QgYW5kIHRhcmdldCIKLQllY2hvICIgICBZb3UgY2FuIGFkZCBuZnMtY2xpZW50IHRvIElNQUdFX0ZFQVRVUkVTIHRvIGdldCB0aGUgbmZzIGNsaWVudCBvbiB0YXJnZXQiCi0JZWNobyAiMy4gbmZzIHNlcnZlciBvbiBidWlsZCBob3N0IGlzIG5vdCBydW5uaW5nLiIKLQllY2hvICIgICBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgJ25vX3Jvb3Rfc3F1YXNoJyBhZGRlZCBpbiAvZXRjL2V4cG9ydHMgaWYgeW91IHdhbnQiCi0JZWNobyAiICAgdG8gdGVzdCBhcyByb290IHVzZXIgb24gdGFyZ2V0ICh1c3VhbGx5IGl0cyByZWNvbW1lbmRlZCB0byBjcmVhdGUgYSBub24iCi0JZWNobyAiICAgcm9vdCB1c2VyLiIKLQllY2hvICIgICBBcyBhIHNhbml0eSBjaGVjayBtYWtlIHN1cmUgdGhhdCB0YXJnZXQgY2FuIHJlYWQvd3JpdGUgdG8gdGhlIGdsaWJjIGJ1aWxkIHRyZWUiCi0JZWNobyAiICAgUGxlYXNlIHJlZmVyIHRvICR7U30vRUdMSUJDLmNyb3NzLXRlc3RpbmcgZm9yIGZ1cnRoZXIgaW5zdHJ1Y3Rpb25zIG9uIHNldHVwIgotCWV4aXQgMQotZmkKLQllY2hvICIjIHdlIHRlc3QgdXNpbmcgY3Jvc3MgY29tcGlsZXIgZnJvbSByZWFsIHN5c3Jvb3QgdGhlcmVmb3JlIG92ZXJyaWRlIHRoZSIgPiAke0J9L2NvbmZpZ3Bhcm1zCi0JZWNobyAiIyBkZWZpbml0aW9ucyB0aGF0IGNvbWUgZnJvbSAke0J9L2NvbmZpZy5tYWtlIiA+PiAke0J9L2NvbmZpZ3Bhcm1zCi0JZmdyZXAgdGNib290c3RyYXAgJHtCfS9jb25maWcubWFrZSA+ICR7Qn0vY29uZmlncGFybXMKLQlzZWQgLWkgLWUgInMvXC10Y2Jvb3RzdHJhcC8vZyIgJHtCfS9jb25maWdwYXJtcwotCi0jIGcrKyB1c2VzIGZsYWcgLW5vc3RkaW5jLCBzbyB0aGUgbG9jYXRpb25zIG9mIHN5c3RlbSBpbmNsdWRlIGhlYWRlcnMgbXVzdCBiZSBleHBsaWNpdGx5IHNwZWNpZmllZAotIyBJZiB0aGUgbG9jYXRpb25zIGFyZSBub3QgYWxyZWFkeSBzcGVjaWZpZWQgaW4gY29uZmlnLm1ha2UsIHRoZW4gd2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczoKLSMgICAgPHN5c3Jvb3Q+L3Vzci9pbmNsdWRlL2MrKy88ZysrIHZlcnNpb24+Ci0jICAgIDxzeXNyb290Pi91c3IvaW5jbHVkZS9jKysvPGcrKyB2ZXJzaW9uPi88bWFjaGluZT4KLQotY3h4aW5jbHVkZXM9XGBjYXQgJHtCfS9jb25maWcubWFrZSB8IGdhd2sgJ1wkMSA9PSAiYysrLXN5c2luY2x1ZGVzIicgfCBnYXdrIC1GIj0iICd7cHJpbnQgXCQyfScgfCBzZWQgInMvWyBcdF1cPy8vZyJcYAotCi1pZiBbIC16ICJcJGN4eGluY2x1ZGVzIiBdOyB0aGVuCi0gIHN5c3Jvb3Q9XGBjYXQgJHtCfS9jb25maWdwYXJtcyB8IHNlZCAtbiAiL0NYWC9wIiB8IHNlZCAtZSAicy9eLiotLXN5c3Jvb3Q9Ly8iXGAKLSAgY3h4PVxgY2F0ICR7Qn0vY29uZmlncGFybXMgfCBnYXdrICdcJDEgfiAvXkNYWC8nIHwgZ2F3ayAtRiI9IiAne3ByaW50IFwkMn0nIHwgZ2F3ayAne3ByaW50IFwkMX0nXGAKLSAgY3h4bWFjaGluZT1cYFwkY3h4IC1kdW1wbWFjaGluZVxgCi0gIGN4eHZlcnNpb249XGBcJGN4eCAtZHVtcHZlcnNpb25cYAotICAjIHBhc3MgdGhlIG5ldyB2YWx1ZSBvZiBjKystc3lzaW5jbHVkZXMgdmlhIGNvbmZpZ3Bhcm1zCi0gIGVjaG8gIiMgYysrLXN5c2luY2x1ZGVzIGFkZGVkOiIgPj4gJHtCfS9jb25maWdwYXJtcwotICBlY2hvICJjKystc3lzaW5jbHVkZXMgPSAtaXN5c3RlbSBcJHN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrL1wkY3h4dmVyc2lvbiAtaXN5c3RlbSBcJHN5c3Jvb3QvdXNyL2luY2x1ZGUvYysrL1wkY3h4dmVyc2lvbi9cJGN4eG1hY2hpbmUiID4+ICR7Qn0vY29uZmlncGFybXMKLWZpCi0KLXdyYXBwZXI9IiR7U30vc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCBcJHRhcmdldCIKLWxvY2FsZWRlZj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2Nyb3NzLWxvY2FsZWRlZiAtLWxpdHRsZS1lbmRpYW4gLS11aW50MzItYWxpZ249NCIKLW1ha2UgdGVzdHMtY2xlYW4KLW1ha2UgY3Jvc3MtbG9jYWxlZGVmPSJcJGxvY2FsZWRlZiIgY3Jvc3MtdGVzdC13cmFwcGVyPSJcJHdyYXBwZXIiIC1rIGNoZWNrCi1ybSAtcmYgJHtCfS9jb25maWdwYXJtcwotU1RPUAotCi0JY2htb2QgK3ggJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1N2ZkNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLXJlcXVpcmUgZ2xpYmNfJHtQVn0uYmIKLQotIyBoYW5kbGUgUE4gZGlmZmVyZW5jZXMKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dsaWJjOiIKLQotIyBzdHJpcCBwcm92aWRlcwotUFJPVklERVMgPSAiIgotIyBzZXR1cCBkZXBlbmRzCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIiCi0KLXB5dGhvbiAoKSB7Ci0gICAgbGliYyA9IGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjIikKLSAgICBsaWJjbG9jYWxlID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMtbG9jYWxlIikKLSAgICBpZiBsaWJjICE9ICJnbGliYyIgb3IgbGliY2xvY2FsZSAhPSAiZ2xpYmMtbG9jYWxlIjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiZ2xpYmMtdGVzdHN1aXRlIHJlcXVpcmVzIHRoYXQgdmlydHVhbC9saWJjIGlzIGdsaWJjIikKLX0KLQotREVQRU5EUyArPSAiZ2xpYmMtbG9jYWxlIGxpYmdjYyBnY2MtcnVudGltZSIKLQotIyByZW1vdmUgdGhlIGluaXRpYWwgZGVwZW5kcwotREVQRU5EU19yZW1vdmUgPSAibGliZ2NjLWluaXRpYWwiCi0KLWluaGVyaXQgcWVtdQotCi1TUkNfVVJJICs9ICJmaWxlOi8vY2hlY2stdGVzdC13cmFwcGVyIgotCi1ERVBFTkRTICs9ICIke0AncWVtdS1uYXRpdmUnIGlmIGQuZ2V0VmFyKCdUT09MQ0hBSU5fVEVTVF9UQVJHRVQnKSA9PSAndXNlcicgZWxzZSAnJ30iCi0KLVRPT0xDSEFJTl9URVNUX1RBUkdFVCA/Pz0gInVzZXIiCi1UT09MQ0hBSU5fVEVTVF9IT1NUID8/PSAibG9jYWxob3N0IgotVE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSID8/PSAicm9vdCIKLVRPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCA/Pz0gIjIyMjIiCi0KLWRvX2NoZWNrW2RpcnNdICs9ICIke0J9IgotZG9fY2hlY2tbbm9zdGFtcF0gPSAiMSIKLWRvX2NoZWNrICgpIHsKLSAgICBjaG1vZCAwNzU1ICR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyCi0KLSAgICAjIGNsZWFuIG91dCBwcmV2aW91cyB0ZXN0IHJlc3VsdHMKLSAgICBvZV9ydW5tYWtlIHRlc3RzLWNsZWFuCi0gICAgIyBtYWtlZmlsZXMgZG9uJ3QgY2xlYW4gZW50aXJlbHkgKGFuZCBhbHNvIHNvbWV0aW1lcyBmYWlscyBkdWUgdG8gdG9vIG1hbnkgYXJncykKLSAgICBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAiKi5vdXQiIC1kZWxldGUKLSAgICBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAiKi50ZXN0LXJlc3VsdCIgLWRlbGV0ZQotICAgIGZpbmQgJHtCfS9jYXRnZXRzIC1uYW1lICIqLmNhdCIgLWRlbGV0ZQotICAgIGZpbmQgJHtCfS9jb25mb3JtIC1uYW1lICJzeW1saXN0LSoiIC1kZWxldGUKLSAgICBbICEgLWUgJHtCfS90aW1lem9uZS90ZXN0ZGF0YSBdIHx8IHJtIC1yZiAke0J9L3RpbWV6b25lL3Rlc3RkYXRhCi0KLSAgICBvZV9ydW5tYWtlIC1pIFwKLSAgICAgICAgUUVNVV9TWVNST09UPSIke1JFQ0lQRV9TWVNST09UfSIgXAotICAgICAgICBRRU1VX09QVElPTlM9IiR7QHFlbXVfdGFyZ2V0X2JpbmFyeShkKX0gJHtRRU1VX09QVElPTlN9IiBcCi0gICAgICAgIFNTSF9IT1NUPSIke1RPT0xDSEFJTl9URVNUX0hPU1R9IiBcCi0gICAgICAgIFNTSF9IT1NUX1VTRVI9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSfSIgXAotICAgICAgICBTU0hfSE9TVF9QT1JUPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVH0iIFwKLSAgICAgICAgdGVzdC13cmFwcGVyPSIke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlciAke1RPT0xDSEFJTl9URVNUX1RBUkdFVH0iIFwKLSAgICAgICAgY2hlY2sKLX0KLWFkZHRhc2sgZG9fY2hlY2sgYWZ0ZXIgZG9fY29tcGlsZQotCi1pbmhlcml0IG5vcGFja2FnZXMKLWRlbHRhc2sgZG9fc3Rhc2hfbG9jYWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODg3YWVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMS5iYgpAQCAtMCwwICsxLDYzIEBACityZXF1aXJlIGdsaWJjXyR7UFZ9LmJiCisKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgorCisjIGhhbmRsZSBQTiBkaWZmZXJlbmNlcworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZ2xpYmM6IgorCisjIHN0cmlwIHByb3ZpZGVzCitQUk9WSURFUyA9ICIiCisjIHNldHVwIGRlcGVuZHMKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIiIKKworcHl0aG9uICgpIHsKKyAgICBsaWJjID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMiKQorICAgIGxpYmNsb2NhbGUgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYy1sb2NhbGUiKQorICAgIGlmIGxpYmMgIT0gImdsaWJjIiBvciBsaWJjbG9jYWxlICE9ICJnbGliYy1sb2NhbGUiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJnbGliYy10ZXN0c3VpdGUgcmVxdWlyZXMgdGhhdCB2aXJ0dWFsL2xpYmMgaXMgZ2xpYmMiKQorfQorCitERVBFTkRTICs9ICJnbGliYy1sb2NhbGUgbGliZ2NjIGdjYy1ydW50aW1lIgorCisjIHJlbW92ZSB0aGUgaW5pdGlhbCBkZXBlbmRzCitERVBFTkRTX3JlbW92ZSA9ICJsaWJnY2MtaW5pdGlhbCIKKworaW5oZXJpdCBxZW11CisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jaGVjay10ZXN0LXdyYXBwZXIiCisKK0RFUEVORFMgKz0gIiR7QCdxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCcpID09ICd1c2VyJyBlbHNlICcnfSIKKworVE9PTENIQUlOX1RFU1RfVEFSR0VUID8/PSAidXNlciIKK1RPT0xDSEFJTl9URVNUX0hPU1QgPz89ICJsb2NhbGhvc3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVIgPz89ICJyb290IgorVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID8/PSAiMjIyMiIKKworZG9fY2hlY2tbZGlyc10gKz0gIiR7Qn0iCitkb19jaGVja1tub3N0YW1wXSA9ICIxIgorZG9fY2hlY2sgKCkgeworICAgIGNobW9kIDA3NTUgJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIKKworICAgICMgY2xlYW4gb3V0IHByZXZpb3VzIHRlc3QgcmVzdWx0cworICAgIG9lX3J1bm1ha2UgdGVzdHMtY2xlYW4KKyAgICAjIG1ha2VmaWxlcyBkb24ndCBjbGVhbiBlbnRpcmVseSAoYW5kIGFsc28gc29tZXRpbWVzIGZhaWxzIGR1ZSB0byB0b28gbWFueSBhcmdzKQorICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLm91dCIgLWRlbGV0ZQorICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLnRlc3QtcmVzdWx0IiAtZGVsZXRlCisgICAgZmluZCAke0J9L2NhdGdldHMgLW5hbWUgIiouY2F0IiAtZGVsZXRlCisgICAgZmluZCAke0J9L2NvbmZvcm0gLW5hbWUgInN5bWxpc3QtKiIgLWRlbGV0ZQorICAgIFsgISAtZSAke0J9L3RpbWV6b25lL3Rlc3RkYXRhIF0gfHwgcm0gLXJmICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEKKworICAgIG9lX3J1bm1ha2UgLWkgXAorICAgICAgICBRRU1VX1NZU1JPT1Q9IiR7UkVDSVBFX1NZU1JPT1R9IiBcCisgICAgICAgIFFFTVVfT1BUSU9OUz0iJHtAcWVtdV90YXJnZXRfYmluYXJ5KGQpfSAke1FFTVVfT1BUSU9OU30iIFwKKyAgICAgICAgU1NIX0hPU1Q9IiR7VE9PTENIQUlOX1RFU1RfSE9TVH0iIFwKKyAgICAgICAgU1NIX0hPU1RfVVNFUj0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVJ9IiBcCisgICAgICAgIFNTSF9IT1NUX1BPUlQ9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUfSIgXAorICAgICAgICB0ZXN0LXdyYXBwZXI9IiR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyICR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgXAorICAgICAgICBjaGVjaworfQorYWRkdGFzayBkb19jaGVjayBhZnRlciBkb19jb21waWxlCisKK2luaGVyaXQgbm9wYWNrYWdlcworZGVsdGFzayBkb19zdGFzaF9sb2NhbGUKK2RlbHRhc2sgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy12ZXJzaW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdmVyc2lvbi5pbmMKaW5kZXggYzE4YzU4My4uNGM3MmVlZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy12ZXJzaW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jCkBAIC0xLDYgKzEsNiBAQAotU1JDQlJBTkNIID89ICJyZWxlYXNlLzIuMzAvbWFzdGVyIgotUFYgPSAiMi4zMCIKLVNSQ1JFVl9nbGliYyA/PSAiYmU5YTMyOGM5MzgzNDY0OGUwYmVjMTA2YTFmODYzNTdkMWE4YzdlMSIKK1NSQ0JSQU5DSCA/PSAicmVsZWFzZS8yLjMxL21hc3RlciIKK1BWID0gIjIuMzErZ2l0JHtTUkNQVn0iCitTUkNSRVZfZ2xpYmMgPz0gIjcxZjJiMjQ5YTI4ZTE3ZWFjMGU0N2M1M2FmNDRkNWM1YjY1MTAxYWEiCiBTUkNSRVZfbG9jYWxlZGVmID89ICJjZDlmOTU4YzRjOTRhNjM4ZmE3YjJiNGUyMTYyNzM2NGYxYTFhNjU1IgogCiBHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwppbmRleCBlYTlhMDRhLi4yM2E2Y2E5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYwpAQCAtMSw2ICsxLDUgQEAKIHJlcXVpcmUgZ2xpYmMtY29tbW9uLmluYwogcmVxdWlyZSBnbGliYy1sZC5pbmMKLXJlcXVpcmUgZ2xpYmMtdGVzdGluZy5pbmMKIAogREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MgbGliZ2NjLWluaXRpYWwgbGludXgtbGliYy1oZWFkZXJzIgogCkBAIC0xMCw4ICs5LDExIEBACiAKIExFQURfU09OQU1FID0gImxpYmMuc28iCiAKKyMgbXNnZm10IGNvdWxkIGNvbWUgZnJvbSBnZXR0ZXh0LW5hdGl2ZSBidXQgd2UgZG9uJ3QgZGVwZW5kIG9uIHRoYXQgYW5kCisjIGRpc2FibGUgZm9yIHJlcHJvZHVjaWJpbGl0eQogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIiBcCiAgIGFjX2N2X3BhdGhfQkFTSF9TSEVMTD0ke2Jhc2VfYmluZGlyfS9iYXNoIFwKKyAgYWNfY3ZfcHJvZ19NU0dGTVQ9IFwKICAgbGliY19jdl9zbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKICAgbGliY19jdl9yb290c2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAogICBsaWJjX2N2X2xvY2FsZWRpcj0ke2xvY2FsZWRpcn0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItZnJvbS11dGlsLWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItZnJvbS11dGlsLWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNzg2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2gKQEAgLTAsMCArMSwxMTMwIEBACitGcm9tIDNkY2YxNDRlOTk4YWVkMTdiM2ZiOTU3YTI1NWIxZTkyM2JhMDdkNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCA3IERlYyAyMDE5IDA5OjU5OjIyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZWRlZjogQWRkIGhhcmRsaW5rIHJlc29sdmVyIGZyb20gdXRpbC1saW51eAorCitUaGUgaGFyZCBsaW5rIHJlc29sdmVyIHRoYXQgaXMgYnVpbHQgaW50byBsb2NhbGVkZWYgY2Fubm90IGJlIHJ1biBpbgorcGFyYWxsZWwuICBJdCB3aWxsIHNlYXJjaCBzaWJsaW5nIGRpcmVjdG9yaWVzICh3aGljaCBhcmUgYmUgcHJvY2Vzc2VkCitpbiBwYXJhbGxlbCkgYW5kIHBlcmZvcm0gYSBjcmVhdGlvbiBvZiBhIC50bXAgZmlsZSBhbmQgcmVtb3ZlIHRoZQorb3JpZ2luYWwgYW5kIG1vdmUgdGhlIC50bXAgZmlsZSBpbi4gIFRoZSBwcm9ibGVtIGlzIHRoYXQgaWYgYSBwcm9iZQorb2NjdXJzIGEgaGFyZCBsaW5rIGNhbiBiZSByZXF1ZXN0ZWQgdG8gdGhlIGZpbGUgdGhhdCBpcyBiZWluZyByZW1vdmVkLgorVGhpcyB3aWxsIGxlYWQgdG8gYSBzdHJheSBjb3B5IG9yIHBvdGVudGlhbGx5LCBvbiBhIGxvYWRlZCBzeXN0ZW0KK2NhdXNlIHJhY2UgY29uZGl0aW9uIHdoaWNoIHBzZXVkbyBjYW5ub3QgZGVhbCB3aXRoLCB3aGVyZSBpdCBpcyBsZWZ0Cit3aXRoIGEgaGFyZCBsaW5rIHJlcXVlc3QgdG8gYSBmaWxlIHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy4gIEluIHRoaXMKK3NpdHVhdGlvbiBwc3VlZG8gd2lsbCBpbmhlcml0IHRoZSBwZXJtaXNzaW9ucyBvZiB3aGF0IGV2ZXIgdGhlIHRhcmdldAoraW5vZGUgaGFkIHRvIG9mZmVyLgorCitJbiBzaG9ydCwgdGhlcmUgYXJlIHR3byBwcm9ibGVtczoKKworMSkgWW91IHdpbGwgYmUgbGVmdCB3aXRoIHN0cmF5IGNvcGllcyB3aGVuIHVzaW5nIHRoZSBoYXJkIGxpbmsKK3Jlc29sdXRpb24gdGhhdCBpcyBidWlsdCBpbiB3aGlsZSBydW5uaW5nIGluIHBhcmFsbGVsIHdpdGgKK2xvY2FsZWRlZi4KKworMikgV2hlbiBydW5uaW5nIHVuZGVyIHBzZXVkbyB0aGUgcG9zc2liaWxpdHkgZXhpc3RzIGZvciB1aWQvZ2lkCitsZWFrYWdlIHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIHJlbW92ZWQgYmVmb3JlIHRoZSBoYXJkIGxpbmsgY2FuCitiZSBjb21wbGV0ZWQuCisKK1RoZSBzb2x1dGlvbiBpcyB0byBjYWxsIGxvY2FsZWRlZiB3aXRoIC0tbm8taGFyZC1saW5rcyBhbmQgc2VwYXJhdGVseQorcHJvY2VzcyB0aGUgaGFyZGxpbmtzIGF0IGEgbGF0ZXIgcG9pbnQuICBUbyBkbyB0aGlzIHJlcXVpcmVzIHRoZQoraW5jbHVzaW9uIG9mIHRoZSBoYXJkbGluayB1dGlsaXR5IGZvdW5kIGluIG1vZGVybiB2ZXJzaW9ucyBvZgordXRpbC1saW51eC4gIE1vc3QgaG9zdCBzeXN0ZW1zIGRvIG5vdCBoYXZlIHRoaXMsIHNvIGl0IHdpbGwgYmUKK2luY2x1ZGVkIHdpdGggdGhlIGNyb3NzLWxvY2FsZWRlZiBiaW5hcnkuCisKK1tZT0NUTyAjMTEyOTldCitbWU9DVE8gIzEyNDM0XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCA0MDcgKysrKysrKysrKysrKysrKworIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8IDUyOCArKysrKysrKysrKysrKysrKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmggICAgICAgICAgICAgICAgICAgfCAxMjkgKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDEwNjQgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvcHJvZ3JhbXMvYy5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmgKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jLmggYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uZDBhNDAyZTkwZQorLS0tIC9kZXYvbnVsbAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAorQEAgLTAsMCArMSw0MDcgQEAKKysvKgorKyAqIEZ1bmRhbWVudGFsIEMgZGVmaW5pdGlvbnMuCisrICovCisrCisrI2lmbmRlZiBVVElMX0xJTlVYX0NfSAorKyNkZWZpbmUgVVRJTF9MSU5VWF9DX0gKKysKKysjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKworKyNpZmRlZiBIQVZFX0VSUl9ICisrIyBpbmNsdWRlIDxlcnIuaD4KKysjZW5kaWYKKysKKysjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKKysjIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gICAgIC8qIGZvciBtYWpvciwgbWlub3IgKi8KKysjZW5kaWYKKysKKysjaWZuZGVmIExPR0lOX05BTUVfTUFYCisrIyBkZWZpbmUgTE9HSU5fTkFNRV9NQVggMjU2CisrI2VuZGlmCisrCisrI2lmbmRlZiBOQU1FX01BWAorKyMgZGVmaW5lIE5BTUVfTUFYIFBBVEhfTUFYCisrI2VuZGlmCisrCisrLyoKKysgKiBfX0dOVUNfUFJFUkVRIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIF9faGFzX2F0dHJpYnV0ZSgpIGFuZAorKyAqIF9faGFzX2ZlYXR1cmUoKS4gVGhlIF9faGFzIG1hY3JvcyBhcmUgc3VwcG9ydGVkIGJ5IGNsYW5nIGFuZCBnY2M+PTUuCisrICovCisrI2lmbmRlZiBfX0dOVUNfUFJFUkVRCisrIyBpZiBkZWZpbmVkIF9fR05VQ19fICYmIGRlZmluZWQgX19HTlVDX01JTk9SX18KKysjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgXAorKwkoKF9fR05VQ19fIDw8IDE2KSArIF9fR05VQ19NSU5PUl9fID49ICgobWFqKSA8PCAxNikgKyAobWluKSkKKysjIGVsc2UKKysjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgMAorKyMgZW5kaWYKKysjZW5kaWYKKysKKysjaWZkZWYgX19HTlVDX18KKysKKysvKiAmYVswXSBkZWdyYWRlcyB0byBhIHBvaW50ZXI6IGEgZGlmZmVyZW50IHR5cGUgZnJvbSBhbiBhcnJheSAqLworKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKSBcCisrCVVMX0JVSUxEX0JVR19PTl9aRVJPKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhhKSwgX190eXBlb2ZfXygmYVswXSkpKQorKworKyMgZGVmaW5lIGlnbm9yZV9yZXN1bHQoeCkgX19leHRlbnNpb25fXyAoeyBcCisrCV9fdHlwZW9mX18oeCkgX19kdW1teSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgPSAoeCk7ICh2b2lkKSBfX2R1bW15OyBcCisrfSkKKysKKysjZWxzZSAvKiAhX19HTlVDX18gKi8KKysjIGRlZmluZSBfX211c3RfYmVfYXJyYXkoYSkJMAorKyMgZGVmaW5lIF9fYXR0cmlidXRlX18oX2FyZ18pCisrIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSAoKHZvaWQpICh4KSkKKysjZW5kaWYgLyogIV9fR05VQ19fICovCisrCisrLyoKKysgKiBJdCBldmFsdWF0ZXMgdG8gMSBpZiB0aGUgYXR0cmlidXRlL2ZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50CisrICogY29tcGlsYXRpb24gdGFyZ2VkLiBGYWxsYmFjayBmb3Igb2xkIGNvbXBpbGVycy4KKysgKi8KKysjaWZuZGVmIF9faGFzX2F0dHJpYnV0ZQorKyAgI2RlZmluZSBfX2hhc19hdHRyaWJ1dGUoeCkgMAorKyNlbmRpZgorKworKyNpZm5kZWYgX19oYXNfZmVhdHVyZQorKyAgI2RlZmluZSBfX2hhc19mZWF0dXJlKHgpIDAKKysjZW5kaWYKKysKKysvKgorKyAqIEZ1bmN0aW9uIGF0dHJpYnV0ZXMKKysgKi8KKysjaWZuZGVmIF9fdWxfYWxsb2Nfc2l6ZQorKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKKysjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpIF9fYXR0cmlidXRlX18oKGFsbG9jX3NpemUocyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCisrIyBlbHNlCisrIyAgZGVmaW5lIF9fdWxfYWxsb2Nfc2l6ZShzKQorKyMgZW5kaWYKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fdWxfY2FsbG9jX3NpemUKKysjIGlmIChfX2hhc19hdHRyaWJ1dGUoYWxsb2Nfc2l6ZSkgJiYgX19oYXNfYXR0cmlidXRlKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDMpCisrIyAgZGVmaW5lIF9fdWxfY2FsbG9jX3NpemUobiwgcykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShuLCBzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKKysjIGVsc2UKKysjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKQorKyMgZW5kaWYKKysjZW5kaWYKKysKKysjaWYgX19oYXNfYXR0cmlidXRlKHJldHVybnNfbm9ubnVsbCkgfHwgX19HTlVDX1BSRVJFUSAoNCwgOSkKKysjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbCBfX2F0dHJpYnV0ZV9fKChyZXR1cm5zX25vbm51bGwpKQorKyNlbHNlCisrIyBkZWZpbmUgX191bF9yZXR1cm5zX25vbm51bGwKKysjZW5kaWYKKysKKysvKgorKyAqIEZvcmNlIGEgY29tcGlsYXRpb24gZXJyb3IgaWYgY29uZGl0aW9uIGlzIHRydWUsIGJ1dCBhbHNvIHByb2R1Y2UgYQorKyAqIHJlc3VsdCAob2YgdmFsdWUgMCBhbmQgdHlwZSBzaXplX3QpLCBzbyB0aGUgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZAorKyAqIGUuZy4gaW4gYSBzdHJ1Y3R1cmUgaW5pdGlhbGl6ZXIgKG9yIHdoZXJldmVyIGVsc2UgY29tbWEgZXhwcmVzc2lvbnMKKysgKiBhcmVuJ3QgcGVybWl0dGVkKS4KKysgKi8KKysjZGVmaW5lIFVMX0JVSUxEX0JVR19PTl9aRVJPKGUpIF9fZXh0ZW5zaW9uX18gKHNpemVvZihzdHJ1Y3QgeyBpbnQ6LSEhKGUpOyB9KSkKKysjZGVmaW5lIEJVSUxEX0JVR19PTl9OVUxMKGUpICgodm9pZCAqKXNpemVvZihzdHJ1Y3QgeyBpbnQ6LSEhKGUpOyB9KSkKKysKKysjaWZuZGVmIEFSUkFZX1NJWkUKKysjIGRlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKQorKyNlbmRpZgorKworKyNpZm5kZWYgUEFUSF9NQVgKKysjIGRlZmluZSBQQVRIX01BWCA0MDk2CisrI2VuZGlmCisrCisrI2lmbmRlZiBUUlVFCisrIyBkZWZpbmUgVFJVRSAxCisrI2VuZGlmCisrCisrI2lmbmRlZiBGQUxTRQorKyMgZGVmaW5lIEZBTFNFIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIG1pbgorKyMgZGVmaW5lIG1pbih4LCB5KSBfX2V4dGVuc2lvbl9fICh7CQlcCisrCV9fdHlwZW9mX18oeCkgX21pbjEgPSAoeCk7CQlcCisrCV9fdHlwZW9mX18oeSkgX21pbjIgPSAoeSk7CQlcCisrCSh2b2lkKSAoJl9taW4xID09ICZfbWluMik7CQlcCisrCV9taW4xIDwgX21pbjIgPyBfbWluMSA6IF9taW4yOyB9KQorKyNlbmRpZgorKworKyNpZm5kZWYgbWF4CisrIyBkZWZpbmUgbWF4KHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKKysJX190eXBlb2ZfXyh4KSBfbWF4MSA9ICh4KTsJCVwKKysJX190eXBlb2ZfXyh5KSBfbWF4MiA9ICh5KTsJCVwKKysJKHZvaWQpICgmX21heDEgPT0gJl9tYXgyKTsJCVwKKysJX21heDEgPiBfbWF4MiA/IF9tYXgxIDogX21heDI7IH0pCisrI2VuZGlmCisrCisrI2lmbmRlZiBjbXBfbnVtYmVycworKyMgZGVmaW5lIGNtcF9udW1iZXJzKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJXAorKwlfX3R5cGVvZl9fKHgpIF9hID0gKHgpOwkJCVwKKysJX190eXBlb2ZfXyh5KSBfYiA9ICh5KTsJCQlcCisrCSh2b2lkKSAoJl9hID09ICZfYik7CQkJXAorKwlfYSA9PSBfYiA/IDAgOiBfYSA+IF9iID8gMSA6IC0xOyB9KQorKyNlbmRpZgorKworKyNpZm5kZWYgb2Zmc2V0b2YKKysjZGVmaW5lIG9mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQorKyNlbmRpZgorKworKy8qCisrICogY29udGFpbmVyX29mIC0gY2FzdCBhIG1lbWJlciBvZiBhIHN0cnVjdHVyZSBvdXQgdG8gdGhlIGNvbnRhaW5pbmcgc3RydWN0dXJlCisrICogQHB0cjoJdGhlIHBvaW50ZXIgdG8gdGhlIG1lbWJlci4KKysgKiBAdHlwZToJdGhlIHR5cGUgb2YgdGhlIGNvbnRhaW5lciBzdHJ1Y3QgdGhpcyBpcyBlbWJlZGRlZCBpbi4KKysgKiBAbWVtYmVyOgl0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHdpdGhpbiB0aGUgc3RydWN0LgorKyAqLworKyNpZm5kZWYgY29udGFpbmVyX29mCisrI2RlZmluZSBjb250YWluZXJfb2YocHRyLCB0eXBlLCBtZW1iZXIpIF9fZXh0ZW5zaW9uX18gKHsJXAorKwljb25zdCBfX3R5cGVvZl9fKCAoKHR5cGUgKikwKS0+bWVtYmVyICkgKl9fbXB0ciA9IChwdHIpOyBcCisrCSh0eXBlICopKCAoY2hhciAqKV9fbXB0ciAtIG9mZnNldG9mKHR5cGUsbWVtYmVyKSApO30pCisrI2VuZGlmCisrCisrI2lmbmRlZiBIQVZFX1BST0dSQU1fSU5WT0NBVElPTl9TSE9SVF9OQU1FCisrIyBpZmRlZiBIQVZFX19fUFJPR05BTUUKKytleHRlcm4gY2hhciAqX19wcm9nbmFtZTsKKysjICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgX19wcm9nbmFtZQorKyMgZWxzZQorKyMgIGlmZGVmIEhBVkVfR0VURVhFQ05BTUUKKysjICAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIFwKKysJCXByb2dfaW52X3NoX25tX2Zyb21fZmlsZShnZXRleGVjbmFtZSgpLCAwKQorKyMgIGVsc2UKKysjICAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIFwKKysJCXByb2dfaW52X3NoX25tX2Zyb21fZmlsZShfX0ZJTEVfXywgMSkKKysjICBlbmRpZgorK3N0YXRpYyBjaGFyIHByb2dfaW52X3NoX25tX2J1ZlsyNTZdOworK3N0YXRpYyBpbmxpbmUgY2hhciAqCisrcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGNoYXIgKmYsIGNoYXIgc3RyaXBleHQpCisreworKwljaGFyICp0OworKworKwlpZiAoKHQgPSBzdHJyY2hyKGYsICcvJykpICE9IE5VTEwpCisrCQl0Kys7CisrCWVsc2UKKysJCXQgPSBmOworKworKwlzdHJuY3B5KHByb2dfaW52X3NoX25tX2J1ZiwgdCwgc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxKTsKKysJcHJvZ19pbnZfc2hfbm1fYnVmW3NpemVvZihwcm9nX2ludl9zaF9ubV9idWYpIC0gMV0gPSAnXDAnOworKworKwlpZiAoc3RyaXBleHQgJiYgKHQgPSBzdHJyY2hyKHByb2dfaW52X3NoX25tX2J1ZiwgJy4nKSkgIT0gTlVMTCkKKysJCSp0ID0gJ1wwJzsKKysKKysJcmV0dXJuIHByb2dfaW52X3NoX25tX2J1ZjsKKyt9CisrIyBlbmRpZgorKyNlbmRpZgorKworKworKyNpZm5kZWYgSEFWRV9FUlJfSAorK3N0YXRpYyBpbmxpbmUgdm9pZAorK2Vycm1zZyhjaGFyIGRvZXhpdCwgaW50IGV4Y29kZSwgY2hhciBhZGRlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysJZnByaW50ZihzdGRlcnIsICIlczogIiwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOworKwlpZiAoZm10ICE9IE5VTEwpIHsKKysJCXZhX2xpc3QgYXJncDsKKysJCXZhX3N0YXJ0KGFyZ3AsIGZtdCk7CisrCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXJncCk7CisrCQl2YV9lbmQoYXJncCk7CisrCQlpZiAoYWRkZXJyKQorKwkJCWZwcmludGYoc3RkZXJyLCAiOiAiKTsKKysJfQorKwlpZiAoYWRkZXJyKQorKwkJZnByaW50ZihzdGRlcnIsICIlbSIpOworKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisrCWlmIChkb2V4aXQpCisrCQlleGl0KGV4Y29kZSk7CisrfQorKworKyNpZm5kZWYgSEFWRV9FUlIKKysjIGRlZmluZSBlcnIoRSwgRk1ULi4uKSBlcnJtc2coMSwgRSwgMSwgRk1UKQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9FUlJYCisrIyBkZWZpbmUgZXJyeChFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAwLCBGTVQpCisrI2VuZGlmCisrCisrI2lmbmRlZiBIQVZFX1dBUk4KKysjIGRlZmluZSB3YXJuKEZNVC4uLikgZXJybXNnKDAsIDAsIDEsIEZNVCkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfV0FSTlgKKysjIGRlZmluZSB3YXJueChGTVQuLi4pIGVycm1zZygwLCAwLCAwLCBGTVQpCisrI2VuZGlmCisrI2VuZGlmIC8qICFIQVZFX0VSUl9IICovCisrCisrCisrLyogRG9uJ3QgdXNlIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCAnI2luY2x1ZGUgIm5scy5oIicgaW4gYy5oCisrICovCisrI2RlZmluZSBlcnJ0cnloZWxwKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAorKwlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKKysJCQlwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7IFwKKysJZXhpdChldmFsKTsgXAorK30pCisrCisrLyogQWZ0ZXIgZmFpbGVkIGV4ZWN2cCgpICovCisrI2RlZmluZSBFWF9FWEVDX0ZBSUxFRAkJMTI2CS8qIFByb2dyYW0gbG9jYXRlZCwgYnV0IG5vdCB1c2FibGUuICovCisrI2RlZmluZSBFWF9FWEVDX0VOT0VOVAkJMTI3CS8qIENvdWxkIG5vdCBmaW5kIHByb2dyYW0gdG8gZXhlYy4gICovCisrI2RlZmluZSBlcnJleGVjKG5hbWUpCWVycihlcnJubyA9PSBFTk9FTlQgPyBFWF9FWEVDX0VOT0VOVCA6IEVYX0VYRUNfRkFJTEVELCBcCisrCQkJXygiZmFpbGVkIHRvIGV4ZWN1dGUgJXMiKSwgbmFtZSkKKysKKysKKytzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IGlzX3Bvd2VyX29mXzIodW5zaWduZWQgbG9uZyBudW0pCisreworKwlyZXR1cm4gKG51bSAhPSAwICYmICgobnVtICYgKG51bSAtIDEpKSA9PSAwKSk7CisrfQorKworKyNpZm5kZWYgSEFWRV9MT0ZGX1QKKyt0eXBlZGVmIGludDY0X3QgbG9mZl90OworKyNlbmRpZgorKworKyNpZiAhZGVmaW5lZChIQVZFX0RJUkZEKSAmJiAoIWRlZmluZWQoSEFWRV9ERUNMX0RJUkZEKSB8fCBIQVZFX0RFQ0xfRElSRkQgPT0gMCkgJiYgZGVmaW5lZChIQVZFX0RJUl9ERF9GRCkKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPGRpcmVudC5oPgorK3N0YXRpYyBpbmxpbmUgaW50IGRpcmZkKERJUiAqZCkKKyt7CisrCXJldHVybiBkLT5kZF9mZDsKKyt9CisrI2VuZGlmCisrCisrLyoKKysgKiBGYWxsYmFjayBkZWZpbmVzIGZvciBvbGQgdmVyc2lvbnMgb2YgZ2xpYmMKKysgKi8KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysKKysjaWZkZWYgT19DTE9FWEVDCisrI2RlZmluZSBVTF9DTE9FWEVDU1RSCSJlIgorKyNlbHNlCisrI2RlZmluZSBVTF9DTE9FWEVDU1RSCSIiCisrI2VuZGlmCisrCisrI2lmbmRlZiBPX0NMT0VYRUMKKysjZGVmaW5lIE9fQ0xPRVhFQyAwCisrI2VuZGlmCisrCisrI2lmZGVmIF9fRnJlZUJTRF9rZXJuZWxfXworKyNpZm5kZWYgRl9EVVBGRF9DTE9FWEVDCisrI2RlZmluZSBGX0RVUEZEX0NMT0VYRUMJMTcJLyogTGlrZSBGX0RVUEZELCBidXQgRkRfQ0xPRVhFQyBpcyBzZXQgKi8KKysjZW5kaWYKKysjZW5kaWYKKysKKysKKysjaWZuZGVmIEFJX0FERFJDT05GSUcKKysjZGVmaW5lIEFJX0FERFJDT05GSUcgMHgwMDIwCisrI2VuZGlmCisrCisrI2lmbmRlZiBJVVRGOAorKyNkZWZpbmUgSVVURjggMDA0MDAwMAorKyNlbmRpZgorKworKy8qCisrICogTUFYSE9TVE5BTUVMRU4gcmVwbGFjZW1lbnQKKysgKi8KKytzdGF0aWMgaW5saW5lIHNpemVfdCBnZXRfaG9zdG5hbWVfbWF4KHZvaWQpCisreworKwlsb25nIGxlbiA9IHN5c2NvbmYoX1NDX0hPU1RfTkFNRV9NQVgpOworKworKwlpZiAoMCA8IGxlbikKKysJCXJldHVybiBsZW47CisrCisrI2lmZGVmIE1BWEhPU1ROQU1FTEVOCisrCXJldHVybiBNQVhIT1NUTkFNRUxFTjsKKysjZWxpZiBIT1NUX05BTUVfTUFYCisrCXJldHVybiBIT1NUX05BTUVfTUFYOworKyNlbmRpZgorKwlyZXR1cm4gNjQ7CisrfQorKworKworKy8qCisrICogQ29uc3RhbnQgc3RyaW5ncyBmb3IgdXNhZ2UoKSBmdW5jdGlvbnMuIEZvciBtb3JlIGluZm8gc2VlCisrICogRG9jdW1lbnRhdGlvbi97aG93dG8tdXNhZ2UtZnVuY3Rpb24udHh0LGJvaWxlcnBsYXRlLmN9CisrICovCisrI2RlZmluZSBVU0FHRV9IRUFERVIgICAgICgiXG5Vc2FnZTpcbiIpCisrI2RlZmluZSBVU0FHRV9PUFRJT05TICAgICgiXG5PcHRpb25zOlxuIikKKysjZGVmaW5lIFVTQUdFX0ZVTkNUSU9OUyAgKCJcbkZ1bmN0aW9uczpcbiIpCisrI2RlZmluZSBVU0FHRV9DT01NQU5EUyAgICgiXG5Db21tYW5kczpcbiIpCisrI2RlZmluZSBVU0FHRV9DT0xVTU5TICAgICgiXG5BdmFpbGFibGUgb3V0cHV0IGNvbHVtbnM6XG4iKQorKyNkZWZpbmUgVVNBR0VfU0VQQVJBVE9SICAgICJcbiIKKysKKysjZGVmaW5lIFVTQUdFX09QVFNUUl9IRUxQICAgICAoImRpc3BsYXkgdGhpcyBoZWxwIikKKysjZGVmaW5lIFVTQUdFX09QVFNUUl9WRVJTSU9OICAoImRpc3BsYXkgdmVyc2lvbiIpCisrCisrI2RlZmluZSBVU0FHRV9IRUxQX09QVElPTlMobWFyZ19kc2MpIFwKKysJCSIlLSIgI21hcmdfZHNjICJzJXNcbiIgXAorKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCisrCQksICIgLWgsIC0taGVscCIsICAgIFVTQUdFX09QVFNUUl9IRUxQIFwKKysJCSwgIiAtViwgLS12ZXJzaW9uIiwgVVNBR0VfT1BUU1RSX1ZFUlNJT04KKysKKysjZGVmaW5lIFVTQUdFX01BTl9UQUlMKF9tYW4pICAgKCJcbkZvciBtb3JlIGRldGFpbHMgc2VlICVzLlxuIiksIF9tYW4KKysKKysjZGVmaW5lIFVUSUxfTElOVVhfVkVSU0lPTiAoIiVzIGZyb20gJXNcbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSwgUEFDS0FHRV9TVFJJTkcKKysKKysjZGVmaW5lIHByaW50X3ZlcnNpb24oZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCisrCQlwcmludGYoVVRJTF9MSU5VWF9WRVJTSU9OKTsgXAorKwkJZXhpdChldmFsKTsgXAorK30pCisrCisrLyoKKysgKiBzY2FuZiBtb2RpZmllcnMgZm9yICJzdHJpbmdzIGFsbG9jYXRpb24iCisrICovCisrI2lmZGVmIEhBVkVfU0NBTkZfTVNfTU9ESUZJRVIKKysjZGVmaW5lIFVMX1NDTnNBCSIlbXMiCisrI2VsaWYgZGVmaW5lZChIQVZFX1NDQU5GX0FTX01PRElGSUVSKQorKyNkZWZpbmUgVUxfU0NOc0EJIiVhcyIKKysjZW5kaWYKKysKKysvKgorKyAqIHNlZWsgc3R1ZmYKKysgKi8KKysjaWZuZGVmIFNFRUtfREFUQQorKyMgZGVmaW5lIFNFRUtfREFUQQkzCisrI2VuZGlmCisrI2lmbmRlZiBTRUVLX0hPTEUKKysjIGRlZmluZSBTRUVLX0hPTEUJNAorKyNlbmRpZgorKworKworKy8qCisrICogTWFjcm9zIHRvIGNvbnZlcnQgI2RlZmluZSdpdGlvbnMgdG8gc3RyaW5ncywgZm9yIGV4YW1wbGUKKysgKiAjZGVmaW5lIFhZWFhZIDQyCisrICogcHJpbnRmICgiJXM9JXNcbiIsIHN0cmluZ2lmeShYWVhYWSksIHN0cmluZ2lmeV92YWx1ZShYWVhYWSkpOworKyAqLworKyNkZWZpbmUgc3RyaW5naWZ5X3ZhbHVlKHMpIHN0cmluZ2lmeShzKQorKyNkZWZpbmUgc3RyaW5naWZ5KHMpICNzCisrCisrLyoKKysgKiBVTF9BU0FOX0JMQUNLTElTVCBpcyBhIG1hY3JvIHRvIHRlbGwgQWRkcmVzc1Nhbml0aXplciAoYSBjb21waWxlLXRpbWUKKysgKiBpbnN0cnVtZW50YXRpb24gc2hpcHBlZCB3aXRoIENsYW5nIGFuZCBHQ0MpIHRvIG5vdCBpbnN0cnVtZW50IHRoZQorKyAqIGFubm90YXRlZCBmdW5jdGlvbi4gIEZ1cnRoZXJtb3JlLCBpdCB3aWxsIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20KKysgKiBpbmxpbmluZyB0aGUgZnVuY3Rpb24gYmVjYXVzZSBpbmxpbmluZyBjdXJyZW50bHkgYnJlYWtzIHRoZSBibGFja2xpc3RpbmcKKysgKiBtZWNoYW5pc20gb2YgQWRkcmVzc1Nhbml0aXplci4KKysgKi8KKysjaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikgJiYgX19oYXNfYXR0cmlidXRlKG5vX3Nhbml0aXplX21lbW9yeSkgJiYgX19oYXNfYXR0cmlidXRlKG5vX3Nhbml0aXplX2FkZHJlc3MpCisrIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9tZW1vcnkpKSBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKKysjZWxzZQorKyMgZGVmaW5lIFVMX0FTQU5fQkxBQ0tMSVNUCS8qIG5vdGhpbmcgKi8KKysjZW5kaWYKKysKKysvKgorKyAqIE5vdGUgdGhhdCBzeXNjb25mKF9TQ19HRVRQV19SX1NJWkVfTUFYKSByZXR1cm5zICppbml0aWFsKiBzdWdnZXN0ZWQgc2l6ZSBmb3IKKysgKiBwd2QgYnVmZmVyIGFuZCBpbiBzb21lIGNhc2VzIGl0IGlzIG5vdCBsYXJnZSBlbm91Z2guIFNlZSBQT1NJWCBhbmQKKysgKiBnZXRwd25hbV9yIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuCisrICovCisrI2RlZmluZSBVTF9HRVRQV19CVUZTSVoJKDE2ICogMTAyNCkKKysKKysvKgorKyAqIERhcndpbiBvciBvdGhlciBCU0RzIG1heSBvbmx5IGhhdmUgTUFQX0FOT04uIFRvIGdldCBpdCBvbiBEYXJ3aW4gd2UgbXVzdAorKyAqIGRlZmluZSBfREFSV0lOX0NfU09VUkNFIGJlZm9yZSBpbmNsdWRpbmcgc3lzL21tYW4uaC4gV2UgZG8gdGhpcyBpbiBjb25maWcuaC4KKysgKi8KKysjaWYgIWRlZmluZWQgTUFQX0FOT05ZTU9VUyAmJiBkZWZpbmVkIE1BUF9BTk9OCisrIyBkZWZpbmUgTUFQX0FOT05ZTU9VUyAgKE1BUF9BTk9OKQorKyNlbmRpZgorKworKyNlbmRpZiAvKiBVVElMX0xJTlVYX0NfSCAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjYzNjE1ODk2YjAKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworQEAgLTAsMCArMSw1MjggQEAKKysvKgorKyAqIGhhcmRsaW5rIC0gY29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHZpYSBoYXJkbGlua3MKKysgKgorKyAqIENvcHlyaWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICogV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgorKyAqCisrICogQ29weXJpZ2h0IChDKSAyMDE5IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisrICovCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8Z2V0b3B0Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZGlyZW50Lmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2lmZGVmIEhBVkVfUENSRQorKyMgZGVmaW5lIFBDUkUyX0NPREVfVU5JVF9XSURUSCA4CisrIyBpbmNsdWRlIDxwY3JlMi5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlICJjLmgiCisrI2luY2x1ZGUgInhhbGxvYy5oIgorKyNpbmNsdWRlICJubHMuaCIKKysjaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKKysKKysjZGVmaW5lIE5IQVNIICAgKDE8PDE3KSAgLyogTXVzdCBiZSBhIHBvd2VyIG9mIDIhICovCisrI2RlZmluZSBOQlVGICAgIDY0CisrCisrc3RydWN0IGhhcmRsaW5rX2ZpbGU7CisrCisrc3RydWN0IGhhcmRsaW5rX2hhc2ggeworKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqbmV4dDsKKysJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmNoYWluOworKwlvZmZfdCBzaXplOworKwl0aW1lX3QgbXRpbWU7CisrfTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfZGlyIHsKKysJc3RydWN0IGhhcmRsaW5rX2RpciAqbmV4dDsKKysJY2hhciBuYW1lW107CisrfTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfZmlsZSB7CisrCXN0cnVjdCBoYXJkbGlua19maWxlICpuZXh0OworKwlpbm9fdCBpbm87CisrCWRldl90IGRldjsKKysJdW5zaWduZWQgaW50IGNrc3VtOworKwljaGFyIG5hbWVbXTsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19keW5zdHIgeworKwljaGFyICpidWY7CisrCXNpemVfdCBhbGxvYzsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19jdGwgeworKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkaXJzOworKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHBzW05IQVNIXTsKKysJY2hhciBpb2J1ZjFbQlVGU0laXTsKKysJY2hhciBpb2J1ZjJbQlVGU0laXTsKKysJLyogc3VtbWFyeSBjb3VudGVycyAqLworKwl1bnNpZ25lZCBsb25nIGxvbmcgbmRpcnM7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBub2JqZWN0czsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5yZWdmaWxlczsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5jb21wOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbmxpbmtzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbnNhdmVkOworKwkvKiBjdXJyZW50IGRldmljZSAqLworKwlkZXZfdCBkZXY7CisrCS8qIGZsYWdzICovCisrCXVuc2lnbmVkIGludCB2ZXJib3NlOworKwl1bnNpZ25lZCBpbnQKKysJCW5vX2xpbms6MSwKKysJCWNvbnRlbnRfb25seToxLAorKwkJZm9yY2U6MTsKKyt9OworKy8qIGN0bCBpcyBpbiBnbG9iYWwgc2NvcGUgZHVlIHVzZSBpbiBhdGV4aXQoKSAqLworK3N0cnVjdCBoYXJkbGlua19jdGwgZ2xvYmFsX2N0bDsKKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaGFzaChvZmZfdCBzaXplLCB0aW1lX3QgbXRpbWUpCisreworKwlyZXR1cm4gKHNpemUgXiBtdGltZSkgJiAoTkhBU0ggLSAxKTsKKyt9CisrCisrX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorK3N0YXRpYyBpbmxpbmUgaW50IHN0Y21wKHN0cnVjdCBzdGF0ICpzdDEsIHN0cnVjdCBzdGF0ICpzdDIsIGludCBjb250ZW50X3Njb3BlKQorK3sKKysJaWYgKGNvbnRlbnRfc2NvcGUpCisrCQlyZXR1cm4gc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZTsKKysKKysJcmV0dXJuIHN0MS0+c3RfbW9kZSAhPSBzdDItPnN0X21vZGUKKysJCXx8IHN0MS0+c3RfdWlkICE9IHN0Mi0+c3RfdWlkCisrCQl8fCBzdDEtPnN0X2dpZCAhPSBzdDItPnN0X2dpZAorKwkJfHwgc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZQorKwkJfHwgc3QxLT5zdF9tdGltZSAhPSBzdDItPnN0X210aW1lOworK30KKysKKytzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCisreworKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsIGNvbnN0ICpjb25zdCBjdGwgPSAmZ2xvYmFsX2N0bDsKKysKKysJaWYgKCFjdGwtPnZlcmJvc2UpCisrCQlyZXR1cm47CisrCisrCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQorKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKysKKysJcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7CisrCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOworKwlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7CisrCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOworKwlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/CisrCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6CisrCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKKysJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KKysJICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgorKwkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKKyt9CisrCisrc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgdXNhZ2Uodm9pZCkKKyt7CisrCWZwdXRzKFVTQUdFX0hFQURFUiwgc3Rkb3V0KTsKKysJcHJpbnRmKF8oIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOworKworKwlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7CisrCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7CisrCisrCWZwdXRzKFVTQUdFX09QVElPTlMsIHN0ZG91dCk7CisrCXB1dHMoXygiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKKysJcHV0cyhfKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOworKwlwdXRzKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7CisrCXB1dHMoXygiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOworKwlwdXRzKF8oIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKKysJcHV0cyhfKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7CisrCisrCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKKysJcHJpbnRmKFVTQUdFX0hFTFBfT1BUSU9OUygxNikpOyAvKiBjaGFyIG9mZnNldCB0byBhbGlnbiBvcHRpb24gZGVzY3JpcHRpb25zICovCisrCXByaW50ZihVU0FHRV9NQU5fVEFJTCgiaGFyZGxpbmsoMSkiKSk7CisrCWV4aXQoRVhJVF9TVUNDRVNTKTsKKyt9CisrCisrX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDIoc2l6ZV90IGEsIHNpemVfdCBiKQorK3sKKysJc2l6ZV90IHN1bSA9IGEgKyBiOworKworKwlpZiAoc3VtIDwgYSkKKysJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJpbnRlZ2VyIG92ZXJmbG93IikpOworKwlyZXR1cm4gc3VtOworK30KKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSBzaXplX3QgYWRkMyhzaXplX3QgYSwgc2l6ZV90IGIsIHNpemVfdCBjKQorK3sKKysJcmV0dXJuIGFkZDIoYWRkMihhLCBiKSwgYyk7CisrfQorKworK3N0YXRpYyB2b2lkIGdyb3dzdHIoc3RydWN0IGhhcmRsaW5rX2R5bnN0ciAqc3RyLCBzaXplX3QgbmV3bGVuKQorK3sKKysJaWYgKG5ld2xlbiA8IHN0ci0+YWxsb2MpCisrCQlyZXR1cm47CisrCXN0ci0+YnVmID0geHJlYWxsb2Moc3RyLT5idWYsIHN0ci0+YWxsb2MgPSBhZGQyKG5ld2xlbiwgMSkpOworK30KKysKKytzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorK3sKKysJc3RydWN0IHN0YXQgc3QsIHN0Miwgc3QzOworKwljb25zdCBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKysKKysJY3RsLT5ub2JqZWN0cysrOworKwlpZiAobHN0YXQobmFtZSwgJnN0KSkKKysJCXJldHVybjsKKysKKysJaWYgKHN0LnN0X2RldiAhPSBjdGwtPmRldiAmJiAhY3RsLT5mb3JjZSkgeworKwkJaWYgKGN0bC0+ZGV2KQorKwkJCWVycngoRVhJVF9GQUlMVVJFLAorKwkJCSAgICAgXygiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCisrCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOworKwkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7CisrCX0KKysJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKysJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0geG1hbGxvYyhhZGQzKHNpemVvZigqZHApLCBuYW1lbGVuLCAxKSk7CisrCQltZW1jcHkoZHAtPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKKysJCWRwLT5uZXh0ID0gY3RsLT5kaXJzOworKwkJY3RsLT5kaXJzID0gZHA7CisrCisrCX0gZWxzZSBpZiAoU19JU1JFRyhzdC5zdF9tb2RlKSkgeworKwkJaW50IGZkLCBpOworKwkJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmZwLCAqZnAyOworKwkJc3RydWN0IGhhcmRsaW5rX2hhc2ggKmhwOworKwkJY29uc3QgY2hhciAqbjEsICpuMjsKKysJCXVuc2lnbmVkIGludCBidWZbTkJVRl07CisrCQlpbnQgY2tzdW1zaXplID0gc2l6ZW9mKGJ1Zik7CisrCQl1bnNpZ25lZCBpbnQgY2tzdW07CisrCQl0aW1lX3QgbXRpbWUgPSBjdGwtPmNvbnRlbnRfb25seSA/IDAgOiBzdC5zdF9tdGltZTsKKysJCXVuc2lnbmVkIGludCBoc2ggPSBoYXNoKHN0LnN0X3NpemUsIG10aW1lKTsKKysJCW9mZl90IGZzaXplOworKworKwkJY3RsLT5ucmVnZmlsZXMrKzsKKysJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorKwkJCXByaW50ZigiJXNcbiIsIG5hbWUpOworKworKwkJZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZKTsKKysJCWlmIChmZCA8IDApCisrCQkJcmV0dXJuOworKworKwkJaWYgKChzaXplX3Qpc3Quc3Rfc2l6ZSA8IHNpemVvZihidWYpKSB7CisrCQkJY2tzdW1zaXplID0gc3Quc3Rfc2l6ZTsKKysJCQltZW1zZXQoKChjaGFyICopYnVmKSArIGNrc3Vtc2l6ZSwgMCwKKysJCQkgICAgICAgKHNpemVvZihidWYpIC0gY2tzdW1zaXplKSAlIHNpemVvZihidWZbMF0pKTsKKysJCX0KKysJCWlmIChyZWFkKGZkLCBidWYsIGNrc3Vtc2l6ZSkgIT0gY2tzdW1zaXplKSB7CisrCQkJY2xvc2UoZmQpOworKwkJCXJldHVybjsKKysJCX0KKysJCWNrc3Vtc2l6ZSA9IChja3N1bXNpemUgKyBzaXplb2YoYnVmWzBdKSAtIDEpIC8gc2l6ZW9mKGJ1ZlswXSk7CisrCQlmb3IgKGkgPSAwLCBja3N1bSA9IDA7IGkgPCBja3N1bXNpemU7IGkrKykgeworKwkJCWlmIChja3N1bSArIGJ1ZltpXSA8IGNrc3VtKQorKwkJCQlja3N1bSArPSBidWZbaV0gKyAxOworKwkJCWVsc2UKKysJCQkJY2tzdW0gKz0gYnVmW2ldOworKwkJfQorKwkJZm9yIChocCA9IGN0bC0+aHBzW2hzaF07IGhwOyBocCA9IGhwLT5uZXh0KSB7CisrCQkJaWYgKGhwLT5zaXplID09IHN0LnN0X3NpemUgJiYgaHAtPm10aW1lID09IG10aW1lKQorKwkJCQlicmVhazsKKysJCX0KKysJCWlmICghaHApIHsKKysJCQlocCA9IHhtYWxsb2Moc2l6ZW9mKCpocCkpOworKwkJCWhwLT5zaXplID0gc3Quc3Rfc2l6ZTsKKysJCQlocC0+bXRpbWUgPSBtdGltZTsKKysJCQlocC0+Y2hhaW4gPSBOVUxMOworKwkJCWhwLT5uZXh0ID0gY3RsLT5ocHNbaHNoXTsKKysJCQljdGwtPmhwc1toc2hdID0gaHA7CisrCQl9CisrCQlmb3IgKGZwID0gaHAtPmNoYWluOyBmcDsgZnAgPSBmcC0+bmV4dCkgeworKwkJCWlmIChmcC0+Y2tzdW0gPT0gY2tzdW0pCisrCQkJCWJyZWFrOworKwkJfQorKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgeworKwkJCWlmIChmcDItPmlubyA9PSBzdC5zdF9pbm8gJiYgZnAyLT5kZXYgPT0gc3Quc3RfZGV2KSB7CisrCQkJCWNsb3NlKGZkKTsKKysJCQkJcmV0dXJuOworKwkJCX0KKysJCX0KKysJCWZvciAoZnAyID0gZnA7IGZwMiAmJiBmcDItPmNrc3VtID09IGNrc3VtOyBmcDIgPSBmcDItPm5leHQpIHsKKysKKysJCQlpZiAoIWxzdGF0KGZwMi0+bmFtZSwgJnN0MikgJiYgU19JU1JFRyhzdDIuc3RfbW9kZSkgJiYKKysJCQkgICAgIXN0Y21wKCZzdCwgJnN0MiwgY3RsLT5jb250ZW50X29ubHkpICYmCisrCQkJICAgIHN0Mi5zdF9pbm8gIT0gc3Quc3RfaW5vICYmCisrCQkJICAgIHN0Mi5zdF9kZXYgPT0gc3Quc3RfZGV2KSB7CisrCisrCQkJCWludCBmZDIgPSBvcGVuKGZwMi0+bmFtZSwgT19SRE9OTFkpOworKwkJCQlpZiAoZmQyIDwgMCkKKysJCQkJCWNvbnRpbnVlOworKworKwkJCQlpZiAoZnN0YXQoZmQyLCAmc3QyKSB8fCAhU19JU1JFRyhzdDIuc3RfbW9kZSkKKysJCQkJICAgIHx8IHN0Mi5zdF9zaXplID09IDApIHsKKysJCQkJCWNsb3NlKGZkMik7CisrCQkJCQljb250aW51ZTsKKysJCQkJfQorKwkJCQljdGwtPm5jb21wKys7CisrCQkJCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7CisrCisrCQkJCWZvciAoZnNpemUgPSBzdC5zdF9zaXplOyBmc2l6ZSA+IDA7CisrCQkJCSAgICAgZnNpemUgLT0gKG9mZl90KXNpemVvZihjdGwtPmlvYnVmMSkpIHsKKysJCQkJCXNzaXplX3QgeHN6OworKwkJCQkJc3NpemVfdCByc2l6ZSA9IGZzaXplID4gKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgPworKwkJCQkJCQkoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA6IGZzaXplOworKworKwkJCQkJaWYgKCh4c3ogPSByZWFkKGZkLCBjdGwtPmlvYnVmMSwgcnNpemUpKSAhPSByc2l6ZSkKKysJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIG5hbWUpOworKwkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKKysJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7CisrCisrCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7CisrCQkJCQkJY2xvc2UoZmQpOworKwkJCQkJCWNsb3NlKGZkMik7CisrCQkJCQkJcmV0dXJuOworKwkJCQkJfQorKwkJCQkJaWYgKG1lbWNtcChjdGwtPmlvYnVmMSwgY3RsLT5pb2J1ZjIsIHJzaXplKSkKKysJCQkJCQlicmVhazsKKysJCQkJfQorKwkJCQljbG9zZShmZDIpOworKwkJCQlpZiAoZnNpemUgPiAwKQorKwkJCQkJY29udGludWU7CisrCQkJCWlmIChsc3RhdChuYW1lLCAmc3QzKSkgeworKwkJCQkJd2FybihfKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKKysJCQkJCWNsb3NlKGZkKTsKKysJCQkJCXJldHVybjsKKysJCQkJfQorKwkJCQlzdDMuc3RfYXRpbWUgPSBzdC5zdF9hdGltZTsKKysJCQkJaWYgKHN0Y21wKCZzdCwgJnN0MywgMCkpIHsKKysJCQkJCXdhcm54KF8oImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOworKwkJCQkJY2xvc2UoZmQpOworKwkJCQkJcmV0dXJuOworKwkJCQl9CisrCQkJCW4xID0gZnAyLT5uYW1lOworKwkJCQluMiA9IG5hbWU7CisrCisrCQkJCWlmICghY3RsLT5ub19saW5rKSB7CisrCQkJCQljb25zdCBjaGFyICpzdWZmaXggPQorKwkJCQkJICAgICIuJCQkX19fY2xlYW5pdF9fXyQkJCI7CisrCQkJCQljb25zdCBzaXplX3Qgc3VmZml4bGVuID0gc3RybGVuKHN1ZmZpeCk7CisrCQkJCQlzaXplX3QgbjJsZW4gPSBzdHJsZW4objIpOworKwkJCQkJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0yID0geyBOVUxMLCAwIH07CisrCisrCQkJCQlncm93c3RyKCZuYW0yLCBhZGQyKG4ybGVuLCBzdWZmaXhsZW4pKTsKKysJCQkJCW1lbWNweShuYW0yLmJ1ZiwgbjIsIG4ybGVuKTsKKysJCQkJCW1lbWNweSgmbmFtMi5idWZbbjJsZW5dLCBzdWZmaXgsCisrCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7CisrCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCisrCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7CisrCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCisrCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOworKwkJCQkJCWZyZWUobmFtMi5idWYpOworKwkJCQkJCWNvbnRpbnVlOworKwkJCQkJfQorKwkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLworKwkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7CisrCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCisrCQkJCQkJCW4xLCBuMiwgbjIpOworKwkJCQkJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCB0cnkgdG8gcmVtb3ZlIHRoZSBub3cgcmVkdW5kYW50IHRlbXBvcmFyeSBsaW5rICovCisrCQkJCQkJaWYgKHVubGluayhuYW0yLmJ1ZikpCisrCQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7CisrCQkJCQkJZnJlZShuYW0yLmJ1Zik7CisrCQkJCQkJY29udGludWU7CisrCQkJCQl9CisrCQkJCQlmcmVlKG5hbTIuYnVmKTsKKysJCQkJfQorKwkJCQljdGwtPm5saW5rcysrOworKwkJCQlpZiAoc3QzLnN0X25saW5rID4gMSkgeworKwkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50CisrCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KKysJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAorKwkJCQkJCQluMSwgbjIpOworKwkJCQl9IGVsc2UgeworKwkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7CisrCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKKysJCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAorKwkJCQkJCQluMSwgbjIsCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJ3b3VsZCBzYXZlIikgOiBfKCJzYXZlZCIpKSwKKysJCQkJCQkJKGludG1heF90KXN0LnN0X3NpemUpOworKwkJCQl9CisrCQkJCWNsb3NlKGZkKTsKKysJCQkJcmV0dXJuOworKwkJCX0KKysJCX0KKysJCWZwMiA9IHhtYWxsb2MoYWRkMyhzaXplb2YoKmZwMiksIG5hbWVsZW4sIDEpKTsKKysJCWNsb3NlKGZkKTsKKysJCWZwMi0+aW5vID0gc3Quc3RfaW5vOworKwkJZnAyLT5kZXYgPSBzdC5zdF9kZXY7CisrCQlmcDItPmNrc3VtID0gY2tzdW07CisrCQltZW1jcHkoZnAyLT5uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7CisrCisrCQlpZiAoZnApIHsKKysJCQlmcDItPm5leHQgPSBmcC0+bmV4dDsKKysJCQlmcC0+bmV4dCA9IGZwMjsKKysJCX0gZWxzZSB7CisrCQkJZnAyLT5uZXh0ID0gaHAtPmNoYWluOworKwkJCWhwLT5jaGFpbiA9IGZwMjsKKysJCX0KKysJCXJldHVybjsKKysJfQorK30KKysKKytpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKwlpbnQgY2g7CisrCWludCBpOworKyNpZmRlZiBIQVZFX1BDUkUKKysJaW50IGVycm9ybnVtYmVyOworKwlQQ1JFMl9TSVpFIGVycm9yb2Zmc2V0OworKwlwY3JlMl9jb2RlICpyZSA9IE5VTEw7CisrCVBDUkUyX1NQVFIgZXhjbHVkZV9wYXR0ZXJuID0gTlVMTDsKKysJcGNyZTJfbWF0Y2hfZGF0YSAqbWF0Y2hfZGF0YSA9IE5VTEw7CisrI2VuZGlmCisrCXN0cnVjdCBoYXJkbGlua19keW5zdHIgbmFtMSA9IHsgTlVMTCwgMCB9OworKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwgPSAmZ2xvYmFsX2N0bDsKKysKKysJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ29wdHNbXSA9IHsKKysJCXsgImNvbnRlbnQiLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ2MnIH0sCisrCQl7ICJkcnktcnVuIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICduJyB9LAorKwkJeyAiZXhjbHVkZSIsICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCcgfSwKKysJCXsgImZvcmNlIiwgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2YnIH0sCisrCQl7ICJoZWxwIiwgICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdoJyB9LAorKwkJeyAidmVyYm9zZSIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAndicgfSwKKysJCXsgInZlcnNpb24iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ1YnIH0sCisrCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKKysJfTsKKysKKysJc2V0bG9jYWxlKExDX0FMTCwgIiIpOworKwliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOworKwl0ZXh0ZG9tYWluKFBBQ0tBR0UpOworKwljbG9zZV9zdGRvdXRfYXRleGl0KCk7CisrCisrCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7CisrCQlzd2l0Y2ggKGNoKSB7CisrCQljYXNlICduJzoKKysJCQljdGwtPm5vX2xpbmsgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAndic6CisrCQkJY3RsLT52ZXJib3NlKys7CisrCQkJYnJlYWs7CisrCQljYXNlICdjJzoKKysJCQljdGwtPmNvbnRlbnRfb25seSA9IDE7CisrCQkJYnJlYWs7CisrCQljYXNlICdmJzoKKysJCQljdGwtPmZvcmNlID0gMTsKKysJCQlicmVhazsKKysJCWNhc2UgJ3gnOgorKyNpZmRlZiBIQVZFX1BDUkUKKysJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOworKyNlbHNlCisrCQkJZXJyeChFWElUX0ZBSUxVUkUsCisrCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOworKyNlbmRpZgorKwkJCWJyZWFrOworKwkJY2FzZSAnVic6CisrCQkJcHJpbnRfdmVyc2lvbihFWElUX1NVQ0NFU1MpOworKwkJY2FzZSAnaCc6CisrCQkJdXNhZ2UoKTsKKysJCWRlZmF1bHQ6CisrCQkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOworKwkJfQorKwl9CisrCisrCWlmIChvcHRpbmQgPT0gYXJnYykgeworKwkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKKysJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKKysJfQorKworKyNpZmRlZiBIQVZFX1BDUkUKKysJaWYgKGV4Y2x1ZGVfcGF0dGVybikgeworKwkJcmUgPSBwY3JlMl9jb21waWxlKGV4Y2x1ZGVfcGF0dGVybiwgLyogdGhlIHBhdHRlcm4gKi8KKysJCQkJICAgUENSRTJfWkVST19URVJNSU5BVEVELCAvKiBpbmRpY2F0ZXMgcGF0dGVybiBpcyB6ZXJvLXRlcm1pbmF0ZSAqLworKwkJCQkgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KKysJCQkJICAgJmVycm9ybnVtYmVyLCAmZXJyb3JvZmZzZXQsIE5VTEwpOyAvKiB1c2UgZGVmYXVsdCBjb21waWxlIGNvbnRleHQgKi8KKysJCWlmICghcmUpIHsKKysJCQlQQ1JFMl9VQ0hBUiBidWZmZXJbMjU2XTsKKysJCQlwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShlcnJvcm51bWJlciwgYnVmZmVyLAorKwkJCQkJCXNpemVvZihidWZmZXIpKTsKKysJCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCisrCQkJCShpbnQpZXJyb3JvZmZzZXQsIGJ1ZmZlcik7CisrCQl9CisrCQltYXRjaF9kYXRhID0gcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKHJlLCBOVUxMKTsKKysJfQorKyNlbmRpZgorKwlhdGV4aXQocHJpbnRfc3VtbWFyeSk7CisrCisrCWZvciAoaSA9IG9wdGluZDsgaSA8IGFyZ2M7IGkrKykKKysJCXByb2Nlc3NfcGF0aChjdGwsIGFyZ3ZbaV0pOworKworKwl3aGlsZSAoY3RsLT5kaXJzKSB7CisrCQlESVIgKmRoOworKwkJc3RydWN0IGRpcmVudCAqZGk7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkcCA9IGN0bC0+ZGlyczsKKysJCXNpemVfdCBuYW0xYmFzZWxlbiA9IHN0cmxlbihkcC0+bmFtZSk7CisrCisrCQljdGwtPmRpcnMgPSBkcC0+bmV4dDsKKysJCWdyb3dzdHIoJm5hbTEsIGFkZDIobmFtMWJhc2VsZW4sIDEpKTsKKysJCW1lbWNweShuYW0xLmJ1ZiwgZHAtPm5hbWUsIG5hbTFiYXNlbGVuKTsKKysJCWZyZWUoZHApOworKwkJbmFtMS5idWZbbmFtMWJhc2VsZW4rK10gPSAnLyc7CisrCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOworKwkJZGggPSBvcGVuZGlyKG5hbTEuYnVmKTsKKysKKysJCWlmIChkaCA9PSBOVUxMKQorKwkJCWNvbnRpbnVlOworKwkJY3RsLT5uZGlycysrOworKworKwkJd2hpbGUgKChkaSA9IHJlYWRkaXIoZGgpKSAhPSBOVUxMKSB7CisrCQkJaWYgKCFkaS0+ZF9uYW1lWzBdKQorKwkJCQljb250aW51ZTsKKysJCQlpZiAoZGktPmRfbmFtZVswXSA9PSAnLicpIHsKKysJCQkJaWYgKCFkaS0+ZF9uYW1lWzFdIHx8ICFzdHJjbXAoZGktPmRfbmFtZSwgIi4uIikpCisrCQkJCQljb250aW51ZTsKKysJCQl9CisrI2lmZGVmIEhBVkVfUENSRQorKwkJCWlmIChyZSAmJiBwY3JlMl9tYXRjaChyZSwgLyogY29tcGlsZWQgcmVnZXggKi8KKysJCQkJCSAgICAgIChQQ1JFMl9TUFRSKSBkaS0+ZF9uYW1lLCBzdHJsZW4oZGktPmRfbmFtZSksIDAsIC8qIHN0YXJ0IGF0IG9mZnNldCAwICovCisrCQkJCQkgICAgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KKysJCQkJCSAgICAgIG1hdGNoX2RhdGEsIC8qIGJsb2NrIGZvciBzdG9yaW5nIHRoZSByZXN1bHQgKi8KKysJCQkJCSAgICAgIE5VTEwpIC8qIHVzZSBkZWZhdWx0IG1hdGNoIGNvbnRleHQgKi8KKysJCQkgICAgPj0wKSB7CisrCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKKysJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7CisrCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKKysJCQkJfQorKwkJCQljb250aW51ZTsKKysJCQl9CisrI2VuZGlmCisrCQkJeworKwkJCQlzaXplX3Qgc3ViZGlybGVuOworKwkJCQlncm93c3RyKCZuYW0xLAorKwkJCQkJYWRkMihuYW0xYmFzZWxlbiwgc3ViZGlybGVuID0KKysJCQkJCSAgICAgc3RybGVuKGRpLT5kX25hbWUpKSk7CisrCQkJCW1lbWNweSgmbmFtMS5idWZbbmFtMWJhc2VsZW5dLCBkaS0+ZF9uYW1lLAorKwkJCQkgICAgICAgYWRkMihzdWJkaXJsZW4sIDEpKTsKKysJCQl9CisrCQkJcHJvY2Vzc19wYXRoKGN0bCwgbmFtMS5idWYpOworKwkJfQorKwkJY2xvc2VkaXIoZGgpOworKwl9CisrCisrCXJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmggYi9sb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4wMTI5YTg1ZTJlCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmgKK0BAIC0wLDAgKzEsMTI5IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGF2aWRsb2hyIEJ1ZXNvIDxkYXZlQGdudS5vcmc+CisrICoKKysgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKysgKgorKyAqIEdlbmVyYWwgbWVtb3J5IGFsbG9jYXRpb24gd3JhcHBlcnMgZm9yIG1hbGxvYywgcmVhbGxvYywgY2FsbG9jIGFuZCBzdHJkdXAKKysgKi8KKysKKysjaWZuZGVmIFVUSUxfTElOVVhfWEFMTE9DX0gKKysjZGVmaW5lIFVUSUxfTElOVVhfWEFMTE9DX0gKKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJjLmgiCisrCisrI2lmbmRlZiBYQUxMT0NfRVhJVF9DT0RFCisrIyBkZWZpbmUgWEFMTE9DX0VYSVRfQ09ERSBFWElUX0ZBSUxVUkUKKysjZW5kaWYKKysKKytzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKKytfX2Vycl9vb20oY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCisreworKwllcnIoWEFMTE9DX0VYSVRfQ09ERSwgIiVzOiAldTogY2Fubm90IGFsbG9jYXRlIG1lbW9yeSIsIGZpbGUsIGxpbmUpOworK30KKysKKysjZGVmaW5lIGVycl9vb20oKQlfX2Vycl9vb20oX19GSUxFX18sIF9fTElORV9fKQorKworK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDEpIF9fdWxfcmV0dXJuc19ub25udWxsCisrdm9pZCAqeG1hbGxvYyhjb25zdCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgICAgICB2b2lkICpyZXQgPSBtYWxsb2Moc2l6ZSk7CisrCisrICAgICAgICBpZiAoIXJldCAmJiBzaXplKQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDIpIF9fdWxfcmV0dXJuc19ub25udWxsCisrdm9pZCAqeHJlYWxsb2Modm9pZCAqcHRyLCBjb25zdCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgICAgICB2b2lkICpyZXQgPSByZWFsbG9jKHB0ciwgc2l6ZSk7CisrCisrICAgICAgICBpZiAoIXJldCAmJiBzaXplKQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgX191bF9jYWxsb2Nfc2l6ZSgxLCAyKSBfX3VsX3JldHVybnNfbm9ubnVsbAorK3ZvaWQgKnhjYWxsb2MoY29uc3Qgc2l6ZV90IG5lbGVtcywgY29uc3Qgc2l6ZV90IHNpemUpCisreworKyAgICAgICAgdm9pZCAqcmV0ID0gY2FsbG9jKG5lbGVtcywgc2l6ZSk7CisrCisrICAgICAgICBpZiAoIXJldCAmJiBzaXplICYmIG5lbGVtcykKKysgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIGNoYXIgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKKysqeHN0cmR1cChjb25zdCBjaGFyICpzdHIpCisreworKyAgICAgICAgY2hhciAqcmV0OworKworKyAgICAgICAgaWYgKCFzdHIpCisrICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAgICAgcmV0ID0gc3RyZHVwKHN0cik7CisrCisrICAgICAgICBpZiAoIXJldCkKKysgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgZHVwbGljYXRlIHN0cmluZyIpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKKyt4c3RybmR1cChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIGNoYXIgKnJldDsKKysKKysgICAgICAgIGlmICghc3RyKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgICAgIHJldCA9IHN0cm5kdXAoc3RyLCBzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0KQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKysKKytzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkKKysgICAgeGFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyt7CisrCWludCByZXQ7CisrCXZhX2xpc3QgYXJnczsKKysJdmFfc3RhcnQoYXJncywgZm10KTsKKysJcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFyZ3MpOworKwl2YV9lbmQoYXJncyk7CisrCWlmIChyZXQgPCAwKQorKwkJZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgc3RyaW5nIik7CisrCXJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgaW50ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkKKyt4dmFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCisreworKwlpbnQgcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFwKTsKKysJaWYgKHJldCA8IDApCisrCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrCisrc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgeGdldGhvc3RuYW1lKHZvaWQpCisreworKwljaGFyICpuYW1lOworKwlzaXplX3Qgc3ogPSBnZXRfaG9zdG5hbWVfbWF4KCkgKyAxOworKworKwluYW1lID0geG1hbGxvYyhzaXplb2YoY2hhcikgKiBzeik7CisrCisrCWlmIChnZXRob3N0bmFtZShuYW1lLCBzeikgIT0gMCkgeworKwkJZnJlZShuYW1lKTsKKysJCXJldHVybiBOVUxMOworKwl9CisrCW5hbWVbc3ogLSAxXSA9ICdcMCc7CisrCXJldHVybiBuYW1lOworK30KKysKKysjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLXRvLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY2NTI5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLXRvLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gNTZhZTI2MGFjMjRhZGU5NGUyZTBlNzdjODE3NTEzMTIzNzJkMjUzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDcgRGVjIDIwMTkgMDk6NTY6MjMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmOiBBZGQgaGFyZGxpbmsgcmVzb2x2ZXIgdG8gYnVpbGQKKworVGhlIHNvdXJjZWNvZGUgZm9yIHRoaXMgaXMgaW1wb3J0ZWQgZnJvbSB1dGlsLWxpbnV4IGFuZCBpcyBrZXB0IHdpdGgKK2dsaWJjIHNvdXJjZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgOCArKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDc3ZmJkZWQuLmE4N2U1YjIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC00MCw2ICs0MCw4IEBAIFdBUk5GTEFHUwk9IC1XYWxsIC1Xbm8tZm9ybWF0CisgRlVMTENDCQk9ICQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSBcCisgCQkgICQoREVGSU5FUykgJChJTkNMVURFUykgJChXQVJORkxBR1MpCisgCisrQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMgPSBjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsubworKworIExPQ0FMRURFRl9PQkpTCT0gY2hhcm1hcC5vIGNoYXJtYXAtZGlyLm8gbGQtYWRkcmVzcy5vIGxkLWNvbGxhdGUubyBcCisgCQkgIGxkLWN0eXBlLm8gbGQtaWRlbnRpZmljYXRpb24ubyBsZC1tZWFzdXJlbWVudC5vIFwKKyAJCSAgbGQtbWVzc2FnZXMubyBsZC1tb25ldGFyeS5vIGxkLW5hbWUubyBsZC1udW1lcmljLm8gXAorQEAgLTU0LDExICs1NiwxNCBAQCBMT0NBTEVERUZfT0JKUwk9IGNoYXJtYXAubyBjaGFybWFwLWRpci5vIGxkLWFkZHJlc3MubyBsZC1jb2xsYXRlLm8gXAorIAkJICBhc3ByaW50Zi5vIGdldGRlbGltLm8gbG9jYWxlZGVmX2V4dHJhLm8gXAorIAkJICBvYnN0YWNrX3ByaW50Zi5vIHZhc3ByaW50Zi5vCisgCistYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpCisrYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpIGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKQorIAorIGxvY2FsZWRlZiQoRVhFRVhUKTogJChMT0NBTEVERUZfT0JKUykKKyAJCSQoQ0MpIC1vICRAICQoTE9DQUxFREVGX09CSlMpICQoTElCUykKKyAKKytjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmskKEVYRUVYVCk6ICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpCisrCQkkKENDKSAtbyAkQCAkKENST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTKSAkKExJQlMpCisrCisgY2xlYW46CisgCQlybSAtZiBsb2NhbGUkKEVYRUVYVCkgJChMT0NBTEVERUZfT0JKUykKKyAKK0BAIC03Nyw2ICs4Miw3IEBAIGNsZWFuOgorICUubzogJChzcmNkaXIpLyUuYworIAkJJChGVUxMQ0MpIC1jIC1vICRAICQ8CisgCisrY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworIGNoYXJtYXAubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAuYworIGNoYXJtYXAtZGlyLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCisgbGQtYWRkcmVzcy5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvbGQtYWRkcmVzcy5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODZkMWQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSBmNjk4NGM5MjNiNDExNTU5Nzk3NjRiZmEzZjQ0NjA5NTcyYmU1NDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NDg6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yOF0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcwotIHdlbGwKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotVGhlIGRlZmF1bHQgbGliIHNlYXJjaCBwYXRoIG9yZGVyIGlzOgotCi0gIDEpIExEX0xJQlJBUllfUEFUSAotICAyKSBSUEFUSCBmcm9tIHRoZSBiaW5hcnkKLSAgMykgbGQuc28uY2FjaGUKLSAgNCkgZGVmYXVsdCBzZWFyY2ggcGF0aHMgZW1iZWRkZWQgaW4gdGhlIGxpbmtlcgotCi1Gb3IgbmF0aXZlc2RrIGJpbmFyaWVzIHdoaWNoIGFyZSBiZWluZyB1c2VkIGFsb25nc2lkZSBiaW5hcmllcyBvbiBhIGhvc3Qgc3lzdGVtLCB3ZQotbmVlZCB0aGUgc2VhcmNoIHBhdGhzIHRvIGZpcnN0bHkgc2VhcmNoIHRoZSBzaGlwcGVkIG5hdGl2ZXNkayBsaWJzIGJ1dCB0aGVuIGFsc28KLWNvdmVyIHRoZSBob3N0IHN5c3RlbS4gRm9yIGV4YW1wbGUgd2Ugd2FudCB0aGUgaG9zdCBzeXN0ZW0ncyBsaWJHTCBhbmQgdGhpcyBtYXkgYmUKLWluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uIGxpa2UgL3Vzci9saWIvbWVzYS4gVGhlIG9ubHkgcGxhY2UgdGhlIGxvY2F0aW9uIGlzIGtub3cKLWFib3V0IGlzIGluIHRoZSBsZC5zby5jYWNoZSBvZiB0aGUgaG9zdCBzeXN0ZW0uCi0KLVNpbmNlIG5hdGl2ZXNkayBoYXMgYSBzaW1wbGUgc3RydWN0dXJlIGFuZCBkb2Vzbid0IG5lZWQgdG8gdXNlIGEgY2FjaGUgaXRzZWxmLCB3ZQotcmVwdXJwb3NlIHRoZSBjYWNoZSBmb3IgdXNlIGFzIGEgbGFzdCByZXNvcnQgaW4gZmluZGluZyBob3N0IHN5c3RlbSBiaW5hcmllcy4gVGhpcwotbWVhbnMgd2UgbmVlZCB0byBzd2l0Y2ggdGhlIG9yZGVyIG9mIDMgYW5kIDQgYWJvdmUgdG8gbWFrZSB0aGlzIHdvcmsgZWZmZWN0aXZlbHkuCi0KLVJQIDE0LzEwLzIwMTAKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGVsZi9kbC1sb2FkLmMgfCAxNiArKysrKysrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCA1YWJlYjg2N2YxLi45ODFiZDViNGFmIDEwMDY0NAotLS0tIGEvZWxmL2RsLWxvYWQuYwotKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTIwODAsNiArMjA4MCwxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgfQotICAgICAgICAgfQotIAotKyAgICAgIC8qIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KLSsgICAgICBpZiAoZmQgPT0gLTEKLSsJICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKLSsJICAgfHwgX19idWlsdGluX2V4cGVjdCAoIShsLT5sX2ZsYWdzXzEgJiBERl8xX05PREVGTElCKSwgMSkpCi0rCSAmJiBydGxkX3NlYXJjaF9kaXJzLmRpcnMgIT0gKHZvaWQgKikgLTEpCi0rCWZkID0gb3Blbl9wYXRoIChuYW1lLCBuYW1lbGVuLCBtb2RlICYgX19SVExEX1NFQ1VSRSwgJnJ0bGRfc2VhcmNoX2RpcnMsCi0rCQkJJnJlYWxuYW1lLCAmZmIsIGwsIExBX1NFUl9ERUZBVUxULCAmZm91bmRfb3RoZXJfY2xhc3MpOwotKyAgICAgIC8qIEZpbmFsbHkgdHJ5IGxkLnNvLmNhY2hlICovCi0gI2lmZGVmIFVTRV9MRENPTkZJRwotICAgICAgIGlmIChmZCA9PSAtMQotIAkgICYmIChfX2dsaWJjX2xpa2VseSAoKG1vZGUgJiBfX1JUTERfU0VDVVJFKSA9PSAwKQotQEAgLTIxMzgsMTQgKzIxNDYsNiBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCi0gCX0KLSAjZW5kaWYKLSAKLS0gICAgICAvKiBGaW5hbGx5LCB0cnkgdGhlIGRlZmF1bHQgcGF0aC4gICovCi0tICAgICAgaWYgKGZkID09IC0xCi0tCSAgJiYgKChsID0gbG9hZGVyID86IEdMKGRsX25zKVtuc2lkXS5fbnNfbG9hZGVkKSA9PSBOVUxMCi0tCSAgICAgIHx8IF9fZ2xpYmNfbGlrZWx5ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpKSkKLS0JICAmJiBydGxkX3NlYXJjaF9kaXJzLmRpcnMgIT0gKHZvaWQgKikgLTEpCi0tCWZkID0gb3Blbl9wYXRoIChuYW1lLCBuYW1lbGVuLCBtb2RlLCAmcnRsZF9zZWFyY2hfZGlycywKLS0JCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7Ci0tCi0gICAgICAgLyogQWRkIGFub3RoZXIgbmV3bGluZSB3aGVuIHdlIGFyZSB0cmFjaW5nIHRoZSBsaWJyYXJ5IGxvYWRpbmcuICAqLwotICAgICAgIGlmIChfX2dsaWJjX3VubGlrZWx5IChHTFJPKGRsX2RlYnVnX21hc2spICYgRExfREVCVUdfTElCUykpCi0gCV9kbF9kZWJ1Z19wcmludGYgKCJcbiIpOwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1sb2NhbGVkZWYtZml4LXVwcy1oYXJkbGluay10by1tYWtlLWl0LWNvbXBpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIyMmUzNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1sb2NhbGVkZWYtZml4LXVwcy1oYXJkbGluay10by1tYWtlLWl0LWNvbXBpbGUucGF0Y2gKQEAgLTAsMCArMSwyMzggQEAKK0Zyb20gYjUyZGJhMTU1MjczODBjYzE4NjM1ZTM2OTZlMGVmODdlZmVlOWE4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDcgRGVjIDIwMTkgMTA6MDE6MzcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmOiBmaXgtdXBzIGhhcmRsaW5rIHRvIG1ha2UgaXQgY29tcGlsZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgfCA3OSArKysrKysrKysrKy0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jLmggYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCitpbmRleCBkMGE0MDJlOTBlLi4xODA0ZDMxYzczIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2MuaAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAorQEAgLTI0MCw3ICsyNDAsNyBAQCBlcnJtc2coY2hhciBkb2V4aXQsIGludCBleGNvZGUsIGNoYXIgYWRkZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyAvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKKyAgKi8KKyAjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCistCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAorKwlmcHJpbnRmKHN0ZGVyciwgKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAorIAkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAorIAlleGl0KGV2YWwpOyBcCisgfSkKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKK2luZGV4IDYzNjE1ODk2YjAuLjcyNmU2ZGQ5NDggMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworQEAgLTIwLDYgKzIwLDggQEAKKyAgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisgICovCisrCisrI3VuZGVmIEhBVkVfUENSRQorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGdldG9wdC5oPgorQEAgLTM4LDggKzQwLDggQEAKKyAKKyAjaW5jbHVkZSAiYy5oIgorICNpbmNsdWRlICJ4YWxsb2MuaCIKKy0jaW5jbHVkZSAibmxzLmgiCistI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCisrLy8jaW5jbHVkZSAibmxzLmgiCisrLy8jaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKKyAKKyAjZGVmaW5lIE5IQVNIICAgKDE8PDE3KSAgLyogTXVzdCBiZSBhIHBvd2VyIG9mIDIhICovCisgI2RlZmluZSBOQlVGICAgIDY0CitAQCAtMTI0LDMzICsxMjYsMzMgQEAgc3RhdGljIHZvaWQgcHJpbnRfc3VtbWFyeSh2b2lkKQorIAlpZiAoY3RsLT52ZXJib3NlID4gMSAmJiBjdGwtPm5saW5rcykKKyAJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisgCistCXByaW50ZihfKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOworLQlwcmludGYoXygiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKKy0JcHJpbnRmKF8oIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOworLQlwcmludGYoXygiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKKysJcHJpbnRmKCgiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKKysJcHJpbnRmKCgiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKKysJcHJpbnRmKCgiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7CisrCXByaW50ZigoIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7CisgCXByaW50ZiggICIlcyU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KKy0JICAgICAgIF8oIldvdWxkIGxpbms6ICAgICIpIDoKKy0JICAgICAgIF8oIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOworKwkgICAgICAgKCJXb3VsZCBsaW5rOiAgICAiKSA6CisrCSAgICAgICAoIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOworIAlwcmludGYoICAiJXMgJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworLQkgICAgICAgXygiV291bGQgc2F2ZTogICAiKSA6CistCSAgICAgICBfKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOworKwkgICAgICAgKCJXb3VsZCBzYXZlOiAgICIpIDoKKysJICAgICAgICgiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKKyB9CisgCisgc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgdXNhZ2Uodm9pZCkKKyB7CisgCWZwdXRzKFVTQUdFX0hFQURFUiwgc3Rkb3V0KTsKKy0JcHJpbnRmKF8oIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOworKwlwcmludGYoKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKKyAKKyAJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworLQlwdXRzKF8oIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOworKwlwdXRzKCgiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7CisgCisgCWZwdXRzKFVTQUdFX09QVElPTlMsIHN0ZG91dCk7CistCXB1dHMoXygiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKKy0JcHV0cyhfKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOworLQlwdXRzKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7CistCXB1dHMoXygiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOworLQlwdXRzKF8oIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKKy0JcHV0cyhfKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7CisrCXB1dHMoKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOworKwlwdXRzKCgiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKKysJcHV0cygoIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7CisrCXB1dHMoKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7CisrCXB1dHMoKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7CisrCXB1dHMoKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7CisgCisgCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKKyAJcHJpbnRmKFVTQUdFX0hFTFBfT1BUSU9OUygxNikpOyAvKiBjaGFyIG9mZnNldCB0byBhbGlnbiBvcHRpb24gZGVzY3JpcHRpb25zICovCitAQCAtMTY0LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDIoc2l6ZV90IGEsIHNpemVfdCBiKQorIAlzaXplX3Qgc3VtID0gYSArIGI7CisgCisgCWlmIChzdW0gPCBhKQorLQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oImludGVnZXIgb3ZlcmZsb3ciKSk7CisrCQllcnJ4KEVYSVRfRkFJTFVSRSwgKCJpbnRlZ2VyIG92ZXJmbG93IikpOworIAlyZXR1cm4gc3VtOworIH0KKyAKK0BAIC0xOTMsNyArMTk1LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJaWYgKHN0LnN0X2RldiAhPSBjdGwtPmRldiAmJiAhY3RsLT5mb3JjZSkgeworIAkJaWYgKGN0bC0+ZGV2KQorIAkJCWVycngoRVhJVF9GQUlMVVJFLAorLQkJCSAgICAgXygiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCisrCQkJICAgICAoIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgorIAkJCSAgICAgICAiKHVzZSAtZiBvcHRpb24gdG8gb3ZlcnJpZGUpLiIpLCBuYW1lKTsKKyAJCWN0bC0+ZGV2ID0gc3Quc3RfZGV2OworIAl9CitAQCAtMjg3LDkgKzI4OSw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7CisgCisgCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQorLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7CisrCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIG5hbWUpOworIAkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKKy0JCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7CisrCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7CisgCisgCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7CisgCQkJCQkJY2xvc2UoZmQpOworQEAgLTMwMywxMyArMzA1LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCQkJCWlmIChmc2l6ZSA+IDApCisgCQkJCQljb250aW51ZTsKKyAJCQkJaWYgKGxzdGF0KG5hbWUsICZzdDMpKSB7CistCQkJCQl3YXJuKF8oImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOworKwkJCQkJd2FybigoImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOworIAkJCQkJY2xvc2UoZmQpOworIAkJCQkJcmV0dXJuOworIAkJCQl9CisgCQkJCXN0My5zdF9hdGltZSA9IHN0LnN0X2F0aW1lOworIAkJCQlpZiAoc3RjbXAoJnN0LCAmc3QzLCAwKSkgeworLQkJCQkJd2FybngoXygiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7CisrCQkJCQl3YXJueCgoImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOworIAkJCQkJY2xvc2UoZmQpOworIAkJCQkJcmV0dXJuOworIAkJCQl9CitAQCAtMzI5LDE4ICszMzEsMTggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJCSAgICAgICBzdWZmaXhsZW4gKyAxKTsKKyAJCQkJCS8qIEZpcnN0IGNyZWF0ZSBhIHRlbXBvcmFyeSBsaW5rIHRvIG4xIHVuZGVyIGEgbmV3IG5hbWUgKi8KKyAJCQkJCWlmIChsaW5rKG4xLCBuYW0yLmJ1ZikpIHsKKy0JCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKKysJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAorIAkJCQkJCQluMSwgbjIsIG5hbTIuYnVmKTsKKyAJCQkJCQlmcmVlKG5hbTIuYnVmKTsKKyAJCQkJCQljb250aW51ZTsKKyAJCQkJCX0KKyAJCQkJCS8qIFRoZW4gcmVuYW1lIGludG8gcGxhY2Ugb3ZlciB0aGUgZXhpc3RpbmcgbjIgKi8KKyAJCQkJCWlmIChyZW5hbWUobmFtMi5idWYsIG4yKSkgeworLQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAorKwkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCisgCQkJCQkJCW4xLCBuMiwgbjIpOworIAkJCQkJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCB0cnkgdG8gcmVtb3ZlIHRoZSBub3cgcmVkdW5kYW50IHRlbXBvcmFyeSBsaW5rICovCisgCQkJCQkJaWYgKHVubGluayhuYW0yLmJ1ZikpCistCQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7CisrCQkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKKyAJCQkJCQlmcmVlKG5hbTIuYnVmKTsKKyAJCQkJCQljb250aW51ZTsKKyAJCQkJCX0KK0BAIC0zNTEsMTYgKzM1MywxNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50CisgCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KKyAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAorLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAorKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlc1xuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIldvdWxkIGxpbmsiKSA6ICgiTGlua2VkIikpLAorIAkJCQkJCQluMSwgbjIpOworIAkJCQl9IGVsc2UgeworIAkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7CisgCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKKy0JCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAorLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAorKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCisgCQkJCQkJCW4xLCBuMiwKKy0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJ3b3VsZCBzYXZlIikgOiAoInNhdmVkIikpLAorIAkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7CisgCQkJCX0KKyAJCQkJY2xvc2UoZmQpOworQEAgLTQxMCwxMSArNDEyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJeyBOVUxMLCAwLCBOVUxMLCAwIH0sCisgCX07CisgCistCXNldGxvY2FsZShMQ19BTEwsICIiKTsKKy0JYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKKy0JdGV4dGRvbWFpbihQQUNLQUdFKTsKKy0JY2xvc2Vfc3Rkb3V0X2F0ZXhpdCgpOworLQorIAl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImNudmZ4OlZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgeworIAkJc3dpdGNoIChjaCkgeworIAkJY2FzZSAnbic6CitAQCAtNDM0LDcgKzQzMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOworICNlbHNlCisgCQkJZXJyeChFWElUX0ZBSUxVUkUsCistCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOworKwkJCSAgICAgKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOworICNlbmRpZgorIAkJCWJyZWFrOworIAkJY2FzZSAnVic6CitAQCAtNDQ3LDcgKzQ0NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJfQorIAorIAlpZiAob3B0aW5kID09IGFyZ2MpIHsKKy0JCXdhcm54KF8oIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7CisrCQl3YXJueCgoIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7CisgCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7CisgCX0KKyAKK0BAIC00NjEsNyArNDU4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOworIAkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCisgCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOworLQkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKKysJCQllcnJ4KEVYSVRfRkFJTFVSRSwgKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKKyAJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKKyAJCX0KKyAJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOworQEAgLTUwNiw3ICs1MDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJICAgID49MCkgeworIAkJCQlpZiAoY3RsLT52ZXJib3NlKSB7CisgCQkJCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOworLQkJCQkJcHJpbnRmKF8oIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7CisrCQkJCQlwcmludGYoKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOworIAkJCQl9CisgCQkJCWNvbnRpbnVlOworIAkJCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNTMxMDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIGI5MWMzMjNkODA5MDM5YmY5YjhjNDQ1NDE4NTc5YThiNWZlNjFhZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MDowMCArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzI4XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCi0gU0RLCi0KLVdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKLW9yaWdpbmFsIGZpeGVkIGxvY2F0aW9uLCB0aGUgZHluYW1pYyBsb2FkZXIgd2lsbCBjcmFzaCBpbiBvcGVuX3BhdGgKLWJlY2F1c2UgaXQgaW1wbGljaXRseSBhc3N1bWVzIHRoYXQgbWF4X2Rpcm5hbWVsZW4gaXMgYSBmaXhlZCBzaXplIHRoYXQKLW5ldmVyIGNoYW5nZXMuCi0KLVRoZSBhbGxvY2F0ZWQgYnVmZmVyIHdpbGwgbm90IGJlIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBkaXJlY3RvcnkKLXBhdGggc3RyaW5nIHdoaWNoIGlzIGxhcmdlciB0aGFuIHRoZSBmaXhlZCBsb2NhdGlvbiBwcm92aWRlZCBhdCBidWlsZAotdGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTREsgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL2RsLWxvYWQuYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggOTgxYmQ1YjRhZi4uYzdhMGZhNThjYiAxMDA2NDQKLS0tLSBhL2VsZi9kbC1sb2FkLmMKLSsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0xNzgwLDcgKzE3ODAsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCi0gICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCi0gICAgIHJldHVybiAtMTsKLSAKLSsgIGRvCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOwotKyAgICAgIGlmICh0aGlzX2Rpci0+ZGlybmFtZWxlbiA+IG1heF9kaXJuYW1lbGVuKQotKwl7Ci0rCSAgbWF4X2Rpcm5hbWVsZW4gPSB0aGlzX2Rpci0+ZGlybmFtZWxlbjsKLSsJfQotKyAgICB9Ci0rICB3aGlsZSAoKisrZGlycyAhPSBOVUxMKTsKLSsKLSAgIGJ1ZiA9IGFsbG9jYSAobWF4X2Rpcm5hbWVsZW4gKyBtYXhfY2Fwc3RybGVuICsgbmFtZWxlbik7Ci0rCi0rICBkaXJzID0gc3BzLT5kaXJzOwotICAgZG8KLSAgICAgewotICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZGM4MzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIDY5ODdhZDE4Mzc3MGNiNTY2ODBjY2M0ZjZlYTA2NWEwNGYzMWNjYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo0ODoyNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzIHdlbGwKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworVGhlIGRlZmF1bHQgbGliIHNlYXJjaCBwYXRoIG9yZGVyIGlzOgorCisgIDEpIExEX0xJQlJBUllfUEFUSAorICAyKSBSUEFUSCBmcm9tIHRoZSBiaW5hcnkKKyAgMykgbGQuc28uY2FjaGUKKyAgNCkgZGVmYXVsdCBzZWFyY2ggcGF0aHMgZW1iZWRkZWQgaW4gdGhlIGxpbmtlcgorCitGb3IgbmF0aXZlc2RrIGJpbmFyaWVzIHdoaWNoIGFyZSBiZWluZyB1c2VkIGFsb25nc2lkZSBiaW5hcmllcyBvbiBhIGhvc3Qgc3lzdGVtLCB3ZQorbmVlZCB0aGUgc2VhcmNoIHBhdGhzIHRvIGZpcnN0bHkgc2VhcmNoIHRoZSBzaGlwcGVkIG5hdGl2ZXNkayBsaWJzIGJ1dCB0aGVuIGFsc28KK2NvdmVyIHRoZSBob3N0IHN5c3RlbS4gRm9yIGV4YW1wbGUgd2Ugd2FudCB0aGUgaG9zdCBzeXN0ZW0ncyBsaWJHTCBhbmQgdGhpcyBtYXkgYmUKK2luIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uIGxpa2UgL3Vzci9saWIvbWVzYS4gVGhlIG9ubHkgcGxhY2UgdGhlIGxvY2F0aW9uIGlzIGtub3cKK2Fib3V0IGlzIGluIHRoZSBsZC5zby5jYWNoZSBvZiB0aGUgaG9zdCBzeXN0ZW0uCisKK1NpbmNlIG5hdGl2ZXNkayBoYXMgYSBzaW1wbGUgc3RydWN0dXJlIGFuZCBkb2Vzbid0IG5lZWQgdG8gdXNlIGEgY2FjaGUgaXRzZWxmLCB3ZQorcmVwdXJwb3NlIHRoZSBjYWNoZSBmb3IgdXNlIGFzIGEgbGFzdCByZXNvcnQgaW4gZmluZGluZyBob3N0IHN5c3RlbSBiaW5hcmllcy4gVGhpcworbWVhbnMgd2UgbmVlZCB0byBzd2l0Y2ggdGhlIG9yZGVyIG9mIDMgYW5kIDQgYWJvdmUgdG8gbWFrZSB0aGlzIHdvcmsgZWZmZWN0aXZlbHkuCisKK1JQIDE0LzEwLzIwMTAKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9kbC1sb2FkLmMgfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCitpbmRleCBhNmI4MGY5Mzk1Li4zMjI2ZjJlNTMxIDEwMDY0NAorLS0tIGEvZWxmL2RsLWxvYWQuYworKysrIGIvZWxmL2RsLWxvYWQuYworQEAgLTIwNzMsNiArMjA3MywxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorIAorKyAgICAgIC8qIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KKysgICAgICBpZiAoZmQgPT0gLTEKKysJICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKKysJICAgfHwgX19idWlsdGluX2V4cGVjdCAoIShsLT5sX2ZsYWdzXzEgJiBERl8xX05PREVGTElCKSwgMSkpCisrCSAmJiBydGxkX3NlYXJjaF9kaXJzLmRpcnMgIT0gKHZvaWQgKikgLTEpCisrCWZkID0gb3Blbl9wYXRoIChuYW1lLCBuYW1lbGVuLCBtb2RlICYgX19SVExEX1NFQ1VSRSwgJnJ0bGRfc2VhcmNoX2RpcnMsCisrCQkJJnJlYWxuYW1lLCAmZmIsIGwsIExBX1NFUl9ERUZBVUxULCAmZm91bmRfb3RoZXJfY2xhc3MpOworKyAgICAgIC8qIEZpbmFsbHkgdHJ5IGxkLnNvLmNhY2hlICovCisgI2lmZGVmIFVTRV9MRENPTkZJRworICAgICAgIGlmIChmZCA9PSAtMQorIAkgICYmIChfX2dsaWJjX2xpa2VseSAoKG1vZGUgJiBfX1JUTERfU0VDVVJFKSA9PSAwKQorQEAgLTIxMzEsMTQgKzIxMzksNiBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCisgCX0KKyAjZW5kaWYKKyAKKy0gICAgICAvKiBGaW5hbGx5LCB0cnkgdGhlIGRlZmF1bHQgcGF0aC4gICovCistICAgICAgaWYgKGZkID09IC0xCistCSAgJiYgKChsID0gbG9hZGVyID86IEdMKGRsX25zKVtuc2lkXS5fbnNfbG9hZGVkKSA9PSBOVUxMCistCSAgICAgIHx8IF9fZ2xpYmNfbGlrZWx5ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpKSkKKy0JICAmJiBydGxkX3NlYXJjaF9kaXJzLmRpcnMgIT0gKHZvaWQgKikgLTEpCistCWZkID0gb3Blbl9wYXRoIChuYW1lLCBuYW1lbGVuLCBtb2RlLCAmcnRsZF9zZWFyY2hfZGlycywKKy0JCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7CistCisgICAgICAgLyogQWRkIGFub3RoZXIgbmV3bGluZSB3aGVuIHdlIGFyZSB0cmFjaW5nIHRoZSBsaWJyYXJ5IGxvYWRpbmcuICAqLworICAgICAgIGlmIChfX2dsaWJjX3VubGlrZWx5IChHTFJPKGRsX2RlYnVnX21hc2spICYgRExfREVCVUdfTElCUykpCisgCV9kbF9kZWJ1Z19wcmludGYgKCJcbiIpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhmNWE3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1Gcm9tIDNhY2ViODRlMmJjMGY3OTYyMDRmZTA1OWJlZWRlOTExNzliMWJjNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzI4XSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsCi0gcGF0aHMKLQotVGhpcyBwYXRjaCBwdXRzIHRoZSBkeW5hbWljIGxvYWRlciBwYXRoIGluIHRoZSBiaW5hcmllcywgU1lTVEVNX0RJUlMgc3RyaW5ncwotYW5kIGxlbmd0aHMgYXMgd2VsbCBhcyBsZC5zby5jYWNoZSBwYXRoIGluIHRoZSBkeW5hbWljIGxvYWRlciB0byBzcGVjaWZpYwotc2VjdGlvbnMgaW4gbWVtb3J5LiBUaGUgc2VjdGlvbnMgdGhhdCBjb250YWluIHBhdGhzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgYSA0MDk2Ci1ieXRlIHNlY3Rpb24sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBhdGggbGVuZ3RoIGluIGxpbnV4LiBUaGlzIHdpbGwgYWxsb3cgdGhlCi1yZWxvY2F0aW5nIHNjcmlwdCB0byBwYXJzZSB0aGUgRUxGIGJpbmFyeSwgZGV0ZWN0IHRoZSBzZWN0aW9uIGFuZCBlYXNpbHkgcmVwbGFjZQotdGhlIHN0cmluZ3MgaW4gYSBjZXJ0YWluIHBhdGguCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU0RLIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL2RsLWNhY2hlLmMgICAgICAgICAgICAgfCA0ICsrKysKLSBlbGYvZGwtbG9hZC5jICAgICAgICAgICAgICB8IDQgKystLQotIGVsZi9pbnRlcnAuYyAgICAgICAgICAgICAgIHwgMiArLQotIGVsZi9sZGNvbmZpZy5jICAgICAgICAgICAgIHwgMyArKysKLSBlbGYvcnRsZC5jICAgICAgICAgICAgICAgICB8IDUgKysrLS0KLSBpY29udi9nY29udl9jb25mLmMgICAgICAgICB8IDIgKy0KLSBzeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCB8IDQgLS0tLQotIDcgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtY2FjaGUuYyBiL2VsZi9kbC1jYWNoZS5jCi1pbmRleCBkOGQxZTIzNDRlLi5kMjI0N2JmYzRmIDEwMDY0NAotLS0tIGEvZWxmL2RsLWNhY2hlLmMKLSsrKyBiL2VsZi9kbC1jYWNoZS5jCi1AQCAtMTMzLDYgKzEzMywxMCBAQCBkbwkJCQkJCQkJCSAgICAgIFwKLSB3aGlsZSAoMCkKLSAKLSAKLStjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSkgPQotKwkJU1lTQ09ORkRJUiAiL2xkLnNvLmNhY2hlIjsKLSsKLSsKLSBpbnQKLSBfZGxfY2FjaGVfbGliY21wIChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIpCi0gewotZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCBjN2EwZmE1OGNiLi40Yjg3NTA1ZDQ1IDEwMDY0NAotLS0tIGEvZWxmL2RsLWxvYWQuYwotKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOwotICAgIGdlbi10cnVzdGVkLWRpcnMuYXdrLiAgKi8KLSAjaW5jbHVkZSAidHJ1c3RlZC1kaXJzLmgiCi0gCi0tc3RhdGljIGNvbnN0IGNoYXIgc3lzdGVtX2RpcnNbXSA9IFNZU1RFTV9ESVJTOwotLXN0YXRpYyBjb25zdCBzaXplX3Qgc3lzdGVtX2RpcnNfbGVuW10gPQotK3N0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnN5c2RpcnMiKSkpID0gU1lTVEVNX0RJUlM7Ci0rdm9sYXRpbGUgc3RhdGljIGNvbnN0IHNpemVfdCBzeXN0ZW1fZGlyc19sZW5bXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5zeXNkaXJzbGVuIikpKSA9Ci0gewotICAgU1lTVEVNX0RJUlNfTEVOCi0gfTsKLWRpZmYgLS1naXQgYS9lbGYvaW50ZXJwLmMgYi9lbGYvaW50ZXJwLmMKLWluZGV4IDI0MzgyOWY1ZjcuLjBlNzQyNDE3MDMgMTAwNjQ0Ci0tLS0gYS9lbGYvaW50ZXJwLmMKLSsrKyBiL2VsZi9pbnRlcnAuYwotQEAgLTE4LDUgKzE4LDUgQEAKLSAKLSAjaW5jbHVkZSA8cnVudGltZS1saW5rZXIuaD4KLSAKLS1jb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCi0rY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKLSAgID0gUlVOVElNRV9MSU5LRVI7Ci1kaWZmIC0tZ2l0IGEvZWxmL2xkY29uZmlnLmMgYi9lbGYvbGRjb25maWcuYwotaW5kZXggM2JjOWU2MTg5MS4uNmEyMzA5NjQzNSAxMDA2NDQKLS0tLSBhL2VsZi9sZGNvbmZpZy5jCi0rKysgYi9lbGYvbGRjb25maWcuYwotQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9Ci0gICBvcHRpb25zLCBwYXJzZV9vcHQsIE5VTEwsIGRvYywgTlVMTCwgbW9yZV9oZWxwLCBOVUxMCi0gfTsKLSAKLSsKLStleHRlcm4gY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpOwotKwotIC8qIENoZWNrIGlmIHN0cmluZyBjb3JyZXNwb25kcyB0byBhbiBpbXBvcnRhbnQgaGFyZHdhcmUgY2FwYWJpbGl0eSBvcgotICAgIGEgcGxhdGZvcm0uICAqLwotIHN0YXRpYyBpbnQKLWRpZmYgLS1naXQgYS9lbGYvcnRsZC5jIGIvZWxmL3J0bGQuYwotaW5kZXggYzk0OTBmZjY5NC4uMzk2MjM3M2ViYiAxMDA2NDQKLS0tLSBhL2VsZi9ydGxkLmMKLSsrKyBiL2VsZi9ydGxkLmMKLUBAIC0xNzMsNiArMTczLDcgQEAgZHNvX25hbWVfdmFsaWRfZm9yX3N1aWQgKGNvbnN0IGNoYXIgKnApCi0gICAgIH0KLSAgIHJldHVybiAqcCAhPSAnXDAnOwotIH0KLStleHRlcm4gY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpOwotIAotIC8qIExEX0FVRElUIHZhcmlhYmxlIGNvbnRlbnRzLiAgTXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZQotICAgIGF1ZGl0X2xpc3QgYmVsb3cuICAqLwotQEAgLTEyMjAsMTMgKzEyMjEsMTMgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCi0gICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKLSAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCi0gCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKLS0gIC0taW5oaWJpdC1jYWNoZSAgICAgICBEbyBub3QgdXNlICIgTERfU09fQ0FDSEUgIlxuXAotKyAgLS1pbmhpYml0LWNhY2hlICAgICAgIERvIG5vdCB1c2UgJXNcblwKLSAgIC0tbGlicmFyeS1wYXRoIFBBVEggICB1c2UgZ2l2ZW4gUEFUSCBpbnN0ZWFkIG9mIGNvbnRlbnQgb2YgdGhlIGVudmlyb25tZW50XG5cCi0gCQkJdmFyaWFibGUgTERfTElCUkFSWV9QQVRIXG5cCi0gICAtLWluaGliaXQtcnBhdGggTElTVCAgaWdub3JlIFJVTlBBVEggYW5kIFJQQVRIIGluZm9ybWF0aW9uIGluIG9iamVjdCBuYW1lc1xuXAotIAkJCWluIExJU1RcblwKLSAgIC0tYXVkaXQgTElTVCAgICAgICAgICB1c2Ugb2JqZWN0cyBuYW1lZCBpbiBMSVNUIGFzIGF1ZGl0b3JzXG5cCi0tICAtLXByZWxvYWQgTElTVCAgICAgICAgcHJlbG9hZCBvYmplY3RzIG5hbWVkIGluIExJU1RcbiIpOwotKyAgLS1wcmVsb2FkIExJU1QgICAgICAgIHByZWxvYWQgb2JqZWN0cyBuYW1lZCBpbiBMSVNUXG4iLCBMRF9TT19DQUNIRSk7Ci0gCi0gICAgICAgKytfZGxfc2tpcF9hcmdzOwotICAgICAgIC0tX2RsX2FyZ2M7Ci1kaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1pbmRleCBhZTg5MzdjYmEwLi5mMzIxZWU0MTllIDEwMDY0NAotLS0tIGEvaWNvbnYvZ2NvbnZfY29uZi5jCi0rKysgYi9pY29udi9nY29udl9jb25mLmMKLUBAIC0zNiw3ICszNiw3IEBACi0gCi0gCi0gLyogVGhpcyBpcyB0aGUgZGVmYXVsdCBwYXRoIHdoZXJlIHdlIGxvb2sgZm9yIG1vZHVsZSBsaXN0cy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdF9nY29udl9wYXRoW10gPSBHQ09OVl9QQVRIOwotK3N0YXRpYyBjaGFyIGRlZmF1bHRfZ2NvbnZfcGF0aFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ09OVl9QQVRIOwotIAotIC8qIFR5cGUgdG8gcmVwcmVzZW50IHNlYXJjaCBwYXRoLiAgKi8KLSBzdHJ1Y3QgcGF0aF9lbGVtCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAotaW5kZXggYmM4YjQwMzMxZC4uYjBmZGQyMTQ0YiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi0rKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAotQEAgLTI3LDEwICsyNyw2IEBACi0gICAoKGZsYWdzKSA9PSAxIHx8IChmbGFncykgPT0gX0RMX0NBQ0hFX0RFRkFVTFRfSUQpCi0gI2VuZGlmCi0gCi0tI2lmbmRlZiBMRF9TT19DQUNIRQotLSMgZGVmaW5lIExEX1NPX0NBQ0hFIFNZU0NPTkZESVIgIi9sZC5zby5jYWNoZSIKLS0jZW5kaWYKLS0KLSAjaWZuZGVmIGFkZF9zeXN0ZW1fZGlyCi0gIyBkZWZpbmUgYWRkX3N5c3RlbV9kaXIoZGlyKSBhZGRfZGlyIChkaXIpCi0gI2VuZGlmCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0M2YyOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBlNDFlMDQyMTQ5ZWFjMzQ5ZTA5ZmE2MjlmY2FjNGM2NGU1NzQzMjJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzU6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yOF0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2Ci0KLVRoZSBmaXggY29uc2lzdCBvZiBhbGxvd2luZyA2NGJpdCBhdG9taWMgb3BzIGZvciB4ODYuCi1UaGlzIHNob3VsZCBiZSBzYWZlIGZvciBpNTg2IGFuZCBuZXdlciBDUFVzLgotSXQgYWxzbyBtYWtlcyB0aGUgc3luY2hyb25pemF0aW9uIG1vcmUgZWZmaWNpZW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaCB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaCBiL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKLWluZGV4IGFhNjBjYTRjZDYuLjNlNDJlMDAxODMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCi0rKysgYi9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCi1AQCAtNTgsMTUgKzU4LDE0IEBAIHR5cGVkZWYgdWludG1heF90IHVhdG9taWNfbWF4X3Q7Ci0gI2VuZGlmCi0gCi0gI2RlZmluZSBVU0VfQVRPTUlDX0NPTVBJTEVSX0JVSUxUSU5TCTEKLSsjIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTEKLSAKLSAjaWZkZWYgX194ODZfNjRfXwotLSMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMQotICMgZGVmaW5lIFNQX1JFRwkJCQkicnNwIgotICMgZGVmaW5lIFNFR19SRUcJCQkiZnMiCi0gIyBkZWZpbmUgQlJfQ09OU1RSQUlOVAkJCSJxIgotICMgZGVmaW5lIElCUl9DT05TVFJBSU5UCQkJImlxIgotICNlbHNlCi0tIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkwCi0gIyBkZWZpbmUgU1BfUkVHCQkJCSJlc3AiCi0gIyBkZWZpbmUgU0VHX1JFRwkJCSJncyIKLSAjIGRlZmluZSBCUl9DT05TVFJBSU5UCQkJInIiCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZTEyODkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDc4MDYzNDBjMmFjY2MyYzUxZTdlODYxYjYxOGMyOWZiNTYwOWEwMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MDowMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkIFNESworCitXaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCitvcmlnaW5hbCBmaXhlZCBsb2NhdGlvbiwgdGhlIGR5bmFtaWMgbG9hZGVyIHdpbGwgY3Jhc2ggaW4gb3Blbl9wYXRoCitiZWNhdXNlIGl0IGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IG1heF9kaXJuYW1lbGVuIGlzIGEgZml4ZWQgc2l6ZSB0aGF0CituZXZlciBjaGFuZ2VzLgorCitUaGUgYWxsb2NhdGVkIGJ1ZmZlciB3aWxsIG5vdCBiZSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgZGlyZWN0b3J5CitwYXRoIHN0cmluZyB3aGljaCBpcyBsYXJnZXIgdGhhbiB0aGUgZml4ZWQgbG9jYXRpb24gcHJvdmlkZWQgYXQgYnVpbGQKK3RpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU0RLIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9kbC1sb2FkLmMgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKK2luZGV4IDMyMjZmMmU1MzEuLjdjYjhhODZmYWIgMTAwNjQ0CistLS0gYS9lbGYvZGwtbG9hZC5jCisrKysgYi9lbGYvZGwtbG9hZC5jCitAQCAtMTc3Myw3ICsxNzczLDE5IEBAIG9wZW5fcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGludCBtb2RlLAorICAgICAgICBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIHdoZW4gcnRsZCBpcyBydW4gZGlyZWN0bHkuICAqLworICAgICByZXR1cm4gLTE7CisgCisrICBkbworKyAgICB7CisrICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKKysgICAgICBpZiAodGhpc19kaXItPmRpcm5hbWVsZW4gPiBtYXhfZGlybmFtZWxlbikKKysJeworKwkgIG1heF9kaXJuYW1lbGVuID0gdGhpc19kaXItPmRpcm5hbWVsZW47CisrCX0KKysgICAgfQorKyAgd2hpbGUgKCorK2RpcnMgIT0gTlVMTCk7CisrCisgICBidWYgPSBhbGxvY2EgKG1heF9kaXJuYW1lbGVuICsgbWF4X2NhcHN0cmxlbiArIG5hbWVsZW4pOworKworKyAgZGlycyA9IHNwcy0+ZGlyczsKKyAgIGRvCisgICAgIHsKKyAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FhZDYwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gNTBhYjBiMGMxMTZmNGFlM2Q5NzVlYzFiMTVlZDQ1OTVmZDkxNDdmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NTU6MTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yOF0gbmF0aXZlc2RrLWdsaWJjOiBNYWtlIHJlbG9jYXRhYmxlIGluc3RhbGwgZm9yIGxvY2FsZXMKLQotVGhlIGdsaWJjIGxvY2FsZSBwYXRoIGlzIGhhcmQtY29kZWQgdG8gdGhlIGluc3RhbGwgcHJlZml4LCBidXQgaW4gU0RLcyB3ZSBuZWVkCi10byBiZSBhYmxlIHRvIHJlbG9jYXRlIHRoZSBiaW5hcmllcy4gIEV4cGFuZCB0aGUgc3RyaW5ncyB0byA0SyBhbmQgcHV0IHRoZW0gaW4gYQotbWFnaWMgc2VnbWVudCB0aGF0IHdlIGNhbiByZWxvY2F0ZSBhdCBpbnN0YWxsIHRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbG9jYWxlL2ZpbmRsb2NhbGUuYyAgfCA0ICsrLS0KLSBsb2NhbGUvbG9hZGFyY2hpdmUuYyB8IDIgKy0KLSBsb2NhbGUvbG9jYWxlaW5mby5oICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9maW5kbG9jYWxlLmMgYi9sb2NhbGUvZmluZGxvY2FsZS5jCi1pbmRleCA5YWY2MDViZDY0Li5iMmIwYTNmOTNiIDEwMDY0NAotLS0tIGEvbG9jYWxlL2ZpbmRsb2NhbGUuYwotKysrIGIvbG9jYWxlL2ZpbmRsb2NhbGUuYwotQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IF9fbG9jYWxlX2RhdGEgKmNvbnN0IF9ubF9DW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0gICAgd2hpY2ggYXJlIHNvbWVob3cgYWRkcmVzc2VkLiAgKi8KLSBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfbG9jYWxlX2ZpbGVfbGlzdFtfX0xDX0xBU1RdOwotIAotLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuID0gQ09NUExPQ0FMRURJUjsKLStjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW4gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUjsKLSAKLSAvKiBDaGVja3MgaWYgdGhlIG5hbWUgaXMgYWN0dWFsbHkgcHJlc2VudCwgdGhhdCBpcywgbm90IE5VTEwgYW5kIG5vdAotICAgIGVtcHR5LiAgKi8KLUBAIC0xNjcsNyArMTY3LDcgQEAgX25sX2ZpbmRfbG9jYWxlIChjb25zdCBjaGFyICpsb2NhbGVfcGF0aCwgc2l6ZV90IGxvY2FsZV9wYXRoX2xlbiwKLSAKLSAgICAgICAvKiBOb3RoaW5nIGluIHRoZSBhcmNoaXZlLiAgU2V0IHRoZSBkZWZhdWx0IHBhdGggdG8gc2VhcmNoIGJlbG93LiAgKi8KLSAgICAgICBsb2NhbGVfcGF0aCA9IF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOwotLSAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHNpemVvZiBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKLSsgICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzdHJsZW4obG9jYWxlX3BhdGgpICsgMTsKLSAgICAgfQotICAgZWxzZQotICAgICAvKiBXZSByZWFsbHkgaGF2ZSB0byBsb2FkIHNvbWUgZGF0YS4gIEZpcnN0IHNlZSB3aGV0aGVyIHRoZSBuYW1lIGlzCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMgYi9sb2NhbGUvbG9hZGFyY2hpdmUuYwotaW5kZXggODAzYzFjZjJhNC4uOTAyM2Y0NzViOCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi0rKysgYi9sb2NhbGUvbG9hZGFyY2hpdmUuYwotQEAgLTQyLDcgKzQyLDcgQEAKLSAKLSAKLSAvKiBOYW1lIG9mIHRoZSBsb2NhbGUgYXJjaGl2ZSBmaWxlLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbXSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7Ci0rc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7Ci0gCi0gLyogU2l6ZSBvZiBpbml0aWFsIG1hcHBpbmcgd2luZG93LCBvcHRpbWFsIGlmIGxhcmdlIGVub3VnaCB0bwotICAgIGNvdmVyIHRoZSBoZWFkZXIgcGx1cyB0aGUgaW5pdGlhbCBsb2NhbGUuICAqLwotZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1pbmRleCA3YzFjYzNlZWNiLi41M2NiOGJmYzU5IDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAotKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotQEAgLTMyNSw3ICszMjUsNyBAQCBfbmxfbG9va3VwX3dvcmQgKGxvY2FsZV90IGwsIGludCBjYXRlZ29yeSwgaW50IGl0ZW0pCi0gfQotIAotIC8qIERlZmF1bHQgc2VhcmNoIHBhdGggaWYgbm8gTE9DUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuOwotK2V4dGVybiBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW47Ci0gCi0gLyogTG9hZCB0aGUgbG9jYWxlIGRhdGEgZm9yIENBVEVHT1JZIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpOQU1FLgotICAgIElmICpOQU1FIGlzICIiLCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIHNwZWNpZmllZCBieSBQT1NJWCwgYW5kCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NGMyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSAxYjk3YmVmYmU2OTNlYjkzYTc3YjYwOThmNmFlMTM5NGE1MzQ2MmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTE6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbCBwYXRocworCitUaGlzIHBhdGNoIHB1dHMgdGhlIGR5bmFtaWMgbG9hZGVyIHBhdGggaW4gdGhlIGJpbmFyaWVzLCBTWVNURU1fRElSUyBzdHJpbmdzCithbmQgbGVuZ3RocyBhcyB3ZWxsIGFzIGxkLnNvLmNhY2hlIHBhdGggaW4gdGhlIGR5bmFtaWMgbG9hZGVyIHRvIHNwZWNpZmljCitzZWN0aW9ucyBpbiBtZW1vcnkuIFRoZSBzZWN0aW9ucyB0aGF0IGNvbnRhaW4gcGF0aHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhIDQwOTYKK2J5dGUgc2VjdGlvbiwgd2hpY2ggaXMgdGhlIG1heGltdW0gcGF0aCBsZW5ndGggaW4gbGludXguIFRoaXMgd2lsbCBhbGxvdyB0aGUKK3JlbG9jYXRpbmcgc2NyaXB0IHRvIHBhcnNlIHRoZSBFTEYgYmluYXJ5LCBkZXRlY3QgdGhlIHNlY3Rpb24gYW5kIGVhc2lseSByZXBsYWNlCit0aGUgc3RyaW5ncyBpbiBhIGNlcnRhaW4gcGF0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTREsgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlbGYvZGwtY2FjaGUuYyAgICAgICAgICAgICB8IDQgKysrKworIGVsZi9kbC1sb2FkLmMgICAgICAgICAgICAgIHwgNCArKy0tCisgZWxmL2ludGVycC5jICAgICAgICAgICAgICAgfCAyICstCisgZWxmL2xkY29uZmlnLmMgICAgICAgICAgICAgfCAzICsrKworIGVsZi9ydGxkLmMgICAgICAgICAgICAgICAgIHwgNSArKystLQorIGljb252L2djb252X2NvbmYuYyAgICAgICAgIHwgMiArLQorIHN5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIHwgNCAtLS0tCisgNyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2VsZi9kbC1jYWNoZS5jIGIvZWxmL2RsLWNhY2hlLmMKK2luZGV4IDNlZWRkOWFmY2YuLmVmZGZlNWNhZTcgMTAwNjQ0CistLS0gYS9lbGYvZGwtY2FjaGUuYworKysrIGIvZWxmL2RsLWNhY2hlLmMKK0BAIC0xMzMsNiArMTMzLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXAorIHdoaWxlICgwKQorIAorIAorK2NvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKSA9CisrCQlTWVNDT05GRElSICIvbGQuc28uY2FjaGUiOworKworKworIGludAorIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKKyB7CitkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKK2luZGV4IDdjYjhhODZmYWIuLmUzMmQ0YWE5MzYgMTAwNjQ0CistLS0gYS9lbGYvZGwtbG9hZC5jCisrKysgYi9lbGYvZGwtbG9hZC5jCitAQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CisgICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLworICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKKyAKKy1zdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1tdID0gU1lTVEVNX0RJUlM7Cistc3RhdGljIGNvbnN0IHNpemVfdCBzeXN0ZW1fZGlyc19sZW5bXSA9Cisrc3RhdGljIGNvbnN0IGNoYXIgc3lzdGVtX2RpcnNbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlycyIpKSkgPSBTWVNURU1fRElSUzsKKyt2b2xhdGlsZSBzdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnN5c2RpcnNsZW4iKSkpID0KKyB7CisgICBTWVNURU1fRElSU19MRU4KKyB9OworZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYworaW5kZXggMzMxY2MxZGY0OC4uODg1YjJkOTQ3NiAxMDA2NDQKKy0tLSBhL2VsZi9pbnRlcnAuYworKysrIGIvZWxmL2ludGVycC5jCitAQCAtMTgsNSArMTgsNSBAQAorIAorICNpbmNsdWRlIDxydW50aW1lLWxpbmtlci5oPgorIAorLWNvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1tdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKKytjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQorICAgPSBSVU5USU1FX0xJTktFUjsKK2RpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCitpbmRleCA2ODFlZDc4NDk2Li44ODMzZWQwYTZiIDEwMDY0NAorLS0tIGEvZWxmL2xkY29uZmlnLmMKKysrKyBiL2VsZi9sZGNvbmZpZy5jCitAQCAtMTY4LDYgKzE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncCBhcmdwID0KKyAgIG9wdGlvbnMsIHBhcnNlX29wdCwgTlVMTCwgZG9jLCBOVUxMLCBtb3JlX2hlbHAsIE5VTEwKKyB9OworIAorKworK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7CisrCisgLyogQ2hlY2sgaWYgc3RyaW5nIGNvcnJlc3BvbmRzIHRvIGFuIGltcG9ydGFudCBoYXJkd2FyZSBjYXBhYmlsaXR5IG9yCisgICAgYSBwbGF0Zm9ybS4gICovCisgc3RhdGljIGludAorZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCitpbmRleCA1NTNjZmJkMWI3Li4zOTM0N2MyYzAzIDEwMDY0NAorLS0tIGEvZWxmL3J0bGQuYworKysrIGIvZWxmL3J0bGQuYworQEAgLTE3NSw2ICsxNzUsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKKyAgICAgfQorICAgcmV0dXJuICpwICE9ICdcMCc7CisgfQorK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7CisgCisgLyogTERfQVVESVQgdmFyaWFibGUgY29udGVudHMuICBNdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlCisgICAgYXVkaXRfbGlzdCBiZWxvdy4gICovCitAQCAtMTIyMiwxMyArMTIyMywxMyBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKKyAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAorICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKKyAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXAorLSAgLS1pbmhpYml0LWNhY2hlICAgICAgIERvIG5vdCB1c2UgIiBMRF9TT19DQUNIRSAiXG5cCisrICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAlc1xuXAorICAgLS1saWJyYXJ5LXBhdGggUEFUSCAgIHVzZSBnaXZlbiBQQVRIIGluc3RlYWQgb2YgY29udGVudCBvZiB0aGUgZW52aXJvbm1lbnRcblwKKyAJCQl2YXJpYWJsZSBMRF9MSUJSQVJZX1BBVEhcblwKKyAgIC0taW5oaWJpdC1ycGF0aCBMSVNUICBpZ25vcmUgUlVOUEFUSCBhbmQgUlBBVEggaW5mb3JtYXRpb24gaW4gb2JqZWN0IG5hbWVzXG5cCisgCQkJaW4gTElTVFxuXAorICAgLS1hdWRpdCBMSVNUICAgICAgICAgIHVzZSBvYmplY3RzIG5hbWVkIGluIExJU1QgYXMgYXVkaXRvcnNcblwKKy0gIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIik7CisrICAtLXByZWxvYWQgTElTVCAgICAgICAgcHJlbG9hZCBvYmplY3RzIG5hbWVkIGluIExJU1RcbiIsIExEX1NPX0NBQ0hFKTsKKyAKKyAgICAgICArK19kbF9za2lwX2FyZ3M7CisgICAgICAgLS1fZGxfYXJnYzsKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jb25mLmMgYi9pY29udi9nY29udl9jb25mLmMKK2luZGV4IDczNWJkMWYyZDUuLjI1MTAwYmE2NjYgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jb25mLmMKKysrKyBiL2ljb252L2djb252X2NvbmYuYworQEAgLTM2LDcgKzM2LDcgQEAKKyAKKyAKKyAvKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHBhdGggd2hlcmUgd2UgbG9vayBmb3IgbW9kdWxlIGxpc3RzLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0X2djb252X3BhdGhbXSA9IEdDT05WX1BBVEg7Cisrc3RhdGljIGNoYXIgZGVmYXVsdF9nY29udl9wYXRoWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDT05WX1BBVEg7CisgCisgLyogVHlwZSB0byByZXByZXNlbnQgc2VhcmNoIHBhdGguICAqLworIHN0cnVjdCBwYXRoX2VsZW0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCitpbmRleCA2YjMxMGU5ZTE1Li4zODc3MzExZGY0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKKysrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCitAQCAtMjcsMTAgKzI3LDYgQEAKKyAgICgoZmxhZ3MpID09IDEgfHwgKGZsYWdzKSA9PSBfRExfQ0FDSEVfREVGQVVMVF9JRCkKKyAjZW5kaWYKKyAKKy0jaWZuZGVmIExEX1NPX0NBQ0hFCistIyBkZWZpbmUgTERfU09fQ0FDSEUgU1lTQ09ORkRJUiAiL2xkLnNvLmNhY2hlIgorLSNlbmRpZgorLQorICNpZm5kZWYgYWRkX3N5c3RlbV9kaXIKKyAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMWM1OTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTg0ICswLDAgQEAKLUZyb20gN2NjY2Y1Y2VjMDlmMmE0MmNjM2ZlNWQ4MmNlMjFiNzMwOTMzMGIzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjhdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBFZG1hciBXaWVuc2tvc2tpIDxlZG1hckBmcmVlc2NhbGUuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICB8IDEzNCArKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgfCAxMDEgKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyB8IDEzNCArKysrKysrKysrKysrKysrKysKLSAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgICAgfCAxMDEgKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzICB8ICAgMSArCi0gLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyAgICAgIHwgICAyICsKLSAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzICAgICAgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gMTkgZmlsZXMgY2hhbmdlZCwgMTQxOCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcwotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMCwwICsxLDEzNCBAQAotKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSsgICBzaW11bHRhbmVvdXNseS4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotKyNlbHNlCi0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGIpCi0rICAgICBkb3VibGUgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7Ci0rICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICB1LnZhbHVlID0gYjsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKLSsgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KLSsKLSsgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKLSsgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCi0rCi0rICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLwotKwotKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQwotKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCi0rICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKLSsgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCi0rCi0rICAgICAgICAgIGcgPSBiICogeTsKLSsgICAgICAgICAgaCA9IDAuNSAqIHk7Ci0rCi0rICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0rICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsKLSsjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCi0rCi0rICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLwotKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKLSsKLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMCwwICsxLDEwMSBAQAotKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KLSsjaW5jbHVkZSA8ZmVudl9saWJjLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rCi0rI2luY2x1ZGUgPHN5c2RlcC5oPgotKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgotKwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKLStzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0rICAgc3F1YXJlIHJvb3QuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotKyNlbHNlCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGIpCi0rICAgICBmbG9hdCBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgZG91YmxlIHksIHg7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKLSsKLSsgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KLSsgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOwotKwotKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KLSsgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCi0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rCi0rICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KLSsgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKLSsgICAgICAgICAgcmV0dXJuIHggKiBiOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2hmIChiKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5iMTAzYjRkZWE1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi42NGRiMTdmYWRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEsMiBAQAotKyMgZTMwMGMzIGlzIGEgdmFyaWFudCBvZiA2MDNlIHNvIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIGZvciBzcXJ0Ci0rcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43ZWFjNWZjZjAyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2NGIyYTc3MDAKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmEyNTkzNDQ2N2IKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmE3YmM4NTRiZTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjA0ZmY4Y2MxODEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI4YjZjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGE3NTI4NTdjYzM0MmVlNTEzNmM5YTU5MzAzN2I2ZWU2ZmY4YWY4ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKKworVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KK1RoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCitJdCBhbHNvIG1ha2VzIHRoZSBzeW5jaHJvbml6YXRpb24gbW9yZSBlZmZpY2llbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAoraW5kZXggYmI0OTY0ODM3NC4uYWEwOGQzYzBhNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKKysrKyBiL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKK0BAIC01OCwxNSArNTgsMTQgQEAgdHlwZWRlZiB1aW50bWF4X3QgdWF0b21pY19tYXhfdDsKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMJMQorKyMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMQorIAorICNpZmRlZiBfX3g4Nl82NF9fCistIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCisgIyBkZWZpbmUgU1BfUkVHCQkJCSJyc3AiCisgIyBkZWZpbmUgU0VHX1JFRwkJCSJmcyIKKyAjIGRlZmluZSBCUl9DT05TVFJBSU5UCQkJInEiCisgIyBkZWZpbmUgSUJSX0NPTlNUUkFJTlQJCQkiaXEiCisgI2Vsc2UKKy0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTAKKyAjIGRlZmluZSBTUF9SRUcJCQkJImVzcCIKKyAjIGRlZmluZSBTRUdfUkVHCQkJImdzIgorICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkiciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjZDE3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK0Zyb20gM2RmOTFkMWQ4YjljN2EwMWIzZWY4MTMzYzRmOWI5NzY0MjI3ZDU4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NTU6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBNYWtlIHJlbG9jYXRhYmxlIGluc3RhbGwgZm9yIGxvY2FsZXMKKworVGhlIGdsaWJjIGxvY2FsZSBwYXRoIGlzIGhhcmQtY29kZWQgdG8gdGhlIGluc3RhbGwgcHJlZml4LCBidXQgaW4gU0RLcyB3ZSBuZWVkCit0byBiZSBhYmxlIHRvIHJlbG9jYXRlIHRoZSBiaW5hcmllcy4gIEV4cGFuZCB0aGUgc3RyaW5ncyB0byA0SyBhbmQgcHV0IHRoZW0gaW4gYQorbWFnaWMgc2VnbWVudCB0aGF0IHdlIGNhbiByZWxvY2F0ZSBhdCBpbnN0YWxsIHRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL2ZpbmRsb2NhbGUuYyAgfCA0ICsrLS0KKyBsb2NhbGUvbG9hZGFyY2hpdmUuYyB8IDIgKy0KKyBsb2NhbGUvbG9jYWxlaW5mby5oICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9sb2NhbGUvZmluZGxvY2FsZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbG9jYWxlL2ZpbmRsb2NhbGUuYworKysrIGdpdC9sb2NhbGUvZmluZGxvY2FsZS5jCitAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqY29uc3QgX25sX0NbXSBhdHRyCisgICAgd2hpY2ggYXJlIHNvbWVob3cgYWRkcmVzc2VkLiAgKi8KKyBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfbG9jYWxlX2ZpbGVfbGlzdFtfX0xDX0xBU1RdOworIAorLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuID0gQ09NUExPQ0FMRURJUjsKKytjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW4gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUjsKKyAKKyAvKiBDaGVja3MgaWYgdGhlIG5hbWUgaXMgYWN0dWFsbHkgcHJlc2VudCwgdGhhdCBpcywgbm90IE5VTEwgYW5kIG5vdAorICAgIGVtcHR5LiAgKi8KK0BAIC0xNjYsNyArMTY2LDcgQEAgX25sX2ZpbmRfbG9jYWxlIChjb25zdCBjaGFyICpsb2NhbGVfcGF0aAorIAorICAgICAgIC8qIE5vdGhpbmcgaW4gdGhlIGFyY2hpdmUuICBTZXQgdGhlIGRlZmF1bHQgcGF0aCB0byBzZWFyY2ggYmVsb3cuICAqLworICAgICAgIGxvY2FsZV9wYXRoID0gX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7CistICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc2l6ZW9mIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOworKyAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHN0cmxlbihsb2NhbGVfcGF0aCkgKyAxOworICAgICB9CisgICBlbHNlCisgICAgIC8qIFdlIHJlYWxseSBoYXZlIHRvIGxvYWQgc29tZSBkYXRhLiAgRmlyc3Qgc2VlIHdoZXRoZXIgdGhlIG5hbWUgaXMKK0luZGV4OiBnaXQvbG9jYWxlL2xvYWRhcmNoaXZlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvbG9hZGFyY2hpdmUuYworKysrIGdpdC9sb2NhbGUvbG9hZGFyY2hpdmUuYworQEAgLTQyLDcgKzQyLDcgQEAKKyAKKyAKKyAvKiBOYW1lIG9mIHRoZSBsb2NhbGUgYXJjaGl2ZSBmaWxlLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbXSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7Cisrc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7CisgCisgLyogU2l6ZSBvZiBpbml0aWFsIG1hcHBpbmcgd2luZG93LCBvcHRpbWFsIGlmIGxhcmdlIGVub3VnaCB0bworICAgIGNvdmVyIHRoZSBoZWFkZXIgcGx1cyB0aGUgaW5pdGlhbCBsb2NhbGUuICAqLworSW5kZXg6IGdpdC9sb2NhbGUvbG9jYWxlaW5mby5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGdpdC9sb2NhbGUvbG9jYWxlaW5mby5oCitAQCAtMzMxLDcgKzMzMSw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3IKKyB9CisgCisgLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47CisrZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbjsKKyAKKyAvKiBMb2FkIHRoZSBsb2NhbGUgZGF0YSBmb3IgQ0FURUdPUlkgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKk5BTUUuCisgICAgSWYgKk5BTUUgaXMgIiIsIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgc3BlY2lmaWVkIGJ5IFBPU0lYLCBhbmQKK0luZGV4OiBnaXQvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZS5jCisrKysgZ2l0L2xvY2FsZS9wcm9ncmFtcy9sb2NhbGUuYworQEAgLTYzMiw2ICs2MzIsNyBAQCBuYW1lZW50Y21wIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiCisgCQkgICgoY29uc3Qgc3RydWN0IG5hbWVlbnQgKikgYiktPm5hbWUpOworIH0KKyAKKytzdGF0aWMgY2hhciBfd3JpdGVfYXJjaGl2ZV9sb2NhbGVzX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBBUkNISVZFX05BTUU7CisgCisgc3RhdGljIGludAorIHdyaXRlX2FyY2hpdmVfbG9jYWxlcyAodm9pZCAqKmFsbF9kYXRhcCwgY2hhciAqbGluZWJ1ZikKK0BAIC02NDUsNyArNjQ2LDcgQEAgd3JpdGVfYXJjaGl2ZV9sb2NhbGVzICh2b2lkICoqYWxsX2RhdGFwLAorICAgaW50IGZkLCByZXQgPSAwOworICAgdWludDMyX3QgY250OworIAorLSAgZmQgPSBvcGVuNjQgKEFSQ0hJVkVfTkFNRSwgT19SRE9OTFkpOworKyAgZmQgPSBvcGVuNjQgKF93cml0ZV9hcmNoaXZlX2xvY2FsZXNfcGF0aCwgT19SRE9OTFkpOworICAgaWYgKGZkIDwgMCkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtNzAwLDggKzcwMSw4IEBAIHdyaXRlX2FyY2hpdmVfbG9jYWxlcyAodm9pZCAqKmFsbF9kYXRhcCwKKyAJICBpZiAoY250KQorIAkgICAgcHV0Y2hhcl91bmxvY2tlZCAoJ1xuJyk7CisgCistCSAgcHJpbnRmICgibG9jYWxlOiAlLTE1LjE1cyBhcmNoaXZlOiAiIEFSQ0hJVkVfTkFNRSAiXG4lc1xuIiwKKy0JCSAgbmFtZXNbY250XS5uYW1lLCBsaW5lYnVmKTsKKysJICBwcmludGYgKCJsb2NhbGU6ICUtMTUuMTVzIGFyY2hpdmU6ICVzXG4lc1xuIiwKKysJCSAgbmFtZXNbY250XS5uYW1lLCBfd3JpdGVfYXJjaGl2ZV9sb2NhbGVzX3BhdGgsIGxpbmVidWYpOworIAorIAkgIGxvY3JlYyA9IChzdHJ1Y3QgbG9jcmVjZW50ICopIChhZGRyICsgbmFtZXNbY250XS5sb2NyZWNfb2Zmc2V0KTsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNmZiMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGRjNzE1ZjZjNzBkMDFlOWMzYjMxYzE4MjVmYTViYzQ0Nzk2N2M4NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzI4XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCi0gbmFtZXMKLQotVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCi1uYW1lcyBpbnRvIGdsaWJjIGVzcGVjaWFsbHkgZm9yIG11bHRpbGliIGNhc2UsIHdoZXJlIGl0IGRpZmZlcnMgZnJvbSBhbnkKLW90aGVyIGRpc3Ryb3MKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTGlhbmhhbyBMdSA8bGlhbmhhby5sdUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL3JlYWRsaWIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKLWluZGV4IGM5NzQzZTY2OTIuLjYzMDdmOTE4ZmMgMTAwNjQ0Ci0tLS0gYS9lbGYvcmVhZGxpYi5jCi0rKysgYi9lbGYvcmVhZGxpYi5jCi1AQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KLSAjaWZkZWYgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gICBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSAjZW5kaWYKLSsgIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotIH07Ci0gCi0gc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGFjMzI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTAsMCArMSwxNTgxIEBACitGcm9tIDYxYjZjOTczNzg5N2M1ODI4ZWY0YjQwNjk5ZWUwYTc0YzU3MDAzNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDowMTo1MCArMDAwMAorU3ViamVjdDogW1BBVENIXSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgIHwgMTAxICsrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jICAgIHwgMTAxICsrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyAgfCAgIDEgKworIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgICAgICB8ICAgMiArCisgLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyAgICAgIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIDE5IGZpbGVzIGNoYW5nZWQsIDE0MTggaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTAsMCArMSwxMzQgQEAKKysvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OworK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisrICAgc2ltdWx0YW5lb3VzbHkuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKysjZWxzZQorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChiKQorKyAgICAgZG91YmxlIGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOworKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgdS52YWx1ZSA9IGI7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCisrICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCisrCisrICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCisrICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgorKworKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KKysKKysgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKKysgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQorKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5CisrICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLworKworKyAgICAgICAgICBnID0gYiAqIHk7CisrICAgICAgICAgIGggPSAwLjUgKiB5OworKworKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKysgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrCisrI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLworKworKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KKysgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7CisrCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaCAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTAsMCArMSwxMDEgQEAKKysvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgorKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+CisrI2luY2x1ZGUgPGZlbnZfbGliYy5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKworKyNpbmNsdWRlIDxzeXNkZXAuaD4KKysjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorKyAgIHNxdWFyZSByb290LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKysjZWxzZQorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChiKQorKyAgICAgZmxvYXQgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysKKysgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCisrICAgICAgICB7CisrICAgICAgICAgIGRvdWJsZSB5LCB4OworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7CisrCisrICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCisrICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKKysKKysgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCisrICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKworKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCisrICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7CisrICAgICAgICAgIHJldHVybiB4ICogYjsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoZiAoYik7CisrfQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYjEwM2I0ZGVhNQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjRkYjE3ZmFkYQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxLDIgQEAKKysjIGUzMDBjMyBpcyBhIHZhcmlhbnQgb2YgNjAzZSBzbyB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9ucyBmb3Igc3FydAorK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2VhYzVmY2YwMgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNjRiMmE3NzAwCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5hMjU5MzQ0NjdiCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5hN2JjODU0YmU4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4wNGZmOGNjMTgxCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJlZDIwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwOCArMCwwIEBACi1Gcm9tIDQyYTAxYzU1Nzg2YTk0NzI5MzRlMTJlMGJmMGM0MDk4MzU3OWI2MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzI4XSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCi0KLW9uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKLXwgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwotfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQ2hhbmdlTG9nCi0KLTIwMTItMDEtMDYgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jOiBBZGQgX18qX2Zpbml0ZSBhbGlhcy4KLSAgICAgICAgUmVtb3ZlIGNydWZ0LgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jOiBEaXR0by4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jOiBEaXR0by4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYzogRGl0dG8uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBkb3VibGUKLSBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0tI2Vsc2UKLS1kb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLS0gICAgIGRvdWJsZSBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBmbG9hdAotIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLS0jZWxzZQotLWZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotLSAgICAgZmxvYXQgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBkb3VibGUKLSBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0tI2Vsc2UKLS1kb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLS0gICAgIGRvdWJsZSBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLSBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0tI2Vsc2UKLS1mbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLS0gICAgIGZsb2F0IGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWQ2ZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODcgKzAsMCBAQAotRnJvbSBhMGZjYjkxMzViYzhjMmI5ZDhhMTYxZDE2NmI2ZjlkNTZkN2FmMjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yOF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAotIG91dCBfX3Nsb3cgdmVyc2lvbnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8ICA4ICsrKysrKystCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgIDggKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDggKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA5ICsrKysrKysrLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotaW5kZXggMTc5NWZkNmMzZS4uZGFhODNmM2ZlOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxM2FiLi5iODEyY2YxNzA1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTMsNCArOTMsMTAgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi4xYzM0MjQ0YmQ4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uODEyNjUzNTU4ZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxM2FiLi5mYWUyZDgxMjEwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05Myw0ICs5MywxMSBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU2ZjkxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMTNiZWIxZjQyOGVjMDY3Nzg1OTBiZjUyNmQ2ZTY0MWY3M2Q1Y2Y2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24gbmFtZXMKKworVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCituYW1lcyBpbnRvIGdsaWJjIGVzcGVjaWFsbHkgZm9yIG11bHRpbGliIGNhc2UsIHdoZXJlIGl0IGRpZmZlcnMgZnJvbSBhbnkKK290aGVyIGRpc3Ryb3MKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGlhbmhhbyBMdSA8bGlhbmhhby5sdUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL3JlYWRsaWIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZWxmL3JlYWRsaWIuYyBiL2VsZi9yZWFkbGliLmMKK2luZGV4IDk5NGE0NDI2YTEuLmJhYWJmMDk5YjEgMTAwNjQ0CistLS0gYS9lbGYvcmVhZGxpYi5jCisrKysgYi9lbGYvcmVhZGxpYi5jCitAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KKyAjaWZkZWYgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgICBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyAjZW5kaWYKKysgIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworIH07CisgCisgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBrbm93bl9saWJzW10gPQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0MGExNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gOWMxZjIyMjljNDhjMzdiMzg2MjhjNDg1ZWYxNmUwMWY2NzgwMTYwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjIwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMjhdIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcwotIDoKLQotICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKLSAgaXQgZGllcyB3aXRoIGEgU0lHU0VHViBiZWZvcmUgcmVhY2hpbmcgbWFpbigpLgotCi0gIExpYnVzdC5zbyBkZXBlbmRzIG9uIGxpYnVyY3UtYnAuc28gZnJvbSB0aGUgdXNlcm1vZGUtcmN1IHBhY2thZ2UuCi0gIEFsdGhvdWdoIGxpYnVzdC5zbyBpcyBub3QgcHJlbGlua2VkLCBsaWJ1cmN1LWJwLnNvIElTIHByZWxpbmtlZDsgdGhpcwotICBpcyBjcml0aWNhbC4KLQotICBMaWJ1c3Quc28gdXNlcyBhIFRMUyAvIF9fdGhyZWFkIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCBpbiBsaWJ1cmN1LQotICBicC5zby4gIFRoZXJlIGFyZSBzcGVjaWFsIEFSTS1zcGVjaWZpYyByZWxvY2F0aW9uIHR5cGVzIHRoYXQgYWxsb3cgdHdvCi0gIHNoYXJlZCBsaWJyYXJpZXMgdG8gc2hhcmUgdGhyZWFkLXNwZWNpZmljIGRhdGEuICBUaGlzIGlzIGNyaXRpY2FsIHRvby4KLQotICBPbmUgbW9yZSBjcml0aWNhbCBpc3N1ZTogYWx0aG91Z2ggbGlidXJjdS1icC5zbyBpcyBwcmVsaW5rZWQsIHdlIGNhbid0Ci0gIGxvYWQgaXQgYXQgaXRzIHByZWxpbmtlZCBhZGRyZXNzLCBiZWNhdXNlIHdlIGFsc28gbGluayBhZ2FpbnN0Ci0gIGxpYnJ0LnNvLCBhbmQgbGlicnQuc28gdXNlcyB0aGF0IGFkZHJlc3MuCi0KLSAgVGhlIGR5bmFtaWMgbGlua2VyIGlzIGZvcmNlZCB0byByZWxpbmsgbGlidXJjdS1icC5zbyBhdCBhIGRpZmZlcmVudAotICBhZGRyZXNzLiAgSW4gdGhlIGNvdXJzZSBvZiByZWxpbmtpbmcsIGl0IHByb2Nlc3NlcyB0aGUgc3BlY2lhbCBBUk0KLSAgcmVsb2NhdGlvbiByZWNvcmQgbWVudGlvbmVkIGFib3ZlLiAgVGhlIHByZWxpbmtlciBoYXMgYWxyZWFkeSBmaWxsZWQKLSAgaW4gdGhlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhIHNob3J0IG9mZnNldCBpbnRvIGEgdGFibGUgb2YgdGhyZWFkLQotICBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgYWxsb2NhdGVkIHBlci10aHJlYWQgZm9yIGVhY2ggbGlicmFyeSB0aGF0IHVzZXMKLSAgVExTLiAgQmVjYXVzZSB0aGUgbm9ybWFsIGJlaGF2aW9yIG9mIGEgcmVsb2NhdGlvbiBpcyB0byBhZGQgdGhlIHN5bWJvbAotICB2YWx1ZSB0byBhbiBhZGRlbmQgc3RvcmVkIGF0IHRoZSBhZGRyZXNzIGJlaW5nIHJlbG9jYXRlZCwgd2UgZW5kIHVwCi0gIGFkZGluZyB0aGUgc2hvcnQgb2Zmc2V0IHRvIGl0c2VsZiwgZG91YmxpbmcgaXQuCi0KLSAgTm93IHdlIGhhdmUgYW4gYXdrd2FyZCBzaXR1YXRpb24uICBUaGUgbGlidXN0LnNvIGxpYnJhcnkgZG9lc24ndCBrbm93Ci0gIGFib3V0IHRoZSBhZGRlbmQsIHNvIGl0cyBUTFMgZGF0YSBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QuICBUaGUKLSAgbGlidXJjdS1icC5zbyBsaWJyYXJ5IGhhcyBhIGRpZmZlcmVudCBvZmZzZXQgZm9yIHRoZSBlbGVtZW50LiAgV2hlbiB3ZQotICBnbyB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50IGZvciB0aGUgZmlyc3QgdGltZSBpbiBsaWJ1cmN1LWJwLnNvLCB3ZQotICB3cml0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVzdWx0IGF0IHRoZSBkb3VibGVkIChicm9rZW4pIG9mZnNldC4KLSAgTGF0ZXIsIHdoZW4gd2UgcmVmZXIgdG8gdGhlIGFkZHJlc3MgZnJvbSBsaWJ1c3Quc28sIHdlIGNoZWNrIHRoZSB2YWx1ZQotICBhdCB0aGUgY29ycmVjdCBvZmZzZXQsIGJ1dCBpdCdzIE5VTEwsIHNvIHdlIGVhdCBob3QgU0lHU0VHVi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBEaW51IDxhbmRyZWkuYWRyaWFueC5kaW51QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLWluZGV4IDdhMmY5ZDliNzguLjM2YTFkZDE4ODggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLSsrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotQEAgLTUxMCw3ICs1MTAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAotIAotIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKLSAJICBpZiAoc3ltICE9IE5VTEwpCi0tCSAgICAqcmVsb2NfYWRkciArPSBzeW0tPnN0X3ZhbHVlOwotKwkgICAgKnJlbG9jX2FkZHIgPSBzeW0tPnN0X3ZhbHVlOwotIAkgIGJyZWFrOwotIAotIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTQ0NmFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKQEAgLTAsMCArMSwyMDUgQEAKK0Zyb20gNDQ4M2E4MzA3NGEzNDBhOTIxZTMxOWI4OGQ3MjE2NmYxOGUwZGYwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKKworb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdworfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCit8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitDaGFuZ2VMb2cKKworMjAxMi0wMS0wNiAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmM6IEFkZCBfXypfZmluaXRlIGFsaWFzLgorICAgICAgICBSZW1vdmUgY3J1ZnQuCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmM6IERpdHRvLgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmM6IERpdHRvLgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jOiBEaXR0by4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIDEyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGRvdWJsZQorIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKy0jZWxzZQorLWRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorLSAgICAgZG91YmxlIGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisgICAgc3F1YXJlIHJvb3QuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGZsb2F0CisgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorLSNlbHNlCistZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCistICAgICBmbG9hdCBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGRvdWJsZQorIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKy0jZWxzZQorLWRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorLSAgICAgZG91YmxlIGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorICAgIHNxdWFyZSByb290LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBmbG9hdAorIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKy0jZWxzZQorLWZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorLSAgICAgZmxvYXQgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTFmMzcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTAsMCArMSwzODQgQEAKK0Zyb20gMzQ3YjJlMzFkMDEwYjA0YzQyZTc4MTU3YTAyOGFhMWQ1OGZlMGY1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE2OjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwgb3V0CisgX19zbG93IHZlcnNpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCAgOCArKysrKysrLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8ICA4ICsrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA4ICsrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOSArKysrKysrKy0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK2luZGV4IDE3OTVmZDZjM2UuLmRhYTgzZjNmZTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworaW5kZXggYTkxN2YzMTNhYi4uYjgxMmNmMTcwNSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTkzLDQgKzkzLDEwIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9Cisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uMWMzNDI0NGJkOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjgxMjY1MzU1OGYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDE3OTVmZDZjM2UuLjEzYTgxOTczZTMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggYTkxN2YzMTNhYi4uZmFlMmQ4MTIxMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIHNxdWFyZSByb290LiAgKi8KKyAKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTMsNCArOTMsMTEgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTkwOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAxNzFkMmFmYjkzMDkxN2IwY2ZiZTlkZjc3MDc3NGRhMWM5MmRkMTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgotRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAotU3ViamVjdDogW1BBVENIIDExLzI4XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KLQotbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCi1pbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KLSR7U30vLnBjLyAoaXQgZG9lcyBleGlzdCBhZnRlciBlZ2xpYmMgYWRkcyBhYXJjaDY0IHN1cHBvcnQsCi0ke1N9Ly5wYy9hYXJjaDY0LTAwMDEtZ2xpYmMtZnNmLXYxLWVhZjZmMjA1LnBhdGNoL3BvcnRzL3N5c2RlcHMvCi1hYXJjaDY0L2xpYm0tdGVzdC11bHBzKSwgcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMKLWluICR7U30uCi0KLVVwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KLS0tLQotIG1hbnVhbC9NYWtlZmlsZSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCi1pbmRleCA0Zjc2ZWU4NWQyLi4wNGI4YzhjMzIwIDEwMDY0NAotLS0tIGEvbWFudWFsL01ha2VmaWxlCi0rKysgYi9tYW51YWwvTWFrZWZpbGUKLUBAIC0xMDMsNyArMTAzLDggQEAgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6ICQoLi4pbWF0aC9nZW4tbGlibS10ZXN0LnB5IFwKLSAJCQkgJCh3aWxkY2FyZCAkKGZvcmVhY2ggZGlyLCQoc3lzZGlycyksXAotIAkJCQkJCSAgJChkaXIpL2xpYm0tdGVzdC11bHBzKSkKLSAJcHdkPWBwd2RgOyBcCi0tCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLiAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKLSsJJChQWVRIT04pICQ8IC1zICQkcHdkLy4uL3BvcnRzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vc3lzZGVwcyAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKLSAJJChtb3ZlLWlmLWNoYW5nZSkgJChvYmpwZngpbGlibS1lcnItdG1wICQob2JqcGZ4KWxpYm0tZXJyLnRleGkKLSAJdG91Y2ggJEAKLSAKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBiNDZjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gOGNhOGU1Y2Q3OGNiZDM3YTcxM2UxMTgxZjhmNjY0MWI1NzM1MmFhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjIwOjA5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcyA6CisKKyAgV2UgYnVpbGQgc29tZSByYW5kb20gcHJvZ3JhbSBhbmQgbGluayBpdCB3aXRoIC1sdXN0LiAgV2hlbiB3ZSBydW4gaXQsCisgIGl0IGRpZXMgd2l0aCBhIFNJR1NFR1YgYmVmb3JlIHJlYWNoaW5nIG1haW4oKS4KKworICBMaWJ1c3Quc28gZGVwZW5kcyBvbiBsaWJ1cmN1LWJwLnNvIGZyb20gdGhlIHVzZXJtb2RlLXJjdSBwYWNrYWdlLgorICBBbHRob3VnaCBsaWJ1c3Quc28gaXMgbm90IHByZWxpbmtlZCwgbGlidXJjdS1icC5zbyBJUyBwcmVsaW5rZWQ7IHRoaXMKKyAgaXMgY3JpdGljYWwuCisKKyAgTGlidXN0LnNvIHVzZXMgYSBUTFMgLyBfX3RocmVhZCB2YXJpYWJsZSB0aGF0IGlzIGRlZmluZWQgaW4gbGlidXJjdS0KKyAgYnAuc28uICBUaGVyZSBhcmUgc3BlY2lhbCBBUk0tc3BlY2lmaWMgcmVsb2NhdGlvbiB0eXBlcyB0aGF0IGFsbG93IHR3bworICBzaGFyZWQgbGlicmFyaWVzIHRvIHNoYXJlIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhpcyBpcyBjcml0aWNhbCB0b28uCisKKyAgT25lIG1vcmUgY3JpdGljYWwgaXNzdWU6IGFsdGhvdWdoIGxpYnVyY3UtYnAuc28gaXMgcHJlbGlua2VkLCB3ZSBjYW4ndAorICBsb2FkIGl0IGF0IGl0cyBwcmVsaW5rZWQgYWRkcmVzcywgYmVjYXVzZSB3ZSBhbHNvIGxpbmsgYWdhaW5zdAorICBsaWJydC5zbywgYW5kIGxpYnJ0LnNvIHVzZXMgdGhhdCBhZGRyZXNzLgorCisgIFRoZSBkeW5hbWljIGxpbmtlciBpcyBmb3JjZWQgdG8gcmVsaW5rIGxpYnVyY3UtYnAuc28gYXQgYSBkaWZmZXJlbnQKKyAgYWRkcmVzcy4gIEluIHRoZSBjb3Vyc2Ugb2YgcmVsaW5raW5nLCBpdCBwcm9jZXNzZXMgdGhlIHNwZWNpYWwgQVJNCisgIHJlbG9jYXRpb24gcmVjb3JkIG1lbnRpb25lZCBhYm92ZS4gIFRoZSBwcmVsaW5rZXIgaGFzIGFscmVhZHkgZmlsbGVkCisgIGluIHRoZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYSBzaG9ydCBvZmZzZXQgaW50byBhIHRhYmxlIG9mIHRocmVhZC0KKyAgc3BlY2lmaWMgZGF0YSB0aGF0IGlzIGFsbG9jYXRlZCBwZXItdGhyZWFkIGZvciBlYWNoIGxpYnJhcnkgdGhhdCB1c2VzCisgIFRMUy4gIEJlY2F1c2UgdGhlIG5vcm1hbCBiZWhhdmlvciBvZiBhIHJlbG9jYXRpb24gaXMgdG8gYWRkIHRoZSBzeW1ib2wKKyAgdmFsdWUgdG8gYW4gYWRkZW5kIHN0b3JlZCBhdCB0aGUgYWRkcmVzcyBiZWluZyByZWxvY2F0ZWQsIHdlIGVuZCB1cAorICBhZGRpbmcgdGhlIHNob3J0IG9mZnNldCB0byBpdHNlbGYsIGRvdWJsaW5nIGl0LgorCisgIE5vdyB3ZSBoYXZlIGFuIGF3a3dhcmQgc2l0dWF0aW9uLiAgVGhlIGxpYnVzdC5zbyBsaWJyYXJ5IGRvZXNuJ3Qga25vdworICBhYm91dCB0aGUgYWRkZW5kLCBzbyBpdHMgVExTIGRhdGEgZm9yIHRoaXMgZWxlbWVudCBpcyBjb3JyZWN0LiAgVGhlCisgIGxpYnVyY3UtYnAuc28gbGlicmFyeSBoYXMgYSBkaWZmZXJlbnQgb2Zmc2V0IGZvciB0aGUgZWxlbWVudC4gIFdoZW4gd2UKKyAgZ28gdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudCBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gbGlidXJjdS1icC5zbywgd2UKKyAgd3JpdGUgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlc3VsdCBhdCB0aGUgZG91YmxlZCAoYnJva2VuKSBvZmZzZXQuCisgIExhdGVyLCB3aGVuIHdlIHJlZmVyIHRvIHRoZSBhZGRyZXNzIGZyb20gbGlidXN0LnNvLCB3ZSBjaGVjayB0aGUgdmFsdWUKKyAgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LCBidXQgaXQncyBOVUxMLCBzbyB3ZSBlYXQgaG90IFNJR1NFR1YuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgRGludSA8YW5kcmVpLmFkcmlhbnguZGludUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCitpbmRleCA5MDg1Njc3OWIxLi5hMjliYjg2YzU2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCisrKysgYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKK0BAIC01MTAsNyArNTEwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKKyAKKyAJY2FzZSBSX0FSTV9UTFNfRFRQT0ZGMzI6CisgCSAgaWYgKHN5bSAhPSBOVUxMKQorLQkgICAgKnJlbG9jX2FkZHIgKz0gc3ltLT5zdF92YWx1ZTsKKysJICAgICpyZWxvY19hZGRyID0gc3ltLT5zdF92YWx1ZTsKKyAJICBicmVhazsKKyAKKyAJY2FzZSBSX0FSTV9UTFNfVFBPRkYzMjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMzNmYmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDM3NmJlN2I5NjE1MmVmNTAxYzhjZjk1ZWQ2ZGM1MmMwMzE4YmQyNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzI4XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCi0gb3V0IF9fc2xvdyB2ZXJzaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogY2h1bnJvbmcgZ3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCA2ICsrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggMWMzNDI0NGJkOC4uNzAzOGE3MGI0NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDgxMjY1MzU1OGYuLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzZkZThjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjE1MDk3MzU2Nzg5OTA3NjBkNWViZjlkMGM2NWVmYTRiNTJiODM4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CisKK2xpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgoraW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCiske1N9Ly5wYy8gKGl0IGRvZXMgZXhpc3QgYWZ0ZXIgZWdsaWJjIGFkZHMgYWFyY2g2NCBzdXBwb3J0LAorJHtTfS8ucGMvYWFyY2g2NC0wMDAxLWdsaWJjLWZzZi12MS1lYWY2ZjIwNS5wYXRjaC9wb3J0cy9zeXNkZXBzLworYWFyY2g2NC9saWJtLXRlc3QtdWxwcyksIHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzCitpbiAke1N9LgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CistLS0KKyBtYW51YWwvTWFrZWZpbGUgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21hbnVhbC9NYWtlZmlsZSBiL21hbnVhbC9NYWtlZmlsZQoraW5kZXggYzYxZTExZGNkNy4uNWQ4NTllNmY4NCAxMDA2NDQKKy0tLSBhL21hbnVhbC9NYWtlZmlsZQorKysrIGIvbWFudWFsL01ha2VmaWxlCitAQCAtMTAzLDcgKzEwMyw4IEBAICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyOiAkKC4uKW1hdGgvZ2VuLWxpYm0tdGVzdC5weSBcCisgCQkJICQod2lsZGNhcmQgJChmb3JlYWNoIGRpciwkKHN5c2RpcnMpLFwKKyAJCQkJCQkgICQoZGlyKS9saWJtLXRlc3QtdWxwcykpCisgCXB3ZD1gcHdkYDsgXAorLQkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4gLW0gJChvYmpwZngpbGlibS1lcnItdG1wCisrCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLi9wb3J0cyAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKKysJJChQWVRIT04pICQ8IC1zICQkcHdkLy4uL3N5c2RlcHMgLW0gJChvYmpwZngpbGlibS1lcnItdG1wCisgCSQobW92ZS1pZi1jaGFuZ2UpICQob2JqcGZ4KWxpYm0tZXJyLXRtcCAkKG9ianBmeClsaWJtLWVyci50ZXhpCisgCXRvdWNoICRACisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmE1MmU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAxYmE0ZTk1Nzc0Mzc2MzI4NTZkNzE5Y2JkNWQ2M2I1YTc2Y2JiNGM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjc6MTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8yOF0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5Ci0gJGxpYmNfY3Zfcm9vdHNiaW5kaXIKLQotVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWF0dGhpZXUgQ3JhcGV0IDxNYXR0aGlldS5DcmFwZXRAaW5nZW5pY28uY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLWluZGV4IGMxNWQxMDg3ZTguLjM3Y2M5ODNmMmEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotQEAgLTMyLDYgKzMyLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLWluZGV4IDYzNGZlNGRlMmEuLjNkYjE2OTdmNGYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotQEAgLTIxLDYgKzIxLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KLSAgIGVsc2UKLSAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCi0gICAgZmkKLS0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSsgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0gICA7OwotIGVzYWMKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE2MDJiYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGI4NDk5OWRjZjY0MmIwN2U2YzE0ZTZmZjUwN2JlMTQ3NDMzNDk5NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAotU3ViamVjdDogW1BBVENIIDE0LzI4XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQotCi1IZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgotYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKLQotICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgotICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKLWluZGV4IDkxZTBhZDMxNDEuLjJlOTU0OWZlNDkgMTAwNjQ0Ci0tLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKLSsrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCi0gewotICAgaW50IHNsYXNoX2NvdW50ID0gMDsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTczYjY0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gZTMzZGViMTE5NzM0ZWY0NDNlZjQ0YzQyYTAwYTU2OWY5MGUxZTE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwgb3V0CisgX19zbG93IHZlcnNpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBjaHVucm9uZyBndW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDYgKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2RkMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBjNTBjYWUzNmU5MGM0MTg0OTMwMWE5YTY2OGFkZjMxZTgxZTQzYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjc6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjOiBoYW5kbGUgY29ycmVjdGx5CisgJGxpYmNfY3Zfcm9vdHNiaW5kaXIKKworVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWF0dGhpZXUgQ3JhcGV0IDxNYXR0aGlldS5DcmFwZXRAaW5nZW5pY28uY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvZ251L2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBzeXNkZXBzL2dudS9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKK2luZGV4IGMxNWQxMDg3ZTguLjM3Y2M5ODNmMmEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQorQEAgLTMyLDYgKzMyLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KKyAgIGVsc2UKKyAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCisgICAgZmkKKy0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKysgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisgICA7OworIGVzYWMKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKK2luZGV4IDYzNGZlNGRlMmEuLjNkYjE2OTdmNGYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworQEAgLTIxLDYgKzIxLDYgQEAgY2FzZSAiJHByZWZpeCIgaW4KKyAgIGVsc2UKKyAgICAgbGliY19jdl9sb2NhbHN0YXRlZGlyPSRsb2NhbHN0YXRlZGlyCisgICAgZmkKKy0gIGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKysgIHRlc3QgLW4gIiRsaWJjX2N2X3Jvb3RzYmluZGlyIiB8fCBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisgICA7OworIGVzYWMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ2NTYyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotRnJvbSA3YzU3Zjg0YmVmNGFhZmZlNDIwNGE3YTM1NDQxMWFiM2VhN2U1MjczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8yOF0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcwotCi1JdCBzZWVtcyB0aGF0IHRoZSAnQUNfRUdSRVBfQ1BQKHllcy4uLicgZXhhbXBsZSBpcyBxdWl0ZSBwb3B1bGFyCi1idXQgYmVpbmcgc3VjaCBhIHNob3J0IHdvcmQgdG8gZ3JlcCBpdCBpcyBsaWtlbHkgdG8gcHJvZHVjZQotZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyB3aXRoIHRoZSBwYXRoIGl0IGlzIGNvbmZpZ3VyZWQgaW50by4KLQotVGhlIGNoYW5nZSBpcyB0byB1c2UgYSBtb3JlIGVsYWJvcmF0ZWQgc3RyaW5nIHRvIGdyZXAgZm9yLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KLQotU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gRXNxdWl2ZWwgPGJlbmphbWluLmVzcXVpdmVsQGxpbnV4LmludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FybS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL2FybS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCA0ICsrLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgICAgfCA4ICsrKystLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQotIDEyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLWluZGV4IDViZDM1NWE2OTEuLjNiYzU1MzdiYzAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1AQCAtMTQ4LDEyICsxNDgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BQVJDSDY0RUJfXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19hYXJjaDY0X2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9hYXJjaDY0X2JlPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi1pbmRleCA3ODUxZGQ0ZGFjLi42ZTkyMzgxNzFmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotQEAgLTEwLDggKzEwLDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9hYXJjaDY0X2JlXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BQVJDSDY0RUJfXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAoaXNfYWFyY2g2NF9iZSxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLSsgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9hYXJjaDY0X2JlPXllcywgbGliY19jdl9hYXJjaDY0X2JlPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9hYXJjaDY0X2JlID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1pbmRleCA0MzFlODQzYjJiLi5lMTUyNDYxMTM4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKLUBAIC0xNTEsMTIgKzE1MSwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0tCQkgICAgICB5ZXMKLSsJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAotIAkJICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX2FybV9wY3NfdmZwIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FybV9wY3NfdmZwPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1pbmRleCA5MGNkZDY5Yzc1Li4wNWEyNjJiYTAwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLUBAIC0xNSw4ICsxNSw4IEBAIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKLSAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgQVJNIGhhcmQtZmxvYXQgQUJJXSwKLSAgIFtsaWJjX2N2X2FybV9wY3NfdmZwXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKHVzZV9hcm1fcGNzX3ZmcCxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLSsJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAotIAkJICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzLCBsaWJjX2N2X2FybV9wY3NfdmZwPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9hcm1fcGNzX3ZmcCA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCi1pbmRleCA0ZTEzMjQ4YzAzLi5mMTRhZjk1MmQwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotQEAgLTE0MywxMSArMTQzLDExIEBAIGVsc2UKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZgotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCi0gZWxzZQotICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotaW5kZXggYmNiZGFmZmQ5Zi4uYWQzMDU3ZjRjYyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLUBAIC02LDkgKzYsOSBAQCBkbmwgcG9zaXRpb24gaW5kZXBlbmRlbnQgd2F5LgotIGRubCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCi0tICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKLSsgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQotIGlmIHRlc3QgeCRsaWJjX2N2X21pcHNfbmFuMjAwOCA9IHh5ZXM7IHRoZW4KLSAgIEFDX0RFRklORShIQVZFX01JUFNfTkFOMjAwOCkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi1pbmRleCAxNGM4YTNhMDE0Li5kZGUzODE0ZWYyIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi1AQCAtMTQyLDEyICsxNDIsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX25pb3MyX2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9uaW9zMl9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X25pb3MyX2JlPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotaW5kZXggZjA1ZjQzODAyYi4uZGM4NjM5OTAyZCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotQEAgLTQsOCArNCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyBOaW9zIElJIGJpZyBlbmRpYW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKLSAgIFtsaWJjX2N2X25pb3MyX2JlXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX25pb3MyX2JlLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KLSsgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLWluZGV4IDFlZTdmNDFhMzYuLjc3ZTM4YmViZGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLUBAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotaW5kZXggOTE0N2FhNDU4Mi4uNzg5OGUyNDczOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKLSBMSUJDX0NPTkZJR19WQVIoW21pcHMtbW9kZS1zd2l0Y2hdLFske2xpYmNfbWlwc19tb2RlX3N3aXRjaH1dKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSAKLSBsaWJjX21pcHNfbmFuPQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotaW5kZXggYWU3ZjI1NGRhNC4uODc0NTE5MDAwYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi1AQCAtMTU1LDEyICsxNTUsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWYgX0NBTExfRUxGID09IDIKLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9wcGNfZWxmdjJfYWJpIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzCi0gZWxzZQotICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8KLUBAIC0xODgsMTIgKzE4OCwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX2RlZl9jYWxsX2VsZiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1pbmRleCBmOWNiYTZlMTVkLi5iMjFmNzJmMWU0IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLUBAIC02LDggKzYsOCBAQCBMSUJDX1NMSUJESVJfUlRMRERJUihbbGliNjRdLCBbbGliNjRdKQotICMgRGVmaW5lIGRlZmF1bHQtYWJpIGFjY29yZGluZyB0byBjb21waWxlciBmbGFncy4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIFBvd2VyUEM2NCBFTEZ2MiBBQkldLAotICAgW2xpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpXSwKLS0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWYgX0NBTExfRUxGID09IDIKLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKHVzZV9wcGNfZWxmdjJfYWJpLFsjaWYgX0NBTExfRUxGID09IDIKLSsgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcywgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaSA9IHllczsgdGhlbgotQEAgLTE5LDggKzE5LDggQEAgZWxzZQotICAgIyBDb21waWxlciB0aGF0IGRvIG5vdCBzdXBwb3J0IEVMRnYyIEFCSSBkb2VzIG5vdCBkZWZpbmUgX0NBTExfRUxGCi0gICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgZGVmaW5lcyBfQ0FMTF9FTEZdLAotICAgICBbbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGZdLAotLSAgICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9DQUxMX0VMRgotLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgW0FDX0VHUkVQX0NQUChpc19kZWZfY2FsbF9lbGYsWyNpZmRlZiBfQ0FMTF9FTEYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQotICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NGU3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBjMzIzMTI1NzQ0MDIwYTI5Zjc5ZTUwZGM0ZDAyNGI1NWM0ODJlYWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjg6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHVudXNlZCBhdHRyaWJ1dGUKKworSGVscHMgaW4gYXZvaWRpbmcgZ2NjIHdhcm5pbmcgd2hlbiBoZWFkZXIgaXMgaXMgaW5jbHVkZWQgaW4KK2Egc291cmNlIGZpbGUgd2hpY2ggZG9lcyBub3QgdXNlIGJvdGggZnVuY3Rpb25zCisKKyAgICAgICAgKiBpY29udi9nY29udl9jaGFyc2V0LmggKHN0cmlwKToKKyAgICAgICAgQWRkIHVudXNlZCBhdHRyaWJ1dGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgaWNvbnYvZ2NvbnZfY2hhcnNldC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCitpbmRleCAzNDhhY2MwODliLi5mYTkyNDY1ZDg5IDEwMDY0NAorLS0tIGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCisrKysgYi9pY29udi9nY29udl9jaGFyc2V0LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorIAorLXN0YXRpYyB2b2lkCisrc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgc3RyaXAgKGNoYXIgKndwLCBjb25zdCBjaGFyICpzKQorIHsKKyAgIGludCBzbGFzaF9jb3VudCA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDFjZjMxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBhNzRmMzFlYTllZGYxMDVmMWE2ZGMyNjQ5N2FhMmExMmFlNzM2NjYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yOF0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKLQotVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCi0gdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQotaW5kZXggNDkzZGVjYTc5MC4uMzZlNTU5ZTE2YyAxMDA2NDQKLS0tLSBhL3RpbWV6b25lL01ha2VmaWxlCi0rKysgYi90aW1lem9uZS9NYWtlZmlsZQotQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQotIAljcCAkPCAkQAotIAotICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCi0tCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKLSsJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAotIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKLSAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCi0gCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1pbmRleCAxOGZjZTI3ZTI0Li43MDc0NWY5ZDM2IDEwMDc1NQotLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi0rKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKLUBAIC0zNCw3ICszNCw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCi0gCi0gIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCi0gOiAke0FXSz1hd2t9Ci0tOiAke1RaRElSPWBwd2RgfQotKzogJHtUWkRJUj0kKHB3ZCl9Ci0gCi0gIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KLSAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZjhhMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDk1ODgyYjk4NjRmZjIwZTQ3NmQxNWM2ODI1YzgzNzI4ZWI5OTU5N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDE3LzI4XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0Ci0KLVRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCi0odHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBuc2NkL25zY2QuaW5pdCB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25zY2QvbnNjZC5pbml0IGIvbnNjZC9uc2NkLmluaXQKLWluZGV4IGE4ODJkYTdkOGIuLmIwMjk4NmVjMTUgMTAwNjQ0Ci0tLS0gYS9uc2NkL25zY2QuaW5pdAotKysrIGIvbnNjZC9uc2NkLmluaXQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIwotICMgbnNjZDoJCVN0YXJ0cyB0aGUgTmFtZSBTd2l0Y2ggQ2FjaGUgRGFlbW9uCi0gIwotQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvZz1uc2NkCi0gc3RhcnQgKCkgewotICAgICBbIC1kIC92YXIvcnVuL25zY2QgXSB8fCBta2RpciAvdmFyL3J1bi9uc2NkCi0gICAgIFsgLWQgL3Zhci9kYi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9kYi9uc2NkCi0tICAgIGVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgotICAgICBkYWVtb24gL3Vzci9zYmluL25zY2QKLSAgICAgUkVUVkFMPSQ/Ci0gICAgIGVjaG8KLUBAIC01OCw3ICs1OCw3IEBAIHN0YXJ0ICgpIHsKLSB9Ci0gCi0gc3RvcCAoKSB7Ci0tICAgIGVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdG9wcGluZyAkcHJvZzogIgotICAgICAvdXNyL3NiaW4vbnNjZCAtSwotICAgICBSRVRWQUw9JD8KLSAgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLUBAIC02Nyw5ICs2Nyw5IEBAIHN0b3AgKCkgewotIAkjIGEgbm9uLXByaXZpbGVnZWQgdXNlcgotIAlybSAtZiAvdmFyL3J1bi9uc2NkL25zY2QucGlkCi0gCXJtIC1mIC92YXIvcnVuL25zY2Qvc29ja2V0Ci0tICAgICAgIAlzdWNjZXNzICQiJHByb2cgc2h1dGRvd24iCi0rCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgotICAgICBlbHNlCi0tICAgICAgIAlmYWlsdXJlICQiJHByb2cgc2h1dGRvd24iCi0rCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgotICAgICBmaQotICAgICBlY2hvCi0gICAgIHJldHVybiAkUkVUVkFMCi1AQCAtMTAzLDEzICsxMDMsMTMgQEAgY2FzZSAiJDEiIGluCi0gCVJFVFZBTD0kPwotIAk7OwotICAgICBmb3JjZS1yZWxvYWQgfCByZWxvYWQpCi0tICAgIAllY2hvIC1uICQiUmVsb2FkaW5nICRwcm9nOiAiCi0rCWVjaG8gLW4gIlJlbG9hZGluZyAkcHJvZzogIgotIAlraWxscHJvYyAvdXNyL3NiaW4vbnNjZCAtSFVQCi0gCVJFVFZBTD0kPwotIAllY2hvCi0gCTs7Ci0gICAgICopCi0tCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSsJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCi0gCVJFVFZBTD0xCi0gCTs7Ci0gZXNhYwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MDg5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwyNjAgQEAKK0Zyb20gYzQyMWNkN2U4ODU0OTdhOTkxNzliOTgyZGM0YTI3ZTg0MDVmODg1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKKworSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgorYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKK2ZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCisKK1RoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitpbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK0BAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQoraW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitAQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCisgZWxzZQorICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitAQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCisgICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQoraW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK0BAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitAQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KKyBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCisgICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQoraW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9uaW9zMl9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK2luZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK0BAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9uaW9zMl9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitpbmRleCAyNWY5OGUwYzdiLi5lOTViZmFlMzU5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IDNkYjFiMzJiMDguLmY4Y2QzNzVlYmMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK0BAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCisgTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgCisgbGliY19taXBzX25hbj0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK2luZGV4IGFlN2YyNTRkYTQuLjg3NDUxOTAwMGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCitAQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitAQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKKyAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKKyAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KK0BAIC0xOSw4ICsxOSw4IEBAIGVsc2UKKyAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgorICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKKyAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKKy0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKKyAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWZjNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotRnJvbSA2YjYwM2QyNWNjNTcyM2JhNjMxZGZjNjBiNTQ0Nzc0ZGIxMTQ3ZDgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yOF0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKLQotUG9ydGVkIGZyb20gZWdsaWJjCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZwotCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1AQCAtMCwwICsxLDM4MyBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCi0rJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQotK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKLStpbnZvbHZlZDoKLSsKLSsxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KLSsKLSsyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCi0rICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQotKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKLSsgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgotKwotKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKLSsgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KLSsKLSs0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCi0rICAgYnVpbHQgaW4gc3RlcCAzLgotKwotKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgotKwotK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQwotK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAotK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKLStmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KLStHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jawotK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKLStpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgotKwotK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKLStmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQotK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAotK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCi0rYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCi0rdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KLSsKLSsKLStQcmVwYXJhdGlvbgotKwotK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKLStMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgotK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKLStjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAotK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAotK2FuZCBMaW51eCAzLjEuCi0rCi0rRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAotK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKLSthcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgotKwotKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKLSsgICAgJCBob3N0PSRidWlsZAotKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCi0rICAgICQgbGludXhfYXJjaD1hcm0KLSsKLStXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgotKwotKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCi0rICAgICQgZ2Njdj1nY2MtNC42LjIKLSsgICAgJCBsaW51eHY9bGludXgtMy4xCi0rCi0rV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCi0rY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAotK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAotKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKLSsKLSsgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAotKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKLSsgICAgJCBscyAkc3JjCi0rICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQotKwotK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKLSt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCi0rcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKLStzeXN0ZW0pIGluICdzeXNyb290JzoKLSsKLSsgICAgJCBvYmo9JHRvcC9vYmoKLSsgICAgJCB0b29scz0kdG9wL3Rvb2xzCi0rICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKLSsKLSsKLStCaW51dGlscwotKwotK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscwotKyAgICAkIGNkICRvYmovYmludXRpbHMKLSsgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290Ci0rICAgICQgbWFrZQotKyAgICAkIG1ha2UgaW5zdGFsbAotKwotKwotK1RoZSBGaXJzdCBHQ0MKLSsKLStGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Ci0rc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQotKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCi0raGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0Ci0rYnVpbHQgeWV0KS4KLSsKLStGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90Ci0rdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bwotK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0Ci0rYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJwotK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQotK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKLSsKLStXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQotK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQwotK2xhbmd1YWdlIGlzIG5lZWRlZC4KLSsKLStTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQotKyAgICAkIGNkICRvYmovZ2NjMQotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAotKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStMaW51eCBLZXJuZWwgSGVhZGVycwotKwotK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgotK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgotK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKLStjb3B5IGZpcnN0OgotKwotKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4Ci0rICAgICQgY2QgJG9iai9saW51eAotKwotK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6Ci0rCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKLSsgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKLSsKLSsKLStHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCi0rCi0rVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCi0rd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQotK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKLStjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCi0rR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCi0rc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCi0rcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAotK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAotK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKLStpbnN0YWxsYXRpb25zLgotKwotK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCi0rYmVlbiBpbnN0YWxsZWQuCi0rCi0rVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vawotK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCi0ranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KLStzdXBwb3J0IEFSTSB0YXJnZXRzLgotKwotK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKLStoZWFkZXJzOgotKwotKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLStUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKLStiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKLStkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCi0rJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKLStyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCi0rCi0rTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAotK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgotKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKLSsgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCi0rCi0rRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAotK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAotK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQotK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KLSsKLSsKLStUaGUgU2Vjb25kIEdDQwotKwotK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgotK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAotK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKLSthbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzIKLSsgICAgJCBjZCAkb2JqL2djYzIKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rR0xJQkMsIENvbXBsZXRlCi0rCi0rV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCi0rZnVsbCBHTElCQyBidWlsZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCi0rZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCi0rbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQotKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KLStCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKLStkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKLSsKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKwotK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKLSsKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKLSsKLStBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCi0rd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAotK2ZpbGVzIGluIHBsYWNlLgotKwotKwotK1RoZSBUaGlyZCBHQ0MKLSsKLStGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKLSt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzMKLSsgICAgJCBjZCAkb2JqL2djYzMKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLStUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCi0rZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAotK0dMSUJDLgotKwotK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAotK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCi0rdGhlIHN5c3Jvb3QuCi0rCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCi0rCi0rCi0rVHJ5aW5nIFRoaW5ncyBPdXQKLSsKLStBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKLSt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6Ci0rCi0rICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbwotKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbwotKwotKwotK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCi0rb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbwotKyAgICBFTEYgSGVhZGVyOgotKyAgICAuLi4KLSsgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLSsgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQotKwotKyAgICAuLi4KLSsgICAgUHJvZ3JhbSBIZWFkZXJzOgotKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCi0rICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0Ci0rICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0rICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KLSsgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKLSsgICAgLi4uCi0rCi0rTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCi0rdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCi0rc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCi0rbm90IG91ciBkdW1teSAnbGliYy5zbyc6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKLSsgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6Ci0rICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKLSsgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KLSsgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCi0rICAgIC4uLgotKwotKwotK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgotKwotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2hlbGxvCi0rICAgIEhlbGxvLCB3b3JsZCEKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9jKystaGVsbG8KLSsgICAgSGVsbG8sIEMrKyB3b3JsZCEKLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLUBAIC0wLDAgKzEsMjA1IEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCi0rb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KLSt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgotK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKLStkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKLSt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKLStmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKLStzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCi0rc2ltdWxhdG9yLgotKwotKwotK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCi0rCi0rVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncwotK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgotKwotKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAotKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgotKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAotKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgotKwotKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQotKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKLSsgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKLSsgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0rCi0rCi0rVXNhZ2UKLSsKLStUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKLStmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKLSsKLSstIGNyb3NzLXRlc3Qtd3JhcHBlcgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZwotKyAgd2l0aCBhbnkgYXJndW1lbnRzLgotKwotKy0gY3Jvc3MtbG9jYWxlZGVmCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKLSsgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKLSsgIGFyZ3VtZW50cyBuZWVkZWQuCi0rCi0rVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KLSsKLSsKLStUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCi0rCi0rVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KLStlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCi0rc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbwotK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYwotK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCi0rZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgotK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KLSsKLStGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKLSt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCi0rd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAotK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0Ci0rcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCi0rZGlyZWN0b3JpZXMuCi0rCi0rVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Ci0rc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAotK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKLSthcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKLSsnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCi0rZm9sbG93czoKLSsKLSsgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLStUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAotK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKLStiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCi0rYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCi0rCi0rVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQotKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0Ci0rICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQotKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKLSsgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKLSsgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0Ci0rICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKLSsgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKLSsgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCi0rICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKLSsgIGV4Y2VwdGlvbnMuKQotKwotKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQotKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKLSsgIG1ldGFjaGFyYWN0ZXJzLgotKwotKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cwotKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKLSsgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKLSsgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCi0rICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQotKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgotKwotKwotK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAotKwotK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KLSt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAotKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCi0rY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAotK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKLStjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KLStzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgotKwotK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgotKwotKwotK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAotKwotK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAotK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQotKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAotKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KLSthIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKLStob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAotK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgotK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCi0rdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCi0rbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCi0rc3VpdGFibGUuCi0rCi0rVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cwotK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAotK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KLSsKLSsKLStFeGFtcGxlCi0rCi0rSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKLSt0aGUgZm9sbG93aW5nIHNjcmlwdDoKLSsKLSsgICAgIyEvYmluL3NoCi0rCi0rICAgIHNyY2Rpcj0uLi4KLSsgICAgdGVzdF9ob3N0bmFtZT0uLi4KLSsgICAgbG9jYWxlZGVmZGlyPS4uLgotKyAgICBjcm9zc19neHg9Li4uLWcrKwotKwotKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCi0rICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCi0rCi0rICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAotKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAotKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAotKyAgICAgICAgICIkQCIKLSsKLSsKLStPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCi0rCi0rSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZwotK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCi0rICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKLSsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKLSsgIGRpcmVjdG9yeS4KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBiMGVlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMjAyM2Q4OGMzNTViOGFmNjQ1OGM4ZTM5Y2UzOGI3NWMxY2E0ZWEyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCisKK1RvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQorIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKK2luZGV4IDc1ZjM4ZGY1MjcuLjc0ZTFhYjdmZjcgMTAwNjQ0CistLS0gYS90aW1lem9uZS9NYWtlZmlsZQorKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKK0BAIC0xMjIsNyArMTIyLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKKyAJY3AgJDwgJEAKKyAKKyAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQorLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCisrCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKKyAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCisgCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAorIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAorZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAoraW5kZXggMThmY2UyN2UyNC4uNzA3NDVmOWQzNiAxMDA3NTUKKy0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitAQCAtMzQsNyArMzQsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZworIAorICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgorIDogJHtBV0s9YXdrfQorLTogJHtUWkRJUj1gcHdkYH0KKys6ICR7VFpESVI9JChwd2QpfQorIAorICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCisgIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMTVhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDcyIEBACitGcm9tIDA2ZGEyMGQ5Zjg5OTA3ZTVmMjc3NzUzNzI0NGU2NTg5Y2EzYzk3MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0CisKK1RoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCisodHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBuc2NkL25zY2QuaW5pdCB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25zY2QvbnNjZC5pbml0IGIvbnNjZC9uc2NkLmluaXQKK2luZGV4IGE4ODJkYTdkOGIuLmIwMjk4NmVjMTUgMTAwNjQ0CistLS0gYS9uc2NkL25zY2QuaW5pdAorKysrIGIvbnNjZC9uc2NkLmluaXQKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9iYXNoCisrIyEvYmluL3NoCisgIworICMgbnNjZDoJCVN0YXJ0cyB0aGUgTmFtZSBTd2l0Y2ggQ2FjaGUgRGFlbW9uCisgIworQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvZz1uc2NkCisgc3RhcnQgKCkgeworICAgICBbIC1kIC92YXIvcnVuL25zY2QgXSB8fCBta2RpciAvdmFyL3J1bi9uc2NkCisgICAgIFsgLWQgL3Zhci9kYi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9kYi9uc2NkCistICAgIGVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgorKyAgICBlY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgorICAgICBkYWVtb24gL3Vzci9zYmluL25zY2QKKyAgICAgUkVUVkFMPSQ/CisgICAgIGVjaG8KK0BAIC01OCw3ICs1OCw3IEBAIHN0YXJ0ICgpIHsKKyB9CisgCisgc3RvcCAoKSB7CistICAgIGVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgorKyAgICBlY2hvIC1uICJTdG9wcGluZyAkcHJvZzogIgorICAgICAvdXNyL3NiaW4vbnNjZCAtSworICAgICBSRVRWQUw9JD8KKyAgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KK0BAIC02Nyw5ICs2Nyw5IEBAIHN0b3AgKCkgeworIAkjIGEgbm9uLXByaXZpbGVnZWQgdXNlcgorIAlybSAtZiAvdmFyL3J1bi9uc2NkL25zY2QucGlkCisgCXJtIC1mIC92YXIvcnVuL25zY2Qvc29ja2V0CistICAgICAgIAlzdWNjZXNzICQiJHByb2cgc2h1dGRvd24iCisrCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgorICAgICBlbHNlCistICAgICAgIAlmYWlsdXJlICQiJHByb2cgc2h1dGRvd24iCisrCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgorICAgICBmaQorICAgICBlY2hvCisgICAgIHJldHVybiAkUkVUVkFMCitAQCAtMTAzLDEzICsxMDMsMTMgQEAgY2FzZSAiJDEiIGluCisgCVJFVFZBTD0kPworIAk7OworICAgICBmb3JjZS1yZWxvYWQgfCByZWxvYWQpCistICAgIAllY2hvIC1uICQiUmVsb2FkaW5nICRwcm9nOiAiCisrCWVjaG8gLW4gIlJlbG9hZGluZyAkcHJvZzogIgorIAlraWxscHJvYyAvdXNyL3NiaW4vbnNjZCAtSFVQCisgCVJFVFZBTD0kPworIAllY2hvCisgCTs7CisgICAgICopCistCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKysJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCisgCVJFVFZBTD0xCisgCTs7CisgZXNhYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzM2RiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIDI4NjRhYWFlOTg0ZDk0NTQ0NWYzZjc5ODY5YzcwM2UwYjc5MWRmODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE5LzI4XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgotCi1UYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQotCi0gICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgotICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKLSAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KLQotICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcwotICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgotICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCi0gICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgotICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCi0gaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA5ZmJmNzA1MjAwLi42NGJmZDQ1NWJjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCi0gdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCi0gCi0gIyBXaGF0IHRvIGluc3RhbGwuCi0taW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBpbnN0YWxsLWJpbi1zY3JpcHQgPQotIAotKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCi0rIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCi0rIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKLSsjIGJ1aWxkIGlzIGRvbmUuCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0raW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbHNlCi0raW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbmRpZgotKwotIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCi0gaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKLSBlbmRpZgotQEAgLTE5Niw2ICsyMDUsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAotIAotIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKLSAKLSsjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubwotKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5Ci0rIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLSskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCi0rCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotKwkkKElOU1RBTExfREFUQSkgJDwgJEAKLSsKLStpbnN0YWxsZWQtc3R1YnMgPQotK2Vsc2UKLSBpZm5kZWYgYWJpLXZhcmlhbnRzCi0gaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gZWxzZQotQEAgLTIyMiw2ICsyNDEsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQotIAotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKLSBlbmRpZgotK2VuZGlmCi0gCi0gCi0gIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCi0rCi0rICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCi0rICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0Ci0rICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgotKwotKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCi0rICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQotKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKLSsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjVhZDY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotRnJvbSBlMjY2NzA4NmJmOTg0ZGU0ZDNmMTIyNmI5NDY3NzYxY2Q1YTRjMzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTU6MTU6MDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yOF0gZWdsaWJjOiBDbGVhciBjYWNoZSBsaW5lcyBvbiBwcGM4eHgKLQotMjAwNy0wNi0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAgICAgICAgICAgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLSAgICAgICAgKF9fbGliY19zdGFydF9tYWluKTogRGV0ZWN0IDh4eCBwYXJ0cyBhbmQgY2xlYXIKLSAgICAgICAgX19jYWNoZV9saW5lX3NpemUgaWYgZGV0ZWN0ZWQuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotICAgICAgICAoRExfUExBVEZPUk1fQVVYVik6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgIHwgMTQgKysrKysrKysrKysrKy0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyB8IDE2ICsrKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotaW5kZXggYjA0ZWNjNGE0Yy4uNzViZGE5NzI0MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLUBAIC0yNCw5ICsyNCwyMSBAQCBpbnQgX19jYWNoZV9saW5lX3NpemUgYXR0cmlidXRlX2hpZGRlbjsKLSAvKiBTY2FuIHRoZSBBdXggVmVjdG9yIGZvciB0aGUgIkRhdGEgQ2FjaGUgQmxvY2sgU2l6ZSIgZW50cnkuICBJZiBmb3VuZAotICAgIHZlcmlmeSB0aGF0IHRoZSBzdGF0aWMgZXh0ZXJuIF9fY2FjaGVfbGluZV9zaXplIGlzIGRlZmluZWQgYnkgY2hlY2tpbmcKLSAgICBmb3Igbm90IE5VTEwuICBJZiBpdCBpcyBkZWZpbmVkIHRoZW4gYXNzaWduIHRoZSBjYWNoZSBibG9jayBzaXplCi0tICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICAqLwotKyAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0bwotKyAgIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8gZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaAotKyAgIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzCi0rICAgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwgd2hpY2ggaXMgYSBwcml2aWxlZ2VkCi0rICAgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlciBlbXVsYXRlcyBQb3dlclBDIG1mc3ByCi0rICAgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgICovCi0gI2RlZmluZSBETF9QTEFURk9STV9BVVhWCQkJCQkJICAgICAgXAotICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6CQkJCQkJICAgICAgXAotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkJCQkJICAgICAgXAotKwkgIHsJCQkJCQkJCSAgICAgIFwKLSsJICAgIHVuc2lnbmVkIHB2ciA9IDA7CQkJCQkJICAgICAgXAotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpKTsJCQkJICAgICAgXAotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQkJCSAgICAgIFwKLSsJICAgICAgYnJlYWs7CQkJCQkJCSAgICAgIFwKLSsJICB9CQkJCQkJCQkgICAgICBcCi0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7CQkJCSAgICAgIFwKLSAJYnJlYWs7Ci0gCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotaW5kZXggNGZkNWY3MDcwMC4uMWEyMWU0Njc1YyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotQEAgLTczLDExICs3MywyNSBAQCBfX2xpYmNfc3RhcnRfbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2LAotIAotICAgLyogSW5pdGlhbGl6ZSB0aGUgX19jYWNoZV9saW5lX3NpemUgdmFyaWFibGUgZnJvbSB0aGUgYXV4IHZlY3Rvci4gIEZvciB0aGUKLSAgICAgIHN0YXRpYyBjYXNlLCB3ZSBhbHNvIG5lZWQgX2RsX2h3Y2FwLCBfZGxfaHdjYXAyIGFuZCBfZGxfcGxhdGZvcm0sIHNvIHdlCi0tICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4gICovCi0rICAgICBjYW4gY2FsbCBfX3RjYl9wYXJzZV9od2NhcF9hbmRfY29udmVydF9hdF9wbGF0Zm9ybSAoKS4KLSsKLSsgICAgIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8gb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0bwotKyAgICAgZGV0ZWN0IDh4eCBwcm9jZXNzb3JzLCB3aGljaCBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQKLSsgICAgIGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMgY29ycmVjdGx5LiAgVGhhdCByZXF1aXJlcyByZWFkaW5nIFNQUiwKLSsgICAgIHdoaWNoIGlzIGEgcHJpdmlsZWdlZCBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyCi0rICAgICBlbXVsYXRlcyBQb3dlclBDIG1mc3ByIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICovCi0gICBmb3IgKEVsZlcgKGF1eHZfdCkgKiBhdiA9IGF1eHZlYzsgYXYtPmFfdHlwZSAhPSBBVF9OVUxMOyArK2F2KQotICAgICBzd2l0Y2ggKGF2LT5hX3R5cGUpCi0gICAgICAgewotICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6Ci0rCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQotKwkgIHsKLSsJICAgIHVuc2lnbmVkIHB2ciA9IDA7Ci0rCi0rCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikgOik7Ci0rCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCi0rCSAgICAgIGJyZWFrOwotKwkgIH0KLSAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsKLSAJYnJlYWs7Ci0gI2lmbmRlZiBTSEFSRUQKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRhNTU2NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCkBAIC0wLDAgKzEsNjE2IEBACitGcm9tIDU2NDE0NTJhMjRmNzZjNWRhZmEzNzQ5YTU0MmZjYWM5M2Y3NzM5MGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0Mjo1OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IENyb3NzIGJ1aWxkaW5nIGFuZCB0ZXN0aW5nIGluc3RydWN0aW9ucworCitQb3J0ZWQgZnJvbSBlZ2xpYmMKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgR0xJQkMuY3Jvc3MtYnVpbGRpbmcgfCAzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1ODggaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy1idWlsZGluZworIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy10ZXN0aW5nCisKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy1idWlsZGluZyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uZTZlMGRhMWFhZgorLS0tIC9kZXYvbnVsbAorKysrIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKK0BAIC0wLDAgKzEsMzgzIEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1Db21waWxpbmcgR0xJQkMKKysgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisrCisrCisrSW50cm9kdWN0aW9uCisrCisrTW9zdCBHTlUgdG9vbHMgaGF2ZSBhIHNpbXBsZSBidWlsZCBwcm9jZWR1cmU6IHlvdSBydW4gdGhlaXIKKysnY29uZmlndXJlJyBzY3JpcHQsIGFuZCB0aGVuIHlvdSBydW4gJ21ha2UnLiAgVW5mb3J0dW5hdGVseSwgdGhlCisrcHJvY2VzcyBvZiBjcm9zcy1jb21waWxpbmcgdGhlIEdOVSBDIGxpYnJhcnkgaXMgcXVpdGUgYSBiaXQgbW9yZQorK2ludm9sdmVkOgorKworKzEpIEJ1aWxkIGEgY3Jvc3MtY29tcGlsZXIsIHdpdGggY2VydGFpbiBmYWNpbGl0aWVzIGRpc2FibGVkLgorKworKzIpIENvbmZpZ3VyZSB0aGUgQyBsaWJyYXJ5IHVzaW5nIHRoZSBjb21waWxlciB5b3UgYnVpbHQgaW4gc3RlcCAxKS4KKysgICBCdWlsZCBhIGZldyBvZiB0aGUgQyBydW4tdGltZSBvYmplY3QgZmlsZXMsIGJ1dCBub3QgdGhlIHJlc3Qgb2YgdGhlCisrICAgbGlicmFyeS4gIEluc3RhbGwgdGhlIGxpYnJhcnkncyBoZWFkZXIgZmlsZXMgYW5kIHRoZSBydW4tdGltZQorKyAgIG9iamVjdCBmaWxlcywgYW5kIGNyZWF0ZSBhIGR1bW15IGxpYmMuc28uCisrCisrMykgQnVpbGQgYSBzZWNvbmQgY3Jvc3MtY29tcGlsZXIsIHVzaW5nIHRoZSBoZWFkZXIgZmlsZXMgYW5kIG9iamVjdAorKyAgIGZpbGVzIHlvdSBpbnN0YWxsZWQgaW4gc3RlcCAyLgorKworKzQpIENvbmZpZ3VyZSwgYnVpbGQsIGFuZCBpbnN0YWxsIGEgZnJlc2ggQyBsaWJyYXJ5LCB1c2luZyB0aGUgY29tcGlsZXIKKysgICBidWlsdCBpbiBzdGVwIDMuCisrCisrNSkgQnVpbGQgYSB0aGlyZCBjcm9zcy1jb21waWxlciwgYmFzZWQgb24gdGhlIEMgbGlicmFyeSBidWlsdCBpbiBzdGVwIDQuCisrCisrVGhlIHJlYXNvbiBmb3IgdGhpcyBjb21wbGV4aXR5IGlzIHRoYXQsIGFsdGhvdWdoIEdDQyBhbmQgdGhlIEdOVSBDCisrbGlicmFyeSBhcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSwgdGhleSBhcmUgbm90IGFjdHVhbGx5IGluZGVwZW5kZW50Cisrb2YgZWFjaCBvdGhlcjogR0NDIHJlcXVpcmVzIHRoZSBDIGxpYnJhcnkncyBoZWFkZXJzIGFuZCBzb21lIG9iamVjdAorK2ZpbGVzIHRvIGNvbXBpbGUgaXRzIG93biBsaWJyYXJpZXMsIHdoaWxlIHRoZSBDIGxpYnJhcnkgZGVwZW5kcyBvbgorK0dDQydzIGxpYnJhcmllcy4gIEdMSUJDIGluY2x1ZGVzIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMgdG8gdGhlIHN0b2NrCisrR05VIEMgbGlicmFyeSB0aGF0IHNpbXBsaWZ5IHRoaXMgcHJvY2VzcywgYnV0IHRoZSBmdW5kYW1lbnRhbAorK2ludGVyZGVwZW5kZW5jeSBzdGFuZHMuCisrCisrSW4gdGhpcyBkb2N1bWVudCwgd2UgZXhwbGFpbiBob3cgdG8gY3Jvc3MtY29tcGlsZSBhbiBHTElCQy9HQ0MgcGFpcgorK2Zyb20gc291cmNlLiAgT3VyIGludGVuZGVkIGF1ZGllbmNlIGlzIGRldmVsb3BlcnMgd2hvIGFyZSBhbHJlYWR5CisrZmFtaWxpYXIgd2l0aCB0aGUgR05VIHRvb2xjaGFpbiBhbmQgY29tZm9ydGFibGUgd29ya2luZyB3aXRoCisrY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuICBXaGlsZSB3ZSBkbyBwcmVzZW50IGEgd29ya2VkIGV4YW1wbGUgdG8KKythY2NvbXBhbnkgdGhlIGV4cGxhbmF0aW9uLCBmb3IgY2xhcml0eSdzIHNha2Ugd2UgZG8gbm90IGNvdmVyIG1hbnkgb2YKKyt0aGUgb3B0aW9ucyBhdmFpbGFibGUgdG8gY3Jvc3MtdG9vbGNoYWluIHVzZXJzLgorKworKworK1ByZXBhcmF0aW9uCisrCisrR0xJQkMgcmVxdWlyZXMgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBHTlUgYmludXRpbHMsIEdDQywgYW5kIHRoZQorK0xpbnV4IGtlcm5lbC4gIFRoZSB3ZWIgcGFnZSA8aHR0cDovL3d3dy5lZ2xpYmMub3JnL3ByZXJlcXVpc2l0ZXM+CisrZG9jdW1lbnRzIHRoZSBjdXJyZW50IHJlcXVpcmVtZW50cywgYW5kIGxpc3RzIHBhdGNoZXMgbmVlZGVkIGZvcgorK2NlcnRhaW4gdGFyZ2V0IGFyY2hpdGVjdHVyZXMuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXNlIGJ1aWxkCisraW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiB0ZXN0ZWQgd2l0aCBiaW51dGlscyAyLjIyLjUxLCBHQ0MgNC42LjIsCisrYW5kIExpbnV4IDMuMS4KKysKKytGaXJzdCwgbGV0J3Mgc2V0IHNvbWUgdmFyaWFibGVzLCB0byBzaW1wbGlmeSBsYXRlciBjb21tYW5kcy4gIFdlJ2xsCisrYnVpbGQgR0xJQkMgYW5kIEdDQyBmb3IgYW4gQVJNIHRhcmdldCwga25vd24gdG8gdGhlIExpbnV4IGtlcm5lbAorK2FzICdhcm0nLCBhbmQgd2UnbGwgZG8gdGhlIGJ1aWxkIG9uIGFuIEludGVsIHg4Nl82NCBMaW51eCBib3g6CisrCisrICAgICQgYnVpbGQ9eDg2XzY0LXBjLWxpbnV4LWdudQorKyAgICAkIGhvc3Q9JGJ1aWxkCisrICAgICQgdGFyZ2V0PWFybS1ub25lLWxpbnV4LWdudWVhYmkKKysgICAgJCBsaW51eF9hcmNoPWFybQorKworK1dlJ3JlIHVzaW5nIHRoZSBhZm9yZW1lbnRpb25lZCB2ZXJzaW9ucyBvZiBCaW51dGlscywgR0NDLCBhbmQgTGludXg6CisrCisrICAgICQgYmludXRpbHN2PWJpbnV0aWxzLTIuMjIuNTEKKysgICAgJCBnY2N2PWdjYy00LjYuMgorKyAgICAkIGxpbnV4dj1saW51eC0zLjEKKysKKytXZSdyZSBjYXJyeWluZyBvdXQgdGhlIGVudGlyZSBwcm9jZXNzIHVuZGVyICd+L2Nyb3NzLWJ1aWxkJywgd2hpY2gKKytjb250YWlucyB1bnBhY2tlZCBzb3VyY2UgdHJlZXMgZm9yIGJpbnV0aWxzLCBnY2MsIGFuZCBsaW51eCBrZXJuZWwsCisrYWxvbmcgd2l0aCBHTElCQyBzdm4gdHJ1bmsgKHdoaWNoIGNhbiBiZSBjaGVja2VkLW91dCB3aXRoCisrJ3N2biBjbyBodHRwOi8vd3d3LmVnbGliYy5vcmcvc3ZuL3RydW5rIGVnbGliYycpOgorKworKyAgICAkIHRvcD0kSE9NRS9jcm9zcy1idWlsZC8kdGFyZ2V0CisrICAgICQgc3JjPSRIT01FL2Nyb3NzLWJ1aWxkL3NyYworKyAgICAkIGxzICRzcmMKKysgICAgYmludXRpbHMtMi4yMi41MSAgZ2xpYmMgIGdjYy00LjYuMiAgbGludXgtMy4xCisrCisrV2UncmUgZ29pbmcgdG8gcGxhY2Ugb3VyIGJ1aWxkIGRpcmVjdG9yaWVzIGluIGEgc3ViZGlyZWN0b3J5ICdvYmonLAorK3dlJ2xsIGluc3RhbGwgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbiAndG9vbHMnLCBhbmQgd2UnbGwKKytwbGFjZSBvdXIgc3lzcm9vdCAoY29udGFpbmluZyBmaWxlcyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIHRhcmdldAorK3N5c3RlbSkgaW4gJ3N5c3Jvb3QnOgorKworKyAgICAkIG9iaj0kdG9wL29iagorKyAgICAkIHRvb2xzPSR0b3AvdG9vbHMKKysgICAgJCBzeXNyb290PSR0b3Avc3lzcm9vdAorKworKworK0JpbnV0aWxzCisrCisrQ29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGJpbnV0aWxzIGZvciB0aGUgdGFyZ2V0IGlzIHN0cmFpZ2h0Zm9yd2FyZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2JpbnV0aWxzCisrICAgICQgY2QgJG9iai9iaW51dGlscworKyAgICAkICRzcmMvJGJpbnV0aWxzdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QKKysgICAgJCBtYWtlCisrICAgICQgbWFrZSBpbnN0YWxsCisrCisrCisrVGhlIEZpcnN0IEdDQworKworK0ZvciBvdXIgd29yaywgd2UgbmVlZCBhIGNyb3NzLWNvbXBpbGVyIHRhcmdldGluZyBhbiBBUk0gTGludXgKKytzeXN0ZW0uICBIb3dldmVyLCB0aGF0IGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgdGhlIHNoYXJlZCBsaWJyYXJ5CisrJ2xpYmdjY19zLnNvJywgd2hpY2ggaXMgY29tcGlsZWQgYWdhaW5zdCB0aGUgR0xJQkMgaGVhZGVycyAod2hpY2ggd2UKKytoYXZlbid0IGluc3RhbGxlZCB5ZXQpIGFuZCBsaW5rZWQgYWdhaW5zdCAnbGliYy5zbycgKHdoaWNoIHdlIGhhdmVuJ3QKKytidWlsdCB5ZXQpLgorKworK0ZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBHQ0Mgd2hpY2ggdGVsbCBpdCBub3QKKyt0byBidWlsZCAnbGliZ2NjX3Muc28nLiAgVGhlICctLXdpdGhvdXQtaGVhZGVycycgb3B0aW9uIGlzIHN1cHBvc2VkIHRvCisrdGFrZSBjYXJlIG9mIHRoaXMsIGJ1dCBpdHMgaW1wbGVtZW50YXRpb24gaXMgaW5jb21wbGV0ZSwgc28geW91IG11c3QKKythbHNvIGNvbmZpZ3VyZSB3aXRoIHRoZSAnLS13aXRoLW5ld2xpYicgb3B0aW9uLiAgV2hpbGUgJy0td2l0aC1uZXdsaWInCisrYXBwZWFycyB0byBtZWFuICJVc2UgdGhlIE5ld2xpYiBDIGxpYnJhcnkiLCBpdHMgZWZmZWN0IGlzIHRvIHRlbGwgdGhlCisrR0NDIGJ1aWxkIG1hY2hpbmVyeSwgIkRvbid0IGFzc3VtZSB0aGVyZSBpcyBhIEMgbGlicmFyeSBhdmFpbGFibGUuIgorKworK1dlIGFsc28gbmVlZCB0byBkaXNhYmxlIHNvbWUgb2YgdGhlIGxpYnJhcmllcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlCisrYnVpbHQgYWxvbmcgd2l0aCBHQ0MsIGFuZCBzcGVjaWZ5IHRoYXQgb25seSB0aGUgY29tcGlsZXIgZm9yIHRoZSBDCisrbGFuZ3VhZ2UgaXMgbmVlZGVkLgorKworK1NvLCB3ZSBjcmVhdGUgYSBidWlsZCBkaXJlY3RvcnksIGNvbmZpZ3VyZSwgbWFrZSwgYW5kIGluc3RhbGwuCisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MxCisrICAgICQgY2QgJG9iai9nY2MxCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiBcCisrICAgID4gICAgIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXRocmVhZHMgLS1kaXNhYmxlLWxpYnNzcCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1kZWNpbWFsLWZsb2F0IC0tZGlzYWJsZS1saWJmZmkgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworKworK0xpbnV4IEtlcm5lbCBIZWFkZXJzCisrCisrVG8gY29uZmlndXJlIEdMSUJDLCB3ZSBhbHNvIG5lZWQgTGludXgga2VybmVsIGhlYWRlcnMgaW4gcGxhY2UuCisrRm9ydHVuYXRlbHksIHRoZSBMaW51eCBtYWtlZmlsZXMgaGF2ZSBhIHRhcmdldCB0aGF0IGluc3RhbGxzIHRoZW0gZm9yCisrdXMuICBTaW5jZSB0aGUgcHJvY2VzcyBkb2VzIG1vZGlmeSB0aGUgc291cmNlIHRyZWUgYSBiaXQsIHdlIG1ha2UgYQorK2NvcHkgZmlyc3Q6CisrCisrICAgICQgY3AgLXIgJHNyYy8kbGludXh2ICRvYmovbGludXgKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrCisrTm93IHdlJ3JlIHJlYWR5IHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgaW50byB0aGUgc3lzcm9vdDoKKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggXAorKyAgICA+IG1ha2UgaGVhZGVyc19pbnN0YWxsIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgID4gICAgICBJTlNUQUxMX0hEUl9QQVRIPSRzeXNyb290L3VzcgorKworKworK0dMSUJDIEhlYWRlcnMgYW5kIFByZWxpbWluYXJ5IE9iamVjdHMKKysKKytVc2luZyB0aGUgY3Jvc3MtY29tcGlsZXIgd2UndmUganVzdCBidWlsdCwgd2UgY2FuIG5vdyBjb25maWd1cmUgR0xJQkMKKyt3ZWxsIGVub3VnaCB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGFuZCBidWlsZCB0aGUgb2JqZWN0IGZpbGVzIHRoYXQgdGhlCisrZnVsbCBjcm9zcy1jb21waWxlciB3aWxsIG5lZWQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nbGliYy1oZWFkZXJzCisrICAgICQgY2QgJG9iai9nbGliYy1oZWFkZXJzCisrICAgICQgQlVJTERfQ0M9Z2NjIFwKKysgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKKysgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCisrICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKKysgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCisrICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tcHJlZml4PS91c3IgXAorKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytUaGUgb3B0aW9uICctLXByZWZpeD0vdXNyJyBtYXkgbG9vayBzdHJhbmdlLCBidXQgeW91IHNob3VsZCBuZXZlcgorK2NvbmZpZ3VyZSBHTElCQyB3aXRoIGEgcHJlZml4IG90aGVyIHRoYW4gJy91c3InOiBpbiB2YXJpb3VzIHBsYWNlcywKKytHTElCQydzIGJ1aWxkIHN5c3RlbSBjaGVja3Mgd2hldGhlciB0aGUgcHJlZml4IGlzICcvdXNyJywgYW5kIGRvZXMKKytzcGVjaWFsIGhhbmRsaW5nIG9ubHkgaWYgdGhhdCBpcyB0aGUgY2FzZS4gIFVubGVzcyB5b3UgdXNlIHRoaXMKKytwcmVmaXgsIHlvdSB3aWxsIGdldCBhIHN5c3Jvb3QgdGhhdCBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIExpbnV4CisrZGlyZWN0b3J5IGxheW91dHMgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzaXMgZm9yIHRoZSByb290CisrZmlsZXN5c3RlbSBvbiB5b3VyIHRhcmdldCBzeXN0ZW0gY29tcGF0aWJseSB3aXRoIG5vcm1hbCBHTElCQworK2luc3RhbGxhdGlvbnMuCisrCisrVGhlICctLXdpdGgtaGVhZGVycycgb3B0aW9uIHRlbGxzIEdMSUJDIHdoZXJlIHRoZSBMaW51eCBoZWFkZXJzIGhhdmUKKytiZWVuIGluc3RhbGxlZC4KKysKKytUaGUgJy0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMnIG9wdGlvbiB0ZWxscyBHTElCQyB0byBsb29rCisrZm9yIHRoZSBsaXN0ZWQgZ2xpYmMgYWRkLW9ucy4gTW9zdCBub3RhYmx5IHRoZSBwb3J0cyBhZGQtb24gKGxvY2F0ZWQKKytqdXN0IGFib3ZlIHRoZSBsaWJjIHNvdXJjZXMgaW4gdGhlIEdMSUJDIHN2biB0cmVlKSBpcyByZXF1aXJlZCB0bworK3N1cHBvcnQgQVJNIHRhcmdldHMuCisrCisrV2UgY2FuIG5vdyB1c2UgdGhlICdpbnN0YWxsLWhlYWRlcnMnIG1ha2VmaWxlIHRhcmdldCB0byBpbnN0YWxsIHRoZQorK2hlYWRlcnM6CisrCisrICAgICQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbF9yb290PSRzeXNyb290IFwKKysgICAgPiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcworKworK1RoZSAnaW5zdGFsbF9yb290JyB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGZpbGVzIHNob3VsZCBhY3R1YWxseQorK2JlIGluc3RhbGxlZDsgaXRzIHZhbHVlIGlzIHRyZWF0ZWQgYXMgdGhlIHBhcmVudCBvZiB0aGUgJy0tcHJlZml4JworK2RpcmVjdG9yeSB3ZSBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIHRoZSBoZWFkZXJzIHdpbGwgZ28gaW4KKysnJHN5c3Jvb3QvdXNyL2luY2x1ZGUnLiAgVGhlICdpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzJyB2YXJpYWJsZQorK3JlcXVlc3RzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGNlcnRhaW4gdHJpY2t5IGhlYWRlciBmaWxlcy4KKysKKytOZXh0LCB0aGVyZSBhcmUgYSBmZXcgb2JqZWN0IGZpbGVzIG5lZWRlZCB0byBsaW5rIHNoYXJlZCBsaWJyYXJpZXMsCisrd2hpY2ggd2UgYnVpbGQgYW5kIGluc3RhbGwgYnkgaGFuZDoKKysKKysgICAgJCBta2RpciAtcCAkc3lzcm9vdC91c3IvbGliCisrICAgICQgbWFrZSBjc3Uvc3ViZGlyX2xpYgorKyAgICAkIGNwIGNzdS9jcnQxLm8gY3N1L2NydGkubyBjc3UvY3J0bi5vICRzeXNyb290L3Vzci9saWIKKysKKytGaW5hbGx5LCAnbGliZ2NjX3Muc28nIHJlcXVpcmVzIGEgJ2xpYmMuc28nIHRvIGxpbmsgYWdhaW5zdC4gIEhvd2V2ZXIsCisrc2luY2Ugd2Ugd2lsbCBuZXZlciBhY3R1YWxseSBleGVjdXRlIGl0cyBjb2RlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0CisraXQgY29udGFpbnMuICBTbywgdHJlYXRpbmcgJy9kZXYvbnVsbCcgYXMgYSBDIHNvdXJjZSBmaWxlLCB3ZSBwcm9kdWNlCisrYSBkdW1teSAnbGliYy5zbycgaW4gb25lIHN0ZXA6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtc2hhcmVkIC14IGMgL2Rldi9udWxsIFwKKysgICAgPiAgICAgICAgICAgICAgICAgICAgICAgIC1vICRzeXNyb290L3Vzci9saWIvbGliYy5zbworKworKworK1RoZSBTZWNvbmQgR0NDCisrCisrV2l0aCB0aGUgR0xJQkMgaGVhZGVycyBhbmQgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIGluc3RhbGxlZCwgd2UgY2FuCisrbm93IGJ1aWxkIGEgR0NDIHRoYXQgaXMgY2FwYWJsZSBvZiBjb21waWxpbmcgR0xJQkMuICBXZSBjb25maWd1cmUsCisrYnVpbGQsIGFuZCBpbnN0YWxsIHRoZSBzZWNvbmQgR0NDLCBhZ2FpbiBidWlsZGluZyBvbmx5IHRoZSBDIGNvbXBpbGVyLAorK2FuZCBhdm9pZGluZyBsaWJyYXJpZXMgd2Ugd29uJ3QgdXNlOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMgorKyAgICAkIGNkICRvYmovZ2NjMgorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJmZmkgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytHTElCQywgQ29tcGxldGUKKysKKytXaXRoIHRoZSBzZWNvbmQgY29tcGlsZXIgYnVpbHQgYW5kIGluc3RhbGxlZCwgd2UncmUgbm93IHJlYWR5IGZvciB0aGUKKytmdWxsIEdMSUJDIGJ1aWxkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgQlVJTERfQ0M9Z2NjIFwKKysgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKKysgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCisrICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKKysgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCisrICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tcHJlZml4PS91c3IgXAorKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCisrICAgID4gICAgIC0td2l0aC1rY29uZmlnPSRvYmovbGludXgvc2NyaXB0cy9rY29uZmlnIFwKKysgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAorKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKKysgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cworKworK05vdGUgdGhlIGFkZGl0aW9uYWwgJy0td2l0aC1rY29uZmlnJyBvcHRpb24uIFRoaXMgdGVsbHMgR0xJQkMgd2hlcmUgdG8KKytmaW5kIHRoZSBob3N0IGNvbmZpZyB0b29scyB1c2VkIGJ5IHRoZSBrZXJuZWwgJ21ha2UgY29uZmlnJyBhbmQgJ21ha2UKKyttZW51Y29uZmlnJy4gIFRoZXNlIHRvb2xzIGNhbiBiZSByZS11c2VkIGJ5IEdMSUJDIGZvciBpdHMgb3duICdtYWtlCisrKmNvbmZpZycgc3VwcG9ydCwgd2hpY2ggd2lsbCBjcmVhdGUgJ29wdGlvbi1ncm91cHMuY29uZmlnJyBmb3IgeW91LgorK0J1dCBmaXJzdCBtYWtlIHN1cmUgdGhvc2UgdG9vbHMgaGF2ZSBiZWVuIGJ1aWx0IGJ5IHJ1bm5pbmcgc29tZQorK2R1bW15ICdtYWtlICpjb25maWcnIGNhbGxzIGluIHRoZSBrZXJuZWwgZGlyZWN0b3J5OgorKworKyAgICAkIGNkICRvYmovbGludXgKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBjb25maWcgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrCisrTm93IHdlIGNhbiBjb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBmdWxsIEdMSUJDOgorKworKyAgICAkIGNkICRvYmovZ2xpYmMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBkZWZjb25maWcKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsIGluc3RhbGxfcm9vdD0kc3lzcm9vdAorKworK0F0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBjb21wbGV0ZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JywKKyt3aXRoIGhlYWRlciBmaWxlcywgbGlicmFyeSBmaWxlcywgYW5kIG1vc3Qgb2YgdGhlIEMgcnVudGltZSBzdGFydHVwCisrZmlsZXMgaW4gcGxhY2UuCisrCisrCisrVGhlIFRoaXJkIEdDQworKworK0ZpbmFsbHksIHdlIHJlY29tcGlsZSBHQ0MgYWdhaW5zdCB0aGlzIGZ1bGwgaW5zdGFsbGF0aW9uLCBlbmFibGluZworK3doYXRldmVyIGxhbmd1YWdlcyBhbmQgbGlicmFyaWVzIHdlIHdvdWxkIGxpa2UgdG8gdXNlOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMworKyAgICAkIGNkICRvYmovZ2NjMworKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKKysgICAgPiAgICAgLS1lbmFibGUtX19jeGFfYXRleGl0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworK1RoZSAnLS1lbmFibGUtX19jeGFfYXRleGl0JyBvcHRpb24gdGVsbHMgR0NDIHdoYXQgc29ydCBvZiBDKysKKytkZXN0cnVjdG9yIHN1cHBvcnQgdG8gZXhwZWN0IGZyb20gdGhlIEMgbGlicmFyeTsgaXQncyByZXF1aXJlZCB3aXRoCisrR0xJQkMuCisrCisrQW5kIHNpbmNlIEdDQydzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzbid0IGRlc2lnbmVkIHRvIGhlbHAgY29uc3RydWN0Cisrc3lzcm9vdCB0cmVlcywgd2UgbXVzdCBtYW51YWxseSBjb3B5IGNlcnRhaW4gbGlicmFyaWVzIGludG8gcGxhY2UgaW4KKyt0aGUgc3lzcm9vdC4KKysKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGliZ2NjX3Muc28qICRzeXNyb290L2xpYgorKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJzdGRjKysuc28qICRzeXNyb290L3Vzci9saWIKKysKKysKKytUcnlpbmcgVGhpbmdzIE91dAorKworK0F0IHRoaXMgcG9pbnQsICckdG9vbHMnIGNvbnRhaW5zIGEgY3Jvc3MgdG9vbGNoYWluIHJlYWR5IHRvIHVzZQorK3RoZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JzoKKysKKysgICAgJCBjYXQgPiBoZWxsby5jIDw8RU9GCisrICAgID4gI2luY2x1ZGUgPHN0ZGlvLmg+CisrICAgID4gaW50CisrICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyAgICA+IHsKKysgICAgPiAgIHB1dHMgKCJIZWxsbywgd29ybGQhIik7CisrICAgID4gICByZXR1cm4gMDsKKysgICAgPiB9CisrICAgID4gRU9GCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtV2FsbCBoZWxsby5jIC1vIGhlbGxvCisrICAgICQgY2F0ID4gYysrLWhlbGxvLmNjIDw8RU9GCisrICAgID4gI2luY2x1ZGUgPGlvc3RyZWFtPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBzdGQ6OmNvdXQgPDwgIkhlbGxvLCBDKysgd29ybGQhIiA8PCBzdGQ6OmVuZGw7CisrICAgID4gICByZXR1cm4gMDsKKysgICAgPiB9CisrICAgID4gRU9GCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyAtV2FsbCBjKystaGVsbG8uY2MgLW8gYysrLWhlbGxvCisrCisrCisrV2UgY2FuIHVzZSAncmVhZGVsZicgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGluZGVlZCBleGVjdXRhYmxlcyBmb3IKKytvdXIgdGFyZ2V0LCB1c2luZyBvdXIgZHluYW1pYyBsaW5rZXI6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWhsIGhlbGxvCisrICAgIEVMRiBIZWFkZXI6CisrICAgIC4uLgorKyAgICAgIFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQyAoRXhlY3V0YWJsZSBmaWxlKQorKyAgICAgIE1hY2hpbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJNCisrCisrICAgIC4uLgorKyAgICBQcm9ncmFtIEhlYWRlcnM6CisrICAgICAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgVmlydEFkZHIgICBQaHlzQWRkciAgIEZpbGVTaXogTWVtU2l6ICBGbGcgQWxpZ24KKysgICAgICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDEwMDAwMDM0IDB4MTAwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKKysgICAgICBJTlRFUlAgICAgICAgICAweDAwMDEzNCAweDAwMDA4MTM0IDB4MDAwMDgxMzQgMHgwMDAxMyAweDAwMDEzIFIgICAweDEKKysgICAgICAgICAgW1JlcXVlc3RpbmcgcHJvZ3JhbSBpbnRlcnByZXRlcjogL2xpYi9sZC1saW51eC5zby4zXQorKyAgICAgIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDAwMDgwMDAgMHgwMDAwODAwMCAweDAwNDJjIDB4MDA0MmMgUiBFIDB4ODAwMAorKyAgICAuLi4KKysKKytMb29raW5nIGF0IHRoZSBkeW5hbWljIHNlY3Rpb24gb2YgdGhlIGluc3RhbGxlZCAnbGliZ2NjX3Muc28nLCB3ZSBzZWUKKyt0aGF0IHRoZSAnTkVFREVEJyBlbnRyeSBmb3IgdGhlIEMgbGlicmFyeSBkb2VzIGluY2x1ZGUgdGhlICcuNicKKytzdWZmaXgsIGluZGljYXRpbmcgdGhhdCB3YXMgbGlua2VkIGFnYWluc3Qgb3VyIGZ1bGx5IGJ1aWxkIEdMSUJDLCBhbmQKKytub3Qgb3VyIGR1bW15ICdsaWJjLnNvJzoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtZCAkc3lzcm9vdC9saWIvbGliZ2NjX3Muc28uMQorKyAgICBEeW5hbWljIHNlY3Rpb24gYXQgb2Zmc2V0IDB4MTA4M2MgY29udGFpbnMgMjQgZW50cmllczoKKysgICAgICBUYWcgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZS9WYWx1ZQorKyAgICAgMHgwMDAwMDAwMSAoTkVFREVEKSAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBsaWJyYXJ5OiBbbGliYy5zby42XQorKyAgICAgMHgwMDAwMDAwZSAoU09OQU1FKSAgICAgICAgICAgICAgICAgICAgIExpYnJhcnkgc29uYW1lOiBbbGliZ2NjX3Muc28uMV0KKysgICAgLi4uCisrCisrCisrQW5kIG9uIHRoZSB0YXJnZXQgbWFjaGluZSwgd2UgY2FuIHJ1biBvdXIgcHJvZ3JhbXM6CisrCisrICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAorKyAgICA+IC4vaGVsbG8KKysgICAgSGVsbG8sIHdvcmxkIQorKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2MrKy1oZWxsbworKyAgICBIZWxsbywgQysrIHdvcmxkIQorZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLXRlc3RpbmcgYi9HTElCQy5jcm9zcy10ZXN0aW5nCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYjY3YjQ2ODQ2NgorLS0tIC9kZXYvbnVsbAorKysrIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworQEAgLTAsMCArMSwyMDUgQEAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQorKworKyAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1UZXN0aW5nIFdpdGggR0xJQkMKKysgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisrCisrCisrSW50cm9kdWN0aW9uCisrCisrRGV2ZWxvcGVycyB3cml0aW5nIHNvZnR3YXJlIGZvciBlbWJlZGRlZCBzeXN0ZW1zIG9mdGVuIHVzZSBhIGRlc2t0b3AKKytvciBvdGhlciBzaW1pbGFybHkgY2FwYWJsZSBjb21wdXRlciBmb3IgZGV2ZWxvcG1lbnQsIGJ1dCBuZWVkIHRvIHJ1bgorK3Rlc3RzIG9uIHRoZSBlbWJlZGRlZCBzeXN0ZW0sIG9yIHBlcmhhcHMgb24gYSBzaW11bGF0b3IuICBXaGVuCisrY29uZmlndXJlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24sIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHNpbXBseQorK2Rpc2FibGVzIHJ1bm5pbmcgdGVzdHMgYWx0b2dldGhlcjogdGhlIGNvbW1hbmQgJ21ha2UgdGVzdHMnIGJ1aWxkcworK3Rlc3QgcHJvZ3JhbXMsIGJ1dCBkb2VzIG5vdCBydW4gdGhlbS4gIEdMSUJDLCBob3dldmVyLCBwcm92aWRlcworK2ZhY2lsaXRpZXMgZm9yIGNvbXBpbGluZyB0ZXN0cyBhbmQgZ2VuZXJhdGluZyBkYXRhIGZpbGVzIG9uIHRoZSBidWlsZAorK3N5c3RlbSwgYnV0IHJ1bm5pbmcgdGhlIHRlc3QgcHJvZ3JhbXMgdGhlbXNlbHZlcyBvbiBhIHJlbW90ZSBzeXN0ZW0gb3IKKytzaW11bGF0b3IuCisrCisrCisrVGVzdCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMKKysKKytUaGUgdGVzdCBlbnZpcm9ubWVudCBtdXN0IG1lZXQgY2VydGFpbiBjb25kaXRpb25zIGZvciBHTElCQydzCisrY3Jvc3MtdGVzdGluZyBmYWNpbGl0aWVzIHRvIHdvcms6CisrCisrLSBTaGFyZWQgZmlsZXN5c3RlbXMuICBUaGUgJ2J1aWxkJyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBjb25maWd1cmUgYW5kCisrICBjb21waWxlIEdMSUJDLCBhbmQgdGhlICdob3N0JyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBpbnRlbmQgdG8gcnVuCisrICBHTElCQywgbXVzdCBzaGFyZSBhIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgR0xJQkMgYnVpbGQgYW5kCisrICBzb3VyY2UgdHJlZXMuICBGaWxlcyBtdXN0IGFwcGVhciBhdCB0aGUgc2FtZSBwYXRocyBvbiBib3RoIHN5c3RlbXMuCisrCisrLSBSZW1vdGUtc2hlbGwgbGlrZSBpbnZvY2F0aW9uLiAgVGhlcmUgbXVzdCBiZSBhIHdheSB0byBydW4gYSBwcm9ncmFtCisrICBvbiB0aGUgaG9zdCBzeXN0ZW0gZnJvbSB0aGUgYnVpbGQgc3lzdGVtLCBwYXNzaW5nIGl0IHByb3Blcmx5IHF1b3RlZAorKyAgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZAorKyAgaW5oZXJpdGluZyB0aGUgY2FsbGVyJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KKysKKysKKytVc2FnZQorKworK1RvIHVzZSBHTElCQydzIGNyb3NzLXRlc3Rpbmcgc3VwcG9ydCwgcHJvdmlkZSB2YWx1ZXMgZm9yIHRoZQorK2ZvbGxvd2luZyBNYWtlIHZhcmlhYmxlcyB3aGVuIHlvdSBpbnZva2UgJ21ha2UnOgorKworKy0gY3Jvc3MtdGVzdC13cmFwcGVyCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyIGNvbW1hbmQsIGFsb25nCisrICB3aXRoIGFueSBhcmd1bWVudHMuCisrCisrLSBjcm9zcy1sb2NhbGVkZWYKKysKKysgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgY3Jvc3MtY2FwYWJsZSBsb2NhbGVkZWYgcHJvZ3JhbSwgbGlrZQorKyAgdGhhdCBpbmNsdWRlZCBpbiB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlLCBhbG9uZyB3aXRoIGFueQorKyAgYXJndW1lbnRzIG5lZWRlZC4KKysKKytUaGVzZSBhcmUgZWFjaCBleHBsYWluZWQgaW4gZGV0YWlsIGJlbG93LgorKworKworK1RoZSBDcm9zcy1UZXN0aW5nIFdyYXBwZXIKKysKKytUbyBydW4gdGVzdCBwcm9ncmFtcyByZWxpYWJseSwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgdGFrZXMgY2FyZSB0bworK2Vuc3VyZSB0aGF0IHRlc3QgcHJvZ3JhbXMgdXNlIHRoZSBuZXdseSBjb21waWxlZCBkeW5hbWljIGxpbmtlciBhbmQKKytzaGFyZWQgbGlicmFyaWVzLCBhbmQgbmV2ZXIgdGhlIGhvc3Qgc3lzdGVtJ3MgaW5zdGFsbGVkIGxpYnJhcmllcy4gIFRvCisrYWNjb21wbGlzaCB0aGlzLCBpdCBydW5zIHRoZSB0ZXN0cyBieSBleHBsaWNpdGx5IGludm9raW5nIHRoZSBkeW5hbWljCisrbGlua2VyIGZyb20gdGhlIGJ1aWxkIHRyZWUsIHBhc3NpbmcgaXQgYSBsaXN0IG9mIGJ1aWxkIHRyZWUKKytkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHNoYXJlZCBsaWJyYXJpZXMsIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mCisrdGhlIGV4ZWN1dGFibGUgdG8gcnVuIGFuZCBpdHMgYXJndW1lbnRzLgorKworK0ZvciBleGFtcGxlLCB3aGVyZSBvbmUgbWlnaHQgbm9ybWFsbHkgcnVuIGEgdGVzdCBwcm9ncmFtIGxpa2UgdGhpczoKKysKKysgICAgJCAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrdGhlIEdOVSBDIGxpYnJhcnkgbWlnaHQgcnVuIHRoYXQgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrKHdoZXJlICRvYmpkaXIgaXMgdGhlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgYnVpbGQgdHJlZSwgYW5kIHRoZQorK3RyYWlsaW5nIGJhY2tzbGFzaCBpbmRpY2F0ZXMgYSBjb250aW51YXRpb24gb2YgdGhlIGNvbW1hbmQpLiAgSW4gb3RoZXIKKyt3b3JkcywgZWFjaCB0ZXN0IHByb2dyYW0gaW52b2NhdGlvbiBpcyAnd3JhcHBlZCB1cCcgaW5zaWRlIGFuIGV4cGxpY2l0CisraW52b2NhdGlvbiBvZiB0aGUgZHluYW1pYyBsaW5rZXIsIHdoaWNoIG11c3QgaXRzZWxmIGV4ZWN1dGUgdGhlIHRlc3QKKytwcm9ncmFtLCBoYXZpbmcgbG9hZGVkIHNoYXJlZCBsaWJyYXJpZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKKytkaXJlY3Rvcmllcy4KKysKKytUbyBzdXBwb3J0IGNyb3NzLXRlc3RpbmcsIEdMSUJDIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIG9wdGlvbmFsbHkKKytzZXQgdGhlICdjcm9zcy10ZXN0LXdyYXBwZXInIE1ha2UgdmFyaWFibGUgdG8gYW5vdGhlciB3cmFwcGVyIGNvbW1hbmQsCisrdG8gd2hpY2ggaXQgcGFzc2VzIHRoZSBlbnRpcmUgZHluYW1pYyBsaW5rZXIgaW52b2NhdGlvbiBzaG93biBhYm92ZSBhcworK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBpZiB0aGUgZGV2ZWxvcGVyIHN1cHBsaWVzIGEgd3JhcHBlciBvZgorKydteS13cmFwcGVyIGhvc3RuYW1lJywgdGhlbiBHTElCQyB3b3VsZCBydW4gdGhlIHRlc3QgYWJvdmUgYXMKKytmb2xsb3dzOgorKworKyAgICAkIG15LXdyYXBwZXIgaG9zdG5hbWUgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK1RoZSAnbXktd3JhcHBlcicgY29tbWFuZCBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIHRoZSBjb21tYW5kCisrZ2l2ZW4gb24gdGhlIGhvc3Qgc3lzdGVtLgorKworK1NpbmNlIHRlc3RzIGFyZSBydW4gaW4gdmFyeWluZyBkaXJlY3RvcmllcywgdGhlIHdyYXBwZXIgc2hvdWxkIGVpdGhlcgorK2JlIGluIHlvdXIgY29tbWFuZCBzZWFyY2ggcGF0aCwgb3IgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgc2hvdWxkIGdpdmUgYW4KKythYnNvbHV0ZSBwYXRoIGZvciB0aGUgd3JhcHBlci4KKysKKytUaGUgd3JhcHBlciBtdXN0IG1lZXQgc2V2ZXJhbCByZXF1aXJlbWVudHM6CisrCisrLSBJdCBtdXN0IHByZXNlcnZlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlCisrICBidWlsZCBkaXJlY3RvcnkgdHJlZSBtdXN0IGJlIHZpc2libGUgb24gYm90aCB0aGUgYnVpbGQgYW5kIGhvc3QKKysgIHN5c3RlbXMsIGF0IHRoZSBzYW1lIHBhdGguICBUaGUgdGVzdCB3cmFwcGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlCisrICBjdXJyZW50IGRpcmVjdG9yeSBpdCBpbmhlcml0cyBpcyBhbHNvIGluaGVyaXRlZCBieSB0aGUgZHluYW1pYworKyAgbGlua2VyIChhbmQgdGh1cyB0aGUgdGVzdCBwcm9ncmFtIGl0c2VsZikuCisrCisrLSBJdCBtdXN0IHByZXNlcnZlIGVudmlyb25tZW50IHZhcmlhYmxlcycgdmFsdWVzLiAgTWFueSBHTElCQyB0ZXN0cworKyAgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBydW5zOyBpbiBuYXRpdmUgdGVzdGluZywgaXQKKysgIGludm9rZXMgcHJvZ3JhbXMgbGlrZSB0aGlzOgorKworKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyAgV2l0aCB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyLCB0aGF0IGludm9jYXRpb24gYmVjb21lczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIEhlcmUsICdteS13cmFwcGVyJyBtdXN0IGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpdCBzZWVzIGZvcgorKyAgJ0dDT05WX1BBVEgnIHdpbGwgYmUgc2VlbiBieSB0aGUgZHluYW1pYyBsaW5rZXIsIGFuZCB0aHVzICd0c3QtZm9vJworKyAgaXRzZWxmLiAgKFRoZSB3cmFwcGVyIHN1cHBsaWVkIHdpdGggR0xJQkMgc2ltcGx5IHByZXNlcnZlcyB0aGUKKysgIHZhbHVlcyBvZiAqYWxsKiBlbnZpcm9tZW50IHZhcmlhYmxlcywgd2l0aCBhIGZpeGVkIHNldCBvZgorKyAgZXhjZXB0aW9ucy4pCisrCisrICBJZiB5b3VyIHdyYXBwZXIgaXMgYSBzaGVsbCBzY3JpcHQsIHRha2UgY2FyZSB0byBjb3JyZWN0bHkgcHJvcGFnYXRlCisrICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hvc2UgdmFsdWVzIGNvbnRhaW4gc3BhY2VzIGFuZCBzaGVsbAorKyAgbWV0YWNoYXJhY3RlcnMuCisrCisrLSBJdCBtdXN0IHBhc3MgdGhlIGNvbW1hbmQncyBhcmd1bWVudHMsIHVubW9kaWZpZWQuICBUaGUgYXJndW1lbnRzCisrICBzZWVuIGJ5IHRoZSB0ZXN0IHByb2dyYW0gc2hvdWxkIGJlIGV4YWN0bHkgdGhvc2Ugc2VlbiBieSB0aGUgd3JhcHBlcgorKyAgKGFmdGVyIHdoYXRldmVyIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gdG8gdGhlIHdyYXBwZXIgaXRzZWxmKS4gIFRoZQorKyAgR0xJQkMgdGVzdCBmcmFtZXdvcmsgcGVyZm9ybXMgYWxsIG5lZWRlZCBzaGVsbCB3b3JkIHNwbGl0dGluZyBhbmQKKysgIGV4cGFuc2lvbiAod2lsZGNhcmQgZXhwYW5zaW9uLCBwYXJhbWV0ZXIgc3Vic3RpdHV0aW9uLCBhbmQgc28gb24pCisrICBiZWZvcmUgaW52b2tpbmcgdGhlIHdyYXBwZXI7IGZ1cnRoZXIgZXhwYW5zaW9uIG1heSBicmVhayB0aGUgdGVzdHMuCisrCisrCisrVGhlICdjcm9zcy10ZXN0LXNzaC5zaCcgc2NyaXB0CisrCisrSWYgeW91IHdhbnQgdG8gdXNlICdzc2gnIChvciBzb21ldGhpbmcgc3VmZmljaWVudGx5IHNpbWlsYXIpIHRvIHJ1bgorK3Rlc3QgcHJvZ3JhbXMgb24geW91ciBob3N0IHN5c3RlbSwgR0xJQkMgaW5jbHVkZXMgYSBzaGVsbCBzY3JpcHQsCisrJ3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2gnLCB3aGljaCB5b3UgY2FuIHVzZSBhcyB5b3VyIHdyYXBwZXIKKytjb21tYW5kLiAgVGhpcyBzY3JpcHQgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSB0ZXN0IGNvbW1hbmQncyBjdXJyZW50CisrZGlyZWN0b3J5LCBwcm9wYWdhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMsIGFuZCBjYXJyeWluZworK2NvbW1hbmQtbGluZSBhcmd1bWVudHMsIGFsbCBhY3Jvc3MgYW4gJ3NzaCcgY29ubmVjdGlvbi4gIFlvdSBtYXkgZXZlbgorK3N1cHBseSBhbiBhbHRlcm5hdGl2ZSB0byAnc3NoJyBvbiB0aGUgY29tbWFuZCBsaW5lLCBpZiBuZWVkZWQuCisrCisrRm9yIG1vcmUgZGV0YWlscywgcGFzcyAnY3Jvc3MtdGVzdC1zc2guc2gnIHRoZSAnLS1oZWxwJyBvcHRpb24uCisrCisrCisrVGhlIENyb3NzLUNvbXBpbGluZyBMb2NhbGUgRGVmaW5pdGlvbiBDb21tYW5kCisrCisrU29tZSBHTElCQyB0ZXN0cyByZWx5IG9uIGxvY2FsZXMgZ2VuZXJhdGVkIGVzcGVjaWFsbHkgZm9yIHRoZSB0ZXN0CisrcHJvY2Vzcy4gIEluIGEgbmF0aXZlIGNvbmZpZ3VyYXRpb24sIHRoZXNlIHRlc3RzIHNpbXBseSBydW4gdGhlCisrJ2xvY2FsZWRlZicgY29tbWFuZCBidWlsdCBieSB0aGUgbm9ybWFsIEdMSUJDIGJ1aWxkIHByb2Nlc3MsCisrJ2xvY2FsZS9sb2NhbGVkZWYnLCB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIHRoZWlyIGxvY2FsZXMuICBIb3dldmVyLCBpbgorK2EgY3Jvc3MtY29tcGlsaW5nIGNvbmZpZ3VyYXRpb24sIHRoaXMgJ2xvY2FsZWRlZicgaXMgYnVpbHQgZm9yIHRoZQorK2hvc3Qgc3lzdGVtLCBub3QgdGhlIGJ1aWxkIHN5c3RlbSwgYW5kIHNpbmNlIGl0IHJlcXVpcmVzIHF1aXRlIGEgYml0Cisrb2YgbWVtb3J5IHRvIHJ1biAod2UgaGF2ZSBzZWVuIGl0IGZhaWwgb24gc3lzdGVtcyB3aXRoIDY0TWlCIG9mCisrbWVtb3J5KSwgaXQgbWF5IG5vdCBiZSBwcmFjdGljYWwgdG8gcnVuIGl0IG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytJZiBzZXQsIEdMSUJDIHVzZXMgdGhlICdjcm9zcy1sb2NhbGVkZWYnIE1ha2UgdmFyaWFibGUgYXMgdGhlIGNvbW1hbmQKKyt0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbSB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIGxvY2FsZXMuICBUaGUKKytsb2NhbGVkZWYgcHJvZ3JhbSBidWlsdCBmcm9tIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUgaXMKKytzdWl0YWJsZS4KKysKKytUaGUgdmFsdWUgb2YgJ2Nyb3NzLWxvY2FsZWRlZicgbWF5IGFsc28gaW5jbHVkZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzCisrdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9ncmFtOyBpZiB5b3UgYXJlIHVzaW5nIEdMSUJDJ3MgJ2xvY2FsZWRlZicsCisreW91IG1heSBpbmNsdWRlIGVuZGlhbm5lc3MgYW5kICd1aW50MzJfdCcgYWxpZ25tZW50IGFyZ3VtZW50cyBoZXJlLgorKworKworK0V4YW1wbGUKKysKKytJbiBkZXZlbG9waW5nIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBmYWNpbGl0eSwgd2UgaW52b2tlZCAnbWFrZScgd2l0aAorK3RoZSBmb2xsb3dpbmcgc2NyaXB0OgorKworKyAgICAjIS9iaW4vc2gKKysKKysgICAgc3JjZGlyPS4uLgorKyAgICB0ZXN0X2hvc3RuYW1lPS4uLgorKyAgICBsb2NhbGVkZWZkaXI9Li4uCisrICAgIGNyb3NzX2d4eD0uLi4tZysrCisrCisrICAgIHdyYXBwZXI9IiRzcmNkaXIvc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCAkdGVzdF9ob3N0bmFtZSIKKysgICAgbG9jYWxlZGVmPSIkbG9jYWxlZGVmZGlyL2xvY2FsZWRlZiAtLWxpdHRsZS1lbmRpYW4gLS11aW50MzItYWxpZ249NCIKKysKKysgICAgbWFrZSBjcm9zcy10ZXN0LXdyYXBwZXI9IiR3cmFwcGVyIiBcCisrICAgICAgICAgY3Jvc3MtbG9jYWxlZGVmPSIkbG9jYWxlZGVmIiBcCisrICAgICAgICAgQ1hYPSIkY3Jvc3NfZ3h4IiBcCisrICAgICAgICAgIiRAIgorKworKworK090aGVyIENyb3NzLVRlc3RpbmcgQ29uY2VybnMKKysKKytIZXJlIGFyZSBub3RlcyBvbiBzb21lIG90aGVyIGlzc3VlcyB3aGljaCB5b3UgbWF5IGVuY291bnRlciBpbiBydW5uaW5nCisrdGhlIEdMSUJDIHRlc3RzIGluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50OgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGEgQysrIGNyb3NzLWNvbXBpbGVyOyB5b3Ugc2hvdWxkIHNldCB0aGUgJ0NYWCcKKysgIE1ha2UgdmFyaWFibGUgdG8gdGhlIG5hbWUgb2YgYW4gYXBwcm9wcmlhdGUgY3Jvc3MtY29tcGlsZXIuCisrCisrLSBTb21lIHRlc3RzIHJlcXVpcmUgYWNjZXNzIHRvIGxpYnN0ZGMrKy5zby42IGFuZCBsaWJnY2Nfcy5zby4xOyB3ZQorKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAorKyAgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mzc0ZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKQEAgLTAsMCArMSw5NyBAQAorRnJvbSA2YTMyZDViZjQwZGVlZTVkMTJkMjRjMDZmM2VhOWI1NDc5YzE2ODAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KKworVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKKworICAgICAgICAyMDA3LTAyLTIwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZSAoaW5zdGFsbC1oZWFkZXJzKTogUHJlc2VydmUgb2xkIGJlaGF2aW9yOiBkZXBlbmQgb24KKyAgICAgICAgICAgICAgICAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmggb25seSBpZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzCisgICAgICAgICAgICAgICAgaXMgc2V0OyBvdGhlcndpc2UsIHBsYWNlIGdudS9zdHVicy5oIG9uIHRoZSAnaW5zdGFsbC1vdGhlcnMnIGxpc3QuCisKKyAgICAgICAgMjAwNy0wMi0xNiAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICAgICAgICAgICogTWFrZWZpbGU6IEFtZW5kIG1ha2UgaW5zdGFsbC1oZWFkZXJzIHRvIGluc3RhbGwgZXZlcnl0aGluZworICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlci4gIEluc3RhbGwgZ251L3N0dWJzLmggYXMKKyAgICAgICAgICAgICAgICBwYXJ0IG9mICdpbnN0YWxsLWhlYWRlcnMnLCBub3QgJ2luc3RhbGwtb3RoZXJzJy4KKyAgICAgICAgICAgICAgICBJZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzIGlzICd5ZXMnLCBpbnN0YWxsIGEgZHVtbXkgY29weSBvZgorICAgICAgICAgICAgICAgIGdudS9zdHVicy5oLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgcmVhbCB0aGluZy4KKyAgICAgICAgICAgICAgICAqIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmg6IE5ldyBmaWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggfCAxMiArKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggOGYwYTkzYWNlYi4uOGViYTIzYTg2OCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTc5LDkgKzc5LDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQorIHZwYXRoICUuaCAkKHN1YmRpci1kaXJzKQorIAorICMgV2hhdCB0byBpbnN0YWxsLgorLWluc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgaW5zdGFsbC1iaW4tc2NyaXB0ID0KKyAKKysjIElmIHdlJ3JlIGJvb3RzdHJhcHBpbmcsIGluc3RhbGwgYSBkdW1teSBnbnUvc3R1YnMuaCBhbG9uZyB3aXRoIHRoZQorKyMgb3RoZXIgaGVhZGVycywgc28gJ21ha2UgaW5zdGFsbC1oZWFkZXJzJyBwcm9kdWNlcyBhIHVzZWFibGUgaW5jbHVkZQorKyMgdHJlZS4gIE90aGVyd2lzZSwgaW5zdGFsbCBnbnUvc3R1YnMuaCBsYXRlciwgYWZ0ZXIgdGhlIHJlc3Qgb2YgdGhlCisrIyBidWlsZCBpcyBkb25lLgorK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQorK2luc3RhbGwtaGVhZGVyczogJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisrZWxzZQorK2luc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisrZW5kaWYKKysKKyBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQorIGhlYWRlcnMgKz0gZ251L2xpYi1uYW1lcy5oCisgZW5kaWYKK0BAIC00MDcsNiArNDE2LDE2IEBAIG90aGVyczogJChjb21tb24tb2JqcGZ4KXRlc3RydW4uc2ggJChjb21tb24tb2JqcGZ4KWRlYnVnZ2xpYmMuc2gKKyAKKyBzdWJkaXItc3R1YnMgOj0gJChmb3JlYWNoIGRpciwkKHN1YmRpcnMpLCQoY29tbW9uLW9ianBmeCkkKGRpcikvc3R1YnMpCisgCisrIyBnbnUvc3R1YnMuaCBkZXBlbmRzICh2aWEgdGhlIHN1YmRpciAnc3R1YnMnIHRhcmdldHMpIG9uIGFsbCB0aGUgLm8KKysjIGZpbGVzIGluIEVHTElCQy4gIEZvciBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBhbiBlbXB0eQorKyMgZ251L3N0dWJzLmggaXMgZ29vZCBlbm91Z2guCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisrJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oICQoK2ZvcmNlKQorKwkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKKysJJChJTlNUQUxMX0RBVEEpICQ8ICRACisrCisraW5zdGFsbGVkLXN0dWJzID0KKytlbHNlCisgaWZuZGVmIGFiaS12YXJpYW50cworIGluc3RhbGxlZC1zdHVicyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorIGVsc2UKK0BAIC00MzMsNiArNDUyLDcgQEAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiAkKCtmb3JjZSkKKyAKKyBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsZWQtc3R1YnMpCisgZW5kaWYKKytlbmRpZgorIAorIAorICMgU2luY2Ugc3R1YnMuaCBpcyBuZXZlciBuZWVkZWQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgd2Ugc2ltcGxpZnkgdGhlCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4xZDJiNjY5YWZmCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCitAQCAtMCwwICsxLDEyIEBACisrLyogUGxhY2Vob2xkZXIgc3R1YnMuaCBmaWxlIGZvciBib290c3RyYXBwaW5nLgorKworKyAgIFdoZW4gYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgR0NDIHJlcXVpcmVzIHRoYXQgdGhlIEVHTElCQworKyAgIGhlYWRlcnMgYmUgaW5zdGFsbGVkLCBidXQgd2UgY2FuJ3QgZnVsbHkgYnVpbGQgRUdMSUJDIHdpdGhvdXQgdGhhdAorKyAgIEdDQy4gIFNvIHdlIHJ1biB0aGUgY29tbWFuZDoKKysKKysgICAgICBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcworKworKyAgIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgR0NDIG5lZWRzLCBidXQgYXZvaWQgYnVpbGRpbmcgY2VydGFpbgorKyAgIGRpZmZpY3VsdCBoZWFkZXJzLiAgVGhlIDxnbnUvc3R1YnMuaD4gaGVhZGVyIGRlcGVuZHMsIHZpYSB0aGUKKysgICBFR0xJQkMgc3ViZGlyICdzdHVicycgbWFrZSB0YXJnZXRzLCBvbiBldmVyeSAubyBmaWxlIGluIEVHTElCQywgYnV0CisrICAgYW4gZW1wdHkgc3R1YnMuaCBsaWtlIHRoaXMgd2lsbCBkbyBmaW5lIGZvciBHQ0MuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NTUxY2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gYjcyOTBlNTRhMWJkYTdhMDIxMjEzMTY1NWJjMjc5MjZmYzIyZGUyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjU1OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjhdIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKLQotMjAxMC0wOS0yOSAgTm9idWhpcm8gSXdhbWF0c3UgIDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLSAgICAgICAgICAgIEFuZHJldyBTdHViYnMgIDxhbXNAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICBSZXNvbHZlIFNIJ3MgX19mcHNjcl92YWx1ZXMgdG8gc3ltYm9sIGluIGxpYmMuc28uCi0KLSAgICAgICAgKiBzeXNkZXBzL3NoL3NoNC9mcHUvZnB1X2NvbnRyb2wuaDogQWRkIEMrKyBfX3NldF9mcHNjciBwcm90b3R5cGUuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgKEdMSUJDXzIuMik6IEFkZCBfX2Zwc2NyX3ZhbHVlcy4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyAoX19fZnBzY3JfdmFsdWVzKTogTmV3IGNvbnN0YW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIHwgIDEgKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIHwgMTEgKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLWluZGV4IGUwOTM4YzQxNjUuLmNhMWQ3ZGEzMzkgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLUBAIC0yLDYgKzIsNyBAQCBsaWJjIHsKLSAgIEdMSUJDXzIuMiB7Ci0gICAgICMgZnVuY3Rpb25zIHVzZWQgaW4gb3RoZXIgbGlicmFyaWVzCi0gICAgIF9feHN0YXQ2NDsgX19meHN0YXQ2NDsgX19seHN0YXQ2NDsKLSsgICAgX19mcHNjcl92YWx1ZXM7Ci0gCi0gICAgICMgYSoKLSAgICAgYWxwaGFzb3J0NjQ7Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotaW5kZXggNmNlMzZkNmRkNS4uNDI1ODExY2M3NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotQEAgLTMwLDMgKzMwLDE0IEBAIEVOVFJZIChfX3N5c2NhbGxfZXJyb3IpCi0gCi0gI2RlZmluZSBfX3N5c2NhbGxfZXJyb3IgX19zeXNjYWxsX2Vycm9yXzEKLSAjaW5jbHVkZSA8c3lzZGVwcy91bml4L3NoL3N5c2RlcC5TPgotKwotKyAgICAgICAuZGF0YQotKyAgICAgICAuYWxpZ24gMwotKyAgICAgICAuZ2xvYmwgX19fZnBzY3JfdmFsdWVzCi0rICAgICAgIC50eXBlIF9fX2Zwc2NyX3ZhbHVlcywgQG9iamVjdAotKyAgICAgICAuc2l6ZSBfX19mcHNjcl92YWx1ZXMsIDgKLStfX19mcHNjcl92YWx1ZXM6Ci0rICAgICAgIC5sb25nIDAKLSsgICAgICAgLmxvbmcgMHg4MDAwMAotK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCi0rCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ2MDIxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTY2ICswLDAgQEAKLUZyb20gYmUzODJiNGUwYzZkZTUyNTczZjdlMDM3ZjJkNGZmOWIxYjViYmI2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjMzOjQ5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMjhdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICstCi0gbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbG9jYWxlL2xvY2FsZWluZm8uaCAgICAgICAgICAgfCAgMiArLQotIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKwotIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKystLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKystLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLQotIDEyIGZpbGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9NYWtlZmlsZSBiL2xvY2FsZS9NYWtlZmlsZQotaW5kZXggZDc4Y2Y5YjgzYS4uZTE2NmY1MjUyZSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9NYWtlZmlsZQotKysrIGIvbG9jYWxlL01ha2VmaWxlCi1AQCAtMjYsNyArMjYsOCBAQCBoZWFkZXJzCQk9IGxhbmdpbmZvLmggbG9jYWxlLmggYml0cy9sb2NhbGUuaCBcCi0gCQkgIGJpdHMvdHlwZXMvbG9jYWxlX3QuaCBiaXRzL3R5cGVzL19fbG9jYWxlX3QuaAotIHJvdXRpbmVzCT0gc2V0bG9jYWxlIGZpbmRsb2NhbGUgbG9hZGxvY2FsZSBsb2FkYXJjaGl2ZSBcCi0gCQkgIGxvY2FsZWNvbnYgbmxfbGFuZ2luZm8gbmxfbGFuZ2luZm9fbCBtYl9jdXJfbWF4IFwKLS0JCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZQotKwkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlIFwKLSsJCSAgY2F0bmFtZXMKLSB0ZXN0cwkJPSB0c3QtQy1sb2NhbGUgdHN0LWxvY25hbWUgdHN0LWR1cGxvY2FsZQotIGNhdGVnb3JpZXMJPSBjdHlwZSBtZXNzYWdlcyBtb25ldGFyeSBudW1lcmljIHRpbWUgcGFwZXIgbmFtZSBcCi0gCQkgIGFkZHJlc3MgdGVsZXBob25lIG1lYXN1cmVtZW50IGlkZW50aWZpY2F0aW9uIGNvbGxhdGUKLWRpZmYgLS1naXQgYS9sb2NhbGUvY2F0bmFtZXMuYyBiL2xvY2FsZS9jYXRuYW1lcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uOWZhZDM1N2RiMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbG9jYWxlL2NhdG5hbWVzLmMKLUBAIC0wLDAgKzEsNDggQEAKLSsvKiBDb3B5cmlnaHQgKEMpIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSAibG9jYWxlaW5mby5oIgotKwotKy8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KLStjb25zdCB1bmlvbiBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyAgICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgICAgY2F0ZWdvcnlfbmFtZSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmIERFRklORV9DQVRFR09SWQotKyAgICB9Ci0rICB9OwotKwotK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotKyAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHVuaW9uIGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICB9OwotKwotKy8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQotKyAgewotKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotKyAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZglERUZJTkVfQ0FURUdPUlkKLSsgICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKLSsgIH07Ci1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLWluZGV4IDUzY2I4YmZjNTkuLjkyYzQ2NjIwMGMgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCi0rKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1AQCAtMjI0LDcgKzIyNCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIGxvY2FsZV90LCBMT0NBTEUpCi0gICAgdW51c2VkLiAgV2UgY2FuIG1hbmFnZSB0aGlzIHBsYXlpbmcgc29tZSB0cmlja3Mgd2l0aCB3ZWFrIHJlZmVyZW5jZXMuCi0gICAgQnV0IHdpdGggdGhyZWFkLWxvY2FsIGxvY2FsZSBzZXR0aW5ncywgaXQgYmVjb21lcyBxdWl0ZSB1bmdhaW5seSB1bmxlc3MKLSAgICB3ZSBjYW4gdXNlIF9fdGhyZWFkIHZhcmlhYmxlcy4gIFNvIG9ubHkgaW4gdGhhdCBjYXNlIGRvIHdlIGF0dGVtcHQgdGhpcy4gICovCi0tI2lmbmRlZiBTSEFSRUQKLSsjaWYgIWRlZmluZWQgU0hBUkVEICYmICFkZWZpbmVkIElOX0dMSUJDX0xPQ0FMRURFRgotICMgaW5jbHVkZSA8dGxzLmg+Ci0gIyBkZWZpbmUgTkxfQ1VSUkVOVF9JTkRJUkVDVAkxCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotaW5kZXggOTRjMTIyZGY2OC4uODBlNTNlMTJjOCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotQEAgLTE4LDcgKzE4LDkgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotICNpbmNsdWRlIDxzcGF3bi5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1AQCAtMTU0LDYgKzE1Niw3IEBAIGNoYXJtYXBfY2xvc2VkaXIgKENIQVJNQVBfRElSICpjZGlyKQotICAgcmV0dXJuIGNsb3NlZGlyIChkaXIpOwotIH0KLSAKLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAvKiBDcmVhdGVzIGEgc3VicHJvY2VzcyBkZWNvbXByZXNzaW5nIHRoZSBnaXZlbiBwYXRobmFtZSwgYW5kIHJldHVybnMKLSAgICBhIHN0cmVhbSByZWFkaW5nIGl0cyBvdXRwdXQgKHRoZSBkZWNvbXByZXNzZWQgZGF0YSkuICAqLwotIHN0YXRpYwotQEAgLTIwMiw2ICsyMDUsNyBAQCBmb3Blbl91bmNvbXByZXNzZWQgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBjaGFyICpjb21wcmVzc29yKQotICAgICB9Ci0gICByZXR1cm4gTlVMTDsKLSB9Ci0rI2VuZGlmCi0gCi0gLyogT3BlbnMgYSBjaGFybWFwIGZvciByZWFkaW5nLCBnaXZlbiBpdHMgbmFtZSAobm90IGFuIGFsaWFzIG5hbWUpLiAgKi8KLSBGSUxFICoKLUBAIC0yMjQsNiArMjI4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCi0gICBpZiAoc3RyZWFtICE9IE5VTEwpCi0gICAgIHJldHVybiBzdHJlYW07Ci0gCi0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gICBtZW1jcHkgKHAsICIuZ3oiLCA0KTsKLSAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJnemlwIik7Ci0gICBpZiAoc3RyZWFtICE9IE5VTEwpCi1AQCAtMjMzLDYgKzIzOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQotICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImJ6aXAyIik7Ci0gICBpZiAoc3RyZWFtICE9IE5VTEwpCi0gICAgIHJldHVybiBzdHJlYW07Ci0rI2VuZGlmCi0gCi0gICByZXR1cm4gTlVMTDsKLSB9Ci1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLWluZGV4IDZiYWFiNmNmYjAuLmIxMmEyZmNlYWIgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1AQCAtMzQ5LDcgKzM0OSw3IEBAIG5ld19lbGVtZW50IChzdHJ1Y3QgbG9jYWxlX2NvbGxhdGVfdCAqY29sbGF0ZSwgY29uc3QgY2hhciAqbWJzLCBzaXplX3QgbWJzbGVuLAotICAgICB9Ci0gICBpZiAod2NzICE9IE5VTEwpCi0gICAgIHsKLS0gICAgICBzaXplX3QgbndjcyA9IHdjc2xlbiAoKHdjaGFyX3QgKikgd2NzKTsKLSsgICAgICBzaXplX3QgbndjcyA9IHdjc2xlbl91aW50MzIgKHdjcyk7Ci0gICAgICAgdWludDMyX3QgemVybyA9IDA7Ci0gICAgICAgLyogSGFuZGxlIDxVMDAwMD4gYXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgKi8KLSAgICAgICBpZiAobndjcyA9PSAwKQotQEAgLTE3NzIsOCArMTc3Miw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKLSAKLSAJICAgICAgaWYgKCgqZXB0ciktPm53Y3MgPT0gcnVucC0+bndjcykKLSAJCXsKLS0JCSAgaW50IGMgPSB3bWVtY21wICgod2NoYXJfdCAqKSAoKmVwdHIpLT53Y3MsCi0tCQkJCSAgICh3Y2hhcl90ICopIHJ1bnAtPndjcywgcnVucC0+bndjcyk7Ci0rCQkgIGludCBjID0gd21lbWNtcF91aW50MzIgKCgqZXB0ciktPndjcywgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKLSAKLSAJCSAgaWYgKGMgPT0gMCkKLSAJCSAgICB7Ci1AQCAtMjAwMCw5ICsxOTk5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQotIAkgICAgIG9uZSBjb25zZWN1dGl2ZSBlbnRyeS4gICovCi0gCSAgaWYgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCi0gCSAgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCi0tCSAgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKLS0JCQkgICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCi0tCQkJICBydW5wLT5ud2NzIC0gMSkgPT0gMAotKwkgICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAotKwkJCQkgcnVucC0+d2NuZXh0LT53Y3MsCi0rCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAotIAkgICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQotIAkJICA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSkKLSAJICAgIHsKLUBAIC0yMDI2LDkgKzIwMjUsOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCi0gCQlydW5wID0gcnVucC0+d2NuZXh0OwotIAkgICAgICB3aGlsZSAocnVucC0+d2NuZXh0ICE9IE5VTEwKLSAJCSAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKLS0JCSAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAotLQkJCQkgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKLS0JCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0rCQkgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCi0rCQkJCQlydW5wLT53Y25leHQtPndjcywKLSsJCQkJCXJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0gCQkgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCi0gCQkJID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKTsKLSAKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi1pbmRleCBjZmM5YzQzZmQ1Li42NTcyY2MxOTljIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi1AQCAtOTE1LDcgKzkxNSw3IEBAIGN0eXBlX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gICBhbGxvY2F0ZV9hcnJheXMgKGN0eXBlLCBjaGFybWFwLCBjdHlwZS0+cmVwZXJ0b2lyZSk7Ci0gCi0gICBkZWZhdWx0X21pc3NpbmdfbGVuID0gKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcKLS0JCQkgPyB3Y3NsZW4gKCh3Y2hhcl90ICopIGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCi0rCQkJID8gd2NzbGVuX3VpbnQzMiAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKLSAJCQkgOiAwKTsKLSAKLSAgIGluaXRfbG9jYWxlX2RhdGEgKCZmaWxlLCBuZWxlbXMpOwotQEAgLTE5MjcsNyArMTkyNyw3IEBAIHJlYWRfdHJhbnNsaXRfZW50cnkgKHN0cnVjdCBsaW5lcmVhZGVyICpsZGZpbGUsIHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsCi0gCSAgICBpZ25vcmUgPSAxOwotIAkgIGVsc2UKLSAJICAgIC8qIFRoaXMgdmFsdWUgaXMgdXNhYmxlLiAgKi8KLS0JICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbiAoKHdjaGFyX3QgKikgdG9fd3N0cikgKiA0KTsKLSsJICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbl91aW50MzIgKHRvX3dzdHIpICogNCk7Ci0gCi0gCSAgZmlyc3QgPSAwOwotIAl9Ci1AQCAtMjQ2MSw4ICsyNDYxLDggQEAgd2l0aCBjaGFyYWN0ZXIgY29kZSByYW5nZSB2YWx1ZXMgb25lIG11c3QgdXNlIHRoZSBhYnNvbHV0ZSBlbGxpcHNpcyBgLi4uJyIpKTsKLSAJICAgIH0KLSAKLSAJaGFuZGxlX3Rva19kaWdpdDoKLS0JICBjbGFzc19iaXQgPSBfSVN3ZGlnaXQ7Ci0tCSAgY2xhc3MyNTZfYml0ID0gX0lTZGlnaXQ7Ci0rCSAgY2xhc3NfYml0ID0gQklUdyAodG9rX2RpZ2l0KTsKLSsJICBjbGFzczI1Nl9iaXQgPSBCSVQgKHRva19kaWdpdCk7Ci0gCSAgaGFuZGxlX2RpZ2l0cyA9IDE7Ci0gCSAgZ290byByZWFkX2NoYXJjbGFzczsKLSAKLUBAIC0zOTA0LDggKzM5MDQsNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCi0gCSAgd2hpbGUgKGlkeCA8IG51bWJlcikKLSAJICAgIHsKLS0JICAgICAgaW50IHJlcyA9IHdjc2NtcCAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2lkeF0tPmZyb20sCi0tCQkJCShjb25zdCB3Y2hhcl90ICopIHJ1bnAtPmZyb20pOwotKwkgICAgICBpbnQgcmVzID0gd2NzY21wX3VpbnQzMiAoc29ydGVkW2lkeF0tPmZyb20sIHJ1bnAtPmZyb20pOwotIAkgICAgICBpZiAocmVzID09IDApCi0gCQl7Ci0gCQkgIHJlcGxhY2UgPSAxOwotQEAgLTM5NDIsMTEgKzM5NDEsMTEgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotICAgICAgIGZvciAoc2l6ZV90IGNudCA9IDA7IGNudCA8IG51bWJlcjsgKytjbnQpCi0gCXsKLSAJICBzdHJ1Y3QgdHJhbnNsaXRfdG9fdCAqc3J1bnA7Ci0tCSAgZnJvbV9sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotKwkgIGZyb21fbGVuICs9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0gCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87Ci0gCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCi0gCSAgICB7Ci0tCSAgICAgIHRvX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKLSsJICAgICAgdG9fbGVuICs9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKLSAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKLSAJICAgIH0KLSAJICAvKiBQbHVzIG9uZSBmb3IgdGhlIGV4dHJhIE5VTCBjaGFyYWN0ZXIgbWFya2luZyB0aGUgZW5kIG9mCi1AQCAtMzk3MCwxOCArMzk2OSwxOCBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCSAgY3R5cGUtPnRyYW5zbGl0X2Zyb21faWR4W2NudF0gPSBmcm9tX2xlbjsKLSAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47Ci0gCi0tCSAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotLQkgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAotLQkJICAgKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20sIGxlbik7Ci0rCSAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSsJICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCi0rCQkJICBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKLSAJICBmcm9tX2xlbiArPSBsZW47Ci0gCi0gCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwotIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOwotIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKLS0JICAgICAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKLS0JCSAgICAgICAoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyLCBsZW4pOwotKwkgICAgICBsZW4gPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7Ci0rCSAgICAgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAotKwkJCSAgICAgIHNydW5wLT5zdHIsIGxlbik7Ci0gCSAgICAgIHRvX2xlbiArPSBsZW47Ci0gCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7Ci0gCSAgICB9Ci1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLWluZGV4IDhlOTg0OWZkYmEuLjAyOGQzZWZhOWYgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1AQCAtMjIwLDggKzIyMCwxMCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHd0X2ZtdF9hbXBtW10KLSsJICAgID0geyAnJScsJ0knLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywnJScsJ3AnLDAgfTsKLSAJICB0aW1lLT50X2ZtdF9hbXBtID0gIiVJOiVNOiVTICVwIjsKLS0JICB0aW1lLT53dF9mbXRfYW1wbSA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVJOiVNOiVTICVwIjsKLSsJICB0aW1lLT53dF9mbXRfYW1wbSA9IHd0X2ZtdF9hbXBtOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0yMzEsNyArMjMzLDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAotIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OwotICAgICAgIHNpemVfdCBpZHg7Ci0tICAgICAgd2NoYXJfdCAqd3N0cjsKLSsgICAgICB1aW50MzJfdCAqd3N0cjsKLSAKLSAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9Ci0gCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQotQEAgLTQ1NywxOCArNDU5LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7Ci0gCSAgICB9Ci0gCi0gCSAgLyogTm93IGdlbmVyYXRlIHRoZSB3aWRlIGNoYXJhY3RlciBuYW1lIGFuZCBmb3JtYXQuICAqLwotLQkgIHdzdHIgPSB3Y3NjaHIgKCh3Y2hhcl90ICopIHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7LyogZW5kIGRpcmVjdGlvbiAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgb2Zmc2V0ICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBzdGFydCAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgZW5kICovCi0rCSAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7IC8qIGVuZCBkaXJlY3Rpb24gKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBvZmZzZXQgKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBzdGFydCAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIGVuZCAqLwotIAkgIGlmICh3c3RyICE9IE5VTEwpCi0gCSAgICB7Ci0tCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSAodWludDMyX3QgKikgd3N0ciArIDE7Ci0tCSAgICAgIHdzdHIgPSB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKTsJLyogZW5kIG5hbWUgKi8KLSsJICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9IHdzdHIgKyAxOwotKwkgICAgICB3c3RyID0gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpOyAvKiBlbmQgbmFtZSAqLwotIAkgICAgICBpZiAod3N0ciAhPSBOVUxMKQotIAkJewotIAkJICAqd3N0ciA9IEwnXDAnOwotLQkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSAodWludDMyX3QgKikgd3N0ciArIDE7Ci0rCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9IHdzdHIgKyAxOwotIAkJfQotIAkgICAgICBlbHNlCi0gCQl0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0KLUBAIC01MjcsNyArNTI5LDE2IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7Ci0gICBpZiAodGltZS0+ZGF0ZV9mbXQgPT0gTlVMTCkKLSAgICAgdGltZS0+ZGF0ZV9mbXQgPSAiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOwotICAgaWYgKHRpbWUtPndkYXRlX2ZtdCA9PSBOVUxMKQotLSAgICB0aW1lLT53ZGF0ZV9mbXQgPSAoY29uc3QgdWludDMyX3QgKikgTCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0rICAgIHsKLSsgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd2RhdGVfZm10W10gPQotKwl7ICclJywnYScsJyAnLAotKwkgICclJywnYicsJyAnLAotKwkgICclJywnZScsJyAnLAotKwkgICclJywnSCcsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLAotKwkgICclJywnWicsJyAnLAotKwkgICclJywnWScsMCB9OwotKyAgICAgIHRpbWUtPndkYXRlX2ZtdCA9IHdkYXRlX2ZtdDsKLSsgICAgfQotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotaW5kZXggZWQzYTk3MzFkMC4uMzE3OGVhMDU3YSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKLUBAIC01OTUsNyArNTk1LDcgQEAgZ2V0X3N0cmluZyAoc3RydWN0IGxpbmVyZWFkZXIgKmxyLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIHsKLSAgIGludCByZXR1cm5fd2lkZXN0ciA9IGxyLT5yZXR1cm5fd2lkZXN0cjsKLSAgIGNoYXIgKmJ1ZjsKLS0gIHdjaGFyX3QgKmJ1ZjIgPSBOVUxMOwotKyAgdWludDMyX3QgKmJ1ZjIgPSBOVUxMOwotICAgc2l6ZV90IGJ1ZmFjdDsKLSAgIHNpemVfdCBidWZtYXggPSA1NjsKLSAKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLWluZGV4IGI3YmNlZjgyNDguLmVmZWNlZDFlMGYgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotQEAgLTEwOSw2ICsxMDksNyBAQCB2b2lkICgqYXJncF9wcm9ncmFtX3ZlcnNpb25faG9vaykgKEZJTEUgKiwgc3RydWN0IGFyZ3Bfc3RhdGUgKikgPSBwcmludF92ZXJzaW9uOwotICNkZWZpbmUgT1BUX05PX1dBUk4gNDAyCi0gI2RlZmluZSBPUFRfV0FSTiA0MDMKLSAjZGVmaW5lIE9QVF9OT19IQVJEX0xJTktTIDQwNAotKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDUKLSAKLSAvKiBEZWZpbml0aW9ucyBvZiBhcmd1bWVudHMgZm9yIGFyZ3AgZnVuY3Rpb25zLiAgKi8KLSBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci1AQCAtMTUzLDYgKzE1NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KLSAgICAgTl8oIkdlbmVyYXRlIGxpdHRsZS1lbmRpYW4gb3V0cHV0IikgfSwKLSAgIHsgImJpZy1lbmRpYW4iLCBPUFRfQklHX0VORElBTiwgTlVMTCwgMCwKLSAgICAgTl8oIkdlbmVyYXRlIGJpZy1lbmRpYW4gb3V0cHV0IikgfSwKLSsgIHsgInVpbnQzMi1hbGlnbiIsIE9QVF9VSU5UMzJfQUxJR04sICJBTElHTk1FTlQiLCAwLAotKyAgICBOXygiU2V0IHRoZSB0YXJnZXQncyB1aW50MzJfdCBhbGlnbm1lbnQgaW4gYnl0ZXMgKGRlZmF1bHQgNCkiKSB9LAotICAgeyBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMIH0KLSB9OwotIAotQEAgLTI0MiwxMiArMjQ1LDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICBjdHlwZSBsb2NhbGUuICAoUDEwMDMuMiA0LjM1LjUuMikgICovCi0gICBzZXRsb2NhbGUgKExDX0NUWVBFLCAiUE9TSVgiKTsKLSAKLSsjaWZuZGVmIE5PX1NZU0NPTkYKLSAgIC8qIExvb2sgd2hldGhlciB0aGUgc3lzdGVtIHJlYWxseSBhbGxvd3MgbG9jYWxlIGRlZmluaXRpb25zLiAgUE9TSVgKLSAgICAgIGRlZmluZXMgZXJyb3IgY29kZSAzIGZvciB0aGlzIHNpdHVhdGlvbiBzbyBJIHRoaW5rIGl0IG11c3QgYmUKLSAgICAgIGEgZmF0YWwgZXJyb3IgKHNlZSBQMTAwMy4yIDQuMzUuOCkuICAqLwotICAgaWYgKHN5c2NvbmYgKF9TQ18yX0xPQ0FMRURFRikgPCAwKQotICAgICByZWNvcmRfZXJyb3IgKDMsIDAsIF8oIlwKLSBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpOwotKyNlbmRpZgotIAotICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLwotICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7Ci1AQCAtMzk5LDYgKzQwNCw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCi0gICAgICAgLyogRG8gbm90IGhhcmQgbGluayB0byBvdGhlciBsb2NhbGVzLiAgKi8KLSAgICAgICBoYXJkX2xpbmtzID0gZmFsc2U7Ci0gICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgT1BUX1VJTlQzMl9BTElHTjoKLSsgICAgICB1aW50MzJfYWxpZ25fbWFzayA9IHN0cnRvbCAoYXJnLCBOVUxMLCAwKSAtIDE7Ci0rICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgJ2MnOgotICAgICAgIGZvcmNlX291dHB1dCA9IDE7Ci0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLWluZGV4IGU0YmE0OGU5NjguLmU3YjBlZmU4ODcgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1AQCAtNTQ0LDYgKzU0NCw5IEBAIGNvbXBhcmVfZmlsZXMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lMSwgY29uc3QgY2hhciAqZmlsZW5hbWUyLCBzaXplX3Qgc2l6ZSwKLSAgICBtYWNoaW5lIHJ1bm5pbmcgbG9jYWxlZGVmLiAgKi8KLSBib29sIHN3YXBfZW5kaWFubmVzc19wOwotIAotKy8qIFRoZSB0YXJnZXQncyB2YWx1ZSBvZiBfX2FsaWduX18odWludDMyX3QpIC0gMS4gICovCi0rdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrID0gMzsKLSsKLSAvKiBXaGVuIGNhbGxlZCBvdXRzaWRlIGEgc3RhcnRfbG9jYWxlX3N0cnVjdHVyZS9lbmRfbG9jYWxlX3N0cnVjdHVyZQotICAgIG9yIHN0YXJ0X2xvY2FsZV9wcmVsdWRlL2VuZF9sb2NhbGVfcHJlbHVkZSBibG9jaywgcmVjb3JkIHRoYXQgdGhlCi0gICAgbmV4dCBieXRlIGluIEZJTEUncyBvYnN0YWNrIHdpbGwgYmUgdGhlIGZpcnN0IGJ5dGUgb2YgYSBuZXcgZWxlbWVudC4KLUBAIC02MjEsNyArNjI0LDcgQEAgYWRkX2xvY2FsZV9zdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyaW5nKQotIHZvaWQKLSBhZGRfbG9jYWxlX3dzdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgdWludDMyX3QgKnN0cmluZykKLSB7Ci0tICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHN0cmluZykgKyAxKTsKLSsgIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbl91aW50MzIgKHN0cmluZykgKyAxKTsKLSB9Ci0gCi0gLyogUmVjb3JkIHRoYXQgRklMRSdzIG5leHQgZWxlbWVudCBpcyB0aGUgMzItYml0IGludGVnZXIgVkFMVUUuICAqLwotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1pbmRleCBjMDYzZmMwOTdkLi40ZTc0NjVlNTVhIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIHZvaWQgd3JpdGVfYWxsX2NhdGVnb3JpZXMgKHN0cnVjdCBsb2NhbGVkZWZfdCAqZGVmaW5pdGlvbnMsCi0gCi0gZXh0ZXJuIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7Ci0gCi0rZXh0ZXJuIHVuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzazsKLSsKLSAvKiBDaGFuZ2UgdGhlIG91dHB1dCB0byBiZSBiaWctZW5kaWFuIGlmIEJJR19FTkRJQU4gaXMgdHJ1ZSBhbmQKLSAgICBsaXR0bGUtZW5kaWFuIG90aGVyd2lzZS4gICovCi0gc3RhdGljIGlubGluZSB2b2lkCi1AQCAtODksNyArOTEsOCBAQCBtYXliZV9zd2FwX3VpbnQzMiAodWludDMyX3QgdmFsdWUpCi0gfQotIAotIC8qIExpa2V3aXNlLCBidXQgbXVuZ2UgYW4gYXJyYXkgb2YgTiB1aW50MzJfdHMgc3RhcnRpbmcgYXQgQVJSQVkuICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotK3N0YXRpYyB2b2lkCi0rX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCi0gewotICAgaWYgKHN3YXBfZW5kaWFubmVzc19wKQotQEAgLTk5LDcgKzEwMiw4IEBAIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQotIAotIC8qIExpa2UgbWF5YmVfc3dhcF91aW50MzJfYXJyYXksIGJ1dCB0aGUgYXJyYXkgb2YgTiBlbGVtZW50cyBpcyBhdAotICAgIHRoZSBlbmQgb2YgT0JTVEFDSydzIGN1cnJlbnQgb2JqZWN0LiAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgdm9pZAotK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIG1heWJlX3N3YXBfdWludDMyX29ic3RhY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBzaXplX3QgbikKLSB7Ci0gICBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAoKHVpbnQzMl90ICopIG9ic3RhY2tfbmV4dF9mcmVlIChvYnN0YWNrKSAtIG4sIG4pOwotQEAgLTI3Niw0ICsyODAsNTUgQEAgZXh0ZXJuIHZvaWQgaWRlbnRpZmljYXRpb25fb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwKLSAJCQkJICAgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAJCQkJICAgY29uc3QgY2hhciAqb3V0cHV0X3BhdGgpOwotIAotK3N0YXRpYyBzaXplX3Qgd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyB1aW50MzJfdCAqIHdtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgdWludDMyX3QgKiB3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgaW50IHdjc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIGludCB3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rCi0rc3RhdGljIHNpemVfdAotK3djc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpCi0rewotKyAgc2l6ZV90IGxlbiA9IDA7Ci0rICB3aGlsZSAoc3RyW2xlbl0gIT0gMCkKLSsgICAgbGVuKys7Ci0rICByZXR1cm4gbGVuOwotK30KLSsKLStzdGF0aWMgIGludAotK3dtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCi0rewotKyAgd2hpbGUgKG4tLSAhPSAwKQotKyAgICB7Ci0rICAgICAgaW50IGRpZmYgPSAqczErKyAtICpzMisrOwotKyAgICAgIGlmIChkaWZmICE9IDApCi0rCXJldHVybiBkaWZmOwotKyAgICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGludAotK3djc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKQotK3sKLSsgIHdoaWxlICgqczEgIT0gMCAmJiAqczEgPT0gKnMyKQotKyAgICBzMSsrLCBzMisrOwotKyAgcmV0dXJuICpzMSAtICpzMjsKLSt9Ci0rCi0rc3RhdGljIHVpbnQzMl90ICoKLSt3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQotK3sKLSsgIHJldHVybiBtZW1jcHkgKHMxLCBzMiwgbiAqIHNpemVvZiAodWludDMyX3QpKTsKLSt9Ci0rCi0rc3RhdGljIHVpbnQzMl90ICoKLSt3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpCi0rewotKyAgZG8KLSsgICAgaWYgKCpzID09IGNoKQotKyAgICAgIHJldHVybiAodWludDMyX3QgKikgczsKLSsgIHdoaWxlICgqcysrICE9IDApOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotICNlbmRpZiAvKiBsb2NmaWxlLmggKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvc2V0bG9jYWxlLmMgYi9sb2NhbGUvc2V0bG9jYWxlLmMKLWluZGV4IDliZDM1NDU0YjkuLjJhNjdkYzY1ODkgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvc2V0bG9jYWxlLmMKLSsrKyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotQEAgLTY0LDM2ICs2NCw2IEBAIHN0YXRpYyBjaGFyICpjb25zdCBfbmxfY3VycmVudF91c2VkW10gPQotICNlbmRpZgotIAotIAotLS8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KLS1jb25zdCB1bmlvbiBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQotLSAgewotLSAgICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgICAgY2F0ZWdvcnlfbmFtZSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmIERFRklORV9DQVRFR09SWQotLSAgICB9Ci0tICB9OwotLQotLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQotLSAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHVuaW9uIGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0tICB9OwotLQotLS8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCi0tY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQotLSAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZglERUZJTkVfQ0FURUdPUlkKLS0gICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKLS0gIH07Ci0tCi0tCi0gI2lmZGVmIE5MX0NVUlJFTlRfSU5ESVJFQ1QKLSAjIGRlZmluZSBXRUFLX1BPU1RMT0FEKHBvc3Rsb2FkKSB3ZWFrX2V4dGVybiAocG9zdGxvYWQpCi0gI2Vsc2UKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNTAzYzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gMjVjMjE4NTdhM2ZjMGViMjY4MzE2MTZiYTg4YTY5NmRkMzFlY2JhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjU1OjUzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKKworMjAxMC0wOS0yOSAgTm9idWhpcm8gSXdhbWF0c3UgIDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KKyAgICAgICAgICAgIEFuZHJldyBTdHViYnMgIDxhbXNAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICBSZXNvbHZlIFNIJ3MgX19mcHNjcl92YWx1ZXMgdG8gc3ltYm9sIGluIGxpYmMuc28uCisKKyAgICAgICAgKiBzeXNkZXBzL3NoL3NoNC9mcHUvZnB1X2NvbnRyb2wuaDogQWRkIEMrKyBfX3NldF9mcHNjciBwcm90b3R5cGUuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgKEdMSUJDXzIuMik6IEFkZCBfX2Zwc2NyX3ZhbHVlcy4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyAoX19fZnBzY3JfdmFsdWVzKTogTmV3IGNvbnN0YW50LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIHwgIDEgKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIHwgMTEgKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKK2luZGV4IGUwOTM4YzQxNjUuLmNhMWQ3ZGEzMzkgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKK0BAIC0yLDYgKzIsNyBAQCBsaWJjIHsKKyAgIEdMSUJDXzIuMiB7CisgICAgICMgZnVuY3Rpb25zIHVzZWQgaW4gb3RoZXIgbGlicmFyaWVzCisgICAgIF9feHN0YXQ2NDsgX19meHN0YXQ2NDsgX19seHN0YXQ2NDsKKysgICAgX19mcHNjcl92YWx1ZXM7CisgCisgICAgICMgYSoKKyAgICAgYWxwaGFzb3J0NjQ7CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworaW5kZXggODVmZjNmOTAwZS4uNzc0M2I4ZDU3YSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworQEAgLTMwLDMgKzMwLDE0IEBAIEVOVFJZIChfX3N5c2NhbGxfZXJyb3IpCisgCisgI2RlZmluZSBfX3N5c2NhbGxfZXJyb3IgX19zeXNjYWxsX2Vycm9yXzEKKyAjaW5jbHVkZSA8c3lzZGVwcy91bml4L3NoL3N5c2RlcC5TPgorKworKyAgICAgICAuZGF0YQorKyAgICAgICAuYWxpZ24gMworKyAgICAgICAuZ2xvYmwgX19fZnBzY3JfdmFsdWVzCisrICAgICAgIC50eXBlIF9fX2Zwc2NyX3ZhbHVlcywgQG9iamVjdAorKyAgICAgICAuc2l6ZSBfX19mcHNjcl92YWx1ZXMsIDgKKytfX19mcHNjcl92YWx1ZXM6CisrICAgICAgIC5sb25nIDAKKysgICAgICAgLmxvbmcgMHg4MDAwMAorK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc2NjdkYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhZmE4ZDZmYWVkZGViODBhY2EzMThiMzNlZGY0OWQ5ZjhjZTY1NzYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yOF0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCi0KLVRoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKLUNlbnRPcyA1LlggbWFjaGluZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLWluZGV4IGExZTZlMGVjM2MuLjdmNzU1MjhlYWUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotQEAgLTE5LDYgKzE5LDkgQEAKLSAjaWZuZGVmIF9MRF9DT05GSUdfSAotICNkZWZpbmUgX0xEX0NPTkZJR19ICTEKLSAKLSsjaWZuZGVmIERVTU1ZX0xPQ0FMRV9UCi0rI2RlZmluZSBEVU1NWV9MT0NBTEVfVAotKyNlbmRpZgotIC8qIFVzZSB0aGUgaW50ZXJuYWwgdGV4dGRvbWFpbiB1c2VkIGZvciBsaWJjIG1lc3NhZ2VzLiAgKi8KLSAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCi0gI2lmbmRlZiBWRVJTSU9OCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTkwZjIyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDU2MCBAQAorRnJvbSAzMDAwODMyN2FhZGYwYzc3NWU2NDRiYjM4N2Q3YzI1OTUyZWQwNWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKy0KKyBsb2NhbGUvY2F0bmFtZXMuYyAgICAgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jICB8IDE3ICsrKysrLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyAgICB8IDI3ICsrKysrKysrLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jICAgICB8IDMxICsrKysrKysrKysrKy0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgICB8ICA4ICsrKysrCisgbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyAgICAgfCAgNSArKy0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgbG9jYWxlL3NldGxvY2FsZS5jICAgICAgICAgICAgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLQorIDEyIGZpbGVzIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9NYWtlZmlsZSBiL2xvY2FsZS9NYWtlZmlsZQoraW5kZXggYzk2OTRlMjM2ZS4uYmE3MTA1ZmFkNiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9NYWtlZmlsZQorKysrIGIvbG9jYWxlL01ha2VmaWxlCitAQCAtMjYsNyArMjYsOCBAQCBoZWFkZXJzCQk9IGxhbmdpbmZvLmggbG9jYWxlLmggYml0cy9sb2NhbGUuaCBcCisgCQkgIGJpdHMvdHlwZXMvbG9jYWxlX3QuaCBiaXRzL3R5cGVzL19fbG9jYWxlX3QuaAorIHJvdXRpbmVzCT0gc2V0bG9jYWxlIGZpbmRsb2NhbGUgbG9hZGxvY2FsZSBsb2FkYXJjaGl2ZSBcCisgCQkgIGxvY2FsZWNvbnYgbmxfbGFuZ2luZm8gbmxfbGFuZ2luZm9fbCBtYl9jdXJfbWF4IFwKKy0JCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZQorKwkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlIFwKKysJCSAgY2F0bmFtZXMKKyB0ZXN0cwkJPSB0c3QtQy1sb2NhbGUgdHN0LWxvY25hbWUgdHN0LWR1cGxvY2FsZQorIGNhdGVnb3JpZXMJPSBjdHlwZSBtZXNzYWdlcyBtb25ldGFyeSBudW1lcmljIHRpbWUgcGFwZXIgbmFtZSBcCisgCQkgIGFkZHJlc3MgdGVsZXBob25lIG1lYXN1cmVtZW50IGlkZW50aWZpY2F0aW9uIGNvbGxhdGUKK2RpZmYgLS1naXQgYS9sb2NhbGUvY2F0bmFtZXMuYyBiL2xvY2FsZS9jYXRuYW1lcy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNTM4ZjNmNWVkYgorLS0tIC9kZXYvbnVsbAorKysrIGIvbG9jYWxlL2NhdG5hbWVzLmMKK0BAIC0wLDAgKzEsNDYgQEAKKysvKiBDb3B5cmlnaHQgKEMpIDIwMDYgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSAibG9jYWxlaW5mby5oIgorKworKy8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KKytjb25zdCBzdHJ1Y3QgY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgY2F0ZWdvcnlfbmFtZSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mIChzdHJ1Y3QgY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgIH07CisrCisrLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCisrICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmCURFRklORV9DQVRFR09SWQorKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQorKyAgfTsKK2RpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAoraW5kZXggZmRjMjgzYzY5YS4uNGVlZWQzNWY5MCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKKysrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKK0BAIC0yMzAsNyArMjMwLDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKKyAgICB1bnVzZWQuICBXZSBjYW4gbWFuYWdlIHRoaXMgcGxheWluZyBzb21lIHRyaWNrcyB3aXRoIHdlYWsgcmVmZXJlbmNlcy4KKyAgICBCdXQgd2l0aCB0aHJlYWQtbG9jYWwgbG9jYWxlIHNldHRpbmdzLCBpdCBiZWNvbWVzIHF1aXRlIHVuZ2Fpbmx5IHVubGVzcworICAgIHdlIGNhbiB1c2UgX190aHJlYWQgdmFyaWFibGVzLiAgU28gb25seSBpbiB0aGF0IGNhc2UgZG8gd2UgYXR0ZW1wdCB0aGlzLiAgKi8KKy0jaWZuZGVmIFNIQVJFRAorKyNpZiAhZGVmaW5lZCBTSEFSRUQgJiYgIWRlZmluZWQgSU5fR0xJQkNfTE9DQUxFREVGCisgIyBpbmNsdWRlIDx0bHMuaD4KKyAjIGRlZmluZSBOTF9DVVJSRU5UX0lORElSRUNUCTEKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCitpbmRleCAxYTUyNmEyNDBkLi4wZmIyZGFmOTM2IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCitAQCAtMTgsNyArMTgsOSBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgI2luY2x1ZGUgPHNwYXduLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0xNTQsNiArMTU2LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCisgICByZXR1cm4gY2xvc2VkaXIgKGRpcik7CisgfQorIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucworICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCisgc3RhdGljCitAQCAtMjAyLDYgKzIwNSw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCisgICAgIH0KKyAgIHJldHVybiBOVUxMOworIH0KKysjZW5kaWYKKyAKKyAvKiBPcGVucyBhIGNoYXJtYXAgZm9yIHJlYWRpbmcsIGdpdmVuIGl0cyBuYW1lIChub3QgYW4gYWxpYXMgbmFtZSkuICAqLworIEZJTEUgKgorQEAgLTIyNCw2ICsyMjgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN0cmVhbTsKKyAKKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAgIG1lbWNweSAocCwgIi5neiIsIDQpOworICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImd6aXAiKTsKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKK0BAIC0yMzMsNiArMjM4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKKyAgIGlmIChzdHJlYW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN0cmVhbTsKKysjZW5kaWYKKyAKKyAgIHJldHVybiBOVUxMOworIH0KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworaW5kZXggZmViMWExMTI1OC4uNWE4ZTUyMjQ3MCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKK0BAIC0zNDksNyArMzQ5LDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCisgICAgIH0KKyAgIGlmICh3Y3MgIT0gTlVMTCkKKyAgICAgeworLSAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuICgod2NoYXJfdCAqKSB3Y3MpOworKyAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuX3VpbnQzMiAod2NzKTsKKyAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKKyAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLworICAgICAgIGlmIChud2NzID09IDApCitAQCAtMTc3Miw4ICsxNzcyLDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOworIAorIAkgICAgICBpZiAoKCplcHRyKS0+bndjcyA9PSBydW5wLT5ud2NzKQorIAkJeworLQkJICBpbnQgYyA9IHdtZW1jbXAgKCh3Y2hhcl90ICopICgqZXB0ciktPndjcywKKy0JCQkJICAgKHdjaGFyX3QgKikgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKKysJCSAgaW50IGMgPSB3bWVtY21wX3VpbnQzMiAoKCplcHRyKS0+d2NzLCBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworIAorIAkJICBpZiAoYyA9PSAwKQorIAkJICAgIHsKK0BAIC0yMDAwLDkgKzE5OTksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCisgCSAgICAgb25lIGNvbnNlY3V0aXZlIGVudHJ5LiAgKi8KKyAJICBpZiAocnVucC0+d2NuZXh0ICE9IE5VTEwKKyAJICAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKKy0JICAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAorLQkJCSAgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKKy0JCQkgIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisrCSAgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCisrCQkJCSBydW5wLT53Y25leHQtPndjcywKKysJCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisgCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCisgCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQorIAkgICAgeworQEAgLTIwMjYsOSArMjAyNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJCXJ1bnAgPSBydW5wLT53Y25leHQ7CisgCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkJICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJCSAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKysJCSAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJCXJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkJcnVucC0+bndjcyAtIDEpID09IDAKKyAJCSAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOworIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKK2luZGV4IDMzMjgwOTNkMGUuLmQ1OGZiMGY0YjcgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKK0BAIC05MTUsNyArOTE1LDcgQEAgY3R5cGVfb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgIGFsbG9jYXRlX2FycmF5cyAoY3R5cGUsIGNoYXJtYXAsIGN0eXBlLT5yZXBlcnRvaXJlKTsKKyAKKyAgIGRlZmF1bHRfbWlzc2luZ19sZW4gPSAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZworLQkJCSA/IHdjc2xlbiAoKHdjaGFyX3QgKikgY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKKysJCQkgPyB3Y3NsZW5fdWludDMyIChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorIAkJCSA6IDApOworIAorICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7CitAQCAtMTkyNyw3ICsxOTI3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKKyAJICAgIGlnbm9yZSA9IDE7CisgCSAgZWxzZQorIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLworLQkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuICgod2NoYXJfdCAqKSB0b193c3RyKSAqIDQpOworKwkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuX3VpbnQzMiAodG9fd3N0cikgKiA0KTsKKyAKKyAJICBmaXJzdCA9IDA7CisgCX0KK0BAIC0yNDYxLDggKzI0NjEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOworIAkgICAgfQorIAorIAloYW5kbGVfdG9rX2RpZ2l0OgorLQkgIGNsYXNzX2JpdCA9IF9JU3dkaWdpdDsKKy0JICBjbGFzczI1Nl9iaXQgPSBfSVNkaWdpdDsKKysJICBjbGFzc19iaXQgPSBCSVR3ICh0b2tfZGlnaXQpOworKwkgIGNsYXNzMjU2X2JpdCA9IEJJVCAodG9rX2RpZ2l0KTsKKyAJICBoYW5kbGVfZGlnaXRzID0gMTsKKyAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOworIAorQEAgLTM5MDQsOCArMzkwNCw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAKKyAJICB3aGlsZSAoaWR4IDwgbnVtYmVyKQorIAkgICAgeworLQkgICAgICBpbnQgcmVzID0gd2NzY21wICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbaWR4XS0+ZnJvbSwKKy0JCQkJKGNvbnN0IHdjaGFyX3QgKikgcnVucC0+ZnJvbSk7CisrCSAgICAgIGludCByZXMgPSB3Y3NjbXBfdWludDMyIChzb3J0ZWRbaWR4XS0+ZnJvbSwgcnVucC0+ZnJvbSk7CisgCSAgICAgIGlmIChyZXMgPT0gMCkKKyAJCXsKKyAJCSAgcmVwbGFjZSA9IDE7CitAQCAtMzk0MiwxMSArMzk0MSwxMSBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgICAgICAgZm9yIChzaXplX3QgY250ID0gMDsgY250IDwgbnVtYmVyOyArK2NudCkKKyAJeworIAkgIHN0cnVjdCB0cmFuc2xpdF90b190ICpzcnVucDsKKy0JICBmcm9tX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgZnJvbV9sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgdG9fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB0b19sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorIAkgIC8qIFBsdXMgb25lIGZvciB0aGUgZXh0cmEgTlVMIGNoYXJhY3RlciBtYXJraW5nIHRoZSBlbmQgb2YKK0BAIC0zOTcwLDE4ICszOTY5LDE4IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAJICBjdHlwZS0+dHJhbnNsaXRfZnJvbV9pZHhbY250XSA9IGZyb21fbGVuOworIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAKKy0JICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CistCSAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCistCQkgICAoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKKysJICBsZW4gPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworKwkgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKysJCQkgIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworIAkgIGZyb21fbGVuICs9IGxlbjsKKyAKKyAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47CisgCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87CisgCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOworLQkgICAgICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAorLQkJICAgICAgIChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIsIGxlbik7CisrCSAgICAgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKKysJICAgICAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCisrCQkJICAgICAgc3J1bnAtPnN0ciwgbGVuKTsKKyAJICAgICAgdG9fbGVuICs9IGxlbjsKKyAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKKyAJICAgIH0KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworaW5kZXggZjdkYjg3M2FkYi4uZmVjMzc3M2M5ZCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKK0BAIC0yMjAsOCArMjIwLDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CisgCX0KKyAgICAgICBlbHNlCisgCXsKKysJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQorKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OworIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOworLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOworKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07CisgCX0KKyAgICAgfQorIAorQEAgLTIzMSw3ICsyMzMsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworICAgICAgIGNvbnN0IGludCBkYXlzX3Blcl9tb250aFsxMl0gPSB7IDMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsCisgCQkJCSAgICAgICAzMSwgMzEsIDMwLCAzMSAsMzAsIDMxIH07CisgICAgICAgc2l6ZV90IGlkeDsKKy0gICAgICB3Y2hhcl90ICp3c3RyOworKyAgICAgIHVpbnQzMl90ICp3c3RyOworIAorICAgICAgIHRpbWUtPmVyYV9lbnRyaWVzID0KKyAJKHN0cnVjdCBlcmFfZGF0YSAqKSB4bWFsbG9jICh0aW1lLT5udW1fZXJhCitAQCAtNDU3LDE4ICs0NTksMTggQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKKyAJICAgIH0KKyAKKyAJICAvKiBOb3cgZ2VuZXJhdGUgdGhlIHdpZGUgY2hhcmFjdGVyIG5hbWUgYW5kIGZvcm1hdC4gICovCistCSAgd3N0ciA9IHdjc2NociAoKHdjaGFyX3QgKikgdGltZS0+d2VyYVtpZHhdLCBMJzonKTsvKiBlbmQgZGlyZWN0aW9uICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBvZmZzZXQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIHN0YXJ0ICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBlbmQgKi8KKysJICB3c3RyID0gd2NzY2hyX3VpbnQzMiAodGltZS0+d2VyYVtpZHhdLCBMJzonKTsgLyogZW5kIGRpcmVjdGlvbiAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIG9mZnNldCAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIHN0YXJ0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgZW5kICovCisgCSAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKKy0JICAgICAgd3N0ciA9IHdjc2NociAod3N0ciArIDEsIEwnOicpOwkvKiBlbmQgbmFtZSAqLworKwkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gd3N0ciArIDE7CisrCSAgICAgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6Jyk7IC8qIGVuZCBuYW1lICovCisgCSAgICAgIGlmICh3c3RyICE9IE5VTEwpCisgCQl7CisgCQkgICp3c3RyID0gTCdcMCc7CistCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKKysJCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gd3N0ciArIDE7CisgCQl9CisgCSAgICAgIGVsc2UKKyAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQorQEAgLTUyNyw3ICs1MjksMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKKyAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQorICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CisgICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCistICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKysgICAgeworKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9CisrCXsgJyUnLCdhJywnICcsCisrCSAgJyUnLCdiJywnICcsCisrCSAgJyUnLCdlJywnICcsCisrCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCisrCSAgJyUnLCdaJywnICcsCisrCSAgJyUnLCdZJywwIH07CisrICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OworKyAgICB9CisgfQorIAorIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitpbmRleCA3ZWJkOTMzODAxLi41NzUzNzUwNzU2IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgeworICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOworICAgY2hhciAqYnVmOworLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7CisrICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7CisgICBzaXplX3QgYnVmYWN0OworICAgc2l6ZV90IGJ1Zm1heCA9IDU2OworIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworaW5kZXggZGJiYjAxNDVjMC4uMDk3YThiNjE5MyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitAQCAtMTA5LDYgKzEwOSw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247CisgI2RlZmluZSBPUFRfTk9fV0FSTiA0MDIKKyAjZGVmaW5lIE9QVF9XQVJOIDQwMworICNkZWZpbmUgT1BUX05PX0hBUkRfTElOS1MgNDA0CisrI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwNQorIAorIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLworIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KK0BAIC0xNTMsNiArMTU0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAorICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAorICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LAorKyAgeyAidWludDMyLWFsaWduIiwgT1BUX1VJTlQzMl9BTElHTiwgIkFMSUdOTUVOVCIsIDAsCisrICAgIE5fKCJTZXQgdGhlIHRhcmdldCdzIHVpbnQzMl90IGFsaWdubWVudCBpbiBieXRlcyAoZGVmYXVsdCA0KSIpIH0sCisgICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQorIH07CisgCitAQCAtMjQyLDEyICsyNDUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgIGN0eXBlIGxvY2FsZS4gIChQMTAwMy4yIDQuMzUuNS4yKSAgKi8KKyAgIHNldGxvY2FsZSAoTENfQ1RZUEUsICJQT1NJWCIpOworIAorKyNpZm5kZWYgTk9fU1lTQ09ORgorICAgLyogTG9vayB3aGV0aGVyIHRoZSBzeXN0ZW0gcmVhbGx5IGFsbG93cyBsb2NhbGUgZGVmaW5pdGlvbnMuICBQT1NJWAorICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQorICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCisgICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCisgICAgIHJlY29yZF9lcnJvciAoMywgMCwgXygiXAorIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSk7CisrI2VuZGlmCisgCisgICAvKiBQcm9jZXNzIGNoYXJtYXAgZmlsZS4gICovCisgICBjaGFybWFwID0gY2hhcm1hcF9yZWFkIChjaGFybWFwX2ZpbGUsIHZlcmJvc2UsIDEsIGJlX3F1aWV0LCAxKTsKK0BAIC0zOTksNiArNDA0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKKyAgICAgICAvKiBEbyBub3QgaGFyZCBsaW5rIHRvIG90aGVyIGxvY2FsZXMuICAqLworICAgICAgIGhhcmRfbGlua3MgPSBmYWxzZTsKKyAgICAgICBicmVhazsKKysgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgorKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKKysgICAgICBicmVhazsKKyAgICAgY2FzZSAnYyc6CisgICAgICAgZm9yY2Vfb3V0cHV0ID0gMTsKKyAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworaW5kZXggZWIyZjQ2MzRkYS4uZDM4NzE0NzMyMyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKK0BAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLAorICAgIG1hY2hpbmUgcnVubmluZyBsb2NhbGVkZWYuICAqLworIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7CisgCisrLyogVGhlIHRhcmdldCdzIHZhbHVlIG9mIF9fYWxpZ25fXyh1aW50MzJfdCkgLSAxLiAgKi8KKyt1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2sgPSAzOworKworIC8qIFdoZW4gY2FsbGVkIG91dHNpZGUgYSBzdGFydF9sb2NhbGVfc3RydWN0dXJlL2VuZF9sb2NhbGVfc3RydWN0dXJlCisgICAgb3Igc3RhcnRfbG9jYWxlX3ByZWx1ZGUvZW5kX2xvY2FsZV9wcmVsdWRlIGJsb2NrLCByZWNvcmQgdGhhdCB0aGUKKyAgICBuZXh0IGJ5dGUgaW4gRklMRSdzIG9ic3RhY2sgd2lsbCBiZSB0aGUgZmlyc3QgYnl0ZSBvZiBhIG5ldyBlbGVtZW50LgorQEAgLTYyMSw3ICs2MjQsNyBAQCBhZGRfbG9jYWxlX3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHJpbmcpCisgdm9pZAorIGFkZF9sb2NhbGVfd3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCB1aW50MzJfdCAqc3RyaW5nKQorIHsKKy0gIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3RyaW5nKSArIDEpOworKyAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuX3VpbnQzMiAoc3RyaW5nKSArIDEpOworIH0KKyAKKyAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK2luZGV4IDdlYTEwMDM4YjQuLjA4ODhjMDk3NjIgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCitAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gdm9pZCB3cml0ZV9hbGxfY2F0ZWdvcmllcyAoc3RydWN0IGxvY2FsZWRlZl90ICpkZWZpbml0aW9ucywKKyAKKyBleHRlcm4gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKytleHRlcm4gdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrOworKworIC8qIENoYW5nZSB0aGUgb3V0cHV0IHRvIGJlIGJpZy1lbmRpYW4gaWYgQklHX0VORElBTiBpcyB0cnVlIGFuZAorICAgIGxpdHRsZS1lbmRpYW4gb3RoZXJ3aXNlLiAgKi8KKyBzdGF0aWMgaW5saW5lIHZvaWQKK0BAIC04OSw3ICs5MSw4IEBAIG1heWJlX3N3YXBfdWludDMyICh1aW50MzJfdCB2YWx1ZSkKKyB9CisgCisgLyogTGlrZXdpc2UsIGJ1dCBtdW5nZSBhbiBhcnJheSBvZiBOIHVpbnQzMl90cyBzdGFydGluZyBhdCBBUlJBWS4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyB7CisgICBpZiAoc3dhcF9lbmRpYW5uZXNzX3ApCitAQCAtOTksNyArMTAyLDggQEAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCisgCisgLyogTGlrZSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSwgYnV0IHRoZSBhcnJheSBvZiBOIGVsZW1lbnRzIGlzIGF0CisgICAgdGhlIGVuZCBvZiBPQlNUQUNLJ3MgY3VycmVudCBvYmplY3QuICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0YXRpYyB2b2lkCisrX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgbWF5YmVfc3dhcF91aW50MzJfb2JzdGFjayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHNpemVfdCBuKQorIHsKKyAgIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICgodWludDMyX3QgKikgb2JzdGFja19uZXh0X2ZyZWUgKG9ic3RhY2spIC0gbiwgbik7CitAQCAtMjc2LDQgKzI4MCw1NSBAQCBleHRlcm4gdm9pZCBpZGVudGlmaWNhdGlvbl9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLAorIAkJCQkgICBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkJCQkgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCk7CisgCisrc3RhdGljIHNpemVfdCB3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyB1aW50MzJfdCAqIHdjc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgaW50IHdtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKysKKytzdGF0aWMgc2l6ZV90Cisrd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikKKyt7CisrICBzaXplX3QgbGVuID0gMDsKKysgIHdoaWxlIChzdHJbbGVuXSAhPSAwKQorKyAgICBsZW4rKzsKKysgIHJldHVybiBsZW47CisrfQorKworK3N0YXRpYyAgaW50Cisrd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICB3aGlsZSAobi0tICE9IDApCisrICAgIHsKKysgICAgICBpbnQgZGlmZiA9ICpzMSsrIC0gKnMyKys7CisrICAgICAgaWYgKGRpZmYgIT0gMCkKKysJcmV0dXJuIGRpZmY7CisrICAgIH0KKysgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50Cisrd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpCisreworKyAgd2hpbGUgKCpzMSAhPSAwICYmICpzMSA9PSAqczIpCisrICAgIHMxKyssIHMyKys7CisrICByZXR1cm4gKnMxIC0gKnMyOworK30KKysKKytzdGF0aWMgdWludDMyX3QgKgorK3dtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCisreworKyAgcmV0dXJuIG1lbWNweSAoczEsIHMyLCBuICogc2l6ZW9mICh1aW50MzJfdCkpOworK30KKysKKytzdGF0aWMgdWludDMyX3QgKgorK3djc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkKKyt7CisrICBkbworKyAgICBpZiAoKnMgPT0gY2gpCisrICAgICAgcmV0dXJuICh1aW50MzJfdCAqKSBzOworKyAgd2hpbGUgKCpzKysgIT0gMCk7CisrICByZXR1cm4gMDsKKyt9CisrCisgI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYworaW5kZXggMDMwZjE3MjdiZC4uMDk2ZDhlZDg5NSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYworKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCitAQCAtNjMsMzUgKzYzLDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9CisgCisgI2VuZGlmCisgCistCistLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLworLWNvbnN0IHN0cnVjdCBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBjYXRlZ29yeV9uYW1lLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCistICB9OworLQorLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHN0cnVjdCBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmIERFRklORV9DQVRFR09SWQorLSAgfTsKKy0KKy0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCistICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCistICB9OworLQorLQorICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCisgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQorICNlbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWU0NjBlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDA2N2Y3MWEzODFjZTY2MjZlZjExNzliZTNkZDkwYzRlZDJhYTUyZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKKworVGhpcyBpcyBhIGhhY2sgdG8gZml4IGJ1aWxkaW5nIHRoZSBsb2NhbGUgYml0cyBvbiBhbiBvbGRlcgorQ2VudE9zIDUuWCBtYWNoaW5lCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAoraW5kZXggZDc2ZDlmN2U4Yi4uOTJiNTZkN2RmMyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitAQCAtMTksNiArMTksOSBAQAorICNpZm5kZWYgX0xEX0NPTkZJR19ICisgI2RlZmluZSBfTERfQ09ORklHX0gJMQorIAorKyNpZm5kZWYgRFVNTVlfTE9DQUxFX1QKKysjZGVmaW5lIERVTU1ZX0xPQ0FMRV9UCisrI2VuZGlmCisgLyogVXNlIHRoZSBpbnRlcm5hbCB0ZXh0ZG9tYWluIHVzZWQgZm9yIGxpYmMgbWVzc2FnZXMuICAqLworICNkZWZpbmUgUEFDS0FHRSBfbGliY19pbnRsX2RvbWFpbm5hbWUKKyAjaWZuZGVmIFZFUlNJT04KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2OGU0ZjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1Gcm9tIGMxM2UxOGFkYjYzNGE2ZmQ1OTEyOTE1MGFiN2Y5NDY4ZjY0ZGM5MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjQyOjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMjhdIGxvY2FsZWRlZiAtLWFkZC10by1hcmNoaXZlIHVzZXMgYSBoYXJkLWNvZGVkIGxvY2FsZQotIHBhdGgKLQotaXQgZG9lc24ndCBleGlzdCBpbiBub3JtYWwgdXNlLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcGFzcyBhbgotYWx0ZXJuYXRpdmUgZmlsZW5hbWUuCi0KLUFkZCBhIGZhbGxiYWNrIG9mICRMT0NBTEVBUkNISVZFIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmQgYWxsb3cKLWNyZWF0aW9uIG9mIG5ldyBsb2NhbGUgYXJjaGl2ZXMgdGhhdCBhcmUgbm90IHRoZSBzeXN0ZW0gYXJjaGl2ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYwotaW5kZXggZTYzMTBiMThiZS4uZjU0YTc2ZWFkZSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLUBAIC0zNDAsMTIgKzM0MCwyNCBAQCBlbmxhcmdlX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGNvbnN0IHN0cnVjdCBsb2NhcmhlYWQgKmhlYWQpCi0gICBzdHJ1Y3QgbmFtZWhhc2hlbnQgKm9sZG5hbWVoYXNodGFiOwotICAgc3RydWN0IGxvY2FyaGFuZGxlIG5ld19haDsKLSAgIHNpemVfdCBwcmVmaXhfbGVuID0gb3V0cHV0X3ByZWZpeCA/IHN0cmxlbiAob3V0cHV0X3ByZWZpeCkgOiAwOwotLSAgY2hhciBhcmNoaXZlZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKV07Ci0tICBjaGFyIGZuYW1lW3ByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkgKyBzaXplb2YgKCIuWFhYWFhYIikgLSAxXTsKLSsgIGNoYXIgKmFyY2hpdmVmbmFtZTsKLSsgIGNoYXIgKmZuYW1lOwotKyAgY2hhciAqZW52YXJjaGl2ZSA9IGdldGVudigiTE9DQUxFQVJDSElWRSIpOwotIAotLSAgaWYgKG91dHB1dF9wcmVmaXgpCi0tICAgIG1lbWNweSAoYXJjaGl2ZWZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLS0gIHN0cmNweSAoYXJjaGl2ZWZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgIGlmIChlbnZhcmNoaXZlICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIDEpOwotKyAgICAgIGZuYW1lID0geG1hbGxvYyhzdHJsZW4oZW52YXJjaGl2ZSkgKyBzaXplb2YgKCIuWFhYWFhYIikpOwotKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lLCBlbnZhcmNoaXZlKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgYXJjaGl2ZWZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpKTsKLSsgICAgICBmbmFtZSA9IHhtYWxsb2MocHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDEpOwotKyAgICAgIGlmIChvdXRwdXRfcHJlZml4KQotKyAgICAgICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgICAgfQotICAgc3RyY3B5IChzdHBjcHkgKGZuYW1lLCBhcmNoaXZlZm5hbWUpLCAiLlhYWFhYWCIpOwotIAotICAgLyogTm90IGFsbCBvZiB0aGUgb2xkIGZpbGUgaGFzIHRvIGJlIG1hcHBlZC4gIENoYW5nZSB0aGlzIG5vdyB0aGlzCi1AQCAtNTY5LDEwICs1ODEsMTMgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQotICAgLyogSWYgYWggaGFzIGEgbm9uLU5VTEwgZm5hbWUgb3BlbiB0aGF0IG90aGVyd2lzZSBvcGVuIHRoZSBkZWZhdWx0LiAgKi8KLSAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkKLSAgICAgewotLSAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7Ci0tICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0tICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotLSAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgICAgYXJjaGl2ZWZuYW1lID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7Ci0rICAgICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOwotKyAgICAgICAgICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0rICAgICAgICAgICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0rICAgICAgICAgICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgICAgIH0KLSAgICAgfQotIAotICAgd2hpbGUgKDEpCi1AQCAtNTg1LDcgKzYwMCw3IEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKLSAJICAgICB0aGUgZGVmYXVsdCBsb2NhbGUgYXJjaGl2ZSB3ZSBpZ25vcmUgdGhlIGZhaWx1cmUgYW5kCi0gCSAgICAgbGlzdCBhbiBlbXB0eSBhcmNoaXZlLCBvdGhlcndpc2Ugd2UgcHJpbnQgYW4gZXJyb3IKLSAJICAgICBhbmQgZXhpdC4gICovCi0tCSAgaWYgKGVycm5vID09IEVOT0VOVCAmJiBhcmNoaXZlZm5hbWUgPT0gZGVmYXVsdF9mbmFtZSkKLSsJICBpZiAoZXJybm8gPT0gRU5PRU5UKQotIAkgICAgewotIAkgICAgICBpZiAocmVhZG9ubHkpCi0gCQl7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmE5ZWIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA3YzllYmU5NjZiYjk3ZGQxNGRlNTcxOTkwNWI2MTMxMTIxMWFlM2M4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAotU3ViamVjdDogW1BBVENIIDI1LzI4XSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0Ci0KLUFjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246Ci0KLVdoZW4gcmVzb2x2aW5nIHN5bWJvbGljIHJlZmVyZW5jZXMsIHRoZSBkeW5hbWljIGxpbmtlciBleGFtaW5lcyB0aGUgc3ltYm9sCi10YWJsZXMgd2l0aCBhIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLgotCi1UaGlzIGZ1bmN0aW9uIHdhcyB1c2luZyBhIGRlcHRoIGZpcnN0IHNlYXJjaC4gIEJ5IGRvaW5nIHNvIHRoZSBjb25mbGljdAotcmVzb2x1dGlvbiByZXBvcnRlZCB0byB0aGUgcHJlbGlua2VyICh3aGVuIExEX1RSQUNFX1BSRUxJTktJTkc9MSBpcyBzZXQpCi13YXMgaW5jb3JyZWN0LiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2hlbiB0aGVpciB3ZXJlIHZhcmlvdXMgY2lyY3VsYXIKLWRlcGVuZGVuY2llcyBiZXR3ZWVuIGxpYnJhcmllcy4gIFRoZSBwcm9ibGVtIHVzdWFsbHkgbWFuaWZlc3RlZCBpdHNlbGYgYnkKLXRoZSB3cm9uZyBJRlVOQyBiZWluZyBleGVjdXRlZC4KLQotW0JaIyAyMDQ4OF0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGVsZi9kbC1kZXBzLmMgfCAxNCArKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKLWluZGV4IGUxMmMzNTMxNTguLjkyMzRkYWFjMDUgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtZGVwcy5jCi0rKysgYi9lbGYvZGwtZGVwcy5jCi1AQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCi0gewotICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipxOwotKyAgc3RydWN0IGxpbmtfbWFwICoqcjsKLSAKLSAgICpwKysgPSBtYXA7Ci0gICBtYXAtPmxfcmVzZXJ2ZWQgPSAxOwotLSAgaWYgKG1hcC0+bF9pbml0ZmluaSkKLS0gICAgZm9yIChxID0gbWFwLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLS0gICAgICBpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQotLQlwICs9IF9kbF9idWlsZF9sb2NhbF9zY29wZSAocCwgKnEpOwotKwotKyAgZm9yIChyID0gbGlzdDsgciA8IHA7ICsrcikKLSsgICAgaWYgKCgqciktPmxfaW5pdGZpbmkpCi0rICAgICAgZm9yIChxID0gKCpyKS0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCi0rCWlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0rCSAgewotKwkgICAgKnArKyA9ICpxOwotKwkgICAgKCpxKS0+bF9yZXNlcnZlZCA9IDE7Ci0rCSAgfQotICAgcmV0dXJuIHAgLSBsaXN0OwotIH0KLSAKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQzZjY1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCkBAIC0wLDAgKzEsODAgQEAKK0Zyb20gOGY0YjBiYWM4NWQxNGIxODRlMDg4NDhiMDJkZTNmMzA3NzVmMDViMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDI6MDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmIC0tYWRkLXRvLWFyY2hpdmUgdXNlcyBhIGhhcmQtY29kZWQgbG9jYWxlIHBhdGgKKworaXQgZG9lc24ndCBleGlzdCBpbiBub3JtYWwgdXNlLCBhbmQgdGhlcmUncyBubyB3YXkgdG8gcGFzcyBhbgorYWx0ZXJuYXRpdmUgZmlsZW5hbWUuCisKK0FkZCBhIGZhbGxiYWNrIG9mICRMT0NBTEVBUkNISVZFIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmQgYWxsb3cKK2NyZWF0aW9uIG9mIG5ldyBsb2NhbGUgYXJjaGl2ZXMgdGhhdCBhcmUgbm90IHRoZSBzeXN0ZW0gYXJjaGl2ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworaW5kZXggZGNjYWYwNGUzYi4uYWUwYjdmZTE1NSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKK0BAIC0zNDAsMTIgKzM0MCwyNCBAQCBlbmxhcmdlX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGNvbnN0IHN0cnVjdCBsb2NhcmhlYWQgKmhlYWQpCisgICBzdHJ1Y3QgbmFtZWhhc2hlbnQgKm9sZG5hbWVoYXNodGFiOworICAgc3RydWN0IGxvY2FyaGFuZGxlIG5ld19haDsKKyAgIHNpemVfdCBwcmVmaXhfbGVuID0gb3V0cHV0X3ByZWZpeCA/IHN0cmxlbiAob3V0cHV0X3ByZWZpeCkgOiAwOworLSAgY2hhciBhcmNoaXZlZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKV07CistICBjaGFyIGZuYW1lW3ByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkgKyBzaXplb2YgKCIuWFhYWFhYIikgLSAxXTsKKysgIGNoYXIgKmFyY2hpdmVmbmFtZTsKKysgIGNoYXIgKmZuYW1lOworKyAgY2hhciAqZW52YXJjaGl2ZSA9IGdldGVudigiTE9DQUxFQVJDSElWRSIpOworIAorLSAgaWYgKG91dHB1dF9wcmVmaXgpCistICAgIG1lbWNweSAoYXJjaGl2ZWZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKy0gIHN0cmNweSAoYXJjaGl2ZWZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgIGlmIChlbnZhcmNoaXZlICE9IE5VTEwpCisrICAgIHsKKysgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIDEpOworKyAgICAgIGZuYW1lID0geG1hbGxvYyhzdHJsZW4oZW52YXJjaGl2ZSkgKyBzaXplb2YgKCIuWFhYWFhYIikpOworKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lLCBlbnZhcmNoaXZlKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgYXJjaGl2ZWZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpKTsKKysgICAgICBmbmFtZSA9IHhtYWxsb2MocHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDEpOworKyAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorKyAgICAgICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgfQorICAgc3RyY3B5IChzdHBjcHkgKGZuYW1lLCBhcmNoaXZlZm5hbWUpLCAiLlhYWFhYWCIpOworIAorICAgLyogTm90IGFsbCBvZiB0aGUgb2xkIGZpbGUgaGFzIHRvIGJlIG1hcHBlZC4gIENoYW5nZSB0aGlzIG5vdyB0aGlzCitAQCAtNTY5LDEwICs1ODEsMTMgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQorICAgLyogSWYgYWggaGFzIGEgbm9uLU5VTEwgZm5hbWUgb3BlbiB0aGF0IG90aGVyd2lzZSBvcGVuIHRoZSBkZWZhdWx0LiAgKi8KKyAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkKKyAgICAgeworLSAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7CistICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCistICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworLSAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICAgICAgYXJjaGl2ZWZuYW1lID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7CisrICAgICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOworKyAgICAgICAgICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCisrICAgICAgICAgICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CisrICAgICAgICAgICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICAgIH0KKyAgICAgfQorIAorICAgd2hpbGUgKDEpCitAQCAtNTg1LDcgKzYwMCw3IEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKKyAJICAgICB0aGUgZGVmYXVsdCBsb2NhbGUgYXJjaGl2ZSB3ZSBpZ25vcmUgdGhlIGZhaWx1cmUgYW5kCisgCSAgICAgbGlzdCBhbiBlbXB0eSBhcmNoaXZlLCBvdGhlcndpc2Ugd2UgcHJpbnQgYW4gZXJyb3IKKyAJICAgICBhbmQgZXhpdC4gICovCistCSAgaWYgKGVycm5vID09IEVOT0VOVCAmJiBhcmNoaXZlZm5hbWUgPT0gZGVmYXVsdF9mbmFtZSkKKysJICBpZiAoZXJybm8gPT0gRU5PRU5UKQorIAkgICAgeworIAkgICAgICBpZiAocmVhZG9ubHkpCisgCQl7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNmVlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDFkYWQ3NDZjZTkzOTI4YTU3YjJmZTYxOGM3NDcyMmY3MTA3NTE4MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKKworQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKKworV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKK3RhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCisKK1RoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0CityZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKK3dhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgorZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQordGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgorCitbQlojIDIwNDg4XQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYworaW5kZXggNTEwM2E4YTExMS4uNTRjZDgwYWFmZiAxMDA2NDQKKy0tLSBhL2VsZi9kbC1kZXBzLmMKKysrKyBiL2VsZi9kbC1kZXBzLmMKK0BAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKKyB7CisgICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKKyAgIHN0cnVjdCBsaW5rX21hcCAqKnE7CisrICBzdHJ1Y3QgbGlua19tYXAgKipyOworIAorICAgKnArKyA9IG1hcDsKKyAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7CistICBpZiAobWFwLT5sX2luaXRmaW5pKQorLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQorLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCistCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7CisrCisrICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQorKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKKysgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKysJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKKysJICB7CisrCSAgICAqcCsrID0gKnE7CisrCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKKysJICB9CisgICByZXR1cm4gcCAtIGxpc3Q7CisgfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU4OWUxMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYWE1Yzc1OGZiYjdkYmIwMjZkZjMzZmM2YmRjMDU1NDg1NDdiZGIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDQ6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNi8yOF0gaW50bDogRW1pdCBubyBsaW5lcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMKLQotSW1wcm92ZSByZXByb2R1Y2liaWxpdHk6Ci1EbyBub3QgcHV0IGFueSAjbGluZSBwcmVwcm9jZXNzb3IgY29tbWFuZHMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzLgotVGhlc2UgbGluZXMgY29udGFpbiBhYnNvbHV0ZSBwYXRocyBjb250YWluaW5nIGZpbGUgbG9jYXRpb25zIG9uCi10aGUgaG9zdCBidWlsZCBtYWNoaW5lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRsL01ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW50bC9NYWtlZmlsZSBiL2ludGwvTWFrZWZpbGUKLWluZGV4IDllZWE4ZDU3ZTMuLjYyN2RjZTRjZjEgMTAwNjQ0Ci0tLS0gYS9pbnRsL01ha2VmaWxlCi0rKysgYi9pbnRsL01ha2VmaWxlCi1AQCAtMTU1LDcgKzE1NSw3IEBAICQob2JqcGZ4KXRzdC1nZXR0ZXh0Ni5vdXQ6ICQob2JqcGZ4KXRzdC1nZXR0ZXh0Lm91dAotIAotIENQUEZMQUdTICs9IC1EJ0xPQ0FMRURJUj0iJChsb2NhbGVkaXIpIicgXAotIAkgICAgLUQnTE9DQUxFX0FMSUFTX1BBVEg9IiQobG9jYWxlZGlyKSInCi0tQklTT05GTEFHUyA9IC0teWFjYyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAotK0JJU09ORkxBR1MgPSAtLXlhY2MgLS1uby1saW5lcyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAotIAotICQoaW5zdF9sb2NhbGVkaXIpL2xvY2FsZS5hbGlhczogbG9jYWxlLmFsaWFzICQoK2ZvcmNlKQotIAkkKGRvLWluc3RhbGwpCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzIwNWE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLUZyb20gZmVjZDk4MDQwYTJhZTFiYzU5NDNhNDBhMTYyM2Q3NmE2OTZlMDc4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI5IE5vdiAyMDE4IDE3OjI5OjM1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjcvMjhdIGluamVjdCBmaWxlIGFzc2VtYmx5IGRpcmVjdGl2ZXMKLQotQ3VycmVudGx5LCBub24tSUEgYnVpbGRzIGFyZSBub3QgcmVwcm9kdWNpYmlsZSBzaW5jZSBidWlsZCBwYXRocyBhcmUKLWJlaW5nIGluamVjdGVkIGludG8gdGhlIGRlYnVnIHN5bWJvbHMuIFRoZXNlIGFyZSBjb21pbmcgZnJvbSB0aGUgdXNlIG9mCi0uUyBhc3NlbWJsZXIgZmlsZXMgZHVyaW5nIHRoZSBnbGliYyBidWlsZC4gTm8gU1RUX0ZJTEUgc2VjdGlvbiBpcyBhZGRlZAotZHVyaW5nIHRoZSBhc3NlbWJseSBidXQgd2hlbiBsaW5raW5nLCBsZCBkZWNpZGVzIHRvIGFkZCBvbmUgdG8gYWlkCi1kZWJ1Z2dpbmcgYW5kIGVuc3VyZSByZWZlcmVuY2VzIGJldHdlZW4gdGhlIGRpZmZlcmVudCBvYmplY3QgZmlsZXMgaXRzCi1saW5raW5nIHJlbWFpbiBjbGVhci4KLQotV2UgY2FuIGF2b2lkIHRoaXMgYnkgaW5qZWN0aW5nIGEgZmlsZSBoZWFkZXIgaW50byB0aGUgYXNzZW1ibGVyIGZpbGVzCi1haGVhZCBvZiB0aW1lLCBjaG9vc2luZyBhIGZpbGVuYW1lIHdoaWNoIGRvZXMgbm90IGNvbnRhaW4gYnVpbGQgc3lzdGVtCi1wYXRocy4KLQotVGhpcyBpcyBhIGJpdCBvZiBhIHdvcmthcm91bmQvaGFjayBidXQgZG9lcyBzaWduaWZpY2FudGx5IHJlZHVjZSB0aGUKLWJ1aWxkIHN5c3RlbSByZWZlcmVuY2VzIGluIHRhcmdldCBiaW5hcmllcyBmb3IgdGhlIG5vbi1JQSBhcmNoaXRlY3R1cmVzCi13aGljaCB1c2UgLlMgZmlsZXMuCi0KLVJQCi0yMDE4LzEwLzMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjc3UvYWJpLW5vdGUuUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L2NydGkuUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9jcnRuLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUyAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9hYmktbm90ZS5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vY3J0aS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2NydG4uUyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL21pcHMvc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyAgIHwgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgICB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgfCAyICsrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUyAgICAgIHwgMiArKwotIDIwIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NzdS9hYmktbm90ZS5TIGIvY3N1L2FiaS1ub3RlLlMKLWluZGV4IGZhMWYwMTRhODguLjA5ODczMTM2MmEgMTAwNjQ0Ci0tLS0gYS9jc3UvYWJpLW5vdGUuUwotKysrIGIvY3N1L2FiaS1ub3RlLlMKLUBAIC01Niw2ICs1Niw4IEBAIG9mZnNldAlsZW5ndGgJY29udGVudHMKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPGFiaS10YWcuaD4JCS8qIE9TLXNwZWNpZmljIEFCSSB0YWcgdmFsdWUgKi8KLSAKLSsJLmZpbGUgImFiaS1ub3RlLlMiCi0rCi0gLyogVGhlIGxpbmtlciAoR05VIGxkIDIuOCBhbmQgbGF0ZXIpIHJlY29nbml6ZXMgYW4gYWxsb2NhdGVkIHNlY3Rpb24gd2hvc2UKLSAgICBuYW1lIGJlZ2lucyB3aXRoIGAubm90ZScgYW5kIGNyZWF0ZXMgYSBQVF9OT1RFIHByb2dyYW0gaGVhZGVyIGVudHJ5Ci0gICAgcG9pbnRpbmcgYXQgaXQuICovCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKLWluZGV4IGQ0ZTdkZmNmNWMuLmUwMjE4ZGYzMGMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCi1AQCAtNTAsNiArNTAsOCBAQAotICMgZGVmaW5lIFBSRUlOSVRfRlVOQ1RJT05fV0VBSyAxCi0gI2VuZGlmCi0gCi0rICAgIC5maWxlICJjcnRpLlMiCi0rCi0gI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSwotIAl3ZWFrX2V4dGVybiAoUFJFSU5JVF9GVU5DVElPTikKLSAjZWxzZQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCi1pbmRleCAzNjNmNzUyNDYwLi4yZmIwNmZiYTYyIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUwotQEAgLTM3LDYgKzM3LDggQEAKLSAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucwotICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCi0gCi0rCS5maWxlICJjcnRuLlMiCi0rCi0gCS5zZWN0aW9uIC5pbml0LCJheCIsJXByb2diaXRzCi0gCWxkcAl4MjksIHgzMCwgW3NwXSwgMTYKLSAJUkVUCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKLWluZGV4IDRhYmU2YjgyYTMuLjhjNDRiMmZmOGEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCi1AQCAtMjIsNiArMjIsOCBAQAotICNpbmNsdWRlIDx0bHMuaD4KLSAjaW5jbHVkZSAidGxzZGVzYy5oIgotIAotKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgotKwotICNkZWZpbmUgTlNBVkVEUVJFR1BBSVJTCTE2Ci0gI2RlZmluZSBTQVZFX1FfUkVHSVNURVJTCQkJCVwKLSAJc3RwCXEwLCBxMSwJW3NwLCAjLTMyKk5TQVZFRFFSRUdQQUlSU10hOwlcCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKLWluZGV4IDE5YjExN2U4ZjkuLjM4Yzc4YjU0MDkgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCi1AQCAtMjEsNiArMjEsOCBAQAotIAotICNpbmNsdWRlICJkbC1saW5rLmgiCi0gCi0rCS5maWxlICJkbC10cmFtcG9saW5lLlMiCi0rCi0gI2RlZmluZSBpcDAgeDE2Ci0gI2RlZmluZSBpcDBsIFBUUl9SRUcgKDE2KQotICNkZWZpbmUgaXAxIHgxNwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TIGIvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKLWluZGV4IGY1ZTliOWMyMjMuLmFlM2UyMmE2YTUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKLUBAIC0xOCw2ICsxOCw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAvKiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZW50cnkgcG9pbnQsIHVzdWFsbHkgdGhlIGZpcnN0IHRoaW5nIGluIHRoZSB0ZXh0Ci0gICAgc2VnbWVudC4KLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUwotaW5kZXggMDdiZDRjNDYxOS4uNzIxM2IxNmYyNyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKLUBAIC0xLDMgKzEsNSBAQAotKwkuZmlsZSAiYWJpLW5vdGUuUyIKLSsKLSAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCi0gICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLwotIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRpLlMgYi9zeXNkZXBzL2FybS9jcnRpLlMKLWluZGV4IDI2ZGJiYTY2YTMuLmRkODRlY2Q1NjYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jcnRpLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2NydGkuUwotQEAgLTU3LDYgKzU3LDggQEAKLSAJLmhpZGRlbiBQUkVJTklUX0ZVTkNUSU9OCi0gI2VuZGlmCi0gCi0rICAgIC5maWxlICJjcnRpLlMiCi0rCi0gI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSwotIAkucDJhbGlnbiAyCi0gCS50eXBlIGNhbGxfd2Vha19mbiwgJWZ1bmN0aW9uCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0bi5TIGIvc3lzZGVwcy9hcm0vY3J0bi5TCi1pbmRleCA4ZjkxYzhkODhiLi5hODdmZTQ5ZTA3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY3J0bi5TCi0rKysgYi9zeXNkZXBzL2FybS9jcnRuLlMKLUBAIC0zNyw2ICszNyw4IEBACi0gI2RlZmluZSBOT19USFVNQgotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsgICAgLmZpbGUgImNydG4uUyIKLSsKLSAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucwotICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCi0gCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCi1pbmRleCBhOTI5MzQwYjQyLi5iNzI0Yzk3NzZkIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCi0rKysgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKLUBAIC0yMSw2ICsyMSw4IEBACi0gI2luY2x1ZGUgPHRscy5oPgotICNpbmNsdWRlICJ0bHNkZXNjLmgiCi0gCi0rCS5maWxlICJkbC10bHNkZXNjLlMiCi0rCi0gCS50ZXh0Ci0gCUAgZW1pdCBkZWJ1ZyBpbmZvcm1hdGlvbiB3aXRoIGNmaQotIAlAIHVzZSBhcm0tc3BlY2lmaWMgcHNldWRvcyBmb3IgdW53aW5kaW5nIGl0c2VsZgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUwotaW5kZXggMzI1Y2ZjZDJjZS4uNGJmZGNiY2U1MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUwotKysrIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCi1AQCAtMjEsNiArMjEsOCBAQAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAjaW5jbHVkZSA8bGliYy1zeW1ib2xzLmg+Ci0gCi0rCS5maWxlICJkbC10cmFtcG9saW5lLlMiCi0rCi0gCS50ZXh0Ci0gCS5nbG9ibCBfZGxfcnVudGltZV9yZXNvbHZlCi0gCS50eXBlIF9kbF9ydW50aW1lX3Jlc29sdmUsICNmdW5jdGlvbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMgYi9zeXNkZXBzL2FybS9zdGFydC5TCi1pbmRleCBhMDVmOGE0NjUxLi4yZjQzNzRmY2FhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vc3RhcnQuUwotKysrIGIvc3lzZGVwcy9hcm0vc3RhcnQuUwotQEAgLTU3LDYgKzU3LDggQEAKLSAJCQkJCU5VTEwKLSAqLwotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCi0gICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLwotIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvc3RhcnQuUyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCi1pbmRleCA4NjM4ZTViNTQ1Li45M2Y2NTY0YWVjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCi1AQCAtMzgsNiArMzgsOCBAQAotICNpbmNsdWRlIDxzZ2lkZWZzLmg+Ci0gI2luY2x1ZGUgPHN5cy9hc20uaD4KLSAKLSsJLmZpbGUgInN0YXJ0LlMiCi0rCi0gI2lmbmRlZiBFTlRSWV9QT0lOVAotICNlcnJvciBFTlRSWV9QT0lOVCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBzdGFydC5TIG9uIE1JUFMvRUxGLgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUwotaW5kZXggOTlhMTBkNjQzYS4uZTQ3ZmMwZDI0NSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCi1AQCAtMTgsNiArMTgsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsJLmZpbGUgImRsLXN0YXJ0LlMiCi0rCi0gLyogSW5pdGlhbCBlbnRyeSBwb2ludCBjb2RlIGZvciB0aGUgZHluYW1pYyBsaW5rZXIuCi0gICAgVGhlIEMgZnVuY3Rpb24gYF9kbF9zdGFydCcgaXMgdGhlIHJlYWwgZW50cnkgcG9pbnQ7Ci0gICAgaXRzIHJldHVybiB2YWx1ZSBpcyB0aGUgdXNlciBwcm9ncmFtJ3MgZW50cnkgcG9pbnQuCSovCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCi1pbmRleCAxNzJmYjVhNTZiLi5lZjE0NzFiODYxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKLUBAIC0zNSw2ICszNSw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKLSAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KLSAjdW5kZWYgY2ZpX3N0YXJ0cHJvYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUwotaW5kZXggNTVmYWU2OGFkNi4uMGNiNjA4ZmUwZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCi1AQCAtMzUsNiArMzUsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsJLmZpbGUgInN0YXJ0LlMiCi0rCi0gLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCi0gICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCi0gI3VuZGVmIGNmaV9zdGFydHByb2MKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUwotaW5kZXggMzBhMjliOWZiMC4uMDc4OTJiMzgzZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKLUBAIC0xOCw2ICsxOCw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAiX19yZWFkX3RwLlMiCi0rCi0gCS5oaWRkZW4gX19yZWFkX3RwCi0gRU5UUlkgKF9fcmVhZF90cCkKLSAJbXJzCXgwLCB0cGlkcl9lbDAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUwotaW5kZXggZjY0YzRmZmU4YS4uMmRhMzE1YWIwOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKLUBAIC0zOSw2ICszOSw4IEBACi0gICAgYSBub3JtYWwgZnVuY3Rpb24gY2FsbCkgaW4gYSBoaWdoIHBhZ2Ugb2YgbWVtb3J5OyB0YWlsIGNhbGwgdG8gdGhlCi0gICAgaGVscGVyLiAgKi8KLSAKLSsJLmZpbGUgImFlYWJpX3JlYWRfdHAuUyIKLSsKLSAJLmhpZGRlbiBfX2FlYWJpX3JlYWRfdHAKLSBFTlRSWSAoX19hZWFiaV9yZWFkX3RwKQotICNpZmRlZiBBUkNIX0hBU19IQVJEX1RQCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCi1pbmRleCAwYjYyMzdhYzU1Li44Y2RhNDkxYzI4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKLUBAIC0yNyw2ICsyNyw4IEBACi0gICAgQVJNIHVud2luZCB0YWJsZXMgZm9yIHJlZ2lzdGVyIHRvIHJlZ2lzdGVyIG1vdmVzLCB0aGUgYWN0dWFsIG9wY29kZXMKLSAgICBhcmUgbm90IGRlZmluZWQuICAqLwotIAotKyAgICAgIC5maWxlICJsaWJjLWRvLXN5c2NhbGwuUyIKLSsKLSAjaWYgZGVmaW5lZChfX3RodW1iX18pCi0gCS50aHVtYgotIAkuc3ludGF4IHVuaWZpZWQKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUwotaW5kZXggZWViOTY1NDRlMy4uZGExODJiMjhmOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKLUBAIC0xICsxLDMgQEAKLSsJLmZpbGUgImRsLWJyay5TIgotKwotICNpbmNsdWRlIDxicmsuUz4KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzMTdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gM2M4ZDllYWU4M2FiNGYxNjc3YWZjOWIzNzlmOTcxMTRlODUwMzM2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDQ6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW50bDogRW1pdCBubyBsaW5lcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMKKworSW1wcm92ZSByZXByb2R1Y2liaWxpdHk6CitEbyBub3QgcHV0IGFueSAjbGluZSBwcmVwcm9jZXNzb3IgY29tbWFuZHMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzLgorVGhlc2UgbGluZXMgY29udGFpbiBhYnNvbHV0ZSBwYXRocyBjb250YWluaW5nIGZpbGUgbG9jYXRpb25zIG9uCit0aGUgaG9zdCBidWlsZCBtYWNoaW5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBpbnRsL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW50bC9NYWtlZmlsZSBiL2ludGwvTWFrZWZpbGUKK2luZGV4IGNlMzA3MjQyMGYuLjU4NDU3ODQwZDkgMTAwNjQ0CistLS0gYS9pbnRsL01ha2VmaWxlCisrKysgYi9pbnRsL01ha2VmaWxlCitAQCAtMTU1LDcgKzE1NSw3IEBAICQob2JqcGZ4KXRzdC1nZXR0ZXh0Ni5vdXQ6ICQob2JqcGZ4KXRzdC1nZXR0ZXh0Lm91dAorIAorIENQUEZMQUdTICs9IC1EJ0xPQ0FMRURJUj0iJChsb2NhbGVkaXIpIicgXAorIAkgICAgLUQnTE9DQUxFX0FMSUFTX1BBVEg9IiQobG9jYWxlZGlyKSInCistQklTT05GTEFHUyA9IC0teWFjYyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorK0JJU09ORkxBR1MgPSAtLXlhY2MgLS1uby1saW5lcyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorIAorICQoaW5zdF9sb2NhbGVkaXIpL2xvY2FsZS5hbGlhczogbG9jYWxlLmFsaWFzICQoK2ZvcmNlKQorIAkkKGRvLWluc3RhbGwpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYTAzMGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaApAQCAtMCwwICsxLDMwMSBAQAorRnJvbSA0MjA0NTRmNzA5OGI1NDQ1NzMwY2FhODU1YzM3YjgxNDNiZmNjYzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgTm92IDIwMTggMTc6Mjk6MzUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5qZWN0IGZpbGUgYXNzZW1ibHkgZGlyZWN0aXZlcworCitDdXJyZW50bHksIG5vbi1JQSBidWlsZHMgYXJlIG5vdCByZXByb2R1Y2liaWxlIHNpbmNlIGJ1aWxkIHBhdGhzIGFyZQorYmVpbmcgaW5qZWN0ZWQgaW50byB0aGUgZGVidWcgc3ltYm9scy4gVGhlc2UgYXJlIGNvbWluZyBmcm9tIHRoZSB1c2Ugb2YKKy5TIGFzc2VtYmxlciBmaWxlcyBkdXJpbmcgdGhlIGdsaWJjIGJ1aWxkLiBObyBTVFRfRklMRSBzZWN0aW9uIGlzIGFkZGVkCitkdXJpbmcgdGhlIGFzc2VtYmx5IGJ1dCB3aGVuIGxpbmtpbmcsIGxkIGRlY2lkZXMgdG8gYWRkIG9uZSB0byBhaWQKK2RlYnVnZ2luZyBhbmQgZW5zdXJlIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IG9iamVjdCBmaWxlcyBpdHMKK2xpbmtpbmcgcmVtYWluIGNsZWFyLgorCitXZSBjYW4gYXZvaWQgdGhpcyBieSBpbmplY3RpbmcgYSBmaWxlIGhlYWRlciBpbnRvIHRoZSBhc3NlbWJsZXIgZmlsZXMKK2FoZWFkIG9mIHRpbWUsIGNob29zaW5nIGEgZmlsZW5hbWUgd2hpY2ggZG9lcyBub3QgY29udGFpbiBidWlsZCBzeXN0ZW0KK3BhdGhzLgorCitUaGlzIGlzIGEgYml0IG9mIGEgd29ya2Fyb3VuZC9oYWNrIGJ1dCBkb2VzIHNpZ25pZmljYW50bHkgcmVkdWNlIHRoZQorYnVpbGQgc3lzdGVtIHJlZmVyZW5jZXMgaW4gdGFyZ2V0IGJpbmFyaWVzIGZvciB0aGUgbm9uLUlBIGFyY2hpdGVjdHVyZXMKK3doaWNoIHVzZSAuUyBmaWxlcy4KKworUlAKKzIwMTgvMTAvMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNzdS9hYmktbm90ZS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvY3J0aS5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L2NydG4uUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvbWlwcy9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUyAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TICAgfCAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyAgIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyB8IDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TICAgICAgfCAyICsrCisgMjAgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY3N1L2FiaS1ub3RlLlMgYi9jc3UvYWJpLW5vdGUuUworaW5kZXggMmI0YjVmODgyNC4uOTY0ODQzMDE2YyAxMDA2NDQKKy0tLSBhL2NzdS9hYmktbm90ZS5TCisrKysgYi9jc3UvYWJpLW5vdGUuUworQEAgLTU2LDYgKzU2LDggQEAgb2Zmc2V0CWxlbmd0aAljb250ZW50cworICNpbmNsdWRlIDxjb25maWcuaD4KKyAjaW5jbHVkZSA8YWJpLXRhZy5oPgkJLyogT1Mtc3BlY2lmaWMgQUJJIHRhZyB2YWx1ZSAqLworIAorKwkuZmlsZSAiYWJpLW5vdGUuUyIKKysKKyAvKiBUaGUgbGlua2VyIChHTlUgbGQgMi44IGFuZCBsYXRlcikgcmVjb2duaXplcyBhbiBhbGxvY2F0ZWQgc2VjdGlvbiB3aG9zZQorICAgIG5hbWUgYmVnaW5zIHdpdGggYC5ub3RlJyBhbmQgY3JlYXRlcyBhIFBUX05PVEUgcHJvZ3JhbSBoZWFkZXIgZW50cnkKKyAgICBwb2ludGluZyBhdCBpdC4gKi8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworaW5kZXggMTcyOGVhYzM3YS4uNzZhOGFiNTkwYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKK0BAIC01MCw2ICs1MCw4IEBACisgIyBkZWZpbmUgUFJFSU5JVF9GVU5DVElPTl9XRUFLIDEKKyAjZW5kaWYKKyAKKysgICAgLmZpbGUgImNydGkuUyIKKysKKyAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCisgCXdlYWtfZXh0ZXJuIChQUkVJTklUX0ZVTkNUSU9OKQorICNlbHNlCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKK2luZGV4IGMzZTk3Y2M0NDkuLmZjMmU1YzJkZjggMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCitAQCAtMzcsNiArMzcsOCBAQAorIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCisgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KKyAKKysJLmZpbGUgImNydG4uUyIKKysKKyAJLnNlY3Rpb24gLmluaXQsImF4IiwlcHJvZ2JpdHMKKyAJbGRwCXgyOSwgeDMwLCBbc3BdLCAxNgorIAlSRVQKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworaW5kZXggNTU3YWQxZDUwNS4uMTk0YTg1MzFkYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKK0BAIC0yMiw2ICsyMiw4IEBACisgI2luY2x1ZGUgPHRscy5oPgorICNpbmNsdWRlICJ0bHNkZXNjLmgiCisgCisrCS5maWxlICJkbC10bHNkZXNjLlMiCisrCisgI2RlZmluZSBOU0FWRURRUkVHUEFJUlMJMTYKKyAjZGVmaW5lIFNBVkVfUV9SRUdJU1RFUlMJCQkJXAorIAlzdHAJcTAsIHExLAlbc3AsICMtMzIqTlNBVkVEUVJFR1BBSVJTXSE7CVwKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworaW5kZXggOTRlOTY1YzA5Ni4uYmExODc0MmYzZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKK0BAIC0yMSw2ICsyMSw4IEBACisgCisgI2luY2x1ZGUgImRsLWxpbmsuaCIKKyAKKysJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKKysKKyAjZGVmaW5lIGlwMCB4MTYKKyAjZGVmaW5lIGlwMGwgUFRSX1JFRyAoMTYpCisgI2RlZmluZSBpcDEgeDE3CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUworaW5kZXggZDk2Y2Y1N2UyZC4uMDdhNTIzOTc4YSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludCwgdXN1YWxseSB0aGUgZmlyc3QgdGhpbmcgaW4gdGhlIHRleHQKKyAgICBzZWdtZW50LgorIAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCitpbmRleCAwN2JkNGM0NjE5Li43MjEzYjE2ZjI3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworKysrIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworQEAgLTEsMyArMSw1IEBACisrCS5maWxlICJhYmktbm90ZS5TIgorKworIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKKyAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCisgCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydGkuUyBiL3N5c2RlcHMvYXJtL2NydGkuUworaW5kZXggODE2OTc4MzI2Ny4uZjU2ZTBjODVhNiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NydGkuUworKysrIGIvc3lzZGVwcy9hcm0vY3J0aS5TCitAQCAtNTcsNiArNTcsOCBAQAorIAkuaGlkZGVuIFBSRUlOSVRfRlVOQ1RJT04KKyAjZW5kaWYKKyAKKysgICAgLmZpbGUgImNydGkuUyIKKysKKyAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCisgCS5wMmFsaWduIDIKKyAJLnR5cGUgY2FsbF93ZWFrX2ZuLCAlZnVuY3Rpb24KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRuLlMgYi9zeXNkZXBzL2FybS9jcnRuLlMKK2luZGV4IGQ2MGY5ZjA1ZGUuLjFlMTBlYzQzOWYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jcnRuLlMKKysrKyBiL3N5c2RlcHMvYXJtL2NydG4uUworQEAgLTM3LDYgKzM3LDggQEAKKyAjZGVmaW5lIE5PX1RIVU1CCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKyAgICAuZmlsZSAiY3J0bi5TIgorKworIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCisgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKK2luZGV4IDg0MTVlNDc2MDcuLjI5YzJjYjgxMjggMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKKysrKyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworQEAgLTIxLDYgKzIxLDggQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgInRsc2Rlc2MuaCIKKyAKKysJLmZpbGUgImRsLXRsc2Rlc2MuUyIKKysKKyAJLnRleHQKKyAJQCBlbWl0IGRlYnVnIGluZm9ybWF0aW9uIHdpdGggY2ZpCisgCUAgdXNlIGFybS1zcGVjaWZpYyBwc2V1ZG9zIGZvciB1bndpbmRpbmcgaXRzZWxmCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCitpbmRleCBhMjBiYWY1NTVlLi4yZGQzYmVmMDRlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCisrKysgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKK0BAIC0yMSw2ICsyMSw4IEBACisgI2luY2x1ZGUgPHN5c2RlcC5oPgorICNpbmNsdWRlIDxsaWJjLXN5bWJvbHMuaD4KKyAKKysJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKKysKKyAJLnRleHQKKyAJLmdsb2JsIF9kbF9ydW50aW1lX3Jlc29sdmUKKyAJLnR5cGUgX2RsX3J1bnRpbWVfcmVzb2x2ZSwgI2Z1bmN0aW9uCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vc3RhcnQuUyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKK2luZGV4IDJmZjU2MTc5ZDIuLmMxMTgwNDZlYzYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9zdGFydC5TCisrKysgYi9zeXNkZXBzL2FybS9zdGFydC5TCitAQCAtNTcsNiArNTcsOCBAQAorIAkJCQkJTlVMTAorICovCisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKKyAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCisgCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9zdGFydC5TIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKK2luZGV4IGZhYmM4MDgwZGYuLjgzYzZiOTFkN2QgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvc3RhcnQuUworKysrIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKK0BAIC0zOCw2ICszOCw4IEBACisgI2luY2x1ZGUgPHNnaWRlZnMuaD4KKyAjaW5jbHVkZSA8c3lzL2FzbS5oPgorIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAjaWZuZGVmIEVOVFJZX1BPSU5UCisgI2Vycm9yIEVOVFJZX1BPSU5UIG5lZWRzIHRvIGJlIGRlZmluZWQgZm9yIHN0YXJ0LlMgb24gTUlQUy9FTEYuCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCitpbmRleCBjMTUyNDJkM2JjLi42Y2EyNzcxNWE0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKK0BAIC0xOCw2ICsxOCw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAiZGwtc3RhcnQuUyIKKysKKyAvKiBJbml0aWFsIGVudHJ5IHBvaW50IGNvZGUgZm9yIHRoZSBkeW5hbWljIGxpbmtlci4KKyAgICBUaGUgQyBmdW5jdGlvbiBgX2RsX3N0YXJ0JyBpcyB0aGUgcmVhbCBlbnRyeSBwb2ludDsKKyAgICBpdHMgcmV0dXJuIHZhbHVlIGlzIHRoZSB1c2VyIHByb2dyYW0ncyBlbnRyeSBwb2ludC4JKi8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKK2luZGV4IGI3YjlhMTMzYTIuLjhkZjcxNGY4MWEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworQEAgLTM1LDYgKzM1LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAorICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLworICN1bmRlZiBjZmlfc3RhcnRwcm9jCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCitpbmRleCA5NGJmNzcxZTgzLi5jZmZiOTk1MDBhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKK0BAIC0zNSw2ICszNSw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKKyAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KKyAjdW5kZWYgY2ZpX3N0YXJ0cHJvYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCitpbmRleCAxMmUxMTMxZmU3Li43NjdlMGQwNDNiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJfX3JlYWRfdHAuUyIKKysKKyAJLmhpZGRlbiBfX3JlYWRfdHAKKyBFTlRSWSAoX19yZWFkX3RwKQorIAltcnMJeDAsIHRwaWRyX2VsMAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCitpbmRleCAzYjBkNjExMDM5Li40YTdlNDc2YzM3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworQEAgLTM5LDYgKzM5LDggQEAKKyAgICBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsKSBpbiBhIGhpZ2ggcGFnZSBvZiBtZW1vcnk7IHRhaWwgY2FsbCB0byB0aGUKKyAgICBoZWxwZXIuICAqLworIAorKwkuZmlsZSAiYWVhYmlfcmVhZF90cC5TIgorKworIAkuaGlkZGVuIF9fYWVhYmlfcmVhZF90cAorIEVOVFJZIChfX2FlYWJpX3JlYWRfdHApCisgI2lmZGVmIEFSQ0hfSEFTX0hBUkRfVFAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKK2luZGV4IGZiNWUwYzdkOTcuLmJkMDdiZGIzOGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworQEAgLTI3LDYgKzI3LDggQEAKKyAgICBBUk0gdW53aW5kIHRhYmxlcyBmb3IgcmVnaXN0ZXIgdG8gcmVnaXN0ZXIgbW92ZXMsIHRoZSBhY3R1YWwgb3Bjb2RlcworICAgIGFyZSBub3QgZGVmaW5lZC4gICovCisgCisrICAgICAgLmZpbGUgImxpYmMtZG8tc3lzY2FsbC5TIgorKworICNpZiBkZWZpbmVkKF9fdGh1bWJfXykKKyAJLnRodW1iCisgCS5zeW50YXggdW5pZmllZAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCitpbmRleCBlZWI5NjU0NGUzLi5kYTE4MmIyOGY4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworQEAgLTEgKzEsMyBAQAorKwkuZmlsZSAiZGwtYnJrLlMiCisrCisgI2luY2x1ZGUgPGJyay5TPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM0OTA2Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gZDkzNDc4OGUzMjIxYzI4YzlhMTg5MjIzNWNiZTRjZmQxYjI4Y2VkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8bWFydGluLmphbnNhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTcgRGVjIDIwMTggMjE6MzY6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOC8yOF0gbG9jYWxlOiBwcmV2ZW50IG1heWJlLXVuaW5pdGlhbGl6ZWQgZXJyb3JzIHdpdGggLU9zIFtCWgotICMxOTQ0NF0KLQotRml4ZXMgZm9sbG93aW5nIGVycm9yIHdoZW4gYnVpbGRpbmcgZm9yIGFhcmNoNjQgd2l0aCAtT3M6Ci18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKLXwgc3RyY29sbF9sLmM6IEluIGZ1bmN0aW9uICdfX3N0cmNvbGxfbCc6Ci18IC4uL2xvY2FsZS93ZWlnaHQuaDozMToyNjogZXJyb3I6ICdzZXEyLmJhY2tfdXMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQotfCAgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+Ci18IHN0cmNvbGxfbC5jOjMwNDoxODogbm90ZTogJ3NlcTIuYmFja191cycgd2FzIGRlY2xhcmVkIGhlcmUKLXwgICAgY29sbF9zZXEgc2VxMSwgc2VxMjsKLXwgICAgICAgICAgICAgICAgICAgXn5+fgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3RyY29sbF9sLmM6NDM6Ci18IC4uL2xvY2FsZS93ZWlnaHQuaDozMToyNjogZXJyb3I6ICdzZXExLmJhY2tfdXMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQotfCAgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+Ci18IHN0cmNvbGxfbC5jOjMwNDoxMjogbm90ZTogJ3NlcTEuYmFja191cycgd2FzIGRlY2xhcmVkIGhlcmUKLXwgICAgY29sbF9zZXEgc2VxMSwgc2VxMjsKLXwgICAgICAgICAgICAgXn5+fgotCi0gICAgICAgIFBhcnRpYWwgZml4IGZvciBbQlogIzE5NDQ0XQotICAgICAgICAqIGxvY2FsZS93ZWlnaHQuaDogRml4IGJ1aWxkIHdpdGggLU9zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMDE0NzY2XQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbG9jYWxlL3dlaWdodC5oIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3dlaWdodC5oIGIvbG9jYWxlL3dlaWdodC5oCi1pbmRleCA3Y2E4MTQ5OGIyLi5kNjA4Y2E3MGJiIDEwMDY0NAotLS0tIGEvbG9jYWxlL3dlaWdodC5oCi0rKysgYi9sb2NhbGUvd2VpZ2h0LmgKLUBAIC0yOCw3ICsyOCwxNCBAQCBmaW5kaWR4IChjb25zdCBpbnQzMl90ICp0YWJsZSwKLSAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4dHJhLAotIAkgY29uc3QgdW5zaWduZWQgY2hhciAqKmNwcCwgc2l6ZV90IGxlbikKLSB7Ci0rICAvKiBXaXRoIEdDQyA4IHdoZW4gY29tcGlsaW5nIHdpdGggLU9zIHRoZSBjb21waWxlciB3YXJucyB0aGF0Ci0rICAgICBzZXExLmJhY2tfdXMgYW5kIHNlcTIuYmFja191cyBtaWdodCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCi0rICAgICBUaGlzIHVuaW5pdGlhbGl6ZWQgdXNlIGlzIGltcG9zc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbgotKyAgICAgYXMgZGVzY3JpYmVkIGluIGNvbW1lbnRzIGluIGxvY2FsZS93ZWlnaHR3Yy5oLiAgKi8KLSsgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOwotKyAgRElBR19JR05PUkVfT3NfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOwotICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOwotKyAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwOwotICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXNyYzsKLSAKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjMzU5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gNjY5NjNhZDgzYmRkM2IwNzUwMDZkZGNhOWRmZTM1N2FlZDE4MWQ2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8bWFydGluLmphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTcgRGVjIDIwMTggMjE6MzY6MTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlOiBwcmV2ZW50IG1heWJlLXVuaW5pdGlhbGl6ZWQgZXJyb3JzIHdpdGggLU9zIFtCWgorICMxOTQ0NF0KKworRml4ZXMgZm9sbG93aW5nIGVycm9yIHdoZW4gYnVpbGRpbmcgZm9yIGFhcmNoNjQgd2l0aCAtT3M6Cit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKK3wgc3RyY29sbF9sLmM6IEluIGZ1bmN0aW9uICdfX3N0cmNvbGxfbCc6Cit8IC4uL2xvY2FsZS93ZWlnaHQuaDozMToyNjogZXJyb3I6ICdzZXEyLmJhY2tfdXMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+Cit8IHN0cmNvbGxfbC5jOjMwNDoxODogbm90ZTogJ3NlcTIuYmFja191cycgd2FzIGRlY2xhcmVkIGhlcmUKK3wgICAgY29sbF9zZXEgc2VxMSwgc2VxMjsKK3wgICAgICAgICAgICAgICAgICAgXn5+fgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3RyY29sbF9sLmM6NDM6Cit8IC4uL2xvY2FsZS93ZWlnaHQuaDozMToyNjogZXJyb3I6ICdzZXExLmJhY2tfdXMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+Cit8IHN0cmNvbGxfbC5jOjMwNDoxMjogbm90ZTogJ3NlcTEuYmFja191cycgd2FzIGRlY2xhcmVkIGhlcmUKK3wgICAgY29sbF9zZXEgc2VxMSwgc2VxMjsKK3wgICAgICAgICAgICAgXn5+fgorCisgICAgICAgIFBhcnRpYWwgZml4IGZvciBbQlogIzE5NDQ0XQorICAgICAgICAqIGxvY2FsZS93ZWlnaHQuaDogRml4IGJ1aWxkIHdpdGggLU9zLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMDE0NzY2XQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3dlaWdodC5oIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3dlaWdodC5oIGIvbG9jYWxlL3dlaWdodC5oCitpbmRleCBlMDcxMjUzZjg1Li4yODg5YzM5NWYxIDEwMDY0NAorLS0tIGEvbG9jYWxlL3dlaWdodC5oCisrKysgYi9sb2NhbGUvd2VpZ2h0LmgKK0BAIC0yOCw3ICsyOCwxNCBAQCBmaW5kaWR4IChjb25zdCBpbnQzMl90ICp0YWJsZSwKKyAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmV4dHJhLAorIAkgY29uc3QgdW5zaWduZWQgY2hhciAqKmNwcCwgc2l6ZV90IGxlbikKKyB7CisrICAvKiBXaXRoIEdDQyA4IHdoZW4gY29tcGlsaW5nIHdpdGggLU9zIHRoZSBjb21waWxlciB3YXJucyB0aGF0CisrICAgICBzZXExLmJhY2tfdXMgYW5kIHNlcTIuYmFja191cyBtaWdodCBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrICAgICBUaGlzIHVuaW5pdGlhbGl6ZWQgdXNlIGlzIGltcG9zc2libGUgZm9yIHRoZSBzYW1lIHJlYXNvbgorKyAgICAgYXMgZGVzY3JpYmVkIGluIGNvbW1lbnRzIGluIGxvY2FsZS93ZWlnaHR3Yy5oLiAgKi8KKysgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKyAgRElBR19JR05PUkVfT3NfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworKyAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwOworICAgY29uc3QgdW5zaWduZWQgY2hhciAqdXNyYzsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1JbXByb3ZlLUlGVU5DLWNoZWNrLUJaLTI1NTA2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNiMzk4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1JbXByb3ZlLUlGVU5DLWNoZWNrLUJaLTI1NTA2LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gODdhNjk4YTIxNjQ2YjdlZTYyMDkyM2VmNWZmYTk3MzU0NzFhOGRkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhbmdydWkgU29uZyA8bWFza3JheUBnb29nbGUuY29tPgorRGF0ZTogVHVlLCA0IEZlYiAyMDIwIDIxOjU1OjQ0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUgSUZVTkMgY2hlY2sgW0JaICMyNTUwNl0KKworR05VIGxkJ3MgUklTQ1YgcG9ydCBkb2VzIG5vdCBzdXBwb3J0IElGVU5DLiBsZCAtbm8tcGllIHByb2R1Y2VzIG5vCityZWxvY2F0aW9uIGFuZCB0aGUgdGVzdCBwYXNzZWQgaW5jb3JyZWN0bHkuIEJlIG1vcmUgcmlnaWQgYnkgdGVzdGluZworSVJFTEFUSVZFIGV4cGxpY2l0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1nbGliYy5naXQ7aD04N2E2OThhMjE2NDZiN2VlNjIwOTIzZWY1ZmZhOTczNTQ3MWE4ZGRkXQorVGVzdGVkLWJ5OiBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CitSZXZpZXdlZC1ieTogQWRoZW1lcnZhbCBaYW5lbGxhIDxhZGhlbWVydmFsLnphbmVsbGFAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBiOTU5ZDJkOTg4Li4zYjk4ZWMzMTJmIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC00MDM1LDcgKzQwMzUsNyBAQCBpZiAke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBcCisgCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5TIDE+JjUgMj4mNTsgdGhlbgorICAgIyBEbyBhIGxpbmsgdG8gc2VlIGlmIHRoZSBiYWNrZW5kIHN1cHBvcnRzIElGVU5DIHJlbG9jcy4KKyAgICRSRUFERUxGIC1yIGNvbmZ0ZXN0IDE+JjUKKy0gIExDX0FMTD1DICRSRUFERUxGIC1yIGNvbmZ0ZXN0IHwgZ3JlcCAnbm8gcmVsb2NhdGlvbnMnID4vZGV2L251bGwgfHwgeworKyAgTENfQUxMPUMgJFJFQURFTEYgLVdyIGNvbmZ0ZXN0IHwgZ3JlcCAtcSAnSVJFTEFUSVZFXHxSX1NQQVJDX0pNUF9JUkVMJyAmJiB7CisgICAgIGxpYmNfY3ZfbGRfZ251X2luZGlyZWN0X2Z1bmN0aW9uPXllcworICAgfQorIGZpCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0OWI5MDBjMWVkLi5lMjAwMzRmMzAxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02NDksNyArNjQ5LDcgQEAgaWYgJHtDQy1jY30gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgXAorIAkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuUyAxPiZBU19NRVNTQUdFX0xPR19GRCAyPiZBU19NRVNTQUdFX0xPR19GRDsgdGhlbgorICAgIyBEbyBhIGxpbmsgdG8gc2VlIGlmIHRoZSBiYWNrZW5kIHN1cHBvcnRzIElGVU5DIHJlbG9jcy4KKyAgICRSRUFERUxGIC1yIGNvbmZ0ZXN0IDE+JkFTX01FU1NBR0VfTE9HX0ZECistICBMQ19BTEw9QyAkUkVBREVMRiAtciBjb25mdGVzdCB8IGdyZXAgJ25vIHJlbG9jYXRpb25zJyA+L2Rldi9udWxsIHx8IHsKKysgIExDX0FMTD1DICRSRUFERUxGIC1XciBjb25mdGVzdCB8IGdyZXAgLXEgJ0lSRUxBVElWRVx8Ul9TUEFSQ19KTVBfSVJFTCcgJiYgeworICAgICBsaWJjX2N2X2xkX2dudV9pbmRpcmVjdF9mdW5jdGlvbj15ZXMKKyAgIH0KKyBmaQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1GaXgtYnVpbGQtd2l0aC1HQ0MtMTAtd2hlbi1sb25nLWRvdWJsZS1kb3VibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI2MjI5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1GaXgtYnVpbGQtd2l0aC1HQ0MtMTAtd2hlbi1sb25nLWRvdWJsZS1kb3VibGUucGF0Y2gKQEAgLTAsMCArMSwxNzAgQEAKK0Zyb20gNDkzNDhiZWFmZTliYTE1MGM5YmQ0ODU5NWIzZjM3MjI5OWJkZGJiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CitEYXRlOiBUdWUsIDE3IE1hciAyMDIwIDIyOjU3OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIEdDQyAxMCB3aGVuIGxvbmcgZG91YmxlID0gZG91YmxlLgorCitPbiBwbGF0Zm9ybXMgd2hlcmUgbG9uZyBkb3VibGUgaGFzIHRoZSBzYW1lIEFCSSBhcyBkb3VibGUsIGdsaWJjCitkZWZpbmVzIGxvbmcgZG91YmxlIGZ1bmN0aW9ucyBhcyBhbGlhc2VzIGZvciB0aGUgY29ycmVzcG9uZGluZyBkb3VibGUKK2Z1bmN0aW9ucy4gIFRoZSBkZWNsYXJhdGlvbnMgb2YgdGhvc2UgZnVuY3Rpb25zIGluIDxtYXRoLmg+IGFyZQorZGlzYWJsZWQgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBhbGlhc2VzIGhhdmluZyBpbmNvbXBhdGlibGUgdHlwZXMsIGJ1dAorR0NDIDEwIG5vdyBnaXZlcyBlcnJvcnMgZm9yIGluY29tcGF0aWJsZSB0eXBlcyB3aGVuIHRoZSBsb25nIGRvdWJsZQorZnVuY3Rpb24gaXMga25vd24gdG8gR0NDIGFzIGEgYnVpbHQtaW4gZnVuY3Rpb24sIG5vdCBqdXN0IHdoZW4gdGhlcmUKK2lzIGFuIGluY29tcGF0aWJsZSBoZWFkZXIgZGVjbGFyYXRpb24uCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhvc2UgZXJyb3JzIGJ5IHVzaW5nIGFwcHJvcHJpYXRlCistZm5vLWJ1aWx0aW4tPGZ1bmN0aW9uPiBvcHRpb25zIHRvIGNvbXBpbGUgdGhlIGRvdWJsZSBmdW5jdGlvbnMuICBUaGUKK2xpc3Qgb2YgQ0ZMQUdTLSogc2V0dGluZ3MgaXMgYW4gYXBwcm9wcmlhdGVseSBhZGFwdGVkIHZlcnNpb24gb2YgdGhhdAoraW4gc3lzZGVwcy9pZWVlNzU0L2xkYmwtb3B0L01ha2VmaWxlIHVzZWQgdGhlcmUgZm9yIGJ1aWxkaW5nIG5sZGJsLSouYworZmlsZXM7IGluIHBhcnRpY3VsYXIsIHRoZSBvcHRpb25zIGFyZSB1c2VkIGV2ZW4gaWYgR0NDIGRvZXMgbm90CitjdXJyZW50bHkgaGF2ZSBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9mIGEgZ2l2ZW4gZnVuY3Rpb24sIHNvIHRoYXQgYWRkaW5nCitzdWNoIGEgYnVpbHQtaW4gZnVuY3Rpb24gaW4gZnV0dXJlIHdpbGwgbm90IGJyZWFrIHRoZSBnbGliYyBidWlsZC4KK1RodXMsIHZhcmlvdXMgb2YgdGhlIENGTEFHUy0qIHNldHRpbmdzIGFyZSBvbmx5IGZvciBmdXR1cmUtcHJvb2ZpbmcKK2FuZCBtYXkgbm90IGN1cnJlbnRseSBiZSBuZWVkZWQgKGFuZCBpdCdzIHBvc3NpYmxlIHNvbWUgY291bGQgYmUKK2lycmVsZXZhbnQgZm9yIG90aGVyIHJlYXNvbnMpLgorCitUZXN0ZWQgd2l0aCBidWlsZC1tYW55LWdsaWJjcy5weSBmb3IgYXJtLWxpbnV4LWdudWVhYmkgKGNvbXBpbGVycyBhbmQKK2dsaWJjcyBidWlsZHMpLCB3aGVyZSBpdCBmaXhlcyB0aGUgYnVpbGQgdGhhdCBwcmV2aW91c2x5IGZhaWxlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9NDkzNDhiZWFmZTliYTE1MGM5YmQ0ODU5NWIzZjM3MjI5OWJkZGJiMF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIG1hdGgvTWFrZWZpbGUgfCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21hdGgvTWFrZWZpbGUgYi9tYXRoL01ha2VmaWxlCitpbmRleCA4NGE4Yjk0Yzc0Li4wYTVhNDA0MzBlIDEwMDY0NAorLS0tIGEvbWF0aC9NYWtlZmlsZQorKysrIGIvbWF0aC9NYWtlZmlsZQorQEAgLTY1MCw2ICs2NTAsMTI4IEBAIGlmbmVxICgkKGxvbmctZG91YmxlLWZjdHMpLHllcykKKyAjIFdlIHdvbid0IGNvbXBpbGUgdGhlIGBsb25nIGRvdWJsZScgY29kZSBhdCBhbGwuICBUZWxsIHRoZSBgZG91YmxlJyBjb2RlCisgIyB0byBkZWZpbmUgYWxpYXNlcyBmb3IgdGhlIGBGVU5DbCcgbmFtZXMuCisgbWF0aC1DUFBGTEFHUyArPSAtRE5PX0xPTkdfRE9VQkxFCisrIyBHQ0MgMTAgZGlhZ25vc2VzIGFsaWFzZXMgd2l0aCB0eXBlcyBjb25mbGljdGluZyB3aXRoIGJ1aWx0LWluCisrIyBmdW5jdGlvbnMuCisrQ0ZMQUdTLXdfYWNvcy5jICs9IC1mbm8tYnVpbHRpbi1hY29zbAorK0NGTEFHUy13X2Fjb3NoLmMgKz0gLWZuby1idWlsdGluLWFjb3NobAorK0NGTEFHUy13X2FzaW4uYyArPSAtZm5vLWJ1aWx0aW4tYXNpbmwKKytDRkxBR1Mtc19hc2luaC5jICs9IC1mbm8tYnVpbHRpbi1hc2luaGwKKytDRkxBR1Mtc19hdGFuLmMgKz0gLWZuby1idWlsdGluLWF0YW5sCisrQ0ZMQUdTLXdfYXRhbjIuYyArPSAtZm5vLWJ1aWx0aW4tYXRhbjJsCisrQ0ZMQUdTLXdfYXRhbmguYyArPSAtZm5vLWJ1aWx0aW4tYXRhbmhsCisrQ0ZMQUdTLXNfY2Ficy5jICs9IC1mbm8tYnVpbHRpbi1jYWJzbAorK0NGTEFHUy1zX2NhY29zLmMgKz0gLWZuby1idWlsdGluLWNhY29zbAorK0NGTEFHUy1zX2NhY29zaC5jICs9IC1mbm8tYnVpbHRpbi1jYWNvc2hsCisrQ0ZMQUdTLXNfY2Fub25pY2FsaXplLmMgKz0gLWZuby1idWlsdGluLWNhbm9uaWNhbGl6ZWwKKytDRkxBR1Mtc19jYXJnLmMgKz0gLWZuby1idWlsdGluLWNhcmdsCisrQ0ZMQUdTLXNfY2FzaW4uYyArPSAtZm5vLWJ1aWx0aW4tY2FzaW5sCisrQ0ZMQUdTLXNfY2FzaW5oLmMgKz0gLWZuby1idWlsdGluLWNhc2luaGwKKytDRkxBR1Mtc19jYXRhbi5jICs9IC1mbm8tYnVpbHRpbi1jYXRhbmwKKytDRkxBR1Mtc19jYXRhbmguYyArPSAtZm5vLWJ1aWx0aW4tY2F0YW5obAorK0NGTEFHUy1zX2NicnQuYyArPSAtZm5vLWJ1aWx0aW4tY2JydGwKKytDRkxBR1Mtc19jY29zLmMgKz0gLWZuby1idWlsdGluLWNjb3NsCisrQ0ZMQUdTLXNfY2Nvc2guYyArPSAtZm5vLWJ1aWx0aW4tY2Nvc2hsCisrQ0ZMQUdTLXNfY2VpbC5jICs9IC1mbm8tYnVpbHRpbi1jZWlsbAorK0NGTEFHUy1zX2NleHAuYyArPSAtZm5vLWJ1aWx0aW4tY2V4cGwKKytDRkxBR1Mtc19jaW1hZy5jICs9IC1mbm8tYnVpbHRpbi1jaW1hZ2wKKytDRkxBR1Mtc19jbG9nLmMgKz0gLWZuby1idWlsdGluLWNsb2dsCisrQ0ZMQUdTLXNfY2xvZzEwLmMgKz0gLWZuby1idWlsdGluLWNsb2cxMGwKKytDRkxBR1Mtc19jb25qLmMgKz0gLWZuby1idWlsdGluLWNvbmpsCisrQ0ZMQUdTLXNfY29weXNpZ24uYyArPSAtZm5vLWJ1aWx0aW4tY29weXNpZ25sCisrQ0ZMQUdTLXNfY29zLmMgKz0gLWZuby1idWlsdGluLWNvc2wKKytDRkxBR1Mtd19jb3NoLmMgKz0gLWZuby1idWlsdGluLWNvc2hsCisrQ0ZMQUdTLXNfY3Bvdy5jICs9IC1mbm8tYnVpbHRpbi1jcG93bAorK0NGTEFHUy1zX2Nwcm9qLmMgKz0gLWZuby1idWlsdGluLWNwcm9qbAorK0NGTEFHUy1zX2NyZWFsLmMgKz0gLWZuby1idWlsdGluLWNyZWFsbAorK0NGTEFHUy1zX2NzaW4uYyArPSAtZm5vLWJ1aWx0aW4tY3NpbmwKKytDRkxBR1Mtc19jc2luaC5jICs9IC1mbm8tYnVpbHRpbi1jc2luaGwKKytDRkxBR1Mtc19jc3FydC5jICs9IC1mbm8tYnVpbHRpbi1jc3FydGwKKytDRkxBR1Mtc19jdGFuLmMgKz0gLWZuby1idWlsdGluLWN0YW5sCisrQ0ZMQUdTLXNfY3RhbmguYyArPSAtZm5vLWJ1aWx0aW4tY3RhbmhsCisrQ0ZMQUdTLXNfZGFkZC5jICs9IC1mbm8tYnVpbHRpbi1kYWRkbAorK0NGTEFHUy1zX2RkaXYuYyArPSAtZm5vLWJ1aWx0aW4tZGRpdmwKKytDRkxBR1Mtc19kbXVsLmMgKz0gLWZuby1idWlsdGluLWRtdWxsCisrQ0ZMQUdTLXNfZHN1Yi5jICs9IC1mbm8tYnVpbHRpbi1kc3VibAorK0NGTEFHUy1zX2VyZi5jICs9IC1mbm8tYnVpbHRpbi1lcmZsCisrQ0ZMQUdTLXNfZXJmYy5jICs9IC1mbm8tYnVpbHRpbi1lcmZjbAorK0NGTEFHUy1lX2V4cC5jICs9IC1mbm8tYnVpbHRpbi1leHBsCisrQ0ZMQUdTLXdfZXhwMTAuYyArPSAtZm5vLWJ1aWx0aW4tZXhwMTBsCisrQ0ZMQUdTLWVfZXhwMi5jICs9IC1mbm8tYnVpbHRpbi1leHAybAorK0NGTEFHUy1zX2V4cG0xLmMgKz0gLWZuby1idWlsdGluLWV4cG0xbAorK0NGTEFHUy1zX2ZhYnMuYyArPSAtZm5vLWJ1aWx0aW4tZmFic2wKKytDRkxBR1Mtc19mYWRkLmMgKz0gLWZuby1idWlsdGluLWZhZGRsCisrQ0ZMQUdTLXNfZmRpbS5jICs9IC1mbm8tYnVpbHRpbi1mZGltbAorK0NGTEFHUy1zX2ZkaXYuYyArPSAtZm5vLWJ1aWx0aW4tZmRpdmwKKytDRkxBR1Mtc19maW5pdGUuYyArPSAtZm5vLWJ1aWx0aW4tZmluaXRlbAorK0NGTEFHUy1zX2Zsb29yLmMgKz0gLWZuby1idWlsdGluLWZsb29ybAorK0NGTEFHUy1zX2ZtYS5jICs9IC1mbm8tYnVpbHRpbi1mbWFsCisrQ0ZMQUdTLXNfZm1heC5jICs9IC1mbm8tYnVpbHRpbi1mbWF4bAorK0NGTEFHUy1zX2ZtYXhtYWcuYyArPSAtZm5vLWJ1aWx0aW4tZm1heG1hZ2wKKytDRkxBR1Mtc19mbWluLmMgKz0gLWZuby1idWlsdGluLWZtaW5sCisrQ0ZMQUdTLXNfZm1pbm1hZy5jICs9IC1mbm8tYnVpbHRpbi1mbWlubWFnbAorK0NGTEFHUy13X2Ztb2QuYyArPSAtZm5vLWJ1aWx0aW4tZm1vZGwKKytDRkxBR1Mtc19mbXVsLmMgKz0gLWZuby1idWlsdGluLWZtdWxsCisrQ0ZMQUdTLXNfZnJleHAuYyArPSAtZm5vLWJ1aWx0aW4tZnJleHBsCisrQ0ZMQUdTLXNfZnJvbWZwLmMgKz0gLWZuby1idWlsdGluLWZyb21mcGwKKytDRkxBR1Mtc19mcm9tZnB4LmMgKz0gLWZuby1idWlsdGluLWZyb21mcHhsCisrQ0ZMQUdTLXNfZnN1Yi5jICs9IC1mbm8tYnVpbHRpbi1mc3VibAorK0NGTEFHUy1zX2dhbW1hLmMgKz0gLWZuby1idWlsdGluLWdhbW1hbAorK0NGTEFHUy1zX2dldHBheWxvYWQuYyArPSAtZm5vLWJ1aWx0aW4tZ2V0cGF5bG9hZGwKKytDRkxBR1Mtd19oeXBvdC5jICs9IC1mbm8tYnVpbHRpbi1oeXBvdGwKKytDRkxBR1Mtd19pbG9nYi5jICs9IC1mbm8tYnVpbHRpbi1pbG9nYmwKKytDRkxBR1Mtc19pc2luZi5jICs9IC1mbm8tYnVpbHRpbi1pc2luZmwKKytDRkxBR1Mtc19pc25hbi5jICs9IC1mbm8tYnVpbHRpbi1pc25hbmwKKytDRkxBR1Mtd19qMC5jICs9IC1mbm8tYnVpbHRpbi1qMGwKKytDRkxBR1Mtd19qMS5jICs9IC1mbm8tYnVpbHRpbi1qMWwKKytDRkxBR1Mtd19qbi5jICs9IC1mbm8tYnVpbHRpbi1qbmwKKytDRkxBR1Mtc19sZGV4cC5jICs9IC1mbm8tYnVpbHRpbi1sZGV4cGwKKytDRkxBR1Mtd19sZ2FtbWEuYyArPSAtZm5vLWJ1aWx0aW4tbGdhbW1hbAorK0NGTEFHUy13X2xnYW1tYV9yLmMgKz0gLWZuby1idWlsdGluLWxnYW1tYWxfcgorK0NGTEFHUy13X2xsb2diLmMgKz0gLWZuby1idWlsdGluLWxsb2dibAorK0NGTEFHUy1zX2xscmludC5jICs9IC1mbm8tYnVpbHRpbi1sbHJpbnRsCisrQ0ZMQUdTLXNfbGxyb3VuZC5jICs9IC1mbm8tYnVpbHRpbi1sbHJvdW5kbAorK0NGTEFHUy1lX2xvZy5jICs9IC1mbm8tYnVpbHRpbi1sb2dsCisrQ0ZMQUdTLXdfbG9nMTAuYyArPSAtZm5vLWJ1aWx0aW4tbG9nMTBsCisrQ0ZMQUdTLXdfbG9nMXAuYyArPSAtZm5vLWJ1aWx0aW4tbG9nMXBsCisrQ0ZMQUdTLWVfbG9nMi5jICs9IC1mbm8tYnVpbHRpbi1sb2cybAorK0NGTEFHUy1zX2xvZ2IuYyArPSAtZm5vLWJ1aWx0aW4tbG9nYmwKKytDRkxBR1Mtc19scmludC5jICs9IC1mbm8tYnVpbHRpbi1scmludGwKKytDRkxBR1Mtc19scm91bmQuYyArPSAtZm5vLWJ1aWx0aW4tbHJvdW5kbAorK0NGTEFHUy1zX21vZGYuYyArPSAtZm5vLWJ1aWx0aW4tbW9kZmwKKytDRkxBR1Mtc19uYW4uYyArPSAtZm5vLWJ1aWx0aW4tbmFubAorK0NGTEFHUy1zX25lYXJieWludC5jICs9IC1mbm8tYnVpbHRpbi1uZWFyYnlpbnRsCisrQ0ZMQUdTLXNfbmV4dGFmdGVyLmMgKz0gLWZuby1idWlsdGluLW5leHRhZnRlcmwKKytDRkxBR1Mtc19uZXh0ZG93bi5jICs9IC1mbm8tYnVpbHRpbi1uZXh0ZG93bmwKKytDRkxBR1Mtc19uZXh0dG93YXJkLmMgKz0gLWZuby1idWlsdGluLW5leHR0b3dhcmQgLWZuby1idWlsdGluLW5leHR0b3dhcmRsCisrQ0ZMQUdTLXNfbmV4dHRvd2FyZGYuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dHRvd2FyZGYKKytDRkxBR1Mtc19uZXh0dXAuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dHVwbAorK0NGTEFHUy1lX3Bvdy5jICs9IC1mbm8tYnVpbHRpbi1wb3dsCisrQ0ZMQUdTLXdfcmVtYWluZGVyLmMgKz0gLWZuby1idWlsdGluLXJlbWFpbmRlcmwgLWZuby1idWlsdGluLWRyZW1sCisrQ0ZMQUdTLXNfcmVtcXVvLmMgKz0gLWZuby1idWlsdGluLXJlbXF1b2wKKytDRkxBR1Mtc19yaW50LmMgKz0gLWZuby1idWlsdGluLXJpbnRsCisrQ0ZMQUdTLXNfcm91bmQuYyArPSAtZm5vLWJ1aWx0aW4tcm91bmRsCisrQ0ZMQUdTLXNfcm91bmRldmVuLmMgKz0gLWZuby1idWlsdGluLXJvdW5kZXZlbmwKKytDRkxBR1Mtd19zY2FsYi5jICs9IC1mbm8tYnVpbHRpbi1zY2FsYmwKKytDRkxBR1Mtd19zY2FsYmxuLmMgKz0gLWZuby1idWlsdGluLXNjYWxibG5sCisrQ0ZMQUdTLXNfc2NhbGJuLmMgKz0gLWZuby1idWlsdGluLXNjYWxibmwKKytDRkxBR1Mtc19zZXRwYXlsb2FkLmMgKz0gLWZuby1idWlsdGluLXNldHBheWxvYWRsCisrQ0ZMQUdTLXNfc2V0cGF5bG9hZHNpZy5jICs9IC1mbm8tYnVpbHRpbi1zZXRwYXlsb2Fkc2lnbAorK0NGTEFHUy1zX3NpZ25pZmljYW5kLmMgKz0gLWZuby1idWlsdGluLXNpZ25pZmljYW5kbAorK0NGTEFHUy1zX3Npbi5jICs9IC1mbm8tYnVpbHRpbi1zaW5sCisrQ0ZMQUdTLXNfc2luY29zLmMgKz0gLWZuby1idWlsdGluLXNpbmNvc2wKKytDRkxBR1Mtd19zaW5oLmMgKz0gLWZuby1idWlsdGluLXNpbmhsCisrQ0ZMQUdTLXdfc3FydC5jICs9IC1mbm8tYnVpbHRpbi1zcXJ0bAorK0NGTEFHUy1zX3Rhbi5jICs9IC1mbm8tYnVpbHRpbi10YW5sCisrQ0ZMQUdTLXNfdGFuaC5jICs9IC1mbm8tYnVpbHRpbi10YW5obAorK0NGTEFHUy13X3RnYW1tYS5jICs9IC1mbm8tYnVpbHRpbi10Z2FtbWFsCisrQ0ZMQUdTLXNfdG90YWxvcmRlci5jICs9IC1mbm8tYnVpbHRpbi10b3RhbG9yZGVybAorK0NGTEFHUy1zX3RvdGFsb3JkZXJtYWcuYyArPSAtZm5vLWJ1aWx0aW4tdG90YWxvcmRlcm1hZ2wKKytDRkxBR1Mtc190cnVuYy5jICs9IC1mbm8tYnVpbHRpbi10cnVuY2wKKytDRkxBR1Mtc191ZnJvbWZwLmMgKz0gLWZuby1idWlsdGluLXVmcm9tZnBsCisrQ0ZMQUdTLXNfdWZyb21mcHguYyArPSAtZm5vLWJ1aWx0aW4tdWZyb21mcHhsCisrQ0ZMQUdTLXNfeTAuYyArPSAtZm5vLWJ1aWx0aW4teTBsCisrQ0ZMQUdTLXNfeTEuYyArPSAtZm5vLWJ1aWx0aW4teTFsCisrQ0ZMQUdTLXNfeW4uYyArPSAtZm5vLWJ1aWx0aW4teW5sCisgZW5kaWYKKyAKKyAjIFRoZXNlIGZpbGVzIHF1aWV0IHNOYU5zIGluIGEgd2F5IHRoYXQgaXMgb3B0aW1pemVkIGF3YXkgd2l0aG91dAorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAyMC0xMDAyOS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMjAtMTAwMjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhMTVmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMjAtMTAwMjkucGF0Y2gKQEAgLTAsMCArMSwxMjggQEAKK0Zyb20gY2UyNjVlYzViYzI1ZWMzNWZiYTUzODA3YWJhYzFiMGM4NDY5ODk1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2VwaCBNeWVycyA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CitEYXRlOiBXZWQsIDEyIEZlYiAyMDIwIDIzOjMxOjU2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGxkYmwtOTYgc3RhY2sgY29ycnVwdGlvbiBmcm9tIHJhbmdlIHJlZHVjdGlvbiBvZgorCisgcHNldWRvLXplcm8gKGJ1ZyAyNTQ4NykuCisKK0J1ZyAyNTQ4NyByZXBvcnRzIHN0YWNrIGNvcnJ1cHRpb24gaW4gbGRibC05NiBzaW5sIG9uIGEgcHNldWRvLXplcm8KK2FyZ3VtZW50IChhbiByZXByZXNlbnRhdGlvbiB3aGVyZSBhbGwgdGhlIHNpZ25pZmljYW5kIGJpdHMsIGluY2x1ZGluZwordGhlIGV4cGxpY2l0IGhpZ2ggYml0LCBhcmUgemVybywgYnV0IHRoZSBleHBvbmVudCBpcyBub3QgemVybywgd2hpY2gKK2lzIG5vdCBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbG9uZyBkb3VibGUgdHlwZSkuCisKK0FsdGhvdWdoIHRoaXMgaXMgbm90IGEgdmFsaWQgbG9uZyBkb3VibGUgcmVwcmVzZW50YXRpb24sIGV4aXN0aW5nCitwcmFjdGljZSBpbiB0aGlzIGFyZWEgKHNlZSBidWcgNDU4Niwgb3JpZ2luYWxseSBtYXJrZWQgaW52YWxpZCBidXQKK3N1YnNlcXVlbnRseSBmaXhlZCkgaXMgdGhhdCB3ZSBzdGlsbCBzZWVrIHRvIGF2b2lkIGludmFsaWQgbWVtb3J5CithY2Nlc3NlcyBhcyBhIHJlc3VsdCwgaW4gY2FzZSBvZiBwcm9ncmFtcyB0aGF0IHRyZWF0IGFyYml0cmFyeSBiaW5hcnkKK2RhdGEgYXMgbG9uZyBkb3VibGUgcmVwcmVzZW50YXRpb25zLCBhbHRob3VnaCB0aGUgaW52YWxpZAorcmVwcmVzZW50YXRpb25zIG9mIHRoZSBsZGJsLTk2IGZvcm1hdCBkbyBub3QgbmVlZCB0byBiZSBjb25zaXN0ZW50bHkKK2hhbmRsZWQgdGhlIHNhbWUgYXMgYW55IHBhcnRpY3VsYXIgdmFsaWQgcmVwcmVzZW50YXRpb24uCisKK1RoaXMgcGF0Y2ggbWFrZXMgdGhlIHJhbmdlIHJlZHVjdGlvbiBkZXRlY3QgcHNldWRvLXplcm8gYW5kIHVubm9ybWFsCityZXByZXNlbnRhdGlvbnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgZ28gdG8gX19rZXJuZWxfcmVtX3BpbzIsIGFuZAorcmV0dXJucyBhIE5hTiBmb3IgdGhlbSBpbnN0ZWFkIG9mIGNvbnRpbnVpbmcgd2l0aCB0aGUgcmFuZ2UgcmVkdWN0aW9uCitwcm9jZXNzLiAgKFBzZXVkby16ZXJvIGFuZCB1bm5vcm1hbCByZXByZXNlbnRhdGlvbnMgd2hvc2UgdW5iaWFzZWQKK2V4cG9uZW50IGlzIGxlc3MgdGhhbiAtMSBoYXZlIGFscmVhZHkgYmVlbiBzYWZlbHkgcmV0dXJuZWQgZnJvbSB0aGUKK2Z1bmN0aW9uIGJlZm9yZSB0aGlzIHBvaW50IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgcmVzdCBvZiByYW5nZQorcmVkdWN0aW9uLikgIFBzZXVkby16ZXJvIHJlcHJlc2VudGF0aW9ucyB3b3VsZCBwcmV2aW91c2x5IHJlc3VsdCBpbgordGhlIHZhbHVlIHBhc3NlZCB0byBfX2tlcm5lbF9yZW1fcGlvMiBiZWluZyBhbGwtemVybywgd2hpY2ggaXMKK2RlZmluaXRlbHkgdW5zYWZlOyB1bm5vcm1hbCByZXByZXNlbnRhdGlvbnMgd291bGQgcHJldmlvdXNseSByZXN1bHQgaW4KK2EgdmFsdWUgcGFzc2VkIHdob3NlIGhpZ2ggYml0IGlzIHplcm8sIHdoaWNoIG1pZ2h0IHdlbGwgYmUgdW5zYWZlCitzaW5jZSB0aGF0IGlzIG5vdCBhIGZvcm0gb2YgaW5wdXQgZXhwZWN0ZWQgYnkgX19rZXJuZWxfcmVtX3BpbzIuCisKK1Rlc3RlZCBmb3IgeDg2XzY0LgorCitDVkU6IENWRS0yMDIwLTEwMDI5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9Z2xpYmMuZ2l0OworYT1wYXRjaDtoPTkzMzM0OTg3OTRjZGUxZDVjY2E1MThiYWRmNzk1MzNhMjQxMTRiNmZdCitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZSAgICAgICAgICAgfCAgMyArKy0KKyBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jICAgICAgfCAxMiArKysrKysrKysKKyBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvdGVzdC1zaW5sLXBzZXVkby5jCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZSBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlCitpbmRleCBiMTAzMjU0Li4wNTJjMWM3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlCitAQCAtMTcsNSArMTcsNiBAQAorICMgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBpZmVxICgkKHN1YmRpciksbWF0aCkKKy10ZXN0cyArPSB0ZXN0LWNhbm9uaWNhbC1sZGJsLTk2IHRlc3QtdG90YWxvcmRlcmwtbGRibC05NgorK3Rlc3RzICs9IHRlc3QtY2Fub25pY2FsLWxkYmwtOTYgdGVzdC10b3RhbG9yZGVybC1sZGJsLTk2IHRlc3Qtc2lubC1wc2V1ZG8KKytDRkxBR1MtdGVzdC1zaW5sLXBzZXVkby5jICs9IC1mc3RhY2stcHJvdGVjdG9yLWFsbAorIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMKK2luZGV4IDgwNWRlMjIuLjFhZWNjYjQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jCitAQCAtMjEwLDYgKzIxMCwxOCBAQCBfX2llZWU3NTRfcmVtX3BpbzJsIChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSAqeSkKKyAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorKyAgaWYgKChpMCAmIDB4ODAwMDAwMDApID09IDApCisrICAgIHsKKysgICAgICAvKiBQc2V1ZG8temVybyBhbmQgdW5ub3JtYWwgcmVwcmVzZW50YXRpb25zIGFyZSBub3QgdmFsaWQKKysJIHJlcHJlc2VudGF0aW9ucyBvZiBsb25nIGRvdWJsZS4gIFdlIG5lZWQgdG8gYXZvaWQgc3RhY2sKKysJIGNvcnJ1cHRpb24gaW4gX19rZXJuZWxfcmVtX3BpbzIsIHdoaWNoIGV4cGVjdHMgaW5wdXQgaW4gYQorKwkgcGFydGljdWxhciBub3JtYWwgZm9ybSwgYnV0IHRob3NlIHJlcHJlc2VudGF0aW9ucyBkbyBub3QgbmVlZAorKwkgdG8gYmUgY29uc2lzdGVudGx5IGhhbmRsZWQgbGlrZSBhbnkgcGFydGljdWxhciBmbG9hdGluZy1wb2ludAorKwkgdmFsdWUuICAqLworKyAgICAgIHlbMV0gPSB5WzBdID0gX19idWlsdGluX25hbmwgKCIiKTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworICAgLyogU3BsaXQgdGhlIDY0IGJpdHMgb2YgdGhlIG1hbnRpc3NhIGludG8gdGhyZWUgMjQtYml0IGludGVnZXJzCisgICAgICBzdG9yZWQgaW4gYSBkb3VibGUgYXJyYXkuICAqLworICAgZXhwID0gajAgLSAyMzsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mNTliOTc3CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMKK0BAIC0wLDAgKzEsNDEgQEAKKysvKiBUZXN0IHNpbmwgZm9yIHBzZXVkby16ZXJvcyBhbmQgdW5ub3JtYWxzIGZvciBsZGJsLTk2IChidWcgMjU0ODcpLgorKyAgIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHNlZQorKyAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfbGRibC5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKytzdGF0aWMgaW50CisrZG9fdGVzdCAodm9pZCkKKyt7CisrICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyBpKyspCisrICAgIHsKKysgICAgICB1aW50NjRfdCBzaWcgPSBpID09IDYzID8gMCA6IDFVTEwgPDwgaTsKKysgICAgICBsb25nIGRvdWJsZSBsZDsKKysgICAgICBTRVRfTERPVUJMRV9XT1JEUyAobGQsIDB4NDE0MSwKKysJCQkgc2lnID4+IDMyLCBzaWcgJiAweGZmZmZmZmZmVUxMKTsKKysgICAgICAvKiBUaGUgcmVxdWlyZW1lbnQgaXMgdGhhdCBubyBzdGFjayBvdmVyZmxvdyBvY2N1cnMgd2hlbiB0aGUKKysJIHBzZXVkby16ZXJvIG9yIHVubm9ybWFsIGdvZXMgdGhyb3VnaCByYW5nZSByZWR1Y3Rpb24uICAqLworKyAgICAgIHZvbGF0aWxlIGxvbmcgZG91YmxlIGxkcjsKKysgICAgICBsZHIgPSBzaW5sIChsZCk7CisrICAgICAgKHZvaWQpIGxkcjsKKysgICAgfQorKyAgcmV0dXJuIDA7CisrfQorKworKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmM+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FkZC1jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FkZC1jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NzExMjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hZGQtY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExNSArMCwwIEBACi0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDA3ICsrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgfCAgNTI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oICAgICAgICAgICAgICAgICAgIHwgIDEyOSArKysrKysrCi0gbG9jYWxlZGVmL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAKLSA0IGZpbGVzIGNoYW5nZWQsIDEwNzEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKLUBAIC0wLDAgKzEsNTI4IEBACi0rLyoKLSsgKiBoYXJkbGluayAtIGNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB2aWEgaGFyZGxpbmtzCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTggUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAxOSBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKgotKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSsgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotKyAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGdldG9wdC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGRpcmVudC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpZmRlZiBIQVZFX1BDUkUKLSsjIGRlZmluZSBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggOAotKyMgaW5jbHVkZSA8cGNyZTIuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiYy5oIgotKyNpbmNsdWRlICJ4YWxsb2MuaCIKLSsjaW5jbHVkZSAibmxzLmgiCi0rI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCi0rCi0rI2RlZmluZSBOSEFTSCAgICgxPDwxNykgIC8qIE11c3QgYmUgYSBwb3dlciBvZiAyISAqLwotKyNkZWZpbmUgTkJVRiAgICA2NAotKwotK3N0cnVjdCBoYXJkbGlua19maWxlOwotKwotK3N0cnVjdCBoYXJkbGlua19oYXNoIHsKLSsJc3RydWN0IGhhcmRsaW5rX2hhc2ggKm5leHQ7Ci0rCXN0cnVjdCBoYXJkbGlua19maWxlICpjaGFpbjsKLSsJb2ZmX3Qgc2l6ZTsKLSsJdGltZV90IG10aW1lOwotK307Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2RpciB7Ci0rCXN0cnVjdCBoYXJkbGlua19kaXIgKm5leHQ7Ci0rCWNoYXIgbmFtZVtdOwotK307Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2ZpbGUgewotKwlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqbmV4dDsKLSsJaW5vX3QgaW5vOwotKwlkZXZfdCBkZXY7Ci0rCXVuc2lnbmVkIGludCBja3N1bTsKLSsJY2hhciBuYW1lW107Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIHsKLSsJY2hhciAqYnVmOwotKwlzaXplX3QgYWxsb2M7Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfY3RsIHsKLSsJc3RydWN0IGhhcmRsaW5rX2RpciAqZGlyczsKLSsJc3RydWN0IGhhcmRsaW5rX2hhc2ggKmhwc1tOSEFTSF07Ci0rCWNoYXIgaW9idWYxW0JVRlNJWl07Ci0rCWNoYXIgaW9idWYyW0JVRlNJWl07Ci0rCS8qIHN1bW1hcnkgY291bnRlcnMgKi8KLSsJdW5zaWduZWQgbG9uZyBsb25nIG5kaXJzOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbm9iamVjdHM7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBucmVnZmlsZXM7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBuY29tcDsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5saW5rczsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5zYXZlZDsKLSsJLyogY3VycmVudCBkZXZpY2UgKi8KLSsJZGV2X3QgZGV2OwotKwkvKiBmbGFncyAqLwotKwl1bnNpZ25lZCBpbnQgdmVyYm9zZTsKLSsJdW5zaWduZWQgaW50Ci0rCQlub19saW5rOjEsCi0rCQljb250ZW50X29ubHk6MSwKLSsJCWZvcmNlOjE7Ci0rfTsKLSsvKiBjdGwgaXMgaW4gZ2xvYmFsIHNjb3BlIGR1ZSB1c2UgaW4gYXRleGl0KCkgKi8KLStzdHJ1Y3QgaGFyZGxpbmtfY3RsIGdsb2JhbF9jdGw7Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGhhc2gob2ZmX3Qgc2l6ZSwgdGltZV90IG10aW1lKQotK3sKLSsJcmV0dXJuIChzaXplIF4gbXRpbWUpICYgKE5IQVNIIC0gMSk7Ci0rfQotKwotK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKLStzdGF0aWMgaW5saW5lIGludCBzdGNtcChzdHJ1Y3Qgc3RhdCAqc3QxLCBzdHJ1Y3Qgc3RhdCAqc3QyLCBpbnQgY29udGVudF9zY29wZSkKLSt7Ci0rCWlmIChjb250ZW50X3Njb3BlKQotKwkJcmV0dXJuIHN0MS0+c3Rfc2l6ZSAhPSBzdDItPnN0X3NpemU7Ci0rCi0rCXJldHVybiBzdDEtPnN0X21vZGUgIT0gc3QyLT5zdF9tb2RlCi0rCQl8fCBzdDEtPnN0X3VpZCAhPSBzdDItPnN0X3VpZAotKwkJfHwgc3QxLT5zdF9naWQgIT0gc3QyLT5zdF9naWQKLSsJCXx8IHN0MS0+c3Rfc2l6ZSAhPSBzdDItPnN0X3NpemUKLSsJCXx8IHN0MS0+c3RfbXRpbWUgIT0gc3QyLT5zdF9tdGltZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgcHJpbnRfc3VtbWFyeSh2b2lkKQotK3sKLSsJc3RydWN0IGhhcmRsaW5rX2N0bCBjb25zdCAqY29uc3QgY3RsID0gJmdsb2JhbF9jdGw7Ci0rCi0rCWlmICghY3RsLT52ZXJib3NlKQotKwkJcmV0dXJuOwotKwotKwlpZiAoY3RsLT52ZXJib3NlID4gMSAmJiBjdGwtPm5saW5rcykKLSsJCWZwdXRjKCdcbicsIHN0ZG91dCk7Ci0rCi0rCXByaW50ZihfKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOwotKwlwcmludGYoXygiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKLSsJcHJpbnRmKF8oIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOwotKwlwcmludGYoXygiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKLSsJcHJpbnRmKCAgIiVzJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPwotKwkgICAgICAgXygiV291bGQgbGluazogICAgIikgOgotKwkgICAgICAgXygiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7Ci0rCXByaW50ZiggICIlcyAlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0rCSAgICAgICBfKCJXb3VsZCBzYXZlOiAgICIpIDoKLSsJICAgICAgIF8oIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHVzYWdlKHZvaWQpCi0rewotKwlmcHV0cyhVU0FHRV9IRUFERVIsIHN0ZG91dCk7Ci0rCXByaW50ZihfKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKLSsKLSsJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOwotKwlwdXRzKF8oIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOwotKwotKwlmcHV0cyhVU0FHRV9PUFRJT05TLCBzdGRvdXQpOwotKwlwdXRzKF8oIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7Ci0rCXB1dHMoXygiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKLSsJcHV0cyhfKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOwotKwlwdXRzKF8oIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKLSsJcHV0cyhfKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7Ci0rCXB1dHMoXygiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOwotKwotKwlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0rCXByaW50ZihVU0FHRV9IRUxQX09QVElPTlMoMTYpKTsgLyogY2hhciBvZmZzZXQgdG8gYWxpZ24gb3B0aW9uIGRlc2NyaXB0aW9ucyAqLwotKwlwcmludGYoVVNBR0VfTUFOX1RBSUwoImhhcmRsaW5rKDEpIikpOwotKwlleGl0KEVYSVRfU1VDQ0VTUyk7Ci0rfQotKwotK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKLStzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQyKHNpemVfdCBhLCBzaXplX3QgYikKLSt7Ci0rCXNpemVfdCBzdW0gPSBhICsgYjsKLSsKLSsJaWYgKHN1bSA8IGEpCi0rCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKLSsJcmV0dXJuIHN1bTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDMoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKLSt7Ci0rCXJldHVybiBhZGQyKGFkZDIoYSwgYiksIGMpOwotK30KLSsKLStzdGF0aWMgdm9pZCBncm93c3RyKHN0cnVjdCBoYXJkbGlua19keW5zdHIgKnN0ciwgc2l6ZV90IG5ld2xlbikKLSt7Ci0rCWlmIChuZXdsZW4gPCBzdHItPmFsbG9jKQotKwkJcmV0dXJuOwotKwlzdHItPmJ1ZiA9IHhyZWFsbG9jKHN0ci0+YnVmLCBzdHItPmFsbG9jID0gYWRkMihuZXdsZW4sIDEpKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rCXN0cnVjdCBzdGF0IHN0LCBzdDIsIHN0MzsKLSsJY29uc3Qgc2l6ZV90IG5hbWVsZW4gPSBzdHJsZW4obmFtZSk7Ci0rCi0rCWN0bC0+bm9iamVjdHMrKzsKLSsJaWYgKGxzdGF0KG5hbWUsICZzdCkpCi0rCQlyZXR1cm47Ci0rCi0rCWlmIChzdC5zdF9kZXYgIT0gY3RsLT5kZXYgJiYgIWN0bC0+Zm9yY2UpIHsKLSsJCWlmIChjdGwtPmRldikKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwKLSsJCQkgICAgIF8oIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgotKwkJCSAgICAgICAiKHVzZSAtZiBvcHRpb24gdG8gb3ZlcnJpZGUpLiIpLCBuYW1lKTsKLSsJCWN0bC0+ZGV2ID0gc3Quc3RfZGV2OwotKwl9Ci0rCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0rCQlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkcCA9IHhtYWxsb2MoYWRkMyhzaXplb2YoKmRwKSwgbmFtZWxlbiwgMSkpOwotKwkJbWVtY3B5KGRwLT5uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7Ci0rCQlkcC0+bmV4dCA9IGN0bC0+ZGlyczsKLSsJCWN0bC0+ZGlycyA9IGRwOwotKwotKwl9IGVsc2UgaWYgKFNfSVNSRUcoc3Quc3RfbW9kZSkpIHsKLSsJCWludCBmZCwgaTsKLSsJCXN0cnVjdCBoYXJkbGlua19maWxlICpmcCwgKmZwMjsKLSsJCXN0cnVjdCBoYXJkbGlua19oYXNoICpocDsKLSsJCWNvbnN0IGNoYXIgKm4xLCAqbjI7Ci0rCQl1bnNpZ25lZCBpbnQgYnVmW05CVUZdOwotKwkJaW50IGNrc3Vtc2l6ZSA9IHNpemVvZihidWYpOwotKwkJdW5zaWduZWQgaW50IGNrc3VtOwotKwkJdGltZV90IG10aW1lID0gY3RsLT5jb250ZW50X29ubHkgPyAwIDogc3Quc3RfbXRpbWU7Ci0rCQl1bnNpZ25lZCBpbnQgaHNoID0gaGFzaChzdC5zdF9zaXplLCBtdGltZSk7Ci0rCQlvZmZfdCBmc2l6ZTsKLSsKLSsJCWN0bC0+bnJlZ2ZpbGVzKys7Ci0rCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLSsJCQlwcmludGYoIiVzXG4iLCBuYW1lKTsKLSsKLSsJCWZkID0gb3BlbihuYW1lLCBPX1JET05MWSk7Ci0rCQlpZiAoZmQgPCAwKQotKwkJCXJldHVybjsKLSsKLSsJCWlmICgoc2l6ZV90KXN0LnN0X3NpemUgPCBzaXplb2YoYnVmKSkgewotKwkJCWNrc3Vtc2l6ZSA9IHN0LnN0X3NpemU7Ci0rCQkJbWVtc2V0KCgoY2hhciAqKWJ1ZikgKyBja3N1bXNpemUsIDAsCi0rCQkJICAgICAgIChzaXplb2YoYnVmKSAtIGNrc3Vtc2l6ZSkgJSBzaXplb2YoYnVmWzBdKSk7Ci0rCQl9Ci0rCQlpZiAocmVhZChmZCwgYnVmLCBja3N1bXNpemUpICE9IGNrc3Vtc2l6ZSkgewotKwkJCWNsb3NlKGZkKTsKLSsJCQlyZXR1cm47Ci0rCQl9Ci0rCQlja3N1bXNpemUgPSAoY2tzdW1zaXplICsgc2l6ZW9mKGJ1ZlswXSkgLSAxKSAvIHNpemVvZihidWZbMF0pOwotKwkJZm9yIChpID0gMCwgY2tzdW0gPSAwOyBpIDwgY2tzdW1zaXplOyBpKyspIHsKLSsJCQlpZiAoY2tzdW0gKyBidWZbaV0gPCBja3N1bSkKLSsJCQkJY2tzdW0gKz0gYnVmW2ldICsgMTsKLSsJCQllbHNlCi0rCQkJCWNrc3VtICs9IGJ1ZltpXTsKLSsJCX0KLSsJCWZvciAoaHAgPSBjdGwtPmhwc1toc2hdOyBocDsgaHAgPSBocC0+bmV4dCkgewotKwkJCWlmIChocC0+c2l6ZSA9PSBzdC5zdF9zaXplICYmIGhwLT5tdGltZSA9PSBtdGltZSkKLSsJCQkJYnJlYWs7Ci0rCQl9Ci0rCQlpZiAoIWhwKSB7Ci0rCQkJaHAgPSB4bWFsbG9jKHNpemVvZigqaHApKTsKLSsJCQlocC0+c2l6ZSA9IHN0LnN0X3NpemU7Ci0rCQkJaHAtPm10aW1lID0gbXRpbWU7Ci0rCQkJaHAtPmNoYWluID0gTlVMTDsKLSsJCQlocC0+bmV4dCA9IGN0bC0+aHBzW2hzaF07Ci0rCQkJY3RsLT5ocHNbaHNoXSA9IGhwOwotKwkJfQotKwkJZm9yIChmcCA9IGhwLT5jaGFpbjsgZnA7IGZwID0gZnAtPm5leHQpIHsKLSsJCQlpZiAoZnAtPmNrc3VtID09IGNrc3VtKQotKwkJCQlicmVhazsKLSsJCX0KLSsJCWZvciAoZnAyID0gZnA7IGZwMiAmJiBmcDItPmNrc3VtID09IGNrc3VtOyBmcDIgPSBmcDItPm5leHQpIHsKLSsJCQlpZiAoZnAyLT5pbm8gPT0gc3Quc3RfaW5vICYmIGZwMi0+ZGV2ID09IHN0LnN0X2RldikgewotKwkJCQljbG9zZShmZCk7Ci0rCQkJCXJldHVybjsKLSsJCQl9Ci0rCQl9Ci0rCQlmb3IgKGZwMiA9IGZwOyBmcDIgJiYgZnAyLT5ja3N1bSA9PSBja3N1bTsgZnAyID0gZnAyLT5uZXh0KSB7Ci0rCi0rCQkJaWYgKCFsc3RhdChmcDItPm5hbWUsICZzdDIpICYmIFNfSVNSRUcoc3QyLnN0X21vZGUpICYmCi0rCQkJICAgICFzdGNtcCgmc3QsICZzdDIsIGN0bC0+Y29udGVudF9vbmx5KSAmJgotKwkJCSAgICBzdDIuc3RfaW5vICE9IHN0LnN0X2lubyAmJgotKwkJCSAgICBzdDIuc3RfZGV2ID09IHN0LnN0X2RldikgewotKwotKwkJCQlpbnQgZmQyID0gb3BlbihmcDItPm5hbWUsIE9fUkRPTkxZKTsKLSsJCQkJaWYgKGZkMiA8IDApCi0rCQkJCQljb250aW51ZTsKLSsKLSsJCQkJaWYgKGZzdGF0KGZkMiwgJnN0MikgfHwgIVNfSVNSRUcoc3QyLnN0X21vZGUpCi0rCQkJCSAgICB8fCBzdDIuc3Rfc2l6ZSA9PSAwKSB7Ci0rCQkJCQljbG9zZShmZDIpOwotKwkJCQkJY29udGludWU7Ci0rCQkJCX0KLSsJCQkJY3RsLT5uY29tcCsrOwotKwkJCQlsc2VlayhmZCwgMCwgU0VFS19TRVQpOwotKwotKwkJCQlmb3IgKGZzaXplID0gc3Quc3Rfc2l6ZTsgZnNpemUgPiAwOwotKwkJCQkgICAgIGZzaXplIC09IChvZmZfdClzaXplb2YoY3RsLT5pb2J1ZjEpKSB7Ci0rCQkJCQlzc2l6ZV90IHhzejsKLSsJCQkJCXNzaXplX3QgcnNpemUgPSBmc2l6ZSA+IChzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpID8KLSsJCQkJCQkJKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgOiBmc2l6ZTsKLSsKLSsJCQkJCWlmICgoeHN6ID0gcmVhZChmZCwgY3RsLT5pb2J1ZjEsIHJzaXplKSkgIT0gcnNpemUpCi0rCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKLSsJCQkJCWVsc2UgaWYgKCh4c3ogPSByZWFkKGZkMiwgY3RsLT5pb2J1ZjIsIHJzaXplKSkgIT0gcnNpemUpCi0rCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOwotKwotKwkJCQkJaWYgKHhzeiAhPSByc2l6ZSkgewotKwkJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCQljbG9zZShmZDIpOwotKwkJCQkJCXJldHVybjsKLSsJCQkJCX0KLSsJCQkJCWlmIChtZW1jbXAoY3RsLT5pb2J1ZjEsIGN0bC0+aW9idWYyLCByc2l6ZSkpCi0rCQkJCQkJYnJlYWs7Ci0rCQkJCX0KLSsJCQkJY2xvc2UoZmQyKTsKLSsJCQkJaWYgKGZzaXplID4gMCkKLSsJCQkJCWNvbnRpbnVlOwotKwkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKLSsJCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7Ci0rCQkJCQljbG9zZShmZCk7Ci0rCQkJCQlyZXR1cm47Ci0rCQkJCX0KLSsJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7Ci0rCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7Ci0rCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKLSsJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCXJldHVybjsKLSsJCQkJfQotKwkJCQluMSA9IGZwMi0+bmFtZTsKLSsJCQkJbjIgPSBuYW1lOwotKwotKwkJCQlpZiAoIWN0bC0+bm9fbGluaykgewotKwkJCQkJY29uc3QgY2hhciAqc3VmZml4ID0KLSsJCQkJCSAgICAiLiQkJF9fX2NsZWFuaXRfX18kJCQiOwotKwkJCQkJY29uc3Qgc2l6ZV90IHN1ZmZpeGxlbiA9IHN0cmxlbihzdWZmaXgpOwotKwkJCQkJc2l6ZV90IG4ybGVuID0gc3RybGVuKG4yKTsKLSsJCQkJCXN0cnVjdCBoYXJkbGlua19keW5zdHIgbmFtMiA9IHsgTlVMTCwgMCB9OwotKwotKwkJCQkJZ3Jvd3N0cigmbmFtMiwgYWRkMihuMmxlbiwgc3VmZml4bGVuKSk7Ci0rCQkJCQltZW1jcHkobmFtMi5idWYsIG4yLCBuMmxlbik7Ci0rCQkJCQltZW1jcHkoJm5hbTIuYnVmW24ybGVuXSwgc3VmZml4LAotKwkJCQkJICAgICAgIHN1ZmZpeGxlbiArIDEpOwotKwkJCQkJLyogRmlyc3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmsgdG8gbjEgdW5kZXIgYSBuZXcgbmFtZSAqLwotKwkJCQkJaWYgKGxpbmsobjEsIG5hbTIuYnVmKSkgewotKwkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAotKwkJCQkJCQluMSwgbjIsIG5hbTIuYnVmKTsKLSsJCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSsJCQkJCQljb250aW51ZTsKLSsJCQkJCX0KLSsJCQkJCS8qIFRoZW4gcmVuYW1lIGludG8gcGxhY2Ugb3ZlciB0aGUgZXhpc3RpbmcgbjIgKi8KLSsJCQkJCWlmIChyZW5hbWUobmFtMi5idWYsIG4yKSkgewotKwkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAotKwkJCQkJCQluMSwgbjIsIG4yKTsKLSsJCQkJCQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgdHJ5IHRvIHJlbW92ZSB0aGUgbm93IHJlZHVuZGFudCB0ZW1wb3JhcnkgbGluayAqLwotKwkJCQkJCWlmICh1bmxpbmsobmFtMi5idWYpKQotKwkJCQkJCQl3YXJuKF8oImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOwotKwkJCQkJCWZyZWUobmFtMi5idWYpOwotKwkJCQkJCWNvbnRpbnVlOwotKwkJCQkJfQotKwkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0rCQkJCX0KLSsJCQkJY3RsLT5ubGlua3MrKzsKLSsJCQkJaWYgKHN0My5zdF9ubGluayA+IDEpIHsKLSsJCQkJCS8qIFdlIGFjdHVhbGx5IGRpZCBub3Qgc2F2ZSBhbnl0aGluZyB0aGlzIHRpbWUsIHNpbmNlIHRoZSBsaW5rIHNlY29uZCBhcmd1bWVudAotKwkJCQkJICAgaGFkIHNvbWUgb3RoZXIgbGlua3MgYXMgd2VsbC4gICovCi0rCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLSsJCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzXG4iKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKLSsJCQkJCQkJbjEsIG4yKTsKLSsJCQkJfSBlbHNlIHsKLSsJCQkJCWN0bC0+bnNhdmVkICs9ICgoc3Quc3Rfc2l6ZSArIDQwOTUpIC8gNDA5NikgKiA0MDk2OwotKwkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCi0rCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKLSsJCQkJCQkJbjEsIG4yLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygid291bGQgc2F2ZSIpIDogXygic2F2ZWQiKSksCi0rCQkJCQkJCShpbnRtYXhfdClzdC5zdF9zaXplKTsKLSsJCQkJfQotKwkJCQljbG9zZShmZCk7Ci0rCQkJCXJldHVybjsKLSsJCQl9Ci0rCQl9Ci0rCQlmcDIgPSB4bWFsbG9jKGFkZDMoc2l6ZW9mKCpmcDIpLCBuYW1lbGVuLCAxKSk7Ci0rCQljbG9zZShmZCk7Ci0rCQlmcDItPmlubyA9IHN0LnN0X2lubzsKLSsJCWZwMi0+ZGV2ID0gc3Quc3RfZGV2OwotKwkJZnAyLT5ja3N1bSA9IGNrc3VtOwotKwkJbWVtY3B5KGZwMi0+bmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOwotKwotKwkJaWYgKGZwKSB7Ci0rCQkJZnAyLT5uZXh0ID0gZnAtPm5leHQ7Ci0rCQkJZnAtPm5leHQgPSBmcDI7Ci0rCQl9IGVsc2UgewotKwkJCWZwMi0+bmV4dCA9IGhwLT5jaGFpbjsKLSsJCQlocC0+Y2hhaW4gPSBmcDI7Ci0rCQl9Ci0rCQlyZXR1cm47Ci0rCX0KLSt9Ci0rCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsJaW50IGNoOwotKwlpbnQgaTsKLSsjaWZkZWYgSEFWRV9QQ1JFCi0rCWludCBlcnJvcm51bWJlcjsKLSsJUENSRTJfU0laRSBlcnJvcm9mZnNldDsKLSsJcGNyZTJfY29kZSAqcmUgPSBOVUxMOwotKwlQQ1JFMl9TUFRSIGV4Y2x1ZGVfcGF0dGVybiA9IE5VTEw7Ci0rCXBjcmUyX21hdGNoX2RhdGEgKm1hdGNoX2RhdGEgPSBOVUxMOwotKyNlbmRpZgotKwlzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIG5hbTEgPSB7IE5VTEwsIDAgfTsKLSsJc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsID0gJmdsb2JhbF9jdGw7Ci0rCi0rCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvbmdvcHRzW10gPSB7Ci0rCQl7ICJjb250ZW50IiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICdjJyB9LAotKwkJeyAiZHJ5LXJ1biIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnbicgfSwKLSsJCXsgImV4Y2x1ZGUiLCAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnIH0sCi0rCQl7ICJmb3JjZSIsICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdmJyB9LAotKwkJeyAiaGVscCIsICAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCcgfSwKLSsJCXsgInZlcmJvc2UiLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ3YnIH0sCi0rCQl7ICJ2ZXJzaW9uIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICdWJyB9LAotKwkJeyBOVUxMLCAwLCBOVUxMLCAwIH0sCi0rCX07Ci0rCi0rCXNldGxvY2FsZShMQ19BTEwsICIiKTsKLSsJYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKLSsJdGV4dGRvbWFpbihQQUNLQUdFKTsKLSsJY2xvc2Vfc3Rkb3V0X2F0ZXhpdCgpOwotKwotKwl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImNudmZ4OlZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgewotKwkJc3dpdGNoIChjaCkgewotKwkJY2FzZSAnbic6Ci0rCQkJY3RsLT5ub19saW5rID0gMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgJ3YnOgotKwkJCWN0bC0+dmVyYm9zZSsrOwotKwkJCWJyZWFrOwotKwkJY2FzZSAnYyc6Ci0rCQkJY3RsLT5jb250ZW50X29ubHkgPSAxOwotKwkJCWJyZWFrOwotKwkJY2FzZSAnZic6Ci0rCQkJY3RsLT5mb3JjZSA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICd4JzoKLSsjaWZkZWYgSEFWRV9QQ1JFCi0rCQkJZXhjbHVkZV9wYXR0ZXJuID0gKFBDUkUyX1NQVFIpIG9wdGFyZzsKLSsjZWxzZQotKwkJCWVycngoRVhJVF9GQUlMVVJFLAotKwkJCSAgICAgXygib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKLSsjZW5kaWYKLSsJCQlicmVhazsKLSsJCWNhc2UgJ1YnOgotKwkJCXByaW50X3ZlcnNpb24oRVhJVF9TVUNDRVNTKTsKLSsJCWNhc2UgJ2gnOgotKwkJCXVzYWdlKCk7Ci0rCQlkZWZhdWx0OgotKwkJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKLSsJCX0KLSsJfQotKwotKwlpZiAob3B0aW5kID09IGFyZ2MpIHsKLSsJCXdhcm54KF8oIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7Ci0rCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsKLSsjaWZkZWYgSEFWRV9QQ1JFCi0rCWlmIChleGNsdWRlX3BhdHRlcm4pIHsKLSsJCXJlID0gcGNyZTJfY29tcGlsZShleGNsdWRlX3BhdHRlcm4sIC8qIHRoZSBwYXR0ZXJuICovCi0rCQkJCSAgIFBDUkUyX1pFUk9fVEVSTUlOQVRFRCwgLyogaW5kaWNhdGVzIHBhdHRlcm4gaXMgemVyby10ZXJtaW5hdGUgKi8KLSsJCQkJICAgMCwgLyogZGVmYXVsdCBvcHRpb25zICovCi0rCQkJCSAgICZlcnJvcm51bWJlciwgJmVycm9yb2Zmc2V0LCBOVUxMKTsgLyogdXNlIGRlZmF1bHQgY29tcGlsZSBjb250ZXh0ICovCi0rCQlpZiAoIXJlKSB7Ci0rCQkJUENSRTJfVUNIQVIgYnVmZmVyWzI1Nl07Ci0rCQkJcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2UoZXJyb3JudW1iZXIsIGJ1ZmZlciwKLSsJCQkJCQlzaXplb2YoYnVmZmVyKSk7Ci0rCQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAotKwkJCQkoaW50KWVycm9yb2Zmc2V0LCBidWZmZXIpOwotKwkJfQotKwkJbWF0Y2hfZGF0YSA9IHBjcmUyX21hdGNoX2RhdGFfY3JlYXRlX2Zyb21fcGF0dGVybihyZSwgTlVMTCk7Ci0rCX0KLSsjZW5kaWYKLSsJYXRleGl0KHByaW50X3N1bW1hcnkpOwotKwotKwlmb3IgKGkgPSBvcHRpbmQ7IGkgPCBhcmdjOyBpKyspCi0rCQlwcm9jZXNzX3BhdGgoY3RsLCBhcmd2W2ldKTsKLSsKLSsJd2hpbGUgKGN0bC0+ZGlycykgewotKwkJRElSICpkaDsKLSsJCXN0cnVjdCBkaXJlbnQgKmRpOwotKwkJc3RydWN0IGhhcmRsaW5rX2RpciAqZHAgPSBjdGwtPmRpcnM7Ci0rCQlzaXplX3QgbmFtMWJhc2VsZW4gPSBzdHJsZW4oZHAtPm5hbWUpOwotKwotKwkJY3RsLT5kaXJzID0gZHAtPm5leHQ7Ci0rCQlncm93c3RyKCZuYW0xLCBhZGQyKG5hbTFiYXNlbGVuLCAxKSk7Ci0rCQltZW1jcHkobmFtMS5idWYsIGRwLT5uYW1lLCBuYW0xYmFzZWxlbik7Ci0rCQlmcmVlKGRwKTsKLSsJCW5hbTEuYnVmW25hbTFiYXNlbGVuKytdID0gJy8nOwotKwkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKLSsJCWRoID0gb3BlbmRpcihuYW0xLmJ1Zik7Ci0rCi0rCQlpZiAoZGggPT0gTlVMTCkKLSsJCQljb250aW51ZTsKLSsJCWN0bC0+bmRpcnMrKzsKLSsKLSsJCXdoaWxlICgoZGkgPSByZWFkZGlyKGRoKSkgIT0gTlVMTCkgewotKwkJCWlmICghZGktPmRfbmFtZVswXSkKLSsJCQkJY29udGludWU7Ci0rCQkJaWYgKGRpLT5kX25hbWVbMF0gPT0gJy4nKSB7Ci0rCQkJCWlmICghZGktPmRfbmFtZVsxXSB8fCAhc3RyY21wKGRpLT5kX25hbWUsICIuLiIpKQotKwkJCQkJY29udGludWU7Ci0rCQkJfQotKyNpZmRlZiBIQVZFX1BDUkUKLSsJCQlpZiAocmUgJiYgcGNyZTJfbWF0Y2gocmUsIC8qIGNvbXBpbGVkIHJlZ2V4ICovCi0rCQkJCQkgICAgICAoUENSRTJfU1BUUikgZGktPmRfbmFtZSwgc3RybGVuKGRpLT5kX25hbWUpLCAwLCAvKiBzdGFydCBhdCBvZmZzZXQgMCAqLwotKwkJCQkJICAgICAgMCwgLyogZGVmYXVsdCBvcHRpb25zICovCi0rCQkJCQkgICAgICBtYXRjaF9kYXRhLCAvKiBibG9jayBmb3Igc3RvcmluZyB0aGUgcmVzdWx0ICovCi0rCQkJCQkgICAgICBOVUxMKSAvKiB1c2UgZGVmYXVsdCBtYXRjaCBjb250ZXh0ICovCi0rCQkJICAgID49MCkgewotKwkJCQlpZiAoY3RsLT52ZXJib3NlKSB7Ci0rCQkJCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOwotKwkJCQkJcHJpbnRmKF8oIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7Ci0rCQkJCX0KLSsJCQkJY29udGludWU7Ci0rCQkJfQotKyNlbmRpZgotKwkJCXsKLSsJCQkJc2l6ZV90IHN1YmRpcmxlbjsKLSsJCQkJZ3Jvd3N0cigmbmFtMSwKLSsJCQkJCWFkZDIobmFtMWJhc2VsZW4sIHN1YmRpcmxlbiA9Ci0rCQkJCQkgICAgIHN0cmxlbihkaS0+ZF9uYW1lKSkpOwotKwkJCQltZW1jcHkoJm5hbTEuYnVmW25hbTFiYXNlbGVuXSwgZGktPmRfbmFtZSwKLSsJCQkJICAgICAgIGFkZDIoc3ViZGlybGVuLCAxKSk7Ci0rCQkJfQotKwkJCXByb2Nlc3NfcGF0aChjdGwsIG5hbTEuYnVmKTsKLSsJCX0KLSsJCWNsb3NlZGlyKGRoKTsKLSsJfQotKwotKwlyZXR1cm4gMDsKLSt9Ci0tLS0gYS9sb2NhbGVkZWYvTWFrZWZpbGUuaW4KLSsrKyBiL2xvY2FsZWRlZi9NYWtlZmlsZS5pbgotQEAgLTQwLDYgKzQwLDggQEAgV0FSTkZMQUdTCT0gLVdhbGwgLVduby1mb3JtYXQKLSBGVUxMQ0MJCT0gJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpIFwKLSAJCSAgJChERUZJTkVTKSAkKElOQ0xVREVTKSAkKFdBUk5GTEFHUykKLSAKLStDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUyA9IGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5vCi0rCi0gTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubyBsZC1hZGRyZXNzLm8gbGQtY29sbGF0ZS5vIFwKLSAJCSAgbGQtY3R5cGUubyBsZC1pZGVudGlmaWNhdGlvbi5vIGxkLW1lYXN1cmVtZW50Lm8gXAotIAkJICBsZC1tZXNzYWdlcy5vIGxkLW1vbmV0YXJ5Lm8gbGQtbmFtZS5vIGxkLW51bWVyaWMubyBcCi1AQCAtNTQsMTEgKzU2LDE0IEBAIExPQ0FMRURFRl9PQkpTCT0gY2hhcm1hcC5vIGNoYXJtYXAtZGlyLm8KLSAJCSAgYXNwcmludGYubyBnZXRkZWxpbS5vIGxvY2FsZWRlZl9leHRyYS5vIFwKLSAJCSAgb2JzdGFja19wcmludGYubyB2YXNwcmludGYubwotIAotLWFsbDoJCWxvY2FsZWRlZiQoRVhFRVhUKQotK2FsbDoJCWxvY2FsZWRlZiQoRVhFRVhUKSBjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmskKEVYRUVYVCkKLSAKLSBsb2NhbGVkZWYkKEVYRUVYVCk6ICQoTE9DQUxFREVGX09CSlMpCi0gCQkkKENDKSAtbyAkQCAkKExPQ0FMRURFRl9PQkpTKSAkKExJQlMpCi0gCi0rY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rJChFWEVFWFQpOiAkKENST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTKQotKwkJJChDQykgLW8gJEAgJChDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUykgJChMSUJTKQotKwotIGNsZWFuOgotIAkJcm0gLWYgbG9jYWxlJChFWEVFWFQpICQoTE9DQUxFREVGX09CSlMpCi0gCi1AQCAtNzcsNiArODIsNyBAQCBjbGVhbjoKLSAlLm86ICQoc3JjZGlyKS8lLmMKLSAJCSQoRlVMTENDKSAtYyAtbyAkQCAkPAotIAotK2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKLSBjaGFybWFwLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLmMKLSBjaGFybWFwLWRpci5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotIGxkLWFkZHJlc3MubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2xkLWFkZHJlc3MuYwotLS0tIC9kZXYvbnVsbAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAotQEAgLTAsMCArMSw0MDcgQEAKLSsvKgotKyAqIEZ1bmRhbWVudGFsIEMgZGVmaW5pdGlvbnMuCi0rICovCi0rCi0rI2lmbmRlZiBVVElMX0xJTlVYX0NfSAotKyNkZWZpbmUgVVRJTF9MSU5VWF9DX0gKLSsKLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotKwotKyNpZmRlZiBIQVZFX0VSUl9ICi0rIyBpbmNsdWRlIDxlcnIuaD4KLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gICAgIC8qIGZvciBtYWpvciwgbWlub3IgKi8KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIExPR0lOX05BTUVfTUFYCi0rIyBkZWZpbmUgTE9HSU5fTkFNRV9NQVggMjU2Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBOQU1FX01BWAotKyMgZGVmaW5lIE5BTUVfTUFYIFBBVEhfTUFYCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBfX0dOVUNfUFJFUkVRIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIF9faGFzX2F0dHJpYnV0ZSgpIGFuZAotKyAqIF9faGFzX2ZlYXR1cmUoKS4gVGhlIF9faGFzIG1hY3JvcyBhcmUgc3VwcG9ydGVkIGJ5IGNsYW5nIGFuZCBnY2M+PTUuCi0rICovCi0rI2lmbmRlZiBfX0dOVUNfUFJFUkVRCi0rIyBpZiBkZWZpbmVkIF9fR05VQ19fICYmIGRlZmluZWQgX19HTlVDX01JTk9SX18KLSsjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgXAotKwkoKF9fR05VQ19fIDw8IDE2KSArIF9fR05VQ19NSU5PUl9fID49ICgobWFqKSA8PCAxNikgKyAobWluKSkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgMAotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19HTlVDX18KLSsKLSsvKiAmYVswXSBkZWdyYWRlcyB0byBhIHBvaW50ZXI6IGEgZGlmZmVyZW50IHR5cGUgZnJvbSBhbiBhcnJheSAqLwotKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKSBcCi0rCVVMX0JVSUxEX0JVR19PTl9aRVJPKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyhhKSwgX190eXBlb2ZfXygmYVswXSkpKQotKwotKyMgZGVmaW5lIGlnbm9yZV9yZXN1bHQoeCkgX19leHRlbnNpb25fXyAoeyBcCi0rCV9fdHlwZW9mX18oeCkgX19kdW1teSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgPSAoeCk7ICh2b2lkKSBfX2R1bW15OyBcCi0rfSkKLSsKLSsjZWxzZSAvKiAhX19HTlVDX18gKi8KLSsjIGRlZmluZSBfX211c3RfYmVfYXJyYXkoYSkJMAotKyMgZGVmaW5lIF9fYXR0cmlidXRlX18oX2FyZ18pCi0rIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSAoKHZvaWQpICh4KSkKLSsjZW5kaWYgLyogIV9fR05VQ19fICovCi0rCi0rLyoKLSsgKiBJdCBldmFsdWF0ZXMgdG8gMSBpZiB0aGUgYXR0cmlidXRlL2ZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50Ci0rICogY29tcGlsYXRpb24gdGFyZ2VkLiBGYWxsYmFjayBmb3Igb2xkIGNvbXBpbGVycy4KLSsgKi8KLSsjaWZuZGVmIF9faGFzX2F0dHJpYnV0ZQotKyAgI2RlZmluZSBfX2hhc19hdHRyaWJ1dGUoeCkgMAotKyNlbmRpZgotKwotKyNpZm5kZWYgX19oYXNfZmVhdHVyZQotKyAgI2RlZmluZSBfX2hhc19mZWF0dXJlKHgpIDAKLSsjZW5kaWYKLSsKLSsvKgotKyAqIEZ1bmN0aW9uIGF0dHJpYnV0ZXMKLSsgKi8KLSsjaWZuZGVmIF9fdWxfYWxsb2Nfc2l6ZQotKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKLSsjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpIF9fYXR0cmlidXRlX18oKGFsbG9jX3NpemUocyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9fdWxfYWxsb2Nfc2l6ZShzKQotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9fdWxfY2FsbG9jX3NpemUKLSsjIGlmIChfX2hhc19hdHRyaWJ1dGUoYWxsb2Nfc2l6ZSkgJiYgX19oYXNfYXR0cmlidXRlKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDMpCi0rIyAgZGVmaW5lIF9fdWxfY2FsbG9jX3NpemUobiwgcykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShuLCBzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKQotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWYgX19oYXNfYXR0cmlidXRlKHJldHVybnNfbm9ubnVsbCkgfHwgX19HTlVDX1BSRVJFUSAoNCwgOSkKLSsjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbCBfX2F0dHJpYnV0ZV9fKChyZXR1cm5zX25vbm51bGwpKQotKyNlbHNlCi0rIyBkZWZpbmUgX191bF9yZXR1cm5zX25vbm51bGwKLSsjZW5kaWYKLSsKLSsvKgotKyAqIEZvcmNlIGEgY29tcGlsYXRpb24gZXJyb3IgaWYgY29uZGl0aW9uIGlzIHRydWUsIGJ1dCBhbHNvIHByb2R1Y2UgYQotKyAqIHJlc3VsdCAob2YgdmFsdWUgMCBhbmQgdHlwZSBzaXplX3QpLCBzbyB0aGUgZXhwcmVzc2lvbiBjYW4gYmUgdXNlZAotKyAqIGUuZy4gaW4gYSBzdHJ1Y3R1cmUgaW5pdGlhbGl6ZXIgKG9yIHdoZXJldmVyIGVsc2UgY29tbWEgZXhwcmVzc2lvbnMKLSsgKiBhcmVuJ3QgcGVybWl0dGVkKS4KLSsgKi8KLSsjZGVmaW5lIFVMX0JVSUxEX0JVR19PTl9aRVJPKGUpIF9fZXh0ZW5zaW9uX18gKHNpemVvZihzdHJ1Y3QgeyBpbnQ6LSEhKGUpOyB9KSkKLSsjZGVmaW5lIEJVSUxEX0JVR19PTl9OVUxMKGUpICgodm9pZCAqKXNpemVvZihzdHJ1Y3QgeyBpbnQ6LSEhKGUpOyB9KSkKLSsKLSsjaWZuZGVmIEFSUkFZX1NJWkUKLSsjIGRlZmluZSBBUlJBWV9TSVpFKGFycikgKHNpemVvZihhcnIpIC8gc2l6ZW9mKChhcnIpWzBdKSArIF9fbXVzdF9iZV9hcnJheShhcnIpKQotKyNlbmRpZgotKwotKyNpZm5kZWYgUEFUSF9NQVgKLSsjIGRlZmluZSBQQVRIX01BWCA0MDk2Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBUUlVFCi0rIyBkZWZpbmUgVFJVRSAxCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBGQUxTRQotKyMgZGVmaW5lIEZBTFNFIDAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIG1pbgotKyMgZGVmaW5lIG1pbih4LCB5KSBfX2V4dGVuc2lvbl9fICh7CQlcCi0rCV9fdHlwZW9mX18oeCkgX21pbjEgPSAoeCk7CQlcCi0rCV9fdHlwZW9mX18oeSkgX21pbjIgPSAoeSk7CQlcCi0rCSh2b2lkKSAoJl9taW4xID09ICZfbWluMik7CQlcCi0rCV9taW4xIDwgX21pbjIgPyBfbWluMSA6IF9taW4yOyB9KQotKyNlbmRpZgotKwotKyNpZm5kZWYgbWF4Ci0rIyBkZWZpbmUgbWF4KHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKLSsJX190eXBlb2ZfXyh4KSBfbWF4MSA9ICh4KTsJCVwKLSsJX190eXBlb2ZfXyh5KSBfbWF4MiA9ICh5KTsJCVwKLSsJKHZvaWQpICgmX21heDEgPT0gJl9tYXgyKTsJCVwKLSsJX21heDEgPiBfbWF4MiA/IF9tYXgxIDogX21heDI7IH0pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBjbXBfbnVtYmVycwotKyMgZGVmaW5lIGNtcF9udW1iZXJzKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJXAotKwlfX3R5cGVvZl9fKHgpIF9hID0gKHgpOwkJCVwKLSsJX190eXBlb2ZfXyh5KSBfYiA9ICh5KTsJCQlcCi0rCSh2b2lkKSAoJl9hID09ICZfYik7CQkJXAotKwlfYSA9PSBfYiA/IDAgOiBfYSA+IF9iID8gMSA6IC0xOyB9KQotKyNlbmRpZgotKwotKyNpZm5kZWYgb2Zmc2V0b2YKLSsjZGVmaW5lIG9mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQotKyNlbmRpZgotKwotKy8qCi0rICogY29udGFpbmVyX29mIC0gY2FzdCBhIG1lbWJlciBvZiBhIHN0cnVjdHVyZSBvdXQgdG8gdGhlIGNvbnRhaW5pbmcgc3RydWN0dXJlCi0rICogQHB0cjoJdGhlIHBvaW50ZXIgdG8gdGhlIG1lbWJlci4KLSsgKiBAdHlwZToJdGhlIHR5cGUgb2YgdGhlIGNvbnRhaW5lciBzdHJ1Y3QgdGhpcyBpcyBlbWJlZGRlZCBpbi4KLSsgKiBAbWVtYmVyOgl0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHdpdGhpbiB0aGUgc3RydWN0LgotKyAqLwotKyNpZm5kZWYgY29udGFpbmVyX29mCi0rI2RlZmluZSBjb250YWluZXJfb2YocHRyLCB0eXBlLCBtZW1iZXIpIF9fZXh0ZW5zaW9uX18gKHsJXAotKwljb25zdCBfX3R5cGVvZl9fKCAoKHR5cGUgKikwKS0+bWVtYmVyICkgKl9fbXB0ciA9IChwdHIpOyBcCi0rCSh0eXBlICopKCAoY2hhciAqKV9fbXB0ciAtIG9mZnNldG9mKHR5cGUsbWVtYmVyKSApO30pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX1BST0dSQU1fSU5WT0NBVElPTl9TSE9SVF9OQU1FCi0rIyBpZmRlZiBIQVZFX19fUFJPR05BTUUKLStleHRlcm4gY2hhciAqX19wcm9nbmFtZTsKLSsjICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgX19wcm9nbmFtZQotKyMgZWxzZQotKyMgIGlmZGVmIEhBVkVfR0VURVhFQ05BTUUKLSsjICAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIFwKLSsJCXByb2dfaW52X3NoX25tX2Zyb21fZmlsZShnZXRleGVjbmFtZSgpLCAwKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIFwKLSsJCXByb2dfaW52X3NoX25tX2Zyb21fZmlsZShfX0ZJTEVfXywgMSkKLSsjICBlbmRpZgotK3N0YXRpYyBjaGFyIHByb2dfaW52X3NoX25tX2J1ZlsyNTZdOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqCi0rcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGNoYXIgKmYsIGNoYXIgc3RyaXBleHQpCi0rewotKwljaGFyICp0OwotKwotKwlpZiAoKHQgPSBzdHJyY2hyKGYsICcvJykpICE9IE5VTEwpCi0rCQl0Kys7Ci0rCWVsc2UKLSsJCXQgPSBmOwotKwotKwlzdHJuY3B5KHByb2dfaW52X3NoX25tX2J1ZiwgdCwgc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxKTsKLSsJcHJvZ19pbnZfc2hfbm1fYnVmW3NpemVvZihwcm9nX2ludl9zaF9ubV9idWYpIC0gMV0gPSAnXDAnOwotKwotKwlpZiAoc3RyaXBleHQgJiYgKHQgPSBzdHJyY2hyKHByb2dfaW52X3NoX25tX2J1ZiwgJy4nKSkgIT0gTlVMTCkKLSsJCSp0ID0gJ1wwJzsKLSsKLSsJcmV0dXJuIHByb2dfaW52X3NoX25tX2J1ZjsKLSt9Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKwotKyNpZm5kZWYgSEFWRV9FUlJfSAotK3N0YXRpYyBpbmxpbmUgdm9pZAotK2Vycm1zZyhjaGFyIGRvZXhpdCwgaW50IGV4Y29kZSwgY2hhciBhZGRlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJZnByaW50ZihzdGRlcnIsICIlczogIiwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwotKwlpZiAoZm10ICE9IE5VTEwpIHsKLSsJCXZhX2xpc3QgYXJncDsKLSsJCXZhX3N0YXJ0KGFyZ3AsIGZtdCk7Ci0rCQl2ZnByaW50ZihzdGRlcnIsIGZtdCwgYXJncCk7Ci0rCQl2YV9lbmQoYXJncCk7Ci0rCQlpZiAoYWRkZXJyKQotKwkJCWZwcmludGYoc3RkZXJyLCAiOiAiKTsKLSsJfQotKwlpZiAoYWRkZXJyKQotKwkJZnByaW50ZihzdGRlcnIsICIlbSIpOwotKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0rCWlmIChkb2V4aXQpCi0rCQlleGl0KGV4Y29kZSk7Ci0rfQotKwotKyNpZm5kZWYgSEFWRV9FUlIKLSsjIGRlZmluZSBlcnIoRSwgRk1ULi4uKSBlcnJtc2coMSwgRSwgMSwgRk1UKQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9FUlJYCi0rIyBkZWZpbmUgZXJyeChFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAwLCBGTVQpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX1dBUk4KLSsjIGRlZmluZSB3YXJuKEZNVC4uLikgZXJybXNnKDAsIDAsIDEsIEZNVCkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfV0FSTlgKLSsjIGRlZmluZSB3YXJueChGTVQuLi4pIGVycm1zZygwLCAwLCAwLCBGTVQpCi0rI2VuZGlmCi0rI2VuZGlmIC8qICFIQVZFX0VSUl9IICovCi0rCi0rCi0rLyogRG9uJ3QgdXNlIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCAnI2luY2x1ZGUgIm5scy5oIicgaW4gYy5oCi0rICovCi0rI2RlZmluZSBlcnJ0cnloZWxwKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAotKwlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKLSsJCQlwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7IFwKLSsJZXhpdChldmFsKTsgXAotK30pCi0rCi0rLyogQWZ0ZXIgZmFpbGVkIGV4ZWN2cCgpICovCi0rI2RlZmluZSBFWF9FWEVDX0ZBSUxFRAkJMTI2CS8qIFByb2dyYW0gbG9jYXRlZCwgYnV0IG5vdCB1c2FibGUuICovCi0rI2RlZmluZSBFWF9FWEVDX0VOT0VOVAkJMTI3CS8qIENvdWxkIG5vdCBmaW5kIHByb2dyYW0gdG8gZXhlYy4gICovCi0rI2RlZmluZSBlcnJleGVjKG5hbWUpCWVycihlcnJubyA9PSBFTk9FTlQgPyBFWF9FWEVDX0VOT0VOVCA6IEVYX0VYRUNfRkFJTEVELCBcCi0rCQkJXygiZmFpbGVkIHRvIGV4ZWN1dGUgJXMiKSwgbmFtZSkKLSsKLSsKLStzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgaW50IGlzX3Bvd2VyX29mXzIodW5zaWduZWQgbG9uZyBudW0pCi0rewotKwlyZXR1cm4gKG51bSAhPSAwICYmICgobnVtICYgKG51bSAtIDEpKSA9PSAwKSk7Ci0rfQotKwotKyNpZm5kZWYgSEFWRV9MT0ZGX1QKLSt0eXBlZGVmIGludDY0X3QgbG9mZl90OwotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZChIQVZFX0RJUkZEKSAmJiAoIWRlZmluZWQoSEFWRV9ERUNMX0RJUkZEKSB8fCBIQVZFX0RFQ0xfRElSRkQgPT0gMCkgJiYgZGVmaW5lZChIQVZFX0RJUl9ERF9GRCkKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGRpcmVudC5oPgotK3N0YXRpYyBpbmxpbmUgaW50IGRpcmZkKERJUiAqZCkKLSt7Ci0rCXJldHVybiBkLT5kZF9mZDsKLSt9Ci0rI2VuZGlmCi0rCi0rLyoKLSsgKiBGYWxsYmFjayBkZWZpbmVzIGZvciBvbGQgdmVyc2lvbnMgb2YgZ2xpYmMKLSsgKi8KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsKLSsjaWZkZWYgT19DTE9FWEVDCi0rI2RlZmluZSBVTF9DTE9FWEVDU1RSCSJlIgotKyNlbHNlCi0rI2RlZmluZSBVTF9DTE9FWEVDU1RSCSIiCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBPX0NMT0VYRUMKLSsjZGVmaW5lIE9fQ0xPRVhFQyAwCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fRnJlZUJTRF9rZXJuZWxfXwotKyNpZm5kZWYgRl9EVVBGRF9DTE9FWEVDCi0rI2RlZmluZSBGX0RVUEZEX0NMT0VYRUMJMTcJLyogTGlrZSBGX0RVUEZELCBidXQgRkRfQ0xPRVhFQyBpcyBzZXQgKi8KLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSsKLSsjaWZuZGVmIEFJX0FERFJDT05GSUcKLSsjZGVmaW5lIEFJX0FERFJDT05GSUcgMHgwMDIwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBJVVRGOAotKyNkZWZpbmUgSVVURjggMDA0MDAwMAotKyNlbmRpZgotKwotKy8qCi0rICogTUFYSE9TVE5BTUVMRU4gcmVwbGFjZW1lbnQKLSsgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdCBnZXRfaG9zdG5hbWVfbWF4KHZvaWQpCi0rewotKwlsb25nIGxlbiA9IHN5c2NvbmYoX1NDX0hPU1RfTkFNRV9NQVgpOwotKwotKwlpZiAoMCA8IGxlbikKLSsJCXJldHVybiBsZW47Ci0rCi0rI2lmZGVmIE1BWEhPU1ROQU1FTEVOCi0rCXJldHVybiBNQVhIT1NUTkFNRUxFTjsKLSsjZWxpZiBIT1NUX05BTUVfTUFYCi0rCXJldHVybiBIT1NUX05BTUVfTUFYOwotKyNlbmRpZgotKwlyZXR1cm4gNjQ7Ci0rfQotKwotKwotKy8qCi0rICogQ29uc3RhbnQgc3RyaW5ncyBmb3IgdXNhZ2UoKSBmdW5jdGlvbnMuIEZvciBtb3JlIGluZm8gc2VlCi0rICogRG9jdW1lbnRhdGlvbi97aG93dG8tdXNhZ2UtZnVuY3Rpb24udHh0LGJvaWxlcnBsYXRlLmN9Ci0rICovCi0rI2RlZmluZSBVU0FHRV9IRUFERVIgICAgICgiXG5Vc2FnZTpcbiIpCi0rI2RlZmluZSBVU0FHRV9PUFRJT05TICAgICgiXG5PcHRpb25zOlxuIikKLSsjZGVmaW5lIFVTQUdFX0ZVTkNUSU9OUyAgKCJcbkZ1bmN0aW9uczpcbiIpCi0rI2RlZmluZSBVU0FHRV9DT01NQU5EUyAgICgiXG5Db21tYW5kczpcbiIpCi0rI2RlZmluZSBVU0FHRV9DT0xVTU5TICAgICgiXG5BdmFpbGFibGUgb3V0cHV0IGNvbHVtbnM6XG4iKQotKyNkZWZpbmUgVVNBR0VfU0VQQVJBVE9SICAgICJcbiIKLSsKLSsjZGVmaW5lIFVTQUdFX09QVFNUUl9IRUxQICAgICAoImRpc3BsYXkgdGhpcyBoZWxwIikKLSsjZGVmaW5lIFVTQUdFX09QVFNUUl9WRVJTSU9OICAoImRpc3BsYXkgdmVyc2lvbiIpCi0rCi0rI2RlZmluZSBVU0FHRV9IRUxQX09QVElPTlMobWFyZ19kc2MpIFwKLSsJCSIlLSIgI21hcmdfZHNjICJzJXNcbiIgXAotKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCi0rCQksICIgLWgsIC0taGVscCIsICAgIFVTQUdFX09QVFNUUl9IRUxQIFwKLSsJCSwgIiAtViwgLS12ZXJzaW9uIiwgVVNBR0VfT1BUU1RSX1ZFUlNJT04KLSsKLSsjZGVmaW5lIFVTQUdFX01BTl9UQUlMKF9tYW4pICAgKCJcbkZvciBtb3JlIGRldGFpbHMgc2VlICVzLlxuIiksIF9tYW4KLSsKLSsjZGVmaW5lIFVUSUxfTElOVVhfVkVSU0lPTiAoIiVzIGZyb20gJXNcbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSwgUEFDS0FHRV9TVFJJTkcKLSsKLSsjZGVmaW5lIHByaW50X3ZlcnNpb24oZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCi0rCQlwcmludGYoVVRJTF9MSU5VWF9WRVJTSU9OKTsgXAotKwkJZXhpdChldmFsKTsgXAotK30pCi0rCi0rLyoKLSsgKiBzY2FuZiBtb2RpZmllcnMgZm9yICJzdHJpbmdzIGFsbG9jYXRpb24iCi0rICovCi0rI2lmZGVmIEhBVkVfU0NBTkZfTVNfTU9ESUZJRVIKLSsjZGVmaW5lIFVMX1NDTnNBCSIlbXMiCi0rI2VsaWYgZGVmaW5lZChIQVZFX1NDQU5GX0FTX01PRElGSUVSKQotKyNkZWZpbmUgVUxfU0NOc0EJIiVhcyIKLSsjZW5kaWYKLSsKLSsvKgotKyAqIHNlZWsgc3R1ZmYKLSsgKi8KLSsjaWZuZGVmIFNFRUtfREFUQQotKyMgZGVmaW5lIFNFRUtfREFUQQkzCi0rI2VuZGlmCi0rI2lmbmRlZiBTRUVLX0hPTEUKLSsjIGRlZmluZSBTRUVLX0hPTEUJNAotKyNlbmRpZgotKwotKwotKy8qCi0rICogTWFjcm9zIHRvIGNvbnZlcnQgI2RlZmluZSdpdGlvbnMgdG8gc3RyaW5ncywgZm9yIGV4YW1wbGUKLSsgKiAjZGVmaW5lIFhZWFhZIDQyCi0rICogcHJpbnRmICgiJXM9JXNcbiIsIHN0cmluZ2lmeShYWVhYWSksIHN0cmluZ2lmeV92YWx1ZShYWVhYWSkpOwotKyAqLwotKyNkZWZpbmUgc3RyaW5naWZ5X3ZhbHVlKHMpIHN0cmluZ2lmeShzKQotKyNkZWZpbmUgc3RyaW5naWZ5KHMpICNzCi0rCi0rLyoKLSsgKiBVTF9BU0FOX0JMQUNLTElTVCBpcyBhIG1hY3JvIHRvIHRlbGwgQWRkcmVzc1Nhbml0aXplciAoYSBjb21waWxlLXRpbWUKLSsgKiBpbnN0cnVtZW50YXRpb24gc2hpcHBlZCB3aXRoIENsYW5nIGFuZCBHQ0MpIHRvIG5vdCBpbnN0cnVtZW50IHRoZQotKyAqIGFubm90YXRlZCBmdW5jdGlvbi4gIEZ1cnRoZXJtb3JlLCBpdCB3aWxsIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20KLSsgKiBpbmxpbmluZyB0aGUgZnVuY3Rpb24gYmVjYXVzZSBpbmxpbmluZyBjdXJyZW50bHkgYnJlYWtzIHRoZSBibGFja2xpc3RpbmcKLSsgKiBtZWNoYW5pc20gb2YgQWRkcmVzc1Nhbml0aXplci4KLSsgKi8KLSsjaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikgJiYgX19oYXNfYXR0cmlidXRlKG5vX3Nhbml0aXplX21lbW9yeSkgJiYgX19oYXNfYXR0cmlidXRlKG5vX3Nhbml0aXplX2FkZHJlc3MpCi0rIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9tZW1vcnkpKSBfX2F0dHJpYnV0ZV9fKChub19zYW5pdGl6ZV9hZGRyZXNzKSkKLSsjZWxzZQotKyMgZGVmaW5lIFVMX0FTQU5fQkxBQ0tMSVNUCS8qIG5vdGhpbmcgKi8KLSsjZW5kaWYKLSsKLSsvKgotKyAqIE5vdGUgdGhhdCBzeXNjb25mKF9TQ19HRVRQV19SX1NJWkVfTUFYKSByZXR1cm5zICppbml0aWFsKiBzdWdnZXN0ZWQgc2l6ZSBmb3IKLSsgKiBwd2QgYnVmZmVyIGFuZCBpbiBzb21lIGNhc2VzIGl0IGlzIG5vdCBsYXJnZSBlbm91Z2guIFNlZSBQT1NJWCBhbmQKLSsgKiBnZXRwd25hbV9yIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuCi0rICovCi0rI2RlZmluZSBVTF9HRVRQV19CVUZTSVoJKDE2ICogMTAyNCkKLSsKLSsvKgotKyAqIERhcndpbiBvciBvdGhlciBCU0RzIG1heSBvbmx5IGhhdmUgTUFQX0FOT04uIFRvIGdldCBpdCBvbiBEYXJ3aW4gd2UgbXVzdAotKyAqIGRlZmluZSBfREFSV0lOX0NfU09VUkNFIGJlZm9yZSBpbmNsdWRpbmcgc3lzL21tYW4uaC4gV2UgZG8gdGhpcyBpbiBjb25maWcuaC4KLSsgKi8KLSsjaWYgIWRlZmluZWQgTUFQX0FOT05ZTU9VUyAmJiBkZWZpbmVkIE1BUF9BTk9OCi0rIyBkZWZpbmUgTUFQX0FOT05ZTU9VUyAgKE1BUF9BTk9OKQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBVVElMX0xJTlVYX0NfSCAqLwotLS0tIC9kZXYvbnVsbAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oCi1AQCAtMCwwICsxLDEyOSBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDEwIERhdmlkbG9ociBCdWVzbyA8ZGF2ZUBnbnUub3JnPgotKyAqCi0rICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKLSsgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rICoKLSsgKiBHZW5lcmFsIG1lbW9yeSBhbGxvY2F0aW9uIHdyYXBwZXJzIGZvciBtYWxsb2MsIHJlYWxsb2MsIGNhbGxvYyBhbmQgc3RyZHVwCi0rICovCi0rCi0rI2lmbmRlZiBVVElMX0xJTlVYX1hBTExPQ19ICi0rI2RlZmluZSBVVElMX0xJTlVYX1hBTExPQ19ICi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaW5jbHVkZSAiYy5oIgotKwotKyNpZm5kZWYgWEFMTE9DX0VYSVRfQ09ERQotKyMgZGVmaW5lIFhBTExPQ19FWElUX0NPREUgRVhJVF9GQUlMVVJFCi0rI2VuZGlmCi0rCi0rc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCi0rX19lcnJfb29tKGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lKQotK3sKLSsJZXJyKFhBTExPQ19FWElUX0NPREUsICIlczogJXU6IGNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkiLCBmaWxlLCBsaW5lKTsKLSt9Ci0rCi0rI2RlZmluZSBlcnJfb29tKCkJX19lcnJfb29tKF9fRklMRV9fLCBfX0xJTkVfXykKLSsKLStzdGF0aWMgaW5saW5lIF9fdWxfYWxsb2Nfc2l6ZSgxKSBfX3VsX3JldHVybnNfbm9ubnVsbAotK3ZvaWQgKnhtYWxsb2MoY29uc3Qgc2l6ZV90IHNpemUpCi0rewotKyAgICAgICAgdm9pZCAqcmV0ID0gbWFsbG9jKHNpemUpOwotKwotKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSkKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIF9fdWxfYWxsb2Nfc2l6ZSgyKSBfX3VsX3JldHVybnNfbm9ubnVsbAotK3ZvaWQgKnhyZWFsbG9jKHZvaWQgKnB0ciwgY29uc3Qgc2l6ZV90IHNpemUpCi0rewotKyAgICAgICAgdm9pZCAqcmV0ID0gcmVhbGxvYyhwdHIsIHNpemUpOwotKwotKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSkKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIF9fdWxfY2FsbG9jX3NpemUoMSwgMikgX191bF9yZXR1cm5zX25vbm51bGwKLSt2b2lkICp4Y2FsbG9jKGNvbnN0IHNpemVfdCBuZWxlbXMsIGNvbnN0IHNpemVfdCBzaXplKQotK3sKLSsgICAgICAgIHZvaWQgKnJldCA9IGNhbGxvYyhuZWxlbXMsIHNpemUpOwotKwotKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSAmJiBuZWxlbXMpCi0rICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBjaGFyIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rKnhzdHJkdXAoY29uc3QgY2hhciAqc3RyKQotK3sKLSsgICAgICAgIGNoYXIgKnJldDsKLSsKLSsgICAgICAgIGlmICghc3RyKQotKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgICAgIHJldCA9IHN0cmR1cChzdHIpOwotKwotKyAgICAgICAgaWYgKCFyZXQpCi0rICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGR1cGxpY2F0ZSBzdHJpbmciKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIF9fdWxfcmV0dXJuc19ub25udWxsCi0reHN0cm5kdXAoY29uc3QgY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICBjaGFyICpyZXQ7Ci0rCi0rICAgICAgICBpZiAoIXN0cikKLSsgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgICAgICByZXQgPSBzdHJuZHVwKHN0ciwgc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCkKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgZHVwbGljYXRlIHN0cmluZyIpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rCi0rc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCi0rICAgIHhhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKwlpbnQgcmV0OwotKwl2YV9saXN0IGFyZ3M7Ci0rCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7Ci0rCXJldCA9IHZhc3ByaW50ZigmKCpzdHJwKSwgZm10LCBhcmdzKTsKLSsJdmFfZW5kKGFyZ3MpOwotKwlpZiAocmV0IDwgMCkKLSsJCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlIHN0cmluZyIpOwotKwlyZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludCAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCi0reHZhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQotK3sKLSsJaW50IHJldCA9IHZhc3ByaW50ZigmKCpzdHJwKSwgZm10LCBhcCk7Ci0rCWlmIChyZXQgPCAwKQotKwkJZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgc3RyaW5nIik7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotKwotK3N0YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHhnZXRob3N0bmFtZSh2b2lkKQotK3sKLSsJY2hhciAqbmFtZTsKLSsJc2l6ZV90IHN6ID0gZ2V0X2hvc3RuYW1lX21heCgpICsgMTsKLSsKLSsJbmFtZSA9IHhtYWxsb2Moc2l6ZW9mKGNoYXIpICogc3opOwotKwotKwlpZiAoZ2V0aG9zdG5hbWUobmFtZSwgc3opICE9IDApIHsKLSsJCWZyZWUobmFtZSk7Ci0rCQlyZXR1cm4gTlVMTDsKLSsJfQotKwluYW1lW3N6IC0gMV0gPSAnXDAnOwotKwlyZXR1cm4gbmFtZTsKLSt9Ci0rCi0rI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hbGxvdy1jb21waWxlLXNlcGFyYXRlLWZyb20tdXRpbC1saW51eC1oYXJkbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0OGViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgCi0gbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIHwgICA3OSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCi1AQCAtMjAsNiArMjAsOCBAQAotICAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0gICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSAgKi8KLSsKLSsjdW5kZWYgSEFWRV9QQ1JFCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci1AQCAtMzgsOCArNDAsOCBAQAotIAotICNpbmNsdWRlICJjLmgiCi0gI2luY2x1ZGUgInhhbGxvYy5oIgotLSNpbmNsdWRlICJubHMuaCIKLS0jaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKLSsvLyNpbmNsdWRlICJubHMuaCIKLSsvLyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgotIAotICNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KLSAjZGVmaW5lIE5CVUYgICAgNjQKLUBAIC0xMjQsMzMgKzEyNiwzMyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCi0gCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQotIAkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKLSAKLS0JcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7Ci0tCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOwotLQlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7Ci0tCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOwotKwlwcmludGYoKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOwotKwlwcmludGYoKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOwotKwlwcmludGYoKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKLSsJcHJpbnRmKCgiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKLSAJcHJpbnRmKCAgIiVzJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPwotLQkgICAgICAgXygiV291bGQgbGluazogICAgIikgOgotLQkgICAgICAgXygiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7Ci0rCSAgICAgICAoIldvdWxkIGxpbms6ICAgICIpIDoKLSsJICAgICAgICgiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7Ci0gCXByaW50ZiggICIlcyAlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0tCSAgICAgICBfKCJXb3VsZCBzYXZlOiAgICIpIDoKLS0JICAgICAgIF8oIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7Ci0rCSAgICAgICAoIldvdWxkIHNhdmU6ICAgIikgOgotKwkgICAgICAgKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQotIHsKLSAJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOwotLQlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0rCXByaW50ZigoIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwotIAotIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0tCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7Ci0rCXB1dHMoKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKLSAKLSAJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKLS0JcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOwotLQlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7Ci0tCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKLS0JcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7Ci0tCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOwotLQlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKLSsJcHV0cygoIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7Ci0rCXB1dHMoKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOwotKwlwdXRzKCgiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKLSsJcHV0cygoIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKLSsJcHV0cygoIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKLSsJcHV0cygoIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKLSAKLSAJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOwotIAlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KLUBAIC0xNjQsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZQotIAlzaXplX3Qgc3VtID0gYSArIGI7Ci0gCi0gCWlmIChzdW0gPCBhKQotLQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oImludGVnZXIgb3ZlcmZsb3ciKSk7Ci0rCQllcnJ4KEVYSVRfRkFJTFVSRSwgKCJpbnRlZ2VyIG92ZXJmbG93IikpOwotIAlyZXR1cm4gc3VtOwotIH0KLSAKLUBAIC0xOTMsNyArMTk1LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7Ci0gCQlpZiAoY3RsLT5kZXYpCi0gCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0tCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKLSsJCQkgICAgICgiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCi0gCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOwotIAkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7Ci0gCX0KLUBAIC0yODcsOSArMjg5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAkJCQkJCQkoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA6IGZzaXplOwotIAotIAkJCQkJaWYgKCh4c3ogPSByZWFkKGZkLCBjdGwtPmlvYnVmMSwgcnNpemUpKSAhPSByc2l6ZSkKLS0JCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIG5hbWUpOwotKwkJCQkJCXdhcm4oKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKLSAJCQkJCWVsc2UgaWYgKCh4c3ogPSByZWFkKGZkMiwgY3RsLT5pb2J1ZjIsIHJzaXplKSkgIT0gcnNpemUpCi0tCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOwotKwkJCQkJCXdhcm4oKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOwotIAotIAkJCQkJaWYgKHhzeiAhPSByc2l6ZSkgewotIAkJCQkJCWNsb3NlKGZkKTsKLUBAIC0zMDMsMTMgKzMwNSwxMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCWlmIChmc2l6ZSA+IDApCi0gCQkJCQljb250aW51ZTsKLSAJCQkJaWYgKGxzdGF0KG5hbWUsICZzdDMpKSB7Ci0tCQkJCQl3YXJuKF8oImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOwotKwkJCQkJd2FybigoImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOwotIAkJCQkJY2xvc2UoZmQpOwotIAkJCQkJcmV0dXJuOwotIAkJCQl9Ci0gCQkJCXN0My5zdF9hdGltZSA9IHN0LnN0X2F0aW1lOwotIAkJCQlpZiAoc3RjbXAoJnN0LCAmc3QzLCAwKSkgewotLQkJCQkJd2FybngoXygiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7Ci0rCQkJCQl3YXJueCgoImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOwotIAkJCQkJY2xvc2UoZmQpOwotIAkJCQkJcmV0dXJuOwotIAkJCQl9Ci1AQCAtMzI5LDE4ICszMzEsMTggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAkJCQkJICAgICAgIHN1ZmZpeGxlbiArIDEpOwotIAkJCQkJLyogRmlyc3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmsgdG8gbjEgdW5kZXIgYSBuZXcgbmFtZSAqLwotIAkJCQkJaWYgKGxpbmsobjEsIG5hbTIuYnVmKSkgewotLQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAotKwkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCi0gCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOwotIAkJCQkJCWZyZWUobmFtMi5idWYpOwotIAkJCQkJCWNvbnRpbnVlOwotIAkJCQkJfQotIAkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLwotIAkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7Ci0tCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCi0rCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKLSAJCQkJCQkJbjEsIG4yLCBuMik7Ci0gCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KLSAJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKLS0JCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKLSsJCQkJCQkJd2FybigoImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOwotIAkJCQkJCWZyZWUobmFtMi5idWYpOwotIAkJCQkJCWNvbnRpbnVlOwotIAkJCQkJfQotQEAgLTM1MSwxNiArMzUzLDE2IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJCQkJCS8qIFdlIGFjdHVhbGx5IGRpZCBub3Qgc2F2ZSBhbnl0aGluZyB0aGlzIHRpbWUsIHNpbmNlIHRoZSBsaW5rIHNlY29uZCBhcmd1bWVudAotIAkJCQkJICAgaGFkIHNvbWUgb3RoZXIgbGlua3MgYXMgd2VsbC4gICovCi0gCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLS0JCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzXG4iKSwKLS0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKLSsJCQkJCQlwcmludGYoKCIgJXMgJXMgdG8gJXNcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJXb3VsZCBsaW5rIikgOiAoIkxpbmtlZCIpKSwKLSAJCQkJCQkJbjEsIG4yKTsKLSAJCQkJfSBlbHNlIHsKLSAJCQkJCWN0bC0+bnNhdmVkICs9ICgoc3Quc3Rfc2l6ZSArIDQwOTUpIC8gNDA5NikgKiA0MDk2OwotIAkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCi0tCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKLS0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKLSsJCQkJCQlwcmludGYoKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIldvdWxkIGxpbmsiKSA6ICgiTGlua2VkIikpLAotIAkJCQkJCQluMSwgbjIsCi0tCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJ3b3VsZCBzYXZlIikgOiBfKCJzYXZlZCIpKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgid291bGQgc2F2ZSIpIDogKCJzYXZlZCIpKSwKLSAJCQkJCQkJKGludG1heF90KXN0LnN0X3NpemUpOwotIAkJCQl9Ci0gCQkJCWNsb3NlKGZkKTsKLUBAIC00MTAsMTEgKzQxMiw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXsgTlVMTCwgMCwgTlVMTCwgMCB9LAotIAl9OwotIAotLQlzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0tCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7Ci0tCXRleHRkb21haW4oUEFDS0FHRSk7Ci0tCWNsb3NlX3N0ZG91dF9hdGV4aXQoKTsKLS0KLSAJd2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJjbnZmeDpWaCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpIHsKLSAJCXN3aXRjaCAoY2gpIHsKLSAJCWNhc2UgJ24nOgotQEAgLTQzNCw3ICs0MzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJZXhjbHVkZV9wYXR0ZXJuID0gKFBDUkUyX1NQVFIpIG9wdGFyZzsKLSAjZWxzZQotIAkJCWVycngoRVhJVF9GQUlMVVJFLAotLQkJCSAgICAgXygib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKLSsJCQkgICAgICgib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKLSAjZW5kaWYKLSAJCQlicmVhazsKLSAJCWNhc2UgJ1YnOgotQEAgLTQ0Nyw3ICs0NDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCX0KLSAKLSAJaWYgKG9wdGluZCA9PSBhcmdjKSB7Ci0tCQl3YXJueChfKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOwotKwkJd2FybngoKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOwotIAkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOwotIAl9Ci0gCi1AQCAtNDYxLDcgKzQ1OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlQQ1JFMl9VQ0hBUiBidWZmZXJbMjU2XTsKLSAJCQlwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShlcnJvcm51bWJlciwgYnVmZmVyLAotIAkJCQkJCXNpemVvZihidWZmZXIpKTsKLS0JCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCi0rCQkJZXJyeChFWElUX0ZBSUxVUkUsICgicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCi0gCQkJCShpbnQpZXJyb3JvZmZzZXQsIGJ1ZmZlcik7Ci0gCQl9Ci0gCQltYXRjaF9kYXRhID0gcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKHJlLCBOVUxMKTsKLUBAIC01MDYsNyArNTAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCSAgICA+PTApIHsKLSAJCQkJaWYgKGN0bC0+dmVyYm9zZSkgewotIAkJCQkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKLS0JCQkJCXByaW50ZihfKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOwotKwkJCQkJcHJpbnRmKCgiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKLSAJCQkJfQotIAkJCQljb250aW51ZTsKLSAJCQl9Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvYy5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCi1AQCAtMjQwLDcgKzI0MCw3IEBAIGVycm1zZyhjaGFyIGRvZXhpdCwgaW50IGV4Y29kZSwgY2hhciBhZGQKLSAvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKLSAgKi8KLSAjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCi0tCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAotKwlmcHJpbnRmKHN0ZGVyciwgKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAotIAkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAotIAlleGl0KGV2YWwpOyBcCi0gfSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNhZGQzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotcmVxdWlyZSBnbGliYy5pbmMKLXJlcXVpcmUgZ2xpYmMtdmVyc2lvbi5pbmMKLQotREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSBtYWtlLW5hdGl2ZSIKLQotTkFUSVZFU0RLRklYRVMgPz0gIiIKLU5BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgPSAgIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlZGJzLnNoIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoIFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgotCi1HTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCi0KLUdMSUJDUElFID8/PSAiIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wcm9maWxlIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNyeXB0IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGVmYXVsdC1saW5rIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1uc2NkIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ1NFTEVDVEVEX09QVElNSVpBVElPTicsICctTzAgLU9nJywgJy0tZGlzYWJsZS13ZXJyb3InLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAke0dMSUJDUElFfSBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi0KLWRvX3BhdGNoX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQotfQotCi1kb19maXhfcmVhZGxpYl9jICgpIHsKLQlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYwotfQotCi1kb19jb25maWd1cmUgKCkgewotIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKLSMgY2FsbHMgZm9yIG5vdwotIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCi0jIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZwotICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgotICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAotICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCi0JTERGTEFHUz0iLWZ1c2UtbGQ9YmZkIgotCWJhc2VfZG9fY29tcGlsZQotCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgotCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCi0JdGhlbgotCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCi0JCSMgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzCi0JCW5ld3J0bGQ9YGVjaG8gJChwcmludGYgJyVzXG4nICR7cHJldnJ0bGR9ICR7UlRMRExJU1R9IHwgTENfQUxMPUMgc29ydCAtdSlgCi0JCWVjaG8gImxkZCBcIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIgLT4gXCIke25ld3J0bGR9XCIiCi0JCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke25ld3J0bGR9XCIjIgotCWZpCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwNWZkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMS5iYgpAQCAtMCwwICsxLDExMyBAQAorcmVxdWlyZSBnbGliYy5pbmMKK3JlcXVpcmUgZ2xpYmMtdmVyc2lvbi5pbmMKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSBtYWtlLW5hdGl2ZSIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAgIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZGJzLnNoIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTAwMjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1JbXByb3ZlLUlGVU5DLWNoZWNrLUJaLTI1NTA2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtRml4LWJ1aWxkLXdpdGgtR0NDLTEwLXdoZW4tbG9uZy1kb3VibGUtZG91YmxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisKK0dMSUJDUElFID8/PSAiIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wcm9maWxlIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGVidWcgLS13aXRob3V0LWdkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1jbG9jYWxlPWdudSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNyeXB0IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGVmYXVsdC1saW5rIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1uc2NkIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ1NFTEVDVEVEX09QVElNSVpBVElPTicsICctTzAgLU9nJywgJy0tZGlzYWJsZS13ZXJyb3InLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDUElFfSBcCisgICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCisKK2RvX3BhdGNoX2FwcGVuZCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQorfQorCitkb19maXhfcmVhZGxpYl9jICgpIHsKKwlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYworfQorCitkb19jb25maWd1cmUgKCkgeworIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKKyMgY2FsbHMgZm9yIG5vdworIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCisjIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZworICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgorICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAorICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCit9CisKK0xERkxBR1MgKz0gIi1mdXNlLWxkPWJmZCIKK2RvX2NvbXBpbGUgKCkgeworCWJhc2VfZG9fY29tcGlsZQorCWVjaG8gIkFkanVzdCBsZGQgc2NyaXB0IgorCWlmIFsgLW4gIiR7UlRMRExJU1R9IiBdCisJdGhlbgorCQlwcmV2cnRsZD1gY2F0ICR7Qn0vZWxmL2xkZCB8IGdyZXAgIl5SVExETElTVD0iIHwgc2VkICdzI15SVExETElTVD0iXD9cKFteIl0qXCkiXD8kI1wxIydgCisJCSMgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyaWVzCisJCW5ld3J0bGQ9YGVjaG8gJChwcmludGYgJyVzXG4nICR7cHJldnJ0bGR9ICR7UlRMRExJU1R9IHwgTENfQUxMPUMgc29ydCAtdSlgCisJCWVjaG8gImxkZCBcIiR7cHJldnJ0bGR9ICR7UlRMRExJU1R9XCIgLT4gXCIke25ld3J0bGR9XCIiCisJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke25ld3J0bGR9XCIjIgorCWZpCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy8wMDAxLU1ha2VmaWxlLWRvLW5vdC11c2UtZHBrZy1mb3ItZGV0ZXJtaW5pbmctT1MtdHlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2M4ZDA0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy8wMDAxLU1ha2VmaWxlLWRvLW5vdC11c2UtZHBrZy1mb3ItZGV0ZXJtaW5pbmctT1MtdHlwZS5wYXRjaApAQCAtMCwwICsxLDIzIEBACitGcm9tIDdhY2UwNjU2YmQzMjVmOWU3NzQ5ZjJjZGU2NDFlZGRjMDU3YmM5OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOSBKYW4gMjAyMCAxNTozODowNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZG8gbm90IHVzZSBkcGtnIGZvciBkZXRlcm1pbmluZyBPUyB0eXBlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwY2UyZmEzLi43MzlhZWYyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMSw2ICsxLDYgQEAKKyBWRVJTSU9OID89IDAuOAorIENGTEFHUyA/PSAtV2FsbCAtVyAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLWcgLU8yCistQVJDSCA6PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfQVJDSF9PUykKKytBUkNIIDo9IGxpbnV4CisgCisgQkFTRURJUiA/PSAkKERFU1RESVIpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjBkNTFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAzICswLDAgQEAKLUZyb20gNmZjZTk5YzllNDJjYmFjZGUxODU1NDczYjc0NWNhMWZkZWQzZmJmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIxIERlYyAyMDE2IDE1OjMyOjA3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBpbmV0WzZdLmRlZm46IGZpeCBpbnZlcnRlZCBjaGVja3MgZm9yIGxvb3BiYWNrCi0KLUNvbXBhcmVkIHRvIHRoZSBodXJkIGxpbmsuZGVmbiBmb3IgbG9vcGJhY2ssIHdlIHNlZSB0aGVzZQotYXJlIGludmVydGVkLCBtZWFuaW5nIHRoYXQgeW91IHdvdWxkIG9ubHkgYmUgYWJsZSB0byBjb25maWd1cmUKLWEgbG9vcGJhY2sgZGV2aWNlIHRoYXQgd2FzIF9ub3RfIG5hbWVkICJsbyIgKHVubGlrZWx5IHRvIGV4aXN0KS4KLQotVGhlIHJlc3VsdCB3YXMgdGhhdCB3ZSdkIHVwZGF0ZSAvcnVuL25ldHdvcmsvaWZzdGF0ZSBmb3IgImxvIgotYnV0IG5ldmVyIGFjdHVhbGx5IGRvIGFueXRoaW5nIGZvciB1cC9kb3duLCBhcyBzaG93biBiZWxvdzoKLQotcm9vdEBsb2NhbGhvc3Q6fiMgaWZjb25maWcgLXMKLUlmYWNlICAgTVRVIE1ldCAgIFJYLU9LIFJYLUVSUiBSWC1EUlAgUlgtT1ZSICBUWC1PSyBUWC1FUlIgVFgtRFJQIFRYLU9WUiBGbGcKLWV0aDAgICAgICAgMTUwMCAwICAgNzczNjMyOSAgICAgIDAgICAyMDE2IDAgNTI4OTQyMiAgICAgIDAgICAgICAwICAgICAgMCBCTVJVCi1sbyAgICAgICAgNjU1MzYgMCAgICAgICAgMTggICAgICAwICAgICAgMCAwICAgICAgMTggICAgICAwICAgICAgMCAgICAgIDAgTFJVCi1yb290QGxvY2FsaG9zdDp+IyBpZmRvd24gbG8KLXJvb3RAbG9jYWxob3N0On4jIGVjaG8gJD8KLTAKLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIC1zCi1JZmFjZSAgIE1UVSBNZXQgICBSWC1PSyBSWC1FUlIgUlgtRFJQICBSWC1PVlIgICAgVFgtT0sgVFgtRVJSIFRYLURSUCBUWC1PVlIgRmxnCi1ldGgwICAgICAgIDE1MDAgMCAgIDc3MzY0MDYgICAgICAwICAyMDE2IDAgICA1Mjg5NDU1ICAgICAgMCAgICAgIDAgICAgICAwIEJNUlUKLWxvICAgICAgICA2NTUzNiAwICAgICAgICAxOCAgICAgIDAgICAwIDAgICAgICAgICAgICAxOCAgICAwICAgIDAgICAgMCAgICAgTFJVCi1yb290QGxvY2FsaG9zdDp+IyBpZmNvbmZpZyBsbyBkb3duCi1yb290QGxvY2FsaG9zdDp+IyBpZmNvbmZpZyAtcwotSWZhY2UgICBNVFUgTWV0ICAgUlgtT0sgUlgtRVJSIFJYLURSUCBSWC1PVlIgICAgVFgtT0sgVFgtRVJSIFRYLURSUCBUWC1PVlIgRmxnCi1ldGgwICAgICAgIDE1MDAgMCAgIDc3MzY0NzQgMCAgIDIwMTYgMCAgICAgICA1Mjg5NDgxICAgICAgMCAgICAgMCAgICAgIDAgQk1SVQotcm9vdEBsb2NhbGhvc3Q6fiMKLQotQWxzbyByZXZlcnRlZCB0aGUgY29tbWl0OgotY29tbWl0IDgwYjg3ODQ5NzY2M2RhZTA4ZjcwYjRkM2NmZmUxMjdiNTdhM2NmYwotd2hpY2ggdXNlcyBhYnNvbHV0ZSBwYXRocyB0byBiaW5hcmllcyBjYWxsZWQgYnkgaWZ1cC9pZmRvd24uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmV0LmRlZm4gfCAxMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5ldC5kZWZuIGIvaW5ldC5kZWZuCi1pbmRleCAxODJiNTZiLi4zMTA2N2JjIDEwMDY0NAotLS0tIGEvaW5ldC5kZWZuCi0rKysgYi9pbmV0LmRlZm4KLUBAIC02LDEwICs2LDEwIEBAIG1ldGhvZCBsb29wYmFjawotICAgICBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBkZWZpbmUgdGhlIElQdjQgbG9vcGJhY2sgaW50ZXJmYWNlLgotIAotICAgdXAKLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCBpZiAoIWlmYWNlX2lzX2xvKCkpCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSAgIGRvd24KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIGlmICghaWZhY2VfaXNfbG8oKSkKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBpZiAoIWlmYWNlX2lzX2xvKCkpCi0gCi0gbWV0aG9kIHN0YXRpYwotICAgZGVzY3JpcHRpb24KLUBAIC0zNiwxNyArMzYsMTcgQEAgbWV0aG9kIHN0YXRpYwotICAgICBicm9hZGNhc3QgY29tcHV0ZV92NF9icm9hZGNhc3QKLSAKLSAgIHVwCi0tICAgIC9iaW4vaXAgYWRkciBhZGQgJWFkZHJlc3MlW1svJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0rICAgIGlwIGFkZHIgYWRkICVhZGRyZXNzJVtbLyVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotIAlbW3BlZXIgJXBvaW50b3BvaW50JV1dIFtbc2NvcGUgJXNjb3BlJV1dIGRldiAlaWZhY2UlIGxhYmVsICVpZmFjZSUKLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBbW210dSAlbXR1JV1dIFtbYWRkcmVzcyAlaHdhZGRyZXNzJV1dIHVwCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIFtbbXR1ICVtdHUlXV0gW1thZGRyZXNzICVod2FkZHJlc3MlXV0gdXAKLSAKLS0gICAgW1sgL2Jpbi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgb25saW5rIF1dCi0rICAgIFtbIGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSAKLSAgIGRvd24KLS0gICAgW1sgL2Jpbi9pcCByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0tICAgIC9iaW4vaXAgYWRkciBkZWwgJWFkZHJlc3MlW1svJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0rICAgIFtbIGlwIHJvdXRlIGRlbCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSAyPiYxIDE+L2Rldi9udWxsIHx8IHRydWUgXV0KLSsgICAgaXAgYWRkciBkZWwgJWFkZHJlc3MlW1svJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0gCVtbcGVlciAlcG9pbnRvcG9pbnQlXV0gW1tzY29wZSAlc2NvcGUlXV0gZGV2ICVpZmFjZSUgbGFiZWwgJWlmYWNlJQotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSAJCWlmIChpZmFjZV9pc19saW5rKCkpCi0gCi0gbWV0aG9kIG1hbnVhbAotQEAgLTYzLDEyICs2MywxMiBAQCBtZXRob2QgbWFudWFsCi0gICAgIGh3YWRkcmVzcyBjbGVhbnVwX2h3YWRkcmVzcwotIAotICAgdXAKLS0gICAgW1svYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIG10dSAlbXR1JV1dCi0tICAgIFtbL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBhZGRyZXNzICVod2FkZHJlc3MlXV0KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCAyPi9kZXYvbnVsbCB8fCB0cnVlCi0rICAgIFtbaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgbXR1ICVtdHUlXV0KLSsgICAgW1tpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBhZGRyZXNzICVod2FkZHJlc3MlXV0KLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgMj4vZGV2L251bGwgfHwgdHJ1ZQotIAotICAgZG93bgotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gMj4vZGV2L251bGwgfHwgdHJ1ZSBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gMj4vZGV2L251bGwgfHwgdHJ1ZSBcCi0gICAgICAgICBpZiAoaWZhY2VfaXNfbGluaygpICYmICFkb19hbGwpCi0gCi0gbWV0aG9kIGRoY3AKLUBAIC05MywzMyArOTMsMzMgQEAgbWV0aG9kIGRoY3AKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWy9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgYWRkcmVzcyAlaHdhZGRyZXNzJV1dCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgW1tpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBhZGRyZXNzICVod2FkZHJlc3MlXV0KLSsgICAgZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotIAlbWy1lIElGX01FVFJJQz0lbWV0cmljJV1dIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLS0gICAgL3NiaW4vcHVtcCAtaSAlaWZhY2UlIFtbLWggJWhvc3RuYW1lJV1dIFtbLWwgJWxlYXNlaG91cnMlXV0gXAotKyAgICBwdW1wIC1pICVpZmFjZSUgW1staCAlaG9zdG5hbWUlXV0gW1stbCAlbGVhc2Vob3VycyVdXSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3B1bXAiKSkKLS0gICAgL3NiaW4vdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkIC1pICVpZmFjZSUgW1steCBob3N0bmFtZTolaG9zdG5hbWUlXV0gXAotKyAgICB1ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy14IGhvc3RuYW1lOiVob3N0bmFtZSVdXSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0rICAgIGRoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSAgICAgICAgICAgIFtbLWwgJWxlYXNldGltZSVdXSBbWy1tICVtZXRyaWMlXV0gJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0gICBkb3duCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi9wdW1wIC1pICVpZmFjZSUgLXIgXAotKyAgICBwdW1wIC1pICVpZmFjZSUgLXIgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9wdW1wIikpCi0gICAgIGlmIHRlc3QgLWYgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQ7IHRoZW4ga2lsbCAtVVNSMiAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsga2lsbCAtVEVSTSAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsgZmkgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIC1rICVpZmFjZSUgXAotKyAgICBkaGNwY2QgLWsgJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotIAkJaWYgKGlmYWNlX2lzX2xpbmsoKSkKLSAKLSBtZXRob2QgYm9vdHAKLUBAIC0xMzQsMTEgKzEzNCwxMSBAQCBtZXRob2QgYm9vdHAKLSAgICAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgaXQgcmVhbGx5IGlzLgotIAotICAgdXAKLS0gICAgL3NiaW4vYm9vdHBjIFtbLS1ib290ZmlsZSAlYm9vdGZpbGUlXV0gLS1kZXYgJWlmYWNlJSBbWy0tc2VydmVyICVzZXJ2ZXIlXV0gXAotKyAgICBib290cGMgW1stLWJvb3RmaWxlICVib290ZmlsZSVdXSAtLWRldiAlaWZhY2UlIFtbLS1zZXJ2ZXIgJXNlcnZlciVdXSBcCi0gICAgICAgICAgICBbWy0taHdhZGRyICVod2FkZHIlXV0gLS1yZXR1cm5pZmZhaWwgLS1zZXJ2ZXJiY2FzdAotIAotICAgZG93bgotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSAgICAgICAgIGlmIChpZmFjZV9pc19saW5rKCkpCi0gCi0gbWV0aG9kIHR1bm5lbAotQEAgLTE1OCwxMyArMTU4LDEzIEBAIG1ldGhvZCB0dW5uZWwKLSAgICAgdHRsIHRpbWUgICAgICAgICAgICAgIC0tIFRUTCBzZXR0aW5nCi0gICAgIG10dSBzaXplICAgICAgICAgICAgICAtLSBNVFUgc2l6ZQotICAgdXAKLS0gICAgL2Jpbi9pcCB0dW5uZWwgYWRkICVpZmFjZSUgbW9kZSAlbW9kZSUgcmVtb3RlICVlbmRwb2ludCUgW1tsb2NhbCAlbG9jYWwlXV0gXAotKyAgICBpcCB0dW5uZWwgYWRkICVpZmFjZSUgbW9kZSAlbW9kZSUgcmVtb3RlICVlbmRwb2ludCUgW1tsb2NhbCAlbG9jYWwlXV0gXAotICAgICAgICBbW3R0bCAldHRsJV1dCi0tICAgIC9iaW4vaXAgbGluayBzZXQgJWlmYWNlJSB1cCBbW210dSAlbXR1JV1dCi0tICAgIC9iaW4vaXAgYWRkciBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSBkZXYgJWlmYWNlJSBbW3BlZXIgJWRzdGFkZHIlXV0KLS0gICAgW1sgL2Jpbi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgb25saW5rIF1dCi0rICAgIGlwIGxpbmsgc2V0ICVpZmFjZSUgdXAgW1ttdHUgJW10dSVdXQotKyAgICBpcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlIFtbcGVlciAlZHN0YWRkciVdXQotKyAgICBbWyBpcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgb25saW5rIF1dCi0gICBkb3duCi0tICAgIC9iaW4vaXAgdHVubmVsIGRlbCAlaWZhY2UlCi0rICAgIGlwIHR1bm5lbCBkZWwgJWlmYWNlJQotIAotIG1ldGhvZCBwcHAKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMTc1LDkgKzE3NSw5IEBAIG1ldGhvZCBwcHAKLSAgICAgdW5pdCBudW1iZXIgICAgLS0gVXNlIC9udW1iZXIvIGFzIHRoZSBwcHAgdW5pdCBudW1iZXIuCi0gICAgIG9wdGlvbnMgc3RyaW5nIC0tIFBhc3MgL3N0cmluZy8gYXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBvbi4KLSAgIHVwCi0tICAgIC91c3IvYmluL3BvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotKyAgICBwb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSAgIGRvd24KLS0gICAgL3Vzci9iaW4vcG9mZiBbWyVwcm92aWRlciVdXQotKyAgICBwb2ZmIFtbJXByb3ZpZGVyJV1dCi0gCi0gbWV0aG9kIHd2ZGlhbAotICAgZGVzY3JpcHRpb24KLUBAIC0xODYsMTAgKzE4NiwxMCBAQCBtZXRob2Qgd3ZkaWFsCi0gICBvcHRpb25zCi0gICAgIHByb3ZpZGVyIG5hbWUgIC0tIFVzZSAvbmFtZS8gYXMgdGhlIHByb3ZpZGVyIChmcm9tIC9ldGMvd3ZkaWFsLmNvbmYpLgotICAgdXAKLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1iIC1tIC0tIFtbICVwcm92aWRlciUgXV0KLSAgIGRvd24KLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UlLnBpZCAtcyAyCi0gCi0gCi1AQCAtMjAwLDkgKzIwMCw5IEBAIG1ldGhvZCBpcHY0bGwKLSAgICAga25vd24gYXMgQVBJUEEgb3IgSVBBQywgYW5kIG9mdGVuIGNvbGxvcXVpYWxseSByZWZlcnJlZCB0bwotICAgICBhcyAiWmVyb2NvbmYgYWRkcmVzcyIuCi0gICB1cAotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotICAgZG93bgotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0gCi0gYXJjaGl0ZWN0dXJlIGtmcmVlYnNkCi0gCi1AQCAtMjExLDExICsyMTEsMTEgQEAgbWV0aG9kIGxvb3BiYWNrCi0gICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGRlZmluZSB0aGUgSVB2NCBsb29wYmFjayBpbnRlcmZhY2UuCi0gCi0gICB1cAotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIDEyNy4wLjAuMSB1cCBcCi0rICAgIGlmY29uZmlnICVpZmFjZSUgMTI3LjAuMC4xIHVwIFwKLSAJaWYgKCFpZmFjZV9pc19sbygpKQotIAotICAgZG93bgotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGRvd24gXAotKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24gXAotIAlpZiAoIWlmYWNlX2lzX2xvKCkpCi0gCi0gbWV0aG9kIHN0YXRpYwotQEAgLTIzOCwxNSArMjM4LDE1IEBAIG1ldGhvZCBzdGF0aWMKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWyAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGxpbmsgJWh3YWRkcmVzcyVdXQotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlICVhZGRyZXNzJSBbW25ldG1hc2sgJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0rICAgIFtbIGlmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0rICAgIGlmY29uZmlnICVpZmFjZSUgJWFkZHJlc3MlIFtbbmV0bWFzayAlbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSAJW1twb2ludG9wb2ludCAlcG9pbnRvcG9pbnQlXV0gW1ttZWRpYSAlbWVkaWElXV0gW1ttdHUgJW10dSVdXSBcCi0gCXVwCi0tICAgIFtbIC9zYmluL3JvdXRlIGFkZCBkZWZhdWx0ICVnYXRld2F5JSBdXQotKyAgICBbWyByb3V0ZSBhZGQgZGVmYXVsdCAlZ2F0ZXdheSUgXV0KLSAKLSAgIGRvd24KLS0gICAgW1sgL3NiaW4vcm91dGUgZGVsIGRlZmF1bHQgJWdhdGV3YXklIDI+JjEgMT4vZGV2L251bGwgfHwgdHJ1ZSBdXQotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGRvd24KLSsgICAgW1sgcm91dGUgZGVsIGRlZmF1bHQgJWdhdGV3YXklIDI+JjEgMT4vZGV2L251bGwgfHwgdHJ1ZSBdXQotKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24KLSAKLSBtZXRob2QgbWFudWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTI3OSwzMCArMjc5LDMwIEBAIG1ldGhvZCBkaGNwCi0gICAgIGh3YWRkcmVzcyBjbGVhbnVwX2h3YWRkcmVzcwotIAotICAgdXAKLS0gICAgW1svc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGxpbmsgJWh3YWRkcmVzcyVdXQotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIFtbaWZjb25maWcgJWlmYWNlJSBsaW5rICVod2FkZHJlc3MlXV0KLSsgICAgZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotIAlbWy1lIElGX01FVFJJQz0lbWV0cmljJV1dIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLS0gICAgL3NiaW4vdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotKyAgICB1ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy1IICVob3N0bmFtZSVdXSBcCi0gICAgICAgICAgICBbWy1jICVjbGllbnQlXV0gXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotKyAgICBkaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0gICAgICAgICAgICBbWy1sICVsZWFzZXRpbWUlXV0gJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0gICBkb3duCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotICAgICBpZiB0ZXN0IC1mIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkOyB0aGVuIGtpbGwgLVVTUjIgJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCk7IGtpbGwgLVRFUk0gJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCk7IGZpIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCAtayAlaWZhY2UlIFwKLSsgICAgZGhjcGNkIC1rICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGRvd24KLSsgICAgaWZjb25maWcgJWlmYWNlJSBkb3duCi0gCi0gbWV0aG9kIGJvb3RwCi0gICBkZXNjcmlwdGlvbgotQEAgLTMxNiwxMSArMzE2LDExIEBAIG1ldGhvZCBib290cAotICAgICAgICAgICAgICAgICAgICAgICB3aGF0ZXZlciBpdCByZWFsbHkgaXMuCi0gCi0gICB1cAotLSAgICAvc2Jpbi9ib290cGMgW1stLWJvb3RmaWxlICVib290ZmlsZSVdXSAtLWRldiAlaWZhY2UlIFtbLS1zZXJ2ZXIgJXNlcnZlciVdXSBcCi0rICAgIGJvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSAgICAgICAgICAgIFtbLS1od2FkZHIgJWh3YWRkciVdXSAtLXJldHVybmlmZmFpbCAtLXNlcnZlcmJjYXN0Ci0gCi0gICBkb3duCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93bgotKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24KLSAKLSBtZXRob2QgcHBwCi0gICBkZXNjcmlwdGlvbgotQEAgLTMzMSw5ICszMzEsOSBAQCBtZXRob2QgcHBwCi0gICAgIHVuaXQgbnVtYmVyICAgIC0tIFVzZSAvbnVtYmVyLyBhcyB0aGUgcHBwIHVuaXQgbnVtYmVyLgotICAgICBvcHRpb25zIHN0cmluZyAtLSBQYXNzIC9zdHJpbmcvIGFzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBwb24uCi0gICB1cAotLSAgICAvdXNyL2Jpbi9wb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSsgICAgcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0gICBkb3duCi0tICAgIC91c3IvYmluL3BvZmYgW1slcHJvdmlkZXIlXV0KLSsgICAgcG9mZiBbWyVwcm92aWRlciVdXQotIAotIG1ldGhvZCB3dmRpYWwKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzQyLDEwICszNDIsMTAgQEAgbWV0aG9kIHd2ZGlhbAotICAgb3B0aW9ucwotICAgICBwcm92aWRlciBuYW1lICAtLSBVc2UgL25hbWUvIGFzIHRoZSBwcm92aWRlciAoZnJvbSAvZXRjL3d2ZGlhbC5jb25mKS4KLSAgIHVwCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UlLnBpZCAtYiAtbSAtLSBbWyAlcHJvdmlkZXIlIF1dCi0gICBkb3duCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlJS5waWQgLXMgMgotIAotIAotQEAgLTM1Niw5ICszNTYsOSBAQCBtZXRob2QgaXB2NGxsCi0gICAgIGtub3duIGFzIEFQSVBBIG9yIElQQUMsIGFuZCBvZnRlbiBjb2xsb3F1aWFsbHkgcmVmZXJyZWQgdG8KLSAgICAgYXMgIlplcm9jb25mIGFkZHJlc3MiLgotICAgdXAKLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSAgIGRvd24KLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotIGFyY2hpdGVjdHVyZSBodXJkCi0gCi0gbWV0aG9kIGxvb3BiYWNrCi1AQCAtNDMyLDIzICs0MzIsMjMgQEAgbWV0aG9kIGRoY3AKLSAKLSAgIHVwCi0gICAgIFtbV2FybmluZzogT3B0aW9uIGh3YWRkcmVzczogJWh3YWRkcmVzcyUgbm90IHlldCBzdXBwb3J0ZWRdXQotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UvLy8uJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlLy8vLiUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UvLy8uJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIGRoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLS0gICAgL3NiaW4vdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZCAtaSAlaWZhY2UlIFtbLUggJWhvc3RuYW1lJV1dIFwKLSsgICAgdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZCAtaSAlaWZhY2UlIFtbLUggJWhvc3RuYW1lJV1dIFwKLSAgICAgICAgICAgIFtbLWMgJWNsaWVudCVdXSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0rICAgIGRoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSAgICAgICAgICAgIFtbLWwgJWxlYXNldGltZSVdXSAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlLy8vLiUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZS8vLy4lLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlLy8vLiUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UvLy8uJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlLy8vLiUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UvLy8uJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0gICAgIGlmIHRlc3QgLWYgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkOyB0aGVuIGtpbGwgLVVTUjIgJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQpOyBraWxsIC1URVJNICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkKTsgZmkgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIC1rICVpZmFjZSUgXAotKyAgICBkaGNwY2QgLWsgJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi1AQCAtNDgyLDkgKzQ4Miw5IEBAIG1ldGhvZCBwcHAKLSAgICAgdW5pdCBudW1iZXIgICAgLS0gVXNlIC9udW1iZXIvIGFzIHRoZSBwcHAgdW5pdCBudW1iZXIuCi0gICAgIG9wdGlvbnMgc3RyaW5nIC0tIFBhc3MgL3N0cmluZy8gYXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBvbi4KLSAgIHVwCi0tICAgIC91c3IvYmluL3BvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotKyAgICBwb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSAgIGRvd24KLS0gICAgL3Vzci9iaW4vcG9mZiBbWyVwcm92aWRlciVdXQotKyAgICBwb2ZmIFtbJXByb3ZpZGVyJV1dCi0gCi0gbWV0aG9kIHd2ZGlhbAotICAgZGVzY3JpcHRpb24KLUBAIC00OTMsMTAgKzQ5MywxMCBAQCBtZXRob2Qgd3ZkaWFsCi0gICBvcHRpb25zCi0gICAgIHByb3ZpZGVyIG5hbWUgIC0tIFVzZSAvbmFtZS8gYXMgdGhlIHByb3ZpZGVyIChmcm9tIC9ldGMvd3ZkaWFsLmNvbmYpLgotICAgdXAKLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZS8vLy4lLnBpZCAtYiAtbSAtLSBbWyAlcHJvdmlkZXIlIF1dCi0gICBkb3duCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlLy8vLiUucGlkIC1zIDIKLSAKLSAKLUBAIC01MDcsNiArNTA3LDYgQEAgbWV0aG9kIGlwdjRsbAotICAgICBrbm93biBhcyBBUElQQSBvciBJUEFDLCBhbmQgb2Z0ZW4gY29sbG9xdWlhbGx5IHJlZmVycmVkIHRvCi0gICAgIGFzICJaZXJvY29uZiBhZGRyZXNzIi4KLSAgIHVwCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0gICBkb3duCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY5NDA0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNCBAQAorIyEvYmluL3NoCisKK0NVUkRJUj0kKGRpcm5hbWUgYHJlYWRsaW5rIC1mICQwYCkKK2NkICRDVVJESVIvdGVzdHMgJiYgLi90ZXN0YnVpbGQtbGludXgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvdHdlYWstcHRlc3Qtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc2MDBjZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvdHdlYWstcHRlc3Qtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK1R3ZWFrIHRlc3RzIG9mIGlmdXBkb3duIHRvIG1ha2UgaXQgd29yayB3aXRoIG9lLWNvcmUgcHRlc3QgZnJhbWV3b3JrLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGJ1aWxkLWxpbnV4IGIvdGVzdHMvdGVzdGJ1aWxkLWxpbnV4CitpbmRleCAxMTgxZWEwLi5kNWMxODE0IDEwMDc1NQorLS0tIGEvdGVzdHMvdGVzdGJ1aWxkLWxpbnV4CisrKysgYi90ZXN0cy90ZXN0YnVpbGQtbGludXgKK0BAIC0xLDYgKzEsNyBAQAorICMhL2Jpbi9zaCAtZQorIAorLWRpcj10ZXN0cy9saW51eAorK2N1cmRpcj0kKGRpcm5hbWUgYHJlYWRsaW5rIC1mICQwYCkKKytkaXI9JGN1cmRpci9saW51eAorIAorIHJlc3VsdD10cnVlCisgZm9yIHRlc3QgaW4gMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTg7IGRvCitAQCAtMTIsNyArMTMsNyBAQCBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KKyAgICAgICAgIGVjaG8gIlRlc3RjYXNlICR0ZXN0OiAkYXJncyIKKyAKKyAJZXhpdGNvZGU9MAorLSAgICAgICAgLi9pZnVwIC12IC0tbm8tYWN0LWNvbW1hbmRzIC0tZm9yY2UgLWkgJGRpci90ZXN0Y2FzZS4kdGVzdCAtLXN0YXRlLWRpcj0kZGlyL3N0YXRlLiR0ZXN0ICRhcmdzIFwKKysgICAgICAgIGlmdXAgLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorICAgICAgICAgICAgICAgICA+JGRpci91cC1yZXMtb3V0LiR0ZXN0IDI+JGRpci91cC1yZXMtZXJyLiR0ZXN0IHx8IGV4aXRjb2RlPSQ/CisgCisgICAgICAgICAoZWNobyAiZXhpdCBjb2RlOiAkZXhpdGNvZGUiOworQEAgLTIwLDcgKzIxLDcgQEAgZm9yIHRlc3QgaW4gMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTg7IGRvCisgICAgICAgICAgZWNobyAiPT09PXN0ZGVycj09PT0iOyBjYXQgJGRpci91cC1yZXMtZXJyLiR0ZXN0KSA+ICRkaXIvdXAtcmVzLiR0ZXN0CisgCisgCWV4aXRjb2RlPTAKKy0gICAgICAgIC4vaWZkb3duIC12IC0tbm8tYWN0LWNvbW1hbmRzIC0tZm9yY2UgLWkgJGRpci90ZXN0Y2FzZS4kdGVzdCAtLXN0YXRlLWRpcj0kZGlyL3N0YXRlLiR0ZXN0ICRhcmdzIFwKKysgICAgICAgIGlmZG93biAtdiAtLW5vLWFjdC1jb21tYW5kcyAtLWZvcmNlIC1pICRkaXIvdGVzdGNhc2UuJHRlc3QgLS1zdGF0ZS1kaXI9JGRpci9zdGF0ZS4kdGVzdCAkYXJncyBcCisgICAgICAgICAgICAgICAgPiRkaXIvZG93bi1yZXMtb3V0LiR0ZXN0IDI+JGRpci9kb3duLXJlcy1lcnIuJHRlc3QgfHwgZXhpdGNvZGU9JD8KKyAKKyAgICAgICAgIChlY2hvICJleGl0IGNvZGU6ICRleGl0Y29kZSI7CitAQCAtMjgsOSArMjksOSBAQCBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KKyAgICAgICAgICBlY2hvICI9PT09c3RkZXJyPT09PSI7IGNhdCAkZGlyL2Rvd24tcmVzLWVyci4kdGVzdCkgPiAkZGlyL2Rvd24tcmVzLiR0ZXN0CisgCisgICAgICAgICBpZiBkaWZmIC11YiAkZGlyL3VwLiR0ZXN0ICRkaXIvdXAtcmVzLiR0ZXN0ICYmIGRpZmYgLXViICRkaXIvZG93bi4kdGVzdCAkZGlyL2Rvd24tcmVzLiR0ZXN0OyB0aGVuCistICAgICAgICAgICAgICAgIGVjaG8gIihva2F5KSIKKysgICAgICAgICAgICAgICAgZWNobyAiUEFTUzogJHRlc3QiCisgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIGVjaG8gIihmYWlsZWQpIgorKyAgICAgICAgICAgICAgICBlY2hvICJGQUlMOiAkdGVzdCIKKyAgICAgICAgICAgICAgICAgcmVzdWx0PWZhbHNlCisgICAgICAgICBmaQorICAgICAgICAgZWNobyAiPT09PT09PT09PSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMDk4OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1TVU1NQVJZID0gImlmdXBkb3duOiBiYXNpYyBpZnVwIGFuZCBpZmRvd24gdXNlZCBieSBpbml0c2NyaXB0cyIKLURFU0NSSVBUSU9OID0gIkhpZ2ggbGV2ZWwgdG9vbHMgdG8gY29uZmlndXJlIG5ldHdvcmsgaW50ZXJmYWNlcyBcCi1UaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHRvb2xzIGlmdXAgYW5kIGlmZG93biB3aGljaCBtYXkgYmUgdXNlZCB0byBcCi1jb25maWd1cmUgKG9yLCByZXNwZWN0aXZlbHksIGRlY29uZmlndXJlKSBuZXR3b3JrIGludGVyZmFjZXMsIGJhc2VkIG9uIFwKLXRoZSBmaWxlIC9ldGMvbmV0d29yay9pbnRlcmZhY2VzLiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9zYWxzYS5kZWJpYW4ub3JnL2RlYmlhbi9pZnVwZG93bi5naXQ7cHJvdG9jb2w9aHR0cHMgXAotCSAgIGZpbGU6Ly9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoIFwKLQkgICBmaWxlOi8vaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoIFwKLQkgICBmaWxlOi8vOTlfbmV0d29yayBcCi0JICAgZmlsZTovLzAwMDEtRGVmaW5lLUZOTV9FWFRNQVRDSC1mb3ItbXVzbC5wYXRjaCBcCi0JICAiCi1TUkNSRVYgPSAiYWI1YTBmNDY0ZTUzZTE3MjMxNmE1Y2E4YjVkY2RjNDllODg0ODk5OSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29tcGlsZSAoKSB7Ci0JY2htb2QgYStyeCAqLnBsICouc2gKLQlvZV9ydW5tYWtlICdDQz0ke0NDfScgIkNGTEFHUz0ke0NGTEFHU30gLVdhbGwgLVcgLUQnSUZVUERPV05fVkVSU0lPTj1cIiR7UFZ9XCInIgotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCBcCi0JCSAgJHtEfSR7bWFuZGlyfS9tYW41IFwKLQkJICAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0KLQkjIElmIHZvbGF0aWxlcyBhcmUgdXNlZCwgdGhlbiB3ZSdsbCBhbHNvIG5lZWQgL3J1bi9uZXR3b3JrIHRoZXJlIHRvby4KLQlpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfbmV0d29yayAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCi0JaW5zdGFsbCAtbSAwNzU1IGlmdXAgJHtEfSR7YmFzZV9zYmluZGlyfS8KLQlsbiAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmdXAgJHtEfSR7YmFzZV9zYmluZGlyfS9pZmRvd24KLQlpbnN0YWxsIC1tIDA2NDQgaWZ1cC44ICR7RH0ke21hbmRpcn0vbWFuOAotCWluc3RhbGwgLW0gMDY0NCBpbnRlcmZhY2VzLjUgJHtEfSR7bWFuZGlyfS9tYW41Ci0JY2QgJHtEfSR7bWFuZGlyfS9tYW44ICYmIGxuIC1zIGlmdXAuOCBpZmRvd24uOAotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpZnVwIGlmZG93biIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2lmdXBdID0gIiR7YmFzZV9zYmluZGlyfS9pZnVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2lmZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmZG93biIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjYjk3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjM1LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiaWZ1cGRvd246IGJhc2ljIGlmdXAgYW5kIGlmZG93biB1c2VkIGJ5IGluaXRzY3JpcHRzIgorREVTQ1JJUFRJT04gPSAiSGlnaCBsZXZlbCB0b29scyB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzIFwKK1RoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgdG9vbHMgaWZ1cCBhbmQgaWZkb3duIHdoaWNoIG1heSBiZSB1c2VkIHRvIFwKK2NvbmZpZ3VyZSAob3IsIHJlc3BlY3RpdmVseSwgZGVjb25maWd1cmUpIG5ldHdvcmsgaW50ZXJmYWNlcywgYmFzZWQgb24gXAordGhlIGZpbGUgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMuIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmdXBkb3duLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk5X25ldHdvcmsgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtRk5NX0VYVE1BVENILWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnZmlsZTovL3R3ZWFrLXB0ZXN0LXNjcmlwdC5wYXRjaCcsICcnLCBkKX0gXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNGFmNzYzMThjZmM1N2Y4ZTRhNDRkMzU3MTA0MTg4NjY2MjEzYmQ0YiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworCitpbmhlcml0IHB0ZXN0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworZG9fY29tcGlsZSAoKSB7CisJY2htb2QgYStyeCAqLnBsICouc2gKKwlvZV9ydW5tYWtlICdDQz0ke0NDfScgIkNGTEFHUz0ke0NGTEFHU30gLVdhbGwgLVcgLUQnSUZVUERPV05fVkVSU0lPTj1cIiR7UFZ9XCInIgorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCBcCisJCSAgJHtEfSR7bWFuZGlyfS9tYW41IFwKKwkJICAke0R9JHtiYXNlX3NiaW5kaXJ9CisKKwkjIElmIHZvbGF0aWxlcyBhcmUgdXNlZCwgdGhlbiB3ZSdsbCBhbHNvIG5lZWQgL3J1bi9uZXR3b3JrIHRoZXJlIHRvby4KKwlpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfbmV0d29yayAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCisJaW5zdGFsbCAtbSAwNzU1IGlmdXAgJHtEfSR7YmFzZV9zYmluZGlyfS8KKwlsbiAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmdXAgJHtEfSR7YmFzZV9zYmluZGlyfS9pZmRvd24KKwlpbnN0YWxsIC1tIDA2NDQgaWZ1cC44ICR7RH0ke21hbmRpcn0vbWFuOAorCWluc3RhbGwgLW0gMDY0NCBpbnRlcmZhY2VzLjUgJHtEfSR7bWFuZGlyfS9tYW41CisJY2QgJHtEfSR7bWFuZGlyfS9tYW44ICYmIGxuIC1zIGlmdXAuOCBpZmRvd24uOAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXIgJHtTfS90ZXN0cy90ZXN0YnVpbGQtbGludXggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCisgICAgY3AgLXIgJHtTfS90ZXN0cy9saW51eCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiaWZ1cCBpZmRvd24iCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpZnVwXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZ1cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpZmRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9pZmRvd24iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgppbmRleCAxZDc0ZWU1Li5jOTM2N2RkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKQEAgLTI0LDcgKzI0LDcgQEAKIAogaW5oZXJpdCBjb3JlLWltYWdlIG1vZHVsZS1iYXNlIHNldHVwdG9vbHMzCiAKLVNSQ1JFViA/PSAiODE4MTY4MWIzM2RhMjcyZmVmODMyNzYxMDRkNWM3YTkzZjg0ZGE0NiIKK1NSQ1JFViA/PSAiMzM5MDM5MzJhZDg3YmZhOGU4YmY3YmFmMjI1Njc4MTcxNDk5M2I3OSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reSBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3VkZXYgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay91ZGV2CmluZGV4IDg3NTUxZmYuLjQ4OThiODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3VkZXYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldgpAQCAtNDEsNiArNDEsOSBAQAogCW1rZGlyIC1wIC9ydW4KIAlta2RpciAtcCAvdmFyL3J1bgogCisJIyBXb3JrYXJvdW5kIGlmIGNvbnNvbGU9bnVsbCwgc3lzdGVtZC11ZGV2ZCBuZWVkcyB2YWxpZCBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gd29yaworCXNoIC1jICJleGVjIDQ8IC9kZXYvY29uc29sZSIgfHwgeyBleGVjIDA+IC9kZXYvbnVsbDsgZXhlYyAxPiAvZGV2L251bGw7IGV4ZWMgMj4gL2Rldi9udWxsOyB9CisKIAkkX1VERVZfREFFTU9OIC0tZGFlbW9uCiAJdWRldmFkbSB0cmlnZ2VyIC0tYWN0aW9uPWFkZAogCXVkZXZhZG0gc2V0dGxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtVXNlLURBVEFESVItYW5kLWFwcGVuZC1pMzg2LXRvLWZpeC1saWJrYmRmaWxlLXRlc3QwOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzUyMzYwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtVXNlLURBVEFESVItYW5kLWFwcGVuZC1pMzg2LXRvLWZpeC1saWJrYmRmaWxlLXRlc3QwOC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDRjMTJmNzZmNDE3N2NmZDU2MGNmNzA4YTE2Nzc0ZWJmYWRiZDQxYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWluZ2RlIChNYXR0aGV3KSBaZW5nIiA8bWF0dGhldy56ZW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIyIEphbiAyMDIwIDExOjAyOjE3IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBEQVRBRElSIGFuZCBhcHBlbmQgaTM4NiB0byBmaXggbGlia2JkZmlsZS10ZXN0MDggcHRlc3QKKyBmYWlsdXJlCisKK1JlcGxhY2UgQUJTX0RBVEFESVIgd2l0aCBEQVRBRElSIGFuZCBhcHBlbmQgaTM4NiB0byBkaXJwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitUaGlzIE9FIHNwZWNpZmljIHBhdGNoIGFwcGxpZXMgdG8ga2JkIHYyLjIuMCBmb3Igbm93LCB0aGUgdXBzdHJlYW0KK21hZGUgZHJhc3RpYyBjaGFuZ2VzIHNpbmNlIHYyLjIuMCwgaW4gZmFjdCB0aGV5IGdvdCByaWQgb2YgQUJTX0RBVEFESVIKK2luIGNvbW1pdCA1YjZkZjVjIGFsb25nIHdpdGggYSBzZXJpZXMgb2Ygb3RoZXIgY29tbWl0cyB3aGljaCBtYXkgb3IKK21heSBub3QgZml4IHRoaXMgaXNzdWUuIFdlIHdpbGwgZmluZCBvdXQgaW4gZnV0dXJlIHJlbGVhc2VzLgorCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IFplbmc8TWF0dGhldy5aZW5nQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYyBiL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMKK2luZGV4IGJmNDE3MDcuLjVlMjg3ZjEgMTAwNjQ0CistLS0gYS90ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jCisrKysgYi90ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jCitAQCAtMTQsMTQgKzE0LDE0IEBAIG1haW4oaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGFyZ2MsIGNoYXIgKiphcmd2KQorIAlpZiAoIWZwKQorIAkJa2JkX2Vycm9yKEVYSVRfRkFJTFVSRSwgMCwgInVuYWJsZSB0byBjcmVhdGUga2JkZmlsZSIpOworCistCWNvbnN0IGNoYXIgKmNvbnN0IGRpcnBhdGhbXSAgPSB7ICIiLCBEQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvKioiLCAwIH07CisrCWNvbnN0IGNoYXIgKmNvbnN0IGRpcnBhdGhbXSAgPSB7ICIiLCBEQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni8qKiIsIDAgfTsKKyAJY29uc3QgY2hhciAqY29uc3Qgc3VmZml4ZXNbXSA9IHsgIiIsICIubWFwIiwgIi5rbWFwIiwgMCB9OworCistCWNvbnN0IGNoYXIgKmV4cGVjdCA9IEFCU19EQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni9xd2VydHkvdGVzdDAubWFwIjsKKysJY29uc3QgY2hhciAqZXhwZWN0ID0gREFUQURJUiAiL2ZpbmRmaWxlL3Rlc3RfMC9rZXltYXBzL2kzODYvcXdlcnR5L3Rlc3QwLm1hcCI7CisKKyAJaW50IHJjID0gMDsKKworLQlyYyA9IGtiZGZpbGVfZmluZCgoY2hhciAqKShBQlNfREFUQURJUiAiL2ZpbmRmaWxlL3Rlc3RfMC9rZXltYXBzL2kzODYvcXdlcnR5L3Rlc3QwIiksIChjaGFyICoqKSBkaXJwYXRoLCAoY2hhciAqKikgc3VmZml4ZXMsIGZwKTsKKysJcmMgPSBrYmRmaWxlX2ZpbmQoKGNoYXIgKikidGVzdDAiLCAoY2hhciAqKikgZGlycGF0aCwgKGNoYXIgKiopIHN1ZmZpeGVzLCBmcCk7CisKKyAJaWYgKHJjICE9IDApCisgCQlrYmRfZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAidW5hYmxlIHRvIGZpbmQgZmlsZSIpOworLS0KKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1hbmFseXplLmwtYWRkLW1pc3Npbmctc3RyaW5nLWZvcm1hdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MTZmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1hbmFseXplLmwtYWRkLW1pc3Npbmctc3RyaW5nLWZvcm1hdC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIGRjNmJmMmFlMDgzNWM2NTY5YjI3MGU4ZTFmMjZhMzE3M2YzOTI3ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBEZWMgMjAxOSAxMzoxNDowMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhbmFseXplLmw6IGFkZCBtaXNzaW5nIHN0cmluZyBmb3JtYXQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9sZWdpb251cy9rYmQvcHVsbC8zNV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYmtleW1hcC9hbmFseXplLmwgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGlia2V5bWFwL2FuYWx5emUubCBiL3NyYy9saWJrZXltYXAvYW5hbHl6ZS5sCitpbmRleCBlMzJhY2U2Li5kZTYyZjQ2IDEwMDY0NAorLS0tIGEvc3JjL2xpYmtleW1hcC9hbmFseXplLmwKKysrKyBiL3NyYy9saWJrZXltYXAvYW5hbHl6ZS5sCitAQCAtNDYzLDcgKzQ2Myw3IEBAIFRvICAgICAgICAgICAgICAgICAgICAgIHRvfFRvfFRPCisgCisgCQkJCQlzdHJlcnJvcl9yKGVycm5vLCBidWYsIHNpemVvZihidWYpKTsKKyAKKy0JCQkJCUVSUih5eWV4dHJhLCBidWYpOworKwkJCQkJRVJSKHl5ZXh0cmEsICIlcyIsIGJ1Zik7CisgCQkJCQlyZXR1cm4oRVJST1IpOworIAkJCQl9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvZml4X2NmbGFncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9maXhfY2ZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MjIwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvZml4X2NmbGFncy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitXZSBuZWVkIHRvIGVuc3VyZSBvdXIgQ0ZMQUdTIGFyZSBwcmVzZXJ2ZWQgYXMgd2VsbCBhcyB3aGF0ZXZlciB0d2VhayBjb25maWd1cmUKK3RyaWVzIHRvIG1ha2UuIFdpdGhvdXQgdGhlc2UsIHRoZSBkZWJ1ZyBwcmVmaXggY2hhbmdlcyBnZXQgbG9zdCBhbmQgd2UgbG9zZQorYnVpbGQgcmVwcm9kdWNpYmlsaXR5LCBsaWtlbHkgd2l0aCBvdGhlciBzaWRlIGVmZmVjdHMuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisyMDIwLzEvMjcKKworSW5kZXg6IGtiZC0yLjIuMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrYmQtMi4yLjAub3JpZy9jb25maWd1cmUuYWMKKysrKyBrYmQtMi4yLjAvY29uZmlndXJlLmFjCitAQCAtNzIsOSArNzIsOSBAQCBpZiB0ZXN0ICIkZW5hYmxlX2NvZGVfY292ZXJhZ2UiID0geWVzOyB0CisgZmkKKyAKKyBjYXNlICIkR0NDLCRhY19jdl9wcm9nX2NjX2ciIGluCistCXllcyx5ZXMpIENGTEFHUz0iLWcgJENDX09fTEVWRUwgJEZPUlRJRllfU09VUkNFIiA7OworLQl5ZXMsKSAgICBDRkxBR1M9IiRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSIgOzsKKy0JICAgLHllcykgQ0ZMQUdTPSItZyIgOzsKKysJeWVzLHllcykgQ0ZMQUdTPSItZyAkQ0NfT19MRVZFTCAkRk9SVElGWV9TT1VSQ0UgJENGTEFHUyIgOzsKKysJeWVzLCkgICAgQ0ZMQUdTPSIkQ0NfT19MRVZFTCAkRk9SVElGWV9TT1VSQ0UgJENGTEFHUyIgOzsKKysJICAgLHllcykgQ0ZMQUdTPSItZyAkQ0ZMQUdTIiA7OworIGVzYWMKKyAKKyBDQ19DSEVDS19DRkxBR1NfQVBQRU5EKFtcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCmluZGV4IGE5YTNhYjguLjRiMWU1YjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSBjYjNhZjhmYjA3MmY4OTk5ZGJiNTE2MGJkYzk1YTEwMmIwMmZkMzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDMwIFNlcCAyMDE2IDE2OjQ5OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGtiZDogY3JlYXRlIHB0ZXN0IHN1Yi1wYWNrYWdlCisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIGtiZCBpcyBvdXQgb2Ygc291cmNlIGJ1aWx0LCB0aGVuIHRoZSB2YWx1ZSBvZiAkKHNyY2RpcikgaXMgcmVsYXRpdmUgcGF0aCBvZgpAQCAtMTMsMzggKzE4LDYxIEBACiAKIFNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogCi1JbmRleDoga2JkLTIuMC40L3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2JkLTIuMC40Lm9yaWcvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBrYmQtMi4wLjQvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDcgKzEsNyBAQAotIEFNX0NQUEZMQUdTID0gXAotIAktSSQoc3JjZGlyKS8uLi9zcmMvbGlia2V5bWFwIFwKKy0tLQorIHRlc3RzL01ha2VmaWxlLmFtICAgICAgICAgICB8IDQgKystLQorIHRlc3RzL2FsdC1pcy1tZXRhLmluICAgICAgICB8IDIgKy0KKyB0ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluICAgfCA0ICsrLS0KKyB0ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4gfCAyICstCisgdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbiAgIHwgNCArKy0tCisgNSBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA4ZDBhYjY5Li41MTQ3YzI4IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtNyw4ICs3LDggQEAgQU1fQ1BQRkxBR1MgPSBcCiAgCS1JJChidWlsZGRpcikvLi4vc3JjL2xpYmtleW1hcCBcCi0tCS1EREFUQURJUj1cIiQoc3JjZGlyKVwiIC1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCi0rCS1EREFUQURJUj1cIi5cIiAtREJVSUxERElSPVwiJChidWlsZGRpcilcIgorIAktSSQoc3JjZGlyKS8uLi9zcmMvbGlia2JkZmlsZSBcCisgCS1JJChidWlsZGRpcikvLi4vc3JjL2xpYmtiZGZpbGUgXAorLQktRERBVEFESVI9XCIkKHNyY2RpcilcIiBcCistCS1EQUJTX0RBVEFESVI9XCIkKHJlYWxwYXRoICQoc3JjZGlyKSlcIiBcCisrCS1EREFUQURJUj1cIi5cIiBcCisrCS1EQUJTX0RBVEFESVI9XCIvdXNyL2xpYi9rYmQvcHRlc3QvdGVzdHNcIiBcCisgCS1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCiAgCi0gQU1fQ0ZMQUdTID0gJChDSEVDS19DRkxBR1MpCi0gTERBREQgID0gJCh0b3BfYnVpbGRkaXIpL3NyYy9saWJrZXltYXAvbGlia2V5bWFwLmxhICQoQ0hFQ0tfTElCUykgQElOVExMSUJTQAotSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9hbHQtaXMtbWV0YS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL2FsdC1pcy1tZXRhLmluCi0rKysga2JkLTIuMC40L3Rlc3RzL2FsdC1pcy1tZXRhLmluCi1AQCAtNyw4ICs3LDggQEAgY2QgIiRjd2QiCisgQU1fQ0ZMQUdTID0gJChDSEVDS19DRkxBR1MpICQoQ09ERV9DT1ZFUkFHRV9DRkxBR1MpCitkaWZmIC0tZ2l0IGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4gYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgoraW5kZXggM2ExNDQxZi4uZDgyOWYyZSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2FsdC1pcy1tZXRhLmluCisrKysgYi90ZXN0cy9hbHQtaXMtbWV0YS5pbgorQEAgLTcsNyArNyw3IEBAIGNkICIkY3dkIgogIHJjPTAKICB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgogIAotLS4vbGlia2V5bWFwLXNob3dtYXBzICJAREFUQURJUkAiL2FsdC1pcy1tZXRhLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KLS1jbXAgLXMgIkBEQVRBRElSQC8vYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/Ci0rLi9saWJrZXltYXAtc2hvd21hcHMgLi9hbHQtaXMtbWV0YS5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/Ci0rY21wIC1zICIuL2FsdC1pcy1tZXRhLm91dHB1dCIgIiR0ZW1wIiB8fCByYz0kPworLWRhdGFkaXI9IkBEQVRBRElSQC9kYXRhL2FsdC1pcy1tZXRhIgorK2RhdGFkaXI9Ii4vZGF0YS9hbHQtaXMtbWV0YSIKKyAKKyAuL2xpYmtleW1hcC1zaG93bWFwcyAiJGRhdGFkaXIiL2FsdC1pcy1tZXRhLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKyBjbXAgLXMgIiRkYXRhZGlyL2FsdC1pcy1tZXRhLm91dHB1dCIgIiR0ZW1wIiB8fCByYz0kPworZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4gYi90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluCitpbmRleCAwM2Q0Y2EyLi5kMWQwZTI2IDEwMDc1NQorLS0tIGEvdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbgorKysrIGIvdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbgorQEAgLTksOCArOSw4IEBAIHRlbXA9IiQobWt0ZW1wICJAQlVJTERESVJAL3RlbXAuWFhYWFhYWFhYIikiCisgCisgZGF0YWRpcj0iQERBVEFESVJAIgorIAorLS4vbGlia2V5bWFwLWJrZXltYXAgIiRkYXRhZGlyLyIuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKy1jbXAgLXMgIiRkYXRhZGlyL2RhdGEvZHVtcGtleXMtYmtleW1hcC9ia2V5bWFwLmJpbiIgIiR0ZW1wIiB8fCByYz0kPworKy4vbGlia2V5bWFwLWJrZXltYXAgLi4vZGF0YS9rZXltYXBzL2kzODYvcXdlcnR5L2RlZmtleW1hcC5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CisrY21wIC1zICIuL2RhdGEvZHVtcGtleXMtYmtleW1hcC9ia2V5bWFwLmJpbiIgIiR0ZW1wIiB8fCByYz0kPwogIAogIGlmIFsgIiRyYyIgIT0gMCBdOyB0aGVuCiAgCXByaW50ZiAnZmFpbGVkXG4nCi1JbmRleDoga2JkLTIuMC40L3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgotKysrIGtiZC0yLjAuNC90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KK2RpZmYgLS1naXQgYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4gYi90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KK2luZGV4IGEzYTVlY2UuLjY3YTczZWYgMTAwNzU1CistLS0gYS90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KKysrKyBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgogQEAgLTUsNyArNSw3IEBAIGN3ZD0iJChyZWFkbGluayAtZXYgIiR7MCUvKn0iKSIKICBjZCAiJGN3ZCIKICAKQEAgLTU0LDMgKzgyLDE4IEBACiAgCiAgY2hlY2tfa2V5bWFwKCkgewogIAlsb2NhbCBrbWFwIHRlbXAgcmMKK2RpZmYgLS1naXQgYS90ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluIGIvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbgoraW5kZXggMGYxN2M0MC4uN2U1MTYxZCAxMDA3NTUKKy0tLSBhL3Rlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4KKysrKyBiL3Rlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4KK0BAIC03LDggKzcsOCBAQCBjZCAiJGN3ZCIKKyByYz0wCisgdGVtcD0iJChta3RlbXAgIkBCVUlMRERJUkAvdGVtcC5YWFhYWFhYWFgiKSIKKyAKKy0uL2xpYmtleW1hcC1ta3RhYmxlICJAREFUQURJUkAvIi4uL2RhdGEva2V5bWFwcy9pMzg2L3F3ZXJ0eS9kZWZrZXltYXAubWFwID4gIiR0ZW1wIiB8fCByYz0kPworLWNtcCAtcyAiQERBVEFESVJAL2RhdGEvZHVtcGtleXMtbWt0YWJsZS9kZWZrZXltYXAuYyIgIiR0ZW1wIiB8fCByYz0kPworKy4vbGlia2V5bWFwLW1rdGFibGUgLi4vZGF0YS9rZXltYXBzL2kzODYvcXdlcnR5L2RlZmtleW1hcC5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CisrY21wIC1zICIuL2RhdGEvZHVtcGtleXMtbWt0YWJsZS9kZWZrZXltYXAuYyIgIiR0ZW1wIiB8fCByYz0kPworIAorIGlmIFsgIiRyYyIgIT0gMCBdOyB0aGVuCisgCXByaW50ZiAnZmFpbGVkXG4nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZjMyNTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXl0YWJsZSBmaWxlcyBhbmQga2V5Ym9hcmQgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rYmQtcHJvamVjdC5vcmcvIgotIyBldmVyeXRoaW5nIG1pbnVzIGNvbnNvbGUtZm9udHMgaXMgR1BMdjIrCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1ZmNjMzYxMjFkOTNlMWY2OWQ5NmEzMTMwNzhjOGI1IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0IHBrZ2NvbmZpZwotCi1SUkVQTEFDRVNfJHtQTn0gPSAiY29uc29sZS10b29scyIKLVJQUk9WSURFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgotUkNPTkZMSUNUU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2ZpbGU6Ly9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoJywgJycsIGQpfSBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzE2MzVhNWE4M2I2M2FjYTdmOTdhM2VhYjM5ZWJhYTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZkOTBhZjZiZWIyMjVhOWJiOWI5ZmI0MTRjMDkwZmJhNTNjOWE1NTc5M2UxNzJmNTA4Y2Q0MzY1MmU1OWE4OCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCAtLWRpc2FibGUtdGVzdHMsIGxpYmNoZWNrIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyBkdW1wa2V5cy1mdWxsdGFibGUgYWx0LWlzLW1ldGEKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpbnN0YWxsIC1EICR7Qn0vdGVzdHMvTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLSAgICBzZWQgLWkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyAtZSAnLyU6ICUuaW4vLC9eJC9kJyBcCi0JLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAotCS1lICdzOiR7REVCVUdfUFJFRklYX01BUH06OmcnIFwKLQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCS1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JLWUgJ3M6JHtTfS9jb25maWcvbWlzc2luZzo6ZycgXAotCS1lICdzOiR7V09SS0RJUn06OmcnIFwKLQktZSAnL2xpYmtleW1hcF8uKl9TT1VSQ0VTID0vZCcgLWUgJy8kKEVYRUVYVCk6LywvXiQvZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLQotICAgIGZpbmQgJHtCfS90ZXN0cyAtZXhlY3V0YWJsZSAtZXhlYyBpbnN0YWxsIHt9ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIFw7Ci0gICAgZmluZCAke1N9L3Rlc3RzIFwoIC1uYW1lIFwqLm1hcCAtbyAtbmFtZSBcKi5iaW4gLW8gLW5hbWUgXCoub3V0cHV0IFwpIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKLQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7U30vY29uZmlnL3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2NvbmZpZy90ZXN0LWRyaXZlcgotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tY29uc29sZWZvbnRzICR7UE59LWtleW1hcHMgJHtQTn0tdW5pbWFwcyAke1BOfS1jb25zb2xldHJhbnMiCi0KLUZJTEVTXyR7UE59LWNvbnNvbGVmb250cyA9ICIke2RhdGFkaXJ9L2NvbnNvbGVmb250cyIKLUZJTEVTXyR7UE59LWNvbnNvbGV0cmFucyA9ICIke2RhdGFkaXJ9L2NvbnNvbGV0cmFucyIKLUZJTEVTXyR7UE59LWtleW1hcHMgPSAiJHtkYXRhZGlyfS9rZXltYXBzIgotRklMRVNfJHtQTn0tdW5pbWFwcyA9ICIke2RhdGFkaXJ9L3VuaW1hcHMiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gIm1ha2UiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IHNob3drZXkiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NzAwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4yLjAuYmIKQEAgLTAsMCArMSw3MiBAQAorU1VNTUFSWSA9ICJLZXl0YWJsZSBmaWxlcyBhbmQga2V5Ym9hcmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rYmQtcHJvamVjdC5vcmcvIgorIyBldmVyeXRoaW5nIG1pbnVzIGNvbnNvbGUtZm9udHMgaXMgR1BMdjIrCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5MmY1NjlhNTU1YmE5YzA3YTU2OGE3YzBjNGZhNjNhIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0IHBrZ2NvbmZpZworCitERVBFTkRTICs9ICJmbGV4LW5hdGl2ZSIKKworUlJFUExBQ0VTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCitSUFJPVklERVNfJHtQTn0gPSAiY29uc29sZS10b29scyIKK1JDT05GTElDVFNfJHtQTn0gPSAiY29uc29sZS10b29scyIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaCcsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hbmFseXplLmwtYWRkLW1pc3Npbmctc3RyaW5nLWZvcm1hdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1EQVRBRElSLWFuZC1hcHBlbmQtaTM4Ni10by1maXgtbGlia2JkZmlsZS10ZXN0MDgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X2NmbGFncy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQxZDdhZTBiNWZiODc1ZGMwODI3MzFlMDljZDBjOGJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxYTFiYzVmNmZiM2IxOGNlOWZkZDcxN2U0NTMzMzY4MDYwYTMxODJhMzljNzE1NWVhZjdlYzBmNWY4M2U5ZjciCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXZsb2NrLCAtLWRpc2FibGUtdmxvY2ssIGxpYnBhbSwiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywgLS1kaXNhYmxlLXRlc3RzLCBsaWJjaGVjayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgYWx0LWlzLW1ldGEgZHVtcGtleXMtYmtleW1hcCBkdW1wa2V5cy1mdWxsdGFibGUgZHVtcGtleXMtbWt0YWJsZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLUQgJHtCfS90ZXN0cy9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwktZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisJLWUgJ3M6JHtERUJVR19QUkVGSVhfTUFQfTo6ZycgXAorCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwktZSAnczoke1N9L2NvbmZpZy9taXNzaW5nOjpnJyBcCisJLWUgJ3M6JHtXT1JLRElSfTo6ZycgXAorCS1lICcvXmxpYi4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorCisgICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvZmluZGZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS9kYXRhICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L2NvbmZpZy90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9jb25maWcvdGVzdC1kcml2ZXIKK30KKworUEFDS0FHRVMgKz0gIiR7UE59LWNvbnNvbGVmb250cyAke1BOfS1rZXltYXBzICR7UE59LXVuaW1hcHMgJHtQTn0tY29uc29sZXRyYW5zIgorCitGSUxFU18ke1BOfS1jb25zb2xlZm9udHMgPSAiJHtkYXRhZGlyfS9jb25zb2xlZm9udHMiCitGSUxFU18ke1BOfS1jb25zb2xldHJhbnMgPSAiJHtkYXRhZGlyfS9jb25zb2xldHJhbnMiCitGSUxFU18ke1BOfS1rZXltYXBzID0gIiR7ZGF0YWRpcn0va2V5bWFwcyIKK0ZJTEVTXyR7UE59LXVuaW1hcHMgPSAiJHtkYXRhZGlyfS91bmltYXBzIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJtYWtlIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiY2h2dCBkZWFsbG9jdnQgZmdjb25zb2xlIG9wZW52dCBzaG93a2V5IFwKKyAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3Zsb2NrJywnJywgZCl9IgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE3NGViMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjE1LmJiCkBAIC0wLDAgKzEsMTggQEAKKyMKKyMgVGhpcyBwcm92aWRlcyBsaWJjcnlwdG8uc28uMSB3aGljaCBjb250YWlucyBvYnNvbGV0ZSBBUElzLCBuZWVkZWQgZm9yIHVuaW5hdGl2ZSBpbiBwYXJ0aWN1bGFyCisjCisKK3JlcXVpcmUgbGlieGNyeXB0LmluYworCitQUk9WSURFUyA9ICIiCitBVVRPX0xJQk5BTUVfUEtHUyA9ICIiCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKKworQVBJID0gIi0tZW5hYmxlLW9ic29sZXRlLWFwaSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCXJtIC1yZiAke0R9JHtkYXRhZGlyfQorfQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjNDY0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotIwotIyBUaGlzIHByb3ZpZGVzIGxpYmNyeXB0by5zby4xIHdoaWNoIGNvbnRhaW5zIG9ic29sZXRlIEFQSXMsIG5lZWRlZCBmb3IgdW5pbmF0aXZlIGluIHBhcnRpY3VsYXIKLSMKLQotcmVxdWlyZSBsaWJ4Y3J5cHRfJHtQVn0uYmIKLQotUFJPVklERVMgPSAiIgotQVVUT19MSUJOQU1FX1BLR1MgPSAiIgotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCi0KLUFQSSA9ICItLWVuYWJsZS1vYnNvbGV0ZS1hcGkiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0KLQlybSAtcmYgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlybSAtcmYgJHtEfSR7ZGF0YWRpcn0KLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlMTM2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC5pbmMKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgorREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9M2JiNjYxNGNmNTg4MGNiZjFiOWRiZDllM2QxNDVlMmMgXAorICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgorU1JDUkVWID0gIjgyMzQzN2QwMTVjZDRhYjRkMTAwZWQyMDVmMjE4NjgxYjAzYWU0NWMiCitTUkNCUkFOQ0ggPz0gImRldmVsb3AiCisKK1BST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjcnlwdCouc28uKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliY3J5cHQtKi5zbyBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlib3djcnlwdCouc28uKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlib3djcnlwdC0qLnNvIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IC1Xbm8tZXJyb3IiCitDUFBGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtV25vLWVycm9yIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCitBUEkgPSAiLS1kaXNhYmxlLW9ic29sZXRlLWFwaSIKK0VYVFJBX09FQ09ORiArPSAiJHtBUEl9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWRiYTJmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC4xNS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgbGlieGNyeXB0LmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ODdmNjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgotREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9M2JiNjYxNGNmNTg4MGNiZjFiOWRiZDllM2QxNDVlMmMgXAotICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgotU1JDUkVWID0gImFjZDg0OTk3YTVhOGIyYmFkZDI4YjcwYTY0MmFiZWUxMTI3MmZhZDIiCi1TUkNCUkFOQ0ggPz0gImRldmVsb3AiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvY3J5cHQiCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJjcnlwdCouc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGliY3J5cHQtKi5zbyBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlib3djcnlwdCouc28uKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlib3djcnlwdC0qLnNvIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IC1Xbm8tZXJyb3IiCi1DUFBGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtV25vLWVycm9yIgotCi1BUEkgPSAiLS1kaXNhYmxlLW9ic29sZXRlLWFwaSIKLUVYVFJBX09FQ09ORiArPSAiJHtBUEl9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKaW5kZXggMmI5MmRiYy4uNWU5YTBhNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDc4ZGJkNGMwOWQ2MTdhOWNiNzMwZDc5NmY5NGVlNGQ5Mzg0MGQzY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJiNWZiNDE2YWEyNzVmZDJhMTdhMDEzOWEyZjc4Mzk5OGJjYjQyY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBQZXRlciBLamVsbGVyc3RlZHQgPHBrakBheGlzLmNvbT4KIERhdGU6IEZyaSwgOSBKdW4gMjAxNyAxNzo1MDo0NiArMDIwMAogU3ViamVjdDogW1BBVENIXSBNYWtlIHB0ZXN0IHJ1biB0aGUgcHl0aG9uIHRlc3RzIGlmIHB5dGhvbiBpcyBlbmFibGVkCkBAIC04LDE4ICs4LDE5IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8ICAyICstCiAgcHl0aG9uL01ha2VmaWxlLmFtICAgICAgICAgICB8ICA5ICsrKysrKysrKwotIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAxMiArKysrKysrKysrLS0KKyBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gICAgIHwgMTAgKysrKysrKysrKwogIHB5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkgfCAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieG1sMi0yLjkuNy5vcmlnL01ha2VmaWxlLmFtCi0rKysgbGlieG1sMi0yLjkuNy9NYWtlZmlsZS5hbQotQEAgLTIwNyw5ICsyMDcsOSBAQCBpbnN0YWxsLXB0ZXN0OgorZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGFlNjIyNzQuLmJkMWU0MjUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0yMDMsOSArMjAzLDkgQEAgaW5zdGFsbC1wdGVzdDoKICAJaW5zdGFsbCAkKGNoZWNrX1BST0dSQU1TKSAkKERFU1RESVIpKQogIAljcCAtciAkKHNyY2RpcikvdGVzdCAkKERFU1RESVIpCiAgCWNwIC1yICQoc3JjZGlyKS9yZXN1bHQgJChERVNURElSKQpAQCAtMzAsMTEgKzMxLDExIEBACiAgCiAgcnVudGVzdHM6IHJ1bnRlc3QkKEVYRUVYVCkgdGVzdHJlY3Vyc2UkKEVYRUVYVCkgdGVzdGFwaSQoRVhFRVhUKSBcCiAgICAgICAgICAgIHRlc3RjaGFyJChFWEVFWFQpIHRlc3RkaWN0JChFWEVFWFQpIHJ1bnhtbGNvbmYkKEVYRUVYVCkKLUluZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vTWFrZWZpbGUuYW0KLSsrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTQ4LDcgKzQ4LDE2IEBAIEdFTkVSQVRFRCA9IGxpYnhtbDJjbGFzcy5weSBsaWJ4bWwyY2xhc3MKK2RpZmYgLS1naXQgYS9weXRob24vTWFrZWZpbGUuYW0gYi9weXRob24vTWFrZWZpbGUuYW0KK2luZGV4IDM0YWVkOTYuLmJhM2VjNmEgMTAwNjQ0CistLS0gYS9weXRob24vTWFrZWZpbGUuYW0KKysrKyBiL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTQ4LDcgKzQ4LDE2IEBAIEdFTkVSQVRFRCA9IGxpYnhtbDJjbGFzcy5weSBsaWJ4bWwyY2xhc3MudHh0ICQoQlVJTFRfU09VUkNFUykKICAKICAkKEdFTkVSQVRFRCk6ICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChBUElfREVTQykKICAJJChQWVRIT04pICQoc3JjZGlyKS9nZW5lcmF0b3IucHkgJChzcmNkaXIpCkBAIC01MSwxMCArNTIsMTAgQEAKICsuUEhPTlk6IHRlc3RzIHRlc3QKICB0ZXN0cyB0ZXN0OiBhbGwKICAJY2QgdGVzdHMgJiYgJChNQUtFKSB0ZXN0cwotSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAyMjdlMjRkLi4wMjFiYjI5IDEwMDY0NAorLS0tIGEvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC01OSw2ICs1OSwxMSBAQCBYTUxTPQkJXAogIENMRUFORklMRVMgPSBjb3JlIHRtcC54bWwgKi5weWMKICAKQEAgLTY3LDI0ICs2OCwyNSBAQAogIHRlc3RzOiAkKFBZVEVTVFMpCiAgCUBmb3IgZiBpbiAkKFhNTFMpIDsgZG8gdGVzdCAtZiAkJGYgfHwgJChMTl9TKSAkKHNyY2RpcikvJCRmIC4gOyBkb25lCiAgCUBlY2hvICIjIyBydW5uaW5nIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzIgotQEAgLTY4LDggKzczLDExIEBAIHRlc3RzOiAkKFBZVEVTVFMpCi0gCSAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg7IFwKLSAJICAgZm9yIHRlc3QgaW4gJChQWVRFU1RTKSA7IFwKLSAJICAgZG8gbG9nPWAkKFBZVEhPTikgJChzcmNkaXIpLyQkdGVzdGAgOyBcCi0tCSAgIGlmIFsgImBlY2hvICQkbG9nIHwgZ3JlcCBPS2AiID0gIiIgXSA7IHRoZW4gXAotLQkgICBlY2hvICItLSAkJHRlc3QiIDsgZWNobyAiJCRsb2ciIDsgZmkgOyBkb25lKQotKwkgICBpZiBbICJgZWNobyAkJGxvZyB8IGdyZXAgT0tgIiBdOyB0aGVuIFwKLSsJICAgZWNobyAiUEFTUzogJCR0ZXN0IjsgZWxzZSBcCi0rCSAgIGVjaG8gIiQkbG9nIjsgZWNobyAiRkFJTDogJCR0ZXN0IjsgZmk7IGRvbmUpCitAQCAtNzAsOSArNzUsMTQgQEAgdGVzdHM6ICQoUFlURVNUUykKKyAJICAgIGlmIFsgIiQkPyIgLW5lIDAgXSA7IHRoZW4gXAorIAkgICAgICBlY2hvICItLSAkJHRlc3QiIDsgXAorIAkgICAgICBlY2hvICIkJGxvZyIgOyBcCisrICAgICAgICAgICAgICBlY2hvICJGQUlMOiAkJHRlc3QiOyBcCisgCSAgICAgIGV4aXQgMSA7IFwKKysgICAgICAgICAgICBlbHNlIFwKKysgICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICQkdGVzdCI7IFwKKyAJICAgIGZpIDsgXAorIAkgIGRvbmUpCiAgZWxzZQogK2luc3RhbGwtcHRlc3Q6CiArCiAgdGVzdHM6CiAgZW5kaWYKLUluZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQotKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQorZGlmZiAtLWdpdCBhL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkgYi9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CitpbmRleCA4MWQwYWNjLi4xNjJjOGRiIDEwMDc1NQorLS0tIGEvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQorKysrIGIvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQogQEAgLTI1LDcgKzI1LDcgQEAgY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgd2hlbiB0aGUgZXhjZXB0aW9uIGlzIHJhaXNlZCwgY2hlY2sgdGhlIGxpYnhtbDIubGFzdEVycm9yIGZvcgogICAgICAgICAgZXhwZWN0ZWQgdmFsdWVzLiIiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOS0yMDM4OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTktMjAzODgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlYjY1YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTktMjAzODgucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA3ZmZjZDQ0ZDdlNmM0NjcwNGY4YWYwMzIxZDkzMTRjZDI2ZTBlMThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CitEYXRlOiBUdWUsIDIwIEF1ZyAyMDE5IDE2OjMzOjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBtZW1vcnkgbGVhayBpbiB4bWxTY2hlbWFWYWxpZGF0ZVN0cmVhbQorCitXaGVuIGN0eHQtPnNjaGVtYSBpcyBOVUxMLCB4bWxTY2hlbWFTQVhQbHVnLT54bWxTY2hlbWFQcmVSdW4KK2FsbG9jIGEgbmV3IHNjaGVtYSBmb3IgY3R4dC0+c2NoZW1hIGFuZCBzZXQgdmN0eHQtPnhzaUFzc2VtYmxlCit0byAxLiBUaGVuIHhtbFNjaGVtYVZTdGFydC0+eG1sU2NoZW1hUHJlUnVuIGluaXRpYWxpemUKK3ZjdHh0LT54c2lBc3NlbWJsZSB0byAwIGFnYWluIHdoaWNoIGNhdXNlIHRoZSBhbGxvY2VkIHNjaGVtYQorY2FuIG5vdCBiZSBmcmVlZCBhbnltb3JlLgorCitGb3VuZCB3aXRoIGxpYkZ1enplci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvY29tbWl0LzdmZmNkNDRkN2U2YzQ2NzA0ZjhhZjAzMjFkOTMxNGNkMjZlMGUxOGFdCitDVkU6IENWRS0yMDE5LTIwMzg4CisKK1NpZ25lZC1vZmYtYnk6IFpoaXBlbmcgWGllIDx4aWV6aGlwZW5nMUBodWF3ZWkuY29tPgorU2lnbmVkLW9mZi1ieTogTGVlIENoZWUgWWFuZyA8Y2hlZS55YW5nLmxlZUBpbnRlbC5jb20+CistLS0KKyB4bWxzY2hlbWFzLmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEveG1sc2NoZW1hcy5jIGIveG1sc2NoZW1hcy5jCitpbmRleCAzMDFjODQ0OS4uMzlkOTIxODIgMTAwNjQ0CistLS0gYS94bWxzY2hlbWFzLmMKKysrKyBiL3htbHNjaGVtYXMuYworQEAgLTI4MDkwLDcgKzI4MDkwLDYgQEAgeG1sU2NoZW1hUHJlUnVuKHhtbFNjaGVtYVZhbGlkQ3R4dFB0ciB2Y3R4dCkgeworICAgICB2Y3R4dC0+bmJlcnJvcnMgPSAwOworICAgICB2Y3R4dC0+ZGVwdGggPSAtMTsKKyAgICAgdmN0eHQtPnNraXBEZXB0aCA9IC0xOworLSAgICB2Y3R4dC0+eHNpQXNzZW1ibGUgPSAwOworICAgICB2Y3R4dC0+aGFzS2V5cmVmcyA9IDA7CisgI2lmZGVmIEVOQUJMRV9JRENfTk9ERV9UQUJMRVNfVEVTVAorICAgICB2Y3R4dC0+Y3JlYXRlSURDTm9kZVRhYmxlcyA9IDE7CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDIwLTc1OTUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDIwLTc1OTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjZmVmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMjAtNzU5NS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDBlMWE0OWM4OTA3NjQ1ZDJlMTU1ZjBkODlkNGQ5ODk1YWM1MTEyYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGlwZW5nIFhpZSA8eGllemhpcGVuZzFAaHVhd2VpLmNvbT4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMTc6MzA6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGluZmluaXRlIGxvb3AgaW4geG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMKKworV2hlbiBjdHh0LT5pbnN0YXRlID09IFhNTF9QQVJTRVJfRU9GLHhtbFBhcnNlU3RyaW5nRW50aXR5UmVmCityZXR1cm4gTlVMTCB3aGljaCBjYXVzZSBhIGluZmluaXRlIGxvb3AgaW4geG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMKKworRm91bmQgd2l0aCBsaWJGdXp6ZXIuCisKK1NpZ25lZC1vZmYtYnk6IFpoaXBlbmcgWGllIDx4aWV6aGlwZW5nMUBodWF3ZWkuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9jb21taXQvMGUxYTQ5Yzg5MDc2XQorQ1ZFOiBDVkUtMjAyMC03NTk1CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiAKKy0tLQorIHBhcnNlci5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCitpbmRleCBkMWMzMTk2My4uYTM0YmI2Y2QgMTAwNjQ0CistLS0gYS9wYXJzZXIuYworKysrIGIvcGFyc2VyLmMKK0BAIC0yNjQ2LDcgKzI2NDYsOCBAQCB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcyh4bWxQYXJzZXJDdHh0UHRyIGN0eHQsIGNvbnN0IHhtbENoYXIgKnN0ciwgaW50IGxlbiwKKyAgICAgZWxzZQorICAgICAgICAgYyA9IDA7CisgICAgIHdoaWxlICgoYyAhPSAwKSAmJiAoYyAhPSBlbmQpICYmIC8qIG5vbiBpbnB1dCBjb25zdW1pbmcgbG9vcCAqLworLQkgICAoYyAhPSBlbmQyKSAmJiAoYyAhPSBlbmQzKSkgeworKyAgICAgICAgICAgKGMgIT0gZW5kMikgJiYgKGMgIT0gZW5kMykgJiYKKysgICAgICAgICAgIChjdHh0LT5pbnN0YXRlICE9IFhNTF9QQVJTRVJfRU9GKSkgeworIAorIAlpZiAoYyA9PSAwKSBicmVhazsKKyAgICAgICAgIGlmICgoYyA9PSAnJicpICYmIChzdHJbMV0gPT0gJyMnKSkgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdhY2ViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuMTAuYmIKQEAgLTAsMCArMSwxMTIgQEAKK1NVTU1BUlkgPSAiWE1MIEMgUGFyc2VyIExpYnJhcnkgYW5kIFRvb2xraXQiCitERVNDUklQVElPTiA9ICJUaGUgWE1MIFBhcnNlciBMaWJyYXJ5IGFsbG93cyBmb3IgbWFuaXB1bGF0aW9uIG9mIFhNTCBmaWxlcy4gIExpYnhtbDIgZXhwb3J0cyBQdXNoIGFuZCBQdWxsIHR5cGUgcGFyc2VyIGludGVyZmFjZXMgZm9yIGJvdGggWE1MIGFuZCBIVE1MLiAgSXQgY2FuIGRvIERURCB2YWxpZGF0aW9uIGF0IHBhcnNlIHRpbWUsIG9uIGEgcGFyc2VkIGRvY3VtZW50IGluc3RhbmNlIG9yIHdpdGggYW4gYXJiaXRyYXJ5IERURC4gIExpYnhtbDIgaW5jbHVkZXMgY29tcGxldGUgWFBhdGgsIFhQb2ludGVyIGFuZCBYaW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMuICBJdCBhbHNvIGhhcyBhIFNBWCBsaWtlIGludGVyZmFjZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEV4cGF0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yMDQ0NDE3ZTJlNTAwNmI2NWE4YjkwNjdiNjgzZmNmMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9oYXNoLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xNTttZDU9OTZmNzI5NjYwNWVhZTgwNzY3MGZiMDg5NDc4Mjk5NjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlzdC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTM7bWQ1PWNkYmZhM2RlZTUxYzA5OWVkYjA0ZTM5Zjc2MmVlOTA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaW8uYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE0O21kNT02YzAyNTc1M2M4NmQ5NTg3MjJlYzc2ZTk0Y2FlOTMyZSIKKworREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaWNvbnYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7c3ViZGlyPSR7QlB9O25hbWU9dGVzdHRhciBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtNjRiaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLXNpdGVwYWNrYWdlcy1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTc1OTUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMjAzODgucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiMTA5NDJhMWRjMjMxMzdhOGFhMDdmMDYzOWNiZmVjZTUiCitTUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gImFhZmVlMTkzZmZiOGZlMGM4MmQ0YWZlZjZlZjkxOTcyY2JhZjVmZWVhMTAwZWRjMmYyNjI3NTA2MTFiNGJlMWYiCitTUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKK1NSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QgZmVhdHVyZXNfY2hlY2sKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2xpYmdjYyBweXRob24zLWNvcmUgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc2hlbGwgIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtdW5pdHRlc3QgJHtQTn0tcHl0aG9uJywgJycsIGQpfSIKKworUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uMy1jb3JlJywgJycsIGQpfSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1ldWMtanAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS1iYXNlLWVuLXVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCisjIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZWQgZm9yIFJQTSB1c2UKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCitFWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAorICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKKyAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCit9CisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKK1BBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgZXhlY3V0YWJsZXMgdGFrZSBsb25nZXIgdG8gcGFja2FnZTogdGhlc2Ugc2hvdWxkIG5vdCBiZSBleGVjdXRhYmxlCisJZmluZCAke1N9L3htbGNvbmYvIC10eXBlIGYgLWV4ZWMgY2htb2QgLXgge30gXCsKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIGNoZWNrLWFtCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCWNwIC1yICR7U30veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKKwkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQorCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAorCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCisJZmkKKwkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorCSAgICBzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKKwkgICAge30gKworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKKwlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE3ZTA5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MIEMgUGFyc2VyIExpYnJhcnkgYW5kIFRvb2xraXQiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MIFBhcnNlciBMaWJyYXJ5IGFsbG93cyBmb3IgbWFuaXB1bGF0aW9uIG9mIFhNTCBmaWxlcy4gIExpYnhtbDIgZXhwb3J0cyBQdXNoIGFuZCBQdWxsIHR5cGUgcGFyc2VyIGludGVyZmFjZXMgZm9yIGJvdGggWE1MIGFuZCBIVE1MLiAgSXQgY2FuIGRvIERURCB2YWxpZGF0aW9uIGF0IHBhcnNlIHRpbWUsIG9uIGEgcGFyc2VkIGRvY3VtZW50IGluc3RhbmNlIG9yIHdpdGggYW4gYXJiaXRyYXJ5IERURC4gIExpYnhtbDIgaW5jbHVkZXMgY29tcGxldGUgWFBhdGgsIFhQb2ludGVyIGFuZCBYaW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMuICBJdCBhbHNvIGhhcyBhIFNBWCBsaWtlIGludGVyZmFjZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEV4cGF0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yMDQ0NDE3ZTJlNTAwNmI2NWE4YjkwNjdiNjgzZmNmMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9oYXNoLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xNTttZDU9OTZmNzI5NjYwNWVhZTgwNzY3MGZiMDg5NDc4Mjk5NjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlzdC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTM7bWQ1PWNkYmZhM2RlZTUxYzA5OWVkYjA0ZTM5Zjc2MmVlOTA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaW8uYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE0O21kNT02YzAyNTc1M2M4NmQ5NTg3MjJlYzc2ZTk0Y2FlOTMyZSIKLQotREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaWNvbnYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7c3ViZGlyPSR7QlB9O25hbWU9dGVzdHRhciBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtNjRiaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLXNpdGVwYWNrYWdlcy1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW2xpYnRhci5tZDVzdW1dID0gImMwNGE1YTBhMDQyZWFhMTU3ZThlOGM5ZWFiZTc2YmQ2IgotU1JDX1VSSVtsaWJ0YXIuc2hhMjU2c3VtXSA9ICI5NGZiNzA4OTAxNDNlM2M2NTQ5ZjI2NWNlZTkzZWMwNjRjODBhODRjNDJhZDBmMjNlODVlZTFmZDY1NDBhODcxIgotU1JDX1VSSVt0ZXN0dGFyLm1kNXN1bV0gPSAiYWUzZDFlYmUwMDBhMzk3MmFmYTEwNGNhN2YwZTFiNGEiCi1TUkNfVVJJW3Rlc3R0YXIuc2hhMjU2c3VtXSA9ICI5NjE1MTY4NWNlYzk5N2UxZjlmMzM4N2UzNjI2ZDYxZTYyODRkNGQ2ZTY2ZTBlNDQwYzIwOTI4NmMwM2U5Y2M3IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3htbDItY29uZmlnIgotCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0IGZlYXR1cmVzX2NoZWNrCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsICBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlibTExNDEgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlzbzg4NTktNSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbi11cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotRVhUUkFfT0VDT05GX2xpbnV4c3RkYmFzZSA9ICItLXdpdGgtZGVidWcgLS13aXRoLWxlZ2FjeSAtLXdpdGgtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgICMgYXV0b25hbWVyIHdvdWxkIGNhbGwgdGhpcyBsaWJ4bWwyLTIsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQKLSAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6Ci0gICAgICAgIGQuc2V0VmFyKCdQS0dfbGlieG1sMicsICcke01MUFJFRklYfWxpYnhtbDInKQotfQotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCi1QQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbDJDb25mLnNoICR7bGliZGlyfS9jbWFrZS8qIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQotCWZpbmQgJHtTfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjay1hbQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljcCAtciAke1N9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnc3xeXChQWVRIT04gPSBcKS4qfFwxJHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JyBcCi0JCSAgICAke0R9JHtQVEVTVF9QQVRIfS9weXRob24vdGVzdHMvTWFrZWZpbGUKLQkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKLQkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JwotCWZpCi0JI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcwotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLQkgICAgc2VkIC1pIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkgICAgLWUgJy9eUkVMREFURS9kJyBcCi0JICAgIHt9ICsKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQkjIERvY3MgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIG5hdGl2ZSBjYXNlCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ3RrLWRvYyAtcmYKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMyZDAxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwuYmIKQEAgLTAsMCArMSwzNiBAQAorcmVxdWlyZSByZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKKworREVTQ1JJUFRJT04gPSAiU0RLIHR5cGUgdGFyZ2V0IGZvciBidWlsZGluZyBhIHN0YW5kYWxvbmUgdGFyYmFsbCBjb250YWluaW5nIGJ1aWxkLWVzc2VudGlhbHMsIHB5dGhvbjMsIGNocnBhdGgsIFwKKyAgICAgICAgICAgICAgIG1ha2UsIGdpdCBhbmQgdGFyLiBUaGUgdGFyYmFsbCBjYW4gYmUgdXNlZCB0byBydW4gYml0YmFrZSBidWlsZHMgb24gc3lzdGVtcyB3aGljaCBkb24ndCBtZWV0IHRoZSBcCisgICAgICAgICAgICAgICB1c3VhbCB2ZXJzaW9uIHJlcXVpcmVtZW50cyBhbmQgaGF2ZSBhbmNpZW50IGNvbXBpbGVycy4iCitTVU1NQVJZID0gIlN0YW5kYWxvbmUgdGFyYmFsbCBmb3IgcnVubmluZyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGluYWRlcXVhdGUgc29mdHdhcmUgYW5kIGFuY2llbnQgY29tcGlsZXJzIgorTElDRU5TRSA9ICJNSVQiCisKKyMgQWRkIG5hdGl2ZXNkayBlcXVpdmFsZW50IG9mIGJ1aWxkLWVzc2VudGlhbHMKK1RPT0xDSEFJTl9IT1NUX1RBU0sgKz0gIlwKKyAgICBuYXRpdmVzZGstYXV0b21ha2UgXAorICAgIG5hdGl2ZXNkay1hdXRvY29uZiBcCisgICAgbmF0aXZlc2RrLWJpbnV0aWxzIFwKKyAgICBuYXRpdmVzZGstYmludXRpbHMtc3ltbGlua3MgXAorICAgIG5hdGl2ZXNkay1jcHAgXAorICAgIG5hdGl2ZXNkay1jcHAtc3ltbGlua3MgXAorICAgIG5hdGl2ZXNkay1nY2MgXAorICAgIG5hdGl2ZXNkay1nY2Mtc3ltbGlua3MgXAorICAgIG5hdGl2ZXNkay1nKysgXAorICAgIG5hdGl2ZXNkay1nKystc3ltbGlua3MgXAorICAgIG5hdGl2ZXNkay1nZXR0ZXh0IFwKKyAgICBuYXRpdmVzZGstbGliYXRvbWljIFwKKyAgICBuYXRpdmVzZGstbGliZ2NjIFwKKyAgICBuYXRpdmVzZGstbGliZ29tcC1kZXYgXAorICAgIG5hdGl2ZXNkay1saWJzdGRjKysgXAorICAgIG5hdGl2ZXNkay1saWJzdGRjKystZGV2IFwKKyAgICBuYXRpdmVzZGstbGlic3RkYysrLXN0YXRpY2RldiBcCisgICAgbmF0aXZlc2RrLWxpYnRvb2wgXAorICAgIG5hdGl2ZXNkay1wa2djb25maWcgXAorICAgIG5hdGl2ZXNkay1nbGliYy11dGlscyBcCisgICAgbmF0aXZlc2RrLWxpYnhjcnlwdC1kZXYgXAorICAgICIKKworVE9PTENIQUlOX09VVFBVVE5BTUUgPSAiJHtTREtfQVJDSH0tYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0ke0RJU1RST19WRVJTSU9OfSIKKworU0RLX1RJVExFID0gIkV4dGVuZGVkIEJ1aWxkIHRvb2xzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKaW5kZXggOWM1YzJjYy4uYzQ5ODAyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCkBAIC0yNSw2ICsyNSw4IEBACiAgICAgbmF0aXZlc2RrLXRleGluZm8gXAogICAgIG5hdGl2ZXNkay1saWJuc3MtbmlzIFwKICAgICBuYXRpdmVzZGstcnBjc3ZjLXByb3RvIFwKKyAgICBuYXRpdmVzZGstcGF0Y2ggXAorICAgIG5hdGl2ZXNkay1tdG9vbHMgXAogICAgICIKIAogTVVMVElNQUNIX1RBUkdFVF9TWVMgPSAiJHtTREtfQVJDSH0tbmF0aXZlc2RrJHtTREtfVkVORE9SfS0ke1NES19PU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvY3ZlLXVwZGF0ZS1kYi1uYXRpdmUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvY3ZlLXVwZGF0ZS1kYi1uYXRpdmUuYmIKaW5kZXggZGIxZDY5YS4uZjI3YWRlNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2N2ZS11cGRhdGUtZGItbmF0aXZlLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYgpAQCAtMTMsOCArMTMsMTUgQEAKIGRlbHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdAogCiBweXRob24gKCkgewotICAgIGlmIG5vdCBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0ZJTEUiKToKKyAgICBjdmVfY2hlY2tfZGJfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpCisgICAgaWYgbm90IGN2ZV9jaGVja19kYl9maWxlOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTa2lwIHJlY2lwZSB3aGVuIGN2ZS1jaGVjayBjbGFzcyBpcyBub3QgbG9hZGVkLiIpCisKKyAgICBpZiBvcy5wYXRoLmV4aXN0cygiJXMtam91cm5hbCIgJSBjdmVfY2hlY2tfZGJfZmlsZSApOgorICAgICAgICBvcy5yZW1vdmUoIiVzLWpvdXJuYWwiICUgY3ZlX2NoZWNrX2RiX2ZpbGUpCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY3ZlX2NoZWNrX2RiX2ZpbGUpOgorICAgICAgICAgICAgb3MucmVtb3ZlKGN2ZV9jaGVja19kYl9maWxlKQogfQogCiBweXRob24gZG9fcG9wdWxhdGVfY3ZlX2RiKCkgewpAQCAtMjcsNyArMzQsNyBAQAogCiAgICAgYmIudXRpbHMuZXhwb3J0X3Byb3hpZXMoZCkKIAotICAgIEJBU0VfVVJMID0gImh0dHBzOi8vbnZkLm5pc3QuZ292L2ZlZWRzL2pzb24vY3ZlLzEuMC9udmRjdmUtMS4wLSIKKyAgICBCQVNFX1VSTCA9ICJodHRwczovL252ZC5uaXN0Lmdvdi9mZWVkcy9qc29uL2N2ZS8xLjEvbnZkY3ZlLTEuMS0iCiAgICAgWUVBUl9TVEFSVCA9IDIwMDIKIAogICAgIGRiX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0ZJTEUiKQpAQCAtNTksNyArNjYsMTMgQEAKICAgICAgICAganNvbl91cmwgPSB5ZWFyX3VybCArICIuanNvbi5neiIKIAogICAgICAgICAjIFJldHJpZXZlIG1ldGEgbGFzdCBtb2RpZmllZCBkYXRlCi0gICAgICAgIHJlc3BvbnNlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihtZXRhX3VybCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKG1ldGFfdXJsKQorICAgICAgICBleGNlcHQgdXJsbGliLmVycm9yLlVSTEVycm9yIGFzIGU6CisgICAgICAgICAgICBjdmVfZi53cml0ZSgnV2FybmluZzogQ1ZFIGRiIHVwZGF0ZSBlcnJvciwgVW5hYmxlIHRvIGZldGNoIENWRSBkYXRhLlxuXG4nKQorICAgICAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIGZldGNoIENWRSBkYXRhICglcykiICUgZS5yZWFzb24pCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBpZiByZXNwb25zZToKICAgICAgICAgICAgIGZvciBsIGluIHJlc3BvbnNlLnJlYWQoKS5kZWNvZGUoInV0Zi04Iikuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgIGtleSwgdmFsdWUgPSBsLnNwbGl0KCI6IiwgMSkKQEAgLTEyMiw5ICsxMzUsMTIgQEAKICAgICAgICAgICAgIHByb2R1Y3QgPSBjcGUyM1s0XQogICAgICAgICAgICAgdmVyc2lvbiA9IGNwZTIzWzVdCiAKLSAgICAgICAgICAgIGlmIHZlcnNpb24gIT0gJyonOgorICAgICAgICAgICAgaWYgdmVyc2lvbiAhPSAnKicgYW5kIHZlcnNpb24gIT0gJy0nOgogICAgICAgICAgICAgICAgICMgVmVyc2lvbiBpcyBkZWZpbmVkLCB0aGlzIGlzIGEgJz0nIG1hdGNoCiAgICAgICAgICAgICAgICAgeWllbGQgW2N2ZUlkLCB2ZW5kb3IsIHByb2R1Y3QsIHZlcnNpb24sICc9JywgJycsICcnXQorICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09ICctJzoKKyAgICAgICAgICAgICAgICAjIG5vIHZlcnNpb24gaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgeWllbGQgW2N2ZUlkLCB2ZW5kb3IsIHByb2R1Y3QsIHZlcnNpb24sICcnLCAnJywgJyddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgUGFyc2Ugc3RhcnQgdmVyc2lvbiwgZW5kIHZlcnNpb24gYW5kIG9wZXJhdG9ycwogICAgICAgICAgICAgICAgIG9wX3N0YXJ0ID0gJycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCmluZGV4IDRkNjUzNzAuLmJlZGRlMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYwpAQCAtMTYsMTEgKzE2LDE2IEBACiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCiBQUlt2YXJkZXBzXSArPSAiRFVNTVlQUk9WSURFUyIKK1BSW3ZhcmRlcHNdICs9ICJEVU1NWVBST1ZJREVTX1BBQ0tBR0VTIgorCitEVU1NWVBST1ZJREVTX1BBQ0tBR0VTID8/PSAiIgorRFVNTVlQUk9WSURFU19QQUNLQUdFU19NVUxUSUxJQiA9ICIke0AnICcuam9pbihbbXVsdGlsaWJfcGtnX2V4dGVuZChkLCBwa2cpIGZvciBwa2cgaW4gZC5nZXRWYXIoJ0RVTU1ZUFJPVklERVNfUEFDS0FHRVMnKS5zcGxpdCgpXSl9IgorRFVNTVlQUk9WSURFUyArPSAiJHtEVU1NWVBST1ZJREVTX1BBQ0tBR0VTX01VTFRJTElCfSIKIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CiAgICAgcCA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgZC5hcHBlbmRWYXIoIlJQUk9WSURFU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCiAgICAgZC5hcHBlbmRWYXIoIlJDT05GTElDVFNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQotICAgIGQuYXBwZW5kVmFyKCJSUkVQTEFDRVNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQorICAgIGQuYXBwZW5kVmFyKCJSUkVQTEFDRVNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU19QQUNLQUdFU19NVUxUSUxJQn0iKQogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1leHRzZGstdG9vbGNoYWluLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYgppbmRleCAyMzVkNmVjLi4wZGY2ODFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1leHRzZGstdG9vbGNoYWluLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIKQEAgLTE2LDYgKzE2LDkgQEAKIFNTVEFURVRBU0tTICs9ICJkb19sb2NrZWRfc2lncyIKIGRvX2xvY2tlZF9zaWdzW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7TE9DS0VEX1NJR1NfSU5ESVJ9IgogZG9fbG9ja2VkX3NpZ3Nbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7U1RBR0lOR19ESVJ9LyR7UEFDS0FHRV9BUkNIfS8ke1BOfS9sb2NrZWQtc2lncyIKKyMgSWYgYSB0YXNraGFzaCBjaGFuZ2VzIHdlIG5lZWQgdG8gdXNlIHRoZSBsYXRlc3QgaGFzaCBjaGFuZ2VzLiBXaXRoIHVuaWhhc2ggd2UgbWF5IG5vdCByZWJ1aWxkLgorIyBlU0RLIHdoaWNoIHVzZXMgdGhpcyBpcyBub3N0YW1wIGFueXdheQorZG9fbG9ja2VkX3NpZ3Nbbm9zdGFtcF0gPSAiMSIKIAogcHl0aG9uIGRvX2xvY2tlZF9zaWdzKCkgewogICAgIGltcG9ydCBvZS5jb3B5X2J1aWxkc3lzdGVtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCmluZGV4IDZhODc0OGEuLmNmYTQxYzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiCkBAIC0xLDYgKzEsNiBAQAogRFVNTVlBUkNIID0gImJ1aWxkdG9vbHMtZHVtbXktJHtTREtQS0dTVUZGSVh9IgogCi1EVU1NWVBST1ZJREVTID0gIlwKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVMgPSAiXAogICAgIG5hdGl2ZXNkay1wZXJsIFwKICAgICBuYXRpdmVzZGstbGlieG1sLXBhcnNlci1wZXJsIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtYnl0ZXMgXApAQCAtMTUsMTIgKzE1LDE4IEBACiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCisgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtc3RhdCBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtaW8tZmlsZSBcCisgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtcG9zaXggXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS10aHJlYWQtcXVldWUgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS10aHJlYWRzIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtd2FybmluZ3MgXAorIgorCitEVU1NWVBST1ZJREVTID0gIlwKICAgICAvdXNyL2Jpbi9wZXJsIFwKICAgICAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKaW5kZXggYjg5MWVmYS4uMjlmNGRkMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTEsMTAgKzEsMTMgQEAKIERVTU1ZQVJDSCA9ICJzZGstcHJvdmlkZXMtZHVtbXktJHtTREtQS0dTVUZGSVh9IgogCitEVU1NWVBST1ZJREVTX1BBQ0tBR0VTID0gIlwKKyAgICBwa2djb25maWcgXAorIgorCiAjIEFkZCAvYmluL3NoPwogRFVNTVlQUk9WSURFUyA9ICJcCiAgICAgL2Jpbi9iYXNoIFwKICAgICAvdXNyL2Jpbi9lbnYgXAotICAgIHBrZ2NvbmZpZyBcCiAgICAgbGliR0wuc28oKSg2NGJpdCkgXAogICAgIGxpYkdMLnNvIFwKICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKaW5kZXggYTQxMjNiNy4uOThjNWJjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKQEAgLTEyLDYgKzEyLDcgQEAKIGRlbHRhc2sgZG9fY29uZmlndXJlCiBkZWx0YXNrIGRvX2NvbXBpbGUKIGRlbHRhc2sgZG9faW5zdGFsbAorZGVsdGFzayBkb19wb3B1bGF0ZV9saWMKIGRlbHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdAogCiBkb19wYWNrYWdlX2luZGV4W25vc3RhbXBdID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCmluZGV4IDg3YjhiZmEuLmUzYmVlYjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiCkBAIC00OCw3ICs0OCw2IEBACiAiCiAKIERVTU1ZUFJPVklERVMgPSAiXAotICAgICR7QCcgJy5qb2luKFttdWx0aWxpYl9wa2dfZXh0ZW5kKGQsIHBrZykgZm9yIHBrZyBpbiBkLmdldFZhcignRFVNTVlQUk9WSURFU19QQUNLQUdFUycpLnNwbGl0KCldKX0gXAogICAgIC9iaW4vc2ggXAogICAgIC9iaW4vYmFzaCBcCiAgICAgL3Vzci9iaW4vZW52IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCmluZGV4IDA5ZWI0MDkuLjhhZWI5NDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgpAQCAtNiw3ICs2LDcgQEAKICAgICAgICAgICAgcGFydGVkLW5hdGl2ZSBzeXNsaW51eC1uYXRpdmUgZ3B0ZmRpc2stbmF0aXZlIGRvc2ZzdG9vbHMtbmF0aXZlIFwKICAgICAgICAgICAgbXRvb2xzLW5hdGl2ZSBibWFwLXRvb2xzLW5hdGl2ZSBncnViLWVmaS1uYXRpdmUgY2RydG9vbHMtbmF0aXZlIFwKICAgICAgICAgICAgYnRyZnMtdG9vbHMtbmF0aXZlIHNxdWFzaGZzLXRvb2xzLW5hdGl2ZSBwc2V1ZG8tbmF0aXZlIFwKLSAgICAgICAgICAgZTJmc3Byb2dzLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSBcCisgICAgICAgICAgIGUyZnNwcm9ncy1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUgdGFyLW5hdGl2ZVwKICAgICAgICAgICAgIgogREVQRU5EU19hcHBlbmRfeDg2ID0gIiBzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCiBERVBFTkRTX2FwcGVuZF94ODYtNjQgPSAiIHN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC8wMDAxLVJlbW92ZS11c2luZy0uZW5kLWRpcmVjdGl2ZS13aXRoLWNsYW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsLzAwMDEtUmVtb3ZlLXVzaW5nLS5lbmQtZGlyZWN0aXZlLXdpdGgtY2xhbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU3OWNiNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC8wMDAxLVJlbW92ZS11c2luZy0uZW5kLWRpcmVjdGl2ZS13aXRoLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYjY3MzJmNjg4NDhlY2M4ZmYwMTA1NGJmN2FlYTcwYTI0MWMzNzExNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEwIEFwciAyMDIwIDExOjIzOjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB1c2luZyAuZW5kIGRpcmVjdGl2ZSB3aXRoIGNsYW5nCisKK0NsYW5nIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc20gZGlyZWN0aXZlCitGaXhlcyBJc3N1ZSAjMTkKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9rYW5paW5pL2xpYnVjb250ZXh0L3B1bGwvMjBdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaCB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oIGIvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaAoraW5kZXggYmYyZmI4Yy4uNjE4MTE2YiAxMDA2NDQKKy0tLSBhL2FyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmgKKysrKyBiL2FyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmgKK0BAIC0yOCwxMCArMjgsMTMgQEAKKyAJRU5UKF9fcHJvYykJCQkJCVwKKyBfX3Byb2M6CQkJCQkJCVwKKyAJU0VUVVBfRlJBTUUoX19wcm9jKQorLQorKyNpZmRlZiBfX2NsYW5nX18KKysjZGVmaW5lIEVORChfX3Byb2MpCisrI2Vsc2UKKyAjZGVmaW5lIEVORChfX3Byb2MpCQkJCQlcCisgCS5lbmQJX19wcm9jOwkJCQkJXAorIAkuc2l6ZQlfX3Byb2MsLi1fX3Byb2M7CisrI2VuZGlmCisgCisgI2RlZmluZSBBTElBUyhfX2FsaWFzLCBfX3JlYWwpCQkJCVwKKyAJLndlYWsJX19hbGlhczsJCQkJXAorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnVjb250ZXh0X2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9saWJ1Y29udGV4dF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5ODhmMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9saWJ1Y29udGV4dF9naXQuYmIKQEAgLTAsMCArMSw2MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJ1Y29udGV4dCBpbXBsZW1lbnRhdGlvbiBmZWF0dXJpbmcgZ2xpYmMtY29tcGF0aWJsZSBBQkkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20va2FuaWluaS9saWJ1Y29udGV4dCIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmVlZDAxZmEwZTY3M2M3NmY1YTU3MTU0MzhmNjViMWQiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gIiIKKworUFYgPSAiMC4xMCske1NSQ1BWfSIKK1NSQ1JFViA9ICIxOWZhMWJiZmMyNmVmYjkyMTQ3YjVlODVjYzBjYTAyYTBlODM3NTYxIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2thbmlpbmkvbGlidWNvbnRleHQgXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitDT01QQVRJQkxFX0hPU1QgPSAiLiotbXVzbC4qIgorCit2YWxpZF9hcmNocyA9ICIgXAorICAgIHg4NiB4ODZfNjQgIFwKKyAgICBwcGMgcHBjNjQgICBcCisgICAgbWlwcyBtaXBzNjQgXAorICAgIGFybSBhYXJjaDY0IFwKKyAgICBzMzkweCAgICAgICBcCisiCisKK2RlZiBtYXBfa2VybmVsX2FyY2goYSwgZCk6CisgICAgaW1wb3J0IHJlCisKKyAgICB2YWxpZF9hcmNocyA9IGQuZ2V0VmFyKCd2YWxpZF9hcmNocycpLnNwbGl0KCkKKworICAgIGlmIGEgaW4gdmFsaWRfYXJjaHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhCisgICAgZWxpZiByZS5tYXRjaCgnKGkuODZ8YXRobG9uKSQnLCBhKTogICAgICAgICAgICAgcmV0dXJuICd4ODYnCisgICAgZWxpZiByZS5tYXRjaCgneDg2LjY0JCcsIGEpOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd4ODZfNjQnCisgICAgZWxpZiByZS5tYXRjaCgnYXJtZWIkJywgYSk6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdhcm0nCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCQnLCBhKTogICAgICAgICAgICAgICAgICAgcmV0dXJuICdhYXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmUkJywgYSk6ICAgICAgICAgICAgICAgIHJldHVybiAnYWFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2lscDMyJCcsIGEpOiAgICAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9iZV9pbHAzMiQnLCBhKTogICAgICAgICAgcmV0dXJuICdhYXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ21pcHMoaXNhfCkoMzJ8KShyNnwpKGVsfCkkJywgYSk6IHJldHVybiAnbWlwcycKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpNjQocjZ8KShlbHwpJCcsIGEpOiAgICByZXR1cm4gJ21pcHM2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdwKHBjfG93ZXJwYyknLCBhKTogICAgICAgICAgICAgICByZXR1cm4gJ3BwYycKKyAgICBlbGlmIHJlLm1hdGNoKCdwKHBjNjR8b3dlcnBjNjQpJywgYSk6ICAgICAgICAgICByZXR1cm4gJ3BwYzY0JworICAgIGVsaWYgcmUubWF0Y2goJ3Jpc2N2NjQkJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAncmlzY3Y2NCcKKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgZC5nZXRWYXIoIlRBUkdFVF9PUyIpLnN0YXJ0c3dpdGgoImxpbnV4Iik6CisgICAgICAgICAgICByZXR1cm4gYQorICAgICAgICBiYi5lcnJvcigiY2Fubm90IG1hcCAnJXMnIHRvIGEgbGludXgga2VybmVsIGFyY2hpdGVjdHVyZSIgJSBhKQorCitleHBvcnQgQVJDSCA9ICIke0BtYXBfa2VybmVsX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKKworQ0ZMQUdTICs9ICItSWFyY2gvJHtBUkNIfSAtSWFyY2gvY29tbW9uIgorCitFWFRSQV9PRU1BS0UgPSAiQ0ZMQUdTPScke0NGTEFHU30nIExERkxBR1M9JyR7TERGTEFHU30nIExJQkRJUj0nJHtiYXNlX2xpYmRpcn0nIgorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgQVJDSD0ke0FSQ0h9Cit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBBUkNIPSIke0FSQ0h9IiBERVNURElSPSIke0R9IiBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggMDY4M2JmOC4uYmRjZTQxMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwpAQCAtOSw3ICs5LDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubXVzbC1saWJjLm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKIFNFQ1RJT04gPSAibGlicyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ZDBmZTJiZTE3YmM0NWZmNGE0MmFkZTFjMTNlZDYzNDAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWY5NWVlODQ4YTA4YWQyNTNjMDQ3MjNkYTAwY2VkYjAxIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCkBAIC0yNSwzICsyNSw3IEBACiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogCisjIEVuYWJsZSBvdXQgb2YgdHJlZSBidWlsZAorQiA9ICIke1dPUktESVJ9L2J1aWxkIgorCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1yaXNjdi1EZWZpbmUtc2lnY29udGV4dC1hZ2Fpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtcmlzY3YtRGVmaW5lLXNpZ2NvbnRleHQtYWdhaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjYjMyNGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1yaXNjdi1EZWZpbmUtc2lnY29udGV4dC1hZ2Fpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLWNvbW1pdCBhMDk5M2Y4ZjBmMTYxNDIzZWNkY2I3NTRmMjgyZmZkMmZlNDdhN2I1Ci1BdXRob3I6IFJpY2ggRmVsa2VyIDxkYWxpYXNAYWVyaWZhbC5jeD4KLURhdGU6ICAgV2VkIE9jdCAyIDA5OjI4OjAzIDIwMTkgLTA0MDAKLQotICAgIHJlaW50cm9kdWNlIHJpc2N2NjQgc3RydWN0IHNpZ2NvbnRleHQKLSAgICAKLSAgICBjb21taXQgYWIzZWI4OWE4YjgzMzUzY2RhYWIxMmVkMDE3YTY3YTc3MzBmOTBlOSByZW1vdmVkIGl0IGFzIHBhcnQgb2YKLSAgICBjb3JyZWN0aW5nIHRoZSBtY29udGV4dF90IGRlZmluaXRpb24sIGJ1dCB0aGVyZSBpcyBzdGlsbCBjb2RlIHVzaW5nCi0gICAgc3RydWN0IHNpZ2NvbnRleHQgYW5kIGV4cGVjdGluZyB0aGUgbWVtYmVyIG5hbWVzIHByZXNlbnQgaW4gaXQsIG1vc3QKLSAgICBub3RhYmx5IGxpYmdjY19laC4gYWxtb3N0IGFsbCBzdWNoIHVzYWdlIGlzIGluY29ycmVjdCwgYnV0IGJyaW5nIGJhY2sKLSAgICBzdHJ1Y3Qgc2lnY29udGV4dCBhdCBsZWFzdCBmb3Igbm93IHNvIGFzIG5vdCB0byBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLWRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2NjQvYml0cy9zaWduYWwuaCBiL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oCi1pbmRleCAwM2ZlNDhjMS4uMmZmNGJlMzAgMTAwNjQ0Ci0tLS0gYS9hcmNoL3Jpc2N2NjQvYml0cy9zaWduYWwuaAotKysrIGIvYXJjaC9yaXNjdjY0L2JpdHMvc2lnbmFsLmgKLUBAIC02LDEyICs2LDYgQEAKLSAjIGRlZmluZSBTSUdTVEtTWiA4MTkyCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpIHx8IGRlZmluZWQoX0JTRF9TT1VSQ0UpCi0tdHlwZWRlZiB1bnNpZ25lZCBsb25nIGdyZWdfdDsKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ3NldF90WzMyXTsKLS10eXBlZGVmIHVuaW9uIF9fcmlzY3ZfbWNfZnBfc3RhdGUgZnByZWdzZXRfdDsKLS0jZW5kaWYKLS0KLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19yaXNjdl9tY19ncF9zdGF0ZVszMl07Ci0gCi0gc3RydWN0IF9fcmlzY3ZfbWNfZl9leHRfc3RhdGUgewotQEAgLTQxLDYgKzM1LDE2IEBAIHR5cGVkZWYgc3RydWN0IG1jb250ZXh0X3QgewotIAl1bmlvbiBfX3Jpc2N2X21jX2ZwX3N0YXRlIF9fZnByZWdzOwotIH0gbWNvbnRleHRfdDsKLSAKLSsjaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgfHwgZGVmaW5lZChfQlNEX1NPVVJDRSkKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ190OwotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnc2V0X3RbMzJdOwotK3R5cGVkZWYgdW5pb24gX19yaXNjdl9tY19mcF9zdGF0ZSBmcHJlZ3NldF90OwotK3N0cnVjdCBzaWdjb250ZXh0IHsKLSsJZ3JlZ3NldF90IGdyZWdzOwotKwlmcHJlZ3NldF90IGZwcmVnczsKLSt9OwotKyNlbmRpZgotKwotIHN0cnVjdCBzaWdhbHRzdGFjayB7Ci0gCXZvaWQgKnNzX3NwOwotIAlpbnQgc3NfZmxhZ3M7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKaW5kZXggYWFjZmY3OS4uODIzNzlmZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgpAQCAtNCw5ICs0LDkgQEAKIHJlcXVpcmUgbXVzbC5pbmMKIGluaGVyaXQgbGludXhsb2FkZXIKIAotU1JDUkVWID0gIjJjMjQ3N2RhOWE1NTNjMGI5YjJmYTE4MDczYTVkY2RiZTZkMzk1YWYiCitTUkNSRVYgPSAiMDQwYzFkMTZiNDY4YzUwYzA0ZmM5NGVkZmY1MjFmMTYzNzcwODMyOCIKIAotQkFTRVZFUiA9ICIxLjEuMjMiCitCQVNFVkVSID0gIjEuMi4wIgogCiBQViA9ICIke0JBU0VWRVJ9K2dpdCR7U1JDUFZ9IgogCkBAIC0xNSw3ICsxNSw2IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5tdXNsLWxpYmMub3JnL211c2wgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLWR5bmFtaWMtbGlua2VyLWEtcmVsYXRpdmUtc3ltbGluay10by1saWJjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItbGRzby1Vc2Utc3lzbGliZGlyLWFuZC1saWJkaXItYXMtZGVmYXVsdC1wYXRoZXMtdG8tbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC0zMCw2ICsyOSw3IEBACiAgICAgICAgICAgIGxpYnNzcC1ub25zaGFyZWQgXAogICAgICAgICAgICIKIEdMSUJDX0xEU08gPSAiJHtAZ2V0X2dsaWJjX2xvYWRlcihkKX0iCitNVVNMX0xEU09fQVJDSCA9ICIke0BnZXRfbXVzbF9sb2FkZXJfYXJjaChkKX0iCiAKIGV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgogCkBAIC00OSw3ICs0OSw3IEBACiAgICAgLS1iaW5kaXI9JHtiaW5kaXJ9IFwKICAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAogICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9IFwKLSAgICAtLXN5c2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgLS1zeXNsaWJkaXI9L2xpYiBcCiAiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKQEAgLTYyLDMyICs2MiwyOCBAQAogCiBkb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPScke0R9JwotCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2Jhc2VfbGliZGlyfSAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBlY2hvICIke2Jhc2VfbGliZGlyfSIgPiAke0R9JHtzeXNjb25mZGlyfS9sZC1tdXNsLSR7TVVTTF9MRFNPX0FSQ0h9LnBhdGgKKyAgICAgICAgZWNobyAiJHtsaWJkaXJ9IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sZC1tdXNsLSR7TVVTTF9MRFNPX0FSQ0h9LnBhdGgKIAlybSAtZiAke0R9JHtiaW5kaXJ9L2xkZCAke0R9JHtHTElCQ19MRFNPfQogCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7YmluZGlyfS9sZGQKIAlsbnIgJHtEfSR7bGliZGlyfS9saWJjLnNvICR7RH0ke0dMSUJDX0xEU099Ci0JZm9yIGwgaW4gY3J5cHQgZGwgbSBwdGhyZWFkIHJlc29sdiBydCB1dGlsIHhuZXQKLQlkbwotCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9L2xpYiRsLnNvCi0JZG9uZQotCWZvciBpIGluIGxpYmMuc28uNiBsaWJjcnlwdC5zby4xIGxpYmRsLnNvLjIgbGlibS5zby42IGxpYnB0aHJlYWQuc28uMCBsaWJyZXNvbHYuc28uMiBsaWJydC5zby4xIGxpYnV0aWwuc28uMTsgZG8KLQkJbG4gLXNmIGxpYmMuc28gJHtEfSR7bGliZGlyfS8kaQotCWRvbmUKIH0KIAogUEFDS0FHRVMgPSsgIiR7UE59LWdsaWJjLWNvbXBhdCIKIAotRklMRVNfJHtQTn0tZ2xpYmMtY29tcGF0ICs9ICJcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmMuc28uNiAke2xpYmRpcn0vbGliY3J5cHQuc28uMSBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmRsLnNvLjIgJHtsaWJkaXJ9L2xpYm0uc28uNiBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB0aHJlYWQuc28uMCAke2xpYmRpcn0vbGlicmVzb2x2LnNvLjIgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJydC5zby4xICR7bGliZGlyfS9saWJ1dGlsLnNvLjEgXAotICAgICAgICAgICAgICAgICR7R0xJQkNfTERTT30gXAotICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59ICs9ICIvbGliL2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0uc28uMSAke3N5c2NvbmZkaXJ9L2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0ucGF0aCIKK0ZJTEVTXyR7UE59LWdsaWJjLWNvbXBhdCArPSAiJHtHTElCQ19MRFNPfSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliYy5hIgorRklMRVNfJHtQTn0tZGV2ID0rICIke2xpYmRpcn0vbGliY3J5cHQuYSAke2xpYmRpcn0vbGliZGwuYSAke2xpYmRpcn0vbGlibS5hIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB0aHJlYWQuYSAke2xpYmRpcn0vbGlicmVzb2x2LmEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicnQuYSAke2xpYmRpcn0vbGlidXRpbC5hICR7bGliZGlyfS9saWJ4bmV0LmEgXAorICAgICAgICAgICAgICAgICAgICIKIAogUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJsaW51eC1saWJjLWhlYWRlcnMtZGV2IGJzZC1oZWFkZXJzLWRldiBsaWJzc3Atbm9uc2hhcmVkLXN0YXRpY2RldiIKIFJQUk9WSURFU18ke1BOfS1kZXYgKz0gImxpYmMtZGV2IHZpcnR1YWwtbGliYy1kZXYiCiBSUFJPVklERVNfJHtQTn0gKz0gImxkZCBsaWJzZWdmYXVsdCBydGxkKEdOVV9IQVNIKSIKIAogTEVBRF9TT05BTUUgPSAibGliYy5zbyIKK0lOU0FORV9TS0lQXyR7UE59LWRldiA9ICJzdGF0aWNkZXYiCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJkaXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS1uY3Vyc2VzLXNlbGVjdGl2ZS1iYWNrcG9ydC1vZi0yMDE5MTAxMi1wYXRjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLW5jdXJzZXMtc2VsZWN0aXZlLWJhY2twb3J0LW9mLTIwMTkxMDEyLXBhdGNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODcwYzRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLW5jdXJzZXMtc2VsZWN0aXZlLWJhY2twb3J0LW9mLTIwMTkxMDEyLXBhdGNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLUZyb20gMDY0Yjc3ZjE3MzMzN2FhNzkwZjFjZWMwZDc0MWJmYmM2MWEzM2QzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxOCBPY3QgMjAxOSAwOTo1Nzo0MyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBuY3Vyc2VzOiBzZWxlY3RpdmUgYmFja3BvcnQgb2YgMjAxOTEwMTIgcGF0Y2gKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zYWxzYS5kZWJpYW4ub3JnL2RlYmlhbi9uY3Vyc2VzL2NvbW1pdC8yNDM5MDhiMWUzZDgxXQotCi1Db250ZW50cyBvZiB0aGUgdXBzdHJlYW0gcGF0Y2ggdGhhdCBhcmUgbm90IGFwcGxpZWQgdG8gY29tcF9oYXNoLmMsIAotcGFyc2VfZW50cnkuYywgb3IgZHVtcF9lbnRyeS5jIGhhdmUgYmVlbiBvbWl0dGVkLgotCi1DVkU6IENWRS0yMDE5LTE3NTk0Ci1DVkU6IENWRS0yMDE5LTE3NTk1Ci0KLVNpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluICA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbmN1cnNlcy90aW5mby9jb21wX2hhc2guYyAgIHwgMTQgKysrKysrKysrKy0tLS0KLSBuY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgfCAzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIHByb2dzL2R1bXBfZW50cnkuYyAgICAgICAgICB8ICA3ICsrKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYyBiL25jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMKLWluZGV4IDIxZjE2NWNhLi5hNjJkMzhmOSAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMKLSsrKyBiL25jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMKLUBAIC00NCw3ICs0NCw3IEBACi0gI2luY2x1ZGUgPHRpYy5oPgotICNpbmNsdWRlIDxoYXNoc2l6ZS5oPgotIAotLU1PRFVMRV9JRCgiJElkOiBjb21wX2hhc2guYyx2IDEuNDkgMjAxOS8wMy8xMCAwMDowNjo0OCB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBjb21wX2hhc2guYyx2IDEuNTEgMjAxOS8xMC8xMiAxNjozMjoxMyB0b20gRXhwICQiKQotIAotIC8qCi0gICogRmluZHMgdGhlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gc3RyaW5nIGluIHRoZSBoYXNoIHRhYmxlIGlmIHByZXNlbnQuCi1AQCAtNjMsNyArNjMsOSBAQCBfbmNfZmluZF9lbnRyeShjb25zdCBjaGFyICpzdHJpbmcsCi0gCi0gICAgIGhhc2h2YWx1ZSA9IGRhdGEtPmhhc2hfb2Yoc3RyaW5nKTsKLSAKLS0gICAgaWYgKGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0rICAgIGlmIChoYXNodmFsdWUgPj0gMAotKwkmJiAodW5zaWduZWQpIGhhc2h2YWx1ZSA8IGRhdGEtPnRhYmxlX3NpemUKLSsJJiYgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSAKLSAJcmVhbF90YWJsZSA9IF9uY19nZXRfdGFibGUodGVybWNhcCk7Ci0gCXB0ciA9IHJlYWxfdGFibGUgKyBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV07Ci1AQCAtOTYsNyArOTgsOSBAQCBfbmNfZmluZF90eXBlX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZywKLSAgICAgY29uc3QgSGFzaERhdGEgKmRhdGEgPSBfbmNfZ2V0X2hhc2hfaW5mbyh0ZXJtY2FwKTsKLSAgICAgaW50IGhhc2h2YWx1ZSA9IGRhdGEtPmhhc2hfb2Yoc3RyaW5nKTsKLSAKLS0gICAgaWYgKGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0rICAgIGlmIChoYXNodmFsdWUgPj0gMAotKwkmJiAodW5zaWduZWQpIGhhc2h2YWx1ZSA8IGRhdGEtPnRhYmxlX3NpemUKLSsJJiYgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSAJY29uc3Qgc3RydWN0IG5hbWVfdGFibGVfZW50cnkgKmNvbnN0IHRhYmxlID0gX25jX2dldF90YWJsZSh0ZXJtY2FwKTsKLSAKLSAJcHRyID0gdGFibGUgKyBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV07Ci1AQCAtMTI0LDcgKzEyOCw5IEBAIF9uY19maW5kX3VzZXJfZW50cnkoY29uc3QgY2hhciAqc3RyaW5nKQotIAotICAgICBoYXNodmFsdWUgPSBkYXRhLT5oYXNoX29mKHN0cmluZyk7Ci0gCi0tICAgIGlmIChkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotKyAgICBpZiAoaGFzaHZhbHVlID49IDAKLSsJJiYgKHVuc2lnbmVkKSBoYXNodmFsdWUgPCBkYXRhLT50YWJsZV9zaXplCi0rCSYmIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0gCi0gCXJlYWxfdGFibGUgPSBfbmNfZ2V0X3VzZXJkZWZzX3RhYmxlKCk7Ci0gCXB0ciA9IHJlYWxfdGFibGUgKyBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV07Ci1kaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCi1pbmRleCBmOGNjYThiNS4uMDY0Mzc2YzUgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLSsrKyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGljLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjk3IDIwMTkvMDgvMDMgMjM6MTA6MzggdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuOTggMjAxOS8xMC8xMiAwMDo1MDozMSB0b20gRXhwICQiKQotIAotICNpZmRlZiBMSU5UCi0gc3RhdGljIHNob3J0IGNvbnN0IHBhcmFtZXRyaXplZFtdID0KLUBAIC02NTQsMTIgKzY1NCwxMiBAQCBfbmNfY2FwY21wKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKnQpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tYXBwZW5kX2FjczAoc3RyaW5nX2Rlc2MgKiBkc3QsIGludCBjb2RlLCBpbnQgc3JjKQotK2FwcGVuZF9hY3MwKHN0cmluZ19kZXNjICogZHN0LCBpbnQgY29kZSwgY2hhciAqc3JjLCBzaXplX3Qgb2ZmKQotIHsKLS0gICAgaWYgKHNyYyAhPSAwKSB7Ci0rICAgIGlmIChzcmMgIT0gMCAmJiBvZmYgPCBzdHJsZW4oc3JjKSkgewotIAljaGFyIHRlbXBbM107Ci0gCXRlbXBbMF0gPSAoY2hhcikgY29kZTsKLS0JdGVtcFsxXSA9IChjaGFyKSBzcmM7Ci0rCXRlbXBbMV0gPSBzcmNbb2ZmXTsKLSAJdGVtcFsyXSA9IDA7Ci0gCV9uY19zYWZlX3N0cmNhdChkc3QsIHRlbXApOwotICAgICB9Ci1AQCAtNjY5LDcgKzY2OSw3IEBAIHN0YXRpYyB2b2lkCi0gYXBwZW5kX2FjcyhzdHJpbmdfZGVzYyAqIGRzdCwgaW50IGNvZGUsIGNoYXIgKnNyYykKLSB7Ci0gICAgIGlmIChWQUxJRF9TVFJJTkcoc3JjKSAmJiBzdHJsZW4oc3JjKSA9PSAxKSB7Ci0tCWFwcGVuZF9hY3MwKGRzdCwgY29kZSwgKnNyYyk7Ci0rCWFwcGVuZF9hY3MwKGRzdCwgY29kZSwgc3JjLCAwKTsKLSAgICAgfQotIH0KLSAKLUBAIC0xMDM4LDE3ICsxMDM4LDE3IEBAIHBvc3Rwcm9jZXNzX3Rlcm1pbmZvKFRFUk1UWVBFMiAqdHApCi0gCV9uY19zdHJfaW5pdCgmcmVzdWx0LCBidWYyLCBzaXplb2YoYnVmMikpOwotIAlfbmNfc2FmZV9zdHJjYXQoJnJlc3VsdCwgYWNzX2NoYXJzKTsKLSAKLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2wnLCBib3hfY2hhcnNfMVswXSk7CS8qIEFDU19VTENPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAncScsIGJveF9jaGFyc18xWzFdKTsJLyogQUNTX0hMSU5FICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdrJywgYm94X2NoYXJzXzFbMl0pOwkvKiBBQ1NfVVJDT1JORVIgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3gnLCBib3hfY2hhcnNfMVszXSk7CS8qIEFDU19WTElORSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnaicsIGJveF9jaGFyc18xWzRdKTsJLyogQUNTX0xSQ09STkVSICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdtJywgYm94X2NoYXJzXzFbNV0pOwkvKiBBQ1NfTExDT1JORVIgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3cnLCBib3hfY2hhcnNfMVs2XSk7CS8qIEFDU19UVEVFICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd1JywgYm94X2NoYXJzXzFbN10pOwkvKiBBQ1NfUlRFRSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndicsIGJveF9jaGFyc18xWzhdKTsJLyogQUNTX0JURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3QnLCBib3hfY2hhcnNfMVs5XSk7CS8qIEFDU19MVEVFICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICduJywgYm94X2NoYXJzXzFbMTBdKTsJLyogQUNTX1BMVVMgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2wnLCBib3hfY2hhcnNfMSwgMCk7CS8qIEFDU19VTENPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAncScsIGJveF9jaGFyc18xLCAxKTsJLyogQUNTX0hMSU5FICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdrJywgYm94X2NoYXJzXzEsIDIpOwkvKiBBQ1NfVVJDT1JORVIgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3gnLCBib3hfY2hhcnNfMSwgMyk7CS8qIEFDU19WTElORSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnaicsIGJveF9jaGFyc18xLCA0KTsJLyogQUNTX0xSQ09STkVSICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdtJywgYm94X2NoYXJzXzEsIDUpOwkvKiBBQ1NfTExDT1JORVIgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3cnLCBib3hfY2hhcnNfMSwgNik7CS8qIEFDU19UVEVFICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd1JywgYm94X2NoYXJzXzEsIDcpOwkvKiBBQ1NfUlRFRSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndicsIGJveF9jaGFyc18xLCA4KTsJLyogQUNTX0JURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3QnLCBib3hfY2hhcnNfMSwgOSk7CS8qIEFDU19MVEVFICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICduJywgYm94X2NoYXJzXzEsIDEwKTsJLyogQUNTX1BMVVMgKi8KLSAKLSAJaWYgKGJ1ZjJbMF0pIHsKLSAJICAgIGFjc19jaGFycyA9IF9uY19zYXZlX3N0cihidWYyKTsKLWRpZmYgLS1naXQgYS9wcm9ncy9kdW1wX2VudHJ5LmMgYi9wcm9ncy9kdW1wX2VudHJ5LmMKLWluZGV4IGQwZTQyMGVjLi44YTQ3MDg0YSAxMDA2NDQKLS0tLSBhL3Byb2dzL2R1bXBfZW50cnkuYwotKysrIGIvcHJvZ3MvZHVtcF9lbnRyeS5jCi1AQCAtMzksNyArMzksNyBAQAotICNpbmNsdWRlICJ0ZXJtc29ydC5jIgkJLyogdGhpcyBDIGZpbGUgaXMgZ2VuZXJhdGVkICovCi0gI2luY2x1ZGUgPHBhcmFtZXRyaXplZC5oPgkvKiBzbyBpcyB0aGlzICovCi0gCi0tTU9EVUxFX0lEKCIkSWQ6IGR1bXBfZW50cnkuYyx2IDEuMTczIDIwMTkvMDUvMTEgMjE6MDI6MjQgdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogZHVtcF9lbnRyeS5jLHYgMS4xNzUgMjAxOS8xMC8xMiAxNTo1OTowNyB0b20gRXhwICQiKQotIAotICNkZWZpbmUgRElTQ0FSRChzdHJpbmcpIHN0cmluZyA9IEFCU0VOVF9TVFJJTkcKLSAjZGVmaW5lIFBSSU5URiAodm9pZCkgcHJpbnRmCi1AQCAtMTEzNiw3ICsxMTM2LDggQEAgZm10X2VudHJ5KFRFUk1UWVBFMiAqdHRlcm0sCi0gCQkJCSpkKysgPSAnXFwnOwotIAkJCQkqZCA9ICc6JzsKLSAJCQkgICAgfSBlbHNlIGlmICgqZCA9PSAnXFwnKSB7Ci0tCQkJCSorK2QgPSAqcysrOwotKwkJCQlpZiAoKCorK2QgPSAqcysrKSA9PSAnXDAnKQotKwkJCQkgICAgYnJlYWs7Ci0gCQkJICAgIH0KLSAJCQkgICAgZCsrOwotIAkJCSAgICAqZCA9ICdcMCc7Ci1AQCAtMTM5Niw3ICsxMzk3LDcgQEAgb25lX29uZV9tYXBwaW5nKGNvbnN0IGNoYXIgKm1hcHBpbmcpCi0gCi0gICAgIGlmIChWQUxJRF9TVFJJTkcobWFwcGluZykpIHsKLSAJaW50IG4gPSAwOwotLQl3aGlsZSAobWFwcGluZ1tuXSAhPSAnXDAnKSB7Ci0rCXdoaWxlIChtYXBwaW5nW25dICE9ICdcMCcgJiYgbWFwcGluZ1tuICsgMV0gIT0gJ1wwJykgewotIAkgICAgaWYgKGlzTGluZShtYXBwaW5nW25dKSAmJgotIAkJbWFwcGluZ1tuXSAhPSBtYXBwaW5nW24gKyAxXSkgewotIAkJcmVzdWx0ID0gRkFMU0U7Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKaW5kZXggNWYyY2MzNS4uNDE1NmJmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwpAQCAtMiw3ICsyLDcgQEAKIERFU0NSSVBUSU9OID0gIlNWcjQgYW5kIFhTSS1DdXJzZXMgY29tcGF0aWJsZSBjdXJzZXMgbGlicmFyeSBhbmQgdGVybWluZm8gdG9vbHMgaW5jbHVkaW5nIHRpYywgaW5mb2NtcCwgY2FwdG9pbmZvLiBTdXBwb3J0cyBjb2xvciwgbXVsdGlwbGUgaGlnaGxpZ2h0cywgZm9ybXMtZHJhd2luZyBjaGFyYWN0ZXJzLCBhbmQgYXV0b21hdGljIHJlY29nbml0aW9uIG9mIGtleXBhZCBhbmQgZnVuY3Rpb24ta2V5IHNlcXVlbmNlcy4gRXh0ZW5zaW9ucyBpbmNsdWRlIHJlc2l6YWJsZSB3aW5kb3dzIGFuZCBtb3VzZSBzdXBwb3J0IG9uIGJvdGggeHRlcm0gYW5kIExpbnV4IGNvbnNvbGUgdXNpbmcgdGhlIGdwbSBsaWJyYXJ5LiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9uY3Vyc2VzL25jdXJzZXMuaHRtbCIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbmN1cnNlcy9iYXNlL3ZlcnNpb24uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT1jYmMxODBhOGM0NGNhNjQyZTk3YzM1NDUyZmFiNWY2NiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25jdXJzZXMvYmFzZS92ZXJzaW9uLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9NTUyNmYyZjNhMjllZGM5NTUzOGIzNjhhNDc3MWVkZGEiCiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gIm5jdXJzZXMtbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgpAQCAtODcsNiArODcsNyBAQAogCSAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2sgXAogCQkke0VYQ09ORklHX0FSR1N9IFwKIAkgICAgICAgIC0td2l0aC1tYW5wYWdlLWZvcm1hdD1ub3JtYWwgXAorCSAgICAgICAgLS13aXRob3V0LW1hbnBhZ2UtcmVuYW1lcyBcCiAJICAgICAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKIAkgICAgICAgICIkQCIgfHwgcmV0dXJuIDEKIAljZCAuLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTkwODAzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTkwODAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjM4YTM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMSsyMDE5MDgwMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgbmN1cnNlcy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5jdXJzZXMtc2VsZWN0aXZlLWJhY2twb3J0LW9mLTIwMTkxMDEyLXBhdGNoLnBhdGNoIFwKLSIKLSMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KLVNSQ1JFViA9ICIzYzliMjY3N2M5NmM2NDU0OTY5OTczMjFiZjJmZTQ2NWE1ZTdlMjFmIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIzZTY4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMi5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIG5jdXJzZXMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAorICAgICAgICAgICAiCisjIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCitTUkNSRVYgPSAiYTY2OTAxM2NkNWU5ZDY0MzRlNTMwMTM0OGVhNTFiYWYzMDZjOTNjNCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgorCisjIFRoaXMgaXMgbmVlZGVkIHdoZW4gdXNpbmcgcGF0Y2hsZXZlbCB2ZXJzaW9ucyBsaWtlIDYuMSsyMDE4MTAxMworI0NWRV9WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCJQViIpLnNwbGl0KCcrJylbMF19LiR7QGQuZ2V0VmFyKCJQViIpLnNwbGl0KCcrJylbMV19IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2UvbmV0YmFzZS1hZGQtcnBjYmluZC1hcy1hbi1hbGlhcy10by1zdW5ycGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZS9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdiYTJmNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZS9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNTJkNDZjNGQxZmJkNGM4OGQ2OWMyZmNmNzgzN2IyZjJiYTdlZjZmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDEyIEphbiAyMDE3IDE2OjUwOjU4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5ldGJhc2U6IGFkZCBycGNiaW5kIGFzIGFuIGFsaWFzIHRvIHN1bnJwYwotCi10aGUgcGF0Y2ggY29tZXMgZnJvbToKLWh0dHBzOi8vYnVncy5hcmNobGludXgub3JnL3Rhc2svMjAyNzMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IExpIFdhbmcgPGxpLndhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotCi0tLS0KLSBldGMtcnBjICAgICAgfCAyICstCi0gZXRjLXNlcnZpY2VzIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ldGMtcnBjIGIvZXRjLXJwYwotaW5kZXggMWIzMDYyNS4uOWE5YTgxYSAxMDA2NDQKLS0tLSBhL2V0Yy1ycGMKLSsrKyBiL2V0Yy1ycGMKLUBAIC0xLDcgKzEsNyBAQAotICMgVGhpcyBmaWxlIGNvbnRhaW5zIHVzZXIgcmVhZGFibGUgbmFtZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBycGMKLSAjIHByb2dyYW0gbnVtYmVycy4KLSAKLS1wb3J0bWFwcGVyCTEwMDAwMAlwb3J0bWFwIHN1bnJwYwotK3BvcnRtYXBwZXIJMTAwMDAwCXBvcnRtYXAgc3VucnBjIHJwY2JpbmQKLSByc3RhdGQJCTEwMDAwMQlyc3RhdCByc3RhdF9zdmMgcnVwIHBlcmZtZXRlcgotIHJ1c2Vyc2QJCTEwMDAwMglydXNlcnMKLSBuZnMJCTEwMDAwMwluZnNwcm9nCi1kaWZmIC0tZ2l0IGEvZXRjLXNlcnZpY2VzIGIvZXRjLXNlcnZpY2VzCi1pbmRleCBmYTdhZTI0Li4xMGJhMmJjIDEwMDY0NAotLS0tIGEvZXRjLXNlcnZpY2VzCi0rKysgYi9ldGMtc2VydmljZXMKLUBAIC01MSw4ICs1MSw4IEBAIGtlcmJlcm9zCTg4L3VkcAkJa2VyYmVyb3M1IGtyYjUga2VyYmVyb3Mtc2VjCSMgS2VyYmVyb3MgdjUKLSBpc28tdHNhcAkxMDIvdGNwCQl0c2FwCQkjIHBhcnQgb2YgSVNPREUKLSBhY3ItbmVtYQkxMDQvdGNwCQlkaWNvbQkJIyBEaWdpdGFsIEltYWcuICYgQ29tbS4gMzAwCi0gcG9wMwkJMTEwL3RjcAkJcG9wLTMJCSMgUE9QIHZlcnNpb24gMwotLXN1bnJwYwkJMTExL3RjcAkJcG9ydG1hcHBlcgkjIFJQQyA0LjAgcG9ydG1hcHBlcgotLXN1bnJwYwkJMTExL3VkcAkJcG9ydG1hcHBlcgotK3N1bnJwYwkJMTExL3RjcAkJcG9ydG1hcHBlciBycGNiaW5kICMgUlBDIDQuMCBwb3J0bWFwcGVyCi0rc3VucnBjCQkxMTEvdWRwCQlwb3J0bWFwcGVyIHJwY2JpbmQKLSBhdXRoCQkxMTMvdGNwCQlhdXRoZW50aWNhdGlvbiB0YXAgaWRlbnQKLSBzZnRwCQkxMTUvdGNwCi0gbm50cAkJMTE5L3RjcAkJcmVhZG5ld3MgdW50cAkjIFVTRU5FVCBOZXdzIFRyYW5zZmVyIFByb3RvY29sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV81LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV81LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTQ5NzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNpYyBUQ1AvSVAgbmV0d29ya2luZyBzdXBwb3J0IgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGJhc2ljIFRDUC9JUCBiYXNlZCBuZXR3b3JraW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvbmV0YmFzZSIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT0zZGQ2MTkyZDMwNmY1ODJkZWU3Njg3ZGEzZDg3NDhhYiIKLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbmV0YmFzZS1hZGQtcnBjYmluZC1hcy1hbi1hbGlhcy10by1zdW5ycGMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YWQxNTYyNzJjNWE0MmY0OWM3MzM4NmZmMzljODYyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDkzYTA5OWRlYjI4ODY5YjczMDZlOTE0NzAwZmFmYmQyOTNiNTViZGI1ZGYwNWE1YWE2ZWZmZDBhZjU5MzBjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmV0YmFzZS8iCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjggJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA2NDQgZXRjLXJwYyAke0R9JHtzeXNjb25mZGlyfS9ycGMKLQlpbnN0YWxsIC1tIDA2NDQgZXRjLXByb3RvY29scyAke0R9JHtzeXNjb25mZGlyfS9wcm90b2NvbHMKLQlpbnN0YWxsIC1tIDA2NDQgZXRjLXNlcnZpY2VzICR7RH0ke3N5c2NvbmZkaXJ9L3NlcnZpY2VzCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV82LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV82LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwMDQ5YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzYuMS5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkJhc2ljIFRDUC9JUCBuZXR3b3JraW5nIHN1cHBvcnQiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZSBmb3IgYmFzaWMgVENQL0lQIGJhc2VkIG5ldHdvcmtpbmciCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9uZXRiYXNlIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTNkZDYxOTJkMzA2ZjU4MmRlZTc2ODdkYTNkODc0OGFiIgorUEUgPSAiMSIKKworU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImU1ODcxYTNhNWM4MzkwNTU3YjgwMzNjZjE5MzE2YTU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4NGQ3NDNiZDg0ZDRkOTM4MGJhYzRjNzFjNTFlNTc0MDZkY2U0NGY1YTY5Mjg5YmI4MjNjOTAzZTliMDM1ZDgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRiYXNlLyIKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1N9L2V0Yy9ycGMgJHtEfSR7c3lzY29uZmRpcn0vcnBjCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXRjL3Byb3RvY29scyAke0R9JHtzeXNjb25mZGlyfS9wcm90b2NvbHMKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9ldGMvc2VydmljZXMgJHtEfSR7c3lzY29uZmRpcn0vc2VydmljZXMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4zLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjMuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKaW5kZXggMmYwNTUzYi4uOTZlMjMwZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCkBAIC0zLDIxICszLDIwIEBACiBERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgaW50ZW5kZWQgZm9yIHVzZSBvbiBlbWJlZGRlZCBzeXN0ZW1zLiBJdCBpcyBhIGNvbmdsb21lcmF0aW9uIG9mIHNldmVyYWwgbGlicmFyeSBwYXJ0cywgYWxsIHVuZGVyIGZyZWUgc29mdHdhcmUgbGljZW5zZXMgdGhhdCBtYWtlIHRoZW0gZWFzaWx5IHVzYWJsZSBvbiBlbWJlZGRlZCBwcm9kdWN0cy4iCiBTRUNUSU9OID0gImxpYnMiCiAKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBHUEx2MyAmIExHUEx2MiAmIEJTRC0yLUNsYXVzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBHUEx2MyAmIExHUEx2MiAmIEJTRC0yLUNsYXVzZSAmIHRjbCIKIExJQ19GSUxFU19DSEtTVU0gPSAiIFwKIAkJZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKIAkJZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAogCQlmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJZmlsZTovL0NPUFlJTkcuTElCR0xPU1M7bWQ1PTczZjVjOTg3NzlhZWE3ZGJhNGE2Yzk0YTc0YWIwYWUyIFwKKwkJZmlsZTovL0NPUFlJTkcuTElCR0xPU1M7bWQ1PTU0Yjc3OGQ1ODU0NDNjZDdmYmZhMWI0N2NiZDYzYTg5IFwKIAkJZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0JCWZpbGU6Ly9DT1BZSU5HLk5FV0xJQjttZDU9MTAwZDQ3MGFmNTRlMmQxZDc5ZmJkODQ5OGEzMmZmMjYgXAorCQlmaWxlOi8vQ09QWUlORy5ORVdMSUI7bWQ1PWFjMTdjNjg3NTFhYWQ3YTUyOThjZTNmMjQ5MTIxMDcwIFwKIAkJZmlsZTovL25ld2xpYi9saWJjL3Bvc2l4L0NPUFlSSUdIVDttZDU9MTAzNDY4ZmYxOTgyYmU4NDBmZGY0ZWU5ZjhiNTFiYmYgXAogCQlmaWxlOi8vbmV3bGliL2xpYmMvc3lzL2xpbnV4L2xpbnV4dGhyZWFkcy9MSUNFTlNFO21kNT03MzY0MDIwN2ZiYzc5YjE5OGM3ZmZkNGFkNGQ5N2FhMCBcCiAJCSIKIAogU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3B1Yi9uZXdsaWIvbmV3bGliLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmODQyNjNiN2Q1MjRkZjkyYTljOWZiMzBiNzllMDEzNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjRmYTFjYzIxZTkwNjA3MTkyMDgzMDBhNjE0MjBlNDA4OWQ2ZGU2ZWY1OWNmNTMzYjU3ZmU3NDgwMWQxMDJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4ZGQ5ZTNlYWVkZjUxOTM2MGQ5MmQ4NDIwNWMzZGVlZjBiM2ZjMjg2Njg1ZDFjNTYyZTI0NTkxNGVmNzJjNjYiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyIKQEAgLTQyLDYgKzQxLDcgQEAKIAkJLS13aXRoLWdudS1hcyBcCiAJCS0td2l0aC1nbnUtbGQgXAogCQktLWRpc2FibGUtbXVsdGlsaWIgXAorCQktLWRpc2FibGUtbmV3bGliLXN1cHBsaWVkLXN5c2NhbGxzIFwKIAkJIgogCiBkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjMuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWNiMjNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAwYTgzNjJjZmI5ZjAwODcwZDcwNjg3NDc1NjY1YjEzMWRkODJjOTQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCA5IEp1biAyMDE2IDAyOjIzOjAxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBvdm1mOiB1cGRhdGUgcGF0aCB0byBuYXRpdmUgQmFzZVRvb2xzCisKK0Jhc2VUb29scyBpcyBhIHNldCBvZiB1dGlsaXRpZXMgdG8gYnVpbGQgRURLLWJhc2VkIGZpcm13YXJlLiBUaGVzZSB1dGlsaXRpZXMKK2FyZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gVGh1cywgdGhleSBuZWVkIHRvIGJlIGJ1aWx0IG5hdGl2ZWx5LgorV2hlbiBjcm9zcy1jb21waWxpbmcsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIHBhdGggdG8gdGhlIGxvY2F0aW9uIG9mIHRoZXNlCit0b29scy4gVGhlIEJCQUtFX0VES19UT09MU19QQVRIIHN0cmluZyBpcyB1c2VkIGFzIGEgcGF0dGVybiB0byBiZSByZXBsYWNlZAord2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gYmVmb3JlIGJ1aWxkaW5nLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgT3ZtZlBrZy9idWlsZC5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL092bWZQa2cvYnVpbGQuc2ggYi9Pdm1mUGtnL2J1aWxkLnNoCitpbmRleCA5MWIxNDQyYWRlLi4xODU4ZGFlMzFhIDEwMDc1NQorLS0tIGEvT3ZtZlBrZy9idWlsZC5zaAorKysrIGIvT3ZtZlBrZy9idWlsZC5zaAorQEAgLTI0LDcgKzI0LDcgQEAgdGhlbgorICMgdGhpcyBhc3N1bWVzIHN2biBwdWxscyBoYXZlIHRoZSBzYW1lIHJvb3QgZGlyCisgIyAgZXhwb3J0IEVES19UT09MU19QQVRIPWBwd2RgLy4uL0Jhc2VUb29scworICMgVGhpcyB2ZXJzaW9uIGlzIGZvciB0aGUgdG9vbHMgc291cmNlIGluIGVkazIKKy0gIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1gcHdkYC9CYXNlVG9vbHMKKysgIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1CQkFLRV9FREtfVE9PTFNfUEFUSC9CYXNlVG9vbHMKKyAgIGVjaG8gJEVES19UT09MU19QQVRICisgICBzb3VyY2UgZWRrc2V0dXAuc2ggQmFzZVRvb2xzCisgZWxzZQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzdlZDAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBhOGJjZWFlYzFiMTZmZmZiZjY4MTBkZjA1NTAzZDhhZTkwOTJiNzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgorRGF0ZTogRnJpLCAyNiBKdWwgMjAxOSAxNzozNDoyNiAtMDQwMAorU3ViamVjdDogW1BBVENIIDIvNV0gQmFzZVRvb2xzOiBtYWtlZmlsZTogYWRqdXN0IHRvIGJ1aWxkIGluIHVuZGVyIGJpdGJha2UKKworUHJlcGVuZCB0aGUgYnVpbGQgZmxhZ3Mgd2l0aCB0aG9zZSBvZiBiaXRiYWtlLiBUaGlzIGlzIHRvIGJ1aWxkCit1c2luZyB0aGUgYml0YmFrZSBuYXRpdmUgc3lzcm9vdCBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaUBsaW51eC5pbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlIGIvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKK2luZGV4IDRlOWIzNmQ5OGIuLmViMDNlZTMzZmEgMTAwNjQ0CistLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQorKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKK0BAIC02MiwyMyArNjIsMjMgQEAgJChlcnJvciBCYWQgSE9TVF9BUkNIKQorIGVuZGlmDQorIA0KKyBJTkNMVURFID0gJChUT09MX0lOQ0xVREUpIC1JICQoTUFLRVJPT1QpIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvQ29tbW9uIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZCAtSSAkKE1BS0VST09UKS9Db21tb24vIC1JIC4uIC1JIC4gJChBUkNIX0lOQ0xVREUpDQorLUJVSUxEX0NQUEZMQUdTID0gJChJTkNMVURFKQ0KKytCVUlMRF9DUFBGTEFHUyArPSAkKElOQ0xVREUpDQorIA0KKyAjIGtlZXAgRVhUUkFfT1BURkxBR1MgbGFzdA0KKyBCVUlMRF9PUFRGTEFHUyA9IC1PMiAkKEVYVFJBX09QVEZMQUdTKQ0KKyANCisgaWZlcSAoJChEQVJXSU4pLERhcndpbikNCisgIyBhc3N1bWUgY2xhbmcgb3IgY2xhbmcgY29tcGF0aWJsZSBmbGFncyBvbiBPUyBYDQorLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgXA0KKytCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQorIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zZWxmLWFzc2lnbiAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1nDQorIGVsc2UNCistQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZ3cmFwdiBcDQorK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCisgLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyAtV2FsbCAtV2Vycm9yIFwNCisgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXN0cmluZ29wLXRydW5jYXRpb24gLVduby1yZXN0cmljdCBcDQorIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCisgZW5kaWYNCistQlVJTERfTEZMQUdTID0NCistQlVJTERfQ1hYRkxBR1MgPSAtV25vLXVudXNlZC1yZXN1bHQNCisrQlVJTERfTEZMQUdTID0gJChMREZMQUdTKQ0KKytCVUlMRF9DWFhGTEFHUyArPSAtV25vLXVudXNlZC1yZXN1bHQNCisgDQorIGlmZXEgKCQoSE9TVF9BUkNIKSwgSUEzMikNCisgIw0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0YWU1ZDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDllNjMyZTNmOWVkZDA5NjMyY2M4NzdkZmY2ZWE1NzYwOGY5NzlhYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDkgSnVuIDIwMTYgMDI6MjM6MDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3ZtZjogdXBkYXRlIHBhdGggdG8gbmF0aXZlIEJhc2VUb29scwotCi1CYXNlVG9vbHMgaXMgYSBzZXQgb2YgdXRpbGl0aWVzIHRvIGJ1aWxkIEVESy1iYXNlZCBmaXJtd2FyZS4gVGhlc2UgdXRpbGl0aWVzCi1hcmUgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFRodXMsIHRoZXkgbmVlZCB0byBiZSBidWlsdCBuYXRpdmVseS4KLVdoZW4gY3Jvc3MtY29tcGlsaW5nLCB3ZSBuZWVkIHRvIHByb3ZpZGUgYSBwYXRoIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGVzZQotdG9vbHMuIFRoZSBCQkFLRV9FREtfVE9PTFNfUEFUSCBzdHJpbmcgaXMgdXNlZCBhcyBhIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWQKLXdpdGggdGhlIGFwcHJvcHJpYXRlIGxvY2F0aW9uIGJlZm9yZSBidWlsZGluZy4KLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBPdm1mUGtnL2J1aWxkLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvT3ZtZlBrZy9idWlsZC5zaCBiL092bWZQa2cvYnVpbGQuc2gKLWluZGV4IGViNWViNzMuLjkwNThmY2EgMTAwNzU1Ci0tLS0gYS9Pdm1mUGtnL2J1aWxkLnNoCi0rKysgYi9Pdm1mUGtnL2J1aWxkLnNoCi1AQCAtMzAsNyArMzAsNyBAQCB0aGVuCi0gIyB0aGlzIGFzc3VtZXMgc3ZuIHB1bGxzIGhhdmUgdGhlIHNhbWUgcm9vdCBkaXIKLSAjICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvLi4vQmFzZVRvb2xzCi0gIyBUaGlzIHZlcnNpb24gaXMgZm9yIHRoZSB0b29scyBzb3VyY2UgaW4gZWRrMgotLSAgZXhwb3J0IEVES19UT09MU19QQVRIPWBwd2RgL0Jhc2VUb29scwotKyAgZXhwb3J0IEVES19UT09MU19QQVRIPUJCQUtFX0VES19UT09MU19QQVRIL0Jhc2VUb29scwotICAgZWNobyAkRURLX1RPT0xTX1BBVEgKLSAgIHNvdXJjZSBlZGtzZXR1cC5zaCBCYXNlVG9vbHMKLSBlbHNlCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MGIwYWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDIzMjA2NTBjNmQzODFiOTE0ZmU5MWIyZGVkYWE1ODcwMjc5YThiY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI2IEp1bCAyMDE5IDE3OjM0OjI2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJhc2VUb29sczogbWFrZWZpbGU6IGFkanVzdCB0byBidWlsZCBpbiB1bmRlciBiaXRiYWtlCi0KLVByZXBlbmQgdGhlIGJ1aWxkIGZsYWdzIHdpdGggdGhvc2Ugb2YgYml0YmFrZS4gVGhpcyBpcyB0byBidWlsZAotdXNpbmcgdGhlIGJpdGJha2UgbmF0aXZlIHN5c3Jvb3QgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmlAbGludXguaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBCYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLSsrKyBnaXQvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLUBAIC02MiwyMyArNjIsMjMgQEAgJChlcnJvciBCYWQgSE9TVF9BUkNIKQotIGVuZGlmDQotIA0KLSBJTkNMVURFID0gJChUT09MX0lOQ0xVREUpIC1JICQoTUFLRVJPT1QpIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvQ29tbW9uIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZCAtSSAkKE1BS0VST09UKS9Db21tb24vIC1JIC4uIC1JIC4gJChBUkNIX0lOQ0xVREUpIA0KLS1CVUlMRF9DUFBGTEFHUyA9ICQoSU5DTFVERSkNCi0rQlVJTERfQ1BQRkxBR1MgKz0gJChJTkNMVURFKQ0KLSANCi0gIyBrZWVwIEVYVFJBX09QVEZMQUdTIGxhc3QNCi0gQlVJTERfT1BURkxBR1MgPSAtTzIgJChFWFRSQV9PUFRGTEFHUykNCi0gDQotIGlmZXEgKCQoREFSV0lOKSxEYXJ3aW4pDQotICMgYXNzdW1lIGNsYW5nIG9yIGNsYW5nIGNvbXBhdGlibGUgZmxhZ3Mgb24gT1MgWA0KLS1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIFwNCi0rQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgXA0KLSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtZw0KLSBlbHNlDQotLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1md3JhcHYgXA0KLStCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZ3cmFwdiBcDQotIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MgLVdhbGwgLVdlcnJvciBcDQotIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zdHJpbmdvcC10cnVuY2F0aW9uIC1Xbm8tcmVzdHJpY3QgXA0KLSAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1nDQotIGVuZGlmDQotLUJVSUxEX0xGTEFHUyA9DQotLUJVSUxEX0NYWEZMQUdTID0gLVduby11bnVzZWQtcmVzdWx0DQotK0JVSUxEX0xGTEFHUyA9ICQoTERGTEFHUykNCi0rQlVJTERfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtcmVzdWx0DQotIA0KLSBpZmVxICgkKEhPU1RfQVJDSCksIElBMzIpDQotICMNCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjFlN2RiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDYwYTVmOTUzZjc0N2UxZTllMDVhNDAxNTdiNjUxY2JhOGVhNTdiOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMSBTZXAgMjAxNyAwMjoyMTo1NSAtMDQwMAorU3ViamVjdDogW1BBVENIIDMvNV0gb3ZtZjogZW5hYmxlIGxvbmcgcGF0aCBmaWxlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworLS0tCisgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitpbmRleCBlMWNjZTk4NWY3Li5kNjdkMDNjNzBjIDEwMDY0NAorLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAorKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAorQEAgLTE0LDcgKzE0LDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+DQorICNkZWZpbmUgUFJJTlRFRF9HVUlEX0JVRkZFUl9TSVpFICAzNyAgLy8gaW5jbHVkaW5nIG51bGwtdGVybWluYXRpb24NCisgDQorLSNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDUwMA0KKysjZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCAxMDIzDQorIA0KKyAjZGVmaW5lIE1BWF9VSU5UNjQgKChVSU5UNjQpMHhGRkZGRkZGRkZGRkZGRkZGVUxMKQ0KKyAjZGVmaW5lIE1BWF9VSU5UMzIgKChVSU5UMzIpMHhGRkZGRkZGRikNCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtVXBkYXRlLXRvLWxhdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMGEzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtVXBkYXRlLXRvLWxhdGVzdC5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDk0ZWZmMzE2YjMxYjRkMDM0OGFmMjhjNzdiZTVjMDBiYzA5ZmU4ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6Mzk6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIG92bWY6IFVwZGF0ZSB0byBsYXRlc3QKKworRGVzY3JpcHRpb246IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3IgdG8gYWxsIEdDQyB0b29sY2hhaW5zCisgVGhlIHVwc3RyZWFtIGJ1aWxkIHJ1bGVzIGluZXhwbGljYWJseSBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIG9ubHkKKyB3aGVuIGJ1aWxkaW5nIGZvciBpMzg2IGFuZCBhbWQ2NC4gIEFkZCB0aGlzIGVzc2VudGlhbCBhcmd1bWVudCB0byB0aGUKKyBnZW5lcmljIHJ1bGVzIGZvciBnY2MgNC40IGFuZCBsYXRlci4KK0xhc3QtVXBkYXRlZDogMjAxNi0wNC0xMgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIEJhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZSB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlIGIvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCitpbmRleCBjYTBiMTIyZGJiLi5iMDA2NmMyYWI4IDEwMDc1NQorLS0tIGEvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCisrKysgYi9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK0BAIC0xOTQxLDEwICsxOTQxLDEwIEBAIERFRklORSBHQ0NfWDY0X1JDX0ZMQUdTICAgICAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQteDg2LTY0ICAgICAgICAtQiBpMzg2CisgREVGSU5FIEdDQ19BUk1fUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGYzMi1saXR0bGVhcm0gICAgIC1CIGFybSAgICAgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIERFRklORSBHQ0NfQUFSQ0g2NF9SQ19GTEFHUyAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJjaDY0IC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KKyANCistREVGSU5FIEdDQzQ4X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorK0RFRklORSBHQ0M0OF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWZuby1zdGFjay1wcm90ZWN0b3IgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KKyBERUZJTkUgR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQorLURFRklORSBHQ0M0OF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCistREVGSU5FIEdDQzQ4X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW02NCAtZm5vLXN0YWNrLXByb3RlY3RvciAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQorK0RFRklORSBHQ0M0OF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCisrREVGSU5FIEdDQzQ4X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW02NCAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQorIERFRklORSBHQ0M0OF9JQTMyX1g2NF9BU0xETElOS19GTEFHUyA9IERFRihHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LFJlZmVyZW5jZUFjcGlUYWJsZSAtdSBSZWZlcmVuY2VBY3BpVGFibGUNCisgREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0ZMQUdTICAgID0gREVGKEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksJChJTUFHRV9FTlRSWV9QT0lOVCkgLXUgJChJTUFHRV9FTlRSWV9QT0lOVCkgLVdsLC1NYXAsJChERVNUX0RJUl9ERUJVRykvJChCQVNFX05BTUUpLm1hcCwtLXdob2xlLWFyY2hpdmUNCisgREVGSU5FIEdDQzQ4X0lBMzJfRExJTksyX0ZMQUdTICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyMCBERUYoR0NDX0RMSU5LMl9GTEFHU19DT01NT04pDQorQEAgLTE5NTMsNyArMTk1Myw3IEBAIERFRklORSBHQ0M0OF9YNjRfRExJTksyX0ZMQUdTICAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjggREVGCisgREVGSU5FIEdDQzQ4X0FTTV9GTEFHUyAgICAgICAgICAgICAgID0gREVGKEdDQ19BU01fRkxBR1MpDQorIERFRklORSBHQ0M0OF9BUk1fQVNNX0ZMQUdTICAgICAgICAgICA9ICQoQVJDSEFTTV9GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BU01fRkxBR1MpIC1tbGl0dGxlLWVuZGlhbg0KKyBERUZJTkUgR0NDNDhfQUFSQ0g2NF9BU01fRkxBR1MgICAgICAgPSAkKEFSQ0hBU01fRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVNNX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4NCistREVGSU5FIEdDQzQ4X0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVJNX0NDX0ZMQUdTKSAtZnN0YWNrLXByb3RlY3RvciAtbXdvcmQtcmVsb2NhdGlvbnMNCisrREVGSU5FIEdDQzQ4X0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVJNX0NDX0ZMQUdTKSAtbXdvcmQtcmVsb2NhdGlvbnMNCisgREVGSU5FIEdDQzQ4X0FSTV9DQ19YSVBGTEFHUyAgICAgICAgID0gREVGKEdDQ19BUk1fQ0NfWElQRkxBR1MpDQorIERFRklORSBHQ0M0OF9BQVJDSDY0X0NDX0ZMQUdTICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSAtbWNtb2RlbD1sYXJnZSBERUYoR0NDX0FBUkNINjRfQ0NfRkxBR1MpDQorIERFRklORSBHQ0M0OF9BQVJDSDY0X0NDX1hJUEZMQUdTICAgICA9IERFRihHQ0NfQUFSQ0g2NF9DQ19YSVBGTEFHUykNCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk1NGZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotRnJvbSAwMzJmYzZiMWY3NjkxYmQ1MzdmZDJhNmJkMTM4MjFmY2YzYzQ1ZTY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTEgU2VwIDIwMTcgMDI6MjE6NTUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3ZtZjogZW5hYmxlIGxvbmcgcGF0aCBmaWxlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIEJhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAotaW5kZXggMjA0MWI4OWUyZC4uODExNmFhMmUzNSAxMDA2NDQKLS0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKLSsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKLUBAIC0yMiArMjIgQEAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4KLS0jZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCA1MDANCi0rI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggMTAyMw0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL1ZmckNvbXBpbGUtaW5jcmVhc2UtcGF0aC1sZW5ndGgtbGltaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9WZnJDb21waWxlLWluY3JlYXNlLXBhdGgtbGVuZ3RoLWxpbWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjEyZDhiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL1ZmckNvbXBpbGUtaW5jcmVhc2UtcGF0aC1sZW5ndGgtbGltaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGM3NzIyZDEwYzdiY2Y2YmUwYWRjZjU0YWJiMWQ0MDY1OTlkZDc5MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDI0IEZlYiAyMDE3IDAxOjQwOjAyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFZmckNvbXBpbGU6IGluY3JlYXNlIHBhdGggbGVuZ3RoIGxpbWl0Ci0KLVRoZSBWZnJDb21waWxlIHRvb2wgaGFzIGEgaGFyZC1jb2RlZCBtYXhpbXVtIGxlbmd0aCBmb3IgcGF0aCBuYW1lcwotd2hpY2ggdHVybmVkIG91dCB0byBiZSB0b28gc21hbGwgYnkgYXJvdW5kIDIwIGNoYXJhY3RlcnMgaW4gdGhlIFlvY3RvCi1hdXRvYnVpbGRlciBzZXR1cC4gSW5jcmVhc2luZyB0aGUgbWF4aW11bSBieSBhIGZhY3RvciBvZiA0IGlzCi1yZWxhdGl2ZWx5IGVhc3kgYW5kIG1ha2VzIHRoZSBwcm9ibGVtIGxlc3MgbGlrZWx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLS0tLQotIEJhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmggYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaAotaW5kZXggZDE4NzkwMi4uOWFkNGE3YiAxMDA2NDQKLS0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oCi0rKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaAotQEAgLTE5LDcgKzE5LDcgQEAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4KLSAjaW5jbHVkZSAiQ29tbW9uL1VlZmlJbnRlcm5hbEZvcm1SZXByZXNlbnRhdGlvbi5oIg0KLSAjaW5jbHVkZSAiQ29tbW9uL01kZU1vZHVsZUhpaS5oIg0KLSANCi0tI2RlZmluZSBNQVhfUEFUSCAgICAgICAgICAgICAgICAgMjU1DQotKyNkZWZpbmUgTUFYX1BBVEggICAgICAgICAgICAgICAgIDEwMjMNCi0gI2RlZmluZSBNQVhfVkZSX0xJTkVfTEVOICAgICAgICAgNDA5Ng0KLSANCi0gI2RlZmluZSBFRklfSUZSX01BWF9MRU5HVEggICAgICAgMHhGRg0KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjUzNDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUF1dGhvcjogU3RldmUgTGFuZ2FzZWsgPHN0ZXZlLmxhbmdhc2VrQHVidW50dS5jb20+Ci1EZXNjcmlwdGlvbjogcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciB0byBhbGwgR0NDIHRvb2xjaGFpbnMKLSBUaGUgdXBzdHJlYW0gYnVpbGQgcnVsZXMgaW5leHBsaWNhYmx5IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3Igb25seQotIHdoZW4gYnVpbGRpbmcgZm9yIGkzODYgYW5kIGFtZDY0LiAgQWRkIHRoaXMgZXNzZW50aWFsIGFyZ3VtZW50IHRvIHRoZQotIGdlbmVyaWMgcnVsZXMgZm9yIGdjYyA0LjQgYW5kIGxhdGVyLgotTGFzdC1VcGRhdGVkOiAyMDE2LTA0LTEyCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCi0rKysgZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQotQEAgLTE3MzYsMTAgKzE3MzYsMTAgQEAgREVGSU5FIEdDQ19YNjRfUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC14ODYtNjQgICAgICAgIC1CIGkzODYKLSBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAgICAgLUIgYXJtICAgICAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCi0gREVGSU5FIEdDQ19BQVJDSDY0X1JDX0ZMQUdTICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC1saXR0bGVhYXJjaDY0IC1CIGFhcmNoNjQgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQotIA0KLS1ERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCi0rREVGSU5FIEdDQzQ4X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm5vLXN0YWNrLXByb3RlY3RvciAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQotIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjANCi0tREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLS1ERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCi0rREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLStERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0ICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCi0gREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0FTTERMSU5LX0ZMQUdTID0gREVGKEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksUmVmZXJlbmNlQWNwaVRhYmxlIC11IFJlZmVyZW5jZUFjcGlUYWJsZQ0KLSBERUZJTkUgR0NDNDhfSUEzMl9YNjRfRExJTktfRkxBR1MgICAgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSwkKElNQUdFX0VOVFJZX1BPSU5UKSAtdSAkKElNQUdFX0VOVFJZX1BPSU5UKSAtV2wsLU1hcCwkKERFU1RfRElSX0RFQlVHKS8kKEJBU0VfTkFNRSkubWFwLC0td2hvbGUtYXJjaGl2ZQ0KLSBERUZJTkUgR0NDNDhfSUEzMl9ETElOSzJfRkxBR1MgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjIwIERFRihHQ0NfRExJTksyX0ZMQUdTX0NPTU1PTikNCi1AQCAtMTc0OCw3ICsxNzQ4LDcgQEAgREVGSU5FIEdDQzQ4X1g2NF9ETElOSzJfRkxBR1MgICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyOCBERUYKLSBERUZJTkUgR0NDNDhfQVNNX0ZMQUdTICAgICAgICAgICAgICAgPSBERUYoR0NDX0FTTV9GTEFHUykNCi0gREVGSU5FIEdDQzQ4X0FSTV9BU01fRkxBR1MgICAgICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQotIERFRklORSBHQ0M0OF9BQVJDSDY0X0FTTV9GTEFHUyAgICAgICA9ICQoQVJDSEFTTV9GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BU01fRkxBR1MpIC1tbGl0dGxlLWVuZGlhbg0KLS1ERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1mc3RhY2stcHJvdGVjdG9yIC1td29yZC1yZWxvY2F0aW9ucw0KLStERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1td29yZC1yZWxvY2F0aW9ucw0KLSBERUZJTkUgR0NDNDhfQVJNX0NDX1hJUEZMQUdTICAgICAgICAgPSBERUYoR0NDX0FSTV9DQ19YSVBGTEFHUykNCi0gREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfRkxBR1MgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIC1tY21vZGVsPWxhcmdlIERFRihHQ0NfQUFSQ0g2NF9DQ19GTEFHUykNCi0gREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfWElQRkxBR1MgICAgID0gREVGKEdDQ19BQVJDSDY0X0NDX1hJUEZMQUdTKQ0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgppbmRleCBmZjJiMmE1Li45NjY3ZmEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCkBAIC0xMywxNCArMTMsMTQgQEAKIFBBQ0tBR0VDT05GSUdbc2VjdXJlYm9vdF0gPSAiLCwsIgogCiBTUkNfVVJJID0gImdpdHNtOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi5naXQ7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQgXAotCWZpbGU6Ly8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBcCi0JZmlsZTovLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoIFwKLQlmaWxlOi8vMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBcCi0JZmlsZTovL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW92bWYtVXBkYXRlLXRvLWxhdGVzdC5wYXRjaCBcCiAgICAgICAgICIKIAotUFYgPSAiZWRrMi1zdGFibGUyMDE5MDUiCi1TUkNSRVY9IjIwZDJlNWExMjVlMzRmYzg1MDEwMjY2MTNhNzE1NDliMmExYTNlNTQiCitQViA9ICJlZGsyLXN0YWJsZTIwMTkxMSIKK1NSQ1JFViA9ICJiZDg1YmY1NGMyNjgyMDRjN2E2OThhOTZmM2NjZDk2Y2Q3Nzk1MmNkIgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+ZWRrMi1zdGFibGUuKikiCiAKIGluaGVyaXQgZGVwbG95CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgppbmRleCA4ODU0ZWM0Li4wM2ZhNTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKQEAgLTE2LDcgKzE2LDYgQEAKICAgICBjb3JldXRpbHMgXAogICAgIGNjYWNoZSBcCiAgICAgZGlmZnV0aWxzIFwKLSAgICBpbnRsdG9vbCBcCiAgICAgcGVybC1tb2R1bGUtcmUgXAogICAgIHBlcmwtbW9kdWxlLXRleHQtd3JhcCBcCiAgICAgZmluZHV0aWxzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKaW5kZXggM2ZkNDIzYy4uYWMxODBiNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAotUFJPRklMRV9UT09MU19YID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3N5c3Byb2YnLCAnJywgZCl9IgorUFJPRklMRV9UT09MU19YID0gIiIKICMgc3lzcHJvZiBkb2Vzbid0IHN1cHBvcnQgYWFyY2g2NCBhbmQgbmlvczIKIFBST0ZJTEVfVE9PTFNfWF9hYXJjaDY0ID0gIiIKIFBST0ZJTEVfVE9PTFNfWF9uaW9zMiA9ICIiCkBAIC00Niw2ICs0Niw3IEBACiBMVFROR01PRFVMRVNfYXJjID0gIiIKIAogQkFCRUxUUkFDRSA9ICJiYWJlbHRyYWNlIgorQkFCRUxUUkFDRTIgPSAiYmFiZWx0cmFjZTIiCiAKICMgdmFsZ3JpbmQgZG9lcyBub3Qgd29yayBvbiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zL2FyY2hpdGVjdHVyZXMKIApAQCAtNjksNiArNzAsNyBAQAogICAgICR7TFRUTkdUT09MU30gXAogICAgICR7TFRUTkdNT0RVTEVTfSBcCiAgICAgJHtCQUJFTFRSQUNFfSBcCisgICAgJHtCQUJFTFRSQUNFMn0gXAogICAgICR7U1lTVEVNVEFQfSBcCiAgICAgJHtWQUxHUklORH0gXAogICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgppbmRleCA1YWZiNDkwLi45YTUyYjA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCkBAIC0zLDkgKzMsMTAgQEAKIGluaGVyaXQgcGFja2FnZWdyb3VwIGdvYXJjaAogCiBSREVQRU5EU18ke1BOfSA9ICIgXAorICAgIGdvIFwKICAgICBnby1ydW50aW1lIFwKICAgICBnby1ydW50aW1lLWRldiBcCiAgICAgZ28tcnVudGltZS1zdGF0aWNkZXYgXAogIgogCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IXJpc2N2NjQpLioiCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IXJpc2N2MzIpLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgppbmRleCAwYWFiMjNlLi45YTcwYjE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKQEAgLTc1LDcgKzc1LDYgQEAKICAgICBnKystc3ltbGlua3MgXAogICAgIGdjYyBcCiAgICAgZ2NjLXN5bWxpbmtzIFwKLSAgICBpbnRsdG9vbCBcCiAgICAgbGRkIFwKICAgICBsZXNzIFwKICAgICBsaWJzdGRjKysgXApAQCAtMTA5LDcgKzEwOCw2IEBACiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC1leHRlbmRlZCA9ICJcCiAgICAgYnppcDIgXAotICAgIGNoa2NvbmZpZyBcCiAgICAgY2hycGF0aCBcCiAgICAgY3BpbyBcCiAgICAgY3VybCBcCkBAIC0xNTMsOCArMTUxLDYgQEAKICAgICBwZXJsLW1pc2MgXAogICAgIHBlcmwtbW9kdWxlcyBcCiAgICAgcGVybC1wb2QgXAotICAgIHB5dGhvbiBcCi0gICAgcHl0aG9uLW1vZHVsZXMgXAogICAgIHB5dGhvbjMgXAogICAgIHB5dGhvbjMtbW9kdWxlcyBcCiAgICAgcHl0aG9uMy1naXQgXApAQCAtMTY4LDcgKzE2NCw2IEBACiAgICAgc3lzc3RhdCBcCiAgICAgdGFyIFwKICAgICB0Y2wgXAotICAgIHRleGkyaHRtbCBcCiAgICAgdGV4aW5mbyBcCiAgICAgdW56aXAgXAogICAgIHVzYnV0aWxzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CmluZGV4IDRiZWU4NjYuLmY1OGUwNDMgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdApAQCAtMjMsMTAgKzIzLDEwIEBACiAgICAgICAgIGVzYWMKIGRvbmUKIAotZXhwb3J0IFRNUERJUj0vbW50Ly5wc3BsYXNoCi1bIC1kICRUTVBESVIgXSB8fCBta2RpciAtcCAkVE1QRElSCi1pZiAhIG1vdW50cG9pbnQgLXEgJFRNUERJUjsgdGhlbgotCW1vdW50IHRtcGZzIC10IHRtcGZzICRUTVBESVIgLW8sc2l6ZT00MGsKK2V4cG9ydCBQU1BMQVNIX0ZJRk9fRElSPS9tbnQvLnBzcGxhc2gKK1sgLWQgJFBTUExBU0hfRklGT19ESVIgXSB8fCBta2RpciAtcCAkUFNQTEFTSF9GSUZPX0RJUgoraWYgISBtb3VudHBvaW50IC1xICRQU1BMQVNIX0ZJRk9fRElSOyB0aGVuCisJbW91bnQgdG1wZnMgLXQgdG1wZnMgJFBTUExBU0hfRklGT19ESVIgLW8sc2l6ZT00MGsKIGZpCiAKIHJvdGF0aW9uPTAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zdGFydC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YzJiYjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zdGFydC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTIgQEAKK1tVbml0XQorRGVzY3JpcHRpb249U3RhcnQgcHNwbGFzaCBib290IHNwbGFzaCBzY3JlZW4KK0RlZmF1bHREZXBlbmRlbmNpZXM9bm8KK1JlcXVpcmVzTW91bnRzRm9yPS9ydW4KKworW1NlcnZpY2VdCitUeXBlPW5vdGlmeQorRXhlY1N0YXJ0PS91c3IvYmluL3BzcGxhc2gKK1JlbWFpbkFmdGVyRXhpdD15ZXMKKworW0luc3RhbGxdCitXYW50ZWRCeT1zeXNpbml0LnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MjIwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1TdGFydCBwc3BsYXNoLXN5c3RlbWQgcHJvZ3Jlc3MgY29tbXVuaWNhdGlvbiBoZWxwZXIKK0RlZmF1bHREZXBlbmRlbmNpZXM9bm8KK0FmdGVyPXBzcGxhc2gtc3RhcnQuc2VydmljZQorUmVxdWlyZXM9cHNwbGFzaC1zdGFydC5zZXJ2aWNlCitSZXF1aXJlc01vdW50c0Zvcj0vcnVuCisKK1tTZXJ2aWNlXQorRXhlY1N0YXJ0PS91c3IvYmluL3BzcGxhc2gtc3lzdGVtZAorUmVtYWluQWZ0ZXJFeGl0PXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKaW5kZXggNTY3MzRjMS4uMjJjNzFmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgpAQCAtMywxNCArMywxNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcHNwbGFzaCIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHNwbGFzaC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTY7bWQ1PTg0MGZiMjM1NmIxMGE4NWJlZDc4ZGQwOWRjNzc0NWM2IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHNwbGFzaC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9ODttZDU9OGYyMzJjMWU5NTkyOWVhY2FiMzdmMDA5MDA1ODAyMjQiCitERVBFTkRTID0gImdkay1waXhidWYtbmF0aXZlIgogCi1TUkNSRVYgPSAiMjAxNWY3MDczZTk4ZGQ5NTYyZGIwOTM2YTI1NGFmNWVmNTYzNTZjZiIKK1NSQ1JFViA9ICIwYTkwMmY3Y2Q4NzVjY2YwMTg0NTY0NTFiZTM2OWYwNWZhNTVmOTYyIgogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogUFIgPSAicjE1IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCiAgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLWluaXQgXAorICAgICAgICAgICBmaWxlOi8vcHNwbGFzaC1zdGFydC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3BzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlIFwKICAgICAgICAgICAgJHtTUExBU0hfSU1BR0VTfSIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIApAQCAtMjEsNyArMjQsNiBAQAogICAgIHNwbGFzaGZpbGVzID0gZC5nZXRWYXIoJ1NQTEFTSF9JTUFHRVMnKS5zcGxpdCgpCiAgICAgcGtncyA9IFtdCiAgICAgbG9jYWxwYXRocyA9IFtdCi0gICAgaGFzcG5nID0gRmFsc2UKICAgICBmb3IgdXJpIGluIHNwbGFzaGZpbGVzOgogICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKFt1cmldLCBkKQogICAgICAgICBmbG9jYWwgPSBvcy5wYXRoLmJhc2VuYW1lKGZldGNoZXIubG9jYWxwYXRoKHVyaSkpCkBAIC0zOSwxNyArNDEsMTIgQEAKICAgICAgICAgICAgIGJiLmZhdGFsKCJUaGUgb3V0cHV0IG5hbWUgJyVzJyBkZXJpdmVkIGZyb20gdGhlIFVSSSAlcyBpcyBub3QgdmFsaWQsIHBsZWFzZSBzcGVjaWZ5IHRoZSBvdXRzdWZmaXggcGFyYW1ldGVyIiAlIChvdXRuYW1lLCB1cmkpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGtncy5hcHBlbmQob3V0bmFtZSkKLSAgICAgICAgaWYgZmxvY2FsLmVuZHN3aXRoKCIucG5nIik6Ci0gICAgICAgICAgICBoYXNwbmcgPSBUcnVlCiAgICAgICAgIGxvY2FscGF0aHMuYXBwZW5kKGZsb2NhbCkKIAogICAgICMgU2V0IHRoZXNlIHNvIHRoYXQgd2UgaGF2ZSBsZXNzIHdvcmsgdG8gZG8gaW4gZG9fY29tcGlsZSBhbmQgZG9faW5zdGFsbF9hcHBlbmQKICAgICBkLnNldFZhcigiU1BMQVNIX0lOU1RBTEwiLCAiICIuam9pbihwa2dzKSkKICAgICBkLnNldFZhcigiU1BMQVNIX0xPQ0FMUEFUSFMiLCAiICIuam9pbihsb2NhbHBhdGhzKSkKIAotICAgIGlmIGhhc3BuZzoKLSAgICAgICAgZC5hcHBlbmRWYXIoIkRFUEVORFMiLCAiIGdkay1waXhidWYtbmF0aXZlIikKLQogICAgIGQucHJlcGVuZFZhcigiUEFDS0FHRVMiLCAiJXMgIiAlICgiICIuam9pbihwa2dzKSkpCiAgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAnJwogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykgb3IgJycKQEAgLTY2LDcgKzYzLDExIEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtwc3BsYXNoXSA9ICIke2JpbmRpcn0vcHNwbGFzaCIKQEAgLTc4LDcgKzc5LDcgQEAKICAgICAjIEJ1aWxkIGEgc2VwYXJhdGUgZXhlY3V0YWJsZSBmb3IgZWFjaCBzcGxhc2ggaW1hZ2UKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQogICAgIGNvbnZlcnRzY3JpcHQgPSAiJXMvbWFrZS1pbWFnZS1oZWFkZXIuc2giICUgZC5nZXRWYXIoJ1MnKQotICAgIGRlc3RmaWxlID0gIiVzL3BzcGxhc2gtcG9reS1pbWcuaCIgJSBkLmdldFZhcignUycpCisgICAgZGVzdGZpbGUgPSAiJXMvcHNwbGFzaC1wb2t5LWltZy5oIiAlIGQuZ2V0VmFyKCdCJykKICAgICBsb2NhbGZpbGVzID0gZC5nZXRWYXIoJ1NQTEFTSF9MT0NBTFBBVEhTJykuc3BsaXQoKQogICAgIG91dHB1dGZpbGVzID0gZC5nZXRWYXIoJ1NQTEFTSF9JTlNUQUxMJykuc3BsaXQoKQogICAgIGZvciBsb2NhbGZpbGUsIG91dHB1dGZpbGUgaW4gemlwKGxvY2FsZmlsZXMsIG91dHB1dGZpbGVzKToKQEAgLTk3LDggKzk4LDE3IEBACiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3BzcGxhc2gtaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHNwbGFzaC5zaAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcHNwbGFzaC1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wc3BsYXNoLnNoCisJZmkKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJZmkKKwogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQogCWZvciBpIGluICR7U1BMQVNIX0lOU1RBTEx9IDsgZG8KIAkJaW5zdGFsbCAtbSAwNzU1ICRpICR7RH0ke2JpbmRpcn0vJGkKQEAgLTEwNiwxNSArMTE2LDggQEAKIAlybSAtZiAke0R9JHtiaW5kaXJ9L3BzcGxhc2gKIH0KIAorU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7UE59JywnJyxkKX0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3RlbWQnLCAncHNwbGFzaC1zdGFydC5zZXJ2aWNlIHBzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlJywgJycsIGQpfSIKKwogSU5JVFNDUklQVF9OQU1FID0gInBzcGxhc2guc2giCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwIFMgLiBzdG9wIDIwIDAgMSA2IC4iCi0KLVBBQ0tBR0VfV1JJVEVfREVQU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlJywnJyxkKX0iCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJCU9QVFM9Ii0tcm9vdD0kRCIKLQkJZmkKLQkJc3lzdGVtY3RsICRPUFRTIG1hc2sgcHNwbGFzaC5zZXJ2aWNlCi0JZmkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKaW5kZXggMDdmNTRhNy4uMDUyZTJkNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKQEAgLTQ0LDcgKzQ0LDEzIEBACiAKIENPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9pbnB1dHJjIgogCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhpc3RvcnkuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoaXN0b3J5LjNdID0gIiR7bWFuZGlyfS9tYW4zL2hpc3RvcnkuMyIKKwogIyBPcGVuU3VzZSBpbmplY3RzIHZlcnNpb25zIGludG8gbGlicmVhZGxpbmUgbGVhZGluZyB0byBjb25maWNpdHMgYmV0d2VlbiBvdXIgbmF0aXZlIG9uZSBhbmQgdGhlaXJzCiAjIHNlZSB0aGVpciBzcGVjIGZpbGUgZm9yIHdoZXJlIHRoaXMgaXMgaW5qZWN0ZWQuIEV4dHJhIHZlcnNpb25pbmcgaXMgaGFybWxlc3Mgc28gd2UganVzdCBkbyB0aGUgc2FtZS4KIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JsLW5hdGl2ZS5tYXAiCi1MREZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1XbCwtLXZlcnNpb24tc2NyaXB0PSR7V09SS0RJUn0vcmwtbmF0aXZlLm1hcCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitMREZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1XbCwtLXZlcnNpb24tc2NyaXB0PSR7V09SS0RJUn0vcmwtbmF0aXZlLm1hcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNWFiYzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9zeXN0ZW1kOiIKLQotcmVxdWlyZSBjb25mL2ltYWdlLXVlZmkuY29uZgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKLQotIyBOT1RFOiBUaGVzZSB0aHJlZSBwYXRjaGVzIGFyZSBpbiB0aGVvcnkgbm90IG5lZWRlZCwgYnV0IHdlIGhhdmVuJ3QKLSMgICAgICAgZmlndXJlZCBvdXQgaG93IHRvIGNvcnJlY3RseSBwYXNzIGVmaS1jYyBwYXJhbWV0ZXIgaWYgaXQncyBhbiBhcnJheS4KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVJldmVydC1tZXNvbi11c2UtYW4tYXJyYXktb3B0aW9uLWZvci1lZmktY2MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LW1lc29uLXByaW50LUVGSS1DQy1jb25maWd1cmF0aW9uLW5pY2VseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLUFkZC1EZWZpLW9iamNvcHktb3B0aW9uLXRvLXNwZWNpZnktb2JqY29weS5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQKLWluaGVyaXQgZGVwbG95Ci0KLUVGSV9DQyA/PSAiJHtDQ30iCi1FWFRSQV9PRU1FU09OICs9ICItRGVmaT10cnVlIFwKLSAgICAgICAgICAgICAgICAgIC1EZ251LWVmaT10cnVlIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxkc2Rpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgLURtYW49ZmFsc2UgXAotICAgICAgICAgICAgICAgICAgLURlZmktY2M9JyR7RUZJX0NDfScgXAotICAgICAgICAgICAgICAgICAgLURlZmktbGQ9JyR7TER9JyBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1vYmpjb3B5PScke09CSkNPUFl9JyBcCi0gICAgICAgICAgICAgICAgICAiCi0KLSMgaW5zdGFsbCB0byB0aGUgaW1hZ2UgYXMgYm9vdCouZWZpIGlmIGl0cyB0aGUgRUZJX1BST1ZJREVSLAotIyBvdGhlcndpc2UgaW5zdGFsbCBhcyB0aGUgZnVsbCBuYW1lLgotIyBUaGlzIGFsbG93cyBtdWx0aXBsZSBib290bG9hZGVycyB0byBjb2V4aXN0IGluIGEgc2luZ2xlIGltYWdlLgotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpbXBvcnQgcmUKLSAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQotICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInKSA9PSAic3lzdGVtZC1ib290IiBlbHNlICJzeXN0ZW1kLSIKLSAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyBkLmdldFZhcigiRUZJX0JPT1RfSU1BR0UiKQotICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0UiLCBzeXN0ZW1kaW1hZ2UpCi0gICAgcHJlZml4ID0gInN5c3RlbWQtIiBpZiBwcmVmaXggPT0gIiIgZWxzZSAiIgotICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYIiwgcHJlZml4KQotfQotCi1GSUxFU18ke1BOfSA9ICIke0VGSV9GSUxFU19QQVRIfS8ke1NZU1RFTURfQk9PVF9JTUFHRX0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ2aXJ0dWFsL3N5c3RlbWQtYm9vdGNvbmYiCi0KLSMgSW1wb3J0ZWQgZnJvbSB0aGUgb2xkIGd1bW1pYm9vdCByZWNpcGUKLVRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKiktbGludXgiCi1DT01QQVRJQkxFX0hPU1RfeDg2LXgzMiA9ICJudWxsIgotCi1kb19jb21waWxlKCkgewotCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgotCWZpCi0KLQluaW5qYSBzcmMvYm9vdC9lZmkvJHtTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYfSR7U1lTVEVNRF9CT09UX0lNQUdFfQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7RUZJX0ZJTEVTX1BBVEh9Ci0JaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0R9JHtFRklfRklMRVNfUEFUSH0vJHtTWVNURU1EX0JPT1RfSU1BR0V9Ci19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KLX0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0NS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTJjNjM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDUuNS5iYgpAQCAtMCwwICsxLDcwIEBACityZXF1aXJlIHN5c3RlbWQuaW5jCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9zeXN0ZW1kOiIKKworcmVxdWlyZSBjb25mL2ltYWdlLXVlZmkuY29uZgorCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkZXBsb3kKKworTERGTEFHU19wcmVwZW5kID0gIiR7QCAiICIuam9pbihkLmdldFZhcignTEQnKS5zcGxpdCgpWzE6XSl9ICIKKworZG9fd3JpdGVfY29uZmlnW3ZhcmRlcHNdICs9ICJDQyBPQkpDT1BZIgorZG9fd3JpdGVfY29uZmlnX2FwcGVuZCgpIHsKKyAgICBjYXQgPiR7V09SS0RJUn0vbWVzb24tJHtQTn0uY3Jvc3MgPDxFT0YKK1tiaW5hcmllc10KK2VmaV9jYyA9ICR7QG1lc29uX2FycmF5KCdDQycsIGQpfQorb2JqY29weSA9ICR7QG1lc29uX2FycmF5KCdPQkpDT1BZJywgZCl9CitFT0YKK30KKworRVhUUkFfT0VNRVNPTiArPSAiLURlZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGdudS1lZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURlZmktbGQ9JHtAIGQuZ2V0VmFyKCdMRCcpLnNwbGl0KClbMF19IFwKKyAgICAgICAgICAgICAgICAgIC1EbWFuPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAgIC0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLSR7UE59LmNyb3NzIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBpbnN0YWxsIHRvIHRoZSBpbWFnZSBhcyBib290Ki5lZmkgaWYgaXRzIHRoZSBFRklfUFJPVklERVIsCisjIG90aGVyd2lzZSBpbnN0YWxsIGFzIHRoZSBmdWxsIG5hbWUuCisjIFRoaXMgYWxsb3dzIG11bHRpcGxlIGJvb3Rsb2FkZXJzIHRvIGNvZXhpc3QgaW4gYSBzaW5nbGUgaW1hZ2UuCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGltcG9ydCByZQorICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicpID09ICJzeXN0ZW1kLWJvb3QiIGVsc2UgInN5c3RlbWQtIgorICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArIGQuZ2V0VmFyKCJFRklfQk9PVF9JTUFHRSIpCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRSIsIHN5c3RlbWRpbWFnZSkKKyAgICBwcmVmaXggPSAic3lzdGVtZC0iIGlmIHByZWZpeCA9PSAiIiBlbHNlICIiCisgICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvc3lzdGVtZC1ib290Y29uZiIKKworIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQorVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKK0NPTVBBVElCTEVfSE9TVF94ODYteDMyID0gIm51bGwiCisKK2RvX2NvbXBpbGUoKSB7CisJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgorCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KKwkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCisJZmkKKworCW5pbmphIHNyYy9ib290L2VmaS8ke1NZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVh9JHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtFRklfRklMRVNfUEFUSH0KKwlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7RH0ke0VGSV9GSUxFU19QQVRIfS8ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9fZGVwbG95ICgpIHsKKwlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQorfQorYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgppbmRleCBmYWE0MjhiLi4zNjFkYzFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCkBAIC0xMCw2ICsxMCw4IEBACiAKIGluaGVyaXQgZmVhdHVyZXNfY2hlY2sKIAorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKwogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mXzI0My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQ1LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQzLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mXzI0NS41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bAppbmRleCBlYmFjODYzLi45OTBkZTFhIDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgIGRlZiBfcGF0aF9mb3JfdW5pdChzZWxmLCB1bml0KToKICAgICAgICAgZm9yIGxvY2F0aW9uIGluIGxvY2F0aW9uczoKICAgICAgICAgICAgIHBhdGggPSBzZWxmLnJvb3QgLyBsb2NhdGlvbiAvICJzeXN0ZW0iIC8gdW5pdAotICAgICAgICAgICAgaWYgcGF0aC5leGlzdHMoKToKKyAgICAgICAgICAgIGlmIHBhdGguZXhpc3RzKCkgb3IgcGF0aC5pc19zeW1saW5rKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGgKIAogICAgICAgICByYWlzZSBTeXN0ZW1kVW5pdE5vdEZvdW5kRXJyb3Ioc2VsZi5yb290LCB1bml0KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IDdmM2E1OWMuLjBmODI1ODAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKQEAgLTE0LDEwICsxNCw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuTEdQTDIuMTttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ1JFViA9ICJlZmI1MzZkMGNiZTJlNThmODBlNTAxZDE5OTk5OTI4Yzc1ZTA4ZjZhIgotU1JDQlJBTkNIID0gInYyNDMtc3RhYmxlIgorU1JDUkVWID0gIjlhNTA2YjdlOTI5MWQ5OTdhOTIwYWY5YWMyOTllN2I4MzQzNjgxMTkiCitTUkNCUkFOQ0ggPSAidjI0NS1zdGFibGUiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLXN0YWJsZS5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVBWX2FwcGVuZCA9ICIrJHtTUkNQVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZTE5YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA1Mjc0MTNlYzI0MzU2NGE4OWZmYWFkNjM2OGQ0NDZkZTQ0NDE1OTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAyMTo0MjoyMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdG8gcnVuIGVmaV9jYyBhbmQgZWZpX2xkIGNvcnJlY3RseSB3aGVuIGNyb3NzLWNvbXBpbGluZwotCi1XaGVuIGNyb3NzLWNvbXBpbGluZywgZWZpX2NjIGFuZCBlZmlfbGQgbWF5IHRha2UgdGhlIGZvcm0gb2YKLSd4eHgtZ2NjIC0tc3lzcm9vdD14eHgnLCBhbmQgdGhpcyB3b3VsZCBjYXVzZSBydW5fY29tbWFuZCBhbmQKLXRoZSBhbGlrZSBmYWlsLgotCi1GaXggdG8gc3BsaXQgdGhlbSB0byBtYWtlIGNvbW1hbmRzIHJ1biBjb3JyZWN0bHkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgfCAxNiArKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLWluZGV4IDk5MmEzYmE0Yy4uOWY5ZWM0OTExIDEwMDY0NAotLS0tIGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLUBAIC0xNTcsNyArMTU3LDcgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIG9fZmlsZSA9IGN1c3RvbV90YXJnZXQoZmlsZSArICcubycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgOiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IGZpbGUgKyAnLm8nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2NjLCAnLWMnLCAnQElOUFVUQCcsICctbycsICdAT1VUUFVUQCddCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9jYy5zcGxpdCgpICsgWyctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjb21waWxlX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kX2ZpbGVzIDogZWZpX2hlYWRlcnMpCi0gICAgICAgICAgICAgICAgIGlmIChjb21tb25fc291cmNlcyArIHN5c3RlbWRfYm9vdF9zb3VyY2VzKS5jb250YWlucyhmaWxlKQotQEAgLTE2OCw3ICsxNjgsMTcgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIGVuZGlmCi0gICAgICAgICBlbmRmb3JlYWNoCi0gCi0tICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZWZpX2NjLCAnLXByaW50LWxpYmdjYy1maWxlLW5hbWUnKS5zdGRvdXQoKS5zdHJpcCgpCi0rICAgICAgICBmaW5kX2xpYmdjY19jbWRfYWxsID0gZWZpX2NjICsgJyAtcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScKLSsgICAgICAgIGZpbmRfbGliZ2NjX2NtZCA9IGZpbmRfbGliZ2NjX2NtZF9hbGwuc3BsaXQoKVswXQotKyAgICAgICAgZmluZF9saWJnY2NfYXJncyA9IFtdCi0rICAgICAgICBjbWRfYXJnc19hbGwgPSBmaW5kX2xpYmdjY19jbWRfYWxsLnNwbGl0KCkKLSsgICAgICAgIGZvcmVhY2ggYXJnIDogY21kX2FyZ3NfYWxsCi0rICAgICAgICAgICAgICAgIGlmIGFyZyAhPSBmaW5kX2xpYmdjY19jbWQKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2xpYmdjY19hcmdzICs9IGFyZwotKyAgICAgICAgICAgICAgICBlbmRpZgotKyAgICAgICAgZW5kZm9yZWFjaAotKwotKyAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGZpbmRfbGliZ2NjX2NtZCwgZmluZF9saWJnY2NfYXJncykuc3Rkb3V0KCkuc3RyaXAoKQotICAgICAgICAgc3lzdGVtZF9ib290X2VmaV9uYW1lID0gJ3N5c3RlbWQtYm9vdEAwQC5lZmknLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBzdHViX2VmaV9uYW1lID0gJ2xpbnV4QDBALmVmaS5zdHViJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQotICAgICAgICAgbm9fdW5kZWZpbmVkX3N5bWJvbHMgPSBmaW5kX3Byb2dyYW0oJ25vLXVuZGVmaW5lZC1zeW1ib2xzLnNoJykKLUBAIC0xNzksNyArMTg5LDcgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHVwbGVbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgOiB0dXBsZVsyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgOiB0dXBsZVswXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2VmaV9sZCwgJy1vJywgJ0BPVVRQVVRAJ10gKwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBlZmlfbGQuc3BsaXQoKSArIFsnLW8nLCAnQE9VVFBVVEAnXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmaV9sZGZsYWdzICsgdHVwbGVbMl0gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy1sZWZpJywgJy1sZ251ZWZpJywgbGliZ2NjX2ZpbGVfbmFtZV0pCi0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhhbmRsZS1taXNzaW5nLWdzaGFkb3cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhhbmRsZS1taXNzaW5nLWdzaGFkb3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhNTk3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaApAQCAtMCwwICsxLDE3MSBAQAorRnJvbSBlZjk1ODBlYTFlMmYxZTU3YWYzYzdkY2IwZWMzOTJiYThkYmI1YzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMCBNYXIgMjAyMCAxMTowNToyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBIYW5kbGUgbWlzc2luZyBnc2hhZG93CisKK2dzaGFkb3cgdXNhZ2UgaXMgbm93IHByZXNlbnQgaW4gdGhlIHVzZXJkYiBjb2RlLiBNYXNrIGFsbCB1c2VzIG9mIGl0IHRvCithbGxvdyBjb21waWxhdGlvbiBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyBzcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuaCB8ICA0ICsrKysKKyBzcmMvc2hhcmVkL3VzZXJkYi5jICAgICAgICAgICB8ICA2ICsrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMgYi9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYworaW5kZXggNzc5MjRmMWM0MDY3Li5jNjQ0OTAyNTNmZjMgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYworKysrIGIvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMKK0BAIC0xOSw4ICsxOSwxMCBAQCBpbnQgbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZCgKKyAgICAgICAgIGlmIChpc2VtcHR5KGdycC0+Z3JfbmFtZSkpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgaWYgKHNncnAgJiYgIXN0cmVxX3B0cihzZ3JwLT5zZ19uYW1wLCBncnAtPmdyX25hbWUpKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKysjZW5kaWYKKyAKKyAgICAgICAgIGcgPSBncm91cF9yZWNvcmRfbmV3KCk7CisgICAgICAgICBpZiAoIWcpCitAQCAtMzYsNiArMzgsNyBAQCBpbnQgbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZCgKKyAKKyAgICAgICAgIGctPmdpZCA9IGdycC0+Z3JfZ2lkOworIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgaWYgKHNncnApIHsKKyAgICAgICAgICAgICAgICAgaWYgKGhhc2hlZF9wYXNzd29yZF92YWxpZChzZ3JwLT5zZ19wYXNzd2QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZy0+aGFzaGVkX3Bhc3N3b3JkID0gc3Rydl9uZXcoc2dycC0+c2dfcGFzc3dkKTsKK0BAIC01MSw2ICs1NCw3IEBAIGludCBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKAorICAgICAgICAgICAgICAgICBpZiAoIWctPmFkbWluaXN0cmF0b3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICAgfQorKyNlbmRpZgorIAorICAgICAgICAgciA9IGpzb25fYnVpbGQoJmctPmpzb24sIEpTT05fQlVJTERfT0JKRUNUKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT05fQlVJTERfUEFJUigiZ3JvdXBOYW1lIiwgSlNPTl9CVUlMRF9TVFJJTkcoZy0+Z3JvdXBfbmFtZSkpLAorQEAgLTc2LDYgKzgwLDcgQEAgaW50IG5zc19zZ3JwX2Zvcl9ncm91cChjb25zdCBzdHJ1Y3QgZ3JvdXAgKmdycCwgc3RydWN0IHNncnAgKnJldF9zZ3JwLCBjaGFyICoqcmUKKyAgICAgICAgIGFzc2VydChyZXRfc2dycCk7CisgICAgICAgICBhc3NlcnQocmV0X2J1ZmZlcik7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmJ1ZiA9IE5VTEw7CisgICAgICAgICAgICAgICAgIHN0cnVjdCBzZ3JwIHNncnAsICpyZXN1bHQ7CitAQCAtMTA0LDYgKzEwOSw5IEBAIGludCBuc3Nfc2dycF9mb3JfZ3JvdXAoY29uc3Qgc3RydWN0IGdyb3VwICpncnAsIHN0cnVjdCBzZ3JwICpyZXRfc2dycCwgY2hhciAqKnJlCisgICAgICAgICAgICAgICAgIGJ1ZmxlbiAqPSAyOworICAgICAgICAgICAgICAgICBidWYgPSBtZnJlZShidWYpOworICAgICAgICAgfQorKyNlbHNlCisrICAgICAgICByZXR1cm4gLUVTUkNIOworKyNlbmRpZgorIH0KKyAKKyBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEdyb3VwUmVjb3JkICoqcmV0KSB7CitAQCAtMTExLDcgKzExOSw5IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIHN0cnVjdCBncm91cCBncnAsICpyZXN1bHQ7CisgICAgICAgICBib29sIGluY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgIHNpemVfdCBidWZsZW4gPSA0MDk2OworKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgc3RydWN0IHNncnAgc2dycDsKKysjZW5kaWYKKyAgICAgICAgIGludCByOworIAorICAgICAgICAgYXNzZXJ0KG5hbWUpOworQEAgLTE0MSw2ICsxNTEsNyBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgIGJ1ZiA9IG1mcmVlKGJ1Zik7CisgICAgICAgICB9CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICByID0gbnNzX3NncnBfZm9yX2dyb3VwKHJlc3VsdCwgJnNncnAsICZzYnVmKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byBkbyBzaGFkb3cgbG9va3VwIGZvciBncm91cCAlcywgaWdub3Jpbmc6ICVtIiwgcmVzdWx0LT5ncl9uYW1lKTsKK0BAIC0xNDgsNiArMTU5LDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgfQorIAorICAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQocmVzdWx0LCByID49IDAgPyAmc2dycCA6IE5VTEwsIHJldCk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKHJlc3VsdCwgTlVMTCwgcmV0KTsKKysjZW5kaWYKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCitAQCAtMTYwLDcgKzE3NCw5IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X2dpZChnaWRfdCBnaWQsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICBzdHJ1Y3QgZ3JvdXAgZ3JwLCAqcmVzdWx0OworICAgICAgICAgYm9vbCBpbmNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgICBzaXplX3QgYnVmbGVuID0gNDA5NjsKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIHN0cnVjdCBzZ3JwIHNncnA7CisrI2VuZGlmCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydChyZXQpOworQEAgLTE4OCw2ICsyMDQsNyBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9naWQoZ2lkX3QgZ2lkLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgICAgICAgICBidWYgPSBtZnJlZShidWYpOworICAgICAgICAgfQorIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgciA9IG5zc19zZ3JwX2Zvcl9ncm91cChyZXN1bHQsICZzZ3JwLCAmc2J1Zik7CisgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gZG8gc2hhZG93IGxvb2t1cCBmb3IgZ3JvdXAgJXMsIGlnbm9yaW5nOiAlbSIsIHJlc3VsdC0+Z3JfbmFtZSk7CitAQCAtMTk1LDYgKzIxMiw5IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X2dpZChnaWRfdCBnaWQsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICB9CisgCisgICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIHIgPj0gMCA/ICZzZ3JwIDogTlVMTCwgcmV0KTsKKysjZWxzZQorKyAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQocmVzdWx0LCBOVUxMLCByZXQpOworKyNlbmRpZgorICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuaCBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oCitpbmRleCAzOGIyOTk1MTc4ZmYuLmQ3ZDk1YzQ0Y2YxMSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oCisrKysgYi9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuaAorQEAgLTIsNyArMiwxMSBAQAorICNwcmFnbWEgb25jZQorIAorICNpbmNsdWRlIDxncnAuaD4KKysjaWYgRU5BQkxFX0dTSEFET1cKKyAjaW5jbHVkZSA8Z3NoYWRvdy5oPgorKyNlbHNlCisrc3RydWN0IHNncnA7CisrI2VuZGlmCisgCisgI2luY2x1ZGUgImdyb3VwLXJlY29yZC5oIgorIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXNlcmRiLmMgYi9zcmMvc2hhcmVkL3VzZXJkYi5jCitpbmRleCA5MmY4Nzk2NzY4ZDcuLjVkOTEyODYyZjg1YyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdXNlcmRiLmMKKysrKyBiL3NyYy9zaGFyZWQvdXNlcmRiLmMKK0BAIC05MjQsMTMgKzkyNCwxNiBAQCBpbnQgZ3JvdXBkYl9pdGVyYXRvcl9nZXQoVXNlckRCSXRlcmF0b3IgKml0ZXJhdG9yLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgICAgICAgICBpZiAoZ3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW5jb21wbGV0ZSA9IGZhbHNlOworKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZ3JwIHNncnA7CisrI2VuZGlmCisgCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVxX3B0cihnci0+Z3JfbmFtZSwgInJvb3QiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT5zeW50aGVzaXplX3Jvb3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3ItPmdyX2dpZCA9PSBHSURfTk9CT0RZKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3ItPnN5bnRoZXNpemVfbm9ib2R5ID0gZmFsc2U7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5zc19zZ3JwX2Zvcl9ncm91cChnciwgJnNncnAsICZidWZmZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gYWNxdWlyZSBzaGFkb3cgZW50cnkgZm9yIGdyb3VwICVzLCBpZ25vcmluZzogJW0iLCBnci0+Z3JfbmFtZSk7CitAQCAtOTM4LDYgKzk0MSw5IEBAIGludCBncm91cGRiX2l0ZXJhdG9yX2dldChVc2VyREJJdGVyYXRvciAqaXRlcmF0b3IsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKGdyLCByID49IDAgPyAmc2dycCA6IE5VTEwsIHJldCk7CisrI2Vsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChnciwgTlVMTCwgcmV0KTsKKysjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXByaW50LUVGSS1DQy1jb25maWd1cmF0aW9uLW5pY2VseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXByaW50LUVGSS1DQy1jb25maWd1cmF0aW9uLW5pY2VseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQxNGUyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi1wcmludC1FRkktQ0MtY29uZmlndXJhdGlvbi1uaWNlbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDBiZjUzMGFhYzE1MjYzMDUwMDkzOWRiMzFmOThkOTMzMTU4ZmRhYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI2IEZlYiAyMDE5IDE0OjI3OjQ5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAibWVzb246IHByaW50IEVGSSBDQyBjb25maWd1cmF0aW9uIG5pY2VseSIKLQotVGhpcyByZXZlcnRzIGNvbW1pdCBjNTEyZGZiOWFjOTQ4ZGRiMWNlZDBkYWIwN2I5ZGFjODhiMTk4MjkzLgotCi1UaGlzIHBhdGNoIGlzIGhlcmUgYmVjYXVzZSB3ZSBoYXZlbid0IGZpZ3VyZWQgb3V0IGhvdyB0byBwYXNzCi1wYXJhbWV0ZXIgdG8gZWZpLWNjIGlmIGl0J3MgYW4gYXJyYXkgaW4gc3lzdGVtZC1ib290IHJlY2lwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA3MGZiMjE4Li4zMGRmODM0IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMzEzOCw3ICszMTM4LDcgQEAgaWYgY29uZi5nZXQoJ0VOQUJMRV9FRkknKSA9PSAxCi0gICAgICAgICBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgc3RhdHVzICs9IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIG1hY2hpbmUgdHlwZTogICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KCcgJy5qb2luKGVmaV9jYykpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgQ0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGVmaV9jYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBsaWIgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZWZpX2xpYmRpciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBsZHMgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZWZpX2xkc2RpciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBpbmNsdWRlIGRpcmVjdG9yeTogICAgICAgICAgICAgQDBAJy5mb3JtYXQoZWZpX2luY2RpcildCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQyZWJmNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi11c2UtYW4tYXJyYXktb3B0aW9uLWZvci1lZmktY2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDAwMzBkY2JhYzFhOTE3N2VmN2EyOGFmMjA5YWM2NzE0OWI4OTlmNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI2IEZlYiAyMDE5IDE0OjE3OjI1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAibWVzb246IHVzZSBhbiBhcnJheSBvcHRpb24gZm9yIGVmaS1jYyIKLQotVGhpcyByZXZlcnRzIGNvbW1pdCA1OTUzNDNmYjRjOTljMjY3OWQzNDdlZjdjMTlkZWJmYmZlZDYzNDJlLgotCi1UaGlzIHBhdGNoIGlzIGhlcmUgYmVjYXVzZSB3ZSBoYXZlbid0IGZpZ3VyZWQgb3V0IGhvdyB0byBwYXNzCi1wYXJhbWV0ZXIgdG8gZWZpLWNjIGlmIGl0J3MgYW4gYXJyYXkgaW4gc3lzdGVtZC1ib290IHJlY2lwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb25fb3B0aW9ucy50eHQgICAgICAgIHwgIDIgKy0KLSBzcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgfCAxMSArKysrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggMDQ0YmI3OS4uM2QyOGJmZCAxMDA2NDQKLS0tLSBhL21lc29uX29wdGlvbnMudHh0Ci0rKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTI5Miw3ICsyOTIsNyBAQCBvcHRpb24oJ2RidXMnLCB0eXBlIDogJ2NvbWJvJywgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCi0gCi0gb3B0aW9uKCdnbnUtZWZpJywgdHlwZSA6ICdjb21ibycsIGNob2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxzZSddLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICdnbnUtZWZpIHN1cHBvcnQgZm9yIHNkLWJvb3QnKQotLW9wdGlvbignZWZpLWNjJywgdHlwZSA6ICdhcnJheScsCi0rb3B0aW9uKCdlZmktY2MnLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBjb21waWxlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLSBvcHRpb24oJ2VmaS1sZCcsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGxpbmtlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLWRpZmYgLS1naXQgYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLWluZGV4IDIxNDAxNTEuLmQ4ZGIzYTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLSsrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotQEAgLTM0LDggKzM0LDggQEAgc3R1Yl9zb3VyY2VzID0gJycnCi0gCi0gaWYgY29uZi5nZXQoJ0VOQUJMRV9FRkknKSA9PSAxIGFuZCBnZXRfb3B0aW9uKCdnbnUtZWZpJykgIT0gJ2ZhbHNlJwotICAgICAgICAgZWZpX2NjID0gZ2V0X29wdGlvbignZWZpLWNjJykKLS0gICAgICAgIGlmIGVmaV9jYy5sZW5ndGgoKSA9PSAwCi0tICAgICAgICAgICAgICAgIGVmaV9jYyA9IGNjLmNtZF9hcnJheSgpCi0rICAgICAgICBpZiBlZmlfY2MgPT0gJycKLSsgICAgICAgICAgICAgICAgZWZpX2NjID0gJyAnLmpvaW4oY2MuY21kX2FycmF5KCkpCi0gICAgICAgICBlbmRpZgotICAgICAgICAgZWZpX2xkID0gZ2V0X29wdGlvbignZWZpLWxkJykKLSAgICAgICAgIGlmIGVmaV9sZCA9PSAnJwotQEAgLTU3LDcgKzU3LDggQEAgaWYgY29uZi5nZXQoJ0VOQUJMRV9FRkknKSA9PSAxIGFuZCBnZXRfb3B0aW9uKCdnbnUtZWZpJykgIT0gJ2ZhbHNlJwotIAotICAgICAgICAgZWZpX2xpYmRpciA9IGdldF9vcHRpb24oJ2VmaS1saWJkaXInKQotICAgICAgICAgaWYgZWZpX2xpYmRpciA9PSAnJwotLSAgICAgICAgICAgICAgICByZXQgPSBydW5fY29tbWFuZChlZmlfY2MgKyBbJy1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnknXSkKLSsgICAgICAgICAgICAgICAgY21kID0gJ2NkIC91c3IvbGliLyQoQDBAIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkpICYmIHB3ZCcuZm9ybWF0KGVmaV9jYykKLSsgICAgICAgICAgICAgICAgcmV0ID0gcnVuX2NvbW1hbmQoJ3NoJywgJy1jJywgY21kKQotICAgICAgICAgICAgICAgICBpZiByZXQucmV0dXJuY29kZSgpID09IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gam9pbl9wYXRocygnL3Vzci9saWInLCByZXQuc3Rkb3V0KCkuc3RyaXAoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBydW5fY29tbWFuZCgncmVhbHBhdGgnLCAnLWUnLCBwYXRoKQotQEAgLTE1Miw3ICsxNTMsNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgb19maWxlID0gY3VzdG9tX3RhcmdldChmaWxlICsgJy5vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogZmlsZSArICcubycsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9jYyArIFsnLWMnLCAnQElOUFVUQCcsICctbycsICdAT1VUUFVUQCddCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfY2MsICctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjb21waWxlX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kX2ZpbGVzIDogZWZpX2hlYWRlcnMpCi0gICAgICAgICAgICAgICAgIGlmIChjb21tb25fc291cmNlcyArIHN5c3RlbWRfYm9vdF9zb3VyY2VzKS5jb250YWlucyhmaWxlKQotQEAgLTE2Myw3ICsxNjQsNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgIGVuZGZvcmVhY2gKLSAKLS0gICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MgKyBbJy1wcmludC1saWJnY2MtZmlsZS1uYW1lJ10pLnN0ZG91dCgpLnN0cmlwKCkKLSsgICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MsICctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScpLnN0ZG91dCgpLnN0cmlwKCkKLSAgICAgICAgIHN5c3RlbWRfYm9vdF9lZmlfbmFtZSA9ICdzeXN0ZW1kLWJvb3RAMEAuZWZpJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQotICAgICAgICAgc3R1Yl9lZmlfbmFtZSA9ICdsaW51eEAwQC5lZmkuc3R1YicuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKLSAgICAgICAgIG5vX3VuZGVmaW5lZF9zeW1ib2xzID0gZmluZF9wcm9ncmFtKCduby11bmRlZmluZWQtc3ltYm9scy5zaCcpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAppbmRleCA3M2U2NWZmLi5kMDk4MDg0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotRnJvbSA5ODI1NGU0Nzk4ZTc5ZDUyYWM2YjU2MjYxNmNkMjQ0MTIwZjZlMjM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlOWM5OTM4MTYwNzdjMWFlNjdkMjVkNDY0ZjJlY2UyYTA5MGYzMGI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAyMSBGZWIgMjAxOSAxNjoyMzoyNCArMDgwMAotU3ViamVjdDogW1BBVENIIDEvNV0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lIAotIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCitTdWJqZWN0OiBbUEFUQ0hdIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZSBmb3IKKyB0aGUgYmluZm10IHNlcnZpY2VzCiAKIHVzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKIGxpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgpAQCAtMTgsNiArMTgsNyBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICB1bml0cy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrLS0tLQogIHVuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCB8IDMgKysrCkBAIC0yNSwxMCArMjYsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLmJ1aWxkIGIvdW5pdHMvbWVzb24uYnVpbGQKLWluZGV4IGUxZWU5Zjg2YzMuLjZiYjc3NzFiMzYgMTAwNjQ0CitpbmRleCBlYTkxZjBjYzllYTcuLjI1MTg2Zjg4ZGZlYiAxMDA2NDQKIC0tLSBhL3VuaXRzL21lc29uLmJ1aWxkCiArKysgYi91bml0cy9tZXNvbi5idWlsZAotQEAgLTQ2LDggKzQ2LDcgQEAgdW5pdHMgPSBbCitAQCAtNTIsOCArNTIsNyBAQCB1bml0cyA9IFsKICAgICAgICAgIFsncG93ZXJvZmYudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAncnVubGV2ZWwwLnRhcmdldCddLAogICAgICAgICAgWydwcmludGVyLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICcnXSwKQEAgLTM4LDE4ICszOSwxOCBAQAogICAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5tb3VudCcsICAgICAgICdFTkFCTEVfQklORk1UJ10sCiAgICAgICAgICBbJ3JlYm9vdC50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgJ3J1bmxldmVsNi50YXJnZXQgY3RybC1hbHQtZGVsLnRhcmdldCddLAotQEAgLTEzMCw4ICsxMjksNyBAQCBpbl91bml0cyA9IFsKLSAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlJywgJyddLAotICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UnLCAgICAnJ10sCitAQCAtMTYxLDggKzE2MCw3IEBAIGluX3VuaXRzID0gWworICAgICAgICAgWydyYy1sb2NhbC5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICAgICAnSEFWRV9TWVNWX0NPTVBBVCddLAorICAgICAgICAgWydyZXNjdWUuc2VydmljZScsICAgICAgICAgICAgICAgICAgICAgICAnJ10sCiAgICAgICAgICBbJ3N5c3RlbWQtYmFja2xpZ2h0QC5zZXJ2aWNlJywgICAgICAgICAgICdFTkFCTEVfQkFDS0xJR0hUJ10sCiAtICAgICAgICBbJ3N5c3RlbWQtYmluZm10LnNlcnZpY2UnLCAgICAgICAgICAgICAgICdFTkFCTEVfQklORk1UJywKIC0gICAgICAgICAnc3lzaW5pdC50YXJnZXQud2FudHMvJ10sCiArICAgICAgICBbJ3N5c3RlbWQtYmluZm10LnNlcnZpY2UnLCAgICAgICAgICAgICAgICdFTkFCTEVfQklORk1UJ10sCiAgICAgICAgICBbJ3N5c3RlbWQtYmxlc3MtYm9vdC5zZXJ2aWNlJywgICAgICAgICAgICdFTkFCTEVfRUZJIEhBVkVfQkxLSUQnXSwKICAgICAgICAgIFsnc3lzdGVtZC1ib290LWNoZWNrLW5vLWZhaWx1cmVzLnNlcnZpY2UnLCAnJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtYm9vdC1zeXN0ZW0tdG9rZW4uc2VydmljZScsICAgICdFTkFCTEVfRUZJJywKKyAgICAgICAgIFsnc3lzdGVtZC1jb3JlZHVtcEAuc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9DT1JFRFVNUCddLAogZGlmZiAtLWdpdCBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotaW5kZXggMzBhNmJjOTkxOC4uNDIzMWYzYjcwZiAxMDA2NDQKK2luZGV4IDMwYTZiYzk5MTg0NC4uNDIzMWYzYjcwZmU5IDEwMDY0NAogLS0tIGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CiArKysgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKIEBAIC0xOCwzICsxOCw2IEBAIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCkBAIC02MCw3ICs2MSw3IEBACiArW0luc3RhbGxdCiArV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKIGRpZmYgLS1naXQgYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgotaW5kZXggZTk0MGM3YzlhZC4uNmJlN2Y1Y2M5YiAxMDA2NDQKK2luZGV4IDBjMGYyNjQ1MWI2Ny4uNzYzYzRjNDY2YzE2IDEwMDY0NAogLS0tIGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgogKysrIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgogQEAgLTE0LDYgKzE0LDcgQEAgRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9hZG1pbi1ndWlkZS9iaW5mbXQtbWlzYy5odG0KQEAgLTY5LDkgKzcwLDkgQEAKICBDb25mbGljdHM9c2h1dGRvd24udGFyZ2V0CiArV2FudHM9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CiAgQWZ0ZXI9cHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisgQWZ0ZXI9cHJvYy1zeXMtZnMtYmluZm10X21pc2MubW91bnQKICBCZWZvcmU9c3lzaW5pdC50YXJnZXQgc2h1dGRvd24udGFyZ2V0Ci0gQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KLUBAIC0yOCwzICsyOSw2IEBAIFR5cGU9b25lc2hvdAorQEAgLTI5LDMgKzMwLDYgQEAgVHlwZT1vbmVzaG90CiAgUmVtYWluQWZ0ZXJFeGl0PXllcwogIEV4ZWNTdGFydD1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtYmluZm10CiAgVGltZW91dFNlYz05MHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoCmluZGV4IDJmNGRhZjguLjRlZWVjN2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gODVlM2MzMDQ2NTYyZWMyNGZjMmYwOWViZmQwOGJmOWYxNjgwOTFkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjkyZmQ3ZTc3ZWQ1YWFiMmRkYTAxYTIwZTY4OTFjMzdmMDk0MTVkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMSBNYXIgMjAxOSAxNToyMjoxNSArMDgwMAogU3ViamVjdDogW1BBVENIXSBkbyBub3QgZGlzYWJsZSBidWZmZXIgaW4gd3JpdGluZyBmaWxlcwpAQCAtMTgsOCArMTgsOSBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQotIHNyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCisgc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQogIHNyYy9iYXNpYy9wcm9jZnMtdXRpbC5jICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KICBzcmMvYmFzaWMvc21hY2stdXRpbC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy9iYXNpYy91dGlsLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCkBAIC0zMSwyNyArMzIsMTkgQEAKICBzcmMvbG9naW4vbG9naW5kLWRidXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL25zcGF3bi9uc3Bhd24uYyAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCisgc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYyAgICAgICAgICAgICAgIHwgIDQgKystLQogIHNyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3NsZWVwL3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQorIHNyYy9zbGVlcC9zbGVlcC5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCiAgc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvdWRldi91ZGV2ZC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jICAgICAgICAgICB8ICAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCisgMTggZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1pbmRleCA3YjU4MzljY2Q2Li4xOGY2ZThmZmM4IDEwMDY0NAoraW5kZXggYTUxNDFmNGNiZWRkLi4wNGMwNmU3YTU1Y2IgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKLUBAIC04NjAsNyArODYwLDcgQEAgaW50IGNnX2F0dGFjaChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBwaWRfdCBwaWQpIHsKLSAKLSAgICAgICAgIHhzcHJpbnRmKGMsIFBJRF9GTVQgIlxuIiwgcGlkKTsKLSAKLS0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmcywgYywgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwotKyAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCAwKTsKLSAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gCi1AQCAtMTE0Miw3ICsxMTQyLDcgQEAgaW50IGNnX2luc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICphZ2VudCkgeworQEAgLTczOSw3ICs3MzksNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CiAgCiAgICAgICAgICBzYyA9IHN0cnN0cmlwKGNvbnRlbnRzKTsKICAgICAgICAgIGlmIChpc2VtcHR5KHNjKSkgewpAQCAtNjAsNyArNTMsNyBAQAogICAgICAgICAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICB9IGVsc2UgaWYgKCFwYXRoX2VxdWFsKHNjLCBhZ2VudCkpCi1AQCAtMTE2MCw3ICsxMTYwLDcgQEAgaW50IGNnX2luc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICphZ2VudCkgeworQEAgLTc1Nyw3ICs3NTcsNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CiAgCiAgICAgICAgICBzYyA9IHN0cnN0cmlwKGNvbnRlbnRzKTsKICAgICAgICAgIGlmIChzdHJlcShzYywgIjAiKSkgewpAQCAtNjksNyArNjIsNyBAQAogICAgICAgICAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCi1AQCAtMTE4Nyw3ICsxMTg3LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKK0BAIC03ODQsNyArNzg0LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCkBAIC03OCw3ICs3MSw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIAotQEAgLTExOTcsNyArMTE5Nyw3IEBAIGludCBjZ191bmluc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyKSB7CitAQCAtNzk0LDcgKzc5NCw3IEBAIGludCBjZ191bmluc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyKSB7CiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIApAQCAtODcsNyArODAsNyBAQAogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKLUBAIC0yMDUzLDcgKzIwNTMsNyBAQCBpbnQgY2dfc2V0X2F0dHJpYnV0ZShjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICphdHRyaQorQEAgLTE2NTAsNyArMTY1MCw3IEBAIGludCBjZ19zZXRfYXR0cmlidXRlKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmF0dHJpCiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIApAQCAtOTYsMTcgKzg5LDggQEAKICB9CiAgCiAgaW50IGNnX2dldF9hdHRyaWJ1dGUoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYXR0cmlidXRlLCBjaGFyICoqcmV0KSB7Ci1AQCAtMjY5Nyw3ICsyNjk3LDcgQEAgaW50IGNnX2VuYWJsZV9ldmVyeXdoZXJlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gY2dyb3VwLnN1YnRyZWVfY29udHJvbCBmaWxlIG9mICVzOiAlbSIsIHApOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19zdHJlYW0oZiwgcywgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byAlcyBjb250cm9sbGVyICVzIGZvciAlcyAoJXMpOiAlbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR1NfU0VUKG1hc2ssIGJpdCkgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIiwgbiwgcCwgZnMpOwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKLWluZGV4IDQyY2U1M2Q1YWEuLjU3NTEyNTMyYTYgMTAwNjQ0CitpbmRleCBkYTdlODM2ZjE0M2UuLjIxMzhmMjBiY2MwMyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwogQEAgLTg2LDEzICs4NiwxMyBAQCBpbnQgcHJvY2ZzX3Rhc2tzX3NldF9saW1pdCh1aW50NjRfdCBsaW1pdCkgewpAQCAtMTI2LDEwICsxMTAsMTAgQEAKICAgICAgICAgICAgICAgICAgdWludDY0X3QgdGhyZWFkc19tYXg7CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYyBiL3NyYy9iYXNpYy9zbWFjay11dGlsLmMKLWluZGV4IDEyM2QwMGUxM2UuLmU3ZWE3OGYzNDkgMTAwNjQ0CitpbmRleCBkYTlhMjEzOWQzMWEuLjVlOTFmNWI4ZjVkOSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9zbWFjay11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9zbWFjay11dGlsLmMKLUBAIC0xMTUsNyArMTE1LDcgQEAgaW50IG1hY19zbWFja19hcHBseV9waWQocGlkX3QgcGlkLCBjb25zdCBjaGFyICpsYWJlbCkgeworQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgbWFjX3NtYWNrX2FwcGx5X3BpZChwaWRfdCBwaWQsIGNvbnN0IGNoYXIgKmxhYmVsKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogIAogICAgICAgICAgcCA9IHByb2Nmc19maWxlX2FsbG9jYShwaWQsICJhdHRyL2N1cnJlbnQiKTsKQEAgLTEzOSwxMCArMTIzLDEwIEBACiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGlsLmMgYi9zcmMvYmFzaWMvdXRpbC5jCi1pbmRleCA5M2Q2MTBiYzk4Li45N2RjYTY0ZjczIDEwMDY0NAoraW5kZXggMmIzYjM5MThhMzJmLi5hZmY4ZDBmY2Q0NzMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvdXRpbC5jCi1AQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgZGlzYWJsZV9jb3JlZHVtcHModm9pZCkgeworQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIGRpc2FibGVfY29yZWR1bXBzKHZvaWQpIHsKICAgICAgICAgIGlmIChkZXRlY3RfY29udGFpbmVyKCkgPiAwKQogICAgICAgICAgICAgICAgICByZXR1cm47CiAgCkBAIC0xNTIsMTAgKzEzNiwxMCBAQAogICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB0dXJuIG9mZiBjb3JlZHVtcHMsIGlnbm9yaW5nOiAlbSIpOwogIH0KIGRpZmYgLS1naXQgYS9zcmMvYmluZm10L2JpbmZtdC5jIGIvc3JjL2JpbmZtdC9iaW5mbXQuYwotaW5kZXggYWE5ZDgxMWYyZS4uOGM3ZjJkYWU3YSAxMDA2NDQKK2luZGV4IDdmZjg0NGM3OGMzYS4uNWM1NzIxZDdjMmY3IDEwMDY0NAogLS0tIGEvc3JjL2JpbmZtdC9iaW5mbXQuYwogKysrIGIvc3JjL2JpbmZtdC9iaW5mbXQuYwotQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBkZWxldGVfcnVsZShjb25zdCBjaGFyICpydWxlKSB7CitAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW50IGRlbGV0ZV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKICAgICAgICAgIGlmICghZm4pCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CiAgCkBAIC0xNjQsNyArMTQ4LDcgQEAKICB9CiAgCiAgc3RhdGljIGludCBhcHBseV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKLUBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfcnVsZShjb25zdCBjaGFyICpydWxlKSB7CitAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgaW50IGFwcGx5X3J1bGUoY29uc3QgY2hhciAqcnVsZSkgewogIAogICAgICAgICAgKHZvaWQpIGRlbGV0ZV9ydWxlKHJ1bGUpOwogIApAQCAtMTczLDcgKzE1Nyw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byBhZGQgYmluYXJ5IGZvcm1hdDogJW0iKTsKICAKLUBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIGludCBydW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgaW50IHJ1bihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgICAgICAgICAgICAgICAgIH0KICAKICAgICAgICAgICAgICAgICAgLyogRmx1c2ggb3V0IGFsbCBydWxlcyAqLwpAQCAtMTgzLDEwICsxNjcsMTAgQEAKICAgICAgICAgICAgICAgICAgU1RSVl9GT1JFQUNIKGYsIGZpbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGFwcGx5X2ZpbGUoKmYsIHRydWUpOwogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21haW4uYyBiL3NyYy9jb3JlL21haW4uYwotaW5kZXggYmNjZTcxNzhhOC4uNDE5OWNlZGFiOSAxMDA2NDQKK2luZGV4IDNjNmI2NmU4OWM4ZS4uYzM5ZWJlNTZhNWIzIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvbWFpbi5jCiArKysgYi9zcmMvY29yZS9tYWluLmMKLUBAIC0xMjg1LDcgKzEyODUsNyBAQCBzdGF0aWMgaW50IGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbih2b2lkKSB7CitAQCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIGludCBidW1wX3VuaXhfbWF4X2RncmFtX3FsZW4odm9pZCkgewogICAgICAgICAgaWYgKHYgPj0gREVGQVVMVF9VTklYX01BWF9ER1JBTV9RTEVOKQogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAKQEAgLTE5NSw3ICsxNzksNyBAQAogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Z1bGxfZXJybm8oSU5fU0VUKHIsIC1FUk9GUywgLUVQRVJNLCAtRUFDQ0VTKSA/IExPR19ERUJVRyA6IExPR19XQVJOSU5HLCByLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBidW1wIEFGX1VOSVggZGF0YWdyYW0gcXVldWUgbGVuZ3RoLCBpZ25vcmluZzogJW0iKTsKLUBAIC0xNTA5LDcgKzE1MDksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2NvcmVfcGF0dGVybihib29sIHNraXBfc2V0dXApIHsKK0BAIC0xNTM2LDcgKzE1MzYsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2NvcmVfcGF0dGVybihib29sIHNraXBfc2V0dXApIHsKICAgICAgICAgIGlmIChnZXRwaWRfY2FjaGVkKCkgIT0gMSkKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogIApAQCAtMjA1LDcgKzE4OSw3IEBACiAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybiwgaWdub3Jpbmc6ICVtIiwgYXJnX2Vhcmx5X2NvcmVfcGF0dGVybik7CiAgfQogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMgYi9zcmMvY29yZS9zbWFjay1zZXR1cC5jCi1pbmRleCBiOTVlNjIzOWQ0Li5mZGJkYWFhY2NiIDEwMDY0NAoraW5kZXggNDQyNzM5N2YyNzE1Li44YWViNWM4Mjk1MTMgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9zbWFjay1zZXR1cC5jCiArKysgYi9zcmMvY29yZS9zbWFjay1zZXR1cC5jCiBAQCAtMzI1LDE3ICszMjUsMTcgQEAgaW50IG1hY19zbWFja19zZXR1cChib29sICpsb2FkZWRfcG9saWN5KSB7CkBAIC0yMzEsNyArMjE1LDcgQEAKICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8ociwgIkZhaWxlZCB0byBzZXQgU01BQ0sgbmV0bGFiZWwgcnVsZSBcIjEyNy4wLjAuMSAtQ0lQU09cIjogJW0iKTsKICAjZW5kaWYKIGRpZmYgLS1naXQgYS9zcmMvaGliZXJuYXRlLXJlc3VtZS9oaWJlcm5hdGUtcmVzdW1lLmMgYi9zcmMvaGliZXJuYXRlLXJlc3VtZS9oaWJlcm5hdGUtcmVzdW1lLmMKLWluZGV4IDE3ZTdjZDFhMDAuLjg3YTc2Njc3MTYgMTAwNjQ0CitpbmRleCAxN2U3Y2QxYTAwOWIuLjg3YTc2Njc3MTY2MyAxMDA2NDQKIC0tLSBhL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYwogKysrIGIvc3JjL2hpYmVybmF0ZS1yZXN1bWUvaGliZXJuYXRlLXJlc3VtZS5jCiBAQCAtNDUsNyArNDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CkBAIC0yNDQsNyArMjI4LDcgQEAKICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byAvc3lzL3Bvd2VyL3Jlc3VtZTogJW0iLCBtYWpvcl9taW5vcik7CiAgICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtZGV2aWNlL3NkLWRldmljZS5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtZGV2aWNlL3NkLWRldmljZS5jCi1pbmRleCBjNGE3ZjJmM2QzLi5iY2FjNzU4Mjg0IDEwMDY0NAoraW5kZXggMWYyNDUxZjhlMWI0Li4zZjY3NmVjMjg0MWEgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWRldmljZS9zZC1kZXZpY2UuYwogQEAgLTE4NDksNyArMTg0OSw3IEBAIF9wdWJsaWNfIGludCBzZF9kZXZpY2Vfc2V0X3N5c2F0dHJfdmFsdWUoc2RfZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKnN5c2F0dHIsCkBAIC0yNTcsMTAgKzI0MSwxMCBAQAogICAgICAgICAgICAgICAgICBpZiAociA9PSAtRUxPT1ApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiBkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMgYi9zcmMvbG9naW4vbG9naW5kLWRidXMuYwotaW5kZXggMzBiOWE2NjMzNC4uY2MxZDU3NzkzMyAxMDA2NDQKK2luZGV4IDUyYTdlYTNjNzdlOS4uOTcwM2RlMGRhYmVlIDEwMDY0NAogLS0tIGEvc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMKICsrKyBiL3NyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jCi1AQCAtMTMyNSw3ICsxMzI1LDcgQEAgc3RhdGljIGludCB0cmlnZ2VyX2RldmljZShNYW5hZ2VyICptLCBzZF9kZXZpY2UgKmQpIHsKK0BAIC0xMzM5LDcgKzEzMzksNyBAQCBzdGF0aWMgaW50IHRyaWdnZXJfZGV2aWNlKE1hbmFnZXIgKm0sIHNkX2RldmljZSAqZCkgewogICAgICAgICAgICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgCkBAIC0yNzAsMTAgKzI1NCwxMCBAQAogIAogICAgICAgICAgcmV0dXJuIDA7CiBkaWZmIC0tZ2l0IGEvc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMgYi9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYwotaW5kZXggMDQ2MmI0NjQxMy4uN2M1M2Q0MTQ4MyAxMDA2NDQKK2luZGV4IGY1MDQ4ZDk0NzNjYi4uYjYzODNhYjVjOTdlIDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMKICsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jCi1AQCAtMTIzLDcgKzEyMyw3IEBAIGludCBzeW5jX2Nncm91cChwaWRfdCBwaWQsIENHcm91cFVuaWZpZWQgdW5pZmllZF9yZXF1ZXN0ZWQsIHVpZF90IHVpZF9zaGlmdCkgeworQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnQgc3luY19jZ3JvdXAocGlkX3QgcGlkLCBDR3JvdXBVbmlmaWVkIHVuaWZpZWRfcmVxdWVzdGVkLCB1aWRfdCB1aWRfc2hpZnQpIHsKICAgICAgICAgIGZuID0gc3Ryam9pbmEodHJlZSwgY2dyb3VwLCAiL2Nncm91cC5wcm9jcyIpOwogIAogICAgICAgICAgc3ByaW50ZihwaWRfc3RyaW5nLCBQSURfRk1ULCBwaWQpOwpAQCAtMjgzLDEwICsyNjcsMTAgQEAKICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gbW92ZSBwcm9jZXNzOiAlbSIpOwogICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggMmFlYzgwNDFmMC4uODQxNTQyZjJmMyAxMDA2NDQKK2luZGV4IDczNGRlZTExMzBlMC4uNzFhZGQ5YTA1NWQyIDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24uYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotQEAgLTIzNTcsNyArMjM1Nyw3IEBAIHN0YXRpYyBpbnQgcmVzZXRfYXVkaXRfbG9naW51aWQodm9pZCkgeworQEAgLTI0NDAsNyArMjQ0MCw3IEBAIHN0YXRpYyBpbnQgcmVzZXRfYXVkaXRfbG9naW51aWQodm9pZCkgewogICAgICAgICAgaWYgKHN0cmVxKHAsICI0Mjk0OTY3Mjk1IikpCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogIApAQCAtMjk1LDcgKzI3OSw3IEBACiAgICAgICAgICBpZiAociA8IDApIHsKICAgICAgICAgICAgICAgICAgbG9nX2Vycm9yX2Vycm5vKHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc2V0IGF1ZGl0IGxvZ2luIFVJRC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHlvdXIga2VybmVsIGlzIHRvb1xuIgotQEAgLTM1NjYsMTMgKzM1NjYsMTMgQEAgc3RhdGljIGludCBzZXR1cF91aWRfbWFwKHBpZF90IHBpZCkgeworQEAgLTM2NjUsMTMgKzM2NjUsMTMgQEAgc3RhdGljIGludCBzZXR1cF91aWRfbWFwKHBpZF90IHBpZCkgewogIAogICAgICAgICAgeHNwcmludGYodWlkX21hcCwgIi9wcm9jLyIgUElEX0ZNVCAiL3VpZF9tYXAiLCBwaWQpOwogICAgICAgICAgeHNwcmludGYobGluZSwgVUlEX0ZNVCAiICIgVUlEX0ZNVCAiICIgVUlEX0ZNVCAiXG4iLCAwLCBhcmdfdWlkX3NoaWZ0LCBhcmdfdWlkX3JhbmdlKTsKQEAgLTMxMSwxMSArMjk1LDMzIEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBHSUQgbWFwOiAlbSIpOwogIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMgYi9zcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jCitpbmRleCBlODM5OGNiZGU1YmEuLmJhNjgyZWMwYzllNyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMKKysrKyBiL3NyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMKK0BAIC0yNjcsNyArMjY3LDcgQEAgaW50IGNnX2F0dGFjaChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBwaWRfdCBwaWQpIHsKKyAKKyAgICAgICAgIHhzcHJpbnRmKGMsIFBJRF9GTVQgIlxuIiwgcGlkKTsKKyAKKy0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmcywgYywgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOworKyAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCAwKTsKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCitAQCAtODE3LDcgKzgxNyw3IEBAIGludCBjZ19lbmFibGVfZXZlcnl3aGVyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIGNncm91cC5zdWJ0cmVlX2NvbnRyb2wgZmlsZSBvZiAlczogJW0iLCBwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19zdHJlYW0oZiwgcywgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfc3RyZWFtKGYsIHMsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gJXMgY29udHJvbGxlciAlcyBmb3IgJXMgKCVzKTogJW0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdTX1NFVChtYXNrLCBiaXQpID8gImVuYWJsZSIgOiAiZGlzYWJsZSIsIG4sIHAsIGZzKTsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMgYi9zcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMKLWluZGV4IDkzYmRjZjExYmYuLjY4Y2RkYjdhOWYgMTAwNjQ0CitpbmRleCA4NTQzZGJkMmQwNWYuLjc2MTYyNTk5ODE3ZSAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYwogKysrIGIvc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jCi1AQCAtODgsNyArODgsNyBAQCBpbnQgc3lzY3RsX3dyaXRlX2lwX3Byb3BlcnR5KGludCBhZiwgY29uc3QgY2hhciAqaWZuYW1lLCBjb25zdCBjaGFyICpwcm9wZXJ0eSwgYworQEAgLTkzLDcgKzkzLDcgQEAgaW50IHN5c2N0bF93cml0ZV9pcF9wcm9wZXJ0eShpbnQgYWYsIGNvbnN0IGNoYXIgKmlmbmFtZSwgY29uc3QgY2hhciAqcHJvcGVydHksIGMKICAKICAgICAgICAgIGxvZ19kZWJ1ZygiU2V0dGluZyAnJXMnIHRvICclcyciLCBwLCB2YWx1ZSk7CiAgCkBAIC0zMjUsMzYgKzMzMSwyOCBAQAogIAogIGludCBzeXNjdGxfcmVhZChjb25zdCBjaGFyICpwcm9wZXJ0eSwgY2hhciAqKmNvbnRlbnQpIHsKIGRpZmYgLS1naXQgYS9zcmMvc2xlZXAvc2xlZXAuYyBiL3NyYy9zbGVlcC9zbGVlcC5jCi1pbmRleCBiOWZlOTY2MzVkLi5mMTY4ZDdmODkwIDEwMDY0NAoraW5kZXggZmJmZGRjMDI2MmZjLi43Y2MyOTAyMTU0ZTkgMTAwNjQ0CiAtLS0gYS9zcmMvc2xlZXAvc2xlZXAuYwogKysrIGIvc3JjL3NsZWVwL3NsZWVwLmMKLUBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfaGliZXJuYXRlX2xvY2F0aW9uX2luZm8odm9pZCkgeworQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyhjb25zdCBIaWJlcm5hdGVMb2NhdGlvbiAqaGliZXJuYXRlX2xvY2EKKyAgICAgICAgIGFzc2VydChoaWJlcm5hdGVfbG9jYXRpb24tPnN3YXApOwogIAotICAgICAgICAgLyogaWYgaXQncyBhIHN3YXAgcGFydGl0aW9uLCB3ZSBqdXN0IHdyaXRlIHRoZSBkaXNrIHRvIC9zeXMvcG93ZXIvcmVzdW1lICovCi0gICAgICAgICBpZiAoc3RyZXEodHlwZSwgInBhcnRpdGlvbiIpKSB7Ci0tICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCBkZXZpY2UsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKLSsgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIGRldmljZSwgMCk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgcGFydGl0aW9uIGRldmljZSB0byAvc3lzL3Bvd2VyL3Jlc3VtZTogJW0iKTsKKyAgICAgICAgIHhzcHJpbnRmKHJlc3VtZV9zdHIsICIldToldSIsIG1ham9yKGhpYmVybmF0ZV9sb2NhdGlvbi0+ZGV2bm8pLCBtaW5vcihoaWJlcm5hdGVfbG9jYXRpb24tPmRldm5vKSk7CistICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgcmVzdW1lX3N0ciwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOworKyAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIHJlc3VtZV9zdHIsIDApOworICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgcGFydGl0aW9uIGRldmljZSB0byAvc3lzL3Bvd2VyL3Jlc3VtZSBmb3IgJyVzJzogJyVzJzogJW0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpYmVybmF0ZV9sb2NhdGlvbi0+c3dhcC0+ZGV2aWNlLCByZXN1bWVfc3RyKTsKK0BAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfaGliZXJuYXRlX2xvY2F0aW9uX2luZm8oY29uc3QgSGliZXJuYXRlTG9jYXRpb24gKmhpYmVybmF0ZV9sb2NhCisgICAgICAgICB9CiAgCi1AQCAtOTgsMTQgKzk4LDE0IEBAIHN0YXRpYyBpbnQgd3JpdGVfaGliZXJuYXRlX2xvY2F0aW9uX2luZm8odm9pZCkgewotIAotICAgICAgICAgb2Zmc2V0ID0gZmllbWFwLT5mbV9leHRlbnRzWzBdLmZlX3BoeXNpY2FsIC8gcGFnZV9zaXplKCk7Ci0gICAgICAgICB4c3ByaW50ZihvZmZzZXRfc3RyLCAiJSIgUFJJdTY0LCBvZmZzZXQpOworICAgICAgICAgeHNwcmludGYob2Zmc2V0X3N0ciwgIiUiIFBSSXU2NCwgaGliZXJuYXRlX2xvY2F0aW9uLT5vZmZzZXQpOwogLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZV9vZmZzZXQiLCBvZmZzZXRfc3RyLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CiArICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lX29mZnNldCIsIG9mZnNldF9zdHIsIDApOwogICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgb2Zmc2V0ICclcyc6ICVtIiwgb2Zmc2V0X3N0cik7Ci0gCi0gICAgICAgICBsb2dfZGVidWcoIldyb3RlIGNhbGN1bGF0ZWQgcmVzdW1lX29mZnNldCB2YWx1ZSB0byAvc3lzL3Bvd2VyL3Jlc3VtZV9vZmZzZXQ6ICVzIiwgb2Zmc2V0X3N0cik7Ci0gCi0gICAgICAgICB4c3ByaW50ZihkZXZpY2Vfc3RyLCAiJWx4IiwgKHVuc2lnbmVkIGxvbmcpc3RiLnN0X2Rldik7Ci0tICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlX3N0ciwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwotKyAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIGRldmljZV9zdHIsIDApOwotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgZGV2aWNlICclcyc6ICVtIiwgZGV2aWNlX3N0cik7Ci0gCi1AQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfbW9kZShjaGFyICoqbW9kZXMpIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIHN3YXAgZmlsZSBvZmZzZXQgdG8gL3N5cy9wb3dlci9yZXN1bWVfb2Zmc2V0IGZvciAnJXMnOiAnJXMnOiAlbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGliZXJuYXRlX2xvY2F0aW9uLT5zd2FwLT5kZXZpY2UsIG9mZnNldF9zdHIpOworQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGludCB3cml0ZV9tb2RlKGNoYXIgKiptb2RlcykgewogICAgICAgICAgU1RSVl9GT1JFQUNIKG1vZGUsIG1vZGVzKSB7CiAgICAgICAgICAgICAgICAgIGludCBrOwogIApAQCAtMzYzLDcgKzM2MSw3IEBACiAgICAgICAgICAgICAgICAgIGlmIChrID49IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCi1AQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfc3RhdGUoRklMRSAqKmYsIGNoYXIgKipzdGF0ZXMpIHsKK0BAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIGludCB3cml0ZV9zdGF0ZShGSUxFICoqZiwgY2hhciAqKnN0YXRlcykgewogICAgICAgICAgU1RSVl9GT1JFQUNIKHN0YXRlLCBzdGF0ZXMpIHsKICAgICAgICAgICAgICAgICAgaW50IGs7CiAgCkBAIC0zNzMsNyArMzcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKGssICJGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byAvc3lzL3Bvd2VyL3N0YXRlOiAlbSIsICpzdGF0ZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMgYi9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYwotaW5kZXggNzdkOTVlNTEzZi4uMjVjZTRhYmZiMSAxMDA2NDQKK2luZGV4IDYwYzY4YjUwMjljZi4uZmRjYTAzZDNkNDJjIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMKICsrKyBiL3NyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jCiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgaW50IGV4ZWNfbGlzdChzZF9kZXZpY2VfZW51bWVyYXRvciAqZSwgY29uc3QgY2hhciAqYWN0aW9uLCBTZXQgKnNldHRsZV9zZQpAQCAtMzgzLDEzICszODEsMTMgQEAKIC0gICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZpbGVuYW1lLCBhY3Rpb24sIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKICsgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZpbGVuYW1lLCBhY3Rpb24sIDApOwogICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhyID09IC1FTk9FTlQgPyBMT0dfREVCVUcgOiBMT0dfRVJSLCByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byAnJXMnOiAlbSIsIGFjdGlvbiwgZmlsZW5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlID0gSU5fU0VUKHIsIC1FTk9FTlQsIC1FQUNDRVMsIC1FTk9ERVYsIC1FUk9GUyk7CisgCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldmQuYyBiL3NyYy91ZGV2L3VkZXZkLmMKLWluZGV4IGNiNTEyMzA0MmEuLmVhMzA5YTllN2YgMTAwNjQ0CitpbmRleCBjYTY1NDc0ZjI3NjMuLjM4NzgwNjgxNDMxYSAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXZkLmMKICsrKyBiL3NyYy91ZGV2L3VkZXZkLmMKLUBAIC0xMTEzLDcgKzExMTMsNyBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVfY2hhbmdlX29uZShzZF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqc3lzcGF0aCkgeworQEAgLTEwODksNyArMTA4OSw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZV9jaGFuZ2Vfb25lKHNkX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpzeXNwYXRoKSB7CiAgCiAgICAgICAgICBmaWxlbmFtZSA9IHN0cmpvaW5hKHN5c3BhdGgsICIvdWV2ZW50Iik7CiAgICAgICAgICBsb2dfZGV2aWNlX2RlYnVnKGRldiwgImRldmljZSBpcyBjbG9zZWQsIHN5bnRoZXNpc2luZyAnY2hhbmdlJyBvbiAlcyIsIHN5c3BhdGgpOwpAQCAtMzk5LDEwICszOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZXZpY2VfZGVidWdfZXJybm8oZGV2LCByLCAiRmFpbGVkIHRvIHdyaXRlICdjaGFuZ2UnIHRvICVzOiAlbSIsIGZpbGVuYW1lKTsKICAgICAgICAgIHJldHVybiAwOwogZGlmZiAtLWdpdCBhL3NyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jIGIvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMKLWluZGV4IDc1ZDA1MmFlNzAuLjVhMTVjOTM5ZDggMTAwNjQ0CitpbmRleCA5ZDcwNjA4NWZiNDcuLjMwZGNmYTg2ZjRkMCAxMDA2NDQKIC0tLSBhL3NyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jCiArKysgYi9zcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYwotQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgaW50IHRvZ2dsZV91dGY4X3ZjKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmZCwgYm9vbCB1dGY4KSB7CitAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBpbnQgdG9nZ2xlX3V0ZjhfdmMoY29uc3QgY2hhciAqbmFtZSwgaW50IGZkLCBib29sIHV0ZjgpIHsKICBzdGF0aWMgaW50IHRvZ2dsZV91dGY4X3N5c2ZzKGJvb2wgdXRmOCkgewogICAgICAgICAgaW50IHI7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1lc29uLUFkZC1EZWZpLW9iamNvcHktb3B0aW9uLXRvLXNwZWNpZnktb2JqY29weS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDc2NGI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAzZjM3YWQ1ZTA4M2RjYWQ1MWMyMWMxMDUwYjI4MjliNzBkMjQwYjUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNiBBdWcgMjAxOSAwMzoxMDoyMCArMDAwMAotU3ViamVjdDogW1BBVENIXSBtZXNvbjogQWRkIC1EZWZpLW9iamNvcHkgb3B0aW9uIHRvIHNwZWNpZnkgb2JqY29weQotCi1UaGlzIGhlbHBzIGluIGNyb3NzIGNvbXBpbGluZyBmb3IgeDg2IHRhcmdldCBvbiBhIGFhcmNoNjQgaG9zdCBlLmcuCi1GaXhlcwotVE9QRElSL2J1aWxkL3RtcC9ob3N0dG9vbHMvb2JqY29weTpzcmMvYm9vdC9lZmkvc3lzdGVtZF9ib290LnNvOiBJbnZhbGlkIGJmZCB0YXJnZXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbWVzb25fb3B0aW9ucy50eHQgICAgICAgIHwgMiArKwotIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDUgKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggZDRlYzM3ZGRhMi4uZGMxYzk2ZTExMiAxMDA2NDQKLS0tLSBhL21lc29uX29wdGlvbnMudHh0Ci0rKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTI5Niw2ICsyOTYsOCBAQCBvcHRpb24oJ2VmaS1jYycsIHR5cGUgOiAnYXJyYXknLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgY29tcGlsZXIgdG8gdXNlIGZvciBFRkkgbW9kdWxlcycpCi0gb3B0aW9uKCdlZmktbGQnLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBsaW5rZXIgdG8gdXNlIGZvciBFRkkgbW9kdWxlcycpCi0rb3B0aW9uKCdlZmktb2JqY29weScsIHR5cGUgOiAnc3RyaW5nJywKLSsgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIG9iamNvcHkgdG8gdXNlIGZvciBFRkknKQotIG9wdGlvbignZWZpLWxpYmRpcicsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAncGF0aCB0byB0aGUgRUZJIGxpYiBkaXJlY3RvcnknKQotIG9wdGlvbignZWZpLWxkc2RpcicsIHR5cGUgOiAnc3RyaW5nJywKLWRpZmYgLS1naXQgYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLWluZGV4IDBhZTMxOTE2MzUuLjVhNzEzN2JjODQgMTAwNjQ0Ci0tLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLSsrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotQEAgLTg4LDcgKzg4LDEwIEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBvdXRwdXQgOiAnZWZpX2NvbmZpZy5oJywKLSAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA6IGVmaV9jb25mKQotIAotLSAgICAgICAgb2JqY29weSA9IGZpbmRfcHJvZ3JhbSgnb2JqY29weScpCi0rICAgICAgICBvYmpjb3B5ID0gZ2V0X29wdGlvbignZWZpLW9iamNvcHknKQotKyAgICAgICAgaWYgb2JqY29weSA9PSAnJwotKyAgICAgICAgICAgICAgICBvYmpjb3B5ID0gZmluZF9wcm9ncmFtKCdvYmpjb3B5JywgcmVxdWlyZWQ6IHRydWUpCi0rICAgICAgICBlbmRpZgotIAotICAgICAgICAgZWZpX2xkc2RpciA9IGdldF9vcHRpb24oJ2VmaS1sZHNkaXInKQotICAgICAgICAgYXJjaF9sZHMgPSAnZWxmX0AwQF9lZmkubGRzJy5mb3JtYXQoZ251X2VmaV9wYXRoX2FyY2gpCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXBzdG9yZS1maXgtdXNlLWFmdGVyLWZyZWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXBzdG9yZS1maXgtdXNlLWFmdGVyLWZyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMTQ3YTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1wc3RvcmUtZml4LXVzZS1hZnRlci1mcmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAxYjMxNTZlZGQyOTFlMDg4MmQ4MGE2OTVkMDM1ZGQzMDUyMTM0NWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJpY2hAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOiBGcmksIDYgU2VwIDIwMTkgMTU6MDQ6MDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHN0b3JlOiBmaXggdXNlIGFmdGVyIGZyZWUKLQotVGhlIG1lbW9yeSBpcyBzdGlsbCBuZWVkZWQgaW4gdGhlIHNkX2pvdXJuYWxfc2VuZHYoKSBhZnRlciB0aGUgJ2lmJyBibG9jay4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMWUxOWY1YWMwZDY4MGE2M2VjY2FlN2VmMWZjNmNlMjI1ZGNhMGJiZikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9wc3RvcmUvcHN0b3JlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcHN0b3JlL3BzdG9yZS5jIGIvc3JjL3BzdG9yZS9wc3RvcmUuYwotaW5kZXggYzc2MGIzZTg5OS4uOGZmZTUyMzgzMCAxMDA2NDQKLS0tLSBhL3NyYy9wc3RvcmUvcHN0b3JlLmMKLSsrKyBiL3NyYy9wc3RvcmUvcHN0b3JlLmMKLUBAIC0xMTcsNiArMTE3LDcgQEAgc3RhdGljIGludCBjb21wYXJlX3BzdG9yZV9lbnRyaWVzKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lkICpfYikgewotIAotIHN0YXRpYyBpbnQgbW92ZV9maWxlKFBTdG9yZUVudHJ5ICpwZSwgY29uc3QgY2hhciAqc3ViZGlyKSB7Ci0gICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICppZmRfcGF0aCA9IE5VTEwsICpvZmRfcGF0aCA9IE5VTEw7Ci0rICAgICAgICBfY2xlYW51cF9mcmVlXyB2b2lkICpmaWVsZCA9IE5VTEw7Ci0gICAgICAgICBjb25zdCBjaGFyICpzdWZmaXgsICptZXNzYWdlOwotICAgICAgICAgc3RydWN0IGlvdmVjIGlvdmVjWzJdOwotICAgICAgICAgaW50IG5faW92ZWMgPSAwLCByOwotQEAgLTEzOCw3ICsxMzksNiBAQCBzdGF0aWMgaW50IG1vdmVfZmlsZShQU3RvcmVFbnRyeSAqcGUsIGNvbnN0IGNoYXIgKnN1YmRpcikgewotICAgICAgICAgaW92ZWNbbl9pb3ZlYysrXSA9IElPVkVDX01BS0VfU1RSSU5HKG1lc3NhZ2UpOwotIAotICAgICAgICAgaWYgKHBlLT5jb250ZW50X3NpemUgPiAwKSB7Ci0tICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIHZvaWQgKmZpZWxkID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGZpZWxkX3NpemU7Ci0gCi0gICAgICAgICAgICAgICAgIGZpZWxkX3NpemUgPSBzdHJsZW4oIkZJTEU9IikgKyBwZS0+Y29udGVudF9zaXplOwotLS0gCi0yLjE0LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS11bml0LWZpbGUuYy1jb25zaWRlci1zeW1saW5rLW9uLWZpbGVzeXN0ZW1zLWxpa2UtTkZTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS11bml0LWZpbGUuYy1jb25zaWRlci1zeW1saW5rLW9uLWZpbGVzeXN0ZW1zLWxpa2UtTkZTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTIwYTBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtdW5pdC1maWxlLmMtY29uc2lkZXItc3ltbGluay1vbi1maWxlc3lzdGVtcy1saWtlLU5GUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZDAxMjJjMDc3ZDJkOGZkMGZkMjliNDYzYzUwMWU3ZGRmOTE3N2ZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjQgU2VwIDIwMTkgMTc6MDQ6NTAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdW5pdC1maWxlLmM6IGNvbnNpZGVyIHN5bWxpbmsgb24gZmlsZXN5c3RlbXMgbGlrZSBORlMKLQotU29tZSBmaWxlc3lzdGVtcyBkbyBub3QgZnVsbHkgc3VwcG9ydCByZWFkZGlyLCBhY2NvcmRpbmcgdG8gdGhlIG1hbnVhbCwKLXNvIHdlIHNob3VsZCBhbHNvIGNvbnNpZGVyIERUX1VOS05PV04gdG8gY29ycmVjdGx5IGhhbmRsZSBzeW1saW5rcy4KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEzNjM3XQotLS0tCi0gc3JjL3NoYXJlZC91bml0LWZpbGUuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91bml0LWZpbGUuYyBiL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMKLWluZGV4IDRhNWYyM2U2YzEuLjgzNzMxMDMwMDAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3VuaXQtZmlsZS5jCi0rKysgYi9zcmMvc2hhcmVkL3VuaXQtZmlsZS5jCi1AQCAtMjQ3LDYgKzI0Nyw3IEBAIGludCB1bml0X2ZpbGVfYnVpbGRfbmFtZV9tYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqX2ZpbGVuYW1lX2ZyZWUgPSBOVUxMLCAqc2ltcGxpZmllZCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3VmZml4LCAqZHN0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZhbGlkX3VuaXRfbmFtZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF91bml0X25hbWUgPSB1bml0X25hbWVfaXNfdmFsaWQoZGUtPmRfbmFtZSwgVU5JVF9OQU1FX0FOWSk7Ci0gCi1AQCAtMjc5LDcgKzI4MCwxMCBAQCBpbnQgdW5pdF9maWxlX2J1aWxkX25hbWVfbWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNobWFwX2NvbnRhaW5zKGlkcywgZGUtPmRfbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGUtPmRfdHlwZSA9PSBEVF9MTkspIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGUtPmRfdHlwZSA9PSBEVF9MTksgfHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlLT5kX3R5cGUgPT0gRFRfVU5LTk9XTiAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YXQoZmlsZW5hbWUsICZzYikgPT0gMCAmJgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNiLnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZMTkspKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXZSBkb24ndCBleHBsaWNpdGx5IGNoZWNrIGZvciBhbGlhcyBsb29wcyBoZXJlLiB1bml0X2lkc19tYXBfZ2V0KCkgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGhvcHMgc2hvdWxkIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBtYXAuICovCi0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaAppbmRleCBjNjIxM2FiLi5hNWU0MWJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDFlYjg0NTM0ZGVhMDVkNDFhZmVkMWQ4OThjYmEyMTJhZDdkMzEwZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNlYjEyYTZiYTBiY2UxNDk3MTdlYWFiZWIxNTA1ZDM3OWIzZDcwNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDEzOjQxOjQxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjRdIGRvbid0IHVzZSBnbGliYy1zcGVjaWZpYyBxc29ydF9yCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHVzZSBnbGliYy1zcGVjaWZpYyBxc29ydF9yCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIApAQCAtMTAsMTQgKzEwLDE1IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbUmViYXNlZCBmb3IgdjI0Ml0KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCiAtLS0KLSBzcmMvYmFzaWMvc29ydC11dGlsLmggICAgICAgICAgICAgIHwgMTQgLS0tLS0tLS0tLS0tLS0KLSBzcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jIHwgMTkgKysrKysrKysrKysrKystLS0tLQotIHNyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMgICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyBzcmMvYmFzaWMvc29ydC11dGlsLmggICAgICAgICAgICAgIHwgMTQgLS0tLS0tLS0tLS0tCisgc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYyB8IDE5ICsrKysrKysrKysrLS0tLS0KKyBzcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAgMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb3J0LXV0aWwuaCBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAotaW5kZXggZTAyOWY4NjQ2ZS4uMjdkNjhiMzQxYyAxMDA2NDQKK2luZGV4IGUwMjlmODY0NmViMC4uMjdkNjhiMzQxY2YzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvc29ydC11dGlsLmgKIEBAIC01NCwxNyArNTQsMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBfX2NvbXBhcl9mbgpAQCAtMzksNyArNDAsNyBAQAogLSAgICAgICAgICAgICAgICBxc29ydF9yX3NhZmUoKHApLCAobiksIHNpemVvZigocClbMF0pLCAoX19jb21wYXJfZF9mbl90KSBfZnVuY18sIHVzZXJkYXRhKTsgXAogLSAgICAgICAgfSkKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYwotaW5kZXggYzgzNTc1YzdjOC4uNzJmOGYzYTA1MCAxMDA2NDQKK2luZGV4IGQ3OTBlOGZkMGIxOS4uNDJlMGZkN2M5YjNjIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYwogQEAgLTEyOCw5ICsxMjgsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9mcmVlKHN0cnVjdCB0cmllICp0cmllKSB7CkBAIC04MywxMCArODQsMTAgQEAKICB9CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYyBiL3NyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMKLWluZGV4IGE1YzBhOTliMDguLmQ1OTVjYmUzNzIgMTAwNjQ0CitpbmRleCA0MjUwMTMwNDY0OTEuLjMzYzFjNWExMmQ0MyAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMKICsrKyBiL3NyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMKLUBAIC04NTAsMzEgKzg1MCwzMyBAQCBzdGF0aWMgaW50IGNlbGxfZGF0YV9jb21wYXJlKFRhYmxlRGF0YSAqYSwgc2l6ZV90IGluZGV4X2EsIFRhYmxlRGF0YSAqYiwgc2l6ZV90CitAQCAtMTE2NCwzMSArMTE2NCwzMyBAQCBzdGF0aWMgaW50IGNlbGxfZGF0YV9jb21wYXJlKFRhYmxlRGF0YSAqYSwgc2l6ZV90IGluZGV4X2EsIFRhYmxlRGF0YSAqYiwgc2l6ZV90CiAgICAgICAgICByZXR1cm4gQ01QKGluZGV4X2EsIGluZGV4X2IpOwogIH0KICAKQEAgLTEzMCw3ICsxMzEsNyBAQAogICAgICAgICAgfQogIAogICAgICAgICAgLyogT3JkZXIgaWRlbnRpY2FsIGxpbmVzIGJ5IHRoZSBvcmRlciB0aGVyZSB3ZXJlIG9yaWdpbmFsbHkgYWRkZWQgaW4gKi8KLUBAIC0xMTA3LDcgKzExMDksMTIgQEAgaW50IHRhYmxlX3ByaW50KFRhYmxlICp0LCBGSUxFICpmKSB7CitAQCAtMTY5MCw3ICsxNjkyLDEyIEBAIGludCB0YWJsZV9wcmludChUYWJsZSAqdCwgRklMRSAqZikgewogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yb3dzOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkW2ldID0gaSAqIHQtPm5fY29sdW1uczsKICAKQEAgLTE0NCw3ICsxNDUsNyBAQAogICAgICAgICAgfQogIAogICAgICAgICAgaWYgKHQtPmRpc3BsYXlfbWFwKQotQEAgLTE1MzQsNyArMTU0MSwxMiBAQCBpbnQgdGFibGVfdG9fanNvbihUYWJsZSAqdCwgSnNvblZhcmlhbnQgKipyZXQpIHsKK0BAIC0yMjM2LDcgKzIyNDMsMTIgQEAgaW50IHRhYmxlX3RvX2pzb24oVGFibGUgKnQsIEpzb25WYXJpYW50ICoqcmV0KSB7CiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Jvd3M7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRbaV0gPSBpICogdC0+bl9jb2x1bW5zOwogIApAQCAtMTU4LDYgKzE1OSwzIEBACiAgICAgICAgICB9CiAgCiAgICAgICAgICBpZiAodC0+ZGlzcGxheV9tYXApCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaAppbmRleCBkY2FlNjY4Li5iYTc0MjRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1JbmNsdWRlIHN5cy93YWl0LmgKK0Zyb20gMTA2OTIyMzM1ZWM1MDJiY2I0NDUxYzU0YTg5YmU0OWY4OGZhNTRkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK0RhdGU6IEZyaSwgMTMgU2VwIDIwMTkgMTk6MjY6MjcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBzeXMvd2FpdC5oCiAKIEZpeGVzOgogc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmM6MTU4Ojg1OiBlcnJvcjogJ1dFWElURUQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdXSUZFWElURUQnPwpAQCAtOCwxMiArMTEsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYyBiL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jCi1pbmRleCA4ZGZhOTdkN2FlLi5iZGRkNGEyNzI3IDEwMDY0NAoraW5kZXggM2Y0YjY1ZTFmZGYxLi41YWY3ZTNkNWNlM2YgMTAwNjQ0CiAtLS0gYS9zcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYwogKysrIGIvc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMKIEBAIC0xLDUgKzEsNiBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWEzMzRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gYmRiYWZlMThjM2JmOTliM2I2OTFjZDUyYjljY2ZmNjBmMzEzODkyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjcgSnVuIDIwMTggMTY6MDk6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIHVzZSBsbnIgd3JhcHBlciBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIC0tcmVsYXRpdmUgb3B0aW9uCi0gZm9yIGxuCi0KLVJlbW92ZSBmaWxlIG1hbnVhbGx5IHRvIGF2b2lkIHRoZSAnRmlsZSBFeGlzdHMnIGVycm9yIHdoZW4gY3JlYXRpbmcKLXN5bWxpbmsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgb3JpZ2luYWwgJ2xuJyBjb21tYW5kIHVzZXMgJy1mJyBvcHRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+Ci0tLS0KLSBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCA0IC0tLS0KLSB0b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggfCAzICsrLQotIHVuaXRzL21lc29uLWFkZC13YW50cy5zaCAgICB8IDcgKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggZTVjZWIxZTE2OS4uNzliNzYyZmFlYiAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTU3OSwxMCArNTc5LDYgQEAgZW5kZm9yZWFjaAotIAotIGNvbmYuc2V0X3F1b3RlZCgnVEVMSU5JVCcsIGdldF9vcHRpb24oJ3RlbGluaXQtcGF0aCcpKQotIAotLWlmIHJ1bl9jb21tYW5kKCdsbicsICctLXJlbGF0aXZlJywgJy0taGVscCcpLnJldHVybmNvZGUoKSAhPSAwCi0tICAgICAgICBlcnJvcignbG4gZG9lcyBub3Qgc3VwcG9ydCAtLXJlbGF0aXZlIChhZGRlZCBpbiBjb3JldXRpbHMgOC4xNiknKQotLWVuZGlmCi0tCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi0gZ3BlcmYgPSBmaW5kX3Byb2dyYW0oJ2dwZXJmJykKLWRpZmYgLS1naXQgYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKLWluZGV4IGRhMGQxM2EzNDEuLjkwYmMwYTkzYzIgMTAwNzU1Ci0tLS0gYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKLSsrKyBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotQEAgLTgsNSArOCw2IEBAIG1rZGlyIC12cCAiJChkaXJuYW1lICIke0RFU1RESVI6LX0kMiIpIgotIGlmIFsgIiQoZGlybmFtZSAkMSkiID0gLiBdOyB0aGVuCi0gICAgIGxuIC12ZnMgLVQgIiQxIiAiJHtERVNURElSOi19JDIiCi0gZWxzZQotLSAgICBsbiAtdmZzIC1UIC0tcmVsYXRpdmUgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCi0rICAgIHJtIC1mICIke0RFU1RESVI6LX0kMiIKLSsgICAgbG5yICIke0RFU1RESVI6LX0kMSIgIiR7REVTVERJUjotfSQyIgotIGZpCi1kaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoIGIvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi1pbmRleCBhNDgzZDc1Yjg2Li4zYzAxYzUyM2YxIDEwMDc1NQotLS0tIGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi0rKysgYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLUBAIC0yNSw0ICsyNSw5IEBAIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICAgICA7OwotIGVzYWMKLSAKLS1sbiAtdmZzIC0tcmVsYXRpdmUgIiR1bml0cGF0aCIgIiRkaXIiCi0raWYgWyAtZCAiJGRpciIgXTsgdGhlbgotKyAgICAgICAgcm0gLWYgIiRkaXIvJHVuaXQiCi0rICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIvJHVuaXQiCi0rZWxzZQotKyAgICAgICAgbG5yICIkdW5pdHBhdGgiICIkZGlyIgotK2ZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCmluZGV4IDY2OTVkNTYuLmM2MjA0NzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0Nzg2NDk4OTM4OGJjZDA0ZDY0N2VjZjYxOGFkN2UyNjAzOTlkYmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmOTA3ODUwMWExNDk1Yzk5OTE0MzFkMTQzNWQwODFjZDJlODMwMzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgNSBTZXAgMjAxNSAwNjozMTo0NyArMDAwMAotU3ViamVjdDogW1BBVENIIDMvNV0gaW1wbG1lbnQgc3lzdGVtZC1zeXN2LWluc3RhbGwgZm9yIE9FCitTdWJqZWN0OiBbUEFUQ0hdIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQogCiBVc2UgdXBkYXRlLXJjLmQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgc3RhdHVzIGNvbW1hbmQKIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHN5c3Ygc2VydmljZQpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiB8IDYgKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCi1pbmRleCA4YzE2Y2Y5Li45ZjA3OGExIDEwMDc1NQoraW5kZXggOGMxNmNmOTk5MTNmLi45ZjA3OGExMjE0NjkgMTAwNzU1CiAtLS0gYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCiArKysgYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCiBAQCAtMzIsMTcgKzMyLDE3IEBAIGNhc2UgIiQxIiBpbgpAQCAtMzgsNiArMzksMyBAQAogICAgICAgICAgOzsKICAgICAgKikKICAgICAgICAgIHVzYWdlIDs7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaAppbmRleCAyZTM5ZjdhLi4xNDA0ODk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoCkBAIC0xLDI0ICsxLDI4IEBACi1Gcm9tIGE5NDIxZDU1MTAyZmM4NGY3N2Y3YzIxYTI0NzlmY2QwMDY1MmI4OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIzM2RlODcyYjliMDMzZWM4NDJjMjEzNTE1MmQyZTAwNmFjNDRjMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDEzOjU1OjEyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjRdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJlX2ZuX3QgYW5kIGNvbXBhcmlzb25fZm5fdAorU3ViamVjdDogW1BBVENIXSBtaXNzaW5nX3R5cGUuaDogYWRkIF9fY29tcGFyZV9mbl90IGFuZCBjb21wYXJpc29uX2ZuX3QKIAogTWFrZSBpdCB3b3JrIHdpdGggbXVzbCB3aGVyZSBjb21wYXJpc29uX2ZuX3QgYW5kIF9fY29tcGFyZV9mbl90CiBpcyBub3QgcHJvdmlkZWQuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAorU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorW1JlYmFzZWQgZm9yIHYyNDRdCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbUmViYXNlZCBmb3IgdjI0Ml0KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvbWlzc2luZ190eXBlLmggfCA5ICsrKysrKysrKwogIHNyYy9iYXNpYy9zb3J0LXV0aWwuaCAgICB8IDEgKworIHNyYy9jb3JlL2ttb2Qtc2V0dXAuYyAgICB8IDEgKwogIHNyYy9qb3VybmFsL2NhdGFsb2cuYyAgICB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQorIDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCi1pbmRleCBiZjhhNmNhYTFiLi4yMTM0ZmU1MDk1IDEwMDY0NAoraW5kZXggYmY4YTZjYWExYjQ2Li5jNDg3ZTY1ZTdiZGUgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogQEAgLTEwLDMgKzEwLDEyIEBACkBAIC0zNSwyOSArMzksMzggQEAKICt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKICsjZW5kaWYKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc29ydC11dGlsLmggYi9zcmMvYmFzaWMvc29ydC11dGlsLmgKLWluZGV4IGUwMjlmODYuLjcyNDdkNDAgMTAwNjQ0CitpbmRleCAyN2Q2OGIzNDFjZjMuLjMwN2VhNGFjMGU4ZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCiBAQCAtNCw2ICs0LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgCiAgI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ190eXBlLmgiCiAgCiAgdm9pZCAqeGJzZWFyY2hfcihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9kX2ZuX3QgY29tcGFyLCB2b2lkICphcmcpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYyBiL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYworaW5kZXggMTI4Njc0MzI3MzYyLi4wOWNjZDYxM2UzMmMgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9rbW9kLXNldHVwLmMKKysrKyBiL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYworQEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAia21vZC1zZXR1cC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKKyAKKyAjaWYgSEFWRV9LTU9ECisgI2luY2x1ZGUgIm1vZHVsZS11dGlsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvY2F0YWxvZy5jIGIvc3JjL2pvdXJuYWwvY2F0YWxvZy5jCi1pbmRleCA3YmVmZmMxZTFhLi40ODE4YTJlNWNjIDEwMDY0NAoraW5kZXggNzBiMmM4YjQ2YzRlLi5kNTc0YTY0NTg2ZjEgMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9jYXRhbG9nLmMKICsrKyBiL3NyYy9qb3VybmFsL2NhdGFsb2cuYwotQEAgLTI5LDYgKzI5LDcgQEAKK0BAIC0yOCw2ICsyOCw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ190eXBlLmgiCiAgCiAgY29uc3QgY2hhciAqIGNvbnN0IGNhdGFsb2dfZmlsZV9kaXJzW10gPSB7CiAgICAgICAgICAiL3Vzci9sb2NhbC9saWIvc3lzdGVtZC9jYXRhbG9nLyIsCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCmluZGV4IDdlZTBkNDguLjUzOGE5OWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotSW5jbHVkZSBzaWduYWwuaAorRnJvbSAwODJkMmViMmE2NTUyNTg5MGE5MTM3MjM3NjRlNjdhMzZlZTc1Mzg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorRGF0ZTogRnJpLCAxMyBTZXAgMjAxOSAxOToyNjoyNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHNpZ25hbC5oCiAKIEZpeGVzIHNldmVyYWwgc2lnbmFsIHNldCByZWxhdGVkIGVycm9yczoKIHNyYy9iYXNpYy9jb3B5LmM6OTI6MTk6IGVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnc2lnZW1wdHlzZXQnIFstV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQpAQCAtOSwxNyArMTIsMTggQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9jb3B5LmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9jb3B5LmMgYi9zcmMvYmFzaWMvY29weS5jCi1pbmRleCBjYTMxMWUwMjFlLi4zY2Y3ZmMxNjk3IDEwMDY0NAoraW5kZXggOTAyODg2OGY2OTZkLi41MTY4NTg2ZmE1MjIgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvY29weS5jCiArKysgYi9zcmMvYmFzaWMvY29weS5jCi1AQCAtMTIsNiArMTIsNyBAQAorQEAgLTgsNiArOCw3IEBACisgI2luY2x1ZGUgPHN5cy9zZW5kZmlsZS5oPgogICNpbmNsdWRlIDxzeXMveGF0dHIuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KICsjaW5jbHVkZSA8c2lnbmFsLmg+CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCBhMmFhZDQwLi4wZGVhOTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDdiY2YzYjE2NjY5NDA5MDQ5N2EwYWNkMmM1Mjk5ZTRlMDRmY2M5YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhhZjE2OGNlZmNhMDFmOGYyZGEzMzZmMWM4MjYyMGMyODRkYzc0ZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE0OjA0OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjRdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIApAQCAtMTAsMTEgKzEwLDEyIEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogIHNyYy9iYXNpYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDUgKwotIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKwogIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KICBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCiAgNiBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKQEAgLTIyLDEwICsyMywxMCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA3OWI3NjJmYWViLi43ZjhjNjc5NDExIDEwMDY0NAoraW5kZXggZmMyMTZkMjJkYTI0Li5hMjU5OTY4MDNkNjQgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC02MTMsNiArNjEzLDcgQEAgZW5kaWYKK0BAIC02NDAsNiArNjQwLDcgQEAgZW5kaWYKICBmb3JlYWNoIGhlYWRlciA6IFsnY3J5cHQuaCcsCiAgICAgICAgICAgICAgICAgICAgJ2xpbnV4L21lbWZkLmgnLAogICAgICAgICAgICAgICAgICAgICdsaW51eC92bV9zb2NrZXRzLmgnLApAQCAtMzQsMTAgKzM1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL21lbWNoZWNrLmgnLAogICAgICAgICAgICAgICAgICAgICd2YWxncmluZC92YWxncmluZC5oJywKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKLWluZGV4IGQ2Y2FmMjhmMTQuLjMyYzFhY2YzNDkgMTAwNjQ0CitpbmRleCBjY2IyMmUxNTk1MDUuLjI1Yzc3ZWE2YmMwZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZAogKysrIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCi1AQCAtMzEyLDYgKzMxMiwxMSBAQCBmb3JlYWNoIGl0ZW0gOiBbWydhZicsICAgICBhZl9saXN0X3R4dCwgICAgICdhZicsICAgICAgICAgJyddLAorQEAgLTMxMyw2ICszMTMsMTEgQEAgZm9yZWFjaCBpdGVtIDogW1snYWYnLCAgICAgYWZfbGlzdF90eHQsICAgICAnYWYnLCAgICAgICAgICcnXSwKICBlbmRmb3JlYWNoCiAgCiAgYmFzaWNfc291cmNlcyArPSBnZW5lcmF0ZWRfZ3BlcmZfaGVhZGVycwpAQCAtNTEsNyArNTIsNyBAQAogICAgICAgICAgJ2djcnlwdC11dGlsLmgnKQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNDk0MzdlNTQ0NQoraW5kZXggMDAwMDAwMDAwMDAwLi40OTQzN2U1NDQ1NDAKIC0tLSAvZGV2L251bGwKICsrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKIEBAIC0wLDAgKzEsMjczIEBACkBAIC0zMzAsNyArMzMxLDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi40N2JlNzUyMmQ3CitpbmRleCAwMDAwMDAwMDAwMDAuLjQ3YmU3NTIyZDdmYQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAogQEAgLTAsMCArMSw1NyBAQApAQCAtMzkyLDcgKzM5Myw3IEBACiArCiArI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotaW5kZXggYzNiOTQ0OGQ0Zi4uMjkzN2FhMTNiMSAxMDA2NDQKK2luZGV4IGMzYjk0NDhkNGY0Zi4uMjkzN2FhMTNiMTc4IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAogQEAgLTEsMTMgKzEsMTMgQEAKQEAgLTQxMSw3ICs0MTIsNyBAQAogICNkZWZpbmUgc25wcmludGZfb2soYnVmLCBsZW4sIGZtdCwgLi4uKSBcCiAgICAgICAgICAoKHNpemVfdCkgc25wcmludGYoYnVmLCBsZW4sIGZtdCwgX19WQV9BUkdTX18pIDwgKGxlbikpCiBkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotaW5kZXggNWVmMTFmYTFhNC4uNjM4NGFiNjIwYyAxMDA2NDQKK2luZGV4IDkxMmVjZWY3M2NjZS4uNDNlZDc1NmJkYTUzIDEwMDY0NAogLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKICsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCiBAQCAtMiw3ICsyLDYgQEAKQEAgLTQyMCw5ICs0MjEsOSBAQAogICNpbmNsdWRlIDxmY250bC5oPgogLSNpbmNsdWRlIDxwcmludGYuaD4KICAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICAjaW5jbHVkZSA8c3lzL3VuLmg+Ci1AQCAtMjEsNiArMjAsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC0yMCw2ICsxOSw3IEBACiAgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjljNTk5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBkYzBhNmE5ZmU0ZGE5NzM4ZWZhYmE5NDIyMzNhZDM5ZGE2MjVhOTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyMSBGZWIgMjAxOSAxNjoyODoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDQvNV0gcnVsZXM6IHdoaXRlbGlzdCBoZCogZGV2aWNlcwotCi1xZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQotQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKLS9kZXYvaGQqLiBQYXRjaCByZWplY3RlZCB1cHN0cmVhbSBiZWNhdXNlIENPTkZJR19JREUgaXMgZGVwcmVjYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC8xMjc2XQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQxXQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQotU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgotLS0tCi0gcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1pbmRleCA3ODAyYjFjOTRmLi5jMDUzNGFlMjZhIDEwMDY0NAotLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi0rKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLUBAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHViaSp8c2NtKnxwbWVtKnxuYmQqfHpkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0rS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCi0gVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaAppbmRleCAwZjc1ZThjLi5kMzk0NDQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUhhbmRsZSBfX2NwdV9tYXNrIHVzYWdlCitGcm9tIGRiZThiM2VlNDU1ODBkZWZlZWZjYWM5MjliODk3YzU0MzdmZmM1MGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CitEYXRlOiBGcmksIDEzIFNlcCAyMDE5IDE5OjI2OjI3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEhhbmRsZSBfX2NwdV9tYXNrIHVzYWdlCiAKIEZpeGVzIGVycm9yczoKIApAQCAtMTUsMTMgKzE4LDE0IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL3NoYXJlZC9jcHUtc2V0LXV0aWwuaCB8IDIgKysKICBzcmMvdGVzdC90ZXN0LXNpemVvZi5jICAgIHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oIGIvc3JjL3NoYXJlZC9jcHUtc2V0LXV0aWwuaAotaW5kZXggMjc4MTJkZmQ1OS4uZjY5OGY5ZGY4MyAxMDA2NDQKK2luZGV4IDI3ODEyZGZkNTkyMy4uMGFiNDA3MzFlYTkzIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9jcHUtc2V0LXV0aWwuaAogKysrIGIvc3JjL3NoYXJlZC9jcHUtc2V0LXV0aWwuaAogQEAgLTYsNiArNiw4IEBACkBAIC0zNCw3ICszOCw3IEBACiAgdHlwZWRlZiBzdHJ1Y3QgQ1BVU2V0IHsKICAgICAgICAgIGNwdV9zZXRfdCAqc2V0OwogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCBhNzEwZGI1MzcwLi5kMTYwMWFkOTI5IDEwMDY0NAoraW5kZXggYzY1MDYyZDI1NjJjLi44YjZlZWZhOWNkYWUgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCiArKysgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCiBAQCAtMSw2ICsxLDUgQEAKQEAgLTQzLDggKzQ3LDggQEAKIC0jaW5jbHVkZSA8c2NoZWQuaD4KICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi1AQCAtOCw2ICs3LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitAQCAtMTAsNiArOSw3IEBACiAgI2luY2x1ZGUgPGZsb2F0Lmg+CiAgCiAgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjE3NWI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gZDFiY2NjNzIxZGQ4ZjQzZmVlMjljNWRmMGU5Yjc4MzQ1ZTY5ZjRiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjEgRmViIDIwMTkgMTY6Mzg6MzggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIHJ1bGVzOiB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzIGluIGlkZSBkZXZpY2VzCi0KLUZvcm1hdHRpbmcgSURFIHN0b3JhZ2UgZG9lcyBub3QgdHJpZ2dlciAiY2hhbmdlIiB1ZXZlbnRzLiBBcyBhIHJlc3VsdAotY2xpZW50cyB1c2luZyB1ZGV2IEFQSSBkb24ndCBnZXQgYW55IHVwZGF0ZXMgYWZ0ZXJ3YXJkcyBhbmQgZ2V0IG91dGRhdGVkCi1pbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlLgotLi4uCi1yb290QHFlbXV4ODYtNjQ6fiMgbWtmcy5leHQ0IC1GIC9kZXYvaGRhMQotQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCA0ayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcwotRmlsZXN5c3RlbSBVVUlEOiA5ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKLQotcm9vdEBxZW11eDg2LTY0On4jIGxzIC9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgotbHM6IGNhbm5vdCBhY2Nlc3MgJy9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMic6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS4uLgotSW5jbHVkZSBoZCogaW4gYSBtYXRjaCBmb3Igd2F0Y2ggb3B0aW9uIGFzc2lnbm1lbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLXFlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCi1DT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcwotL2Rldi9oZCouIEEgc2ltaWxhciBwYXRjaCByZWplY3RlZCBieSB1cHN0cmVhbSBiZWNhdXNlIENPTkZJR19JREUKLWlzIGRlcHJlY2F0ZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0MV0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KLS0tLQotIHJ1bGVzLzYwLWJsb2NrLnJ1bGVzIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcnVsZXMvNjAtYmxvY2sucnVsZXMgYi9ydWxlcy82MC1ibG9jay5ydWxlcwotaW5kZXggMzEzNGFiOTk1ZS4uY2Q3MmE0OTRhMSAxMDA2NDQKLS0tLSBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi0rKysgYi9ydWxlcy82MC1ibG9jay5ydWxlcwotQEAgLTksNSArOSw1IEBAIEFDVElPTj09ImNoYW5nZSIsIFNVQlNZU1RFTT09InNjc2kiLCBFTlZ7REVWVFlQRX09PSJzY3NpX2RldmljZSIsIFRFU1Q9PSJibG9jayIsCi0gCi0gIyB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzLCBjYXVzZWQgYnkgdG9vbHMgY2xvc2luZyB0aGUgZGV2aWNlIG5vZGUgd2hpY2ggd2FzIG9wZW5lZCBmb3Igd3JpdGluZwotIEFDVElPTiE9InJlbW92ZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgXAotLSAgS0VSTkVMPT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnx1YmkqfHNjbSp8cG1lbSp8bmJkKnx6ZCoiLCBcCi0rICBLRVJORUw9PSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHViaSp8c2NtKnxwbWVtKnxuYmQqfHpkKnxoZCoiLCBcCi0gICBPUFRJT05TKz0id2F0Y2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKaW5kZXggYWRmYzNiNy4uY2E0ZjBkNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMzk5ZmQzZWRhMzA0NTYzNmE3MGRhNDM4YTBmZDE0MDZjYzMzMmVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODVkY2FhZDhmMzg1MjFlYzNkYzU4MDc5NDA3MmI2MDE5MDBlZWQ4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTQ6MTg6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yNF0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKIAogaW5jbHVkZSBtaXNzaW5nLmggIGZvciBkZWZpbml0aW9uIG9mIHN0cm5kdXBhCiAKQEAgLTEzLDI4ICsxMyw0OCBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDRdCisKIC0tLQogIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFja2xpZ2h0L2JhY2tsaWdodC5jICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9lbnYtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvbG9nLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmggICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKysrCiAgc3JjL2Jhc2ljL21rZGlyLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvdGltZS11dGlsLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jvb3QvYmxlc3MtYm9vdC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9jb3JlL2RidXMtY2dyb3VwLmMgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2NvcmUvZGJ1cy11dGlsLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9rbW9kLXNldHVwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2NvcmUvc2VydmljZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9jb3JlZHVtcC9jb3JlZHVtcC12YWN1dW0uYyAgICAgICAgICAgICB8ICAxICsKKyBzcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jICAgfCAgMSArCiAgc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9qb3VybmFsL3NkLWpvdXJuYWwuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYyAgICAgICAgfCAgMSArCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMgICAgICAgIHwgIDEgKworIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMgICAgICAgICB8ICAxICsKKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jIHwgIDEgKwogIHNyYy9sb2NhbGUva2V5bWFwLXV0aWwuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvbG9naW4vcGFtX3N5c3RlbWQuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMgIHwgIDEgKwogIHNyYy9uc3Bhd24vbnNwYXduLXNldHRpbmdzLmMgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYyAgICAgICAgfCAgMSArCisgc3JjL3BvcnRhYmxlL3BvcnRhYmxlLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL2J1cy11bml0LXByb2NzLmMgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvYnVzLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvc2hhcmVkL2Rucy1kb21haW4uYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9zaGFyZWQvbG9ncy1zaG93LmMgICAgICAgICAgICAgICAgICAgICB8ICAxICsKQEAgLTQ2LDQ2ICs2Niw3MCBAQAogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1wYXRoX2lkLmMgICAgICAgICAgICB8ICAxICsKICBzcmMvdWRldi91ZGV2LWV2ZW50LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL3VkZXYvdWRldi1ydWxlcy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIDMyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKykKKyA0OSBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA3ZjhjNjc5NDExLi44MWMwNjFiNzY4IDEwMDY0NAoraW5kZXggYTI1OTk2ODAzZDY0Li43MmIzMDViNWFiNTggMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC01MDYsNiArNTA2LDcgQEAgZm9yZWFjaCBpZGVudCA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKLSAgICAgICAgIFsnZ2V0X21lbXBvbGljeScsICAgICAnJycjaW5jbHVkZSA8c3RkbGliLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCitAQCAtNTI5LDYgKzUyOSw3IEBAIGZvcmVhY2ggaWRlbnQgOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzaWduYWwuaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4nJyddLAogKyAgICAgICAgWydzdHJuZHVwYScgLCAgICAgICAgICcnJyNpbmNsdWRlIDxzdHJpbmcuaD4nJyddLAogIF0KICAKICAgICAgICAgIGhhdmUgPSBjYy5oYXNfZnVuY3Rpb24oaWRlbnRbMF0sIHByZWZpeCA6IGlkZW50WzFdLCBhcmdzIDogJy1EX0dOVV9TT1VSQ0UnKQogZGlmZiAtLWdpdCBhL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMgYi9zcmMvYmFja2xpZ2h0L2JhY2tsaWdodC5jCi1pbmRleCBkZmQ2ODA1Mzk4Li5jMmIyYWNlNmVjIDEwMDY0NAoraW5kZXggMDQ4NDQxNDI5MDI1Li4wMWQ3NGVhMGVkNGUgMTAwNjQ0CiAtLS0gYS9zcmMvYmFja2xpZ2h0L2JhY2tsaWdodC5jCiArKysgYi9zcmMvYmFja2xpZ2h0L2JhY2tsaWdodC5jCiBAQCAtMTcsNiArMTcsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBpbnQgZmluZF9wY2lfb3JfcGxhdGZvcm1fcGFyZW50KHNkX2RldmljZSAqZGV2aWNlLCBzZF9kZXZpY2UgKipyZXQpIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKnN1YnN5c3RlbSwgKnN5c25hbWUsICp2YWx1ZTsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCitpbmRleCA1NGZjNmVjZjhiMjAuLmE1MTQxZjRjYmVkZCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYworQEAgLTM3LDYgKzM3LDcgQEAKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ1bml0LW5hbWUuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGludCBjZ19lbnVtZXJhdGVfaXRlbXMoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgRklMRSAqKl9mLCBjb25zdCBjaGFyICppdGVtKSB7CisgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpmcyA9IE5VTEw7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Vudi11dGlsLmMgYi9zcmMvYmFzaWMvZW52LXV0aWwuYwotaW5kZXggYTY1MDNjZjJiNi4uY2VlZjlhNjJjOCAxMDA2NDQKK2luZGV4IGI4ZGM5ODkxNWY4MS4uNTA0OWIzNzU5NGJjIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2Vudi11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9lbnYtdXRpbC5jCi1AQCAtMTYsNiArMTYsNyBAQAorQEAgLTE1LDYgKzE1LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ1dGY4LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjZGVmaW5lIFZBTElEX0NIQVJTX0VOVl9OQU1FICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBESUdJVFMgTEVUVEVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9sb2cuYyBiL3NyYy9iYXNpYy9sb2cuYworaW5kZXggMTc1NTdlMTg0NGIyLi42Y2VjNGQzMjRhYWIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbG9nLmMKKysrKyBiL3NyYy9iYXNpYy9sb2cuYworQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQorIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmgKLWluZGV4IDE4OGE4ZDQ0MDYuLjFlMTZlYzI4N2EgMTAwNjQ0CitpbmRleCAxODhhOGQ0NDA2NmEuLjFlMTZlYzI4N2FhZCAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaAogQEAgLTExLDMgKzExLDE1IEBACkBAIC0xMDUsMzM4ICsxNDksNTE4IEBACiArICB9KQogKyNlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ta2Rpci5jIGIvc3JjL2Jhc2ljL21rZGlyLmMKLWluZGV4IDZiODJlYWI2NDAuLjUxYzZiNzg2MTUgMTAwNjQ0CitpbmRleCBmYTY4MmQ0YzQzOGUuLjM3OTAyNTUxNDkwYSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9ta2Rpci5jCiArKysgYi9zcmMvYmFzaWMvbWtkaXIuYwotQEAgLTE0LDYgKzE0LDcgQEAKK0BAIC0xMyw2ICsxMyw3IEBACiAgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgogICNpbmNsdWRlICJzdGRpby11dGlsLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IG1rZGlyX3NhZmVfaW50ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBNa2RpckZsYWdzIGZsYWdzLCBta2Rpcl9mdW5jX3QgX21rZGlyKSB7CiAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotaW5kZXggMTE1YTE0OTRhMi4uMDdhMzRiZmQ1MyAxMDA2NDQKK2luZGV4IGUwMDk0YjBmMzcwYS4uMDBkYTY1MTgxMjRiIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotQEAgLTIwLDYgKzIwLDcgQEAKK0BAIC0xOCw2ICsxOCw3IEBACiAgI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgogICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBwYXJzZV9ib29sZWFuKGNvbnN0IGNoYXIgKnYpIHsKICAgICAgICAgIGlmICghdikKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMgYi9zcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMKLWluZGV4IDA5MTY5Y2Y5NjMuLmY0MTFiYTg5N2YgMTAwNjQ0CitpbmRleCAxYWY1ODcxN2M2ODYuLmMxMDIwZjQ2MTFkNCAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jCiBAQCAtMTUsNiArMTUsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCiAgI2luY2x1ZGUgInZpcnQuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBwcm9jX2NtZGxpbmUoY2hhciAqKnJldCkgewogICAgICAgICAgY29uc3QgY2hhciAqZTsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCi1pbmRleCA3YWFmOTViZmNlLi40MmNlNTNkNWFhIDEwMDY0NAoraW5kZXggN2FhZjk1YmZjZWQyLi5kYTdlODM2ZjE0M2UgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKIEBAIC0xMSw2ICsxMSw3IEBACiAgI2luY2x1ZGUgInByb2Nmcy11dGlsLmgiCiAgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBwcm9jZnNfdGFza3NfZ2V0X2xpbWl0KHVpbnQ2NF90ICpyZXQpIHsKICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKnZhbHVlID0gTlVMTDsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc2VsaW51eC11dGlsLmMgYi9zcmMvYmFzaWMvc2VsaW51eC11dGlsLmMKK2luZGV4IDEwOTVjYjQyNmNjZS4uODA2ZWY0YmQ5N2E5IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvc2VsaW51eC11dGlsLmMKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgInNlbGludXgtdXRpbC5oIgorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNpZiBIQVZFX1NFTElOVVgKKyBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkMoY29udGV4dF90LCBjb250ZXh0X2ZyZWUpOwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy90aW1lLXV0aWwuYyBiL3NyYy9iYXNpYy90aW1lLXV0aWwuYwotaW5kZXggMzAxOGU4MWFjYi4uNGUyYjNiNjZjMSAxMDA2NDQKK2luZGV4IDEwNTU4NGUyZTcyZi4uZWIwYmVkNDdkYWMzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvdGltZS11dGlsLmMKLUBAIC0yOCw2ICsyOCw3IEBACitAQCAtMjYsNiArMjYsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGNsb2NraWRfdCBtYXBfY2xvY2tfaWQoY2xvY2tpZF90IGMpIHsKICAKK2RpZmYgLS1naXQgYS9zcmMvYm9vdC9ibGVzcy1ib290LmMgYi9zcmMvYm9vdC9ibGVzcy1ib290LmMKK2luZGV4IGI5NmUxZjkyN2ZmZi4uY2JhOTc5YmFjYTNlIDEwMDY0NAorLS0tIGEvc3JjL2Jvb3QvYmxlc3MtYm9vdC5jCisrKysgYi9zcmMvYm9vdC9ibGVzcy1ib290LmMKK0BAIC0xOCw2ICsxOCw3IEBACisgI2luY2x1ZGUgInV0aWwuaCIKKyAjaW5jbHVkZSAidmVyYnMuaCIKKyAjaW5jbHVkZSAidmlydC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBjaGFyICoqYXJnX3BhdGggPSBOVUxMOworIAogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMgYi9zcmMvY29yZS9kYnVzLWNncm91cC5jCi1pbmRleCAyZjIzMTNjNTk5Li5jOTkzN2Y5ZDYyIDEwMDY0NAoraW5kZXggMjdkYzllNDNjM2UyLi5iMWE4MzAyMzYwMGIgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kYnVzLWNncm91cC5jCiArKysgYi9zcmMvY29yZS9kYnVzLWNncm91cC5jCiBAQCAtMTUsNiArMTUsNyBAQAogICNpbmNsdWRlICJmaWxlaW8uaCIKICAjaW5jbHVkZSAibGltaXRzLXV0aWwuaCIKICAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKLSBzdGF0aWMgQlVTX0RFRklORV9QUk9QRVJUWV9HRVRfRU5VTShwcm9wZXJ0eV9nZXRfY2dyb3VwX2RldmljZV9wb2xpY3ksIGNncm91cF9kZXZpY2VfcG9saWN5LCBDR3JvdXBEZXZpY2VQb2xpY3kpOworIEJVU19ERUZJTkVfUFJPUEVSVFlfR0VUKGJ1c19wcm9wZXJ0eV9nZXRfdGFza3NfbWF4LCAidCIsIFRhc2tzTWF4LCB0YXNrc19tYXhfcmVzb2x2ZSk7CiAgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworaW5kZXggZDhiYTNlNWQ5MjQxLi43MjllMTNmZGE2NGMgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgInVuaXQtcHJpbnRmLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dGY4LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgQlVTX0RFRklORV9QUk9QRVJUWV9HRVRfRU5VTShidXNfcHJvcGVydHlfZ2V0X2V4ZWNfb3V0cHV0LCBleGVjX291dHB1dCwgRXhlY091dHB1dCk7Cisgc3RhdGljIEJVU19ERUZJTkVfUFJPUEVSVFlfR0VUX0VOVU0ocHJvcGVydHlfZ2V0X2V4ZWNfaW5wdXQsIGV4ZWNfaW5wdXQsIEV4ZWNJbnB1dCk7CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGJ1cy11dGlsLmMgYi9zcmMvY29yZS9kYnVzLXV0aWwuYwotaW5kZXggNzg2MmJlYWFjYi4uMTlmNjk2OGNmZSAxMDA2NDQKK2luZGV4IDc4NjJiZWFhY2I2ZC4uM2IxZWE1M2E1ZjBkIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZGJ1cy11dGlsLmMKICsrKyBiL3NyYy9jb3JlL2RidXMtdXRpbC5jCiBAQCAtNyw2ICs3LDcgQEAKICAjaW5jbHVkZSAidW5pdC1wcmludGYuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgI2luY2x1ZGUgInVuaXQuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBidXNfcHJvcGVydHlfZ2V0X3RyaWdnZXJlZF91bml0KAogICAgICAgICAgICAgICAgICBzZF9idXMgKmJ1cywKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9leGVjdXRlLmMgYi9zcmMvY29yZS9leGVjdXRlLmMKK2luZGV4IDg5ZGJmNmZiZDJjMS4uOTc2MmRjNTc0NDNjIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvZXhlY3V0ZS5jCisrKysgYi9zcmMvY29yZS9leGVjdXRlLmMKK0BAIC04OCw2ICs4OCw3IEBACisgI2luY2x1ZGUgInVuaXQuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0bXAtd3RtcC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgSURMRV9USU1FT1VUX1VTRUMgKDUqVVNFQ19QRVJfU0VDKQorICNkZWZpbmUgSURMRV9USU1FT1VUMl9VU0VDICgxKlVTRUNfUEVSX1NFQykKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9rbW9kLXNldHVwLmMgYi9zcmMvY29yZS9rbW9kLXNldHVwLmMKLWluZGV4IGE5MWNmZWJjNjcuLmE0NTk2MTAxM2YgMTAwNjQ0CitpbmRleCAwOWNjZDYxM2UzMmMuLmY0ZTY0ZmEyODNlOSAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYwogKysrIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCiBAQCAtMTEsNiArMTEsNyBAQAotICNpbmNsdWRlICJrbW9kLXNldHVwLmgiCiAgI2luY2x1ZGUgIm1hY3JvLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAjaW5jbHVkZSAibWlzc2luZ190eXBlLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2lmIEhBVkVfS01PRAotICNpbmNsdWRlIDxsaWJrbW9kLmg+CisgI2luY2x1ZGUgIm1vZHVsZS11dGlsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc2VydmljZS5jIGIvc3JjL2NvcmUvc2VydmljZS5jCi1pbmRleCA3M2IzYzljMzE2Li5lZjc0ZjAwYTA4IDEwMDY0NAoraW5kZXggMTdmMjdhNGFiY2UzLi5lNWRjYzUzMmQwY2UgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9zZXJ2aWNlLmMKICsrKyBiL3NyYy9jb3JlL3NlcnZpY2UuYwotQEAgLTQzLDYgKzQzLDcgQEAKK0BAIC00MSw2ICs0MSw3IEBACiAgI2luY2x1ZGUgInVuaXQuaCIKICAjaW5jbHVkZSAidXRmOC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgY29uc3QgVW5pdEFjdGl2ZVN0YXRlIHN0YXRlX3RyYW5zbGF0aW9uX3RhYmxlW19TRVJWSUNFX1NUQVRFX01BWF0gPSB7CiAgICAgICAgICBbU0VSVklDRV9ERUFEXSA9IFVOSVRfSU5BQ1RJVkUsCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jIGIvc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jCitpbmRleCAzNTg4NWRmYjQ3YzQuLmJiOWYwNjYwYTZhMCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlZHVtcC9jb3JlZHVtcC12YWN1dW0uYworKysrIGIvc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBERUZBVUxUX01BWF9VU0VfTE9XRVIgKHVpbnQ2NF90KSAoMVVMTCoxMDI0VUxMKjEwMjRVTEwpICAgICAgICAgICAvKiAxIE1pQiAqLworICNkZWZpbmUgREVGQVVMVF9NQVhfVVNFX1VQUEVSICh1aW50NjRfdCkgKDRVTEwqMTAyNFVMTCoxMDI0VUxMKjEwMjRVTEwpICAgLyogNCBHaUIgKi8KK2RpZmYgLS1naXQgYS9zcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jIGIvc3JjL2pvdXJuYWwtcmVtb3RlL2pvdXJuYWwtcmVtb3RlLW1haW4uYworaW5kZXggODhlNDJkM2E5ODRiLi4wZjA4Mzc2ZTUzOTkgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jCisrKysgYi9zcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jCitAQCAtMjIsNiArMjIsNyBAQAorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXRhYmxlLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIFBSSVZfS0VZX0ZJTEUgQ0VSVElGSUNBVEVfUk9PVCAiL3ByaXZhdGUvam91cm5hbC1yZW1vdGUucGVtIgorICNkZWZpbmUgQ0VSVF9GSUxFICAgICBDRVJUSUZJQ0FURV9ST09UICIvY2VydHMvam91cm5hbC1yZW1vdGUucGVtIgogZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWxjdGwuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWxjdGwuYwotaW5kZXggNmQ2YmIxY2Y2My4uNjY2NjM0OWEzNSAxMDA2NDQKK2luZGV4IGU1ZmVlYzgzYmNlNi4uYzNhZWMxZTIxOWQ3IDEwMDY0NAogLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jCiArKysgYi9zcmMvam91cm5hbC9qb3VybmFsY3RsLmMKLUBAIC03MCw2ICs3MCw3IEBACitAQCAtNjksNiArNjksNyBAQAogICNpbmNsdWRlICJ1bml0LW5hbWUuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgI2luY2x1ZGUgInZhcmxpbmsuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgREVGQVVMVF9GU1NfSU5URVJWQUxfVVNFQyAoMTUqVVNFQ19QRVJfTUlOVVRFKQorICNkZWZpbmUgUFJPQ0VTU19JTk9USUZZX0lOVEVSVkFMIDEwMjQgICAvKiBFdmVyeSAxLDAyNCBtZXNzYWdlcyBwcm9jZXNzZWQgKi8KK2RpZmYgLS1naXQgYS9zcmMvam91cm5hbC9zZC1qb3VybmFsLmMgYi9zcmMvam91cm5hbC9zZC1qb3VybmFsLmMKK2luZGV4IDNmYTk4ZGZkYTIzNy4uZTY1NWQ3N2U3MTRhIDEwMDY0NAorLS0tIGEvc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jCisrKysgYi9zcmMvam91cm5hbC9zZC1qb3VybmFsLmMKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAic3lzbG9nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIEpPVVJOQUxfRklMRVNfTUFYIDcxNjgKICAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCi1pbmRleCBlYjAyOWU0NDUzLi5mMzFmZTlkNWE4IDEwMDY0NAoraW5kZXggNzMxMjdkZmUwMjUzLi5jYzg2MzVkZWE1OTEgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKIEBAIC0yMSw2ICsyMSw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBpbnQgbWVzc2FnZV9hcHBlbmRfYmFzaWMoc2RfYnVzX21lc3NhZ2UgKm0sIGNoYXIgdHlwZSwgY29uc3Qgdm9pZCAqcCwgY29uc3Qgdm9pZCAqKnN0b3JlZCk7CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYwotaW5kZXggYWU2NDNjYWNjNy4uMWI3NTIyNzFhNSAxMDA2NDQKK2luZGV4IDZkMTQwMzQ4ZWM0Yy4uOTEyNmI4ODAxYmM1IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jCiBAQCAtMTMsNiArMTMsNyBAQAogICNpbmNsdWRlICJzZXQuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGludCBub2RlX3Z0YWJsZV9nZXRfdXNlcmRhdGEoCiAgICAgICAgICAgICAgICAgIHNkX2J1cyAqYnVzLAorZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLXNvY2tldC5jCitpbmRleCAxOGQzMGQwMTBhMjAuLmJlMmFiNzAzZjhlZCAxMDA2NDQKKy0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dGY4LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCisgCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCitpbmRleCA3YWQwMzY4MGY0OGQuLmI5ZDIxODFlNDkxMCAxMDA2NDQKKy0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCitAQCAtNDEsNiArNDEsNyBAQAorICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgbG9nX2RlYnVnX2J1c19tZXNzYWdlKG0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMKLWluZGV4IDhkZTBhODU5ZWUuLjRmZDBhMmU2OTIgMTAwNjQ0CitpbmRleCA4ZGUwYTg1OWVlOTQuLjU4MDQ0YjZiYTkwOCAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jCiBAQCAtMTQsNiArMTQsNyBAQAogICNpbmNsdWRlICJtaXNzaW5nX3Jlc291cmNlLmgiCiAgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjZGVmaW5lIE1BWF9TSVpFICgyKjEwMjQqMTAyNCkKICAKIGRpZmYgLS1naXQgYS9zcmMvbG9jYWxlL2tleW1hcC11dGlsLmMgYi9zcmMvbG9jYWxlL2tleW1hcC11dGlsLmMKLWluZGV4IGY4YzM2Yzk0ZjUuLjQxZjU2MDZhZWEgMTAwNjQ0CitpbmRleCAzMDY2OWE5MzU5ZTUuLjY1NDRiMzcyMjA5OSAxMDA2NDQKIC0tLSBhL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYwogKysrIGIvc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jCi1AQCAtMjIsNiArMjIsNyBAQAorQEAgLTIxLDYgKzIxLDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBib29sIHN0YXJ0c3dpdGhfY29tbWEoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqcHJlZml4KSB7CiAgICAgICAgICBzID0gc3RhcnRzd2l0aChzLCBwcmVmaXgpOwogZGlmZiAtLWdpdCBhL3NyYy9sb2dpbi9wYW1fc3lzdGVtZC5jIGIvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMKLWluZGV4IDNmNzYyY2JiYzMuLjAwNWNmZWE2NTggMTAwNjQ0CitpbmRleCA4NGJlYTIxYWI3YmUuLjQ5NzIwYzdmNzQyZSAxMDA2NDQKIC0tLSBhL3NyYy9sb2dpbi9wYW1fc3lzdGVtZC5jCiArKysgYi9zcmMvbG9naW4vcGFtX3N5c3RlbWQuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAiaG9zdG5hbWUtdXRpbC5oIgorQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSAibG9jYWxlLXV0aWwuaCIKICAjaW5jbHVkZSAibG9naW4tdXRpbC5oIgogICNpbmNsdWRlICJtYWNyby5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgI2luY2x1ZGUgInBhbS11dGlsLmgiCiAgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKICAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0gI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jIGIvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMKLWluZGV4IDBiNWFmMzM1NjYuLjljODA4Y2QwMTQgMTAwNjQ0CitpbmRleCBiZWQxZTQyNjk3YzQuLmU0ODQ3YzJiZWVhMiAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jCiArKysgYi9zcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYwogQEAgLTEzLDYgKzEzLDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXRhYmxlLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIC8qCiAgICAjIC5uZXR3b3JrCiBkaWZmIC0tZ2l0IGEvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYyBiL3NyYy9uc3Bhd24vbnNwYXduLXNldHRpbmdzLmMKLWluZGV4IDNhOTk3MzY4MTMuLjI3OWZlYTRkODggMTAwNjQ0CitpbmRleCA1ZmI1YjQ5YmJjYzMuLjc4NWNjYzJkYTMwNyAxMDA2NDQKIC0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLXNldHRpbmdzLmMKICsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLXNldHRpbmdzLmMKIEBAIC0xNiw2ICsxNiw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIFNldHRpbmdzICpzZXR0aW5nc19uZXcodm9pZCkgewogICAgICAgICAgU2V0dGluZ3MgKnM7CitkaWZmIC0tZ2l0IGEvc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMgYi9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYworaW5kZXggMzY0MzU2ZGE1NjIyLi40N2Q0ZWE0NGU0MGYgMTAwNjQ0CistLS0gYS9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYworKysrIGIvc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMKK0BAIC0xOSw2ICsxOSw3IEBACisgI2luY2x1ZGUgInNpZ25hbC11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIE5TU19HRVRIT1NUQllOQU1FX1BST1RPVFlQRVMobXltYWNoaW5lcyk7CisgTlNTX0dFVFBXX1BST1RPVFlQRVMobXltYWNoaW5lcyk7CitkaWZmIC0tZ2l0IGEvc3JjL3BvcnRhYmxlL3BvcnRhYmxlLmMgYi9zcmMvcG9ydGFibGUvcG9ydGFibGUuYworaW5kZXggZTE4ODI2YWIyNjg1Li5kOWY0YjgxZDg5MzcgMTAwNjQ0CistLS0gYS9zcmMvcG9ydGFibGUvcG9ydGFibGUuYworKysrIGIvc3JjL3BvcnRhYmxlL3BvcnRhYmxlLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBjb25zdCBjaGFyIHByb2ZpbGVfZGlyc1tdID0gQ09ORl9QQVRIU19OVUxTVFIoInN5c3RlbWQvcG9ydGFibGUvcHJvZmlsZSIpOworIAorZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYyBiL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworaW5kZXggZjIwZThjNDRiOGJjLi45ZjZjNGU4ZjQ5YTcgMTAwNjQ0CistLS0gYS9zcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMKKysrKyBiL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworQEAgLTMzLDYgKzMzLDcgQEAKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisgI2luY2x1ZGUgInZlcmJzLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGludCBhcmdfZmFtaWx5ID0gQUZfVU5TUEVDOworIHN0YXRpYyBpbnQgYXJnX2lmaW5kZXggPSAwOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYyBiL3NyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYworaW5kZXggYjIxZmUzOTMyNjVmLi5hZjI2NDAwMDVjMWQgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2J1cy11bml0LXByb2NzLmMKKysrKyBiL3NyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYworQEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAic29ydC11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdHJ1Y3QgQ0dyb3VwSW5mbyB7CisgICAgICAgICBjaGFyICpjZ3JvdXBfcGF0aDsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYyBiL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jCitpbmRleCAyOGQ4NTk0NGE4YTcuLjQ3NDNhODRhNDE3ZSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jCisrKysgYi9zcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYworQEAgLTM0LDYgKzM0LDcgQEAKKyAjaW5jbHVkZSAidW5pdC1kZWYuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBpbnQgYnVzX3BhcnNlX3VuaXRfaW5mbyhzZF9idXNfbWVzc2FnZSAqbWVzc2FnZSwgVW5pdEluZm8gKnUpIHsKKyAgICAgICAgIGFzc2VydChtZXNzYWdlKTsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2J1cy11dGlsLmMgYi9zcmMvc2hhcmVkL2J1cy11dGlsLmMKK2luZGV4IDhlNmE2ZTJjZTJkZS4uMGNiZjRiMTk5N2RmIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9idXMtdXRpbC5jCisrKysgYi9zcmMvc2hhcmVkL2J1cy11dGlsLmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgaW50IG5hbWVfb3duZXJfY2hhbmdlX2NhbGxiYWNrKHNkX2J1c19tZXNzYWdlICptLCB2b2lkICp1c2VyZGF0YSwgc2RfYnVzX2Vycm9yICpyZXRfZXJyb3IpIHsKKyAgICAgICAgIHNkX2V2ZW50ICplID0gdXNlcmRhdGE7CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMgYi9zcmMvc2hhcmVkL2Rucy1kb21haW4uYwotaW5kZXggZjYyYWQwYTBmNS4uZjFhMjdlMTU4ZCAxMDA2NDQKK2luZGV4IGI4MTI2NjUzMTVmNi4uOGU2OGY3ZjhmYzZjIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMKICsrKyBiL3NyYy9zaGFyZWQvZG5zLWRvbWFpbi5jCi1AQCAtMjQsNiArMjQsNyBAQAorQEAgLTIzLDYgKzIzLDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ1dGY4LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgZG5zX2xhYmVsX3VuZXNjYXBlKGNvbnN0IGNoYXIgKipuYW1lLCBjaGFyICpkZXN0LCBzaXplX3Qgc3osIEROU0xhYmVsRmxhZ3MgZmxhZ3MpIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKm47CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMgYi9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYwotaW5kZXggN2M0ZmM3MDIxZC4uYTZmZjIyMTRkZiAxMDA2NDQKK2luZGV4IDdjNGZjNzAyMWRlYy4uM2ZiYWY1YTYzOTY5IDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMKICsrKyBiL3NyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jCiBAQCAtMTQsNiArMTQsNyBAQAogICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInVuYWxpZ25lZC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgZW51bSB7CiAgICAgICAgICBJTVBPUlRFUl9TVEFURV9MSU5FID0gMCwgICAgLyogd2FpdGluZyB0byByZWFkLCBvciByZWFkaW5nIGxpbmUgKi8KIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jIGIvc3JjL3NoYXJlZC9sb2dzLXNob3cuYwotaW5kZXggYjYxNWM3MGRmZi4uNzViMjZlOWMyMSAxMDA2NDQKK2luZGV4IDJiZmQwYjYwYzI2Yi4uNmExYmIzYTA3NjBmIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9sb2dzLXNob3cuYwogKysrIGIvc3JjL3NoYXJlZC9sb2dzLXNob3cuYwogQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgLyogdXAgdG8gdGhyZWUgbGluZXMgKGVhY2ggdXAgdG8gMTAwIGNoYXJhY3RlcnMpIG9yIDMwMCBjaGFyYWN0ZXJzLCB3aGljaGV2ZXIgaXMgbGVzcyAqLwogICNkZWZpbmUgUFJJTlRfTElORV9USFJFU0hPTEQgMwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGFnZXIuYyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotaW5kZXggN2MyMGIxMDBiNC4uZTQyMDlkM2E5NSAxMDA2NDQKK2luZGV4IDFmZTlkYjE3OTE3Ni4uNjc5NTRiNWNhYjkzIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCiArKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLUBAIC0yNSw2ICsyNSw3IEBACitAQCAtMjMsNiArMjMsNyBAQAogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIHBpZF90IHBhZ2VyX3BpZCA9IDA7CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYXRoLWxvb2t1cC5jIGIvc3JjL3NoYXJlZC9wYXRoLWxvb2t1cC5jCi1pbmRleCA2YmYwZmYwMzE2Li5mNmM4MDA5Y2QyIDEwMDY0NAoraW5kZXggNWIxNjIwOTc0NTM2Li4wZTdjZDFjMmFmMTIgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMKICsrKyBiL3NyYy9zaGFyZWQvcGF0aC1sb29rdXAuYwotQEAgLTIwLDYgKzIwLDcgQEAKK0BAIC0xOSw2ICsxOSw3IEBACiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHhkZ191c2VyX3J1bnRpbWVfZGlyKGNoYXIgKipyZXQsIGNvbnN0IGNoYXIgKnN1ZmZpeCkgewogICAgICAgICAgY29uc3QgY2hhciAqZTsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotaW5kZXggN2NiN2Q4YTQ3Ny4uOGIxMmI5MTA4NCAxMDA2NDQKK2luZGV4IDdjYjdkOGE0NzdlOS4uOGU3ZDdmOWU3Y2E2IDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwogKysrIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwogQEAgLTksNiArOSw3IEBACiAgI2luY2x1ZGUgInNvcnQtdXRpbC5oIgogICNpbmNsdWRlICJ1aWQtcmFuZ2UuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgYm9vbCB1aWRfcmFuZ2VfaW50ZXJzZWN0KFVpZFJhbmdlICpyYW5nZSwgdWlkX3Qgc3RhcnQsIHVpZF90IG5yKSB7CiAgICAgICAgICBhc3NlcnQocmFuZ2UpOwogZGlmZiAtLWdpdCBhL3NyYy9zb2NrZXQtcHJveHkvc29ja2V0LXByb3h5ZC5jIGIvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMKLWluZGV4IGFiYmJjOWYyZDYuLjYxNzliNTg1MWUgMTAwNjQ0CitpbmRleCAyZWU2ZmMyZjBhNmEuLjRhOTkzNGY5YzE0ZCAxMDA2NDQKIC0tLSBhL3NyYy9zb2NrZXQtcHJveHkvc29ja2V0LXByb3h5ZC5jCiArKysgYi9zcmMvc29ja2V0LXByb3h5L3NvY2tldC1wcm94eWQuYwotQEAgLTI4LDYgKzI4LDcgQEAKK0BAIC0yNiw2ICsyNiw3IEBACiAgI2luY2x1ZGUgInNvY2tldC11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgQlVGRkVSX1NJWkUgKDI1NiAqIDEwMjQpCiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKLWluZGV4IDUyMjE3NDI5YjEuLmEwNWU3NzgyZjYgMTAwNjQ0CitpbmRleCA1MjIxNzQyOWIxNTQuLjcwNzA4ZGVkZjMxOCAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKICsrKyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKIEBAIC02LDYgKzYsNyBAQAogICNpbmNsdWRlICJoZXhkZWNvY3QuaCIKICAjaW5jbHVkZSAibWFjcm8uaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyB2b2lkIHRlc3RfaGV4Y2hhcih2b2lkKSB7CiAgICAgICAgICBhc3NlcnRfc2UoaGV4Y2hhcigweGEpID09ICdhJyk7CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1wYXRoX2lkLmMKLWluZGV4IGU4ZjFjZTEzNTQuLjg2OTNjYjAyYTQgMTAwNjQ0CitpbmRleCBjYTM4ZjU2MDg3OTEuLjlkOGNmNGQyODA3YiAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1wYXRoX2lkLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1wYXRoX2lkLmMKLUBAIC0yMyw2ICsyMyw3IEBACitAQCAtMjIsNiArMjIsNyBAQAogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInN5c2V4aXRzLmgiCiAgI2luY2x1ZGUgInVkZXYtYnVpbHRpbi5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgX3ByaW50Zl8oMiwzKQogIHN0YXRpYyB2b2lkIHBhdGhfcHJlcGVuZChjaGFyICoqcGF0aCwgY29uc3QgY2hhciAqZm10LCAuLi4pIHsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWV2ZW50LmMgYi9zcmMvdWRldi91ZGV2LWV2ZW50LmMKLWluZGV4IDhjZmEyY2RmMjMuLmIwNjcwYzc3ZWMgMTAwNjQ0CitpbmRleCBlYjUxMTM5ZTUxOWMuLjk3N2NjMTZlOWQ3YyAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXYtZXZlbnQuYwogKysrIGIvc3JjL3VkZXYvdWRldi1ldmVudC5jCi1AQCAtMzUsNiArMzUsNyBAQAorQEAgLTM0LDYgKzM0LDcgQEAKICAjaW5jbHVkZSAidWRldi11dGlsLmgiCiAgI2luY2x1ZGUgInVkZXYtd2F0Y2guaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICB0eXBlZGVmIHN0cnVjdCBTcGF3biB7CiAgICAgICAgICBzZF9kZXZpY2UgKmRldmljZTsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LXJ1bGVzLmMgYi9zcmMvdWRldi91ZGV2LXJ1bGVzLmMKLWluZGV4IDE2NDJmMTA1MzUuLmZlMmFhNzU0NzggMTAwNjQ0CitpbmRleCBiOWIzNTBkMWVmN2EuLjJjMTE0Y2M3NzU3MiAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXYtcnVsZXMuYwogKysrIGIvc3JjL3VkZXYvdWRldi1ydWxlcy5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJ1ZGV2LWV2ZW50LmgiCitAQCAtMzAsNiArMzAsNyBAQAogICNpbmNsdWRlICJ1ZGV2LXJ1bGVzLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgI2luY2x1ZGUgInZpcnQuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjZGVmaW5lIFJVTEVTX0RJUlMgKGNvbnN0IGNoYXIqIGNvbnN0KikgQ09ORl9QQVRIU19TVFJWKCJ1ZGV2L3J1bGVzLmQiKQogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKaW5kZXggNmQ3M2Q3MS4uOTE0MmQ3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKK0Zyb20gNDc4MTgwNTIxMjFkMTM1NjMyZjVlNDZjMzY5ZTNlNDcwNmEwZjllMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI2IE9jdCAyMDE3IDIyOjEwOjQyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCiAKIEZpeGVzCiAvcGF0aC90by9zeXN0ZW1kL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL25ldGluZXQvaWZfZXRoZXIuaDoxMDE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKQEAgLTI2LDExICsyOSwxNSBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jICB8IDEgLQogIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCiAgc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jICAgICAgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi9icmlkZ2UuYyAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmICAgICB8IDEgKwogIHNyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYyAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jICAgICAgICB8IDEgKwpAQCAtMzgsMjYgKzQ1LDI3IEBACiAgc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYyAgICAgICAgICAgICAgfCAyICstCiAgc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jICAgICAgICAgICAgICAgfCAyICstCiAgc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMgICAgICAgICB8IDEgKwogIHNyYy9zaGFyZWQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuaCAgICAgICAgICAgICAgICAgfCAxICsKICBzcmMvdWRldi9uZXQvbGluay1jb25maWcuYyAgICAgICAgICAgICAgICB8IDEgKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMSArCi0gMTUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyAxOSBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYyBiL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMKLWluZGV4IGQ3YTUzNDljNzAuLjY4YjQxZGZiNmMgMTAwNjQ0CitpbmRleCBlYWMyZTcyNWNjZTcuLjFiZWFlN2JhOTFjYyAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMKLUBAIC02LDcgKzYsNiBAQAorQEAgLTUsNyArNSw2IEBACisgCiAgI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgogICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIC0jaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2luZmluaWJhbmQuaD4KICAKICAjaW5jbHVkZSAic2QtZGhjcDYtY2xpZW50LmgiCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotaW5kZXggZGU5YjhiMjFhYi4uZjY0ZjY1MDBmNyAxMDA2NDQKK2luZGV4IGUzNTEyN2E0Y2QyZS4uNGY2YWQ5ZWY1ODg2IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCiBAQCAtMyw2ICszLDcgQEAKQEAgLTY5LDE5ICs3Nyw0MSBAQAogICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CiAgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgogZGlmZiAtLWdpdCBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLWluZGV4IDBkNThiNWViOGIuLjAxMDkzYzFmNjIgMTAwNjQ0CitpbmRleCBhMjk5MDQ1MmFmMTcuLjVhZjM1MDg4M2MyOCAxMDA2NDQKIC0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCiArKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotQEAgLTQsNiArNCw3IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTMsNiArMyw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHN5cy9tb3VudC5oPgogICNpbmNsdWRlIDxzeXMvd2FpdC5oPgogKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CiAgCiAgLyogV2hlbiB3ZSBpbmNsdWRlIGxpYmdlbi5oIGJlY2F1c2Ugd2UgbmVlZCBkaXJuYW1lKCkgd2UgaW1tZWRpYXRlbHkKICAgKiB1bmRlZmluZSBiYXNlbmFtZSgpIHNpbmNlIGxpYmdlbi5oIGRlZmluZXMgaXQgYXMgYSBtYWNybyB0byB0aGUgUE9TSVgKK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L2JvbmQuYworaW5kZXggOGRmMzllMzU4NDNmLi44ZDY5Nzg5NGY5NzAgMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jCitAQCAtMSw1ICsxLDYgQEAKKyAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCisgCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJib25kLmgiCisgI2luY2x1ZGUgImNvbmYtcGFyc2VyLmgiCitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jCitpbmRleCA2YjhmOTk0NDYxMmUuLjdmODFlYzI1YzQwNyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9icmlkZ2UuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jCitAQCAtMSw1ICsxLDYgQEAKKyAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCisgCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgCisgI2luY2x1ZGUgImJyaWRnZS5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYyBiL3NyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYwotaW5kZXggY2YyODFlNzVhNi4uMjY5ZGM2MThmZiAxMDA2NDQKK2luZGV4IDdkMWZlYzNhZmU2ZC4uZTk0OGEzMzUzMzZkIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jCiArKysgYi9zcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtOTEsOCArMTIxLDIwIEBACiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfbWFjc2VjLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZiBiL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYKK2luZGV4IDA5YTVmNDgyMmUwMy4uODczMjk5YjFmOThhIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZgorKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZgorQEAgLTIsNiArMiw3IEBACisgI2lmIF9fR05VQ19fID49IDcKKyBfUHJhZ21hKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdpbXBsaWNpdC1mYWxsdGhyb3VnaFwiIikKKyAjZW5kaWYKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSAiYm9uZC5oIgorICNpbmNsdWRlICJicmlkZ2UuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMKLWluZGV4IDc3MzViNDU1YjcuLmVkNGVkYTRhNDQgMTAwNjQ0CitpbmRleCBmODEyMWE0OGVkOTIuLjQzN2Y0MTFjNjFlOCAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTEwMyw3ICsxNDUsNyBAQAogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwotaW5kZXggYzNjNWQ1MzVhYy4uZWJlYTQwOGM4OSAxMDA2NDQKK2luZGV4IDQxZjA5Mjg3ZjJiNy4uYjY3Y2U0ZmM4ODQ0IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCiBAQCAtNCw2ICs0LDcgQEAKQEAgLTExNSwzMyArMTU3LDM0IEBACiAgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcC1jb21tb24uYwotaW5kZXggNjI2Yjk3NTgzOS4uNDJmZTkyZjMyMCAxMDA2NDQKK2luZGV4IDg2NjRkOGNkYzBkNC4uZTlmOTFmNzRjMWExIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcC1jb21tb24uYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcC1jb21tb24uYwotQEAgLTEsNiArMSw3IEBACi0gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLwotIAorQEAgLTQsNiArNCw3IEBACisgI2luY2x1ZGUgImVzY2FwZS5oIgorICNpbmNsdWRlICJpbi1hZGRyLXV0aWwuaCIKICAjaW5jbHVkZSAibmV0d29ya2QtZGhjcC1jb21tb24uaCIKICsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgogICNpbmNsdWRlICJuZXR3b3JrZC1uZXR3b3JrLmgiCiAgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXRhYmxlLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A0LmMKLWluZGV4IDY2Mjc3MGI1MGUuLmM2YWI2MmE5NGQgMTAwNjQ0CitpbmRleCAxM2UzZTMyZjQwZTguLjUzOTQzOTljOTE1MCAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A0LmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A0LmMKLUBAIC0xLDggKzEsOCBAQAorQEAgLTEsOSArMSw5IEBACiAgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLwogIAogKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgogICNpbmNsdWRlIDxsaW51eC9pZi5oPgogLSNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KICAKICAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJob3N0bmFtZS11dGlsLmgiCisgI2luY2x1ZGUgImRoY3AtY2xpZW50LWludGVybmFsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A2LmMKLWluZGV4IDhhZDczNmE4MmIuLmY0MWI0ZDgzNGUgMTAwNjQ0CitpbmRleCA3MzA0MjcwYzYwYjEuLjA5OTA2NGY2NDcxNSAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A2LmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A2LmMKIEBAIC0zLDkgKzMsOSBAQApAQCAtMTU2LDcgKzE5OSw3IEBACiAgCiAgI2luY2x1ZGUgInNkLWRoY3A2LWNsaWVudC5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotaW5kZXggZjViYjc4ODkwYS4uZjEzYTM2Yjc5MSAxMDA2NDQKK2luZGV4IDk5ZDRiMjljMzFlYy4uZThiNDY3ZDZhYzA5IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKIEBAIC0xLDggKzEsOCBAQApAQCAtMTcwLDcgKzIxMyw3IEBACiAgCiAgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMKLWluZGV4IDJiOGQwZWIyZmIuLjJmNzllZjI1Y2QgMTAwNjQ0CitpbmRleCAyZTcxNmIyOTFlOTcuLjU2ZjE4Y2VhNTdmZSAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTE4MCw4ICsyMjMsMTcgQEAKICAjaW5jbHVkZSA8bmV0L2lmLmg+CiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jIGIvc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jCitpbmRleCAyNWI5Mzk2Mzk3NzUuLjUzMGU0OTI4ODM1YyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYworKysrIGIvc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jCitAQCAtMSwzICsxLDQgQEAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJib25kLmgiCisgI2luY2x1ZGUgImRoY3A2LWludGVybmFsLmgiCisgI2luY2x1ZGUgImRoY3A2LXByb3RvY29sLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYyBiL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmMKLWluZGV4IGIwOTYxZGY3MmUuLjUzZmNiYmQ4NGIgMTAwNjQ0CitpbmRleCAwMGE3MWQ2NGE2MzguLjQ1OTNlODkxMjBiOCAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmMKICsrKyBiL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTkyLDE5ICsyNDQsMTkgQEAKICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuaAotaW5kZXggOGIzMmIyNDNmMy4uMjYyYjgxOTk3NiAxMDA2NDQKK2luZGV4IGMxZDVkNzU5MGVmOS4uYjNlMDE4YmY3NmU5IDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuaAogKysrIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuaAotQEAgLTIsNiArMiw3IEBACi0gI3ByYWdtYSBvbmNlCitAQCAtMyw2ICszLDcgQEAKICAKICAjaW5jbHVkZSA8bWFjcm8uaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogIAogICNpbmNsdWRlICJjb25mLXBhcnNlci5oIgogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jIGIvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMKLWluZGV4IGQ0NGFmNjRkNWUuLmZkMDUyZjE1OTEgMTAwNjQ0CitpbmRleCAwMzMyZTk5MjY5YzkuLmZmM2FlYWQ0YTc3OSAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jCiArKysgYi9zcmMvdWRldi9uZXQvbGluay1jb25maWcuYwogQEAgLTEsNSArMSw2IEBACkBAIC0yMTUsNyArMjY3LDcgQEAKICAjaW5jbHVkZSA8bmV0aW5ldC9ldGhlci5oPgogIAogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKLWluZGV4IGVlM2NhOWZhMzguLjlhYTRlODI4NzQgMTAwNjQ0CitpbmRleCBlZTNjYTlmYTM4NDYuLjlhYTRlODI4NzQxZiAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCiArKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwogQEAgLTEsNSArMSw2IEBACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoCmluZGV4IDM0ZjdmNWYuLjU4MGM0OWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSBmOGEyMzliMTgyMTU4Y2EwYTUzN2JhMDUzY2IwZTZiYWQ5YzNhMmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3N2Y5ODcyN2YxZDE5YThmYjMyN2I1NWM5MmYxYTllZTdiODU5ZTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNDo1NjoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDA3LzI0XSBkb24ndCBmYWlsIGlmIEdMT0JfQlJBQ0UgYW5kIEdMT0JfQUxURElSRlVOQyBpcyBub3QgCi0gZGVmaW5lZAorU3ViamVjdDogW1BBVENIXSBkb24ndCBmYWlsIGlmIEdMT0JfQlJBQ0UgYW5kIEdMT0JfQUxURElSRlVOQyBpcyBub3QgZGVmaW5lZAogCiBJZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2Vzbid0IHByb3ZpZGUgYnJhY2UKIGV4cGFuc2lvbiB1c2VycyBqdXN0IHdvbid0IGdldCBpdC4KQEAgLTE3LDYgKzE2LDcgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2dsb2ItdXRpbC5jICAgICB8IDEyICsrKysrKysrKysrKwogIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNiArKysrKysrKysrKysrKysrCkBAIC0yNCwxMCArMjQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotaW5kZXggYjMzNWFmOGQ5Ny4uMmNkZmMxMWYxNiAxMDA2NDQKK2luZGV4IGUzYWE2YzJlMTUyYi4uMzgwNzBiNzljODNhIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLUBAIC0xNCw2ICsxNCwxMiBAQAorQEAgLTEyLDYgKzEyLDEyIEBACiAgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgCkBAIC00MCw3ICs0MCw3IEBACiAgc3RhdGljIHZvaWQgY2xvc2VkaXJfd3JhcHBlcih2b2lkKiB2KSB7CiAgICAgICAgICAodm9pZCkgY2xvc2VkaXIodik7CiAgfQotQEAgLTIxLDYgKzI3LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VkaXJfd3JhcHBlcih2b2lkKiB2KSB7CitAQCAtMTksNiArMjUsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKICBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewogICAgICAgICAgaW50IGs7CiAgCkBAIC00OCw3ICs0OCw3IEBACiAgICAgICAgICAvKiBXZSB3YW50IHRvIHNldCBHTE9CX0FMVERJUkZVTkMgb3Vyc2VsdmVzLCBkb24ndCBhbGxvdyBpdCB0byBiZSBzZXQuICovCiAgICAgICAgICBhc3NlcnQoIShmbGFncyAmIEdMT0JfQUxURElSRlVOQykpOwogIAotQEAgLTM0LDkgKzQxLDE0IEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CitAQCAtMzIsOSArMzksMTQgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKICAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX2xzdGF0ID0gbHN0YXQ7CiAgICAgICAgICBpZiAoIXBnbG9iLT5nbF9zdGF0KQogICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfc3RhdCA9IHN0YXQ7CkBAIC02NCwxMCArNjQsMTAgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAgICAgICAgICBpZiAoayA9PSBHTE9CX05PU1BBQ0UpCiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLWluZGV4IGI0ZjQxNDQ1ZmUuLmYwZDQ3NGVkMTQgMTAwNjQ0CitpbmRleCA2NjdkMTUzMzVmYmYuLjc2YTg0NDQzYWFjZiAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKICsrKyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKLUBAIC0xMyw2ICsxMywxMiBAQAorQEAgLTEyLDYgKzEyLDEyIEBACiAgI2luY2x1ZGUgInJtLXJmLmgiCiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgogIApAQCAtODAsNyArODAsNyBAQAogIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgewogICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7CiAgICAgICAgICBpbnQgZmQgPSAtMTsKLUBAIC00MCwxMSArNDYsMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CitAQCAtMzksMTEgKzQ1LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgewogICAgICAgICAgY29uc3QgY2hhciAqZm47CiAgCiAgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICB9OwogIAogICAgICAgICAgaW50IHI7Ci1AQCAtNTIsMTEgKzYwLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworQEAgLTUxLDExICs1OSwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKICAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7CiAgCiAgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKQEAgLTExNSwxMCArMTE1LDEwIEBACiAgCiAgICAgICAgICAodm9pZCkgcm1fcmYodGVtcGxhdGUsIFJFTU9WRV9ST09UfFJFTU9WRV9QSFlTSUNBTCk7CiBkaWZmIC0tZ2l0IGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotaW5kZXggM2MzMDYxMmFmMS4uMTRiYzQyODA4NSAxMDA2NDQKK2luZGV4IDE5M2VkMGJjNzgxYi4uMmY5NGZkMmVmZDhmIDEwMDY0NAogLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKICsrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1AQCAtNjMsNiArNjMsMTIgQEAKK0BAIC01OCw2ICs1OCwxMiBAQAogICNpbmNsdWRlICJ1bWFzay11dGlsLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogIApAQCAtMTMxLDcgKzEzMSw3IEBACiAgLyogVGhpcyByZWFkcyBhbGwgZmlsZXMgbGlzdGVkIGluIC9ldGMvdG1wZmlsZXMuZC8/Ki5jb25mIGFuZCBjcmVhdGVzCiAgICogdGhlbSBpbiB0aGUgZmlsZSBzeXN0ZW0uIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBjcmVhdGUKICAgKiBwcm9wZXJseSBvd25lZCBkaXJlY3RvcmllcyBiZW5lYXRoIC90bXAsIC92YXIvdG1wLCAvcnVuLCB3aGljaCBhcmUKLUBAIC0xODUzLDcgKzE4NTksOSBAQCBmaW5pc2g6CitAQCAtMTg1MCw3ICsxODU2LDkgQEAgZmluaXNoOgogIAogIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbikgewogICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICB9OwogICAgICAgICAgaW50IHIgPSAwLCBrOwogICAgICAgICAgY2hhciAqKmZuOwotQEAgLTE4NzMsNyArMTg4MSw5IEBAIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbikgeworQEAgLTE4NzAsNyArMTg3OCw5IEBAIHN0YXRpYyBpbnQgZ2xvYl9pdGVtKEl0ZW0gKmksIGFjdGlvbl90IGFjdGlvbikgewogIAogIHN0YXRpYyBpbnQgZ2xvYl9pdGVtX3JlY3Vyc2l2ZWx5KEl0ZW0gKmksIGZkYWN0aW9uX3QgYWN0aW9uKSB7CiAgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaAppbmRleCBkNWYyMzQ5Li4xZjYxODkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZjZDE3Yzc1M2QyYzBhOTBmYzc5MWY2OWJiYzY5NGNiYzg1NTZhNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdjNDQwY2ZjNTNhYTUyYzlkYzkxYzNhOGMxMDViY2YzMTRjNTNhZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjAwOjA2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjRdIGFkZCBtaXNzaW5nIEZUV18gbWFjcm9zIGZvciBtdXNsCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBtaXNzaW5nIEZUV18gbWFjcm9zIGZvciBtdXNsCiAKIFRoaXMgaXMgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgbGlrZSBiZWxvdyBmb3IgbXVzbC4KIApAQCAtMTAsMTIgKzEwLDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCi1pbmRleCBjNDg3ZTY1Li4yMzYwMmViIDEwMDY0NAoraW5kZXggYzQ4N2U2NWU3YmRlLi4yMzYwMmViYmQ1MzMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogQEAgLTE5LDMgKzE5LDIzIEBAIHR5cGVkZWYgaW50ICgqY29tcGFyaXNvbl9mbl90KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CkBAIC00Miw2ICs0MywzIEBACiArI2lmbmRlZiBGVFdfU0tJUF9TSUJMSU5HUwogKyNkZWZpbmUgRlRXX1NLSVBfU0lCTElOR1MgMwogKyNlbmRpZgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKaW5kZXggOGJhY2QwMi4uNWVlNTAxZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSBmMWY0YjRmOTY4NGZlZDE4NWJmYThiOWVkNDA5Y2RmMjQxNjU3ZTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlZWQ3NDI3ZGI5OGNjMDFkYjdlOWIzNDc5NjU1ZDY4YjA0NGJjODViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNTowMzo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDEwLzI0XSBmaXggbWlzc2luZyBvZiBfX3JlZ2lzdGVyX2F0Zm9yayBmb3Igbm9uLWdsaWJjIGJ1aWxkcworU3ViamVjdDogW1BBVENIXSBmaXggbWlzc2luZyBvZiBfX3JlZ2lzdGVyX2F0Zm9yayBmb3Igbm9uLWdsaWJjIGJ1aWxkcwogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgNyArKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1pbmRleCA3OGNlNDNiLi5hZWMyZGFmIDEwMDY0NAoraW5kZXggNWRlMzY2ZjgzMGU4Li42NDRmNTNhZWUwMDUgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotQEAgLTIyLDYgKzIyLDkgQEAKK0BAIC0xOCw2ICsxOCw5IEBACiAgI2lmIEhBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSAogICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgogICNlbmRpZgpAQCAtMjQsNyArMjUsNyBAQAogIAogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCiAgI2luY2x1ZGUgImFyY2hpdGVjdHVyZS5oIgotQEAgLTExNjAsMTEgKzExNjMsMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKK0BAIC0xMTE2LDExICsxMTE5LDE1IEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CiAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICB9CiAgCkBAIC00MCw2ICs0MSwzIEBACiAgCiAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CiAgICAgICAgICBzdGF0aWMgYm9vbCBpbnN0YWxsZWQgPSBmYWxzZTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaAppbmRleCBkNmVkYTljLi5lNWQ5NTE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTNmODQ3YmQwMzM4ZDI3YWZmMzMzNWI0MjY2MWQ4YTRiNjZiOTY1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGFhOTEzNDdhZTk3NTA1MWRiZTRkZDJmOThhMWY0ZjQ1OWYyNjA0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MTI6NDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yNF0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CitTdWJqZWN0OiBbUEFUQ0hdIFVzZSB1aW50bWF4X3QgZm9yIGhhbmRsaW5nIHJsaW1fdAogCiBQUkl1ezMyLDY0fSBpcyBub3QgcmlnaHQgZm9ybWF0IHRvIHJlcHJlc2VudCBybGltX3QgdHlwZQogdGhlcmVmb3JlIHVzZSAlanUgYW5kIHR5cGVjYXN0IHRoZSBybGltX3QgdmFyaWFibGVzIHRvCkBAIC0yMCw2ICsyMCw3IEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogW1JlYmFzZWQgZm9yIHYyNDFdCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgIDggKy0tLS0tLS0KICBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDEwICsrKysrLS0tLS0KQEAgLTI3LDEwICsyOCwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLWluZGV4IGRlY2U1ZDMuLmRiYjg3YmMgMTAwNjQ0CitpbmRleCBjNDdmYTc2ZWE4ZmYuLjE0YTc4ZDlmNWZkMCAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotQEAgLTQyLDEzICs0Miw3IEBACitAQCAtMzIsMTMgKzMyLDcgQEAgYXNzZXJ0X2NjKHNpemVvZihnaWRfdCkgPT0gc2l6ZW9mKHVpbnQzMl90KSk7CiAgIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCiAgI2VuZGlmCiAgCkBAIC00NiwxMCArNDcsMTAgQEAKICAjaWYgU0laRU9GX0RFVl9UID09IDgKICAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotaW5kZXggNzRiM2EwMi4uYjAyYzAzYyAxMDA2NDQKK2luZGV4IDJkYzEzZWFiYzMwZC4uMDYzM2NjNjdmNDE3IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1AQCAtMzA3LDEzICszMDcsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKK0BAIC0zMDYsMTMgKzMwNiwxMyBAQCBpbnQgcmxpbWl0X2Zvcm1hdChjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybCwgY2hhciAqKnJldCkgewogICAgICAgICAgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZICYmIHJsLT5ybGltX21heCA+PSBSTElNX0lORklOSVRZKQogICAgICAgICAgICAgICAgICBzID0gc3RyZHVwKCJpbmZpbml0eSIpOwogICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkpCkBAIC02Nyw3ICs2OCw3IEBACiAgCiAgICAgICAgICBpZiAoIXMpCiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwotQEAgLTQwNCw3ICs0MDQsNyBAQCBpbnQgcmxpbWl0X25vZmlsZV9zYWZlKHZvaWQpIHsKK0BAIC00MDMsNyArNDAzLDcgQEAgaW50IHJsaW1pdF9ub2ZpbGVfc2FmZSh2b2lkKSB7CiAgCiAgICAgICAgICBybC5ybGltX2N1ciA9IEZEX1NFVFNJWkU7CiAgICAgICAgICBpZiAoc2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCkgPCAwKQpAQCAtNzcsMTAgKzc4LDEwIEBACiAgICAgICAgICByZXR1cm4gMTsKICB9CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1pbmRleCBhNzA4MjMxLi5lMmI4NzQ4IDEwMDY0NAoraW5kZXggOTc2MmRjNTc0NDNjLi40YTM0MjFiYjNlZTYgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKICsrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYwotQEAgLTQyMjAsOSArNDIyMCw5IEBAIHZvaWQgZXhlY19jb250ZXh0X2R1bXAoY29uc3QgRXhlY0NvbnRleHQgKmMsIEZJTEUqIGYsIGNvbnN0IGNoYXIgKnByZWZpeCkgeworQEAgLTQ1NjcsOSArNDU2Nyw5IEBAIHZvaWQgZXhlY19jb250ZXh0X2R1bXAoY29uc3QgRXhlY0NvbnRleHQgKmMsIEZJTEUqIGYsIGNvbnN0IGNoYXIgKnByZWZpeCkgewogICAgICAgICAgZm9yIChpID0gMDsgaSA8IFJMSU1fTkxJTUlUUzsgaSsrKQogICAgICAgICAgICAgICAgICBpZiAoYy0+cmxpbWl0W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXNMaW1pdCVzOiAiIFJMSU1fRk1UICJcbiIsCkBAIC05Miw2ICs5MywzIEBACiAgICAgICAgICAgICAgICAgIH0KICAKICAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaAppbmRleCA5MTQ1ODlkLi4wNDkwOTZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCkBAIC0xLDIyICsxLDIyIEBACi1Gcm9tIGQzZDY1ZDQwMzY2NzBjYmQ1MTI5ZmU1NWMwOWNhMzkxMjg2ZWY0YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYyZmFjNWUzZmYwZmNjZDMyOWNkYzQ5NjA1MjU4YjZkMGU1NzNhM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjI1OjIyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjRdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KLSBtdXNsCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4gbXVzbAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotaW5kZXggMzViMDg3Ni4uZTc4ZTdjYSAxMDA2NDQKK2luZGV4IDEwMjBlMGNiMzE1My4uYzY1MDYyZDI1NjJjIDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotQEAgLTQxLDggKzQxLDEwIEBAIGludCBtYWluKHZvaWQpIHsKK0BAIC00NCw4ICs0NCwxMCBAQCBpbnQgbWFpbih2b2lkKSB7CiAgICAgICAgICBpbmZvKHVuc2lnbmVkKTsKICAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7CiAgICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7CkBAIC0yNyw3ICsyNyw3IEBACiAgCiAgICAgICAgICBpbmZvKGZsb2F0KTsKICAgICAgICAgIGluZm8oZG91YmxlKTsKLUBAIC02MCw3ICs2Miw5IEBAIGludCBtYWluKHZvaWQpIHsKK0BAIC02Myw3ICs2NSw5IEBAIGludCBtYWluKHZvaWQpIHsKICAgICAgICAgIGluZm8oc3NpemVfdCk7CiAgICAgICAgICBpbmZvKHRpbWVfdCk7CiAgICAgICAgICBpbmZvKHVzZWNfdCk7CkBAIC0zNyw2ICszNywzIEBACiAgICAgICAgICBpbmZvKHBpZF90KTsKICAgICAgICAgIGluZm8odWlkX3QpOwogICAgICAgICAgaW5mbyhnaWRfdCk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKaW5kZXggZmQ0MDdmNi4uZWZlZWYwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDQ4YzYyOGY1MzJmNjAyNWMyZDE2NDZiNjgxOWNkODFlYjc4OWQ3ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU2Zjg3MTA3OGQ4ZDZmMDc2Yzg0ZjkwOGZhNTdhZjE1NDE3YWI4N2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogRGF0ZTogVHVlLCAxMCBPY3QgMjAxNyAxNDozMzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDE1LzI0XSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQorU3ViamVjdDogW1BBVENIXSBkb24ndCBwYXNzIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZyB0byBmYWNjZXNzYXQoKQogCiBBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodAogdGhpbmcgdG8gZG8gYW5kIGl0J3Mgbm90IHBvcnRhYmxlIChub3Qgc3VwcG9ydGVkIGJ5IG11c2wpLiBTZWU6CkBAIC0yNSwxNiArMjUsMTcgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2ZzLXV0aWwuaCAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KICBzcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIHwgIDYgKysrLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaCBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLWluZGV4IDdhZDAzMGIuLmQ0Y2IxZTkgMTAwNjQ0CitpbmRleCA3OGQ2OGJlOWZkODUuLmM1ZGM4NGQ0MTg2OCAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9mcy11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLUBAIC0zMiw3ICszMiwyNyBAQCBpbnQgZmNobW9kX29wYXRoKGludCBmZCwgbW9kZV90IG0pOworQEAgLTQwLDcgKzQwLDI3IEBAIGludCBmY2htb2Rfb3BhdGgoaW50IGZkLCBtb2RlX3QgbSk7CiAgCiAgaW50IGZkX3dhcm5fcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkKTsKICAKQEAgLTY0LDEwICs2NSwxMCBAQAogIGludCB0b3VjaF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgcGFyZW50cywgdXNlY190IHN0YW1wLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgbW9kZV90IG1vZGUpOwogIGludCB0b3VjaChjb25zdCBjaGFyICpwYXRoKTsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotaW5kZXggODlkN2E3ZC4uMzRiNGFkNSAxMDA2NDQKK2luZGV4IDY1NzQwN2RhMmQzNy4uZmJkNTc4MmQ4NGZjIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwogKysrIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotQEAgLTUzLDcgKzUzLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKK0BAIC01NCw3ICs1NCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOwogIAogICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7CkBAIC03Niw3ICs3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgCiAgICAgICAgICAgICAgICAgIGlmICh0YWJsZVtpXS50YXJnZXQpIHsKLUBAIC02MSw3ICs2MSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CitAQCAtNjIsNyArNjIsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewogIAogICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKQEAgLTg1LDcgKzg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLwotQEAgLTcyLDcgKzcyLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKK0BAIC03Myw3ICs3Myw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwogIApAQCAtOTQsNiArOTUsMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKaW5kZXggZDU1NjU2OS4uMTlhM2VlZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gYWY3NmM5NzNlNDE5MjkzNjBhNmUwMjFmMmZmOWE3ZmMxZDc5OTRlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWMzMzVlZjNiYjkwM2E3ZWFmMDU0MTAzY2M1MTQxMWU3MWU2NDQ4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDI3IE1heSAyMDE4IDA4OjM2OjQ0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjRdIERlZmluZSBnbGliYyBjb21wYXRpYmxlIGJhc2VuYW1lKCkgZm9yIG5vbi1nbGliYwotIHN5c3RlbXMKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKIAogRml4ZXMgYnVpbGRzIHdpdGggbXVzbCwgZXZlbiB0aG91Z2ggc3lzdGVtZCBpcyBhZGFtYW50IGFib3V0CiB1c2luZyBub24tcG9zaXggYmFzZW5hbWUgaW1wbGVtZW50YXRpb24sIHdlIGhhdmUgYSB3YXkgb3V0CkBAIC0xMCwyNSArOSwyNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KLSBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKyBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi1pbmRleCA3YTU1OGRmLi5lY2E3ZDRiIDEwMDY0NAoraW5kZXggNzYwY2NiNDQ1Y2QwLi4wZGYyMGYzODY0YjMgMTAwNjQ0CiAtLS0gYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwogKysrIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLUBAIC0xMSw2ICsxMSwxMCBAQAorQEAgLTExLDYgKzExLDExIEBACiAgI2luY2x1ZGUgPGxpYmdlbi5oPgogICN1bmRlZiBiYXNlbmFtZQogIAogKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2luY2x1ZGUgPHN0cmluZy5oPgogKyNkZWZpbmUgYmFzZW5hbWUoc3JjKSAoc3RycmNocihzcmMsJy8nKSA/IHN0cnJjaHIoc3JjLCcvJykrMSA6IHNyYykKICsjZW5kaWYKICsKICAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgogICNpbmNsdWRlICJidXMtY29tbW9uLWVycm9ycy5oIgogICNpbmNsdWRlICJidXMtaW50ZXJuYWwuaCIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCmluZGV4IDI0ZTI0ZTguLjE5MzRiNzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGM3YTRlZmI4YmNjYjUyZTE3MTRjMTUxOTI5YzIzZTEyYmRlNTliODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJiMjhhOWM4NzBiYjQ3ZGNkYjFjY2ViYWE4ZTNhNWE4NjczMGEyNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDQgSnVsIDIwMTggMTU6MDA6NDQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yNF0gRG8gbm90IGRpc2FibGUgYnVmZmVyaW5nIHdoZW4gd3JpdGluZyB0byBvb21fc2NvcmVfYWRqCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBkaXNhYmxlIGJ1ZmZlcmluZyB3aGVuIHdyaXRpbmcgdG8gb29tX3Njb3JlX2FkagogCiBPbiBtdXNsLCBkaXNhYmxpbmcgYnVmZmVyaW5nIHdoZW4gd3JpdGluZyB0byBvb21fc2NvcmVfYWRqIHdpbGwKIGNhdXNlIHRoZSBmb2xsb3dpbmcgZXJyb3IuCkBAIC0xOSwxNSArMTksMTYgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1pbmRleCBiMWMwOGZjYWRlLi4wYTdhMWY3ZDg5IDEwMDY0NAoraW5kZXggNjQ0ZjUzYWVlMDA1Li5hY2FmMTM1OTEzOTYgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotQEAgLTE0NzQsNyArMTQ3NCw3IEBAIGludCBzZXRfb29tX3Njb3JlX2FkanVzdChpbnQgdmFsdWUpIHsKK0BAIC0xNTAwLDcgKzE1MDAsNyBAQCBpbnQgc2V0X29vbV9zY29yZV9hZGp1c3QoaW50IHZhbHVlKSB7CiAgICAgICAgICBzcHJpbnRmKHQsICIlaSIsIHZhbHVlKTsKICAKICAgICAgICAgIHJldHVybiB3cml0ZV9zdHJpbmdfZmlsZSgiL3Byb2Mvc2VsZi9vb21fc2NvcmVfYWRqIiwgdCwKQEAgLTM1LDQgKzM2LDQgQEAKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9TVFJJTkdfRklMRV9WRVJJRllfT05fRkFJTFVSRSk7CiAgfQogIAotIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBpb3ByaW9fY2xhc3NfdGFibGVbXSA9IHsKKyBpbnQgcGlkZmRfZ2V0X3BpZChpbnQgZmQsIHBpZF90ICpyZXQpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaAppbmRleCA1OTAxNzcyLi44NGE0OTJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBmZmZiMjgxMDYxMWI0YTI2ZjVjNmMwOTU4MDkzYjViM2I3ZDRjZDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OTM4NzA1NDU0Y2Y0NmNmZThkZWFjOGNlNDU3ZDVkMjQzMmNiZWFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxMCBKdWwgMjAxOCAxNTo0MDoxNyArMDgwMAotU3ViamVjdDogW1BBVENIIDE4LzI0XSBkaXN0aW5ndWlzaCBYU0ktY29tcGxpYW50IHN0cmVycm9yX3IgZnJvbSBHTlUtc3BlY2lmaQorU3ViamVjdDogW1BBVENIXSBkaXN0aW5ndWlzaCBYU0ktY29tcGxpYW50IHN0cmVycm9yX3IgZnJvbSBHTlUtc3BlY2lmaQogIHN0cmVycm9yX3IKIAogWFNJLWNvbXBsaWFudCBzdHJlcnJvcl9yIGFuZCBHTlUtc3BlY2lmaSBzdHJlcnJvcl9yIGFyZSBkaWZmZXJlbnQuCkBAIC0xOCwxNiArMTgsMTcgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgICAgfCA1ICsrKysrCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNSArKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotaW5kZXggM2ZlYTkxMi4uNGYxZTU5MiAxMDA2NDQKK2luZGV4IDQzZWQ3NTZiZGE1My4uMjI3ZWE2NGRiYjQ4IDEwMDY0NAogLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKICsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1AQCAtMzM3LDcgKzMzNywxMiBAQCBzdGF0aWMgaW50IGZpbGxfaW92ZWNfcGVycm9yX2FuZF9zZW5kKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBza2lwLCBzdHJ1Y3QgaW92ZQorQEAgLTMzNiw3ICszMzYsMTIgQEAgc3RhdGljIGludCBmaWxsX2lvdmVjX3BlcnJvcl9hbmRfc2VuZChjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgc2tpcCwgc3RydWN0IGlvdmUKICAgICAgICAgICAgICAgICAgY2hhciogajsKICAKICAgICAgICAgICAgICAgICAgZXJybm8gPSAwOwpAQCAtNDEsNyArNDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZXJyb3JbU1RSTEVOKCJFUlJOTz0iKSArIERFQ0lNQUxfU1RSX01BWChpbnQpICsgMV07CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCi1pbmRleCBkYzk1MjM3Li5iZGRhMzBmIDEwMDY0NAoraW5kZXggZjc2MGYwZmRkMjFjLi4yOGE1MTU5YzQ0ODAgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwogQEAgLTM3OSw3ICszNzksMTIgQEAgc3RhdGljIHZvaWQgYnVzX2Vycm9yX3N0cmVycm9yKHNkX2J1c19lcnJvciAqZSwgaW50IGVycm9yKSB7CkBAIC01Nyw2ICs1OCwzIEBACiAgICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UgfHwgc3RybGVuKHgpID49IGsgLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBrICo9IDI7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKaW5kZXggMzVjYzY2Zi4uM2I4MDY0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDk2OWFiOWU2ODI0OWZkMzgzZjRiNTEzYjFjOTMwNmJkYWM0YWU5YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFjNGM3M2E3Y2MwZmI1OWViNjhhYjcwNjk5ZjdmNTFhZjVjMTYzYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjE4OjAwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjRdIEhpZGUgX19zdGFydF9CVVNfRVJST1JfTUFQIGFuZCBfX3N0b3BfQlVTX0VSUk9SX01BUAorU3ViamVjdDogW1BBVENIXSBIaWRlIF9fc3RhcnRfQlVTX0VSUk9SX01BUCBhbmQgX19zdG9wX0JVU19FUlJPUl9NQVAKIAogZm9yIGN1cnJlbnRseSB1bmtub3duIHJlYXNvbnMgdGhleSBnZXQgZXhwb3J0ZWQgdG8gdGhlIHNoYXJlZCBsaWJyaWVzCiBldmVuIHdpdGhvdXQgYmVpbmcgbGlzdGVkIGluIHRoZSBzeW0gZmlsZQpAQCAtMTEsMTIgKzExLDEzIEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogW1JlYmFzZWQgZm9yIHYyNDFdCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKLWluZGV4IGJkZGEzMGYuLmUyMTg1M2MgMTAwNjQ0CitpbmRleCAyOGE1MTU5YzQ0ODAuLjk2MmE0ZGUxMGM1NiAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiBAQCAtNTQsOCArNTQsOCBAQCBCVVNfRVJST1JfTUFQX0VMRl9SRUdJU1RFUiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIGJ1c19zdGFuZGFyZF9lcnJvcnNbXSA9IHsKQEAgLTMwLDYgKzMxLDMgQEAKICAKICAvKiBBZGRpdGlvbmFsIG1hcHMgcmVnaXN0ZXJlZCB3aXRoIHNkX2J1c19lcnJvcl9hZGRfbWFwKCkgYXJlIGluIHRoaXMKICAgKiBOVUxMIHRlcm1pbmF0ZWQgYXJyYXkgKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaAppbmRleCA3NTNkNTExLi5kYjQwNDFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNzVjMDZlM2UyYTQ3NjBiMzZmZmZkOTVjZGY1NTM1YjhhZDczYzQ4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODMwM2Q0OWNhYmFmM2FiODg5MGJhMWQyNjY5NzJjNzIxZGZlNmVlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6Mjc6NTQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yNF0gbWlzc2luZ190eXBlLmg6IGFkZCBfX2NvbXBhcl9kX2ZuX3QgZGVmaW5pdGlvbgorU3ViamVjdDogW1BBVENIXSBtaXNzaW5nX3R5cGUuaDogYWRkIF9fY29tcGFyX2RfZm5fdCBkZWZpbml0aW9uCiAKIEZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGUgZmFpbHVyZToKIHNyYy9iYXNpYy91dGlsLmg6NzE6MTg6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnX19jb21wYXJfZF9mbl90JzsgZGlkIHlvdSBtZWFuICdfX2NvbXBhcl9mbl90Jz8KQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvbWlzc2luZ190eXBlLmggfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAotaW5kZXggN2Q3YzFlNC4uODU5MDJhYiAxMDA2NDQKK2luZGV4IDIzNjAyZWJiZDUzMy4uOTE3ZDMxNGE4MWJmIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKIEBAIC0xMyw2ICsxMyw3IEBACkBAIC0yNSw2ICsyNiwzIEBACiAgI2VuZGlmCiAgCiAgI2lmbmRlZiBfX0NPTVBBUl9GTl9UCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoCmluZGV4IGNkZGRmODMuLjdkYWNjMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gM2ZiZjYxZDU0YjgyZmM5YmYyMWQ4MDM5YmZkODlkYzllZmM1YmJjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjM2NGZmNTUzNDY3OGMxNThhN2ZiOGQ0ZTUwZDBhNmNlNzJjMWFkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6NDQ6NTQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yNF0gYXZvaWQgcmVkZWZpbml0aW9uIG9mIHByY3RsX21tX21hcCBzdHJ1Y3R1cmUKK1N1YmplY3Q6IFtQQVRDSF0gYXZvaWQgcmVkZWZpbml0aW9uIG9mIHByY3RsX21tX21hcCBzdHJ1Y3R1cmUKIAogRml4IHRoZSBmb2xsb3dpbmcgY29tcGlsZSBmYWlsdXJlOgogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IHByY3RsX21tX21hcCcKQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvbWlzc2luZ19wcmN0bC5oIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmggYi9zcmMvYmFzaWMvbWlzc2luZ19wcmN0bC5oCi1pbmRleCBmODBjZDE3Li40N2U0ODkzIDEwMDY0NAoraW5kZXggZjgwY2QxN2YzNDZiLi40N2U0ODkzNTQwNTMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19wcmN0bC5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZ19wcmN0bC5oCiBAQCAtMSw3ICsxLDkgQEAKQEAgLTI3LDYgKzI4LDMgQEAKICAKICAvKiA1ODMxOTA1N2I3ODQ3NjY3ZjBjOTU4NWI5ZGUwZTg5MzJiMGZkYjA4ICg0LjMpICovCiAgI2lmbmRlZiBQUl9DQVBfQU1CSUVOVAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaAppbmRleCAwZTU2MjlkLi44MGJlYWRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOTAyNDEyYzI3MWUwYzVkOWNiOTNiMTBlYzBmYjViMTE5YjM5MzQ3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTA1Y2M1ZmIzZGMwZTUxNjgyYzQwMTk2Mjg1Y2RkYTM0ZWM5MDc4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTY6NTM6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yNF0gdGVzdC1qc29uLmM6IGRlZmluZSBNX1BJbAorU3ViamVjdDogW1BBVENIXSB0ZXN0LWpzb24uYzogZGVmaW5lIE1fUElsCiAKIEZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGUgZmFpbHVyZToKIHNyYy90ZXN0L3Rlc3QtanNvbi5jOjMwNTo1MDogZXJyb3I6ICdNX1BJbCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ01fUEknPwpAQCAtOSwxNSArOSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy90ZXN0L3Rlc3QtanNvbi5jIHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1qc29uLmMgYi9zcmMvdGVzdC90ZXN0LWpzb24uYwotaW5kZXggOWI4YTJhOS4uZWZjNzQ2YyAxMDA2NDQKK2luZGV4IGE2NjEzMDQzYjkyNC4uY2E4MjNlYTc5ZjA1IDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1qc29uLmMKICsrKyBiL3NyYy90ZXN0L3Rlc3QtanNvbi5jCi1AQCAtMTEsNiArMTEsMTAgQEAKK0BAIC0xMiw2ICsxMiwxMCBAQAogICNpbmNsdWRlICJ0ZXN0cy5oIgogICNpbmNsdWRlICJ1dGlsLmgiCiAgCkBAIC0yOCw2ICsyOSwzIEBACiAgc3RhdGljIHZvaWQgdGVzdF90b2tlbml6ZXIoY29uc3QgY2hhciAqZGF0YSwgLi4uKSB7CiAgICAgICAgICB1bnNpZ25lZCBsaW5lID0gMCwgY29sdW1uID0gMDsKICAgICAgICAgIHZvaWQgKnN0YXRlID0gTlVMTDsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxZDBiNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ODMgKzAsMCBAQAotcmVxdWlyZSBzeXN0ZW1kLmluYwotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1QRSA9ICIxIgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgbGliY2FwIHV0aWwtbGludXgiCi0KLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBtZXNvbiBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzIGZlYXR1cmVzX2NoZWNrCi0KLSMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KLSMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11bml0LWZpbGUuYy1jb25zaWRlci1zeW1saW5rLW9uLWZpbGVzeXN0ZW1zLWxpa2UtTkZTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzk5LWRlZmF1bHQucHJlc2V0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotIyBwYXRjaGVzIG5lZWRlZCBieSBtdXNsCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiICR7U1JDX1VSSV9NVVNMfSIKLVNSQ19VUklfTVVTTCA9ICJcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgIgotCi1QQU1fUExVR0lOUyA9ICIgXAotICAgIHBhbS1wbHVnaW4tdW5peCBcCi0gICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCi0gICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlIHBvbGtpdCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAotICAgIGFjbCBcCi0gICAgYmFja2xpZ2h0IFwKLSAgICBiaW5mbXQgXAotICAgIGdzaGFkb3cgXAotICAgIGhpYmVybmF0ZSBcCi0gICAgaG9zdG5hbWVkIFwKLSAgICBpZG4gXAotICAgIGltYSBcCi0gICAga21vZCBcCi0gICAgbG9jYWxlZCBcCi0gICAgbG9naW5kIFwKLSAgICBtYWNoaW5lZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbmV0d29ya2QgXAotICAgIG5zcyBcCi0gICAgbnNzLW15bWFjaGluZXMgXAotICAgIG5zcy1yZXNvbHZlIFwKLSAgICBxdW90YWNoZWNrIFwKLSAgICByYW5kb21zZWVkIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc2V0LXRpbWUtZXBvY2ggXAotICAgIHNtYWNrIFwKLSAgICBzeXN1c2VycyBcCi0gICAgdGltZWRhdGVkIFwKLSAgICB0aW1lc3luY2QgXAotICAgIHV0bXAgXAotICAgIHZjb25zb2xlIFwKLSAgICB4eiBcCi0iCi0KLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICIgXAotICAgIGdzaGFkb3cgXAotICAgIGlkbiBcCi0gICAgbG9jYWxlZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbnNzIFwKLSAgICBuc3MtbXltYWNoaW5lcyBcCi0gICAgbnNzLXJlc29sdmUgXAotICAgIHJlc29sdmVkIFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHV0bXAgXAotIgotCi0jIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KLSMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYwotIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLURhY2w9dHJ1ZSwtRGFjbD1mYWxzZSxhY2wiCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKLVBBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKLVBBQ0tBR0VDT05GSUdbY2dyb3VwdjJdID0gIi1EZGVmYXVsdC1oaWVyYXJjaHk9dW5pZmllZCwtRGRlZmF1bHQtaGllcmFyY2h5PWh5YnJpZCIKLVBBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCi1QQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZ251LWVmaV0gPSAiLURnbnUtZWZpPXRydWUgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpLC1EZ251LWVmaT1mYWxzZSxnbnUtZWZpIgotUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLURlbGZ1dGlscz10cnVlLC1EZWxmdXRpbHM9ZmFsc2UsZWxmdXRpbHMiCi1QQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLURmaXJzdGJvb3Q9dHJ1ZSwtRGZpcnN0Ym9vdD1mYWxzZSIKLSMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItRGdjcnlwdD10cnVlLC1EZ2NyeXB0PWZhbHNlLGxpYmdjcnlwdCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz10cnVlLC1EZ251dGxzPWZhbHNlLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ3NoYWRvd10gPSAiLURnc2hhZG93PXRydWUsLURnc2hhZG93PWZhbHNlIgotUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi1EaGliZXJuYXRlPXRydWUsLURoaWJlcm5hdGU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLURob3N0bmFtZWQ9dHJ1ZSwtRGhvc3RuYW1lZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaWRuXSA9ICItRGlkbj10cnVlLC1EaWRuPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCi0jIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAotUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCi0jIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKLVBBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgotUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCi1QQUNLQUdFQ09ORklHW2ttb2RdID0gIi1Ea21vZD10cnVlLC1Ea21vZD1mYWxzZSxrbW9kIgotUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLURsZGNvbmZpZz10cnVlLC1EbGRjb25maWc9ZmFsc2UsLGxkY29uZmlnIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi1EbGliaWRuPXRydWUsLURsaWJpZG49ZmFsc2UsbGliaWRuIgotUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItRGxvY2FsZWQ9dHJ1ZSwtRGxvY2FsZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLURsb2dpbmQ9dHJ1ZSwtRGxvZ2luZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItRGx6ND10cnVlLC1EbHo0PWZhbHNlLGx6NCIKLVBBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi1EbWFjaGluZWQ9dHJ1ZSwtRG1hY2hpbmVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW49dHJ1ZSwtRG1hbj1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItRG1pY3JvaHR0cGQ9dHJ1ZSwtRG1pY3JvaHR0cGQ9ZmFsc2UsbGlibWljcm9odHRwZCIKLVBBQ0tBR0VDT05GSUdbbXlob3N0bmFtZV0gPSAiLURuc3MtbXlob3N0bmFtZT10cnVlLC1EbnNzLW15aG9zdG5hbWU9ZmFsc2UsLGxpYm5zcy1teWhvc3RuYW1lIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrZF0gPSAiLURuZXR3b3JrZD10cnVlLC1EbmV0d29ya2Q9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLURuc3Mtc3lzdGVtZD10cnVlLC1EbnNzLXN5c3RlbWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW25zcy1teW1hY2hpbmVzXSA9ICItRG5zcy1teW1hY2hpbmVzPXRydWUsLURuc3MtbXltYWNoaW5lcz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzLXJlc29sdmVdID0gIi1EbnNzLXJlc29sdmU9dHJ1ZSwtRG5zcy1yZXNvbHZlPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9dHJ1ZSwtRG9wZW5zc2w9ZmFsc2Usb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKLVBBQ0tBR0VDT05GSUdbcGNyZTJdID0gIi1EcGNyZTI9dHJ1ZSwtRHBjcmUyPWZhbHNlLGxpYnBjcmUyIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3BvcnRhYmxlZF0gPSAiLURwb3J0YWJsZWQ9dHJ1ZSwtRHBvcnRhYmxlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi1EcXJlbmNvZGU9dHJ1ZSwtRHFyZW5jb2RlPWZhbHNlLHFyZW5jb2RlIgotUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItRHF1b3RhY2hlY2s9dHJ1ZSwtRHF1b3RhY2hlY2s9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi1EcmFuZG9tc2VlZD10cnVlLC1EcmFuZG9tc2VlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi1EcmVzb2x2ZT10cnVlLC1EcmVzb2x2ZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItRHJma2lsbD10cnVlLC1EcmZraWxsPWZhbHNlIgotIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLURzZWNjb21wPXRydWUsLURzZWNjb21wPWZhbHNlLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi1Ec2VsaW51eD10cnVlLC1Ec2VsaW51eD1mYWxzZSxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItRHNtYWNrPXRydWUsLURzbWFjaz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi1Ec3lzdXNlcnM9dHJ1ZSwtRHN5c3VzZXJzPWZhbHNlIgotIyBXaGVuIGVuYWJsZWQgdXNlIHJlcHJvZHVjYmxlIGJ1aWxkIHRpbWVzdGFtcCBpZiBzZXQgYXMgdGltZSBlcG9jaCwKLSMgb3IgYnVpbGQgdGltZSBpZiBub3QuIFdoZW4gZGlzYWJsZWQsIHRpbWUgZXBvY2ggaXMgdW5zZXQuCi1kZWYgYnVpbGRfZXBvY2goZCk6Ci0gICAgZXBvY2ggPSBkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSBvciAiLTEiCi0gICAgcmV0dXJuICctRHRpbWUtZXBvY2g9JWQnICUgaW50KGVwb2NoKQotUEFDS0FHRUNPTkZJR1tzZXQtdGltZS1lcG9jaF0gPSAiJHtAYnVpbGRfZXBvY2goZCl9LC1EdGltZS1lcG9jaD0wIgotUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi1EdGltZWRhdGVkPXRydWUsLUR0aW1lZGF0ZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLUR0aW1lc3luY2Q9dHJ1ZSwtRHRpbWVzeW5jZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi1Ec3BsaXQtdXNyPWZhbHNlLC1Ec3BsaXQtdXNyPXRydWUiCi1QQUNLQUdFQ09ORklHW3NiaW5tZXJnZV0gPSAiLURzcGxpdC1iaW49ZmFsc2UsLURzcGxpdC1iaW49dHJ1ZSIKLVBBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLUR1dG1wPXRydWUsLUR1dG1wPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLURWQUxHUklORD0xLCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbdmNvbnNvbGVdID0gIi1EdmNvbnNvbGU9dHJ1ZSwtRHZjb25zb2xlPWZhbHNlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKLSMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQotUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi1EeGtiY29tbW9uPXRydWUsLUR4a2Jjb21tb249ZmFsc2UsbGlieGtiY29tbW9uIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLUR4ej10cnVlLC1EeHo9ZmFsc2UseHoiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi1EemxpYj10cnVlLC1EemxpYj1mYWxzZSx6bGliIgotCi0jIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncwotIyBidWlsZCBzeXN0ZW0uCi1yb290cHJlZml4ID89ICIke3Jvb3RfcHJlZml4fSIKLXJvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igotcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCi0KLSMgVGhpcyBsaW5rcyB1ZGV2IHN0YXRpY2FsbHkgd2l0aCBzeXN0ZW1kIGhlbHBlciBsaWJyYXJ5LgotIyBPdGhlcndpc2UgdWRldiBwYWNrYWdlIHdvdWxkIGRlcGVuZCBvbiBzeXN0ZW1kIHBhY2thZ2UgKHdoaWNoIGhhcyB0aGUgbmVlZGVkIHNoYXJlZCBsaWJyYXJ5KSwKLSMgYW5kIGFsd2F5cyBwdWxsIGl0IGludG8gaW1hZ2VzLgotRVhUUkFfT0VNRVNPTiArPSAiLURsaW5rLXVkZXYtc2hhcmVkPWZhbHNlIgotCi1FWFRSQV9PRU1FU09OICs9ICItRG5vYm9keS11c2VyPW5vYm9keSBcCi0gICAgICAgICAgICAgICAgICAtRG5vYm9keS1ncm91cD1ub2JvZHkgXAotICAgICAgICAgICAgICAgICAgLURyb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURyb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAotICAgICAgICAgICAgICAgICAgLURzeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURkZWZhdWx0LWxvY2FsZT1DIFwKLSAgICAgICAgICAgICAgICAgICIKLQotIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAotRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAotICAgICAgICAgICAgICAgICAgLURrbW9kLXBhdGg9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgICAgICAgICAgICAgICAtRG1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAotICAgICAgICAgICAgICAgICAgLURxdW90YWNoZWNrLXBhdGg9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICAgICAgICAgICAgICAgIC1EcXVvdGFvbi1wYXRoPSR7c2JpbmRpcn0vcXVvdGFvbiBcCi0gICAgICAgICAgICAgICAgICAtRHN1bG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCi0gICAgICAgICAgICAgICAgICAtRG5vbG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiBcCi0gICAgICAgICAgICAgICAgICAtRHVtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCIKLQotZG9faW5zdGFsbCgpIHsKLQltZXNvbl9kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KLQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JCXNlZCAtaSBzJUBVREVWREAlJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCWZpCi0KLQljaG93biByb290OnN5c3RlbWQtam91cm5hbCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwKLQotCSMgRGVsZXRlIGpvdXJuYWwgUkVBRE1FLCBhcyBsb2cgY2FuIGJlIHN5bWxpbmtlZCBpbnNpZGUgdm9sYXRpbGUuCi0Jcm0gLWYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9SRUFETUUKLQotCSMgam91cm5hbC1yZW1vdGUgY3JlYXRlcyB0aGlzIGF0IHN0YXJ0Ci0Jcm0gLXJmICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbC9yZW1vdGUKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cwotCi0JIyBDcmVhdGUgc3ltbGlua3MgZm9yIHN5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V0bXAnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlmaQotCi0JIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKLQkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscwotCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9Ci0JZmkKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCi0JZmkKLQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCi0KLQkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KLQkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCQlmaQotCWZpCi0KLQkjIGNyZWF0ZSBsaW5rIGZvciBleGlzdGluZyB1ZGV2IHJ1bGVzCi0JbG4gLXMgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSAke0R9JHtiYXNlX3NiaW5kaXJ9L3VkZXZhZG0KLQotCSMgZHVwbGljYXRlIHVkZXZhZG0gZm9yIHBvc3RpbnN0IHNjcmlwdAotCWluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KLQlsbiAke0R9JHtiYXNlX2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KLQotCSMgaW5zdGFsbCBkZWZhdWx0IHBvbGljeSBmb3IgcHJlc2V0cwotCSMgaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9QcmVzZXQvI2hvd3RvCi0JaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9Lzk5LWRlZmF1bHQucHJlc2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLXByZXNldC85OS1kZWZhdWx0LnByZXNldAotCi0gICAgIyBXZSB1c2UgcGFja2FnZSBwb3N0aW5zdHMgZm9yIHRoZSBod2RiIHVwZGF0ZSwgYXMgdGhlIHVwZGF0ZSBzZXJ2aWNlIGlzCi0gICAgIyBlYXNpbHkgdHJpZ2dlcmVkIGZvciBubyByZWFzb24gYW5kIHdpbGwgc2xvdyBkb3duIGJvb3RzLgotICAgIGZpbmQgJHtEfSAtbmFtZSBzeXN0ZW1kLWh3ZGItdXBkYXRlLnNlcnZpY2UgLWRlbGV0ZQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKLSAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKLQotUEFDS0FHRVMgPSsgIlwKLSAgICAke1BOfS1ndWkgXAotICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKLSAgICAke1BOfS1pbml0cmFtZnMgXAotICAgICR7UE59LWFuYWx5emUgXAotICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKLSAgICAke1BOfS1ycG0tbWFjcm9zIFwKLSAgICAke1BOfS1iaW5mbXQgXAotICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKLSAgICAke1BOfS1jb250YWluZXIgXAotICAgICR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICR7UE59LWpvdXJuYWwtdXBsb2FkIFwKLSAgICAke1BOfS1qb3VybmFsLXJlbW90ZSBcCi0gICAgJHtQTn0tZXh0cmEtdXRpbHMgXAotIgotCi1TVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgotREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKLQotU1VNTUFSWV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIkhUVFAgc2VydmVyIGZvciBqb3VybmFsIGV2ZW50cyIKLURFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIHNlcnZlcyBqb3VybmFsIGV2ZW50cyBvdmVyIHRoZSBuZXR3b3JrLiBDbGllbnRzIG11c3QgY29ubmVjdCB1c2luZyBIVFRQLiBUaGUgc2VydmVyIGxpc3RlbnMgb24gcG9ydCAxOTUzMSBieSBkZWZhdWx0LiIKLQotU1VNTUFSWV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJTZW5kIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKLURFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQgdXBsb2FkcyBqb3VybmFsIGVudHJpZXMgdG8gYSBzcGVjaWZpZWQgVVJMLiIKLQotU1VNTUFSWV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJSZWNlaXZlIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKLURFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUgaXMgYSBjb21tYW5kIHRvIHJlY2VpdmUgc2VyaWFsaXplZCBqb3VybmFsIGV2ZW50cyBhbmQgc3RvcmUgdGhlbSB0byBqb3VybmFsIGZpbGVzLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5ZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCi0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtZ2F0ZXdheScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCi0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBzeXN0ZW1kLWpvdXJuYWwiCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHkiCi1VU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtZ2F0ZXdheSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5IgotVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGUiCi1VU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZCIKLQotRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgotCi1GSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCi1SREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCi0KLUZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgotCi1GSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgotRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgotCi1GSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAotICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCi1SUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKLQotUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCi0KLQotRklMRVNfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3N5c3RlbWQvZ2F0ZXdheWQvYnJvd3NlLmh0bWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gInN5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQiCi0KLUZJTEVTXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC11cGxvYWQuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC1yZW1vdGUuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXJlbW90ZSA9ICJzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNvY2tldCIKLQotCi1GSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvbWFjaGluZXMudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZW1vdGUtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmVkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcHVsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC1uc3Bhd24uY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19teW1hY2hpbmVzLnNvLjIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWNvbnRhaW5lciArPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLXJlbW90ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC1nYXRld2F5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvcmVzb2x2ZWQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3RpbWVzeW5jZC5jb25mIFwKLSIKLQotRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2hhbHQgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdGVsaW5pdCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Jlc29sdmNvbmYgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZWJvb3QgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9pbml0IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIFwKLSAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKLSAgICAgICAgICAgICAgICAvY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVzb2x2ZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKLSAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kcHJvYmUuZC9zeXN0ZW1kLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lZGF0ZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm5ldHdvcmsxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5yZXNvbHZlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmhvc3RuYW1lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9naW4xLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lc3luYzEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnBvcnRhYmxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgotCi1SREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC11bW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSB1dGlsLWxpbnV4LWFnZXR0eSB1dGlsLWxpbnV4LWZzY2siCi1SREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCi0gICAgICAgICAgICAgICAgICAgICAgZTJmc3Byb2dzLWUyZnNjayBcCi0gICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYgXAotICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAotICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29uZiBcCi0iCi0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCi0KLVBBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKLQotUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKLQotUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgotCi1GSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9uZXR3b3JrLzk5LWRlZmF1bHQubGluayBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInRpbnktaW5pdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICdyZXNvbHZjb25mJywgJycsIGQpfSIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgotSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi1weXRob24gZG9fd2Fybl9tdXNsKCkgewotICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAibXVzbCI6Ci0gICAgICAgIGJiLndhcm4oIlVzaW5nIHN5c3RlbWQgd2l0aCBtdXNsIGlzIG5vdCByZWNvbW1lbmRlZCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIHVwc3RyZWFtIGFuZCBzb21lIHBhdGNoZXMgYXJlIGtub3duIHRvIGJlIHByb2JsZW1hdGljLiIpCi19Ci1hZGR0YXNrIHdhcm5fbXVzbCBiZWZvcmUgZG9fY29uZmlndXJlCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdi1jb25mJywgJycsIGQpfSIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCi1BTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKLQotcGtnX3Bvc3RpbnN0XyR7UE59X2xpYmMtZ2xpYmMgKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3ByZXJtXyR7UE59X2xpYmMtZ2xpYmMgKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7Ci0JaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0JCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0KLQllbHNlCi0JCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wcmVybV91ZGV2LWh3ZGIgKCkgewotCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDUuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0NS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZTQyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDUuNS5iYgpAQCAtMCwwICsxLDcxNSBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworCitQUk9WSURFUyA9ICJ1ZGV2IgorCitQRSA9ICIxIgorCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgbGliY2FwIHV0aWwtbGludXgiCisKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBtZXNvbiBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzIGZlYXR1cmVzX2NoZWNrCisKKyMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KKyMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzk5LWRlZmF1bHQucHJlc2V0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCisgICAgICAgICAgICIKKworIyBwYXRjaGVzIG5lZWRlZCBieSBtdXNsCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiICR7U1JDX1VSSV9NVVNMfSIKK1NSQ19VUklfTVVTTCA9ICJcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaCBcCisgICAgICAgICAgICAgICAiCisKK1BBTV9QTFVHSU5TID0gIiBcCisgICAgcGFtLXBsdWdpbi11bml4IFwKKyAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKKyAgICBwYW0tcGx1Z2luLWtleWluaXQgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgYXVkaXQgZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHNtYWNrIHVzcm1lcmdlIHBvbGtpdCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAorICAgIGJhY2tsaWdodCBcCisgICAgYmluZm10IFwKKyAgICBnc2hhZG93IFwKKyAgICBoaWJlcm5hdGUgXAorICAgIGhvc3RuYW1lZCBcCisgICAgaWRuIFwKKyAgICBpbWEgXAorICAgIGttb2QgXAorICAgIGxvY2FsZWQgXAorICAgIGxvZ2luZCBcCisgICAgbWFjaGluZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5ldHdvcmtkIFwKKyAgICBuc3MgXAorICAgIG5zcy1teW1hY2hpbmVzIFwKKyAgICBuc3MtcmVzb2x2ZSBcCisgICAgcXVvdGFjaGVjayBcCisgICAgcmFuZG9tc2VlZCBcCisgICAgcmVzb2x2ZWQgXAorICAgIHNldC10aW1lLWVwb2NoIFwKKyAgICBzeXN1c2VycyBcCisgICAgc3lzdmluaXQgXAorICAgIHRpbWVkYXRlZCBcCisgICAgdGltZXN5bmNkIFwKKyAgICB1c2VyZGIgXAorICAgIHV0bXAgXAorICAgIHZjb25zb2xlIFwKKyAgICB4eiBcCisiCisKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICIgXAorICAgIGdzaGFkb3cgXAorICAgIGlkbiBcCisgICAgbG9jYWxlZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbnNzIFwKKyAgICBuc3MtbXltYWNoaW5lcyBcCisgICAgbnNzLXJlc29sdmUgXAorICAgIHN5c3VzZXJzIFwKKyAgICB1c2VyZGIgXAorICAgIHV0bXAgXAorIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX1VBUElfREVGX0VUSEhEUj0wICIKKworIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCisjIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKKyMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi1EYWNsPXRydWUsLURhY2w9ZmFsc2UsYWNsIgorUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLURhdWRpdD10cnVlLC1EYXVkaXQ9ZmFsc2UsYXVkaXQiCitQQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLURiYWNrbGlnaHQ9dHJ1ZSwtRGJhY2tsaWdodD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItRGJpbmZtdD10cnVlLC1EYmluZm10PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLURiemlwMj10cnVlLC1EYnppcDI9ZmFsc2UsYnppcDIiCitQQUNLQUdFQ09ORklHW2Nncm91cHYyXSA9ICItRGRlZmF1bHQtaGllcmFyY2h5PXVuaWZpZWQsLURkZWZhdWx0LWhpZXJhcmNoeT1oeWJyaWQiCitQQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItRGNvcmVkdW1wPXRydWUsLURjb3JlZHVtcD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLURsaWJjcnlwdHNldHVwPXRydWUsLURsaWJjcnlwdHNldHVwPWZhbHNlLGNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi1EZGJ1cz10cnVlLC1EZGJ1cz1mYWxzZSxkYnVzIgorUEFDS0FHRUNPTkZJR1tlZmldID0gIi1EZWZpPXRydWUsLURlZmk9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dudS1lZmldID0gIi1EZ251LWVmaT10cnVlIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSwtRGdudS1lZmk9ZmFsc2UsZ251LWVmaSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgorUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCisjIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9dHJ1ZSwtRGdudXRscz1mYWxzZSxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dzaGFkb3ddID0gIi1EZ3NoYWRvdz10cnVlLC1EZ3NoYWRvdz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItRGhpYmVybmF0ZT10cnVlLC1EaGliZXJuYXRlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi1EaG9zdG5hbWVkPXRydWUsLURob3N0bmFtZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2lkbl0gPSAiLURpZG49dHJ1ZSwtRGlkbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaW1hXSA9ICItRGltYT10cnVlLC1EaW1hPWZhbHNlIgorIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKK1BBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLURpbXBvcnRkPXRydWUsLURpbXBvcnRkPWZhbHNlIgorIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCitQQUNLQUdFQ09ORklHW2lwdGNdID0gIi1EbGliaXB0Yz10cnVlLC1EbGliaXB0Yz1mYWxzZSxpcHRhYmxlcyIKK1BBQ0tBR0VDT05GSUdbam91cm5hbC11cGxvYWRdID0gIi1EbGliY3VybD10cnVlLC1EbGliY3VybD1mYWxzZSxjdXJsIgorUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItRGttb2Q9dHJ1ZSwtRGttb2Q9ZmFsc2Usa21vZCIKK1BBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi1EbGRjb25maWc9dHJ1ZSwtRGxkY29uZmlnPWZhbHNlLCxsZGNvbmZpZyIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKK1BBQ0tBR0VDT05GSUdbbGliaWRuMl0gPSAiLURsaWJpZG4yPXRydWUsLURsaWJpZG4yPWZhbHNlLGxpYmlkbjIiCitQQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi1EbG9jYWxlZD10cnVlLC1EbG9jYWxlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItRGxvZ2luZD10cnVlLC1EbG9naW5kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EbHo0PXRydWUsLURsejQ9ZmFsc2UsbHo0IgorUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLURtYWNoaW5lZD10cnVlLC1EbWFjaGluZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi1EbWljcm9odHRwZD10cnVlLC1EbWljcm9odHRwZD1mYWxzZSxsaWJtaWNyb2h0dHBkIgorUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItRG5zcy1teWhvc3RuYW1lPXRydWUsLURuc3MtbXlob3N0bmFtZT1mYWxzZSwsbGlibnNzLW15aG9zdG5hbWUiCitQQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItRG5ldHdvcmtkPXRydWUsLURuZXR3b3JrZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItRG5zcy1zeXN0ZW1kPXRydWUsLURuc3Mtc3lzdGVtZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbnNzLW15bWFjaGluZXNdID0gIi1EbnNzLW15bWFjaGluZXM9dHJ1ZSwtRG5zcy1teW1hY2hpbmVzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3MtcmVzb2x2ZV0gPSAiLURuc3MtcmVzb2x2ZT10cnVlLC1EbnNzLXJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi1Eb3BlbnNzbD10cnVlLC1Eb3BlbnNzbD1mYWxzZSxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgorUEFDS0FHRUNPTkZJR1twY3JlMl0gPSAiLURwY3JlMj10cnVlLC1EcGNyZTI9ZmFsc2UsbGlicGNyZTIiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLURwb2xraXQ9dHJ1ZSwtRHBvbGtpdD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcG9ydGFibGVkXSA9ICItRHBvcnRhYmxlZD10cnVlLC1EcG9ydGFibGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLURxcmVuY29kZT10cnVlLC1EcXJlbmNvZGU9ZmFsc2UscXJlbmNvZGUiCitQQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi1EcXVvdGFjaGVjaz10cnVlLC1EcXVvdGFjaGVjaz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLURyYW5kb21zZWVkPXRydWUsLURyYW5kb21zZWVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLURyZXNvbHZlPXRydWUsLURyZXNvbHZlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi1EcmZraWxsPXRydWUsLURyZmtpbGw9ZmFsc2UiCisjIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQorUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItRHNlY2NvbXA9dHJ1ZSwtRHNlY2NvbXA9ZmFsc2UsbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsLURzZWxpbnV4PWZhbHNlLGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKK1BBQ0tBR0VDT05GSUdbc21hY2tdID0gIi1Ec21hY2s9dHJ1ZSwtRHNtYWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLURzeXN1c2Vycz10cnVlLC1Ec3lzdXNlcnM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3Zpbml0XSA9ICItRHN5c3Zpbml0LXBhdGg9JHtzeXNjb25mZGlyfS9pbml0LmQgLURzeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0sLURzeXN2aW5pdC1wYXRoPSAtRHN5c3ZyY25kLXBhdGg9LCxzeXN0ZW1kLWNvbXBhdC11bml0cyB1cGRhdGUtcmMuZCIKKyMgV2hlbiBlbmFibGVkIHVzZSByZXByb2R1Y2JsZSBidWlsZCB0aW1lc3RhbXAgaWYgc2V0IGFzIHRpbWUgZXBvY2gsCisjIG9yIGJ1aWxkIHRpbWUgaWYgbm90LiBXaGVuIGRpc2FibGVkLCB0aW1lIGVwb2NoIGlzIHVuc2V0LgorZGVmIGJ1aWxkX2Vwb2NoKGQpOgorICAgIGVwb2NoID0gZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgb3IgIi0xIgorICAgIHJldHVybiAnLUR0aW1lLWVwb2NoPSVkJyAlIGludChlcG9jaCkKK1BBQ0tBR0VDT05GSUdbc2V0LXRpbWUtZXBvY2hdID0gIiR7QGJ1aWxkX2Vwb2NoKGQpfSwtRHRpbWUtZXBvY2g9MCIKK1BBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgorUEFDS0FHRUNPTkZJR1tzYmlubWVyZ2VdID0gIi1Ec3BsaXQtYmluPWZhbHNlLC1Ec3BsaXQtYmluPXRydWUiCitQQUNLQUdFQ09ORklHW3VzZXJkYl0gPSAiLUR1c2VyZGI9dHJ1ZSwtRHVzZXJkYj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLUR1dG1wPXRydWUsLUR1dG1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLURWQUxHUklORD0xLCx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbdmNvbnNvbGVdID0gIi1EdmNvbnNvbGU9dHJ1ZSwtRHZjb25zb2xlPWZhbHNlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKKyMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQorUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi1EeGtiY29tbW9uPXRydWUsLUR4a2Jjb21tb249ZmFsc2UsbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLUR4ej10cnVlLC1EeHo9ZmFsc2UseHoiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1EemxpYj10cnVlLC1EemxpYj1mYWxzZSx6bGliIgorCisjIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncworIyBidWlsZCBzeXN0ZW0uCityb290cHJlZml4ID89ICIke3Jvb3RfcHJlZml4fSIKK3Jvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igorcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCisKKyMgVGhpcyBsaW5rcyB1ZGV2IHN0YXRpY2FsbHkgd2l0aCBzeXN0ZW1kIGhlbHBlciBsaWJyYXJ5LgorIyBPdGhlcndpc2UgdWRldiBwYWNrYWdlIHdvdWxkIGRlcGVuZCBvbiBzeXN0ZW1kIHBhY2thZ2UgKHdoaWNoIGhhcyB0aGUgbmVlZGVkIHNoYXJlZCBsaWJyYXJ5KSwKKyMgYW5kIGFsd2F5cyBwdWxsIGl0IGludG8gaW1hZ2VzLgorRVhUUkFfT0VNRVNPTiArPSAiLURsaW5rLXVkZXYtc2hhcmVkPWZhbHNlIgorCitFWFRSQV9PRU1FU09OICs9ICItRG5vYm9keS11c2VyPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRG5vYm9keS1ncm91cD1ub2JvZHkgXAorICAgICAgICAgICAgICAgICAgLURyb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURyb290cHJlZml4PSR7cm9vdHByZWZpeH0gXAorICAgICAgICAgICAgICAgICAgLURkZWZhdWx0LWxvY2FsZT1DIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAorRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgICAgICAgICAgICAgICAgLURrbW9kLXBhdGg9JHtiYXNlX2JpbmRpcn0va21vZCBcCisgICAgICAgICAgICAgICAgICAtRG1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAorICAgICAgICAgICAgICAgICAgLURxdW90YWNoZWNrLXBhdGg9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKKyAgICAgICAgICAgICAgICAgIC1EcXVvdGFvbi1wYXRoPSR7c2JpbmRpcn0vcXVvdGFvbiBcCisgICAgICAgICAgICAgICAgICAtRHN1bG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCisgICAgICAgICAgICAgICAgICAtRG5vbG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vbm9sb2dpbiBcCisgICAgICAgICAgICAgICAgICAtRHVtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCIKKworZG9faW5zdGFsbCgpIHsKKwltZXNvbl9kb19pbnN0YWxsCisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCisJCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKKwlmaQorCisJIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcworCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0CisJWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJCXNlZCAtaSBzJUBVREVWREAlJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCisJZmkKKworCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAorCisJIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KKwlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQorCisJIyBqb3VybmFsLXJlbW90ZSBjcmVhdGVzIHRoaXMgYXQgc3RhcnQKKwlybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsL3JlbW90ZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCisKKwkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWZpCisKKwkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAorCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCisJaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KKwlmaQorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWVsc2UKKwkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwlmaQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJcm0gJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3gxMS5jb25mCisJCXJtIC1yICR7RH0ke3N5c2NvbmZkaXJ9L1gxMQorCWZpCisKKwkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KKwkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQlmaQorCWZpCisKKwkjIGNyZWF0ZSBsaW5rIGZvciBleGlzdGluZyB1ZGV2IHJ1bGVzCisJbG4gLXMgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSAke0R9JHtiYXNlX3NiaW5kaXJ9L3VkZXZhZG0KKworCSMgZHVwbGljYXRlIHVkZXZhZG0gZm9yIHBvc3RpbnN0IHNjcmlwdAorCWluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KKwlsbiAke0R9JHtiYXNlX2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KKworCSMgaW5zdGFsbCBkZWZhdWx0IHBvbGljeSBmb3IgcHJlc2V0cworCSMgaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZC9QcmVzZXQvI2hvd3RvCisJaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9Lzk5LWRlZmF1bHQucHJlc2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLXByZXNldC85OS1kZWZhdWx0LnByZXNldAorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKKyAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiXAorICAgICR7UE59LWd1aSBcCisgICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAorICAgICR7UE59LWluaXRyYW1mcyBcCisgICAgJHtQTn0tYW5hbHl6ZSBcCisgICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAorICAgICR7UE59LXJwbS1tYWNyb3MgXAorICAgICR7UE59LWJpbmZtdCBcCisgICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tam91cm5hbC1nYXRld2F5ZCBcCisgICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAorICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKKyAgICAke1BOfS1leHRyYS11dGlscyBcCisgICAgdWRldiBcCisgICAgdWRldi1od2RiIFwKKyIKKworU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKK0RFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCisKK1NVTU1BUllfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJIVFRQIHNlcnZlciBmb3Igam91cm5hbCBldmVudHMiCitERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gInN5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBzZXJ2ZXMgam91cm5hbCBldmVudHMgb3ZlciB0aGUgbmV0d29yay4gQ2xpZW50cyBtdXN0IGNvbm5lY3QgdXNpbmcgSFRUUC4gVGhlIHNlcnZlciBsaXN0ZW5zIG9uIHBvcnQgMTk1MzEgYnkgZGVmYXVsdC4iCisKK1NVTU1BUllfJHtQTn0tam91cm5hbC11cGxvYWQgPSAiU2VuZCBqb3VybmFsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmsiCitERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIHVwbG9hZHMgam91cm5hbCBlbnRyaWVzIHRvIGEgc3BlY2lmaWVkIFVSTC4iCisKK1NVTU1BUllfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiUmVjZWl2ZSBqb3VybmFsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmsiCitERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIGlzIGEgY29tbWFuZCB0byByZWNlaXZlIHNlcmlhbGl6ZWQgam91cm5hbCBldmVudHMgYW5kIHN0b3JlIHRoZW0gdG8gam91cm5hbCBmaWxlcy4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLXJlbW90ZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICcke1BOfS1qb3VybmFsLXVwbG9hZCcsICcnLCBkKX0gXAorIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLWdhdGV3YXknLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLXJlbW90ZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICcke1BOfS1qb3VybmFsLXVwbG9hZCcsICcnLCBkKX0gXAorIgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgc3lzdGVtZC1qb3VybmFsIgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJy0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS9wb2xraXQtMSBwb2xraXRkOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5IgorVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLWdhdGV3YXkgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIgorVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQiCisKK0ZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKKworRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgorUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKKworRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKK0ZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKKworRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAorICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCisKK1JSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgorCisKK0ZJTEVTXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9zeXN0ZW1kL2dhdGV3YXlkL2Jyb3dzZS5odG1sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IgorCitGSUxFU18ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWwtdXBsb2FkLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tam91cm5hbC11cGxvYWQgPSAic3lzdGVtZC1qb3VybmFsLXVwbG9hZC5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1yZW1vdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWwtcmVtb3RlLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNvY2tldCIKKworCitGSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvbWFjaGluZXMudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZW1vdGUtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcHVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC1uc3Bhd24uY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19teW1hY2hpbmVzLnNvLjIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1JSRUNPTU1FTkRTXyR7UE59LWNvbnRhaW5lciArPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCisiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL25ldHdvcmtkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9wc3RvcmUuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3Jlc29sdmVkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zbGVlcC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC90aW1lc3luY2QuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiBcCisiCisKK0ZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24gXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9oYWx0IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3RlbGluaXQgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZXNvbHZjb25mIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVib290IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaW5pdCBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC8qIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCisgICAgICAgICAgICAgICAgL2Nncm91cCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3Jlc29sdmVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvZW52aXJvbm1lbnQuZCBcCisgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vbW9kcHJvYmUuZC9zeXN0ZW1kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lZGF0ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm5ldHdvcmsxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5yZXNvbHZlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmhvc3RuYW1lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9naW4xLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lc3luYzEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnBvcnRhYmxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLmxhICR7ZGF0YWRpcn0vZGJ1cy0xL2ludGVyZmFjZXMvICR7c3lzY29uZmRpcn0vcnBtL21hY3Jvcy5zeXN0ZW1kIgorCitSREVQRU5EU18ke1BOfSArPSAia21vZCBkYnVzIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC11bW91bnQgdWRldiAoPSAke0VYVEVORFBLR1Z9KSB1dGlsLWxpbnV4LWFnZXR0eSB1dGlsLWxpbnV4LWZzY2siCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAgIHVkZXYtaHdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgZTJmc3Byb2dzLWUyZnNjayBcCisgICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1hdXRvZnM0IGtlcm5lbC1tb2R1bGUtdW5peCBrZXJuZWwtbW9kdWxlLWlwdjYga2VybmVsLW1vZHVsZS1zY2gtZnEtY29kZWwgXAorICAgICAgICAgICAgICAgICAgICAgIG9zLXJlbGVhc2UgXAorICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29uZiBcCisiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCisKK1JQUk9WSURFU191ZGV2ID0gImhvdHBsdWciCisKK1JERVBFTkRTX3VkZXYtaHdkYiArPSAidWRldiIKKworRklMRVNfdWRldiArPSAiJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvbmV0d29yay85OS1kZWZhdWx0LmxpbmsgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpZG9faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maW5ka2V5Ym9hcmRzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5Ym9hcmQtZm9yY2UtcmVsZWFzZS5zaCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L210ZF9wcm9iZSBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Njc2lfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi92NGxfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXBzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC81MC11ZGV2LWRlZmF1bHQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWF1dG9zdXNwZW5kLWNocm9taXVtb3MucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWJsb2NrLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1jZHJvbV9pZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtZHJtLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1ldmRldi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtZmlkby1pZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtaW5wdXQtaWQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtYWxzYS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC1pbnB1dC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LXN0b3JhZ2UtdGFwZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC12NGwucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXNlbnNvci5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtc2VyaWFsLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MS1hdXRvc3VzcGVuZC1tYW51YWwucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzY0LWJ0cmZzLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC1qb3lzdGljay5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtbW91c2UucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLXBvd2VyLXN3aXRjaC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtdG91Y2hwYWQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzc1LW5ldC1kZXNjcmlwdGlvbi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzUtcHJvYmVfbXRkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83OC1zb3VuZC1jYXJkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC84MC1kcml2ZXJzLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtc2V0dXAtbGluay5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvOTAtdmNvbnNvbGUucnVsZXMgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWh3ZGIgXAorICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSBcCisgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbSBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1od2RiLXVwZGF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgIgorCitGSUxFU191ZGV2LWh3ZGIgPSAiJHtyb290bGliZXhlY2Rpcn0vdWRldi9od2RiLmQgXAorICAgICAgICAgICAgICAgICAgICIKKworUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW55LWluaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAncmVzb2x2Y29uZicsICcnLCBkKX0iCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAidWRldiIKK0lOSVRTQ1JJUFRfTkFNRV91ZGV2ID0gInN5c3RlbWQtdWRldmQiCitJTklUU0NSSVBUX1BBUkFNU191ZGV2ID0gInN0YXJ0IDAzIFMgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworcHl0aG9uIGRvX3dhcm5fbXVzbCgpIHsKKyAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgorICAgICAgICBiYi53YXJuKCJVc2luZyBzeXN0ZW1kIHdpdGggbXVzbCBpcyBub3QgcmVjb21tZW5kZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB1cHN0cmVhbSBhbmQgc29tZSBwYXRjaGVzIGFyZSBrbm93biB0byBiZSBwcm9ibGVtYXRpYy4iKQorfQorYWRkdGFzayB3YXJuX211c2wgYmVmb3JlIGRvX2NvbmZpZ3VyZQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICdyZXNvbHYtY29uZicsICcnLCBkKX0iCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCisKK3BrZ19wb3N0aW5zdF8ke1BOfV9saWJjLWdsaWJjICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfV9saWJjLWdsaWJjICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgeworCWlmIHRlc3QgLW4gIiREIjsgdGhlbgorCQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9IHJvb3RsaWJleGVjZGlyPSIke3Jvb3RsaWJleGVjZGlyfSIgUFJFRkVSUkVEX1BST1ZJREVSX3VkZXY9IiR7UFJFRkVSUkVEX1BST1ZJREVSX3VkZXZ9IgorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1UaGlzLWZpeGVzLWFuLWlzc3VlLXRoYXQtY2xhbmctcmVwb3J0cy1hYm91dC1tdXRsaXBsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLVRoaXMtZml4ZXMtYW4taXNzdWUtdGhhdC1jbGFuZy1yZXBvcnRzLWFib3V0LW11dGxpcGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNWMxNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLVRoaXMtZml4ZXMtYW4taXNzdWUtdGhhdC1jbGFuZy1yZXBvcnRzLWFib3V0LW11dGxpcGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDM2YWM5N2JmZTUxNzk3NDU4NDQyYTYwMzUyMTlhNTA0YTQyZTcwM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMSBBdWcgMjAxNSAxMDo1Njo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBUaGlzIGZpeGVzIGFuIGlzc3VlIHRoYXQgY2xhbmcgcmVwb3J0cyBhYm91dCBtdXRsaXBsZSBvdXRwdXQKLSBmaWxlcwotCi1Jc3N1ZSBpcyB0aGF0IHdlIGFyZSBwYXNzaW5nIC5oIGZpbGUgdG8gbGluayBzdGVwIGFzIHNlZW4gYmVsb3cuCi0KLXwgYXJtLW9lLWxpbnV4LWdudWVhYmktY2xhbmcgIC1tYXJjaD1hcm12Ny1hIC1tdGh1bWIgIC1tZmxvYXQtYWJpPWhhcmQKLS1tZnB1PW5lb24tdmZwdjQgLW10dW5lPWNvcnRleC1hNyAtRF9fZXh0ZXJuX2Fsd2F5c19pbmxpbmU9aW5saW5lCi0tbm8taW50ZWdyYXRlZC1hcwotLS1zeXNyb290PS9tbnQvaG9tZS9rcmFqL3dvcmsvYW5nc3Ryb20vc291cmNlcy9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcmFzcGJlcnJ5cGkyCi0tV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251IC1XbCwtLWFzLW5lZWRlZCAgaGFsdC5vIGlmZG93bi5vIGhkZG93bi5vCi11dG1wLm8gcmVib290LmggICAtbyBoYWx0Ci18IGNsYW5nLTMuNzogZXJyb3I6IGNhbm5vdCBzcGVjaWZ5IC1vIHdoZW4gZ2VuZXJhdGluZyBtdWx0aXBsZSBvdXRwdXQKLWZpbGVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBlNzdlZDVmLi5hNmY5ZjQwIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC0xMDMsOSArMTAzLDkgQEAgYWxsOgkJJChCSU4pICQoU0JJTikgJChVU1JCSU4pCi0gaW5pdDoJCUxETElCUyArPSAkKElOSVRMSUJTKSAkKFNUQVRJQykKLSBpbml0OgkJaW5pdC5vIGluaXRfdXRtcC5vCi0gCi0taGFsdDoJCWhhbHQubyBpZmRvd24ubyBoZGRvd24ubyB1dG1wLm8gcmVib290LmgKLStoYWx0OgkJaGFsdC5vIGlmZG93bi5vIGhkZG93bi5vIHV0bXAubwotIAotLWxhc3Q6CQlsYXN0Lm8gb2xkdXRtcC5oCi0rbGFzdDoJCWxhc3QubwotIAotIG1lc2c6CQltZXNnLm8KLSAKLUBAIC0xMjAsNyArMTIwLDcgQEAgc3Vsb2dpbjoJc3Vsb2dpbi5vCi0gCi0gd2FsbDoJCWRvd2FsbC5vIHdhbGwubwotIAotLXNodXRkb3duOglkb3dhbGwubyBzaHV0ZG93bi5vIHV0bXAubyByZWJvb3QuaAotK3NodXRkb3duOglkb3dhbGwubyBzaHV0ZG93bi5vIHV0bXAubwotIAotIGJvb3Rsb2dkOglMRExJQlMgKz0gLWx1dGlsCi0gYm9vdGxvZ2Q6CWJvb3Rsb2dkLm8KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaAppbmRleCBlMTNhYzlkLi42MGZiZDg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2MyOWE4NmYzNTFlYTQ4MjdkYzQ0NWJiOGU2Y2I3NzQ1NDNjOWJlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzcxMGEzYWNjZDFmYWJkYjY3MTI3NGUxYTQ1ODQwNTI4MmQ1MWUwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgQXVnIDIwMTggMTU6Mzg6NTggLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb25zCkBAIC0xMywxMCArMTMsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jvb3Rsb2dkLmMgYi9zcmMvYm9vdGxvZ2QuYwotaW5kZXggNTcwZDM4Mi4uNjhkNjJmMyAxMDA2NDQKK2luZGV4IDc4N2RiODcuLjhiMDc5MDMgMTAwNjQ0CiAtLS0gYS9zcmMvYm9vdGxvZ2QuYwogKysrIGIvc3JjL2Jvb3Rsb2dkLmMKLUBAIC0zNSw2ICszNSw3IEBACitAQCAtMjksNiArMjksNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTI1LDcgKzI1LDcgQEAKICAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KICAjaW5jbHVkZSA8dGltZS5oPgogZGlmZiAtLWdpdCBhL3NyYy9tb3VudHBvaW50LmMgYi9zcmMvbW91bnRwb2ludC5jCi1pbmRleCA5ZTNkZDljLi45MWY3NGVkIDEwMDY0NAoraW5kZXggNWYyMDUyMi4uOTRkZjdhMSAxMDA2NDQKIC0tLSBhL3NyYy9tb3VudHBvaW50LmMKICsrKyBiL3NyYy9tb3VudHBvaW50LmMKIEBAIC0yNSw2ICsyNSw3IEBACkBAIC0zNyw3ICszNyw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KIGRpZmYgLS1naXQgYS9zcmMvc2h1dGRvd24uYyBiL3NyYy9zaHV0ZG93bi5jCi1pbmRleCA3ZTk5N2RhLi4xN2RlNThkIDEwMDY0NAoraW5kZXggYjc0NGEyYy4uNDBiN2ZhZiAxMDA2NDQKIC0tLSBhL3NyYy9zaHV0ZG93bi5jCiArKysgYi9zcmMvc2h1dGRvd24uYwogQEAgLTQwLDYgKzQwLDcgQEAKQEAgLTQ2LDUgKzQ2LDUgQEAKICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgogICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgorICNpZmRlZiBfX2xpbnV4X18KKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiAgIC8qIGJyb3VnaHQgaW4gbXkgTEZTIHBhdGNoICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2NyeXB0LWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvY3J5cHQtbGliLnBhdGNoCmluZGV4IDdiMzQyOTAuLmJkNDQ0NGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvY3J5cHQtbGliLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvY3J5cHQtbGliLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA3Mjc2Mjc1ZDlhMDhkNWFlMjY4ZmIyNjMwMjdiYmM2MGJjMGFiMmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVmZiBEaWtlIDxqZGlrZUB4ODZfNjQudXNlci1tb2RlLWxpbnV4Lm9yZz4KK0RhdGU6IFdlZCwgMTQgSnVsIDIwMTAgMTQ6MzU6NTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzdmluaXQgLSBSZW1vdmUgc3Vsb2dpbiBkZXBlbmRlbmN5IG9uIC91c3IvbGliKi9saWJjcnlwdC5hCisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogIyBUaGUgc3JjIE1ha2VmaWxlIHdhcyBjaGVja2luZyBmb3IgbGliY3J5cHQuYSBvbiB0aGUgaG9zdCwgbm90IGluIHRoZQpAQCAtNSwyMSArMTAsMjcgQEAKICMgYW5kIHVzZXMgaXQgaWYgaXQncyB0aGVyZS4KICMgLSBqZGlrZUBsaW51eC5pbnRlbC5jb20KIAotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9NYWtlZmlsZQotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL01ha2VmaWxlCi1AQCAtODUsOSArODUsMTMgQEAgZWxzZQorLS0tCisgc3JjL01ha2VmaWxlIHwgOSArKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCAxMzgwZDdmLi42MjhlNzdmIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC05NywxMyArOTcsOCBAQCBlbHNlCiAgZW5kaWYKICAKICAjIEFkZGl0aW9uYWwgbGlicyBmb3IgR05VIGxpYmMuCistaWZuZXEgKCQod2lsZGNhcmQgL3Vzci9saWIqL2xpYmNyeXB0LiopLCkKKy0gIFNVTE9HSU5MSUJTCSs9IC1sY3J5cHQKKy1lbmRpZgorLQorLSMgQWRkaXRpb25hbCBsaWJzIGZvciBHTlUgbGliYyAvIG11bHRpYXJjaCBvbiBEZWJpYW4gYmFzZWQgc3lzdGVtcy4KKy1pZm5lcSAoJCh3aWxkY2FyZCAvdXNyL2xpYi8qL2xpYmNyeXB0LiopLCkKKy0gIFNVTE9HSU5MSUJTCSs9IC1sY3J5cHQKICtpZm5lcSAoJChMQ1JZUFQpLCkKICsgIFNVTE9HSU5MSUJTCSs9ICQoTENSWVBUKQotK2Vsc2UKLSBpZm5lcSAoJCh3aWxkY2FyZCAvdXNyL2xpYiovbGliY3J5cHQuYSksKQotICAgU1VMT0dJTkxJQlMJKz0gLWxjcnlwdAogIGVuZGlmCi0rZW5kaWYKICAKICBhbGw6CQkkKEJJTikgJChTQklOKSAkKFVTUkJJTikKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvaW5zdGFsbC5wYXRjaAppbmRleCA2YzQyMjVhLi4yOTMwZmIwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2luc3RhbGwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoCkBAIC0xLDEwICsxLDE5IEBACitGcm9tIGI2Y2M2NmFiMjQ1Y2ViNmJjYTAxMTZkZmY3YTQxZjZkNzY3N2I5NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBRaW5nIEhlIDxxaW5nLmhlQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTggSnVuIDIwMTAgMDk6NDA6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzdmluaXQ6IHVwZ3JhZGUgdG8gdmVyc2lvbiAyLjg4ZHNmCisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCistLS0KKyBzcmMvTWFrZWZpbGUgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBlMmI4MDI4Li4zZTExZTkyIDEwMDY0NAoraW5kZXggOWY5ZjA5ZS4uMTM4MGQ3ZiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNjUsNyArNjUsMTQgQEAgZWxzZQorQEAgLTc3LDcgKzc3LDE0IEBAIGVsc2UKICAgIElOU1RBTExfREFUQQk9IGluc3RhbGwgLW0gNjQ0CiAgZW5kaWYKICBJTlNUQUxMX0RJUgk9IGluc3RhbGwgLW0gNzU1IC1kCkBAIC0yMCwxMCArMjksMTAgQEAKICAKICBpZmVxICgkKFdJVEhfU0VMSU5VWCkseWVzKQogICAgU0VMSU5VWF9ERUYJPSAgLURXSVRIX1NFTElOVVgKLUBAIC0xMzgsMzkgKzE0NSwzOSBAQCBjbG9iYmVyOgljbGVhbm9ianMKK0BAIC0xODksNDIgKzE5Niw0MiBAQCBjbG9iYmVyOgljbGVhbm9ianMKICBkaXN0Y2xlYW46CWNsb2JiZXIKICAKLSBpbnN0YWxsOgorIGluc3RhbGw6CWFsbAogLQkJJChJTlNUQUxMX0RJUikgJChST09UKS9iaW4vICQoUk9PVCkvc2Jpbi8KIC0JCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkvdXNyL2Jpbi8KICsJCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkkKGJhc2VfYmluZGlyKS8gJChST09UKSQoYmFzZV9zYmluZGlyKS8KQEAgLTQwLDE2ICs0OSwxNCBAQAogLQkJCSQoSU5TVEFMTF9FWEVDKSAkJGkgJChST09UKS91c3IvYmluLyA7IFwKICsJCQkkKElOU1RBTExfRVhFQykgJCRpICQoUk9PVCkkKGJpbmRpcikvIDsgXAogIAkJZG9uZQotLQkJIyAkKElOU1RBTExfRElSKSAkKFJPT1QpL2V0Yy8KLS0JCSMgJChJTlNUQUxMX0VYRUMpIGluaXRzY3JpcHQuc2FtcGxlICQoUk9PVCkvZXRjLworIAkJIyAkKElOU1RBTExfRElSKSAkKFJPT1QpL2V0Yy8KKyAJCSMgJChJTlNUQUxMX0VYRUMpIC4uL2RvYy9pbml0c2NyaXB0LnNhbXBsZSAkKFJPT1QpL2V0Yy8KIC0JCWxuIC1zZiBoYWx0ICQoUk9PVCkvc2Jpbi9yZWJvb3QKIC0JCWxuIC1zZiBoYWx0ICQoUk9PVCkvc2Jpbi9wb3dlcm9mZgogLQkJbG4gLXNmIGluaXQgJChST09UKS9zYmluL3RlbGluaXQKIC0JCWxuIC1zZiAvc2Jpbi9raWxsYWxsNSAkKFJPT1QpL2Jpbi9waWRvZgogLQkJaWYgWyAhIC1mICQoUk9PVCkvdXNyL2Jpbi9sYXN0YiBdOyB0aGVuIFwKIC0JCQlsbiAtc2YgbGFzdCAkKFJPT1QpL3Vzci9iaW4vbGFzdGI7IFwKLSsJCSMgJChJTlNUQUxMX0RJUikgJChST09UKSQoc3lzY29uZmRpcikvCi0rCQkjICQoSU5TVEFMTF9FWEVDKSBpbml0c2NyaXB0LnNhbXBsZSAkKFJPT1QpJChzeXNjb25mZGlyKS8KICsJCWxuIC1zZiBoYWx0ICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvcmVib290CiArCQlsbiAtc2YgaGFsdCAkKFJPT1QpJChiYXNlX3NiaW5kaXIpL3Bvd2Vyb2ZmCiArCQlsbiAtc2YgaW5pdCAkKFJPT1QpJChiYXNlX3NiaW5kaXIpL3RlbGluaXQKQEAgLTY3LDE3ICs3NCwyMyBAQAogKwkJJChJTlNUQUxMX0RJUikgJChST09UKSQobWFuZGlyKS9tYW4xLwogKwkJJChJTlNUQUxMX0RJUikgJChST09UKSQobWFuZGlyKS9tYW41LwogKwkJJChJTlNUQUxMX0RJUikgJChST09UKSQobWFuZGlyKS9tYW44LwotIAkJZm9yIGkgaW4gJChNQU4xKTsgZG8gXAotLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKE1BTkRJUikvbWFuMS87IFwKLSsJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChtYW5kaXIpL21hbjEvOyBcCisgCQlmb3IgbWFuIGluICQoTUFOMSk7IGRvIFwKKy0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKE1BTkRJUikvbWFuMS87IFwKKy0JCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChNQU5ESVIpL21hbjEvJCRtYW4gOyBcCisrCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChtYW5kaXIpL21hbjEvOyBcCisrCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQobWFuZGlyKS9tYW4xLyQkbWFuIDsgXAogIAkJZG9uZQotIAkJZm9yIGkgaW4gJChNQU41KTsgZG8gXAotLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKE1BTkRJUikvbWFuNS87IFwKLSsJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChtYW5kaXIpL21hbjUvOyBcCisgCQlmb3IgbWFuIGluICQoTUFONSk7IGRvIFwKKy0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKE1BTkRJUikvbWFuNS87IFwKKy0JCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChNQU5ESVIpL21hbjUvJCRtYW4gOyBcCisrCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChtYW5kaXIpL21hbjUvOyBcCisrCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQobWFuZGlyKS9tYW41LyQkbWFuIDsgXAogIAkJZG9uZQotIAkJZm9yIGkgaW4gJChNQU44KTsgZG8gXAotLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKE1BTkRJUikvbWFuOC87IFwKLSsJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChtYW5kaXIpL21hbjgvOyBcCisgCQlmb3IgbWFuIGluICQoTUFOOCk7IGRvIFwKKy0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKE1BTkRJUikvbWFuOC87IFwKKy0JCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChNQU5ESVIpL21hbjgvJCRtYW4gOyBcCisrCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChtYW5kaXIpL21hbjgvOyBcCisrCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQobWFuZGlyKS9tYW44LyQkbWFuIDsgXAogIAkJZG9uZQogIGlmZXEgKCQoUk9PVCksKQogIAkJIwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaAppbmRleCA1YjVkZmRjLi40OTRhYTBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLXBpZG9mOiBhZGQgLW0gb3B0aW9uCitGcm9tIDZjNDkwZWE2NTc5YTEzMmZhYmI3ZGJkMjUzODdiYjUyMWY4MjAzNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI0IEp1bCAyMDEzIDE3OjA3OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHBpZG9mOiBhZGQgLW0gb3B0aW9uCiAKIFdoZW4gdXNlZCB3aXRoIC1vLCB3aWxsIGFsc28gb21pdCBhbnkgcHJvY2Vzc2VzIHRoYXQgaGF2ZSB0aGUgc2FtZQogYXJndlswXSBhbmQgYXJndlsxXSBhcyBhbnkgZXhwbGljaXRseSBvbWl0dGVkIHByb2Nlc3MgaWRzLiBUaGlzIGNhbiBiZQpAQCAtMTEsMjMgKzE0LDI1IEBACiBJbXBvcnRlZCBwYXRjaCBmcm9tOiBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vYXR0YWNobWVudC5jZ2k/aWQ9NjU4MTY2CiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gbWFuL3BpZG9mLjggICAgfCAgNiArKysrKysKLSBzcmMva2lsbGFsbDUuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KKyBtYW4vcGlkb2YuOCAgICB8ICA2ICsrKysrCisgc3JjL2tpbGxhbGw1LmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogIDIgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21hbi9waWRvZi44IGIvbWFuL3BpZG9mLjgKK2luZGV4IGViZTVmNTUuLjJmZGM0ZDMgMTAwNjQ0CiAtLS0gYS9tYW4vcGlkb2YuOAogKysrIGIvbWFuL3BpZG9mLjgKLUBAIC0yNCw2ICsyNCw3IEBAIHBpZG9mIC0tIGZpbmQgdGhlIHByb2Nlc3MgSUQgb2YgYSBydW5uaW5nIHByb2dyYW0uCi0gLlJCIFsgXC1jIF0KK0BAIC0yNSw2ICsyNSw3IEBAIHBpZG9mIC0tIGZpbmQgdGhlIHByb2Nlc3MgSUQgb2YgYSBydW5uaW5nIHByb2dyYW0uCiAgLlJCIFsgXC1uIF0KICAuUkIgWyBcLXggXQorIC5SQiBbIFwteiBdCiArLlJCIFsgXC1tIF0KICAuUkIgWyBcLW8KLSAuSVIgb21pdHBpZFssb21pdHBpZC4uXSBdCisgLklSIG9taXRwaWRbLG9taXRwaWQuLi5dIF0KICAuUkIgWyBcLW8KLUBAIC02Myw2ICs2NCwxMSBAQCBzaGVsbHMgcnVubmluZyB0aGUgbmFtZWQgc2NyaXB0cy4KK0BAIC03Niw2ICs3NywxMSBAQCBpcyBzaG93bi4gVGhlIGRlZmF1bHQgc2VwYXJhdG9yIGlzIGEgc3BhY2UuCiAgVGVsbHMgXGZJcGlkb2ZcZlAgdG8gb21pdCBwcm9jZXNzZXMgd2l0aCB0aGF0IHByb2Nlc3MgaWQuIFRoZSBzcGVjaWFsCiAgcGlkIFxmQiVQUElEXGZQIGNhbiBiZSB1c2VkIHRvIG5hbWUgdGhlIHBhcmVudCBwcm9jZXNzIG9mIHRoZSBcZklwaWRvZlxmUAogIHByb2dyYW0sIGluIG90aGVyIHdvcmRzIHRoZSBjYWxsaW5nIHNoZWxsIG9yIHNoZWxsIHNjcmlwdC4KQEAgLTQwLDEwICs0NSwxMCBAQAogIC5UUAogIC5CIDAKIGRpZmYgLS1naXQgYS9zcmMva2lsbGFsbDUuYyBiL3NyYy9raWxsYWxsNS5jCi1pbmRleCA1OTM3ZDk4Li5lNzM4ODVlIDEwMDY0NAoraW5kZXggOGI1Y2IzOC4uYTY2NDk1NCAxMDA2NDQKIC0tLSBhL3NyYy9raWxsYWxsNS5jCiArKysgYi9zcmMva2lsbGFsbDUuYwotQEAgLTExOCw2ICsxMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBfc19uZnMKK0BAIC0xMjYsNiArMTI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3NfbmZzCiAgCiAgLyogTGlzdCBvZiBwcm9jZXNzZXMuICovCiAgUFJPQyAqcGxpc3Q7CkBAIC01MSw3ICs1Niw3IEBACiAgCiAgLyogTGlzdCBvZiBwcm9jZXNzZXMgdG8gb21pdC4gKi8KICBPTUlUICpvbWl0OwotQEAgLTM0NSw2ICszNDYsMjAgQEAgc3RhdGljIHZvaWQgY2xlYXJfbW50KHZvaWQpCitAQCAtMzYxLDYgKzM2MiwyMCBAQCBzdGF0aWMgdm9pZCBjbGVhcl9tbnQodm9pZCkKICAJfQogIH0KICAKQEAgLTcwLDkgKzc1LDkgQEAKICt9CiArCiAgLyoKLSAgKiAgICAgQ2hlY2sgaWYgcGF0aCBpcyBpYSBzaGFkb3cgb2ZmIGEgTkZTIHBhcnRpdGlvbi4KKyAgKiAgICAgQ2hlY2sgaWYgcGF0aCBpcyBhIHNoYWRvdyBvZmYgYSBORlMgcGFydGl0aW9uLgogICAqLwotQEAgLTQ1Miw2ICs0NjcsNyBAQCBpbnQgcmVhZHByb2MoaW50IGRvX3N0YXQpCitAQCAtNDg2LDYgKzUwMSw3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKICAJRElSCQkqZGlyOwogIAlGSUxFCQkqZnA7CiAgCVBST0MJCSpwLCAqbjsKQEAgLTgwLDcgKzg1LDcgQEAKICAJc3RydWN0IGRpcmVudAkqZDsKICAJc3RydWN0IHN0YXQJc3Q7CiAgCWNoYXIJCXBhdGhbUEFUSF9NQVgrMV07Ci1AQCAtNjI0LDYgKzY0MCwxNyBAQCBpbnQgcmVhZHByb2MoaW50IGRvX3N0YXQpCitAQCAtNzMzLDYgKzc0OSwxNyBAQCBpbnQgcmVhZHByb2MoaW50IGRvX3N0YXQpCiAgCQlwLT5uZXh0ID0gcGxpc3Q7CiAgCQlwbGlzdCA9IHA7CiAgCQlwLT5waWQgPSBwaWQ7CkBAIC05OCw3ICsxMDMsNyBAQAogIAl9CiAgCWNsb3NlZGlyKGRpcik7CiAgCi1AQCAtODEzLDYgKzg0MCwyNiBAQCBQSURRX0hFQUQgKnBpZG9mKGNoYXIgKnByb2cpCitAQCAtOTQ0LDYgKzk3MSwyNiBAQCBQSURRX0hFQUQgKnBpZG9mKGNoYXIgKnByb2cpCiAgCXJldHVybiBxOwogIH0KICAKQEAgLTEyNSw0MiArMTMwLDQyIEBACiAgLyogR2l2ZSB1c2FnZSBtZXNzYWdlIGFuZCBleGl0LiAqLwogIHZvaWQgdXNhZ2Uodm9pZCkKICB7Ci1AQCAtODQ1LDYgKzg5Miw3IEBAIHZvaWQgbnN5c2xvZyhpbnQgcHJpLCBjaGFyICpmbXQsIC4uLikKLSAjZGVmaW5lIFBJRE9GX1NJTkdMRQkweDAxCitAQCAtOTk0LDYgKzEwNDEsNyBAQCB2b2lkIG5zeXNsb2coaW50IHByaSwgY2hhciAqZm10LCAuLi4pCiAgI2RlZmluZSBQSURPRl9PTUlUCTB4MDIKICAjZGVmaW5lIFBJRE9GX05FVEZTCTB4MDQKKyAjZGVmaW5lIFBJRE9GX1FVSUVUICAgICAweDA4CiArI2RlZmluZSBQSURPRl9PTUlUX09NSVRfTUFUQ0hFUwkweDA4CiAgCiAgLyoKICAgKglQaWRvZiBmdW5jdGlvbmFsaXR5LgotQEAgLTg2MSw2ICs5MDksNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXN0cnVjdCBzdGF0CXN0OworQEAgLTEwMTEsNiArMTA1OSw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJY2hhcgkJdG1wWzUxMl07CisgICAgICAgICBjaGFyICAgICAgICAgICAgc2VwID0gJyAnOwogIAogKwlvbGlzdCA9IChQUk9DKikwOwogIAlvbWl0ID0gKE9NSVQqKTA7CiAgCW5saXN0ID0gKE5GUyopMDsKICAJb3B0ZXJyID0gMDsKLUBAIC04NjgsNyArOTE3LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTEwMTgsNyArMTA2Nyw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJaWYgKCh0b2tlbiA9IGdldGVudigiUElET0ZfTkVURlMiKSkgJiYgKHN0cmNtcCh0b2tlbiwibm8iKSAhPSAwKSkKICAJCWZsYWdzIHw9IFBJRE9GX05FVEZTOwogIAotLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLGFyZ3YsImhjbzpzeG4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgewotKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLGFyZ3YsImhjbW86c3huIikpICE9IEVPRikgc3dpdGNoIChvcHQpIHsKKy0Jd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYyxhcmd2LCJxaGNvOmQ6c3h6biIpKSAhPSBFT0YpIHN3aXRjaCAob3B0KSB7CisrCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwicWhjbW86ZDpzeHpuIikpICE9IEVPRikgc3dpdGNoIChvcHQpIHsKICAJCWNhc2UgJz8nOgogIAkJCW5zeXNsb2coTE9HX0VSUiwiaW52YWxpZCBvcHRpb25zIG9uIGNvbW1hbmQgbGluZSFcbiIpOwogIAkJCWNsb3NlbG9nKCk7Ci1AQCAtOTA3LDYgKzk1Niw5IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCWNhc2UgJ3gnOgotIAkJCXNjcmlwdHNfdG9vKys7Ci0gCQkJYnJlYWs7CitAQCAtMTA2OSw2ICsxMTE4LDkgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICAgICAgICBjYXNlICd6JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2R6X3Byb2Nlc3NlcyA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiArCQljYXNlICdtJzoKICsJCQlmbGFncyB8PSBQSURPRl9PTUlUX09NSVRfTUFUQ0hFUzsKICsJCQlicmVhazsKICAJCWNhc2UgJ24nOgogIAkJCWZsYWdzIHw9IFBJRE9GX05FVEZTOwogIAkJCWJyZWFrOwotQEAgLTkzOCwxMCArOTkwLDEzIEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xMTAwLDEwICsxMTUyLDEzIEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCQlwaWRfdCBzcGlkID0gMDsKICAJCQl3aGlsZSAoKHAgPSBnZXRfbmV4dF9mcm9tX3BpZF9xKHEpKSkgewogIAkJCQlpZiAoKGZsYWdzICYgUElET0ZfT01JVCkgJiYgb21pdCkgewpAQCAtMTc2LDE0ICsxODEsMTEgQEAKICAJCQkJCX0KICAKICAJCQkJCS8qCi1AQCAtOTc3LDYgKzEwMzIsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWlmICghZmlyc3QpCitAQCAtMTE0NSw2ICsxMjAwLDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJcHJpbnRmKCJcbiIpOworICAgICAgICAgfQogIAogKwljbGVhcl9vbWl0KCk7CiAgCWNsZWFyX21udCgpOwogIAogIAljbG9zZWxvZygpOwotLS0gCi0xLjguMS4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcmVhbHBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3JlYWxwYXRoLnBhdGNoCmluZGV4IDVlMGRjYTMuLjg1OWZkOGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcmVhbHBhdGgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaApAQCAtMSw0ICsxLDggQEAKLUZpeCBidWlsZCBvbiBtdXNsIHVzZSByZWFscGF0aCgpIEFQSSBpdHMgYXZhaWxhYmxlIG9uIGFsbCBsaWJjcworRnJvbSBlYjE1OGM5N2YxOWQ0NzNkMDFiZWZlOTYzNTlhN2Y5M2FlODM0NTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTkgTm92IDIwMTUgMDA6MTA6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIG11c2wgdXNlIHJlYWxwYXRoKCkgQVBJIGl0cyBhdmFpbGFibGUgb24gYWxsCisgbGliY3MKIAogcmVhbHBhdGgoKSBBUEkgZG9lc250IHdvcmsgb24gc3lzdGVtcyB3aXRoIFBBVEhfTUFYIHNldCB0byBiZSB1bmxpbWl0ZWQgZS5nLiBHTlUvSHVyZAogSG93ZXZlciBmb3IgTGludXggaXQgc2hvdWxkIGFsd2F5cyB3b3JrCkBAIC03LDUyICsxMSwxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvaWZkb3duLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL2lmZG93bi5jCTIwMTAtMDMtMjMgMDc6Mzc6MDEuMDAwMDAwMDAwIC0wNzAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvaWZkb3duLmMJMjAxNC0wNC0wMiAwMDo0Mzo0My42NzU0MzcwMjkgLTA3MDAKLUBAIC0yNiwxMSArMjYsMTEgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0tI2luY2x1ZGUgPHN5cy9lcnJuby5oPgotIAotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL2luaXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvaW5pdC5jCTIwMTQtMDQtMDIgMDA6NDI6MTAuNDg4NzcwMTYyIC0wNzAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvaW5pdC5jCTIwMTQtMDQtMDIgMDA6NDI6NTkuNDMyMTAzODIzIC0wNzAwCi1AQCAtNDksNiArNDksNyBAQAotICNpbmNsdWRlIDx1dG1wLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzeXMvdHR5ZGVmYXVsdHMuaD4KLSAjaW5jbHVkZSA8c3lzL3N5c2xvZy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotIAotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL21vdW50cG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvbW91bnRwb2ludC5jCTIwMDktMDktMTAgMDE6Mjg6NDkuMDAwMDAwMDAwIC0wNzAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvbW91bnRwb2ludC5jCTIwMTQtMDQtMDIgMDA6NDQ6MTguMjQ4NzcwOTQyIC0wNzAwCi1AQCAtMjMsNiArMjMsNyBAQAotICAqCQlGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gICovCi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMva2lsbGFsbDUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMva2lsbGFsbDUuYwkyMDE0LTAzLTI2IDAwOjQ5OjUyLjk4MjY2ODA3NCAtMDcwMAotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL2tpbGxhbGw1LmMJMjAxNC0wNC0wMiAwMDo0Njo0NS44Mzg3NzE2NTMgLTA3MDAKLUBAIC04NDYsOSArODQ2LDkgQEAKKy0tLQorIHNyYy9raWxsYWxsNS5jICAgfCA0ICsrLS0KKyBzcmMvbW91bnRwb2ludC5jIHwgMSArCisgc3JjL3dhbGwuYyAgICAgICB8IDEgKworIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2tpbGxhbGw1LmMgYi9zcmMva2lsbGFsbDUuYworaW5kZXggYTY2NDk1NC4uOTc5ODQyMyAxMDA2NDQKKy0tLSBhL3NyYy9raWxsYWxsNS5jCisrKysgYi9zcmMva2lsbGFsbDUuYworQEAgLTk3Nyw5ICs5NzcsOSBAQCBpbnQgbWF0Y2hlcyhQUk9DICpvLCBQUk9DICpwKQogIAljaGFyICpvYXJndjEsICpwYXJndjE7CiAgCWlmICgoby0+YXJndjAgJiYgcC0+YXJndjAgJiYgIXN0cmNtcChvLT5hcmd2MCxwLT5hcmd2MCkpKSB7CiAgCQlpZiAoby0+YXJndjEgJiYgcC0+YXJndjEpIHsKQEAgLTY0LDE0ICszMywyNiBAQAogIAkJCQlwYXJndjEgPSBzdHJkdXAocC0+YXJndjEpOwogIAkJCWlmICghIHN0cmNtcChvYXJndjEsIHBhcmd2MSkpIHsKICAJCQkJcmV0ID0gMTsKLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy93YWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL3dhbGwuYwkyMDA5LTExLTIyIDE0OjA1OjUzLjAwMDAwMDAwMCAtMDgwMAotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL3dhbGwuYwkyMDE0LTA0LTAyIDAwOjQ5OjE1LjI1ODc3MjIxNyAtMDcwMAotQEAgLTI5LDYgKzI5LDcgQEAKK2RpZmYgLS1naXQgYS9zcmMvbW91bnRwb2ludC5jIGIvc3JjL21vdW50cG9pbnQuYworaW5kZXggYjI0MzM1ZS4uNWYyMDUyMiAxMDA2NDQKKy0tLSBhL3NyYy9tb3VudHBvaW50LmMKKysrKyBiL3NyYy9tb3VudHBvaW50LmMKK0BAIC0yMyw2ICsyMyw3IEBACisgICoJCUZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9zcmMvd2FsbC5jIGIvc3JjL3dhbGwuYworaW5kZXggZDNhMmM3MC4uMDA4MjZlOSAxMDA2NDQKKy0tLSBhL3NyYy93YWxsLmMKKysrKyBiL3NyYy93YWxsLmMKK0BAIC0zMCw2ICszMCw3IEBACiAgI2luY2x1ZGUgPHB3ZC5oPgogICNpbmNsdWRlIDxzeXNsb2cuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiArI2luY2x1ZGUgPHRpbWUuaD4KICAjaW5jbHVkZSAiaW5pdC5oIgogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmQ2ZGY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbS1WIGxpa2UgaW5pdCIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpcyByZXF1aXJlZCB0byBib290IGluIG1vc3QgY29uZmlndXJhdGlvbnMuICBJdCBwcm92aWRlcyB0aGUgL3NiaW4vaW5pdCBwcm9ncmFtLiAgVGhpcyBpcyB0aGUgZmlyc3QgcHJvY2VzcyBzdGFydGVkIG9uIGJvb3QsIGFuZCB0aGUgbGFzdCBwcm9jZXNzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSBzeXN0ZW0gaGFsdHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvc3lzdmluaXQvIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZUklHSFQ7ZW5kbGluZT0xNTttZDU9MzQ5Yzg3MmUwMDY2MTU1ZTE4MThiNzg2OTM4ODc2YTQiCi1QUiA9ICJyMTQiCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LWluaXR0YWIiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9zeXN2aW5pdC9zeXN2aW5pdC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3J5cHQtbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRoaXMtZml4ZXMtYW4taXNzdWUtdGhhdC1jbGFuZy1yZXBvcnRzLWFib3V0LW11dGxpcGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVhbHBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JjUy1kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL3JjIFwKLSAgICAgICAgICAgZmlsZTovL3JjUyBcCi0gICAgICAgICAgIGZpbGU6Ly9ib290bG9nZC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovLzAxX2Jvb3Rsb2dkIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZlZGE4YTk3Yjg2ZTBhNmY1OWRhYmJmMjUyMDJhYTZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwYmJjOGMxZTE3OTIwNTZlMjM3NjFkMjI5NjBiMzBiYjEzZWNjYzJjYWJmZjhjNzMxMGEwMWY0ZDVkZjE1MTkiCi0KLVMgPSAiJHtXT1JLRElSfS9zeXN2aW5pdC0ke1BWfSIKLUIgPSAiJHtTfS9zcmMiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBmZWF0dXJlc19jaGVjawotREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSBiYXNlLXBhc3N3ZCB2aXJ0dWFsL2NyeXB0IgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdmluaXQiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImluaXQgbW91bnRwb2ludCBoYWx0IHJlYm9vdCBydW5sZXZlbCBzaHV0ZG93biBwb3dlcm9mZiBsYXN0IGxhc3RiIG1lc2cgdXRtcGR1bXAgd2FsbCIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAwIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW5pdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2luaXQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtpbml0XSA9ICI1MCIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnRdID0gIiR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQiCi1BTFRFUk5BVElWRV9QUklPUklUWVttb3VudHBvaW50XSA9ICIyMCIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGlkb2YgPSAicGlkb2YiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGlkb2ZdID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mIgotCi1BTFRFUk5BVElWRV8ke1BOfS1zdWxvZ2luID0gInN1bG9naW4iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4iCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJtb3VudHBvaW50LjEgbGFzdC4xIGxhc3RiLjEgbWVzZy4xIHdhbGwuMSBzdWxvZ2luLjggdXRtcGR1bXAuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3QuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3RiLjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3RiLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWVzZy4xXSA9ICIke21hbmRpcn0vbWFuMS9tZXNnLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludC4xXSA9ICIke21hbmRpcn0vbWFuMS9tb3VudHBvaW50LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9zdWxvZ2luLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXRtcGR1bXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXRtcGR1bXAuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3YWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL3dhbGwuMSIKLQotUEFDS0FHRVMgPSsgInN5c3Zpbml0LXBpZG9mIHN5c3Zpbml0LXN1bG9naW4iCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX3NiaW5kaXJ9LyogJHtiYXNlX2JpbmRpcn0vKiIKLUZJTEVTX3N5c3Zpbml0LXBpZG9mID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mLnN5c3Zpbml0ICR7YmFzZV9zYmluZGlyfS9raWxsYWxsNSIKLUZJTEVTX3N5c3Zpbml0LXN1bG9naW4gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4uc3lzdmluaXQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJzeXN2aW5pdC1waWRvZiBpbml0ZC1mdW5jdGlvbnMiCi0KLUNGTEFHU19wcmVwZW5kID0gIi1EX0dOVV9TT1VSQ0UgIgotZXhwb3J0IExDUllQVCA9ICItbGNyeXB0IgotRVhUUkFfT0VNQUtFICs9ICInYmFzZV9iaW5kaXI9JHtiYXNlX2JpbmRpcn0nIFwKLQkJICdiYXNlX3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBcCi0JCSAnYmluZGlyPSR7YmluZGlyfScgXAotCQkgJ3NiaW5kaXI9JHtzYmluZGlyfScgXAotCQkgJ3N5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAotCQkgJ2luY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfScgXAotCQkgJ21hbmRpcj0ke21hbmRpcn0nIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICdST09UPSR7RH0nIGluc3RhbGwKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gXAotCQkgICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0IFwKLQkJICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JZm9yIGxldmVsIGluIFMgMCAxIDIgMyA0IDUgNjsgZG8KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9yYyRsZXZlbC5kCi0JZG9uZQotCi0JaW5zdGFsbCAtbSAwNjQ0ICAgICR7V09SS0RJUn0vcmNTLWRlZmF1bHQJJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9yY1MKLQlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yYwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vcmNTCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9ib290bG9nZC5pbml0ICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYm9vdGxvZ2QKLQlsbiAtc2YgYm9vdGxvZ2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N0b3AtYm9vdGxvZ2QKLQotCXVwZGF0ZS1yYy5kIC1yICR7RH0gYm9vdGxvZ2Qgc3RhcnQgMDcgUyAuCi0JdXBkYXRlLXJjLmQgLXIgJHtEfSBzdG9wLWJvb3Rsb2dkIHN0YXJ0IDk5IDIgMyA0IDUgLgotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAxX2Jvb3Rsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0KLQljaG93biByb290OnNodXRkb3duICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCi0JY2htb2Qgby14LHUrcyAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjk2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjk2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjg1ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuOTYuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiU3lzdGVtLVYgbGlrZSBpbml0IgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIGJvb3QgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gIEl0IHByb3ZpZGVzIHRoZSAvc2Jpbi9pbml0IHByb2dyYW0uICBUaGlzIGlzIHRoZSBmaXJzdCBwcm9jZXNzIHN0YXJ0ZWQgb24gYm9vdCwgYW5kIHRoZSBsYXN0IHByb2Nlc3MgdGVybWluYXRlZCBiZWZvcmUgdGhlIHN5c3RlbSBoYWx0cy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9zeXN2aW5pdC8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlSSUdIVDtlbmRsaW5lPTE1O21kNT1hMWQzYjM1MjY1MDFkMzU0NmQ1MzBiYmU2YWI2Y2RiZSBcCisgICAgICAgICAgICAgICAgICAgICIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0taW5pdHRhYiIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L3N5c3Zpbml0L3N5c3Zpbml0LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NyeXB0LWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVhbHBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JjUy1kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL3JjIFwKKyAgICAgICAgICAgZmlsZTovL3JjUyBcCisgICAgICAgICAgIGZpbGU6Ly9ib290bG9nZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzAxX2Jvb3Rsb2dkIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjQ4Y2ViZmZlYmYyYTk2YWIwOWJlYzE0YmY5OTc2MDE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhMmUyNmI3MmFhMjM1YTIzYWIxYzg0NzEwMDVmODkwMzA5Y2UxMTk2YzgzZmJjOTQxM2M1N2I5YWI2MmI1ODciCisKK1MgPSAiJHtXT1JLRElSfS9zeXN2aW5pdC0ke1BWfSIKK0IgPSAiJHtTfS9zcmMiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBmZWF0dXJlc19jaGVjaworREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSBiYXNlLXBhc3N3ZCB2aXJ0dWFsL2NyeXB0IgorZG9fcGFja2FnZV9zZXRzY2VuZVtkZXBlbmRzXSA9ICIke01MUFJFRklYfWJhc2UtcGFzc3dkOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBtb3VudHBvaW50IGhhbHQgcmVib290IHJ1bmxldmVsIHNodXRkb3duIHBvd2Vyb2ZmIGxhc3QgbGFzdGIgbWVzZyB1dG1wZHVtcCB3YWxsIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID0gIjUwIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludF0gPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW21vdW50cG9pbnRdID0gIjIwIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgorCitBTFRFUk5BVElWRV8ke1BOfS1waWRvZiA9ICJwaWRvZiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwaWRvZl0gPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2YiCisKK0FMVEVSTkFUSVZFXyR7UE59LXN1bG9naW4gPSAic3Vsb2dpbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIHN1bG9naW4uOCB1dG1wZHVtcC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdGIuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdGIuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVttZXNnLjFdID0gIiR7bWFuZGlyfS9tYW4xL21lc2cuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vdW50cG9pbnQuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L3N1bG9naW4uOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1dG1wZHVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS91dG1wZHVtcC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3dhbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEvd2FsbC4xIgorCitQQUNLQUdFUyA9KyAic3lzdmluaXQtcGlkb2Ygc3lzdmluaXQtc3Vsb2dpbiIKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2Vfc2JpbmRpcn0vKiAke2Jhc2VfYmluZGlyfS8qIgorRklMRVNfc3lzdmluaXQtcGlkb2YgPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2Yuc3lzdmluaXQgJHtiYXNlX3NiaW5kaXJ9L2tpbGxhbGw1IgorRklMRVNfc3lzdmluaXQtc3Vsb2dpbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbi5zeXN2aW5pdCIKKworUkRFUEVORFNfJHtQTn0gKz0gInN5c3Zpbml0LXBpZG9mIGluaXRkLWZ1bmN0aW9ucyBiYXNlLXBhc3N3ZCIKKworQ0ZMQUdTX3ByZXBlbmQgPSAiLURfR05VX1NPVVJDRSAiCitleHBvcnQgTENSWVBUID0gIi1sY3J5cHQiCitFWFRSQV9PRU1BS0UgKz0gIidiYXNlX2JpbmRpcj0ke2Jhc2VfYmluZGlyfScgXAorCQkgJ2Jhc2Vfc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIFwKKwkJICdiaW5kaXI9JHtiaW5kaXJ9JyBcCisJCSAnc2JpbmRpcj0ke3NiaW5kaXJ9JyBcCisJCSAnc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCisJCSAnaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9JyBcCisJCSAnbWFuZGlyPSR7bWFuZGlyfScgXAorICAgICAgICAgICAgICAgICBNTlRQT0lOVD15ZXMiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgJ1JPT1Q9JHtEfScgaW5zdGFsbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSBcCisJCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAorCQkgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlmb3IgbGV2ZWwgaW4gUyAwIDEgMiAzIDQgNSA2OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3JjJGxldmVsLmQKKwlkb25lCisKKwlpbnN0YWxsIC1tIDA2NDQgICAgJHtXT1JLRElSfS9yY1MtZGVmYXVsdAkke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JjUworCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yY1MJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L2Jvb3Rsb2dkLmluaXQgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ib290bG9nZAorCWxuIC1zZiBib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3RvcC1ib290bG9nZAorCisJdXBkYXRlLXJjLmQgLXIgJHtEfSBib290bG9nZCBzdGFydCAwNyBTIC4KKwl1cGRhdGUtcmMuZCAtciAke0R9IHN0b3AtYm9vdGxvZ2Qgc3RhcnQgOTkgMiAzIDQgNSAuCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDFfYm9vdGxvZ2QgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKworCWNob3duIHJvb3Q6c2h1dGRvd24gJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KKwljaG1vZCBvLXgsdStzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCisKKyAgICAgICAgIyBBbHJlYWR5IHByb3ZpZGVkIGJ5IGUyZnNwcm9nczsgc3lzdmluaXQncyB2ZXJzaW9uIGlzIGEgY29weSBmcm9tIHRoZXJlCisgICAgICAgIHJtICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbG9nc2F2ZQorICAgICAgICBybSAke0R9JHttYW5kaXJ9L21hbjgvbG9nc2F2ZS44Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NzI5ZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgotTElDRU5TRSA9ICJHUEx2Mi4wKyAmIExHUEwtMi4xKyIKLUxJQ0VOU0VfbGlidWRldiA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGttb2QgbGlieHNsdC1uYXRpdmUgdXRpbC1saW51eCIKLQotUFJPVklERVMgPSAidWRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGV2LmdlbnRvby5vcmcvfmJsdWVuZXNzLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZTE2NmIzZmRkOTEwYzJhNGE4NDAzNzhmNDhmZWRhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MWU0OTQ4ZTllNTEyNzFjM2NjZTJiYjUzMTFhMzBiMjA2ZGQwM2VmMDExMDYyZTZjNjI3ZmIwMDdlNDNmNmI4IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBxZW11IHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi1DT05GTElDVF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290bGliZXhlY2Rpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJod2RiIgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCi0KLQkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcwotCi0JIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKLQotCSMgZHVwbGljYXRlIHVkZXZhZG0gZm9yIHBvc3RpbnN0IHNjcmlwdAotCWluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KLQlsbiAke0R9JHtiaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lCi0Jc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCQkke0J9L3NyYy91ZGV2L2tleWJvYXJkLWtleXMtZnJvbS1uYW1lLmgKLX0KLQotSU5JVFNDUklQVF9OQU1FID0gInVkZXYiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNCBTIC4iCi0KLVBBQ0tBR0VTID0rICJsaWJ1ZGV2IgotUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCi0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCi1GSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKLUZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCi0KLVJQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCi1SUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgewotICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgotICAgICAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9Ci0gICAgZWxzZQotICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLSAgICBmaQotfQotCi1wa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7Ci0gICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2ZjhjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOS5iYgpAQCAtMCwwICsxLDk2IEBACitTVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCitMSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgorTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgorCitQUk9WSURFUyA9ICJ1ZGV2IgorCitTUkNfVVJJID0gImh0dHBzOi8vZGV2LmdlbnRvby5vcmcvfmJsdWVuZXNzLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXZmcy11ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vbGlua3MuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9sb2NhbC5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJtaXNzaW9ucy5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vdWRldi5ydWxlcyBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZWRmYjE5NjRmNjA5OGZlOTMyMGRlODI3OTU3MzMxZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OTYxODYxOTA4NGExOWUxNDUxZDM3M2M0M2YxNDFiNDY5YzlmZDA5NzY3OTczZDczZGQyNjhiOTIwNzRkNGZjIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBxZW11IHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitDT05GTElDVF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZXhlY2Rpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgXAorICAgIC0td2l0aC1yb290cHJlZml4PSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJod2RiIgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKwlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCisKKwkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcworCisJIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKKworCSMgZHVwbGljYXRlIHVkZXZhZG0gZm9yIHBvc3RpbnN0IHNjcmlwdAorCWluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KKwlsbiAke0R9JHtiaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lCisJc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCQkke0J9L3NyYy91ZGV2L2tleWJvYXJkLWtleXMtZnJvbS1uYW1lLmgKK30KKworSU5JVFNDUklQVF9OQU1FID0gInVkZXYiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNCBTIC4iCisKK1BBQ0tBR0VTID0rICJsaWJ1ZGV2IgorUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCisKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCitGSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKK0ZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKKworUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCisKK1JQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCitSUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgorcGtnX3Bvc3RpbnN0X2V1ZGV2LWh3ZGIgKCkgeworICAgIGlmIHRlc3QgLW4gIiREIjsgdGhlbgorICAgICAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9CisgICAgZWxzZQorICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKyAgICBmaQorfQorCitwa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7CisgICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKaW5kZXggMWZhODIzNi4uMDU2NjU2OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwpAQCAtOCw3ICs4LDcgQEAKIAogTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMy1DbGF1c2UgJiBCU0QtNC1DbGF1c2UiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5saWNlbnNpbmc7bWQ1PTk3MmExMzRmMWUxNGIyYjA2MGUzNjVkZjJmYWIwMDk5IFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5saWNlbnNpbmc7bWQ1PTBmZDVjMDUwYzYxODdkMmJmMGE0NDkyYjdmNGUzM2RhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0RvY3VtZW50YXRpb24vbGljZW5zZXMvQ09QWUlORy5HUEwtMi4wLW9yLWxhdGVyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Eb2N1bWVudGF0aW9uL2xpY2Vuc2VzL0NPUFlJTkcuTEdQTC0yLjEtb3ItbGF0ZXI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKQEAgLTEwNSw3ICsxMDUsMTMgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLWVuYWJsZS1zZXRwcml2IgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1jYXAtbmcgLS1kaXNhYmxlLXNldHByaXYiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLS13aXRob3V0LWNhcC1uZyAtLWRpc2FibGUtc2V0cHJpdiIKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tZGlzYWJsZS1od2Nsb2NrLWdwbHYzIgogCisjIGVuYWJsZSBwY3JlMiBmb3IgbmF0aXZlL25hdGl2ZXNkayB0byBtYXRjaCBob3N0IGRpc3Ryb3MKKyMgdGhpcyBoZWxwcyB0byBrZWVwIHNhbWUgZXhwZWN0YXRpb25zIHdoZW4gdXNpbmcgdGhlIFNESyBvcgorIyBidWlsZCBob3N0IHZlcnNpb25zIGR1cmluZyBkZXZlbG9wbWVudAorIworUEFDS0FHRUNPTkZJRyA/PSAicGNyZTIiCiBQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgogIyBpbmhlcml0IG1hbnBhZ2VzIHJlcXVpcmVzIHRoaXMgdG8gYmUgcHJlc2VudCwgaG93ZXZlciB1dGlsLWxpbnV4IGRvZXMgbm90IGhhdmUgCiAjIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIGluc3RhbGxzIG1hbnBhZ2VzIGFsd2F5cwpAQCAtMTE3LDYgKzEyMyw4IEBACiBQQUNLQUdFQ09ORklHW3B5bGlibW91bnRdID0gIi0td2l0aC1weXRob249MyAtLWVuYWJsZS1weWxpYm1vdW50LC0td2l0aG91dC1weXRob24gLS1kaXNhYmxlLXB5bGlibW91bnQscHl0aG9uMyIKICMgUmVhZGxpbmUgc3VwcG9ydAogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lLC0td2l0aG91dC1yZWFkbGluZSxyZWFkbGluZSIKKyMgUENSRSBzdXBwb3J0IGluIGhhcmRsaW5rCitQQUNLQUdFQ09ORklHW3BjcmUyXSA9ICIsLGxpYnBjcmUyIgogCiBFWFRSQV9PRU1BS0UgPSAiQVJDSD0ke1RBUkdFVF9BUkNIfSBDUFU9IENQVU9QVD0gJ09QVD0ke0NGTEFHU30nIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWh3Y2xvY2stZml4LWZvci1nbGliYy0yLjMxLXNldHRpbWVvZmRheS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NzJjMzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWh3Y2xvY2stZml4LWZvci1nbGliYy0yLjMxLXNldHRpbWVvZmRheS5wYXRjaApAQCAtMCwwICsxLDExMiBAQAorRnJvbSBlZTg1ZDM5NjdlYTA5YjIxNWZjZWE1ZWZkZDkwYmJiZjVlNzRhNjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE5IEZlYiAyMDIwIDE1OjUwOjQ3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGh3Y2xvY2s6IGZpeCBmb3IgZ2xpYmMgMi4zMSBzZXR0aW1lb2ZkYXkoKQorCitnbGliYyBhbm5vdW5jZToKKyAgLi4uIHNldHRpbWVvZmRheSBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgdG8gc2V0IHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0CisgIHNpbXVsdGFuZW91c2x5LiBJZiBib3RoIG9mIGl0cyB0d28gYXJndW1lbnRzIGFyZSBub24tbnVsbCwgdGhlIGNhbGwKKyAgd2lsbCBmYWlsIChzZXR0aW5nIGVycm5vIHRvIEVJTlZBTCkuCisKK0l0IG1lYW5zIHdlIG5lZWQgdG8gY2FsbCBzZXR0aW1lb2ZkYXkoTlVMTCwgdHopIGFuZCBzZXR0aW1lb2ZkYXkodHYsIE5VTEwpLgorCitVbmZvcnR1bmF0ZWx5LCBzZXR0aW1lb2ZkYXkoTlVMTCwgdHopIGhhcyB2ZXJ5IHNwZWNpYWwgd2FycC1jbG9jaworc2VtYW50aWMgaWYgdXNlZCBhcyB0aGUgdmVyeSBmaXJzdCBzZXR0aW1lb2ZkYXkoKSBjYWxsLiBJdCBtZWFucyB3ZQoraGF2ZSB0byBiZSBzdXJlIHRoYXQgd2UgZG8gbm90IHRvdWNoIHdhcnAtY2xvY2sgaWYgd2UgbmVlZCBvbmx5IG5lZWQKK3RvIG1vZGlmeSBzeXN0ZW0gVFouIFNvLCBsZXQncyBhbHdheXMgY2FsbCBzZXR0aW1lb2ZkYXkoTlVMTCwgMCkKK2JlZm9yZSBzZXR0aW1lb2ZkYXkoTlVMTCwgdHopIGZvciBVVEMgcnRjIG1vZGUgd2hlbiBtb2RpZnkgc3lzdGVtIFRaLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9jb21taXQvZWU4NWQzOTY3ZWEwOWIyMTVmY2VhNWVmZGQ5MGJiYmY1ZTc0YTY4MV0KKworQ0M6IEogV2lsbGlhbSBQaWdnb3R0IDxlbHNlaWZ0aGVuQGdteC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KK0FkZHJlc3NlczogaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvaXNzdWVzLzk1NworU2lnbmVkLW9mZi1ieTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3lzLXV0aWxzL2h3Y2xvY2suYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5cy11dGlscy9od2Nsb2NrLmMgYi9zeXMtdXRpbHMvaHdjbG9jay5jCitpbmRleCBlNzM2ZGE3MTc5ZjguLjE2NTc2YmMxODZmZiAxMDA2NDQKKy0tLSBhL3N5cy11dGlscy9od2Nsb2NrLmMKKysrKyBiL3N5cy11dGlscy9od2Nsb2NrLmMKK0BAIC02NTgsNiArNjU4LDkgQEAgZGlzcGxheV90aW1lKHN0cnVjdCB0aW1ldmFsIGh3Y3RpbWUpCisgICogUENJTDogcGVyc2lzdGVudF9jbG9ja19pc19sb2NhbCwgc2V0cyB0aGUgIjExIG1pbnV0ZSBtb2RlIiB0aW1lc2NhbGUuCisgICogZmlyc3R0aW1lOiBsb2NrcyB0aGUgd2FycF9jbG9jayBmdW5jdGlvbiAoaW5pdGlhbGl6ZWQgdG8gMSBhdCBib290KS4KKyAgKgorKyAqIE5vdGUgdGhhdCB2ZXJ5IGZpcnN0IHNldHRpbWVvZmRheShOVUxMLCB0eikgbW9kaWZpZXMgd2FycC1jbG9jayBhcyB3ZWxsIGFzCisrICogc3lzdGVtIFRaLgorKyAqCisgICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgKiB8ICBvcCAgICAgfCBSVEMgc2NhbGUgfCBzZXR0aW1lb2ZkYXkgY2FsbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAqIHwtLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CitAQCAtNjc1LDQxICs2NzgsNDUgQEAgc2V0X3N5c3RlbV9jbG9jayhjb25zdCBzdHJ1Y3QgaHdjbG9ja19jb250cm9sICpjdGwsCisgCXN0cnVjdCB0bSBicm9rZW47CisgCWludCBtaW51dGVzd2VzdDsKKyAJaW50IHJjID0gMDsKKy0JY29uc3Qgc3RydWN0IHRpbWV6b25lIHR6X3V0YyA9IHsgMCB9OworIAorIAlsb2NhbHRpbWVfcigmbmV3dGltZS50dl9zZWMsICZicm9rZW4pOworIAltaW51dGVzd2VzdCA9IC1nZXRfZ210b2ZmKCZicm9rZW4pIC8gNjA7CisgCisgCWlmIChjdGwtPnZlcmJvc2UpIHsKKy0JCWlmIChjdGwtPmhjdG9zeXMgJiYgIWN0bC0+dW5pdmVyc2FsKQorLQkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAlZCkgdG8gc2V0ICIKKy0JCQkJICJwZXJzaXN0ZW50X2Nsb2NrX2lzX2xvY2FsLlxuIiksIG1pbnV0ZXN3ZXN0KTsKKy0JCWlmIChjdGwtPnN5c3R6ICYmIGN0bC0+dW5pdmVyc2FsKQorKwkJaWYgKGN0bC0+dW5pdmVyc2FsKQorIAkJCXB1dHMoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgMCkgIgorLQkJCQkidG8gbG9jayB0aGUgd2FycCBmdW5jdGlvbi4iKSk7CisrCQkJICAgICAgICJ0byBsb2NrIHRoZSB3YXJwIGZ1bmN0aW9uLiIpKTsKKysJCWVsc2UKKysJCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgJWQpIHRvIHNldCAiCisrCQkJCSAicGVyc2lzdGVudF9jbG9ja19pc19sb2NhbCBhbmQgIgorKwkJCQkgInRoZSBrZXJuZWwgdGltZXpvbmUuXG4iKSwgbWludXRlc3dlc3QpOworKworKwkJaWYgKGN0bC0+dW5pdmVyc2FsICYmIG1pbnV0ZXN3ZXN0KQorKwkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAlZCkgdG8gc2V0ICIKKysJCQkJICJ0aGUga2VybmVsIHRpbWV6b25lLlxuIiksIG1pbnV0ZXN3ZXN0KTsKKysKKyAJCWlmIChjdGwtPmhjdG9zeXMpCistCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KCVsZC4lMDZsZCwgJWQpXG4iKSwKKy0JCQkgICAgICAgbmV3dGltZS50dl9zZWMsIG5ld3RpbWUudHZfdXNlYywgbWludXRlc3dlc3QpOworLQkJZWxzZSB7CistCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSAiKSwgbWludXRlc3dlc3QpOworLQkJCWlmIChjdGwtPnVuaXZlcnNhbCkKKy0JCQkJIHB1dHMoXygidG8gc2V0IHRoZSBrZXJuZWwgdGltZXpvbmUuIikpOworLQkJCWVsc2UKKy0JCQkJIHB1dHMoXygidG8gd2FycCBTeXN0ZW0gdGltZS4iKSk7CistCQl9CisrCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KCVsZC4lMDZsZCwgMCkgdG8gc2V0ICIKKysJCQkgICAgICAgICAidGhlIGtlcm5lbCB0aW1lLlxuIiksIG5ld3RpbWUudHZfc2VjLCBuZXd0aW1lLnR2X3VzZWMpOworIAl9CisgCisgCWlmICghY3RsLT50ZXN0aW5nKSB7CisrCQljb25zdCBzdHJ1Y3QgdGltZXpvbmUgdHpfdXRjID0geyAwIH07CisgCQljb25zdCBzdHJ1Y3QgdGltZXpvbmUgdHogPSB7IG1pbnV0ZXN3ZXN0IH07CisgCistCQlpZiAoY3RsLT5oY3Rvc3lzICYmICFjdGwtPnVuaXZlcnNhbCkJLyogc2V0IFBDSUwgKi8KKysJCS8qIHdhcnAtY2xvY2sgKi8KKysJCWlmIChjdGwtPnVuaXZlcnNhbCkKKysJCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHpfdXRjKTsgLyogbG9jayB0byBVVEMgKi8KKysJCWVsc2UKKysJCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHopOyAgICAgLyogc2V0IFBDSUwgYW5kIFRaICovCisrCisrCQkvKiBzZXQgdGltZXpvbmUgKi8KKysJCWlmICghcmMgJiYgY3RsLT51bml2ZXJzYWwgJiYgbWludXRlc3dlc3QpCisgCQkJcmMgPSBzZXR0aW1lb2ZkYXkoTlVMTCwgJnR6KTsKKy0JCWlmIChjdGwtPnN5c3R6ICYmIGN0bC0+dW5pdmVyc2FsKQkvKiBsb2NrIHdhcnBfY2xvY2sgKi8KKy0JCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHpfdXRjKTsKKysKKysJCS8qIHNldCB0aW1lICovCisgCQlpZiAoIXJjICYmIGN0bC0+aGN0b3N5cykKKy0JCQlyYyA9IHNldHRpbWVvZmRheSgmbmV3dGltZSwgJnR6KTsKKy0JCWVsc2UgaWYgKCFyYykKKy0JCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHopOworKwkJCXJjID0gc2V0dGltZW9mZGF5KCZuZXd0aW1lLCBOVUxMKTsKKyAKKyAJCWlmIChyYykgeworIAkJCXdhcm4oXygic2V0dGltZW9mZGF5KCkgZmFpbGVkIikpOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1saWJmZGlzay1zY3JpcHQtYWNjZXB0LXNlY3Rvci1zaXplLWlnbm9yZS11bmtub3duLWhlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1saWJmZGlzay1zY3JpcHQtYWNjZXB0LXNlY3Rvci1zaXplLWlnbm9yZS11bmtub3duLWhlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMWY3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gMDBlNTNmMTdjODQ2MmNiMzRlY2UwOGNjMTBkYjYwYTdkYTI5YTMwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorRGF0ZTogVHVlLCA0IEZlYiAyMDIwIDE1OjExOjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmZkaXNrOiAoc2NyaXB0KSBhY2NlcHQgc2VjdG9yLXNpemUsIGlnbm9yZSB1bmtub3duIGhlYWRlcnMKKworLSBhZGQgc2VjdG9yLXNpemUgYmV0d2VlbiBzdXBwb3J0ZWQgaGVhZGVycyAoYWxyZWFkeSBpbiAtLWR1bXAgb3V0cHV0KQorCistIHJlcG9ydCB1bmtub3duIGhlYWRlcnMgYnkgLUVOT1RTVVAKKworLSBpZ25vcmUgRU5PVFNVUCBpbiBzZmRpc2sgKGJ1dCBwcmludCB3YXJuaW5nKSBhbmQgaW4gZmRpc2tfc2NyaXB0X3JlYWRfZmlsZSgpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2NvbW1pdC8wMGU1M2YxN2M4NDYyY2IzNGVjZTA4Y2MxMGRiNjBhN2RhMjlhMzA1XQorCitBZGRyZXNzZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2lzc3Vlcy85NDkKK1NpZ25lZC1vZmYtYnk6IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KKy0tLQorIGRpc2stdXRpbHMvc2ZkaXNrLmMgICB8ICA2ICsrKysrLQorIGxpYmZkaXNrL3NyYy9zY3JpcHQuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGlzay11dGlscy9zZmRpc2suYyBiL2Rpc2stdXRpbHMvc2ZkaXNrLmMKK2luZGV4IGJiNmUxYzYuLmMwYmVhNzAgMTAwNjQ0CistLS0gYS9kaXNrLXV0aWxzL3NmZGlzay5jCisrKysgYi9kaXNrLXV0aWxzL3NmZGlzay5jCitAQCAtMTc4Miw3ICsxNzgyLDExIEBAIHN0YXRpYyBpbnQgY29tbWFuZF9mZGlzayhzdHJ1Y3Qgc2ZkaXNrICpzZiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJfQorIAorIAkJcmMgPSBmZGlza19zY3JpcHRfcmVhZF9saW5lKGRwLCBzdGRpbiwgYnVmLCBzaXplb2YoYnVmKSk7CistCQlpZiAocmMgPCAwKSB7CisrCQlpZiAocmMgPT0gLUVOT1RTVVApIHsKKysJCQlidWZbc2l6ZW9mKGJ1ZikgLSAxXSA9ICdcMCc7CisrCQkJZmRpc2tfd2Fybngoc2YtPmN4dCwgXygiVW5rbm93biBzY3JpcHQgaGVhZGVyICclcycgLS0gaWdub3JlLiIpLCBidWYpOworKwkJCWNvbnRpbnVlOworKwkJfSBlbHNlIGlmIChyYyA8IDApIHsKKyAJCQlEQkcoUEFSU0UsIHVsX2RlYnVnKCJzY3JpcHQgcGFyc2luZyBmYWlsZWQsIHRyeWluZyBzZmRpc2sgc3BlY2lmaWMgY29tbWFuZHMiKSk7CisgCQkJYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworIAkJCXJjID0gbG9vcF9jb250cm9sX2NvbW1hbmRzKHNmLCBkcCwgYnVmKTsKK2RpZmYgLS1naXQgYS9saWJmZGlzay9zcmMvc2NyaXB0LmMgYi9saWJmZGlzay9zcmMvc2NyaXB0LmMKK2luZGV4IGEyMTc3MWIuLmQzZTY3ZmEgMTAwNjQ0CistLS0gYS9saWJmZGlzay9zcmMvc2NyaXB0LmMKKysrKyBiL2xpYmZkaXNrL3NyYy9zY3JpcHQuYworQEAgLTgwNSw4ICs4MDUsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgaXNfaGVhZGVyX2xpbmUoY29uc3QgY2hhciAqcykKKyAvKiBwYXJzZXMgIjxuYW1lPjogdmFsdWUiLCBub3RlIG1vZGlmaWVzIEBzKi8KKyBzdGF0aWMgaW50IHBhcnNlX2xpbmVfaGVhZGVyKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBjaGFyICpzKQorIHsKKy0JaW50IHJjID0gLUVJTlZBTDsKKysJc2l6ZV90IGk7CisgCWNoYXIgKm5hbWUsICp2YWx1ZTsKKysJc3RhdGljIGNvbnN0IGNoYXIgKnN1cHBvcnRlZFtdID0geworKwkJImxhYmVsIiwgInVuaXQiLCAibGFiZWwtaWQiLCAiZGV2aWNlIiwgImdyYWluIiwKKysJCSJmaXJzdC1sYmEiLCAibGFzdC1sYmEiLCAidGFibGUtbGVuZ3RoIiwgInNlY3Rvci1zaXplIgorKwl9OworIAorIAlEQkcoU0NSSVBULCB1bF9kZWJ1Z29iaihkcCwgIiAgIHBhcnNlIGhlYWRlciAnJXMnIiwgcykpOworIAorQEAgLTgxNiw3ICs4MjAsNyBAQCBzdGF0aWMgaW50IHBhcnNlX2xpbmVfaGVhZGVyKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBjaGFyICpzKQorIAluYW1lID0gczsKKyAJdmFsdWUgPSBzdHJjaHIocywgJzonKTsKKyAJaWYgKCF2YWx1ZSkKKy0JCWdvdG8gZG9uZTsKKysJCXJldHVybiAtRUlOVkFMOworIAkqdmFsdWUgPSAnXDAnOworIAl2YWx1ZSsrOworIAorQEAgLTgyNSwzMiArODI5LDMwIEBAIHN0YXRpYyBpbnQgcGFyc2VfbGluZV9oZWFkZXIoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIGNoYXIgKnMpCisgCWx0cmltX3doaXRlc3BhY2UoKHVuc2lnbmVkIGNoYXIgKikgdmFsdWUpOworIAlydHJpbV93aGl0ZXNwYWNlKCh1bnNpZ25lZCBjaGFyICopIHZhbHVlKTsKKyAKKysJaWYgKCEqbmFtZSB8fCAhKnZhbHVlKQorKwkJcmV0dXJuIC1FSU5WQUw7CisrCisrCS8qIGNoZWNrIGhlYWRlciBuYW1lICovCisrCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN1cHBvcnRlZCk7IGkrKykgeworKwkJaWYgKHN0cmNtcChuYW1lLCBzdXBwb3J0ZWRbaV0pID09IDApCisrCQkJYnJlYWs7CisrCX0KKysJaWYgKGkgPT0gQVJSQVlfU0laRShzdXBwb3J0ZWQpKQorKwkJcmV0dXJuIC1FTk9UU1VQOworKworKwkvKiBoZWFkZXIgc3BlY2lmaWMgYWN0aW9ucyAqLworIAlpZiAoc3RyY21wKG5hbWUsICJsYWJlbCIpID09IDApIHsKKyAJCWlmIChkcC0+Y3h0ICYmICFmZGlza19nZXRfbGFiZWwoZHAtPmN4dCwgdmFsdWUpKQorLQkJCWdvdG8gZG9uZTsJCQkvKiB1bmtub3duIGxhYmVsIG5hbWUgKi8KKysJCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiB1bmtub3duIGxhYmVsIG5hbWUgKi8KKyAJCWRwLT5mb3JjZV9sYWJlbCA9IDE7CisrCisgCX0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ1bml0IikgPT0gMCkgeworIAkJaWYgKHN0cmNtcCh2YWx1ZSwgInNlY3RvcnMiKSAhPSAwKQorLQkJCWdvdG8gZG9uZTsJCQkvKiBvbmx5ICJzZWN0b3JzIiBzdXBwb3J0ZWQgKi8KKy0JfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImxhYmVsLWlkIikgPT0gMAorLQkJICAgfHwgc3RyY21wKG5hbWUsICJkZXZpY2UiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImdyYWluIikgPT0gMAorLQkJICAgfHwgc3RyY21wKG5hbWUsICJmaXJzdC1sYmEiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImxhc3QtbGJhIikgPT0gMAorLQkJICAgfHwgc3RyY21wKG5hbWUsICJ0YWJsZS1sZW5ndGgiKSA9PSAwKSB7CistCQk7CQkJCQkvKiB3aGF0ZXZlciBpcyBwb3NzaWJsZSAqLworLQl9IGVsc2UKKy0JCWdvdG8gZG9uZTsJCQkJLyogdW5rbm93biBoZWFkZXIgKi8KKysJCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBvbmx5ICJzZWN0b3JzIiBzdXBwb3J0ZWQgKi8KKyAKKy0JaWYgKCpuYW1lICYmICp2YWx1ZSkKKy0JCXJjID0gZmRpc2tfc2NyaXB0X3NldF9oZWFkZXIoZHAsIG5hbWUsIHZhbHVlKTsKKy1kb25lOgorLQlpZiAocmMpCistCQlEQkcoU0NSSVBULCB1bF9kZWJ1Z29iaihkcCwgImhlYWRlciBwYXJzZSBlcnJvcjogIgorLQkJCQkiW3JjPSVkLCBuYW1lPSclcycsIHZhbHVlPSclcyddIiwKKy0JCQkJcmMsIG5hbWUsIHZhbHVlKSk7CistCXJldHVybiByYzsKKysJfQorIAorKwlyZXR1cm4gZmRpc2tfc2NyaXB0X3NldF9oZWFkZXIoZHAsIG5hbWUsIHZhbHVlKTsKKyB9CisgCisgLyogcmV0dXJucyB6ZXJvIHRlcm1pbmF0ZWQgc3RyaW5nIHdpdGggbmV4dCB0b2tlbiBhbmQgQHN0ciBpcyB1cGRhdGVkICovCitAQCAtMTM2Myw3ICsxMzY1LDggQEAgaW50IGZkaXNrX3NjcmlwdF9zZXRfZmdldHMoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsCisgICoKKyAgKiBSZWFkcyBuZXh0IGxpbmUgaW50byBkdW1wLgorICAqCistICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCA8MCBvbiBlcnJvciwgMSB3aGVuIG5vdGhpbmcgdG8gcmVhZC4KKysgKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIDwwIG9uIGVycm9yLCAxIHdoZW4gbm90aGluZyB0byByZWFkLiBGb3IgdW5rbm93biBoZWFkZXJzCisrICogICAgICAgICAgcmV0dXJucyAtRU5PVFNVUCwgaXQncyB1c3VhbGx5IHNhZmUgdG8gaWdub3JlIHRoaXMgZXJyb3IuCisgICovCisgaW50IGZkaXNrX3NjcmlwdF9yZWFkX2xpbmUoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIEZJTEUgKmYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KQorIHsKK0BAIC0xNDI4LDcgKzE0MzEsNyBAQCBpbnQgZmRpc2tfc2NyaXB0X3JlYWRfZmlsZShzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgRklMRSAqZikKKyAKKyAJd2hpbGUgKCFmZW9mKGYpKSB7CisgCQlyYyA9IGZkaXNrX3NjcmlwdF9yZWFkX2xpbmUoZHAsIGYsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworLQkJaWYgKHJjKQorKwkJaWYgKHJjICYmIHJjICE9IC1FTk9UU1VQKQorIAkJCWJyZWFrOworIAl9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbHNibGstZm9yY2UtdG8tcHJpbnQtUEtOQU1FLWZvci1wYXJ0aXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxzYmxrLWZvcmNlLXRvLXByaW50LVBLTkFNRS1mb3ItcGFydGl0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDRjMTQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbHNibGstZm9yY2UtdG8tcHJpbnQtUEtOQU1FLWZvci1wYXJ0aXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGUzYmI5YmZiNzZjMTdiMWQwNTgxNDQzNmNlZDYyYzA1YzQwMTFmNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjcgSnVuIDIwMTkgMDk6MjI6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbHNibGs6IGZvcmNlIHRvIHByaW50IFBLTkFNRSBmb3IgcGFydGl0aW9uCi0KLVBLTkFNRSAocGFyZW50IGtlcm5lbCBkZXZpY2UgbmFtZSkgaXMgYmFzZWQgb24gcHJpbnRlZCB0cmVlIGFjY29yZGluZwotdG8gcGFyZW50IC0+IGNoaWxkIHJlbGF0aW9uc2hpcC4gVGhlIHRyZWUgaXMgb3B0aW9uYWwgYW5kIG5vdCBwcmludGVkCi1pZiBwYXJ0aXRpb24gc3BlY2lmaWVkICguZS5nICJsc2JsayAtbytQS05BTUUgL2Rldi9zZGExIiksIGJ1dCBvbGQKLXZlcnNpb25zIHByaW50IHRoZSBQS05BTUUgYWxzbyBpbiB0aGlzIGNhc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2NvbW1pdC9lM2JiOWJmYjc2YzE3YjFkMDU4MTQ0MzZjZWQ2MmMwNWM0MDExZjQ4XQotCi1BZGRyZXNzZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2lzc3Vlcy84MTMKLVNpZ25lZC1vZmYtYnk6IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbWlzYy11dGlscy9sc2Jsay5jIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9taXNjLXV0aWxzL2xzYmxrLmMgYi9taXNjLXV0aWxzL2xzYmxrLmMKLWluZGV4IGU5NWFmN2FmMDI1Ni4uM2NlNmRhNzMwMjY0IDEwMDY0NAotLS0tIGEvbWlzYy11dGlscy9sc2Jsay5jCi0rKysgYi9taXNjLXV0aWxzL2xzYmxrLmMKLUBAIC0xMDE5LDYgKzEwMTksOSBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfdG9fc2NvbHMoCi0gCURCRyhERVYsIHVsX2RlYnVnb2JqKGRldiwgImFkZCAnJXMnIHRvIHNjb2xzIiwgZGV2LT5uYW1lKSk7Ci0gCU9OX0RCRyhERVYsIGlmICh1bF9wYXRoX2lzb3Blbl9kaXJmZChkZXYtPnN5c2ZzKSkgdWxfZGVidWdvYmooZGV2LCAiICVzIC0tLT4gaXMgb3BlbiEiLCBkZXYtPm5hbWUpKTsKLSAKLSsJaWYgKCFwYXJlbnQgJiYgZGV2LT53aG9sZWRpc2spCi0rCQlwYXJlbnQgPSBkZXYtPndob2xlZGlzazsKLSsKLSAJLyogRG8gbm90IHByaW50IGRldmljZSBtb3JlIHRoYW4gb25lIGluIC0tbGlzdCBtb2RlICovCi0gCWlmICghKGxzYmxrLT5mbGFncyAmIExTQkxLX1RSRUUpICYmIGRldi0+aXNfcHJpbnRlZCkKLSAJCXJldHVybjsKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWMyZDgwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIHV0aWwtbGludXguaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbHNibGstZm9yY2UtdG8tcHJpbnQtUEtOQU1FLWZvci1wYXJ0aXRpb24ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImE3OGNiZWFlZDljMzkwOTRiOTZhNDhiYThmODkxZDUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc0M2Y5ZDBjNzI1MmI2ZGIyNDZiNjU5YzFlMWNlMGJkNDVkOGQ0NTA4YjRkZmE0MjdiYmI0YTNlOWI5ZjYyYjUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM1LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE5NjRjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzUuMS5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIHV0aWwtbGludXguaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjdmNjQ4ODJmNjMxMjI1ZjAyOTVjYTA1MDgwY2VlMWJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGUzZWRkMjg3MzY2Y2Q5MDhlNzc2Nzc1MTRiOTM4N2IyMmJjN2I4OGY0NWI4M2UxOTIyYzM1OTdmMWQ3ZjkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCmluZGV4IDUwYzRkODQuLjEzZjU5NjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCkBAIC0yNiw3ICsyNiw3IEBACiAjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYS9hcHQvIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVzZXJhZGQKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXNlcmFkZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KIAogRVhUUkFfQVVUT1JFQ09ORiA9ICItLWV4Y2x1ZGU9YXV0b3BvaW50LGF1dG9oZWFkZXIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9hcHQuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9hcHQuY29uZgppbmRleCAwMzM1MTM1Li5jOTVhNWIwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvYXB0LmNvbmYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mCkBAIC0zOSw0ICszOSw0IEBACiAgIH07CiB9OwogCi1EUGtnOjpPcHRpb25zIHsiLS1yb290PSNST09URlMjIjsiLS1hZG1pbmRpcj0jUk9PVEZTIy92YXIvbGliL2Rwa2ciOyItLWZvcmNlLWFsbCI7Ii0tbm8tZGVic2lnIn07CitEUGtnOjpPcHRpb25zIHsiLS1yb290PSNST09URlMjIjsiLS1hZG1pbmRpcj0jUk9PVEZTIy92YXIvbGliL2Rwa2ciOyItLWZvcmNlLWFsbCI7Ii0tbm8tZm9yY2Utb3ZlcndyaXRlIjsiLS1uby1kZWJzaWcifTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE5LjAxLjA2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTkuMDEuMDYuYmIKaW5kZXggOTg1YTI1NC4uMTM1OTNkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTkuMDEuMDYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTkuMDEuMDYuYmIKQEAgLTksNyArOSw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZDQ2NDEzYzhiMDBhMTI1YjE1MjliYWUzODViYmVjNTUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTcxOTVjODMzMDk4ZGE3OWRlNTc3OGVlOTA5NDhmNGM1ZDkwZWQxYTBjZjgzOTFiNGFiMzQ4ZTJlYzUxMWUzZiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgYWxsYXJjaAoraW5oZXJpdCBhdXRvdG9vbHMgYWxsYXJjaCB0ZXhpbmZvCiAKIFBBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRvYyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ5YzNlMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotIyBXaGVuIHVwZ3JhZGluZyB0byAyLjMzLCBwbGVhc2UgbWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRyYWlsaW5nIC4wLCBzbwotIyB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2sgY2FuIHdvcmsgY29ycmVjdGx5LgotUFYgPSAiMi4zMi4wIgotQ1ZFX1ZFUlNJT04gPSAiMi4zMiIKLUJJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCi0jQlJBTkNIID0gImJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2giCi1CUkFOQ0ggPz0gImJpbnV0aWxzLTJfMzItYnJhbmNoIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCi0KLVNSQ1JFViA/PSAiYjhjMWY2MDhkYjllZjNlZGQ0ODNkMjFhOTIxZDFmYmVkYzcxZGY2ZiIKLUJJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD0ke0JSQU5DSH07cHJvdG9jb2w9Z2l0IgotU1JDX1VSSSA9ICJcCi0gICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAotICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA3LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEzLURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE1LWJpbnV0aWxzLWVuYWJsZS14ODZfNjQtcGVwLWZvci1wcm9kdWNpbmctRUZJLWJpbmFyaWUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3NC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc1LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzYucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3Ny5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDcxLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTEyOTcyLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTE0MjUwLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTE0NDQ0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTE3NDUwLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTE3NDUxLnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjM0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTM4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjM0LmluYwpAQCAtMCwwICsxLDQ2IEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKKyMgV2hlbiB1cGdyYWRpbmcgdG8gMi4zNSwgcGxlYXNlIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyB0cmFpbGluZyAuMCwgc28KKyMgdGhhdCB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrIGNhbiB3b3JrIGNvcnJlY3RseS4KK1BWID0gIjIuMzQiCitDVkVfVkVSU0lPTiA9ICIyLjM0IgorQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKKyNCUkFOQ0ggPSAiYmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaCIKK0JSQU5DSCA/PSAiYmludXRpbHMtMl8zNC1icmFuY2giCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID89ICJkNGI1MDk5OWIzYjI4N2I1Zjk4NGFkZTJmODczNGFhOGM5MzU5NDQwIgorQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPSR7QlJBTkNIfTtwcm90b2NvbD1naXQiCitTUkNfVVJJID0gIlwKKyAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCisgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDUtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNi1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTYtQ2hlY2stZm9yLWNsYW5nLWJlZm9yZS1jaGVja2luZy1nY2MtdmVyc2lvbi5wYXRjaCBcCisgICAgIGZpbGU6Ly9DVkUtMjAyMC0wNTUxLnBhdGNoIFwKKyIKK1MgID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjMyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMzQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjM0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjMyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjM0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKaW5kZXggMGZiNmNhZS4uZTkzY2Q1MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwpAQCAtMTMsMTcgKzEzLDEyIEBACiAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIHpsaWItbmF0aXZlIGdudS1jb25maWctbmF0aXZlIGF1dG9jb25mLW5hdGl2ZSIKIAotIwotIyB3ZSBuZWVkIGNocnBhdGggPiAwLjE0IGFuZCBzb21lIGRpc3Ryb3MgbGlrZSBjZW50b3MgNyBzdGlsbCBoYXZlIG9sZGVyIGNocnBhdGgKLSMKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUiCi1FWFRSQU5BVElWRVBBVEhfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgY2hycGF0aC1uYXRpdmUiCi0KIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIHRleGluZm8KIAogRklMRVNfJHtQTn0gPSAiIFwKIAkke2JpbmRpcn0vJHtUQVJHRVRfUFJFRklYfSogXAotCSR7bGliZGlyfS9saWIqLSouc28gXAorCSR7bGliZGlyfS9saWIqLnNvLiogXAorCSR7bGliZGlyfS9saWIqLSR7UFZ9Ki5zbyBcCiAJJHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vYmluLyogXAogICAgICAgICAke2JpbmRpcn0vZW1iZWRzcHUiCiAKQEAgLTMzLDYgKzI4LDggQEAKIAkke2luY2x1ZGVkaXJ9IFwKIAkke2xpYmRpcn0vKi5sYSBcCiAJJHtsaWJkaXJ9L2xpYmJmZC5zbyBcCisJJHtsaWJkaXJ9L2xpYmN0Zi5zbyBcCisJJHtsaWJkaXJ9L2xpYmN0Zi1ub2JmZC5zbyBcCiAJJHtsaWJkaXJ9L2xpYm9wY29kZXMuc28iCiAKICMgUmF0aGVyIHRoYW4gZHVwbGljYXRpbmcgbXVsdGlwbGUgZW50cmllcyBmb3IgdGhlc2UsIG1ha2Ugb25lCkBAIC00MCw2ICszNyw4IEBACiAKIExER09MRF9BTFRTID89ICJsZC5nb2xkIGR3cCIKIExER09MRF9BTFRTX3Jpc2N2NjQgPSAiIgorTERHT0xEX0FMVFNfcmlzY3YzMiA9ICIiCitMREdPTERfQUxUU19saWJjLWdsaWJjX21pcHNhcmNoID0gIiIKIAogVVNFX0FMVEVSTkFUSVZFU19GT1IgPSAiIFwKIAlhZGRyMmxpbmUgXApAQCAtNzYsMTMgKzc1LDI1IEBACiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtZGV0ZXJtaW5pc3RpYy1hcmNoaXZlcyBcCiAgICAgICAgICAgICAgICAgLS1lbmFibGUtcGx1Z2lucyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdkYiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdkYnNlcnZlciBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmRlY251bWJlciBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlYWRsaW5lIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2ltIFwKICAgICAgICAgICAgICAgICAke0xER09MRH0gXAorICAgICAgICAgICAgICAgICR7RVhUUkFfVEFSR0VUU30gXAogICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbXVsdGlhcmNoJywgJy0tZW5hYmxlLTY0LWJpdC1iZmQnLCAnJywgZCl9IgogCitFWFRSQV9UQVJHRVRTID0gIiIKK0VYVFJBX1RBUkdFVFNfeDg2LTY0ID0gIiAtLWVuYWJsZS10YXJnZXRzPXg4Nl82NC1wZSx4ODZfNjQtcGVwICIKK0VYVFJBX1RBUkdFVFNfY2xhc3MtbmF0aXZlID0gIiIKKwogTERHT0xEX2NsYXNzLW5hdGl2ZSA9ICIiCiBMREdPTERfY2xhc3MtY3Jvc3NzZGsgPSAiIgorTERHT0xEX2xpYmMtZ2xpYmNfbWlwc2FyY2ggPSAiIgogTERHT0xEID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnLS1lbmFibGUtZ29sZD1kZWZhdWx0IC0tZW5hYmxlLXRocmVhZHMnLCAnLS1lbmFibGUtZ29sZCAtLWVuYWJsZS1sZD1kZWZhdWx0IC0tZW5hYmxlLXRocmVhZHMnLCBkKX0iCiAKKwogIyBUaGlzIGlzIG5lY2Vzc2FyeSBkdWUgdG8gYSBidWcgaW4gdGhlIGJpbnV0aWxzIE1ha2VmaWxlcwogIyBFWFRSQV9PRU1BS0UgPSAiY29uZmlndXJlLWJ1aWxkLWxpYmliZXJ0eSBhbGwiCiAKQEAgLTExMCw3ICsxMjEsOCBAQAogTVVMVElBUkNIIDo9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm11bHRpYXJjaCIsICJ5ZXMiLCAibm8iLCBkKX0iCiBkb19jb25maWd1cmVbdmFyZGVwc10gKz0gIk1VTFRJQVJDSCIKIGRvX2NvbmZpZ3VyZSAoKSB7Ci0JKGNkICR7U307IGdudS1jb25maWdpemUpIHx8IGRpZSAiRmFpbGVkIHRvIHJ1biBnbnUtY29uZmlnaXplIgorCShjZCAke1N9ICYmIGdudS1jb25maWdpemUpCisKIAlvZV9ydW5jb25mCiAjCiAjIG11c3QgcHJpbWUgY29uZmlnLmNhY2hlIHRvIGVuc3VyZSB0aGUgYnVpbGQgb2YgbGliaWJlcnR5CkBAIC0xMjEsMTAgKzEzMyw2IEBACiAJZG9uZQogfQogCi1kb19jb21waWxlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JY2hycGF0aCAtZCAke0J9L2JpbnV0aWxzL2VsZmVkaXQKLQljaHJwYXRoIC1kICR7Qn0vYmludXRpbHMvcmVhZGVsZgotfQogZG9faW5zdGFsbCAoKSB7CiAJYXV0b3Rvb2xzX2RvX2luc3RhbGwKIApAQCAtMTQ0LDYgKzE1MiwxMSBAQAogCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9hbnNpZGVjbC5oICR7RH0ke2luY2x1ZGVkaXJ9CiAJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xpYmliZXJ0eS5oICR7RH0ke2luY2x1ZGVkaXJ9CiAKKwkjIGluc2FsbCBwaWMgdmVyc2lvbiBvZiBsaWJpYmVydHkgaWYgYXZhaWxhYmxlCisgICAgICAgIGlmIFsgLWUgJHtCfS9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIF07IHRoZW4KKwkJaW5zdGFsbCAtRG0gMDY0NCAke0J9L2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEgJHtEfSR7bGliZGlyfS9saWJpYmVydHkuYQorCWZpCisKIAljZCAke0R9JHtiaW5kaXJ9CiAKIAkjIFN5bWxpbmtzIGZvciBlYXNlIG9mIHJ1bm5pbmcgdGhlc2Ugb24gdGhlIG5hdGl2ZSB0YXJnZXQKQEAgLTE1Niw2ICsxNjksOCBAQAogCWRvbmUKIAogCW9lX211bHRpbGliX2hlYWRlciBiZmQuaAorICAgICAgICAjIGJmZF9zdGRpbnQuaCBlbmNvZGVzIHRoZSBjb21waWxlciBuYW1lIGluIHRoZSBoZWFkZXIKKyAgICAgICAgc2VkIC1pICR7RH0ke2luY2x1ZGVkaXJ9L2JmZF9zdGRpbnQuaCAtZSAicywke1RBUkdFVF9QUkVGSVh9LCwiCiB9CiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwpAQCAtMTYzLDMgKzE3OCw4IEBACiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEFMVEVSTkFUSVZFXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1VTRV9BTFRFUk5BVElWRVNfRk9SfSIKKworcHl0aG9uICgpIHsKKyAgICBpZiBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCBUcnVlLCBGYWxzZSwgZCkgYW5kIGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVEFSR0VUX0FSQ0gnLCAncmlzY3YzMiByaXNjdjY0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBiYi5mYXRhbCgiR29sZCBsaW5rZXIgZG9lcyBub3QgX3lldF8gc3VwcG9ydCBSSVNDLVYgYXJjaGl0ZWN0dXJlIHBsZWFzZSByZW1vdmUgbGQtaXMtZ29sZCBmcm9tIERJU1RST19GRUFUVVJFUyIpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKaW5kZXggNjU4MWJhZC4uMTRlODQyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNWJjZDg4NGY4YWY1MTA2ZDBmYTM4MGM0MmNmZmUwN2YzYzk5M2VkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjA1ZjBiZTEzYWFkZjBiMjZhMGIzOWRmZTdkYWYyYzQ3YTMwMDMzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NTg6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKK1N1YmplY3Q6IFtQQVRDSF0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKIAogVGhpcyBwYXRjaCB3aWxsIG1vZGlmeSB0aGUgRUxGIGxpbmtlciBzY3JpcHRzIHNvIHRoYXQgdGhlIGNyb3Nzc2RrCiBsaW5rZXIgd2lsbCBnZW5lcmF0ZSBiaW5hcmllcyB3aXRoIGEgNDA5NiBieXRlcyBQVF9JTlRFUlAgc2VjdGlvbi4gV2hlbiB0aGUgYmluYXJpZXMKQEAgLTE4LDM1ICsxOCwzNSBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IDc3ZGRiYmM4ZjguLmQ3ODllNzc5NDMgMTAwNzU1CitpbmRleCAwMzM5MmQyNjVjLi40MzU2ODllYTE0IDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAotQEAgLTMxMCw2ICszMTAsNyBAQCBEQVRBX0FMSUdOTUVOVF91PSIke0RBVEFfQUxJR05NRU5UX3UtJHtEQVRBX0FMSUdOTUVOVF9yfX0iCitAQCAtMzA0LDYgKzMwNCw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKICBMRF9GTEFHPXIKICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX3J9CiAgREVGQVVMVF9EQVRBX0FMSUdOTUVOVD0iQUxJR04oJHtTRUdNRU5UX1NJWkV9KSIKICtQQVJUSUFMX0xJTktJTkc9IiAiCi0gKCBlY2hvICIvKiBTY3JpcHQgZm9yIGxkIC1yOiBsaW5rIHdpdGhvdXQgcmVsb2NhdGlvbiAqLyIKLSAgIC4gJHtDVVNUT01JWkVSX1NDUklQVH0KLSAgIC4gJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCi1AQCAtMzE4LDEwICszMTksMTIgQEAgREVGQVVMVF9EQVRBX0FMSUdOTUVOVD0iQUxJR04oJHtTRUdNRU5UX1NJWkV9KSIKKyAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgLXIgKi8iCisgICBzb3VyY2Vfc2ggJHtDVVNUT01JWkVSX1NDUklQVH0KKyAgIHNvdXJjZV9zaCAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKK0BAIC0zMTIsMTAgKzMxMywxMiBAQCBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgogIExEX0ZMQUc9dQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRfdX0KICBDT05TVFJVQ1RJTkc9IiAiCiArUEFSVElBTF9MSU5LSU5HPSIgIgotICggZWNobyAiLyogU2NyaXB0IGZvciBsZCAtVXI6IGxpbmsgdy9vdXQgcmVsb2NhdGlvbiwgZG8gY3JlYXRlIGNvbnN0cnVjdG9ycyAqLyIKLSAgIC4gJHtDVVNUT01JWkVSX1NDUklQVH0KLSAgIC4gJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCisgKCBlY2hvICIvKiBTY3JpcHQgZm9yIC1VciAqLyIKKyAgIHNvdXJjZV9zaCAke0NVU1RPTUlaRVJfU0NSSVBUfQorICAgc291cmNlX3NoICR7c3JjZGlyfS9zY3JpcHR0ZW1wbC8ke1NDUklQVF9OQU1FfS5zYwogICkgfCBzZWQgLWUgJy9eICokL2Q7cy9bCSBdKiQvLycgPiBsZHNjcmlwdHMvJHtFTVVMQVRJT05fTkFNRX0ueHUKICt1bnNldCBQQVJUSUFMX0xJTktJTkcKICAKICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX30KICBSRUxPQ0FUSU5HPSIgIgogZGlmZiAtLWdpdCBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwotaW5kZXggYmQ3NTg0MTIwZS4uOGJiZTA1MmQ0YiAxMDA2NDQKK2luZGV4IDBiOGIzMmE0NDAuLmVlNmI3MTA3NWQgMTAwNjQ0CiAtLS0gYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKICsrKyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwotQEAgLTEzOSw4ICsxMzksOCBAQCBpZiB0ZXN0IC16ICIkREFUQV9TRUdNRU5UX0FMSUdOIjsgdGhlbgorQEAgLTE0MCw4ICsxNDAsOCBAQCBpZiB0ZXN0IC16ICIkREFUQV9TRUdNRU5UX0FMSUdOIjsgdGhlbgogICAgICBEQVRBX1NFR01FTlRfUkVMUk9fRU5EPSIuID0gREFUQV9TRUdNRU5UX1JFTFJPX0VORCAoJHtTRVBBUkFURV9HT1RQTFQtMH0sIC4pOyIKICAgIGZpCiAgZmkKQEAgLTU3LDYgKzU3LDMgQEAKICBmaQogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCAzMjUzN2Q0Li45MWRlOTRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSAxMTkyNzkxMzU2MGZjNWE1ZDUxYWYzYmM1ZWI4YWQ2MmE4NmM5ODQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ZDc5ZjgxMzM2ZTdjYmU3MjdiNWE1MTEzNGY1ZDMxNGE0NTUzNzlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozNzowNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDAyLzE1XSBiaW51dGlscy1jcm9zczogRG8gbm90IGdlbmVyYXRlIGxpbmtlciBzY3JpcHQKLSBkaXJlY3RvcmllcworU3ViamVjdDogW1BBVENIXSBiaW51dGlscy1jcm9zczogRG8gbm90IGdlbmVyYXRlIGxpbmtlciBzY3JpcHQgZGlyZWN0b3JpZXMKIAogV2UgZG9uJ3QgcGxhY2UgdGFyZ2V0IGxpYnJhcmllcyB3aXRoaW4gJHtleGVjX3ByZWZpeH0sIHdlJ2QgYWx3YXlzIHBsYWNlIHRoZXNlCiB3aXRoaW4gdGhlIHRhcmdldCBzeXNyb290IHdpdGhpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBkaXJlY3Rvcmllcy4gV29yc2UsIHRoZQpAQCAtMjMsMTAgKzIyLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDI1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IGQ3ODllNzc5NDMuLjE0NGUyZTg3MzYgMTAwNzU1CitpbmRleCA0MzU2ODllYTE0Li5jZmY4YTE0NjdmIDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAotQEAgLTIyMCwzMSArMjIwLDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKK0BAIC0yMzUsMzEgKzIzNSw2IEBAIGFwcGVuZF90b19saWJfcGF0aCgpCiAgICBmaQogIH0KICAKQEAgLTU4LDYgKzU3LDMgQEAKICBpZiBbICJ4JHtMSUJfUEFUSH0iID0gIngiIF0gJiYgWyAieCR7VVNFX0xJQlBBVEh9IiA9IHh5ZXMgXSA7IHRoZW4KICAgIGxpYnM9JHtOQVRJVkVfTElCX0RJUlN9CiAgICBpZiBbICJ4JHtOQVRJVkV9IiA9ICJ4eWVzIiBdIDsgdGhlbgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1iaW51dGlscy1uYXRpdmVzZGstU2VhcmNoLWZvci1hbHRlcm5hdGl2ZS1sZC5zby5jb25mLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1iaW51dGlscy1uYXRpdmVzZGstU2VhcmNoLWZvci1hbHRlcm5hdGl2ZS1sZC5zby5jb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNGQ3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2gKQEAgLTAsMCArMSw5NSBAQAorRnJvbSBkMDU3YjIxNWYxMTRmNjE1OGI0MDEwYWI0NGExOWNhZTlkY2M4Mzg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBXZWQsIDE5IEZlYiAyMDIwIDA5OjUxOjE2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJpbnV0aWxzLW5hdGl2ZXNkazogU2VhcmNoIGZvciBhbHRlcm5hdGl2ZSBsZC5zby5jb25mIGluIFNESworIGluc3RhbGxhdGlvbgorCitXZSBuZWVkIGJpbnV0aWxzIHRvIGxvb2sgYXQgb3VyIGxkLnNvLmNvbmYgZmlsZSB3aXRoaW4gdGhlIFNESyB0byBlbnN1cmUKK3dlIHNlYXJjaCB0aGUgU0RLJ3MgbGliZGlycyBhcyB3ZWxsIGFzIHRob3NlIGZyb20gdGhlIGhvc3Qgc3lzdGVtLgorCitXZSB0aGVyZWZvcmUgcGFzcyBpbiB0aGUgZGlyZWN0b3J5IHRvIHRoZSBjb2RlIHVzaW5nIGEgZGVmaW5lLCB0aGVuIGFkZAoraXQgdG8gYSBzZWN0aW9uIHdlIHJlbG9jYXRlIGluIGEgc2ltaWxhciB3YXkgdG8gdGhlIHdheSB3ZSByZWxvY2F0ZSB0aGUKK2djYyBpbnRlcm5hbCBwYXRocy4gVGhpcyBlbnN1cmVzIHRoYXQgbGQgd29ya3MgY29ycmVjdGx5IGluIG91ciBidWlsZHRvb2xzCit0YXJiYWxsLgorCitTdGFuZGFyZCBzeXNyb290IHJlbG9jYXRpb24gZG9lc24ndCB3b3JrIHNpbmNlIHdlJ3JlIG5vdCBpbiBhIHN5c3Jvb3QsCit3ZSB3YW50IHRvIHVzZSBib3RoIHRoZSBob3N0IHN5c3RlbSBhbmQgU0RLIGxpYnMuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorMjAyMC8xLzE3CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljIHR3ZWFrXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvTWFrZWZpbGUuYW0gfCAzICsrLQorIGxkL01ha2VmaWxlLmluIHwgMyArKy0KKyBsZC9sZGVsZi5jICAgICB8IDIgKy0KKyBsZC9sZG1haW4uYyAgICB8IDEgKworIGxkL2xkbWFpbi5oICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCitpbmRleCA0YTliODQwNGI3Li4xYzEzMmQzY2U0IDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuYW0KKysrKyBiL2xkL01ha2VmaWxlLmFtCitAQCAtNDIsNyArNDIsOCBAQCBaTElCSU5DID0gQHpsaWJpbmNACisgCisgRUxGX0NMRkFHUz0tREVMRl9MSVNUX09QVElPTlM9QGVsZl9saXN0X29wdGlvbnNAIFwKKyAJICAgLURFTEZfU0hMSUJfTElTVF9PUFRJT05TPUBlbGZfc2hsaWJfbGlzdF9vcHRpb25zQCBcCistCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNACisrCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNAIFwKKysgICAgICAgICAgIC1EU1lTQ09ORkRJUj0iXCIkKHN5c2NvbmZkaXIpXCIiCisgV0FSTl9DRkxBR1MgPSBAV0FSTl9DRkxBR1NACisgTk9fV0VSUk9SID0gQE5PX1dFUlJPUkAKKyBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCitkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgoraW5kZXggNDZkOWIxNDA3Ny4uZTQ1M2JjMWIzMyAxMDA2NDQKKy0tLSBhL2xkL01ha2VmaWxlLmluCisrKysgYi9sZC9NYWtlZmlsZS5pbgorQEAgLTU1NSw3ICs1NTUsOCBAQCBaTElCID0gQHpsaWJkaXJAIC1segorIFpMSUJJTkMgPSBAemxpYmluY0AKKyBFTEZfQ0xGQUdTID0gLURFTEZfTElTVF9PUFRJT05TPUBlbGZfbGlzdF9vcHRpb25zQCBcCisgCSAgIC1ERUxGX1NITElCX0xJU1RfT1BUSU9OUz1AZWxmX3NobGliX2xpc3Rfb3B0aW9uc0AgXAorLQkgICAtREVMRl9QTFRfVU5XSU5EX0xJU1RfT1BUSU9OUz1AZWxmX3BsdF91bndpbmRfbGlzdF9vcHRpb25zQAorKwkgICAtREVMRl9QTFRfVU5XSU5EX0xJU1RfT1BUSU9OUz1AZWxmX3BsdF91bndpbmRfbGlzdF9vcHRpb25zQCBcCisrICAgICAgICAgICAtRFNZU0NPTkZESVI9IlwiJChzeXNjb25mZGlyKVwiIgorIAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKKyBARU5BQkxFX1BMVUdJTlNfRkFMU0VAUExVR0lOX0MgPSAKK2RpZmYgLS1naXQgYS9sZC9sZGVsZi5jIGIvbGQvbGRlbGYuYworaW5kZXggMmUyN2NmNDhhOC4uYTA5NWQ2YWFjNSAxMDA2NDQKKy0tLSBhL2xkL2xkZWxmLmMKKysrKyBiL2xkL2xkZWxmLmMKK0BAIC05MDcsNyArOTA3LDcgQEAgbGRlbGZfY2hlY2tfbGRfc29fY29uZiAoY29uc3Qgc3RydWN0IGJmZF9saW5rX25lZWRlZF9saXN0ICpsLCBpbnQgZm9yY2UsCisgCisgICAgICAgaW5mby5wYXRoID0gTlVMTDsKKyAgICAgICBpbmZvLmxlbiA9IGluZm8uYWxsb2MgPSAwOworLSAgICAgIHRtcHBhdGggPSBjb25jYXQgKGxkX3N5c3Jvb3QsIHByZWZpeCwgIi9ldGMvbGQuc28uY29uZiIsCisrICAgICAgdG1wcGF0aCA9IGNvbmNhdCAobGRfc3lzY29uZmRpciwgIi9sZC5zby5jb25mIiwKKyAJCQkoY29uc3QgY2hhciAqKSBOVUxMKTsKKyAgICAgICBpZiAoIWxkZWxmX3BhcnNlX2xkX3NvX2NvbmYgKCZpbmZvLCB0bXBwYXRoKSkKKyAJeworZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKK2luZGV4IGM0YWYxMGY0ZTkuLmRhMWFkMTc3NjMgMTAwNjQ0CistLS0gYS9sZC9sZG1haW4uYworKysrIGIvbGQvbGRtYWluLmMKK0BAIC02OSw2ICs2OSw3IEBAIGNoYXIgKnByb2dyYW1fbmFtZTsKKyAKKyAvKiBUaGUgcHJlZml4IGZvciBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllcy4gICovCisgY29uc3QgY2hhciAqbGRfc3lzcm9vdDsKKytjaGFyIGxkX3N5c2NvbmZkaXJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTQ09ORkRJUjsKKyAKKyAvKiBUaGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIGxkX3N5c3Jvb3QuICAqLworIGNoYXIgKmxkX2Nhbm9uX3N5c3Jvb3Q7CitkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmggYi9sZC9sZG1haW4uaAoraW5kZXggMGYwNTgyMWQxZS4uNTRjMzZhOTRjZSAxMDA2NDQKKy0tLSBhL2xkL2xkbWFpbi5oCisrKysgYi9sZC9sZG1haW4uaAorQEAgLTIzLDYgKzIzLDcgQEAKKyAKKyBleHRlcm4gY2hhciAqcHJvZ3JhbV9uYW1lOworIGV4dGVybiBjb25zdCBjaGFyICpsZF9zeXNyb290OworK2V4dGVybiBjaGFyIGxkX3N5c2NvbmZkaXJbNDA5Nl07CisgZXh0ZXJuIGNoYXIgKmxkX2Nhbm9uX3N5c3Jvb3Q7CisgZXh0ZXJuIGludCBsZF9jYW5vbl9zeXNyb290X2xlbjsKKyBleHRlcm4gRklMRSAqc2F2ZWRfc2NyaXB0X2hhbmRsZTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzAxMzgyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIGRhMzkzOWRlNmZiMzZkYTJjNjQ4NGYxNGYwOGEzN2JlMTk1ZDlkYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA3OjMzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTVdIGNvbmZpZ3VyZTogd2lkZW4gdGhlIHJlZ2V4cCBmb3IgU0ggYXJjaGl0ZWN0dXJlcwotCi1ncHJvZiBuZWVkcyB0byBrbm93IGFib3V0IHVjbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSAgICAgICB8IDIgKy0KLSBncHJvZi9jb25maWd1cmUgfCA1ICsrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMzc0NzY0NTk2MS4uNzhiNTI0MDEwMSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMzg2MSw3ICszODYxLDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgbnZwdHgqLSotKikKLSAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJzc3AgdGFyZ2V0LWxpYnN0ZGMrKy12MyB0YXJnZXQtbGlib2JqYyIKLSAgICAgOzsKLS0gIHNoLSotKikKLSsgIHNoKi0qLSogfCBzaDY0LSotKikKLSAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgotICAgICAgIHNoKi0qLWVsZikKLSAgICAgICAgICA7OwotZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQotaW5kZXggZjg0ZWZhYmEyMC4uYWIzMmJhYjJiNiAxMDA3NTUKLS0tLSBhL2dwcm9mL2NvbmZpZ3VyZQotKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNjE2Miw2ICs2MTYyLDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICA7OwotIAotK2xpbnV4LXVjbGliYyopCi0rICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKLSsgIDs7Ci0rCi0gbmV0YnNkKikKLSAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZTM1MjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZmMxZmY4NjBmZDg4ZmEyZDA1ODRiZDE5MTgxYzg4MGE3NjMzMWE4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8xNV0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkZWJpYW4gcGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsZC9NYWtlZmlsZS5hbSB8IDIgKy0KLSBsZC9NYWtlZmlsZS5pbiB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KLWluZGV4IGMyYzc5OGI0ZmUuLmQ3ZmFmMTkyNzEgMTAwNjQ0Ci0tLS0gYS9sZC9NYWtlZmlsZS5hbQotKysrIGIvbGQvTWFrZWZpbGUuYW0KLUBAIC01Nyw3ICs1Nyw3IEBAIGVuZGlmCi0gIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgotICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgotICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgotLXNjcmlwdGRpciA9ICQodG9vbGRpcikvbGliCi0rc2NyaXB0ZGlyID0gJChsaWJkaXIpCi0gCi0gRU1VTCA9IEBFTVVMQAotIEVNVUxBVElPTl9PRklMRVMgPSBARU1VTEFUSU9OX09GSUxFU0AKLWRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCi1pbmRleCBmYzY4N2ZjNTE2Li44YjE0ZjUyMzZjIDEwMDY0NAotLS0tIGEvbGQvTWFrZWZpbGUuaW4KLSsrKyBiL2xkL01ha2VmaWxlLmluCi1AQCAtNTYzLDcgKzU2Myw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKLSAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCi0gIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCi0gIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCi0tc2NyaXB0ZGlyID0gJCh0b29sZGlyKS9saWIKLStzY3JpcHRkaXIgPSAkKGxpYmRpcikKLSBCQVNFRElSID0gJChzcmNkaXIpLy4uCi0gQkZERElSID0gJChCQVNFRElSKS9iZmQKLSBJTkNESVIgPSAkKEJBU0VESVIpL2luY2x1ZGUKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMGExNDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gZjdhZDhhNDRjMTBmMDFlMDM2ODBmMDkzZmQ3YWY3MWM5ZjVlODYwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCisKK2dwcm9mIG5lZWRzIHRvIGtub3cgYWJvdXQgdWNsaWJjCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggOTFkYzQyZjZjNy4uN2MxYjc0N2U3YyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMzkxNSw3ICszOTE1LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgbnZwdHgqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJzc3AgdGFyZ2V0LWxpYnN0ZGMrKy12MyB0YXJnZXQtbGlib2JqYyIKKyAgICAgOzsKKy0gIHNoLSotKikKKysgIHNoKi0qLSogfCBzaDY0LSotKikKKyAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgICAgIHNoKi0qLWVsZikKKyAgICAgICAgICA7OworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNGJkODY5YTYzYS4uNzE4N2IzNGRmYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTE1OSw3ICsxMTU5LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgbnZwdHgqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJzc3AgdGFyZ2V0LWxpYnN0ZGMrKy12MyB0YXJnZXQtbGlib2JqYyIKKyAgICAgOzsKKy0gIHNoLSotKikKKysgIHNoKi0qLSogfCBzaDY0LSotKikKKyAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgICAgIHNoKi0qLWVsZikKKyAgICAgICAgICA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmFkNTMxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNjY4NjFiZmYzODk0MzRlMzQ1NGM3NjUwZWUyOWZhZGU3YTFjYzVlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xNV0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKLSBlbXB0eQotCi1mb3IgY2FzZXMgd2hlcmUgLXJwYXRoIGlzbid0IHNwZWNpZmllZC4gZGViaWFuICgjMTUxMDI0KQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXMgQ2hpbWVsaXMgPGNocmlzQGRlYmlhbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGQvZW11bHRlbXBsL2VsZjMyLmVtIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1pbmRleCBmNGY3YWQ2YjRlLi5jZmQ3ODdmZjI4IDEwMDY0NAotLS0tIGEvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi0rKysgYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLUBAIC0xNDcxLDYgKzE0NzEsOCBAQCBmcmFnbWVudCA8PEVPRgotIAkgICAgICAmJiBjb21tYW5kX2xpbmUucnBhdGggPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7Ci0rCSAgICAgIGlmICgocGF0aCkgJiYgKHN0cmxlbiAocGF0aCkgPT0gMCkpCi0rCQkgIHBhdGggPSBOVUxMOwotIAkgICAgICBpZiAocGF0aAotIAkJICAmJiBnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChwYXRoLCAmbiwgZm9yY2UpKQotIAkJYnJlYWs7Ci1AQCAtMTc0Niw2ICsxNzQ4LDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCi0gICBycGF0aCA9IGNvbW1hbmRfbGluZS5ycGF0aDsKLSAgIGlmIChycGF0aCA9PSBOVUxMKQotICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7Ci0rICBpZiAoKHJwYXRoKSAmJiAoc3RybGVuIChycGF0aCkgPT0gMCkpCi0rICAgIHJwYXRoID0gTlVMTDsKLSAKLSAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQotICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JhMGJhNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAwOGIwODhiN2RkM2Q5NzA3ZWQ2Njk0OGE3MjcxZmZiNDM4ZWVkZGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxkL01ha2VmaWxlLmFtIHwgMiArLQorIGxkL01ha2VmaWxlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQoraW5kZXggMWMxMzJkM2NlNC4uOGQ4MmNmMmUxNiAxMDA2NDQKKy0tLSBhL2xkL01ha2VmaWxlLmFtCisrKysgYi9sZC9NYWtlZmlsZS5hbQorQEAgLTY0LDcgKzY0LDcgQEAgZW5kaWYKKyAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCisgIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCisgIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCistc2NyaXB0ZGlyID0gJCh0b29sZGlyKS9saWIKKytzY3JpcHRkaXIgPSAkKGxpYmRpcikKKyAKKyBFTVVMID0gQEVNVUxACisgRU1VTEFUSU9OX09GSUxFUyA9IEBFTVVMQVRJT05fT0ZJTEVTQAorZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KK2luZGV4IGU0NTNiYzFiMzMuLjJkY2Q3MmY4MDkgMTAwNjQ0CistLS0gYS9sZC9NYWtlZmlsZS5pbgorKysrIGIvbGQvTWFrZWZpbGUuaW4KK0BAIC01NzMsNyArNTczLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KKyAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKKyAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KKy1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgorK3NjcmlwdGRpciA9ICQobGliZGlyKQorIEJBU0VESVIgPSAkKHNyY2RpcikvLi4KKyBCRkRESVIgPSAkKEJBU0VESVIpL2JmZAorIElOQ0RJUiA9ICQoQkFTRURJUikvaW5jbHVkZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MjA3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSAxMzc5MTYzNmFiZjUxOGYwZGIyMDlkYzUxYzI5NDQ1ZDgwNDIxZjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMToyNzoxNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBPbmx5IGdlbmVyYXRlIGFuIFJQQVRIIGVudHJ5IGlmIExEX1JVTl9QQVRIIGlzIG5vdCBlbXB0eQorCitmb3IgY2FzZXMgd2hlcmUgLXJwYXRoIGlzbid0IHNwZWNpZmllZC4gZGViaWFuICgjMTUxMDI0KQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hyaXMgQ2hpbWVsaXMgPGNocmlzQGRlYmlhbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvbGRlbGYuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xkL2xkZWxmLmMgYi9sZC9sZGVsZi5jCitpbmRleCBhMDk1ZDZhYWM1Li5hMjQ1NWE4NzkzIDEwMDY0NAorLS0tIGEvbGQvbGRlbGYuYworKysrIGIvbGQvbGRlbGYuYworQEAgLTEyMjksNiArMTIyOSw4IEBAIGxkZWxmX2FmdGVyX29wZW4gKGludCB1c2VfbGlicGF0aCwgaW50IG5hdGl2ZSwgaW50IGlzX2xpbnV4LCBpbnQgaXNfZnJlZWJzZCwKKyAJCSAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCisgCQl7CisgCQkgIHBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOworKwkJICBpZiAoKHBhdGgpICYmIChzdHJsZW4gKHBhdGgpID09IDApKQorKwkJICAgICAgcGF0aCA9IE5VTEw7CisgCQkgIGlmIChwYXRoCisgCQkgICAgICAmJiBsZGVsZl9zZWFyY2hfbmVlZGVkIChwYXRoLCAmbiwgZm9yY2UsCisgCQkJCQkgICAgICBpc19saW51eCwgZWxmc2l6ZSkpCitAQCAtMTU3Myw2ICsxNTc1LDggQEAgbGRlbGZfYmVmb3JlX2FsbG9jYXRpb24gKGNoYXIgKmF1ZGl0LCBjaGFyICpkZXBhdWRpdCwKKyAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOworICAgaWYgKHJwYXRoID09IE5VTEwpCisgICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKKysgIGlmICgocnBhdGgpICYmIChzdHJsZW4gKHJwYXRoKSA9PSAwKSkKKysgICAgcnBhdGggPSBOVUxMOworIAorICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCisgICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM0ZDI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEyNTIgKzAsMCBAQAotRnJvbSA0MTg1MjdhMjk3MWQ0ZTc3YTg3MDg1NDAwMzk3MDkwZDg5ZmM1Yzk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xNV0gVXNlIGxpYnRvb2wgMi40Ci0KLWdldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMyMiArKysrKysrKysrKysrKy0tLS0tCi0gYmZkL2NvbmZpZ3VyZS5hYyAgICAgfCAgICAyICstCi0gYmludXRpbHMvY29uZmlndXJlICAgfCAxMzIwICsrKysrKysrKysrKysrLS0tLS0KLSBnYXMvY29uZmlndXJlICAgICAgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQotIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKy0tLS0tCi0gbGQvY29uZmlndXJlICAgICAgICAgfCAxNjk1ICsrKysrKysrKysrKysrKysrKy0tLS0tLQotIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKy0tLS0tCi0gbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIGx0b3B0aW9ucy5tNCAgICAgICAgIHwgICAgMiArLQotIGx0dmVyc2lvbi5tNCAgICAgICAgIHwgICAxMiArLQotIGx0fm9ic29sZXRlLm00ICAgICAgIHwgICAgMiArLQotIG9wY29kZXMvY29uZmlndXJlICAgIHwgMTMyMiArKysrKysrKysrKysrKy0tLS0tCi0gb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCi0gemxpYi9jb25maWd1cmUgICAgICAgfCAxMzIwICsrKysrKysrKysrKysrLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA5OTQwIGluc2VydGlvbnMoKyksIDM3MDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlIGIvYmZkL2NvbmZpZ3VyZQotaW5kZXggMTc5NjA2ODRmOC4uOTI1ZmI0MDFmMiAxMDA3NTUKLS0tLSBhL2JmZC9jb25maWd1cmUKLSsrKyBiL2JmZC9jb25maWd1cmUKLUBAIC03MDQsNiArNzA0LDkgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0rYWNfY3RfQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTgyMiw2ICs4MjUsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNTA0LDYgKzE1MDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbW1hcCAgICAgICAgICAgICB0cnkgdXNpbmcgbW1hcCBmb3IgQkZEIGlucHV0IGZpbGVzIGlmIGF2YWlsYWJsZQotICAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1ESVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGluIERJUgotQEAgLTU2OTMsOCArNTY5OSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01NzM0LDcgKzU3NDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02NDIwLDggKzY0MjYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjQ3MCw2ICs2NDc2LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NDg2LDYgKzY1NjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY2NTQsNyArNjczOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02ODA4LDYgKzY4OTQsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02ODIxLDExICs2OTIyLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02ODQxLDcgKzcwOTUsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02ODYxLDExICs3MTE1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY4ODEsNyArNzEzOSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02OTAwLDYgKzcxNTgsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY5MTEsMTYgKzcxNzMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC03MjYyLDggKzc1ODAsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTcyOTksNiArNzYxNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MzQwLDYgKzc2NTksMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzM1MSw3ICs3NjgyLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzM3Nyw4ICs3NzA4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzM4OCw4ICs3NzE5LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzQyNiw2ICs3NzU3LDE2IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzQ0Miw2ICs3NzgzLDQ1IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzY1Myw2ICs4MDMzLDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04MjE2LDYgKzg3MTMsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODM4MCw3ICs4ODc5LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTg0NjksNyArODk2OSw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODc2Nyw4ICs5MjY3LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04OTM0LDYgKzk0MzIsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04OTk2LDcgKzk1MDAsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtOTA1MywxMyArOTU1NywxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC05MTIwLDYgKzk2MjgsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC05NDcwLDcgKzk5ODMsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05NTY5LDEyICsxMDA4MywxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05NTg4LDggKzEwMTAyLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTk2MDcsOCArMTAxMjEsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTY1NCw4ICsxMDE2OCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05Nzg1LDcgKzEwMjk5LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk3OTgsMjIgKzEwMzE4LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05ODI1LDcgKzEwMzUyLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05ODM4LDIyICsxMDM3MSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk4OTgsMjAgKzEwNDM4LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTk3Miw3ICsxMDU1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk5ODAsNyArMTA1NjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05OTk2LDcgKzEwNTc5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTEwMDIwLDEwICsxMDYwMywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTEwMTAyLDIzICsxMDY4NSwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtMTAyMDMsNyArMTA3OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDIyMiw5ICsxMDgxOCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDgwMCw4ICsxMTM5Niw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDgzNCwxMyArMTE0MzEsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwOTMyLDcgKzExNTg3LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExNzI4LDcgKzEyMzgzLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE3MzEgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNzcyLDEwICsxMjQyNywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExODM0LDcgKzEyNDg5LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE4MzcgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExODc4LDEwICsxMjUzMywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE0NTI1LDcgKzE1MTgwLDcgQEAgU0hBUkVEX0xERkxBR1M9Ci0gaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAjIE1vcmUgaGFja3MgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzLgotQEAgLTE3MTQyLDEzICsxNzc5NywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3MTYzLDE0ICsxNzgyNSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNzIwMywxMiArMTc4NjgsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTcyNjMsOCArMTc5MjgsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE3Mjc0LDEyICsxNzk0NCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTcyOTUsNyArMTc5NjcsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNzMzMSw2ICsxODAwMiw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTgxMTksNyArMTg3OTEsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE4MjIyLDE5ICsxODg5NSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xODI2NCw2ICsxODk2MCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xODI3Myw2ICsxODk3NSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTgzODcsMTIgKzE5MDkyLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE4NDc5LDkgKzE5MTg0LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTg0OTcsNiArMTkxOTksOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE4NTI5LDIxMCArMTkyMzQsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCi1pbmRleCBlZGEzOGVhMDg2Li43Y2RmOWM4MTQ2IDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZ3VyZS5hYwotKysrIGIvYmZkL2NvbmZpZ3VyZS5hYwotQEAgLTI5Myw3ICsyOTMsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAjIE1vcmUgaGFja3MgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzLgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZ3VyZSBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotaW5kZXggMzgxMjhlMTQ2ZC4uYzc0Zjc5Nzk5NiAxMDA3NTUKLS0tLSBhL2JpbnV0aWxzL2NvbmZpZ3VyZQotKysrIGIvYmludXRpbHMvY29uZmlndXJlCi1AQCAtNjg5LDggKzY4OSwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC04MDcsNiArODEwLDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ4Myw2ICsxNDg3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6Ci0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgZGVmYXVsdD1ubwotICAgLS13aXRoLWxpYmljb252LXByZWZpeFs9RElSXSAgc2VhcmNoIGZvciBsaWJpY29udiBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgotQEAgLTU0NTcsOCArNTQ2Myw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01NDk4LDcgKzU1MDQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MTg0LDggKzYxOTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjIzNCw2ICs2MjQwLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02MjUwLDYgKzYzMzAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY0MTgsNyArNjUwMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NTcyLDYgKzY2NTgsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02NTg3LDkgKzY2ODgsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY2MDUsNyArNjg1OSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY2MjUsMTEgKzY4NzksMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjY0NSw3ICs2OTAzLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY2NjQsNiArNjkyMiwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjY3NSwxMiArNjkzNywxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02NjkyLDYgKzY5NTIsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC03MDI2LDggKzczNDQsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTcwNjMsNiArNzM4MSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MTA0LDYgKzc0MjMsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzExNSw3ICs3NDQ2LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzE0MSw4ICs3NDcyLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzE1Miw4ICs3NDgzLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzE5MCw2ICs3NTIxLDIxIEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzIwNiw2ICs3NTUyLDQwIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzQxNyw2ICs3Nzk3LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03OTgwLDYgKzg0NzcsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODE3NSw3ICs4Njc0LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTgyNjQsNyArODc2NCw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODU2Miw4ICs5MDYyLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NzI5LDYgKzkyMjcsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NzkxLDcgKzkyOTUsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODg0OCwxMyArOTM1MiwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04OTE1LDYgKzk0MjMsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC05MjY1LDcgKzk3NzgsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MzY0LDEyICs5ODc4LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkzODMsOCArOTg5Nyw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05NDAyLDggKzk5MTYsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTQ0OSw4ICs5OTYzLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk1ODAsNyArMTAwOTQsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTU5MywyMiArMTAxMTMsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk2MjAsNyArMTAxNDcsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk2MzMsMjIgKzEwMTY2LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTY5MywyMCArMTAyMzMsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NzY3LDcgKzEwMzUwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTc3NSw3ICsxMDM1OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk3OTEsNyArMTAzNzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTgxNSwxMCArMTAzOTgsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05ODk3LDIzICsxMDQ4MCwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTk5OCw3ICsxMDU5NCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMDE3LDkgKzEwNjEzLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNTk1LDggKzExMTkxLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNjI5LDEzICsxMTIyNiw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA3MjcsNyArMTEzODIsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE1MjMsNyArMTIxNzgsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTUyNiAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE1NjcsMTAgKzEyMjIyLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE2MjksNyArMTIyODQsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTYzMiAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE2NzMsMTAgKzEyMzI4LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU5MzYsMTMgKzE2NTkxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5NTcsMTQgKzE2NjE5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1OTk3LDEyICsxNjY2MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjA1Nyw4ICsxNjcyMiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTYwNjgsMTIgKzE2NzM4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xNjA4OSw3ICsxNjc2MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE2MTI1LDYgKzE2Nzk2LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjg5MSw3ICsxNzU2Myw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTY5OTQsMTkgKzE3NjY3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE3MDM2LDYgKzE3NzMyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE3MDQ1LDYgKzE3NzQ3LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNzE1OSwxMiArMTc4NjQsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTcyNTEsOSArMTc5NTYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNzI2OSw2ICsxNzk3MSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTczMDEsMjEwICsxODAwNiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IDY0ZGU5ZjE5ZGEuLmE4MmZkZTdmYTggMTAwNzU1Ci0tLS0gYS9nYXMvY29uZmlndXJlCi0rKysgYi9nYXMvY29uZmlndXJlCi1AQCAtNjgxLDggKzY4MSwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03OTksNiArODAyLDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ4Nyw2ICsxNDkxLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLWNwdT1DUFUgICAgICAgICAgZGVmYXVsdCBjcHUgdmFyaWFudCBpcyBDUFUgKGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gQVJDKQotICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6Ci1AQCAtNTI3NCw4ICs1MjgwLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTUzMTUsNyArNTMyMSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYwMDEsOCArNjAwNyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02MDUxLDYgKzYwNTcsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYwNjcsNiArNjE0NywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjIzNSw3ICs2MzIwLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTYzODksNiArNjQ3NSwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY0MDQsOSArNjUwNSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjQyMiw3ICs2Njc2LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjQ0MiwxMSArNjY5NiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NDYyLDcgKzY3MjAsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjQ4MSw2ICs2NzM5LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02NDkyLDEyICs2NzU0LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotIAotIAotIAotQEAgLTY1MDksNiArNjc2OSw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY4NDMsOCArNzE2MSw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjg4MCw2ICs3MTk4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTY5MjEsNiArNzI0MCwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC02OTMyLDcgKzcyNjMsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC02OTU4LDggKzcyODksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02OTY5LDggKzczMDAsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MDA3LDYgKzczMzgsMjEgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MDIzLDYgKzczNjksNDAgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03MjM0LDYgKzc2MTQsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc3OTcsNiArODI5NCw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03OTkyLDcgKzg0OTEsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODA4MSw3ICs4NTgxLDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04Mzc5LDggKzg4NzksNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg1NDYsNiArOTA0NCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg2MDgsNyArOTExMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NjY1LDEzICs5MTY5LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg3MzIsNiArOTI0MCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTkwODIsNyArOTU5NSw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkxODEsMTIgKzk2OTUsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTIwMCw4ICs5NzE0LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTkyMTksOCArOTczMyw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MjY2LDggKzk3ODAsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTM5Nyw3ICs5OTExLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk0MTAsMjIgKzk5MzAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk0MzcsNyArOTk2NCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTQ1MCwyMiArOTk4MywyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk1MTAsMjAgKzEwMDUwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTU4NCw3ICsxMDE2Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk1OTIsNyArMTAxNzUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NjA4LDcgKzEwMTkxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk2MzIsMTAgKzEwMjE1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTcxNCwyMyArMTAyOTcsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk4MTUsNyArMTA0MTEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05ODM0LDkgKzEwNDMwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNDEyLDggKzExMDA4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNDQ2LDEzICsxMTA0Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA1NDQsNyArMTExOTksNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTEzNDAsNyArMTE5OTUsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTM0MyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTEzODQsMTAgKzEyMDM5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE0NDYsNyArMTIxMDEsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTQ0OSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE0OTAsMTAgKzEyMTQ1LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU4OTYsMTMgKzE2NTUxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5MTcsMTQgKzE2NTc5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1OTU3LDEyICsxNjYyMiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjAxNyw4ICsxNjY4MiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTYwMjgsMTIgKzE2Njk4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xNjA0OSw3ICsxNjcyMSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE2MDg1LDYgKzE2NzU2LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNjg1OCw3ICsxNzUzMCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTY5NjEsMTkgKzE3NjM0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE3MDAzLDYgKzE3Njk5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE3MDEyLDYgKzE3NzE0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNzEyNiwxMiArMTc4MzEsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTcyMTgsOSArMTc5MjMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNzIzNiw2ICsxNzkzOCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTcyNjgsMjEwICsxNzk3MywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCBhYjMyYmFiMmI2Li41MTE5YzYwMTlmIDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC02NjIsOCArNjYyLDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc4MCw2ICs3ODMsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDQyLDYgKzE0NDYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC01MTI0LDggKzUxMzAsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTE2NSw3ICs1MTcxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTg1MSw4ICs1ODU3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU5MDEsNiArNTkwNyw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNTkxNyw2ICs1OTk3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MDg1LDcgKzYxNzAsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjE2MiwxMSArNjI0OCw2IEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICA7OwotIAotLWxpbnV4LXVjbGliYyopCi0tICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotLSAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKLS0gIDs7Ci0tCi0gbmV0YnNkKikKLSAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwotQEAgLTYyNDQsNiArNjMyNSwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyNTcsMTEgKzYzNTMsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYyNzYsOCArNjUyNSw4IEBAIGRvCi0gICBJRlM9JGFzX3NhdmVfSUZTCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLS0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYyOTcsMTEgKzY1NDYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjMzNiw2ICs2NTg5LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02MzQ3LDE2ICs2NjA0LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNjY5OCw4ICs3MDExLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NzM1LDYgKzcwNDgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjc3Niw2ICs3MDkwLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY3ODcsNyArNzExMyw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY4MTMsOCArNzEzOSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4MjQsOCArNzE1MCw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY4NjIsNiArNzE4OCwxOCBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTY4NzgsNiArNzIxNiw0MyBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTcwODksNiArNzQ2NCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzY1Miw2ICs4MTQ0LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc4NDcsNyArODM0MSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03OTM2LDcgKzg0MzEsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgyMzQsOCArODcyOSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODQwMSw2ICs4ODk0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODQ2Myw3ICs4OTYyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg1MjAsMTMgKzkwMTksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODU4Nyw2ICs5MDkwLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODkzNyw3ICs5NDQ1LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTAzNiwxMiArOTU0NSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MDU1LDggKzk1NjQsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTA3NCw4ICs5NTgzLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkxMjEsOCArOTYzMCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MjUyLDcgKzk3NjEsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTI2NSwyMiArOTc4MCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTI5Miw3ICs5ODE0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MzA1LDIyICs5ODMzLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTM2NSwyMCArOTkwMCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk0MzksNyArMTAwMTcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NDQ3LDcgKzEwMDI1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTQ2Myw3ICsxMDA0MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NDg3LDEwICsxMDA2NSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk1NjksMjMgKzEwMTQ3LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NjcwLDcgKzEwMjYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTY4OSw5ICsxMDI4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDI2Nyw4ICsxMDg1OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDMwMSwxMyArMTA4OTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMzk5LDcgKzExMDQ5LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMjM5LDEwICsxMTg4OSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMzQ1LDEwICsxMTk5NSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEzMzE0LDEzICsxMzk2NCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMzM1LDE0ICsxMzk5MiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzM3NSwxMiArMTQwMzUsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM0MzUsOCArMTQwOTUsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEzNDQ2LDEyICsxNDExMSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTM0NjcsNyArMTQxMzQsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMzUwMyw2ICsxNDE2OSw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTQyNjgsNyArMTQ5MzUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE0MzcxLDE5ICsxNTAzOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNDQxMyw2ICsxNTEwNCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNDQyMiw2ICsxNTExOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTQ1MzYsMTIgKzE1MjM2LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE0NjI4LDkgKzE1MzI4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTQ2NDYsNiArMTUzNDMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE0Njc4LDIxMCArMTUzNzgsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggYmMwOWU3ZWY4MS4uNDNjMzkxYzJiMyAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtNjg3LDggKzY4NywxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC04MTUsNiArODE4LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTUwNyw2ICsxNTExLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLWxpYi1wYXRoPWRpcjE6ZGlyMi4uLiAgc2V0IGRlZmF1bHQgTElCX1BBVEgKLSAgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUi4KLSAKLUBAIC01OTU5LDggKzU5NjUsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNjAwMCw3ICs2MDA2LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjY4Niw4ICs2NjkyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTY3MzYsNiArNjc0Miw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjc1Miw2ICs2ODMyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02OTIwLDcgKzcwMDUsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNzA3NCw2ICs3MTYwLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNzA4OSw5ICs3MTkwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC03MTA3LDcgKzczNjEsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC03MTI3LDExICs3MzgxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTcxNDcsNyArNzQwNSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC03MTY2LDYgKzc0MjQsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTcxNzcsMTIgKzc0MzksMTIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0gCi0gCi0gCi1AQCAtNzE5Miw2ICs3NDU0LDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi1AQCAtNzUyOCw4ICs3ODQ2LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03NTY1LDYgKzc4ODMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzYwNiw2ICs3OTI1LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTc2MTcsNyArNzk0OCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTc2NDMsOCArNzk3NCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTc2NTQsOCArNzk4NSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTc2OTIsNiArODAyMywxOSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTc3MDgsNiArODA1Miw0MiBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTc5MTksNiArODI5OSwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtODQ4Miw2ICs4OTc5LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTg1NTAsNiArOTA0OSwxNiBAQCBkb25lCi0gCi0gCi0gCi0rZnVuY19zdHJpcG5hbWVfY25mICgpCi0rewotKyAgY2FzZSAkezJ9IGluCi0rICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotKyAgZXNhYwotK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKLSsKLSsKLSsKLSAKLSAKLSAjIFNldCBvcHRpb25zCi1AQCAtODY3OCw3ICs5MTg3LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTg3NjcsNyArOTI3Nyw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtOTA2NSw4ICs5NTc1LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC05MjMyLDYgKzk3NDAsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC05Mjk0LDcgKzk4MDgsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtOTM1MSwxMyArOTg2NSwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC05NDE4LDYgKzk5MzYsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC05NzY4LDcgKzEwMjkxLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTg2NywxMiArMTAzOTEsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTg4Niw4ICsxMDQxMCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05OTA1LDggKzEwNDI5LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk5NTIsOCArMTA0NzYsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtMTAwODMsNyArMTA2MDcsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTAwOTYsMjIgKzEwNjI2LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC0xMDEyMyw3ICsxMDY2MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTAxMzYsMjIgKzEwNjc5LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtMTAxOTUsMjEgKzEwNzQ1LDY0IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0tICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTEwMjcwLDcgKzEwODYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtMTAyNzgsNyArMTA4NzEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC0xMDI5NCw3ICsxMDg4Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC0xMDMxOCwxMCArMTA5MTEsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC0xMDQwMCwyMyArMTA5OTMsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTEwNTAxLDcgKzExMTA3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtMTA1MjAsOSArMTExMjYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTEwOTgsOCArMTE3MDQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTExMzIsMTMgKzExNzM5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMTIzMCw3ICsxMTg5NSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMjAyNiw3ICsxMjY5MSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDEyMDI5ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMjA3MCwxMCArMTI3MzUsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjEzMiw3ICsxMjc5Nyw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDEyMTM1ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMjE3NiwxMCArMTI4NDEsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjU3MSw2ICsxMzIzNiw3IEBAICRSTSAtciBjb25mdGVzdCoKLSAKLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSRDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgbHRfc2F2ZV9MRD0kTEQKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSAgIEdDQz0kR1hYCi1AQCAtMTI1ODgsNiArMTMyNTQsNyBAQCAkUk0gLXIgY29uZnRlc3QqCi0gICBmaQotICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKLSAgIENDPSR7Q1hYLSJjKysifQotKyAgQ0ZMQUdTPSRDWFhGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBjb21waWxlcl9DWFg9JENDCi0gICBmb3IgY2NfdGVtcCBpbiAkY29tcGlsZXIiIjsgZG8KLUBAIC0xMjg3MCw3ICsxMzUzNywxMyBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQotICAgICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9Jy1iZXJvaycKLSAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5Ci0gICAgICAgICAgICMgZXhlY3V0YWJsZS4KLS0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEyODgzLDIyICsxMzU1NiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAotK2ZpCi0gCi0gICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAotQEAgLTEyOTExLDcgKzEzNTkxLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgICBlbHNlCi0gCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTI5MjQsMjIgKzEzNjEwLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCi0rZmkKLSAKLSAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC0xMjk4MiwyOSArMTM2NzUsNzUgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICA7OwotIAotICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLS0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCi0tICAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0tICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCi0tICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKLS0KLS0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLS0gICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0tICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0tICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBlbHNlCi0tCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGZpfgotLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KLS0gICAgICAgIGZpCi0tICAgICAgICA7OwotKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCi0rCSxjbCogfCBubyxjbCopCi0rCSAgIyBOYXRpdmUgTVNWQwotKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSsJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScgJwotKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9eWVzCi0rCSAgZmlsZV9saXN0X3NwZWNfQ1hYPSdAJwotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCSAgbGliZXh0PWxpYgotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwkgIHNocmV4dF9jbWRzPSIuZGxsIgotKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBlbHNlCi0rCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgICBsaW5rbmFtZXM9JwotKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgQ1hYKT0ndHJ1ZScKLSsJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKLSsJICAjIERvbid0IHVzZSByYW5saWIKLSsJICBvbGRfcG9zdGluc3RhbGxfY21kc19DWFg9J2NobW9kIDY0NCAkb2xkbGliJwotKwkgIHBvc3RsaW5rX2NtZHNfQ1hYPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICAgKikKLSsJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCQk7OwotKwkgICAgZXNhY34KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+Ci0rCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICAgIGZpJwotKwkgIDs7Ci0rCSopCi0rCSAgIyBnKysKLSsJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLSsJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCi0rCSAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLSsJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLSsJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCi0rCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0rCi0rCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotKwkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLSsJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgZWxzZQotKwkgICAgbGRfc2hsaWJzX0NYWD1ubwotKwkgIGZpCi0rCSAgOzsKLSsJZXNhYwotKwk7OwotICAgICAgIGRhcndpbiogfCByaGFwc29keSopCi0gCi0gCi1AQCAtMTMxMTAsNyArMTM4NDksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgICA7OwotICAgICAgICAgICAqKQotICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0tICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsgICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICAgICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KLUBAIC0xMzE4MSwxMCArMTM5MjAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgIGlhNjQqKQotLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICAqKQotLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgIGVzYWMKLSAJICAgICAgZmkKLUBAIC0xMzIyNSw5ICsxMzk2NCw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgICAqKQotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSAgICAgIGVsc2UKLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0rCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCSAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKLUBAIC0xMzI5NywyMCArMTQwMzYsMjAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLS0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKLSsJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCi0gCSAgICAgIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KLSsJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgotIAkJJFJBTkxJQiAkb2xkbGliJwotIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAJICAgICAgOzsKLSAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCi0gCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotQEAgLTEzNTA1LDcgKzE0MjQ0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgICAgKikKLS0JICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICBlc2FjCi0gCi1AQCAtMTM1NTEsNyArMTQyOTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgICBzb2xhcmlzKikKLSAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgICAgIENDKikKLSsgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQotIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotICAgICAgICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKLSAJICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKLUBAIC0xMzU5Miw5ICsxNDMzMSw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LXogJHt3bH1kZWZzJwotIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0rCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0gCSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotIAotIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC0xMzcyOSw2ICsxNDQ2OCwxMyBAQCBwcml2YXRlOgotIH07Ci0gX0xUX0VPRgotIAotKwotK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLStjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCi0rKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7Ci0rKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OwotK2VzYWMKLSsKLSBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAgIChldmFsICRhY19jb21waWxlKSAyPiY1Ci0gICBhY19zdGF0dXM9JD8KLUBAIC0xMzc0Miw3ICsxNDQ4OCw3IEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwotIAotICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotLSAgICBjYXNlICRwIGluCi0rICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KLSAKLSAgICAgLUwqIHwgLVIqIHwgLWwqKQotICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTEzNzUxLDEzICsxNDQ5NywyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KLSAJIHByZXY9JHAKLSAJIGNvbnRpbnVlCi0tICAgICAgIGVsc2UKLS0JIHByZXY9Ci0gICAgICAgIGZpCi0gCi0rICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCi0rICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgotKyAgICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICBlc2FjCi0rICAgICAgIGZpCi0rICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotLQkgY2FzZSAkcCBpbgotLQkgLUwqIHwgLVIqKQotKwkgY2FzZSAke3ByZXZ9IGluCi0rCSAtTCB8IC1SKQotIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKLSAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0gCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgotQEAgLTEzNzc3LDggKzE0NTMyLDEwIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotIAkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKLSAJIGZpCi0gICAgICAgIGZpCi0rICAgICAgIHByZXY9Ci0gICAgICAgIDs7Ci0gCi0rICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwotICAgICAqLiRvYmpleHQpCi0gICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAotICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLUBAIC0xMzgxNCw2ICsxNDU3MSw3IEBAIGVsc2UKLSBmaQotIAotICRSTSAtZiBjb25mZXN0LiRvYmpleHQKLStDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCi0gCi0gIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KLSBjYXNlICRob3N0X29zIGluCi1AQCAtMTM4NDksNyArMTQ2MDcsNyBAQCBsaW51eCopCi0gCi0gc29sYXJpcyopCi0gICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgQ0MqKQotKyAgQ0MqIHwgc3VuQ0MqKQotICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCi0gICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLUBAIC0xMzkxNCw4ICsxNDY3Miw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLUBAIC0xNDAyMCw2ICsxNDc3NiwxMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAkgIDs7Ci0gCWVzYWMKLSAJOzsKLSsgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQotKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCi0rCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLURETExfRVhQT1JUJwotKwk7OwotICAgICAgIGRndXgqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotIAkgIGVjKysqKQotQEAgLTE0MTcyLDcgKzE0OTMzLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJOzsKLSAgICAgICBzb2xhcmlzKikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0JICBDQyopCi0rCSAgQ0MqIHwgc3VuQ0MqKQotIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKLSAJICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLUJzdGF0aWMnCi1AQCAtMTQyMzcsMTAgKzE0OTk4LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWAotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtMTQyOTgsNiArMTUwNjYsOCBAQCBmaQotIAotIAotIAotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTE0NDc1LDYgKzE1MjQ1LDcgQEAgZmkKLSAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLSAKLSAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCi0gICBjYXNlICRob3N0X29zIGluCi0gICBhaXhbNC05XSopCi0gICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgotQEAgLTE0NDg5LDE1ICsxNTI2MCwyMCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQotICAgICA7OwotICAgcHczMiopCi0gICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKLS0gIDs7Ci0rICAgIDs7Ci0gICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQotLSAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87L14uKlsgXV9fbm1fXy9zL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICBjbCopIDs7Ci0rICAgICopCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotICAgKikKLSAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIDs7Ci0gICBlc2FjCi0tICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCi0gCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKLSAkYXNfZWNobyAiJGxkX3NobGlic19DWFgiID4mNjsgfQotQEAgLTE0NzYwLDggKzE1NTM2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTE0NzkzLDEzICsxNTU3MCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTQ4OTAsNyArMTU3MjUsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTUzNDksNiArMTYxODQsNyBAQCBmaQotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotICAgTERDWFg9JExECi0gICBMRD0kbHRfc2F2ZV9MRAotICAgR0NDPSRsdF9zYXZlX0dDQwotQEAgLTE4NDQ0LDEzICsxOTI4MCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NDY1LDE0ICsxOTMwOCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODUwNSwxMiArMTkzNTEsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg1NDksOCArMTkzOTUsOCBAQCBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZQotIGNvbXBpbGVyX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBHQ0NfQ1hYPSdgJEVDSE8gIiRHQ0NfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODU3NywxMiArMTk0MjMsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYIiB8ICRTRUQgIiRkZWxheV8KLSBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoX0NYWD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aF9DWFg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kc19DWFg9J2AkRUNITyAiJHByZWxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWNfQ1hYPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGhhcmRjb2RlX2FjdGlvbl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2FjdGlvbl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9J2AkRUNITyAiJGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NjIwLDggKzE5NDY2LDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xODYzMSwxMiArMTk0ODIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE4NjUyLDcgKzE5NTA1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTg2NzQsOCArMTk1MjYsOCBAQCBMRF9DWFggXAotIHJlbG9hZF9mbGFnX0NYWCBcCi0gY29tcGlsZXJfQ1hYIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFggXAotLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggXAotK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFggXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCBcCi0gZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWCBcCi1AQCAtMTg2ODcsNyArMTk1MzksNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFggXAotLWZpeF9zcmNmaWxlX3BhdGhfQ1hYIFwKLSBleGNsdWRlX2V4cHN5bXNfQ1hYIFwKLSBpbmNsdWRlX2V4cHN5bXNfQ1hYIFwKLSBmaWxlX2xpc3Rfc3BlY19DWFggXAotQEAgLTE4NzIxLDYgKzE5NTcyLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xODczNSw3ICsxOTU4Nyw4IEBAIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIFwKLSBtb2R1bGVfY21kc19DWFggXAotIG1vZHVsZV9leHBzeW1fY21kc19DWFggXAotIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIFwKLS1wcmVsaW5rX2NtZHNfQ1hYOyBkbwotK3ByZWxpbmtfY21kc19DWFggXAotK3Bvc3RsaW5rX2NtZHNfQ1hYOyBkbwotICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KLSAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKLSAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgotQEAgLTE5NTM5LDcgKzIwMzkyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xOTY0MiwxOSArMjA0OTYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTk2ODQsNiArMjA1NjEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTk2OTMsNiArMjA1NzYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE5ODA3LDEyICsyMDY5MywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xOTg5OSw5ICsyMDc4NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE5OTE3LDYgKzIwODAwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xOTk2MywyMTAgKzIwODQ5LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLUBAIC0yMDE5NCwxMiArMjEwMzksMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWAotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYCi0gCi1AQCAtMjAyODYsOSArMjExMzEsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnNfQ1hYCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGhfQ1hYCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYCi0gCi1AQCAtMjAzMDQsNiArMjExNDYsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzX0NYWAotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzX0NYWAotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlY19DWFgKLSAKLWRpZmYgLS1naXQgYS9saWJ0b29sLm00IGIvbGlidG9vbC5tNAotaW5kZXggNDM0NTMwMDU5Zi4uZTQ1ZmRjNjk5OCAxMDA2NDQKLS0tLSBhL2xpYnRvb2wubTQKLSsrKyBiL2xpYnRvb2wubTQKLUBAIC0xLDcgKzEsOCBAQAotICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwotQEAgLTEwLDcgKzExLDggQEAKLSAKLSBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTM3LDcgKzM5LDcgQEAgbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKLSAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIF0pCi0gCi0tIyBzZXJpYWwgNTYgTFRfSU5JVAotKyMgc2VyaWFsIDU3IExUX0lOSVQKLSAKLSAKLSAjIExUX1BSRVJFUShWRVJTSU9OKQotQEAgLTkyLDcgKzk0LDggQEAgX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSBBQ19TVUJTVChMSUJUT09MKWRubAotIAotIF9MVF9TRVRVUAotQEAgLTE2NiwxMCArMTY5LDEzIEBAIF9MVF9ERUNMKFtdLCBbZXhlZXh0XSwgWzBdLCBbRXhlY3V0YWJsZSBmaWxlIHN1ZmZpeCAobm9ybWFsbHkgIiIpXSlkbmwKLSBkbmwKLSBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAotK200X3JlcXVpcmUoW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdKWRubAotIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAotIG00X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAotK200X3JlcXVpcmUoW19MVF9XSVRIX1NZU1JPT1RdKWRubAotIAotIF9MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKLSAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyCi1AQCAtMTk5LDcgKzIwNSw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNjMyLDcgKzYzOCw3IEBAIG00X2lmc2V0KFtBQ19QQUNLQUdFX05BTUVdLCBbQUNfUEFDS0FHRV9OQU1FIF0pY29uZmlnLmx0W11kbmwKLSBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQotIGNvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgotIAotLUNvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gVGhpcyBjb25maWcubHQgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCi0gCi1AQCAtNzQ2LDE1ICs3NTIsMTIgQEAgX0xUX0VPRgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSAKLS0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotKyAgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwotIAotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gXSwKLUBAIC05ODAsNiArOTgzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtMTA2OSwzMCArMTA3NCw0MSBAQCBtNF9kZWZ1bihbX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVNdLAotICAgZmkKLSBdKQotIAotLSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbVEFHTkFNRV0pCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCi0gIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCi0gIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCi0gIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCi0gIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZwotICMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCi0rIyBTdG9yZSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBkaWZmZXJlbnQgY29tcGlsZXJzIGZvciBlYWNoIFRBR05BTUUuCi0rIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgotIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCi0gW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi0tQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtBQ19MQU5HX1BST0dSQU1dKV0sWwotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maV0sW10pCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0raWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCi0rICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWwotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH1dJwotKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmldLFtdKQotKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgotKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rICBdKQotKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCi0rZmkKLSBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSAKLSAKLUBAIC0xMTE3LDcgKzExMzMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIAotIEFDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtMTE2MSw2ICsxMTc3LDM5IEBAIF9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKLSBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKLSAKLSAKLSsjIF9MVF9XSVRIX1NZU1JPT1QKLSsjIC0tLS0tLS0tLS0tLS0tLS0KLStBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCi0rW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQotK0FDX0FSR19XSVRIKFtsaWJ0b29sLXN5c3Jvb3RdLAotK1sgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAotK1tdLCBbd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm9dKQotKwotK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKLStkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfbGlidG9vbF9zeXNyb290fV0pCi0rICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKLSsgICA7OwotK2VzYWMKLSsKLSsgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQotK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAotK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKLSsKLSAjIF9MVF9FTkFCTEVfTE9DSwotICMgLS0tLS0tLS0tLS0tLS0tCi0gbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCi1AQCAtMTMyMCwxNCArMTM2OSw0NyBAQCBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSBdKSMgX0xUX0VOQUJMRV9MT0NLCi0gCi0gCi0rIyBfTFRfUFJPR19BUgotKyMgLS0tLS0tLS0tLS0KLSttNF9kZWZ1bihbX0xUX1BST0dfQVJdLAotK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCi0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCi0rX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCi0rICBbbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAotKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKLSsgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCi0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKyAgICAgXSkKLSsgIF0pCi0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCi0rICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKLStdKSMgX0xUX1BST0dfQVIKLSsKLSsKLSAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi0tW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLS1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLS1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQotK1tfTFRfUFJPR19BUgotIAotIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQotIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgotQEAgLTE2MjMsNyArMTcwNSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKLStbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xNjY3LDEwICsxNzQ5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMjIxMCw4ICsyMjkyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTIyNDQsMTMgKzIzMjcsNzEgQEAgbTRfaWYoWyQxXSwgW10sWwotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0yMzQyLDcgKzI0ODMsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMjk1MCw2ICszMDkxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC0zMDE2LDcgKzMxNjIsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtMzE2Nyw2ICszMzE0LDIxIEBAIHRwZiopCi0gICA7OwotIGVzYWMKLSBdKQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTMxNzQsNyArMzMzNiwxMSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAotICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQotIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCi0tICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCi0rICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLStfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKLSsgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLStfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKLSsgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCi0gXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKLSAKLSAKLUBAIC0zMjc3LDYgKzM0NDMsNjcgQEAgZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQotIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQotIAotKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQotKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgotKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKLSttNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAotK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCi0rbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCi0rbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCi0rQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAotK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAotK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLStdKQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLStfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAotKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCi0rXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCi0rCi0rCi0rIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKLSttNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCi0rW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLStBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCi0rICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCpdKQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAotK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCi0rCi0gCi0gIyBMVF9MSUJfTQotICMgLS0tLS0tLS0KLUBAIC0zNDAzLDggKzM2MzAsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTM0NDAsNiArMzY2Nyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC0zNDczLDYgKzM3MDEsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtMzQ4NCw3ICszNzI0LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgotIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gCWZpCi1AQCAtMzU1MSw2ICszNzkxLDEzIEBAIGVsc2UKLSAgIEFDX01TR19SRVNVTFQob2spCi0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKLSAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAotQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKLSBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKLSAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCi0gICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCi0rX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKLSsgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKLSBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKLSAKLSAKLUBAIC0zNTcyLDcgKzM4MjEsNiBAQCBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ci0gX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQotIAotLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQotIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCi0gICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTM2NzgsNiArMzkyNiwxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAkgIDs7Ci0gCWVzYWMKLSAJOzsKLSsgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQotKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCi0rCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0rCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKLSsJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKLSsJOzsKLSAgICAgICBkZ3V4KikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJICBlYysrKikKLUBAIC0zODMwLDcgKzQwODQsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAk7OwotICAgICAgIHNvbGFyaXMqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotLQkgIENDKikKLSsJICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLUBAIC00MDUzLDYgKzQzMDcsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCi0rCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTQxMTUsNyArNDM3NSw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7Ci1AQCAtNDE3Miw5ICs0NDMyLDExIEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCi0gICAgIDs7Ci0gZXNhYwotLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCi0rCi0rQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKLSsgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKLStfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtNDE5Myw2ICs0NDU1LDggQEAgZmkKLSBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCi0gCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQotIAotK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCi0gbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKLSBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCi0gQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAotIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1AQCAtNDIyMSw2ICs0NDg2LDcgQEAgbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQotIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCi0gICBjYXNlICRob3N0X29zIGluCi0gICBhaXhbWzQtOV1dKikKLSAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtNDIzNSwxNSArNDUwMSwyMCBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotICAgICA7OwotICAgcHczMiopCi0gICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLS0gIDs7Ci0rICAgIDs7Ci0gICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQotLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICBjbCopIDs7Ci0rICAgICopCi0rICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotICAgKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIDs7Ci0gICBlc2FjCi0tICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSBdLCBbCi0gICBydW5wYXRoX3Zhcj0KLSAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLUBAIC00NDExLDcgKzQ2ODIsOCBAQCBfTFRfRU9GCi0gICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC00NTEwLDEyICs0NzgyLDEyIEBAIF9MVF9FT0YKLSAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTQ1MjksOCArNDgwMSw4IEBAIF9MVF9FT0YKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTQ1NDgsOCArNDgyMCw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICBmaQotQEAgLTQ1OTUsOCArNDg2Nyw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICBmaQotQEAgLTQ3MjYsNyArNDk5OCw3IEBAIF9MVF9FT0YKLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLSAgICAgICBlbHNlCi1AQCAtNDczNyw3ICs1MDA5LDcgQEAgX0xUX0VPRgotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLSAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi1AQCAtNDc4MSwyMCArNTA1Myw2MyBAQCBfTFRfRU9GCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLS0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC00ODI4LDcgKzUxNDMsNyBAQCBfTFRfRU9GCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLUBAIC00ODM2LDcgKzUxNTEsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtNDg1Miw3ICs1MTY3LDcgQEAgX0xUX0VPRgotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC00ODc2LDEwICs1MTkxLDEwIEBAIF9MVF9FT0YKLSAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtNDkyNiwxNiArNTI0MSwzMSBAQCBfTFRfRU9GCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbaW50IGZvbyh2b2lkKSB7fV0pXSwKLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0gICAgICAgICkKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKLSsJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAotKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIEFDX0xJTktfSUZFTFNFKAotKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKLSsJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCi0rCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAotKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dLAotKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dKV0pXSwKLSsJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCi0rCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCi0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKLSAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQotIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKLSAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi0tX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKLSBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKLSAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCi0gX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAotQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAotICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKLSBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKLSAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKLStfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCi0rICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKLSBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKLSBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLUBAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCi0gbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCi0gaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgotQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICBmaQotICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKLSAgIENDPSR7Q1hYLSJjKysifQotKyAgQ0ZMQUdTPSRDWFhGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAotICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICBlbHNlCi0gCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSsJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJICAjIERvbid0IHVzZSByYW5saWIKLSsJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJwotKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICAgKikKLSsJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCQk7OwotKwkgICAgZXNhY34KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+Ci0rCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICAgIGZpJwotKwkgIDs7Ci0rCSopCi0rCSAgIyBnKysKLSsJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSsJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQotIAk7OwotQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi1AQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi1AQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKLSAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLUBAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwotIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0gCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotIAotIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotICAgTERDWFg9JExECi0gICBMRD0kbHRfc2F2ZV9MRAotICAgR0NDPSRsdF9zYXZlX0dDQwotQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAotIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCi0gCi0gCi0rIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCi0rIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSsjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSsjCi0rIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCi0rIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCi0rIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCi0rbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKLStBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQotK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rCi0gIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKLUBAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAotICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKLSBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0rQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCi0gIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKLSBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9Ci0gX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KLUBAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7Ci0gfTsKLSBfTFRfRU9GCi0gXSkKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi0gaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLUBAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwotIAotICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotLSAgICBjYXNlICRwIGluCi0rICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KLSAKLSAgICAgLUwqIHwgLVIqIHwgLWwqKQotICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KLSAJIHByZXY9JHAKLSAJIGNvbnRpbnVlCi0tICAgICAgIGVsc2UKLS0JIHByZXY9Ci0gICAgICAgIGZpCi0gCi0rICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCi0rICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgotKyAgICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICBlc2FjCi0rICAgICAgIGZpCi0rICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotLQkgY2FzZSAkcCBpbgotLQkgLUwqIHwgLVIqKQotKwkgY2FzZSAke3ByZXZ9IGluCi0rCSAtTCB8IC1SKQotIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKLSAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0gCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgotQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKLSAJIGZpCi0gICAgICAgIGZpCi0rICAgICAgIHByZXY9Ci0gICAgICAgIDs7Ci0gCi0rICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwotICAgICAqLiRvYmpleHQpCi0gICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAotICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLUBAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gbTRfaWYoWyQxXSwgW0NYWF0sCi1AQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0iJENDIgotICAgbHRfc2F2ZV9HQ0M9JEdDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgQ0M9JHtGNzctImY3NyJ9Ci0rICBDRkxBR1M9JEZGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gCi0gICBHQ0M9JGx0X3NhdmVfR0NDCi0gICBDQz0iJGx0X3NhdmVfQ0MiCi0rICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwotIAotIEFDX0xBTkdfUE9QCi1AQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSIkQ0MiCi0gICBsdF9zYXZlX0dDQz0kR0NDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBDQz0ke0ZDLSJmOTUifQotKyAgQ0ZMQUdTPSRGQ0ZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251Ci0gCi1AQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgR0NDPSRsdF9zYXZlX0dDQwotLSAgQ0M9IiRsdF9zYXZlX0NDIgotKyAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCi0gCi0gQUNfTEFOR19QT1AKLUBAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotLWx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NDPSRDQwotK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSBsdF9zYXZlX0dDQz0kR0NDCi0gR0NDPXllcwotIENDPSR7R0NKLSJnY2oifQotK0NGTEFHUz0kR0NKRkxBR1MKLSBjb21waWxlcj0kQ0MKLSBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCi1AQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKLSBBQ19MQU5HX1JFU1RPUkUKLSAKLSBHQ0M9JGx0X3NhdmVfR0NDCi0tQ0M9IiRsdF9zYXZlX0NDIgotK0NDPSRsdF9zYXZlX0NDCi0rQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCi0gCi0gCi1AQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotIGx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gbHRfc2F2ZV9HQ0M9JEdDQwotIEdDQz0KLSBDQz0ke1JDLSJ3aW5kcmVzIn0KLStDRkxBR1M9Ci0gY29tcGlsZXI9JENDCi0gX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQotIAotIEdDQz0kbHRfc2F2ZV9HQ0MKLSBBQ19MQU5HX1JFU1RPUkUKLS1DQz0iJGx0X3NhdmVfQ0MiCi0rQ0M9JGx0X3NhdmVfQ0MKLStDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwotIAotIAotQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCi0gQUNfU1VCU1QoW09CSkRVTVBdKQotIF0pCi0gCi0rIyBfTFRfREVDTF9ETExUT09MCi0rIyAtLS0tLS0tLS0tLS0tLS0tCi0rIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCi0rbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAotK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLStfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCi0rQUNfU1VCU1QoW0RMTFRPT0xdKQotK10pCi0gCi0gIyBfTFRfREVDTF9TRUQKLSAjIC0tLS0tLS0tLS0tLQotQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAotIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKLSAKLSAKLS0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KLS1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLS1bY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLSsjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAotKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KLSttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCi0rW2RubCB7Ci0rc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCi0rJDEgKClcCi0re1wKLSttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStdKQotIAotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotIAotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0rIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCi0rIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KLSttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCi0rW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSsgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0rICAgIGVzYWNdKQotKwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0rCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSsgICAgZXNhYwotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLSAKLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKLSsgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKLSAKLS1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQotLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi0tZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCi0gCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99Ci0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQotIAotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotKyAgICBlc2FjXSkKLSAKLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKLSAKLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQotIAotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCi0rZmkKLSAKLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKLS19Ci0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQotIAotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAotKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAotKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCi0gCi0tX0xUX0VPRgotLWVzYWMKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0gCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKLStmaQotK10pCi0gCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiRbMV0rPVwkWzJdIgotLX0KLS1fTFRfRU9GCi0rIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKLSsjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKLSsjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KLSttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAotK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLStBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCi0rQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCi0rW2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLS19Ci0tCi0tX0xUX0VPRgotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgZXNhYwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotK10pCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKLStfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKLSsgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCi0rCi0rQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKLStBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKLStbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0gXSkKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQotK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAotKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAotK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtMSwxMCArMSw5IEBACi0tIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KLSAKLS0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKLSsjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKLSAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCi0tIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCi0gIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSAKLUBAIC0zOCw3ICszNyw2IEBACi0gIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKLSAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKLSAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50Ci1AQCAtNzEsMTcgKzY5LDE5IEBACi0gIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKLS0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQotKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40Ci0gIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgotICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KLSAjCi0gIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCi0rIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgotKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCi0gCi0gUFJPR1JBTT1saWJ0b29sCi0gUEFDS0FHRT1saWJ0b29sCi0tVkVSU0lPTj0yLjIuN2EKLS1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKLS1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAotK1ZFUlNJT049Mi40Ci0rVElNRVNUQU1QPSIiCi0rcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKLSAKLSAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCi0gaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi1AQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJwotIH0KLSAKLSAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0tIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLS0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCi0gbHRfdXNlcl9sb2NhbGU9Ci0gbHRfc2FmZV9sb2NhbGU9Ci0gZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCi1AQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KLSAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCi0gCWZpIgotIGRvbmUKLStMQ19BTEw9QwotK0xBTkdVQUdFPUMKLStleHBvcnQgTEFOR1VBR0UgTENfQUxMCi0gCi0gJGx0X3Vuc2V0IENEUEFUSAotIAotIAotLQotLQotLQotLQotLQotICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0gIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLUBAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgotIAotIAotIDogJHtDUD0iY3AgLWYifQotLTogJHtFQ0hPPSRhc19lY2hvfQotK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQotIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KLSA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9Ci0gOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9Ci1AQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKLSA6ICR7TUtESVI9Im1rZGlyIn0KLSA6ICR7TVY9Im12IC1mIn0KLSA6ICR7Uk09InJtIC1mIn0KLS06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQotKzogJHtTRUQ9Ii9iaW4vc2VkIn0KLSA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KLSA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KLSAKLUBAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCi0gZGlybmFtZT0icywvW14vXSokLCwiCi0gYmFzZW5hbWU9InMsXi4qLywsIgotIAotKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSsjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLStmdW5jX2Rpcm5hbWUgKCkKLSt7Ci0rICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLSsgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotKyAgICBlbHNlCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotKyAgICBmaQotK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLStmdW5jX2Jhc2VuYW1lICgpCi0rewotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLSt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0gIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotICMgY2FsbDoKLUBAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCi0gIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0gZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotIHsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0tfQotKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0rICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSsgICAgZmkKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0rfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSsjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0rIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0rIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLStmdW5jX3N0cmlwbmFtZSAoKQotK3sKLSsgICAgY2FzZSAkezJ9IGluCi0rICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICAgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0gCi0tIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCi0gCi0gIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgotIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJwotQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKLSAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLSBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCi0gCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKLSsjIHN0cmluZyBsaXRlcmFsbHkuCi0rc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCi0rCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKLSsjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucwotKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgotK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSsKLSAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQotICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKLSAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KLUBAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgotICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgotIGZ1bmNfZWNobyAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCi0gfQotIAotICMgZnVuY192ZXJib3NlIGFyZy4uLgotQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi0gZnVuY19lcnJvciAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCi0gfQotIAotICMgZnVuY193YXJuaW5nIGFyZy4uLgotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotIGZ1bmNfd2FybmluZyAoKQotIHsKLS0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgotKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKLSAKLSAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKLSAgICAgOgotQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQotICAgICBmaQotIH0KLSAKLS0KLS0KLSsjIGZ1bmNfdHJfc2gKLSsjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgotKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycwotKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCi0rIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KLStmdW5jX3RyX3NoICgpCi0rewotKyAgY2FzZSAkMSBpbgotKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLSsgICAgOzsKLSsgICogKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSAKLSAKLSAjIGZ1bmNfdmVyc2lvbgotICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotIGZ1bmNfdmVyc2lvbiAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCi0gCTptb3JlCi0gCS9cLi8hewotIAkgIE4KLS0JICBzL1xuIyAvLwotKwkgIHMvXG4jIC8gLwotIAkgIGIgbW9yZQotIAl9Ci0gCTpnbwotQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKLSAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLSBmdW5jX3VzYWdlICgpCi0gewotLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8gewotKyAgICAkb3B0X2RlYnVnCi0rCi0rICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7Ci0gICAgICAgICBzL14jIC8vCi0gCXMvXiMgKiQvLwotIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCi1AQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCi0gIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgotIGZ1bmNfaGVscCAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8gewotKwk6cHJpbnQKLSAgICAgICAgIHMvXiMgLy8KLSAJcy9eIyAqJC8vCi0gCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKLUBAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQotIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLSAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0gCXAKLS0gICAgIH0nIDwgIiRwcm9ncGF0aCIKLSsJZAotKyAgICAgfQotKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAotKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50Ci0rICAgICAnIDwgIiRwcm9ncGF0aCIKLSAgICAgcmV0PSQ/Ci0gICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgotICAgICAgIGV4aXQgJHJldAotQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQotICMgZXhpdF9jbWQuCi0gZnVuY19taXNzaW5nX2FyZyAoKQotIHsKLS0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCi0rICAgICRvcHRfZGVidWcKLSsKLSsgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgotICAgICBleGl0X2NtZD1leGl0Ci0gfQotIAotLWV4aXRfY21kPToKLSAKLSsjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0Ci0rIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCi0rewotKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJwotKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKLSsKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKLSt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKLSsjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKLSt7Ci0rICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJwotKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJwotKwotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLSt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLStleGl0X2NtZD06Ci0gCi0gCi0gCi1AQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgotIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgotIAotICMgR2xvYmFsIHZhcmlhYmxlcy4KLS0jICRtb2RlIGlzIHVuc2V0Ci0gbm9ub3B0PQotLWV4ZWN1dGVfZGxmaWxlcz0KLSBwcmVzZXJ2ZV9hcmdzPQotIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKLSBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCi0gZXh0cmFjdGVkX2FyY2hpdmVzPQotIGV4dHJhY3RlZF9zZXJpYWw9MAotIAotLW9wdF9kcnlfcnVuPWZhbHNlCi0tb3B0X2ZpbmlzaD06Ci0tb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCi0tb3B0X3NpbGVudD1mYWxzZQotLW9wdF9kZWJ1Zz06Ci0tCi0gIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0gIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCi0gIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgotIGV4ZWNfY21kPQotIAotKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0rIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0rZnVuY19hcHBlbmQgKCkKLSt7Ci0rICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCi0rfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQotKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCi0rIyBieSBhIHNwYWNlLgotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQotK3sKLSsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKLSsgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotK2Z1bmNfYXJpdGggKCkKLSt7Ci0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKLSt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfbGVuIHN0cmluZwotKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLStmdW5jX2xlbiAoKQotK3sKLSsgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0rfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19sbzJvIG9iamVjdAotK2Z1bmNfbG8ybyAoKQotK3sKLSsgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLStmdW5jX3hmb3JtICgpCi0rewotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLSt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5Ci0gIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KLUBAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQotICAgZXNhYwotIH0KLSAKLS0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCi0rIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSsjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCi0rIyByZWxlYXNlIG9mIGxpYnRvb2wuCi0rZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCi0gewotKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0rICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0rJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgICBlbHNlCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCi0rJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KLSskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICBmaQotIAotLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0tICBjYXNlICQxIGluCi0tICBjbGVhbnxjbGVhfGNsZXxjbCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBsaW5rfGxpbnxsaXxsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXNhYwotKyAgICBleGl0ICRFWElUX01JU01BVENICi0rICBmaQotK30KLSsKLSsKLSsjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLStjYXNlICQxIGluCi0rY2xlYW58Y2xlYXxjbGV8Y2wpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rbGlua3xsaW58bGl8bCkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLSt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2VzYWMKLSAKLS0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwotKwotKwotKyMgT3B0aW9uIGRlZmF1bHRzOgotK29wdF9kZWJ1Zz06Ci0rb3B0X2RyeV9ydW49ZmFsc2UKLStvcHRfY29uZmlnPWZhbHNlCi0rb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCi0rb3B0X2ZlYXR1cmVzPWZhbHNlCi0rb3B0X2ZpbmlzaD1mYWxzZQotK29wdF9oZWxwPWZhbHNlCi0rb3B0X2hlbHBfYWxsPWZhbHNlCi0rb3B0X3NpbGVudD06Ci0rb3B0X3ZlcmJvc2U9OgotK29wdF9zaWxlbnQ9ZmFsc2UKLStvcHRfdmVyYm9zZT1mYWxzZQotKwotKwotKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQotKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgotK3sKLSsgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKLSsgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgIG9wdD0iJDEiCi0gICAgIHNoaWZ0Ci0tCi0gICAgIGNhc2UgJG9wdCBpbgotLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7Ci0tCi0tICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCi0gCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgotLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotIAkJCSRvcHRfZGVidWcKLSAJCQk7OwotLQotLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCi0tCQkJc2hpZnQKLSsgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCi0rCQkJb3B0X2RyeV9ydW49OgotIAkJCTs7Ci0tCi0tICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7Ci0tICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLS0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7Ci0tICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKLS0KLS0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQljYXNlICQxIGluCi0tCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotLQkJCSAgY2xlYW4pCTs7Ci0tCQkJICBjb21waWxlKQk7OwotLQkJCSAgZXhlY3V0ZSkJOzsKLS0JCQkgIGZpbmlzaCkJOzsKLS0JCQkgIGluc3RhbGwpCTs7Ci0tCQkJICBsaW5rKQkJOzsKLS0JCQkgIHJlbGluaykJOzsKLS0JCQkgIHVuaW5zdGFsbCkJOzsKLS0KLS0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLS0JCQkgICAgIGV4aXRfY21kPWV4aXQKLS0JCQkgICAgIGJyZWFrCi0tCQkJICAgICA7OwotLQkJICAgICAgICBlc2FjCi0tCi0tCQkJbW9kZT0iJDEiCi0rICAgICAgLS1jb25maWcpCi0rCQkJb3B0X2NvbmZpZz06Ci0rZnVuY19jb25maWcKLSsJCQk7OwotKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KLSt9JG9wdGFyZyIKLSAJCQlzaGlmdAotIAkJCTs7Ci0tCi0gICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLS0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OwotLQotLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0tCQkJb3B0X3NpbGVudD06Ci0tCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLSsJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLSsgICAgICAtLWZlYXR1cmVzKQotKwkJCW9wdF9mZWF0dXJlcz06Ci0rZnVuY19mZWF0dXJlcwotIAkJCTs7Ci0tCi0tICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLWZpbmlzaCkKLSsJCQlvcHRfZmluaXNoPToKLStzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rCQkJOzsKLSsgICAgICAtLWhlbHApCi0rCQkJb3B0X2hlbHA9OgotKwkJCTs7Ci0rICAgICAgLS1oZWxwLWFsbCkKLSsJCQlvcHRfaGVscF9hbGw9OgotK29wdF9oZWxwPSc6IGhlbHAtYWxsJwotKwkJCTs7Ci0rICAgICAgLS1tb2RlKQotKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X21vZGU9IiRvcHRhcmciCi0rY2FzZSAkb3B0YXJnIGluCi0rICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKLSsKLSsgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLSsgICAgIGV4aXRfY21kPWV4aXQKLSsgICAgIGJyZWFrCi0rICAgICA7OwotK2VzYWMKLSsJCQlzaGlmdAotKwkJCTs7Ci0rICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKLSAJCQlvcHRfc2lsZW50PWZhbHNlCi0tCQkJb3B0X3ZlcmJvc2U9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tbm8tdmVyYm9zZSkKLSAJCQlvcHRfdmVyYm9zZT1mYWxzZQotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgotLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCi0rCQkJb3B0X3NpbGVudD06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0rICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQotKwkJCTs7Ci0rICAgICAgLS12ZXJib3NlfC12KQotKwkJCW9wdF92ZXJib3NlPToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLStvcHRfc2lsZW50PWZhbHNlCi0rCQkJOzsKLSsgICAgICAtLXRhZykKLSsJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF90YWc9IiRvcHRhcmciCi0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKLStmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCi0gCQkJc2hpZnQKLSAJCQk7OwotIAotKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKLSsgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKLSsgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OwotKwotICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0tICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCi0tCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCi0tCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0rICAgICAgLS0qPSopCi0rCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKLSsJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQotIAkJCXNoaWZ0Ci0gCQkJOzsKLSAKLS0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OwotLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0tICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7Ci0tICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7Ci0tCi0tICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLS0KLS0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgotLQkJCWJyZWFrCi0rICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKLSsgICAgICAtXD8qfC1oKnwtbip8LXYqKQotKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgotKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0rCQkJc2hpZnQKLSAJCQk7OwotKwotKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7Ci0rICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKLSsgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKLSAgICAgZXNhYwotICAgZG9uZQotIAotKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgotKwotKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKLSsgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotKyAgICBub25vcHQ9IiRvcHQiCi0rICAgIHNoaWZ0Ci0rICBmaQotKwotKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCi0rICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCi0gCi0gICBjYXNlICRob3N0IGluCi0gICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKLUBAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCi0gICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICAgOzsKLSAgICAgKikKLS0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSsgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKLSAgICAgICA7OwotICAgZXNhYwotIAotLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCi0tICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KLS0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi0tfQotKyAgJG9wdF9oZWxwIHx8IHsKLSsgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSAKLS0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKLS0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KLS1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKLS17Ci0tICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLS0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLS0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotLSAgICAgIGVsc2UKLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0tJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLS0gICAgICBmaQotLSAgICBlbHNlCi0tICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKLS0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgotLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0rICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgICAgZmkKLSAKLS0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotLSAgZmkKLS19Ci0tCi0rICAgICMgRGFyd2luIHN1Y2tzCi0rICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0gCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0jIyAgICBNYWluLiAgICAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tCi0tJG9wdF9oZWxwIHx8IHsKLS0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLS0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLQotLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0tICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLS0gIGZpCi0rICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0rICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSsgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0rICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0rICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0rICAgIGZpCi0gCi0tICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKLSsgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgotKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSsgIH0KLSAKLSAKLS0gICMgRGFyd2luIHN1Y2tzCi0tICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0rICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCi0rICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotK30KLSAKLSAKLS0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0tICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0tICAgICRFQ0hPICIkaGVscCIgMT4mMgotLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLS0gIGZpCi0gCi0tICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0tICBnZW5lcmljX2hlbHA9IiRoZWxwIgotLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLS19Ci0gCi0rIyMgLS0tLS0tLS0tLS0gIyMKLSsjIyAgICBNYWluLiAgICAjIwotKyMjIC0tLS0tLS0tLS0tICMjCi0gCi0gIyBmdW5jX2xhbGliX3AgZmlsZQotICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KLUBAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCi0gIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KLSBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCi0gewotLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgotLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0tCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0tICAgIGZpCi0rICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLSsgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0rICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSB9Ci0gCi0gIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKLUBAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQotICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCi0gICAgIGZvciBjbWQgaW4gJDE7IGRvCi0gICAgICAgSUZTPSRzYXZlX2lmcwotLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKLSsgICAgICBldmFsIGNtZD1cIiRjbWRcIgotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgotICAgICBkb25lCi0gICAgIElGUz0kc2F2ZV9pZnMKLUBAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKLSB9Ci0gCi0gCi0rIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICi0rIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KLSsjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCi0rewotKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCi0rICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KLSsgID0qKQotKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0rICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rCi0rIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICi0rIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKLSsjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCi0rZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKLSt7Ci0rICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KLSsgID8qOiIkbHRfc3lzcm9vdCIqKQotKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKLSsgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsgICAgOzsKLSsgICopCi0rICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCi0rICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSsKLSAjIGZ1bmNfaW5mZXJfdGFnIGFyZwotICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAotICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCi1AQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KLSAgICAgICBDQ19xdW90ZWQ9Ci0gICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0tICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgotICAgICAgIGRvbmUKLSAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCi1AQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAJICAgIENDX3F1b3RlZD0KLSAJICAgIGZvciBhcmcgaW4gJENDOyBkbwotIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0tCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCi0gCSAgICBkb25lCi0gCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKLUBAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgotICAgICB9Ci0gfQotIAotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAotKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQotKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KLSsjIGluICRidWlsZCdzICRQQVRILgotKyMKLSsjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAotKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQotK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQotKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQotKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLSsgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKLSsgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0rICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAotKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9Ci0rICAgIGZpCi0rICBmaQotK30KLSsjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCi0rIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5Ci0rIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCi0rIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KLSsjCi0rIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCi0rIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKLSsjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KLStmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcwotKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBvbGRJRlM9JElGUwotKyAgICBJRlM9OgotKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbwotKyAgICAgIElGUz0kb2xkSUZTCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKLSsgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgotKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBJRlM9JG9sZElGUwotKyAgZmkKLSt9Ci0rIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKLSsKLSsKLSsjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCi0rIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCi0rIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKLSsjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgotKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKLSsjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKLSsjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCi0rIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KLSsjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KLSsjCi0rIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCi0rIyBiZSBjb252ZXJ0ZWQuCi0rIwotKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKLSsjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgotK2Z1bmNfY3lncGF0aCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKLSsgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCi0rICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5Ci0rICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZmkKLSsgIGVsc2UKLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgotKyAgZmkKLSt9Ci0rI2VuZDogZnVuY19jeWdwYXRoCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgotKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0rfQotKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKLSsjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KLStmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKLSsgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLSsgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0rICAgICMgRmFsbGJhY2s6Ci0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjawotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKLSsjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCi0rZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgotKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSsgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCi0rICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KLSsgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgotKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgotKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKLSsgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKLSsgICAgZmkKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKLSsjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCi0rIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCi0rZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgY2FzZSAkNCBpbgotKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgOzsKLSsgIGVzYWMKLSsgIGNhc2UgJDQgaW4KLSsgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJwotKyMKLSsjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCi0rIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLSsKLSsKLSsjIGZ1bmNfdG9faG9zdF9maWxlIEFSRwotKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfdG9faG9zdF9maWxlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQotKwotKwotKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKLSsjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KLSsjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCi0rIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KLStmdW5jX3RvX3Rvb2xfZmlsZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGNhc2UgLCQyLCBpbgotKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAotKyAgICAgIDs7Ci0rICBlc2FjCi0rfQotKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRwotKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKLSt7Ci0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYwotKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKLSsgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAotKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKLSsjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCi0rIwotKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KLSsjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLSsjCi0rIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgotKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0Ci0rIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCi0rIwotKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKLSsjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKLSsjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKLSsjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCi0rIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKLSsjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rIyB3aWxsIGJyZWFrLgotKwotKwotKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQotKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KLSt0b19ob3N0X3BhdGhfY21kPQotK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCi0rICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKLSsgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgotKyAgZmkKLSt9Ci0rCi0rCi0rIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKLSsjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY190b19ob3N0X3BhdGggKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKLSsjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCi0rewotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCi0rIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUwotKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOwotKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKLSsjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKLSsjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLSsgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCi0rCi0rCi0gIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KLSBmdW5jX21vZGVfY29tcGlsZSAoKQotIHsKLUBAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgOzsKLSAKLSAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCi0tICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKLSsgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLSAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKLS0JICBsYXRlcj0iJGxhdGVyICRhcmciCi0rCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLUBAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCi0gCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KLSAJICAgIElGUz0iJHNhdmVfaWZzIgotLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgotIAkgIGRvbmUKLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgotIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAotIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgotLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKLSsJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi1AQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCi0gCi0gICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLS0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgotICAgICBkb25lICMgZm9yIGFyZwotIAotICAgICBjYXNlICRhcmdfbW9kZSBpbgotQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgIGZpCi0tICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCi0rICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgotICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgotICAgICBmaQotIAotICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0tICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKLSsgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKLSAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCi0tICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCi0tICAgIGZpCi0rICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgotICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKLSAKLUBAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCi0gCi0gICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCi0gCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKLSsJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgotICAgICAgIGZpCi0gCi0gICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAotQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgotIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCi0gICAgICAgZmkKLSAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgotKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKLSAgICAgICBmaQotIAotICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKLSsgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgotICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKLSAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCi0gCi1AQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCi0gfQotIAotICRvcHRfaGVscCB8fCB7Ci0tICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQotKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Ci0gfQotIAotIGZ1bmNfbW9kZV9oZWxwICgpCi0gewotICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLS0gICAgY2FzZSAkbW9kZSBpbgotKyAgICBjYXNlICRvcHRfbW9kZSBpbgotICAgICAgICIiKQotICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCi0gICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCi1AQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6Ci0gCi0gICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKLSAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcwotLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKLS0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQotKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKLSsgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQotICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLSAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgotQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgKikKLS0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gICAgICAgICA7OwotICAgICBlc2FjCi0gCi1AQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KLSAgIGVsc2UKLSAgICAgewotICAgICAgIGZ1bmNfaGVscCBub2V4aXQKLS0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0rICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi0gICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCi0gICAgIHsKLSAgICAgICBmdW5jX2hlbHAgbm9leGl0Ci0tICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0gCWVjaG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi1AQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCi0gCi0gICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0tICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCi0rICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwotICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCi0gCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKLSAKLSAgICAgICBkaXI9Ci0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICoubGEpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKLSsJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCi0gCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0gCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0gCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLUBAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIAotIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KLS0JICBkaXI9IiRkaXIvJG9iamRpciIKLSsJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgotIAllbHNlCi0gCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgotQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCi0gCi0gICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KLS0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KLS0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgotKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCi0rCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKLSAgICAgICBlbHNlCi0tCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgotKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKLSAgICAgICBmaQotICAgICBkb25lCi0gCi1AQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAJOzsKLSAgICAgICBlc2FjCi0gICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKLS0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCi1AQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICBmaQotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KLSBmdW5jX21vZGVfZmluaXNoICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGxpYmRpcnM9IiRub25vcHQiCi0rICAgIGxpYnM9Ci0rICAgIGxpYmRpcnM9Ci0gICAgIGFkbWluY21kcz0KLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLS0gICAgICBmb3IgZGlyCi0tICAgICAgZG8KLS0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLS0gICAgICBkb25lCi0rICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQotKyAgICBkbwotKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCi0rCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgotIAotKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KLSsJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KLSsJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKLSsJZWxzZQotKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0rCWZpCi0rCi0rICAgICAgZWxzZQotKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCi0rICAgICAgZmkKLSsgICAgZG9uZQotKwotKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KLSsgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCi0rICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c3Jvb3RfY21kPQotKyAgICAgIGZpCi0rCi0rICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCi0rICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCi0rICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKLSsgICAgICAgIGRvbmUKLSsgICAgICBlbHNlCi0rICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAotKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSsJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCi0rCSAgICA+ICR0bXBkaXIvdG1wLWxhCi0rCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgotKwlkb25lCi0rICAgICAgICAke1JNfXIgIiR0bXBkaXIiCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCi0gCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KLUBAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCi0gCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KLSAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCi0gCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLS0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKLSAgICAgICAgJGNtZHMiCi0gCWZpCi0gICAgICAgZG9uZQotQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQotICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCi0gCi0tICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0tICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLS0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLS0gICAgICAkRUNITyAiICAgJGxpYmRpciIKLS0gICAgZG9uZQotLSAgICBlY2hvCi0tICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLS0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLS0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotLSAgICAgIGxpYmRpcj1MSUJESVIKLS0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSsgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotKwkkRUNITyAiICAgJGxpYmRpciIKLSsgICAgICBkb25lCi0rICAgICAgZWNobwotKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0rICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0rCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCWxpYmRpcj1MSUJESVIKLSsJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAotLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0tICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotLSAgICBmaQotLSAgICBlY2hvCi0rCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSsgICAgICBmaQotKyAgICAgIGVjaG8KLSAKLS0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLS0JZWNobyAicGFnZXMuIgotLQk7OwotLSAgICAgICopCi0tICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSsgICAgICBjYXNlICRob3N0IGluCi0rCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0rCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLSsJICBlY2hvICJwYWdlcy4iCi0rCSAgOzsKLSsJKikKLSsJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLSsJICA7OwotKyAgICAgIGVzYWMKLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICBmaQotICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCi1AQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgotICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZwotICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0gICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7Ci1AQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgZG8KLSAgICAgICBhcmcyPQotICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotLQlmaWxlcz0iJGZpbGVzICRkZXN0IgotKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgotIAlkZXN0PSRhcmcKLSAJY29udGludWUKLSAgICAgICBmaQotQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAKLSAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgotICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCi0gCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgotICAgICAgIGZpCi0tICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGRvbmUKLSAKLSAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAotQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCi0gICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQotIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgotLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgZmkKLSAgICAgZmkKLSAKLUBAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICouJGxpYmV4dCkKLSAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLS0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCi0rCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKLSAJOzsKLSAKLSAgICAgICAqLmxhKQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCi0rCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwotIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAotIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KLSAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAllbHNlCi0gCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgotIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAKLSAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCi0gCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tCWRpcj0iJGRpciRvYmpkaXIiCi0rCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKLSAKLSAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgotKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKLSsgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsKLSsgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgotKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCi0gCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLS0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKLSsJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAotIAotIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKLSAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0Ci1AQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKLSAKLSAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSAJOzsKLSAKLSAgICAgICAqLmxvKQotQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAotICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KLSAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgotICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJwotQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGZpCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKLUBAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKLSAjZW5kaWYKLSAKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAotICIKLSAKLUBAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKLSAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KLS0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKLSsJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0gCSAgZG9uZQotIAotIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi1AQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgewotIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0gCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKLS0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgICBjYXNlICRob3N0IGluCi0gCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLSsgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotIAkgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0tCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKLSsJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgICAgY2FzZSAkaG9zdCBpbgotIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLS0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAJICAgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLUBAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgotIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCi0gCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCi0tCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0tCSAgfQotKyAgICAgICAgICBjYXNlICRob3N0IGluCi0rCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLSsJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCi0rCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCi0rCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKLSsJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgotKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCi0rCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcwotKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAotKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKLSsJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgIGVsc2UKLSsJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgotKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCi0rCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotKwkgICAgICAgICAgZmkKLSsJICAgICAgICBmaQotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZWxzZQotKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCi0rCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBmaQotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKLSsJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKLSsJICAgICAgICB9Ci0rCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgICAgIH0KLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqKQotKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgICAgfQotKwkgICAgOzsKLSsgICAgICAgICAgZXNhYwotIAlkb25lCi0gCi0gCSRvcHRfZHJ5X3J1biB8fCB7Ci1AQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICphZGRyZXNzOwotIH0gbHRfZGxzeW1saXN0OwotLSIKLS0JICBjYXNlICRob3N0IGluCi0tCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKLS0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICpvc2Y1KikKLS0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICopCi0tCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OwotLQkgIGVzYWMKLS0KLS0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAotIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLS0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KLSB7XAotICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCi1AQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCi0gCSAgY2FzZSAkYXJnIGluCi0gCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7Ci0tCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAKLUBAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCi0gICAgIDs7Ci0gICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCi0tICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLS0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0tICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKLSsgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCi0rICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLSsgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKLSAJJFNFRCAtbiAtZSAnCi0gCSAgICAxLDEwMHsKLSAJCS8gSSAvewotQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgotIH0KLSAKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKLSsjCi0rIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQotKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi0rIyBpbXBvcnQgbGlicmFyeSBBUkcuCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcwotKyMKLSsjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKLSsjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCi0rIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KLSsjCi0rIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKLSsjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCi0rIwotKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCi0rIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCi0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAotKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8Ci0rICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKLSsgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCi0rICAgICAgcy8uKi89PT09TUFSSz09PT0vCi0rICAgICAgcAotKyAgICAgIGQKLSsgICAgfQotKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0Ci0rICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCi0rICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAotKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKLSsgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKLSsgICAgL149PT09TUFSSz09PT0vcAotKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycwotKyAgICAvXi5cezQzXH0vIWQKLSsgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKLSsgICAgcy9eLlx7NDNcfS8vJyB8Ci0rICAgICRTRUQgLW4gJwotKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKLSsgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCi0rICAgICAgSAotKyAgICAgICQgYiBwYXJhCi0rICAgICAgYgotKyAgICAgIDpwYXJhCi0rICAgICAgeAotKyAgICAgIHMvXG4vL2cKLSsgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCi0rICAgICAgcy9ePT09PU1BUks9PT09Ly8KLSsgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCi0rICAgICAgcy9bXC4gXHRdKiQvLwotKyAgICAgICMgUHJpbnQKLSsgICAgICAvLi9wJyB8Ci0rICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAotKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQotKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCi0rICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKLSsgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCi0rICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCi0rICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5Ci0rICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKLSsgICAgIyBhICcuJy4KLSsgICAgIwotKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgotKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJwotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAotKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCi0rICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRwotKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKLSsjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAotKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgotKyMKLSsjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCi0rIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKLSsgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5Ci0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCi0rICBlbHNlCi0rICAgICMgdW5rbm93bgotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgotKyAgZmkKLSt9Ci0gCi0gCi0gIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCi1AQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCi0gCSAgICBkYXJ3aW5fZmlsZT0KLSAJICAgIGRhcndpbl9maWxlcz0KLSAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKLSsJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcwotIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKLSAJICAgICRSTSAtcmYgdW5mYXQtJCQKLUBAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLSAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgotIAk7OwotICAgICAgIGVzYWMKLS0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAotKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotICAgICBkb25lCi0gCi0gICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgotQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCi0gX0xURUNIT19FT0YnCi0gfQotICAgICBFQ0hPPVwiJHFFQ0hPXCIKLS0gIGZpXAotKyAgZmkKLSsKLSsjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bwotKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgotKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KLSsjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgotKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKLSsjIHRoaXMgcGF0dGVybikuCi0rIwotKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAotKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQotKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCi0rbHRfb3B0aW9uX2RlYnVnPQotK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQotK3sKLSsgIGx0X3NjcmlwdF9hcmcwPVwkMAotKyAgc2hpZnQKLSsgIGZvciBsdF9vcHQKLSsgIGRvCi0rICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCi0rICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7Ci0rICAgIC0tbHQtZHVtcC1zY3JpcHQpCi0rICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKLSsgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgotKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCi0rICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCi0rICAgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtLWx0LSopCi0rICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgotKyAgICAgICAgZXhpdCAxCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgZG9uZQotKwotKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgotKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCi0rICBmaQotK30KLSsKLSsjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKLSsjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKLStmdW5jX2x0X2R1bXBfYXJncyAoKQotK3sKLSsgIGx0X2R1bXBfYXJnc19OPTE7Ci0rICBmb3IgbHRfYXJnCi0rICBkbwotKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCi0rICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCi0rICBkb25lCi0rfQotKwotKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KLStmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCi0rewotKyIKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKwotKyAgKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKyAgZXNhYwotKyAgJEVDSE8gIlwKLSsgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0rICAgICAgZXhpdCAxCi0rfQotKwotKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgotKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCi0rIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KLStmdW5jX2V4ZWNfcHJvZ3JhbSAoKQotK3sKLSsgIGZvciBsdF93cl9hcmcKLSsgIGRvCi0rICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KLSsgICAgLS1sdC0qKSA7OwotKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OwotKyAgICBlc2FjCi0rICAgIHNoaWZ0Ci0rICBkb25lCi0rICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KLSt9Ci0rCi0rICAjIFBhcnNlIG9wdGlvbnMKLSsgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KLSAKLSAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAotQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJwotIAotICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQotICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCi0tICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgotKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgotICAgICAgIGVsc2UKLSAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgotIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLUBAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCi0gCi0gICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgotIAotKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotKwkjCi0rCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZwotKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAotKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCi0rCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotKwkgICRFQ0hPICJcCi0rICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0rICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0rIgotKwlmaQotKwotIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLSAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotIAkgICRFQ0hPICJcCi1AQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKLSAiCi0gCWZpCi0gCi0tCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0tCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotLQkgICRFQ0hPICJcCi0tICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0tICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0tIgotLQlmaQotLQotIAkkRUNITyAiXAotICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KLS0iCi0tCWNhc2UgJGhvc3QgaW4KLS0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0tCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0tCSAgJEVDSE8gIlwKLS0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLS0iCi0tCSAgOzsKLS0KLS0JKikKLS0JICAkRUNITyAiXAotLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotLSIKLS0JICA7OwotLQllc2FjCi0tCSRFQ0hPICJcCi0tICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotLSAgICAgIGV4aXQgMQotKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KLSAgICAgZmkKLSAgIGVsc2UKLSAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgotQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCi0gfQotIAotIAotLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0tIwotLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLS0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLS0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQotLSMgYnVpbGQgZW52aXJvbm1lbnRzOgotLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0tIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLS0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0tIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KLS0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5Ci0tIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLS0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCi0tIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAotLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0tIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCi0tIwotLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotLWZ1bmNfdG9faG9zdF9wYXRoICgpCi0tewotLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cwotLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKLS0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqY3lnd2luKiApCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAotLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKiApCi0tICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybwotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKLS0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLS0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8Ci0tICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9Ci0tICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotLSAgICAgICAgICAjIEZhbGxiYWNrOgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tfQotLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAotLQotLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotLSMKLS0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCi0tIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKLS0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0tIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLS0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotLSMKLS0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCi0tIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLS0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKLS0jIG9uIG91dHB1dC4KLS0jCi0tIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLS0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLS1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKLS17Ci0tICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLS0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLS0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0tCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0tICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLS0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCi0tCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAotLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKmN5Z3dpbiogKQotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAotLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICogKQotLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKLS0gICAgICAgICAgICBJRlM9OgotLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbwotLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0tICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgotLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGRvbmUKLS0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLS0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCi0tICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KLS0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndwotLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCi0tICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0tICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKLS0gICAgICAgIGZpCi0tICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjawotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICBmaQotLX0KLS0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0tCi0gIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCi0gIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0Ci0gIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKLUBAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQotIAotICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0tCi0tICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKLS0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0tICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgotICovCi0gRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0gICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAotIH0gd2hpbGUgKDApCi0gCi0tI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgotLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncwotLXN0YXRpYyB2b2lkCi0tbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKLS17Ci0tICAgIHZhX2xpc3QgYXJnczsKLS0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0tICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotLSAgICB2YV9lbmQgKGFyZ3MpOwotLX0KLSsjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCi0rc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7Ci0gI2Vsc2UKLS0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKLStzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKLSAjZW5kaWYKLSAKLS1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOwotK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KLSAKLSB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKLSBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwotQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOwotIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwotIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKLSBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLS12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOwotK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Ci0gdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLSBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOwotIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci1AQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Ci0rdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKLSBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7Ci0gRU9GCi0gCi0gCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgotIAkgICAgICBjYXQgPDxFT0YKLS1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Ci0rY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7Ci0gRU9GCi0gCSAgICBlbHNlCi0gCSAgICAgIGNhdCA8PCJFT0YiCi1AQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKLSAJICAgIGZpCi0gCi0gCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKLSAJICAgICAgY2F0IDw8RU9GCi0gY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Ci0tY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOwotK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwotIEVPRgotIAkgICAgZWxzZQotIAkgICAgICBjYXQgPDwiRU9GIgotQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotIAotICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0tI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKLSAKLS1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7Ci0tCi0gc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLStzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOwotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1AQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgaW50IGk7Ci0gCi0gICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOwotKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwotIAotLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KLSsgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0Ci0rICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKLSsgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKLSsgICAqLwotKyAgbmV3YXJnYz0wOwotICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQotQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCi0gCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSsgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCi0rCXsKLSsgICAgICAgICAgbHRfZGVidWcgPSAxOwotKyAgICAgICAgICBjb250aW51ZTsKLSsJfQotKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQotKyAgICAgICAgewotKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0rICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLSsgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLSsgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSsgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0rICAgICAgICAgICAqLwotKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKLSsgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLSsgICAgICAgIH0KLSsgICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0rICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0gICAgIH0KLSsgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0rCi0rRU9GCi0rCSAgICBjYXQgPDxFT0YKLSsgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCi0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7Ci0rRU9GCi0rCSAgICBjYXQgPDwiRU9GIgotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7Ci0gCi0tICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7Ci0gICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOwotICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQotLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIHRtcF9wYXRoc3BlYykpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKLSsJCSAgdG1wX3BhdGhzcGVjKTsKLSAKLSAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCi0rCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotIAotLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKLSAKLSAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCi1AQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCi0gICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKLSAgIHRtcF9wYXRoc3BlYyA9IDA7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotLQkJCSAgdGFyZ2V0X25hbWUpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0rCQkgIHRhcmdldF9uYW1lKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCi0gCi0gICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KLSAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KLS0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAotKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCi0rICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKLSsgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCi0gICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKLSsgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotIAotLSAgbmV3YXJnYz0wOwotLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLS0gICAgewotLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0tICAgICAgICB7Ci0tICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLS0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0tICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0tICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0tICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLS0gICAgICAgICAgICovCi0tICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAotLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotLSAgICAgICAgfQotLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLS0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLS0gICAgfQotLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLS0KLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCi0rCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwotICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKLSsJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKLSAgICAgfQotIAotIEVPRgotQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgotICAgaWYgKHJ2YWwgPT0gLTEpCi0gICAgIHsKLSAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKLSsJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgICAgIHJldHVybiAxMjc7Ci0gICAgIH0KLSAgIHJldHVybiBydmFsOwotQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCi0gewotICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKLSAgIGlmICghcCkKLS0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7Ci0gCi0gICByZXR1cm4gcDsKLSB9Ci1AQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKLSB7Ci0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCi0tCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQotICAgaW50IHJ2YWwgPSAwOwotICAgc3RydWN0IHN0YXQgc3Q7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgaW50IHRtcF9sZW47Ci0gICBjaGFyICpjb25jYXRfbmFtZTsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0tCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKLSAKLSAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCi0gICAgIHJldHVybiBOVUxMOwotQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAJCXsKLSAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KLSAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOwotIAkJICBjb25jYXRfbmFtZSA9Ci0gCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci1AQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgICB9Ci0gICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCi0gICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0tICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKLSAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci0gICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOwotQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIGludCBoYXNfc3ltbGlua3MgPSAwOwotICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQotICAgICB7Ci0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0tCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKLSAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCi0gCXsKLSAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQotQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7Ci0tCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOwotKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAotKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAl9Ci0gICAgIH0KLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKLSAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKLSAgICAgewotLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7Ci0rICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKLSAgICAgfQotICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7Ci0gI2VuZGlmCi1AQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQotICAgcmV0dXJuIHN0cjsKLSB9Ci0gCi0rdm9pZAotK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaWYgKGx0X2RlYnVnKQotKyAgICB7Ci0rICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOwotKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotKyAgICAgIHZhX2VuZCAoYXJncyk7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIHZvaWQKLS1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCi0rbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAotKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCi0gCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQotIHsKLS0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKLSAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKLSAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwotIAotQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAotIH0KLSAKLSB2b2lkCi0tbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLStsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLSB7Ci0gICB2YV9saXN0IGFwOwotICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLS0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwotKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0gICB2YV9lbmQgKGFwKTsKLSB9Ci0gCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStub25lbXB0eSAoY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOwotK30KLSsKLSB2b2lkCi0gbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotICAgewotICNpZmRlZiBIQVZFX1NFVEVOVgotICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwotQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKLSB2b2lkCi0gbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gCi0gICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCi0gICAgIHsKLUBAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHZvaWQKLSBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAKLSAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKLSAgICAgewotQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgotIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgotKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCi0gICAgICppbXBvcnQqKSA6IDs7Ci0gICAgICopIGZhbHNlIDs7Ci0gICAgIGVzYWMKLUBAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqKQotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgotKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKLSAJICAgIGVsc2UKLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCi0gCSAgICBmaQotIAkgICAgcHJldj0KLSAJICAgIGNvbnRpbnVlCi1AQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICotKi1kYXJ3aW4qKQotIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCi0gCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKLS0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKLSsJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCi0gCQkgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci1AQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIG1vcmVhcmdzPQotIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAotIAkgICAgZG8KLS0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKLSsjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKLSAJICAgICAgYXJnPSRmaWwKLSAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCi0gCi1AQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLS0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgotKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgICAgcHJldj0KLSAJCSAgICAgIGNvbnRpbnVlCi0gCQkgICAgZWxzZQotQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0tCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgIHByZXY9Ci0gCQkgIGZpCi0gCi1AQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCi0gCSAgICBjYXNlICIkcnBhdGggIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKLSAJICAgIGVzYWMKLSAJICBlbHNlCi0gCSAgICBjYXNlICIkeHJwYXRoICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7Ci0gCSAgICBlc2FjCi0gCSAgZmkKLSAJICBwcmV2PQotQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXdlYWspCi0tCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKLSAJICBwcmV2PQotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGNjbGlua2VyKQotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAl4Y29tcGlsZXIpCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGxpbmtlcikKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgotQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtTCopCi0tCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0tCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCi0rCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCi0rCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCi0gCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgotIAkgIGVsc2UKLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgotIAkgIGZpCi0gCWZpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJY2FzZSAkZGlyIGluCi0gCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLUBAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkZGVwbGlicyAiIGluCi0tCSoiIC1MJGRpciAiKikgOzsKLSsJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKLSsJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCi0rCSAgOzsKLSAJKikKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0tCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCi0rCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcwotKwkgIGNhc2UgJGRpciBpbgotKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKLSsJICBlc2FjCi0rCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JGRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKLSAJICBlc2FjCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCi0gCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgotKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKLSAJICAgIGNvbnRpbnVlCi0gCSAgICA7OwotIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKLUBAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yawotIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCi0gCSAgICA7OwotLQkgICotKi1saW51eCopCi0tCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKLS0JICAgIDs7Ci0gCSAgZXNhYwotIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCi0gCSBjYXNlICRob3N0IGluCi1AQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgOzsKLSAJIGVzYWMKLSAJZmkKLS0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLSsJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi1AQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCi0gICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgotICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCi0tICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLS0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQotKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotIAlwcmV2PXhjb21waWxlcgotQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQotLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKLSsJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLSAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotKwk9KikKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCi0rCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgIDs7Ci0gCSopCi0gCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkeHJwYXRoICIgaW4KLSAJKiIgJGRpciAiKikgOzsKLS0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAk7OwotIAotLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0tICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLS0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0tICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLS0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCi0tICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLS0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcwotLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgotKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKLSsgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgotKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKLSsgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgotKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKLSsgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSsgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCi0rICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSsgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQwotKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCi0rICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCi0rICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0Ci0rICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KLSAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLS0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCi0rICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCi0rICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQotICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0tICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gICAgICAgICBjb250aW51ZQotICAgICAgICAgOzsKLSAKLUBAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJG9iamV4dCkKLSAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLS0Jb2Jqcz0iJG9ianMgJGFyZyIKLSsJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCi0gCTs7Ci0gCi0gICAgICAgKi5sbykKLUBAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0tCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKLSsJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCXByZXY9Ci0gCQljb250aW51ZQotIAkgICAgICBlbHNlCi1AQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKLSAJICAgICAgcHJldj0KLSAJICAgIGZpCi0gCi1AQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJGxpYmV4dCkKLSAJIyBBbiBhcmNoaXZlLgotLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgotKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi0gICAgICAgKi5sYSkKLSAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgotIAotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKLSAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgotLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgcHJldj0KLSAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLS0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIHByZXY9Ci0gCWVsc2UKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAlmaQotIAljb250aW51ZQotIAk7OwotQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgotIAotICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCi0tICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgotKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCi0gICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgZmkKLUBAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgIGVsc2UKLSAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KLSAgICAgZmkKLS0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKLS0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCi0rICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgotKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCi0gCi0gICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCi0gICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKLSsgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKLSsgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCi0gICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCi0gCi1AQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKLSAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCi0gICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0tICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAljYXNlICIkbGlicyAiIGluCi0tCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZmkKLS0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgotKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KLUBAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCi0gCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbwotIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLS0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OwotKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7Ci0gCSAgZXNhYwotLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCi0rCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCi0gCWRvbmUKLSAgICAgICBmaQotICAgICAgIHByZV9wb3N0X2RlcHM9Ci1AQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KLSAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCi0gCSAgZGVwZW5kZW5jeV9saWJzPQotKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotIAkgIGNhc2UgJGxpYiBpbgotLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OwotKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgIGVzYWMKLSAKLSAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKLUBAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgotIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZG9uZQotQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICBlbHNlCi0tCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgotIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7Ci0rCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKLSAJCWVzYWMKLSAJICAgIGZpCi0gCSAgZmkKLUBAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KLSAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OwotKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7Ci0gCQllc2FjCi0gCSAgICBmaQotIAkgIGZpCi1AQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKLSAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICBwcm9nKQotIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgICBmaQotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICAqKQotIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgotQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJLVIqKQotIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCi0tCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLSAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgotIAkgICAgKiIgJGRpciAiKikgOzsKLS0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKLSAJICAgIGVzYWMKLSAJICBmaQotIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0gCSAgY29udGludWUKLSAJICA7OwotLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7Ci0rCSoubGEpCi0rCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsJICA7OwotIAkqLiRsaWJleHQpCi0gCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLUBAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgotIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKLSAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCi0tCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgotIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKLSAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICAgIGVsc2UKLS0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCi0gCSAgICBmaQotIAkgIGZpCi0gCSAgY29udGludWUKLUBAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KLSAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLS0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8Ci0gCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAotIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgotLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCi0tCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKLSAJZmkKLSAKLSAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCSAgICBmaQotIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0tCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0gCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKLSAJICBmaQotIAkgIHRtcF9saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCi0gCSAgZG9uZQotIAkgIGNvbnRpbnVlCi0gCWZpICMgJHBhc3MgPSBjb252Ci1AQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KLSAJbGlua2xpYj0KLS0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotLQkgIGxpbmtsaWI9IiRsIgotLQlkb25lCi0rCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKLSsJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAotKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCi0rCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKLSsJZWxzZQotKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLSsJICAgIGxpbmtsaWI9IiRsIgotKwkgIGRvbmUKLSsJZmkKLSAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCi0gCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCWZpCi1AQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55Ci0gCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAotIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgotKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKLSAJICBlbHNlCi0tCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgotKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCi0gCSAgZmkKLSAJICBjb250aW51ZQotIAlmaSAjICRwYXNzID0gZGxvcGVuCi1AQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KLSAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSsJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCi0gCSAgICBkaXI9IiRsYWRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICBlbHNlCi0tCSAgICBkaXI9IiRsaWJkaXIiCi0tCSAgICBhYnNkaXI9IiRsaWJkaXIiCi0rCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLSsJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotIAkgIGZpCi0gCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKLSAJZWxzZQotQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGRpcj0iJGxhZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCi0rCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKLSAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLS0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgotKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKLSAJICBmaQotIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCi1AQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCi0gCSAgZmkKLS0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLS0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLS0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLS0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0tCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0tCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0tCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgotLQkgIGVsc2UKLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0tCSAgZmkKLSsJICBjYXNlICIkaG9zdCIgaW4KLSsJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KLSsJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKLSsJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKLSsJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAotKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KLSsJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KLSsJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKLSsJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQotKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgotKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCi0rCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGVsc2UKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0rCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0rCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqICkKLSsJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0rCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSsJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgotKwkgICAgICBlbHNlCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgIGVzYWMKLSAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgotIAotIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0tCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKLSsJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCi0gCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKLSAKLSAJICBsaW5rYWxsZGVwbGlicz1ubwotQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJCSA7OwotIAkgICAgZXNhYwotIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwotQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKLSAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgICBmaQotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgotIAkgIGRvbmUgIyBmb3IgZGVwbGliCi0gCSAgY29udGludWUKLSAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCi1AQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCi0gCSAgICAgICoiJGFic2RpcjoiKikgOzsKLS0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCi1AQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSAkaG9zdCBpbgotIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCi0gCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLS0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCi0gCSAgICAgIG5lZWRfcmVsaW5rPW5vCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0tCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgotIAkgICAgICBuZWVkX3JlbGluaz15ZXMKLSAJICAgIGZpCi0gCSAgICA7OwotQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHNoaWZ0Ci0gCSAgICByZWFsbmFtZT0iJDEiCi0gCSAgICBzaGlmdAotLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/Ci0gCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCi1AQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKLSAJICAgIGVsc2UKLSAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCSAgICBmaQotQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBsaW5rbGliPSRuZXdsaWIKLSAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKLSAKLS0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJICAgIGFkZF9zaGxpYnBhdGg9Ci0gCSAgICBhZGRfZGlyPQotIAkgICAgYWRkPQotQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJICBjYXNlICRsaWJkaXIgaW4KLSAJCSAgICBbXFwvXSopCi0tCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KLSAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgotIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi1AQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KLSAJCSoiOiRsaWJkaXI6IiopIDs7Ci0tCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKLSsJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgIGZpCi0gCi0tCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgYWRkX3NobGlicGF0aD0KLSAJICAgIGFkZF9kaXI9Ci0gCSAgICBhZGQ9Ci1AQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCi0gCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCi0gCSAgICAgICoiOiRsaWJkaXI6IiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIGFkZD0iLWwkbmFtZSIKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KLUBAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0tCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLSsJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCi0gCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCQkgICBjYXNlICIgJHhycGF0aCAiIGluCi0gCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0tCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7Ci0rCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKLSAJCSAgIGVzYWM7OwotLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKLSAJICBmaQotIAotLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgotKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCi0gCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5Ci0gCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKLSAJICB0bXBfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBjYXNlICRkZXBsaWIgaW4KLSsgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLSsgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKLSsgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OwotKyAgICAgICAgICAgIGVzYWMKLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKLSsgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGRvbmUKLSAKLSAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KLUBAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKLSAJICAgICAgKi5sYSkKLSsJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCi0tCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0Ci0gCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJCWNhc2UgJGRpciBpbgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7Ci1AQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCWNhc2UgJGhvc3QgaW4KLSAJCSotKi1kYXJ3aW4qKQotIAkJICBkZXBkZXBsPQotLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0gCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KLSAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KLSAJCSAgICAgIGRlcGRlcGw9JHRtcAotQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCi0gICAgICAgICAgICAgICAgICAgICAgIGZpCi0tCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0tCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotIAkJICAgICAgcGF0aD0KLSAJCSAgICBmaQotIAkJICBmaQotQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgIDs7Ci0gCQllc2FjCi0gCQllbHNlCi0tCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0gCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCi1AQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCi0gCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KLSAJICAgICoiICRkaXIgIiopIDs7Ci0tCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KLUBAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmaQotIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCi0tCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKLSsJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKLSAJICBuZXdfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KLSAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCi1AQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgLUwqKQotIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KLSAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLS0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0tCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKLSsJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgotIAlkb25lICMgZm9yIHZhcgotICAgICAgIGZpCi0gICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKLUBAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIDs7Ci0gCWVzYWMKLSAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCi0rCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKLSAJZmkKLSAgICAgICBkb25lCi0gICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwotQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0gICAgICAgb2xkbGlicz0iJG91dHB1dCIKLS0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCi0gICAgICAgOzsKLSAKLSAgICAgbGliKQotQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgbGliKikKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgotIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJOzsKLSAgICAgICAqKQotIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKLUBAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKLSAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJZWxzZQotIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKLSAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLUBAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGVjaG8KLSAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCi0gCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0tCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCi0rCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgotIAlmaQotICAgICAgIGZpCi0gCi1AQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBkb25lCi0gCi0gCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCi0rCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgotIAkgIDs7Ci0gCi0gCXFueCkKLUBAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZmkKLSAKLSAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLS0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKLSsgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCi0gICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAKLS0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKLSAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCi0gCXJlbW92ZWxpc3Q9Ci1AQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgIGNvbnRpbnVlCi0gCQkgZmkKLSAJICAgICAgIGZpCi0tCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKLSsJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKLSAJICAgICAgIDs7Ci0gCSAgICAqKSA7OwotIAkgIGVzYWMKLUBAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgotICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0tCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCi0rCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgotIAotIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0gCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAotQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgotIAl0ZW1wX3hycGF0aD0KLSAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgotKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCi0gCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCi0gCSoiICRsaWIgIiopIDs7Ci0tCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotIAotQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCi0gCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KLSAJKiIgJGxpYiAiKikgOzsKLS0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gCi1AQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLS0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0gCSAgICA7OwotIAkgICotKi1uZXRic2QqKQotIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCi1AQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAqKQotIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KLSAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLS0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgotIAkgICAgZmkKLSAJICAgIDs7Ci0gCSAgZXNhYwotQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCi0gCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAqIiAkaSAiKikKLS0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgaT0iIgotIAkJICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi0gCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAotIAkJICBkZXBsaWJfbWF0Y2g9JDEKLSAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgZWxzZQotIAkJICAgIGRyb3BwZWRkZXBzPXllcwotIAkJICAgIGVjaG8KLUBAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKLSAJCWZpCi0gCQk7OwotIAkgICAgICAqKQotLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKLSAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAgICoiICRpICIqKQotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgICBpPSIiCi0gCQkgICAgICA7OwotIAkJICAgIGVzYWMKLSAJCSAgZmkKLSAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0Ci0gCQkgICAgZGVwbGliX21hdGNoPSQxCi0gCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgZWxzZQotIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0gCQkgICAgICBlY2hvCi1AQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCi0gCQlmaQotIAkJOzsKLSAJICAgICAgKikKLS0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgotKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAotKwkJZWxzZQotKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQotKwkJZmkKLSsJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLS0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0rCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCi0rCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgotKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgICAkbm9jYXNlZ2xvYgotKwkJICBlbHNlCi0rCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAotKwkJICBmaQotIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCi0gCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgotIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKLUBAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgotIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7Ci0gCQkJZXNhYwotIAkJICAgICAgZG9uZQotLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAotKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKLSAJCQkgJFNFRCAtZSAxMHEgfAotIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJCWFfZGVwbGliPSIiCi0gCQkJYnJlYWsgMgotIAkJICAgICAgZmkKLUBAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKLSAJICAgICAgOzsKLSAJICAgICopCi0gCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0tCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgotQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLSAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0gCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLSAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCi0gCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgICAgICBhX2RlcGxpYj0iIgotIAkJICAgICAgYnJlYWsgMgotIAkJICAgIGZpCi1AQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCi0gCSAgICAgIDs7Ci0gCSAgICAqKQotIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KLUBAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgotIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLS0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OwotKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgotIAktTCopCi0gCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCi0gCSAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgIGVzYWMKLSAJICA7OwotLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCi1AQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKLSAJICBoYXJkY29kZV9saWJkaXJzPQotIAkgIGRlcF9ycGF0aD0KLSAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgotLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotIAkJZWxzZQotQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCi0gCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCSAgICA7OwotIAkJICAqKQotLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCSAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotIAkgICAgICBlbHNlCi0tCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKLSsJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotIAkgICAgICBmaQotIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBkb25lCi1AQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKLSAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLS0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKLSsJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCi0gCSAgICBlbHNlCi0tCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAkgICAgZmkKLSAJICBmaQotIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCi0gCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgICAgcnBhdGg9Ci0gCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICAgIGRvbmUKLS0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgotLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgotKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCi0gCSAgZmkKLSAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgotIAlmaQotIAotIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0tCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgotKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCi0gCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCi0tCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKLS0JICBleHBvcnQgJHNobGlicGF0aF92YXIKLSsJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCi0gCWZpCi0gCi0gCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgotLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgotIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKLSAJc2hpZnQKLSAJcmVhbG5hbWU9IiQxIgotIAlzaGlmdAotIAotIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgotIAllbHNlCi0gCSAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCWZpCi1AQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCi0gCWxpbmtuYW1lcz0KLSAJZm9yIGxpbmsKLSAJZG8KLS0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCi0rCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCi0gCWRvbmUKLSAKLSAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKLUBAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKLSAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLSAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKLSsJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKLSAJZmkKLSAKLSAJb3JpZ19leHBvcnRfc3ltYm9scz0KLUBAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgotIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKLSAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKLSAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLSsJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwotIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLS0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgotLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCi0tCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0tCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgotKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAotKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KLSsJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KLSsJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKLSsJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCi0rCQkgIGV2YWwgY21kPVwiJGNtZDFcIgotKwkJICBmdW5jX2xlbiAiICRjbWQiCi0rCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0rCQkgIDs7Ci0rCQkqKQotKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubwotKwkJICA7OwotKwkgICAgICBlc2FjCi0rCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAotKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKLSsJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9Ci0rCSAgICAgIHRoZW4KLSsJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCXNraXBwZWRfZXhwb3J0PWZhbHNlCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgotKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKLSsJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLSsJCXNhdmVfbGlib2Jqcz0kbGlib2JqcwotKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAotKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCi0rCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbwotKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCQlkb25lID4gIiRvdXRwdXQiCi0rCQlldmFsIGNtZD1cIiRjbWQxXCIKLSAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCW91dHB1dD0kc2F2ZV9vdXRwdXQKLSsJCWxpYm9ianM9JHNhdmVfbGlib2JqcwotIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKLSAJICAgICAgZWxzZQotIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCi1AQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCi0gCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLS0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAlmaQotIAotIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgotIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KLSAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0rCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCi0gCWZpCi1AQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCi0gCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCi0gCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwotIAkgICopCi0tCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCWRvbmUKLUBAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgotIAkgIGZpCi0gCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGVsc2UKLSAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLS0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBmaQotIAlmaQotIAotIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCi0rCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCi0gCWZpCi0gCi0gCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLS0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KLSAJZmkKLSAKLSAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKLSAJICBlbHNlCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKLSAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCi0gCSAgZmkKLSAJZWxzZQotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0gCSAgZWxzZQotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKLSAJICAgIGNtZHM9JGFyY2hpdmVfY21kcwotIAkgIGZpCi0gCWZpCi1AQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKLSAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAotIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCi0gCSAgICBkbwotLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAotKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKLSAJICAgIGRvbmUKLSAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKLS0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgotIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuawotIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCi0gCSAgICBmaQotIAkgICAgZm9yIG9iagotIAkgICAgZG8KLS0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKLSsJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0Ci0gCSAgICBkb25lCi0tCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0tCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCi0gCSAgZWxzZQotIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KLSAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKLSAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0tCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCi0gCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0Ci0gCSAgICAgIGxlbj0kbGVuMAotQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCi0gCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KLSAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0Ci0tCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKLSsJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKLSAJCSAgZWxzZQotIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCi0gCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKLS0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgotKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkJICBmaQotIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLSAJCSAgZnVuY19hcml0aCAkayArIDEKLUBAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgotIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0gCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKLSAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KLS0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKLSsJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCi0gCSAgICAgIGZpCi0tCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotIAotIAkgICAgZWxzZQotIAkgICAgICBvdXRwdXQ9Ci1AQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCi0gCSAgICAgIGxpYm9ianM9JG91dHB1dAotIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0tCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkgICAgICBmaQotIAkgICAgZmkKLSAKLUBAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKLSAJCWx0X2V4aXQ9JD8KLSAKLSAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCi0gCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKLSAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgotIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0tCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgZmkKLSAKLSAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgotIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQotIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0gCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwotIAkgICAgZmkKLUBAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKLSAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0Ci0gCi0gCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGZpCi0gCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKLUBAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgotIAotIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCi0gCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KLS0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCi0rCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKLSAJZmkKLSAKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAlmaQotIAotIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAJZm9yIGNtZCBpbiAkY21kczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLS0JICBldmFsICJjbWQ9XCIkY21kXCIiCi0rCSAgZXZhbCBjbWQ9XCIkY21kXCIKLSAJICAkb3B0X3NpbGVudCB8fCB7Ci0gCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCi0gCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCi1AQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCi0gCSAgICBsdF9leGl0PSQ/Ci0gCi0gCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAotIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCi0gCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgotIAlJRlM9IiRzYXZlX2lmcyIKLSAKLSAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPwotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwotIAotIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLUBAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAotIAllbHNlCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAlmaQotICAgICAgIGZpCi0gCi0rICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKLSsgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKLSsKLSAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKLSAKLUBAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKLSAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKLSAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KLSAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgotLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPwotKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KLSAJZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgICAgZmkKLSAKLUBAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKLSAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgotIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KLSAJICAgIDEwLlswMTIzXSkKLS0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLS0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJZmkKLUBAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCi0gCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0rCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCi0gCS1MKikKLSAJICBjYXNlICIgJG5ld19saWJzICIgaW4KLSAJICAqIiAkZGVwbGliICIqKSA7OwotLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0tCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgotIAotIAotLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgotLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCi0gCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KLUBAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKLSAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCi0gCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gICAgICAgZmkKLUBAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgotIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQk7OwotIAkgICAgICAqKQotLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKLSsJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiRsaWJkaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7Ci0gCSAgZXNhYwotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCi0gICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCi0gCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLS0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gICAgICAgZmkKLSAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKLSAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJOzsKLSAJICAgICAgKikKLS0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCi0rCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotICAgICAgIGRvbmUKLUBAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKLSAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKLSAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAgICAgICBmaQotICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgotIAlleGl0X3N0YXR1cz0wCi0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCi0gCi0rCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKwlmaQotKwotIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCi0gCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKLUBAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKLSAJZmkKLUBAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCi0gCWZpCi1AQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKLSAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0Ci0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSsKLSsJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rCWZpCi0rCi0gCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgIGZpCi0gCi1AQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgotIAotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSAKLSsgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgotKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKyAgICAgIGZpCi0rCi0gICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KLSAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCi0gCi1AQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKLSAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0tCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKLSsJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKLSAJICBmaQotIAlmaQotIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgotQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCi0gCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotICAgICAgIGZpCi0gCi0gICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCi1AQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJZmkKLSAKLSAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCi1AQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKLSAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKLSAJICBvbGRvYmpzPQotQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCi0gCQllc2FjCi0gCSAgICAgIGRvbmUKLSAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCi0gCSAgICAgIDs7Ci0tCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAotIAlmdW5jX2xlbiAiICRjbWRzIgotIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAotIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLSAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0rCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KLSsJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCi0rCSAgZm9yIG9iaiBpbiAkb2xkb2JqcwotKwkgIGRvCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgotKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0gCWVsc2UKLSAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwotIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKLUBAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKLSAJICBkbwotIAkgICAgbGFzdF9vbGRvYmo9JG9iagotIAkgIGRvbmUKLS0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKLSAJICBsZW49JGxlbjAKLUBAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKLSAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICAgICAgZmkKLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICAgICAgb2JqbGlzdD0KLSAJICAgICAgbGVuPSRsZW4wCi0gCSAgICBmaQotQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgotIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICBvbGRvYmpzPSRvYmpsaXN0Ci0gCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KLS0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCi0rCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKLSAJICBlbHNlCi0tCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICBmaQotIAlmaQotICAgICAgIGZpCi1AQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKLSAJICAgICAgKi5sYSkKLSAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotKwkJOzsKLSsJICAgICAgLUwqKQotKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSAJCTs7Ci0tCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAtUiopCi0rCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotKwkJOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgotQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCi0gCSAgICAgICoubGEpCi0gCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotKwotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0gCQk7OwotLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi1AQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKLSAJCSMgdGhlIGxpYnJhcnk6Ci0gCQlmdW5jX2Jhc2VuYW1lICIkbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwotIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi0gCSAgICBuZXdkbHByZWZpbGVzPQotQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7Ci0gCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCi0gCSAgICBkb25lCi0gCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKLSAJICBmaQotQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCi0gICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotIH0KLSAKLS17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCi0reyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQotIAotIAotQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZm9yIGFyZwotICAgICBkbwotICAgICAgIGNhc2UgJGFyZyBpbgotLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7Ci0tICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OwotKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OwotKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7Ci0rICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwotICAgICAgIGVzYWMKLSAgICAgZG9uZQotIAotQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotICAgICBybWRpcnM9Ci0gCi0tICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCi0gICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KLSAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKLSAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0tCW9iamRpcj0iJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRvYmpkaXIiCi0gICAgICAgZWxzZQotLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRkaXIvJG9iamRpciIKLSAgICAgICBmaQotICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgotKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKLSAKLS0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0tICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KLSsgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgotIAljYXNlICIgJHJtZGlycyAiIGluCi0tCSAgKiIgJG9iamRpciAiKikgOzsKLS0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKLSsJICAqIiAkb2RpciAiKikgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKLSAJZXNhYwotICAgICAgIGZpCi0gCi1AQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KLSAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCi0gCSAgZG9uZQotLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgotIAotLQkgIGNhc2UgIiRtb2RlIiBpbgotKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KLSAJICBjbGVhbikKLS0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgotLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCi0rCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgotIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKLS0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKLSsJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwotIAkgICAgZXNhYwotLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgotKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgotIAkgICAgOzsKLSAJICB1bmluc3RhbGwpCi0gCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KLUBAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLSAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgotIAkgIGZpCi0gCi0gCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgotIAkgIGZpCi0gCWZpCi0gCTs7Ci0gCi0gICAgICAgKikKLS0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCi0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KLSAJICBub2V4ZW5hbWU9JG5hbWUKLSAJICBjYXNlICRmaWxlIGluCi0gCSAgKi5leGUpCi1AQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKLSAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KLUBAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgotIAkgICAgICByZWxpbmtfY29tbWFuZD0KLSAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSAJICAgIGVsc2UKLSAJICAgICAgcmVsaW5rX2NvbW1hbmQ9Ci0gCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQotQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKLSAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKLSAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgotIAkgICAgZmkKLSAJICBmaQotIAlmaQotQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgICBlc2FjCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCi0gICAgIGRvbmUKLS0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKLSAKLSAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCi0gICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KLUBAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0teyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKLSt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9Ci0gCi0tdGVzdCAteiAiJG1vZGUiICYmIHsKLSt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKLSAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCi0gICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgotIH0KLSAKLSB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKLS0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gCi0gaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgotICAgZXZhbCBleGVjICIkZXhlY19jbWQiCi1kaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00Ci1pbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAotLS0tIGEvbHRvcHRpb25zLm00Ci0rKysgYi9sdG9wdGlvbnMubTQKLUBAIC04LDcgKzgsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAotKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00Ci0gCi0gIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KLSBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCi1kaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00Ci1pbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAotLS0tIGEvbHR2ZXJzaW9uLm00Ci0rKysgYi9sdHZlcnNpb24ubTQKLUBAIC03LDE3ICs3LDE3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgotKyMgQGNvbmZpZ3VyZV9pbnB1dEAKLSAKLS0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAotKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00Ci0gIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAotIAotLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCi0tbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCi0rbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKLSttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKLSAKLSBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLStbbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCi0gX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKLSBdKQotZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKLWluZGV4IGJmOTJiNWUwNzkuLmM1NzNkYTkwYzUgMTAwNjQ0Ci0tLS0gYS9sdH5vYnNvbGV0ZS5tNAotKysrIGIvbHR+b2Jzb2xldGUubTQKLUBAIC03LDcgKzcsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00Ci0rIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAotIAotICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgotICMKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCA4NTM4NDllZTU4Li41Zjc0ZWNmN2RhIDEwMDc1NQotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKLSsrKyBiL29wY29kZXMvY29uZmlndXJlCi1AQCAtNjgwLDYgKzY4MCw5IEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotK2FjX2N0X0FSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03OTgsNiArODAxLDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfd2Vycm9yCi1AQCAtMTQ2Miw2ICsxNDY2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTQwMyw4ICs1NDA5LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTU0NDQsNyArNTQ1MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYxMzAsOCArNjEzNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02MTgwLDYgKzYxODYsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYxOTYsNiArNjI3NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjM2NCw3ICs2NDQ5LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTY1MTgsNiArNjYwNCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY1MzEsMTEgKzY2MzIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY1NTEsNyArNjgwNSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY1NzEsMTEgKzY4MjUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjU5MSw3ICs2ODQ5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY2MTAsNiArNjg2OCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjYyMSwxNiArNjg4Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTY5NzIsOCArNzI5MCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzAwOSw2ICs3MzI3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTcwNTAsNiArNzM2OSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MDYxLDcgKzczOTIsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03MDg3LDggKzc0MTgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MDk4LDggKzc0MjksOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MTM2LDYgKzc0NjcsMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MTUyLDYgKzc0OTMsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03MzYzLDYgKzc3NDMsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc5MjYsNiArODQyMyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MDkxLDcgKzg1OTAsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODE4MCw3ICs4NjgwLDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NDc4LDggKzg5NzgsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg2NDUsNiArOTE0MywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg3MDcsNyArOTIxMSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NzY0LDEzICs5MjY4LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg4MzEsNiArOTMzOSwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTkxODEsNyArOTY5NCw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkyODAsMTIgKzk3OTQsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTI5OSw4ICs5ODEzLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTkzMTgsOCArOTgzMiw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MzY1LDggKzk4NzksOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTQ5Niw3ICsxMDAxMCwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTA5LDIyICsxMDAyOSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTUzNiw3ICsxMDA2MywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTU0OSwyMiArMTAwODIsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05NjA5LDIwICsxMDE0OSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk2ODMsNyArMTAyNjYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NjkxLDcgKzEwMjc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTcwNyw3ICsxMDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NzMxLDEwICsxMDMxNCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk4MTMsMjMgKzEwMzk2LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05OTE0LDcgKzEwNTEwLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTkzMyw5ICsxMDUyOSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDUxMSw4ICsxMTEwNyw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDU0NSwxMyArMTExNDIsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwNjQzLDcgKzExMjk4LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExNDM5LDcgKzEyMDk0LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE0NDIgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNDgzLDEwICsxMjEzOCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExNTQ1LDcgKzEyMjAwLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE1NDggImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNTg5LDEwICsxMjI0NCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNzc5LDcgKzEzNDM0LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAjIHNpbmNlIGxpYmJmZCBtYXkgbm90IHB1bGwgaW4gdGhlIGVudGlyZXR5IG9mIGxpYmliZXJ0eS4KLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1AQCAtMTM3NTYsMTMgKzE0NDExLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM3NzcsMTQgKzE0NDM5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzODE3LDEyICsxNDQ4MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzg3Nyw4ICsxNDU0MiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTM4ODgsMTIgKzE0NTU4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzkwOSw3ICsxNDU4MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzOTQ1LDYgKzE0NjE2LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDcxMCw3ICsxNTM4Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQ4MTMsMTkgKzE1NDg2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0ODU1LDYgKzE1NTUxLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0ODY0LDYgKzE1NTY2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDk3OCwxMiArMTU2ODMsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTUwNzAsOSArMTU3NzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNTA4OCw2ICsxNTc5MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTUxMjAsMjEwICsxNTgyNSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotaW5kZXggNGViMTkwMDVlOC4uMTlhNTc2MDhiOSAxMDA2NDQKLS0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotQEAgLTE3MCw3ICsxNzAsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1kaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQotaW5kZXggMDQxY2JkYmY3MS4uMTlkNjA1ZmM4NSAxMDA3NTUKLS0tLSBhL3psaWIvY29uZmlndXJlCi0rKysgYi96bGliL2NvbmZpZ3VyZQotQEAgLTY0Niw4ICs2NDYsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzc0LDYgKzc3Nyw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9ob3N0X3NoYXJlZAotICcKLUBAIC0xNDI4LDYgKzE0MzIsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC00MTQ3LDggKzQxNTMsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNDE4OCw3ICs0MTk0LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTAwNCw4ICs1MDEwLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTUwNTQsNiArNTA2MCw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNTA3MCw2ICs1MTUwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01MjM4LDcgKzUzMjMsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNTM5Miw2ICs1NDc4LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTQwNSwxMSArNTUwNiwxNjUgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNTQyNSw3ICs1NjgwLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNTQ0NSwxMSArNTcwMCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01NDY1LDcgKzU3MjQsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNTQ4NCw2ICs1NzQzLDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC01NDk1LDE2ICs1NzU4LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNTg0Niw4ICs2MTY1LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC01ODgzLDYgKzYyMDIsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNTkyNCw2ICs2MjQ0LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTU5MzUsNyArNjI2Nyw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTU5NjEsOCArNjI5Myw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTU5NzIsOCArNjMwNCw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTYwMTAsNiArNjM0MiwxOSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTYwMjcsNiArNjM3Miw0MSBAQCBmaQotIAotIAotIAotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTYyNDEsNiArNjYyMSwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNjgwNyw2ICs3MzA0LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTcyNjksNyArNzc2OCw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03MzU4LDcgKzc4NTgsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTc2NTYsOCArODE1Niw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtNzgyMyw2ICs4MzIxLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNzg4NSw3ICs4Mzg5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTc5NDIsMTMgKzg0NDYsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODAwOSw2ICs4NTE3LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODM1OSw3ICs4ODcyLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODQ1OCwxMiArODk3MiwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC04NDc3LDggKzg5OTEsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtODQ5Niw4ICs5MDEwLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg1NDMsOCArOTA1Nyw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC04Njc0LDcgKzkxODgsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICQ/ICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg2OTAsMjIgKzkyMTAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTg3MTcsNyArOTI0NCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICQ/ICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg3MzMsMjIgKzkyNjYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC04NzkzLDIwICs5MzMzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtODg2Nyw3ICs5NDUwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtODg3NSw3ICs5NDU4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtODg5MSw3ICs5NDc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTg5MTUsMTAgKzk0OTgsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC04OTk3LDI2ICs5NTgwLDM5IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICQ/ICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQotIGZpCi0gY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTkxMDEsNyArOTY5Nyw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTkxMjAsOSArOTcxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC05Njk4LDggKzEwMjk0LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTk3MzIsMTMgKzEwMzI5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC05ODMwLDcgKzEwNDg1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTEwNjQ0LDcgKzExMjk5LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTA2NDcgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEwNjg4LDEwICsxMTM0MywxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEwNzUwLDcgKzExNDA1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTA3NTMgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEwNzk0LDEwICsxMTQ0OSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyMjY3LDEzICsxMjkyMiwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMjg4LDE0ICsxMjk1MCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjMyOCwxMiArMTI5OTMsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIzODgsOCArMTMwNTMsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEyMzk5LDEyICsxMzA2OSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTI0MjAsNyArMTMwOTIsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMjQ1Niw2ICsxMzEyNyw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTMwNTQsNyArMTM3MjYsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTEzMTU3LDE5ICsxMzgzMCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xMzE5OSw2ICsxMzg5NSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xMzIwOCw2ICsxMzkxMCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTMzMjIsMTIgKzE0MDI3LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTEzNDE0LDkgKzE0MTE5LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTM0MzIsNiArMTQxMzQsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTEzNDY0LDIxMCArMTQxNjksMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWRhNjJmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKQEAgLTAsMCArMSwyMTIzNCBAQAorRnJvbSBiOGZhZmQ4Y2U2YzQ3YzlhNTUxZWQ3OTYxNzZkODg0YTM0OTMwMDg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xNV0gVXNlIGxpYnRvb2wgMi40CisKK2dldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJmZC9jb25maWd1cmUgICAgICB8IDEzMjIgKysrKysrKysrKysrKysrLS0tLS0KKyBiZmQvY29uZmlndXJlLmFjICAgfCAgICAyICstCisgYmludXRpbHMvY29uZmlndXJlIHwgMTMyMCArKysrKysrKysrKysrKystLS0tLQorIGdhcy9jb25maWd1cmUgICAgICB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBncHJvZi9jb25maWd1cmUgICAgfCAxMzIwICsrKysrKysrKysrKysrKy0tLS0tCisgbGQvY29uZmlndXJlICAgICAgIHwgMTY5NSArKysrKysrKysrKysrKysrKystLS0tLS0tCisgbGliY3RmL2NvbmZpZ3VyZSAgIHwgMTMxOSArKysrKysrKysrKysrKystLS0tLQorIGxpYnRvb2wubTQgICAgICAgICB8IDEwODAgKysrKysrKysrKystLS0tLQorIGx0bWFpbi5zaCAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyBsdG9wdGlvbnMubTQgICAgICAgfCAgICAyICstCisgbHR2ZXJzaW9uLm00ICAgICAgIHwgICAxMiArLQorIGx0fm9ic29sZXRlLm00ICAgICB8ICAgIDIgKy0KKyBvcGNvZGVzL2NvbmZpZ3VyZSAgfCAxMzIwICsrKysrKysrKysrKysrKy0tLS0tCisgMTMgZmlsZXMgY2hhbmdlZCwgOTkzOSBpbnNlcnRpb25zKCspLCAzNzAwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKK2luZGV4IGJjNTc2Yjc4OTRhLi5jZDAzNjYzODA4MSAxMDA3NTUKKy0tLSBhL2JmZC9jb25maWd1cmUKKysrKyBiL2JmZC9jb25maWd1cmUKK0BAIC03MDQsNiArNzA0LDkgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisrYWNfY3RfQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTgyMiw2ICs4MjUsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNTA0LDYgKzE1MDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtbW1hcCAgICAgICAgICAgICB0cnkgdXNpbmcgbW1hcCBmb3IgQkZEIGlucHV0IGZpbGVzIGlmIGF2YWlsYWJsZQorICAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1ESVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGluIERJUgorQEAgLTU2OTMsOCArNTY5OSw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01NzM0LDcgKzU3NDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02NDIwLDggKzY0MjYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjQ3MCw2ICs2NDc2LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDg2LDYgKzY1NjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTY2NTQsNyArNjczOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02ODA4LDYgKzY4OTQsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02ODIxLDExICs2OTIyLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02ODQxLDcgKzcwOTUsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02ODYxLDExICs3MTE1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY4ODEsNyArNzEzOSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02OTAwLDYgKzcxNTgsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY5MTEsMTYgKzcxNzMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC03MjYyLDggKzc1ODAsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcyOTksNiArNzYxNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MzQwLDYgKzc2NTksMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzM1MSw3ICs3NjgyLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzM3Nyw4ICs3NzA4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzM4OCw4ICs3NzE5LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzQyNiw2ICs3NzU3LDE2IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzQ0Miw2ICs3NzgzLDQ1IEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzY1Myw2ICs4MDMzLDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC04MjE2LDYgKzg3MTMsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODM4MCw3ICs4ODc5LDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTg0NjksNyArODk2OSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODc2Nyw4ICs5MjY3LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04OTM0LDYgKzk0MzIsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04OTk2LDcgKzk1MDAsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtOTA1MywxMyArOTU1NywxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC05MTIwLDYgKzk2MjgsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05NDcwLDcgKzk5ODMsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05NTY5LDEyICsxMDA4MywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05NTg4LDggKzEwMTAyLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTk2MDcsOCArMTAxMjEsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTY1NCw4ICsxMDE2OCw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05Nzg1LDcgKzEwMjk5LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk3OTgsMjIgKzEwMzE4LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05ODI1LDcgKzEwMzUyLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05ODM4LDIyICsxMDM3MSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk4OTgsMjAgKzEwNDM4LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTk3Miw3ICsxMDU1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk5ODAsNyArMTA1NjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05OTk2LDcgKzEwNTc5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTEwMDIwLDEwICsxMDYwMywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTEwMTAyLDIzICsxMDY4NSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtMTAyMDMsNyArMTA3OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC0xMDIyMiw5ICsxMDgxOCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDgwMCw4ICsxMTM5Niw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDgzNCwxMyArMTE0MzEsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwOTMyLDcgKzExNTg3LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNzI4LDcgKzEyMzgzLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE3MzEgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNzcyLDEwICsxMjQyNywxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExODM0LDcgKzEyNDg5LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE4MzcgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExODc4LDEwICsxMjUzMywxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE0NTU0LDcgKzE1MjA5LDcgQEAgU0hBUkVEX0xERkxBR1M9CisgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCisgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KKy0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgorKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgorICAgZmkKKyAKKyAgIGNhc2UgIiR7aG9zdH0iIGluCitAQCAtMTcxNzYsMTMgKzE3ODMxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTcxOTcsMTQgKzE3ODU5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3MjM3LDEyICsxNzkwMiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzI5Nyw4ICsxNzk2MiwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTczMDgsMTIgKzE3OTc4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNzMyOSw3ICsxODAwMSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE3MzY1LDYgKzE4MDM2LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xODE1Myw3ICsxODgyNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTgyNTYsMTkgKzE4OTI5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE4Mjk4LDYgKzE4OTk0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE4MzA3LDYgKzE5MDA5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xODQyMSwxMiArMTkxMjYsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTg1MTMsOSArMTkyMTgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xODUzMSw2ICsxOTIzMyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTg1NjMsMjEwICsxOTI2OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKK2luZGV4IGM1YmZiZDVkMTI5Li5lNjY2YjFjYzEwNiAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWd1cmUuYWMKKysrKyBiL2JmZC9jb25maWd1cmUuYWMKK0BAIC0yOTAsNyArMjkwLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKKyAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCisgY2hhbmdlcXVvdGUoWyxdKWRubAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgICBjYXNlICIke2hvc3R9IiBpbgorZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZ3VyZSBiL2JpbnV0aWxzL2NvbmZpZ3VyZQoraW5kZXggYThkZmQ0YmQ2OGMuLjgyMzE2NDk2OTUzIDEwMDc1NQorLS0tIGEvYmludXRpbHMvY29uZmlndXJlCisrKysgYi9iaW51dGlscy9jb25maWd1cmUKK0BAIC02OTAsOCArNjkwLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTgwOCw2ICs4MTEsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDg1LDYgKzE0ODksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdpbmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXV0by95ZXMvbm8pCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKK0BAIC01NDYxLDggKzU0NjcsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTUwMiw3ICs1NTA4LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjE4OCw4ICs2MTk0LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYyMzgsNiArNjI0NCw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjI1NCw2ICs2MzM0LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02NDIyLDcgKzY1MDcsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjU3Niw2ICs2NjYyLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjU5MSw5ICs2NjkyLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NjA5LDcgKzY4NjMsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NjI5LDExICs2ODgzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY2NDksNyArNjkwNyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NjY4LDYgKzY5MjYsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY2NzksMTIgKzY5NDEsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjY5Niw2ICs2OTU2LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNzAzMCw4ICs3MzQ4LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03MDY3LDYgKzczODUsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzEwOCw2ICs3NDI3LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTcxMTksNyArNzQ1MCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTcxNDUsOCArNzQ3Niw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTcxNTYsOCArNzQ4Nyw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcxOTQsNiArNzUyNSwyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTcyMTAsNiArNzU1Niw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTc0MjEsNiArNzgwMSwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzk4NCw2ICs4NDgxLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgxNzksNyArODY3OCw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MjY4LDcgKzg3NjgsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg1NjYsOCArOTA2Niw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODczMyw2ICs5MjMxLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODc5NSw3ICs5Mjk5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg4NTIsMTMgKzkzNTYsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODkxOSw2ICs5NDI3LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTI2OSw3ICs5NzgyLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTM2OCwxMiArOTg4MiwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05Mzg3LDggKzk5MDEsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTQwNiw4ICs5OTIwLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk0NTMsOCArOTk2Nyw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NTg0LDcgKzEwMDk4LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1OTcsMjIgKzEwMTE3LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05NjI0LDcgKzEwMTUxLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NjM3LDIyICsxMDE3MCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk2OTcsMjAgKzEwMjM3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTc3MSw3ICsxMDM1NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk3NzksNyArMTAzNjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05Nzk1LDcgKzEwMzc4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk4MTksMTAgKzEwNDAyLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTkwMSwyMyArMTA0ODQsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTEwMDAyLDcgKzEwNTk4LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtMTAwMjEsOSArMTA2MTcsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1OTksOCArMTExOTUsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA2MzMsMTMgKzExMjMwLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDczMSw3ICsxMTM4Niw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTUyNyw3ICsxMjE4Miw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNTMwICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTU3MSwxMCArMTIyMjYsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTYzMyw3ICsxMjI4OCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNjM2ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTY3NywxMCArMTIzMzIsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNjAyNCwxMyArMTY2NzksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjA0NSwxNCArMTY3MDcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTYwODUsMTIgKzE2NzUwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2MTQ1LDggKzE2ODEwLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNjE1NiwxMiArMTY4MjYsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE2MTc3LDcgKzE2ODQ5LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTYyMTMsNiArMTY4ODQsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE2OTc5LDcgKzE3NjUxLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNzA4MiwxOSArMTc3NTUsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTcxMjQsNiArMTc4MjAsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTcxMzMsNiArMTc4MzUsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE3MjQ3LDEyICsxNzk1MiwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNzMzOSw5ICsxODA0NCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE3MzU3LDYgKzE4MDU5LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNzM4OSwyMTAgKzE4MDk0LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQoraW5kZXggNjBjMWEwNTVhZTIuLjBlMGNlNGMwZTIzIDEwMDc1NQorLS0tIGEvZ2FzL2NvbmZpZ3VyZQorKysrIGIvZ2FzL2NvbmZpZ3VyZQorQEAgLTY4MSw4ICs2ODEsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzk5LDYgKzgwMiw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0OTAsNiArMTQ5NCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1jcHU9Q1BVICAgICAgICAgIGRlZmF1bHQgY3B1IHZhcmlhbnQgaXMgQ1BVIChjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIEFSQykKKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorQEAgLTUyNzcsOCArNTI4Myw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01MzE4LDcgKzUzMjQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02MDA0LDggKzYwMTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjA1NCw2ICs2MDYwLDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MDcwLDYgKzYxNTAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYyMzgsNyArNjMyMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02MzkyLDYgKzY0NzgsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02NDA3LDkgKzY1MDgsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY0MjUsNyArNjY3OSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY0NDUsMTEgKzY2OTksMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQ2NSw3ICs2NzIzLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY0ODQsNiArNjc0MiwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjQ5NSwxMiArNjc1NywxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKyAKKyAKKyAKK0BAIC02NTEyLDYgKzY3NzIsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKK0BAIC02ODQ2LDggKzcxNjQsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTY4ODMsNiArNzIwMSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC02OTI0LDYgKzcyNDMsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNjkzNSw3ICs3MjY2LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNjk2MSw4ICs3MjkyLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNjk3Miw4ICs3MzAzLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzAxMCw2ICs3MzQxLDIxIEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzAyNiw2ICs3MzcyLDQwIEBAIGZpCisgCisgCisgCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzIzNyw2ICs3NjE3LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03ODAwLDYgKzgyOTcsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzk5NSw3ICs4NDk0LDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgwODQsNyArODU4NCw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODM4Miw4ICs4ODgyLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NTQ5LDYgKzkwNDcsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04NjExLDcgKzkxMTUsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODY2OCwxMyArOTE3MiwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04NzM1LDYgKzkyNDMsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MDg1LDcgKzk1OTgsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MTg0LDEyICs5Njk4LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkyMDMsOCArOTcxNyw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MjIyLDggKzk3MzYsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTI2OSw4ICs5NzgzLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk0MDAsNyArOTkxNCwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NDEzLDIyICs5OTMzLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05NDQwLDcgKzk5NjcsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk0NTMsMjIgKzk5ODYsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05NTEzLDIwICsxMDA1Myw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk1ODcsNyArMTAxNzAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NTk1LDcgKzEwMTc4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTYxMSw3ICsxMDE5NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NjM1LDEwICsxMDIxOCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk3MTcsMjMgKzEwMzAwLDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05ODE4LDcgKzEwNDE0LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTgzNyw5ICsxMDQzMyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDQxNSw4ICsxMTAxMSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDQ0OSwxMyArMTEwNDYsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNTQ3LDcgKzExMjAyLDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExMzQzLDcgKzExOTk4LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTEzNDYgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExMzg3LDEwICsxMjA0MiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNDQ5LDcgKzEyMTA0LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE0NTIgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNDkzLDEwICsxMjE0OCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE1OTI4LDEzICsxNjU4MywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1OTQ5LDE0ICsxNjYxMSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTk4OSwxMiArMTY2NTQsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTYwNDksOCArMTY3MTQsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE2MDYwLDEyICsxNjczMCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTYwODEsNyArMTY3NTMsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNjExNyw2ICsxNjc4OCw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTY4OTAsNyArMTc1NjIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE2OTkzLDE5ICsxNzY2Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNzAzNSw2ICsxNzczMSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNzA0NCw2ICsxNzc0Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTcxNTgsMTIgKzE3ODYzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE3MjUwLDkgKzE3OTU1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTcyNjgsNiArMTc5NzAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE3MzAwLDIxMCArMTgwMDUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQoraW5kZXggYzIzNjkyZTVjM2QuLjlmOTM2YTViMDNkIDEwMDc1NQorLS0tIGEvZ3Byb2YvY29uZmlndXJlCisrKysgYi9ncHJvZi9jb25maWd1cmUKK0BAIC02NjIsOCArNjYyLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc4MCw2ICs3ODMsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDQyLDYgKzE0NDYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgCisgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKK0BAIC01MTI0LDggKzUxMzAsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTE2NSw3ICs1MTcxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTg1MSw4ICs1ODU3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU5MDEsNiArNTkwNyw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNTkxNyw2ICs1OTk3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MDg1LDcgKzYxNzAsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjIzOSw2ICs2MzI1LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjI1MiwxMSArNjM1MywxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjI3Miw3ICs2NTI2LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjI5MiwxMSArNjU0NiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MzEyLDcgKzY1NzAsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjMzMSw2ICs2NTg5LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02MzQyLDE2ICs2NjA0LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNjY5Myw4ICs3MDExLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NzMwLDYgKzcwNDgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjc3MSw2ICs3MDkwLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY3ODIsNyArNzExMyw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY4MDgsOCArNzEzOSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY4MTksOCArNzE1MCw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY4NTcsNiArNzE4OCwyMCBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTY4NzMsNiArNzIxOCw0MSBAQCBmaQorIAorIAorIAorKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTcwODQsNiArNzQ2NCwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzY0Nyw2ICs4MTQ0LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc4NDIsNyArODM0MSw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03OTMxLDcgKzg0MzEsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgyMjksOCArODcyOSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODM5Niw2ICs4ODk0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODQ1OCw3ICs4OTYyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg1MTUsMTMgKzkwMTksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODU4Miw2ICs5MDkwLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODkzMiw3ICs5NDQ1LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTAzMSwxMiArOTU0NSwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05MDUwLDggKzk1NjQsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTA2OSw4ICs5NTgzLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkxMTYsOCArOTYzMCw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MjQ3LDcgKzk3NjEsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTI2MCwyMiArOTc4MCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTI4Nyw3ICs5ODE0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MzAwLDIyICs5ODMzLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTM2MCwyMCArOTkwMCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk0MzQsNyArMTAwMTcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NDQyLDcgKzEwMDI1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTQ1OCw3ICsxMDA0MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NDgyLDEwICsxMDA2NSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk1NjQsMjMgKzEwMTQ3LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05NjY1LDcgKzEwMjYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTY4NCw5ICsxMDI4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDI2Miw4ICsxMDg1OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDI5NiwxMyArMTA4OTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwMzk0LDcgKzExMDQ5LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExMTkwLDcgKzExODQ1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTExOTMgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExMjM0LDEwICsxMTg4OSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExMjk2LDcgKzExOTUxLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTEyOTkgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExMzQwLDEwICsxMTk5NSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEzMzA5LDEzICsxMzk2NCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMzMwLDE0ICsxMzk5MiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzM3MCwxMiArMTQwMzUsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM0MzAsOCArMTQwOTUsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTEzNDQxLDEyICsxNDExMSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTM0NjIsNyArMTQxMzQsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xMzQ5OCw2ICsxNDE2OSw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTQyNjMsNyArMTQ5MzUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE0MzY2LDE5ICsxNTAzOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNDQwOCw2ICsxNTEwNCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNDQxNyw2ICsxNTExOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTQ1MzEsMTIgKzE1MjM2LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE0NjIzLDkgKzE1MzI4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTQ2NDEsNiArMTUzNDMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE0NjczLDIxMCArMTUzNzgsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQoraW5kZXggODExMTM0YTUwM2IuLmY0MzJmNDYzN2QwIDEwMDc1NQorLS0tIGEvbGQvY29uZmlndXJlCisrKysgYi9sZC9jb25maWd1cmUKK0BAIC02OTEsOCArNjkxLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTgxOSw2ICs4MjIsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNTEyLDYgKzE1MTYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAorICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CitAQCAtNTk2NSw4ICs1OTcxLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTYwMDYsNyArNjAxMiw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTY2OTIsOCArNjY5OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02NzQyLDYgKzY3NDgsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY3NTgsNiArNjgzOCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjkyNiw3ICs3MDExLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTcwODAsNiArNzE2NiwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTcwOTUsOSArNzE5NiwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNzExMyw3ICs3MzY3LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNzEzMywxMSArNzM4NywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC03MTUzLDcgKzc0MTEsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNzE3Miw2ICs3NDMwLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC03MTgzLDEyICs3NDQ1LDEyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworIAorIAorIAorQEAgLTcxOTgsNiArNzQ2MCw2MiBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorQEAgLTc1MzQsOCArNzg1Miw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzU3MSw2ICs3ODg5LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTc2MTIsNiArNzkzMSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03NjIzLDcgKzc5NTQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03NjQ5LDggKzc5ODAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03NjYwLDggKzc5OTEsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03Njk4LDYgKzgwMjksMTkgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03NzE0LDYgKzgwNTgsNDIgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03OTI1LDYgKzgzMDUsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTg0ODgsNiArODk4NSw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04NTU2LDYgKzkwNTUsMTYgQEAgZG9uZQorIAorIAorIAorK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQorK3sKKysgIGNhc2UgJHsyfSBpbgorKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWVfY25mCisrCisrCisrCisgCisgCisgIyBTZXQgb3B0aW9ucworQEAgLTg2ODQsNyArOTE5Myw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04NzczLDcgKzkyODMsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTkwNzEsOCArOTU4MSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtOTIzOCw2ICs5NzQ2LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtOTMwMCw3ICs5ODE0LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTkzNTcsMTMgKzk4NzEsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtOTQyNCw2ICs5OTQyLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTc3NCw3ICsxMDI5Nyw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTk4NzMsMTIgKzEwMzk3LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTk4OTIsOCArMTA0MTYsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTkxMSw4ICsxMDQzNSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05OTU4LDggKzEwNDgyLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTEwMDg5LDcgKzEwNjEzLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEwMTAyLDIyICsxMDYzMiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtMTAxMjksNyArMTA2NjYsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEwMTQyLDIyICsxMDY4NSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTEwMjAxLDIxICsxMDc1MSw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC0xMDI3Niw3ICsxMDg2OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTEwMjg0LDcgKzEwODc3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtMTAzMDAsNyArMTA4OTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtMTAzMjQsMTAgKzEwOTE3LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtMTA0MDYsMjMgKzEwOTk5LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDUwNyw3ICsxMTExMyw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwNTI2LDkgKzExMTMyLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTExMTA0LDggKzExNzEwLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTExMTM4LDEzICsxMTc0NSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTEyMzYsNyArMTE5MDEsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTIwMzIsNyArMTI2OTcsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMjAzNSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTIwNzYsMTAgKzEyNzQxLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTIxMzgsNyArMTI4MDMsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMjE0MSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTIxODIsMTAgKzEyODQ3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTI1NzcsNiArMTMyNDIsNyBAQCAkUk0gLXIgY29uZnRlc3QqCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTEyNTk0LDYgKzEzMjYwLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorICAgZmkKKyAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCisgICBDQz0ke0NYWC0iYysrIn0KKysgIENGTEFHUz0kQ1hYRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgY29tcGlsZXJfQ1hYPSRDQworICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCitAQCAtMTI4NzYsNyArMTM1NDMsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMjg4OSwyMiArMTM1NjIsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKKytmaQorIAorICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAKK0BAIC0xMjkxNyw3ICsxMzU5NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgZWxzZQorIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEyOTMwLDIyICsxMzYxNiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAorK2ZpCisgCisgCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtMTI5ODgsMjkgKzEzNjgxLDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgOzsKKyAKKyAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCistICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKKysJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKysJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcworKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCisrCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisrCSAgIyBEb24ndCB1c2UgcmFubGliCisrCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAgICopCisrCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkJOzsKKysJICAgIGVzYWN+CisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgICBmaScKKysJICA7OworKwkqKQorKwkgICMgZysrCisrCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisrCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisrCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCisrCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworKworKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKysJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKysJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisrCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZWxzZQorKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGZpfgorKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgIGVsc2UKKysJICAgIGxkX3NobGlic19DWFg9bm8KKysJICBmaQorKwkgIDs7CisrCWVzYWMKKysJOzsKKyAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorIAorIAorQEAgLTEzMTE2LDcgKzEzODU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCitAQCAtMTMxODcsMTAgKzEzOTI2LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtMTMyMzEsOSArMTM5NzAsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCitAQCAtMTMzMDMsMjAgKzE0MDQyLDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC0xMzUxMSw3ICsxNDI1MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTEzNTU3LDcgKzE0Mjk2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCisgCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCitAQCAtMTM1OTgsOSArMTQzMzcsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKKyAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAKKyAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCitAQCAtMTM3MzUsNiArMTQ0NzQsMTMgQEAgcHJpdmF0ZToKKyB9OworIF9MVF9FT0YKKyAKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAgYWNfc3RhdHVzPSQ/CitAQCAtMTM3NDgsNyArMTQ0OTQsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKyAKKyAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKy0gICAgY2FzZSAkcCBpbgorKyAgICBjYXNlICR7cHJldn0ke3B9IGluCisgCisgICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KK0BAIC0xMzc1NywxMyArMTQ1MDMsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgCSBwcmV2PSRwCisgCSBjb250aW51ZQorLSAgICAgICBlbHNlCistCSBwcmV2PQorICAgICAgICBmaQorIAorKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKysgICAgICAgICBjYXNlICRwIGluCisrICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgZXNhYworKyAgICAgICBmaQorKyAgICAgICBjYXNlICRwIGluCisrICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKy0JIGNhc2UgJHAgaW4KKy0JIC1MKiB8IC1SKikKKysJIGNhc2UgJHtwcmV2fSBpbgorKwkgLUwgfCAtUikKKyAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KK0BAIC0xMzc4Myw4ICsxNDUzOCwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCisgCSBmaQorICAgICAgICBmaQorKyAgICAgICBwcmV2PQorICAgICAgICA7OworIAorKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKKyAgICAgKi4kb2JqZXh0KQorICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCitAQCAtMTM4MjAsNiArMTQ1NzcsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTEzODU1LDcgKzE0NjEzLDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtMTM5MjAsOCArMTQ2NzgsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMTQwMjYsNiArMTQ3ODIsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJICA7OworIAllc2FjCisgCTs7CisrICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKysJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKKysJOzsKKyAgICAgICBkZ3V4KikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAJICBlYysrKikKK0BAIC0xNDE3OCw3ICsxNDkzOSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCisgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJworQEAgLTE0MjQzLDEwICsxNTAwNCwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTE0MzA0LDYgKzE1MDcyLDggQEAgZmkKKyAKKyAKKyAKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC0xNDQ4MSw2ICsxNTI1MSw3IEBAIGZpCisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CisgCisgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworICAgY2FzZSAkaG9zdF9vcyBpbgorICAgYWl4WzQtOV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC0xNDQ5NSwxNSArMTUyNjYsMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgOzsKKyAgIHB3MzIqKQorICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCistICA7OworKyAgICA7OworICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKKy0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgY2wqKSA7OworKyAgICAqKQorKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworKyAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKyAgICopCisgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICA7OworICAgZXNhYworLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworIAorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1CisgJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KK0BAIC0xNDc2Niw4ICsxNTU0Miw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xNDc5OSwxMyArMTU1NzYsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTE0ODk2LDcgKzE1NzMxLDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTE1MzU1LDYgKzE2MTkwLDcgQEAgZmkKKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyAgIExEQ1hYPSRMRAorICAgTEQ9JGx0X3NhdmVfTEQKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKK0BAIC0xODQ3NywxMyArMTkzMTMsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODQ5OCwxNCArMTkzNDEsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg1MzgsMTIgKzE5Mzg0LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NTgyLDggKzE5NDI4LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKKyBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg2MTAsMTIgKzE5NDU2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCisgaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODY1Myw4ICsxOTQ5OSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTg2NjQsMTIgKzE5NTE1LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xODY4NSw3ICsxOTUzOCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE4NzA3LDggKzE5NTU5LDggQEAgTERfQ1hYIFwKKyByZWxvYWRfZmxhZ19DWFggXAorIGNvbXBpbGVyX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAorIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAorQEAgLTE4NzIwLDcgKzE5NTcyLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKKy1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCisgZXhjbHVkZV9leHBzeW1zX0NYWCBcCisgaW5jbHVkZV9leHBzeW1zX0NYWCBcCisgZmlsZV9saXN0X3NwZWNfQ1hYIFwKK0BAIC0xODc1NCw2ICsxOTYwNSw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTg3NjgsNyArMTk2MjAsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCisgbW9kdWxlX2NtZHNfQ1hYIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCistcHJlbGlua19jbWRzX0NYWDsgZG8KKytwcmVsaW5rX2NtZHNfQ1hYIFwKKytwb3N0bGlua19jbWRzX0NYWDsgZG8KKyAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCisgICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCisgICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKK0BAIC0xOTUzMyw3ICsyMDM4Niw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTk2MzYsMTkgKzIwNDkwLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE5Njc4LDYgKzIwNTU1LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE5Njg3LDYgKzIwNTcwLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xOTgwMSwxMiArMjA2ODcsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTk4OTMsOSArMjA3NzksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xOTkxMSw2ICsyMDc5NCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTk5NTcsMjEwICsyMDg0MywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitAQCAtMjAxODgsMTIgKzIxMDMzLDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAorIAorQEAgLTIwMjgwLDkgKzIxMTI1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAorIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAorIAorQEAgLTIwMjk4LDYgKzIxMTQwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCisgCitkaWZmIC0tZ2l0IGEvbGliY3RmL2NvbmZpZ3VyZSBiL2xpYmN0Zi9jb25maWd1cmUKK2luZGV4IGU1NDkzYjMxNjkxLi45OTc3ZTRmN2E0MiAxMDA3NTUKKy0tLSBhL2xpYmN0Zi9jb25maWd1cmUKKysrKyBiL2xpYmN0Zi9jb25maWd1cmUKK0BAIC02NjMsNiArNjYzLDggQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03NzgsNiArNzgwLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX2xhcmdlZmlsZQorIGVuYWJsZV93ZXJyb3JfYWx3YXlzCitAQCAtMTQzNiw2ICsxNDM5LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CisgCisgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAtNTMyNCw4ICs1MzI5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU0MzYsNyArNTQ0MSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYxMjIsOCArNjEyNyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MTcyLDYgKzYxNzcsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYxODgsNiArNjI2NywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjM1Niw3ICs2NDQwLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY1MTAsNiArNjU5NSwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1MjUsOSArNjYyNSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU0Myw3ICs2Nzk2LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjU2MywxMSArNjgxNiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTgzLDcgKzY4NDAsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjYwMiw2ICs2ODU5LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NjEzLDE2ICs2ODc0LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNjk2NCw4ICs3MjgxLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03MDAxLDYgKzczMTgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzA0Miw2ICs3MzYwLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTcwNTMsNyArNzM4Myw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTcwNzksOCArNzQwOSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTcwOTAsOCArNzQyMCw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcxMjgsNiArNzQ1OCwxNiBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworIAorIAorIAorQEAgLTcxNDQsNiArNzQ4NCw0NSBAQCBmaQorIAorIAorIAorKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTczNTUsNiArNzczNCwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzkxOCw2ICs4NDE0LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgwODMsNyArODU4MSw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MTcyLDcgKzg2NzEsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg0NzAsOCArODk2OSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODYzNyw2ICs5MTM0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODY5OSw3ICs5MjAyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg3NTYsMTMgKzkyNTksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODgyMyw2ICs5MzMwLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTE3Myw3ICs5Njg1LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTI3MiwxMiArOTc4NSwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05MjkxLDggKzk4MDQsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTMxMCw4ICs5ODIzLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkzNTcsOCArOTg3MCw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDg4LDcgKzEwMDAxLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1MDEsMjIgKzEwMDIwLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05NTI4LDcgKzEwMDU0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTQxLDIyICsxMDA3MywyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk2MDEsMjAgKzEwMTQwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTY3NSw3ICsxMDI1Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk2ODMsNyArMTAyNjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05Njk5LDcgKzEwMjgxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk3MjMsMTAgKzEwMzA1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTgwNSwyMyArMTAzODcsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk5MDYsNyArMTA1MDEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05OTI1LDkgKzEwNTIwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNTAzLDggKzExMDk4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNTM3LDEzICsxMTEzMyw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA2MzUsNyArMTEyODksNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE0MzEsNyArMTIwODUsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTQzNCAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE0NzUsMTAgKzEyMTI5LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE1MzcsNyArMTIxOTEsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTU0MCAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE1ODEsMTAgKzEyMjM1LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTM5OTQsMTMgKzE0NjQ4LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTQwMTUsMTQgKzE0Njc2LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE0MDU1LDEyICsxNDcxOSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNDExNSw4ICsxNDc3OSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTQxMjYsMTIgKzE0Nzk1LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNDE0Nyw3ICsxNDgxOCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE0MTgzLDYgKzE0ODUzLDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNDkzOSw3ICsxNTYxMCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTUwNDIsMTkgKzE1NzE0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE1MDg0LDYgKzE1Nzc5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE1MDkzLDYgKzE1Nzk0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNTIwNywxMiArMTU5MTEsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTUyOTksOSArMTYwMDMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNTMxNyw2ICsxNjAxOCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTUzNDksMjEwICsxNjA1MywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKK2luZGV4IDQzNDUzMDA1OWZhLi5lNDVmZGM2OTk4YyAxMDA2NDQKKy0tLSBhL2xpYnRvb2wubTQKKysrKyBiL2xpYnRvb2wubTQKK0BAIC0xLDcgKzEsOCBAQAorICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworQEAgLTEwLDcgKzExLDggQEAKKyAKKyBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTM3LDcgKzM5LDcgQEAgbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKKyAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIF0pCisgCistIyBzZXJpYWwgNTYgTFRfSU5JVAorKyMgc2VyaWFsIDU3IExUX0lOSVQKKyAKKyAKKyAjIExUX1BSRVJFUShWRVJTSU9OKQorQEAgLTkyLDcgKzk0LDggQEAgX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyBBQ19TVUJTVChMSUJUT09MKWRubAorIAorIF9MVF9TRVRVUAorQEAgLTE2NiwxMCArMTY5LDEzIEBAIF9MVF9ERUNMKFtdLCBbZXhlZXh0XSwgWzBdLCBbRXhlY3V0YWJsZSBmaWxlIHN1ZmZpeCAobm9ybWFsbHkgIiIpXSlkbmwKKyBkbmwKKyBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAorK200X3JlcXVpcmUoW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0pZG5sCisrbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdKWRubAorIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAorIG00X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorK200X3JlcXVpcmUoW19MVF9XSVRIX1NZU1JPT1RdKWRubAorIAorIF9MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKKyAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyCitAQCAtMTk5LDcgKzIwNSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtNjMyLDcgKzYzOCw3IEBAIG00X2lmc2V0KFtBQ19QQUNLQUdFX05BTUVdLCBbQUNfUEFDS0FHRV9OQU1FIF0pY29uZmlnLmx0W11kbmwKKyBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQorIGNvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgorIAorLUNvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgVGhpcyBjb25maWcubHQgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisgCitAQCAtNzQ2LDE1ICs3NTIsMTIgQEAgX0xUX0VPRgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworKyAgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworIAorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgXSwKK0BAIC05ODAsNiArOTgzLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JkFTX01FU1NBR0VfTE9HX0ZECisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtMTA2OSwzMCArMTA3NCw0MSBAQCBtNF9kZWZ1bihbX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVNdLAorICAgZmkKKyBdKQorIAorLSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbVEFHTkFNRV0pCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCisgIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCisgIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCisgIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCisgIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZworICMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCisrIyBTdG9yZSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBkaWZmZXJlbnQgY29tcGlsZXJzIGZvciBlYWNoIFRBR05BTUUuCisrIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgorIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCisgW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCistQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtBQ19MQU5HX1BST0dSQU1dKV0sWworLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maV0sW10pCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisraWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCisrICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWworKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH1dJworKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmldLFtdKQorKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrICBdKQorKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCisrZmkKKyBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAKKyAKK0BAIC0xMTE3LDcgKzExMzMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIAorIEFDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtMTE2MSw2ICsxMTc3LDM5IEBAIF9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKKyBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKKyAKKyAKKysjIF9MVF9XSVRIX1NZU1JPT1QKKysjIC0tLS0tLS0tLS0tLS0tLS0KKytBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCisrW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQorK0FDX0FSR19XSVRIKFtsaWJ0b29sLXN5c3Jvb3RdLAorK1sgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAorK1tdLCBbd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm9dKQorKworK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKKytkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfbGlidG9vbF9zeXNyb290fV0pCisrICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKKysgICA7OworK2VzYWMKKysKKysgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQorK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAorK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKKysKKyAjIF9MVF9FTkFCTEVfTE9DSworICMgLS0tLS0tLS0tLS0tLS0tCisgbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCitAQCAtMTMyMCwxNCArMTM2OSw0NyBAQCBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyBdKSMgX0xUX0VOQUJMRV9MT0NLCisgCisgCisrIyBfTFRfUFJPR19BUgorKyMgLS0tLS0tLS0tLS0KKyttNF9kZWZ1bihbX0xUX1BST0dfQVJdLAorK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCisrX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisrICBbbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKKysgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKyAgICAgXSkKKysgIF0pCisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCisrICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKKytdKSMgX0xUX1BST0dfQVIKKysKKysKKyAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCistW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKy1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKy1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQorK1tfTFRfUFJPR19BUgorIAorIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQorIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgorQEAgLTE2MjMsNyArMTcwNSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKKytbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xNjY3LDEwICsxNzQ5LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMjIxMCw4ICsyMjkyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTIyNDQsMTMgKzIzMjcsNzEgQEAgbTRfaWYoWyQxXSwgW10sWworICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0yMzQyLDcgKzI0ODMsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMjk1MCw2ICszMDkxLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC0zMDE2LDcgKzMxNjIsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtMzE2Nyw2ICszMzE0LDIxIEBAIHRwZiopCisgICA7OworIGVzYWMKKyBdKQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTMxNzQsNyArMzMzNiwxMSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAorICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQorIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCistICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCisrICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKytfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKKysgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKytfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKKysgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCisgXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKKyAKKyAKK0BAIC0zMjc3LDYgKzM0NDMsNjcgQEAgZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQorIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQorIAorKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQorKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgorKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKKyttNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAorK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCisrbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCisrbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCisrQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAorK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAorK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKytdKQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKytfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAorKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCisrXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisrCisrCisrIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKKyttNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCisrW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKytBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCisrICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCpdKQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAorK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisrCisgCisgIyBMVF9MSUJfTQorICMgLS0tLS0tLS0KK0BAIC0zNDAzLDggKzM2MzAsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTM0NDAsNiArMzY2Nyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC0zNDczLDYgKzM3MDEsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtMzQ4NCw3ICszNzI0LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgorIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgCWZpCitAQCAtMzU1MSw2ICszNzkxLDEzIEBAIGVsc2UKKyAgIEFDX01TR19SRVNVTFQob2spCisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKKyAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAorQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKKyBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKKyAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCisgICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCisrX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKKysgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKKyBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKyAKKyAKK0BAIC0zNTcyLDcgKzM4MjEsNiBAQCBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorIAorLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQorIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCisgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorQEAgLTM2NzgsNiArMzkyNiwxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAkgIDs7CisgCWVzYWMKKyAJOzsKKysgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisrCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisrCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKysJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKysJOzsKKyAgICAgICBkZ3V4KikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAJICBlYysrKikKK0BAIC0zODMwLDcgKzQwODQsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAk7OworICAgICAgIHNvbGFyaXMqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorLQkgIENDKikKKysJICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKK0BAIC00MDUzLDYgKzQzMDcsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisrCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTQxMTUsNyArNDM3NSw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CitAQCAtNDE3Miw5ICs0NDMyLDExIEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCisgICAgIDs7CisgZXNhYworLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisrCisrQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKKysgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKKytfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQorIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtNDE5Myw2ICs0NDU1LDggQEAgZmkKKyBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCisgCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQorIAorK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtNDIxMyw2ICs0NDc3LDcgQEAgX0xUX1RBR0RFQ0woW2xpbmtfc3RhdGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9zdGF0aWNdLCBbMV0sCisgbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKKyBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCisgQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCitAQCAtNDIyMSw2ICs0NDg2LDcgQEAgbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCisgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQorIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCisgICBjYXNlICRob3N0X29zIGluCisgICBhaXhbWzQtOV1dKikKKyAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCitAQCAtNDIzNSwxNSArNDUwMSwyMCBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworICAgICA7OworICAgcHczMiopCisgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKKy0gIDs7CisrICAgIDs7CisgICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICBjbCopIDs7CisrICAgICopCisrICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCisrICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworICAgKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIDs7CisgICBlc2FjCistICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyBdLCBbCisgICBydW5wYXRoX3Zhcj0KKyAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK0BAIC00NDExLDcgKzQ2ODIsOCBAQCBfTFRfRU9GCisgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC00NTEwLDEyICs0NzgyLDEyIEBAIF9MVF9FT0YKKyAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTQ1MjksOCArNDgwMSw4IEBAIF9MVF9FT0YKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTQ1NDgsOCArNDgyMCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICBmaQorQEAgLTQ1OTUsOCArNDg2Nyw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICBmaQorQEAgLTQ3MjYsNyArNDk5OCw3IEBAIF9MVF9FT0YKKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICBlbHNlCitAQCAtNDczNyw3ICs1MDA5LDcgQEAgX0xUX0VPRgorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKyAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCitAQCAtNDc4MSwyMCArNTA1Myw2MyBAQCBfTFRfRU9GCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKy0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisrCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC00ODI4LDcgKzUxNDMsNyBAQCBfTFRfRU9GCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KK0BAIC00ODM2LDcgKzUxNTEsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtNDg1Miw3ICs1MTY3LDcgQEAgX0xUX0VPRgorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC00ODc2LDEwICs1MTkxLDEwIEBAIF9MVF9FT0YKKyAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtNDkyNiwxNiArNTI0MSwzMSBAQCBfTFRfRU9GCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbaW50IGZvbyh2b2lkKSB7fV0pXSwKKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0gICAgICAgICkKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKKysJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIEFDX0xJTktfSUZFTFNFKAorKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKKysJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisrCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dLAorKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dKV0pXSwKKysJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCisrCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKKyAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQorIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKKyAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCistX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAorLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKKyBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKKyAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCisgX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAorQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAorICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKKyBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKKyAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKKytfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCisrICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKKyBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKKyBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK0BAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCisgbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCisgaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKKyAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CisgICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgorQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICBmaQorICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgIENDPSR7Q1hYLSJjKysifQorKyAgQ0ZMQUdTPSRDWFhGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAorICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICBlbHNlCisgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgIDs7CisgCisgICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKysJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJICAjIERvbid0IHVzZSByYW5saWIKKysJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICAgKikKKysJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCQk7OworKwkgICAgZXNhY34KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisrCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICAgIGZpJworKwkgIDs7CisrCSopCisrCSAgIyBnKysKKysJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKysJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysKKysJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisrCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisrCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGVsc2UKKysJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBmaX4KKysJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICBlbHNlCisrCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisrCSAgZmkKKysJICA7OworKwllc2FjCisrCTs7CisgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQorIAk7OworQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCitAQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCitAQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKKyAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKK0BAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJworIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisgCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworIAorIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKyAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KK0BAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworICAgTERDWFg9JExECisgICBMRD0kbHRfc2F2ZV9MRAorICAgR0NDPSRsdF9zYXZlX0dDQworQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAorIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCisgCisgCisrIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjCisrIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisrIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCisrIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCisrbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKKytBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQorK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKKytmdW5jX3N0cmlwbmFtZV9jbmYgKCkKKyt7CisrICBjYXNlICR7Mn0gaW4KKysgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrCisgIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKK0BAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAorICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKKyBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisrQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCisgIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKKyBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CisgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KK0BAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7CisgfTsKKyBfTFRfRU9GCisgXSkKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KK0BAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworIAorICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworLSAgICBjYXNlICRwIGluCisrICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAKKyAgICAgLUwqIHwgLVIqIHwgLWwqKQorICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAJIHByZXY9JHAKKyAJIGNvbnRpbnVlCistICAgICAgIGVsc2UKKy0JIHByZXY9CisgICAgICAgIGZpCisgCisrICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisrICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorKyAgICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgIGZpCisrICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorLQkgY2FzZSAkcCBpbgorLQkgLUwqIHwgLVIqKQorKwkgY2FzZSAke3ByZXZ9IGluCisrCSAtTCB8IC1SKQorIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKyAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisgCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKKyAJIGZpCisgICAgICAgIGZpCisrICAgICAgIHByZXY9CisgICAgICAgIDs7CisgCisrICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cworICAgICAqLiRvYmpleHQpCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KK0BAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgbTRfaWYoWyQxXSwgW0NYWF0sCitAQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0iJENDIgorICAgbHRfc2F2ZV9HQ0M9JEdDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgQ0M9JHtGNzctImY3NyJ9CisrICBDRkxBR1M9JEZGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgCisgICBHQ0M9JGx0X3NhdmVfR0NDCisgICBDQz0iJGx0X3NhdmVfQ0MiCisrICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcworIAorIEFDX0xBTkdfUE9QCitAQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSIkQ0MiCisgICBsdF9zYXZlX0dDQz0kR0NDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBDQz0ke0ZDLSJmOTUifQorKyAgQ0ZMQUdTPSRGQ0ZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CisgCitAQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgR0NDPSRsdF9zYXZlX0dDQworLSAgQ0M9IiRsdF9zYXZlX0NDIgorKyAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCisgCisgQUNfTEFOR19QT1AKK0BAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorLWx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NDPSRDQworK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyBsdF9zYXZlX0dDQz0kR0NDCisgR0NDPXllcworIENDPSR7R0NKLSJnY2oifQorK0NGTEFHUz0kR0NKRkxBR1MKKyBjb21waWxlcj0kQ0MKKyBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitAQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKKyBBQ19MQU5HX1JFU1RPUkUKKyAKKyBHQ0M9JGx0X3NhdmVfR0NDCistQ0M9IiRsdF9zYXZlX0NDIgorK0NDPSRsdF9zYXZlX0NDCisrQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCisgCisgCitAQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorIGx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgbHRfc2F2ZV9HQ0M9JEdDQworIEdDQz0KKyBDQz0ke1JDLSJ3aW5kcmVzIn0KKytDRkxBR1M9CisgY29tcGlsZXI9JENDCisgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQorIAorIEdDQz0kbHRfc2F2ZV9HQ0MKKyBBQ19MQU5HX1JFU1RPUkUKKy1DQz0iJGx0X3NhdmVfQ0MiCisrQ0M9JGx0X3NhdmVfQ0MKKytDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgXSkjIF9MVF9MQU5HX1JDX0NPTkZJRworIAorIAorQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCisgQUNfU1VCU1QoW09CSkRVTVBdKQorIF0pCisgCisrIyBfTFRfREVDTF9ETExUT09MCisrIyAtLS0tLS0tLS0tLS0tLS0tCisrIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCisrbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAorK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQorK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKytfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCisrQUNfU1VCU1QoW0RMTFRPT0xdKQorK10pCisgCisgIyBfTFRfREVDTF9TRUQKKyAjIC0tLS0tLS0tLS0tLQorQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAorICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKKyAKKyAKKy0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KKy1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKKy1bY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKysjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KKyttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCisrW2RubCB7Cisrc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCisrJDEgKClcCisre1wKKyttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytdKQorIAorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIAorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CisrIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCisrIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KKyttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCisrW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKysgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisrICAgIGVzYWNdKQorKworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisrCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKysgICAgZXNhYworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKyAKKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKKysgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKyAKKy1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCistZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCisgCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQorIAorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworKyAgICBlc2FjXSkKKyAKKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKKyAKKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQorIAorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCisrZmkKKyAKKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKKy19CisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorIAorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAorKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAorKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCisgCistX0xUX0VPRgorLWVzYWMKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisgCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKKytmaQorK10pCisgCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiRbMV0rPVwkWzJdIgorLX0KKy1fTFRfRU9GCisrIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKysjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKysjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KKyttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAorK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisrQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKKytBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCisrQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCisrW2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKKy19CistCistX0xUX0VPRgorKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgZXNhYworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworK10pCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKKytfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKKysgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisrCisrQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKKytBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKKytbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisgXSkKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQorK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAorK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjODVkNzAuLjcwZTg1NmUwNjU5IDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC0xLDEwICsxLDkgQEAKKy0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgorIAorLSMgbGlidG9vbCAoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQorKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNAorICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKyAKKyAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKy0jIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIAorQEAgLTM4LDcgKzM3LDYgQEAKKyAjICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisgIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyAjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCistIyAgICAgICAtLW5vLWZpbmlzaCAgICAgICAgICBsZXQgaW5zdGFsbCBtb2RlIGF2b2lkIGZpbmlzaCBjb21tYW5kcworICMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworICMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworICMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKK0BAIC03MSwxNyArNjksMTkgQEAKKyAjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQworICMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUworICMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQorLSMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCisrIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQKKyAjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCisgIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgorICMKKyAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KKysjIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCisrIyBHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4KKyAKKyBQUk9HUkFNPWxpYnRvb2wKKyBQQUNLQUdFPWxpYnRvb2wKKy1WRVJTSU9OPTIuMi43YQorLVRJTUVTVEFNUD0iIDEuMzEzNCAyMDA5LTExLTI5IgorLXBhY2thZ2VfcmV2aXNpb249MS4zMTM0CisrVkVSU0lPTj0yLjQKKytUSU1FU1RBTVA9IiIKKytwYWNrYWdlX3JldmlzaW9uPTEuMzI5MworIAorICMgQmUgQm91cm5lIGNvbXBhdGlibGUKKyBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KK0BAIC0xMDYsOSArMTA2LDYgQEAgX0xURUNIT19FT0YnCisgfQorIAorICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCistIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KKy0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAorLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KKyBsdF91c2VyX2xvY2FsZT0KKyBsdF9zYWZlX2xvY2FsZT0KKyBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKK0BAIC0xMjEsMTUgKzExOCwxMyBAQCBkbworIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKKyAJZmkiCisgZG9uZQorK0xDX0FMTD1DCisrTEFOR1VBR0U9QworK2V4cG9ydCBMQU5HVUFHRSBMQ19BTEwKKyAKKyAkbHRfdW5zZXQgQ0RQQVRICisgCisgCistCistCistCistCistCisgIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCisgIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyAjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAorQEAgLTE0MCw3ICsxMzUsNyBAQCBwcm9ncGF0aD0iJDAiCisgCisgCisgOiAke0NQPSJjcCAtZiJ9CistOiAke0VDSE89JGFzX2VjaG99CisrdGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9CisgOiAke0VHUkVQPSIvYmluL2dyZXAgLUUifQorIDogJHtGR1JFUD0iL2Jpbi9ncmVwIC1GIn0KKyA6ICR7R1JFUD0iL2Jpbi9ncmVwIn0KK0BAIC0xNDksNyArMTQ0LDcgQEAgcHJvZ3BhdGg9IiQwIgorIDogJHtNS0RJUj0ibWtkaXIifQorIDogJHtNVj0ibXYgLWYifQorIDogJHtSTT0icm0gLWYifQorLTogJHtTRUQ9Ii9tb3VudC9lbmRvci93aWxkZW5odS9sb2NhbC14ODZfNjQvYmluL3NlZCJ9CisrOiAke1NFRD0iL2Jpbi9zZWQifQorIDogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQorIDogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQorIAorQEAgLTE2OSw2ICsxNjQsMjcgQEAgSUZTPSIgCSRsdF9ubCIKKyBkaXJuYW1lPSJzLC9bXi9dKiQsLCIKKyBiYXNlbmFtZT0icyxeLiovLCwiCisgCisrIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisrIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorK2Z1bmNfZGlybmFtZSAoKQorK3sKKysgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisrICAgIGVsc2UKKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisrICAgIGZpCisrfSAjIGZ1bmNfZGlybmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfYmFzZW5hbWUgZmlsZQorK2Z1bmNfYmFzZW5hbWUgKCkKKyt7CisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorK30gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCisgIyBjYWxsOgorQEAgLTE4MywxNyArMTk5LDMxIEBAIGJhc2VuYW1lPSJzLF4uKi8sLCIKKyAjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisgeworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKKy19CisrICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisrICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKKysgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorKyAgICBlbHNlCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorKyAgICBmaQorKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKKyt9ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisrIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKysjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKysjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisrIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorK2Z1bmNfc3RyaXBuYW1lICgpCisreworKyAgICBjYXNlICR7Mn0gaW4KKysgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgICAgZXNhYworK30gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKyAKKy0jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KKyAKKyAjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCisgcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCitAQCAtMzc2LDYgKzQwNiwxNSBAQCBzZWRfcXVvdGVfc3Vic3Q9J3MvXChbYCIkXFxdXCkvXFxcMS9nJworICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKKyAKKysjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQorKyMgc3RyaW5nIGxpdGVyYWxseS4KKytzZWRfbWFrZV9saXRlcmFsX3JlZ2V4PSdzLFtdLlteJFxcKlwvXSxcXCYsZycKKysKKysjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAorKyMgd2hpY2ggY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCisrIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCisrbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworKworICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCisgIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJworICMgaW4gaW5wdXQgdG8gZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20gZXhwYW5zaW9uLgorQEAgLTQwNCw3ICs0NDMsNyBAQCBvcHRfd2FybmluZz06CisgIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCisgZnVuY19lY2hvICgpCisgeworLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKKysgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKKyB9CisgCisgIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCitAQCAtNDMwLDE0ICs0NjksMTQgQEAgZnVuY19lY2hvX2FsbCAoKQorICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KKyBmdW5jX2Vycm9yICgpCisgeworLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKKysgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKKyB9CisgCisgIyBmdW5jX3dhcm5pbmcgYXJnLi4uCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCisgZnVuY193YXJuaW5nICgpCisgeworLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCisrICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorIAorICAgICAjIGJhc2ggYnVnIGFnYWluOgorICAgICA6CitAQCAtNjU2LDE5ICs2OTUsMzUgQEAgZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCisgICAgIGZpCisgfQorIAorLQorLQorKyMgZnVuY190cl9zaAorKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCisrIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCisrIyBub3QgaW4gdGhlIHNldCBhLXpBLVowLTlfIGFyZSByZXBsYWNlZCB3aXRoICdfJy4gRnVydGhlciwKKysjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgorK2Z1bmNfdHJfc2ggKCkKKyt7CisrICBjYXNlICQxIGluCisrICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCisrICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAncy9eXChbMC05XVwpL19cMS87IHMvW15hLXpBLVowLTlfXS9fL2cnYAorKyAgICA7OworKyAgKiApCisrICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCisrICAgIDs7CisrICBlc2FjCisrfQorIAorIAorICMgZnVuY192ZXJzaW9uCisgIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisgZnVuY192ZXJzaW9uICgpCisgeworKyAgICAkb3B0X2RlYnVnCisrCisgICAgICRTRUQgLW4gJy8oQykvIWIgZ28KKyAJOm1vcmUKKyAJL1wuLyF7CisgCSAgTgorLQkgIHMvXG4jIC8vCisrCSAgcy9cbiMgLyAvCisgCSAgYiBtb3JlCisgCX0KKyAJOmdvCitAQCAtNjg1LDcgKzc0MCw5IEBAIGZ1bmNfdmVyc2lvbiAoKQorICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIGZ1bmNfdXNhZ2UgKCkKKyB7CistICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi1oLyB7CisrICAgICRvcHRfZGVidWcKKysKKysgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKKyAgICAgICAgIHMvXiMgLy8KKyAJcy9eIyAqJC8vCisgCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KK0BAIC03MDEsNyArNzU4LDEwIEBAIGZ1bmNfdXNhZ2UgKCkKKyAjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCisgZnVuY19oZWxwICgpCisgeworKyAgICAkb3B0X2RlYnVnCisrCisgICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7CisrCTpwcmludAorICAgICAgICAgcy9eIyAvLworIAlzL14jICokLy8KKyAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgorQEAgLTcxNCw3ICs3NzQsMTEgQEAgZnVuY19oZWxwICgpCisgCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworIAlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKyAJcAorLSAgICAgfScgPCAiJHByb2dwYXRoIgorKwlkCisrICAgICB9CisrICAgICAvXiMgLiogaG9tZSBwYWdlOi9iIHByaW50CisrICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKKysgICAgICcgPCAiJHByb2dwYXRoIgorICAgICByZXQ9JD8KKyAgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgICAgICAgZXhpdCAkcmV0CitAQCAtNzI2LDEyICs3OTAsMzkgQEAgZnVuY19oZWxwICgpCisgIyBleGl0X2NtZC4KKyBmdW5jX21pc3NpbmdfYXJnICgpCisgeworLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKKysgICAgJG9wdF9kZWJ1ZworKworKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCisgICAgIGV4aXRfY21kPWV4aXQKKyB9CisgCistZXhpdF9jbWQ9OgorIAorKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKKysjIFNldCBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcgc2hlbGwKKysjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKKyt7CisrICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCisrICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJworKworKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAorKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAorK30gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAorKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKKysjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCisrZnVuY19zcGxpdF9sb25nX29wdCAoKQorK3sKKysgICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCisrICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCisrCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworK2V4aXRfY21kPToKKyAKKyAKKyAKK0BAIC03NDEsMjYgKzgzMiw2NCBAQCBtYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCisgbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCisgCisgIyBHbG9iYWwgdmFyaWFibGVzLgorLSMgJG1vZGUgaXMgdW5zZXQKKyBub25vcHQ9CistZXhlY3V0ZV9kbGZpbGVzPQorIHByZXNlcnZlX2FyZ3M9CisgbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgorIG8ybG89InMvXFwuJHtvYmpleHR9XCQvLmxvLyIKKyBleHRyYWN0ZWRfYXJjaGl2ZXM9CisgZXh0cmFjdGVkX3NlcmlhbD0wCisgCistb3B0X2RyeV9ydW49ZmFsc2UKKy1vcHRfZmluaXNoPToKKy1vcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKKy1vcHRfc2lsZW50PWZhbHNlCistb3B0X2RlYnVnPToKKy0KKyAjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKKyAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKKyAjIGxlZnQgb3ZlciBieSBzaGVsbHMuCisgZXhlY19jbWQ9CisgCisrIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKysjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKytmdW5jX2FwcGVuZCAoKQorK3sKKysgICAgZXZhbCAiJHsxfT1cJCR7MX1cJHsyfSIKKyt9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCisrIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKysjIGJ5IGEgc3BhY2UuCisrZnVuY19hcHBlbmRfcXVvdGVkICgpCisreworKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorKyAgICBldmFsICIkezF9PVwkJHsxfVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCisrZnVuY19hcml0aCAoKQorK3sKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAorK30gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19sZW4gc3RyaW5nCisrIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorK2Z1bmNfbGVuICgpCisreworKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiR7MX0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKyt9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2xvMm8gb2JqZWN0CisrZnVuY19sbzJvICgpCisreworKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCisrfSAjIGZ1bmNfbG8ybyBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorK2Z1bmNfeGZvcm0gKCkKKyt7CisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorK30gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworICMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgorICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKKyAjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgorQEAgLTg1MCwxMzAgKzk3OSwyMDQgQEAgZnVuY19lbmFibGVfdGFnICgpCisgICBlc2FjCisgfQorIAorLSMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCistIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KKysjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorKyMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKysjIHJlbGVhc2Ugb2YgbGlidG9vbC4KKytmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKKyB7CisrICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KKysgICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKysgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKysgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisrJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKyskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICAgIGVsc2UKKysgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisrJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCisrJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgICBmaQorKyAgICBlbHNlCisrICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKKyskcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgorKyRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgIGZpCisgCistICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKy0gIGNhc2UgJDEgaW4KKy0gIGNsZWFufGNsZWF8Y2xlfGNsKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGxpbmt8bGlufGxpfGwpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBlc2FjCisrICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKysgIGZpCisrfQorKworKworKyMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorK2Nhc2UgJDEgaW4KKytjbGVhbnxjbGVhfGNsZXxjbCkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2ZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisraW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytsaW5rfGxpbnxsaXxsKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisrICA7OworK3VuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZXNhYworIAorLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6CistICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCisrCisrCisrIyBPcHRpb24gZGVmYXVsdHM6Cisrb3B0X2RlYnVnPToKKytvcHRfZHJ5X3J1bj1mYWxzZQorK29wdF9jb25maWc9ZmFsc2UKKytvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKKytvcHRfZmVhdHVyZXM9ZmFsc2UKKytvcHRfZmluaXNoPWZhbHNlCisrb3B0X2hlbHA9ZmFsc2UKKytvcHRfaGVscF9hbGw9ZmFsc2UKKytvcHRfc2lsZW50PToKKytvcHRfdmVyYm9zZT06Cisrb3B0X3NpbGVudD1mYWxzZQorK29wdF92ZXJib3NlPWZhbHNlCisrCisrCisrIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCisrIyBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgLS12ZXJzaW9uJyBoYXBwZW4gYXMgcXVpY2tseSBhcyB3ZSBjYW4uCisreworKyAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZworKyAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgb3B0PSIkMSIKKyAgICAgc2hpZnQKKy0KKyAgICAgY2FzZSAkb3B0IGluCistICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKKy0KKy0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKKyAJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCistCQkJb3B0X2RlYnVnPSdzZXQgLXgnCisgCQkJJG9wdF9kZWJ1ZworIAkJCTs7CistCistICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhaworLQkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKKy0JCQlzaGlmdAorKyAgICAgIC0tZHJ5LXJ1bnwtLWRyeXJ1bnwtbikKKysJCQlvcHRfZHJ5X3J1bj06CisgCQkJOzsKKy0KKy0gICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKKy0gICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OworLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKKy0gICAgICAtLW5vLWZpbmlzaCkJb3B0X2ZpbmlzaD1mYWxzZQkJCQk7OworLQorLSAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhaworLQkJCWNhc2UgJDEgaW4KKy0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6CistCQkJICBjbGVhbikJOzsKKy0JCQkgIGNvbXBpbGUpCTs7CistCQkJICBleGVjdXRlKQk7OworLQkJCSAgZmluaXNoKQk7OworLQkJCSAgaW5zdGFsbCkJOzsKKy0JCQkgIGxpbmspCQk7OworLQkJCSAgcmVsaW5rKQk7OworLQkJCSAgdW5pbnN0YWxsKQk7OworLQorLQkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCistCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAorLQkJCSAgICAgYnJlYWsKKy0JCQkgICAgIDs7CistCQkgICAgICAgIGVzYWMKKy0KKy0JCQltb2RlPSIkMSIKKysgICAgICAtLWNvbmZpZykKKysJCQlvcHRfY29uZmlnPToKKytmdW5jX2NvbmZpZworKwkJCTs7CisrICAgICAgLS1kbG9wZW58LWRsb3BlbikKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF9kbG9wZW49IiR7b3B0X2Rsb3Blbiskb3B0X2Rsb3BlbgorK30kb3B0YXJnIgorIAkJCXNoaWZ0CisgCQkJOzsKKy0KKyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7CistCistICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKy0JCQlvcHRfc2lsZW50PToKKy0JCQlvcHRfdmVyYm9zZT1mYWxzZQorKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06CisgCQkJOzsKKy0KKy0gICAgICAtLW5vLXF1aWV0fC0tbm8tc2lsZW50KQorLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCistCQkJb3B0X3NpbGVudD1mYWxzZQorKyAgICAgIC0tZmVhdHVyZXMpCisrCQkJb3B0X2ZlYXR1cmVzPToKKytmdW5jX2ZlYXR1cmVzCisgCQkJOzsKKy0KKy0gICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tZmluaXNoKQorKwkJCW9wdF9maW5pc2g9OgorK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKysJCQk7OworKyAgICAgIC0taGVscCkKKysJCQlvcHRfaGVscD06CisrCQkJOzsKKysgICAgICAtLWhlbHAtYWxsKQorKwkJCW9wdF9oZWxwX2FsbD06Cisrb3B0X2hlbHA9JzogaGVscC1hbGwnCisrCQkJOzsKKysgICAgICAtLW1vZGUpCisrCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfbW9kZT0iJG9wdGFyZyIKKytjYXNlICRvcHRhcmcgaW4KKysgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6CisrICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworKworKyAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCisrICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorKyAgICAgZXhpdF9jbWQ9ZXhpdAorKyAgICAgYnJlYWsKKysgICAgIDs7CisrZXNhYworKwkJCXNoaWZ0CisrCQkJOzsKKysgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQorIAkJCW9wdF9zaWxlbnQ9ZmFsc2UKKy0JCQlvcHRfdmVyYm9zZT06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisgCQkJOzsKKy0KKy0gICAgICAtLW5vLXZlcmJvc2UpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1uby12ZXJib3NlKQorIAkJCW9wdF92ZXJib3NlPWZhbHNlCisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisgCQkJOzsKKy0KKy0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhaworLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCistCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCisrICAgICAgLS1zaWxlbnR8LS1xdWlldCkKKysJCQlvcHRfc2lsZW50PToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKysgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCisrCQkJOzsKKysgICAgICAtLXZlcmJvc2V8LXYpCisrCQkJb3B0X3ZlcmJvc2U9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorK29wdF9zaWxlbnQ9ZmFsc2UKKysJCQk7OworKyAgICAgIC0tdGFnKQorKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X3RhZz0iJG9wdGFyZyIKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCAkb3B0YXJnIgorK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKKyAJCQlzaGlmdAorIAkJCTs7CisgCisrICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OworKyAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OworKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7CisrCisgICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKKy0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKKy0JCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKKy0JCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KKysgICAgICAtLSo9KikKKysJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgorKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9CisgCQkJc2hpZnQKKyAJCQk7OworIAorLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7CistICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKKy0gICAgICAtLWhlbHAtYWxsKQlvcHRfaGVscD0nOiBoZWxwLWFsbCcJCQkJOzsKKy0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKKy0KKy0gICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OworLQorLSAgICAgICopCQlub25vcHQ9IiRvcHQiCistCQkJYnJlYWsKKysgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgorKyAgICAgIC1cPyp8LWgqfC1uKnwtdiopCisrCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCisrCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKysJCQlzaGlmdAorIAkJCTs7CisrCisrICAgICAgLS0pCQlicmVhawkJCQkJOzsKKysgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OworKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgICBlc2FjCisgICBkb25lCisgCisrICAjIFZhbGlkYXRlIG9wdGlvbnM6CisrCisrICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAorKyAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisrICAgIG5vbm9wdD0iJG9wdCIKKysgICAgc2hpZnQKKysgIGZpCisrCisrICAjIHByZXNlcnZlIC0tZGVidWcKKysgIHRlc3QgIiRvcHRfZGVidWciID0gOiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKKyAKKyAgIGNhc2UgJGhvc3QgaW4KKyAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKiB8ICpzb2xhcmlzMiogKQorQEAgLTk4MSw4MiArMTE4NCw0NCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKKyAgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgICA7OworICAgICAqKQorLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcworKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcworICAgICAgIDs7CisgICBlc2FjCisgCistICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKKy0gICMgYW55dGhpbmcgd2FzIHdyb25nLgorLSAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKKy19CisrICAkb3B0X2hlbHAgfHwgeworKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CisrICAgIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorIAorLSMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCistIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQorLSMgcmVsZWFzZSBvZiBsaWJ0b29sLgorLWZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQorLXsKKy0gIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorLSAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorLSAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKy0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCistJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCistICAgICAgZWxzZQorLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKy0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCistJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKy0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorLSAgICAgIGZpCistICAgIGVsc2UKKy0gICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAorLSRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCistJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKysgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCisrICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICAgICBmaQorIAorLSAgICBleGl0ICRFWElUX01JU01BVENICistICBmaQorLX0KKy0KKysgICAgIyBEYXJ3aW4gc3Vja3MKKysgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKyAKKy0jIyAtLS0tLS0tLS0tLSAjIworLSMjICAgIE1haW4uICAgICMjCistIyMgLS0tLS0tLS0tLS0gIyMKKy0KKy0kb3B0X2hlbHAgfHwgeworLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCistCistICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKy0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorLSAgZmkKKysgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKysgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgIiRvcHRfbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKKysgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKKysgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKysgICAgZmkKKyAKKy0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgorKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCisrICAgIGdlbmVyaWNfaGVscD0iJGhlbHAiCisrICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorKyAgfQorIAorIAorLSAgIyBEYXJ3aW4gc3Vja3MKKy0gIGV2YWwgInN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIiIKKysgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQKKysgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCisrfQorIAorIAorLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKy0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCistICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKKy0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCistICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorLSAgZmkKKyAKKy0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKy0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCistICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorLX0KKyAKKysjIyAtLS0tLS0tLS0tLSAjIworKyMjICAgIE1haW4uICAgICMjCisrIyMgLS0tLS0tLS0tLS0gIyMKKyAKKyAjIGZ1bmNfbGFsaWJfcCBmaWxlCisgIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgorQEAgLTExMjEsMTIgKzEyODYsOSBAQCBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgKCkKKyAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgorIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKKyB7CistICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCistICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCistCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKy0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKy0gICAgZmkKKysgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKysgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgorIH0KKyAKKyAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQorQEAgLTExNDksNyArMTMxMSw3IEBAIGZ1bmNfZXhlY3V0ZV9jbWRzICgpCisgICAgIHNhdmVfaWZzPSRJRlM7IElGUz0nficKKyAgICAgZm9yIGNtZCBpbiAkMTsgZG8KKyAgICAgICBJRlM9JHNhdmVfaWZzCistICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgorKyAgICAgIGV2YWwgY21kPVwiJGNtZFwiCisgICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCisgICAgIGRvbmUKKyAgICAgSUZTPSRzYXZlX2lmcworQEAgLTExNzIsNiArMTMzNCwzNyBAQCBmdW5jX3NvdXJjZSAoKQorIH0KKyAKKyAKKysjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKKysjIFJlcGxhY2UgYSBsZWFkaW5nID0gaW4gUEFUSCB3aXRoIGEgc3lzcm9vdC4gIFN0b3JlIHRoZSByZXN1bHQgaW50bworKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKKyt7CisrICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKKysgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgorKyAgPSopCisrICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKysgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICA7OworKyAgZXNhYworK30KKysKKysjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKKysjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAorKyMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KKytmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQorK3sKKysgIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgorKyAgPyo6IiRsdF9zeXNyb290IiopCisrICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgorKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Ij0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKyAgICA7OworKyAgKikKKysgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KKysgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCisrICAgIDs7CisrICBlc2FjCisrfQorKworICMgZnVuY19pbmZlcl90YWcgYXJnCisgIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCisgIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KK0BAIC0xMTg0LDggKzEzNzcsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQorICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgorICAgICAgIENDX3F1b3RlZD0KKyAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KKy0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCUNDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCisgICAgICAgZG9uZQorICAgICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKyAgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKK0BAIC0xMjA0LDggKzEzOTYsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQorIAkgICAgQ0NfcXVvdGVkPQorIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCisgCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KKy0JICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKKyAJICAgIGRvbmUKKyAJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKyAJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAorQEAgLTEyNzQsNiArMTQ2NSw0ODYgQEAgRU9GCisgICAgIH0KKyB9CisgCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrCisrIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRworKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCisrIyBhbmQgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhCisrIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQorKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCisrIworKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCisrIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCisrZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCisrICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCisrICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorKyAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGggZXJyb3IgY29kZSBvZgorKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKysgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXB9IjsgdGhlbgorKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8CisrICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisrICAgIGVsc2UKKysgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KKysgICAgZmkKKysgIGZpCisrfQorKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRworKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LCBhbmQKKysjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKKysjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKKysjICRQQVRILiBBc3N1bWVzIEFSRyBoYXMgbm8gbGVhZGluZyBvciB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzLgorKyMKKysjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdC4KKysjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcworKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgorK2Z1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCisrICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIG9sZElGUz0kSUZTCisrICAgIElGUz06CisrICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCisrICAgICAgSUZTPSRvbGRJRlMKKysgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgorKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCisrICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCisrICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgICAgICBlbHNlCisrICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0ICI7JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICBkb25lCisrICAgIElGUz0kb2xkSUZTCisrICBmaQorK30KKysjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgorKworKworKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KKysjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KKysjIHdoZW4gKDEpICRidWlsZCBpcyAqbml4IGFuZCBDeWd3aW4gaXMgaG9zdGVkIHZpYSBhIHdpbmUgZW52aXJvbm1lbnQ7IG9yICgyKQorKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCisrIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAorKyMgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbiB3MzIgZm9ybWF0LCBhcyBwcmV2aW91c2x5IGNvbnZlcnRlZAorKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKKysjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgorKyMgQ3lnd2luIGZvcm1hdCkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGVycm9yLgorKyMKKysjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KKysjIGJlIGNvbnZlcnRlZC4KKysjCisrIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAorKyMgZW52aXJvbm1lbnQgdmFyaWFibGU7IGRvIG5vdCBwdXQgaXQgaW4gJFBBVEguCisrZnVuY19jeWdwYXRoICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgorKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAorKyAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KKysgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKKysgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorKyAgICBmaQorKyAgZWxzZQorKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorKyAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCisrICBmaQorK30KKysjZW5kOiBmdW5jX2N5Z3BhdGgKKysKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCisrIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgorK2Z1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CisrICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CisrICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyt9CisrI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgorKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorKyMgZm9ybWF0IGluIEFSRzIuIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUgKHJlc2V0dGluZworKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgorK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKysgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IGZpbGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIgorKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKysgICAgIyBGYWxsYmFjazoKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAorKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorKyMgZm9ybWF0IGluIFRPX1BBVEguIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUsIHJlc2V0dGluZworKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KKytmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KKysgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCisrICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCisrICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorKyAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKKysgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgorKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCisrICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzPSJzfCQxfCQyfGciCisrICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAorKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCisrICAgIGVsc2UKKysgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgorKyAgICBmaQorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRworKyMgTW9kaWZpZXMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IGJ5IHByZXBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgRlJPTlRQQVQKKysjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KKytmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBjYXNlICQ0IGluCisrICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICA7OworKyAgZXNhYworKyAgY2FzZSAkNCBpbgorKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgorKyAgICA7OworKyAgZXNhYworK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKKysKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgJGJ1aWxkIHRvICRob3N0IEZJTEUgTkFNRSBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCisrIworKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKysjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorKworKworKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCisrIyBDb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY190b19ob3N0X2ZpbGUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCisrfQorKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCisrCisrCisrIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQorKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgorKyMgcmVzdWx0IGluIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdC4gIElmIHRoZSBjb252ZXJzaW9uIGluIHVzZSBpcyBsaXN0ZWQKKysjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgorK2Z1bmNfdG9fdG9vbF9maWxlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgY2FzZSAsJDIsIGluCisrICAgICosIiR0b190b29sX2ZpbGVfY21kIiwqKQorKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQorKyAgICAgIDs7CisrICAgICopCisrICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgorKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0CisrICAgICAgOzsKKysgIGVzYWMKKyt9CisrIyBlbmQgZnVuY190b190b29sX2ZpbGUKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25vb3AgQVJHCisrIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQorK3sKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisrIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQorKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9YGN5Z3BhdGggLW0gIiQxImAKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50CisrIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisrIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKysgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAorKyMgaW4gYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKysgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKworKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgJGJ1aWxkIHRvICRob3N0IFBBVEggQ09OVkVSU0lPTiBGVU5DVElPTlMgIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKKysjCisrIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorKyMKKysjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCisrIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKKysjIGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpIG9uIG91dHB1dC4KKysjCisrIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgorKyMgICBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbiAgICA6IGZ1bmNfY29udmVydF9maWxlX1hfdG9fWSAoKQorKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQorKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKKysjIHNhbWUuICBJZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9yIG5ldyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zLAorKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysjIHdpbGwgYnJlYWsuCisrCisrCisrIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyMgRW5zdXJlcyB0aGF0IGZ1bmN0aW9uICJwb2ludGVyIiB2YXJpYWJsZSAkdG9faG9zdF9wYXRoX2NtZCBpcyBzZXQgdG8gdGhlCisrIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgorK3RvX2hvc3RfcGF0aF9jbWQ9CisrZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkdG9faG9zdF9wYXRoX2NtZCI7IHRoZW4KKysgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgorKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCisrICBmaQorK30KKysKKysKKysjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRworKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX3RvX2hvc3RfcGF0aCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCisrfQorKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRworKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX25vb3AgKCkKKyt7CisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKysjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCisrICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7CisrICAgICMgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLW0gLXAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxImAKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAorKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX25peF90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisrIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQorKyMgYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCisrICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KKysKKysKKyAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgorIGZ1bmNfbW9kZV9jb21waWxlICgpCisgeworQEAgLTEzMTQsMTIgKzE5ODUsMTIgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyAJICA7OworIAorIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKKy0gICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgorKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAorIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQorLQkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAorQEAgLTEzNDAsMTUgKzIwMTEsMTQgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKKyAJICBmb3IgYXJnIGluICRhcmdzOyBkbworIAkgICAgSUZTPSIkc2F2ZV9pZnMiCistCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCisgCSAgZG9uZQorIAkgIElGUz0iJHNhdmVfaWZzIgorIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCisgCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCisgCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCistCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKK0BAIC0xMzY0LDggKzIwMzQsNyBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKKyAKKyAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgorLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsYXN0YXJnIgorLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCisgICAgIGRvbmUgIyBmb3IgYXJnCisgCisgICAgIGNhc2UgJGFyZ19tb2RlIGluCitAQCAtMTQ5NiwxNyArMjE2NSwxNiBAQCBjb21waWxlci4iCisgCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKKyAJZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICAgZmkKKy0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKysgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJG91dHB1dF9vYmoiCisgICAgICAgJEVDSE8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCisgICAgIGZpCisgCisgICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKKy0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorKyAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJGxvY2tmaWxlIgorICAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQorIAorLSAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KKy0gICAgICBldmFsICJzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIiIKKy0gICAgZmkKKysgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICBzcmNmaWxlPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHNyY2ZpbGUiCisgICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorIAorQEAgLTE1MjYsNyArMjE5NCw3IEBAIGNvbXBpbGVyLiIKKyAKKyAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KKyAJIyBQbGFjZSBQSUMgb2JqZWN0cyBpbiAkb2JqZGlyCistCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgorKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCisgICAgICAgZmkKKyAKKyAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCitAQCAtMTU3MywxMSArMjI0MSwxMSBAQCBjb21waWxlci4iCisgCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKKyAgICAgICBmaQorICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCistCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRvYmoiCisrCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkb2JqIgorICAgICAgIGZpCisgCisgICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCistICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgorKyAgICAgIGZ1bmNfYXBwZW5kIGNvbW1hbmQgIiRzdXBwcmVzc19vdXRwdXQiCisgICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAorICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKKyAKK0BAIC0xNjIyLDEzICsyMjkwLDEzIEBAIGNvbXBpbGVyLiIKKyB9CisgCisgJG9wdF9oZWxwIHx8IHsKKy0gIHRlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisrICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyB9CisgCisgZnVuY19tb2RlX2hlbHAgKCkKKyB7CisgICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgorLSAgICBjYXNlICRtb2RlIGluCisrICAgIGNhc2UgJG9wdF9tb2RlIGluCisgICAgICAgIiIpCisgICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKKyAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KK0BAIC0xNjU5LDggKzIzMjcsOCBAQCBUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKKyAKKyAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQorICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCistICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQorLSAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkaW5nIG5vbi1QSUMgb2JqZWN0cyBvbmx5CisrICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQorKyAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5CisgICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCitAQCAtMTgwNCw3ICsyNDcyLDcgQEAgT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICAgICAgICAgOzsKKyAKKyAgICAgICAqKQorLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKKyAgICAgICAgIDs7CisgICAgIGVzYWMKKyAKK0BAIC0xODE5LDEzICsyNDg3LDEzIEBAIGlmICRvcHRfaGVscDsgdGhlbgorICAgZWxzZQorICAgICB7CisgICAgICAgZnVuY19oZWxwIG5vZXhpdAorLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKysgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworIAlmdW5jX21vZGVfaGVscAorICAgICAgIGRvbmUKKyAgICAgfSB8IHNlZCAtbiAnMXA7IDIsJHMvXlVzYWdlOi8gIG9yOiAvcCcKKyAgICAgeworICAgICAgIGZ1bmNfaGVscCBub2V4aXQKKy0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisrICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKyAJZWNobworIAlmdW5jX21vZGVfaGVscAorICAgICAgIGRvbmUKK0BAIC0xODU0LDEzICsyNTIyLDE2IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKKyAKKyAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KKy0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKysgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCisgICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKKyAJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgorIAorICAgICAgIGRpcj0KKyAgICAgICBjYXNlICRmaWxlIGluCisgICAgICAgKi5sYSkKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysKKyAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKyAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKyAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorQEAgLTE4ODIsNyArMjU1Myw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisgCisgCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgorLQkgIGRpcj0iJGRpci8kb2JqZGlyIgorKwkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCisgCWVsc2UKKyAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCitAQCAtMTkwNywxMCArMjU3OCwxMCBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKKyAKKyAgICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgorLSAgICAgIGlmIGV2YWwgdGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIjsgdGhlbgorLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyCisrICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KKysJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgorICAgICAgIGVsc2UKKy0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcjpcJCRzaGxpYnBhdGhfdmFyCisrCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXI6XCQkc2hsaWJwYXRoX3ZhclwiIgorICAgICAgIGZpCisgICAgIGRvbmUKKyAKK0BAIC0xOTM5LDggKzI2MTAsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorIAk7OworICAgICAgIGVzYWMKKyAgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgorLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgorLSAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCisgICAgIGRvbmUKKyAKKyAgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KK0BAIC0xOTcyLDIyICsyNjQyLDU5IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgICAgIGZpCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CisgCisgCisgIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgorIGZ1bmNfbW9kZV9maW5pc2ggKCkKKyB7CisgICAgICRvcHRfZGVidWcKKy0gICAgbGliZGlycz0iJG5vbm9wdCIKKysgICAgbGlicz0KKysgICAgbGliZGlycz0KKyAgICAgYWRtaW5jbWRzPQorIAorLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorLSAgICAgIGZvciBkaXIKKy0gICAgICBkbworLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgorLSAgICAgIGRvbmUKKysgICAgZm9yIG9wdCBpbiAiJG5vbm9wdCIgJHsxKyIkQCJ9CisrICAgIGRvCisrICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KKysJZnVuY19hcHBlbmQgbGliZGlycyAiICRvcHQiCisgCisrICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgorKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgorKwkgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkb3B0IgorKwllbHNlCisrCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKysJZmkKKysKKysgICAgICBlbHNlCisrCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgXGAkb3B0JyIKKysgICAgICBmaQorKyAgICBkb25lCisrCisrICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgorKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9zeXNyb290IjsgdGhlbgorKyAgICAgICAgc3lzcm9vdF9yZWdleD1gJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKysgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzcm9vdF9jbWQ9CisrICAgICAgZmkKKysKKysgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKKysgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKysgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisrICAgICAgICAgIGVjaG8gInJlbW92aW5nIHJlZmVyZW5jZXMgdG8gJGx0X3N5c3Jvb3QgYW5kIFxgPScgcHJlZml4ZXMgZnJvbSAkbGliIgorKyAgICAgICAgZG9uZQorKyAgICAgIGVsc2UKKysgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCisrICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworKwkgIHNlZCAtZSAiJHtzeXNyb290X2NtZH0gcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKKysJICAgID4gJHRtcGRpci90bXAtbGEKKysJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCisrCWRvbmUKKysgICAgICAgICR7Uk19ciAiJHRtcGRpciIKKysgICAgICBmaQorKyAgICBmaQorKworKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisgCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KKyAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgorQEAgLTE5OTcsNyArMjcwNCw3IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKKyAJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgorIAkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KKyAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgorLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBmdW5jX2FwcGVuZCBhZG1pbmNtZHMgIgorICAgICAgICAkY21kcyIKKyAJZmkKKyAgICAgICBkb25lCitAQCAtMjAwNiw1MyArMjcxMyw1NSBAQCBmdW5jX21vZGVfZmluaXNoICgpCisgICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgorICAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKKyAKKy0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKy0gICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgorLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworLSAgICAgICRFQ0hPICIgICAkbGliZGlyIgorLSAgICBkb25lCistICAgIGVjaG8KKy0gICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCistICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorLSAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorLSAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCistICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCistICAgICAgZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCistICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCistICAgICAgZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCistICAgICAgbGliZGlyPUxJQkRJUgorLSAgICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisrICAgICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgorKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisrCSRFQ0hPICIgICAkbGliZGlyIgorKyAgICAgIGRvbmUKKysgICAgICBlY2hvCisrICAgICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCisrICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCisrICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKysgICAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCisrICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisrCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisrCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKysJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisrCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKysJbGliZGlyPUxJQkRJUgorKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgCistICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKy0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCistICAgIGZpCistICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCistICAgICAgZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCistICAgIGZpCistICAgIGVjaG8KKysJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCisrCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisrCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorKyAgICAgIGZpCisrICAgICAgZWNobworIAorLSAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgIHNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCistICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgorLQllY2hvICJwYWdlcy4iCistCTs7CistICAgICAgKikKKy0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorKyAgICAgIGNhc2UgJGhvc3QgaW4KKysJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKysJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgorKwkgIGVjaG8gInBhZ2VzLiIKKysJICA7OworKwkqKQorKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorKwkgIDs7CisrICAgICAgZXNhYworKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisrICAgIGZpCisgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KKyt0ZXN0ICIkb3B0X21vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisgCisgCisgIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KK0BAIC0yMDc3LDcgKzI3ODYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCisgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KKyAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0gICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0kaW5zdGFsbF9wcm9nCisgICAgIGNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KKyAgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKK0BAIC0yMDk3LDcgKzI4MDYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBkbworICAgICAgIGFyZzI9CisgICAgICAgaWYgdGVzdCAtbiAiJGRlc3QiOyB0aGVuCistCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisrCWZ1bmNfYXBwZW5kIGZpbGVzICIgJGRlc3QiCisgCWRlc3Q9JGFyZworIAljb250aW51ZQorICAgICAgIGZpCitAQCAtMjEzNSwxMSArMjg0NCwxMSBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorIAorICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCisgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgICBpZiB0ZXN0IC1uICIkYXJnMiI7IHRoZW4KKyAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZzIiCisgICAgICAgZmkKKy0gICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgZG9uZQorIAorICAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCitAQCAtMjE1MSw3ICsyODYwLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KKyAgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisgCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiCistCWluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgICBmaQorICAgICBmaQorIAorQEAgLTIyMDksMTAgKzI5MTgsMTMgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgICBjYXNlICRmaWxlIGluCisgICAgICAgKi4kbGliZXh0KQorIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgorLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKKysJZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRmaWxlIgorIAk7OworIAorICAgICAgICoubGEpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKysJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCisgCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisgCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCisgCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCitAQCAtMjIyNiwyMyArMjkzOCwzMCBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorIAlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgorIAkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgY3VycmVudF9saWJkaXJzICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWVsc2UKKyAJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCisgCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorIAorIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKKyAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0JZGlyPSIkZGlyJG9iamRpciIKKysJZnVuY19hcHBlbmQgZGlyICIkb2JqZGlyIgorIAorIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCisrICAgICAgIyBTdHJpcCBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgZGVzdGluYXRpb24uCisrICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkbGliZGlyIgorKyAgICAgIGRlc3RsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKworKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGRlc3RkaXIiCisrICAgICAgc19kZXN0ZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysKKyAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgorLQkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAorKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkc19kZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRkZXN0bGliZGlyXCQlJSJgCisgCisgCSAgIyBEb24ndCBhbGxvdyB0aGUgdXNlciB0byBwbGFjZSB1cyBvdXRzaWRlIG9mIG91ciBleHBlY3RlZAorIAkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKK0BAIC0yMzE1LDcgKzMwMzQsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JworIAorIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCistCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCisrCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorIAk7OworIAorICAgICAgICoubG8pCitAQCAtMjUwMyw3ICszMjIyLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIiAmJiBcCisgICAgICAgZnVuY193YXJuaW5nICJyZW1lbWJlciB0byBydW4gXGAkcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIgorIAorLSAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIiAmJiAkb3B0X2ZpbmlzaDsgdGhlbgorKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgorICAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCisgICAgICAgJG9wdF9kcnlfcnVuICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKKyAgICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCitAQCAtMjUxMiw3ICszMjMxLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgZmkKKyB9CisgCistdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KKyt0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcAorQEAgLTI1NTksNiArMzI3OCwxOCBAQCBleHRlcm4gXCJDXCIgeworICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgorICNlbmRpZgorIAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCisgIgorIAorQEAgLTI1NzAsMjEgKzMzMDEsMjIgQEAgZXh0ZXJuIFwiQ1wiIHsKKyAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCisgCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAorIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbworLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCistCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgorKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKyAJICBkb25lCisgCisgCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAgICRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCisrCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisgCSAgICB9CisgCSAgZmkKKyAKKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAkRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCisrCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisgCSAgICB9CisgCSAgZmkKKyAKK0BAIC0yNTkzLDIzICszMzI1LDIzIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAJICAgICAgJFJNICRleHBvcnRfc3ltYm9scworLQkgICAgICAke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyA8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyIKKysJICAgICAgZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCisgCSAgICAgIGNhc2UgJGhvc3QgaW4KKyAJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCistICAgICAgICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCistICAgICAgICAgICAgICAgIGNhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorKyAgICAgICAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworKyAgICAgICAgICAgICAgICBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisgCSAgICAgICAgOzsKKyAJICAgICAgZXNhYworIAkgICAgfQorIAkgIGVsc2UKKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAgICR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKKy0JICAgICAgJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJworKwkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgICBjYXNlICRob3N0IGluCisgCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCistCSAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorLQkgICAgICAgICAgY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCisrCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworKwkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworIAkgICAgICAgICAgOzsKKyAJICAgICAgZXNhYworIAkgICAgfQorQEAgLTI2MjAsMTAgKzMzNTIsNTIgQEAgZXh0ZXJuIFwiQ1wiIHsKKyAJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCisgCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKKyAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCSAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCIKKy0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKy0JICB9CisrICAgICAgICAgIGNhc2UgJGhvc3QgaW4KKysJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKKysJICAgICAgaWYgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgIiRkbHByZWZpbGUiOyB0aGVuCisrCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKKysJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgorKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIiCisrCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KKysJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCisrCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCisrCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCisrCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgorKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorKwkgICAgICAgICAgZWxzZQorKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCisrCSAgICAgICAgICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCAiJGRscHJlZmlsZSIKKysJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrCSAgICAgICAgICBmaQorKwkgICAgICAgIGZpCisrCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKysJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCisrCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRkbHByZWZpbGVfZGxiYXNlbmFtZSIgPj4gIiRubGlzdCInCisrCSAgICAgICAgICBlbHNlCisrCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKKysJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGZpCisrCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfAorKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgorKwkgICAgICAgIH0KKysJICAgICAgZWxzZSAjIG5vdCBhbiBpbXBvcnQgbGliCisrCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKysJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisrCSAgICAgICAgfQorKwkgICAgICBmaQorKwkgICAgOzsKKysJICAgICopCisrCSAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKysJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgICB9CisrCSAgICA7OworKyAgICAgICAgICBlc2FjCisgCWRvbmUKKyAKKyAJJG9wdF9kcnlfcnVuIHx8IHsKK0BAIC0yNjYxLDI2ICszNDM1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgKmFkZHJlc3M7CisgfSBsdF9kbHN5bWxpc3Q7CistIgorLQkgIGNhc2UgJGhvc3QgaW4KKy0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCistLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQorLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCistICAgb24gcHNldWRvLXJlbG9jcy4gICovIgorLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7CistCSAgKm9zZjUqKQorLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgorLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7CistCSAgKikKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7CistCSAgZXNhYworLQorLQkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCistZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKKytleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CisgbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOworLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKKytMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKKyBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQorIHtcCisgICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKK0BAIC0yNzM2LDcgKzM0OTMsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KKyAJICBjYXNlICRhcmcgaW4KKyAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKKy0JICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OworIAkgIGVzYWMKKyAJZG9uZQorIAorQEAgLTI3OTYsOSArMzU1MywxMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCisgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKKyAgICAgOzsKKyAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKKy0gICAgaWYgJE9CSkRVTVAgLWYgIiQxIiB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAorLSAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKy0gICAgICB3aW4zMl9ubXJlcz1gJE5NIC1mIHBvc2l4IC1BICIkMSIgfAorKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KKysgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAorKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAorIAkkU0VEIC1uIC1lICcKKyAJICAgIDEsMTAweworIAkJLyBJIC97CitAQCAtMjgyNyw2ICszNTg2LDEzMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCisgICAkRUNITyAiJHdpbjMyX2xpYmlkX3R5cGUiCisgfQorIAorKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliIEFSRworKyMKKysjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisrIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKysjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKysjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKysjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKysjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCisrfQorKworKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgU0VDVElPTl9OQU1FIExJQk5BTUVzCisrIworKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQorKyMgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUKKysjIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeSBMSUJOQU1FLgorKyMKKysjIFNFQ1RJT05fTkFNRSBpcyBlaXRoZXIgLmlkYXRhJDYgb3IgLmlkYXRhJDcsIGRlcGVuZGluZworKyMgb24gdGhlIHBsYXRmb3JtIGFuZCBjb21waWxlciB0aGF0IGNyZWF0ZWQgdGhlIGltcGxpYi4KKysjCisrIyBFY2hvcyB0aGUgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUKKysjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisrICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKKysgICAgJFNFRCAnL15Db250ZW50cyBvZiBzZWN0aW9uICciJG1hdGNoX2xpdGVyYWwiJzoveworKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KKysgICAgICBzLy4qLz09PT1NQVJLPT09PS8KKysgICAgICBwCisrICAgICAgZAorKyAgICB9CisrICAgICMgVGhlc2UgbGluZXMgY2FuIHNvbWV0aW1lcyBiZSBsb25nZXIgdGhhbiA0MyBjaGFyYWN0ZXJzLCBidXQKKysgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKKysgICAgLzpbCSBdKmZpbGUgZm9ybWF0IHBlW2ldXHssMVx9LS9kCisrICAgIC9eSW4gYXJjaGl2ZSBbXjpdKjovZAorKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAorKyAgICAvXj09PT1NQVJLPT09PS9wCisrICAgICMgUmVtb3ZlIGFsbCBsaW5lcyB3aXRoIGxlc3MgdGhhbiA0MyBjaGFyYWN0ZXJzCisrICAgIC9eLlx7NDNcfS8hZAorKyAgICAjIEZyb20gcmVtYWluaW5nIGxpbmVzLCByZW1vdmUgZmlyc3QgNDMgY2hhcmFjdGVycworKyAgICBzL14uXHs0M1x9Ly8nIHwKKysgICAgJFNFRCAtbiAnCisrICAgICAgIyBKb2luIG1hcmtlciBhbmQgYWxsIGxpbmVzIHVudGlsIG5leHQgbWFya2VyIGludG8gYSBzaW5nbGUgbGluZQorKyAgICAgIC9ePT09PU1BUks9PT09LyBiIHBhcmEKKysgICAgICBICisrICAgICAgJCBiIHBhcmEKKysgICAgICBiCisrICAgICAgOnBhcmEKKysgICAgICB4CisrICAgICAgcy9cbi8vZworKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKKysgICAgICBzL149PT09TUFSSz09PT0vLworKyAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIGRvdHMgYW5kIHdoaXRlc3BhY2UKKysgICAgICBzL1tcLiBcdF0qJC8vCisrICAgICAgIyBQcmludAorKyAgICAgIC8uL3AnIHwKKysgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCisrICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCisrICAgICMgYXJjaGl2ZSB3aGljaCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKKysgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworKyAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKKysgICAgIyBjaGFyYWN0ZXIuKSBUaGlzIHNob3VsZCB3b3JrIGZvciBhbGwgYXJjaGl2ZXMgd2l0aCBsZXNzIHRoYW4KKysgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKKysgICAgIyBiZWdpbnMgd2l0aCBhIGxpdGVyYWwgJy4nIG9yIGEgc2luZ2xlIGNoYXJhY3RlciBmb2xsb3dlZCBieQorKyAgICAjIGEgJy4nLgorKyAgICAjCisrICAgICMgT2YgdGhvc2UgdGhhdCByZW1haW4sIHByaW50IHRoZSBmaXJzdCBvbmUuCisrICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCisrfQorKworKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKKysjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKysjIEFSRyBpcyBhIEdOVS9iaW51dGlscy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KKytmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCisrICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgorK30KKysKKysjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKKysjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKysjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KKytmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKKysgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCisrIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisrIyBpbXBvcnQgbGlicmFyeSBBUkcuCisrIworKyMgVGhpcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdXNlIHdoZW4gJERMTFRPT0wKKysjIGRvZXMgbm90IHN1cHBvcnQgdGhlIC0taWRlbnRpZnktc3RyaWN0IG9wdGlvbi4KKysjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKysjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKysjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KKysgICAgIyBiaW51dGlscyBpbXBvcnQgbGlicmFyeQorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAorKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KKysgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKKysgIGVsc2UKKysgICAgIyB1bmtub3duCisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisrICBmaQorK30KKyAKKyAKKyAjIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKK0BAIC0yOTE3LDcgKzM4MDEsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKKyAJICAgIGRhcndpbl9maWxlPQorIAkgICAgZGFyd2luX2ZpbGVzPQorIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCistCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAorKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCisgCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCisgCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAorIAkgICAgJFJNIC1yZiB1bmZhdC0kJAorQEAgLTI5MzIsNyArMzgxNiw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQorICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCisgCTs7CisgICAgICAgZXNhYworLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCisrICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCisgICAgIGRvbmUKKyAKKyAgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCitAQCAtMzAxNCw3ICszODk4LDExMCBAQCBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKKyBfTFRFQ0hPX0VPRicKKyB9CisgICAgIEVDSE89XCIkcUVDSE9cIgorLSAgZmlcCisrICBmaQorKworKyMgVmVyeSBiYXNpYyBvcHRpb24gcGFyc2luZy4gVGhlc2Ugb3B0aW9ucyBhcmUgKGEpIHNwZWNpZmljIHRvCisrIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCisrIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorKyMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCisrIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAorKyMgdGhpcyBwYXR0ZXJuKS4KKysjCisrIyBUaGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIG9wdGlvbnM6IC0tbHQtZGVidWcgYW5kCisrIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCisrIworKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlCisrIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KKytsdF9vcHRpb25fZGVidWc9CisrZnVuY19wYXJzZV9sdF9vcHRpb25zICgpCisreworKyAgbHRfc2NyaXB0X2FyZzA9XCQwCisrICBzaGlmdAorKyAgZm9yIGx0X29wdAorKyAgZG8KKysgICAgY2FzZSBcIlwkbHRfb3B0XCIgaW4KKysgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKKysgICAgLS1sdC1kdW1wLXNjcmlwdCkKKysgICAgICAgIGx0X2R1bXBfRD1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJS9bXi9dKiQlJSdcYAorKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCisrICAgICAgICBsdF9kdW1wX0Y9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyVeLiovJSUnXGAKKysgICAgICAgIGNhdCBcIlwkbHRfZHVtcF9EL1wkbHRfZHVtcF9GXCIKKysgICAgICAgIGV4aXQgMAorKyAgICAgIDs7CisrICAgIC0tbHQtKikKKysgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCisrICAgICAgICBleGl0IDEKKysgICAgICA7OworKyAgICBlc2FjCisrICBkb25lCisrCisrICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CisrICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICBlY2hvIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlwiIDE+JjIKKysgIGZpCisrfQorKworKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAorKyMgKHJlZGlyZWN0aW9uIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKQorK2Z1bmNfbHRfZHVtcF9hcmdzICgpCisreworKyAgbHRfZHVtcF9hcmdzX049MTsKKysgIGZvciBsdF9hcmcKKysgIGRvCisrICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKKysgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKKysgIGRvbmUKKyt9CisrCisrIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorK2Z1bmNfZXhlY19wcm9ncmFtX2NvcmUgKCkKKyt7CisrIgorKyAgY2FzZSAkaG9zdCBpbgorKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisrICAqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorKyAgICAkRUNITyAiXAorKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisrICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgMT4mMgorKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisrICAgICAgZmkKKysgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKysiCisrICAgIDs7CisrCisrICAqKQorKyAgICAkRUNITyAiXAorKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisrICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgorKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisrICAgICAgZmkKKysgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKysiCisrICAgIDs7CisrICBlc2FjCisrICAkRUNITyAiXAorKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKysgICAgICBleGl0IDEKKyt9CisrCisrIyBBIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisrIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKKysjIGxhdW5jaGVzIHRhcmdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgorK2Z1bmNfZXhlY19wcm9ncmFtICgpCisreworKyAgZm9yIGx0X3dyX2FyZworKyAgZG8KKysgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgorKyAgICAtLWx0LSopIDs7CisrICAgICopIHNldCB4IFwiXCRAXCIgXCJcJGx0X3dyX2FyZ1wiOyBzaGlmdDs7CisrICAgIGVzYWMKKysgICAgc2hpZnQKKysgIGRvbmUKKysgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQorK30KKysKKysgICMgUGFyc2Ugb3B0aW9ucworKyAgZnVuY19wYXJzZV9sdF9vcHRpb25zIFwiXCQwXCIgXCR7MStcIlwkQFwifQorIAorICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KKyAgIHRoaXNkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qJCUlJ1xgCitAQCAtMzA3OCw3ICs0MDY1LDcgQEAgX0xURUNIT19FT0YnCisgCisgICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5CisgICAgIGlmIHRlc3QgLW4gXCJcJHJlbGlua19jb21tYW5kXCI7IHRoZW4KKy0gICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwiXCRyZWxpbmtfY29tbWFuZFwiIDI+JjFcYDsgdGhlbiA6CisrICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6CisgICAgICAgZWxzZQorIAkkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCisgCSRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorQEAgLTMxMDIsNiArNDA4OSwxOCBAQCBfTFRFQ0hPX0VPRicKKyAKKyAgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCisgCisrCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCisrCSMKKysJIyBGaXggdGhlIERMTCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uICBEbyB0aGlzIGJlZm9yZSBwcmVwZW5kaW5nCisrCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCisrCSMgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4KKysJaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCisrCSAgJEVDSE8gIlwKKysgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKysgICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKKysiCisrCWZpCisrCisgCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgorIAlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisgCSAgJEVDSE8gIlwKK0BAIC0zMTE2LDM1ICs0MTE1LDEwIEBAIF9MVEVDSE9fRU9GJworICIKKyAJZmkKKyAKKy0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKy0JaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCistCSAgJEVDSE8gIlwKKy0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKy0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKKy0iCistCWZpCistCisgCSRFQ0hPICJcCisgICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KKyAgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgorLSIKKy0JY2FzZSAkaG9zdCBpbgorLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKy0JKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKy0JICAkRUNITyAiXAorLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorLSIKKy0JICA7OworLQorLQkqKQorLQkgICRFQ0hPICJcCistICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CistIgorLQkgIDs7CistCWVzYWMKKy0JJEVDSE8gIlwKKy0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCistICAgICAgZXhpdCAxCisrICAgICAgZnVuY19leGVjX3Byb2dyYW0gXCR7MStcIlwkQFwifQorICAgICBmaQorICAgZWxzZQorICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCitAQCAtMzE1OCwxNjYgKzQxMzIsNiBAQCBmaVwKKyB9CisgCisgCistIyBmdW5jX3RvX2hvc3RfcGF0aCBhcmcKKy0jCistIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorLSMgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICJuYXRpdmUiIG1pbmd3ICh3aGVyZSBsaWJ0b29sIGl0c2VsZgorLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCistIyBidWlsZCBlbnZpcm9ubWVudHM6CistIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKy0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQorLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CistIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKy0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgorLSMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKKy0jIGNvbnZlcnRzIHBhdGhzIGZvciBhbnkgbm9uLW1zeXMgYXBwbGljYXRpb25zIGl0IGxhdW5jaGVzLAorLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KKy0jIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCistIyAkYnVpbGQgY3lnd2luLiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm8gaGFybSBmb3Igb3RoZXIKKy0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KKy0jCistIyBBUkcgaXMgdGhlIHBhdGggKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCistIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKKy0jIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCistZnVuY190b19ob3N0X3BhdGggKCkKKy17CistICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICAqbWluZ3cqICkKKy0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKy0gICAgICAgIGNhc2UgJGJ1aWxkIGluCistICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCistICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorLSAgICAgICAgICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICpjeWd3aW4qICkKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLXcgIiQxIiB8CistCSAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqICkKKy0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCistICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgorLSAgICAgICAgICAgICMgc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGNvbW1hbmQgaXMgbm90CistICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CistICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCistICAgICAgICAgICAgIyBlcnJvciBjb2RlIG9mIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zCistICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorLSAgICAgICAgICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfdG9faG9zdF9wYXRoX3RtcDF9IjsgdGhlbgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAkRUNITyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHwKKy0gICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0KKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KKy0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKy0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKy0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCistICAgICAgICAgICMgRmFsbGJhY2s6CistICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCistICAgICAgICBmaQorLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgZmkKKy19CistIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCistCistIyBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgYXJnCistIworLSMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCistIyBTZWUgZnVuY190b19ob3N0X3BhdGgoKSwgYWJvdmUuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlCistIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKKy0jIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgorLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0CistIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKy0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3CistIworLSMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KKy0jICRob3N0IGZvcm1hdC4gSWYgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvcgorLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQorLSMgb24gb3V0cHV0LgorLSMKKy0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKKy0jIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0LgorLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQorLXsKKy0gIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiQxIgorLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICAqbWluZ3cqICkKKy0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKy0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorLSAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorLSAgICAgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKy0JZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKy0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0gICAgICAgIGNhc2UgJGJ1aWxkIGluCistICAgICAgICAgICptaW5ndyogKSAjIEFjdHVhbGx5LCBtc3lzLgorLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWAKKy0JICAgICAgKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgKSAyPi9kZXYvbnVsbCB8CistCSAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqY3lnd2luKiApCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8CistICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKiApCistICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aGxpc3RzCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUworLSAgICAgICAgICAgIElGUz06CistICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCistICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKy0gICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIgOyB0aGVuCistICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCistICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCistICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCistICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUworLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7IHRoZW4KKy0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoKHMpIGNvcnJlc3BvbmRpbmcgdG8iCistICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKKy0gICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgorLSAgICAgICAgICAjIGJlbG93LCBidXQgZm9yIHRoZSB1c2VyIHRvIHByb3ZpZGUgYSB3b3JraW5nIHdpbmUgaW5zdGFsbGF0aW9uCistICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3CistICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KKy0gICAgICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3M9InN8Onw7fGciCistICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKKy0gICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAorLSAgICAgICAgZmkKKy0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCistICAgICAgICBjYXNlICIkMSIgaW4KKy0gICAgICAgICAgOiogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSI7JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGNhc2UgIiQxIiBpbgorLSAgICAgICAgICAqOiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjsiCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gIGZpCistfQorLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aGxpc3QKKy0KKyAjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKKyAjIGVtaXQgdGhlIHNvdXJjZSBjb2RlIGZvciBhIHdyYXBwZXIgZXhlY3V0YWJsZSBvbiBzdGRvdXQKKyAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQorQEAgLTMzMzQsMTAgKzQxNDgsNiBAQCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjICgpCisgCisgICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KKy0KKy0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAorLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKKy0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCisgKi8KKyBFT0YKKyAJICAgIGNhdCA8PCJFT0YiCitAQCAtMzQ2MiwyMiArNDI3MiwxMyBAQCBpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCisgfSB3aGlsZSAoMCkKKyAKKy0jdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCistI2lmIGRlZmluZWQgTFRfREVCVUdXUkFQUEVSCistIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpIGx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiBhcmdzCistc3RhdGljIHZvaWQKKy1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorLXsKKy0gICAgdmFfbGlzdCBhcmdzOworLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKy0gICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7CistICAgIHZhX2VuZCAoYXJncyk7CistfQorKyNpZiBkZWZpbmVkKExUX0RFQlVHV1JBUFBFUikKKytzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKKyAjZWxzZQorLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQorK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAwOworICNlbmRpZgorIAorLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7CisrY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLworIAorIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOworIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CitAQCAtMzQ4Nyw3ICs0Mjg4LDEwIEBAIGNoYXIgKmNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYyk7CisgaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CisgaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOworLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cisrdm9pZCBsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKyt2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKKytzdGF0aWMgY29uc3QgY2hhciAqbm9ubnVsbCAoY29uc3QgY2hhciAqcyk7Cisrc3RhdGljIGNvbnN0IGNoYXIgKm5vbmVtcHR5IChjb25zdCBjaGFyICpzKTsKKyB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworIGNoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Cisgdm9pZCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKK0BAIC0zNDk3LDE0ICs0MzAxLDE0IEBAIHZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOworIEVPRgorIAorIAkgICAgY2F0IDw8RU9GCistY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKKyt2b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOworIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKKyBFT0YKKyAKKyAJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisrICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJHRlbXBfcnBhdGgiCisgCSAgICAgIGNhdCA8PEVPRgorLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKKytjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKKyBFT0YKKyAJICAgIGVsc2UKKyAJICAgICAgY2F0IDw8IkVPRiIKK0BAIC0zNTEzLDEwICs0MzE3LDEwIEBAIEVPRgorIAkgICAgZmkKKyAKKyAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCisrICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGRsbHNlYXJjaHBhdGg6IgorIAkgICAgICBjYXQgPDxFT0YKKyBjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKKy1jb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CisrY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CisgRU9GCisgCSAgICBlbHNlCisgCSAgICAgIGNhdCA8PCJFT0YiCitAQCAtMzUzOSwxMiArNDM0MywxMCBAQCBFT0YKKyAJICAgIGNhdCA8PCJFT0YiCisgCisgI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKKy0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQorIAorLXN0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKKy0KKyBzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOworK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7CisgCisgaW50CisgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC0zNTYxLDEwICs0MzYzLDEzIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICBpbnQgaTsKKyAKKyAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7CisrICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgCistICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworKyAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKKysgICAqIGFsc28sIGNvcHkgYWxsIG5vbiBjd3JhcHBlciBvcHRpb25zIHRvIG5ld2FyZ3osIGV4Y2VwdAorKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQorKyAgICovCisrICBuZXdhcmdjPTA7CisgICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQorICAgICB7CisgICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCitAQCAtMzU4MSwyMSArNDM4Niw1NCBAQCBFT0YKKyAJICBsdF9kdW1wX3NjcmlwdCAoc3Rkb3V0KTsKKyAJICByZXR1cm4gMDsKKyAJfQorKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGRlYnVnX29wdCkgPT0gMCkKKysJeworKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CisrICAgICAgICAgIGNvbnRpbnVlOworKwl9CisrICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisrICAgICAgICB7CisrICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKysgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorKyAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCisrICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisrICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCisrICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKysgICAgICAgICAgICovCisrICAgICAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAorKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworKyAgICAgICAgfQorKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKysgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKyAgICAgfQorKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKKysKKytFT0YKKysJICAgIGNhdCA8PEVPRgorKyAgLyogVGhlIEdOVSBiYW5uZXIgbXVzdCBiZSB0aGUgZmlyc3Qgbm9uLWVycm9yIGRlYnVnIG1lc3NhZ2UgKi8KKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKKytFT0YKKysJICAgIGNhdCA8PCJFT0YiCisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgcHJvZ3JhbV9uYW1lOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKTsKKyAKKy0gIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKyAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CisgICBpZiAodG1wX3BhdGhzcGVjID09IE5VTEwpCistICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAorLQkJCSAgdG1wX3BhdGhzcGVjKSk7CisrICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJjb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorKwkJICB0bXBfcGF0aHNwZWMpOworIAorICAgYWN0dWFsX2N3cmFwcGVyX3BhdGggPSBjaGFzZV9zeW1saW5rcyAodG1wX3BhdGhzcGVjKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAorLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKysJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOworICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CisgCistICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKysgIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOworIAorICAgLyogd3JhcHBlciBuYW1lIHRyYW5zZm9ybXMgKi8KK0BAIC0zNjEzLDggKzQ0NTEsOSBAQCBFT0YKKyAgIHRhcmdldF9uYW1lID0gdG1wX3BhdGhzcGVjOworICAgdG1wX3BhdGhzcGVjID0gMDsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCistCQkJICB0YXJnZXRfbmFtZSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKysJCSAgdGFyZ2V0X25hbWUpOworIEVPRgorIAorIAkgICAgY2F0IDw8RU9GCitAQCAtMzY2NCwzNSArNDUwMywxOSBAQCBFT0YKKyAKKyAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLworICAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLworLSAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisrICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0CisrICAgICBiZSBwcmVwZW5kZWQgYmVmb3JlICh0aGF0IGlzLCBhcHBlYXIgYWZ0ZXIpIExJQl9QQVRIX1ZBTFVFICgkdGVtcF9ycGF0aCkKKysgICAgIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCAqX1ZBUk5BTUVzIGFyZSBQQVRIIGJ1dCB1bmluc3RhbGxlZAorKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KKyAgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOworKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisgCistICBuZXdhcmdjPTA7CistICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQorLSAgICB7CistICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorLSAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCistICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCistICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKy0gICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKy0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKy0gICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCistICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorLSAgICAgICAgICAgKi8KKy0gICAgICAgICAgbHRfZmF0YWwgKCJVbnJlY29nbml6ZWQgb3B0aW9uIGluICVzIG5hbWVzcGFjZTogJyVzJyIsCistICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CistICAgICAgICB9CistICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworLSAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOworLSAgICB9CistICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOworLQorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbHRfYXJndl96ZXJvOiAlc1xuIiwKKysJCSAgbm9ubnVsbCAobHRfYXJndl96ZXJvKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQorICAgICB7CistICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsIGksIChuZXdhcmd6W2ldID8gbmV3YXJneltpXSA6ICI8TlVMTD4iKSkpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAorKwkJICAgICAgaSwgbm9ubnVsbCAobmV3YXJneltpXSkpOworICAgICB9CisgCisgRU9GCitAQCAtMzcwNiw3ICs0NTI5LDkgQEAgRU9GCisgICBpZiAocnZhbCA9PSAtMSkKKyAgICAgeworICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCistICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKKysgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICAgIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6ICVzXG4iLAorKwkJICAgICAgbHRfYXJndl96ZXJvLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CisgICAgICAgcmV0dXJuIDEyNzsKKyAgICAgfQorICAgcmV0dXJuIHJ2YWw7CitAQCAtMzcyOCw3ICs0NTUzLDcgQEAgeG1hbGxvYyAoc2l6ZV90IG51bSkKKyB7CisgICB2b2lkICpwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOworICAgaWYgKCFwKQorLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgIm1lbW9yeSBleGhhdXN0ZWQiKTsKKyAKKyAgIHJldHVybiBwOworIH0KK0BAIC0zNzYyLDggKzQ1ODcsOCBAQCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQorIHsKKyAgIHN0cnVjdCBzdGF0IHN0OworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKKy0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCisrICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKKyAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgICByZXR1cm4gMDsKKyAKK0BAIC0zNzgwLDggKzQ2MDUsOCBAQCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCisgICBpbnQgcnZhbCA9IDA7CisgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFrZV9leGVjdXRhYmxlKSAgIDogJXNcbiIsCistCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFrZV9leGVjdXRhYmxlKTogJXNcbiIsCisrICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKKyAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgICByZXR1cm4gMDsKKyAKK0BAIC0zODA3LDggKzQ2MzIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCisgICBpbnQgdG1wX2xlbjsKKyAgIGNoYXIgKmNvbmNhdF9uYW1lOworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKy0JCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihmaW5kX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOworIAorICAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKKyAgICAgcmV0dXJuIE5VTEw7CitAQCAtMzg2MSw3ICs0Njg2LDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorIAkJeworIAkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLworIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCistCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisrCQkgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CisgCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisgCQkgIGNvbmNhdF9uYW1lID0KKyAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKK0BAIC0zODg2LDcgKzQ3MTIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCisgICAgIH0KKyAgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KKyAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKy0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisrICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CisgICB0bXBfbGVuID0gc3RybGVuICh0bXApOworICAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKKyAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7CitAQCAtMzkxMiw4ICs0NzM5LDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQorICAgaW50IGhhc19zeW1saW5rcyA9IDA7CisgICB3aGlsZSAoc3RybGVuICh0bXBfcGF0aHNwZWMpICYmICFoYXNfc3ltbGlua3MpCisgICAgIHsKKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKy0JCQkgICAgICB0bXBfcGF0aHNwZWMpKTsKKysgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICAgImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCisrCQkgICAgICB0bXBfcGF0aHNwZWMpOworICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKKyAJeworIAkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCitAQCAtMzkzNSw4ICs0NzYzLDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQorIAl9CisgICAgICAgZWxzZQorIAl7CistCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKKy0JICBsdF9mYXRhbCAoIkVycm9yIGFjY2Vzc2luZyBmaWxlICVzICglcykiLCB0bXBfcGF0aHNwZWMsIGVycnN0cik7CisrCSAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCisrCQkgICAgdG1wX3BhdGhzcGVjLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CisgCX0KKyAgICAgfQorICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CitAQCAtMzk0OSw3ICs0Nzc4LDggQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQorICAgdG1wX3BhdGhzcGVjID0gcmVhbHBhdGggKHBhdGhzcGVjLCBidWYpOworICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQorICAgICB7CistICAgICAgbHRfZmF0YWwgKCJDb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKysgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJImNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworICAgICB9CisgICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKKyAjZW5kaWYKK0BAIC0zOTc1LDExICs0ODA1LDI1IEBAIHN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCisgICByZXR1cm4gc3RyOworIH0KKyAKKyt2b2lkCisrbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyt7CisrICB2YV9saXN0IGFyZ3M7CisrICBpZiAobHRfZGVidWcpCisrICAgIHsKKysgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7CisrICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CisrICAgICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7CisrICAgICAgdmFfZW5kIChhcmdzKTsKKysgICAgfQorK30KKysKKyBzdGF0aWMgdm9pZAorLWx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKKytsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCisrCSAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqbW9kZSwKKyAJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCisgeworLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOworKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICVzOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUsIG1vZGUpOworICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOworICAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7CisgCitAQCAtMzk4OCwyMCArNDgzMiwzMiBAQCBsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisgfQorIAorIHZvaWQKKy1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorK2x0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorIHsKKyAgIHZhX2xpc3QgYXA7CisgICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOworLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisrICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKyAgIHZhX2VuZCAoYXApOworIH0KKyAKKytzdGF0aWMgY29uc3QgY2hhciAqCisrbm9ubnVsbCAoY29uc3QgY2hhciAqcykKKyt7CisrICByZXR1cm4gcyA/IHMgOiAiKG51bGwpIjsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK25vbmVtcHR5IChjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiAocyAmJiAhKnMpID8gIihlbXB0eSkiIDogbm9ubnVsbCAocyk7CisrfQorKworIHZvaWQKKyBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgICB7CisgI2lmZGVmIEhBVkVfU0VURU5WCisgICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCitAQCAtNDA0OSw5ICs0OTA1LDkgQEAgbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKQorIHZvaWQKKyBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAKKyAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICAgeworQEAgLTQwNzAsOSArNDkyNiw5IEBAIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgdm9pZAorIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworIAorICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgICB7CitAQCAtNDIyMiw3ICs1MDc4LDcgQEAgRU9GCisgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKKyB7CisgICAgICRvcHRfZGVidWcKKy0gICAgY2FzZSBgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwiIHwgJFNFRCAtZSAxMHFgIGluCisrICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KKyAgICAgKmltcG9ydCopIDogOzsKKyAgICAgKikgZmFsc2UgOzsKKyAgICAgZXNhYworQEAgLTQ0MDEsOSArNTI1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICA7OworIAkgICopCisgCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCistCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgorIAkgICAgZWxzZQorLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKKyAJICAgIGZpCisgCSAgICBwcmV2PQorIAkgICAgY29udGludWUKK0BAIC00NDI3LDcgKzUyODMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKi0qLWRhcndpbiopCisgCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KKyAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OworLQkJKikgZGVwbGlicz0iJGRlcGxpYnMgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgorKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKyAJCSAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKK0BAIC00NDQ2LDcgKzUzMDIsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgbW9yZWFyZ3M9CisgCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCisgCSAgICBkbworLSMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgorKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgorIAkgICAgICBhcmc9JGZpbAorIAkgICAgICAjIEEgbGlidG9vbC1jb250cm9sbGVkIG9iamVjdC4KKyAKK0BAIC00NDc1LDcgKzUzMzEsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCisgCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorLQkJICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisrCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCisgCQkgICAgICBwcmV2PQorIAkJICAgICAgY29udGludWUKKyAJCSAgICBlbHNlCitAQCAtNDQ4Nyw3ICs1MzQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKKyAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKy0JCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKysJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCisgCQkgICAgcHJldj0KKyAJCSAgZmkKKyAKK0BAIC00NTU3LDEyICs1NDEzLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KKyAJICAgIGNhc2UgIiRycGF0aCAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKikgcnBhdGg9IiRycGF0aCAkYXJnIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OworIAkgICAgZXNhYworIAkgIGVsc2UKKyAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKKyAJICAgIGVzYWMKKyAJICBmaQorIAkgIHByZXY9CitAQCAtNDU3NCwyOCArNTQzMCwyOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJd2VhaykKKy0JICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgorIAkgIHByZXY9CisgCSAgY29udGludWUKKyAJICA7OworIAl4Y2NsaW5rZXIpCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhjb21waWxlcikKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCisgCSAgcHJldj0KKyAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAl4bGlua2VyKQorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJHFhcmciCisgCSAgcHJldj0KKyAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKKyAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHdsJHFhcmciCitAQCAtNDY4NiwxNSArNTU0MiwxNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAk7OworIAorICAgICAgIC1MKikKKy0JZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKKy0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KKysJZnVuY19zdHJpcG5hbWUgIi1MIiAnJyAiJGFyZyIKKysJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KKyAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiBcYC1MJyBhbmQgXGAkMSciCisgCSAgZWxzZQorIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCisgCSAgZmkKKyAJZmkKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisgCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorIAljYXNlICRkaXIgaW4KKyAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworQEAgLTQ3MDYsMTAgKzU1NjMsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICA7OworIAllc2FjCisgCWNhc2UgIiRkZXBsaWJzICIgaW4KKy0JKiIgLUwkZGlyICIqKSA7OworKwkqIiAtTCRkaXIgIiogfCAqIiAkYXJnICIqKQorKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKKysJICA7OworIAkqKQorLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKKy0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKKysJICAjIFByZXNlcnZlIHN5c3Jvb3QsIGJ1dCBuZXZlciBpbmNsdWRlIHJlbGF0aXZlIGRpcmVjdG9yaWVzCisrCSAgY2FzZSAkZGlyIGluCisrCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLUwkZGlyIiA7OworKwkgIGVzYWMKKysJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAkaG9zdCBpbgorQEAgLTQ3MTgsMTIgKzU1ODEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGRpciI7OworIAkgIGVzYWMKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTQ3NDcsNyArNTYxMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICA7OworIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKKyAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCistCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisrCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgorIAkgICAgY29udGludWUKKyAJICAgIDs7CisgCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQorQEAgLTQ3NTgsOSArNTYyMSw2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIENvbXBpbGVyIGluc2VydHMgbGliYyBpbiB0aGUgY29ycmVjdCBwbGFjZSBmb3IgdGhyZWFkcyB0byB3b3JrCisgCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKyAJICAgIDs7CistCSAgKi0qLWxpbnV4KikKKy0JICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorLQkgICAgOzsKKyAJICBlc2FjCisgCWVsaWYgdGVzdCAiWCRhcmciID0gIlgtbGNfciI7IHRoZW4KKyAJIGNhc2UgJGhvc3QgaW4KK0BAIC00NzcwLDcgKzU2MzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICA7OworIAkgZXNhYworIAlmaQorLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKKyAJY29udGludWUKKyAJOzsKKyAKK0BAIC00NzgyLDggKzU2NDIsOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKKyAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCisgICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KKy0gICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQorLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCisrCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgCXByZXY9eGNvbXBpbGVyCitAQCAtNDc5MSwxMiArNTY1MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAk7OworIAorICAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCistCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKysJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OworKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKKyAJZXNhYworIAljb250aW51ZQorIAk7OworQEAgLTQ4NjMsMTMgKzU3MjMsMTcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCWNhc2UgJGRpciBpbgorIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CisrCT0qKQorKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKKysJICBkaXI9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCSAgOzsKKyAJKikKKyAJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKKyAJICA7OworIAllc2FjCisgCWNhc2UgIiR4cnBhdGggIiBpbgorIAkqIiAkZGlyICIqKSA7OworLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKysJKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKKyAJZXNhYworIAljb250aW51ZQorIAk7OworQEAgLTQ5MjIsOCArNTc4Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZvciBmbGFnIGluICRhcmdzOyBkbworIAkgIElGUz0iJHNhdmVfaWZzIgorICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKKy0JICBhcmc9IiRhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAJZG9uZQorIAlJRlM9IiRzYXZlX2lmcyIKKyAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgorQEAgLTQ5MzgsOSArNTgwMiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZvciBmbGFnIGluICRhcmdzOyBkbworIAkgIElGUz0iJHNhdmVfaWZzIgorICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKKy0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAJZG9uZQorIAlJRlM9IiRzYXZlX2lmcyIKKyAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgorQEAgLTQ5NjgsMjQgKzU4MzIsMjcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCTs7CisgCistICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKKy0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgorLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKKy0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgorLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCistICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCistICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKKy0gICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCistICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQworLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCistICAgICAgIyAtdHA9KiBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisrICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgorKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCisrICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgorKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU3VuIGNvbXBpbGVyCisrICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgorKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorKyAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZsYWdzIGZvciBHQ0MKKysgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCisrICAgICAgIyBAZmlsZSAgICAgICAgICAgICAgICBHQ0MgcmVzcG9uc2UgZmlsZXMKKysgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKysgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKKysgICAgICAjIC1PKiwgLWZsdG8qLCAtZndob3ByKiwgLWZ1c2UtbGlua2VyLXBsdWdpbiBHQ0MgbGluay10aW1lIG9wdGltaXphdGlvbgorICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAorLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KikKKysgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKKysgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW4pCisgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKy0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKysgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKKyAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICA7OworIAorQEAgLTQ5OTcsNyArNTg2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgICAgICAgKi4kb2JqZXh0KQorIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgorLQlvYmpzPSIkb2JqcyAkYXJnIgorKwlmdW5jX2FwcGVuZCBvYmpzICIgJGFyZyIKKyAJOzsKKyAKKyAgICAgICAqLmxvKQorQEAgLTUwMjgsNyArNTg5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKy0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorKwkJZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJcHJldj0KKyAJCWNvbnRpbnVlCisgCSAgICAgIGVsc2UKK0BAIC01MDQwLDcgKzU5MDcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKyAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKysJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkgICAgICBwcmV2PQorIAkgICAgZmkKKyAKK0BAIC01MDg1LDI0ICs1OTUyLDI1IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgICAgICAgKi4kbGliZXh0KQorIAkjIEFuIGFyY2hpdmUuCistCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCistCW9sZF9kZXBsaWJzPSIkb2xkX2RlcGxpYnMgJGFyZyIKKysJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisrCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKKyAJY29udGludWUKKyAJOzsKKyAKKyAgICAgICAqLmxhKQorIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCisgCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkYXJnIgorIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCisgCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCistCSAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBwcmV2PQorIAllbGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKyAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgorLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisrCSAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgcHJldj0KKyAJZWxzZQorLQkgIGRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisrCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCWZpCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNTEyNyw3ICs1OTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCisgCisgICAgIGlmIHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXMgJiYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyI7IHRoZW4KKy0gICAgICBldmFsICJhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIiCisrICAgICAgZXZhbCBhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKKyAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorICAgICBmaQorQEAgLTUxNDQsMTEgKzYwMTIsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgZWxzZQorICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQorICAgICBmaQorLSAgICBldmFsICJzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiIgorLSAgICBldmFsICJzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIiIKKysgICAgZXZhbCBzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiCisrICAgIGV2YWwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIKKyAKKyAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKKyAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgorKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvIgorKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KKyAgICAgZnVuY19ta2Rpcl9wICIkb3V0cHV0X29iamRpciIKKyAKK0BAIC01MTY5LDEyICs2MDM5LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcworICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKKyAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KKy0gICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCWNhc2UgIiRsaWJzICIgaW4KKy0JKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCWVzYWMKKyAgICAgICBmaQorLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisrICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCisgICAgIGRvbmUKKyAKKyAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgorQEAgLTUxODcsOSArNjA1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KKyAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCisgCSAgY2FzZSAiJHByZV9wb3N0X2RlcHMgIiBpbgorLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CisrCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKKyAJICBlc2FjCistCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKysJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKKyAJZG9uZQorICAgICAgIGZpCisgICAgICAgcHJlX3Bvc3RfZGVwcz0KK0BAIC01MjU2LDggKzYxMjYsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbworIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKKyAJICBkZXBlbmRlbmN5X2xpYnM9CisrCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisgCSAgY2FzZSAkbGliIGluCistCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7CisrCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CisgCSAgZXNhYworIAorIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQorQEAgLTUyNjcsNyArNjEzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisgCSAgICBjYXNlICIgJHdlYWtfbGlicyAiIGluCisgCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7CistCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlkb25lCitAQCAtNTI4OCwxMSArNjE1OSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisgCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorIAkgIGVsc2UKKy0JICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisgCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkJICAgICoiICRkZXBsaWIgIiopIDs7CistCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKysJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OworIAkJZXNhYworIAkgICAgZmkKKyAJICBmaQorQEAgLTUzNzcsNyArNjI0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgorIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJCSAgICAqIiAkZGVwbGliICIqKSA7OworLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisrCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKKyAJCWVzYWMKKyAJICAgIGZpCisgCSAgZmkKK0BAIC01MzkwLDcgKzYyNjEsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQorIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgICA7OworIAkgIHByb2cpCisgCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCitAQCAtNTQwNCw3ICs2Mjc2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICAgIGZpCisgCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgICA7OworIAkgICopCisgCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCitAQCAtNTQxNSwxNyArNjI4OCwyMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAktUiopCisgCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKKy0JICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisgCSAgICAjIE1ha2Ugc3VyZSB0aGUgeHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgorIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCisgCSAgICAqIiAkZGlyICIqKSA7OworLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OworIAkgICAgZXNhYworIAkgIGZpCisgCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKyAJICBjb250aW51ZQorIAkgIDs7CistCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKysJKi5sYSkKKysJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKwkgIDs7CisgCSouJGxpYmV4dCkKKyAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisgCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorQEAgLTU0ODgsMTEgKzYzNjUsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCisgCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAorIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KKy0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCisgCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorIAkgICAgZWxzZQorLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGRlcGxpYiIKKyAJICAgIGZpCisgCSAgZmkKKyAJICBjb250aW51ZQorQEAgLTU1MzgsNyArNjQxNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbworIAkgICAgY2FzZSAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OworLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCWZpCitAQCAtNTU0Niw4ICs2NDIzLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKKyAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8CisgCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCistCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZGxmaWxlcz0iJGRsZmlsZXMgJGRsb3BlbiIKKy0JICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkZGxwcmVvcGVuIgorKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgorKwkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgorIAlmaQorIAorIAlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCitAQCAtNTU1OCwyMCArNjQzNSwyMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKKyAJICAgIGZpCisgCSAgICAjIEl0IGlzIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LCBzbyBhZGQgaW4gaXRzIG9iamVjdHMuCistCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKy0JICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKysJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKyAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgorIAkgIGZpCisgCSAgdG1wX2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKKyAJICBkb25lCisgCSAgY29udGludWUKKyAJZmkgIyAkcGFzcyA9IGNvbnYKK0BAIC01NTc5LDkgKzY0NTYsMTUgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgorIAlsaW5rbGliPQorLQlmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCistCSAgbGlua2xpYj0iJGwiCistCWRvbmUKKysJaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJgorKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8CisrCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KKysJICBsaW5rbGliPSRvbGRfbGlicmFyeQorKwllbHNlCisrCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworKwkgICAgbGlua2xpYj0iJGwiCisrCSAgZG9uZQorKwlmaQorIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KKyAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKKyAJZmkKK0BAIC01NTk4LDkgKzY0ODEsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKKyAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0CisgCSAgICAjIGJvbWIgb3V0IGluIHRoZSBsb2FkIGRlcGxpYnMgcGhhc2UuCistCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisrCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorIAkgIGVsc2UKKy0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKKyAJICBmaQorIAkgIGNvbnRpbnVlCisgCWZpICMgJHBhc3MgPSBkbG9wZW4KK0BAIC01NjIyLDE0ICs2NTA1LDE0IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgorIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCistCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorIAkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5IFxgJGxpYicgd2FzIG1vdmVkLiIKKyAJICAgIGRpcj0iJGxhZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgIGVsc2UKKy0JICAgIGRpcj0iJGxpYmRpciIKKy0JICAgIGFic2Rpcj0iJGxpYmRpciIKKysJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisgCSAgZmkKKyAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcworIAllbHNlCitAQCAtNTYzNywxMiArNjUyMCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgZGlyPSIkbGFkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCistCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKysJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCisgCSAgZWxzZQorIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgorIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgorLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisrCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgorIAkgIGZpCisgCWZpICMgJGluc3RhbGxlZCA9IHllcworIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKK0BAIC01NjUzLDIwICs2NTM2LDQ2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKKyAJICBmaQorLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorLQkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgorLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCistCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKy0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKy0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCistCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KKy0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCistCSAgZWxzZQorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKKy0JICBmaQorKwkgIGNhc2UgIiRob3N0IiBpbgorKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgorKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisrCSAgICAgICMgTGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcnkgaWYgYm90aAorKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAorKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50CisrCSAgICAgICMgKG90aGVyd2lzZSwgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSB3aWxsIGJlIGluY29ycmVjdCkuICBXZSBkbworKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgorKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQorKwkgICAgICAjIG5hbWUgaW4gYSBzcGVjaWFsIHB1cnBvc2UgdmFyaWFibGUsIGFuZCAobGF0ZXIpIGV4dHJhY3RpbmcgdGhlCisrCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCisrCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisrCSAgICAgICAgZnVuY190cl9zaCAiJGRpci8kbGlua2xpYiIKKysJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKysJICAgICAgZWxzZQorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKysJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKysJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisrCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICBmaQorKwkgICAgOzsKKysJICAgICogKQorKwkgICAgICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKKysJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCisrCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisrCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisrCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KKysJICAgICAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCisrCSAgICAgIGVsc2UKKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgZXNhYworIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCisgCisgCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCitAQCAtNTY4NCw3ICs2NTkzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAKKyAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KKy0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgorKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRsYWRpciIKKyAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgorIAorIAkgIGxpbmthbGxkZXBsaWJzPW5vCitAQCAtNTY5Nyw3ICs2NjA2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBjYXNlICRkZXBsaWIgaW4KKyAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkJIDs7CisgCSAgICBlc2FjCisgCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/CitAQCAtNTcwOCwxMiArNjYxOCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcworIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKyAJICAgIGZpCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKy0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCistCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisgCSAgZG9uZSAjIGZvciBkZXBsaWIKKyAJICBjb250aW51ZQorIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KK0BAIC01NzI4LDcgKzY2MzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCisgCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KKyAJICAgICAgKiIkYWJzZGlyOiIqKSA7OworLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAKK0BAIC01NzQwLDcgKzY2NTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OworLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU3NDksNyArNjY1OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkbGliZGlyICIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU3NzQsMTIgKzY2ODQsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBjYXNlICRob3N0IGluCisgCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKKyAJICAgICAgIyBObyBwb2ludCBpbiByZWxpbmtpbmcgRExMcyBiZWNhdXNlIHBhdGhzIGFyZSBub3QgZW5jb2RlZAorLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKKyAJICAgICAgbmVlZF9yZWxpbms9bm8KKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KKy0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCisgCSAgICAgIG5lZWRfcmVsaW5rPXllcworIAkgICAgZmkKKyAJICAgIDs7CitAQCAtNTgxNCw3ICs2NzI0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGFic2RpciAiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01ODIzLDcgKzY3MzMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01ODM1LDcgKzY3NDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgc2hpZnQKKyAJICAgIHJlYWxuYW1lPSIkMSIKKyAJICAgIHNoaWZ0CistCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisgCSAgICAjIHVzZSBkbG5hbWUgaWYgd2UgZ290IGl0LiBpdCdzIHBlcmZlY3RseSBnb29kLCBubz8KKyAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisgCSAgICAgIHNvbmFtZT0iJGRsbmFtZSIKK0BAIC01ODQ4LDcgKzY3NTgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJdmVyc3VmZml4PSItJG1ham9yIgorIAkJOzsKKyAJICAgICAgZXNhYworLQkgICAgICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKKysJICAgICAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgorIAkgICAgZWxzZQorIAkgICAgICBzb25hbWU9IiRyZWFsbmFtZSIKKyAJICAgIGZpCitAQCAtNTg3Nyw3ICs2Nzg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGxpbmtsaWI9JG5ld2xpYgorIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgorIAorLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKysJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgorIAkgICAgYWRkX3NobGlicGF0aD0KKyAJICAgIGFkZF9kaXI9CisgCSAgICBhZGQ9CitAQCAtNTkzMyw3ICs2ODQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQkgIGNhc2UgJGxpYmRpciBpbgorIAkJICAgIFtcXC9dKikKKy0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICAgIDs7CisgCQkgIGVzYWMKKyAJCWZpCitAQCAtNTk1NSw3ICs2ODY1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgorIAkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCisgCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OworLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KK0BAIC01OTY5LDEzICs2ODc5LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCisgCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgorIAkJKiI6JGxpYmRpcjoiKikgOzsKKy0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworKwkJKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCSAgZmkKKyAKKy0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisgCSAgICBhZGRfc2hsaWJwYXRoPQorIAkgICAgYWRkX2Rpcj0KKyAJICAgIGFkZD0KK0BAIC01OTg5LDcgKzY4OTksNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKyAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KKyAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKKy0JICAgICAgKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgYWRkPSItbCRuYW1lIgorIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgorQEAgLTYwMDEsMTIgKzY5MTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZmkKKyAJICAgIGVsc2UKKyAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KKy0JICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgorKwkgICAgICBhZGRfZGlyPSItTCRsdF9zeXNyb290JGxpYmRpciIKKyAJICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgorIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJY2FzZSAkbGliZGlyIGluCisgCQkgIFtcXC9dKikKKy0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCitAQCAtNjA4MywyNyArNjk5MywzMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KKyAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKKy0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKKysJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OworIAkJICAgZXNhYzs7CistCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgorIAkgIGZpCisgCistCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCisrCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGFic2RpciIKKyAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKKyAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKKyAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicworIAkgIHRtcF9saWJzPQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGNhc2UgJGRlcGxpYiBpbgorKyAgICAgICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OworKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7CisrICAgICAgICAgICAgZXNhYworKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKy0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQorKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCistCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgZG9uZQorIAorIAkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubzsgdGhlbgorQEAgLTYxMTMsOCArNzAyOSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBjYXNlICRkZXBsaWIgaW4KKyAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OworIAkgICAgICAqLmxhKQorKwkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisgCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKKy0JCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisrCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorIAkJY2FzZSAkZGlyIGluCisgCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKK0BAIC02MTMwLDcgKzcwNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJY2FzZSAkaG9zdCBpbgorIAkJKi0qLWRhcndpbiopCisgCQkgIGRlcGRlcGw9CistCQkgIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisrCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKyAJCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgorIAkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXMgOyBkbworIAkJICAgICAgZGVwZGVwbD0kdG1wCitAQCAtNjE0MSw4ICs3MDU5LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKKyAgICAgICAgICAgICAgICAgICAgICAgZmkKKy0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKy0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisrCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisrCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisgCQkgICAgICBwYXRoPQorIAkJICAgIGZpCisgCQkgIGZpCitAQCAtNjE1Miw3ICs3MDcwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSAgOzsKKyAJCWVzYWMKKyAJCWVsc2UKKy0JCSAgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisrCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisgCQkgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKyAJCSAgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiICYmIFwKK0BAIC02MTkyLDcgKzcxMTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KKyAJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgorIAkgICAgKiIgJGRpciAiKikgOzsKKy0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCSAgbmV3bGliX3NlYXJjaF9wYXRoPQorQEAgLTYyMDUsNyArNzEyMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZpCisgCWZvciB2YXIgaW4gJHZhcnMgZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICMgQWRkIGxpYnJhcmllcyB0byAkdmFyIGluIHJldmVyc2Ugb3JkZXIKKy0JICBldmFsIHRtcF9saWJzPVwkJHZhcgorKwkgIGV2YWwgdG1wX2xpYnM9XCJcJCR2YXJcIgorIAkgIG5ld19saWJzPQorIAkgIGZvciBkZXBsaWIgaW4gJHRtcF9saWJzOyBkbworIAkgICAgIyBGSVhNRTogUGVkYW50aWNhbGx5LCB0aGlzIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgc28KK0BAIC02MjUwLDEzICs3MTY4LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAtTCopCisgCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgorIAkgICAgICAqIiAkZGVwbGliICIqKSA7OworLQkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKy0JICBldmFsICR2YXI9XCR0bXBfbGlicworKwkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCisgCWRvbmUgIyBmb3IgdmFyCisgICAgICAgZmkKKyAgICAgICAjIExhc3Qgc3RlcDogcmVtb3ZlIHJ1bnRpbWUgbGlicyBmcm9tIGRlcGVuZGVuY3lfbGlicworQEAgLTYyNjksNyArNzE4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgOzsKKyAJZXNhYworIAlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCistCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKKysJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgorIAlmaQorICAgICAgIGRvbmUKKyAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCitAQCAtNjMxMCw3ICs3MjI4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KKyAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KKyAgICAgICBvbGRsaWJzPSIkb3V0cHV0IgorLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKKyAgICAgICA7OworIAorICAgICBsaWIpCitAQCAtNjMxOSw4ICs3MjM3LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBsaWIqKQorIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCistCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgorIAk7OworICAgICAgICopCisgCXRlc3QgIiRtb2R1bGUiID0gbm8gJiYgXAorQEAgLTYzMzAsOCArNzI0OCw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgIyBBZGQgdGhlICJsaWIiIHByZWZpeCBmb3IgbW9kdWxlcyBpZiByZXF1aXJlZAorIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKyAJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0JICBldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCistCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJICBldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwkgIGV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgorIAllbHNlCisgCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorIAkgIGxpYm5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorQEAgLTYzNDYsNyArNzI2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZWNobworIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKKyAJICAkRUNITyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKKy0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKKysJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCisgCWZpCisgICAgICAgZmkKKyAKK0BAIC02NTQ0LDcgKzc0NjIsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGRvbmUKKyAKKyAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCistCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKKysJICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjoke2N1cnJlbnR9LjAiCisgCSAgOzsKKyAKKyAJcW54KQorQEAgLTY2MTIsMTAgKzc1MzAsMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBmaQorIAorICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgorLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgorKyAgICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkc3ltZmlsZW9iaiIKKyAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAorLSAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKysgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgorIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQorIAkjIG1heSBoYXZlIGJlZW4gY3JlYXRlZCB3aGVuIGNvbXBpbGluZyBQSUMgb2JqZWN0cy4KKyAJcmVtb3ZlbGlzdD0KK0BAIC02NjMxLDcgKzc1NDksNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICAgY29udGludWUKKyAJCSBmaQorIAkgICAgICAgZmkKKy0JICAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRwIgorKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgorIAkgICAgICAgOzsKKyAJICAgICopIDs7CisgCSAgZXNhYworQEAgLTY2NDIsNyArNzU2MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCisgICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSBjb252ZW5pZW5jZSA7IHRoZW4KKy0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKysJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisgCisgCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KKyAJb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAkbG8ybyIgfCAkTkwyU1BgCitAQCAtNjY1OSwxMCArNzU3NywxMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCisgCXRlbXBfeHJwYXRoPQorIAlmb3IgbGliZGlyIGluICR4cnBhdGg7IGRvCistCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCisrCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisrCSAgZnVuY19hcHBlbmQgdGVtcF94cnBhdGggIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisgCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlkb25lCisgCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCitAQCAtNjY3Niw3ICs3NTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KKyAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KKyAJKiIgJGxpYiAiKikgOzsKKy0JKikgZGxmaWxlcz0iJGRsZmlsZXMgJGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgCitAQCAtNjY4Niw3ICs3NjA1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KKyAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgorIAkqIiAkbGliICIqKSA7OworLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAKK0BAIC02Njk4LDcgKzc2MTcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCisgCSAgICAjIFJoYXBzb2R5IEMgbGlicmFyeSBpcyBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKKyAJICAgIDs7CisgCSAgKi0qLW5ldGJzZCopCisgCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KK0BAIC02NzE1LDcgKzc2MzQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICopCisgCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgorIAkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgorLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCisgCSAgICBmaQorIAkgICAgOzsKKyAJICBlc2FjCitAQCAtNjc2NCwxOCArNzY4MywxOCBAQCBFT0YKKyAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCisgCQkgICoiICRpICIqKQorLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgICBpPSIiCisgCQkgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKKyAJCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKy0JCSAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCQkgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCisgCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisgCQkgIGRlcGxpYl9tYXRjaD0kMQorIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCistCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICBlbHNlCisgCQkgICAgZHJvcHBlZGRlcHM9eWVzCisgCQkgICAgZWNobworQEAgLTY3ODksNyArNzcwOCw3IEBAIEVPRgorIAkJZmkKKyAJCTs7CisgCSAgICAgICopCistCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC02ODA3LDE4ICs3NzI2LDE4IEBAIEVPRgorIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCisgCQkgICAgKiIgJGkgIiopCistCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgICAgIGk9IiIKKyAJCSAgICAgIDs7CisgCQkgICAgZXNhYworIAkJICBmaQorIAkJICBpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCistCQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKy0JCSAgICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKKysJCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKysJCSAgICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCisgCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKyAJCSAgICBkZXBsaWJfbWF0Y2g9JDEKKyAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCistCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgICBlbHNlCisgCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKKyAJCSAgICAgIGVjaG8KK0BAIC02ODQwLDcgKzc3NTksNyBAQCBFT0YKKyAJCWZpCisgCQk7OworIAkgICAgICAqKQorLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtNjg1NywxNSArNzc3NiwyNyBAQCBFT0YKKyAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCisgCQkqIiAkYV9kZXBsaWIgIiopCistCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCSAgYV9kZXBsaWI9IiIKKyAJCSAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKyAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KKy0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKysJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCisrCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCisrCQllbHNlCisrCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCisrCQlmaQorKwkJdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXMgJiYgbm9jYXNlZ2xvYj1gc2hvcHQgLXAgbm9jYXNlZ2xvYmAKKyAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbworLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgaWYgdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXM7IHRoZW4KKysJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCisrCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorKwkJICAgICRub2Nhc2VnbG9iCisrCQkgIGVsc2UKKysJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisrCQkgIGZpCisgCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KKyAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCisgCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgfAorQEAgLTY4ODUsMTAgKzc4MTYsMTAgQEAgRU9GCisgCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKyAJCQllc2FjCisgCQkgICAgICBkb25lCistCQkgICAgICBpZiBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIiAyPi9kZXYvbnVsbCB8CisrCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAorIAkJCSAkU0VEIC1lIDEwcSB8CisgCQkJICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCistCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkJYV9kZXBsaWI9IiIKKyAJCQlicmVhayAyCisgCQkgICAgICBmaQorQEAgLTY5MTMsNyArNzg0NCw3IEBAIEVPRgorIAkgICAgICA7OworIAkgICAgKikKKyAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KKy0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkgICAgICA7OworIAkgICAgZXNhYworIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCitAQCAtNjkyOSwyMCArNzg2MCwyMCBAQCBFT0YKKyAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCisgCQkqIiAkYV9kZXBsaWIgIiopCistCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCSAgYV9kZXBsaWI9IiIKKyAJCSAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKyAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KKy0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKyAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbworIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKKyAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworIAkJICAgIHBvdGxpYj0iJHBvdGVudF9saWIiICMgc2VlIHN5bWxpbmstY2hlY2sgYWJvdmUgaW4gZmlsZV9tYWdpYyB0ZXN0CisgCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKKyAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCSAgICAgIGFfZGVwbGliPSIiCisgCQkgICAgICBicmVhayAyCisgCQkgICAgZmkKK0BAIC02OTY3LDcgKzc4OTgsNyBAQCBFT0YKKyAJICAgICAgOzsKKyAJICAgICopCisgCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCistCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgorQEAgLTcwNzEsNyArODAwMiw3IEBAIEVPRgorIAkqKQorIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCisgCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQorLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisrCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTcwODEsMTAgKzgwMTIsMTAgQEAgRU9GCisgCS1MKikKKyAJICBjYXNlICIgJG5ld19saWJzICIgaW4KKyAJICAqIiAkZGVwbGliICIqKSA7OworLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgZXNhYworIAkgIDs7CistCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorICAgICAgIGRlcGxpYnM9IiRuZXdfbGlicyIKK0BAIC03MTAxLDEwICs4MDMyLDEyIEBAIEVPRgorIAkgIGhhcmRjb2RlX2xpYmRpcnM9CisgCSAgZGVwX3JwYXRoPQorIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCistCSAgdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisrCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbworIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisrCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisgCQllbHNlCitAQCAtNzExMywxOCArODA0NiwxOCBAQCBFT0YKKyAJCSAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJICAgIDs7CisgCQkgICopCistCQkgICAgaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisrCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJICAgIDs7CisgCQkgIGVzYWMKKyAJCWZpCisgCSAgICAgIGVsc2UKKy0JCWV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorLQkJZGVwX3JwYXRoPSIkZGVwX3JwYXRoICRmbGFnIgorKwkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCisgCSAgICAgIGZpCisgCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorIAkgICAgICAqIiAkbGliZGlyICIqKSA7OworLQkgICAgICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVkIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGRvbmUKK0BAIC03MTMzLDQwICs4MDY2LDM4IEBAIEVPRgorIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIjsgdGhlbgorLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiIgorKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKKyAJICAgIGVsc2UKKy0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgCSAgICBmaQorIAkgIGZpCisgCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KKyAJICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCisgCSAgICBycGF0aD0KKyAJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCistCSAgICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKysJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgICAgZG9uZQorLQkgICAgZXZhbCAkcnVucGF0aF92YXI9XCRycGF0aFwkJHJ1bnBhdGhfdmFyCistCSAgICBleHBvcnQgJHJ1bnBhdGhfdmFyCisrCSAgICBldmFsICIkcnVucGF0aF92YXI9JyRycGF0aFwkJHJ1bnBhdGhfdmFyJzsgZXhwb3J0ICRydW5wYXRoX3ZhciIKKyAJICBmaQorIAkgIHRlc3QgLW4gIiRkZXBfcnBhdGgiICYmIGRlcGxpYnM9IiRkZXBfcnBhdGggJGRlcGxpYnMiCisgCWZpCisgCisgCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKKy0JdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisrCXRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKyAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KKy0JICBldmFsICRzaGxpYnBhdGhfdmFyPVwkc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3ZhcgorLQkgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgorKwkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKyAJZmkKKyAKKyAJIyBHZXQgdGhlIHJlYWwgYW5kIGxpbmsgbmFtZXMgb2YgdGhlIGxpYnJhcnkuCistCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JZXZhbCAibGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKKysJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiCisgCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcworIAlzaGlmdAorIAlyZWFsbmFtZT0iJDEiCisgCXNoaWZ0CisgCisgCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KKy0JICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKKysJICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCisgCWVsc2UKKyAJICBzb25hbWU9IiRyZWFsbmFtZSIKKyAJZmkKK0BAIC03MTc4LDcgKzgxMDksNyBAQCBFT0YKKyAJbGlua25hbWVzPQorIAlmb3IgbGluaworIAlkbworLQkgIGxpbmtuYW1lcz0iJGxpbmtuYW1lcyAkbGluayIKKysJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKKyAJZG9uZQorIAorIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYworQEAgLTcxODksNyArODEyMCw3IEBAIEVPRgorIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgorIAkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgorLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgorKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgorIAlmaQorIAorIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQorQEAgLTcyMjAsMTMgKzgxNTEsNDUgQEAgRU9GCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scworIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcworIAkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCistCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworKwkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCisgCSAgICAgIElGUz0iJHNhdmVfaWZzIgorLQkgICAgICBldmFsICJjbWQ9XCIkY21kXCIiCistCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKKy0JICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKy0JICAgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisrCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCisrCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgorKwkgICAgICBjYXNlICRubV9maWxlX2xpc3Rfc3BlY34kdG9fdG9vbF9maWxlX2NtZCBpbgorKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQorKwkJICB0cnlfbm9ybWFsX2JyYW5jaD15ZXMKKysJCSAgZXZhbCBjbWQ9XCIkY21kMVwiCisrCQkgIGZ1bmNfbGVuICIgJGNtZCIKKysJCSAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKysJCSAgOzsKKysJCSopCisrCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCisrCQkgIDs7CisrCSAgICAgIGVzYWMKKysJICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCisrCQkgJiYgeyB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgXAorKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KKysJICAgICAgdGhlbgorKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworKwkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKysJICAgICAgZWxpZiB0ZXN0IC1uICIkbm1fZmlsZV9saXN0X3NwZWMiOyB0aGVuCisrCQlmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorKwkJc2F2ZV9saWJvYmpzPSRsaWJvYmpzCisrCQlzYXZlX291dHB1dD0kb3V0cHV0CisrCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKysJCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisrCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCQlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICROTSBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCisrCQlmb3Igb2JqIGluICRzYXZlX2xpYm9ianM7IGRvCisrCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkJICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJCWRvbmUgPiAiJG91dHB1dCIKKysJCWV2YWwgY21kPVwiJGNtZDFcIgorIAkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworKwkJb3V0cHV0PSRzYXZlX291dHB1dAorKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCisgCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorIAkgICAgICBlbHNlCisgCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KK0BAIC03MjQ4LDcgKzgyMTEsNyBAQCBFT0YKKyAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgorIAkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorLQkgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisgCWZpCisgCisgCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCitAQCAtNzI2MCw3ICs4MjIzLDcgQEAgRU9GCisgCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKKyAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgorLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKysJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisgCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisgCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKyAJZmkKK0BAIC03MjcwLDcgKzgyMzMsNyBAQCBFT0YKKyAJICBjYXNlICIgJGNvbnZlbmllbmNlICIgaW4KKyAJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7CisgCSAgKikKKy0JICAgIHRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2RlcGxpYnMgIiAkdGVzdF9kZXBsaWIiCisgCSAgICA7OworIAkgIGVzYWMKKyAJZG9uZQorQEAgLTcyODYsNDMgKzgyNDksNDMgQEAgRU9GCisgCSAgZmkKKyAJICBpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCisgCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKKy0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCisrCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKyAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCSAgZWxzZQorIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgICAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQorLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGZpCisgCWZpCisgCisgCWlmIHRlc3QgIiR0aHJlYWRfc2FmZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KKy0JICBldmFsICJmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiIgorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKysJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKKyAJZmkKKyAKKyAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCistCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSkgfHwgZXhpdCAkPworKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPworIAlmaQorIAorIAkjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCisgCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCisgCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkbW9kdWxlX2V4cHN5bV9jbWRzIjsgdGhlbgorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIKKyAJICAgIGNtZHM9JG1vZHVsZV9leHBzeW1fY21kcworIAkgIGVsc2UKKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIgorIAkgICAgY21kcz0kbW9kdWxlX2NtZHMKKyAJICBmaQorIAllbHNlCisgCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIKKyAJICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKKyAJICBlbHNlCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIgorIAkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCisgCSAgZmkKKyAJZmkKK0BAIC03MzY2LDEwICs4MzI5LDEzIEBAIEVPRgorIAkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0CisgCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKKyAJICAgIGRvCistCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisrCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAorIAkgICAgZG9uZQorIAkgICAgZWNobyAnKScgPj4gJG91dHB1dAorLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorIAkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCisgCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCisgCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCitAQCAtNzM4MywxNSArODM0OSwxNyBAQCBFT0YKKyAJICAgIGZpCisgCSAgICBmb3Igb2JqCisgCSAgICBkbworLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKKyAJICAgIGRvbmUKKy0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKy0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKKyAJICBlbHNlCisgCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgorIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgorIAkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKy0JICAgICAgZXZhbCAidGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCisrCSAgICAgIGV2YWwgdGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKKyAJICAgICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgorIAkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKyAJICAgICAgbGVuPSRsZW4wCitAQCAtNzQxMSwxMiArODM3OSwxMiBAQCBFT0YKKyAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgorIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCisgCQkgICAgcmVsb2FkX29ianM9JG9iamxpc3QKKy0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiIgorKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorIAkJICBlbHNlCisgCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KKyAJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorIAkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCisrCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCisgCQkgIGZpCisgCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorIAkJICBmdW5jX2FyaXRoICRrICsgMQorQEAgLTc0MzMsMTEgKzg0MDEsMTEgQEAgRU9GCisgCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKyAJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgorIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorLQkgICAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiIgorKwkgICAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIKKyAJICAgICAgZmkKKy0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisgCisgCSAgICBlbHNlCisgCSAgICAgIG91dHB1dD0KK0BAIC03NDUwLDkgKzg0MTgsOSBAQCBFT0YKKyAJICAgICAgbGlib2Jqcz0kb3V0cHV0CisgCSAgICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiIgorKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIKKyAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KKy0JCWV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKKysJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCisgCSAgICAgIGZpCisgCSAgICBmaQorIAorQEAgLTc0NzEsNyArODQzOSw3IEBAIEVPRgorIAkJbHRfZXhpdD0kPworIAorIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKysJCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKyAJCSAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAorIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCitAQCAtNzQ5Miw3ICs4NDYwLDcgQEAgRU9GCisgCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgorIAkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKy0JICAgICAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKKysJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisgCSAgICBmaQorIAorIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCitAQCAtNzUwNCw3ICs4NDcyLDcgQEAgRU9GCisgCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisgCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCisgCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgorLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKyAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisgCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCisgCSAgICBmaQorQEAgLTc1MTUsNyArODQ4Myw3IEBAIEVPRgorIAkgIG91dHB1dD0kc2F2ZV9vdXRwdXQKKyAKKyAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKy0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCisrCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKyAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCSAgZmkKKyAJICAjIEV4cGFuZCB0aGUgbGlicmFyeSBsaW5raW5nIGNvbW1hbmRzIGFnYWluIHRvIHJlc2V0IHRoZQorQEAgLTc1MzksMjMgKzg1MDcsMjMgQEAgRU9GCisgCisgCWlmIHRlc3QgLW4gIiRkZWxmaWxlcyI7IHRoZW4KKyAJICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzIHRvICRjbWRzLgorLQkgIGV2YWwgImNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIiIKKysJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIgorIAlmaQorIAorIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKyAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCistCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCWZpCisgCisgCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworIAlmb3IgY21kIGluICRjbWRzOyBkbworIAkgIElGUz0iJHNhdmVfaWZzIgorLQkgIGV2YWwgImNtZD1cIiRjbWRcIiIKKysJICBldmFsIGNtZD1cIiRjbWRcIgorIAkgICRvcHRfc2lsZW50IHx8IHsKKyAJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKKyAJICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKK0BAIC03NTY0LDcgKzg1MzIsNyBAQCBFT0YKKyAJICAgIGx0X2V4aXQ9JD8KKyAKKyAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQkgICAgaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisgCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCisgCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKyAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCitAQCAtNzU3Niw4ICs4NTQ0LDggQEAgRU9GCisgCUlGUz0iJHNhdmVfaWZzIgorIAorIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCistCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKSB8fCBleGl0ICQ/CisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CisgCisgCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgorIAkgICAgaWYgdGVzdCAteiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorQEAgLTc2NTYsMTcgKzg2MjQsMjAgQEAgRU9GCisgCisgICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgorIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgZXZhbCAidG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKyAJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCisgCWVsc2UKKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKKyAJICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCWZpCisgICAgICAgZmkKKyAKKysgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcworKyAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgorKworICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorICAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7IC9cLmxpYiQvZDsgJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorIAorQEAgLTc2OTAsNyArODY2MSw3IEBAIEVPRgorIAkjIENyZWF0ZSBhbiBpbnZhbGlkIGxpYnRvb2wgb2JqZWN0IGlmIG5vIFBJQywgc28gdGhhdCB3ZSBkb24ndAorIAkjIGFjY2lkZW50YWxseSBsaW5rIGl0IGludG8gYSBwcm9ncmFtLgorIAkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCistCSMgJG9wdF9kcnlfcnVuIHx8IGVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiB8fCBleGl0ICQ/CisrCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPworIAlleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgICBmaQorIAorQEAgLTc3NDAsOCArODcxMSw4IEBAIEVPRgorIAlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCisgCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgorIAkgICAgMTAuWzAxMjNdKQorLQkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorLQkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKysJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKyAJICAgIDs7CisgCSAgZXNhYworIAlmaQorQEAgLTc3NjEsNyArODczMiw3IEBAIEVPRgorIAkqKQorIAkgIGNhc2UgIiAkY29tcGlsZV9kZXBsaWJzICIgaW4KKyAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCistCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKysJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzc3MSwxNyArODc0MiwxNyBAQCBFT0YKKyAJLUwqKQorIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgorIAkgICoiICRkZXBsaWIgIiopIDs7CistCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJICBlc2FjCisgCSAgOzsKKy0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCisgCisgCistICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRjb21waWxlX2RlcGxpYnMiCistICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGZpbmFsaXplX2RlcGxpYnMiCisgCisgICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KKyAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorQEAgLTc3ODksNyArODc2MCw3IEBAIEVPRgorIAkgICMgVGhpcyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KKyAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAgICAgICBmaQorQEAgLTc4MDgsMTggKzg3NzksMTggQEAgRU9GCisgCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCTs7CisgCSAgICAgICopCistCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAJY2FzZSAkaG9zdCBpbgorQEAgLTc4MjgsMTIgKzg3OTksMTIgQEAgRU9GCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JGxpYmRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kbGliZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRsaWJkaXIiOzsKKyAJICBlc2FjCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03ODQyLDcgKzg4MTMsNyBAQCBFT0YKKyAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKKyAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICBmaQorICAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKKyAKK0BAIC03ODU5LDE4ICs4ODMwLDE4IEBAIEVPRgorIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQk7OworIAkgICAgICAqKQorLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisrCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKysJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9wZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgICAgICAgZG9uZQorQEAgLTc4NzgsNyArODg0OSw3IEBAIEVPRgorICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCistCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgIGZpCisgICAgICAgZmluYWxpemVfcnBhdGg9IiRycGF0aCIKKyAKK0BAIC03OTIxLDYgKzg4OTIsMTIgQEAgRU9GCisgCWV4aXRfc3RhdHVzPTAKKyAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKKyAKKysJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisrCWZpCisrCisgCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCisgCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KKyAJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJworQEAgLTc5NDMsNyArODkyMCw3IEBAIEVPRgorIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCisgCSAgcnBhdGg9CisgCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KKy0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKKyAJICBkb25lCisgCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorIAlmaQorQEAgLTc5NTEsNyArODkyOCw3IEBAIEVPRgorIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCisgCSAgcnBhdGg9CisgCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KKy0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKKyAJICBkb25lCisgCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKKyAJZmkKK0BAIC03OTY2LDYgKzg5NDMsMTMgQEAgRU9GCisgCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAorIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKKyAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworKworKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisrCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysJZmkKKysKKyAJZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgICAgZmkKKyAKK0BAIC03OTk5LDYgKzg5ODMsMTIgQEAgRU9GCisgCisgICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworIAorKyAgICAgIGlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiCisrCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisrCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisrICAgICAgZmkKKysKKyAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgorICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKKyAKK0BAIC04MDk2LDcgKzkwODYsNyBAQCBFT0YKKyAJZWxzZQorIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgorIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KKy0JICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgorKwkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgorIAkgIGZpCisgCWZpCisgCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCitAQCAtODEwNCwxMCArOTA5NCwxMCBAQCBFT0YKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KKyAJZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRhZGRsaWJzCistCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwlmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgICAgICAgZmkKKyAKKyAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KK0BAIC04MTE4LDEwICs5MTA4LDEwIEBAIEVPRgorIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKyAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCistCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAlmaQorIAorIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKK0BAIC04MTM5LDcgKzkxMjksNyBAQCBFT0YKKyAJZWxzZQorIAkgIGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgorIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcworIAkgIG9sZG9ianM9CitAQCAtODE2MywxOCArOTE1MywyOCBAQCBFT0YKKyAJCWVzYWMKKyAJICAgICAgZG9uZQorIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCistCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKKysJICAgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRnZW50b3AvJG5ld29iaiIKKyAJICAgICAgOzsKKy0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJG9iaiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCWZpCistCWV2YWwgImNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgorKwlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisgCisgCWZ1bmNfbGVuICIgJGNtZHMiCisgCWxlbj0kZnVuY19sZW5fcmVzdWx0CisgCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKysJZWxpZiB0ZXN0IC1uICIkYXJjaGl2ZXJfbGlzdF9zcGVjIjsgdGhlbgorKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgY29tbWFuZCBmaWxlIGFyY2hpdmUgbGlua2luZy4uLiIKKysJICBmb3Igb2JqIGluICRvbGRvYmpzCisrCSAgZG8KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCSAgZG9uZSA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZAorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQiCisrCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKyAJZWxzZQorIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCisgCSAgZnVuY192ZXJib3NlICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgorQEAgLTgxODksNyArOTE4OSw3IEBAIEVPRgorIAkgIGRvCisgCSAgICBsYXN0X29sZG9iaj0kb2JqCisgCSAgZG9uZQorLQkgIGV2YWwgInRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgorIAkgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorIAkgIGxlbj0kbGVuMAorQEAgLTgyMDgsNyArOTIwOCw3IEBAIEVPRgorIAkJUkFOTElCPSRzYXZlX1JBTkxJQgorIAkgICAgICBmaQorIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiIgorKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIgorIAkgICAgICBvYmpsaXN0PQorIAkgICAgICBsZW49JGxlbjAKKyAJICAgIGZpCitAQCAtODIxNiw5ICs5MjE2LDkgQEAgRU9GCisgCSAgUkFOTElCPSRzYXZlX1JBTkxJQgorIAkgIG9sZG9ianM9JG9iamxpc3QKKyAJICBpZiB0ZXN0ICJYJG9sZG9ianMiID0gIlgiIDsgdGhlbgorLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHNcIiIKKysJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHNcIgorIAkgIGVsc2UKKy0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiIgorKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIgorIAkgIGZpCisgCWZpCisgICAgICAgZmkKK0BAIC04MjY4LDEyICs5MjY4LDIzIEBAIEVPRgorIAkgICAgICAqLmxhKQorIAkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisrCQk7OworKwkgICAgICAtTCopCisrCQlmdW5jX3N0cmlwbmFtZSAtTCAnJyAiJGRlcGxpYiIKKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorIAkJOzsKKy0JICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7CisrCSAgICAgIC1SKikKKysJCWZ1bmNfc3RyaXBuYW1lIC1SICcnICIkZGVwbGliIgorKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisrCQk7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCisgCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCitAQCAtODI4NCwxMiArOTI5NSwxNCBAQCBFT0YKKyAJICAgICAgKi5sYSkKKyAJICAgICAgICBmdW5jX2Jhc2VuYW1lICIkbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisrCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKyAJCTs7CistCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCisgCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKK0BAIC04MzAzLDEwICs5MzE2LDExIEBAIEVPRgorIAkJIyB0aGUgbGlicmFyeToKKyAJCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgorKwkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTgzMTgsNyArOTMzMiw3IEBAIEVPRgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CisgCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGFicyIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCisgCSAgICBkb25lCisgCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKKyAJICAgIG5ld2RscHJlZmlsZXM9CitAQCAtODMyNyw3ICs5MzQxLDcgQEAgRU9GCisgCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKKyAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKKyAJICAgICAgZXNhYworLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkYWJzIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKKyAJICAgIGRvbmUKKyAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgorIAkgIGZpCitAQCAtODQxMiw3ICs5NDI2LDcgQEAgcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIiIKKyAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgfQorIAorLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKKyt7IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKKyAgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CisgCisgCitAQCAtODQzMiw5ICs5NDQ2LDkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorICAgICBmb3IgYXJnCisgICAgIGRvCisgICAgICAgY2FzZSAkYXJnIGluCistICAgICAgLWYpIFJNPSIkUk0gJGFyZyI7IHJtZm9yY2U9eWVzIDs7CistICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKKy0gICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CisrICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7CisrICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKKysgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7CisgICAgICAgZXNhYworICAgICBkb25lCisgCitAQCAtODQ0MywyNCArOTQ1NywyMyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCisgICAgIHJtZGlycz0KKyAKKy0gICAgb3JpZ29iamRpcj0iJG9iamRpciIKKyAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbworICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorICAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisgICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KKy0Jb2JqZGlyPSIkb3JpZ29iamRpciIKKysJb2Rpcj0iJG9iamRpciIKKyAgICAgICBlbHNlCistCW9iamRpcj0iJGRpci8kb3JpZ29iamRpciIKKysJb2Rpcj0iJGRpci8kb2JqZGlyIgorICAgICAgIGZpCisgICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisgICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCisrICAgICAgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCAmJiBvZGlyPSIkZGlyIgorIAorLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKy0gICAgICBpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgdGhlbgorKyAgICAgICMgUmVtZW1iZXIgb2RpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCisrICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCisgCWNhc2UgIiAkcm1kaXJzICIgaW4KKy0JICAqIiAkb2JqZGlyICIqKSA7OworLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OworKwkgICoiICRvZGlyICIqKSA7OworKwkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OworIAllc2FjCisgICAgICAgZmkKKyAKK0BAIC04NDg2LDE4ICs5NDk5LDE3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgorIAkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbworLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbiIKKyAJICBkb25lCistCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKysJICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kb2xkX2xpYnJhcnkiCisgCistCSAgY2FzZSAiJG1vZGUiIGluCisrCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgorIAkgIGNsZWFuKQorLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCistCSAgICAjICIgICIgaW4gdGhlIGJlZ2lubmluZyBjYXRjaGVzIGVtcHR5ICRkbG5hbWUKKysJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCisgCSAgICAqIiAkZGxuYW1lICIqKSA7OworLQkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OworKwkgICAgKikgdGVzdCAtbiAiJGRsbmFtZSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUiIDs7CisgCSAgICBlc2FjCistCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCisrCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfWkiCisgCSAgICA7OworIAkgIHVuaW5zdGFsbCkKKyAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgorQEAgLTg1MjUsMTkgKzk1MzcsMTkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgorIAkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiAmJgorIAkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCisgCSAgZmkKKyAKKyAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCisgCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgorIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kbm9uX3BpY19vYmplY3QiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCisgCSAgZmkKKyAJZmkKKyAJOzsKKyAKKyAgICAgICAqKQorLQlpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbiA7IHRoZW4KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgorIAkgIG5vZXhlbmFtZT0kbmFtZQorIAkgIGNhc2UgJGZpbGUgaW4KKyAJICAqLmV4ZSkKK0BAIC04NTQ3LDcgKzk1NTksNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkgICAgIyAkZmlsZSB3aXRoIC5leGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBybWZpbGVzLAorIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZmlsZSIKKyAJICAgIDs7CisgCSAgZXNhYworIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgorQEAgLTg1NTYsNyArOTU2OCw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCisgCSAgICAgIHJlbGlua19jb21tYW5kPQorIAkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorIAkgICAgZWxzZQorIAkgICAgICByZWxpbmtfY29tbWFuZD0KKyAJICAgICAgZnVuY19zb3VyY2UgJGRpci8kbm9leGVuYW1lCitAQCAtODU2NCwxMiArOTU3NiwxMiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCisgCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQorIAkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9Uy4ke29iamV4dH0iCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorIAkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSRuYW1lIgorKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCisgCSAgICBmaQorIAkgICAgaWYgdGVzdCAiWCRub2V4ZW5hbWUiICE9ICJYJG5hbWUiIDsgdGhlbgorLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisgCSAgICBmaQorIAkgIGZpCisgCWZpCitAQCAtODU3Nyw3ICs5NTg5LDYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorICAgICAgIGVzYWMKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKKyAgICAgZG9uZQorLSAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgorIAorICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKKyAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbworQEAgLTg1ODksMTYgKzk2MDAsMTYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorICAgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKKy17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgorK3sgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKKyAgICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KKyAKKy10ZXN0IC16ICIkbW9kZSIgJiYgeworK3Rlc3QgLXogIiRvcHRfbW9kZSIgJiYgeworICAgaGVscD0iJGdlbmVyaWNfaGVscCIKKyAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCisgfQorIAorIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAorLSAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKKyAKKyBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCisgICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKK2RpZmYgLS1naXQgYS9sdG9wdGlvbnMubTQgYi9sdG9wdGlvbnMubTQKK2luZGV4IDVlZjEyY2VkMmE4Li4xN2NmZDUxYzBiMyAxMDA2NDQKKy0tLSBhL2x0b3B0aW9ucy5tNAorKysrIGIvbHRvcHRpb25zLm00CitAQCAtOCw3ICs4LDcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKKysjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAorIAorICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCisgQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQorZGlmZiAtLWdpdCBhL2x0dmVyc2lvbi5tNCBiL2x0dmVyc2lvbi5tNAoraW5kZXggYmY4N2Y3NzEzMmQuLjljN2I1ZDQxMTg1IDEwMDY0NAorLS0tIGEvbHR2ZXJzaW9uLm00CisrKysgYi9sdHZlcnNpb24ubTQKK0BAIC03LDE3ICs3LDE3IEBACisgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgorKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKyAKKy0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAorKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00CisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAorIAorLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCistbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCisrbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKKyttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKKyAKKyBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAorLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKytbbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCisgX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKKyBdKQorZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKK2luZGV4IGJmOTJiNWUwNzkwLi5jNTczZGE5MGM1YyAxMDA2NDQKKy0tLSBhL2x0fm9ic29sZXRlLm00CisrKysgYi9sdH5vYnNvbGV0ZS5tNAorQEAgLTcsNyArNyw3IEBACisgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKysjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00CisgCisgIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCisgIworZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlIGIvb3Bjb2Rlcy9jb25maWd1cmUKK2luZGV4IDQ3MjNkY2RjMWU4Li4wMDZjY2RhYTQ1OCAxMDA3NTUKKy0tLSBhL29wY29kZXMvY29uZmlndXJlCisrKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQorQEAgLTY4MCw2ICs2ODAsOSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKythY19jdF9BUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzk4LDYgKzgwMSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlX3dlcnJvcgorQEAgLTE0NjIsNiArMTQ2Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTU0MDMsOCArNTQwOSw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01NDQ0LDcgKzU0NTAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02MTMwLDggKzYxMzYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjE4MCw2ICs2MTg2LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MTk2LDYgKzYyNzYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYzNjQsNyArNjQ0OSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02NTE4LDYgKzY2MDQsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02NTMxLDExICs2NjMyLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTUxLDcgKzY4MDUsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NTcxLDExICs2ODI1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1OTEsNyArNjg0OSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NjEwLDYgKzY4NjgsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY2MjEsMTYgKzY4ODMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02OTcyLDggKzcyOTAsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcwMDksNiArNzMyNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MDUwLDYgKzczNjksMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzA2MSw3ICs3MzkyLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzA4Nyw4ICs3NDE4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzA5OCw4ICs3NDI5LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzEzNiw2ICs3NDY3LDE2IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzE1Miw2ICs3NDkzLDQ1IEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzM2Myw2ICs3NzQzLDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03OTI2LDYgKzg0MjMsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODA5MSw3ICs4NTkwLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgxODAsNyArODY4MCw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODQ3OCw4ICs4OTc4LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NjQ1LDYgKzkxNDMsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04NzA3LDcgKzkyMTEsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODc2NCwxMyArOTI2OCwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04ODMxLDYgKzkzMzksMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MTgxLDcgKzk2OTQsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MjgwLDEyICs5Nzk0LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkyOTksOCArOTgxMyw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MzE4LDggKzk4MzIsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTM2NSw4ICs5ODc5LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk0OTYsNyArMTAwMTAsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTUwOSwyMiArMTAwMjksMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk1MzYsNyArMTAwNjMsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1NDksMjIgKzEwMDgyLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTYwOSwyMCArMTAxNDksNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NjgzLDcgKzEwMjY2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTY5MSw3ICsxMDI3NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk3MDcsNyArMTAyOTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTczMSwxMCArMTAzMTQsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05ODEzLDIzICsxMDM5NiwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTkxNCw3ICsxMDUxMCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk5MzMsOSArMTA1MjksOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1MTEsOCArMTExMDcsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA1NDUsMTMgKzExMTQyLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDY0Myw3ICsxMTI5OCw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTQzOSw3ICsxMjA5NCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDQyICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ4MywxMCArMTIxMzgsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTU0NSw3ICsxMjIwMCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNTQ4ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTU4OSwxMCArMTIyNDQsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzc1NiwxMyArMTQ0MTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzc3NywxNCArMTQ0MzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM4MTcsMTIgKzE0NDgyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzODc3LDggKzE0NTQyLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzg4OCwxMiArMTQ1NTgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzOTA5LDcgKzE0NTgxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTM5NDUsNiArMTQ2MTYsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0NzEwLDcgKzE1MzgyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDgxMywxOSArMTU0ODYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQ4NTUsNiArMTU1NTEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQ4NjQsNiArMTU1NjYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0OTc4LDEyICsxNTY4MywxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNTA3MCw5ICsxNTc3NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE1MDg4LDYgKzE1NzkwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNTEyMCwyMTAgKzE1ODI1LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJjNjMxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDhjYjAxMzEwNmMzNzllODFmZTQwY2ZkZjQ4NmQ5ODA1YzllMjc2YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZwotIGluc3RhbGxhdGlvbiBsb2NhdGlvbgotCi1UaGFua3MgdG8gUlAgZm9yIGhlbHBpbmcgZmluZCB0aGUgc291cmNlIGNvZGUgY2F1c2luZyB0aGUgaXNzdWUuCi0KLTIwMTAvMDgvMTMKLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJpYmVydHkvTWFrZWZpbGUuaW4gfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotaW5kZXggMGJlNDViNGFlOC4uNDgxNzYxNmJiMiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1AQCAtMzY0LDcgKzM2NCw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKLSAjIG11bHRpbGliLXNwZWNpZmljIGZsYWdzLCBpdCdzIG92ZXJyaWRkZW4gYnkgRkxBR1NfVE9fUEFTUyBmcm9tIHRoZQotICMgZGVmYXVsdCBtdWx0aWxpYiwgc28gd2UgaGF2ZSB0byB0YWtlIENGTEFHUyBpbnRvIGFjY291bnQgYXMgd2VsbCwKLSAjIHNpbmNlIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSBtdWx0aWxpYiBmbGFncy4KLS1NVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotKyNNVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotK01VTFRJT1NESVIgPSAiIgotIGluc3RhbGxfdG9fbGliZGlyOiBhbGwKLSAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKLSAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlOTRhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGUzNmE0ZTA1ZjkwMGJiZTZhOGQ3NDRhOTNmM2E0MDdiYzU1Yzk2ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZyBpbnN0YWxsYXRpb24KKyBsb2NhdGlvbgorCitUaGFua3MgdG8gUlAgZm9yIGhlbHBpbmcgZmluZCB0aGUgc291cmNlIGNvZGUgY2F1c2luZyB0aGUgaXNzdWUuCisKKzIwMTAvMDgvMTMKK05pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJpYmVydHkvTWFrZWZpbGUuaW4gfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgoraW5kZXggZmU3MzhkMGRiNC4uMjdkODE4ZjI1MyAxMDA2NDQKKy0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgorKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitAQCAtMzY1LDcgKzM2NSw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKKyAjIG11bHRpbGliLXNwZWNpZmljIGZsYWdzLCBpdCdzIG92ZXJyaWRkZW4gYnkgRkxBR1NfVE9fUEFTUyBmcm9tIHRoZQorICMgZGVmYXVsdCBtdWx0aWxpYiwgc28gd2UgaGF2ZSB0byB0YWtlIENGTEFHUyBpbnRvIGFjY291bnQgYXMgd2VsbCwKKyAjIHNpbmNlIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSBtdWx0aWxpYiBmbGFncy4KKy1NVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorKyNNVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorK01VTFRJT1NESVIgPSAiIgorIGluc3RhbGxfdG9fbGliZGlyOiBhbGwKKyAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKKyAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Mjc4MjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjczICswLDAgQEAKLUZyb20gOThmNjhjMDg5MmJhNGJiZDUzYjBhMGE0Y2JiZGYwYjcxOTdlMDMyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTVdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZwotCi0yMDA4LTA3LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNi0xMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBsZC8KLSAgICAqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGQudGV4aW5mbyAoLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCi0gICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjawotICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCi0gICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCi0gICAgKGxkX29wdGlvbnMpOiBBZGQgLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgotICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCi0KLTIwMDctMDQtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgTWVyZ2UgZnJvbSBTb3VyY2VyeSBHKysgYmludXRpbHMgMi4xNzoKLQotICAgIDIwMDctMDMtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotICAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4uCi0gICAgbGQvCi0gICAgKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBOZXcgb3B0aW9uLgotICAgICogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0gICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBJZgotICAgIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIGRlZmluZWQsIHdhcm4gZm9yIHVzZSBvZiAvbGliLAotICAgIC91c3IvbGliLCAvdXNyL2xvY2FsL2xpYiBvciAvdXNyL1gxMVI2L2xpYi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxkL2NvbmZpZy5pbiAgICB8ICAzICsrKwotIGxkL2NvbmZpZ3VyZSAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSBsZC9jb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCi0gbGQvbGQuaCAgICAgICAgIHwgIDggKysrKysrKysKLSBsZC9sZC50ZXhpICAgICAgfCAxMiArKysrKysrKysrKysKLSBsZC9sZGZpbGUuYyAgICAgfCAxNyArKysrKysrKysrKysrKysrKwotIGxkL2xkbGV4LmggICAgICB8ICAyICsrCi0gbGQvbGRtYWluLmMgICAgIHwgIDIgKysKLSBsZC9sZXhzdXAuYyAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gOSBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KLWluZGV4IGQ5M2M5YjA4MzAuLjVkYTI3NDJiZWEgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWcuaW4KLSsrKyBiL2xkL2NvbmZpZy5pbgotQEAgLTMxLDYgKzMxLDkgQEAKLSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCi0gI3VuZGVmIEVOQUJMRV9OTFMKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcyAqLwotKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKwotIC8qIEFkZGl0aW9uYWwgZXh0ZW5zaW9uIGEgc2hhcmVkIG9iamVjdCBtaWdodCBoYXZlLiAqLwotICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KLSAKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IDQzYzM5MWMyYjMuLmZmOWY2YjNjMDIgMTAwNzU1Ci0tLS0gYS9sZC9jb25maWd1cmUKLSsrKyBiL2xkL2NvbmZpZ3VyZQotQEAgLTgyNiw2ICs4MjYsNyBAQCB3aXRoX2xpYl9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotIHdpdGhfc3lzcm9vdAotK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0gZW5hYmxlX2dvbGQKLSBlbmFibGVfZ290Ci0gZW5hYmxlX2NvbXByZXNzZWRfZGVidWdfc2VjdGlvbnMKLUBAIC0xNDkwLDYgKzE0OTEsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKLSAgIC0tZW5hYmxlLXRhcmdldHMgICAgICAgIGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotICAgLS1lbmFibGUtNjQtYml0LWJmZCAgICAgNjQtYml0IHN1cHBvcnQgKG9uIGhvc3RzIHdpdGggbmFycm93ZXIgd29yZCBzaXplcykKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMKLSAgIC0tZW5hYmxlLWdvbGRbPUFSR10gICAgIGJ1aWxkIGdvbGQgW0FSRz17ZGVmYXVsdCx5ZXMsbm99XQotICAgLS1lbmFibGUtZ290PTx0eXBlPiAgICAgR09UIGhhbmRsaW5nIHNjaGVtZSAodGFyZ2V0LCBzaW5nbGUsIG5lZ2F0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlnb3QpCi1AQCAtMTY2MTgsNiArMTY2MjEsMTkgQEAgZmkKLSAKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ29sZCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCi1pbmRleCBkMzM1ZjIxMDkxLi43ZjY5MmQ5Mzg3IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLmFjCi0rKysgYi9sZC9jb25maWd1cmUuYWMKLUBAIC05NCw2ICs5NCwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1QpCi0gQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgIFsxXSwKLSsgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSkKLStmaQotKwotIGRubCBVc2UgLS1lbmFibGUtZ29sZCB0byBkZWNpZGUgaWYgdGhpcyBsaW5rZXIgc2hvdWxkIGJlIHRoZSBkZWZhdWx0LgotIGRubCAiaW5zdGFsbF9hc19kZWZhdWx0IiBpcyBzZXQgdG8gZmFsc2UgaWYgZ29sZCBpcyB0aGUgZGVmYXVsdCBsaW5rZXIuCi0gZG5sICJpbnN0YWxsZWRfbGlua2VyIiBpcyB0aGUgaW5zdGFsbGVkIEJGRCBsaW5rZXIgbmFtZS4KLWRpZmYgLS1naXQgYS9sZC9sZC5oIGIvbGQvbGQuaAotaW5kZXggYjk3ZDk3N2YzNy4uZjNiYmQyZDU1ZCAxMDA2NDQKLS0tLSBhL2xkL2xkLmgKLSsrKyBiL2xkL2xkLmgKLUBAIC0xODAsNiArMTgwLDE0IEBAIHR5cGVkZWYgc3RydWN0Ci0gICAgICBpbiB0aGUgbGlua2VyIHNjcmlwdC4gICovCi0gICBiZmRfYm9vbGVhbiBmb3JjZV9ncm91cF9hbGxvY2F0aW9uOwotIAotKyAgLyogSWYgVFJVRSAodGhlIGRlZmF1bHQpIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4KLSsgICAgIGNyb3NzIGxpbmtpbmcuICAqLwotKyAgYmZkX2Jvb2xlYW4gcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLSsKLSsgIC8qIElmIFRSVUUgKGRlZmF1bHQgRkFMU0UpIGdpdmUgYW4gZXJyb3IgZm9yIHVzZXMgb2Ygc3lzdGVtCi0rICAgICBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcgaW5zdGVhZCBvZiBhIHdhcm5pbmcuICAqLwotKyAgYmZkX2Jvb2xlYW4gZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLSsKLSAgIC8qIEJpZyBvciBsaXR0bGUgZW5kaWFuIGFzIHNldCBvbiBjb21tYW5kIGxpbmUuICAqLwotICAgZW51bSBlbmRpYW5fZW51bSBlbmRpYW47Ci0gCi1kaWZmIC0tZ2l0IGEvbGQvbGQudGV4aSBiL2xkL2xkLnRleGkKLWluZGV4IDUxNzlhZjNlMGUuLmY3OGJmNzQ2ODIgMTAwNjQ0Ci0tLS0gYS9sZC9sZC50ZXhpCi0rKysgYi9sZC9sZC50ZXhpCi1AQCAtMjUyNCw2ICsyNTI0LDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgotIAotIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55Ci0gQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0rCi0rQGtpbmRleCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStAaXRlbSAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgc3VjaCBhcwotK0BmaWxley91c3IvbGlifSB3aGVuIGNyb3NzIGxpbmtpbmcuICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlCi0raW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2ggZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdAotK2xpYnJhcmllcyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCi0rCi0rQGtpbmRleCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStAaXRlbSAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStHaXZlIGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nCi0rc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZy4KLSBAZW5kIHRhYmxlCi0gCi0gQGMgbWFuIGVuZAotZGlmZiAtLWdpdCBhL2xkL2xkZmlsZS5jIGIvbGQvbGRmaWxlLmMKLWluZGV4IGZjYWRjMDhjNzMuLjYzZTI5NWNlOGEgMTAwNjQ0Ci0tLS0gYS9sZC9sZGZpbGUuYwotKysrIGIvbGQvbGRmaWxlLmMKLUBAIC0xMTYsNiArMTE2LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQotICAgICBuZXdfZGlycy0+bmFtZSA9IGNvbmNhdCAobGRfc3lzcm9vdCwgbmFtZSArIHN0cmxlbiAoIiRTWVNST09UIiksIChjb25zdCBjaGFyICopIE5VTEwpOwotICAgZWxzZQotICAgICBuZXdfZGlycy0+bmFtZSA9IHhzdHJkdXAgKG5hbWUpOwotKwotKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyAgaWYgKGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0rICAmJiAoKCFzdHJuY21wIChuYW1lLCAiL2xpYiIsIDQpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbGliIiwgOCkpCi0rICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9sb2NhbC9saWIiLCAxNCkpCi0rICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9YMTFSNi9saWIiLCAxNCkpKSkKLSsgICB7Ci0rICAgICBpZiAoY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgICAgIGVpbmZvIChfKCIlWCVQOiBlcnJvcjogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7Ci0rICAgICBlbHNlCi0rICAgICAgIGVpbmZvIChfKCIlUDogd2FybmluZzogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7Ci0rICAgfQotKyNlbmRpZgotKwotIH0KLSAKLSAvKiBUcnkgdG8gb3BlbiBhIEJGRCBmb3IgYSBsYW5nX2lucHV0X3N0YXRlbWVudC4gICovCi1kaWZmIC0tZ2l0IGEvbGQvbGRsZXguaCBiL2xkL2xkbGV4LmgKLWluZGV4IDMyODUzZGViZTQuLjgxMzUzNjFjNDkgMTAwNjQ0Ci0tLS0gYS9sZC9sZGxleC5oCi0rKysgYi9sZC9sZGxleC5oCi1AQCAtMTQ4LDYgKzE0OCw4IEBAIGVudW0gb3B0aW9uX3ZhbHVlcwotICAgT1BUSU9OX1JFUVVJUkVfREVGSU5FRF9TWU1CT0wsCi0gICBPUFRJT05fT1JQSEFOX0hBTkRMSU5HLAotICAgT1BUSU9OX0ZPUkNFX0dST1VQX0FMTE9DQVRJT04sCi0rICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKLSsgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAotIH07Ci0gCi0gLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCi1kaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYwotaW5kZXggNzdjZGJkMGRkMi4uNzI1NTEyZjEyNiAxMDA2NDQKLS0tLSBhL2xkL2xkbWFpbi5jCi0rKysgYi9sZC9sZG1haW4uYwotQEAgLTI2OSw2ICsyNjksOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7Ci0gICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOwotICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7Ci0rICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7Ci0rICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotIAotICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQotZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKLWluZGV4IDg4ZTg1YzczZjQuLmVlZDFiNzE0NTYgMTAwNjQ0Ci0tLS0gYS9sZC9sZXhzdXAuYwotKysrIGIvbGQvbGV4c3VwLmMKLUBAIC01NDMsNiArNTQzLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9Ci0gICB7IHsib3JwaGFuLWhhbmRsaW5nIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9PUlBIQU5fSEFORExJTkd9LAotICAgICAnXDAnLCBOXygiPU1PREUiKSwgTl8oIkNvbnRyb2wgaG93IG9ycGhhbiBzZWN0aW9ucyBhcmUgaGFuZGxlZC4iKSwKLSAgICAgVFdPX0RBU0hFUyB9LAotKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKLSsgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKLSsgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0rICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAotKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCi0rICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0gfTsKLSAKLSAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQotQEAgLTE1NzcsNiArMTU4NSwxNCBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKLSAJICAgIGVpbmZvIChfKCIlRiVQOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiIKLSAJCSAgICAgIiBcIi0tb3JwaGFuLWhhbmRsaW5nXCJcbiIpKTsKLSAJICBicmVhazsKLSsKLSsJY2FzZSBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKLSsJICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotKwkgIGJyZWFrOwotKwotKwljYXNlIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgotKwkgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKLSsJICBicmVhazsKLSAJfQotICAgICB9Ci0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZiMWU3YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAyY2Q1NjEzYTg2Zjg3NzJmOWQ3ZjE4ODUzMjcxODM2MzY2OGVkOTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZAotCi1FbmFibGluZyBzeXNyb290IHN1cHBvcnQgaW4gbGlidG9vbCBleHBvc2VkIGEgYnVnIHdoZXJlIHRoZSBmaW5hbAotbGlicmFyeSBoYWQgYW4gUlBBVEggZW5jb2RlZCBpbnRvIGl0IHdoaWNoIHN0aWxsIHBvaW50ZWQgdG8gdGhlCi1zeXNyb290LiBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgaXNzdWUgdW50aWwgaXQgZ2V0cyBzb3J0ZWQgb3V0Ci11cHN0cmVhbS4KLQotRml4IHN1Z2dlc3RlZCBieSBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDcwZTg1NmUwNjUuLjExZWU2ODRjY2MgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTgwMzUsOSArODAzNSwxMSBAQCBFT0YKLSAJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0gCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCQkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0rCQkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKLSsJCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0tCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLS0JCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0gCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLSAJCWVsc2UKLUBAIC04NzcwLDYgKzg3NzIsMTAgQEAgRU9GCi0gICAgICAgaGFyZGNvZGVfbGliZGlycz0KLSAgICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRoICRmaW5hbGl6ZV9ycGF0aDsgZG8KLSAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYTgxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKQEAgLTAsMCArMSwyNjkgQEAKK0Zyb20gN2IyNGY4MWUwNGM5ZDAwZDk2ZGU3ZGJkMjUwYmVhZGU2ZDJjNmU0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZworCisyMDA4LTA3LTAyICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNi0xMyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBsZC8KKyAgICAqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGQudGV4aW5mbyAoLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCisgICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjaworICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCisgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCisgICAgKGxkX29wdGlvbnMpOiBBZGQgLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgorICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCisKKzIwMDctMDQtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgTWVyZ2UgZnJvbSBTb3VyY2VyeSBHKysgYmludXRpbHMgMi4xNzoKKworICAgIDIwMDctMDMtMjAgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorICAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4uCisgICAgbGQvCisgICAgKiBjb25maWd1cmUuaW4gKC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBOZXcgb3B0aW9uLgorICAgICogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisgICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBJZgorICAgIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIGRlZmluZWQsIHdhcm4gZm9yIHVzZSBvZiAvbGliLAorICAgIC91c3IvbGliLCAvdXNyL2xvY2FsL2xpYiBvciAvdXNyL1gxMVI2L2xpYi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxkL2NvbmZpZy5pbiAgICB8ICAzICsrKworIGxkL2NvbmZpZ3VyZSAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBsZC9jb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCisgbGQvbGQuaCAgICAgICAgIHwgIDggKysrKysrKysKKyBsZC9sZC50ZXhpICAgICAgfCAxMiArKysrKysrKysrKysKKyBsZC9sZGZpbGUuYyAgICAgfCAxNyArKysrKysrKysrKysrKysrKworIGxkL2xkbGV4LmggICAgICB8ICAyICsrCisgbGQvbGRtYWluLmMgICAgIHwgIDIgKysKKyBsZC9sZXhzdXAuYyAgICAgfCAxNSArKysrKysrKysrKysrKysKKyA5IGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgoraW5kZXggZDkzYzliMDgzMC4uNWRhMjc0MmJlYSAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZy5pbgorKysrIGIvbGQvY29uZmlnLmluCitAQCAtMzEsNiArMzEsOSBAQAorICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KKyAjdW5kZWYgRU5BQkxFX05MUworIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrCisgLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCisgI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgorIAorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQoraW5kZXggODExMTM0YTUwMy4uZjhjMTdjMTlhZSAxMDA3NTUKKy0tLSBhL2xkL2NvbmZpZ3VyZQorKysrIGIvbGQvY29uZmlndXJlCitAQCAtODI2LDYgKzgyNiw3IEBAIHdpdGhfbGliX3BhdGgKKyBlbmFibGVfdGFyZ2V0cworIGVuYWJsZV82NF9iaXRfYmZkCisgd2l0aF9zeXNyb290CisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfZ29sZAorIGVuYWJsZV9nb3QKKyBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucworQEAgLTE0OTEsNiArMTQ5Miw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcworICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCisgICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQorKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcworICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCisgICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKK0BAIC0xNTc4OCw2ICsxNTc5MSwxOSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrZWxzZQorKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KKytmaQorKworK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKK2luZGV4IGI1ZTg0OWQ4NGEuLjIyZTAyMmVjMDMgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUuYWMKKysrKyBiL2xkL2NvbmZpZ3VyZS5hYworQEAgLTk0LDYgKzk0LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQorIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKKyBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgWzFdLAorKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCisgZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KKyBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgorZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCitpbmRleCA3MWZkNzgxMjY3Li41Yzc4NDMxMDBiIDEwMDY0NAorLS0tIGEvbGQvbGQuaAorKysrIGIvbGQvbGQuaAorQEAgLTE2Niw2ICsxNjYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KKyAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247CisgCisrICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgorKyAgICAgY3Jvc3MgbGlua2luZy4gICovCisrICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KKysgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCisrICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCisgICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKKyAKK2RpZmYgLS1naXQgYS9sZC9sZC50ZXhpIGIvbGQvbGQudGV4aQoraW5kZXggZWI3YmNiOTkzMy4uM2M3M2Q0NDVhMCAxMDA2NDQKKy0tLSBhL2xkL2xkLnRleGkKKysrKyBiL2xkL2xkLnRleGkKK0BAIC0yNTUxLDYgKzI1NTEsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCisgCisgUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKKyBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KKysKKytAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCisrQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKKytpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0CisrbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKytAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKKytzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgorIEBlbmQgdGFibGUKKyAKKyBAYyBtYW4gZW5kCitkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYworaW5kZXggNDExZjdkZGY5Ny4uMTdkYjE2YzJjYyAxMDA2NDQKKy0tLSBhL2xkL2xkZmlsZS5jCisrKysgYi9sZC9sZGZpbGUuYworQEAgLTExNyw2ICsxMTcsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCisgICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgc3RybGVuICgiJFNZU1JPT1QiKSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7CisgICBlbHNlCisgICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKysgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQorKyAgIHsKKysgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKKysgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICAgIGVsc2UKKysgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICB9CisrI2VuZGlmCisrCisgfQorIAorIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAoraW5kZXggNTI4N2YxOWE3Zi4uNTUwOTZlNGZjOSAxMDA2NDQKKy0tLSBhL2xkL2xkbGV4LmgKKysrKyBiL2xkL2xkbGV4LmgKK0BAIC0xNTAsNiArMTUwLDggQEAgZW51bSBvcHRpb25fdmFsdWVzCisgICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKKyAgIE9QVElPTl9QUklOVF9NQVBfRElTQ0FSREVELAorICAgT1BUSU9OX05PX1BSSU5UX01BUF9ESVNDQVJERUQsCisrICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKKysgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorIH07CisgCisgLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCitkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYworaW5kZXggZGExYWQxNzc2My4uMTJkMGIwN2Q4YSAxMDA2NDQKKy0tLSBhL2xkL2xkbWFpbi5jCisrKysgYi9sZC9sZG1haW4uYworQEAgLTI3NCw2ICsyNzQsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOworICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7CisrICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7CisrICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOworIAorICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQorZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKK2luZGV4IDNkMTVjYzQ5MWQuLjBlOGI0ZjJiN2EgMTAwNjQ0CistLS0gYS9sZC9sZXhzdXAuYworKysrIGIvbGQvbGV4c3VwLmMKK0BAIC01NTAsNiArNTUwLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9CisgICB7IHsibm8tcHJpbnQtbWFwLWRpc2NhcmRlZCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTk9fUFJJTlRfTUFQX0RJU0NBUkRFRH0sCisgICAgICdcMCcsIE5VTEwsIE5fKCJEbyBub3Qgc2hvdyBkaXNjYXJkZWQgc2VjdGlvbnMgaW4gbWFwIGZpbGUgb3V0cHV0IiksCisgICAgIFRXT19EQVNIRVMgfSwKKysgIHsgeyJuby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCisrICAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCisrICAgICdcMCcsIE5VTEwsIE5fKCJEbyBub3Qgd2FybiBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKKysgICAgVFdPX0RBU0hFUyB9LAorKyAgeyB7ImVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKKysgICAgKyAgICAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAorKyAgICAnXDAnLCBOVUxMLCBOXygiR2l2ZSBhbiBlcnJvciBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKKysgICAgVFdPX0RBU0hFUyB9LAorIH07CisgCisgI2RlZmluZSBPUFRJT05fQ09VTlQgQVJSQVlfU0laRSAobGRfb3B0aW9ucykKK0BAIC0xNjAzLDYgKzE2MTEsMTMgQEAgcGFyc2VfYXJncyAodW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgCWNhc2UgT1BUSU9OX1BSSU5UX01BUF9ESVNDQVJERUQ6CisgCSAgY29uZmlnLnByaW50X21hcF9kaXNjYXJkZWQgPSBUUlVFOworKworKwljYXNlIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgorKwkgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6CisrCSAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOworIAkgIGJyZWFrOworIAl9CisgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjRhYzcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDk1OGE0OTc0OWI3NzI2NjBkM2JhZmI4MDc0ODgyOWNiYTZiZWQwNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4Ci0KLXdlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbXVsYXRpb25zIHRvIGJlIE42NCBpbnN0ZWFkIG9mIE4zMgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYmZkL2NvbmZpZy5iZmQgICB8IDggKysrKy0tLS0KLSBsZC9jb25maWd1cmUudGd0IHwgOCArKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggMGUxZGRiNjU5Yy4uZDRmNTBmMGE4ZCAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTkxOSwxMiArOTE5LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCi0gICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzNjQqZWwtKi1saW51eCopCi0tICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKLSsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2xlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgotICAgICA7OwotICAgbWlwczY0Ki0qLWxpbnV4KikKLS0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9iZV92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfYmVfdmVjCi0rICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzKmVsLSotbGludXgqKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfbGVfdmVjCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IGJlYmExN2VmNTEuLjkxN2JlNmY4ZWIgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNDY4LDExICs0NjgsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKLSBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKLSBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzIDs7Ci0tbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCi0tCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCi0rbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0bHRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRidHNtaXAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci0tbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmJ0c21pcG4zMgotLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgotK21pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRidHNtaXAKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGx0c21pcCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLSBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGYxYTA2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDcwZjNmMmQ5ZTkxMmVhNzc3ZmExMTNlMDJjZGJjMzQ2NWE2NmU0MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCisKK0VuYWJsaW5nIHN5c3Jvb3Qgc3VwcG9ydCBpbiBsaWJ0b29sIGV4cG9zZWQgYSBidWcgd2hlcmUgdGhlIGZpbmFsCitsaWJyYXJ5IGhhZCBhbiBSUEFUSCBlbmNvZGVkIGludG8gaXQgd2hpY2ggc3RpbGwgcG9pbnRlZCB0byB0aGUKK3N5c3Jvb3QuIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBpc3N1ZSB1bnRpbCBpdCBnZXRzIHNvcnRlZCBvdXQKK3Vwc3RyZWFtLgorCitGaXggc3VnZ2VzdGVkIGJ5IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAxMCArKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNzBlODU2ZTA2NS4uMTFlZTY4NGNjYyAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtODAzNSw5ICs4MDM1LDExIEBAIEVPRgorIAkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKyAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKysJCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKy0JCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorLQkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKyAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorIAkJZWxzZQorQEAgLTg3NzAsNiArODc3MiwxMCBAQCBFT0YKKyAgICAgICBoYXJkY29kZV9saWJkaXJzPQorICAgICAgIGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGggJGZpbmFsaXplX3JwYXRoOyBkbworIAlpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKysJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKKysJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzVlZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLUZyb20gZTRhMGNkMzBjN2U5MzM0ZWQ1MDdjOTMwMTRhOGIyZDEzMTVmZjkzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA2OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTVdIEFkZCBzdXBwb3J0IGZvciBOZXRsb2dpYyBYTFAKLQotUGF0Y2ggRnJvbTogTmVidSBQaGlsaXBzIDxucGhpbGlwc0BuZXRsb2dpY21pY3JvLmNvbT4KLQotVXNpbmcgdGhlIG1pcHNpc2E2NHIybmxtIHRhcmdldCwgYWRkIHN1cHBvcnQgZm9yIFhMUCBmcm9tCi1OZXRsb2dpYy4gQWxzbywgdXBkYXRlIHZlbmRvciBuYW1lIHRvIE5MTSB3aGVyZXZlciBhcHBsaWNhYmxlLgotCi1Vc2UgMHgwMDAwMDA4MCBmb3IgSU5TTl9YTFAsIHRoZSB2YWx1ZSAweDAwMDAwMDQwIGhhcyBhbHJlYWR5IGJlZW4KLWFzc2lnbmVkIHRvIElOU05fT0NURU9OMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiZmQvYW91dHguaCAgICAgICAgICAgfCAgMSArCi0gYmZkL2FyY2h1cmVzLmMgICAgICAgIHwgIDEgKwotIGJmZC9iZmQtaW4yLmggICAgICAgICB8ICAxICsKLSBiZmQvY29uZmlnLmJmZCAgICAgICAgfCAgNSArKysrKwotIGJmZC9jcHUtbWlwcy5jICAgICAgICB8ICA2ICsrKystLQotIGJmZC9lbGZ4eC1taXBzLmMgICAgICB8ICA4ICsrKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jICAgIHwgIDEgKwotIGdhcy9jb25maWcvdGMtbWlwcy5jICB8ICA0ICsrKy0KLSBnYXMvY29uZmlndXJlICAgICAgICAgfCAgMyArKysKLSBpbmNsdWRlL2VsZi9taXBzLmggICAgfCAgMSArCi0gaW5jbHVkZS9vcGNvZGUvbWlwcy5oIHwgIDYgKysrKysrCi0gbGQvY29uZmlndXJlLnRndCAgICAgIHwgIDIgKysKLSBvcGNvZGVzL21pcHMtZGlzLmMgICAgfCAxMiArKysrKy0tLS0tLS0KLSBvcGNvZGVzL21pcHMtb3BjLmMgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCi1pbmRleCBlNWQ4ZGNmMzkwLi4yY2M3NGEyZDYxIDEwMDY0NAotLS0tIGEvYmZkL2FvdXR4LmgKLSsrKyBiL2JmZC9hb3V0eC5oCi1AQCAtNzk5LDYgKzc5OSw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAotIAljYXNlIGJmZF9tYWNoX21pcHNpc2E2NHI2OgotIAljYXNlIGJmZF9tYWNoX21pcHNfc2IxOgotIAljYXNlIGJmZF9tYWNoX21pcHNfeGxyOgotKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgotIAkgIC8qIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgTUlQUzMsIE1JUFM0LCBNSVBTMTYsIE1JUFMzMiwgZXRjLiAgKi8KLSAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKLSAJICBicmVhazsKLWRpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCi1pbmRleCA2NDdjZjBkOGQ0Li43ZTFkMGM4MTBmIDEwMDY0NAotLS0tIGEvYmZkL2FyY2h1cmVzLmMKLSsrKyBiL2JmZC9hcmNodXJlcy5jCi1AQCAtMTg1LDYgKzE4NSw3IEBAIERFU0NSSVBUSU9OCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zCQk2NTAzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIJCTg4NzY4MgkgeyogZGVjaW1hbCAnWExSJy4gICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMgk3MzY1NTAJIHsqIGRlY2ltYWwgJ0lBMicuICAqfQotKy4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICB7KiBkZWNpbWFsICdYTFAnLiAgKn0KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIJCTMyCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIJCTMzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMJCTM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IGUyNWRhNTBhYWYuLmUyNTFkN2U3YWEgMTAwNjQ0Ci0tLS0gYS9iZmQvYmZkLWluMi5oCi0rKysgYi9iZmQvYmZkLWluMi5oCi1AQCAtMjA4NCw2ICsyMDg0LDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIC8qIGRlY2ltYWwgJ1hMUicuICAqLwotICNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIC8qIGRlY2ltYWwgJ0lBMicuICAqLwotKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcuICAqLwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IGNjNjU1NDc1ODguLjM2MTRmZjc5ZDQgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC05MDIsNiArOTAyLDExIEBAIGNhc2UgIiR7dGFyZ30iIGluCi0gICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbGVfdmVjCi0gICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9iZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCi0gICAgIDs7Ci0rICBtaXBzaXNhNjQqLSotZWxmKikKLSsJdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2JlX3ZlYwotKwl0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotKwl3YW50NjQ9dHJ1ZQotKwk7OwotICAgbWlwcyotKi1lbGYqIHwgbWlwcyotKi1ydGVtcyogfCBtaXBzKi0qLXdpbmRpc3MgfCBtaXBzKi0qLW5vbmUpCi0gICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfYmVfdmVjCi0gICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCi1kaWZmIC0tZ2l0IGEvYmZkL2NwdS1taXBzLmMgYi9iZmQvY3B1LW1pcHMuYwotaW5kZXggYjM1OTQ5MTMwNS4uNjFhM2U3YWFjYSAxMDA2NDQKLS0tLSBhL2JmZC9jcHUtbWlwcy5jCi0rKysgYi9iZmQvY3B1LW1pcHMuYwotQEAgLTEwNyw3ICsxMDcsOCBAQCBlbnVtCi0gICBJX21pcHNvY3Rlb24zLAotICAgSV94bHIsCi0gICBJX2ludGVyYXB0aXZfbXIyLAotLSAgSV9taWNyb21pcHMKLSsgIElfbWljcm9taXBzLAotKyAgSV94bHAKLSB9OwotIAotICNkZWZpbmUgTk4oaW5kZXgpICgmYXJjaF9pbmZvX3N0cnVjdFsoaW5kZXgpICsgMV0pCi1AQCAtMTYyLDcgKzE2Myw4IEBAIHN0YXRpYyBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYXJjaF9pbmZvX3N0cnVjdFtdID0KLSAgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHIsICJtaXBzOnhsciIsCSAgRkFMU0UsIE5OKElfeGxyKSksCi0gICBOICgzMiwgMzIsIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIsICJtaXBzOmludGVyYXB0aXYtbXIyIiwgRkFMU0UsCi0gICAgICBOTihJX2ludGVyYXB0aXZfbXIyKSksCi0tICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsMCkKLSsgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSxOTihJX21pY3JvbWlwcykpLAotKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgICAgICBGQUxTRSwgMCkKLSB9OwotIAotIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKLWRpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYwotaW5kZXggNTk5OGJjNDNhOC4uMGQ1Nzk1MjIyYiAxMDA2NDQKLS0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKLSsrKyBiL2JmZC9lbGZ4eC1taXBzLmMKLUBAIC02OTE5LDYgKzY5MTksOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQotICAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOgotICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyOwotIAotKyAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDoKLSsgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHA7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKLSAJewotQEAgLTEyMTk5LDYgKzEyMjAyLDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQotICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOwotICAgICAgIGJyZWFrOwotIAotKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgotKwkgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9YTFA7Ci0rCSAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgotICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOwotICAgICAgIGJyZWFrOwotQEAgLTE0MjE0LDYgKzE0MjIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQotICAgeyBiZmRfbWFjaF9taXBzX2dzMjY0ZSwgYmZkX21hY2hfbWlwc19nczQ2NGUgfSwKLSAgIHsgYmZkX21hY2hfbWlwc19nczQ2NGUsIGJmZF9tYWNoX21pcHNfZ3M0NjQgfSwKLSAgIHsgYmZkX21hY2hfbWlwc19nczQ2NCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKLSsgIHsgYmZkX21hY2hfbWlwc194bHAsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0gCi0gICAvKiBNSVBTNjQgZXh0ZW5zaW9ucy4gICovCi0gICB7IGJmZF9tYWNoX21pcHNpc2E2NHIyLCBiZmRfbWFjaF9taXBzaXNhNjQgfSwKLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IGIxM2ViNmE0M2IuLjlkZjM3NDI2ODIgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTM0MTIsNiArMzQxMiw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCi0gCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjM6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24zIik7IGJyZWFrOwotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxyIik7IGJyZWFrOwotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjogIHN0cmNhdCAoYnVmLCAiLCBpbnRlcmFwdGl2LW1yMiIpOyBicmVhazsKLSsJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOiAgc3RyY2F0IChidWYsICIsIHhscCIpOyBicmVhazsKLSAJICAgIGNhc2UgMDoKLSAJICAgIC8qIFdlIHNpbXBseSBpZ25vcmUgdGhlIGZpZWxkIGluIHRoaXMgY2FzZSB0byBhdm9pZCBjb25mdXNpb246Ci0gCSAgICAgICBNSVBTIEVMRiBkb2VzIG5vdCBzcGVjaWZ5IEVGX01JUFNfTUFDSCwgaXQgaXMgYSBHTlUKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLW1pcHMuYyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCi1pbmRleCBhZTU1OTA0MjI5Li5kNjg4MjcxMmY1IDEwMDY0NAotLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLSsrKyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCi1AQCAtNTU0LDYgKzU1NCw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOwotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9STTcwMDAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfVlI1NTAwICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLm1pY3JvbWlwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9YTFAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICApCi0gCi0gLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCi1AQCAtNTgzLDYgKzU4NCw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOwotICAgICAmJiBtaXBzX29wdHMuaXNhICE9IElTQV9NSVBTMykgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUjQzMDAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLm1pY3JvbWlwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9YTFAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICApCi0gCi0gLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCi1AQCAtMTk4NjcsNyArMTk4NjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KLSAgIC8qIEJyb2FkY29tIFhMUC4KLSAgICAgIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gdGhhdCBpdCBpcwotICAgICAgTUlQUzY0UjIgcmF0aGVyIHRoYW4gTUlQUzY0LiAgKi8KLS0gIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExSIH0sCi0rICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUCB9LAotIAotICAgLyogTUlQUyA2NCBSZWxlYXNlIDYgKi8KLSAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX01TQSwJCUlTQV9NSVBTNjRSNiwgQ1BVX01JUFM2NFI2fSwKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggYTgyZmRlN2ZhOC4uYWZjNzdjMzQ3YSAxMDA3NTUKLS0tLSBhL2dhcy9jb25maWd1cmUKLSsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC0xMzM2NCw2ICsxMzM2NCw5IEBAIF9BQ0VPRgotIAkgIG1pcHNpc2E2NHI2IHwgbWlwc2lzYTY0cjZlbCkKLSAJICAgIG1pcHNfY3B1PW1pcHM2NHI2Ci0gCSAgICA7OwotKwkgIG1pcHNpc2E2NHIybmxtIHwgbWlwc2lzYTY0cjJubG1lbCkKLSsJCW1pcHNfY3B1PXhscAotKwkJOzsKLSAJICBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwpCi0gCSAgICBtaXBzX2NwdT1yMzkwMAotIAkgICAgOzsKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9taXBzLmggYi9pbmNsdWRlL2VsZi9taXBzLmgKLWluZGV4IGI3NmQ0NTBhZTIuLjdjZGRiMzY1YWQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2VsZi9taXBzLmgKLSsrKyBiL2luY2x1ZGUvZWxmL21pcHMuaAotQEAgLTI5MCw2ICsyOTAsNyBAQCBFTkRfUkVMT0NfTlVNQkVSUyAoUl9NSVBTX21heGV4dCkKLSAjZGVmaW5lIEVfTUlQU19NQUNIX1NCMSAgICAgICAgIDB4MDA4YTAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTgkweDAwOGIwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9YTFIgICAgIAkweDAwOGMwMDAwCi0rI2RlZmluZSBFX01JUFNfTUFDSF9YTFAgICAgICAgICAweDAwOGYwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04yCTB4MDA4ZDAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjMJMHgwMDhlMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfNTQwMAkweDAwOTEwMDAwCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1pbmRleCBhYmQ1MmM4OTgwLi41M2I2NzUyYTFjIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi0rKysgYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLUBAIC0xMjYwLDYgKzEyNjAsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7Ci0gI2RlZmluZSBJTlNOX1hMUiAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAotIC8qIEltYWdpbmF0aW9uIGludGVyQXB0aXYgTVIyLiAgKi8KLSAjZGVmaW5lIElOU05fSU5URVJBUFRJVl9NUjIJICAweDA0MDAwMDAwCi0rLyogTmV0bG9naWMgWGxQIGluc3RydWN0aW9uICovCi0rI2RlZmluZSBJTlNOX1hMUAkJMHgwMDAwMDA4MAotIAotIC8qIERTUCBBU0UgKi8KLSAjZGVmaW5lIEFTRV9EU1AJCQkweDAwMDAwMDAxCi1AQCAtMTM4MSw2ICsxMzgzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewotICNkZWZpbmUgQ1BVX09DVEVPTjMJNjUwMwotICNkZWZpbmUgQ1BVX1hMUiAgICAgCTg4NzY4MiAgIAkvKiBkZWNpbWFsICdYTFInICAgKi8KLSAjZGVmaW5lIENQVV9JTlRFUkFQVElWX01SMiA3MzY1NTAJLyogZGVjaW1hbCAnSUEyJyAgKi8KLSsjZGVmaW5lIENQVV9YTFAgICAgICAgICA4ODc2ODAgICAgICAvKiBkZWNpbWFsICdYTFAnICAgKi8KLSAKLSAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gQ1BVIGlzIGluY2x1ZGVkIGluIElOU05fKiBtYXNrIE1BU0suICAqLwotIAotQEAgLTE0NTgsNiArMTQ2MSw5IEBAIGNwdV9pc19tZW1iZXIgKGludCBjcHUsIHVuc2lnbmVkIGludCBtYXNrKQotICAgICAgIHJldHVybiAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTMyUjYpCi0gCSAgICAgfHwgKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0E2NFI2KTsKLSAKLSsgICAgY2FzZSBDUFVfWExQOgotKyAgICAgIHJldHVybiAobWFzayAmIElOU05fWExQKSAhPSAwOwotKwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCA5MTdiZTZmOGViLi4zNDdkZjZjM2Y2IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLnRndAotKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTQ1NCw2ICs0NTQsOCBAQCBtaXBzKmVsLXNkZS1lbGYqIHwgbWlwcyplbC1tdGktZWxmKiB8IG1pcHMqZWwtaW1nLWVsZiopCi0gbWlwcyotc2RlLWVsZiogfCBtaXBzKi1tdGktZWxmKiB8IG1pcHMqLWltZy1lbGYqKQotIAkJCXRhcmdfZW11bD1lbGYzMmJ0c21pcAotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIiA7OwotK21pcHNpc2E2NCotKi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIgOzsKLSBtaXBzNjQqZWwtcHMyLWVsZiopCXRhcmdfZW11bD1lbGYzMmxyNTkwMG4zMgotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHI1OTAwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1kaXMuYyBiL29wY29kZXMvbWlwcy1kaXMuYwotaW5kZXggMGRkODVlMzc3OS4uMWVhNzA4ZGRlNyAxMDA2NDQKLS0tLSBhL29wY29kZXMvbWlwcy1kaXMuYwotKysrIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1AQCAtNjczLDEzICs2NzMsMTEgQEAgY29uc3Qgc3RydWN0IG1pcHNfYXJjaF9jaG9pY2UgbWlwc19hcmNoX2Nob2ljZXNbXSA9Ci0gICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKLSAgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKLSAKLS0gIC8qIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gaXQgaXMgYmVpbmcKLS0gICAgIE1JUFM2NFIyLiAgKi8KLS0gIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxyLCBDUFVfWExSLAotLSAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUiwgMCwKLS0gICAgbWlwc19jcDBfbmFtZXNfeGxyLAotLSAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCi0tICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCi0rICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hscCwgQ1BVX1hMUCwKLSsgICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFAsIDAsCi0rICAgIG1pcHNfY3AwX25hbWVzX21pcHMzMjY0cjIsCi0rICAgIG1pcHNfY3Awc2VsX25hbWVzX21pcHMzMjY0cjIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX21pcHMzMjY0cjIpLAotKyAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbWlwczMyNjRyMiB9LAotIAotICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbwotICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KLWRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKLWluZGV4IDgzN2RhNmJkOTkuLmQzZWE1Yjg4NzcgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL21pcHMtb3BjLmMKLSsrKyBiL29wY29kZXMvbWlwcy1vcGMuYwotQEAgLTMyOCw2ICszMjgsNyBAQCBkZWNvZGVfbWlwc19vcGVyYW5kIChjb25zdCBjaGFyICpwKQotICNkZWZpbmUgSU9DVDMJSU5TTl9PQ1RFT04zCi0gI2RlZmluZSBYTFIgICAgIElOU05fWExSCi0gI2RlZmluZSBJQU1SMglJTlNOX0lOVEVSQVBUSVZfTVIyCi0rI2RlZmluZSBYTFAJSU5TTl9YTFAKLSAjZGVmaW5lIElWSVJUCUFTRV9WSVJUCi0gI2RlZmluZSBJVklSVDY0CUFTRV9WSVJUNjQKLSAKLUBAIC05ODksNiArOTkwLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiY2xvIiwJCQkiVSxzIiwJCTB4NzAwMDAwMjEsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKLSB7ImNseiIsCQkJImQscyIsCQkweDAwMDAwMDUwLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTM3LAkJMCwJMCB9LAotIHsiY2x6IiwJCQkiVSxzIiwJCTB4NzAwMDAwMjAsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKLSt7ImNyYyIsCQkJImQscyx0IiwJMHg3MDAwMDAxYywgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAotIC8qIGN0YzAgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIHsiY3RjMSIsCQkidCxHIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJjdGMxIiwJCSJ0LFMiLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLUBAIC0xMDIxLDEyICsxMDIzLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKLS17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCi0reyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCi0geyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAotIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKLSt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAotIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KLSB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLUBAIC0xMDk4LDYgKzExMDEsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKLSB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKLSB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCi0reyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAotIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKLSB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKLUBAIC0xMTEzLDYgKzExMTcsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0reyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAotQEAgLTEyNjYsOSArMTI3Miw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCi0teyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAotQEAgLTE0MzMsNyArMTQzOSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCi0teyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAotIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAotIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCi1AQCAtMTQ3OCwxMCArMTQ4NCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCi0geyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKLSB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAotIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0geyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAotQEAgLTE1MzEsNyArMTU0MCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKLS17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAotIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotQEAgLTE5NjgsOSArMTk3Nyw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAotIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCi0teyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAotIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKLSB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDliOGU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDIxODI3OTFhNDUzZjM0YmVlNjk2OGIzZTcyODQ4NjA4Y2Y3ZDdhYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CisKK3dlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbXVsYXRpb25zIHRvIGJlIE42NCBpbnN0ZWFkIG9mIE4zMgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmZkL2NvbmZpZy5iZmQgICB8IDggKysrKy0tLS0KKyBsZC9jb25maWd1cmUudGd0IHwgOCArKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggYjk2OTMxZjUyZS4uODQ3ZjlmMGJhOSAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTkxMSwxMiArOTExLDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCisgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqZWwtKi1saW51eCopCistICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjCistICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKKysgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2xlX3ZlYworKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorICAgICA7OworICAgbWlwczY0Ki0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9iZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfYmVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisgICAgIDs7CisgICBtaXBzKmVsLSotbGludXgqKQorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfbGVfdmVjCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IDIzMTk0ZTM1N2YuLmY0ZjBlYWY5YjIgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUudGd0CisrKysgYi9sZC9jb25maWd1cmUudGd0CitAQCAtNTQxLDEyICs1NDEsMTIgQEAgbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCisgCQkJOzsKKyBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzCisgCQkJOzsKKy1taXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXBuMzIKKy0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGx0c21pcCBlbGY2NGJ0c21pcCIKKyttaXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRsdHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGJ0c21pcCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMKKyAJCQk7OworLW1pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXBuMzIKKy0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKKyttaXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0YnRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRsdHNtaXAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzCisgCQkJOzsKKyBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMyODY3YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApAQCAtMCwwICsxLDQwNiBAQAorRnJvbSBhMDIzN2VjMmQxZTU4YmQzNWMyMzZkZjM5ZGQ1YTA2NTA0YzZkMmVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUAorCitQYXRjaCBGcm9tOiBOZWJ1IFBoaWxpcHMgPG5waGlsaXBzQG5ldGxvZ2ljbWljcm8uY29tPgorCitVc2luZyB0aGUgbWlwc2lzYTY0cjJubG0gdGFyZ2V0LCBhZGQgc3VwcG9ydCBmb3IgWExQIGZyb20KK05ldGxvZ2ljLiBBbHNvLCB1cGRhdGUgdmVuZG9yIG5hbWUgdG8gTkxNIHdoZXJldmVyIGFwcGxpY2FibGUuCisKK1VzZSAweDAwMDAwMDgwIGZvciBJTlNOX1hMUCwgdGhlIHZhbHVlIDB4MDAwMDAwNDAgaGFzIGFscmVhZHkgYmVlbgorYXNzaWduZWQgdG8gSU5TTl9PQ1RFT04zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxiYW9zaGFuLnBhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9hb3V0eC5oICAgICAgICAgICB8ICAxICsKKyBiZmQvYXJjaHVyZXMuYyAgICAgICAgfCAgMSArCisgYmZkL2JmZC1pbjIuaCAgICAgICAgIHwgIDEgKworIGJmZC9jb25maWcuYmZkICAgICAgICB8ICA1ICsrKysrCisgYmZkL2NwdS1taXBzLmMgICAgICAgIHwgIDYgKysrKy0tCisgYmZkL2VsZnh4LW1pcHMuYyAgICAgIHwgIDggKysrKysrKysKKyBiaW51dGlscy9yZWFkZWxmLmMgICAgfCAgMSArCisgZ2FzL2NvbmZpZy90Yy1taXBzLmMgIHwgIDQgKysrLQorIGdhcy9jb25maWd1cmUgICAgICAgICB8ICAzICsrKworIGdhcy9jb25maWd1cmUuYWMgICAgICB8ICAzICsrKworIGluY2x1ZGUvZWxmL21pcHMuaCAgICB8ICAxICsKKyBpbmNsdWRlL29wY29kZS9taXBzLmggfCAgNiArKysrKysKKyBsZC9jb25maWd1cmUudGd0ICAgICAgfCAgMyArKysKKyBvcGNvZGVzL21pcHMtZGlzLmMgICAgfCAxMiArKysrKy0tLS0tLS0KKyBvcGNvZGVzL21pcHMtb3BjLmMgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMTUgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCitpbmRleCBmYTNhOTc0NmI2Li41MDc4MDI0ZmQ1IDEwMDY0NAorLS0tIGEvYmZkL2FvdXR4LmgKKysrKyBiL2JmZC9hb3V0eC5oCitAQCAtNzk5LDYgKzc5OSw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAorIAljYXNlIGJmZF9tYWNoX21pcHNpc2E2NHI2OgorIAljYXNlIGJmZF9tYWNoX21pcHNfc2IxOgorIAljYXNlIGJmZF9tYWNoX21pcHNfeGxyOgorKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgorIAkgIC8qIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgTUlQUzMsIE1JUFM0LCBNSVBTMTYsIE1JUFMzMiwgZXRjLiAgKi8KKyAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCitpbmRleCAyMzIxMDM4MTdjLi5iMmIzYjhjMTI0IDEwMDY0NAorLS0tIGEvYmZkL2FyY2h1cmVzLmMKKysrKyBiL2JmZC9hcmNodXJlcy5jCitAQCAtMTg1LDYgKzE4NSw3IEBAIERFU0NSSVBUSU9OCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zCQk2NTAzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIJCTg4NzY4MgkgeyogZGVjaW1hbCAnWExSJy4gICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMgk3MzY1NTAJIHsqIGRlY2ltYWwgJ0lBMicuICAqfQorKy4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICB7KiBkZWNpbWFsICdYTFAnLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIJCTMyCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIJCTMzCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMJCTM0CitkaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKK2luZGV4IDdjMTNiYzhjOTEuLjJlNDUzYzUwYzEgMTAwNjQ0CistLS0gYS9iZmQvYmZkLWluMi5oCisrKysgYi9iZmQvYmZkLWluMi5oCitAQCAtMTU2OCw2ICsxNTY4LDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMgICAgICAgICAgNjUwMworICNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIC8qIGRlY2ltYWwgJ1hMUicuICAqLworICNkZWZpbmUgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiAgIDczNjU1MCAgIC8qIGRlY2ltYWwgJ0lBMicuICAqLworKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcuICAqLworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzICAgICAgICAgICAzNAorZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKK2luZGV4IDg0N2Y5ZjBiYTkuLmExMjcwN2Y4MjcgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlnLmJmZAorKysrIGIvYmZkL2NvbmZpZy5iZmQKK0BAIC04OTQsNiArODk0LDExIEBAIGNhc2UgIiR7dGFyZ30iIGluCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbGVfdmVjCisgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9iZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCisgICAgIDs7CisrICBtaXBzaXNhNjQqLSotZWxmKikKKysJdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2JlX3ZlYworKwl0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgorKwl3YW50NjQ9dHJ1ZQorKwk7OworICAgbWlwcyotKi1lbGYqIHwgbWlwcyotKi1ydGVtcyogfCBtaXBzKi0qLXdpbmRpc3MgfCBtaXBzKi0qLW5vbmUpCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfYmVfdmVjCisgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCitkaWZmIC0tZ2l0IGEvYmZkL2NwdS1taXBzLmMgYi9iZmQvY3B1LW1pcHMuYworaW5kZXggODAyYWNiNDVmMS4uZmQ5ZWM0YzBhZCAxMDA2NDQKKy0tLSBhL2JmZC9jcHUtbWlwcy5jCisrKysgYi9iZmQvY3B1LW1pcHMuYworQEAgLTEwOCw3ICsxMDgsOCBAQCBlbnVtCisgICBJX21pcHNvY3Rlb24zLAorICAgSV94bHIsCisgICBJX2ludGVyYXB0aXZfbXIyLAorLSAgSV9taWNyb21pcHMKKysgIElfbWljcm9taXBzLAorKyAgSV94bHAKKyB9OworIAorICNkZWZpbmUgTk4oaW5kZXgpICgmYXJjaF9pbmZvX3N0cnVjdFsoaW5kZXgpICsgMV0pCitAQCAtMTYzLDcgKzE2NCw4IEBAIHN0YXRpYyBjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgYXJjaF9pbmZvX3N0cnVjdFtdID0KKyAgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHIsICJtaXBzOnhsciIsCSAgIEZBTFNFLCBOTihJX3hscikpLAorICAgTiAoMzIsIDMyLCBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyLCAibWlwczppbnRlcmFwdGl2LW1yMiIsIEZBTFNFLAorICAgICAgTk4oSV9pbnRlcmFwdGl2X21yMikpLAorLSAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywgIm1pcHM6bWljcm9taXBzIiwgRkFMU0UsIE5VTEwpCisrICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCAibWlwczptaWNyb21pcHMiLCBGQUxTRSwgTk4oSV9taWNyb21pcHMpKSwKKysgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHAsICJtaXBzOnhscCIsIEZBTFNFLCBOVUxMKQorIH07CisgCisgLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgorZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCitpbmRleCBkN2UzYWVkM2I2Li43YmFlZWU5ZWUzIDEwMDY0NAorLS0tIGEvYmZkL2VsZnh4LW1pcHMuYworKysrIGIvYmZkL2VsZnh4LW1pcHMuYworQEAgLTY5OTksNiArNjk5OSw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCisgICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6CisgICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7CisgCisrICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOgorKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQorIAl7CitAQCAtMTIzNTUsNiArMTIzNTgsMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7CisgICAgICAgYnJlYWs7CisgCisrCWNhc2UgYmZkX21hY2hfbWlwc194bHA6CisrCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKKysJICBicmVhazsKKysKKyAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6CisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7CisgICAgICAgYnJlYWs7CitAQCAtMTQzNzksNiArMTQzODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9CisgICB7IGJmZF9tYWNoX21pcHNfZ3MyNjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0ZSB9LAorICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0ZSwgYmZkX21hY2hfbWlwc19nczQ2NCB9LAorICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0LCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorKyAgeyBiZmRfbWFjaF9taXBzX3hscCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKKyAKKyAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KKyAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAorZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYworaW5kZXggNmI1YmViZTc0My4uZDE1YTc4MjhkYiAxMDA2NDQKKy0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYworKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCitAQCAtMzQ0MCw2ICszNDQwLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7CisgCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7CisgCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOworKwkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxwIik7IGJyZWFrOworIAkgICAgY2FzZSAwOgorIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKKyAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQorZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKK2luZGV4IGZjNjg5ODgzNGUuLjJjNzE1MWNjZGIgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYworKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKK0BAIC01NjgsNiArNTY4LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1JNNzAwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9WUjU1MDAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICkKKyAKKyAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKK0BAIC01OTcsNiArNTk4LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CisgICAgICYmIG1pcHNfb3B0cy5pc2EgIT0gSVNBX01JUFMzKSAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9SNDMwMCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICkKKyAKKyAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKK0BAIC0yMDEzNSw3ICsyMDEzNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQorICAgLyogQnJvYWRjb20gWExQLgorICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCisgICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLworLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKKysgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCisgCisgICAvKiBNSVBTIDY0IFJlbGVhc2UgNi4gICovCisgICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9WSVJUIHwgQVNFX01TQSwJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAorZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCitpbmRleCA2MGMxYTA1NWFlLi41OWQ2ZDExMjE1IDEwMDc1NQorLS0tIGEvZ2FzL2NvbmZpZ3VyZQorKysrIGIvZ2FzL2NvbmZpZ3VyZQorQEAgLTEyNzIyLDYgKzEyNzIyLDkgQEAgX0FDRU9GCisgCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQorIAkgICAgbWlwc19jcHU9bWlwczY0cjYKKyAJICAgIDs7CisrCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQorKwkgICAgbWlwc19jcHU9eGxwCisrCSAgICA7OworIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKKyAJICAgIG1pcHNfY3B1PXIzOTAwCisgCSAgICA7OworZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUuYWMgYi9nYXMvY29uZmlndXJlLmFjCitpbmRleCA2ZjMyZTU1YTFhLi4xMWMyZTBkMjczIDEwMDY0NAorLS0tIGEvZ2FzL2NvbmZpZ3VyZS5hYworKysrIGIvZ2FzL2NvbmZpZ3VyZS5hYworQEAgLTMyNSw2ICszMjUsOSBAQCBjaGFuZ2VxdW90ZShbLF0pZG5sCisgCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQorIAkgICAgbWlwc19jcHU9bWlwczY0cjYKKyAJICAgIDs7CisrCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQorKwkgICAgbWlwc19jcHU9eGxwCisrCSAgICA7OworIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKKyAJICAgIG1pcHNfY3B1PXIzOTAwCisgCSAgICA7OworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAoraW5kZXggZDExNmIwMzZiNi4uZGNlZWIzZjE1NiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAorKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitAQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQorICNkZWZpbmUgRV9NSVBTX01BQ0hfU0IxICAgICAgICAgMHgwMDhhMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OCTB4MDA4YjAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX1hMUiAgICAgCTB4MDA4YzAwMDAKKysjZGVmaW5lIEVfTUlQU19NQUNIX1hMUCAgICAgICAgIDB4MDA4ZjAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjIJMHgwMDhkMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKK2RpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKK2luZGV4IGZkMDMxZjM3NTguLmE5NmE0NGRmODQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKKysrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorQEAgLTEyNjAsNiArMTI2MCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisgLyogSW1hZ2luYXRpb24gaW50ZXJBcHRpdiBNUjIuICAqLworICNkZWZpbmUgSU5TTl9JTlRFUkFQVElWX01SMgkgIDB4MDQwMDAwMDAKKysvKiBOZXRsb2dpYyBYbFAgaW5zdHJ1Y3Rpb24gKi8KKysjZGVmaW5lIElOU05fWExQCQkweDAwMDAwMDgwCisgCisgLyogRFNQIEFTRSAqLworICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKK0BAIC0xMzg0LDYgKzEzODYsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CisgI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCisgI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLworICNkZWZpbmUgQ1BVX0lOVEVSQVBUSVZfTVIyIDczNjU1MAkvKiBkZWNpbWFsICdJQTInICAqLworKyNkZWZpbmUgQ1BVX1hMUCAgICAgICAgIDg4NzY4MCAgICAgIC8qIGRlY2ltYWwgJ1hMUCcgICAqLworIAorIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCisgCitAQCAtMTQ2MSw2ICsxNDY0LDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCisgICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKKyAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOworIAorKyAgICBjYXNlIENQVV9YTFA6CisrICAgICAgcmV0dXJuIChtYXNrICYgSU5TTl9YTFApICE9IDA7CisrCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIEZBTFNFOworICAgICB9CitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IGY0ZjBlYWY5YjIuLjBkYTNlY2ExOWMgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUudGd0CisrKysgYi9sZC9jb25maWd1cmUudGd0CitAQCAtNTIwLDYgKzUyMCw5IEBAIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKKyAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIKKyAJCQk7OworK21pcHNpc2E2NCotKi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKKysJCQk7OworIG1pcHM2NCplbC1wczItZWxmKikJdGFyZ19lbXVsPWVsZjMybHI1OTAwbjMyCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCitpbmRleCA3NTViYmUyOTRiLi5jZTIyZWY2ODNhIDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCisrKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKK0BAIC02NzQsMTMgKzY3NCwxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KKyAgICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorICAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorIAorLSAgLyogWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiBpdCBpcyBiZWluZworLSAgICAgTUlQUzY0UjIuICAqLworLSAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHIsIENQVV9YTFIsCistICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExSLCAwLAorLSAgICBtaXBzX2NwMF9uYW1lc194bHIsCistICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKKy0gICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKKysgIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxwLCBDUFVfWExQLAorKyAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUCwgMCwKKysgICAgbWlwc19jcDBfbmFtZXNfbWlwczMyNjRyMiwKKysgICAgbWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiksCisrICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19taXBzMzI2NHIyIH0sCisgCisgICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCisgICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLworZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYworaW5kZXggNTI3MGFlZWZhOC4uZDE3ZGM3OGNkNyAxMDA2NDQKKy0tLSBhL29wY29kZXMvbWlwcy1vcGMuYworKysrIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitAQCAtMzI4LDYgKzMyOCw3IEBAIGRlY29kZV9taXBzX29wZXJhbmQgKGNvbnN0IGNoYXIgKnApCisgI2RlZmluZSBJT0NUMwlJTlNOX09DVEVPTjMKKyAjZGVmaW5lIFhMUiAgICAgSU5TTl9YTFIKKyAjZGVmaW5lIElBTVIyCUlOU05fSU5URVJBUFRJVl9NUjIKKysjZGVmaW5lIFhMUAlJTlNOX1hMUAorICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKKyAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAorIAorQEAgLTk5MCw2ICs5OTEsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAorIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCisgeyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAorK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCisgLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgeyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKKyB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorQEAgLTEwMjIsMTIgKzEwMjQsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsiZGFkZGl1IiwJCSJ0LHIsaiIsCTB4NjQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfMiwJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRhZGR1IiwJCSJkLHYsdCIsCTB4MDAwMDAwMmQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGFkZHUiLAkJInQscixJIiwJMCwgICAgKGludCkgTV9EQUREVV9JLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJMCB9LAorLXsiZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUiwJCTAsCTAgfSwKKyt7ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJkYnJlYWsiLAkJIiIsCQkweDcwMDAwMDNmLCAweGZmZmZmZmZmLAkwLAkJCTAsCQlONSwJCTAsCTAgfSwKKyB7ImRjbG8iLAkJImQscyIsCQkweDAwMDAwMDUzLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZGNsbyIsCQkiVSxzIiwJIAkweDcwMDAwMDI1LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCisgeyJkY2x6IiwJCSJkLHMiLAkJMHgwMDAwMDA1MiwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRjbHoiLAkJIlUscyIsCSAJMHg3MDAwMDAyNCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAorK3siZGNyYyIsCQkiZCxzLHQiLAkweDcwMDAwMDFkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCisgLyogZGN0ciBhbmQgZGN0dyBhcmUgdXNlZCBvbiB0aGUgcjUwMDAuICAqLworIHsiZGN0ciIsCQkibyhiKSIsCSAJMHhiYzA1MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkY3R3IiwJCSJvKGIpIiwJCTB4YmMwOTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAorQEAgLTEwOTksNiArMTEwMiw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImRtZmMwIiwJCSJ0LEcsSCIsCTB4NDAyMDAwMDAsIDB4ZmZlMDA3ZjgsCVdSXzF8UkRfQzB8TEMsCQkwLAkJSTY0LAkJMCwJMCB9LAorIHsiZG1mZ2MwIiwJCSJ0LEciLAkJMHg0MDYwMDEwMCwgMHhmZmUwMDdmZiwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAorIHsiZG1mZ2MwIiwJCSJ0LEcsSCIsCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZjgsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKKyt7ImRtZnVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZSwgMHhmZmUwMDdmZiwgV1JfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAorIHsiZG10IiwJCQkiIiwJCTB4NDE2MDBiYzEsIDB4ZmZmZmZmZmYsIFRSQVAsCQkJMCwJCTAsCQlNVDMyLAkwIH0sCisgeyJkbXQiLAkJCSJ0IiwJCTB4NDE2MDBiYzEsIDB4ZmZlMGZmZmYsIFdSXzF8VFJBUCwJCTAsCQkwLAkJTVQzMiwJMCB9LAorIHsiZG10YzAiLAkJInQsRyIsCQkweDQwYTAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0MwfFdSX0NDfENNLAkwLAkJSTMsCQkwLAlFRSB9LAorQEAgLTExMTQsNiArMTExOCw4IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyAvKiBkbWZjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgLyogZG10YzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLworIHsiZG11aCIsCQkiZCxzLHQiLAkweDAwMDAwMGRjLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCisreyJkbXR1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWYsIDB4ZmZlMDA3ZmYsCVJEXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKKyt7ImRtdWwiLAkJImQscyx0IiwJMHg3MDAwMDAwNiwgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCQkwLAkJWExQLAkJMCwJMCB9LAorIHsiZG11bCIsCQkiZCxzLHQiLAkweDAwMDAwMDljLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHYsdCIsCTB4NzAwMDAwMDMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0hJTE8sCTAsCQlJT0NULAkJMCwJMCB9LAorIHsiZG11bCIsCQkiZCx2LHQiLAkwLCAgICAoaW50KSBNX0RNVUwsCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAlNMzJ8STY5IH0sCitAQCAtMTI2Nyw5ICsxMjczLDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsibGQiLAkJCSJzLC1iKCtSKSIsCTB4ZWMxODAwMDAsIDB4ZmMxYzAwMDAsIFdSXzEsCQkJUkRfcGMsCQlJNjksCQkwLAkwIH0sCisgeyJsZCIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fTERfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCisgeyJsZCIsCQkJInQsbyhiKSIsCTB4ZGMwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xMTSwJCTAsCQlJMywJCTAsCTAgfSwKKy17ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisreyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsibGRjMSIsCQkiVCxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAorIHsibGRjMSIsCQkiRSxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAorIHsibGRjMSIsCQkiVCxBKGIpIiwJMCwgICAgKGludCkgTV9MREMxX0FCLAlJTlNOX01BQ1JPLAkJSU5TTjJfTV9GUF9ELAlJMiwJCTAsCVNGIH0sCitAQCAtMTQzOCw3ICsxNDQ0LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsibWZsbyIsCQkiZCw5IiwJCTB4MDAwMDAwMTIsIDB4ZmY5ZjA3ZmYsIFdSXzF8UkRfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAorIHsibWZsbzEiLAkJImQiLAkJMHg3MDAwMDAxMiwgMHhmZmZmMDdmZiwJV1JfMXxSRF9MTywJCTAsCQlFRSwJCTAsCTAgfSwKKyB7Im1mbGh4dSIsCQkiZCIsCQkweDAwMDAwMDUyLCAweGZmZmYwN2ZmLAlXUl8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKKy17Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7Im1mc2EiLAkJImQiLAkJMHgwMDAwMDAyOCwgMHhmZmZmMDdmZiwJV1JfMSwJCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtaW4ub2IiLAkJIlgsWSxRIiwJMHg3ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCVNCMSwJCU1YLAkwIH0sCisgeyJtaW4ub2IiLAkJIkQsUyxRIiwJMHg0ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCU41NCwJCTAsCTAgfSwKK0BAIC0xNDgzLDEwICsxNDg5LDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyAvKiBtb3ZlIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHRhYmxlLiAgKi8KKyB7Im1zZ24ucWgiLAkJIlgsWSxRIiwJMHg3ODIwMDAwMCwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCTAsCQlNWCwJMCB9LAorIHsibXNnc25kIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHU05ELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1zZ3NuZHMiLAkJImQsdCIsCQkweDRhMDAwMDAxLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJtc2dsZCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR0xELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyB7Im1zZ2xkIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHTERfVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisteyJtc2d3YWl0IiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisteyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXNnbGRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMiwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAorK3sibXNnd2FpdCIsCQkiIiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwgIElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7Im1zZ3N5bmMiLAkJIiIsCQkweDRhMDAwMDA0LCAweGZmZmZmZmZmLDAsCQkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7Im1zdWIuZCIsCQkiRCxSLFMsVCIsCTB4NGMwMDAwMjksIDB4ZmMwMDAwM2YsIFdSXzF8UkRfMnxSRF8zfFJEXzR8RlBfRCwgMCwJCUk0XzMzLAkJMCwJSTM3IH0sCisgeyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg0NjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkUsCQkwLAkwIH0sCisgeyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg3MjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkYsCQkwLAkwIH0sCitAQCAtMTUzNiw3ICsxNTQ1LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsibXRsbyIsCQkicyw3IiwJCTB4MDAwMDAwMTMsIDB4ZmMxZmU3ZmYsIFJEXzF8V1JfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAorIHsibXRsbzEiLAkJInMiLAkJMHg3MDAwMDAxMywgMHhmYzFmZmZmZiwJUkRfMXxXUl9MTywJCTAsCQlFRSwJCTAsCTAgfSwKKyB7Im10bGh4IiwJCSJzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZmZmZmYsCVJEXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAorLXsibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsibXRtMCIsCQkicyIsCQkweDcwMDAwMDA4LCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAorIHsibXRtMCIsICAgIAkJInMsdCIsCQkweDcwMDAwMDA4LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJSU9DVDMsCQkwLAkwIH0sCisgeyJtdG0xIiwJCSJzIiwJCTB4NzAwMDAwMGMsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCitAQCAtMTk3OCw5ICsxOTg3LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsic3V4YzEiLAkJIlMsdChiKSIsCTB4NGMwMDAwMGQsIDB4ZmMwMDA3ZmYsIFJEXzF8UkRfMnxSRF8zfFNNfEZQX0QsCTAsCQlJNV8zM3xONTUsCTAsCUkzN30sCisgeyJzdyIsCQkJInQsbyhiKSIsCTB4YWMwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTSwJCTAsCQlJMSwJCTAsCTAgfSwKKyB7InN3IiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9TV19BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKKy17InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisreyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsic3djMCIsCQkiRSxvKGIpIiwJMHhlMDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfM3xSRF9DMHxTTSwJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCisgeyJzd2MwIiwJCSJFLEEoYikiLAkwLCAgICAoaW50KSBNX1NXQzBfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAorIHsic3djMSIsCQkiVCxvKGIpIiwJMHhlNDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNfEZQX1MsCTAsCQlJMSwJCTAsCTAgfSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTNiNzhmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGU0ODc2N2EwMjk4ZTZjY2Y1M2Q4M2ZlY2M5M2JiNmQyNmI1OTU4OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLURhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKLQotU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLWluZGV4IDMwMzI2MzFkNGUuLjE0MmYwOTZlZjQgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL3BwYy1vcGMuYwotKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLUBAIC01MzI1LDcgKzUzMjUsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0geyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCi0gCi0geyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAotLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCi0gCi0geyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCi0gCi1AQCAtNTM3OSw3ICs1Mzc4LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0gewotIAotIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCi0geyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKLSt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAotIAotIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCi0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDkyOTE3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA2NTg3ZTdiOGU3NzMwZGRhMjBkOGM0N2NhYmU5ZjdmODM5N2VmYTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xNV0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKLQotQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzZTA2NmVkYWE4Li5jYWYxMzBjZWRhIDEwMDY0NAotLS0tIGEvZ29sZC9jb25maWd1cmUudGd0Ci0rKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCi0gIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotICA7OwotK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCi0rIHRhcmdfb2JqPW1pcHMKLSsgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSsgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSsgOzsKLSBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQotICB0YXJnX29iaj1taXBzCi0gIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQotQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKLSAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0gIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0gIDs7Ci0rbWlwcyo2NCotKi0qKQotKyB0YXJnX29iaj1taXBzCi0rIHRhcmdfbWFjaGluZT1FTV9NSVBTCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQotKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKLSsgOzsKLSBtaXBzKi0qLSopCi0gIHRhcmdfb2JqPW1pcHMKLSAgdGFyZ19tYWNoaW5lPUVNX01JUFMKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2RlODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZWY0YWQxY2I5ZmYxYjVhODcxZmZhNzkyYTcxYjNhZDZkMTRlYjNkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgorRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYworCitTaWduZWQtb2ZmLWJ5OiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBvcGNvZGVzL3BwYy1vcGMuYyB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYworaW5kZXggN2VmOTFkODE5Yi4uMTQ1OTUzZDNjNCAxMDA2NDQKKy0tLSBhL29wY29kZXMvcHBjLW9wYy5jCisrKysgYi9vcGNvZGVzL3BwYy1vcGMuYworQEAgLTU3MDksNyArNTcwOSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKKyB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKKyAKKyB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCisteyJ3YWl0IiwJWCgzMSwzMCksCVhXQ19NQVNLLCAgICBQT1dFUjksCTAsCQl7V0N9fSwKKyAKKyB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKKyAKK0BAIC01NzYzLDcgKzU3NjIsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CisgCisgeyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKKyB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKKy17IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtXQ319LAorK3sid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyfFBPV0VSOSwgMCwJe1dDfX0sCisgCisgeyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhY2RlMWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gMmY3ZjIzODk3NjRlZjFkNjk5ZjZhZDMyMDU3MzE0MDI0YjdlODRlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCisKK0FkZCBtaXBzNjQgdGFyZ2V0IHRyaXBsZXRzIGFuZCBkZWZhdWx0IHRvIE42NAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDE2LTA4L21zZzAwMDQ4Lmh0bWwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdvbGQvY29uZmlndXJlLnRndCB8IDE0ICsrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dvbGQvY29uZmlndXJlLnRndCBiL2dvbGQvY29uZmlndXJlLnRndAoraW5kZXggYWE3ZWM1NTJhZS4uNDcwNTE1MDYyZSAxMDA2NDQKKy0tLSBhL2dvbGQvY29uZmlndXJlLnRndAorKysrIGIvZ29sZC9jb25maWd1cmUudGd0CitAQCAtMTUzLDYgKzE1MywxMyBAQCBhYXJjaDY0Ki0qKQorICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKyAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKyAgOzsKKyttaXBzKjY0KmVsKi0qLSp8bWlwcyo2NCpsZSotKi0qKQorKyB0YXJnX29iaj1taXBzCisrIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQorKyB0YXJnX3NpemU9NjQKKysgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisrIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisrIDs7CisgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKKyAgdGFyZ19vYmo9bWlwcworICB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKK0BAIC0xNjAsNiArMTY3LDEzIEBAIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCisgIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorICA7OworK21pcHMqNjQqLSotKikKKysgdGFyZ19vYmo9bWlwcworKyB0YXJnX21hY2hpbmU9RU1fTUlQUworKyB0YXJnX3NpemU9NjQKKysgdGFyZ19iaWdfZW5kaWFuPXRydWUKKysgdGFyZ19leHRyYV9iaWdfZW5kaWFuPWZhbHNlCisrIDs7CisgbWlwcyotKi0qKQorICB0YXJnX29iaj1taXBzCisgIHRhcmdfbWFjaGluZT1FTV9NSVBTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YmExMGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotRnJvbSBiNzcyOTM0MzIwNmZhMTk2YjlhMTE3NDdhOTJiM2NmNTYzMjc3MDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAotU3ViamVjdDogW1BBVENIIDE0LzE1XSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCi0KLUFwcGx5IHRoZXNlIHBhdGNoZXMgZnJvbSBvdXIgbGlidG9vbCBwYXRjaGVzIGFzIG5vdCBvbmx5IGFyZSByZWR1bmRhbnQgUlBBVEhzIGEKLXdhc3RlIG9mIHNwYWNlIGJ1dCB0aGV5IGNhbiBjYXVzZSBpbmNvcnJlY3QgbGlua2luZyB3aGVuIG5hdGl2ZSBwYWNrYWdlcyBhcmUKLXJlc3RvcmVkIGZyb20gc3N0YXRlLgotCi1maXgtcnBhdGgucGF0Y2g6Ci1XZSBkb24ndCB3YW50IHRvIGFkZCBSUEFUSFMgd2hpY2ggbWF0Y2ggZGVmYXVsdCBsaW5rZXIKLXNlYXJjaCBwYXRocywgdGhleSdyZSBhIHdhc3RlIG9mIHNwYWNlLiBUaGlzIHBhdGNoCi1maWx0ZXJzIGxpYnRvb2xzIGxpc3QgYW5kIHJlbW92ZXMgdGhlIG9uZXMgd2UgZG9uJ3QgbmVlZC4KLQotbm9ybS1ycGF0aC5wYXRjaDoKLUxpYnRvb2wgbWF5IGJlIHBhc3NlZCBsaW5rIHBhdGhzIG9mIHRoZSBmb3JtICIvdXNyL2xpYi8uLi9saWIiLCB3aGljaAotZm9vbCBpdHMgZGV0ZWN0aW9uIGNvZGUgaW50byB0aGlua2luZyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYW4KLVJQQVRIIGluIHRoZSBnZW5lcmF0ZWQgYmluYXJ5LiAgTm9ybWFsaXplIGJlZm9yZSBjb21wYXJpc2lvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAxMWVlNjg0Y2NjLi4zYjE5YWMxNTMyIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC04MDUzLDggKzgwNTMsMTYgQEAgRU9GCi0gCQkgIGVzYWMKLSAJCWZpCi0gCSAgICAgIGVsc2UKLS0JCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLS0JCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKLSsgICAgICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCi0rICAgICAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCi0rICAgICAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKwkgICAgICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KLSsJICAgICAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7Ci0rCSAgICAgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAgICAgICAgOzsKLSsJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi0gCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotQEAgLTg3OTAsOCArODc5OCwxNiBAQCBFT0YKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0tCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQotKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgotKyAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCi0rICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCi0rCSAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7Ci0rCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICAgICAgICAgcnBhdGgrPSIgJGZsYWciCi0rICAgICAgICAgICAgICAgOzsKLSsJICAgIGVzYWMKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi1AQCAtODg0MSw4ICs4ODU3LDE0IEBAIEVPRgotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLS0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCi0rICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCi0rCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCi0rCSAgICAqIiAkbGliZGlyICIqKSA7OwotKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgICAgOzsKLSsJICAgIGVzYWMKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LWJpbnV0aWxzLWVuYWJsZS14ODZfNjQtcGVwLWZvci1wcm9kdWNpbmctRUZJLWJpbmFyaWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LWJpbnV0aWxzLWVuYWJsZS14ODZfNjQtcGVwLWZvci1wcm9kdWNpbmctRUZJLWJpbmFyaWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZGU1NjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1iaW51dGlscy1lbmFibGUteDg2XzY0LXBlcC1mb3ItcHJvZHVjaW5nLUVGSS1iaW5hcmllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBkNWQ3ODM5MDNlMzM1MzAyZTU2MmJhYzhkYTFhMDgzMzM4ZDc1YjI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjkgTm92IDIwMTggMTc6NDY6NDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8xNV0gYmludXRpbHMgOiBlbmFibGUgeDg2XzY0LXBlcCBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcwotIG9uIHg4Ni02NAotCi1BZGQgeDg2XzY0LXBlcCBlbXVsYXRpb24gc3VwcG9ydCB0byB0aGUgc2V0IGVuYWJsZWQgZm9yIHg4Nl82NCB0YXJnZXRzCi10byBlbmFibGUgdGhlIGxpbmtlciB0byBwcm9kdWNlIFBvcnRhYmxlIEV4ZWN1dGFibGVzIGZvciBFRkkgYmluYXJpZXMuCi0KLUVuYWJsZXMgYnVpbGRpbmcgdGhlIHg4Ni02NCBFRkkgdmFyaWFudCBvZiB0aGUgWGVuIGh5cGVydmlzb3IgZm9yCi10aGUgT3BlblhUIFByb2plY3QuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbiBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiZmQvY29uZmlnLmJmZCAgIHwgMiArLQotIGxkL2NvbmZpZ3VyZS50Z3QgfCA1ICsrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCAzNjE0ZmY3OWQ0Li5hZWYxNDQ4MDNhIDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZy5iZmQKLSsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtNjk0LDcgKzY5NCw3IEBAIGNhc2UgIiR7dGFyZ30iIGluCi0gICAgIDs7Ci0gICB4ODZfNjQtKi1saW51eC0qKQotICAgICB0YXJnX2RlZnZlYz14ODZfNjRfZWxmNjRfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0iaTM4Nl9lbGYzMl92ZWMgaWFtY3VfZWxmMzJfdmVjIHg4Nl82NF9lbGYzMl92ZWMgaTM4Nl9wZWlfdmVjIHg4Nl82NF9wZWlfdmVjIGwxb21fZWxmNjRfdmVjIGsxb21fZWxmNjRfdmVjIgotKyAgICB0YXJnX3NlbHZlY3M9ImkzODZfZWxmMzJfdmVjIGlhbWN1X2VsZjMyX3ZlYyB4ODZfNjRfZWxmMzJfdmVjIGkzODZfcGVpX3ZlYyB4ODZfNjRfcGVpX3ZlYyBsMW9tX2VsZjY0X3ZlYyBrMW9tX2VsZjY0X3ZlYyB4ODZfNjRfcGVfdmVjIHg4Nl82NF9wZV9iZV92ZWMgaTM4Nl9wZV92ZWMiCi0gICAgIHdhbnQ2ND10cnVlCi0gICAgIDs7Ci0gICB4ODZfNjQtKi1uYWNsKikKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggMzQ3ZGY2YzNmNi4uMWUzN2Q3NDdhOSAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC0yNTcsOCArMjU3LDkgQEAgeDg2XzY0LSotbGludXgtZ251eDMyKQl0YXJnX2VtdWw9ZWxmMzJfeDg2XzY0Ci0gCQkJdGRpcl9lbGZfaWFtY3U9YGVjaG8gJHt0YXJnX2FsaWFzfSB8IHNlZCAtZSAncy94ODZfNjQvaTM4Ni8nIC1lICdzLy1saW51eC1nbnV4MzIvLWxpbnV4LWdudS8nYAotIAkJCXRkaXJfZWxmX2kzODY9YGVjaG8gJHt0YXJnX2FsaWFzfSB8IHNlZCAtZSAncy94ODZfNjQvaTM4Ni8nIC1lICdzLy1saW51eC1nbnV4MzIvLWxpbnV4LWdudS8nYCA7OwotIHg4Nl82NC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGZfeDg2XzY0Ci0tCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJfeDg2XzY0IGVsZl9pMzg2IGVsZl9pYW1jdSBlbGZfbDFvbSBlbGZfazFvbSIKLS0JCQl0YXJnX2V4dHJhX2xpYnBhdGg9ImVsZl9pMzg2IGVsZjMyX3g4Nl82NCBlbGZfbDFvbSBlbGZfazFvbSIKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMl94ODZfNjQgZWxmX2kzODYgZWxmX2lhbWN1IGVsZl9sMW9tIGVsZl9rMW9tIGkzODZwZSBpMzg2cGVwIgotKwkJCXRhcmdfZXh0cmFfbGlicGF0aD0iZWxmX2kzODYgZWxmMzJfeDg2XzY0IGVsZl9sMW9tIGVsZl9rMW9tIGkzODZwZXAiCi0rCQkJdGFyZ19leHRyYV9vZmlsZXM9ImRlZmZpbGVwLm8gcGVwLWRsbC5vIHBlLWRsbC5vIgotIAkJCXRkaXJfZWxmX2kzODY9YGVjaG8gJHt0YXJnX2FsaWFzfSB8IHNlZCAtZSAncy94ODZfNjQvaTM4Ni8nYCA7OwotIGlbMy03XTg2LSotcmVkb3gqKQl0YXJnX2VtdWw9ZWxmX2kzODYKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPWVsZl94ODZfNjQgOzsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzk0NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gMzkyZDQ3NGE3MmQzN2I2NjlmNTNhYjlmMGZhOTEzYjk1OGFmOTNmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6MzM6MjcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3luYyB3aXRoIE9FIGxpYnRvb2wgY2hhbmdlcworCitBcHBseSB0aGVzZSBwYXRjaGVzIGZyb20gb3VyIGxpYnRvb2wgcGF0Y2hlcyBhcyBub3Qgb25seSBhcmUgcmVkdW5kYW50IFJQQVRIcyBhCit3YXN0ZSBvZiBzcGFjZSBidXQgdGhleSBjYW4gY2F1c2UgaW5jb3JyZWN0IGxpbmtpbmcgd2hlbiBuYXRpdmUgcGFja2FnZXMgYXJlCityZXN0b3JlZCBmcm9tIHNzdGF0ZS4KKworZml4LXJwYXRoLnBhdGNoOgorV2UgZG9uJ3Qgd2FudCB0byBhZGQgUlBBVEhTIHdoaWNoIG1hdGNoIGRlZmF1bHQgbGlua2VyCitzZWFyY2ggcGF0aHMsIHRoZXkncmUgYSB3YXN0ZSBvZiBzcGFjZS4gVGhpcyBwYXRjaAorZmlsdGVycyBsaWJ0b29scyBsaXN0IGFuZCByZW1vdmVzIHRoZSBvbmVzIHdlIGRvbid0IG5lZWQuCisKK25vcm0tcnBhdGgucGF0Y2g6CitMaWJ0b29sIG1heSBiZSBwYXNzZWQgbGluayBwYXRocyBvZiB0aGUgZm9ybSAiL3Vzci9saWIvLi4vbGliIiwgd2hpY2gKK2Zvb2wgaXRzIGRldGVjdGlvbiBjb2RlIGludG8gdGhpbmtpbmcgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIGFuCitSUEFUSCBpbiB0aGUgZ2VuZXJhdGVkIGJpbmFyeS4gIE5vcm1hbGl6ZSBiZWZvcmUgY29tcGFyaXNpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggMTFlZTY4NGNjYy4uM2IxOWFjMTUzMiAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtODA1Myw4ICs4MDUzLDE2IEBAIEVPRgorIAkJICBlc2FjCisgCQlmaQorIAkgICAgICBlbHNlCistCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCisrICAgICAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgorKyAgICAgICAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkbGliZGlyIgorKyAgICAgICAgICAgICAgICBsaWJkaXJfbm9ybT0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKysJICAgICAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAgICAgKiIgJGxpYmRpcl9ub3JtICIqKSA7OworKwkgICAgICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgICAgICAgIDs7CisrCSAgICAgICAgZXNhYworIAkgICAgICBmaQorIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KK0BAIC04NzkwLDggKzg3OTgsMTYgQEAgRU9GCisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorLQkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKKysgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysgICAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkbGliZGlyIgorKyAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKwkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorKwkgICAgKiIgJGxpYmRpcl9ub3JtICIqKSA7OworKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgIHJwYXRoKz0iICRmbGFnIgorKyAgICAgICAgICAgICAgIDs7CisrCSAgICBlc2FjCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorQEAgLTg4NDEsOCArODg1NywxNCBAQCBFT0YKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgorKwkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorKwkgICAgKiIgJGxpYmRpciAiKikgOzsKKysJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgIDs7CisrCSAgICBlc2FjCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1DaGVjay1mb3ItY2xhbmctYmVmb3JlLWNoZWNraW5nLWdjYy12ZXJzaW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1DaGVjay1mb3ItY2xhbmctYmVmb3JlLWNoZWNraW5nLWdjYy12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2OTRiNDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA2NzU5MGE0NGMxMjU2NDkxZmE2NzQ0MjZmMDE3MGQ1ZDA1Mzc3ZDA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgQXByIDIwMjAgMTQ6MTc6MjAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8xNl0gQ2hlY2sgZm9yIGNsYW5nIGJlZm9yZSBjaGVja2luZyBnY2MgdmVyc2lvbgorCitDbGFuZyBhZHZlcnRpc2VzIGl0c2VsZiB0byBiZSBnY2MgNC4yLjEsIHNvIHdoZW4gY29tcGlsaW5nIHRoaXMgdGVzdAoraGVyZSBmYWlscyBzaW5jZSBnY2MgPCA0LjQuNSBkaWQgbm90IHN1cHBvcnQgLXN0YXRpYy1saWJzdGRjKysgYnV0IHRoYXRzCitub3QgdHJ1ZSBmb3IgY2xhbmcsIHNvIGl0cyBiZXR0ZXIgdG8gbWFrZSBhbiBhZGRpdGlvbmFsIGNoZWNrIGZvciBjbGFuZworYmVmb3JlIHJlc29ydGluZyB0byBnY2MgdmVyc2lvbiBjaGVjay4gVGhpcyBzaG91bGQgbGV0IGNsYW5nIGVuYWJsZQorc3RhdGljIGxpYnN0ZGMrKyBsaW5raW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNTkwYjAzYzJkYTAuLjQ2ZjExNmZkYjU0IDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC01MTQwLDcgKzUxNDAsNyBAQCBhY19jb21waWxlcl9nbnU9JGFjX2N2X2N4eF9jb21waWxlcl9nbnUKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorLSNpZiAoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpCisrI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkpCisgI2Vycm9yIC1zdGF0aWMtbGlic3RkYysrIG5vdCBpbXBsZW1lbnRlZAorICNlbmRpZgorIGludCBtYWluKCkge30KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQzZjg1ZTZmNWQ1Li5jMGViMTM0MzEyMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTMwOSw3ICsxMzA5LDcgQEAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBnKysgYWNjZXB0cyAtc3RhdGljLWxpYnN0ZGMrKyAtc3RhdGljLWxpYmdjY10pCisgICBBQ19MQU5HX1BVU0goQysrKQorICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKKy0jaWYgKF9fR05VQ19fIDwgNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KQorKyNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpKQorICNlcnJvciAtc3RhdGljLWxpYnN0ZGMrKyBub3QgaW1wbGVtZW50ZWQKKyAjZW5kaWYKKyBpbnQgbWFpbigpIHt9XSldLAorLS0gCisyLjI2LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTI5NzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xMjk3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkMWQ2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xMjk3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMzBiY2MwMTQ3ODQzM2ExY2IwNWIzNmRjNWM0YmVlZjdkMmM4OWI1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIxIEp1biAyMDE5IDExOjUxOjM4ICswOTMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQ2ODksIHN0cmluZyB0YWJsZSBjb3JydXB0aW9uCi0KLVRoZSB0ZXN0Y2FzZSBpbiB0aGUgUFIgaGFkIGEgZV9zaHN0cm5keCBzZWN0aW9uIG9mIHR5cGUgU0hUX0dST1VQLgotaGRyLT5jb250ZW50cyB3ZXJlIGluaXRpYWxpemVkIGJ5IHNldHVwX2dyb3VwIHJhdGhlciB0aGFuIGJlaW5nIHJlYWQKLWZyb20gdGhlIGZpbGUsIHRodXMgbGFzdCBieXRlIHdhcyBub3QgemVybyBhbmQgc3RyaW5nIGRlcmVmZXJlbmNlIHJhbgotb2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLQotCVBSIDI0Njg5Ci0JKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IENoZWNrIHR5cGUgb2YgZV9zaHN0cm5keCBzZWN0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE5LTEyOTcyCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDUgKysrKysKLSBiZmQvZWxmY29kZS5oIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKLWluZGV4IDkxZjA5ZTYzNDYuLmU2NmZiNDBhMmMgMTAwNjQ0Ci0tLS0gYS9iZmQvQ2hhbmdlTG9nCi0rKysgYi9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDggQEAKLSsyMDE5LTA2LTIxICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsJUFIgMjQ2ODkKLSsJKiBlbGZjb2RlLmggKGVsZl9vYmplY3RfcCk6IENoZWNrIHR5cGUgb2YgZV9zaHN0cm5keCBzZWN0aW9uLgotKwotIDIwMTktMDItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiAyNDIzNgotZGlmZiAtLWdpdCBhL2JmZC9lbGZjb2RlLmggYi9iZmQvZWxmY29kZS5oCi1pbmRleCBlYzVlYTc2NmRlLi5hMzVhNjI5MDg3IDEwMDY0NAotLS0tIGEvYmZkL2VsZmNvZGUuaAotKysrIGIvYmZkL2VsZmNvZGUuaAotQEAgLTc1NSw3ICs3NTUsOCBAQCBlbGZfb2JqZWN0X3AgKGJmZCAqYWJmZCkKLSAgIC8qIEEgZnVydGhlciBzYW5pdHkgY2hlY2suICAqLwotICAgaWYgKGlfZWhkcnAtPmVfc2hudW0gIT0gMCkKLSAgICAgewotLSAgICAgIGlmIChpX2VoZHJwLT5lX3Noc3RybmR4ID49IGVsZl9udW1zZWN0aW9ucyAoYWJmZCkpCi0rICAgICAgaWYgKGlfZWhkcnAtPmVfc2hzdHJuZHggPj0gZWxmX251bXNlY3Rpb25zIChhYmZkKQotKwkgIHx8IGlfc2hkcnBbaV9laGRycC0+ZV9zaHN0cm5keF0uc2hfdHlwZSAhPSBTSFRfU1RSVEFCKQotIAl7Ci0gCSAgLyogUFIgMjI1NzoKLSAJICAgICBXZSB1c2VkIHRvIGp1c3QgZ290byBnb3Rfd3JvbmdfZm9ybWF0X2Vycm9yIGhlcmUKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0MjUwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MTVhODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGRmNzhiZTA1ZGFmNGViMDdmNjBmNTBlYzEwODBjYjk3OWFmMzJlYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBtYXJ4aW4gPG1hcnhpbkAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUdWUsIDIzIEp1bCAyMDE5IDA3OjMzOjMyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmliZXJ0eTogQ2hlY2sgemVybyB2YWx1ZSBzaHN0cm5keCBpbiBzaW1wbGUtb2JqZWN0LWVsZi5jCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI3MzcxOCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotQ1ZFOiBDVkUtMjAxOS0xNDI1MAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBnY2M6IGh0dHBzOi8vZ2NjLmdudS5vcmcvdmlld2N2cy9nY2M/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj0yNzM3MThdCi1bUmVtb3ZlZCBDaGFuZ2Vsb2cgZW50cnldCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotaW5kZXggNTAyMzg4OTkxYTA4Li5iZGVlOTYzNjM0ZDYgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotKysrIGIvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLUBAIC01NDgsNyArNTQ4LDE1IEBAIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoICh1bnNpZ25lZCBjaGFyIGhlYWRlcltTSU1QTEVfT0JKRUNUX01BVENIX0hFQURFUl9MRU5dLAotICAgICAgIFhERUxFVEUgKGVvcik7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLS0KLSsgIAotKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKLSsgICAgewotKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7Ci0rICAgICAgKmVyciA9IDA7Ci0rICAgICAgWERFTEVURSAoZW9yKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKyAgCi0gICByZXR1cm4gKHZvaWQgKikgZW9yOwotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0NDQ0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQ0NDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YjlhOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQ0NDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGUxNzg2OWRiOTkxOTU4NDk4MjZlYWFmNWQyZDBlYjJjZmRkN2EyYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDUgQXVnIDIwMTkgMTA6NDA6MzUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2F0Y2ggcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cgaW4gcmVhZGVsZiB3aGVuIHByb2Nlc3NpbmcKLSBjb3JydXB0IGJpbmFyaWVzLgotCi0JUFIgMjQ4MjkKLQkqIHJlYWRlbGYuYyAoYXBwbHlfcmVsb2NhdGlvbnMpOiBDYXRjaCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdwotCXdoaWxzdCBjaGVja2luZyByZWxvYyBsb2NhdGlvbiBhZ2FpbnN0IHNlY3Rpb24gc2l6ZS4KLQotQ1ZFOiBDVkUtMjAxOS0xNDQ0NAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWJpbnV0aWxzLWdkYi5naXQ7aD1lMTc4NjlkYjk5MTk1ODQ5ODI2ZWFhZjVkMmQwZWIyY2ZkZDdhMmE3XQotW1JlbW92ZWQgQ2hhbmdlbG9nIGVudHJ5XQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYjg5NmFkOWY0MDYuLmU3ODVmZGU0M2U3IDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xMzM2Niw3ICsxMzM2Niw3IEBAIGFwcGx5X3JlbG9jYXRpb25zIChGaWxlZGF0YSAqICAgICAgICAgICAgICAgICBmaWxlZGF0YSwKLSAJICAgIH0KLSAKLSAJICBybG9jID0gc3RhcnQgKyBycC0+cl9vZmZzZXQ7Ci0tCSAgaWYgKChybG9jICsgcmVsb2Nfc2l6ZSkgPiBlbmQgfHwgKHJsb2MgPCBzdGFydCkpCi0rCSAgaWYgKHJsb2MgPj0gZW5kIHx8IChybG9jICsgcmVsb2Nfc2l6ZSkgPiBlbmQgfHwgKHJsb2MgPCBzdGFydCkpCi0gCSAgICB7Ci0gCSAgICAgIHdhcm4gKF8oInNraXBwaW5nIGludmFsaWQgcmVsb2NhdGlvbiBvZmZzZXQgMHglbHggaW4gc2VjdGlvbiAlc1xuIiksCi0gCQkgICAgKHVuc2lnbmVkIGxvbmcpIHJwLT5yX29mZnNldCwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2Y2UwYjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1Gcm9tIDA5ZGQxMzVkZjllYmM3YTRiNjQwNTM3ZTIzZTI2YTAzYTI4OGE3ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE9jdCAyMDE5IDAwOjA3OjI5ICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjUwNzgsIHN0YWNrIG92ZXJmbG93IGluIGZ1bmN0aW9uIGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UKLQotU2VsZWN0aXZlbHkgYmFja3BvcnRpbmcgZml4IGZvciBiZmQvZHdhcmYyLmMsIGJ1dCBub3QgdGhlIENoYW5nZUxvZwotZmlsZS4gVGhlcmUgYXJlIG5ld2VyIHZlcnNpb25zIG9mIGJpbnV0aWxzLCBidXQgbm9uZSBvZiB0aGVtIGNvbnRhaW4gdGhlCi1jb21taXQgZml4aW5nIENWRS0yMDE5LTE3NDUwLCBzbyBiYWNrcG9ydCBpdCB0byBtYXN0ZXIgYW5kIHpldXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2g9MDYzYzUxMWJkNzldCi1DVkU6IENWRS0yMDE5LTE3NDUwCi1TaWduZWQtb2ZmLWJ5OiBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KLQotCVBSIDI1MDc4Ci0JKiBkd2FyZjIuYyAoZmluZF9hYnN0cmFjdF9pbnN0YW5jZSk6IERlbGV0ZSBvcmlnX2luZm9fcHRyLCBhZGQKLQlyZWN1cl9jb3VudC4gIEVycm9yIG9uIHJlY3VyX2NvdW50IHJlYWNoaW5nIDEwMCByYXRoZXIgdGhhbgotCWluZm9fcHRyIG1hdGNoaW5nIG9yaWdfaW5mb19wdHIuICBBZGp1c3QgY2FsbHMuCi0KLS0tLQotIGJmZC9kd2FyZjIuYyB8IDM1ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2R3YXJmMi5jIGIvYmZkL2R3YXJmMi5jCi1pbmRleCAwYjRlNDg1NTgyLi4yMGVjOWUyZTU2IDEwMDY0NAotLS0tIGEvYmZkL2R3YXJmMi5jCi0rKysgYi9iZmQvZHdhcmYyLmMKLUBAIC0yODAzLDEzICsyODAzLDEzIEBAIGxvb2t1cF9zeW1ib2xfaW5fdmFyaWFibGVfdGFibGUgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsCi0gfQotIAotIHN0YXRpYyBiZmRfYm9vbGVhbgotLWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKiAgIHVuaXQsCi0tCQkJYmZkX2J5dGUgKiAgICAgICAgICAgb3JpZ19pbmZvX3B0ciwKLS0JCQlzdHJ1Y3QgYXR0cmlidXRlICogICBhdHRyX3B0ciwKLS0JCQljb25zdCBjaGFyICoqICAgICAgICBwbmFtZSwKLS0JCQliZmRfYm9vbGVhbiAqICAgICAgICBpc19saW5rYWdlLAotLQkJCWNoYXIgKiogICAgICAgICAgICAgIGZpbGVuYW1lX3B0ciwKLS0JCQlpbnQgKiAgICAgICAgICAgICAgICBsaW5lbnVtYmVyX3B0cikKLStmaW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICp1bml0LAotKwkJCXN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJfcHRyLAotKwkJCXVuc2lnbmVkIGludCByZWN1cl9jb3VudCwKLSsJCQljb25zdCBjaGFyICoqcG5hbWUsCi0rCQkJYmZkX2Jvb2xlYW4gKmlzX2xpbmthZ2UsCi0rCQkJY2hhciAqKmZpbGVuYW1lX3B0ciwKLSsJCQlpbnQgKmxpbmVudW1iZXJfcHRyKQotIHsKLSAgIGJmZCAqYWJmZCA9IHVuaXQtPmFiZmQ7Ci0gICBiZmRfYnl0ZSAqaW5mb19wdHI7Ci1AQCAtMjgyMCw2ICsyODIwLDE0IEBAIGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKiAgIHVuaXQsCi0gICBzdHJ1Y3QgYXR0cmlidXRlIGF0dHI7Ci0gICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAKLSsgIGlmIChyZWN1cl9jb3VudCA9PSAxMDApCi0rICAgIHsKLSsgICAgICBfYmZkX2Vycm9yX2hhbmRsZXIKLSsJKF8oIkRXQVJGIGVycm9yOiBhYnN0cmFjdCBpbnN0YW5jZSByZWN1cnNpb24gZGV0ZWN0ZWQiKSk7Ci0rICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICB9Ci0rCi0gICAvKiBEV19GT1JNX3JlZl9hZGRyIGNhbiByZWZlcmVuY2UgYW4gZW50cnkgaW4gYSBkaWZmZXJlbnQgQ1UuIEl0Ci0gICAgICBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgLmRlYnVnX2luZm8gc2VjdGlvbiwgbm90IHRoZSBjdXJyZW50IENVLiAgKi8KLSAgIGlmIChhdHRyX3B0ci0+Zm9ybSA9PSBEV19GT1JNX3JlZl9hZGRyKQotQEAgLTI5MzksMTUgKzI5NDcsNiBAQCBmaW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICogICB1bml0LAotIAkJCQkJIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQpOwotIAkgICAgICBpZiAoaW5mb19wdHIgPT0gTlVMTCkKLSAJCWJyZWFrOwotLQkgICAgICAvKiBJdCBkb2Vzbid0IGV2ZXIgbWFrZSBzZW5zZSBmb3IgRFdfQVRfc3BlY2lmaWNhdGlvbiB0bwotLQkJIHJlZmVyIHRvIHRoZSBzYW1lIERJRS4gIFN0b3Agc2ltcGxlIHJlY3Vyc2lvbi4gICovCi0tCSAgICAgIGlmIChpbmZvX3B0ciA9PSBvcmlnX2luZm9fcHRyKQotLQkJewotLQkJICBfYmZkX2Vycm9yX2hhbmRsZXIKLS0JCSAgICAoXygiRFdBUkYgZXJyb3I6IGFic3RyYWN0IGluc3RhbmNlIHJlY3Vyc2lvbiBkZXRlY3RlZCIpKTsKLS0JCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Ci0tCQkgIHJldHVybiBGQUxTRTsKLS0JCX0KLSAJICAgICAgc3dpdGNoIChhdHRyLm5hbWUpCi0gCQl7Ci0gCQljYXNlIERXX0FUX25hbWU6Ci1AQCAtMjk2MSw3ICsyOTYwLDcgQEAgZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLSAJCSAgICB9Ci0gCQkgIGJyZWFrOwotIAkJY2FzZSBEV19BVF9zcGVjaWZpY2F0aW9uOgotLQkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsIGluZm9fcHRyLCAmYXR0ciwKLSsJCSAgaWYgKCFmaW5kX2Fic3RyYWN0X2luc3RhbmNlICh1bml0LCAmYXR0ciwgcmVjdXJfY291bnQgKyAxLAotIAkJCQkJICAgICAgICZuYW1lLCBpc19saW5rYWdlLAotIAkJCQkJICAgICAgIGZpbGVuYW1lX3B0ciwgbGluZW51bWJlcl9wdHIpKQotIAkJICAgIHJldHVybiBGQUxTRTsKLUBAIC0zMTc1LDcgKzMxNzQsNyBAQCBzY2FuX3VuaXRfZm9yX3N5bWJvbHMgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQpCi0gCi0gCQljYXNlIERXX0FUX2Fic3RyYWN0X29yaWdpbjoKLSAJCWNhc2UgRFdfQVRfc3BlY2lmaWNhdGlvbjoKLS0JCSAgaWYgKCFmaW5kX2Fic3RyYWN0X2luc3RhbmNlICh1bml0LCBpbmZvX3B0ciwgJmF0dHIsCi0rCQkgIGlmICghZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAodW5pdCwgJmF0dHIsIDAsCi0gCQkJCQkgICAgICAgJmZ1bmMtPm5hbWUsCi0gCQkJCQkgICAgICAgJmZ1bmMtPmlzX2xpbmthZ2UsCi0gCQkJCQkgICAgICAgJmZ1bmMtPmZpbGUsCi0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzZhNTMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAwMTkyNDM4MDUxYTdlNzgxNTg1NjQ3ZDU1ODFhMmE2ZjYyZmRhMzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBPY3QgMjAxOSAxMDo0NzoxMyArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI1MDcwLCBTRUdWIGluIGZ1bmN0aW9uIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lCi0KLVNlbGVjdGl2ZWx5IGJhY2twb3J0aW5nIGZpeCBmb3IgYmZkL2R3YXJmMi5jLCBidXQgbm90IHRoZSBDaGFuZ2VMb2cKLWZpbGUuIFRoZXJlIGFyZSBuZXdlciB2ZXJzaW9ucyBvZiBiaW51dGlscywgYnV0IG5vbmUgb2YgdGhlbSBjb250YWluIHRoZQotY29tbWl0IGZpeGluZyBDVkUtMjAxOS0xNzQ1MSwgc28gYmFja3BvcnQgaXQgdG8gbWFzdGVyIGFuZCB6ZXVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWJpbnV0aWxzLWdkYi5naXQ7aD0zMzZiZmJlYjE4NDhdCi1DVkU6IENWRS0yMDE5LTE3NDUxCi1TaWduZWQtb2ZmLWJ5OiBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KLQotCi1FdmlsIHRlc3RjYXNlIHdpdGggdHdvIGRlYnVnIGluZm8gc2VjdGlvbnMsIHdpdGggc2l6ZXMgb2YgMmFhYWFiYWM0ZWMxCi1hbmQgZmZmZmQ1NTU1NDUzYjE0MCByZXN1bHQgaW4gYSB0b3RhbCBzaXplIG9mIDEuICBSZWFkaW5nIHRoZSBmaXJzdAotc2VjdGlvbiBvZiBjb3Vyc2Ugb3ZlcmZsb3dzIHRoZSBidWZmZXIgYW5kIHRyYW1wbGVzIG9uIG90aGVyIG1lbW9yeS4KLQotCVBSIDI1MDcwCi0JKiBkd2FyZjIuYyAoX2JmZF9kd2FyZjJfc2x1cnBfZGVidWdfaW5mbyk6IENhdGNoIG92ZXJmbG93IG9mCi0JdG90YWxfc2l6ZSBjYWxjdWxhdGlvbi4KLS0tLQotIGJmZC9kd2FyZjIuYyB8IDExICsrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9kd2FyZjIuYyBiL2JmZC9kd2FyZjIuYwotaW5kZXggMGI0ZTQ4NTU4Mi4uYTkxNTk3YjFkMCAxMDA2NDQKLS0tLSBhL2JmZC9kd2FyZjIuYwotKysrIGIvYmZkL2R3YXJmMi5jCi1AQCAtNDQyNiw3ICs0NDI2LDE2IEBAIF9iZmRfZHdhcmYyX3NsdXJwX2RlYnVnX2luZm8gKGJmZCAqYWJmZCwgYmZkICpkZWJ1Z19iZmQsCi0gICAgICAgZm9yICh0b3RhbF9zaXplID0gMDsKLSAJICAgbXNlYzsKLSAJICAgbXNlYyA9IGZpbmRfZGVidWdfaW5mbyAoZGVidWdfYmZkLCBkZWJ1Z19zZWN0aW9ucywgbXNlYykpCi0tCXRvdGFsX3NpemUgKz0gbXNlYy0+c2l6ZTsKLSsJewotKwkgIC8qIENhdGNoIFBSMjUwNzAgdGVzdGNhc2Ugb3ZlcmZsb3dpbmcgc2l6ZSBjYWxjdWxhdGlvbiBoZXJlLiAgKi8KLSsJICBpZiAodG90YWxfc2l6ZSArIG1zZWMtPnNpemUgPCB0b3RhbF9zaXplCi0rCSAgICAgIHx8IHRvdGFsX3NpemUgKyBtc2VjLT5zaXplIDwgbXNlYy0+c2l6ZSkKLSsJICAgIHsKLSsJICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX25vX21lbW9yeSk7Ci0rCSAgICAgIHJldHVybiBGQUxTRTsKLSsJICAgIH0KLSsJICB0b3RhbF9zaXplICs9IG1zZWMtPnNpemU7Ci0rCX0KLSAKLSAgICAgICBzdGFzaC0+aW5mb19wdHJfbWVtb3J5ID0gKGJmZF9ieXRlICopIGJmZF9tYWxsb2MgKHRvdGFsX3NpemUpOwotICAgICAgIGlmIChzdGFzaC0+aW5mb19wdHJfbWVtb3J5ID09IE5VTEwpCi0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjAyNTM5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUZyb20gYzEyMDIwNTdlYjkxNjFhODZhZjI3ZDg2NzcwMzIzNWZlZTdiNzU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTAgQXByIDIwMTkgMTU6NDk6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHVsbCBpbiBwYXRjaCBmb3IgbGliaWJlcnR5IHRoYXQgZml4ZXMgYSBzdGFjayBleGhhdXN0aW9uIGJ1ZwotIHdoZW4gZGVtYW5nbGluZyBhIHBhdGhhbG9naWNhbGx5IGNvbnN0cnVjdGVkIG1hbmdsZWQgbmFtZS4KLQotCVBSIDg5Mzk0Ci0JKiBjcC1kZW1hbmdsZS5jIChjcGx1c19kZW1hbmdsZV9maWxsX25hbWUpOiBSZWplY3QgbmVnYXRpdmUKLQlsZW5ndGhzLgotCShkX2NvdW50X3RlbXBsYXRlc19zY29wZXMpOiBSZXBsYWNlIG51bV90ZW1wbGF0ZXMgYW5kIG51bV9zY29wZXMKLQlwYXJhbWV0ZXJzIHdpdGggYSBzdHJ1Y3QgZF9wcmludF9pbmZvIHBvaW50ZXIgcGFyYW1ldGVyLiAgQWRqdXN0Ci0JYm9keSBvZiB0aGUgZnVuY3Rpb24gYWNjb3JkaW5nbHkuICBBZGQgcmVjdXJzaW9uIGNvdW50ZXIgYW5kIGNoZWNrCi0JdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIG5vdCByZWFjaGVkLgotCShkX3ByaW50X2luaXQpOiBQYXNzIGRwaSBwYXJhbWV0ZXIgdG8gZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzLgotCVJlc2V0IHJlY3Vyc2lvbiBjb3VudGVyIGFmdGVyd2FyZHMsIHVubGVzcyB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcwotCXJlYWNoZWQuCi0KLUNWRTogQ1ZFLTIwMTktOTA3MQotQ1ZFOiBDVkUtMjAxOS05MDcwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAxNiArKysrKysrKysrKysrKwotIGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5jIHwgNDggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCBjZDYzMWExNWI2Li40ZGYzYWFhNjJjIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTkgQEAKLSsyMDE5LTA0LTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwkqIGxpYmliZXJ0eTogU3luYyB3aXRoIGdjYy4gIEJyaW5nIGluOgotKwkyMDE5LTA0LTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiA4OTM5NAotKwkqIGNwLWRlbWFuZ2xlLmMgKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZSk6IFJlamVjdCBuZWdhdGl2ZQotKwlsZW5ndGhzLgotKwkoZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzKTogUmVwbGFjZSBudW1fdGVtcGxhdGVzIGFuZCBudW1fc2NvcGVzCi0rCXBhcmFtZXRlcnMgd2l0aCBhIHN0cnVjdCBkX3ByaW50X2luZm8gcG9pbnRlciBwYXJhbWV0ZXIuICBBZGp1c3QKLSsJYm9keSBvZiB0aGUgZnVuY3Rpb24gYWNjb3JkaW5nbHkuICBBZGQgcmVjdXJzaW9uIGNvdW50ZXIgYW5kIGNoZWNrCi0rCXRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBub3QgcmVhY2hlZC4KLSsJKGRfcHJpbnRfaW5pdCk6IFBhc3MgZHBpIHBhcmFtZXRlciB0byBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMuCi0rCVJlc2V0IHJlY3Vyc2lvbiBjb3VudGVyIGFmdGVyd2FyZHMsIHVubGVzcyB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcwotKwlyZWFjaGVkLgotKwotIDIwMTgtMDYtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCTIuMzIgYnJhbmNoIGNyZWF0ZWQuCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMgYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwotaW5kZXggYjM0YjQ4NTY5Mi4uNzc5YjRlNzYzYSAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi0rKysgYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwotQEAgLTg2MSw3ICs4NjEsNyBAQCBDUF9TVEFUSUNfSUZfR0xJQkNQUF9WMwotIGludAotIGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqcCwgY29uc3QgY2hhciAqcywgaW50IGxlbikKLSB7Ci0tICBpZiAocCA9PSBOVUxMIHx8IHMgPT0gTlVMTCB8fCBsZW4gPT0gMCkKLSsgIGlmIChwID09IE5VTEwgfHwgcyA9PSBOVUxMIHx8IGxlbiA8PSAwKQotICAgICByZXR1cm4gMDsKLSAgIHAtPmRfcHJpbnRpbmcgPSAwOwotICAgcC0+dHlwZSA9IERFTUFOR0xFX0NPTVBPTkVOVF9OQU1FOwotQEAgLTQwNjEsNyArNDA2MSw3IEBAIGRfZ3Jvd2FibGVfc3RyaW5nX2NhbGxiYWNrX2FkYXB0ZXIgKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsLCB2b2lkICpvcGFxdWUpCi0gICAgYXJlIGxhcmdlciB0aGFuIHRoZSBhY3R1YWwgbnVtYmVycyBlbmNvdW50ZXJlZC4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1kX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGludCAqbnVtX3RlbXBsYXRlcywgaW50ICpudW1fc2NvcGVzLAotK2RfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoc3RydWN0IGRfcHJpbnRfaW5mbyAqZHBpLAotIAkJCSAgY29uc3Qgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGMpCi0gewotICAgaWYgKGRjID09IE5VTEwpCi1AQCAtNDA4MSwxMyArNDA4MSwxMyBAQCBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGludCAqbnVtX3RlbXBsYXRlcywgaW50ICpudW1fc2NvcGVzLAotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9URU1QTEFURToKLS0gICAgICAoKm51bV90ZW1wbGF0ZXMpKys7Ci0rICAgICAgZHBpLT5udW1fY29weV90ZW1wbGF0ZXMrKzsKLSAgICAgICBnb3RvIHJlY3Vyc2VfbGVmdF9yaWdodDsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUkVGRVJFTkNFOgotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SVkFMVUVfUkVGRVJFTkNFOgotICAgICAgIGlmIChkX2xlZnQgKGRjKS0+dHlwZSA9PSBERU1BTkdMRV9DT01QT05FTlRfVEVNUExBVEVfUEFSQU0pCi0tCSgqbnVtX3Njb3BlcykrKzsKLSsJZHBpLT5udW1fc2F2ZWRfc2NvcGVzKys7Ci0gICAgICAgZ290byByZWN1cnNlX2xlZnRfcmlnaHQ7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1FVQUxfTkFNRToKLUBAIC00MTUyLDQyICs0MTUyLDQyIEBAIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoaW50ICpudW1fdGVtcGxhdGVzLCBpbnQgKm51bV9zY29wZXMsCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1RBR0dFRF9OQU1FOgotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9DTE9ORToKLSAgICAgcmVjdXJzZV9sZWZ0X3JpZ2h0OgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZF9sZWZ0IChkYykpOwotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZF9yaWdodCAoZGMpKTsKLSsgICAgICAvKiBQUiA4OTM5NCAtIENoZWNrIGZvciB0b28gbXVjaCByZWN1cnNpb24uICAqLwotKyAgICAgIGlmIChkcGktPnJlY3Vyc2lvbiA+IERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCkKLSsJLyogRklYTUU6IFRoZXJlIG91Z2h0IHRvIGJlIGEgd2F5IHRvIHJlcG9ydCB0byB0aGUKLSsJICAgdXNlciB0aGF0IHRoZSByZWN1cnNpb24gbGltaXQgaGFzIGJlZW4gcmVhY2hlZC4gICovCi0rCXJldHVybjsKLSsKLSsgICAgICArKyBkcGktPnJlY3Vyc2lvbjsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZF9sZWZ0IChkYykpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkX3JpZ2h0IChkYykpOwotKyAgICAgIC0tIGRwaS0+cmVjdXJzaW9uOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9DVE9SOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZGMtPnUuc19jdG9yLm5hbWUpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX2N0b3IubmFtZSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0RUT1I6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkYy0+dS5zX2R0b3IubmFtZSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfZHRvci5uYW1lKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfRVhURU5ERURfT1BFUkFUT1I6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkYy0+dS5zX2V4dGVuZGVkX29wZXJhdG9yLm5hbWUpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX2V4dGVuZGVkX29wZXJhdG9yLm5hbWUpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9GSVhFRF9UWVBFOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjLT51LnNfZml4ZWQubGVuZ3RoKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc19maXhlZC5sZW5ndGgpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9HTE9CQUxfQ09OU1RSVUNUT1JTOgotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9HTE9CQUxfREVTVFJVQ1RPUlM6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkX2xlZnQgKGRjKSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRfbGVmdCAoZGMpKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfTEFNQkRBOgotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9ERUZBVUxUX0FSRzoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfdW5hcnlfbnVtLnN1Yik7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfdW5hcnlfbnVtLnN1Yik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSB9Ci1AQCAtNDIyMiw4ICs0MjIyLDEyIEBAIGRfcHJpbnRfaW5pdCAoc3RydWN0IGRfcHJpbnRfaW5mbyAqZHBpLCBkZW1hbmdsZV9jYWxsYmFja3JlZiBjYWxsYmFjaywKLSAgIGRwaS0+bmV4dF9jb3B5X3RlbXBsYXRlID0gMDsKLSAgIGRwaS0+bnVtX2NvcHlfdGVtcGxhdGVzID0gMDsKLSAKLS0gIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoJmRwaS0+bnVtX2NvcHlfdGVtcGxhdGVzLAotLQkJCSAgICAmZHBpLT5udW1fc2F2ZWRfc2NvcGVzLCBkYyk7Ci0rICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMpOwotKyAgLyogSWYgd2UgZGlkIG5vdCByZWFjaCB0aGUgcmVjdXJzaW9uIGxpbWl0LCB0aGVuIHJlc2V0IHRoZQotKyAgICAgY3VycmVudCByZWN1cnNpb24gdmFsdWUgYmFjayB0byAwLCBzbyB0aGF0IHdlIGNhbiBwcmludAotKyAgICAgdGhlIHRlbXBsYXRlcy4gICovCi0rICBpZiAoZHBpLT5yZWN1cnNpb24gPCBERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpCi0rICAgIGRwaS0+cmVjdXJzaW9uID0gMDsKLSAgIGRwaS0+bnVtX2NvcHlfdGVtcGxhdGVzICo9IGRwaS0+bnVtX3NhdmVkX3Njb3BlczsKLSAKLSAgIGRwaS0+Y3VycmVudF90ZW1wbGF0ZSA9IE5VTEw7Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExYTUxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSBlMmViYjM5MDY0MzJkY2NhMjcyNzE4NmFkNzk0MTVmOTIwNzMwZmIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTkgRmViIDIwMTkgMjI6NDg6NDQgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNDIzNSwgUmVhZCBtZW1vcnkgdmlvbGF0aW9uIGluIHBlaS14ODZfNjQuYwotCi0JUFIgMjQyMzUKLQkqIHBlaS14ODZfNjQuYyAocGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24pOiBDb3JyZWN0IGNoZWNrcwotCWF0dGVtcHRpbmcgdG8gcHJldmVudCByZWFkIHBhc3QgZW5kIG9mIHNlY3Rpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ibWlub3IvYmludXRpbHMtZ2RiL2NvbW1pdC8xNzlmMmRiMGQ5YzM5N2Q3ZGQ4YTU5OTA3Yjg0MjA4Yjc5ZjdmNDhjXQotQ1ZFOiBDVkUtMjAxOS05MDc0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICB8IDYgKysrKysrCi0gYmZkL3BlaS14ODZfNjQuYyB8IDkgKysrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKLWluZGV4IGRkMmM3NDEuLmNiZjMwZGUgMTAwNjQ0Ci0tLS0gYS9iZmQvQ2hhbmdlTG9nCi0rKysgYi9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE5LTAyLTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsJUFIgMjQyMzUKLSsJKiBwZWkteDg2XzY0LmMgKHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uKTogQ29ycmVjdCBjaGVja3MKLSsJYXR0ZW1wdGluZyB0byBwcmV2ZW50IHJlYWQgcGFzdCBlbmQgb2Ygc2VjdGlvbi4KLSsKLSAyMDE5LTAyLTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAkqIGRldmVsb3BtZW50LnNoIChleHBlcmltZW50YWwpIFNldCB0byBmYWxzZS4KLWRpZmYgLS1naXQgYS9iZmQvcGVpLXg4Nl82NC5jIGIvYmZkL3BlaS14ODZfNjQuYwotaW5kZXggZmYxMDkzYy4uN2U3NTEwNCAxMDA2NDQKLS0tLSBhL2JmZC9wZWkteDg2XzY0LmMKLSsrKyBiL2JmZC9wZWkteDg2XzY0LmMKLUBAIC01NDEsNyArNTQxLDcgQEAgcGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqdmZpbGUsIGFzZWN0aW9uICpwZGF0YV9zZWN0aW9uKQotICAgLyogdmlydF9zaXplIG1pZ2h0IGJlIHplcm8gZm9yIG9iamVjdHMuICAqLwotICAgaWYgKHN0b3AgPT0gMCAmJiBzdHJjbXAgKGFiZmQtPnh2ZWMtPm5hbWUsICJwZS14ODYtNjQiKSA9PSAwKQotICAgICB7Ci0tICAgICAgc3RvcCA9IChkYXRhc2l6ZSAvIG9uYWxpbmUpICogb25hbGluZTsKLSsgICAgICBzdG9wID0gZGF0YXNpemU7Ci0gICAgICAgdmlydF9zaXplX2lzX3plcm8gPSBUUlVFOwotICAgICB9Ci0gICBlbHNlIGlmIChkYXRhc2l6ZSA8IHN0b3ApCi1AQCAtNTUxLDggKzU1MSw4IEBAIHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uIChiZmQgKmFiZmQsIHZvaWQgKnZmaWxlLCBhc2VjdGlvbiAqcGRhdGFfc2VjdGlvbikKLSAJCSBfKCJXYXJuaW5nOiAlcyBzZWN0aW9uIHNpemUgKCVsZCkgaXMgc21hbGxlciB0aGFuIHZpcnR1YWwgc2l6ZSAoJWxkKVxuIiksCi0gCQkgcGRhdGFfc2VjdGlvbi0+bmFtZSwgKHVuc2lnbmVkIGxvbmcpIGRhdGFzaXplLAotIAkJICh1bnNpZ25lZCBsb25nKSBzdG9wKTsKLS0JLyogQmUgc3VyZSBub3QgdG8gcmVhZCBwYXNzZWQgZGF0YXNpemUuICAqLwotLQlzdG9wID0gZGF0YXNpemUgLyBvbmFsaW5lOwotKwkvKiBCZSBzdXJlIG5vdCB0byByZWFkIHBhc3QgZGF0YXNpemUuICAqLwotKwlzdG9wID0gZGF0YXNpemU7Ci0gICAgICAgfQotIAotICAgLyogRGlzcGxheSBmdW5jdGlvbnMgdGFibGUuICAqLwotQEAgLTcyNCw4ICs3MjQsNyBAQCBwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbiAoYmZkICphYmZkLCB2b2lkICp2ZmlsZSwgYXNlY3Rpb24gKnBkYXRhX3NlY3Rpb24pCi0gCSAgICAgIGFsdGVudCArPSBpbWFnZWJhc2U7Ci0gCi0gCSAgICAgIGlmIChhbHRlbnQgPj0gcGRhdGFfdm1hCi0tCQkgICYmIChhbHRlbnQgKyBQREFUQV9ST1dfU0laRSA8PSBwZGF0YV92bWEKLS0JCSAgICAgICsgcGVpX3NlY3Rpb25fZGF0YSAoYWJmZCwgcGRhdGFfc2VjdGlvbiktPnZpcnRfc2l6ZSkpCi0rCQkgICYmIGFsdGVudCAtIHBkYXRhX3ZtYSArIFBEQVRBX1JPV19TSVpFIDw9IHN0b3ApCi0gCQl7Ci0gCQkgIHBleDY0X2dldF9ydW50aW1lX2Z1bmN0aW9uCi0gCQkgICAgKGFiZmQsICZhcmYsICZwZGF0YVthbHRlbnQgLSBwZGF0YV92bWFdKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYjEzMTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tIDhhYmFjODAzMWVkMzY5YTI3MzRiMWNkYjdkZjI4YTM5YTU0YjRiNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBGZWIgMjAxOSAwODoyMToyNCArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI0MjM2LCBIZWFwIGJ1ZmZlciBvdmVyZmxvdyBpbgotIF9iZmRfYXJjaGl2ZV82NF9iaXRfc2x1cnBfYXJtYXAKLQotCVBSIDI0MjM2Ci0JKiBhcmNoaXZlNjQuYyAoX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCk6IE1vdmUgY29kZSBhZGRpbmcKLQlzZW50aW5lbCBOVUwgdG8gc3RyaW5nIGJ1ZmZlciBuZWFyZXIgdG8gbG9vcCB3aGVyZSBpdCBpcyB1c2VkLgotCURvbid0IGdvIHBhc3Qgc2VudGluZWwgd2hlbiBzY2FubmluZyBzdHJpbmdzLCBhbmQgZG9uJ3Qgd3JpdGUKLQlOVUwgYWdhaW4uCi0JKiBhcmNoaXZlLmMgKGRvX3NsdXJwX2NvZmZfYXJtYXApOiBTaW1wbGlmeSBzdHJpbmcgaGFuZGxpbmcgdG8KLQlhcmNoaXZlNjQuYyBzdHlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2JtaW5vci9iaW51dGlscy1nZGIvY29tbWl0LzhhYmFjODAzMWVkMzY5YTI3MzRiMWNkYjdkZjI4YTM5YTU0YjRiNDldCi1DVkU6IENWRS0yMDE5LTkwNzUKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IAotLS0tCi0gYmZkL0NoYW5nZUxvZyAgIHwgMTAgKysrKysrKysrKwotIGJmZC9hcmNoaXZlLmMgICB8IDE3ICsrKysrKystLS0tLS0tLS0tCi0gYmZkL2FyY2hpdmU2NC5jIHwgMTAgKysrKystLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwotaW5kZXggNzJjODdjNy4uZTM5YmIxMiAxMDA2NDQKLS0tLSBhL2JmZC9DaGFuZ2VMb2cKLSsrKyBiL2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE5LTAyLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsJUFIgMjQyMzYKLSsJKiBhcmNoaXZlNjQuYyAoX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCk6IE1vdmUgY29kZSBhZGRpbmcKLSsJc2VudGluZWwgTlVMIHRvIHN0cmluZyBidWZmZXIgbmVhcmVyIHRvIGxvb3Agd2hlcmUgaXQgaXMgdXNlZC4KLSsJRG9uJ3QgZ28gcGFzdCBzZW50aW5lbCB3aGVuIHNjYW5uaW5nIHN0cmluZ3MsIGFuZCBkb24ndCB3cml0ZQotKwlOVUwgYWdhaW4uCi0rCSogYXJjaGl2ZS5jIChkb19zbHVycF9jb2ZmX2FybWFwKTogU2ltcGxpZnkgc3RyaW5nIGhhbmRsaW5nIHRvCi0rCWFyY2hpdmU2NC5jIHN0eWxlLgotKwotIDIwMTktMDItMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiAyNDIzNQotZGlmZiAtLWdpdCBhL2JmZC9hcmNoaXZlLmMgYi9iZmQvYXJjaGl2ZS5jCi1pbmRleCBkMmQ5YjcyLi42OGE5MmEzIDEwMDY0NAotLS0tIGEvYmZkL2FyY2hpdmUuYwotKysrIGIvYmZkL2FyY2hpdmUuYwotQEAgLTEwMTIsNiArMTAxMiw3IEBAIGRvX3NsdXJwX2NvZmZfYXJtYXAgKGJmZCAqYWJmZCkKLSAgIGludCAqcmF3X2FybWFwLCAqcmF3cHRyOwotICAgc3RydWN0IGFydGRhdGEgKmFyZGF0YSA9IGJmZF9hcmRhdGEgKGFiZmQpOwotICAgY2hhciAqc3RyaW5nYmFzZTsKLSsgIGNoYXIgKnN0cmluZ2VuZDsKLSAgIGJmZF9zaXplX3R5cGUgc3RyaW5nc2l6ZTsKLSAgIGJmZF9zaXplX3R5cGUgcGFyc2VkX3NpemU7Ci0gICBjYXJzeW0gKmNhcnN5bXM7Ci1AQCAtMTA3MSwyMiArMTA3MiwxOCBAQCBkb19zbHVycF9jb2ZmX2FybWFwIChiZmQgKmFiZmQpCi0gICAgIH0KLSAKLSAgIC8qIE9LLCBidWlsZCB0aGUgY2Fyc3ltcy4gICovCi0tICBmb3IgKGkgPSAwOyBpIDwgbnN5bXogJiYgc3RyaW5nc2l6ZSA+IDA7IGkrKykKLSsgIHN0cmluZ2VuZCA9IHN0cmluZ2Jhc2UgKyBzdHJpbmdzaXplOwotKyAgKnN0cmluZ2VuZCA9IDA7Ci0rICBmb3IgKGkgPSAwOyBpIDwgbnN5bXo7IGkrKykKLSAgICAgewotLSAgICAgIGJmZF9zaXplX3R5cGUgbGVuOwotLQotICAgICAgIHJhd3B0ciA9IHJhd19hcm1hcCArIGk7Ci0gICAgICAgY2Fyc3ltcy0+ZmlsZV9vZmZzZXQgPSBzd2FwICgoYmZkX2J5dGUgKikgcmF3cHRyKTsKLSAgICAgICBjYXJzeW1zLT5uYW1lID0gc3RyaW5nYmFzZTsKLS0gICAgICAvKiBQUiAxNzUxMjogZmlsZTogNGExZDUwYzEuICAqLwotLSAgICAgIGxlbiA9IHN0cm5sZW4gKHN0cmluZ2Jhc2UsIHN0cmluZ3NpemUpOwotLSAgICAgIGlmIChsZW4gPCBzdHJpbmdzaXplKQotLQlsZW4gKys7Ci0tICAgICAgc3RyaW5nYmFzZSArPSBsZW47Ci0tICAgICAgc3RyaW5nc2l6ZSAtPSBsZW47Ci0rICAgICAgc3RyaW5nYmFzZSArPSBzdHJsZW4gKHN0cmluZ2Jhc2UpOwotKyAgICAgIGlmIChzdHJpbmdiYXNlICE9IHN0cmluZ2VuZCkKLSsJKytzdHJpbmdiYXNlOwotICAgICAgIGNhcnN5bXMrKzsKLSAgICAgfQotLSAgKnN0cmluZ2Jhc2UgPSAwOwotIAotICAgYXJkYXRhLT5zeW1kZWZfY291bnQgPSBuc3ltejsKLSAgIGFyZGF0YS0+Zmlyc3RfZmlsZV9maWxlcG9zID0gYmZkX3RlbGwgKGFiZmQpOwotZGlmZiAtLWdpdCBhL2JmZC9hcmNoaXZlNjQuYyBiL2JmZC9hcmNoaXZlNjQuYwotaW5kZXggMzEyYmY4Mi4uNDJmNmVkOSAxMDA2NDQKLS0tLSBhL2JmZC9hcmNoaXZlNjQuYwotKysrIGIvYmZkL2FyY2hpdmU2NC5jCi1AQCAtMTAwLDggKzEwMCw2IEBAIF9iZmRfYXJjaGl2ZV82NF9iaXRfc2x1cnBfYXJtYXAgKGJmZCAqYWJmZCkKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgY2Fyc3ltcyA9IGFyZGF0YS0+c3ltZGVmczsKLSAgIHN0cmluZ2Jhc2UgPSAoKGNoYXIgKikgYXJkYXRhLT5zeW1kZWZzKSArIGNhcnN5bV9zaXplOwotLSAgc3RyaW5nYmFzZVtzdHJpbmdzaXplXSA9IDA7Ci0tICBzdHJpbmdlbmQgPSBzdHJpbmdiYXNlICsgc3RyaW5nc2l6ZTsKLSAKLSAgIHJhd19hcm1hcCA9IChiZmRfYnl0ZSAqKSBiZmRfYWxsb2MgKGFiZmQsIHB0cnNpemUpOwotICAgaWYgKHJhd19hcm1hcCA9PSBOVUxMKQotQEAgLTExNSwxNSArMTEzLDE3IEBAIF9iZmRfYXJjaGl2ZV82NF9iaXRfc2x1cnBfYXJtYXAgKGJmZCAqYWJmZCkKLSAgICAgICBnb3RvIHJlbGVhc2VfcmF3X2FybWFwOwotICAgICB9Ci0gCi0rICBzdHJpbmdlbmQgPSBzdHJpbmdiYXNlICsgc3RyaW5nc2l6ZTsKLSsgICpzdHJpbmdlbmQgPSAwOwotICAgZm9yIChpID0gMDsgaSA8IG5zeW16OyBpKyspCi0gICAgIHsKLSAgICAgICBjYXJzeW1zLT5maWxlX29mZnNldCA9IGJmZF9nZXRiNjQgKHJhd19hcm1hcCArIGkgKiA4KTsKLSAgICAgICBjYXJzeW1zLT5uYW1lID0gc3RyaW5nYmFzZTsKLS0gICAgICBpZiAoc3RyaW5nYmFzZSA8IHN0cmluZ2VuZCkKLS0Jc3RyaW5nYmFzZSArPSBzdHJsZW4gKHN0cmluZ2Jhc2UpICsgMTsKLSsgICAgICBzdHJpbmdiYXNlICs9IHN0cmxlbiAoc3RyaW5nYmFzZSk7Ci0rICAgICAgaWYgKHN0cmluZ2Jhc2UgIT0gc3RyaW5nZW5kKQotKwkrK3N0cmluZ2Jhc2U7Ci0gICAgICAgKytjYXJzeW1zOwotICAgICB9Ci0tICAqc3RyaW5nYmFzZSA9ICdcMCc7Ci0gCi0gICBhcmRhdGEtPnN5bWRlZl9jb3VudCA9IG5zeW16OwotICAgYXJkYXRhLT5maXJzdF9maWxlX2ZpbGVwb3MgPSBiZmRfdGVsbCAoYWJmZCk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzhjZGUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDlmODQxYzU4Mzg4MGViNmQwMTk0NDU1YzE1ODNhNzY2Zjg1M2U2MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBGZWIgMjAxOSAxMjowNjozMSArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI0MjMzLCBPdXQgb2YgbWVtb3J5Ci0KLQlQUiAyNDIzMwotCSogb2JqZHVtcC5jIChkdW1wX2JmZF9wcml2YXRlX2hlYWRlcik6IFByaW50IHdhcm5pbmcgaWYKLQliZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSByZXR1cm5zIGZhbHNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvN2QyNzJhNTVjYWViZmMyNmFiMmUxNWQxZTk0MzliYWM5NzhiOWJiN10KLUNWRTogQ1ZFLTIwMTktOTA3NgotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmludXRpbHMvb2JqZHVtcC5jIHwgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggZjgzN2MzNy4uZDVkZDdjYiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE5LTAyLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSsJUFIgMjQyMzMKLSsJKiBvYmpkdW1wLmMgKGR1bXBfYmZkX3ByaXZhdGVfaGVhZGVyKTogUHJpbnQgd2FybmluZyBpZgotKwliZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSByZXR1cm5zIGZhbHNlLgotKwotIDIwMTktMDItMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL29iamR1bXAuYyBiL2JpbnV0aWxzL29iamR1bXAuYwotaW5kZXggODcyNTM5MC4uN2QwYzZhNCAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGIvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMzE3OCw3ICszMTc4LDkgQEAgZHVtcF9iZmRfaGVhZGVyIChiZmQgKmFiZmQpCi0gc3RhdGljIHZvaWQKLSBkdW1wX2JmZF9wcml2YXRlX2hlYWRlciAoYmZkICphYmZkKQotIHsKLS0gIGJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIChhYmZkLCBzdGRvdXQpOwotKyAgaWYgKCFiZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSAoYWJmZCwgc3Rkb3V0KSkKLSsgICAgbm9uX2ZhdGFsIChfKCJ3YXJuaW5nOiBwcml2YXRlIGhlYWRlcnMgaW5jb21wbGV0ZTogJXMiKSwKLSsJICAgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ny5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZWNiNzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gZjdiYmM4ODkwZGU0NWRmNmVkYTBkZGVmNWRkMDRmODM1ZjU0ZWVjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMjAgRmViIDIwMTkgMTc6MDM6NDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGEgaWxsZWdhbCBtZW1vcnkgYWNjZXNzIGZhdWx0IHdoZW4gcGFyc2luZyBhIGNvcnJ1cHQgTUlQUwotIG9wdGlvbiBzZWN0aW9uIHVzaW5nIHJlYWRlbGYuCi0KLQlQUiAyNDI0MwotCSogcmVhZGVsZi5jIChwcm9jZXNzX21pcHNfc3BlY2lmaWMpOiBDaGVjayBmb3IgYW4gb3B0aW9ucyBzZWN0aW9uCi0JdGhhdCBpcyB0b28gc21hbGwgdG8gZXZlbiBjb250YWluIGEgc2luZ2xlIG9wdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2JtaW5vci9iaW51dGlscy1nZGIvY29tbWl0LzdmYzBjNjY4ZjJhY2ViODU4MmQ3NGRiMWFkMjUyOGUyYmJhOGE5MjFdCi1DVkU6IENWRS0yMDE5LTkwNzcKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiaW51dGlscy9yZWFkZWxmLmMgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggOWRmMzc0Mi4uMThhYjgwNiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMTYxNzksNiArMTYxNzksMTIgQEAgcHJvY2Vzc19taXBzX3NwZWNpZmljIChGaWxlZGF0YSAqIGZpbGVkYXRhKQotIAkgIGVycm9yIChfKCJObyBNSVBTX09QVElPTlMgaGVhZGVyIGZvdW5kXG4iKSk7Ci0gCSAgcmV0dXJuIEZBTFNFOwotIAl9Ci0rICAgICAgLyogUFIgMjQyNDMgICovCi0rICAgICAgaWYgKHNlY3QtPnNoX3NpemUgPCBzaXplb2YgKCogZW9wdCkpCi0rCXsKLSsJICBlcnJvciAoXygiVGhlIE1JUFMgb3B0aW9ucyBzZWN0aW9uIGlzIHRvbyBzbWFsbC5cbiIpKTsKLSsJICByZXR1cm4gRkFMU0U7Ci0rCX0KLSAKLSAgICAgICBlb3B0ID0gKEVsZl9FeHRlcm5hbF9PcHRpb25zICopIGdldF9kYXRhIChOVUxMLCBmaWxlZGF0YSwgb3B0aW9uc19vZmZzZXQsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdC0+c2hfc2l6ZSwgXygib3B0aW9ucyIpKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMjAtMDU1MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDIwLTA1NTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNlM2NhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDIwLTA1NTEucGF0Y2gKQEAgLTAsMCArMSw1NDkgQEAKK0Zyb20gYWU1MzEwNDFjN2M1OTU2NjcyMzQyZjg5YzQ4NmEwMTFjODRmMDI3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJILkouIEx1IiA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWFyIDIwMjAgMDk6NDY6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIGkzODY6IEdlbmVyYXRlIGxmZW5jZSB3aXRoIGxvYWQvaW5kaXJlY3QgYnJhbmNoL3JldAorIFtDVkUtMjAyMC0wNTUxXQorCitBZGQgMyBjb21tYW5kLWxpbmUgb3B0aW9ucyB0byBnZW5lcmF0ZSBsZmVuY2UgZm9yIGxvYWQsIGluZGlyZWN0IG5lYXIKK2JyYW5jaCBhbmQgcmV0IHRvIGhlbHAgbWl0aWdhdGU6CisKK2h0dHBzOi8vd3d3LmludGVsLmNvbS9jb250ZW50L3d3dy91cy9lbi9zZWN1cml0eS1jZW50ZXIvYWR2aXNvcnkvaW50ZWwtc2EtMDAzMzQuaHRtbAoraHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDIwLTA1NTEKKworMS4gLW1sZmVuY2UtYWZ0ZXItbG9hZD1bbm98eWVzXToKKyAgLW1sZmVuY2UtYWZ0ZXItbG9hZD15ZXMgZ2VuZXJhdGVzIGxmZW5jZSBhZnRlciBsb2FkIGluc3RydWN0aW9ucy4KKzIuIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9W25vbmV8YWxsfG1lbW9yeXxyZWdpc3Rlcl06CisgIGEuIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9YWxsIGdlbmVyYXRlcyBsZmVuY2UgYmVmb3JlIGluZGlyZWN0CisgIG5lYXIgYnJhbmNoZXMgdmlhIHJlZ2lzdGVyIGFuZCBhIHdhcm5pbmcgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoZXMKKyAgdmlhIG1lbW9yeS4KKyAgYi4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1tZW1vcnkgaXNzdWUgYSB3YXJuaW5nIGJlZm9yZQorICBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzIHZpYSBtZW1vcnkuCisgIGMuIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9cmVnaXN0ZXIgZ2VuZXJhdGVzIGxmZW5jZSBiZWZvcmUKKyAgaW5kaXJlY3QgbmVhciBicmFuY2hlcyB2aWEgcmVnaXN0ZXIuCitOb3RlIHRoYXQgbGZlbmNlIHdvbid0IGJlIGdlbmVyYXRlZCBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2hlcyB2aWEKK3JlZ2lzdGVyIHdpdGggLW1sZmVuY2UtYWZ0ZXItbG9hZD15ZXMgc2luY2UgbGZlbmNlIHdpbGwgYmUgZ2VuZXJhdGVkCithZnRlciBsb2FkaW5nIGJyYW5jaCB0YXJnZXQgcmVnaXN0ZXIuCiszLiAtbWxmZW5jZS1iZWZvcmUtcmV0PVtub25lfG9yfG5vdF0KKyAgYS4gLW1sZmVuY2UtYmVmb3JlLXJldD1vciBnZW5lcmF0ZXMgb3Igd2l0aCBsZmVuY2UgYmVmb3JlIHJldC4KKyAgYi4gLW1sZmVuY2UtYmVmb3JlLXJldD1ub3QgZ2VuZXJhdGVzIG5vdCB3aXRoIGxmZW5jZSBiZWZvcmUgcmV0LgorCitBIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgYW5kIGxmZW5jZSB3b24ndCBiZSBnZW5lcmF0ZWQgYmVmb3JlIGluZGlyZWN0CituZWFyIGJyYW5jaCBhbmQgcmV0IGlmIHRoZSBwcmV2aW91cyBpdGVtIGlzIGEgcHJlZml4IG9yIGEgY29uc3RhbnQKK2RpcmVjdGl2ZSwgd2hpY2ggbWF5IGJlIHVzZWQgdG8gaGFyZGNvZGUgYW4gaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZXJlCitpcyBubyBjbGVhciBpbnN0cnVjdGlvbiBib3VuZGFyeS4KKworCSogY29uZmlnL3RjLWkzODYuYyAobGZlbmNlX2FmdGVyX2xvYWQpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoX2tpbmQpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoKTogTmV3LgorCShsZmVuY2VfYmVmb3JlX3JldF9raW5kKTogTmV3LgorCShsZmVuY2VfYmVmb3JlX3JldCk6IE5ldy4KKwkobGFzdF9pbnNuKTogTmV3LgorCShsb2FkX2luc25fcCk6IE5ldy4KKwkoaW5zZXJ0X2xmZW5jZV9hZnRlcik6IE5ldy4KKwkoaW5zZXJ0X2xmZW5jZV9iZWZvcmUpOiBOZXcuCisJKG1kX2Fzc2VtYmxlKTogQ2FsbCBpbnNlcnRfbGZlbmNlX2JlZm9yZSBhbmQgaW5zZXJ0X2xmZW5jZV9hZnRlci4KKwlTZXQgbGFzdF9pbnNuLgorCShPUFRJT05fTUxGRU5DRV9BRlRFUl9MT0FEKTogTmV3LgorCShPUFRJT05fTUxGRU5DRV9CRUZPUkVfSU5ESVJFQ1RfQlJBTkNIKTogTmV3LgorCShPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUKTogTmV3LgorCShtZF9sb25nb3B0cyk6IEFkZCAtbWxmZW5jZS1hZnRlci1sb2FkPSwKKwktbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBhbmQgLW1sZmVuY2UtYmVmb3JlLXJldD0uCisJKG1kX3BhcnNlX29wdGlvbik6IEhhbmRsZSAtbWxmZW5jZS1hZnRlci1sb2FkPSwKKwktbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBhbmQgLW1sZmVuY2UtYmVmb3JlLXJldD0uCisJKG1kX3Nob3dfdXNhZ2UpOiBEaXNwbGF5IC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKwkoaTM4Nl9jb25zX2FsaWduKTogTmV3LgorCSogY29uZmlnL3RjLWkzODYuaCAoaTM4Nl9jb25zX2FsaWduKTogTmV3LgorCShtZF9jb25zX2FsaWduKTogTmV3LgorCSogZG9jL2MtaTM4Ni50ZXhpOiBEb2N1bWVudCAtbWxmZW5jZS1hZnRlci1sb2FkPSwKKwktbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBhbmQgLW1sZmVuY2UtYmVmb3JlLXJldD0uCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1iaW51dGlscy1nZGIuZ2l0O2E9Y29tbWl0O2g9YWU1MzEwNDFjN2M1OTU2NjcyMzQyZjg5YzQ4NmEwMTFjODRmMDI3Zl0KK0NWRTogQ1ZFLTIwMjAtMDU1MQorLS0tCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1pMzg2LmMgYi9nYXMvY29uZmlnL3RjLWkzODYuYworaW5kZXggYjAyMGYzOWM4NjMuLjA5MDYzZjc4NGI3IDEwMDY0NAorLS0tIGEvZ2FzL2NvbmZpZy90Yy1pMzg2LmMKKysrKyBiL2dhcy9jb25maWcvdGMtaTM4Ni5jCitAQCAtNjI5LDcgKzYyOSwyOSBAQCBzdGF0aWMgaW50IG9taXRfbG9ja19wcmVmaXggPSAwOworICAgICJsb2NrIGFkZGwgJDAsICgle3JlfXNwKSIuICAqLworIHN0YXRpYyBpbnQgYXZvaWRfZmVuY2UgPSAwOworIAorLS8qIFR5cGUgb2YgdGhlIHByZXZpb3VzIGluc3RydWN0aW9uLiAgKi8KKysvKiAxIGlmIGxmZW5jZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYWZ0ZXIgZXZlcnkgbG9hZC4gICovCisrc3RhdGljIGludCBsZmVuY2VfYWZ0ZXJfbG9hZCA9IDA7CisrCisrLyogTm9uLXplcm8gaWYgbGZlbmNlIHNob3VsZCBiZSBpbnNlcnRlZCBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoLiAgKi8KKytzdGF0aWMgZW51bSBsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaF9raW5kCisrICB7CisrICAgIGxmZW5jZV9icmFuY2hfbm9uZSA9IDAsCisrICAgIGxmZW5jZV9icmFuY2hfcmVnaXN0ZXIsCisrICAgIGxmZW5jZV9icmFuY2hfbWVtb3J5LAorKyAgICBsZmVuY2VfYnJhbmNoX2FsbAorKyAgfQorK2xmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoOworKworKy8qIE5vbi16ZXJvIGlmIGxmZW5jZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYmVmb3JlIHJldC4gICovCisrc3RhdGljIGVudW0gbGZlbmNlX2JlZm9yZV9yZXRfa2luZAorKyAgeworKyAgICBsZmVuY2VfYmVmb3JlX3JldF9ub25lID0gMCwKKysgICAgbGZlbmNlX2JlZm9yZV9yZXRfbm90LAorKyAgICBsZmVuY2VfYmVmb3JlX3JldF9vcgorKyAgfQorK2xmZW5jZV9iZWZvcmVfcmV0OworKworKy8qIFR5cGVzIG9mIHByZXZpb3VzIGluc3RydWN0aW9uIGlzIC5ieXRlIG9yIHByZWZpeC4gICovCisgc3RhdGljIHN0cnVjdAorICAgeworICAgICBzZWdUIHNlZzsKK0BAIC00MzExLDYgKzQzMzMsMjgzIEBAIG9wdGltaXplX2VuY29kaW5nICh2b2lkKQorICAgICB9CisgfQorIAorKy8qIFJldHVybiBub24temVybyBmb3IgbG9hZCBpbnN0cnVjdGlvbi4gICovCisrCisrc3RhdGljIGludAorK2xvYWRfaW5zbl9wICh2b2lkKQorK3sKKysgIHVuc2lnbmVkIGludCBkZXN0OworKyAgaW50IGFueV92ZXhfcCA9IGlzX2FueV92ZXhfZW5jb2RpbmcgKCZpLnRtKTsKKysgIHVuc2lnbmVkIGludCBiYXNlX29wY29kZSA9IGkudG0uYmFzZV9vcGNvZGUgfCAxOworKworKyAgaWYgKCFhbnlfdmV4X3ApCisrICAgIHsKKysgICAgICAvKiBsZWEgICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHg4ZCkKKysJcmV0dXJuIDA7CisrCisrICAgICAgLyogcG9wICAqLworKyAgICAgIGlmICgoaS50bS5iYXNlX29wY29kZSAmIH43KSA9PSAweDU4CisrCSAgfHwgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHg4ZiAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMCkpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIG1vdnMsIGNtcHMsIGxvZHMsIHNjYXMuICAqLworKyAgICAgIGlmICgoaS50bS5iYXNlX29wY29kZSB8IDB4YikgPT0gMHhhZikKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogb3V0cyAqLworKyAgICAgIGlmIChiYXNlX29wY29kZSA9PSAweDZmKQorKwlyZXR1cm4gMTsKKysgICAgfQorKworKyAgLyogTm8gbWVtb3J5IG9wZXJhbmQuICAqLworKyAgaWYgKCFpLm1lbV9vcGVyYW5kcykKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoYW55X3ZleF9wKQorKyAgICB7CisrICAgICAgLyogdmxkbXhjc3IuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4YWUKKysJICAmJiBpLnRtLm9wY29kZV9tb2RpZmllci52ZXgKKysJICAmJiBpLnRtLm9wY29kZV9tb2RpZmllci52ZXhvcGNvZGUgPT0gVkVYMEYKKysJICAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMikKKysJcmV0dXJuIDE7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIC8qIHRlc3QsIG5vdCwgbmVnLCBtdWwsIGltdWwsIGRpdiwgaWRpdi4gICovCisrICAgICAgaWYgKChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZjYgfHwgaS50bS5iYXNlX29wY29kZSA9PSAweGY3KQorKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSAhPSAxKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBpbmMsIGRlYy4gICovCisrICAgICAgaWYgKGJhc2Vfb3Bjb2RlID09IDB4ZmYgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlIDw9IDEpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGFkZCwgb3IsIGFkYywgc2JiLCBhbmQsIHN1YiwgeG9yLCBjbXAuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID49IDB4ODAgJiYgaS50bS5iYXNlX29wY29kZSA8PSAweDgzKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBidCwgYnRzLCBidHIsIGJ0Yy4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmYmEKKysJICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID49IDQgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlIDw9IDcpKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiByb2wsIHJvciwgcmNsLCByY3IsIHNobC9zYWwsIHNociwgc2FyLiAqLworKyAgICAgIGlmICgoYmFzZV9vcGNvZGUgPT0gMHhjMQorKwkgICB8fCAoaS50bS5iYXNlX29wY29kZSA+PSAweGQwICYmIGkudG0uYmFzZV9vcGNvZGUgPD0gMHhkMykpCisrCSAgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlICE9IDYpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGNtcHhjaGc4YiwgY21weGNoZzE2YiwgeHJzdG9ycy4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmYzcKKysJICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMpKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBmeHJzdG9yLCBsZG14Y3NyLCB4cnN0b3IuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZmFlCisrCSAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxCisrCSAgICAgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCSAgICAgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA1KSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogbGdkdCwgbGlkdCwgbG1zdy4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmMDEKKysJICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYpKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiB2bXB0cmxkICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmYzcKKysJICAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNikKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogQ2hlY2sgZm9yIHg4NyBpbnN0cnVjdGlvbnMuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID49IDB4ZDggJiYgaS50bS5iYXNlX29wY29kZSA8PSAweGRmKQorKwl7CisrCSAgLyogU2tpcCBmc3QsIGZzdHAsIGZzdGVudiwgZnN0Y3cuICAqLworKwkgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZDkKKysJICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2CisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA3KSkKKysJICAgIHJldHVybiAwOworKworKwkgIC8qIFNraXAgZmlzdHRwLCBmaXN0LCBmaXN0cCwgZnN0cC4gICovCisrCSAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhkYgorKwkgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDcpKQorKwkgICAgcmV0dXJuIDA7CisrCisrCSAgLyogU2tpcCBmaXN0dHAsIGZzdCwgZnN0cCwgZnNhdmUsIGZzdHN3LiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGRkCisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICAvKiBTa2lwIGZpc3R0cCwgZmlzdCwgZmlzdHAsIGZic3RwLCBmaXN0cC4gICovCisrCSAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhkZgorKwkgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDcpKQorKwkgICAgcmV0dXJuIDA7CisrCisrCSAgcmV0dXJuIDE7CisrCX0KKysgICAgfQorKworKyAgZGVzdCA9IGkub3BlcmFuZHMgLSAxOworKworKyAgLyogQ2hlY2sgZmFrZSBpbW04IG9wZXJhbmQgYW5kIDMgc291cmNlIG9wZXJhbmRzLiAgKi8KKysgIGlmICgoaS50bS5vcGNvZGVfbW9kaWZpZXIuaW1tZXh0CisrICAgICAgIHx8IGkudG0ub3Bjb2RlX21vZGlmaWVyLnZleHNvdXJjZXMgPT0gVkVYM1NPVVJDRVMpCisrICAgICAgJiYgaS50eXBlc1tkZXN0XS5iaXRmaWVsZC5pbW04KQorKyAgICBkZXN0LS07CisrCisrICAvKiBhZGQsIG9yLCBhZGMsIHNiYiwgYW5kLCBzdWIsIHhvciwgY21wLCB0ZXN0LCB4Y2hnLCB4YWRkICAqLworKyAgaWYgKCFhbnlfdmV4X3AKKysgICAgICAmJiAoYmFzZV9vcGNvZGUgPT0gMHgxCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHg5CisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgxMQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MTkKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDIxCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgyOQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MzEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDM5CisrCSAgfHwgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHg4NCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ODcpCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHhmYzEpKQorKyAgICByZXR1cm4gMTsKKysKKysgIC8qIENoZWNrIGZvciBsb2FkIGluc3RydWN0aW9uLiAgKi8KKysgIHJldHVybiAoaS50eXBlc1tkZXN0XS5iaXRmaWVsZC5jbGFzcyAhPSBDbGFzc05vbmUKKysJICB8fCBpLnR5cGVzW2Rlc3RdLmJpdGZpZWxkLmluc3RhbmNlID09IEFjY3VtKTsKKyt9CisrCisrLyogT3V0cHV0IGxmZW5jZSwgMHhmYWVlOCwgYWZ0ZXIgaW5zdHJ1Y3Rpb24uICAqLworKworK3N0YXRpYyB2b2lkCisraW5zZXJ0X2xmZW5jZV9hZnRlciAodm9pZCkKKyt7CisrICBpZiAobGZlbmNlX2FmdGVyX2xvYWQgJiYgbG9hZF9pbnNuX3AgKCkpCisrICAgIHsKKysgICAgICBjaGFyICpwID0gZnJhZ19tb3JlICgzKTsKKysgICAgICAqcCsrID0gMHhmOworKyAgICAgICpwKysgPSAweGFlOworKyAgICAgICpwID0gMHhlODsKKysgICAgfQorK30KKysKKysvKiBPdXRwdXQgbGZlbmNlLCAweGZhZWU4LCBiZWZvcmUgaW5zdHJ1Y3Rpb24uICAqLworKworK3N0YXRpYyB2b2lkCisraW5zZXJ0X2xmZW5jZV9iZWZvcmUgKHZvaWQpCisreworKyAgY2hhciAqcDsKKysKKysgIGlmIChpc19hbnlfdmV4X2VuY29kaW5nICgmaS50bSkpCisrICAgIHJldHVybjsKKysKKysgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZmYKKysgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDQpKQorKyAgICB7CisrICAgICAgLyogSW5zZXJ0IGxmZW5jZSBiZWZvcmUgaW5kaXJlY3QgYnJhbmNoIGlmIG5lZWRlZC4gICovCisrCisrICAgICAgaWYgKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID09IGxmZW5jZV9icmFuY2hfbm9uZSkKKysJcmV0dXJuOworKworKyAgICAgIGlmIChpLm9wZXJhbmRzICE9IDEpCisrCWFib3J0ICgpOworKworKyAgICAgIGlmIChpLnJlZ19vcGVyYW5kcyA9PSAxKQorKwl7CisrCSAgLyogSW5kaXJlY3QgYnJhbmNoIHZpYSByZWdpc3Rlci4gIERvbid0IGluc2VydCBsZmVuY2Ugd2l0aAorKwkgICAgIC1tbGZlbmNlLWFmdGVyLWxvYWQ9eWVzLiAgKi8KKysJICBpZiAobGZlbmNlX2FmdGVyX2xvYWQKKysJICAgICAgfHwgbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPT0gbGZlbmNlX2JyYW5jaF9tZW1vcnkpCisrCSAgICByZXR1cm47CisrCX0KKysgICAgICBlbHNlIGlmIChpLm1lbV9vcGVyYW5kcyA9PSAxCisrCSAgICAgICAmJiBsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCAhPSBsZmVuY2VfYnJhbmNoX3JlZ2lzdGVyKQorKwl7CisrCSAgYXNfd2FybiAoXygiaW5kaXJlY3QgYCVzYCB3aXRoIG1lbW9yeSBvcGVyYW5kIHNob3VsZCBiZSBhdm9pZGVkIiksCisrCQkgICBpLnRtLm5hbWUpOworKwkgIHJldHVybjsKKysJfQorKyAgICAgIGVsc2UKKysJcmV0dXJuOworKworKyAgICAgIGlmIChsYXN0X2luc24ua2luZCAhPSBsYXN0X2luc25fb3RoZXIKKysJICAmJiBsYXN0X2luc24uc2VnID09IG5vd19zZWcpCisrCXsKKysJICBhc193YXJuX3doZXJlIChsYXN0X2luc24uZmlsZSwgbGFzdF9pbnNuLmxpbmUsCisrCQkJIF8oImAlc2Agc2tpcHMgLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaCBvbiBgJXNgIiksCisrCQkJIGxhc3RfaW5zbi5uYW1lLCBpLnRtLm5hbWUpOworKwkgIHJldHVybjsKKysJfQorKworKyAgICAgIHAgPSBmcmFnX21vcmUgKDMpOworKyAgICAgICpwKysgPSAweGY7CisrICAgICAgKnArKyA9IDB4YWU7CisrICAgICAgKnAgPSAweGU4OworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgLyogT3V0cHV0IG9yL25vdCBhbmQgbGZlbmNlIGJlZm9yZSByZXQuICAqLworKyAgaWYgKGxmZW5jZV9iZWZvcmVfcmV0ICE9IGxmZW5jZV9iZWZvcmVfcmV0X25vbmUKKysgICAgICAmJiAoaS50bS5iYXNlX29wY29kZSA9PSAweGMyCisrCSAgfHwgaS50bS5iYXNlX29wY29kZSA9PSAweGMzCisrCSAgfHwgaS50bS5iYXNlX29wY29kZSA9PSAweGNhCisrCSAgfHwgaS50bS5iYXNlX29wY29kZSA9PSAweGNiKSkKKysgICAgeworKyAgICAgIGlmIChsYXN0X2luc24ua2luZCAhPSBsYXN0X2luc25fb3RoZXIKKysJICAmJiBsYXN0X2luc24uc2VnID09IG5vd19zZWcpCisrCXsKKysJICBhc193YXJuX3doZXJlIChsYXN0X2luc24uZmlsZSwgbGFzdF9pbnNuLmxpbmUsCisrCQkJIF8oImAlc2Agc2tpcHMgLW1sZmVuY2UtYmVmb3JlLXJldCBvbiBgJXNgIiksCisrCQkJIGxhc3RfaW5zbi5uYW1lLCBpLnRtLm5hbWUpOworKwkgIHJldHVybjsKKysJfQorKyAgICAgIGlmIChsZmVuY2VfYmVmb3JlX3JldCA9PSBsZmVuY2VfYmVmb3JlX3JldF9vcikKKysJeworKwkgIC8qIG9ybDogMHg4MzBjMjQwMC4gICovCisrCSAgcCA9IGZyYWdfbW9yZSAoKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUID8gMSA6IDApICsgNCArIDMpOworKwkgIGlmIChmbGFnX2NvZGUgPT0gQ09ERV82NEJJVCkKKysJICAgICpwKysgPSAweDQ4OworKwkgICpwKysgPSAweDgzOworKwkgICpwKysgPSAweGM7CisrCSAgKnArKyA9IDB4MjQ7CisrCSAgKnArKyA9IDB4MDsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIHAgPSBmcmFnX21vcmUgKChmbGFnX2NvZGUgPT0gQ09ERV82NEJJVCA/IDIgOiAwKSArIDYgKyAzKTsKKysJICAvKiBub3RsOiAweGY3MTQyNC4gICovCisrCSAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUKQorKwkgICAgKnArKyA9IDB4NDg7CisrCSAgKnArKyA9IDB4Zjc7CisrCSAgKnArKyA9IDB4MTQ7CisrCSAgKnArKyA9IDB4MjQ7CisrCSAgLyogbm90bDogMHhmNzE0MjQuICAqLworKwkgIGlmIChmbGFnX2NvZGUgPT0gQ09ERV82NEJJVCkKKysJICAgICpwKysgPSAweDQ4OworKwkgICpwKysgPSAweGY3OworKwkgICpwKysgPSAweDE0OworKwkgICpwKysgPSAweDI0OworKwl9CisrICAgICAgKnArKyA9IDB4ZjsKKysgICAgICAqcCsrID0gMHhhZTsKKysgICAgICAqcCA9IDB4ZTg7CisrICAgIH0KKyt9CisrCisgLyogVGhpcyBpcyB0aGUgZ3V0cyBvZiB0aGUgbWFjaGluZS1kZXBlbmRlbnQgYXNzZW1ibGVyLiAgTElORSBwb2ludHMgdG8gYQorICAgIG1hY2hpbmUgZGVwZW5kZW50IGluc3RydWN0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byBlbWl0CisgICAgdGhlIGZyYWdzL2J5dGVzIGl0IGFzc2VtYmxlcyB0by4gICovCitAQCAtNDYyOCw5ICs0OTI3LDEzIEBAIG1kX2Fzc2VtYmxlIChjaGFyICpsaW5lKQorICAgaWYgKGkucmV4ICE9IDApCisgICAgIGFkZF9wcmVmaXggKFJFWF9PUENPREUgfCBpLnJleCk7CisgCisrICBpbnNlcnRfbGZlbmNlX2JlZm9yZSAoKTsKKysKKyAgIC8qIFdlIGFyZSByZWFkeSB0byBvdXRwdXQgdGhlIGluc24uICAqLworICAgb3V0cHV0X2luc24gKCk7CisgCisrICBpbnNlcnRfbGZlbmNlX2FmdGVyICgpOworKworICAgbGFzdF9pbnNuLnNlZyA9IG5vd19zZWc7CisgCisgICBpZiAoaS50bS5vcGNvZGVfbW9kaWZpZXIuaXNwcmVmaXgpCitAQCAtMTIyNTAsNiArMTI1NTMsOSBAQCBjb25zdCBjaGFyICptZF9zaG9ydG9wdHMgPSAicW5POjoiOworICNkZWZpbmUgT1BUSU9OX01BTElHTl9CUkFOQ0hfUFJFRklYX1NJWkUgKE9QVElPTl9NRF9CQVNFICsgMjgpCisgI2RlZmluZSBPUFRJT05fTUFMSUdOX0JSQU5DSCAoT1BUSU9OX01EX0JBU0UgKyAyOSkKKyAjZGVmaW5lIE9QVElPTl9NQlJBTkNIRVNfV0lUSF8zMkJfQk9VTkRBUklFUyAoT1BUSU9OX01EX0JBU0UgKyAzMCkKKysjZGVmaW5lIE9QVElPTl9NTEZFTkNFX0FGVEVSX0xPQUQgKE9QVElPTl9NRF9CQVNFICsgMzEpCisrI2RlZmluZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfSU5ESVJFQ1RfQlJBTkNIIChPUFRJT05fTURfQkFTRSArIDMyKQorKyNkZWZpbmUgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX1JFVCAoT1BUSU9OX01EX0JBU0UgKyAzMykKKyAKKyBzdHJ1Y3Qgb3B0aW9uIG1kX2xvbmdvcHRzW10gPQorIHsKK0BAIC0xMjI4OSw2ICsxMjU5NSwxMCBAQCBzdHJ1Y3Qgb3B0aW9uIG1kX2xvbmdvcHRzW10gPQorICAgeyJtYWxpZ24tYnJhbmNoLXByZWZpeC1zaXplIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NQUxJR05fQlJBTkNIX1BSRUZJWF9TSVpFfSwKKyAgIHsibWFsaWduLWJyYW5jaCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUFMSUdOX0JSQU5DSH0sCisgICB7Im1icmFuY2hlcy13aXRoaW4tMzJCLWJvdW5kYXJpZXMiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01CUkFOQ0hFU19XSVRIXzMyQl9CT1VOREFSSUVTfSwKKysgIHsibWxmZW5jZS1hZnRlci1sb2FkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NTEZFTkNFX0FGVEVSX0xPQUR9LAorKyAgeyJtbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2giLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwKKysgICBPUFRJT05fTUxGRU5DRV9CRUZPUkVfSU5ESVJFQ1RfQlJBTkNIfSwKKysgIHsibWxmZW5jZS1iZWZvcmUtcmV0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9SRVR9LAorICAgeyJtYW1kNjQiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01BTUQ2NH0sCisgICB7Im1pbnRlbDY0Iiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NSU5URUw2NH0sCisgICB7TlVMTCwgbm9fYXJndW1lbnQsIE5VTEwsIDB9CitAQCAtMTI2NjgsNiArMTI5NzgsNDEgQEAgbWRfcGFyc2Vfb3B0aW9uIChpbnQgYywgY29uc3QgY2hhciAqYXJnKQorICAgICAgICAgYXNfZmF0YWwgKF8oImludmFsaWQgLW1mZW5jZS1hcy1sb2NrLWFkZD0gb3B0aW9uOiBgJXMnIiksIGFyZyk7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRDoKKysgICAgICBpZiAoc3RyY2FzZWNtcCAoYXJnLCAieWVzIikgPT0gMCkKKysJbGZlbmNlX2FmdGVyX2xvYWQgPSAxOworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm5vIikgPT0gMCkKKysJbGZlbmNlX2FmdGVyX2xvYWQgPSAwOworKyAgICAgIGVsc2UKKysgICAgICAgIGFzX2ZhdGFsIChfKCJpbnZhbGlkIC1tbGZlbmNlLWFmdGVyLWxvYWQ9IG9wdGlvbjogYCVzJyIpLCBhcmcpOworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0g6CisrICAgICAgaWYgKHN0cmNhc2VjbXAgKGFyZywgImFsbCIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID0gbGZlbmNlX2JyYW5jaF9hbGw7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibWVtb3J5IikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX21lbW9yeTsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJyZWdpc3RlciIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID0gbGZlbmNlX2JyYW5jaF9yZWdpc3RlcjsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJub25lIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX25vbmU7CisrICAgICAgZWxzZQorKyAgICAgICAgYXNfZmF0YWwgKF8oImludmFsaWQgLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gb3B0aW9uOiBgJXMnIiksCisrCQkgIGFyZyk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX1JFVDoKKysgICAgICBpZiAoc3RyY2FzZWNtcCAoYXJnLCAib3IiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX3JldCA9IGxmZW5jZV9iZWZvcmVfcmV0X29yOworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm5vdCIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfcmV0ID0gbGZlbmNlX2JlZm9yZV9yZXRfbm90OworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm5vbmUiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX3JldCA9IGxmZW5jZV9iZWZvcmVfcmV0X25vbmU7CisrICAgICAgZWxzZQorKyAgICAgICAgYXNfZmF0YWwgKF8oImludmFsaWQgLW1sZmVuY2UtYmVmb3JlLXJldD0gb3B0aW9uOiBgJXMnIiksCisrCQkgIGFyZyk7CisrICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgT1BUSU9OX01SRUxBWF9SRUxPQ0FUSU9OUzoKKyAgICAgICBpZiAoc3RyY2FzZWNtcCAoYXJnLCAieWVzIikgPT0gMCkKKyAgICAgICAgIGdlbmVyYXRlX3JlbGF4X3JlbG9jYXRpb25zID0gMTsKK0BAIC0xMzAyNSw2ICsxMzM3MCwxNSBAQCBtZF9zaG93X3VzYWdlIChGSUxFICpzdHJlYW0pCisgICAtbWJyYW5jaGVzLXdpdGhpbi0zMkItYm91bmRhcmllc1xuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gYnJhbmNoZXMgd2l0aGluIDMyIGJ5dGUgYm91bmRhcnlcbiIpKTsKKyAgIGZwcmludGYgKHN0cmVhbSwgXygiXAorKyAgLW1sZmVuY2UtYWZ0ZXItbG9hZD1bbm98eWVzXSAoZGVmYXVsdDogbm8pXG5cCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBsZmVuY2UgYWZ0ZXIgbG9hZFxuIikpOworKyAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisrICAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPVtub25lfGFsbHxyZWdpc3RlcnxtZW1vcnldIChkZWZhdWx0OiBub25lKVxuXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgbGZlbmNlIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaFxuIikpOworKyAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisrICAtbWxmZW5jZS1iZWZvcmUtcmV0PVtub25lfG9yfG5vdF0gKGRlZmF1bHQ6IG5vbmUpXG5cCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBsZmVuY2UgYmVmb3JlIHJldFxuIikpOworKyAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisgICAtbWFtZDY0ICAgICAgICAgICAgICAgICBhY2NlcHQgb25seSBBTUQ2NCBJU0EgW2RlZmF1bHRdXG4iKSk7CisgICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKyAgIC1taW50ZWw2NCAgICAgICAgICAgICAgIGFjY2VwdCBvbmx5IEludGVsNjQgSVNBXG4iKSk7CitAQCAtMTMyNTQsNiArMTM2MDgsMTYgQEAgaTM4Nl9jb25zX2FsaWduIChpbnQgaWdub3JlIEFUVFJJQlVURV9VTlVTRUQpCisgICAgICAgbGFzdF9pbnNuLmtpbmQgPSBsYXN0X2luc25fZGlyZWN0aXZlOworICAgICAgIGxhc3RfaW5zbi5uYW1lID0gImNvbnN0YW50IGRpcmVjdGl2ZSI7CisgICAgICAgbGFzdF9pbnNuLmZpbGUgPSBhc193aGVyZSAoJmxhc3RfaW5zbi5saW5lKTsKKysgICAgICBpZiAobGZlbmNlX2JlZm9yZV9yZXQgIT0gbGZlbmNlX2JlZm9yZV9yZXRfbm9uZSkKKysJeworKwkgIGlmIChsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCAhPSBsZmVuY2VfYnJhbmNoX25vbmUpCisrCSAgICBhc193YXJuIChfKCJjb25zdGFudCBkaXJlY3RpdmUgc2tpcHMgLW1sZmVuY2UtYmVmb3JlLXJldCAiCisrCQkgICAgICAgImFuZCAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIikpOworKwkgIGVsc2UKKysJICAgIGFzX3dhcm4gKF8oImNvbnN0YW50IGRpcmVjdGl2ZSBza2lwcyAtbWxmZW5jZS1iZWZvcmUtcmV0IikpOworKwl9CisrICAgICAgZWxzZSBpZiAobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggIT0gbGZlbmNlX2JyYW5jaF9ub25lKQorKwlhc193YXJuIChfKCJjb25zdGFudCBkaXJlY3RpdmUgc2tpcHMgLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaCIpKTsKKyAgICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9nYXMvZG9jL2MtaTM4Ni50ZXhpIGIvZ2FzL2RvYy9jLWkzODYudGV4aQoraW5kZXggYzUzNjc1OWNiMzguLjFkZDk5ZjkxYmIwIDEwMDY0NAorLS0tIGEvZ2FzL2RvYy9jLWkzODYudGV4aQorKysrIGIvZ2FzL2RvYy9jLWkzODYudGV4aQorQEAgLTQ2NCw2ICs0NjQsNDkgQEAgb24gYW4gaW5zdHJ1Y3Rpb24uICBJdCBpcyBlcXVpdmFsZW50IHRvCisgQG9wdGlvbnstbWFsaWduLWJyYW5jaC1wcmVmaXgtc2l6ZT01fS4KKyBUaGUgZGVmYXVsdCBkb2Vzbid0IGFsaWduIGJyYW5jaGVzLgorIAorK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYWZ0ZXItbG9hZD19IG9wdGlvbiwgaTM4NgorK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYWZ0ZXItbG9hZD19IG9wdGlvbiwgeDg2LTY0CisrQGl0ZW0gLW1sZmVuY2UtYWZ0ZXItbG9hZD1AdmFye25vfQorK0BpdGVteCAtbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7eWVzfQorK1RoZXNlIG9wdGlvbnMgY29udHJvbCB3aGV0aGVyIHRoZSBhc3NlbWJsZXIgc2hvdWxkIGdlbmVyYXRlIGxmZW5jZQorK2FmdGVyIGxvYWQgaW5zdHJ1Y3Rpb25zLiAgQG9wdGlvbnstbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7eWVzfX0gd2lsbAorK2dlbmVyYXRlIGxmZW5jZS4gIEBvcHRpb257LW1sZmVuY2UtYWZ0ZXItbG9hZD1AdmFye25vfX0gd2lsbCBub3QgZ2VuZXJhdGUKKytsZmVuY2UsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgorKworK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD19IG9wdGlvbiwgaTM4NgorK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD19IG9wdGlvbiwgeDg2LTY0CisrQGl0ZW0gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye25vbmV9CisrQGl0ZW0gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye2FsbH0KKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7cmVnaXN0ZXJ9CisrQGl0ZW14IC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcnttZW1vcnl9CisrVGhlc2Ugb3B0aW9ucyBjb250cm9sIHdoZXRoZXIgdGhlIGFzc2VtYmxlciBzaG91bGQgZ2VuZXJhdGUgbGZlbmNlCisrYWZ0ZXIgaW5kaXJlY3QgbmVhciBicmFuY2ggaW5zdHJ1Y3Rpb25zLgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye2FsbH19IHdpbGwgZ2VuZXJhdGUgbGZlbmNlCisrYWZ0ZXIgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIHJlZ2lzdGVyIGFuZCBpc3N1ZSBhIHdhcm5pbmcgYmVmb3JlCisraW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIG1lbW9yeS4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntyZWdpc3Rlcn19IHdpbGwgZ2VuZXJhdGUKKytsZmVuY2UgYWZ0ZXIgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIHJlZ2lzdGVyLgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye21lbW9yeX19IHdpbGwgaXNzdWUgYQorK3dhcm5pbmcgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoIHZpYSBtZW1vcnkuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bm9uZX19IHdpbGwgbm90IGdlbmVyYXRlCisrbGZlbmNlIG5vciBpc3N1ZSB3YXJuaW5nLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4gIE5vdGUgdGhhdCBsZmVuY2Ugd29uJ3QKKytiZSBnZW5lcmF0ZWQgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoIHZpYSByZWdpc3RlciB3aXRoCisrQG9wdGlvbnstbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7eWVzfX0gc2luY2UgbGZlbmNlIHdpbGwgYmUgZ2VuZXJhdGVkCisrYWZ0ZXIgbG9hZGluZyBicmFuY2ggdGFyZ2V0IHJlZ2lzdGVyLgorKworK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYmVmb3JlLXJldD19IG9wdGlvbiwgaTM4NgorK0BjaW5kZXggQHNhbXB7LW1sZmVuY2UtYmVmb3JlLXJldD19IG9wdGlvbiwgeDg2LTY0CisrQGl0ZW0gLW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye25vbmV9CisrQGl0ZW0gLW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye29yfQorK0BpdGVteCAtbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm90fQorK1RoZXNlIG9wdGlvbnMgY29udHJvbCB3aGV0aGVyIHRoZSBhc3NlbWJsZXIgc2hvdWxkIGdlbmVyYXRlIGxmZW5jZQorK2JlZm9yZSByZXQuICBAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntvcn19IHdpbGwgZ2VuZXJhdGUKKytnZW5lcmF0ZSBvciBpbnN0cnVjdGlvbiB3aXRoIGxmZW5jZS4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntub3R9fSB3aWxsIGdlbmVyYXRlIG5vdCBpbnN0cnVjdGlvbgorK3dpdGggbGZlbmNlLgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye25vbmV9fSB3aWxsIG5vdCBnZW5lcmF0ZSBsZmVuY2UsCisrd2hpY2ggaXMgdGhlIGRlZmF1bHQuCisrCisgQGNpbmRleCBAc2FtcHstbXg4Ni11c2VkLW5vdGU9fSBvcHRpb24sIGkzODYKKyBAY2luZGV4IEBzYW1wey1teDg2LXVzZWQtbm90ZT19IG9wdGlvbiwgeDg2LTY0CisgQGl0ZW0gLW14ODYtdXNlZC1ub3RlPUB2YXJ7bm99CistLSAKKzIuMTguMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MzE1OTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLXJlcXVpcmUgYmludXRpbHMuaW5jCi1yZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYwotCi1ERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIgotCi0jIGdjYzkuMCBlbmQgdXAgbWlzLWNvbXBpbGluZyBsaWJiZmQuc28gd2l0aCBPMiB3aGljaCB0aGVuIGNyYXNoZXMgb24gdGFyZ2V0Ci0jIFNvIHJlbW92ZSAtTzIgYW5kIHVzZSAtT3MgYXMgd29ya2Fyb3VuZAotU0VMRUNURURfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzYXJjaCA9ICItTzIiCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNhcmNoID0gIiAtT3MiCi0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBJbnN0YWxsIHRoZSBsaWJpYmVydHkgaGVhZGVyCi0JaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9hbnNpZGVjbC5oICR7RH0ke2luY2x1ZGVkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xpYmliZXJ0eS5oICR7RH0ke2luY2x1ZGVkaXJ9Ci0KLQkjIFdlIG9ubHkgd2FudCBsaWJpYmVydHksIGxpYmJmZCBhbmQgbGlib3Bjb2RlcwotCXJtIC1yZiAke0R9JHtiaW5kaXJ9Ci0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQotCXJtIC1yZiAke0R9JHtwcmVmaXh9L2xpYi9sZHNjcmlwdHMKLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9pbmZvCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbWFuCi0Jcm1kaXIgJHtEfSR7cHJlZml4fS9zaGFyZSB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0vZ2NjLWxpYiB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn02NC9nY2MtbGliIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfSB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn02NCB8fCA6Ci19Ci0KLSMgU3BsaXQgb3V0IGxpYmJmZC0qLnNvIHNvIGluY2x1ZGluZyBwZXJmIGRvZXNuJ3QgaW5jbHVkZSBleHRyYSBzdHVmZgotUEFDS0FHRV9CRUZPUkVfUE4gKz0gImxpYmJmZCIKLUZJTEVTX2xpYmJmZCA9ICIke2xpYmRpcn0vbGliYmZkLSouc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2NDVlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzQuYmIKQEAgLTAsMCArMSw2NSBAQAorcmVxdWlyZSBiaW51dGlscy5pbmMKK3JlcXVpcmUgYmludXRpbHMtJHtQVn0uaW5jCisKK0RFUEVORFMgKz0gImZsZXggYmlzb24gemxpYiIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc3lzcm9vdD0vIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0Ml9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1lbmFibGUtdGFyZ2V0cz1hbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS02NC1iaXQtYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZGIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2Ric2VydmVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmRlY251bWJlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWFkbGluZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zaW0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIgorCisjIGdjYzkuMCBlbmQgdXAgbWlzLWNvbXBpbGluZyBsaWJiZmQuc28gd2l0aCBPMiB3aGljaCB0aGVuIGNyYXNoZXMgb24gdGFyZ2V0CisjIFNvIHJlbW92ZSAtTzIgYW5kIHVzZSAtT3MgYXMgd29ya2Fyb3VuZAorU0VMRUNURURfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzYXJjaCA9ICItTzIiCitTRUxFQ1RFRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNhcmNoID0gIiAtT3MiCisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBJbnN0YWxsIHRoZSBsaWJpYmVydHkgaGVhZGVyCisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9hbnNpZGVjbC5oICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2xpYmliZXJ0eS5oICR7RH0ke2luY2x1ZGVkaXJ9CisKKwkjIFdlIG9ubHkgd2FudCBsaWJpYmVydHksIGxpYmJmZCBhbmQgbGlib3Bjb2RlcworCXJtIC1yZiAke0R9JHtiaW5kaXJ9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQorCXJtIC1yZiAke0R9JHtwcmVmaXh9L2xpYi9sZHNjcmlwdHMKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9pbmZvCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvbWFuCisJcm1kaXIgJHtEfSR7cHJlZml4fS9zaGFyZSB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0vZ2NjLWxpYiB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn02NC9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfSB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn02NCB8fCA6Cit9CisKKyMgU3BsaXQgb3V0IGxpYmJmZC0qLnNvIHNvIGluY2x1ZGluZyBwZXJmIGRvZXNuJ3QgaW5jbHVkZSBleHRyYSBzdHVmZgorUEFDS0FHRV9CRUZPUkVfUE4gKz0gImxpYmJmZCIKK0ZJTEVTX2xpYmJmZCA9ICIke2xpYmRpcn0vbGliYmZkLSouc28uKiAke2xpYmRpcn0vbGliYmZkLSouc28iCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICAiIGZpbGU6Ly8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2ggIgorCitVU0VfQUxURVJOQVRJVkVTX0ZPUl9jbGFzcy1uYXRpdmVzZGsgPSAiIgorRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZjBmOTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBQcm9qZWN0IHBhcnNlciBnZW5lcmF0b3IgKHlhY2MgcmVwbGFjZW1lbnQpIgotREVTQ1JJUFRJT04gPSAiQmlzb24gaXMgYSBnZW5lcmFsLXB1cnBvc2UgcGFyc2VyIGdlbmVyYXRvciB0aGF0IGNvbnZlcnRzIGFuIGFubm90YXRlZCBjb250ZXh0LWZyZWUgZ3JhbW1hciBpbnRvIFwKLWFuIExBTFIoMSkgb3IgR0xSIHBhcnNlciBmb3IgdGhhdCBncmFtbWFyLiAgQmlzb24gaXMgdXB3YXJkIGNvbXBhdGlibGUgd2l0aCBZYWNjOiBhbGwgcHJvcGVybHktd3JpdHRlbiBZYWNjIFwKLWdyYW1tYXJzIG91Z2h0IHRvIHdvcmsgd2l0aCBCaXNvbiB3aXRoIG5vIGNoYW5nZS4gQW55b25lIGZhbWlsaWFyIHdpdGggWWFjYyBzaG91bGQgYmUgYWJsZSB0byB1c2UgQmlzb24gd2l0aCBcCi1saXR0bGUgdHJvdWJsZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmlzb24vIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmlzb24vYmlzb24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKLSIKLQotIyBObyBwb2ludCBpbiBoYXJkY29kaW5nIHBhdGggdG8gbTQsIGp1c3QgdXNlIFBBVEgKLUVYVFJBX09FQ09ORiArPSAiTTQ9bTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMWNlYjlkZmRlMmQwM2IyNGE0YzExMzdmN2YxYjU3MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyN2QwNTUzNDY5OTczNWRjNjllODZhZGQ1YjgwOGQ2Y2IzNTkwMGFkM2ZkNjNmYTgyZTNlYjY0NDMzNmFiZmEwIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KLQotIyBUaGUgYXV0b21hdGljIG00IHBhdGggZGV0ZWN0aW9uIGdldHMgY29uZnVzZWQsIHNvIGZvcmNlIHRoZSByaWdodCB2YWx1ZQotYWNwYXRocyA9ICItSSAke1N9L200IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZm9yIGkgaW4gbWZjYWxjIGNhbGMrKyBycGNhbGM7IGRvIG1rZGlyIC1wICR7Qn0vZXhhbXBsZXMvJGk7IGRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKLQkJQklTT05fUEtHREFUQURJUj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Jpc29uCi19Ci1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAotCQlCSVNPTl9QS0dEQVRBRElSPSR7ZGF0YWRpcn0vYmlzb24KLX0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTljMzRmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNS40LmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR05VIFByb2plY3QgcGFyc2VyIGdlbmVyYXRvciAoeWFjYyByZXBsYWNlbWVudCkiCitERVNDUklQVElPTiA9ICJCaXNvbiBpcyBhIGdlbmVyYWwtcHVycG9zZSBwYXJzZXIgZ2VuZXJhdG9yIHRoYXQgY29udmVydHMgYW4gYW5ub3RhdGVkIGNvbnRleHQtZnJlZSBncmFtbWFyIGludG8gXAorYW4gTEFMUigxKSBvciBHTFIgcGFyc2VyIGZvciB0aGF0IGdyYW1tYXIuICBCaXNvbiBpcyB1cHdhcmQgY29tcGF0aWJsZSB3aXRoIFlhY2M6IGFsbCBwcm9wZXJseS13cml0dGVuIFlhY2MgXAorZ3JhbW1hcnMgb3VnaHQgdG8gd29yayB3aXRoIEJpc29uIHdpdGggbm8gY2hhbmdlLiBBbnlvbmUgZmFtaWxpYXIgd2l0aCBZYWNjIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBCaXNvbiB3aXRoIFwKK2xpdHRsZSB0cm91YmxlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaXNvbi8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitTRUNUSU9OID0gImRldmVsIgorREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iaXNvbi9iaXNvbi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAorIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMTdlOTk4ODE5NzhmYTMyYzA1OTMzYzUyNjI0NTdmYTViMmI2MTE2Njg0NTRmOGRjMmE2OTVjZDZiMzcyMGMiCisKKyMgTm8gcG9pbnQgaW4gaGFyZGNvZGluZyBwYXRoIHRvIG00LCBqdXN0IHVzZSBQQVRICitFWFRSQV9PRUNPTkYgKz0gIk00PW00IgorCisjIFJlc2V0IGFueSBsb2FkYXZnIHNldCB2aWEgZW52aXJvbm1lbnQsIGl0IGJyZWFrcyBwYXJhbGxlbCBidWlsZAorIyB8IC4uL2Jpc29uLTMuNS4yL2xpYi91bml3aWR0aC93aWR0aC5jOjIxOjEwOiBmYXRhbCBlcnJvcjogdW5pd2lkdGguaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorIyB8ICAjaW5jbHVkZSAidW5pd2lkdGguaCIKKyMgfCAgICAgICAgICAgXn5+fn5+fn5+fn5+CitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAtbCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKKyMgVGhlIGF1dG9tYXRpYyBtNCBwYXRoIGRldGVjdGlvbiBnZXRzIGNvbmZ1c2VkLCBzbyBmb3JjZSB0aGUgcmlnaHQgdmFsdWUKK2FjcGF0aHMgPSAiLUkgJHtTfS9tNCIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWZvciBpIGluIG1mY2FsYyBjYWxjKysgcnBjYWxjOyBkbyBta2RpciAtcCAke0J9L2V4YW1wbGVzLyRpOyBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCisJCUJJU09OX1BLR0RBVEFESVI9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9iaXNvbgorfQorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKKwkJQklTT05fUEtHREFUQURJUj0ke2RhdGFkaXJ9L2Jpc29uCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDRjMGJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAotaW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCi1lYXN5IGFkbWluaXN0cmF0aW9uLiBcCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAotYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLQotU1JDUkVWID0gImY4MmU1NjliMzNjM2MxY2ZkNGY4ZjQwNTA4NWZmOGQ0MzlhMGE5MTUiCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1wb3NzaWJpbGl0eS10by1zcGVjaWZ5LXdoZXJlLXB5dGhvbi1tb2R1bGVzLWFyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbenN0ZF0gPSAiLS1lbmFibGUtenN0ZCwtLWRpc2FibGUtenN0ZCx6c3RkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9Ci0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKLUVYVFJBX1BZVEhPTl9DRkxBR1MgPSAiJHtERUJVR19QUkVGSVhfTUFQfSIKLUVYVFJBX1BZVEhPTl9DRkxBR1NfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX1BZVEhPTl9MREZMQUdTID0gIiR7TERGTEFHU30iCi1FWFRSQV9PRU1BS0UgPSAiVj0xICdFWFRSQV9QWVRIT05fQ0ZMQUdTPSR7RVhUUkFfUFlUSE9OX0NGTEFHU30nICdFWFRSQV9QWVRIT05fTERGTEFHUz0ke0VYVFJBX1BZVEhPTl9MREZMQUdTfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgotCW1rZGlyIC1wICR7U30vY29uZmlnCi0JY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KLX0KLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgotICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdQWVRIT05fU0lURVBBQ0tBR0VTX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgaW5zdGFsbF9weXRob24KLSAgICBmaQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RjOTcxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuNC4xLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKK2ltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAorZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKK2J0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICIzZmMyMzI2ZDM0NzRhNWU0ZGYyNDQ5ZjVlMzA0M2Y3Mjk4NTAxMzM0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiwtLWRpc2FibGUtcHl0aG9uLHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3pzdGRdID0gIi0tZW5hYmxlLXpzdGQsLS1kaXNhYmxlLXpzdGQsenN0ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQorCitDTEVBTkJST0tFTiA9ICIxIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCitFWFRSQV9QWVRIT05fQ0ZMQUdTID0gIiR7REVCVUdfUFJFRklYX01BUH0iCitFWFRSQV9QWVRIT05fQ0ZMQUdTX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9QWVRIT05fTERGTEFHUyA9ICIke0xERkxBR1N9IgorRVhUUkFfT0VNQUtFID0gIlY9MSAnRVhUUkFfUFlUSE9OX0NGTEFHUz0ke0VYVFJBX1BZVEhPTl9DRkxBR1N9JyAnRVhUUkFfUFlUSE9OX0xERkxBR1M9JHtFWFRSQV9QWVRIT05fTERGTEFHU30nIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KKwlta2RpciAtcCAke1N9L2NvbmZpZworCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCit9CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnUFlUSE9OX1NJVEVQQUNLQUdFU19ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIGluc3RhbGxfcHl0aG9uCisgICAgZmkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhNjgyZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNjYWNoZS5pbmMKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmFkb2M7bWQ1PTAwOTRjNTkwMzljZWM2NmI4YTRjOTA1MjA0MzMzNTE0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2JlNjJlYTZlMTkwOTQxYThjMTJhM2Q1Mzk0ZmQ5MjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzU1OTU1YTYxNTYyYzUzYzRlYzQ2NjllMWM5MjcwOGIwMDA4ZjUwZDIxNGIyN2YwN2E4N2NmNGExZmE2YjAxZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNzM2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy43LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBjY2FjaGUuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5hZG9jO21kNT0yMmQ1MTRkYmMwMWZkZjlhOTc4NDMzNGI2YjU5NDE3YSIKKworU1JDX1VSSVttZDVzdW1dID0gIjUwMGQ3YmQ5ZWJjNmVlMzEwNWQ3ZmMzMzJjMWVmMzk1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliNjFmN2ZhYjJlYzE1MzA1ZWU4MzgyYjAzMzY1NTAzMjMyZGZiMDRiNTc0MTRlN2IwNDMzNzY4ZDUzMGZhOGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCmluZGV4IDFjNjAyZTcuLmI1NjhiYjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiCkBAIC04LDcgKzgsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzJmNjgxNzBiZTQyNGMyY2Q2NDgwNDMzNzcyNmIzMTIiCiAKIFNSQ19VUkkgPSAiIFwKLQkke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9jZHJ0b29scy9jZHJ0b29scy0ke1JFQUxQVn0udGFyLmJ6MiBcCisJJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvY2RydG9vbHMvY2RydG9vbHMtJHtQVn0udGFyLmJ6MiBcCiAJZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVpZC1naWQtZHVyaW5nLWluc3RhbGwucGF0Y2ggXAogCSIKIFVQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgpAQCAtMjMsMTEgKzIzLDYgQEAKIAogaW5oZXJpdCBuYXRpdmUKIAotUFYgPSAiMy4wMWEzMStyZWFsbHkzLjAxIgotUkVBTFBWID0gIjMuMDEiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtSRUFMUFZ9IgotCiBkb19pbnN0YWxsKCkgewogCW1ha2UgaW5zdGFsbCBHTUFLRV9OT1dBUk49dHJ1ZSBJTlNfQkFTRT0ke3ByZWZpeH0gREVTVERJUj0ke0R9CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTYuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTUuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTYuNS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCmluZGV4IGQ4YTllMmQuLjA5OTQ5YjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKQEAgLTIyLDcgKzIyLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaCBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjY5ZTgzN2VlZGEzZGQ0ZTlmNTJjZmZjZjU0NmExMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzk1ODI0M2EwMTM2NWIwNTY1MmZhMDFiMjFkNDBmYTgzNGY3MGE5ZTMwZWZhNjljMDI2MDRlNjRmNThiOGY1IgorU1JDX1VSSVttZDVzdW1dID0gImQ4NmNjYWYzZDI0NjJiNmI1OTQ3OTE5YWJlNWI5ZjE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmNzYwYjUwYjhlY2M5YzBjMzcxMzVmYWU1ZmJmMDBhMmZlZjYxNzA1OWFhOWQ2MWMxYmI5MTY1M2U1YThiZmMiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNtYWtlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCmluZGV4IDM3MjA4MzMuLmUyYTU4ZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDFlNjdjM2ZlNTJjNmM1MWMwMGNmMWViYjBiZmMzMGM3YTVlZjlmZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFiMjcyZDcwM2NlNzdmMzIzYWExMjg1NTI2NTU5YzllZmJmODU4MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDb2R5IFAgU2NoYWZlciA8ZGV2QGNvZHlwcy5jb20+CiBEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDExOjM1OjA1IC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIENNYWtlRGV0ZXJtaW5lU3lzdGVtOiB1c2Ugb2UgZW52aXJvbm1lbnQgdmFycyB0byBsb2FkIGRlZmF1bHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaAppbmRleCBkYjIyOWU2Li42MWM4ZjI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1Y2I2Yzg2Njk2Zjg0MjI3NDA0M2U3ZDQwNmY4NGIzZWFkMWMzNmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YTg2YzdmYTk4N2JkNDA3ZjIyODE3NmRmMmFiZWZmZDAxNWJlOWVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KIERhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6MDI6MTQgLTAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IFByZXZlbnQgdGhlIGRldGVjdGlvbiBvZiBRdDUKQEAgLTM4LDEwICszOCwxMCBAQAogICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1F0NVdpZGdldHNfSU5DTFVERV9ESVJTfSkKICAgIGFkZF9kZWZpbml0aW9ucygke1F0NVdpZGdldHNfREVGSU5JVE9OU30pCiBkaWZmIC0tZ2l0IGEvVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggZTczYjI3Ny4uOTFiOGI2NyAxMDA2NDQKK2luZGV4IDU3ZmE3ZmMuLmQ1MGMxNDYgMTAwNjQ0CiAtLS0gYS9UZXN0cy9DTWFrZUxpc3RzLnR4dAogKysrIGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKLUBAIC0xMzQ4LDcgKzEzNDgsNyBAQCAke0NNYWtlX1NPVVJDRV9ESVJ9L1V0aWxpdGllcy9SZWxlYXNlL3B1c2guYmFzaCAtLWRpciBkZXYgLS0gJyR7Q01ha2VfQlVJTERfTklHSAorQEAgLTEzMjksNyArMTMyOSw3IEBAICR7Q01ha2VfU09VUkNFX0RJUn0vVXRpbGl0aWVzL1JlbGVhc2UvcHVzaC5iYXNoIC0tZGlyIGRldiAtLSAnJHtDTWFrZV9CVUlMRF9OSUdICiAgICAgIHNldChDTWFrZV9URVNUX1F0NSAxKQogICAgZW5kaWYoKQogICAgaWYoQ01ha2VfVEVTVF9RdDUpCkBAIC05NiwxMSArOTYsMTEgQEAKICBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQogIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9vdXRwdXQvYmluKQogZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLWluZGV4IDY5ZjgxNjIuLmYzODk1MjMgMTAwNjQ0CitpbmRleCA2YjJmMTE3Li4xMDAyMDA1IDEwMDY0NAogLS0tIGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKICsrKyBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0Ci1AQCAtMzM0LDcgKzMzNCw3IEBAIGFkZF9SdW5DTWFrZV90ZXN0KGNvbmZpZ3VyZV9maWxlKQotIGFkZF9SdW5DTWFrZV90ZXN0KENUZXN0VGltZW91dEFmdGVyTWF0Y2gpCitAQCAtMzc2LDcgKzM3Niw3IEBAIGVsc2UoKQorIGVuZGlmKCkKICAKICBmaW5kX3BhY2thZ2UoUXQ0IFFVSUVUKQogLWZpbmRfcGFja2FnZShRdDVDb3JlIFFVSUVUKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1jbWFrZS1zdXBwb3J0LU9wZW5FbWJlZGRlZC1RdDQtdG9vbC1iaW5hcnktbmFtZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaAppbmRleCBkN2Q4N2E1Li5lMzBkYzUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjAwMzg1N2QzNDgxMTA1YzQ3M2UyZTc1YmFkNGU5ZTJjNmU3MDAwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTUyODg2MTAyM2JmNjlkZjBhZDA2MWE1OWZkNGU1MjdjOWRkZTFjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CiBEYXRlOiBUaHUsIDEyIE1heSAyMDExIDE1OjM2OjAzICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBzdXBwb3J0IE9wZW5FbWJlZGRlZCBRdDQgdG9vbCBiaW5hcnkgbmFtZXMKQEAgLTI1LDcgKzI1LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCBhMTQ1YjQ2Li43ZTE4MjQzIDEwMDY0NAoraW5kZXggMzk5Mzk2OC4uYjJhODU4NSAxMDA2NDQKIC0tLSBhL01vZHVsZXMvRmluZFF0NC5jbWFrZQogKysrIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiBAQCAtNTE4LDcgKzUxOCw3IEBAIGVuZGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaAppbmRleCA2NzZlMjg1Li40OGY0M2JlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkNGE3OGU4NzM5ZTg0NWMyOTYzNjY2ZjdlZjZhNmM3YTg5ODI3OTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMGFlY2EzNTE4Nzk4M2UyMmVjMjU2YTQzOWNmZjQ3MDJkYmRlMzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KIERhdGU6IFRodSwgNSBKdWwgMjAxOCAxMDoyNjo0OCAtMDMwMAogU3ViamVjdDogW1BBVENIXSBGYWlsIHNpbGVudGx5IGlmIHN5c3RlbSBRdCBpbnN0YWxsYXRpb24gaXMgYnJva2VuCkBAIC0yOCw3ICsyOCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCA3ZTE4MjQzLi40OTdkNWMzIDEwMDY0NAoraW5kZXggYjJhODU4NS4uNzdjODlhYSAxMDA2NDQKIC0tLSBhL01vZHVsZXMvRmluZFF0NC5jbWFrZQogKysrIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiBAQCAtOTg4LDI1ICs5ODgsMjYgQEAgaWYgKFFUX1FNQUtFX0VYRUNVVEFCTEUgQU5ECmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjE1LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjE2LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTUuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xNi41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTdkYjczLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQyBpbXBsZW1lbnRhdGlvbiBvZiBjcmVhdGVyZXBvLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9jcmVhdGVyZXBvX2Mvd2lraSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiYzY3ZjE5ZWQwOTU5M2UzODg2ZWJlZWUyMzkxZTlkNTFjYzM0MzlmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImV4cGF0IGN1cmwgZ2xpYi0yLjAgbGlieG1sMiBvcGVuc3NsIGJ6aXAyIHpsaWIgZmlsZSBzcWxpdGUzIHh6IHJwbSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2UKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIC1EV0lUSF9aQ0hVTks9T0ZGIC1ERU5BQkxFX0RSUE09T0ZGIC1EV0lUSF9MSUJNT0RVTEVNRD1PRkYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBEaXJlY3QgY3JlYXRlcmVwbyB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAotICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2NyZWF0ZXJlcG9fYyBcCi0gICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NES1BBVEhOQVRJVkV9JHtsaWJkaXJfbmF0aXZlc2RrfS9ycG0KLSAgICAgICAgcm0gLXJmICR7RH0vZXRjCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTUzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuNy5iYgpAQCAtMCwwICsxLDM0IEBACitERVNDUklQVElPTiA9ICJDIGltcGxlbWVudGF0aW9uIG9mIGNyZWF0ZXJlcG8uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYy93aWtpIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9jcmVhdGVyZXBvX2MgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjRhYjZiNTZiOGI3MTgzOTYzODY5ODJhZmJhNGFkZTI5N2MxNGQ5MWEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiZXhwYXQgY3VybCBnbGliLTIuMCBsaWJ4bWwyIG9wZW5zc2wgYnppcDIgemxpYiBmaWxlIHNxbGl0ZTMgeHogcnBtIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZQorCitFWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMgLURXSVRIX1pDSFVOSz1PRkYgLURFTkFCTEVfRFJQTT1PRkYgLURXSVRIX0xJQk1PRFVMRU1EPU9GRiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIERpcmVjdCBjcmVhdGVyZXBvIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2NyZWF0ZXJlcG9fYyBcCisgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKKyAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9L3JwbQorICAgICAgICBybSAtcmYgJHtEfS9ldGMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0LzAwMDEtYWNsb2NhbC5tNC1hZGQtbWlzc2luZy1oZWFkZXItZGVmaW5lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0LzAwMDEtYWNsb2NhbC5tNC1hZGQtbWlzc2luZy1oZWFkZXItZGVmaW5lcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmQ5NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gMDA0YmQ4MGQyNTIzZjUzODQ2N2I1YWRhMjYyM2ViMjA3YjU1ZGFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNTo0NDoyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBhY2xvY2FsLm00OiBhZGQgbWlzc2luZyBoZWFkZXIgZGVmaW5lcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgYWNsb2NhbC5tNCB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAoraW5kZXggM2IxOWU4Mi4uYzBjNGFjYiAxMDA2NDQKKy0tLSBhL2FjbG9jYWwubTQKKysrKyBiL2FjbG9jYWwubTQKK0BAIC0xOTI3LDMgKzE5MjcsOCBAQCBtYWtlIGFuIGVycm9yCisgZmkKKyBmaSAjIGNmX2N2X3Bvc2l4X3Zpc2libGUKKyBdKQorKworK0FDX0RFRklORShbSEFWRV9UQ0dFVEFUVFJdLCBbXSwgW0Rlc2NyaXB0aW9uXSkKKytBQ19ERUZJTkUoW0hBVkVfVENTRVRBVFRSXSwgW10sIFtEZXNjcmlwdGlvbl0pCisrQUNfREVGSU5FKFtIQVZFX1RFUk1JT1NfSF0sIFtdLCBbRGVzY3JpcHRpb25dKQorKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZDc3NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCB0byBwcm9kdWNlIGEgc3RhdGlzdGljcyBiYXNlZCBvbiBhIGRpZmYiCi1ERVNDUklQVElPTiA9ICJkaWZmc3RhdCByZWFkcyB0aGUgb3V0cHV0IG9mIGRpZmYgYW5kIGRpc3BsYXlzIGEgaGlzdG9ncmFtIG9mIFwKLXRoZSBpbnNlcnRpb25zLCBkZWxldGlvbnMsIGFuZCBtb2RpZmljYXRpb25zIHBlci1maWxlLiBJdCBpcyB1c2VmdWwgZm9yIFwKLXJldmlld2luZyBsYXJnZSwgY29tcGxleCBwYXRjaCBmaWxlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlmZnN0YXQvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5zdGFsbC1zaDtlbmRsaW5lPTQyO21kNT1iMzU0OTcyNmMxMDIyYmVlMDljMTc0YzcyYTBjYTRhNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vaW52aXNpYmxlLW1pcnJvci5uZXQvYXJjaGl2ZXMvJHtCUE59LyR7QlB9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWQtY2hlY2stdXNlci1icmVhay1jYy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MWUxMDZiYjM0Y2IwOTc3NTBkYjdkZGMwYmExZDhmYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjA5MTgzNjQ0ZWQ3N2ExNTZiMTUzNDZiYmFkNGU4OWM5MzU0M2UxNDBhZGQ5ZGFiMTg3NDdlMzA1MjI1OTFmIgotCi1TID0gIiR7V09SS0RJUn0vZGlmZnN0YXQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLUxERkxBR1MgKz0gIiR7VE9PTENIQUlOX09QVElPTlN9IgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yICR7U30vdGVzdGluZyAke0R9JHtQVEVTVF9QQVRIfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUwYTdlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjMuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJUb29sIHRvIHByb2R1Y2UgYSBzdGF0aXN0aWNzIGJhc2VkIG9uIGEgZGlmZiIKK0RFU0NSSVBUSU9OID0gImRpZmZzdGF0IHJlYWRzIHRoZSBvdXRwdXQgb2YgZGlmZiBhbmQgZGlzcGxheXMgYSBoaXN0b2dyYW0gb2YgXAordGhlIGluc2VydGlvbnMsIGRlbGV0aW9ucywgYW5kIG1vZGlmaWNhdGlvbnMgcGVyLWZpbGUuIEl0IGlzIHVzZWZ1bCBmb3IgXAorcmV2aWV3aW5nIGxhcmdlLCBjb21wbGV4IHBhdGNoIGZpbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWZmc3RhdC8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbnN0YWxsLXNoO2VuZGxpbmU9NDI7bWQ1PWIzNTQ5NzI2YzEwMjJiZWUwOWMxNzRjNzJhMGNhNGE1IgorCitTUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWNsb2NhbC5tNC1hZGQtbWlzc2luZy1oZWFkZXItZGVmaW5lcy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImI5MjcyZWM4YWY2MjU3MTAzMjYxZWMzNjIyNjkyOTkxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlZGRkNTM0MDFiOTliOTBiYWMzZjdlYmYyM2RkNTgzZDdkOTljNjEwNmU2N2E0ZjExNjFiN2EyMDExMGRjNmYiCisKK1MgPSAiJHtXT1JLRElSfS9kaWZmc3RhdC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtc2V0LXB5dGhvbi1wYXRoLWZvci1jb21wbGV0aW9uX2hlbHBlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0OGY2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtc2V0LXB5dGhvbi1wYXRoLWZvci1jb21wbGV0aW9uX2hlbHBlci5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDdlNzliM2I2N2ZkNWNlY2Q3MzgwZTdlMzY1ZmQ4OGVjYTYzYjViZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWFyIDIwMjAgMjI6MTA6MDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gc2V0IHB5dGhvbiBwYXRoIGZvciBjb21wbGV0aW9uX2hlbHBlcgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGRuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluIGIvZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbgoraW5kZXggMzUxMjI2NzU5Li4yODM1Y2QzYjYgMTAwNjQ0CistLS0gYS9kbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluCisrKysgYi9kbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIUBQWVRIT05fRVhFQ1VUQUJMRUAKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgZG5mLgorICMKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvRml4LVN5bnRheFdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mL0ZpeC1TeW50YXhXYXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZDhiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mL0ZpeC1TeW50YXhXYXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMjNjNWIxNWVmZTQyZTVlNmVlNjk1ZTU0Nzk4YmFjMjQ4NTMyZDhkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKworRGF0ZTogVHVlLCAyOCBNYXkgMjAxOSAxMzoxNDo1MSArMDIwMAorU3ViamVjdDogW29lLWNvcmVdW1BBVENIIDEvMV0gRml4IFN5bnRheFdhcm5pbmc6ICJpcyIgd2l0aCBhIGxpdGVyYWwuIERpZCB5b3UKKyBtZWFuICI9PSI/CisKKy0tLQorIGRuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorLS0tCisKK1VuY2hhbmdlZC4gIEFwcGVhcnMgaW4gdmVyc2lvbiA0LjIuNy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5IGIvZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkKK2luZGV4IDk0MWE0NzAuLjYzZmM2NjggMTAwNjQ0CistLS0gYS9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weQorKysrIGIvZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkKK0BAIC02MTEsNyArNjExLDcgQEAgY2xhc3MgUmVwb1F1ZXJ5Q29tbWFuZChjb21tYW5kcy5Db21tYW5kKToKKyAKKyAgICAgZGVmIHRyZWVfc2VlZChzZWxmLCBxdWVyeSwgYXF1ZXJ5LCBvcHRzLCBsZXZlbD0tMSwgdXNlZHBrZ3M9Tm9uZSk6CisgICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChzZXQocXVlcnkucnVuKCkpLCBrZXk9bGFtYmRhIHA6IHAubmFtZSk6CistICAgICAgICAgICAgdXNlZHBrZ3MgPSBzZXQoKSBpZiB1c2VkcGtncyBpcyBOb25lIG9yIGxldmVsIGlzIC0xIGVsc2UgdXNlZHBrZ3MKKysgICAgICAgICAgICB1c2VkcGtncyA9IHNldCgpIGlmIHVzZWRwa2dzIGlzIE5vbmUgb3IgbGV2ZWwgPT0gLTEgZWxzZSB1c2VkcGtncworICAgICAgICAgICAgIGlmIHBrZy5uYW1lLnN0YXJ0c3dpdGgoInJwbWxpYiIpIG9yIHBrZy5uYW1lLnN0YXJ0c3dpdGgoInNvbHZhYmxlIik6CisgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIHNlbGYuZ3Jvd190cmVlKGxldmVsLCBwa2csIG9wdHMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfNC4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzQuMi4yLmJiCmluZGV4IGYzODE2N2YuLmEwNDZmZmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfNC4yLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYgpAQCAtMTMsNiArMTMsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNS1Eby1ub3QtcHJlcGVuZC1pbnN0YWxscm9vdC10by1sb2dkaXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAyOS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LVN5bnRheFdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiOTk0NzMwNmE1NTI3MWI4YjdjOWUyYjZlM2I3ZDU4Mjg4NWI2MDQ1ZCIKQEAgLTg0LDMgKzg2LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAogIgogU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKKworUE5CTEFDS0xJU1RbZG5mXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsICdwYWNrYWdlX3JwbScsICcnLCAnZG9lcyBub3QgYnVpbGQgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMgZHVlIGRpc2FibGVkIHJwbSBzdXBwb3J0IGluIGxpYnNvbHYnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMS5iYgppbmRleCA2OWFhODFhLi4yM2I4ODM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIKQEAgLTIzLDMgKzIzLDYgQEAKIENGTEFHUyArPSAiLURfR05VX1NPVVJDRSAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIEFkZCBjb2RlcGFnZTQzNyB0byBhdm9pZCBlcnJvciBmcm9tIGBkb3Nmc2NrIC1sYAorUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWlibTQzNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMKaW5kZXggYTU0YTExYy4uMDA5ZjVlZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMKQEAgLTQsOSArNCw5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8iCiAKIExJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIgJiBCU0QgJiBNSVQiCitMSUNFTlNFX2UyZnNwcm9ncy1kdW1wZTJmcyA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLWUyZnNjayA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLW1rZTJmcyA9ICJHUEx2MiIKLUxJQ0VOU0VfZTJmc3Byb2dzLWZzY2sgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy10dW5lMmZzID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT1kNTBiZTA1ODBjMGIwYTdmYmM3YTQ4MzBiYmU2YzEyYiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtY29uZmlndXJlLmFjLWNvcnJlY3QtQU1fR05VX0dFVFRFWFQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtY29uZmlndXJlLmFjLWNvcnJlY3QtQU1fR05VX0dFVFRFWFQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxOTU5NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGY5MDdmZWE5ZWEwNTNkNTQzM2I1MTk5Y2U3NDAwODY2NDE0MWY3NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTc6MzI6MzMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBjb3JyZWN0IEFNX0dOVV9HRVRURVhUCisKK05ldyB2ZXJzaW9uIG9mIGdldHRleHQgcmVxdWlyZSB0aGUgJ2V4dGVybmFsJyBhcmd1bWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjU0ZmY0M2QuLjQ3NzJiOTdiIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04NzMsNyArODczLDcgQEAgQUNfU1VCU1QoR0VUVEVYVF9QQUNLQUdFKQorIEFDX1NVQlNUKFBBQ0tBR0UpCisgQUNfU1VCU1QoVkVSU0lPTikKKyAKKy1BTV9HTlVfR0VUVEVYVAorK0FNX0dOVV9HRVRURVhUKFtleHRlcm5hbF0pCisgZG5sIEBNS0RJUl9QQCBpcyBleHBhbmRlZCBpbiBBTV9HTlVfR0VUVEVYVAorIEFDX1NVQlNUKFtta2Rpcl9wXSxbJyQoTUtESVJfUCknXSkKKyBkbmwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZG9uLXQtdHJ5LXRvLXJlaGFzaC1hLWRlbGV0ZWQtZGlyZWN0b3J5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE0ZTNhMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZG9uLXQtdHJ5LXRvLXJlaGFzaC1hLWRlbGV0ZWQtZGlyZWN0b3J5LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNzFiYTEzNzU1MzM3ZTE5YzlhODI2ZGZjODc0NTYyYTM2ZTFiMjRkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitEYXRlOiBUaHUsIDE5IERlYyAyMDE5IDE5OjQ1OjA2IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGUyZnNjazogZG9uJ3QgdHJ5IHRvIHJlaGFzaCBhIGRlbGV0ZWQgZGlyZWN0b3J5CisKK0lmIGRpcmVjdG9yeSBoYXMgYmVlbiBkZWxldGVkIGluIHBhc3MxW2JjZF0gcHJvY2Vzc2luZywgdGhlbiB3ZQorc2hvdWxkbid0IHRyeSB0byByZWhhc2ggdGhlIGRpcmVjdG9yeSBpbiBwYXNzIDNhIHdoZW4gd2UgdHJ5IHRvCityZWhhc2gvcmVvcHRpbWl6ZSBkaXJlY3Rvcmllcy4KKworU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL2V4dDIvZTJmc3Byb2dzLmdpdC9jb21taXQvP2lkPTcxYmExMzc1NTMzN2UxOWM5YTgyNmRmYzg3NDU2MmEzNmUxYjI0ZDNdCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgZTJmc2NrL3Bhc3MxYi5jIHwgNCArKysrCisgZTJmc2NrL3JlaGFzaC5jIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9lMmZzY2svcGFzczFiLmMgYi9lMmZzY2svcGFzczFiLmMKK2luZGV4IDU2OTNiOWNmLi5iY2E3MDFjYSAxMDA2NDQKKy0tLSBhL2UyZnNjay9wYXNzMWIuYworKysrIGIvZTJmc2NrL3Bhc3MxYi5jCitAQCAtNzA1LDYgKzcwNSwxMCBAQCBzdGF0aWMgdm9pZCBkZWxldGVfZmlsZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorIAkJZml4X3Byb2JsZW0oY3R4LCBQUl8xQl9CTE9DS19JVEVSQVRFLCAmcGN0eCk7CisgCWlmIChjdHgtPmlub2RlX2JhZF9tYXApCisgCQlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9iYWRfbWFwLCBpbm8pOworKwlpZiAoY3R4LT5pbm9kZV9yZWdfbWFwKQorKwkJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfcmVnX21hcCwgaW5vKTsKKysJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwgaW5vKTsKKysJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGlubyk7CisgCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIGlubywgLTEsIExJTlVYX1NfSVNESVIoZHAtPmlub2RlLmlfbW9kZSkpOworIAlxdW90YV9kYXRhX3N1YihjdHgtPnFjdHgsICZkcC0+aW5vZGUsIGlubywKKyAJCSAgICAgICBwYi5kdXBfYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSk7CitkaWZmIC0tZ2l0IGEvZTJmc2NrL3JlaGFzaC5jIGIvZTJmc2NrL3JlaGFzaC5jCitpbmRleCAzZGQxZTk0MS4uMmM5MDhiZTAgMTAwNjQ0CistLS0gYS9lMmZzY2svcmVoYXNoLmMKKysrKyBiL2UyZnNjay9yZWhhc2guYworQEAgLTEwMjgsNiArMTAyOCw4IEBAIHZvaWQgZTJmc2NrX3JlaGFzaF9kaXJlY3RvcmllcyhlMmZzY2tfdCBjdHgpCisgCQkJaWYgKCFleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZShpdGVyLCAmaW5vKSkKKyAJCQkJYnJlYWs7CisgCQl9CisrCQlpZiAoIWV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9kaXJfbWFwLCBpbm8pKQorKwkJCWNvbnRpbnVlOworIAorIAkJcGN0eC5kaXIgPSBpbm87CisgCQlpZiAoZmlyc3QpIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1pbnRsLWRvLW5vdC10cnktdG8tdXNlLWdldHRleHQtZGVmaW5lcy10aGF0LW5vLWxvbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFiNTg1ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1pbnRsLWRvLW5vdC10cnktdG8tdXNlLWdldHRleHQtZGVmaW5lcy10aGF0LW5vLWxvbmdlLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZDAzNDIzOWYwNWNmYmE4NDlmNmFkMTZlYjNmMWVhMzdlZmJlNGY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxODozNDowMCArMDEwMAorU3ViamVjdDogW1BBVENIXSBpbnRsOiBkbyBub3QgdHJ5IHRvIHVzZSBnZXR0ZXh0IGRlZmluZXMgdGhhdCBubyBsb25nZXIgZXhpc3QKKworTmV3ZXIgdmVyc2lvbiBvZiBnZXR0ZXh0IG5vIGxvbmdlciBkZWZpbmUgdGhpcyBpbiBtNCBmaWxlcywKK3NvIHBhdGNoIGl0IG91dCB1bnRpbCBlMmZzcHJvZ3MgdXBzdHJlYW0gc29ydHMgdGhlIHNpdHVhdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYXJkY29kZXMgYSBjaG9pY2VdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGludGwvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlLmluIGIvaW50bC9NYWtlZmlsZS5pbgoraW5kZXggZTAzN2UyM2MuLjg5YTg3NmI4IDEwMDY0NAorLS0tIGEvaW50bC9NYWtlZmlsZS5pbgorKysrIGIvaW50bC9NYWtlZmlsZS5pbgorQEAgLTE3NSw3ICsxNzUsNyBAQCBsaWJnbnVpbnRsLmgubXN2Yy1zdGF0aWMgbGliZ251aW50bC5oLm1zdmMtc2hhcmVkIFJFQURNRS53b2UzMiBNYWtlZmlsZS5tc3ZjCisgRElTVEZJTEVTLm9ic29sZXRlID0geG9wZW4tbXNnLnNlZCBsaW51eC1tc2cuc2VkIHBvMnRibC5zZWQuaW4gY2F0LWNvbXBhdC5jIFwKKyBDT1BZSU5HLkxJQi0yIGdldHRleHQuaCBsaWJnZXR0ZXh0LmggcGx1cmFsLWV2YWwuYyBsaWJnbnVpbnRsLmgKKyAKKy1hbGw6IGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExACisrYWxsOgorIGFsbC15ZXM6IGxpYmludGwuJGxhIGxpYmludGwuaCBjaGFyc2V0LmFsaWFzIHJlZi1hZGQuc2VkIHJlZi1kZWwuc2VkCisgYWxsLW5vOiBhbGwtbm8tQEJVSUxEX0lOQ0xVREVEX0xJQklOVExACisgYWxsLW5vLXllczogbGliZ251aW50bC4kbGEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvQ1ZFLTIwMTktNTE4OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvQ1ZFLTIwMTktNTE4OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTRiY2UwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9DVkUtMjAxOS01MTg4LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gOGRkNzNjMTQ5ZjQxODIzOGYxOTc5MWY5ZDY2NjA4OWVmOTczNGRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CitEYXRlOiBUaHUsIDE5IERlYyAyMDE5IDE5OjM3OjM0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGUyZnNjazogYWJvcnQgaWYgdGhlcmUgaXMgYSBjb3JydXB0ZWQgZGlyZWN0b3J5IGJsb2NrIHdoZW4KKyByZWhhc2hpbmcKKworSW4gZTJmc2NrIHBhc3MgM2EsIHdoZW4gd2UgYXJlIHJlaGFzaGluZyBkaXJlY3RvcmllcywgYXQgbGVhc3QgaW4KK3RoZW9yeSwgYWxsIG9mIHRoZSBkaXJlY3RvcmllcyBzaG91bGQgaGF2ZSBoYWQgY29ycnVwdGlvbnMgd2l0aAorcmVzcGVjdCB0byBkaXJlY3RvcnkgZW50cnkgc3RydWN0dXJlIGZpeGVkLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZQorKGZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBkZWNsaW5lZCBhIGZpeCkgdGhhdCB3ZSBjYW4gcmVhY2ggdGhpcyBzdGFnZQorb2YgcHJvY2Vzc2luZyB3aXRoIGEgY29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyaWVzLgorCitTbyBjaGVjayBmb3IgdGhhdCBjYXNlIGFuZCBkb24ndCB0cnkgdG8gcHJvY2VzcyBhIGNvcnJ1cHRlZCBkaXJlY3RvcnkKK2Jsb2NrIHNvIHdlIGRvbid0IHJ1biBpbnRvIHRyb3VibGUgaW4gbXV0YXRlX25hbWUoKSBpZiB0aGVyZSBpcyBhCit6ZXJvLWxlbmd0aCBmaWxlIG5hbWUuCisKK0FkZHJlc3NlczogVEFMT1MtMjAxOS0wOTczCitBZGRyZXNzZXM6IENWRS0yMDE5LTUxODgKK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisKK0NWRTogQ1ZFLTIwMTktNTE4OAorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9leHQyL2UyZnNwcm9ncy5naXQvY29tbWl0Lz9pZD04ZGQ3M2MxNDlmNDE4MjM4ZjE5NzkxZjlkNjY2MDg5ZWY5NzM0ZGZmXQorLS0tCisgZTJmc2NrL3JlaGFzaC5jIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9lMmZzY2svcmVoYXNoLmMgYi9lMmZzY2svcmVoYXNoLmMKK2luZGV4IGE1ZmMxYmUxLi4zZGQxZTk0MSAxMDA2NDQKKy0tLSBhL2UyZnNjay9yZWhhc2guYworKysrIGIvZTJmc2NrL3JlaGFzaC5jCitAQCAtMTYwLDYgKzE2MCwxMCBAQCBzdGF0aWMgaW50IGZpbGxfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorIAkJZGlyX29mZnNldCArPSByZWNfbGVuOworIAkJaWYgKGRpcmVudC0+aW5vZGUgPT0gMCkKKyAJCQljb250aW51ZTsKKysJCWlmICgobmFtZV9sZW4pID09IDApIHsKKysJCQlmZC0+ZXJyID0gRVhUMl9FVF9ESVJfQ09SUlVQVEVEOworKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKysJCX0KKyAJCWlmICghZmQtPmNvbXByZXNzICYmIChuYW1lX2xlbiA9PSAxKSAmJgorIAkJICAgIChkaXJlbnQtPm5hbWVbMF0gPT0gJy4nKSkKKyAJCQljb250aW51ZTsKK0BAIC00MDEsNiArNDA1LDExIEBAIHN0YXRpYyBpbnQgZHVwbGljYXRlX3NlYXJjaF9hbmRfZml4KGUyZnNja190IGN0eCwgZXh0Ml9maWxzeXMgZnMsCisgCQkJY29udGludWU7CisgCQl9CisgCQluZXdfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihlbnQtPmRpcik7CisrCQlpZiAobmV3X2xlbiA9PSAwKSB7CisrCQkJIC8qIHNob3VsZCBuZXZlciBoYXBwZW4gKi8KKysJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKysJCQljb250aW51ZTsKKysJCX0KKyAJCW1lbWNweShuZXdfbmFtZSwgZW50LT5kaXItPm5hbWUsIG5ld19sZW4pOworIAkJbXV0YXRlX25hbWUobmV3X25hbWUsICZuZXdfbGVuKTsKKyAJCWZvciAoaj0wOyBqIDwgZmQtPm51bV9hcnJheTsgaisrKSB7CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNjay1maXgtdXNlLWFmdGVyLWZyZWUtaW4tY2FsY3VsYXRlX3RyZWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNjay1maXgtdXNlLWFmdGVyLWZyZWUtaW4tY2FsY3VsYXRlX3RyZWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQyYTJiOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tOiBXYW5nIFNoaWxvbmcgPHdzaGlsb25nQGRkbi5jb20+CitEYXRlOiBNb24sIDMwIERlYyAyMDE5IDE5OjUyOjM5IC0wNTAwCitTdWJqZWN0OiBlMmZzY2s6IGZpeCB1c2UgYWZ0ZXIgZnJlZSBpbiBjYWxjdWxhdGVfdHJlZSgpCisKK1RoZSBwcm9ibGVtIGlzIGFsbG9jX2Jsb2NrcygpIHdpbGwgY2FsbCBnZXRfbmV4dF9ibG9jaygpIHdoaWNoIG1pZ2h0CityZWFsbG9jYXRlIG91dGRpci0+YnVmLCBhbmQgbWVtb3J5IGFkZHJlc3MgY291bGQgYmUgY2hhbmdlZCBhZnRlcgordGhpcy4gIFRvIGZpeCB0aGlzLCBwb2ludGVycyB0aGF0IHBvaW50IGludG8gb3V0ZGlyLT5idWYsIHN1Y2ggYXMKK2ludF9saW1pdCBhbmQgcm9vdCBuZWVkIHRvIGJlIHJlY2F1bGF0ZWQgYmFzZWQgb24gdGhlIG5ldyBzdGFydGluZworYWRkcmVzcyBvZiBvdXRkaXItPmJ1Zi4KKworWyBDaGFuZ2VkIHRvIGNvcnJlY3RseSByZWNhbGN1bGF0ZSBpbnRfbGltaXQsIGFuZCB0byBvcHRpbWl6ZSBob3cgd2UKKyAgcmVhbGxvY2F0ZSBvdXRkaXItPmJ1Zi4gIC1UWVQgXQorCitBZGRyZXNzZXMtRGViaWFuLUJ1ZzogOTQ4NTE3CitTaWduZWQtb2ZmLWJ5OiBXYW5nIFNoaWxvbmcgPHdzaGlsb25nQGRkbi5jb20+CitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTAxZTczZTk5Y2NhZmEwNDAzZmNiMjdkZDc0MTMwMzNiNTg3Y2EwMSkKKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9leHQyL2UyZnNwcm9ncy5naXQvY29tbWl0Lz9pZD0xMDFlNzNlOTljY2FmYTA0MDNmY2IyN2RkNzQxMzAzM2I1ODdjYTAxXQorLS0tCisgZTJmc2NrL3JlaGFzaC5jIHwgMTcgKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZTJmc2NrL3JlaGFzaC5jIGIvZTJmc2NrL3JlaGFzaC5jCitpbmRleCAwYTU4ODhhOS4uMjU3NGUxNTEgMTAwNjQ0CistLS0gYS9lMmZzY2svcmVoYXNoLmMKKysrKyBiL2UyZnNjay9yZWhhc2guYworQEAgLTI5NSw3ICsyOTUsMTEgQEAgc3RhdGljIGVycmNvZGVfdCBnZXRfbmV4dF9ibG9jayhleHQyX2ZpbHN5cyBmcywgc3RydWN0IG91dF9kaXIgKm91dGRpciwKKyAJZXJyY29kZV90CXJldHZhbDsKKyAKKyAJaWYgKG91dGRpci0+bnVtID49IG91dGRpci0+bWF4KSB7CistCQlyZXR2YWwgPSBhbGxvY19zaXplX2Rpcihmcywgb3V0ZGlyLCBvdXRkaXItPm1heCArIDUwKTsKKysJCWludCBpbmNyZW1lbnQgPSBvdXRkaXItPm1heCAvIDEwOworKworKwkJaWYgKGluY3JlbWVudCA8IDUwKQorKwkJCWluY3JlbWVudCA9IDUwOworKwkJcmV0dmFsID0gYWxsb2Nfc2l6ZV9kaXIoZnMsIG91dGRpciwgb3V0ZGlyLT5tYXggKyBpbmNyZW1lbnQpOworIAkJaWYgKHJldHZhbCkKKyAJCQlyZXR1cm4gcmV0dmFsOworIAl9CitAQCAtNjM3LDYgKzY0MSw5IEBAIHN0YXRpYyBpbnQgYWxsb2NfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLAorIAlpZiAocmV0dmFsKQorIAkJcmV0dXJuIHJldHZhbDsKKyAKKysJLyogb3V0ZGlyLT5idWYgbWlnaHQgYmUgcmVhbGxvY2F0ZWQgKi8KKysJKnByZXZfZW50ID0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopIChvdXRkaXItPmJ1ZiArICpwcmV2X29mZnNldCk7CisrCisgCSpuZXh0X2VudCA9IHNldF9pbnRfbm9kZShmcywgYmxvY2tfc3RhcnQpOworIAkqbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSgqbmV4dF9lbnQpOworIAlpZiAobmV4dF9vZmZzZXQpCitAQCAtNzI2LDYgKzczMyw5IEBAIHN0YXRpYyBlcnJjb2RlX3QgY2FsY3VsYXRlX3RyZWUoZXh0Ml9maWxzeXMgZnMsCisgCQkJCQlyZXR1cm4gcmV0dmFsOworIAkJCX0KKyAJCQlpZiAoYzMgPT0gMCkgeworKwkJCQlpbnQgZGVsdGExID0gKGNoYXIgKilpbnRfbGltaXQgLSBvdXRkaXItPmJ1ZjsKKysJCQkJaW50IGRlbHRhMiA9IChjaGFyICopcm9vdCAtIG91dGRpci0+YnVmOworKworIAkJCQlyZXR2YWwgPSBhbGxvY19ibG9ja3MoZnMsICZsaW1pdCwgJmludF9lbnQsCisgCQkJCQkJICAgICAgJmR4X2VudCwgJmludF9vZmZzZXQsCisgCQkJCQkJICAgICAgTlVMTCwgb3V0ZGlyLCBpLCAmYzIsCitAQCAtNzMzLDYgKzc0MywxMSBAQCBzdGF0aWMgZXJyY29kZV90IGNhbGN1bGF0ZV90cmVlKGV4dDJfZmlsc3lzIGZzLAorIAkJCQlpZiAocmV0dmFsKQorIAkJCQkJcmV0dXJuIHJldHZhbDsKKyAKKysJCQkJLyogb3V0ZGlyLT5idWYgbWlnaHQgYmUgcmVhbGxvY2F0ZWQgKi8KKysJCQkJaW50X2xpbWl0ID0gKHN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKikKKysJCQkJCShvdXRkaXItPmJ1ZiArIGRlbHRhMSk7CisrCQkJCXJvb3QgPSAoc3RydWN0IGV4dDJfZHhfZW50cnkgKikKKysJCQkJCShvdXRkaXItPmJ1ZiArIGRlbHRhMik7CisgCQkJfQorIAkJCWR4X2VudC0+YmxvY2sgPSBleHQyZnNfY3B1X3RvX2xlMzIoaSk7CisgCQkJaWYgKGMzICE9IGxpbWl0LT5saW1pdCkKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaAppbmRleCA2OWMwOWJjLi40ZDMzNWFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjNzkxNDMwOWFlZWU2MjA5ZGRiNjk5NWMwODQ4MDVhOTExZDljYzgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlODMzMWE3Njk4M2U4MzlhM2QxOTM0NDZhYjhhZTljMWIwOWRhYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMTAgQXVnIDIwMTYgMTE6MTk6NDQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4IG1pc3NpbmcgY2hlY2sgZm9yIHBlcm1pc3Npb24gZGVuaWVkLgpAQCAtMTksNyArMTksNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliL3N1cHBvcnQvcHJvZmlsZS5jIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCi1pbmRleCA5ZTk2NjczYi4uMzJkODMwMDIgMTAwNjQ0CitpbmRleCA1ODVlZDU5NS4uODEwZGQ2NmIgMTAwNjQ0CiAtLS0gYS9saWIvc3VwcG9ydC9wcm9maWxlLmMKICsrKyBiL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwogQEAgLTMzNSw3ICszMzUsNyBAQCBwcm9maWxlX2luaXQoY29uc3QgY2hhciAqIGNvbnN0ICpmaWxlcywgcHJvZmlsZV90ICpyZXRfcHJvZmlsZSkKQEAgLTMxLDYgKzMxLDMgQEAKICAJCQkgICBzdHJjbXAoKmZzLCBkZWZhdWx0X2ZpbGVuYW1lKSkKICAJCQlnb3RvIGVycm91dDsKICAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcXVpZXQtZGVidWdmcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcXVpZXQtZGVidWdmcy5wYXRjaAppbmRleCA4MzBlOWQ1Li45NWU2YTdhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3F1aWV0LWRlYnVnZnMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoCkBAIC0xLDE0ICsxLDIzIEBACitGcm9tIGRlNmQ2ZjBkZDAxMGY1YjlkOTE3NTUzYWNiOTQzMDI3OGY0NDhmMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyMyBEZWMgMjAxMyAxMzozODozNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlMmZzcHJvZ3M6IHNpbGVuY2UgZGVidWdmcworCiBXaGVuIGV4ZWN1dGluZyBhIHNjcmlwdCBkb24ndCBlY2hvIGV2ZXJ5IGNvbW1hbmQsIGFzIHdlIGRvIHRoaXMgZm9yIGVudGlyZQogZmlsZXN5c3RlbXMgYXQgcm9vdGZzIHRpbWUuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAorLS0tCisgZGVidWdmcy9kZWJ1Z2ZzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKIGRpZmYgLS1naXQgYS9kZWJ1Z2ZzL2RlYnVnZnMuYyBiL2RlYnVnZnMvZGVidWdmcy5jCi1pbmRleCA1NTkwMjk1Li5hYzU3MjkyIDEwMDY0NAoraW5kZXggMTViMDEyMTQuLjE1MTY0ZGYyIDEwMDY0NAogLS0tIGEvZGVidWdmcy9kZWJ1Z2ZzLmMKICsrKyBiL2RlYnVnZnMvZGVidWdmcy5jCi1AQCAtMjM3OCw3ICsyMzc4LDcgQEAgc3RhdGljIGludCBzb3VyY2VfZmlsZShjb25zdCBjaGFyICpjbWRfZmlsZSwgaW50IHNzX2lkeCkKK0BAIC0yNDkyLDcgKzI0OTIsNyBAQCBzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc3NfaWR4KQogIAkJY3AgPSBzdHJjaHIoYnVmLCAnXHInKTsKICAJCWlmIChjcCkKICAJCQkqY3AgPSAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ1LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDUuNC5iYgppbmRleCA5MGRiNzFkLi40ZjdjYWZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDUuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDUuNC5iYgpAQCAtMSwxMSArMSwxNiBAQAogcmVxdWlyZSBlMmZzcHJvZ3MuaW5jCiAKIFNSQ19VUkkgKz0gImZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWNvcnJlY3QtQU1fR05VX0dFVFRFWFQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRsLWRvLW5vdC10cnktdG8tdXNlLWdldHRleHQtZGVmaW5lcy10aGF0LW5vLWxvbmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTUxODgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1lMmZzY2stZG9uLXQtdHJ5LXRvLXJlaGFzaC1hLWRlbGV0ZWQtZGlyZWN0b3J5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2UyZnNjay1maXgtdXNlLWFmdGVyLWZyZWUtaW4tY2FsY3VsYXRlX3RyZWUucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCkBAIC04MCwxMiArODUsMTMgQEAKIAltdiAke0R9JHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtEfSR7YmFzZV9zYmluZGlyfS90dW5lMmZzLmUyZnNwcm9ncwogfQogCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKK1JERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1kdW1wZTJmcyIKIFJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCiAKLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1lMnNjcnViIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLWR1bXBlMmZzIGUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLWUyc2NydWIgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtcmVzaXplMmZzIGUyZnNwcm9ncy10dW5lMmZzIgogUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgogCitGSUxFU19lMmZzcHJvZ3MtZHVtcGUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L2R1bXBlMmZzIgogRklMRVNfZTJmc3Byb2dzLXJlc2l6ZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVzaXplMmZzKiIKIEZJTEVTX2UyZnNwcm9ncy1lMmZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayAke2Jhc2Vfc2JpbmRpcn0vZnNjay5leHQqIgogRklMRVNfZTJmc3Byb2dzLWUyc2NydWIgPSAiJHtiYXNlX3NiaW5kaXJ9L2Uyc2NydWIqIgpAQCAtMTE1LDcgKzEyMSw3IEBACiAKIFJERVBFTkRTX2UyZnNwcm9ncy1lMnNjcnViID0gImJhc2giCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiY29yZXV0aWxzIHByb2NwcyBiYXNoIGJ6aXAyIGRpZmZ1dGlscyBwZXJsIHNlZCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLWR1bXBlMmZzIGUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtcmVzaXplMmZzIGUyZnNwcm9ncy10dW5lMmZzIgogCiBkb19jb21waWxlX3B0ZXN0KCkgewogCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc3NDBjNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MysgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmludGwiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgbXVzbC1vYnN0YWNrICIKLSMgVGhlIERlYmlhbiBwYXRjaGVzIGJlbG93IGFyZSBmcm9tOgotIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc2LTEuZGViaWFuLnRhci54egotU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmVsZi1lbGZfZW5kLmMtY2hlY2stZGF0YV9saXN0LmRhdGEuZC5kX2J1Zi1iZWZvcmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9odXJkX3BhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kaXNhYmxlX3dlcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfY2ZpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1kZWJpYW4tcGF0Y2hlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGhlLXRlc3Qtd2hlbi1nY2Mtbm90LWRlcGxveWVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjX2luaXRyZWcuYy1JbmNsaXVkZS1hc20tcHRyYWNlLmgtZm9yLXB0X3JlZ3MtZGVmaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtb2JzdGFjay1mdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1saWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtdXRpbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVzbC10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwYjU4MzcyMmY5MTFlMTYzMjU0NDcxOGQ1MDJhYWI4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYTQ4OWRlY2NiY2FlN2Q4YzkyMGY2MGQ4NTkwNjEyNGMxOTg5YzU5MTE5NmQ5MGUwZmQ2NjhlM2RjMDUwNDJlIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemxpYiwtLXdpdGhvdXQtYnpsaWIsJHtERVBFTkRTX0JaSVAyfSIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliYXNtIGxpYmVsZiBiYXNoIG1ha2UgY29yZXV0aWxzICR7UE59LWJpbnV0aWxzIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCArPSAiLS1kaXNhYmxlLXRlc3RzLXJwYXRoIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSAmJiBbIC16IGBlY2hvICIke1RBUkdFVF9BUkNIfSJ8Z3JlcCAnaS44NidgIF07dGhlbgotCQlybSAtZiAke0R9JHtiaW5kaXJ9L2V1LW9iamR1bXAKLQlmaQotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCWNkICR7Qn0vdGVzdHMKLQlvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUyBvZWNoZWNrCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaWYgWyAke1BURVNUX0VOQUJMRUR9ID0gIjEiIF07IHRoZW4KLQkJIyBjb3B5IHRoZSBmaWxlcyB3aGljaCBuZWVkZWQgYnkgdGhlIGNhc2VzCi0JCVRFU1RfRklMRVM9InN0cmlwIHN0cmlwLm8gYWRkcjJsaW5lIGVsZmNtcCBvYmpkdW1wIHJlYWRlbGYgc2l6ZS5vIG5tLm8gbm0gZWxmbGludCIKLQkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliZWxmCi0JCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJkdwotCQlmb3IgdGVzdF9maWxlIGluICR7VEVTVF9GSUxFU307IGRvCi0JCQlpZiBbIC1mICR7Qn0vc3JjLyR7dGVzdF9maWxlfSBdOyB0aGVuCi0JCQkJY3AgLXIgJHtCfS9zcmMvJHt0ZXN0X2ZpbGV9ICR7RH0ke1BURVNUX1BBVEh9L3NyYwotCQkJZmkKLQkJZG9uZQotCQljcCAke0R9JHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYvbGliZWxmLnNvCi0JCWNwICR7RH0ke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliZHcvbGliZHcuc28KLQkJY3AgLXIgJHtTfS90ZXN0cy8gICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0JCWNwIC1yICR7Qn0vdGVzdHMvKiAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotCQljcCAtciAke0J9L2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLQkJY3AgLXIgJHtCfS9iYWNrZW5kcyAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0JCXNlZCAtaSAnL15NYWtlZmlsZTovYyBNYWtlZmlsZTonICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotCQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLW5hbWUgKi5baG9jXSB8IHhhcmdzIC1pIHJtIHt9Ci0JZmkKLX0KLQotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgotCi0jIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxpY2Vuc2VkIEdQTHYyIG9yIEdQTHYzKywgYmluYXJpZXMgR1BMdjMrCi0jIGFjY29yZGluZyB0byBORVdTIGZpbGU6Ci0jICJUaGUgbGljZW5zZSBpcyBub3cgR1BMdjIvTEdQTHYzKyBmb3IgdGhlIGxpYnJhcmllcyBhbmQgR1BMdjMrIGZvciBzdGFuZC1hbG9uZQotIyBwcm9ncmFtcy4gVGhlcmUgaXMgbm93IGFsc28gYSBmb3JtYWwgQ09OVFJJQlVUSU5HIGRvY3VtZW50IGRlc2NyaWJpbmcgaG93IHRvCi0jIHN1Ym1pdCBwYXRjaGVzLiIKLUxJQ0VOU0VfJHtQTn0tYmludXRpbHMgPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfSA9ICJHUEx2MysiCi1MSUNFTlNFX2xpYmVsZiA9ICJHUEx2MiB8IExHUEx2MysiCi1MSUNFTlNFX2xpYmFzbSA9ICJHUEx2MiB8IExHUEx2MysiCi1MSUNFTlNFX2xpYmR3ID0gIkdQTHYyIHwgTEdQTHYzKyIKLQotRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAotICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAotICAgICR7YmluZGlyfS9ldS1sZCBcCi0gICAgJHtiaW5kaXJ9L2V1LW5tIFwKLSAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCi0gICAgJHtiaW5kaXJ9L2V1LXNpemUgXAotICAgICR7YmluZGlyfS9ldS1zdHJpcCIKLQotRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgotRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgotRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKLSMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5Ci0jIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLSNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKLSNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKLQotIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKLQotIyBhdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIHRlc3RzIHN1Y2ggYXMgdGVzdC1ubGlzdCwKLSMgcnVuLXN0cmlwLXJlbG9jLnNoLCBydW4tc3RyaXAtc3RybWVyZ2Uuc2ggYW5kIHNvIG9uIHdpbGwgZmFpbAotSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIlwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LW5saXN0IFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9lbGZzdHJtZXJnZSBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWNoaWxkIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtZGF0YSBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGVsZXRlZCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3N0cmlwIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvYWRkcjJsaW5lIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmY21wIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvb2JqZHVtcCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3JlYWRlbGYgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9ubSBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmxpbnQgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2xpYmVsZi9saWJlbGYuc28gXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2xpYmR3L2xpYmR3LnNvIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9iYWNrZW5kcy9saWJlYmxfaTM4Ni5zbyBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vYmFja2VuZHMvbGliZWJsX3g4Nl82NC5zbyBcCi0iCi0KLVBSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkdy5zby4xIGxpYmVsZi5zby4xIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGE5NWVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzkuYmIKQEAgLTAsMCArMSwxNTcgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzKyAmIEdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaW50bCIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyBtdXNsLW9ic3RhY2sgIgorIyBUaGUgRGViaWFuIHBhdGNoZXMgYmVsb3cgYXJlIGZyb206CisjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzYtMS5kZWJpYW4udGFyLnh6CitTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9rZnJlZWJzZF9wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHVyZF9wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGlzYWJsZV93ZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2NmaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtZGViaWFuLXBhdGNoZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRoZS10ZXN0LXdoZW4tZ2NjLW5vdC1kZXBsb3llZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwY19pbml0cmVnLmMtSW5jbGl1ZGUtYXNtLXB0cmFjZS5oLWZvci1wdF9yZWdzLWRlZmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW11c2wtb2JzdGFjay1mdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tdXNsLWxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1tdXNsLXV0aWxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOGVlNTZiMzcxYjVhN2VhMDgxMjg0YzQ0ZTUxNjQ2MDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjVhNTQ1NTY2Y2JhY2FhMzdhZTYyMjJlNThmMWM0OGVhNDU3MGY1M2JhOTkxODg2ZTJmNWNlOTZlMjJhMjNhMiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0tZGlzYWJsZS1kZWJ1Z2luZm9kIgorCitERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6bGliLC0td2l0aG91dC1iemxpYiwke0RFUEVORFNfQlpJUDJ9IgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHoiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJhc20gbGliZWxmIGJhc2ggbWFrZSBjb3JldXRpbHMgJHtQTn0tYmludXRpbHMiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLWRpc2FibGUtdGVzdHMtcnBhdGgiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwljZCAke0J9L3Rlc3RzCisJb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMgb2VjaGVjaworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWlmIFsgJHtQVEVTVF9FTkFCTEVEfSA9ICIxIiBdOyB0aGVuCisJCSMgY29weSB0aGUgZmlsZXMgd2hpY2ggbmVlZGVkIGJ5IHRoZSBjYXNlcworCQlURVNUX0ZJTEVTPSJzdHJpcCBzdHJpcC5vIGFkZHIybGluZSBlbGZjbXAgb2JqZHVtcCByZWFkZWxmIHNpemUubyBubS5vIG5tIGVsZmxpbnQgZWxmY29tcHJlc3MgZWxmY2xhc3NpZnkgc3RhY2sgdW5zdHJpcCIKKwkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliZWxmCisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJkdworCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliYXNtCisJCWZvciB0ZXN0X2ZpbGUgaW4gJHtURVNUX0ZJTEVTfTsgZG8KKwkJCWlmIFsgLWYgJHtCfS9zcmMvJHt0ZXN0X2ZpbGV9IF07IHRoZW4KKwkJCQljcCAtciAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisJCQlmaQorCQlkb25lCisJCWNwICR7RH0ke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmVsZi9saWJlbGYuc28KKwkJY3AgJHtEfSR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbworCQljcCAke0R9JHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJhc20vbGliYXNtLnNvCisJCWNwIC1yICR7U30vdGVzdHMvICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorCQljcCAtciAke0J9L3Rlc3RzLyogICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwkJY3AgLXIgJHtCfS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisJCWNwIC1yICR7Qn0vYmFja2VuZHMgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorCQlzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKwkJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1uYW1lICouW2hvY10gfCB4YXJncyAtaSBybSB7fQorCWZpCit9CisKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKKworIyBzaGFyZWQgbGlicmFyaWVzIGFyZSBsaWNlbnNlZCBHUEx2MiBvciBHUEx2MyssIGJpbmFyaWVzIEdQTHYzKworIyBhY2NvcmRpbmcgdG8gTkVXUyBmaWxlOgorIyAiVGhlIGxpY2Vuc2UgaXMgbm93IEdQTHYyL0xHUEx2MysgZm9yIHRoZSBsaWJyYXJpZXMgYW5kIEdQTHYzKyBmb3Igc3RhbmQtYWxvbmUKKyMgcHJvZ3JhbXMuIFRoZXJlIGlzIG5vdyBhbHNvIGEgZm9ybWFsIENPTlRSSUJVVElORyBkb2N1bWVudCBkZXNjcmliaW5nIGhvdyB0bworIyBzdWJtaXQgcGF0Y2hlcy4iCitMSUNFTlNFXyR7UE59LWJpbnV0aWxzID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjMrIgorTElDRU5TRV9saWJlbGYgPSAiR1BMdjIgfCBMR1BMdjMrIgorTElDRU5TRV9saWJhc20gPSAiR1BMdjIgfCBMR1BMdjMrIgorTElDRU5TRV9saWJkdyA9ICJHUEx2MiB8IExHUEx2MysiCisKK0ZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKKyAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKKyAgICAke2JpbmRpcn0vZXUtbGQgXAorICAgICR7YmluZGlyfS9ldS1ubSBcCisgICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAorICAgICR7YmluZGlyfS9ldS1zaXplIFwKKyAgICAke2JpbmRpcn0vZXUtc3RyaXAiCisKK0ZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKK0ZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKK0ZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCisjIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQorIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCisjRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCisjRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCisKKyMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCisKKyMgYXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSB0ZXN0cyBzdWNoIGFzIHRlc3Qtbmxpc3QsCisjIHJ1bi1zdHJpcC1yZWxvYy5zaCwgcnVuLXN0cmlwLXN0cm1lcmdlLnNoIGFuZCBzbyBvbiB3aWxsIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICJcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC1ubGlzdCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZWxmc3RybWVyZ2UgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1jaGlsZCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWRhdGEgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1kd2FyZiBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGVsZXRlZCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3N0cmlwIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvYWRkcjJsaW5lIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmY21wIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvb2JqZHVtcCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3JlYWRlbGYgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9ubSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmxpbnQgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZjbGFzc2lmeSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3N0YWNrIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvdW5zdHJpcCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZHcvbGliZHcuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2xpYmFzbS9saWJhc20uc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF9pMzg2LnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9iYWNrZW5kcy9saWJlYmxfeDg2XzY0LnNvIFwKKyIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmR3LnNvLjEgbGliZWxmLnNvLjEgbGliYXNtLnNvLjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCmluZGV4IGFmNzllZjQuLjYyMDMxMDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiOTlhYTEyY2Y4NzljZTIwMGUwM2Q3NWU1NDNjN2FiMmRmYTU1MDNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlYzlhNzc0MjczNGFhZTU0MTdjMGViYmZmY2U2NmFjMzUzZTZjYWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxMDo1NyArMDgwMAogU3ViamVjdDogW1BBVENIXSBkc28gbGluayBjaGFuZ2UKQEAgLTIzLDEwICsyMywxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAyYjFjMGRjLi45MzA1Yjg0IDEwMDY0NAoraW5kZXggZTQ2MmU3ZC4uZWExMjE1YiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQogKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNDQsNyArNDQsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorQEAgLTQ1LDcgKzQ1LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgLWxkbCAtbHB0aHJlYWQKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEgLWx6CiAgZWxzZQogIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KQEAgLTM0LDEyICszNCwxMiBAQAogK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwogIGVuZGlmCi0gbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCisgbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hIC4uL2JhY2tlbmRzL2xpYmVibF9iYWNrZW5kcy5hIC4uL2xpYmNwdS9saWJjcHUuYQogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDFiMGM3ZDMuLmJjZWQxOWIgMTAwNjQ0CitpbmRleCBlYWI0YWU2Li5mNTlhMDFmIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNDc2LDcgKzQ3Niw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCitAQCAtNTE2LDcgKzUxNiw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsIC1scHRocmVhZAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKICBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKICBlbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCmluZGV4IDBkNTMzYzguLjczZWFkNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkN2JlNjg3YzM1ZmE0Mjk1NDg3NDAzNGM4MmNhOTA1OWQyODE5NmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZTVmZmY4YjFkODE5ZTA4NzBmYjIyYjI3OTUwYmI1ZjEwYzdhMjcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgNCBPY3QgMjAxNyAyMjozMDo0NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBsaWJhc20gbWF5IGxpbmsgd2l0aCBsaWJiejIgaWYgZm91bmQKQEAgLTE3LDE2ICsxNywxNiBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDkzMDViODQuLjliN2U4NTMgMTAwNjQ0CitpbmRleCBlYTEyMTViLi4xM2Q5YmRhIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0zOSwxMSArMzksMTEgQEAgRVhUUkFfRElTVCArPSBtYWtlLWRlYnVnLWFyY2hpdmUuaW4KK0BAIC00MCwxMSArNDAsMTEgQEAgRVhUUkFfRElTVCArPSBtYWtlLWRlYnVnLWFyY2hpdmUuaW4KICBDTEVBTkZJTEVTICs9IG1ha2UtZGVidWctYXJjaGl2ZQogIAogIGlmIEJVSUxEX1NUQVRJQwogLWxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQogK2xpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYSAkKHppcF9MSUJTKQotIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgLWxkbCAtbHB0aHJlYWQKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEgLWx6CiAgZWxzZQogLWxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzUxYTJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoCkBAIC0wLDAgKzEsMTI3IEBACitGcm9tIDhjY2YzZDkyYjg3NjZiNTNmMjAzZGY3ZTAxYjQ4OTYwNGVmODUxZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE3OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBtdXNsLW9ic3RhY2stZnRzCisKK0xvb2sgZm9yIGxpYmZ0cyBhbmQgbGlib2JzdGFjayBkdXJpbmcgY29uZmlndXJlLCB0aGVzZQorbGlicmFyaWVzIGFyZSBleHRlcm5hbCB0byBsaWJjIHdoZW4gdXNpbmcgbXVzbCwgd2hlcmVhcworb24gZ2xpYmMgdGhlc2UgbGlicmFyaWVzIGFyZSBwcm92aWRlZCBpbiBsaWJjIGl0c2VsZi4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KKworUmViYXNlIHRvIDAuMTc3CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsaWJkdy9NYWtlZmlsZS5hbSB8ICAyICstCisgc3JjL01ha2VmaWxlLmFtICAgfCAgNiArKystLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNhZDdiMmIuLjZkNDIyOWIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTUyOSw2ICs1MjksNjAgQEAgZWxzZQorIGZpCisgQUNfU1VCU1QoW2FyZ3BfTERBRERdKQorIAorK2RubCBDaGVjayBpZiB3ZSBoYXZlIGZ0cyBhdmFpbGFibGUgZnJvbSBvdXIgbGliYworK0FDX0xJTktfSUZFTFNFKAorKwlbQUNfTEFOR19QUk9HUkFNKAorKwkJWyNpZiAhZGVmaW5lZChfX3g4Nl82NF9fKQorKwkJI3VuZGVmICBfRklMRV9PRkZTRVRfQklUUworKwkJI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAzMgorKwkJI2VuZGlmCisrCQkjaW5jbHVkZSA8ZnRzLmg+XSwKKysJCVtGVFMqIGZ0cyA9IDA7IHJldHVybiBmdHNfY2xvc2UoZnRzKTsgcmV0dXJuIDA7XQorKwkJKV0sCisrCVtsaWJjX2hhc19mdHM9InRydWUiXSwKKysJW2xpYmNfaGFzX2Z0cz0iZmFsc2UiXQorKykKKysKKytkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIGZ0cywgdGhlbiB0ZXN0IGZvciBsaWJmdHMKKytpZiB0ZXN0ICIkbGliY19oYXNfZnRzIiA9ICJmYWxzZSIgOyB0aGVuCisrCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgZnRzIikKKysJQUNfQ0hFQ0tfTElCKFtmdHNdLCBbZnRzX2Nsb3NlXSwgW2hhdmVfZnRzPSJ0cnVlIl0sIFtoYXZlX2Z0cz0iZmFsc2UiXSkKKysKKysJaWYgdGVzdCAiJGhhdmVfZnRzIiA9ICJmYWxzZSI7IHRoZW4KKysJCUFDX01TR19FUlJPUigibm8gbGliZnRzIGZvdW5kIikKKysJZWxzZQorKwkJZnRzX0xEQUREPSItbGZ0cyIKKysJZmkKKytlbHNlCisrCWZ0c19MREFERD0iIgorK2ZpCisrQUNfU1VCU1QoW2Z0c19MREFERF0pCisrCisrZG5sIENoZWNrIGlmIHdlIGhhdmUgb2JzdGFjayBhdmFpbGFibGUgZnJvbSBvdXIgbGliYworK0FDX0xJTktfSUZFTFNFKAorKwlbQUNfTEFOR19QUk9HUkFNKAorKwkJWyNpbmNsdWRlIDxvYnN0YWNrLmg+XSwKKysJCVtfb2JzdGFja19iZWdpbigwLCAwLCAwLCBOVUxMLCBOVUxMKTsgcmV0dXJuIDA7XQorKwkJKV0sCisrCVtsaWJjX2hhc19vYnN0YWNrPSJ0cnVlIl0sCisrCVtsaWJjX2hhc19vYnN0YWNrPSJmYWxzZSJdCisrKQorKworK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgb2JzdGFjaywgdGhlbiB0ZXN0IGZvciBsaWJvYnN0YWNrCisraWYgdGVzdCAiJGxpYmNfaGFzX29ic3RhY2siID0gImZhbHNlIiA7IHRoZW4KKysJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBvYnN0YWNrIikKKysJQUNfQ0hFQ0tfTElCKFtvYnN0YWNrXSwgW19vYnN0YWNrX2JlZ2luXSwgW2hhdmVfb2JzdGFjaz0idHJ1ZSJdLCBbaGF2ZV9vYnN0YWNrPSJmYWxzZSJdKQorKworKwlpZiB0ZXN0ICIkaGF2ZV9vYnN0YWNrIiA9ICJmYWxzZSI7IHRoZW4KKysJCUFDX01TR19FUlJPUigibm8gbGlib2JzdGFjayBmb3VuZCIpCisrCWVsc2UKKysJCW9ic3RhY2tfTERBREQ9Ii1sb2JzdGFjayIKKysJZmkKKytlbHNlCisrCW9ic3RhY2tfTERBREQ9IiIKKytmaQorK0FDX1NVQlNUKFtvYnN0YWNrX0xEQUREXSkKKysKKyBkbmwgVGhlIGRpcmVjdG9yaWVzIHdpdGggY29udGVudC4KKyAKKyBkbmwgRG9jdW1lbnRhdGlvbi4KK2RpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCitpbmRleCAzM2I1ODM4Li5mZjkyZTAyIDEwMDY0NAorLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmR3L01ha2VmaWxlLmFtCitAQCAtMTA5LDcgKzEwOSw3IEBAIGxpYmR3X3NvX0xJQlMgPSAuLi9saWJlYmwvbGliZWJsX3BpYy5hIC4uL2JhY2tlbmRzL2xpYmVibF9iYWNrZW5kc19waWMuYSBcCisgCQkuLi9saWJjcHUvbGliY3B1X3BpYy5hIGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKKyAJCS4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYQorIGxpYmR3X3NvX0RFUFMgPSAuLi9saWIvbGliZXUuYSAuLi9saWJlbGYvbGliZWxmLnNvCistbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpIC1wdGhyZWFkCisrbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoZnRzX0xEQUREKSAkKHppcF9MSUJTKSAtcHRocmVhZAorIGxpYmR3X3NvX1NPVVJDRVMgPQorIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwICQobGliZHdfc29fTElCUykgJChsaWJkd19zb19ERVBTKQorIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZHNvX0xERkxBR1MpIC1vICRAIFwKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDEzZDliZGEuLmQ1YTRmN2QgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTY5LDcgKzY5LDcgQEAgYXJfbm9fV3N0YWNrX3VzYWdlID0geWVzCisgdW5zdHJpcF9ub19Xc3RhY2tfdXNhZ2UgPSB5ZXMKKyAKKyByZWFkZWxmX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCistbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgXAorK25tX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkgXAorIAkgICAkKGRlbWFuZ2xlbGliKQorIHNpemVfTERBREQgPSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorIHN0cmlwX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCitAQCAtNzgsOSArNzgsOSBAQCBmaW5kdGV4dHJlbF9MREFERCA9ICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisgYWRkcjJsaW5lX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChkZW1hbmdsZWxpYikKKyBlbGZjbXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKyBvYmpkdW1wX0xEQUREICA9ICQobGliYXNtKSAkKGxpYmVibCkgJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKy1yYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisrcmFubGliX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKG9ic3RhY2tfTERBREQpCisgc3RyaW5nc19MREFERCA9ICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCistYXJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisrYXJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKKyB1bnN0cmlwX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisgc3RhY2tfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkgJChkZW1hbmdsZWxpYikKKyBlbGZjb21wcmVzc19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1tdXNsLWxpYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLW11c2wtbGlicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjE0NjgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1tdXNsLWxpYnMucGF0Y2gKQEAgLTAsMCArMSwxNDUgQEAKK0Zyb20gZWE5MDhjNzAwOWRlNWEyMDgzODNhYmY0YmVjNGM2YjNkOTUxOWNhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTg6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIG11c2wtbGlicworCitDb2xsZWN0aW9uIG9mIGZpeGVzIG5lZWRlZCB0byBjb21waWxlIGxpYmVsZiBhbmQgb3RoZXIgbGlicmFyaWVzCitwcm92aWRlZCBieSBlbGZ1dGlscyBmb3IgbXVzbCB0YXJnZXRzCisKK2Vycm9yIGlzIGdsaWJjIHNwZWNpZmljIEFQSSwgc28gdGhpcyBwYXRjaCB3aWxsIG1vc3RseSBub3QgYWNjZXB0ZWQKK3Vwc3RyZWFtIGdpdmVuIHRoYXQgZWxmdXRpbHMgaGFzIGJlZW4gY2xvc2VseSB0aWVkIHRvIGdsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCisKK1JlYmFzZSB0byAwLjE3NworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWIvZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsaWIvZml4ZWRzaXplaGFzaC5oICAgICAgICAgICAgfCAgMSAtCisgbGliL2xpYmV1LmggICAgICAgICAgICAgICAgICAgIHwgIDEgKworIGxpYmR3ZmwvZHdmbF9lcnJvci5jICAgICAgICAgICB8ICA5ICsrKysrKysrKworIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyB8ICAxICsKKyBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgfCAgOSArKysrKystLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9lcnJvci5oCisKK2RpZmYgLS1naXQgYS9saWIvZXJyb3IuaCBiL2xpYi9lcnJvci5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWYwNjgyNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL2Vycm9yLmgKK0BAIC0wLDAgKzEsMjcgQEAKKysjaWZuZGVmIF9FUlJPUl9IXworKyNkZWZpbmUgX0VSUk9SX0hfCisrCisrI2luY2x1ZGUgPHN0ZGFyZy5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrCisrc3RhdGljIHVuc2lnbmVkIGludCBlcnJvcl9tZXNzYWdlX2NvdW50ID0gMDsKKysKKytzdGF0aWMgaW5saW5lIHZvaWQgZXJyb3IoaW50IHN0YXR1cywgaW50IGVycm51bSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCisreworKwl2YV9saXN0IGFwOworKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fbmFtZSk7CisrCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOworKwl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXApOworKwl2YV9lbmQoYXApOworKwlpZiAoZXJybnVtKQorKwkJZnByaW50ZihzdGRlcnIsICI6ICVzIiwgc3RyZXJyb3IoZXJybnVtKSk7CisrCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKysJZXJyb3JfbWVzc2FnZV9jb3VudCsrOworKwlpZiAoc3RhdHVzKQorKwkJZXhpdChzdGF0dXMpOworK30KKysKKysjZW5kaWYJLyogX0VSUk9SX0hfICovCitkaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKK2luZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0CistLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCisrKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCitAQCAtMzAsNyArMzAsNiBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorIAorICNpbmNsdWRlIDxzeXN0ZW0uaD4KKyAKK2RpZmYgLS1naXQgYS9saWIvbGliZXUuaCBiL2xpYi9saWJldS5oCitpbmRleCBlY2I0ZDAxLi5lZGM4NWUzIDEwMDY0NAorLS0tIGEvbGliL2xpYmV1LmgKKysrKyBiL2xpYi9saWJldS5oCitAQCAtMjksNiArMjksNyBAQAorICNpZm5kZWYgTElCRVVfSAorICNkZWZpbmUgTElCRVVfSAorIAorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKK2luZGV4IDdiY2Y2MWMuLjExZGNjOGIgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYworKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKK0BAIC0xNTQsNyArMTU0LDE2IEBAIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCisgICBzd2l0Y2ggKGVycm9yICZ+IDB4ZmZmZikKKyAgICAgeworICAgICBjYXNlIE9USEVSX0VSUk9SIChFUlJOTyk6CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOworKyNlbHNlCisrICAgICAgeworKyAgICAgICAgc3RhdGljIF9fdGhyZWFkIGNoYXIgYnVmWzEyOF0gPSAiIjsKKysgICAgICAgIGlmIChzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgYnVmLCBzaXplb2YoYnVmKSkgPT0gMCkKKysgICAgICAgICAgcmV0dXJuIGJ1ZjsKKysgICAgICB9CisrICAgICAgcmV0dXJuICJzdHJlcnJvcl9yKCkgZmFpbGVkIjsKKysjZW5kaWYKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRUxGKToKKyAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOworICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6CitkaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCitpbmRleCBkNDZhYjVhLi4xYzNmYWVlIDEwMDY0NAorLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCisrKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK0BAIC01MCw2ICs1MCw3IEBACisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAKKyAvKiBJZiBmdHMuaCBpcyBpbmNsdWRlZCBiZWZvcmUgY29uZmlnLmgsIGl0cyBpbmRpcmVjdCBpbmNsdXNpb25zIG1heSBub3QKKyAgICBnaXZlIHVzIHRoZSByaWdodCBMRlMgYWxpYXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMsIHNvIG1hcCB0aGVtIG1hbnVhbGx5LiAgKi8KK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKK2luZGV4IGJlZDI3M2QuLmJlMjI4ZTYgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmLmgKKysrKyBiL2xpYmVsZi9lbGYuaAorQEAgLTIxLDcgKzIxLDkgQEAKKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKy1fX0JFR0lOX0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisgCisgLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KKyAKK0BAIC00MDI5LDYgKzQwMzEsNyBAQCBlbnVtCisgI2RlZmluZSBSX05EUzMyX1RMU19UUE9GRgkxMDIKKyAjZGVmaW5lIFJfTkRTMzJfVExTX0RFU0MJMTE5CisgCistX19FTkRfREVDTFMKKy0KKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmCisgI2VuZGlmCS8qIGVsZi5oICovCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLW11c2wtdXRpbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLW11c2wtdXRpbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljOWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtbXVzbC11dGlscy5wYXRjaApAQCAtMCwwICsxLDE2NiBAQAorRnJvbSA5NDAyOGIxNmU1NmM4ZWVmMWFhMDJkY2M0ZGEyNjhhMGU0NzFiNGVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxOTo0OCArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNF0gbXVzbC11dGlscworCitQcm92aWRlIG1pc3NpbmcgZGVmaW5lcyB3aGljaCBvdGhlcndpc2UgYXJlIGF2YWlsYWJsZSBvbiBnbGliYyBzeXN0ZW0gaGVhZGVycworCitBbHRlciB0aGUgZXJyb3IgQVBJIHRvIG1hdGNoIHBvc2l4IHZlcnNpb24KK3VzZSBxc29ydCBpbnN0ZWFkIG9mIHFzb3J0X3Igd2hpY2ggaXMgZ2xpYmMgc3BlY2lmaWMgQVBJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCisKK1JlYmFzZSB0byAwLjE3NworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBzcmMvYXJsaWIuaCAgICAgICB8ICA2ICsrKysrKworIHNyYy9lbGZjb21wcmVzcy5jIHwgIDcgKysrKysrKworIHNyYy9yZWFkZWxmLmMgICAgIHwgMjAgKysrKysrKysrKysrLS0tLS0tLS0KKyBzcmMvc3RyaXAuYyAgICAgICB8ICA3ICsrKysrKysKKyBzcmMvdW5zdHJpcC5jICAgICB8ICA5ICsrKysrKysrKworIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9hcmxpYi5oIGIvc3JjL2FybGliLmgKK2luZGV4IGUxMTcxNjYuLjgzMjZmNmMgMTAwNjQ0CistLS0gYS9zcmMvYXJsaWIuaAorKysrIGIvc3JjL2FybGliLmgKK0BAIC0yOSw2ICsyOSwxMiBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisrI2lmICFkZWZpbmVkKEFMTFBFUk1TKQorKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NzcgKi8KKysjZW5kaWYKKysjaWYgIWRlZmluZWQoREVGRklMRU1PREUpCisrIyBkZWZpbmUgREVGRklMRU1PREUgKFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVdHUlB8U19JUk9USHxTX0lXT1RIKS8qIDA2NjYqLworKyNlbmRpZgorIAorIC8qIFN0YXRlIG9mIC1ELy1VIGZsYWdzLiAgKi8KKyBleHRlcm4gYm9vbCBhcmxpYl9kZXRlcm1pbmlzdGljX291dHB1dDsKK2RpZmYgLS1naXQgYS9zcmMvZWxmY29tcHJlc3MuYyBiL3NyYy9lbGZjb21wcmVzcy5jCitpbmRleCA2YmE2YWY0Li4wYzc2NzRiIDEwMDY0NAorLS0tIGEvc3JjL2VsZmNvbXByZXNzLmMKKysrKyBiL3NyYy9lbGZjb21wcmVzcy5jCitAQCAtMzcsNiArMzcsMTMgQEAKKyAjaW5jbHVkZSAibGliZXUuaCIKKyAjaW5jbHVkZSAicHJpbnR2ZXJzaW9uLmgiCisgCisrI2lmICFkZWZpbmVkKEFMTFBFUk1TKQorKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NzcgKi8KKysjZW5kaWYKKysjaWYgIWRlZmluZWQoRk5NX0VYVE1BVENIKQorKyMgZGVmaW5lIEZOTV9FWFRNQVRDSCAoMCkKKysjZW5kaWYKKysKKyAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLworIEFSR1BfUFJPR1JBTV9WRVJTSU9OX0hPT0tfREVGID0gcHJpbnRfdmVyc2lvbjsKKyAKK2RpZmYgLS1naXQgYS9zcmMvcmVhZGVsZi5jIGIvc3JjL3JlYWRlbGYuYworaW5kZXggNTk5NDYxNS4uZjNjYzA3MSAxMDA2NDQKKy0tLSBhL3NyYy9yZWFkZWxmLmMKKysrKyBiL3NyYy9yZWFkZWxmLmMKK0BAIC00ODI5LDEwICs0ODI5LDExIEBAIGxpc3RwdHJfYmFzZSAoc3RydWN0IGxpc3RwdHIgKnApCisgICByZXR1cm4gY3VkaWVfYmFzZSAoJmN1KTsKKyB9CisgCisrc3RhdGljIGNvbnN0IGNoYXIgKmxpc3RwdHJfbmFtZTsKKysKKyBzdGF0aWMgaW50CistY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCisrY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorIHsKKy0gIGNvbnN0IGNoYXIgKm5hbWUgPSBhcmc7CisgICBzdHJ1Y3QgbGlzdHB0ciAqcDEgPSAodm9pZCAqKSBhOworICAgc3RydWN0IGxpc3RwdHIgKnAyID0gKHZvaWQgKikgYjsKKyAKK0BAIC00ODQ4LDIxICs0ODQ5LDIxIEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQorIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKKyAJICBlcnJvciAoMCwgMCwKKyAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYWRkcmVzcyBzaXplcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworIAl9CisgICAgICAgaWYgKHAxLT5kd2FyZjY0ICE9IHAyLT5kd2FyZjY0KQorIAl7CisgCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOworIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBvZmZzZXQgc2l6ZXMiKSwKKy0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKyAJfQorICAgICAgIGlmIChsaXN0cHRyX2Jhc2UgKHAxKSAhPSBsaXN0cHRyX2Jhc2UgKHAyKSkKKyAJeworIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKKyAJICBlcnJvciAoMCwgMCwKKyAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYmFzZSBhZGRyZXNzZXMiKSwKKy0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKyAJfQorICAgICAgIGlmIChwMS0+YXR0ciAhPSBwMiAtPmF0dHIpCisgCXsKK0BAIC00ODcwLDcgKzQ4NzEsNyBAQCBjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKKyAJICBlcnJvciAoMCwgMCwKKyAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NAorIAkJCSAgIiB1c2VkIHdpdGggZGlmZmVyZW50IGF0dHJpYnV0ZSAlcyBhbmQgJXMiKSwKKy0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAorKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0LCBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSwKKyAJCSBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSk7CisgCX0KKyAgICAgfQorQEAgLTQ5NDIsOCArNDk0MywxMSBAQCBzdGF0aWMgdm9pZAorIHNvcnRfbGlzdHB0ciAoc3RydWN0IGxpc3RwdHJfdGFibGUgKnRhYmxlLCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAgIGlmICh0YWJsZS0+biA+IDApCistICAgIHFzb3J0X3IgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCistCSAgICAgJmNvbXBhcmVfbGlzdHB0ciwgKHZvaWQgKikgbmFtZSk7CisrICAgIHsKKysgICAgICBsaXN0cHRyX25hbWUgPSBuYW1lOworKyAgICAgIHFzb3J0ICh0YWJsZS0+dGFibGUsIHRhYmxlLT5uLCBzaXplb2YgdGFibGUtPnRhYmxlWzBdLAorKwkgICAgJmNvbXBhcmVfbGlzdHB0cik7CisrICAgIH0KKyB9CisgCisgc3RhdGljIGJvb2wKK2RpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCitpbmRleCA0MDU0YzJhLi5kMmQyMTc2IDEwMDY0NAorLS0tIGEvc3JjL3N0cmlwLmMKKysrKyBiL3NyYy9zdHJpcC5jCitAQCAtNDYsNiArNDYsMTMgQEAKKyAjaW5jbHVkZSA8c3lzdGVtLmg+CisgI2luY2x1ZGUgPHByaW50dmVyc2lvbi5oPgorIAorKyNpZiAhZGVmaW5lZChBQ0NFU1NQRVJNUykKKysjIGRlZmluZSBBQ0NFU1NQRVJNUyAoU19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3NzcgKi8KKysjZW5kaWYKKysjaWYgIWRlZmluZWQoRk5NX0VYVE1BVENIKQorKyMgZGVmaW5lIEZOTV9FWFRNQVRDSCAoMCkKKysjZW5kaWYKKysKKyB0eXBlZGVmIHVpbnQ4X3QgR0VsZl9CeXRlOworIAorIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCitkaWZmIC0tZ2l0IGEvc3JjL3Vuc3RyaXAuYyBiL3NyYy91bnN0cmlwLmMKK2luZGV4IDliOGMwOWEuLjFmYjUwNjMgMTAwNjQ0CistLS0gYS9zcmMvdW5zdHJpcC5jCisrKysgYi9zcmMvdW5zdHJpcC5jCitAQCAtNTYsNiArNTYsMTUgQEAKKyAjIGRlZmluZSBfKHN0cikgZ2V0dGV4dCAoc3RyKQorICNlbmRpZgorIAorKyNpZm5kZWYgc3RybmR1cGEKKysjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKKysgICAgICAgKHtjb25zdCBjaGFyICpfX2luID0gKHMpOyBcCisrICAgICAgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbiAoX19pbiwgKG4pKSArIDE7IFwKKysgICAgICAgICBjaGFyICpfX291dCA9IChjaGFyICopIGFsbG9jYSAoX19sZW4pOyBcCisrICAgICAgICAgX19vdXRbX19sZW4tMV0gPSAnXDAnOyBcCisrICAgICAgICAgKGNoYXIgKikgbWVtY3B5IChfX291dCwgX19pbiwgX19sZW4tMSk7fSkKKysjZW5kaWYKKysKKyAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLworIEFSR1BfUFJPR1JBTV9WRVJTSU9OX0hPT0tfREVGID0gcHJpbnRfdmVyc2lvbjsKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LUZpeC1lcnJvci1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMmY5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LUZpeC1lcnJvci1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gN2ZmOGNiZWNkZTc0NTViNTMwZmE3ODk0YTc4ZDIzMjY3OTlmMjU1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxIE1heSAyMDE5IDIyOjE1OjAzICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBGaXggZXJyb3Igb24gbXVzbDoKKworfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Cit8IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6MzcwOjYwOiBlcnJvcjogJ0FMTFBFUk1TJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnRVBFUk0nPworfCAgICAgICAgZmRuZXcgPSBvcGVuIChmbmV3LCBPX1dST05MWSB8IE9fQ1JFQVQsIHN0LnN0X21vZGUgJiBBTExQRVJNUyk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVQRVJNCit8IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6MzcwOjYwOiBub3RlOiBlYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgaW4gbXVzbF0KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKKy0tLQorIHRlc3RzL2VsZnN0cm1lcmdlLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZWxmc3RybWVyZ2UuYyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKK2luZGV4IGJhMGQ2OGQuLjFkMjQ0N2YgMTAwNjQ0CistLS0gYS90ZXN0cy9lbGZzdHJtZXJnZS5jCisrKysgYi90ZXN0cy9lbGZzdHJtZXJnZS5jCitAQCAtMzMsNiArMzMsMTEgQEAKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgImVsZi1rbm93bGVkZ2UuaCIKKyAKKysvKiBmb3IgbXVzbCAqLworKyNpZm5kZWYgQUxMUEVSTVMKKysjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pLyogMDc3NzcgKi8KKysjZW5kaWYKKysKKyAvKiBUaGUgb3JpZ2luYWwgRUxGIGZpbGUuICAqLworIHN0YXRpYyBpbnQgZmQgPSAtMTsKKyBzdGF0aWMgRWxmICplbGYgPSBOVUxMOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTFhMjRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMTEyZDE2NDViYWI3OTIyYzc3OTZmZTMyZGRlYThmYTZlMWJiZGVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTU6MTQ6MjggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGNvbnRyb2wgcGF0aCB3aGVyZSB3ZSBoYXZlIHN0ciBhcyB1bmluaXRpYWxpemVkIHN0cmluZwotCi18Ci0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzoKLUluIGZ1bmN0aW9uICdpMzg2X2Rpc2FzbSc6Ci18Ci0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzozMTA6NToKLWVycm9yOiAnc3RyJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KLVstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgICAgbWVtY3B5IChidWYgKyBidWZjbnQsIF9zdHIsIF9sZW4pOyAgICAgICAgICAgXAotfCAgICAgIF4KLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOjcwOToxNzoKLW5vdGU6ICdzdHInIHdhcyBkZWNsYXJlZCBoZXJlCi18ICAgICAgY29uc3QgY2hhciAqc3RyOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVJlYmFzZSB0byAwLjE3MgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYmNwdS9pMzg2X2Rpc2FzbS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1pbmRleCBhN2UwM2Y5Li44MzdhM2E4IDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKLSsrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1AQCAtODIxLDYgKzgyMSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLSAJCQkgICAgfQotIAkJCSAgRkFMTFRIUk9VR0g7Ci0gCQkJZGVmYXVsdDoKLSsJCQkgIHN0ciA9ICIiOwotIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7Ci0gCQkJfQotIAkJICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgppbmRleCA0NDYwZDU4Li41M2ZhMmY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4ZWZhZDkxMDViMzg5ODViZWEzNzM0MTZhZThmY2FjZjIxZDFkMTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmZmI4MTFlMThkNzA0NmQ1YmJlNTRlZGU1YjFiN2UxNGVhYWMwMTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyMSBBdWcgMjAxOSAxNTo0NDoxOCArMDgwMAogU3ViamVjdDogW1BBVENIXSBocHBhIGJhY2tlbmQKQEAgLTYsMTUgKzYsMTYgQEAKIFJlYmFzZSB0byAwLjE3NwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYmFja2VuZHMvTWFrZWZpbGUuYW0gICAgICB8ICAgNyArLQogIGJhY2tlbmRzL2xpYmVibF9wYXJpc2MuaCAgfCAgIDkgKysKLSBiYWNrZW5kcy9wYXJpc2NfaW5pdC5jICAgIHwgIDczICsrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9wYXJpc2NfcmVncy5jICAgIHwgMTU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgfCAgMTEgKysrCisgYmFja2VuZHMvcGFyaXNjX2luaXQuYyAgICB8ICA3MyArKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JlZ3MuYyAgICB8IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZiB8IDEyOCArKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgfCAyMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMgIHwgMTEzICsrKysrKysrKysrKysrKysrKysrCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICB8ICAxMSArKwogIDggZmlsZXMgY2hhbmdlZCwgNzExIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2NfaW5pdC5jCkBAIC0yNCwzMSArMjUsMzAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jCiAKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9NYWtlZmlsZS5hbSBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1pbmRleCAxNzU0NjhmLi45MWEzOGUyIDEwMDY0NAoraW5kZXggZjQwNTIxMi4uNDc1NWY2MSAxMDA2NDQKIC0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCiArKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTMzLDE2ICszMywxOSBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAotIAorQEAgLTM3LDcgKzM3LDkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKKyBub2luc3RfTElCUkFSSUVTID0gbGliZWJsX2JhY2tlbmRzLmEgbGliZWJsX2JhY2tlbmRzX3BpYy5hCiAgCiAgbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAogLQkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBjc2t5CiArCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IGNza3kgcGFyaXNjCi0gbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAotIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKLSAJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9yaXNjdl9waWMuYSAgICBcCi0tCSAgICAgbGliZWJsX2Nza3lfcGljLmEKLSsJICAgICBsaWJlYmxfY3NreV9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQotIAorKwogK3BhcmlzY19TUkNTID0gcGFyaXNjX2luaXQuYyBwYXJpc2Nfc3ltYm9sLmMgcGFyaXNjX3JlZ3MuYyBwYXJpc2NfcmV0dmFsLmMKLStsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQotK2FtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQogIAotIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KLSBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvCisgaTM4Nl9TUkNTID0gaTM4Nl9pbml0LmMgaTM4Nl9zeW1ib2wuYyBpMzg2X2NvcmVub3RlLmMgaTM4Nl9jZmkuYyBcCisgCSAgICBpMzg2X3JldHZhbC5jIGkzODZfcmVncy5jIGkzODZfYXV4di5jIGkzODZfc3lzY2FsbC5jIFwKK0BAIC0xMDIsNyArMTA0LDggQEAgbGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUyA9ICQoaTM4Nl9TUkNTKSAkKHNoX1NSQ1MpICQoeDg2XzY0X1NSQ1MpIFwKKyAJCQkgICAgJChpYTY0X1NSQ1MpICQoYWxwaGFfU1JDUykgJChhcm1fU1JDUykgXAorIAkJCSAgICAkKGFhcmNoNjRfU1JDUykgJChzcGFyY19TUkNTKSAkKHBwY19TUkNTKSBcCisgCQkJICAgICQocHBjNjRfU1JDUykgJChzMzkwX1NSQ1MpICQodGlsZWd4X1NSQ1MpIFwKKy0JCQkgICAgJChtNjhrX1NSQ1MpICQoYnBmX1NSQ1MpICQocmlzY3ZfU1JDUykgJChjc2t5X1NSQ1MpCisrCQkJICAgICQobTY4a19TUkNTKSAkKGJwZl9TUkNTKSAkKHJpc2N2X1NSQ1MpICQoY3NreV9TUkNTKSBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocGFyaXNjX1NSQ1MpCisgCisgbGliZWJsX2JhY2tlbmRzX3BpY19hX1NPVVJDRVMgPQorIGFtX2xpYmVibF9iYWNrZW5kc19waWNfYV9PQkpFQ1RTID0gJChsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTOi5jPS5vcykKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmggYi9iYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5mNDczYjc5CkBAIC04MjYsNiArODI2LDMgQEAKICAjZGVmaW5lIFJfUEFSSVNDX1NFR1JFTDY0CTExMgkvKiA2NCBiaXRzIHNlZ21lbnQgcmVsLiBhZGRyZXNzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0V1IJMTE1CS8qIFBMVC1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTREUgkxMTYJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgppbmRleCAxMDk3YjBlLi43NDlmYWE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2OGI0OTc2NjhjZGU1MTcxODgwZDA3M2E3ZWE1MGQxMWMzYmRkYmZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZTBiMDM2ZDA4N2RmZmY3ZjVlMzA2ZjUyZmM3ODc0NWY5OTQ1NGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyMSBBdWcgMjAxOSAxNTo0OTo1MiArMDgwMAogU3ViamVjdDogW1BBVENIXSBtaXBzIGJhY2tlbmQKQEAgLTcsMTUgKzcsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gYmFja2VuZHMvTWFrZWZpbGUuYW0gICAgfCAgIDggKy0KLSBiYWNrZW5kcy9taXBzX2luaXQuYyAgICB8ICA1OSArKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JlZ3MuYyAgICB8IDEwNCArKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgfCAgNzkgKysrKysrKysrKysrCi0gYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgfCAzMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvbWlwc19zeW1ib2wuYyAgfCAgNTMgKysrKysrKysKLSBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyB8ICAgMiArCi0gNyBmaWxlcyBjaGFuZ2VkLCA2MjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICB8ICAgNiArLQorIGJhY2tlbmRzL21pcHNfaW5pdC5jICAgIHwgIDU5ICsrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JldHZhbC5jICB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19zeW1ib2wuYyAgfCAgNTMgKysrKysrKworIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jIHwgICAzICsKKyA3IGZpbGVzIGNoYW5nZWQsIDYyMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX2luaXQuYwogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlZ3MuYwogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZgpAQCAtMjMsMzYgKzI0LDM0IEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfc3ltYm9sLmMKIAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLWluZGV4IDkxYTM4ZTIuLmFiYThhNGEgMTAwNjQ0CitpbmRleCA0NzU1ZjYxLi4wN2Q0NWQ3IDEwMDY0NAogLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KICsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMzMsMTMgKzMzLDEzIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCi0gCitAQCAtMzcsNyArMzcsNyBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJlYmxfYmFja2VuZHMuYSBsaWJlYmxfYmFja2VuZHNfcGljLmEKICAKICBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCiAtCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IGNza3kgcGFyaXNjCiArCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IGNza3kgcGFyaXNjIG1pcHMKLSBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCi0gCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAotIAkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hICAgIFwKLS0JICAgICBsaWJlYmxfY3NreV9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0rCSAgICAgbGliZWJsX2Nza3lfcGljLmEgbGliZWJsX3BhcmlzY19waWMuYSBsaWJlYmxfbWlwc19waWMuYQotIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCi0gbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKICAKLUBAIC0xNDUsNiArMTQ1LDEwIEBAIGNza3lfU1JDUyA9IGNza3lfYXR0cnMuYyBjc2t5X2luaXQuYyBjc2t5X3N5bWJvbC5jIGNza3lfY2ZpLmMgXAotIGxpYmVibF9jc2t5X3BpY19hX1NPVVJDRVMgPSAkKGNza3lfU1JDUykKLSBhbV9saWJlYmxfY3NreV9waWNfYV9PQkpFQ1RTID0gJChjc2t5X1NSQ1M6LmM9Lm9zKQorIHBhcmlzY19TUkNTID0gcGFyaXNjX2luaXQuYyBwYXJpc2Nfc3ltYm9sLmMgcGFyaXNjX3JlZ3MuYyBwYXJpc2NfcmV0dmFsLmMKKyAKK0BAIC0xMDAsMTIgKzEwMCwxNCBAQCByaXNjdl9TUkNTID0gcmlzY3ZfaW5pdC5jIHJpc2N2X3N5bWJvbC5jIHJpc2N2X2NmaS5jIHJpc2N2X3JlZ3MuYyBcCisgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCisgCSAgICBjc2t5X3JlZ3MuYyBjc2t5X2luaXRyZWcuYyBjc2t5X2NvcmVub3RlLmMKICAKICttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKLStsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCi0rYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKICsKLSBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQotIAlAcm0gLWYgJChAOi5zbz0ubWFwKQotIAkkKEFNX1ZfYXQpZWNobyAnRUxGVVRJTFNfJChQQUNLQUdFX1ZFUlNJT04pIHsgZ2xvYmFsOiAkKl9pbml0OyBsb2NhbDogKjsgfTsnIFwKKyBsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTID0gJChpMzg2X1NSQ1MpICQoc2hfU1JDUykgJCh4ODZfNjRfU1JDUykgXAorIAkJCSAgICAkKGlhNjRfU1JDUykgJChhbHBoYV9TUkNTKSAkKGFybV9TUkNTKSBcCisgCQkJICAgICQoYWFyY2g2NF9TUkNTKSAkKHNwYXJjX1NSQ1MpICQocHBjX1NSQ1MpIFwKKyAJCQkgICAgJChwcGM2NF9TUkNTKSAkKHMzOTBfU1JDUykgJCh0aWxlZ3hfU1JDUykgXAorIAkJCSAgICAkKG02OGtfU1JDUykgJChicGZfU1JDUykgJChyaXNjdl9TUkNTKSAkKGNza3lfU1JDUykgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHBhcmlzY19TUkNTKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHBhcmlzY19TUkNTKSAkKG1pcHNfU1JDUykKKyAKKyBsaWJlYmxfYmFja2VuZHNfcGljX2FfU09VUkNFUyA9CisgYW1fbGliZWJsX2JhY2tlbmRzX3BpY19hX09CSkVDVFMgPSAkKGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVM6LmM9Lm9zKQogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfaW5pdC5jIGIvYmFja2VuZHMvbWlwc19pbml0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi45NzVjMDRlCkBAIC03MDAsMTggKzY5OSwyNiBAQAogKyAgICB9CiArfQogZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLWluZGV4IDAxNzExZjUuLmQwYzM1ODkgMTAwNjQ0CitpbmRleCAyMTBiNDdlLi4xZmVhYzEzIDEwMDY0NAogLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKICsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtNzEsNiArNzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0Ci0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKLSAgIHsgInMzOTAiLCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAorQEAgLTU3LDYgKzU3LDcgQEAgY29uc3QgY2hhciAqbTY4a19pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKyBjb25zdCBjaGFyICpicGZfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CisgY29uc3QgY2hhciAqcmlzY3ZfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CisgY29uc3QgY2hhciAqY3NreV9pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKytjb25zdCBjaGFyICptaXBzX2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOwogIAotICAgeyAibTMyIiwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCi0gICB7ICJtNjhrIiwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCisgLyogVGhpcyB0YWJsZSBzaG91bGQgY29udGFpbiB0aGUgY29tcGxldGUgbGlzdCBvZiBhcmNoaXRlY3R1cmVzIGFzIGZhcgorICAgIGFzIHRoZSBFTEYgc3BlY2lmaWNhdGlvbiBpcyBjb25jZXJuZWQuICAqLworQEAgLTg3LDYgKzg4LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdAorICAgeyBzcGFyY19pbml0LCAiZWxmX3NwYXJjIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMsIDAsIDAgfSwKKyAgIHsgc3BhcmNfaW5pdCwgImVsZl9zcGFyY3Y4cGx1cyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDMzJQTFVTLCAwLCAwIH0sCisgICB7IHMzOTBfaW5pdCwgImVibF9zMzkwIiwgInMzOTAiLCA0LCBFTV9TMzkwLCAwLCAwIH0sCisrICB7IG1pcHNfaW5pdCwgImVsZl9taXBzIiwgIm1pcHMiLCA0LCBFTV9NSVBTLCAwLCAwIH0sCisrICB7IG1pcHNfaW5pdCwgImVsZl9taXBzZWwiLCAibWlwc2VsIiwgNCwgRU1fTUlQU19SUzNfTEUsIDAsIDAgfSwKKyAKKyAgIHsgTlVMTCwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCisgICB7IG02OGtfaW5pdCwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCiAtLSAKLTIuNy40CisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfY2ZpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfY2ZpLnBhdGNoCmluZGV4IGZkYTRmNjguLmRkOGY4OGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2NmaS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2gKQEAgLTEsMzMgKzEsMzQgQEAKLUZyb20gOTZlMzgyODlmMjg4N2RkYjhlNmQyZmI5MWVhMDRiZGJkZjAzNGFiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWJmNjExN2E2ZWFmOTAwN2NlODBhZGJiOGI2NmE5NWNhOTgwNDdhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTc6MDA6MzAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIG1pcHNfY2ZpCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHNfY2ZpCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCiAKIFJlYmFzZSB0byAwLjE3NwogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGJhY2tlbmRzL01ha2VmaWxlLmFtIHwgIDIgKy0KLSBiYWNrZW5kcy9taXBzX2NmaS5jICB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX2NmaS5jICB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgYmFja2VuZHMvbWlwc19pbml0LmMgfCAgMSArCiAgMyBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfY2ZpLmMKIAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLWluZGV4IGFiYThhNGEuLjZhYzBlZWMgMTAwNjQ0CitpbmRleCAwN2Q0NWQ3Li5kZWMzMDgwIDEwMDY0NAogLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KICsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMTQ1LDcgKzE0NSw3IEBAIGNza3lfU1JDUyA9IGNza3lfYXR0cnMuYyBjc2t5X2luaXQuYyBjc2t5X3N5bWJvbC5jIGNza3lfY2ZpLmMgXAotIGxpYmVibF9jc2t5X3BpY19hX1NPVVJDRVMgPSAkKGNza3lfU1JDUykKLSBhbV9saWJlYmxfY3NreV9waWNfYV9PQkpFQ1RTID0gJChjc2t5X1NSQ1M6LmM9Lm9zKQorQEAgLTEwMCw3ICsxMDAsNyBAQCByaXNjdl9TUkNTID0gcmlzY3ZfaW5pdC5jIHJpc2N2X3N5bWJvbC5jIHJpc2N2X2NmaS5jIHJpc2N2X3JlZ3MuYyBcCisgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCisgCSAgICBjc2t5X3JlZ3MuYyBjc2t5X2luaXRyZWcuYyBjc2t5X2NvcmVub3RlLmMKICAKIC1taXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKICttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMgbWlwc19jZmkuYwotIGxpYmVibF9taXBzX3BpY19hX1NPVVJDRVMgPSAkKG1pcHNfU1JDUykKLSBhbV9saWJlYmxfbWlwc19waWNfYV9PQkpFQ1RTID0gJChtaXBzX1NSQ1M6LmM9Lm9zKQogIAorIGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVMgPSAkKGkzODZfU1JDUykgJChzaF9TUkNTKSAkKHg4Nl82NF9TUkNTKSBcCisgCQkJICAgICQoaWE2NF9TUkNTKSAkKGFscGhhX1NSQ1MpICQoYXJtX1NSQ1MpIFwKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2NmaS5jIGIvYmFja2VuZHMvbWlwc19jZmkuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjlmZmRhYjUKQEAgLTEyNiw2ICsxMjcsMyBAQAogIAogICAgcmV0dXJuIE1PRFZFUlNJT047CiAgfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLWxpYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLWxpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YjlmMTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1saWJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLUZyb20gZDVhMTY1MWRmOTg4NGZjZjU3ZWQzMjBiYzJmODY2NTM4YWYyZjQyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTg6NDcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIG11c2wtbGlicwotCi1Db2xsZWN0aW9uIG9mIGZpeGVzIG5lZWRlZCB0byBjb21waWxlIGxpYmVsZiBhbmQgb3RoZXIgbGlicmFyaWVzCi1wcm92aWRlZCBieSBlbGZ1dGlscyBmb3IgbXVzbCB0YXJnZXRzCi0KLWVycm9yIGlzIGdsaWJjIHNwZWNpZmljIEFQSSwgc28gdGhpcyBwYXRjaCB3aWxsIG1vc3RseSBub3QgYWNjZXB0ZWQKLXVwc3RyZWFtIGdpdmVuIHRoYXQgZWxmdXRpbHMgaGFzIGJlZW4gY2xvc2VseSB0aWVkIHRvIGdsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCi0KLVJlYmFzZSB0byAwLjE3NwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2Vycm9yLmggICAgICAgICAgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgIHwgIDEgLQotIGxpYi9saWJldS5oICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgfCAgOSArKysrKysrKysKLSBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgfCAgMSArCi0gbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZXJyb3IuaAotCi1kaWZmIC0tZ2l0IGEvbGliL2Vycm9yLmggYi9saWIvZXJyb3IuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmVmMDY4MjcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYi9lcnJvci5oCi1AQCAtMCwwICsxLDI3IEBACi0rI2lmbmRlZiBfRVJST1JfSF8KLSsjZGVmaW5lIF9FUlJPUl9IXwotKwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKwotK3N0YXRpYyB1bnNpZ25lZCBpbnQgZXJyb3JfbWVzc2FnZV9jb3VudCA9IDA7Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIGVycm9yKGludCBzdGF0dXMsIGludCBlcnJudW0sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotK3sKLSsJdmFfbGlzdCBhcDsKLSsJZnByaW50ZihzdGRlcnIsICIlczogIiwgcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUpOwotKwl2YV9zdGFydChhcCwgZm9ybWF0KTsKLSsJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFwKTsKLSsJdmFfZW5kKGFwKTsKLSsJaWYgKGVycm51bSkKLSsJCWZwcmludGYoc3RkZXJyLCAiOiAlcyIsIHN0cmVycm9yKGVycm51bSkpOwotKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0rCWVycm9yX21lc3NhZ2VfY291bnQrKzsKLSsJaWYgKHN0YXR1cykKLSsJCWV4aXQoc3RhdHVzKTsKLSt9Ci0rCi0rI2VuZGlmCS8qIF9FUlJPUl9IXyAqLwotZGlmZiAtLWdpdCBhL2xpYi9maXhlZHNpemVoYXNoLmggYi9saWIvZml4ZWRzaXplaGFzaC5oCi1pbmRleCBkYWMyYTVmLi40MzAxNmZjIDEwMDY0NAotLS0tIGEvbGliL2ZpeGVkc2l6ZWhhc2guaAotKysrIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAotQEAgLTMwLDcgKzMwLDYgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAKLSAjaW5jbHVkZSA8c3lzdGVtLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvbGliL2xpYmV1LmggYi9saWIvbGliZXUuaAotaW5kZXggZWNiNGQwMS4uZWRjODVlMyAxMDA2NDQKLS0tLSBhL2xpYi9saWJldS5oCi0rKysgYi9saWIvbGliZXUuaAotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaWZuZGVmIExJQkVVX0gKLSAjZGVmaW5lIExJQkVVX0gKLSAKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1pbmRleCA3YmNmNjFjLi4xMWRjYzhiIDEwMDY0NAotLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLSsrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1AQCAtMTU0LDcgKzE1NCwxNiBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQotICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCi0gICAgIHsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgICAgICByZXR1cm4gc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsICJiYWQiLCAwKTsKLSsjZWxzZQotKyAgICAgIHsKLSsgICAgICAgIHN0YXRpYyBfX3RocmVhZCBjaGFyIGJ1ZlsxMjhdID0gIiI7Ci0rICAgICAgICBpZiAoc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsIGJ1Ziwgc2l6ZW9mKGJ1ZikpID09IDApCi0rICAgICAgICAgIHJldHVybiBidWY7Ci0rICAgICAgfQotKyAgICAgIHJldHVybiAic3RyZXJyb3JfcigpIGZhaWxlZCI7Ci0rI2VuZGlmCi0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkVMRik6Ci0gICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotaW5kZXggZDQ2YWI1YS4uMWMzZmFlZSAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotKysrIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1AQCAtNTAsNiArNTAsNyBAQAotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0gCi0gLyogSWYgZnRzLmggaXMgaW5jbHVkZWQgYmVmb3JlIGNvbmZpZy5oLCBpdHMgaW5kaXJlY3QgaW5jbHVzaW9ucyBtYXkgbm90Ci0gICAgZ2l2ZSB1cyB0aGUgcmlnaHQgTEZTIGFsaWFzZXMgb2YgdGhlc2UgZnVuY3Rpb25zLCBzbyBtYXAgdGhlbSBtYW51YWxseS4gICovCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCi1pbmRleCBiZWQyNzNkLi5iZTIyOGU2IDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZi5oCi0rKysgYi9saWJlbGYvZWxmLmgKLUBAIC0yMSw3ICsyMSw5IEBACi0gCi0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIAotIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCi0gCi1AQCAtNDAyOSw2ICs0MDMxLDcgQEAgZW51bQotICNkZWZpbmUgUl9ORFMzMl9UTFNfVFBPRkYJMTAyCi0gI2RlZmluZSBSX05EUzMyX1RMU19ERVNDCTExOQotIAotLV9fRU5EX0RFQ0xTCi0tCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZgkvKiBlbGYuaCAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLW9ic3RhY2stZnRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBmMmI2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLW9ic3RhY2stZnRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLUZyb20gNzdiODlkYmM5ZjlmOTY1YWQwZWYyZTM0MWQ3ZDQ2YmNlNWYwNzU0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTc6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIG11c2wtb2JzdGFjay1mdHMKLQotTG9vayBmb3IgbGliZnRzIGFuZCBsaWJvYnN0YWNrIGR1cmluZyBjb25maWd1cmUsIHRoZXNlCi1saWJyYXJpZXMgYXJlIGV4dGVybmFsIHRvIGxpYmMgd2hlbiB1c2luZyBtdXNsLCB3aGVyZWFzCi1vbiBnbGliYyB0aGVzZSBsaWJyYXJpZXMgYXJlIHByb3ZpZGVkIGluIGxpYmMgaXRzZWxmLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQotCi1SZWJhc2UgdG8gMC4xNzcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliZHcvTWFrZWZpbGUuYW0gfCAgMiArLQotIHNyYy9NYWtlZmlsZS5hbSAgIHwgIDggKysrKy0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGY5Mzk2NGMuLmI4N2I3NjIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQ5NCw2ICs0OTQsNjAgQEAgZWxzZQotIGZpCi0gQUNfU1VCU1QoW2FyZ3BfTERBRERdKQotIAotK2RubCBDaGVjayBpZiB3ZSBoYXZlIGZ0cyBhdmFpbGFibGUgZnJvbSBvdXIgbGliYwotK0FDX0xJTktfSUZFTFNFKAotKwlbQUNfTEFOR19QUk9HUkFNKAotKwkJWyNpZiAhZGVmaW5lZChfX3g4Nl82NF9fKQotKwkJI3VuZGVmICBfRklMRV9PRkZTRVRfQklUUwotKwkJI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyAzMgotKwkJI2VuZGlmCi0rCQkjaW5jbHVkZSA8ZnRzLmg+XSwKLSsJCVtGVFMqIGZ0cyA9IDA7IHJldHVybiBmdHNfY2xvc2UoZnRzKTsgcmV0dXJuIDA7XQotKwkJKV0sCi0rCVtsaWJjX2hhc19mdHM9InRydWUiXSwKLSsJW2xpYmNfaGFzX2Z0cz0iZmFsc2UiXQotKykKLSsKLStkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIGZ0cywgdGhlbiB0ZXN0IGZvciBsaWJmdHMKLStpZiB0ZXN0ICIkbGliY19oYXNfZnRzIiA9ICJmYWxzZSIgOyB0aGVuCi0rCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgZnRzIikKLSsJQUNfQ0hFQ0tfTElCKFtmdHNdLCBbZnRzX2Nsb3NlXSwgW2hhdmVfZnRzPSJ0cnVlIl0sIFtoYXZlX2Z0cz0iZmFsc2UiXSkKLSsKLSsJaWYgdGVzdCAiJGhhdmVfZnRzIiA9ICJmYWxzZSI7IHRoZW4KLSsJCUFDX01TR19FUlJPUigibm8gbGliZnRzIGZvdW5kIikKLSsJZWxzZQotKwkJZnRzX0xEQUREPSItbGZ0cyIKLSsJZmkKLStlbHNlCi0rCWZ0c19MREFERD0iIgotK2ZpCi0rQUNfU1VCU1QoW2Z0c19MREFERF0pCi0rCi0rZG5sIENoZWNrIGlmIHdlIGhhdmUgb2JzdGFjayBhdmFpbGFibGUgZnJvbSBvdXIgbGliYwotK0FDX0xJTktfSUZFTFNFKAotKwlbQUNfTEFOR19QUk9HUkFNKAotKwkJWyNpbmNsdWRlIDxvYnN0YWNrLmg+XSwKLSsJCVtfb2JzdGFja19iZWdpbigwLCAwLCAwLCBOVUxMLCBOVUxMKTsgcmV0dXJuIDA7XQotKwkJKV0sCi0rCVtsaWJjX2hhc19vYnN0YWNrPSJ0cnVlIl0sCi0rCVtsaWJjX2hhc19vYnN0YWNrPSJmYWxzZSJdCi0rKQotKwotK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgb2JzdGFjaywgdGhlbiB0ZXN0IGZvciBsaWJvYnN0YWNrCi0raWYgdGVzdCAiJGxpYmNfaGFzX29ic3RhY2siID0gImZhbHNlIiA7IHRoZW4KLSsJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBvYnN0YWNrIikKLSsJQUNfQ0hFQ0tfTElCKFtvYnN0YWNrXSwgW19vYnN0YWNrX2JlZ2luXSwgW2hhdmVfb2JzdGFjaz0idHJ1ZSJdLCBbaGF2ZV9vYnN0YWNrPSJmYWxzZSJdKQotKwotKwlpZiB0ZXN0ICIkaGF2ZV9vYnN0YWNrIiA9ICJmYWxzZSI7IHRoZW4KLSsJCUFDX01TR19FUlJPUigibm8gbGlib2JzdGFjayBmb3VuZCIpCi0rCWVsc2UKLSsJCW9ic3RhY2tfTERBREQ9Ii1sb2JzdGFjayIKLSsJZmkKLStlbHNlCi0rCW9ic3RhY2tfTERBREQ9IiIKLStmaQotK0FDX1NVQlNUKFtvYnN0YWNrX0xEQUREXSkKLSsKLSBkbmwgVGhlIGRpcmVjdG9yaWVzIHdpdGggY29udGVudC4KLSAKLSBkbmwgRG9jdW1lbnRhdGlvbi4KLWRpZmYgLS1naXQgYS9saWJkdy9NYWtlZmlsZS5hbSBiL2xpYmR3L01ha2VmaWxlLmFtCi1pbmRleCA3YTNkNTMyLi5hNTQxZmEzIDEwMDY0NAotLS0tIGEvbGliZHcvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmR3L01ha2VmaWxlLmFtCi1AQCAtMTA4LDcgKzEwOCw3IEBAIGFtX2xpYmR3X3BpY19hX09CSkVDVFMgPSAkKGxpYmR3X2FfU09VUkNFUzouYz0ub3MpCi0gbGliZHdfc29fTElCUyA9IGxpYmR3X3BpYy5hIC4uL2xpYmR3ZWxmL2xpYmR3ZWxmX3BpYy5hIFwKLSAJICAuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEgLi4vbGliZWJsL2xpYmVibC5hCi0gbGliZHdfc29fREVQUyA9IC4uL2xpYi9saWJldS5hIC4uL2xpYmVsZi9saWJlbGYuc28KLS1saWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykKLStsaWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJChmdHNfTERBREQpICQoemlwX0xJQlMpCi0gbGliZHdfc29fU09VUkNFUyA9Ci0gbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgJChsaWJkd19zb19MSUJTKSAkKGxpYmR3X3NvX0RFUFMpCi0gIyBUaGUgcnBhdGggaXMgbmVjZXNzYXJ5IGZvciBsaWJlYmwgYmVjYXVzZSBpdHMgJE9SSUdJTiB1c2Ugd2lsbAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggYjcyZjg1My4uMmYzZGZjZSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNjksOCArNjksOCBAQCBhcl9ub19Xc3RhY2tfdXNhZ2UgPSB5ZXMKLSB1bnN0cmlwX25vX1dzdGFja191c2FnZSA9IHllcwotIAotIHJlYWRlbGZfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotLW5tX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwgXAotLQkgICAkKGRlbWFuZ2xlbGliKQotK25tX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIFwKLSsJICAgJChvYnN0YWNrX0xEQUREKSAtbGRsICQoZGVtYW5nbGVsaWIpCi0gc2l6ZV9MREFERCA9ICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0gc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotIGVsZmxpbnRfTERBREQgID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLUBAIC03OCw5ICs3OCw5IEBAIGZpbmR0ZXh0cmVsX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLSBhZGRyMmxpbmVfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKGRlbWFuZ2xlbGliKQotIGVsZmNtcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0gb2JqZHVtcF9MREFERCAgPSAkKGxpYmFzbSkgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLS1yYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0rcmFubGliX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKG9ic3RhY2tfTERBREQpCi0gc3RyaW5nc19MREFERCA9ICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0tYXJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0rYXJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKLSB1bnN0cmlwX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLSBzdGFja19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsICQoZGVtYW5nbGVsaWIpCi0gZWxmY29tcHJlc3NfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMzU3OTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZpeCBlcnJvciBvbiBtdXNsOgotCi18IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLXwgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IGVycm9yOiAnQUxMUEVSTVMnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdFUEVSTSc/Ci18ICAgICAgICBmZG5ldyA9IG9wZW4gKGZuZXcsIE9fV1JPTkxZIHwgT19DUkVBVCwgc3Quc3RfbW9kZSAmIEFMTFBFUk1TKTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBFUk0KLXwgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBpbiBtdXNsXQotCi1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotSW5kZXg6IGVsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE3Ni5vcmlnL3Rlc3RzL2VsZnN0cm1lcmdlLmMKLSsrKyBlbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jCi1AQCAtMzMsNiArMzMsMTEgQEAKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgImVsZi1rbm93bGVkZ2UuaCIKLSAKLSsvKiBmb3IgbXVzbCAqLwotKyNpZm5kZWYgQUxMUEVSTVMKLSsjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pLyogMDc3NzcgKi8KLSsjZW5kaWYKLSsKLSAvKiBUaGUgb3JpZ2luYWwgRUxGIGZpbGUuICAqLwotIHN0YXRpYyBpbnQgZmQgPSAtMTsKLSBzdGF0aWMgRWxmICplbGYgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC11dGlscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdXRpbHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4YWQ5MzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC11dGlscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1Gcm9tIDdmNWUyZmQ4NmQ1NGUwYTRkMTk1ZWM2NWFmYjliNDExODI5ZGZmOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE5OjQ4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdXNsLXV0aWxzCi0KLVByb3ZpZGUgbWlzc2luZyBkZWZpbmVzIHdoaWNoIG90aGVyd2lzZSBhcmUgYXZhaWxhYmxlIG9uIGdsaWJjIHN5c3RlbSBoZWFkZXJzCi0KLUFsdGVyIHRoZSBlcnJvciBBUEkgdG8gbWF0Y2ggcG9zaXggdmVyc2lvbgotdXNlIHFzb3J0IGluc3RlYWQgb2YgcXNvcnRfciB3aGljaCBpcyBnbGliYyBzcGVjaWZpYyBBUEkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KLQotUmViYXNlIHRvIDAuMTc3Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYXJsaWIuaCAgICAgICB8ICA2ICsrKysrKwotIHNyYy9lbGZjb21wcmVzcy5jIHwgIDcgKysrKysrKwotIHNyYy9yZWFkZWxmLmMgICAgIHwgMjAgKysrKysrKysrKysrLS0tLS0tLS0KLSBzcmMvc3RyaXAuYyAgICAgICB8ICA3ICsrKysrKysKLSBzcmMvdW5zdHJpcC5jICAgICB8ICA5ICsrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hcmxpYi5oIGIvc3JjL2FybGliLmgKLWluZGV4IGUxMTcxNjYuLjgzMjZmNmMgMTAwNjQ0Ci0tLS0gYS9zcmMvYXJsaWIuaAotKysrIGIvc3JjL2FybGliLmgKLUBAIC0yOSw2ICsyOSwxMiBAQAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0rI2lmICFkZWZpbmVkKEFMTFBFUk1TKQotKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NzcgKi8KLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoREVGRklMRU1PREUpCi0rIyBkZWZpbmUgREVGRklMRU1PREUgKFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVdHUlB8U19JUk9USHxTX0lXT1RIKS8qIDA2NjYqLwotKyNlbmRpZgotIAotIC8qIFN0YXRlIG9mIC1ELy1VIGZsYWdzLiAgKi8KLSBleHRlcm4gYm9vbCBhcmxpYl9kZXRlcm1pbmlzdGljX291dHB1dDsKLWRpZmYgLS1naXQgYS9zcmMvZWxmY29tcHJlc3MuYyBiL3NyYy9lbGZjb21wcmVzcy5jCi1pbmRleCA2YmE2YWY0Li4wYzc2NzRiIDEwMDY0NAotLS0tIGEvc3JjL2VsZmNvbXByZXNzLmMKLSsrKyBiL3NyYy9lbGZjb21wcmVzcy5jCi1AQCAtMzcsNiArMzcsMTMgQEAKLSAjaW5jbHVkZSAibGliZXUuaCIKLSAjaW5jbHVkZSAicHJpbnR2ZXJzaW9uLmgiCi0gCi0rI2lmICFkZWZpbmVkKEFMTFBFUk1TKQotKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NzcgKi8KLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoRk5NX0VYVE1BVENIKQotKyMgZGVmaW5lIEZOTV9FWFRNQVRDSCAoMCkKLSsjZW5kaWYKLSsKLSAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLwotIEFSR1BfUFJPR1JBTV9WRVJTSU9OX0hPT0tfREVGID0gcHJpbnRfdmVyc2lvbjsKLSAKLWRpZmYgLS1naXQgYS9zcmMvcmVhZGVsZi5jIGIvc3JjL3JlYWRlbGYuYwotaW5kZXggNWMwMmE5Yi4uODE3NTYyZCAxMDA2NDQKLS0tLSBhL3NyYy9yZWFkZWxmLmMKLSsrKyBiL3NyYy9yZWFkZWxmLmMKLUBAIC00ODEzLDEwICs0ODEzLDExIEBAIGxpc3RwdHJfYmFzZSAoc3RydWN0IGxpc3RwdHIgKnApCi0gICByZXR1cm4gY3VkaWVfYmFzZSAoJmN1KTsKLSB9Ci0gCi0rc3RhdGljIGNvbnN0IGNoYXIgKmxpc3RwdHJfbmFtZTsKLSsKLSBzdGF0aWMgaW50Ci0tY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCi0rY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQotIHsKLS0gIGNvbnN0IGNoYXIgKm5hbWUgPSBhcmc7Ci0gICBzdHJ1Y3QgbGlzdHB0ciAqcDEgPSAodm9pZCAqKSBhOwotICAgc3RydWN0IGxpc3RwdHIgKnAyID0gKHZvaWQgKikgYjsKLSAKLUBAIC00ODMyLDIxICs0ODMzLDIxIEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQotIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKLSAJICBlcnJvciAoMCwgMCwKLSAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYWRkcmVzcyBzaXplcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotIAl9Ci0gICAgICAgaWYgKHAxLT5kd2FyZjY0ICE9IHAyLT5kd2FyZjY0KQotIAl7Ci0gCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOwotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBvZmZzZXQgc2l6ZXMiKSwKLS0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSAJfQotICAgICAgIGlmIChsaXN0cHRyX2Jhc2UgKHAxKSAhPSBsaXN0cHRyX2Jhc2UgKHAyKSkKLSAJewotIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKLSAJICBlcnJvciAoMCwgMCwKLSAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYmFzZSBhZGRyZXNzZXMiKSwKLS0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSAJfQotICAgICAgIGlmIChwMS0+YXR0ciAhPSBwMiAtPmF0dHIpCi0gCXsKLUBAIC00ODU0LDcgKzQ4NTUsNyBAQCBjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKLSAJICBlcnJvciAoMCwgMCwKLSAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NAotIAkJCSAgIiB1c2VkIHdpdGggZGlmZmVyZW50IGF0dHJpYnV0ZSAlcyBhbmQgJXMiKSwKLS0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAotKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0LCBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSwKLSAJCSBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSk7Ci0gCX0KLSAgICAgfQotQEAgLTQ5MjYsOCArNDkyNywxMSBAQCBzdGF0aWMgdm9pZAotIHNvcnRfbGlzdHB0ciAoc3RydWN0IGxpc3RwdHJfdGFibGUgKnRhYmxlLCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAgIGlmICh0YWJsZS0+biA+IDApCi0tICAgIHFzb3J0X3IgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCi0tCSAgICAgJmNvbXBhcmVfbGlzdHB0ciwgKHZvaWQgKikgbmFtZSk7Ci0rICAgIHsKLSsgICAgICBsaXN0cHRyX25hbWUgPSBuYW1lOwotKyAgICAgIHFzb3J0ICh0YWJsZS0+dGFibGUsIHRhYmxlLT5uLCBzaXplb2YgdGFibGUtPnRhYmxlWzBdLAotKwkgICAgJmNvbXBhcmVfbGlzdHB0cik7Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIGJvb2wKLWRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCA0MDU0YzJhLi5kMmQyMTc2IDEwMDY0NAotLS0tIGEvc3JjL3N0cmlwLmMKLSsrKyBiL3NyYy9zdHJpcC5jCi1AQCAtNDYsNiArNDYsMTMgQEAKLSAjaW5jbHVkZSA8c3lzdGVtLmg+Ci0gI2luY2x1ZGUgPHByaW50dmVyc2lvbi5oPgotIAotKyNpZiAhZGVmaW5lZChBQ0NFU1NQRVJNUykKLSsjIGRlZmluZSBBQ0NFU1NQRVJNUyAoU19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3NzcgKi8KLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoRk5NX0VYVE1BVENIKQotKyMgZGVmaW5lIEZOTV9FWFRNQVRDSCAoMCkKLSsjZW5kaWYKLSsKLSB0eXBlZGVmIHVpbnQ4X3QgR0VsZl9CeXRlOwotIAotIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCi1kaWZmIC0tZ2l0IGEvc3JjL3Vuc3RyaXAuYyBiL3NyYy91bnN0cmlwLmMKLWluZGV4IGZjODc4MzIuLjIxZWE2YjMgMTAwNjQ0Ci0tLS0gYS9zcmMvdW5zdHJpcC5jCi0rKysgYi9zcmMvdW5zdHJpcC5jCi1AQCAtNTYsNiArNTYsMTUgQEAKLSAjIGRlZmluZSBfKHN0cikgZ2V0dGV4dCAoc3RyKQotICNlbmRpZgotIAotKyNpZm5kZWYgc3RybmR1cGEKLSsjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKLSsgICAgICAgKHtjb25zdCBjaGFyICpfX2luID0gKHMpOyBcCi0rICAgICAgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbiAoX19pbiwgKG4pKSArIDE7IFwKLSsgICAgICAgICBjaGFyICpfX291dCA9IChjaGFyICopIGFsbG9jYSAoX19sZW4pOyBcCi0rICAgICAgICAgX19vdXRbX19sZW4tMV0gPSAnXDAnOyBcCi0rICAgICAgICAgKGNoYXIgKikgbWVtY3B5IChfX291dCwgX19pbiwgX19sZW4tMSk7fSkKLSsjZW5kaWYKLSsKLSAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLwotIEFSR1BfUFJPR1JBTV9WRVJTSU9OX0hPT0tfREVGID0gcHJpbnRfdmVyc2lvbjsKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL0NWRS0yMDE5LTE4MjE4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL0NWRS0yMDE5LTE4MjE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDAyYzVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9DVkUtMjAxOS0xODIxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLWNkZl9yZWFkX3Byb3BlcnR5X2luZm8gaW4gY2RmLmMgaW4gZmlsZSB0aHJvdWdoIDUuMzcgZG9lcyBub3QgcmVzdHJpY3QgdGhlCi1udW1iZXIgb2YgQ0RGX1ZFQ1RPUiBlbGVtZW50cywgd2hpY2ggYWxsb3dzIGEgaGVhcC1iYXNlZCBidWZmZXIgb3ZlcmZsb3cgKDQtYnl0ZQotb3V0LW9mLWJvdW5kcyB3cml0ZSkuCi0KLUNWRTogQ1ZFLTIwMTktMTgyMTgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNDZhODQ0M2Y3NmNlYzRiNDFlYzczNmVjYTM5Njk4NGM3NDY2NGY4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdG9zIFpvdWxhcyA8Y2hyaXN0b3NAem91bGFzLmNvbT4KLURhdGU6IE1vbiwgMjYgQXVnIDIwMTkgMTQ6MzE6MzkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gTGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZlY3RvciAoZm91bmQgYnkgb3NzLWZ1enopCi0KLS0tLQotIHNyYy9jZGYuYyB8IDkgKysrKy0tLS0tCi0gc3JjL2NkZi5oIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY2RmLmMgYi9zcmMvY2RmLmMKLWluZGV4IDlkNjM5Njc0Mi4uYmI4MWQ2Mzc0IDEwMDY0NAotLS0tIGEvc3JjL2NkZi5jCi0rKysgYi9zcmMvY2RmLmMKLUBAIC0xMDE2LDggKzEwMTYsOSBAQCBjZGZfcmVhZF9wcm9wZXJ0eV9pbmZvKGNvbnN0IGNkZl9zdHJlYW1fdCAqc3N0LCBjb25zdCBjZGZfaGVhZGVyX3QgKmgsCi0gCQkJCWdvdG8gb3V0OwotIAkJCX0KLSAJCQluZWxlbWVudHMgPSBDREZfR0VUVUlOVDMyKHEsIDEpOwotLQkJCWlmIChuZWxlbWVudHMgPT0gMCkgewotLQkJCQlEUFJJTlRGKCgiQ0RGX1ZFQ1RPUiB3aXRoIG5lbGVtZW50cyA9PSAwXG4iKSk7Ci0rCQkJaWYgKG5lbGVtZW50cyA+IENERl9FTEVNRU5UX0xJTUlUIHx8IG5lbGVtZW50cyA9PSAwKSB7Ci0rCQkJCURQUklOVEYoKCJDREZfVkVDVE9SIHdpdGggbmVsZW1lbnRzID09ICUiCi0rCQkJCSAgICBTSVpFX1RfRk9STUFUICJ1XG4iLCBuZWxlbWVudHMpKTsKLSAJCQkJZ290byBvdXQ7Ci0gCQkJfQotIAkJCXNsZW4gPSAyOwotQEAgLTEwNjAsOCArMTA2MSw2IEBAIGNkZl9yZWFkX3Byb3BlcnR5X2luZm8oY29uc3QgY2RmX3N0cmVhbV90ICpzc3QsIGNvbnN0IGNkZl9oZWFkZXJfdCAqaCwKLSAJCQkJCWdvdG8gb3V0OwotIAkJCQlpbnAgKz0gbmVsZW07Ci0gCQkJfQotLQkJCURQUklOVEYoKCJuZWxlbWVudHMgPSAlIiBTSVpFX1RfRk9STUFUICJ1XG4iLAotLQkJCSAgICBuZWxlbWVudHMpKTsKLSAJCQlmb3IgKGogPSAwOyBqIDwgbmVsZW1lbnRzICYmIGkgPCBzaC5zaF9wcm9wZXJ0aWVzOwotIAkJCSAgICBqKyssIGkrKykKLSAJCQl7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NkZi5oIGIvc3JjL2NkZi5oCi1pbmRleCAyZjdlNTU0YjcuLjA1MDU2NjY4ZiAxMDA2NDQKLS0tLSBhL3NyYy9jZGYuaAotKysrIGIvc3JjL2NkZi5oCi1AQCAtNDgsNiArNDgsNyBAQAotIHR5cGVkZWYgaW50MzJfdCBjZGZfc2VjaWRfdDsKLSAKLSAjZGVmaW5lIENERl9MT09QX0xJTUlUCQkJCQkxMDAwMAotKyNkZWZpbmUgQ0RGX0VMRU1FTlRfTElNSVQJCQkJMTAwMDAwCi0gCi0gI2RlZmluZSBDREZfU0VDSURfTlVMTAkJCQkJMAotICNkZWZpbmUgQ0RGX1NFQ0lEX0ZSRUUJCQkJCS0xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTZjY2MwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCi1vbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgdHdvIGNsYXVzZSBCU0QKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9MDI1MWVhZWMxMTg4YjIwZDlhNzJjNTAyZWNmZGRhMWIiCi0KLURFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xODIxOC5wYXRjaCIKLQotU1JDUkVWID0gImEwZDViMGU0ZTlmOTdkNzRhOTkxMWU5NWNlZGQ1Nzk4NTJlMjUzOTgiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWxpYnNlY2NvbXAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImZpbGUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZmlsZV0gPSAiJHtiaW5kaXJ9L2ZpbGUiCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKLQotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCW9lX3J1bm1ha2UgY2hlY2sKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi1QUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLSMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCi0jIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCi1iaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZjA5MTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zOC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKK29uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworIyB0d28gY2xhdXNlIEJTRAorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT0wMjUxZWFlYzExODhiMjBkOWE3MmM1MDJlY2ZkZGExYiIKKworREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IgorCitTUkNSRVYgPSAiZWM0MTA4MzY0NTY4OWE3ODdjZGQwMGNiM2I1YmY1NzhhYTc5ZTQ2YyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbGlic2VjY29tcCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmaWxlXSA9ICIke2JpbmRpcn0vZmlsZSIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCisKK2RvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlvZV9ydW5tYWtlIGNoZWNrCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCisjIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobworIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgorYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAxLWJ1aWxkLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy1pbi1jb25maWd1cmUuYWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiZjdjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAxLWJ1aWxkLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy1pbi1jb25maWd1cmUuYWMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBlZDFmN2U5ZGUwZDZhMWQ1YTllNTgxZTAyYTYzNTkzZDIyY2YxZTUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXhwbG9yZXIwOSA8ZXhwbG9yZXIwOUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTA6NDc6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyBpbiBjb25maWd1cmUuYWMuCisKK1RoaXMgd291bGQsIGUuZy4gZGVmaW5lIF9HTlVfU09VUkNFIGluIGNvbmZpZy5oLCBlbmFibGluZyB0aGUKK3JlYWxsb2NhcnJheSgpIHByb3RvdHlwZSBpbiBnbGliYyAyLjI2KyBvbiBMaW51eCBzeXN0ZW1zIHdpdGggdGhhdAordmVyc2lvbiBvZiBnbGliYy4KKworRml4ZXMgIzI0MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA1NWU3NzRiLi5jODc5ZmUxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNSw4ICsyNSwxMCBAQAorICMgYXV0b2NvbmYgcmVxdWlyZW1lbnRzIGFuZCBpbml0aWFsaXphdGlvbgorIAorIEFDX0lOSVQoW3RoZSBmYXN0IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yXSxbMi42LjRdLFtmbGV4LWhlbHBAbGlzdHMuc291cmNlZm9yZ2UubmV0XSxbZmxleF0pCisrQUNfUFJFUkVRKFsyLjYwXSkKKyBBQ19DT05GSUdfU1JDRElSKFtzcmMvc2Nhbi5sXSkKKyBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKKytBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyBMVF9JTklUCisgQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4zIC1Xbm8tcG9ydGFiaWxpdHkgZm9yZWlnbiBjaGVjay1uZXdzIHN0ZC1vcHRpb25zIGRpc3QtbHppcCBwYXJhbGxlbC10ZXN0cyBzdWJkaXItb2JqZWN0c10pCisgQUNfQ09ORklHX0hFQURFUihbc3JjL2NvbmZpZy5oXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzhjYTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIDcwNzJiZWZlMTM5N2FmNGViMDFjM2ZmN2VkZjk5ZjBjZDUwNzYwODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMwIEF1ZyAyMDE2IDE0OjI1OjMyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIGMrKyBjb21tZW50cyBpbiBjLWNvZGUgLSBmYWlscyB3aXRoIGdjYy02Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWZpeGVzOgotCi18IGVycm9yOiBDKysgc3R5bGUgY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIGluIElTTyBDOTAKLXwgbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotLS0tCi0gc3JjL2ZsZXguc2tsIHwgMiArLQotIHNyYy9zY2FuLmMgICB8IDIgKy0KLSBzcmMvc2tlbC5jICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZmxleC5za2wgYi9zcmMvZmxleC5za2wKLWluZGV4IDczYTBiOWUuLmVkNzE2MjcgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxleC5za2wKLSsrKyBiL3NyYy9mbGV4LnNrbAotQEAgLTIzNTAsNyArMjM1MCw3IEBAIHZvaWQgeXlGbGV4TGV4ZXI6Onl5ZW5zdXJlX2J1ZmZlcl9zdGFjayh2b2lkKQotIAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4KLSAJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCi0gICAgICAgICAgKi8KLS0JCW51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4KLSsJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4gKi8KLSAJCVlZX0coeXlfYnVmZmVyX3N0YWNrKSA9IChzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKiopeXlhbGxvYwotIAkJCQkJCQkJKG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKikKLSAJCQkJCQkJCU00X1lZX0NBTExfTEFTVF9BUkcpOwotZGlmZiAtLWdpdCBhL3NyYy9zY2FuLmMgYi9zcmMvc2Nhbi5jCi1pbmRleCBiNTVkZjJkLi5mMWRjZTc1IDEwMDY0NAotLS0tIGEvc3JjL3NjYW4uYwotKysrIGIvc3JjL3NjYW4uYwotQEAgLTQ2NzIsNyArNDY3Miw3IEBAIHN0YXRpYyB2b2lkIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAodm9pZCkKLSAJCSAqIHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRvIGF2b2lkIGFuCi0gCQkgKiBpbW1lZGlhdGUgcmVhbGxvYyBvbiB0aGUgbmV4dCBjYWxsLgotICAgICAgICAgICovCi0tCQludW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uCi0rCQludW1fdG9fYWxsb2MgPSAxOyAvKiBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uKi8KLSAJCSh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jCi0gCQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQotIAkJCQkJCQkJKTsKLWRpZmYgLS1naXQgYS9zcmMvc2tlbC5jIGIvc3JjL3NrZWwuYwotaW5kZXggZWY2NTdkMy4uMjZjYzg4OSAxMDA2NDQKLS0tLSBhL3NyYy9za2VsLmMKLSsrKyBiL3NyYy9za2VsLmMKLUBAIC0yNTYxLDcgKzI1NjEsNyBAQCBjb25zdCBjaGFyICpza2VsW10gPSB7Ci0gICAiCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVkIGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbiIsCi0gICAiCQkgKiBpbW1lZGlhdGUgcmVhbGxvYyBvbiB0aGUgbmV4dCBjYWxsLiIsCi0gICAiICAgICAgICAgKi8iLAotLSAgIgkJbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiIsCi0rICAiCQludW1fdG9fYWxsb2MgPSAxOyAvKiBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uICovIiwKLSAgICIJCVlZX0coeXlfYnVmZmVyX3N0YWNrKSA9IChzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKiopeXlhbGxvYyIsCi0gICAiCQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKSIsCi0gICAiCQkJCQkJCQlNNF9ZWV9DQUxMX0xBU1RfQVJHKTsiLAotLS0gCi0yLjUuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvQ1ZFLTIwMTYtNjM1NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTZhYzdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSAzOTM5ZWNjZGZmNTk4ZjQ3ZTViMzdiMDVkNThiZjFiNDRkMzc5NmU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IEZyaSwgNyBPY3QgMjAxNiAxNDoxNTozOCArMDMwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyBpbiB5eV9nZXRfbmV4dF9idWZmZXIKLQotVGhpcyBpcyB1cHN0cmVhbSBjb21taXQgYTVjYmU5MjlhYzMyNTVkMzcxZTY5OGY2MmRjMjU2YWZlNzAwNjQ2Ngotd2l0aCBzb21lIGFkZGl0aW9uYWwgYmFja3BvcnRpbmcgdG8gbWFrZSBiaW51dGlscyBidWlsZCBhZ2Fpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi02MzU0Ci1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gc3JjL2ZsZXguc2tsIHwgMiArLQotIHNyYy9zY2FuLmMgICB8IDIgKy0KLSBzcmMvc2tlbC5jICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZmxleC5za2wgYi9zcmMvZmxleC5za2wKLWluZGV4IGVkNzE2MjcuLjgxNGQ1NjIgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxleC5za2wKLSsrKyBiL3NyYy9mbGV4LnNrbAotQEAgLTE3MTgsNyArMTcxOCw3IEBAIGludCB5eUZsZXhMZXhlcjo6eXlfZ2V0X25leHRfYnVmZmVyKCkKLSAKLSAJZWxzZQotIAkJewotLQkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9Ci0rCQkJaW50IG51bV90b19yZWFkID0KLSAJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOwotIAotIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKLWRpZmYgLS1naXQgYS9zcmMvc2Nhbi5jIGIvc3JjL3NjYW4uYwotaW5kZXggZjFkY2U3NS4uMTk0OTg3MiAxMDA2NDQKLS0tLSBhL3NyYy9zY2FuLmMKLSsrKyBiL3NyYy9zY2FuLmMKLUBAIC00MTgxLDcgKzQxODEsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAodm9pZCkKLSAKLSAJZWxzZQotIAkJewotLQkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9Ci0rCQkJaW50IG51bV90b19yZWFkID0KLSAJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOwotIAotIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKLWRpZmYgLS1naXQgYS9zcmMvc2tlbC5jIGIvc3JjL3NrZWwuYwotaW5kZXggMjZjYzg4OS4uMDM0NGQxOCAxMDA2NDQKLS0tLSBhL3NyYy9za2VsLmMKLSsrKyBiL3NyYy9za2VsLmMKLUBAIC0xOTI5LDcgKzE5MjksNyBAQCBjb25zdCBjaGFyICpza2VsW10gPSB7Ci0gICAiIiwKLSAgICIJZWxzZSIsCi0gICAiCQl7IiwKLS0gICIJCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPSIsCi0rICAiCQkJaW50IG51bV90b19yZWFkID0iLAotICAgIgkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7IiwKLSAgICIiLAotICAgIgkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkiLAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk3OTJlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChlbWJlZGRlZCBzcGVjaWZpYykKLQotU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgotCi1JbmRleDogZmxleC0yLjYuMC9kb2MvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmbGV4LTIuNi4wLm9yaWcvZG9jL01ha2VmaWxlLmFtCi0rKysgZmxleC0yLjYuMC9kb2MvTWFrZWZpbGUuYW0KLUBAIC0yLDcgKzIsNyBAQCBoZWxwMm1hbiA9IEBIRUxQMk1BTkAKLSAKLSBpbmZvX1RFWElORk9TID0JZmxleC50ZXhpCi0gZGlzdF9tYW5fTUFOUyA9IGZsZXguMQotLWRpc3RfZG9jX0RBVEE9IGZsZXgucGRmCi0rRVhUUkFfRElTVD0gZmxleC5wZGYKLSAKLSBDTEVBTkZJTEVTID0gXAotIAlmbGV4LmF1eCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L3J1bi1wdGVzdAppbmRleCAxOWRiMzM3Li4wMzczMDFjIDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QKQEAgLTIsNCArMiw0IEBACiAKICMgbWFrZSB3b3VsZCB3YW50IHRvIHJlYnVpbGQgc29tZSBmaWxlcyB3aXRoIGEgY29tcGlsZXIgb3RoZXJ3aXNlIDotLwogbWFrZSBGTEVYPS91c3IvYmluL2ZsZXggLXQgY2hlY2stVEVTVFMgfHwgdHJ1ZQotbWFrZSBGTEVYPS91c3IvYmluL2ZsZXggY2hlY2stVEVTVFMKK21ha2UgRkxFWD0vdXNyL2Jpbi9mbGV4IGFic19idWlsZGRpcj0uLyBjaGVjay1URVNUUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmRkOTljLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAiRmxleCAoVGhlIEZhc3QgTGV4aWNhbCBBbmFseXplcikiCi1ERVNDUklQVElPTiA9ICJGbGV4IGlzIGEgZmFzdCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVyYXRvci4gIEZsZXggaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIHByb2dyYW1zIHRoYXQgcmVjb2duaXplIFwKLWxleGljYWwgcGF0dGVybnMgaW4gdGV4dC4iCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZsZXgvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotCi1ERVBFTkRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlJywgJycsIGQpfSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTQ3NDJjZjkyZTg5MDQwYjM5NDg2YTYyMTliNjgwNjciCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZsZXgvZmxleC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi02MzU0LnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcnLCAnZmlsZTovL2Rpc2FibGUtdGVzdHMucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNjYyNzBmMTNjNDhlZDA0M2Q5NTY0ODA3NTA4NGQ1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNGU2MTFlZjVhNDcwM2ExOTEwMTJmODBjMTAyN2RjOWQxMjU1NTE4M2NlMGVjZDQ2ZjM2MzZlNTg3ZTliOGU5IgotCi0jIEZsZXggaGFzIG1vdmVkIHRvIGdpdGh1YiBmcm9tIDIuNi4xIG9ud2FyZHMKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXgvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmbGV4LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKLQotTTQgPSAiJHtiaW5kaXJ9L200IgotTTRfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tNCIKLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9NND0ke000fSIKLUVYVFJBX09FTUFLRSArPSAibTQ9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgotCi1FWFRSQV9PRU1BS0UgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnRkxFWD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmxleCcsICcnLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Ci19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1saWJmbCIKLQotRklMRVNfJHtQTn0tbGliZmwgPSAiJHtsaWJkaXJ9L2xpYmZsLnNvLiogJHtsaWJkaXJ9L2xpYmZsX3BpYy5zby4qIgotCi1SREVQRU5EU18ke1BOfSArPSAibTQiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBnYXdrIG1ha2UiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIC1mICR7Qn0vdGVzdHMvTWFrZWZpbGUgdG9wX2J1aWxkZGlyPSR7Qn0gSU5DTFVERVM9LUkke1N9L3NyYyBidWlsZHRlc3RzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwotCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KLQljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke0J9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KLQlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCi0JICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL150b3Bfc3JjZGlyID0gXCguKlwpL3RvcF9zcmNkaXIgPSAuLycgXAotCSAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAotCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQotCi0jIE5vdCBBcGFjaGUgRmxleCwgb3IgQWRvYmUgRmxleCwgb3IgSUJNIEZsZXguCi1DVkVfUFJPRFVDVCA9ICJmbGV4X3Byb2plY3Q6ZmxleCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2IyNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi40LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAiRmxleCAoVGhlIEZhc3QgTGV4aWNhbCBBbmFseXplcikiCitERVNDUklQVElPTiA9ICJGbGV4IGlzIGEgZmFzdCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVyYXRvci4gIEZsZXggaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIHByb2dyYW1zIHRoYXQgcmVjb2duaXplIFwKK2xleGljYWwgcGF0dGVybnMgaW4gdGV4dC4iCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZsZXgvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorCitERVBFTkRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlJywgJycsIGQpfSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTQ3NDJjZjkyZTg5MDQwYjM5NDg2YTYyMTliNjgwNjciCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlc3Rlcy9mbGV4L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9mbGV4LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICcnLCAnZmlsZTovL2Rpc2FibGUtdGVzdHMucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjg4MmUzMTc5NzQ4Y2M5ZjljMjNlYzU5M2Q2YWRjOGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTg3YWFlMDMyYmYwN2MyNmY4NWFjMGVkMzI1MDk5OGMzNzYyMWQ5NWY4YmQ3NDhiMzFmMTViMzNjNDVlZTk5NSIKKworIyBGbGV4IGhhcyBtb3ZlZCB0byBnaXRodWIgZnJvbSAyLjYuMSBvbndhcmRzCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlc3Rlcy9mbGV4L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZmxleC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CisKK000ID0gIiR7YmluZGlyfS9tNCIKK000X2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vbTQiCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfTTQ9JHtNNH0gYWNfY3ZfZnVuY19yZWFsbG9jYXJyYXk9bm8iCitFWFRSQV9PRU1BS0UgKz0gIm00PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tNCIKKworRVhUUkFfT0VNQUtFICs9ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ0ZMRVg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZsZXgnLCAnJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmxleCBNND0ke000fQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmxleCBNND0ke000fQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tbGliZmwiCisKK0ZJTEVTXyR7UE59LWxpYmZsID0gIiR7bGliZGlyfS9saWJmbC5zby4qICR7bGliZGlyfS9saWJmbF9waWMuc28uKiIKKworUkRFUEVORFNfJHtQTn0gKz0gIm00IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayBtYWtlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyAtZiAke0J9L3Rlc3RzL01ha2VmaWxlIHRvcF9idWlsZGRpcj0ke0J9IElOQ0xVREVTPS1JJHtTfS9zcmMgYnVpbGR0ZXN0cworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KKwljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCisJY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtCfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAorCSAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nIFwKKwkgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIC1lICdzL150b3BfYnVpbGRkaXIgPSBcKC4qXCkvdG9wX2J1aWxkZGlyID0gLi8nIFwKKwkgICAgLWUgJ3M6JHtVTklOQVRJVkVfTE9BREVSfToke2Jhc2VfYmluZGlyfS9mYWxzZTpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CisjIFRoZSB1bmluYXRpdmUgbG9hZGVyIGlzIGRpZmZlcmVudCBvbiBpMzg2ICYgeDg2XzY0IGhvc3RzLiBTaW5jZSBpdCBpcyBvbmx5CisjIGJlaW5nIHJlcGxhY2VkIHdpdGggL2Jpbi9mYWxzZSBhbnl3YXksIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBwYXJ0IG9mIHRoZSB0YXNrCisjIGhhc2gKK2RvX2luc3RhbGxfcHRlc3RbdmFyZGVwc2V4Y2x1ZGVdICs9ICJVTklOQVRJVkVfTE9BREVSIgorCisjIE5vdCBBcGFjaGUgRmxleCwgb3IgQWRvYmUgRmxleCwgb3IgSUJNIEZsZXguCitDVkVfUFJPRFVDVCA9ICJmbGV4X3Byb2plY3Q6ZmxleCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzOTU5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiOS4yLjAiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiOS4yLjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy05LjI6JHtGSUxFX0RJUk5BTUV9L2djYy05LjIvYmFja3BvcnQ6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiBmbGV4LW5hdGl2ZSIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLQotQkFTRVVSSSA/PSAiJHtHTlVfTUlSUk9SfS9nY2MvZ2NjLSR7UFZ9L2djYy0ke1BWfS50YXIueHoiCi0jUkVMRUFTRSA/PSAiNWE1Y2EyZCIKLSNCQVNFVVJJID89ICJodHRwczovL3JlcG8ub3IuY3ovb2ZmaWNpYWwtZ2NjLmdpdC9zbmFwc2hvdC8ke1JFTEVBU0V9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPWdjYy0ke1JFTEVBU0V9LnRhci5neiIKLVNSQ19VUkkgPSAiXAotICAgICAgICAgICAke0JBU0VVUkl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1EaXNhYmxlLXNkdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1leHBvcnQtQ1BQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyNTAucGF0Y2ggXAotCSAgIGZpbGU6Ly9DVkUtMjAxOS0xNTg0N18xLnBhdGNoIFwKLQkgICBmaWxlOi8vQ1ZFLTIwMTktMTU4NDdfMi5wYXRjaCBcCi0JICAgZmlsZTovL0NWRS0yMDE5LTE1ODQ3XzMucGF0Y2ggXAotIgotUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzODE4YWQ4NjAwNDQ3ZjA1MzQ5MDk4MjMyYzJkZGM3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYTZlZjA4ZjEyMTIzOWRhNTY5NWY3NmM5YjMzNjM3YTExOGRjZjYzZTI0MTY0NDIyMjMxOTE3ZmE2MWZiMjA2IgotCi0jIEZvciBkZXYgcmVsZWFzZSBzbmFwc2hvdHRpbmcKLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vb2ZmaWNpYWwtZ2NjLSR7UkVMRUFTRX0iCi0jQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgotCi0jIExhbmd1YWdlIE92ZXJyaWRlcwotRk9SVFJBTiA9ICIiCi1KQVZBID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLVNTUCA/PSAiLS1kaXNhYmxlLWxpYnNzcCIKLVNTUF9taW5ndzMyID0gIi0tZW5hYmxlLWxpYnNzcCIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgJHtTU1B9IFwKLSAgICAtLWVuYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgICR7QCctLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0nIGlmICcke0xJTktFUl9IQVNIX1NUWUxFfScgZWxzZSAnJ30gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS13aXRoLXBwbD1ubyBcCi0gICAgLS13aXRoLWNsb29nPW5vIFwKLSAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKLSAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0iCi0KLUVYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS1kaXNhYmxlLWxpYmdvbXAgXAotICAgIC0tZGlzYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAtLWRpc2FibGUtbHRvIFwKLSAgICAtLWRpc2FibGUtcGx1Z2luIFwKLSAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAotICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAotICAgIC0td2l0aG91dC1pc2wgXAotICAgIC0tZGlzYWJsZS1saWJzc3AgXAotIgotCi1FWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAotICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAotICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAotICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNjVjMzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA4NjMzMjVlYzNjNmViNDk4N2JlNjM1MDlhYzQwN2IyZDEzNjE3MzQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8zNl0gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGNvbmZpZ3VyZSAgICB8IDIgKy0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGFiZDkzYTk5MGE5Li5iMTIxMDg4ZDc3OCAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNzYwMyw3ICs3NjAzLDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWRiNGZkMTRhYTIuLmFhZDkzYzRkMTgzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMTE5LDcgKzMxMTksNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExMTZlNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLUZyb20gNjhlNzhiYzE1ZGUyMTVmYTE1YzdkOGI1NmJkMmUyYjA1MzliMzRmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjU5OjAwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMzZdIGdjYzogcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotCi1BZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKLXplY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKLS91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAotYWJvcnRlZC4KLQotSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKLXdhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbW1vbi5vcHQgICAgICB8ICA0ICsrKysKLSBnY2MvY29uZmlnLmluICAgICAgIHwgIDYgKysrKysrCi0gZ2NjL2NvbmZpZ3VyZSAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSBnY2MvY29uZmlndXJlLmFjICAgIHwgMTAgKysrKysrKysrKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAgOSArKysrKysrKysKLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDIgKysKLSBnY2MvaW5jcGF0aC5jICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCi0gNyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0Ci1pbmRleCBkMzQyYzRmMzc0OS4uYzY0ZmQ0YTZjNTAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29tbW9uLm9wdAotKysrIGIvZ2NjL2NvbW1vbi5vcHQKLUBAIC02ODQsNiArNjg0LDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgotIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCi0gV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KLSAKLStXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKLStXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCi0rCi0gV3NoYWRvdwotIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKLSBXYXJuIHdoZW4gb25lIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4gIFNhbWUgYXMgLVdzaGFkb3c9Z2xvYmFsLgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCi1pbmRleCBhNzE4Y2VhZjNkYS4uNTcxMzM0MmVmYjEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmluCi0rKysgYi9nY2MvY29uZmlnLmluCi1AQCAtMjAwLDYgKzIwMCwxMiBAQAotICNlbmRpZgotIAotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KLSsjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAotKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyNlbmRpZgotKwotKwotIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKLSAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCi0gICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDQ4MTA3MWI0MjY1Li5hNmVhM2E4YTg0YyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC05OTUsNiArOTk1LDcgQEAgd2l0aF9zeXN0ZW1femxpYgotIGVuYWJsZV9tYWludGFpbmVyX21vZGUKLSBlbmFibGVfbGlua19tdXRleAotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCi0gZW5hYmxlX3BsdWdpbgotIGVuYWJsZV9ob3N0X3NoYXJlZAotIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0Ci1AQCAtMTc0OCw2ICsxNzQ5LDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicwotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5Ci0rICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKLSAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAotICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKLSAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0Ci1AQCAtMjk3NTAsNiArMjk3NTMsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotIGZpCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLStlbHNlCi0rICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubwotK2ZpCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGNlMjgyNTU4MGM2Li5kNDJiYmQ0ZmQxYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC02Mzc4LDYgKzYzNzgsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKLSAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAotKyAgICAgICAgICAgWzFdLAotKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gQUNfU1VCU1Qoc3ViZGlycykKLSBBQ19TVUJTVChzcmNkaXIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IDZlZjM2Y2UwMmFhLi4wOTQxNGQ4Y2MwNSAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0zMzIsNiArMzMyLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1XcGFja2VkICAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQgLVdwYWNrZWQtbm90LWFsaWduZWQgIC1XcGFkZGVkIEBnb2wKLSAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCi0gLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCi0rLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKLSAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAotIC1Xbm8tcHJhZ21hcyAgLVduby1wcmlvLWN0b3ItZHRvciAgLVdyZWR1bmRhbnQtZGVjbHMgQGdvbAotIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAotQEAgLTYyODksNiArNjI5MCwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCi0gbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCi0gbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgotIAotK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCi0rZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcwotK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCi0rZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKLStzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCi0rCi0gQGl0ZW0gLVdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFdmbG9hdC1lcXVhbAotIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNGY1Nzc2NWIwMTIuLmEyNjAxYTZiYjA2IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDQyLDYgKzEwNDIsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgIiV7ZnVzZS1sZD0qOi1mdXNlLWxkPSUqfSAiIExJTktfQ09NUFJFU1NfREVCVUdfU1BFQyBcCi0gICAgIiVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAotICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVTfX19IFwKLSsgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKLSsgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKLSAgICAgJXtzdGF0aWN8bm8tcGllfHN0YXRpYy1waWU6fSAlQHtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAotICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiIgXAotICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggYmNiZTIwODI5MDUuLjU3NTIyOThiYmYyIDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAiaW50bC5oIgotICNpbmNsdWRlICJpbmNwYXRoLmgiCi0gI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKLSsjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCi0gCi0gLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCi0gICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLwotQEAgLTM5Myw2ICszOTQsMjYgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKLSAJfQotICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOwotICAgICB9Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICB7Ci0rICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOwotKwotKyAgICAgICBmb3IgKHAgPSBoZWFkc1tJTkNfUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKLSsgICAgICAgICB7Ci0rICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCi0rICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOwotKyAgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotIH0KLSAKLSAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMDM5ZDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gZjhkNjBjNDExNGFjYjkyMzYxYzdiMmY0YTQ1NjFkNDY2MWU4ZGE5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMzZdIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAotCi1CZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgotCi1UaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCi0KLU90aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKLQotLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgotCi0tIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCi0KLUJvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPwotCi1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGIxMjEwODhkNzc4Li45M2FhZTViYjI2ZiAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNjg2NCw2ICs2ODY0LDM4IEBAIGZpCi0gCi0gCi0gCi0rIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKLSsjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUwotKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCi0rIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKLSsjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKLSsjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgotK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0raWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLSAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKLSAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgotIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3OWM0MGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tIGMyMDgxYzUxZGI1ODk0NzFlYTcxMzg3MGM3MmYxMzk5OWFiZGE4MTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAotU3ViamVjdDogW1BBVENIIDA0LzM2XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KLQotR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKLWxheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKLWNvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCi0KLVRoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCi1hbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKLWRpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAota25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgotcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KLQotVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKLXRoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocwotYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKLWRvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KLWFuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgotCi1EbyBzYW1lIGZvciByaXNjdjY0IGFuZCBhYXJjaDY0Ci0KLVJQIDE1LzgvMTEKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8ICA4ICsrKystLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgICAgICAgICB8ICA2ICsrLS0tLQotIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICAgICAgICAgfCAxMCArKystLS0tLS0tCi0gZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4ICAgICAgICAgICB8ICA2ICsrKystLQotIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCAgICAgICAgfCAgNSArKy0tLQotIDUgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotaW5kZXggNWFkNjcwYmEyY2UuLmUyNjAxOWU3MTU3IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotQEAgLTIxLDggKzIxLDggQEAKLSBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KLSBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCi0gCi0tQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLS1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKLSsjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotIAotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCi0rI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLWluZGV4IGM2ODZhYjJmMGQyLi5jODJiNjBkYWRjZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKLUBAIC0zMiw3ICszMiw1IEBACi0gIwotIGNvbW1hPSwKLSBNVUxUSUxJQl9PUFRJT05TICAgID0gJChzdWJzdCAkKGNvbW1hKSwvLCQoVE1fTVVMVElMSUJfQ09ORklHKSkKLS1NVUxUSUxJQl9ESVJOQU1FUyAgID0gJChwYXRzdWJzdCBtJSwgJSwgJChzdWJzdCAvLCAsJChNVUxUSUxJQl9PUFRJT05TKSkpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDppMzg2LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbXgzMj0uLi9saWJ4MzIkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251eDMyKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLWluZGV4IDNhMmZmNzAwZDdkLi4xM2VmMTk1NzZiNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLUBAIC0xNywxMCArMTcsNiBAQAotICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotIE1VTFRJTElCX09QVElPTlMgPSBtYWJpPW4zMi9tYWJpPTMyL21hYmk9NjQKLS1NVUxUSUxJQl9ESVJOQU1FUyA9IG4zMiAzMiA2NAotLU1JUFNfRUwgPSAkKGlmICQoZmlsdGVyICVlbCwgJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJCh0YXJnZXQpKSkpLGVsKQotLU1JUFNfU09GVCA9ICQoaWYgJChzdHJpcCAkKGZpbHRlciBNQVNLX1NPRlRfRkxPQVRfQUJJLCAkKHRhcmdldF9jcHVfZGVmYXVsdCkpICQoZmlsdGVyIHNvZnQsICQod2l0aF9mbG9hdCkpKSxzb2Z0KQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBcCi0tCS4uL2xpYjMyJChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmluMzIkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliJChjYWxsIGlmX211bHRpYXJjaCw6bWlwcyQoTUlQU19FTCktbGludXgtZ251JChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmk2NCQoTUlQU19TT0ZUKSkKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0rCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4IGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci1pbmRleCAyMTZkMjc3NmExOC4uZTRkODE3NjIxZmMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotQEAgLTEsMyArMSw1IEBACi0gIyBPbmx5IFhMRU4gYW5kIEFCSSBhZmZlY3QgTGludXggbXVsdGlsaWIgZGlyIG5hbWVzLCBlLmcuIC9saWIzMi9pbHAzMmQvCi0tTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQotKyNNVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQotK01VTFRJTElCX0RJUk5BTUVTIDo9IC4gLgotKyNNVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLWluZGV4IGYzYzZlMmJlMWQ5Li5iZDAzOTMxNTVmYSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1AQCAtMjYsMTAgKzI2LDkgQEAKLSAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KLSAKLSBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKLS1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCi0rTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KLSBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0gCi0gcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCi0gCSQoQ09NUElMRSkgJDwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRmYWM5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSBlN2U1MDRmNGE5MGNmYTM5NWU3ZjhlZTc3OWY4YzNlZDY4NzgwMmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8zNl0gb3B0aW9uYWwgbGlic3RkYwotCi1nY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKLXdpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKLXdoaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKLW9wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCi1kcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KLQotQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bwotZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KLQotUlAgMjkvNi8xMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKwotIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDkxNmNjNjdiNDUzLi40MTYxOWZhNTkxYyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAotKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1AQCAtMTk1Miw2ICsxOTUyLDEwIEBAIG5vc3RkaW5jKysKLSBDKysgT2JqQysrCi0gRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKLWluZGV4IDZjNDU3NGE4MzdkLi4wZTI2NTdmMDBlZSAxMDA2NDQKLS0tLSBhL2djYy9jcC9nKytzcGVjLmMKLSsrKyBiL2djYy9jcC9nKytzcGVjLmMKLUBAIC0xMzcsNiArMTM3LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkX29wdGlvbiAqKmluX2RlY29kZWRfb3B0aW9ucywKLSAgICAgICBzd2l0Y2ggKGRlY29kZWRfb3B0aW9uc1tpXS5vcHRfaW5kZXgpCi0gCXsKLSAJY2FzZSBPUFRfbm9zdGRsaWI6Ci0rCWNhc2UgT1BUX25vc3RkbGliX186Ci0gCWNhc2UgT1BUX25vZGVmYXVsdGxpYnM6Ci0gCSAgbGlicmFyeSA9IC0xOwotIAkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCAwOTQxNGQ4Y2MwNS4uYTQzOTY5YmM5ZjAgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjI4LDYgKzIyOCw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCi0gLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCi0gLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSstZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCi0rLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKLSstbm9zdGRsaWIrKyBAZ29sCi0gLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCi0gLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCi0gLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAgLVdkZXByZWNhdGVkLWNvcHkgIC1XZGVwcmVjYXRlZC1jb3B5LWR0b3IgQGdvbAotQEAgLTUzOCw3ICs1NDEsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLXBpZSAgLXB0aHJlYWQgIC1yICAtcmR5bmFtaWMgQGdvbAotIC1zICAtc3RhdGljICAtc3RhdGljLXBpZSAgLXN0YXRpYy1saWJnY2MgIC1zdGF0aWMtbGlic3RkYysrIEBnb2wKLSAtc3RhdGljLWxpYmFzYW4gIC1zdGF0aWMtbGlidHNhbiAgLXN0YXRpYy1saWJsc2FuICAtc3RhdGljLWxpYnVic2FuIEBnb2wKLS0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKLSstc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKLSAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCi0gLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQotIAotQEAgLTEzMzEyLDYgKzEzMzE1LDMzIEBAIFNwZWNpZnkgdGhhdCB0aGUgcHJvZ3JhbSBlbnRyeSBwb2ludCBpcyBAdmFye2VudHJ5fS4gIFRoZSBhcmd1bWVudCBpcwotIGludGVycHJldGVkIGJ5IHRoZSBsaW5rZXI7IHRoZSBHTlUgbGlua2VyIGFjY2VwdHMgZWl0aGVyIGEgc3ltYm9sIG5hbWUKLSBvciBhbiBhZGRyZXNzLgotIAotK0BpdGVtIC1ub3N0ZGxpYisrCi0rQG9waW5kZXggbm9zdGRsaWIrKwotK0RvIG5vdCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBDKysgcnVudGltZSBsaWJyYXJpZXMgd2hlbiBsaW5raW5nLgotK09ubHkgdGhlIGxpYnJhcmllcyB5b3Ugc3BlY2lmeSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgbGlua2VyLgotKwotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbm9zdGRsaWJ9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKLStAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9kZWZhdWx0bGlic30KLStAY2luZGV4IEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKLStAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9kZWZhdWx0bGlic30KLStPbmUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyBieXBhc3NlZCBieSBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kCi0rQG9wdGlvbnstbm9kZWZhdWx0bGlic30gaXMgQGZpbGV7bGliZ2NjLmF9LCBhIGxpYnJhcnkgb2YgaW50ZXJuYWwgc3Vicm91dGluZXMKLSt3aGljaCBHQ0MgdXNlcyB0byBvdmVyY29tZSBzaG9ydGNvbWluZ3Mgb2YgcGFydGljdWxhciBtYWNoaW5lcywgb3Igc3BlY2lhbAotK25lZWRzIGZvciBzb21lIGxhbmd1YWdlcy4KLSsoQHhyZWZ7SW50ZXJmYWNlLCxJbnRlcmZhY2luZyB0byBHQ0MgT3V0cHV0LGdjY2ludCxHTlUgQ29tcGlsZXIKLStDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30sCi0rZm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiBAZmlsZXtsaWJnY2MuYX0uKQotK0luIG1vc3QgY2FzZXMsIHlvdSBuZWVkIEBmaWxle2xpYmdjYy5hfSBldmVuIHdoZW4geW91IHdhbnQgdG8gYXZvaWQKLStvdGhlciBzdGFuZGFyZCBsaWJyYXJpZXMuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB5b3Ugc3BlY2lmeSBAb3B0aW9uey1ub3N0ZGxpYn0KLStvciBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSB5b3Ugc2hvdWxkIHVzdWFsbHkgc3BlY2lmeSBAb3B0aW9uey1sZ2NjfSBhcyB3ZWxsLgotK1RoaXMgZW5zdXJlcyB0aGF0IHlvdSBoYXZlIG5vIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBHQ0MKLStsaWJyYXJ5IHN1YnJvdXRpbmVzLgotKyhBbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW50ZXJuYWwgc3Vicm91dGluZSBpcyBAY29kZXtfX21haW59LCB1c2VkIHRvIGVuc3VyZSBDKysKLStjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKLStHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKLSsKLSBAaXRlbSAtcGllCi0gQG9waW5kZXggcGllCi0gUHJvZHVjZSBhIGR5bmFtaWNhbGx5IGxpbmtlZCBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGEyNjAxYTZiYjA2Li5jZDZjNmZjOTVkYiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTA1Miw2ICsxMDUyLDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKLSAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCi0gICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX19XAotKyAgICAleyFub3N0ZGxpYisrOn1cCi0gICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVFfX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCi0gI2VuZGlmCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmN2U2MDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSBiOTI2MGNkM2FjMjZiMDMwMjgyNGVkNDY2YTU0ODQ2NGM4NjRkOTVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTY6MjggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8zNl0gQ09MTEVDVF9HQ0NfT1BUSU9OUwotCi1UaGlzIHBhdGNoIGFkZHMgLS1zeXNyb290IGludG8gQ09MTEVDVF9HQ0NfT1BUSU9OUyB3aGljaCBpcyB1c2VkIHRvCi1pbnZva2UgY29sbGVjdDIuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2djYy5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGNkNmM2ZmM5NWRiLi43ZGE5YzVkNDU3YiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtNDgwNCw2ICs0ODA0LDE1IEBAIHNldF9jb2xsZWN0X2djY19vcHRpb25zICh2b2lkKQotIAkJc2l6ZW9mICgiQ09MTEVDVF9HQ0NfT1BUSU9OUz0iKSAtIDEpOwotIAotICAgZmlyc3RfdGltZSA9IFRSVUU7Ci0rI2lmZGVmIEhBVkVfTERfU1lTUk9PVAotKyAgaWYgKHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkICYmIHRhcmdldF9zeXN0ZW1fcm9vdCkKLSsgICAgewotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIictLXN5c3Jvb3Q9Iiwgc2l6ZW9mKCInLS1zeXNyb290PSIpLTEpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgdGFyZ2V0X3N5c3RlbV9yb290LHN0cmxlbih0YXJnZXRfc3lzdGVtX3Jvb3QpKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInIiwgMSk7Ci0rICAgICAgZmlyc3RfdGltZSA9IEZBTFNFOwotKyAgICB9Ci0rI2VuZGlmCi0gICBmb3IgKGkgPSAwOyAoaW50KSBpIDwgbl9zd2l0Y2hlczsgaSsrKQotICAgICB7Ci0gICAgICAgY29uc3QgY2hhciAqY29uc3QgKmFyZ3M7Ci0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhmOGZjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotRnJvbSA4OGU3MjhkYWQ1M2Q0OGM0YTE5ZjE1ZTE5ZjY2ZmQyM2Y0ODIwYjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8zNl0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgotICR7Qn0KLQotVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Ci10aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1XaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKLW9jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Ci13b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KLXRtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJwotCi1TbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQotIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KLSBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDVmNDNkOWRlMDBlLi40MWYwZjU5MmZmNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNTQwLDcgKzU0MCw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACi0gVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAotIAotIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACi0tdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKLSt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKLSBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAotIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAotIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggYTZlYTNhOGE4NGMuLmUzYmNmOGFiZTlhIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMzQxLDggKzEyMzQxLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZDQyYmJkNGZkMWMuLjJlYmMzNzdhNzRkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE5NjgsOCArMTk2OCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCi1pbmRleCAzMDhiODdkMGNjMS4uMTkwNjhjYmMyNGEgMTAwNjQ0Ci0tLS0gYS9nY2MvbWtjb25maWcuc2gKLSsrKyBiL2djYy9ta2NvbmZpZy5zaAotQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KLSAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCi0gCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKLSAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KLS0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0rCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgotIAkgICAgZWxzZQotIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAotQEAgLTEwNiw3ICsxMDYsNyBAQCBlc2FjCi0gCi0gIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgotIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KLS0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCi0rICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCi0gZmkKLSAKLSAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRlM2FiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAwMTBmMDlmMjk2M2VkZTI0ZTg1MTM0ZTVmYWIyZmE2MjdhOWFmYTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8zNl0gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCi0KLSogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCi11c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCi1kaXJlY3RvcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAyICstCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1pbmRleCA2MDg2N2I5M2QwZS4uM2ZjOWZjYTViN2IgMTAwNzU1Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotQEAgLTEzMDcxLDcgKzEzMDcxLDcgQEAgZXNhYwotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBhY19leHQ9JHthY19mY19zcmNleHQtZn0KLSBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotaW5kZXggN2NmY2UyOGFiNjkuLjZjZDUxNWVlMWE0IDEwMDY0NAotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLUBAIC0yNTAsNyArMjUwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gQUNfUFJPR19GQyhnZm9ydHJhbikKLSAKLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZjBhMDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNDVlOWNkMzlkOWM2MjQ1NGQ0NmI5ZTk0NzNhMGMxMDM0Y2VjYTE1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMzZdIGNwcDogaG9ub3Igc3lzcm9vdC4KLQotQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCi1wcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCi1yYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKLXBlcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCi0KLVRoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KLQotVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCi0taXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgotCi1bWU9DVE8gIzIwNzRdCi0KLVJQIDIwMTIvMDQvMTMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgMiArLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotaW5kZXggYzZlNDJlZGEyODMuLmUxZGRmMDY2NDY3IDEwMDY0NAotLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAotKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotQEAgLTY2LDUgKzY2LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAYysrLWNwcC1vdXRwdXQiLAotICAgICAgICIleyFFOiV7IU06JXshTU06IgotLSAgICAgICIgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTIiCi0rICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMiIKLSAgICAgICAiICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggN2RhOWM1ZDQ1N2IuLjRlN2M0NWIyNjhjIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBpbGVyIGRlZmF1bHRfY29tcGlsZXJzW10gPQotIAkJCQkJICAgJVd7byo6LS1vdXRwdXQtcGNoPSUqfX0lVn19fX19fX0iLCAwLCAwLCAwfSwKLSAgIHsiLmkiLCAiQGNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGNwcC1vdXRwdXQiLAotLSAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0rICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSAgIHsiLnMiLCAiQGFzc2VtYmxlciIsIDAsIDAsIDB9LAotICAgeyJAYXNzZW1ibGVyIiwKLSAgICAiJXshTToleyFNTToleyFFOiV7IVM6YXMgJShhc21fZGVidWcpICUoYXNtX29wdGlvbnMpICVpICVBIH19fX0iLCAwLCAwLCAwfSwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmMwYzZkNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFmZjQxMDhkNzA3YjM0ZTM5OWU5ZGM0MThhZDFlY2M0MmY3MjY3NmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzM2XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IGRkZDNiOGY0ZDlkLi5mZGZjMGJkM2U4MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuZ2NjCi0rKysgYi9nY2MvY29uZmlnLmdjYwotQEAgLTIyODIsMjkgKzIyODIsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKLSAJCQk7OwotIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgotIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCi0gCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAllc2FjCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZmIyNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQzICswLDAgQEAKLUZyb20gNzJmYzM5NzViY2Q3MjBiMmY4MDQwZmE4N2NkMjNkM2RiNGM1OTc1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKLQotVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLXJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKLVRoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKLUNoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCi1TSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQotCi1SZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmggICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTUgKysrKystLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1pbmRleCA4MjQ4NjFiZWZlYy4uNmFmYWNjZTMyOTIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCi1AQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAotIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCA2NmVjMGVhMzk4MC4uZTRhZGUyZTJhYjAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTY1LDggKzY1LDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggOWEzNjBkZWZkMjEuLjk4ZjZlOTYwYjY0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1AQCAtNjAsNyArNjAsNyBAQAotIAotICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCi0gICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1pbmRleCA5YTZlMmQ5OTg5Ni4uMzFlZmJiNzMwMTYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLUBAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotaW5kZXggYzA4MjIxYzQyMTAuLmRiYjQ3NGQ3OTJiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IGMzYzRhMjE5ZTY3Li40YjA1ZDhlOTNkMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtOTQsMTAgKzk0LDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCi0gICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggNmY3OWFjOWMwMWEuLjI1ZGU5NmY5NTYxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1AQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotIAotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAotaW5kZXggNThkZDE4Yjg5ZjMuLjExMmJhOWNkNzY0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLUBAIC0yMiw3ICsyMiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKTsJCQkJXAotICAgfSB3aGlsZSAoMCkKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCi0gCi0gI2RlZmluZSBNVVNMX0FCSV9TVUZGSVggXAotICAgIiV7bWFiaT1pbHAzMjotc2Z9IiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA5OTQ2ZDNmZWQ5NC4uNDVhOWE3Y2FlNTkgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQyMywyNCArNDIzLDE5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWIvbGQuc28uMSIKLS0KLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCi0gI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSIle21hYmk9ZWxmdjE6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMTsiIFwKLS0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjJ9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKLSAjZWxzZQotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMX0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjI6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjF9IgotICNlbmRpZgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiL2xpYi9sZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSNjQKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSAKLSAjdW5kZWYgIERFRkFVTFRfQVNNX0VORElBTgotICNpZiAoVEFSR0VUX0RFRkFVTFQgJiBNQVNLX0xJVFRMRV9FTkRJQU4pCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1pbmRleCBjOTg5N2I3YWNhNS4uODJmMjc1MzE5Y2MgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc2gvbGludXguaAotQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKLSAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggMDg0NzZmMWQ5NGQuLjgwNDQwZTcxMmFkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLUBAIC04NCw3ICs4NCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUgKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7Ci0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAle3NoYXJlZDotc2hhcmVkfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotaW5kZXggNzg5ZDFkZjRiZDUuLmI5MjBjNjgwZmIxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1AQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNpZmRlZiBTUEFSQ19CSV9BUkNICi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDUzOTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAyY2IyMjdjZDgwNjljNzMyNDIyODZmNjQxODNmYjIwM2Y4ZDI2MThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8zNl0gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KLQotVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCi1idWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKLQotaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAotCi1UaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCi1pdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAotd291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCi1UaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCi0kKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDQxZjBmNTkyZmY0Li4wMDY0YTI4MjQ4OCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtMzUzNyw3ICszNTM3LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCi0gIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKLSAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCi0gCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCi0tCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKLSsJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKLSAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAotIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKLSAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEzLURpc2FibGUtc2R0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxYTYzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEzLURpc2FibGUtc2R0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gYWVhNWZmYTlkNzA0ZjRlYjhmYTkzMzY2ODg0ZDNjMjZhMWRiZWM0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMzZdIERpc2FibGUgc2R0LgotCi1XZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCi1JdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQotc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCi1idXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KLQotUlAgMjAxMi84LzcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KLS0tLQotIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggZTNiY2Y4YWJlOWEuLjFmMWQyMmNhNjY2IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI5MzMyLDEyICsyOTMzMiwxMiBAQCBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KLSBoYXZlX3N5c19zZHRfaD1ubwotLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0tCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0tCi0tZmkKLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIwotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjCi0rI2ZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDJlYmMzNzdhNzRkLi5kZGM4NTE5NzU4OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01OTk1LDE1ICs1OTk1LDE1IEBAIGZpCi0gQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCi0gCi0gIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgotLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLS1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotLWhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLS0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotLWZpCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0rI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKLSsjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLSsjaGF2ZV9zeXNfc2R0X2g9bm8KLSsjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0rIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0rIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQotKyNmaQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSAKLSAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KLSAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDVhY2Y3OWNiYTU0Li4xOTFiYzZjNTc5NiAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMjA4NSwxMSArMjIwODUsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCBkYWRkODgyN2I0OS4uNmIxY2U5OTU3ZDMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1AQCAtMjMwLDcgKzIzMCw3IEBAIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NFU1NPUlNfT05MTgotIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NfT05MTgotIEdMSUJDWFhfQ0hFQ0tfUFRIUkVBRFNfTlVNX1BST0NFU1NPUlNfTlAKLSBHTElCQ1hYX0NIRUNLX1NZU0NUTF9IV19OQ1BVCi0tR0xJQkNYWF9DSEVDS19TRFRfSAotKyNHTElCQ1hYX0NIRUNLX1NEVF9ICi0gCi0gIyBDaGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCi0gQUNfQ0hFQ0tfSEVBREVSUyhbZW5kaWFuLmggZXhlY2luZm8uaCBmbG9hdC5oIGZwLmggaWVlZWZwLmggaW50dHlwZXMuaCBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE0LWxpYnRvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE0LWxpYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhOGYzYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNC1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA2YzRkMGMzMDNlYmMzZTFjN2U1NTRkNTRhOGJiODA3ZDc3ZWQ0MWZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8zNl0gbGlidG9vbAotCi1saWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Ci13aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCi0KLVRoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgotQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKLWZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCi0KLWZ1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKLXRvIGZpbHRlciB0aGUgemVybyBjYXNlLgotCi1SUCAyMDEyLzgvMjQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsdG1haW4uc2ggfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDc5ZjliYTg5YWY1Li44ZTIyMmY3YzE2YiAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCi0gCi0gICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgotKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KLSsJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgotKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsgICAgICBmaQotIAotICAgICAgIG9sZGxpYnM9Ci0gICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDZhZTI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYzU2NjJmZjFlN2RlYTIyOTFiOWNiN2E4M2NmZmYzMDAxZGQzMWY1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMzZdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGU0YWRlMmUyYWIwLi4xMDg4NjNmNjlkMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtOTEsMTAgKzkxLDE0IEBACi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKLSAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgotIAotKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLwotKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQwotKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCi0rCi0gLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KLSAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCi0gI3VuZGVmICBMSU5LX1NQRUMKLS0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAotKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAotICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAotIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQotIAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTBjYWVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGUzYjY5M2I5ZDZkYzk0OTZmN2M5OGExM2IyODE4MmQyMzA4NDIxNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAotU3ViamVjdDogW1BBVENIIDE2LzM2XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgotIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotCi1Vc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLXNvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDFmMWQyMmNhNjY2Li45MTFkZTJjZjAxNyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMjMyMSwxMCArMTIzMjEsMjAgQEAgZG9uZQotIHRtYWtlX2ZpbGVfPQotIGZvciBmIGluICR7dG1ha2VfZmlsZX0KLSBkbwotLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLS0JdGhlbgotLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotLQlmaQotKyAgY2FzZSAkZiBpbgotKyAgICAqL3QtbGludXg2NCApCi0rICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgKiApCi0rICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotIGRvbmUKLSB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKLSAKLUBAIC0xMjMzNSw2ICsxMjM0NSwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBkZGM4NTE5NzU4OC4uYjQxM2FlOWJmMjUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTk0OCwxMCArMTk0OCwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTE5NjIsNiArMTk3MiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKLSB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgotIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgY2FzZSAkZiBpbgotKyAgICAqL2xpbnV4NjQuaCApCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgOzsKLSAgICAgLi8qICkKLSAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDFkMWQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMDlkOWNjYzFkNDcxMDIwOTQ5ZDEyODVhNTI3NmYxNzUwNGZkNjBkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjM5OjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMzZdIEF2b2lkIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhCi0gaG9zdCBwYXRoCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOGUyMjJmN2MxNmIuLjBhOTNiNGU1YzNiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSsJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCi0rCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KLSsJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICAgIGRpcj0iJGxpYmRpciIKLSAJICAgIGFic2Rpcj0iJGxpYmRpciIKLSAJICBmaQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOC1leHBvcnQtQ1BQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjcyOGVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTgtZXhwb3J0LUNQUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gOTg3MzM4Y2Q4NDdhNzIzZGU1MzNiYjMxN2U0NTJhNjBiMWU1MjE2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMzZdIGV4cG9ydCBDUFAKLQotVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCi1idWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKLWluIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKLQotY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCi1jb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKLWNvbmZpZ3VyZTozNjY2OiAkPyA9IDAKLWNvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCi1jb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKLWNvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKLWNvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKLWNvbmZpZ3VyZTozODc2OiAkPyA9IDAKLQotTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCi11c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgotaGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKLWludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCi1mYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KLQotVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKLWVudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKLXRoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCi1hdm9pZCB0aGUgcHJvYmxlbS4KLQotUlAgMjIvMDgvMjAxMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA2NGUwOTFiYTcxZC4uMjU1ODIyZTNmMjcgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAotIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzZjllOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gZDI3YmE0OWUyZTVjNjA4YzQzMjY1NDYyZDY4MzEzNjNjYzdmNTY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjI1OjExICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMzZdIEVuc3VyZSB0YXJnZXQgZ2NjIGhlYWRlcnMgY2FuIGJlIGluY2x1ZGVkCi0KLVRoZXJlIGFyZSBhIGZldyBoZWFkZXJzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBPcGVuRW1iZWRkZWQKLWdjYy1ydW50aW1lIHRhcmdldCAob21wLmgsIHNzcC8qLmgpLiBCZWluZyBpbnN0YWxsZWQgZnJvbSBhIHJlY2lwZQotYnVpbHQgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB0aGVzZSBhcmUgd2l0aGluIHRoZSB0YXJnZXQKLXN5c3Jvb3QgYW5kIG5vdCBjcm9zcy9uYXRpdmVzZGs7IHRodXMgdGhleSB3ZXJlbid0IGFibGUgdG8gYmUKLWZvdW5kIGJ5IGdjYyB3aXRoIHRoZSBleGlzdGluZyBzZWFyY2ggcGF0aHMuIEFkZCBzdXBwb3J0IGZvcgotcGlja2luZyB1cCB0aGVzZSBoZWFkZXJzIHVuZGVyIHRoZSBzeXNyb290IHN1cHBsaWVkIG9uIHRoZSBnY2MKLWNvbW1hbmQgbGluZSBpbiBvcmRlciB0byByZXNvbHZlIHRoaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArKwotIGdjYy9jcHBkZWZhdWx0LmMgfCA0ICsrKysKLSBnY2MvZGVmYXVsdHMuaCAgIHwgOSArKysrKysrKysKLSBnY2MvZ2NjLmMgICAgICAgIHwgNyAtLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTYxOCw2ICs2MTgsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi0gCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCi0gbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLStsaWJzdWJkaXJfdGFyZ2V0ID0gJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCi0gbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yODY2LDYgKzI4NjcsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkCi0gCi0gUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCi0gICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAotKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAotICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAotICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCi0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZQotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0rICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0gICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBmOTZkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDgzYmNkNGNjNDdhZTYzOTcxYzg4OGMxMTdhYmQwMGRmZDUwNjUzMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIwLzM2XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCi0KLXNpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgotCi1UaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0oUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQotaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKLQotUlAKLTIwMTIvMDkvMjIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCi0gbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotaW5kZXggYzFiN2M3MzkzNGEuLmVmNDNkNjJjMDdhIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLUBAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0gCi0tTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUwkJPQotIE1fU0laRQkJPSAtRE49JChQQVRfTikKLSBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1pbmRleCAyOTMyNGUzZTBhYy4uZDVjZGI0MjU5ZWYgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotQEAgLTQxNCw3ICs0MTQsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKLSBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTID0KLSBNX1NJWkUgPSAtRE49JChQQVRfTikKLSBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzZjYTI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gNjY3Y2M4ZDQzZThmYjRhYzA5NjU0ZWU0MDhkYTQ4MmY5NmIwOTU4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8zNl0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgotICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAotCi1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDBhOTNiNGU1YzNiLi42ZGU2ZWQyZjlhMCAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKLSAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0rCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWI5MTUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMjc5YzRkZTQ4ZTNmZDYxZTJmMjY4Nzg3ZWQzZjFkNjllZDkyMjRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE1OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMzZdIFVzZSBTWVNURU1MSUJTX0RJUiByZXBsYWNlbWVudCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcKLSBiYXNlX2xpYmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggNWU4YjM0ZGVkMDMuLjdlNjI4YmY2NjFlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKLSAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgxMTMwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMTI3N2QxMjA1ODMzNDA4NzQ0MzgyOGRmZDU3ZDQ0ZTNiMWRmY2M5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvMzZdIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IDdlNjI4YmY2NjFlLi4xNzE3Y2JlNTQ3MSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0tI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKLSAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk4YjA5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNGEwNDg3YWQ3NWFjY2Q3ODBkZDE1NWFhNTkwODZjYzRiMTFjZmM0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMzZdIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKLQotKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KLSAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQotICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgotKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKLSAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKLSAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCi0gW3JwYXRoc10KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQotIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCi1pbmRleCA3MmM2YWVhZDQ3NS4uNDJhODc3NDBiMzEgMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5hbQotQEAgLTM3LDggKzM3LDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0gCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gCi0gaWYgRU5BQkxFX1BMVUdJTgotIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KLWluZGV4IDcxMDRiNjQ5MDI2Li4yMTAzYzQ3NzQ2OCAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5pbgotKysrIGIvbGliY2MxL01ha2VmaWxlLmluCi1AQCAtMzkzLDggKzM5Myw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIEBFTkFCTEVfUExVR0lOX1RSVUVAcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQotIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCi0gc2hhcmVkX3NvdXJjZSA9IGNhbGxiYWNrcy5jYyBjYWxsYmFja3MuaGggY29ubmVjdGlvbi5jYyBjb25uZWN0aW9uLmhoIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE2MmJjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTMgKzAsMCBAQAotRnJvbSBhMTgzYzgyZWEyYWY5MzRhOGQzMDA1NWE3OTFkYzFkODBjOTA2N2E5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzozOTo1NCArMDAwMAotU3ViamVjdDogW1BBVENIIDI1LzM2XSBoYW5kbGUgc3lzcm9vdCBzdXBwb3J0IGZvciBuYXRpdmVzZGstZ2NjCi0KLUJlaW5nIGFibGUgdG8gYnVpbGQgYSBuYXRpdmVzZGsgZ2NjIGlzIHVzZWZ1bCwgcGFydGljdWxhcmx5IGluIGNhc2VzCi13aGVyZSB0aGUgaG9zdCBjb21waWxlciBtYXkgYmUgb2YgYW4gaW5jb21wYXRpYmxlIHZlcnNpb24gKG9yIGEgMzIKLWJpdCBjb21waWxlciBpcyBuZWVkZWQpLgotCi1TYWRseSwgYnVpbGRpbmcgbmF0aXZlc2RrLWdjYyBpcyBub3Qgc3RyYWlnaHQgZm9yd2FyZC4gV2UgaW5zdGFsbAotbmF0aXZlc2RrLWdjYyBpbnRvIGEgcmVsb2NhdGFibGUgbG9jYXRpb24gYW5kIHRoaXMgbWVhbnMgdGhhdCBpdHMKLWxpYnJhcnkgbG9jYXRpb25zIGNhbiBjaGFuZ2UuICJOb3JtYWwiIHN5c3Jvb3Qgc3VwcG9ydCBkb2Vzbid0IGhlbHAKLWluIHRoaXMgY2FzZSBzaW5jZSB0aGUgdmFsdWVzIG9mIHBhdGhzIGxpa2UgImxpYmRpciIgY2hhbmdlLCBub3QganVzdAotYmFzZSByb290IGRpcmVjdG9yeSBvZiB0aGUgc3lzdGVtLgotCi1JbiBvcmRlciB0byBoYW5kbGUgdGhpcyB3ZSBkbyB0d28gdGhpbmdzOgotCi1hKSBBZGQgJXIgaW50byBzcGVjIGZpbGUgbWFya3VwIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbmplY3RlZCBwYXRocwotICAgc3VjaCBhcyBTWVNURU1MSUJTX0RJUiAoc2VlIGdjY19tdWx0aWxpYl9zZXR1cCgpKS4KLWIpIEFkZCBvdGhlciBwYXRocyB3aGljaCBuZWVkIHJlbG9jYXRpb24gaW50byBhIC5nY2NyZWxvY3ByZWZpeCBzZWN0aW9uCi0gICB3aGljaCB0aGUgcmVsb2NhdGlvbiBjb2RlIHdpbGwgbm90aWNlIGFuZCBhZGp1c3QgYXV0b21hdGljYWxseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1SUCAyMDE1LzcvMjgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jcHBkZWZhdWx0LmMgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCi0gZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKystLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKLWluZGV4IDk4MGUyYmQ0N2E3Li4zOWI2MDU5ZWZkYyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC0zNSw2ICszNSwzMCBAQAotICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAjZW5kaWYKLSAKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7Ci0rI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7Ci0rI2VuZGlmCi0rI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7Ci0rI2VuZGlmCi0rCi0gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKLSA9IElOQ0xVREVfREVGQVVMVFM7Ci1AQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotID0gewotICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAotICNlbmRpZgotICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLS0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCi0tICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KLS0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCi0rICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAotICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQotIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLwotICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKLUBAIC04NSwxNiArMTA5LDE2IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNlbmRpZgotICNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotICAgICAvKiBPbmUgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBDUk9TU19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBDUk9TU19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotICAgICAvKiBBbm90aGVyIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgVE9PTF9JTkNMVURFX0RJUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVJWQVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0gICAgIC8qIC91c3IvaW5jbHVkZSBjb21lcyBkZWFkIGxhc3QuICAqLwotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9Ci0gICB9OwotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmggYi9nY2MvY3BwZGVmYXVsdC5oCi1pbmRleCBlMmQ5NmYxZTc2MC4uMjlmYTVmODE1YzggMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5oCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5oCi1AQCAtMzMsNyArMzMsOCBAQAotIAotIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKLSB7Ci0tICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKwotICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQotIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLwotICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDFhMzcwNGIyNzYzLi5kYjBlMjkzNDAzOCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjUzLDYgKzI1Myw4IEBAIEZJTEUgKnJlcG9ydF90aW1lc190b19maWxlID0gTlVMTDsKLSAjZW5kaWYKLSBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gREVGQVVMVF9UQVJHRVRfU1lTVEVNX1JPT1Q7Ci0gCi0rc3RhdGljIGNoYXIgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNURU1MSUJTX0RJUjsKLSsKLSAvKiBOb256ZXJvIG1lYW5zIHBhc3MgdGhlIHVwZGF0ZWQgdGFyZ2V0X3N5c3RlbV9yb290IHRvIHRoZSBjb21waWxlci4gICovCi0gCi0gc3RhdGljIGludCB0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZDsKLUBAIC01MjcsNiArNTI5LDcgQEAgb3Igd2l0aCBjb25zdGFudCB0ZXh0IGluIGEgc2luZ2xlIGFyZ3VtZW50LgotICAlRyAgICAgcHJvY2VzcyBMSUJHQ0NfU1BFQyBhcyBhIHNwZWMuCi0gICVSICAgICBPdXRwdXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGFyZ2V0X3N5c3RlbV9yb290IGFuZAotICAgICAgICAgdGFyZ2V0X3N5c3Jvb3Rfc3VmZml4LgotKyAlciAgICAgT3V0cHV0IHRoZSBiYXNlIHBhdGggdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeAotICAlUyAgICAgcHJvY2VzcyBTVEFSVEZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgUyBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCi0gICVFICAgICBwcm9jZXNzIEVOREZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgRSBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCi0gICVDICAgICBwcm9jZXNzIENQUF9TUEVDIGFzIGEgc3BlYy4KLUBAIC0xNDkzLDEwICsxNDk2LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7Ci0gICAgZ2NjX2V4ZWNfcHJlZml4IGlzIHNldCBiZWNhdXNlLCBpbiB0aGF0IGNhc2UsIHdlIGtub3cgd2hlcmUgdGhlCi0gICAgY29tcGlsZXIgaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdXNlIHBhdGhzIHJlbGF0aXZlIHRvIHRoYXQKLSAgICBsb2NhdGlvbiBpbnN0ZWFkLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfZXhlY19wcmVmaXggPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfbGliZXhlY19wcmVmaXggPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfYmluZGlyX3ByZWZpeCA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2V4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLStzdGF0aWMgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0gCi0gLyogRm9yIG5hdGl2ZSBjb21waWxlcnMsIHRoZXNlIGFyZSB3ZWxsLWtub3duIHBhdGhzIGNvbnRhaW5pbmcKLSAgICBjb21wb25lbnRzIHRoYXQgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IgY3Jvc3MKLUBAIC0xNTA0LDkgKzE1MDcsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX2V4ZWNfcHJlZml4ID0gTURfRVhFQ19QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXggPSBNRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4XzEgPSBNRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMQotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzIKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMjsKLSAKLSAvKiBBIHJlbGF0aXZlIHBhdGggdG8gYmUgdXNlZCBpbiBmaW5kaW5nIHRoZSBsb2NhdGlvbiBvZiB0b29scwotQEAgLTU5MTUsNiArNTkxOCwxMSBAQCBkb19zcGVjXzEgKGNvbnN0IGNoYXIgKnNwZWMsIGludCBpbnN3aXRjaCwgY29uc3QgY2hhciAqc29mdF9tYXRjaGVkX3BhcnQpCi0gCSAgICAgIH0KLSAJICAgIGJyZWFrOwotIAotKyAgICAgICAgICBjYXNlICdyJzoKLSsgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgsCi0rCQkgICAgICBzdHJsZW4gKHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgpKTsKLSsgICAgICAgICAgICBicmVhazsKLSsKLSAJICBjYXNlICdTJzoKLSAJICAgIHZhbHVlID0gZG9fc3BlY18xIChzdGFydGZpbGVfc3BlYywgMCwgTlVMTCk7Ci0gCSAgICBpZiAodmFsdWUgIT0gMCkKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRlMjA2ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBkYWI0ZGIxNGUzMTlmMzIzOWEyYjRjN2QxZmJmMjk3MTkzNmUyN2JhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDI2LzM2XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCi0gbXVsdGlsaWIuCi0KLVdlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bwotPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLwotd2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCi1jb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCi10aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKLWNvLWV4aXN0IG9uIHRhcmdldC4KLQotV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCi1mb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCi08dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgotbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4Ci1pcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCi0KLVRoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgotaXM6Ci0KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotd2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcwotd2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCi0KLVRoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAotYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgotCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVJQIDIwMTUvNy8zMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkYjBlMjkzNDAzOC4uMWMyMWQxYjA4ZWIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTI2MTAsNyArMjYxMCw3IEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCi0gICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAJewotIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOwotLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOwotIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOwotIAl9Ci0gCi1AQCAtMjYyMiw2ICsyNjIyLDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCi0gCSAgLyogTG9vayBmaXJzdCBpbiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5LiAgKi8KLSAJICBpZiAoIXNraXBfbXVsdGlfZGlyKQotIAkgICAgewotKwkgICAgICBpZiAoIShwbC0+b3NfbXVsdGlsaWIgPyBza2lwX211bHRpX29zX2RpciA6IHNraXBfbXVsdGlfZGlyKSkKLSsJICAgICAgICB7Ci0rCSAgICAgICAgICBjb25zdCBjaGFyICp0aGlzX211bHRpOwotKwkgICAgICAgICAgc2l6ZV90IHRoaXNfbXVsdGlfbGVuOwotKwotKwkgICAgICAgICAgaWYgKHBsLT5vc19tdWx0aWxpYikKLSsJCSAgICB7Ci0rCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfb3NfZGlyOwotKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9vc19kaXJfbGVuOwotKwkJICAgIH0KLSsJICAgICAgICAgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfZGlyOwotKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9kaXJfbGVuOwotKwkJICAgIH0KLSsKLSsJICAgICAgICAgIC8qIExvb2sgaW4gbXVsdGlsaWIgTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeSBmaXJzdCAqLwotKwkgICAgICAgICAgaWYgKHRoaXNfbXVsdGlfbGVuKQotKwkgICAgICAgICAgICB7Ci0rCQkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIHRoaXNfbXVsdGksIHRoaXNfbXVsdGlfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgbWVtY3B5IChwYXRoICsgbGVuICsgdGhpc19tdWx0aV9sZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKLSsJICAgICAgICAgICAgICAgIGlmIChyZXQpCi0rCQkgICAgICAgICAgYnJlYWs7Ci0rCSAgICAgICAgICAgIH0KLSsJICAgICAgICB9Ci0rCi0gCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0gCSAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKLSAJICAgICAgaWYgKHJldCkKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDg5ZThlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotRnJvbSA4ZTg0YmIwOWQyYjdhNjA0ODdhMzBlNDM4YmIxMDlmMzFjMmMyNTRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0Mjo0NSArMDAwMAotU3ViamVjdDogW1BBVENIIDI3LzM2XSBGaXggdmFyaW91cyBfRk9SX0JVSUxEIGFuZCByZWxhdGVkIHZhcmlhYmxlcwotCi1XaGVuIGRvaW5nIGEgRk9SX0JVSUxEIHRoaW5nLCB5b3UgaGF2ZSB0byBvdmVycmlkZSBDRkxBR1Mgd2l0aAotQ0ZMQUdTX0ZPUl9CVUlMRC4gQW5kIGlmIHlvdSB1c2UgQysrLCB5b3UgYWxzbyBoYXZlIHRvIG92ZXJyaWRlCi1DWFhGTEFHUyB3aXRoIENYWEZMQUdTX0ZPUl9CVUlMRC4KLVdpdGhvdXQgdGhpcywgd2hlbiBidWlsZGluZyBmb3IgbWluZ3csIHlvdSBlbmQgdXAgdHJ5aW5nIHRvIHVzZQotdGhlIG1pbmd3IGhlYWRlcnMgZm9yIGEgaG9zdCBidWlsZC4KLQotVGhlIHNhbWUgZ29lcyBmb3Igb3RoZXIgdmFyaWFibGVzIGFzIHdlbGwsIHN1Y2ggYXMgQ1BQRkxBR1MsCi1DUFAsIGFuZCBHTVBJTkMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gICAgICB8IDYgKysrKysrCi0gTWFrZWZpbGUudHBsICAgICB8IDUgKysrKysKLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCAyNTU4MjJlM2YyNy4uOWRjMGRmZjA0NzQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAotQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1AQCAtNzc1LDYgKzc4MCw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKLSAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKLSAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAotIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCi0rCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCi0gCSJGTEVYPSQoRkxFWCkiIFwKLSAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAotaW5kZXggNDFjYWU1OGEyNjcuLmQzZjZiNzlhY2RjIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKLUBAIC0xNzMsNiArMTc0LDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xOTAsNiArMTk0LDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggMjE0NzI3NDVjMmMuLjhjOTNmMDNmZmRjIDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC04MDUsNyArODA1LDcgQEAgQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKLSBCVUlMRF9OT19QSUVfRkxBRyA9IEBCVUlMRF9OT19QSUVfRkxBR0AKLSBCVUlMRF9MREZMQUdTICs9ICQoQlVJTERfTk9fUElFX0ZMQUcpCi0gQlVJTERfQ1BQRkxBR1M9IC1JLiAtSSQoQEQpIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpLyQoQEQpIFwKLS0JCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTKQotKwkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1NfRk9SX0JVSUxEKQotIAotICMgQWN0dWFsIG5hbWUgdG8gdXNlIHdoZW4gaW5zdGFsbGluZyBhIG5hdGl2ZSBjb21waWxlci4KLSBHQ0NfSU5TVEFMTF9OQU1FIDo9ICQoc2hlbGwgZWNobyBnY2N8c2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJykKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggOTExZGUyY2YwMTcuLjMyNWFjZTM0Y2RmIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTExOTY1LDcgKzExOTY1LDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggYjQxM2FlOWJmMjUuLjcyYTZjOTUxMjFiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE3NDMsNyArMTc0Myw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkOTJhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA1NjQ3Zjc3M2UyOGI1MjhhNjc4MDBlZjA2Y2E0NDczMGY5ZjVkYzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMiBGZWIgMjAxNiAxMDoyNjoxMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDI4LzM2XSBuaW9zMjogRGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1pbmRleCA2OTg3MzRhZGQzNS4uZWVlZTYwZWNmZWEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgotIAotICN1bmRlZiBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5ZTVhMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIDQ3NDA0M2NhN2EwNjRjYTdiMGEzMjMwOGEwZWQ2ZjdjNTQ2ZjE3YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNyBKdW4gMjAxNyAxODoxMDo1NCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI5LzM2XSBBZGQgc3NwX25vbnNoYXJlZCB0byBsaW5rIGNvbW1hbmRsaW5lIGZvciBtdXNsIHRhcmdldHMKLQotd2hlbiAtZnN0YWNrLXByb3RlY3RvciBvcHRpb25zIGFyZSBlbmFibGVkIHdlIG5lZWQgdG8KLWxpbmsgd2l0aCBzc3Bfc2hhcmVkIG9uIG11c2wgc2luY2UgaXQgZG9lcyBub3QgcHJvdmlkZQotdGhlIF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwoKSBzbyBlc3NlbnRpYWxseSBpdCBwcm92aWRlcwotbGlic3NwIGJ1dCBub3QgbGlic3NwX25vbnNoYXJlZCBzb21ldGhpbmcgbGlrZQotVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQX0JVVF9OT1RfU1NQX05PTlNIQVJFRAotIHdoZXJlLWFzIGZvciBnbGliYyB0aGUgbmVlZGVkIHN5bWJvbHMKLWFyZSBhbHJlYWR5IHByZXNlbnQgaW4gbGliY19ub25zaGFyZWQgbGlicmFyeSB0aGVyZWZvcmUKLXdlIGRvIG5vdCBuZWVkIGFueSBsaWJyYXJ5IGhlbHBlciBvbiBnbGliYyBiYXNlZCBzeXN0ZW1zCi1idXQgbXVzbCBuZWVkcyB0aGUgbGlic3NwX25vc2hhcmVkIGZyb20gZ2NjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgIHwgIDcgKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4LmggICB8IDEwICsrKysrKysrKysKLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggfCAxMCArKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKLWluZGV4IDRiMDVkOGU5M2QxLi4wY2ExMTdlMmVkNCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtMTk1LDYgKzE5NSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAxLCAwLCAwIH0sCQlcCi0gICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CQkJCVwKLSAgIH0KLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsKLSAjZW5kaWYKLSAKLSAjaWYgKERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQykgJiYgZGVmaW5lZCAoU0lOR0xFX0xJQkMpIC8qIHVDbGludXggKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAotaW5kZXggZmZjZWIzMmJmNjUuLmM4MmNiMmFkMDViIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAotQEAgLTk0LDYgKzk0LDE2IEBACi0gCQkJCQkgIiAtbSBlbGYzMnBwY2xpbnV4IikKLSAjZW5kaWYKLSAKLSsvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KLSsjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKyNlbmRpZgotKwotICN1bmRlZiBMSU5LX09TX0xJTlVYX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQyBMSU5LX09TX0xJTlVYX0VNVUwgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXshc3RhdGljLXBpZTogXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggNDVhOWE3Y2FlNTkuLmQxZTg4YTQwZTgyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC00NTYsNiArNDU2LDE2IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gCQkJCQkgICAiIC1tIGVsZjY0cHBjIikKLSAjZW5kaWYKLSAKLSsvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KLSsjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKyNlbmRpZgotKwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDMzIgTElOS19PU19MSU5VWF9FTVVMMzIgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAotICAgJXshc3RhdGljLXBpZTogXAotICAgICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZWFiNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gNDc0NjdmM2FiMGZiMmYyZmNlZGU4MTA2MGZlOGJiMzM5ZDA5MDllYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAwMDo1NDowNSArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzEyXSBsZGJsMTI4IGNvbmZpZwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCAxMyArKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggNjEyMWUxNjMyNTkuLjA3ZmY4NTk3ZDQ4IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI5MzA5LDYgKzI5MzA5LDE1IEBAIGlmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgotIGVsc2UKLSAKLSsgICAgICBjYXNlICIkdGFyZ2V0IiBpbgotKwlzMzkwKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLSsJICA7OwotKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubwotKwkgIDs7Ci0rCSopCi0rCi0gaWYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZ3QgMiBcCi0gICB8fCAoIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWVxIDIgJiYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9taW5vciAtZ2UgNCApOyB0aGVuIDoKLSAgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLUBAIC0yOTMyMCw2ICsyOTMyOSwxMCBAQCBlbHNlCi0gICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotIAotIGZpCi0rCi0rCSAgOzsKLSsgICAgICBlc2FjCi0rCi0gZmkKLSAKLSAgICAgOzsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggYjA2NmNjNjA5ZTEuLjZjMTVlZDg5OGMwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU5NzEsMTMgKzU5NzEsMjUgQEAgY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAotICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCi0gCQkgICAgICBbdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdF0pXSwKLS0gICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsCi0rICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLCBbCi0rICAgICAgY2FzZSAiJHRhcmdldCIgaW4KLSsJczM5MCotKi1saW51eC1tdXNsKikKLSsJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi0rCSAgOzsKLSsJcG93ZXJwYyotKi1saW51eC1tdXNsKikKLSsJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KLSsJICA7OwotKwkqKV0KLSAgICAgICBbR0NDX0dMSUJDX1ZFUlNJT05fR1RFX0lGRUxTRShbMl0sIFs0XSwgW2djY19jdl90YXJnZXRfbGRibDEyOD15ZXNdLCBbCi0gICAgICAgW2djY19jdl90YXJnZXRfbGRibDEyOD1ubwotICAgICAgIGdyZXAgJ15bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKl9fTE9OR19ET1VCTEVfTUFUSF9PUFRJT05BTCcgXAotICAgICAgICAgJHRhcmdldF9oZWFkZXJfZGlyL2JpdHMvd29yZHNpemUuaCA+IC9kZXYvbnVsbCAyPiYxIFwKLSAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi0tICAgICAgXV0pXSkKLSsgICAgICBdXSldCi0rICAgICAgWwotKwkgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIF0pCi0gICAgIDs7Ci0gZXNhYwotIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2xkYmwxMjggPSB4eWVzOyB0aGVuCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzIxNDFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAyNjZkY2M3OGU0ZDlkMzhkZTI4MDkxMTg5NzdkOTdkYzkyNzBjZjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDMxLzM2XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotaW5kZXggMDk5YmYyM2U2MmYuLjQzNmIyNzdhNzlmIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLSsrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1AQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKLSAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCi0gCi0gU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAotLQkkKFNITElCX0xERkxBR1MpIFwKLSsJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKLSAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCi0gCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAotIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkZTAxNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIDk5NzViNmVkMzU3MGJiZjdjN2QyZDgyZjRkNWY3MzNkMjRjY2FjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFNhdCwgMjQgT2N0IDIwMTUgMjA6MDk6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi8zNl0gbGliZ2NjX3M6IFVzZSBhbGlhcyBmb3IgX19jcHVfaW5kaWNhdG9yX2luaXQgaW5zdGVhZCBvZgotIHN5bXZlcgotCi1BZGFwdGVyIGZyb20KLQotaHR0cHM6Ly9nY2MuZ251Lm9yZy9tbC9nY2MtcGF0Y2hlcy8yMDE1LTA1L21zZzAwODk5Lmh0bWwKLQotVGhpcyBmaXggd2FzIGRlYmF0ZWQgYnV0IGhhc250IGJlZW4gYXBwbGllZCBnY2MgdXBzdHJlYW0gc2luY2UKLXRoZXkgZXhwZWN0IG11c2wgdG8gc3VwcG9ydCAnQCcgaW4gc3ltYm9sIHZlcnNpb25pbmcgd2hpY2ggaXMKLWEgc3VuL2dudSB2ZXJzaW9uaW5nIGV4dGVudGlvbi4gVGhpcyBwYXRjaCBob3dldmVyIGF2b2lkcyB0aGUKLW5lZWQgZm9yIHRoZSAnQCcgc3ltYm9scyBhdCBhbGwKLQotbGliZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvY3B1aW5mby5jIChfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCk6IEFkZC4KLQkoX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjApOiBSZW1vdmUuCi0KLQkqIGNvbmZpZy9pMzg2L3QtbGludXggKEhPU1RfTElCR0NDMl9DRkxBR1MpOiBSZW1vdmUgLURVU0VfRUxGX1NZTVZFUi4KLQotZ2NjL0NoYW5nZWxvZzoKLQotMjAxNS0wNS0xMSAgU3phYm9sY3MgTmFneSAgPHN6YWJvbGNzLm5hZ3lAYXJtLmNvbT4KLQotCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2V4cGFuZF9idWlsdGluKTogTWFrZSBfX2J1aWx0aW5fY3B1X2luaXQKLQljYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluc3RlYWQgb2YgX19jcHVfaW5kaWNhdG9yX2luaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyAgICAgICB8IDQgKystLQotIGxpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgfCA2ICsrKy0tLQotIGxpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4ICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotaW5kZXggMmIzNzI5NmU1MzcuLmRkMzgwZGRiYTg4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwotQEAgLTM2NjU4LDEwICszNjY1OCwxMCBAQCBpeDg2X2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgcnR4IHN1YnRhcmdldCwKLSAgICAgewotICAgICBjYXNlIElYODZfQlVJTFRJTl9DUFVfSU5JVDoKLSAgICAgICB7Ci0tCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbiBsaWJnY2MuICovCi0rCS8qIE1ha2UgaXQgY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbiBsaWJnY2MuYS4gKi8KLSAJdHJlZSBjYWxsX2V4cHIsIGZuZGVjbCwgdHlwZTsKLSAgICAgICAgIHR5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKGludGVnZXJfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOyAKLS0JZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0IiwgdHlwZSk7Ci0rCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCIsIHR5cGUpOwotIAljYWxsX2V4cHIgPSBidWlsZF9jYWxsX2V4cHIgKGZuZGVjbCwgMCk7IAotIAlyZXR1cm4gZXhwYW5kX2V4cHIgKGNhbGxfZXhwciwgdGFyZ2V0LCBtb2RlLCBFWFBBTkRfTk9STUFMKTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLWluZGV4IGQ2Y2IyZGU2MjY1Li5jZTA0ZWY3ODIwNSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMKLUBAIC01MDQsNyArNTA0LDcgQEAgX19jcHVfaW5kaWNhdG9yX2luaXQgKHZvaWQpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tI2lmIGRlZmluZWQgU0hBUkVEICYmIGRlZmluZWQgVVNFX0VMRl9TWU1WRVIKLS1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9pbmRpY2F0b3JfaW5pdCwgX19jcHVfaW5kaWNhdG9yX2luaXRAR0NDXzQuOC4wIik7Ci0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfbW9kZWwsIF9fY3B1X21vZGVsQEdDQ180LjguMCIpOwotKyNpZm5kZWYgU0hBUkVECi0raW50IF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsICh2b2lkKQotKyAgX19hdHRyaWJ1dGVfXyAoKHdlYWssIGFsaWFzICgiX19jcHVfaW5kaWNhdG9yX2luaXQiKSkpOwotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLWluZGV4IDg1MDZhNjM1NzkwLi41NjQyOTZmNzg4ZSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci0rKysgYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotQEAgLTMsNSArMyw1IEBACi0gIyB0LXNsaWJnY2MtZWxmLXZlciBhbmQgdC1saW51eAotIFNITElCX01BUEZJTEVTID0gbGliZ2NjLXN0ZC52ZXIgJChzcmNkaXIpL2NvbmZpZy9pMzg2L2xpYmdjYy1nbGliYy52ZXIKLSAKLS1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtODAgLURVU0VfRUxGX1NZTVZFUiAkKENFVF9GTEFHUykKLStIT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtODAgJChDRVRfRkxBR1MpCi0gQ1JUU1RVRkZfVF9DRkxBR1MgKz0gJChDRVRfRkxBR1MpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTlhYzQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotRnJvbSAzOWUyZjYxZDI2MmY5ZjZjN2E5MTA2ODk5OGRlYTgwNzkxZWY2NjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDMzLzM2XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKLQotbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKLXNvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9naW5jbHVkZS9zdGRkZWYuaCB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1pbmRleCBkYTY5MmUxYzAxYS4uOWEwMGMyNjFhZGIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLSsrKyBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAotQEAgLTEyOCw2ICsxMjgsNyBAQCBfVFlQRV93Y2hhcl90OwotICNpZm5kZWYgX19faW50X3B0cmRpZmZfdF9oCi0gI2lmbmRlZiBfR0NDX1BUUkRJRkZfVAotICNpZm5kZWYgX1BUUkRJRkZfVF9ERUNMQVJFRCAvKiBEcmFnb25GbHkgKi8KLSsjaWZuZGVmIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX1BUUkRJRkZfVAotICNkZWZpbmUgX1RfUFRSRElGRl8KLSAjZGVmaW5lIF9UX1BUUkRJRkYKLUBAIC0xMzcsMTAgKzEzOCwxMiBAQCBfVFlQRV93Y2hhcl90OwotICNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCi0gI2RlZmluZSBfR0NDX1BUUkRJRkZfVAotICNkZWZpbmUgX1BUUkRJRkZfVF9ERUNMQVJFRAotKyNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2lmbmRlZiBfX1BUUkRJRkZfVFlQRV9fCi0gI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50Ci0gI2VuZGlmCi0gdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSsjZW5kaWYgLyogX19ERUZJTkVEX3B0cmRpZmZfdCAqLwotICNlbmRpZiAvKiBfUFRSRElGRl9UX0RFQ0xBUkVEICovCi0gI2VuZGlmIC8qIF9HQ0NfUFRSRElGRl9UICovCi0gI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLwotQEAgLTE3OCw2ICsxODEsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNpZm5kZWYgX0dDQ19TSVpFX1QKLSAjaWZuZGVmIF9TSVpFVF8KLSAjaWZuZGVmIF9fc2l6ZV90Ci0rI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLwotICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1NJWkVfVAotQEAgLTE5NCw2ICsxOTgsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNkZWZpbmUgX19faW50X3NpemVfdF9oCi0gI2RlZmluZSBfR0NDX1NJWkVfVAotICNkZWZpbmUgX1NJWkVUXwotKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2lmIGRlZmluZWQgKF9fRnJlZUJTRF9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKLSAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSBcCi1AQCAtMjI4LDYgKzIzMyw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfU0laRV9UICovCi0gI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KLSAjZW5kaWYgLyogX19zaXplX3RfXyAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI3VuZGVmCV9fbmVlZF9zaXplX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLwotIAotQEAgLTI1Nyw2ICsyNjMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKLSAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAotICNpZm5kZWYgX0dDQ19XQ0hBUl9UCi0rI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1dDSEFSX1QKLUBAIC0yNzIsNiArMjc5LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKLSAjZGVmaW5lIF9HQ0NfV0NIQVJfVAotICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAKLSAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXwotICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgotQEAgLTMzNyw2ICszNDUsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7Ci0gI2VuZGlmCi0gI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCi0gI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KLSAjdW5kZWYJX19uZWVkX3djaGFyX3QKLSAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KLSAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZhM2M5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIGFhYTg5NmE1N2IwMDA0YTc0YzFkNDc0ZTc0YjIxZjQxMTQ3YTY1Y2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAyMjozMToyMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDM0LzM2XSBmaXggc2VnbWVudGF0aW9uIGZhdWx0IGluIHByZWNvbXBpbGVkIGhlYWRlciBnZW5lcmF0aW9uCi0KLVByZXZlbnQgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgaW5jb3JyZWN0Ci1zdHJ1Y3R1cmUgdHJ5aW5nIHRvIGFjY2VzcyBuYW1lIG9mIHNvbWUgbmFtZWQgb3BlcmF0b3JzLCBzdWNoIGFzCi1DUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KLXRob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KLQotW1lPQ1RPICMxMTczOF0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliY3BwL2xleC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYwotaW5kZXggZWVkZmNiYjMxNDYuLjE1MDQwYTFiMWYwIDEwMDY0NAotLS0tIGEvbGliY3BwL2xleC5jCi0rKysgYi9saWJjcHAvbGV4LmMKLUBAIC0zMjgwLDExICszMjgwLDI3IEBAIGNwcF9zcGVsbF90b2tlbiAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4sCi0gICAgIHNwZWxsX2lkZW50OgotICAgICBjYXNlIFNQRUxMX0lERU5UOgotICAgICAgIGlmIChmb3JzdHJpbmcpCi0tCXsKLS0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAotLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7Ci0tCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOwotLQl9Ci0rICAgICAgICB7Ci0rICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAotKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOwotKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOwotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCi0rICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOwotKyAgICAgICAgICAgICAgaWYgKHN0cikKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKLSsgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7Ci0rICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotICAgICAgIGVsc2UKLSAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKLSAgICAgICBicmVhazsKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ3MGNiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotRnJvbSAwZjlkNDQ5YzczOWRmMDM3ODJjZTlkMjlmNmI2OGQ5YWY5NzZhNjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUkFHSFVOQVRIIExPTFVSIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+Ci1EYXRlOiBXZWQsIDYgRGVjIDIwMTcgMjI6NTI6MjYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzNS8zNl0gRml4IGZvciB0ZXN0c3VpdGUgZmFpbHVyZQotCi0yMDE3LTExLTE2ICBSYWdodW5hdGggTG9sdXIgIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+Ci0KLQkqIGdjYy5kZy9wcjU2Mjc1LmM6IElmIFNTRSBpcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQKLQkiLW1mcG1hdGgiIGlzIG5vdCBzZXQgdG8gdXNlIFNTRS4gU2V0ICItbWZwbWF0aD0zODciLgotCSogZ2NjLmRnL3ByNjgzMDYuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY4MzA2LTIuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY4MzA2LTMuYzogTGlrZXdpc2UKLQkqIGdjYy5kZy9wcjY5NjM0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jOiBMaWtld2lzZQotCi1JZiAtV2FsbCwgLVdlcnJvciBhcmUgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gdmFyaW91cyB0ZXN0IGNhc2VzIGZhaWwKLXRvIGNvbXBpbGUuCi0KLUlmIFNTRSBpcyBkaXNhYmxlZCwgYmUgc3VyZSB0byAtbWZwbWF0aD0zODcgdG8gcmVzb2x2ZSB0aGlzLgotCi1UaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNoYW5nZXMgdG8gQ2hhbmdlbG9nIGZyb20gdGhlIG9yaWdpbmFsIHBhdGNoLgotVGhpcyB3aWxsIGhlbHAgdXMgYXZvaWQgY29uZmxpY3RzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jICAgICAgICAgIHwgMSArCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyAgICAgIHwgMiArLQotIDE3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi1pbmRleCBiOTAxYmIyYjE5OS4uYTRmNmM5NWUxYTEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCi0gCi0gdHlwZWRlZiBsb25nIGxvbmcgdjJ0dyBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDIgKiBzaXplb2YgKGxvbmcgbG9uZykpKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotaW5kZXggNDY3MmViZTc5ODcuLjJhMzY4YzQ4NGI2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gCi0gc3RydWN0IHsKLSAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLWluZGV4IGY1YThjMTAyY2Y4Li5kZjMzOTBjNjRjMiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLWFsdGl2ZWMgLW1uby12c3giIHsgdGFyZ2V0IHBvd2VycGMqLSotKiB9IH0gKi8KLSAKLSBleHRlcm4gdm9pZCBmbjIoKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLWluZGV4IDU0ZTViNDBmMjIxLi4wODEzMzg5ZTJjMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gCi0gZW51bSBwb3dlcnBjX3BtY190eXBlIHsgUFBDX1BNQ19JQk0gfTsKLSBzdHJ1Y3QgewotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotaW5kZXggNjBhNTYxNDk0NjMuLmJjYzIzZjljY2Q2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1kY2UgLWZzY2hlZHVsZS1pbnNucyAtZm5vLXRyZWUtdnJwIC1mY29tcGFyZS1kZWJ1ZyAtV25vLXBzYWJpIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgc2NoZWR1bGluZyB9ICovCi0gCi0gdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLWluZGV4IDY5ZmRlNTdiZjA2Li43ZjFmMWMwM2VkZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFiaT1zeXN2IiB7IHRhcmdldCAqLSotbWluZ3cqIH0gfSAqLwotIAotIGRvdWJsZSBmb28odm9pZCkgeyByZXR1cm4gMDsgfQkvKiB7IGRnLWVycm9yICJTU0UgZGlzYWJsZWQiIH0gKi8KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLWluZGV4IGVhODk2YjdlYmZkLi5iZjE1NTY5YjgyNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi1AQCAtMSw2ICsxLDcgQEAKLSAvKiBUZXN0IHdoZXRoZXIgYWxsIG9mIHRoZSA2NC1iaXQgZnVuY3Rpb24gc3BlY2lmaWMgb3B0aW9ucyBhcmUgYWNjZXB0ZWQKLSAgICB3aXRob3V0IGVycm9yLiAgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gI2luY2x1ZGUgImZ1bmNzcGVjLTU2LmluYyIKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLWluZGV4IDg1NjFhM2MyNmQ2Li42Mzc3ZjgxNDY0NSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODcgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdXdvcmRfdCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotaW5kZXggNWQ0OWU2ZTc3ZmUuLjFkZTJkYjkyYmRkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIHJ1biB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLWluZGV4IGZhMTc2OWI2MmZiLi5mNzlmYjEyNzI2ZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSBzdHJ1Y3QgQQotIHsgCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotaW5kZXggMmU4OWZmN2Q4MWQuLjYzMzliZjZiNzM2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCi0gCi0gdHlwZWRlZiBkb3VibGUgX192MmRmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLWluZGV4IDYxZjYyODNkYmU5Li4yYzVhNTVmMGFjMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgdGFyZ2V0LzUzNDI1ICovCi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLwotIAotIHR5cGVkZWYgZmxvYXQgX192MnNmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDgpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi1pbmRleCAyMzM2NmQwOTA5ZC4uOTgxMGUzYWJiNzYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0gLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbWF5YmVfeDMyIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKLSB0eXBlZGVmIHVpbnQzMl90IEVsZjMyX1dvcmQ7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi1pbmRleCA5NjAwNmIzZTMzOC4uNDI4N2U0NTM4YmYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgdGFyZ2V0LzU5NjQ0ICovCi0gLyogeyBkZy1kbyBydW4geyB0YXJnZXQgbHA2NCB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gLyogVGhpcyB0ZXN0IHVzZXMgX19idWlsdGluX3RyYXAgKCkgaW5zdGVhZCBvZiBlLmcuIGFib3J0LAotICAgIGJlY2F1c2UgZHVlIHRvIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgaXQgc2hvdWxkIG5vdCBjYWxsCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi1pbmRleCBiZmI4YzQ3MDNlYi4uZWQwNGNmMTgxZjMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB2b2lkIGZvbyAoKQotIHsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi1pbmRleCA0ZTExMmM4OGQwNy4uYmNmYjM5NmE2OGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHJ0bC1vcHRpbWl6YXRpb24vNzA0NjcgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdm9pZCBmb28gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotaW5kZXggNmNkYTE1MzQzMTEuLjI2ZTM3ZjViOGJhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIiB9ICAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIC1tZnBtYXRoPTM4NyIgfSAgKi8KLSAjZGVmaW5lIHZlY3RvcihlbGNvdW50LCB0eXBlKSAgXAotIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKChlbGNvdW50KSpzaXplb2YodHlwZSkpKSkgdHlwZQotIAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRiY2Q5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNzFlOTljMmI1OGE5ZWIwMGNkZDY1YTA0YWViNmZiNzgyMjdlMzI5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgSnVuIDIwMTggMTI6MTA6MjIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNi8zNl0gUmUtaW50cm9kdWNlIHNwZSBjb21tYW5kbGluZSBvcHRpb25zCi0KLVRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHdlIGtlZXAgYWNjZXB0aW5nCi1zcGUgb3B0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NQRSBwb3J0IGlzIHJlbW92ZWQgZnJvbSByczYwMCBwb3J0XQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotaW5kZXggZjRiNWM5MWUxMWYuLjY5ODY5MzUwZmNlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAotQEAgLTM0NSw2ICszNDUsMTggQEAgbWRlYnVnPQotIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQKLSAtbWRlYnVnPQlFbmFibGUgZGVidWcgb3V0cHV0LgotIAotK21zcGUKLStUYXJnZXQgVmFyKHJzNjAwMF9zcGUpIFNhdmUKLStHZW5lcmF0ZSBTUEUgU0lNRCBpbnN0cnVjdGlvbnMgb24gRTUwMC4KLSsKLSttYWJpPXNwZQotK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmkpIFNhdmUKLStVc2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KLSsKLSttYWJpPW5vLXNwZQotK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmksIDApCi0rRG8gbm90IHVzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgotKwotIG1hYmk9YWx0aXZlYwotIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX2FsdGl2ZWNfYWJpKSBTYXZlCi0gVXNlIHRoZSBBbHRpVmVjIEFCSSBleHRlbnNpb25zLgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNDI1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVlYTM0NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNDI1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gNTE3YjIxMWEzZDc4MzY2Y2E4ZDU5MjlmNTgwZThjYTcyZmQyYzAwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJndWVudGggPHJndWVudGhAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVGh1LCAyNSBKdWwgMjAxOSAxMDo0Njo1NCArMDAwMAotU3ViamVjdDogW1BBVENIXSAyMDE5LTA3LTI1ICBSaWNoYXJkIEJpZW5lciAgPHJndWVudGhlckBzdXNlLmRlPgotCi0JUFIgbHRvLzkwOTI0Ci0JQmFja3BvcnQgZnJvbSBtYWlubGluZQotCTIwMTktMDctMTIgIFJlbiBLaW11cmEgIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KLQotCSogc2ltcGxlLW9iamVjdC1lbGYuYyAoc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gpOiBDaGVjayB6ZXJvIHZhbHVlCi0Jc2hzdHJuZHguCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3Mzc5MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQWZmZWN0ZXM6IDwgIDkuMgotQ1ZFOiBDVkUtMjAxOS0xNDI1MAotRHJvcHBlZCBjaGFuZ2Vsb2cKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8QWt1c3RyZUBtdmlzdGEuY29tPgotCi0tLS0KLSBsaWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYyB8IDggKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdjYy05LjIuMC9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi0rKysgZ2NjLTkuMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi1AQCAtNTU3LDYgKzU1NywxNCBAQCBzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCAodW5zaWduZWQgY2hhciBoCi0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLSsgIGlmIChlb3ItPnNoc3RybmR4ID09IDApCi0rICAgIHsKLSsgICAgICAqZXJybXNnID0gImludmFsaWQgRUxGIHNoc3RybmR4ID09IDAiOwotKyAgICAgICplcnIgPSAwOwotKyAgICAgIFhERUxFVEUgKGVvcik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSAgIHJldHVybiAodm9pZCAqKSBlb3I7Ci0gfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyN2ZkNDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi1Gcm9tIDhjNjE1NjYxMTZkMjMwNjNmZjU5NzI3MTg4NGY4ZTAwZDk0YWIxYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzZWdoZXIgPHNlZ2hlckAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDMwIEF1ZyAyMDE5IDEzOjQ4OjQ4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIAlCYWNrcG9ydCBmcm9tIHRydW5rIAkyMDE5LTA4LTIyICBTZWdoZXIgQm9lc3Nlbmtvb2wKLSAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKHVuc3BlYyk6IERlbGV0ZSBVTlNQRUNfREFSTiwgVU5TUEVDX0RBUk5fMzIsCi0JVU5TUEVDX0RBUk5fUkFXLCBVTlNQRUNfQ01QUkIsIFVOU1BFQ19DTVBSQjIsIFVOU1BFQ19DTVBFUUI7IG1vdmUgdG8uLi4KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICh1bnNwZWMpOiAuLi4gaGVyZS4KLQkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoZGFybl8zMiwgZGFybl9yYXcsIGRhcm4sIGNtcHJiLAotCSpjbXByYl9pbnRlcm5hbCwgc2V0Yl9zaWduZWQsIHNldGJfdW5zaWduZWQsIGNtcHJiMiwgKmNtcHJiMl9pbnRlcm5hbCwKLQljbXBlcWIsICpjbXBlcWJfaW50ZXJuYWwpOiBEZWxldGUsIG1vdmUgdG8uLi4KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChkYXJuXzMyLCBkYXJuX3JhdywgZGFybiwgY21wcmIsCi0JKmNtcHJiX2ludGVybmFsLCBzZXRiX3NpZ25lZCwgc2V0Yl91bnNpZ25lZCwgY21wcmIyLCAqY21wcmIyX2ludGVybmFsLAotCWNtcGVxYiwgKmNtcGVxYl9pbnRlcm5hbCk6IC4uLiBoZXJlLgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzUxNzAgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTU4NDcgcDEKLUFmZmVjdHMgPD0gOS4yLjAKLURyb3BwZWQgQ2hhbmdlbG9nIGNoYW5nZXMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIHwgMjIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQgIHwgMjI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKSwgMjIzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kCi0rKysgZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQKLUBAIC04MCw5ICs4MCw2IEBACi0gICAgVU5TUEVDX1ZVUEtIUFgKLSAgICBVTlNQRUNfVlVQS0xQWAotICAgIFVOU1BFQ19DT05WRVJUXzRGMzJfOEkxNgotLSAgIFVOU1BFQ19EQVJOCi0tICAgVU5TUEVDX0RBUk5fMzIKLS0gICBVTlNQRUNfREFSTl9SQVcKLSAgICBVTlNQRUNfRFNUCi0gICAgVU5TUEVDX0RTVFQKLSAgICBVTlNQRUNfRFNUU1QKLUBAIC0xNjEsOSArMTU4LDYgQEAKLSAgICBVTlNQRUNfQkNEQURECi0gICAgVU5TUEVDX0JDRFNVQgotICAgIFVOU1BFQ19CQ0RfT1ZFUkZMT1cKLS0gICBVTlNQRUNfQ01QUkIKLS0gICBVTlNQRUNfQ01QUkIyCi0tICAgVU5TUEVDX0NNUEVRQgotICAgIFVOU1BFQ19WUkxNSQotICAgIFVOU1BFQ19WUkxOTQotIF0pCi1AQCAtNDEwMSwyMjMgKzQwOTUsNiBAQAotICAgImJjZDxiY2RfYWRkX3N1Yj4uICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLS0oZGVmaW5lX2luc24gImRhcm5fMzIiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpTSSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fMzIpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS0gICJkYXJuICUwLDAiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLS0KLS0oZGVmaW5lX2luc24gImRhcm5fcmF3IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOX1JBVykpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS0gICJkYXJuICUwLDIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLS0KLS0oZGVmaW5lX2luc24gImRhcm4iCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk4pKV0KLS0gICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0tICAiZGFybiAlMCwxIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0tCi0tOzsgVGVzdCBieXRlIHdpdGhpbiByYW5nZS4KLS07OwotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLS07OwotLTs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiBsbyA8PSB2diBhbmQKLS07OyB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAwLgotLTs7Ci0tOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0tOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotLTs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0tOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0tOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0tOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLS0oZGVmaW5lX2V4cGFuZCAiY21wcmIiCi0tICBbKHNldCAobWF0Y2hfZHVwIDMpCi0tCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JIFVOU1BFQ19DTVBSQikpCi0tICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLS0JCQkgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJIChjb25zdF9pbnQgLTEpCi0tCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLS0JCQkJCSAgIChjb25zdF9pbnQgMCkpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLXsKLS0gIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0tfSkKLS0KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6aGk6bG8uCi0tOzsKLS07OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYKLS07OyBsbyA8PSB2diBhbmQgdnYgPD0gaGkuICBPdGhlcndpc2UsIHNldCB0aGUgR1QgYml0IHRvIDAuICBUaGUgb3RoZXIKLS07OyAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlciBhcmUgYWxsIHNldCB0byAwLgotLShkZWZpbmVfaW5zbiAiKmNtcHJiX2ludGVybmFsIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0tCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JIFVOU1BFQ19DTVBSQikpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgImNtcHJiICUwLDAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS07OyBTZXQgb3BlcmFuZCAwIHJlZ2lzdGVyIHRvIC0xIGlmIHRoZSBMVCBiaXQgKDB4OCkgb2YgY29uZGl0aW9uCi0tOzsgcmVnaXN0ZXIgb3BlcmFuZCAxIGlzIG9uLiAgT3RoZXJ3aXNlLCBzZXQgb3BlcmFuZCAwIHJlZ2lzdGVyIHRvIDEKLS07OyBpZiB0aGUgR1QgYml0ICgweDQpIG9mIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uCi0tOzsgT3RoZXJ3aXNlLCBzZXQgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIHJlc3VsdCBzdG9yZWQgaW50bwotLTs7IHJlZ2lzdGVyIG9wZXJhbmQgMCBpcyBub24temVybyBpZmYgZWl0aGVyIHRoZSBMVCBvciBHVCBiaXRzIGFyZSBvbgotLTs7IHdpdGhpbiBjb25kaXRpb24gcmVnaXN0ZXIgb3BlcmFuZCAxLgotLShkZWZpbmVfaW5zbiAic2V0Yl9zaWduZWQiCi0tICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkgKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX29wZXJhbmQ6Q0MgMSAiY2NfcmVnX29wZXJhbmQiICJ5IikKLS0JCQkgICAgICAoY29uc3RfaW50IDApKQotLQkJCSAgKGNvbnN0X2ludCAtMSkKLS0JCQkgIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMSkKLS0JCQkJCSAgICAoY29uc3RfaW50IDApKQotLQkJCQkJKGNvbnN0X2ludCAxKQotLQkJCQkJKGNvbnN0X2ludCAwKSkpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS0gICJzZXRiICUwLCUxIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJzZXRiX3Vuc2lnbmVkIgotLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JIChpZl90aGVuX2Vsc2U6U0kgKGx0dSAobWF0Y2hfb3BlcmFuZDpDQ1VOUyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotLQkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJICAoY29uc3RfaW50IC0xKQotLQkJCSAgKGlmX3RoZW5fZWxzZSAoZ3R1IChtYXRjaF9kdXAgMSkKLS0JCQkJCSAgICAoY29uc3RfaW50IDApKQotLQkJCQkJKGNvbnN0X2ludCAxKQotLQkJCQkJKGNvbnN0X2ludCAwKSkpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS0gICJzZXRiICUwLCUxIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0tOzsgVGVzdCBieXRlIHdpdGhpbiB0d28gcmFuZ2VzLgotLTs7Ci0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGhpXzE6bG9fMTpoaV8yOmxvXzIuCi0tOzsKLS07OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgKGxvXzEgPD0gdnYgYW5kCi0tOzsgdnYgPD0gaGlfMSkgb3IgaWYgKGxvXzIgPD0gdnYgYW5kIHZ2IDw9IGhpXzIpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIKLS07OyBvcGVyYW5kIDAgdG8gMC4KLS07OwotLTs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotLTs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkgb3BlcmF0ZXMgb24KLS07OyBTSS1tb2RlIG9wZXJhbmRzIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotLTs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotLTs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotLTs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0tKGRlZmluZV9leHBhbmQgImNtcHJiMiIKLS0gIFsoc2V0IChtYXRjaF9kdXAgMykKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCMikpCi0tICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLS0JCQkgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJIChjb25zdF9pbnQgLTEpCi0tCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLS0JCQkJCSAgIChjb25zdF9pbnQgMCkpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLXsKLS0gIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0tfSkKLS0KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2VzIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGhpXzE6bG9fMTpoaV8yOmxvXzIuCi0tOzsKLS07OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYKLS07OyAobG9fMSA8PSB2diBhbmQgdnYgPD0gaGlfMSkgb3IgaWYgKGxvXzIgPD0gdnYgYW5kIHZ2IDw9IGhpXzIpLgotLTs7IE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldAotLTs7IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0tKGRlZmluZV9pbnNuICIqY21wcmIyX2ludGVybmFsIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0tCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JIFVOU1BFQ19DTVBSQjIpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS0gICJjbXByYiAlMCwxLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0tOzsgVGVzdCBieXRlIG1lbWJlcnNoaXAgd2l0aGluIHNldCBvZiA4IGJ5dGVzLgotLTs7Ci0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLS07OwotLTs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiB2diBlcXVhbHMgb25lCi0tOzsgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsIHNldAotLTs7IHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAwLiAgTm90ZSB0aGF0IHRoZSA4IGJ5dGUgdmFsdWVzIGhlbGQgd2l0aGluCi0tOzsgb3BlcmFuZCAyIG5lZWQgbm90IGJlIHVuaXF1ZS4KLS07OwotLTs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotLTs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoYXQgb3BlcmFuZHMKLS07OyAwIGFuZCAxIGhhdmUgbW9kZSBTSSBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLS07OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLS07OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLS07OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotLShkZWZpbmVfZXhwYW5kICJjbXBlcWIiCi0tICBbKHNldCAobWF0Y2hfZHVwIDMpCi0tCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JIFVOU1BFQ19DTVBFUUIpKQotLSAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0tCQkJICAgICAoY29uc3RfaW50IDApKQotLQkJCSAoY29uc3RfaW50IC0xKQotLQkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0tCQkJCQkgICAoY29uc3RfaW50IDApKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0tewotLSAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLS19KQotLQotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSBzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgZTA6ZTE6ZTI6ZTM6ZTQ6ZTU6ZTY6ZTcuCi0tOzsKLS07OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYgdnYKLS07OyBlcXVhbHMgb25lIG9mIHRoZSB2YWx1ZXMgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIG9yIGU3LiAgT3RoZXJ3aXNlLAotLTs7IHNldCB0aGUgR1QgYml0IHRvIHplcm8uICBUaGUgb3RoZXIgMyBiaXRzIG9mIHRoZSB0YXJnZXQgQ1IgcmVnaXN0ZXIKLS07OyBhcmUgYWxsIHNldCB0byAwLgotLShkZWZpbmVfaW5zbiAiKmNtcGVxYl9pbnRlcm5hbCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotLQkgKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JICBVTlNQRUNfQ01QRVFCKSldCi0tICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotLSAgImNtcGVxYiAlMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotIChkZWZpbmVfZXhwYW5kICJiY2Q8YmNkX2FkZF9zdWI+Xzxjb2RlPiIKLSAgIFsocGFyYWxsZWwgWyhzZXQgKHJlZzpDQ0ZQIENSNl9SRUdOTykKLSAJCSAgIChjb21wYXJlOkNDRlAKLUluZGV4OiBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi0rKysgZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotQEAgLTEzNyw2ICsxMzcsMTIgQEAKLSAgICBVTlNQRUNfTFNRCi0gICAgVU5TUEVDX0ZVU0lPTl9HUFIKLSAgICBVTlNQRUNfU1RBQ0tfQ0hFQ0sKLSsgICBVTlNQRUNfREFSTgotKyAgIFVOU1BFQ19EQVJOXzMyCi0rICAgVU5TUEVDX0RBUk5fUkFXCi0rICAgVU5TUEVDX0NNUFJCCi0rICAgVU5TUEVDX0NNUFJCMgotKyAgIFVOU1BFQ19DTVBFUUIKLSAgICBVTlNQRUNfQUREX1JPVU5EX1RPX09ERAotICAgIFVOU1BFQ19TVUJfUk9VTkRfVE9fT0RECi0gICAgVU5TUEVDX01VTF9ST1VORF9UT19PREQKLUBAIC0xNDMyMiw3ICsxNDMyOCwyMjUgQEAKLSAgICAieHNjbXB1cXAgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIikKLSAgICAoc2V0X2F0dHIgInNpemUiICIxMjgiKV0pCi0rDAotKzs7IE1pc2NlbGxhbmVvdXMgSVNBIDMuMCAocG93ZXI5KSBpbnN0cnVjdGlvbnMKLSsKLSsoZGVmaW5lX2luc24gImRhcm5fMzIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotKyAgICAgICAgKHVuc3BlYzpTSSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fMzIpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSsgICJkYXJuICUwLDAiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSsKLSsoZGVmaW5lX2luc24gImRhcm5fcmF3IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLSsgICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOX1JBVykpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSsgICJkYXJuICUwLDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSsKLSsoZGVmaW5lX2luc24gImRhcm4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotKyAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk4pKV0KLSsgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0rICAiZGFybiAlMCwxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0rCi0rOzsgVGVzdCBieXRlIHdpdGhpbiByYW5nZS4KLSs7OwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLSs7OwotKzs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiBsbyA8PSB2diBhbmQKLSs7OyB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAwLgotKzs7Ci0rOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0rOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotKzs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0rOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0rOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0rOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLSsoZGVmaW5lX2V4cGFuZCAiY21wcmIiCi0rICBbKHNldCAobWF0Y2hfZHVwIDMpCi0rCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJIFVOU1BFQ19DTVBSQikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLSsJCQkgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJIChjb25zdF9pbnQgLTEpCi0rCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLSsJCQkJCSAgIChjb25zdF9pbnQgMCkpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotK3sKLSsgIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0rfSkKLSsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6aGk6bG8uCi0rOzsKLSs7OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYKLSs7OyBsbyA8PSB2diBhbmQgdnYgPD0gaGkuICBPdGhlcndpc2UsIHNldCB0aGUgR1QgYml0IHRvIDAuICBUaGUgb3RoZXIKLSs7OyAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlciBhcmUgYWxsIHNldCB0byAwLgotKyhkZWZpbmVfaW5zbiAiKmNtcHJiX2ludGVybmFsIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0rCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJIFVOU1BFQ19DTVBSQikpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgImNtcHJiICUwLDAsJTEsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSsKLSs7OyBTZXQgb3BlcmFuZCAwIHJlZ2lzdGVyIHRvIC0xIGlmIHRoZSBMVCBiaXQgKDB4OCkgb2YgY29uZGl0aW9uCi0rOzsgcmVnaXN0ZXIgb3BlcmFuZCAxIGlzIG9uLiAgT3RoZXJ3aXNlLCBzZXQgb3BlcmFuZCAwIHJlZ2lzdGVyIHRvIDEKLSs7OyBpZiB0aGUgR1QgYml0ICgweDQpIG9mIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uCi0rOzsgT3RoZXJ3aXNlLCBzZXQgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIHJlc3VsdCBzdG9yZWQgaW50bwotKzs7IHJlZ2lzdGVyIG9wZXJhbmQgMCBpcyBub24temVybyBpZmYgZWl0aGVyIHRoZSBMVCBvciBHVCBiaXRzIGFyZSBvbgotKzs7IHdpdGhpbiBjb25kaXRpb24gcmVnaXN0ZXIgb3BlcmFuZCAxLgotKyhkZWZpbmVfaW5zbiAic2V0Yl9zaWduZWQiCi0rICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkgKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX29wZXJhbmQ6Q0MgMSAiY2NfcmVnX29wZXJhbmQiICJ5IikKLSsJCQkgICAgICAoY29uc3RfaW50IDApKQotKwkJCSAgKGNvbnN0X2ludCAtMSkKLSsJCQkgIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMSkKLSsJCQkJCSAgICAoY29uc3RfaW50IDApKQotKwkJCQkJKGNvbnN0X2ludCAxKQotKwkJCQkJKGNvbnN0X2ludCAwKSkpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSsgICJzZXRiICUwLCUxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0gCi0rKGRlZmluZV9pbnNuICJzZXRiX3Vuc2lnbmVkIgotKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJIChpZl90aGVuX2Vsc2U6U0kgKGx0dSAobWF0Y2hfb3BlcmFuZDpDQ1VOUyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotKwkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJICAoY29uc3RfaW50IC0xKQotKwkJCSAgKGlmX3RoZW5fZWxzZSAoZ3R1IChtYXRjaF9kdXAgMSkKLSsJCQkJCSAgICAoY29uc3RfaW50IDApKQotKwkJCQkJKGNvbnN0X2ludCAxKQotKwkJCQkJKGNvbnN0X2ludCAwKSkpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSsgICJzZXRiICUwLCUxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0rCi0rOzsgVGVzdCBieXRlIHdpdGhpbiB0d28gcmFuZ2VzLgotKzs7Ci0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGhpXzE6bG9fMTpoaV8yOmxvXzIuCi0rOzsKLSs7OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgKGxvXzEgPD0gdnYgYW5kCi0rOzsgdnYgPD0gaGlfMSkgb3IgaWYgKGxvXzIgPD0gdnYgYW5kIHZ2IDw9IGhpXzIpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIKLSs7OyBvcGVyYW5kIDAgdG8gMC4KLSs7OwotKzs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotKzs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkgb3BlcmF0ZXMgb24KLSs7OyBTSS1tb2RlIG9wZXJhbmRzIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotKzs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotKzs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotKzs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0rKGRlZmluZV9leHBhbmQgImNtcHJiMiIKLSsgIFsoc2V0IChtYXRjaF9kdXAgMykKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCMikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLSsJCQkgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJIChjb25zdF9pbnQgLTEpCi0rCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLSsJCQkJCSAgIChjb25zdF9pbnQgMCkpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotK3sKLSsgIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0rfSkKLSsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2VzIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGhpXzE6bG9fMTpoaV8yOmxvXzIuCi0rOzsKLSs7OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYKLSs7OyAobG9fMSA8PSB2diBhbmQgdnYgPD0gaGlfMSkgb3IgaWYgKGxvXzIgPD0gdnYgYW5kIHZ2IDw9IGhpXzIpLgotKzs7IE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldAotKzs7IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0rKGRlZmluZV9pbnNuICIqY21wcmIyX2ludGVybmFsIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0rCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJIFVOU1BFQ19DTVBSQjIpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSsgICJjbXByYiAlMCwxLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0rCi0rOzsgVGVzdCBieXRlIG1lbWJlcnNoaXAgd2l0aGluIHNldCBvZiA4IGJ5dGVzLgotKzs7Ci0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLSs7OwotKzs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiB2diBlcXVhbHMgb25lCi0rOzsgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsIHNldAotKzs7IHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAwLiAgTm90ZSB0aGF0IHRoZSA4IGJ5dGUgdmFsdWVzIGhlbGQgd2l0aGluCi0rOzsgb3BlcmFuZCAyIG5lZWQgbm90IGJlIHVuaXF1ZS4KLSs7OwotKzs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotKzs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoYXQgb3BlcmFuZHMKLSs7OyAwIGFuZCAxIGhhdmUgbW9kZSBTSSBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLSs7OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLSs7OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLSs7OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotKyhkZWZpbmVfZXhwYW5kICJjbXBlcWIiCi0rICBbKHNldCAobWF0Y2hfZHVwIDMpCi0rCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJIFVOU1BFQ19DTVBFUUIpKQotKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0rCQkJICAgICAoY29uc3RfaW50IDApKQotKwkJCSAoY29uc3RfaW50IC0xKQotKwkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0rCQkJCQkgICAoY29uc3RfaW50IDApKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0rewotKyAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLSt9KQotKwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSBzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgZTA6ZTE6ZTI6ZTM6ZTQ6ZTU6ZTY6ZTcuCi0rOzsKLSs7OyBTZXQgYml0IDEgKHRoZSBHVCBiaXQsIDB4NCkgb2YgQ1IgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDEgaWYgdnYKLSs7OyBlcXVhbHMgb25lIG9mIHRoZSB2YWx1ZXMgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIG9yIGU3LiAgT3RoZXJ3aXNlLAotKzs7IHNldCB0aGUgR1QgYml0IHRvIHplcm8uICBUaGUgb3RoZXIgMyBiaXRzIG9mIHRoZSB0YXJnZXQgQ1IgcmVnaXN0ZXIKLSs7OyBhcmUgYWxsIHNldCB0byAwLgotKyhkZWZpbmVfaW5zbiAiKmNtcGVxYl9pbnRlcm5hbCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotKwkgKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJICBVTlNQRUNfQ01QRVFCKSldCi0rICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotKyAgImNtcGVxYiAlMCwlMSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotIAwKLSAKLSAoaW5jbHVkZSAic3luYy5tZCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU3YTgzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotRnJvbSA4N2JjNzg0YTdjYTNhNDMxODJmNzI3MjI0MTU5N2E1MGQ3NDkxMzQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogc2VnaGVyIDxzZWdoZXJAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCAzMCBBdWcgMjAxOSAxMzo1MToyNiArMDAwMAotU3ViamVjdDogW1BBVENIXSAJQmFja3BvcnQgZnJvbSB0cnVuayAJMjAxOS0wOC0yMiAgU2VnaGVyIEJvZXNzZW5rb29sCi0gIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotCVBSIHRhcmdldC85MTQ4MQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHVuc3BlYyk6IERlbGV0ZSBVTlNQRUNfREFSTiwgVU5TUEVDX0RBUk5fMzIsCi0JYW5kIFVOU1BFQ19EQVJOX1JBVy4KLQkodW5zcGVjdik6IE5ldyBlbnVtZXJhdG9yIHZhbHVlcyBVTlNQRUNWX0RBUk4sIFVOU1BFQ1ZfREFSTl8zMiwgYW5kCi0JVU5TUEVDVl9EQVJOX1JBVy4KLQkoZGFybl8zMik6IFVzZSBhbiB1bnNwZWNfdm9sYXRpbGUsIGFuZCBVTlNQRUNWX0RBUk5fMzIuCi0JKGRhcm5fcmF3KTogVXNlIGFuIHVuc3BlY192b2xhdGlsZSwgYW5kIFVOU1BFQ1ZfREFSTl9SQVcuCi0JKGRhcm4pOiBVc2UgYW4gdW5zcGVjX3ZvbGF0aWxlLCBhbmQgVU5TUEVDVl9EQVJOLgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzUxNzUgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTU4NDcgcDIKLUFmZmVjdHMgPD0gOS4yLjAKLURyb3BwZWQgQ2hhbmdlbG9nIGNoYW5nZXMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQgfCAxMiArKysrKystLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi0rKysgZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotQEAgLTEzNyw5ICsxMzcsNiBAQAotICAgIFVOU1BFQ19MU1EKLSAgICBVTlNQRUNfRlVTSU9OX0dQUgotICAgIFVOU1BFQ19TVEFDS19DSEVDSwotLSAgIFVOU1BFQ19EQVJOCi0tICAgVU5TUEVDX0RBUk5fMzIKLS0gICBVTlNQRUNfREFSTl9SQVcKLSAgICBVTlNQRUNfQ01QUkIKLSAgICBVTlNQRUNfQ01QUkIyCi0gICAgVU5TUEVDX0NNUEVRQgotQEAgLTE3MCw2ICsxNjcsOSBAQAotICAgIFVOU1BFQ1ZfRUhfUlIJCTsgZWhfcmVnX3Jlc3RvcmUKLSAgICBVTlNQRUNWX0lTWU5DCQk7IGlzeW5jIGluc3RydWN0aW9uCi0gICAgVU5TUEVDVl9NRlRCCQkJOyBtb3ZlIGZyb20gdGltZSBiYXNlCi0rICAgVU5TUEVDVl9EQVJOCQkJOyBkYXJuIDEgKGRlbGl2ZXIgYSByYW5kb20gbnVtYmVyKQotKyAgIFVOU1BFQ1ZfREFSTl8zMgkJOyBkYXJuIDIKLSsgICBVTlNQRUNWX0RBUk5fUkFXCQk7IGRhcm4gMAotICAgIFVOU1BFQ1ZfTkxHUgkJCTsgbm9uLWxvY2FsIGdvdG8gcmVjZWl2ZXIKLSAgICBVTlNQRUNWX01GRlMJCQk7IE1vdmUgZnJvbSBGUFNDUgotICAgIFVOU1BFQ1ZfTUZGU0wJCTsgTW92ZSBmcm9tIEZQU0NSIGxpZ2h0IGluc3RydWN0aW9uIHZlcnNpb24KLUBAIC0xNDMzMywyMSArMTQzMzMsMjEgQEAKLSAKLSAoZGVmaW5lX2luc24gImRhcm5fMzIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpTSSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fMzIpKV0KLSsgICAgICAgICh1bnNwZWNfdm9sYXRpbGU6U0kgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfREFSTl8zMikpXQotICAgIlRBUkdFVF9QOV9NSVNDIgotICAgImRhcm4gJTAsMCIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotIAotIChkZWZpbmVfaW5zbiAiZGFybl9yYXciCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fUkFXKSldCi0rICAgICAgICAodW5zcGVjX3ZvbGF0aWxlOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0RBUk5fUkFXKSldCi0gICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotICAgImRhcm4gJTAsMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotIAotIChkZWZpbmVfaW5zbiAiZGFybiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTikpXQotKyAgICAgICAgKHVuc3BlY192b2xhdGlsZTpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9EQVJOKSldCi0gICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotICAgImRhcm4gJTAsMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNzEzMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gZGM0YzhkZDlkYmU3MDc0MGVjN2E2ODRiMGYzNTYyMDI0OWZiMDM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNlZ2hlciA8c2VnaGVyQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgMzAgQXVnIDIwMTkgMTM6NTM6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0IGZyb20gdHJ1bmsgCTIwMTktMDgtMjMgIFNlZ2hlciBCb2Vzc2Vua29vbAotICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWdjYy90ZXN0c3VpdGUvCi0JUFIgdGFyZ2V0LzkxNDgxCi0JKiBnY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmM6IE5ldyB0ZXN0Y2FzZS4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjc1MTc2IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE5LTE1ODQ3IHAzCi1BZmZlY3RzIDw9IDkuMi4wCi1Ecm9wcGVkIENoYW5nZWxvZyBjaGFuZ2VzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgfCAgNiArKysrKysKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYyB8IDE2ICsrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmMKLQotSW5kZXg6IGdjYy05LjIuMC9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGdjYy05LjIuMC9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYwotQEAgLTAsMCArMSwxNiBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiB9IH0gfSAqLwotKy8qIHsgZGctc2tpcC1pZiAiIiB7IHBvd2VycGMqLSotYWl4KiB9IH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWRlamFnbnUtY3B1PXBvd2VyOSIgfSAqLwotKwotK3N0YXRpYyBpbnQgZGFybjMyKHZvaWQpIHsgcmV0dXJuIF9fYnVpbHRpbl9kYXJuXzMyKCk7IH0KLSsKLStpbnQgZm91cih2b2lkKQotK3sKLSsJaW50IHN1bSA9IDA7Ci0rCWludCBpOwotKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQotKwkJc3VtICs9IGRhcm4zMigpOwotKwlyZXR1cm4gc3VtOwotK30KLSsKLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgeyg/bilcbWRhcm4gLiosMFxNfSA0IH0gfSAqLwotSW5kZXg6IGdjYy05LjIuMC9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0rKysgZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAxOS0wOC0zMCAgU2VnaGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0rCi0rCUJhY2twb3J0IGZyb20gdHJ1bmsKLSsJMjAxOS0wOC0yMyAgU2VnaGVyIEJvZXNzZW5rb29sICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0rCi0rCVBSIHRhcmdldC85MTQ4MQotKwkqIGdjYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYzogTmV3IHRlc3RjYXNlLgotKwotIDIwMTktMDgtMTIgIFJlbGVhc2UgTWFuYWdlcgotIAotIAkqIEdDQyA5LjIuMCByZWxlYXNlZC4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDQxMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMuaW5jCkBAIC0wLDAgKzEsMTE5IEBACityZXF1aXJlIGdjYy1jb21tb24uaW5jCisKKyMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQorCitQViA9ICI5LjMuMCIKKworIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKKworQklOViA9ICI5LjMuMCIKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMzoke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMy9iYWNrcG9ydDoiCisKK0RFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgorTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisgICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAorIgorCitCQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKKyNSRUxFQVNFID89ICI1YTVjYTJkIgorI0JBU0VVUkkgPz0gImh0dHBzOi8vcmVwby5vci5jei9vZmZpY2lhbC1nY2MuZ2l0L3NuYXBzaG90LyR7UkVMRUFTRX0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9Z2NjLSR7UkVMRUFTRX0udGFyLmd6IgorU1JDX1VSSSA9ICJcCisgICAgICAgICAgICR7QkFTRVVSSX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLURpc2FibGUtc2R0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1sZGJsMTI4LWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LUNWRS0yMDE5LTE0MjUwLUNoZWNrLXplcm8tdmFsdWUtaW4tc2ltcGxlX29iamVjdF9lbGYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1nZW50eXBlcy1nZW5tb2Rlcy1Eby1ub3QtdXNlLV9fTElORV9fLWZvci1tYWludGFpbmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzktcHJvY2Vzc19hbHRfb3BlcmFuZHMtRG9uLXQtbWF0Y2gtdXNlci1kZWZpbmVkLXJlZ3Mtby5wYXRjaCBcCisiCitTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxZTE5Nzg2NzYxMWY2MDU0YWExMTE5YjEzYTBjMGFiYWMxMjgzNDc2NWZlMmQ4MWYzNWFjNTdmODRmNzQyZDEiCisjIEZvciBkZXYgcmVsZWFzZSBzbmFwc2hvdHRpbmcKKyNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vb2ZmaWNpYWwtZ2NjLSR7UkVMRUFTRX0iCisjQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgorCisjIExhbmd1YWdlIE92ZXJyaWRlcworRk9SVFJBTiA9ICIiCitKQVZBID0gIiIKKworTFRPID0gIi0tZW5hYmxlLWx0byIKK1NTUCA/PSAiLS1kaXNhYmxlLWxpYnNzcCIKK1NTUF9taW5ndzMyID0gIi0tZW5hYmxlLWxpYnNzcCIKKworRVhUUkFfT0VDT05GX0JBU0UgPSAiXAorICAgICR7TFRPfSBcCisgICAgJHtTU1B9IFwKKyAgICAtLWVuYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICR7QCctLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0nIGlmICcke0xJTktFUl9IQVNIX1NUWUxFfScgZWxzZSAnJ30gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS13aXRoLXBwbD1ubyBcCisgICAgLS13aXRoLWNsb29nPW5vIFwKKyAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKKyAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCisgICAgLS13aXRob3V0LWlzbCBcCisiCisKK0VYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS1kaXNhYmxlLWxpYmdvbXAgXAorICAgIC0tZGlzYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLWRpc2FibGUtbHRvIFwKKyAgICAtLWRpc2FibGUtcGx1Z2luIFwKKyAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAorICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAorICAgIC0td2l0aG91dC1pc2wgXAorICAgIC0tZGlzYWJsZS1saWJzc3AgXAorIgorCitFWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAorICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAorICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAorICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ5MjIyZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDAyYjE3ODlkYmJiMTg0NzI2NzgyYjUwMzhhNGRkOTY1MTVlYzc5MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDAxLzM5XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgY29uZmlndXJlICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYWJkOTNhOTkwYTkuLmIxMjEwODhkNzc4IDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC03NjAzLDcgKzc2MDMsNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5ZGI0ZmQxNGFhMi4uYWFkOTNjNGQxODMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMxMTksNyArMzExOSw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MjdlZTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjAzIEBACitGcm9tIDUzNjhjZDAyOTNjZTUwYTY5Y2VkNmU0YjI1YmE2YzhkOGUwMTQyNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDAyLzM5XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKworQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCit6ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCisvdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKK2Fib3J0ZWQuCisKK0luc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCit3YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCisgZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCisgZ2NjL2luY3BhdGguYyAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIDcgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9wdAoraW5kZXggZDM0MmM0ZjM3NDkuLmM2NGZkNGE2YzUwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbW1vbi5vcHQKKysrKyBiL2djYy9jb21tb24ub3B0CitAQCAtNjg0LDYgKzY4NCwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKKyBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZworIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCisgCisrV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCisrV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZworKworIFdzaGFkb3cKKyBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCisgV2FybiB3aGVuIG9uZSB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuICBTYW1lIGFzIC1Xc2hhZG93PWdsb2JhbC4KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgoraW5kZXggYTcxOGNlYWYzZGEuLjU3MTMzNDJlZmIxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy5pbgorKysrIGIvZ2NjL2NvbmZpZy5pbgorQEAgLTIwMCw2ICsyMDAsMTIgQEAKKyAjZW5kaWYKKyAKKyAKKysvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCisrI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKKysjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysjZW5kaWYKKysKKysKKyAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCisgICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgorICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBhMDY1YmEyMzcyOC4uMmUyNmRkMzMzMTAgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtOTk2LDYgKzk5Niw3IEBAIHdpdGhfc3lzdGVtX3psaWIKKyBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCisgZW5hYmxlX2xpbmtfbXV0ZXgKKyBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKKytlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworIGVuYWJsZV9wbHVnaW4KKyBlbmFibGVfaG9zdF9zaGFyZWQKKyBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAorQEAgLTE3NDksNiArMTc1MCw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQorKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCisgICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKKyAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCisgICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAorQEAgLTI5NzUzLDYgKzI5NzU2LDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKKyBmaQorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrZWxzZQorKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KKytmaQorKworK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIAorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAzYTcyNTExMDJlZi4uMTJkMWQwNGU2NDUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNjM4MCw2ICs2MzgwLDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCisgICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCisgCisrQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKKysgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgICAgIFsxXSwKKysgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKKytmaQorKworICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIEFDX1NVQlNUKHN1YmRpcnMpCisgQUNfU1VCU1Qoc3JjZGlyKQorZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCAwYWI2YzljNjQ0OS4uYzNkM2Q1MWEyOGYgMTAwNjQ0CistLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitAQCAtMzMzLDYgKzMzMyw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KKyAtV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29tcGF0IC1XcGFja2VkLW5vdC1hbGlnbmVkICAtV3BhZGRlZCBAZ29sCisgLVdwYXJlbnRoZXNlcyAgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAorIC1XcGxhY2VtZW50LW5ldyAgLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0gQGdvbAorKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCisgLVdwb2ludGVyLWFyaXRoICAtV3BvaW50ZXItY29tcGFyZSAgLVduby1wb2ludGVyLXRvLWludC1jYXN0IEBnb2wKKyAtV25vLXByYWdtYXMgIC1Xbm8tcHJpby1jdG9yLWR0b3IgIC1XcmVkdW5kYW50LWRlY2xzIEBnb2wKKyAtV3Jlc3RyaWN0ICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKK0BAIC02MjkwLDYgKzYyOTEsMTQgQEAgbWFkZSB1cCBvZiBkYXRhIG9ubHkgYW5kIHRodXMgcmVxdWlyZXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQuICBCdXQsIGZvcgorIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjayB0byBiZQorIG1hZGUgZXhlY3V0YWJsZSBpbiBvcmRlciBmb3IgdGhlIHByb2dyYW0gdG8gd29yayBwcm9wZXJseS4KKyAKKytAaXRlbSAtV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAb3BpbmRleCBXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbQorK2RpcmVjdG9yaWVzIHN1Y2ggYXMgQGZpbGV7L3Vzci9pbmNsdWRlfSB3aGVuIGNyb3NzIGNvbXBpbGluZy4gIFRoaXMKKytvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaAorK2RpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QgaGVhZGVycyBhbmQgbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0Cisrc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgorKworIEBpdGVtIC1XZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXZmxvYXQtZXF1YWwKKyBAb3BpbmRleCBXbm8tZmxvYXQtZXF1YWwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDRmNTc3NjViMDEyLi5hMjYwMWE2YmIwNiAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTA0Miw2ICsxMDQyLDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAorICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKKyAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFyOiV7IW5vc3RhcnRmaWxlczolU319fSBcCisrICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisrICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisgICAgICV7c3RhdGljfG5vLXBpZXxzdGF0aWMtcGllOn0gJUB7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKKyAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIiIFwKKyAgICAgJXtmb3BlbmFjY3xmb3Blbm1wfCU6Z3QoJXtmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiUqfSAxKTpcCitkaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKK2luZGV4IGJjYmUyMDgyOTA1Li41NzUyMjk4YmJmMiAxMDA2NDQKKy0tLSBhL2djYy9pbmNwYXRoLmMKKysrKyBiL2djYy9pbmNwYXRoLmMKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgImludGwuaCIKKyAjaW5jbHVkZSAiaW5jcGF0aC5oIgorICNpbmNsdWRlICJjcHBkZWZhdWx0LmgiCisrI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgorIAorIC8qIE1pY3Jvc29mdCBXaW5kb3dzIGRvZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgaW5vZGVzLgorICAgIFZNUyBoYXMgbm9uLW51bWVyaWMgaW5vZGVzLiAgKi8KK0BAIC0zOTMsNiArMzk0LDI2IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCisgCX0KKyAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKKyAgICAgfQorKworKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKKysgICAgeworKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKKysKKysgICAgICAgZm9yIChwID0gaGVhZHNbSU5DX1FVT1RFXTsgcDsgcCA9IHAtPm5leHQpCisrICAgICAgICAgeworKyAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQorKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKKysgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKKysgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKKysgICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZWM1YmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gZGY5MGRiZGJhN2E4NWMyMGJhZDk1ZGU3MTUyNWYwZjQwMGE4NDlkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMzldIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAorCitCZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgorCitUaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCisKK090aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKKworLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgorCistIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCisKK0Jvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPworCitTaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGIxMjEwODhkNzc4Li45M2FhZTViYjI2ZiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjg2NCw2ICs2ODY0LDM4IEBAIGZpCisgCisgCisgCisrIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKKysjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUworKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCisrIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKKysjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKKysjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgorK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisraWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKyAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKKyAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgorIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlYzg5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKQEAgLTAsMCArMSwxMTkgQEAKK0Zyb20gMmUwMGQwYTlhODA5MTUzZjY5MzY1OWU5NzdjMWUwNTUwNjY1ZTY1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMzldIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgorCitHQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQorbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cworY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KKworVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKK2FuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAorZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Citrbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCitwZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgorCitUaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAordGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCithbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQorZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbworYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCisKK0RvIHNhbWUgZm9yIHJpc2N2NjQgYW5kIGFhcmNoNjQKKworUlAgMTUvOC8xMQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgIDggKysrKy0tLS0KKyBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgICAgICAgIHwgIDYgKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgICAgICAgICB8IDEwICsrKy0tLS0tLS0KKyBnY2MvY29uZmlnL3Jpc2N2L3QtbGludXggICAgICAgICAgIHwgIDYgKysrKy0tCisgZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0ICAgICAgICB8ICA1ICsrLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitpbmRleCA1YWQ2NzBiYTJjZS4uZTI2MDE5ZTcxNTcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitAQCAtMjEsOCArMjEsOCBAQAorIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQorIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKKyAKKy1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisgCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKKysjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAoraW5kZXggYzY4NmFiMmYwZDIuLmM4MmI2MGRhZGNkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAorQEAgLTMyLDcgKzMyLDUgQEAKKyAjCisgY29tbWE9LAorIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQorLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAoraW5kZXggM2EyZmY3MDBkN2QuLjEzZWYxOTU3NmI1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAorQEAgLTE3LDEwICsxNyw2IEBACisgIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAorLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0CistTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCistTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKKy0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KKytNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKysKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXggYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKK2luZGV4IDIxNmQyNzc2YTE4Li5lNGQ4MTc2MjFmYyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eAorKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4CitAQCAtMSwzICsxLDUgQEAKKyAjIE9ubHkgWExFTiBhbmQgQUJJIGFmZmVjdCBMaW51eCBtdWx0aWxpYiBkaXIgbmFtZXMsIGUuZy4gL2xpYjMyL2lscDMyZC8KKy1NVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCisrI01VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCisrTVVMVElMSUJfRElSTkFNRVMgOj0gLiAuCisrI01VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCisrTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAoraW5kZXggZjNjNmUyYmUxZDkuLmJkMDM5MzE1NWZhIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK0BAIC0yNiwxMCArMjYsOSBAQAorICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgorIAorIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgorLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKKytNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgorIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCistTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQorK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKyAKKyByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKKyAJJChDT01QSUxFKSAkPAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjhhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gNDM1ZTQ1NTkyZTk0NDAxOGYzM2JmZjMyZjEyMDJiMDg3MmEyMzE0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMzldIG9wdGlvbmFsIGxpYnN0ZGMKKworZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCit3aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCit3aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCitvcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYworZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCisKK0EgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KK2RvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCisKK1JQIDI5LzYvMTAKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGdjYy9jLWZhbWlseS9jLm9wdCAgfCAgNCArKysrCisgZ2NjL2NwL2crK3NwZWMuYyAgICB8ICAxICsKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDEgKworIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitpbmRleCA5MTZjYzY3YjQ1My4uNDE2MTlmYTU5MWMgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTE5NTIsNiArMTk1MiwxMCBAQCBub3N0ZGluYysrCisgQysrIE9iakMrKworIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KKyAKKytub3N0ZGxpYisrCisrRHJpdmVyCisrRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQorKworIG8KKyBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKKyA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAorZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCitpbmRleCA2YzQ1NzRhODM3ZC4uMGUyNjU3ZjAwZWUgMTAwNjQ0CistLS0gYS9nY2MvY3AvZysrc3BlYy5jCisrKysgYi9nY2MvY3AvZysrc3BlYy5jCitAQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCisgICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQorIAl7CisgCWNhc2UgT1BUX25vc3RkbGliOgorKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgorIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgorIAkgIGxpYnJhcnkgPSAtMTsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggYzNkM2Q1MWEyOGYuLjJmN2ZmZTQ1NmMzIDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTIyOCw2ICsyMjgsOSBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgorIC1mbm8td2VhayAgLW5vc3RkaW5jKysgQGdvbAorIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBAZ29sCisgLWZ2aXNpYmlsaXR5LW1zLWNvbXBhdCBAZ29sCisrLWZ2dGFibGUtdmVyaWZ5PUBye1t9c3RkQHJ7fH1wcmVpbml0QHJ7fH1ub25lQHJ7XX0gQGdvbAorKy1mdnR2LWNvdW50cyAtZnZ0di1kZWJ1ZyBAZ29sCisrLW5vc3RkbGliKysgQGdvbAorIC1mZXh0LW51bWVyaWMtbGl0ZXJhbHMgQGdvbAorIC1XYWJpPUB2YXJ7bn0gIC1XYWJpLXRhZyAgLVdjb252ZXJzaW9uLW51bGwgIC1XY3Rvci1kdG9yLXByaXZhY3kgQGdvbAorIC1XZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3IgIC1XZGVwcmVjYXRlZC1jb3B5ICAtV2RlcHJlY2F0ZWQtY29weS1kdG9yIEBnb2wKK0BAIC01MzksNyArNTQyLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1waWUgIC1wdGhyZWFkICAtciAgLXJkeW5hbWljIEBnb2wKKyAtcyAgLXN0YXRpYyAgLXN0YXRpYy1waWUgIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCisgLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCistLXNoYXJlZCAgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyBAZ29sCisrLXNoYXJlZCAgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyAtbm9zdGRsaWIrKyBAZ29sCisgLVQgQHZhcntzY3JpcHR9ICAtV2wsQHZhcntvcHRpb259ICAtWGxpbmtlciBAdmFye29wdGlvbn0gQGdvbAorIC11IEB2YXJ7c3ltYm9sfSAgLXogQHZhcntrZXl3b3JkfX0KKyAKK0BAIC0xMzMyMSw2ICsxMzMyNCwzMyBAQCBTcGVjaWZ5IHRoYXQgdGhlIHByb2dyYW0gZW50cnkgcG9pbnQgaXMgQHZhcntlbnRyeX0uICBUaGUgYXJndW1lbnQgaXMKKyBpbnRlcnByZXRlZCBieSB0aGUgbGlua2VyOyB0aGUgR05VIGxpbmtlciBhY2NlcHRzIGVpdGhlciBhIHN5bWJvbCBuYW1lCisgb3IgYW4gYWRkcmVzcy4KKyAKKytAaXRlbSAtbm9zdGRsaWIrKworK0BvcGluZGV4IG5vc3RkbGliKysKKytEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KKytPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KKysKKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAorK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCisrd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKKytuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCisrKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCisrQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAorK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKKytJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCisrb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Cisrb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KKytUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCisrbGlicmFyeSBzdWJyb3V0aW5lcy4KKysoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCisrY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisrR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisrCisgQGl0ZW0gLXBpZQorIEBvcGluZGV4IHBpZQorIFByb2R1Y2UgYSBkeW5hbWljYWxseSBsaW5rZWQgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSBvbiB0YXJnZXRzCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBhMjYwMWE2YmIwNi4uY2Q2YzZmYzk1ZGIgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEwNTIsNiArMTA1Miw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCisgICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAorICAgICAleyFub3N0ZGxpYjoleyFyOiV7IW5vZGVmYXVsdGxpYnM6JShsaW5rX3NzcCkgJShsaW5rX2djY19jX3NlcXVlbmNlKX19fVwKKysgICAgJXshbm9zdGRsaWIrKzp9XAorICAgICAleyFub3N0ZGxpYjoleyFyOiV7IW5vc3RhcnRmaWxlczolRX19fSAle1QqfSAgXG4lKHBvc3RfbGluaykgfX19fX19IgorICNlbmRpZgorIAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNmYzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBjOTk2ODQ0NzdlYzY2ZjI5MGVjNzRlZmU3MzJhY2QzYzI0ZGI3ZGNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTY6MjggKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8zOV0gQ09MTEVDVF9HQ0NfT1BUSU9OUworCitUaGlzIHBhdGNoIGFkZHMgLS1zeXNyb290IGludG8gQ09MTEVDVF9HQ0NfT1BUSU9OUyB3aGljaCBpcyB1c2VkIHRvCitpbnZva2UgY29sbGVjdDIuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2djYy5jIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGNkNmM2ZmM5NWRiLi43ZGE5YzVkNDU3YiAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtNDgwNCw2ICs0ODA0LDE1IEBAIHNldF9jb2xsZWN0X2djY19vcHRpb25zICh2b2lkKQorIAkJc2l6ZW9mICgiQ09MTEVDVF9HQ0NfT1BUSU9OUz0iKSAtIDEpOworIAorICAgZmlyc3RfdGltZSA9IFRSVUU7CisrI2lmZGVmIEhBVkVfTERfU1lTUk9PVAorKyAgaWYgKHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkICYmIHRhcmdldF9zeXN0ZW1fcm9vdCkKKysgICAgeworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIictLXN5c3Jvb3Q9Iiwgc2l6ZW9mKCInLS1zeXNyb290PSIpLTEpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgdGFyZ2V0X3N5c3RlbV9yb290LHN0cmxlbih0YXJnZXRfc3lzdGVtX3Jvb3QpKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInIiwgMSk7CisrICAgICAgZmlyc3RfdGltZSA9IEZBTFNFOworKyAgICB9CisrI2VuZGlmCisgICBmb3IgKGkgPSAwOyAoaW50KSBpIDwgbl9zd2l0Y2hlczsgaSsrKQorICAgICB7CisgICAgICAgY29uc3QgY2hhciAqY29uc3QgKmFyZ3M7CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGE4NzZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaApAQCAtMCwwICsxLDk2IEBACitGcm9tIGQ2ZjRlZGFhYjBhZDBlNzQyZmIxZTNhNmY3NjkwOGEyYWM5OTI3ZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAorU3ViamVjdDogW1BBVENIIDA3LzM5XSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCisgJHtCfQorCitVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKK3RoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAorZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1doaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcworb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKK3dvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgordG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCisKK1NvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KKyBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQorIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggYWJhZTg3MmNkNjMuLmZlZjZjNGM2MWUzIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC01NDAsNyArNTQwLDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKKyBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACisgCisgeG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKKy10bWFrZV9maWxlPUB0bWFrZV9maWxlQAorK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQorIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACisgVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACisgVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCAyZTI2ZGQzMzMxMC4uZWQ3OTMxZGFlZDMgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIzNDIsOCArMTIzNDIsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAxMmQxZDA0ZTY0NS4uZTA1MDBlMzBkNTAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTk2OCw4ICsxOTY4LDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKK2luZGV4IDMwOGI4N2QwY2MxLi4xOTA2OGNiYzI0YSAxMDA2NDQKKy0tLSBhL2djYy9ta2NvbmZpZy5zaAorKysrIGIvZ2NjL21rY29uZmlnLnNoCitAQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgorICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KKyAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAorIAlmb3IgZmlsZSBpbiAiJEAiOyBkbworLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKysJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisgCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCisgCSAgICBlbHNlCisgCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCitAQCAtMTA2LDcgKzEwNiw3IEBAIGVzYWMKKyAKKyAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCisgaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgorLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKKysgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKKyBmaQorIAorICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhY2QyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMmM1MTRhZGEzNmZmYmY3MDE3NzkwOWY2MzNlOWY2ODgxMWRlNjFlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMzldIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgorCisqIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAordXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcworZGlyZWN0b3J5LgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQoraW5kZXggNjA4NjdiOTNkMGUuLjNmYzlmY2E1YjdiIDEwMDc1NQorLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCisrKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK0BAIC0xMzA3MSw3ICsxMzA3MSw3IEBAIGVzYWMKKyAKKyAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQorICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQorLUZDPSIkR0ZPUlRSQU4iCisrI0ZDPSIkR0ZPUlRSQU4iCisgYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9CisgYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKKyBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKK2luZGV4IDdjZmNlMjhhYjY5Li42Y2Q1MTVlZTFhNCAxMDA2NDQKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitAQCAtMjUwLDcgKzI1MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCisgCisgIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhOWU1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gMGE3YzAzYTljZjkyNWJhMDlhNTEwYTMyZTY4NGYwMWVjNWE1MDY1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMzldIGNwcDogaG9ub3Igc3lzcm9vdC4KKworQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCitwcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCityYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKK3Blcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCisKK1RoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KKworVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCistaXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgorCitbWU9DVE8gIzIwNzRdCisKK1JQIDIwMTIvMDQvMTMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgMiArLQorIGdjYy9nY2MuYyAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAoraW5kZXggYzZlNDJlZGEyODMuLmUxZGRmMDY2NDY3IDEwMDY0NAorLS0tIGEvZ2NjL2NwL2xhbmctc3BlY3MuaAorKysrIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAorQEAgLTY2LDUgKzY2LDUgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIHsiLmlpIiwgIkBjKystY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAYysrLWNwcC1vdXRwdXQiLAorICAgICAgICIleyFFOiV7IU06JXshTU06IgorLSAgICAgICIgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJTIiCisrICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMiIKKyAgICAgICAiICAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggN2RhOWM1ZDQ1N2IuLjRlN2M0NWIyNjhjIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBpbGVyIGRlZmF1bHRfY29tcGlsZXJzW10gPQorIAkJCQkJICAgJVd7byo6LS1vdXRwdXQtcGNoPSUqfX0lVn19fX19fX0iLCAwLCAwLCAwfSwKKyAgIHsiLmkiLCAiQGNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGNwcC1vdXRwdXQiLAorLSAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisrICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKKyAgIHsiLnMiLCAiQGFzc2VtYmxlciIsIDAsIDAsIDB9LAorICAgeyJAYXNzZW1ibGVyIiwKKyAgICAiJXshTToleyFNTToleyFFOiV7IVM6YXMgJShhc21fZGVidWcpICUoYXNtX29wdGlvbnMpICVpICVBIH19fX0iLCAwLCAwLCAwfSwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODEwM2I5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMzc0YWFiNmE4ODIwMGZiZDczNDM0NjdkOTdmN2VlNjQ1NWJiY2U2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMzldIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCisKK01JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0CitzbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCistLS0KKyBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYworaW5kZXggYjIyODJlY2RmMGIuLjY5YzBlNGEwMDViIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy5nY2MKKysrKyBiL2djYy9jb25maWcuZ2NjCitAQCAtMjI4MiwyOSArMjI4MiwyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgorIAkJCTs7CisgCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCisgCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKKyAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzaXNhNjRyNiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCWVzYWMKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWQ1NjNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCkBAIC0wLDAgKzEsMjQ2IEBACitGcm9tIGRjZDc4OTFkNmFlYTUzMjc5NjkxMzJmZWE2Y2E0YzE5OWYxNGU5ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAorU3ViamVjdDogW1BBVENIIDExLzM5XSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCisKK1RoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCityZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCitUaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCitDaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZworU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKKworUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQorIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE1ICsrKysrLS0tLS0tLS0tLQorIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQorIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQorIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAoraW5kZXggODI0ODYxYmVmZWMuLjZhZmFjY2UzMjkyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAorKysrIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAorQEAgLTIzLDggKzIzLDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjZGVmaW5lIEVYVFJBX1NQRUNTIFwKKyB7ICJlbGZfZHluYW1pY19saW5rZXIiLCBFTEZfRFlOQU1JQ19MSU5LRVIgfSwKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCSIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUglTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKKyAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKKyAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAoraW5kZXggNjZlYzBlYTM5ODAuLmU0YWRlMmUyYWIwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC02NSw4ICs2NSw4IEBACisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBhbmQgVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJLiAgKi8KKyAKKyAjdW5kZWYgIEdMSUJDX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICIvbGliL2xkLWxpbnV4LnNvLjMiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUICIvbGliL2xkLWxpbnV4LWFybWhmLnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4zIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYXJtaGYuc28uMyIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVAorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK2luZGV4IDlhMzYwZGVmZDIxLi45OGY2ZTk2MGI2NCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAorQEAgLTYwLDcgKzYwLDcgQEAKKyAKKyAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAorICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAoraW5kZXggOWE2ZTJkOTk4OTYuLjMxZWZiYjczMDE2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitAQCAtMjAsNyArMjAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTiAiZWxmX2kzODYiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKK2luZGV4IGMwODIyMWM0MjEwLi5kYmI0NzRkNzkyYiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKK0BAIC0yNyw5ICsyNyw5IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OWDMyICJlbGYzMl94ODZfNjQiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCitpbmRleCBjM2M0YTIxOWU2Ny4uNGIwNWQ4ZTkzZDEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbGludXguaAorQEAgLTk0LDEwICs5NCwxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cworICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKK2luZGV4IDZmNzlhYzljMDFhLi4yNWRlOTZmOTU2MSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAorQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKKy0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCisgI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0CisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmggYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKK2luZGV4IDU4ZGQxOGI4OWYzLi4xMTJiYTljZDc2NCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcmlzY3YvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCitAQCAtMjIsNyArMjIsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgICBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCk7CQkJCVwKKyAgIH0gd2hpbGUgKDApCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgorIAorICNkZWZpbmUgTVVTTF9BQklfU1VGRklYIFwKKyAgICIle21hYmk9aWxwMzI6LXNmfSIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAoraW5kZXggOTk0NmQzZmVkOTQuLjQ1YTlhN2NhZTU5IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK0BAIC00MjMsMjQgKzQyMywxOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQworICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCistCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgorICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCisgI2Vsc2UKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKKyAjZW5kaWYKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjY0CisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAorLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisrICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisgCisgI3VuZGVmICBERUZBVUxUX0FTTV9FTkRJQU4KKyAjaWYgKFRBUkdFVF9ERUZBVUxUICYgTUFTS19MSVRUTEVfRU5ESUFOKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAoraW5kZXggYzk4OTdiN2FjYTUuLjgyZjI3NTMxOWNjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK0BAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCisgICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAorICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK2luZGV4IDA4NDc2ZjFkOTRkLi44MDQ0MGU3MTJhZCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitAQCAtODQsNyArODQsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOworICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmICBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK2luZGV4IDc4OWQxZGY0YmQ1Li5iOTIwYzY4MGZiMSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjaWZkZWYgU1BBUkNfQklfQVJDSAorIAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDk4ODc4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBmYWEwZjcxMmE2NzAwNWVmMDI2MGY5NWVlYmU3YzdjNTdhNmY4MzYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi8zOV0gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KKworVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCitidWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKKworaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAorCitUaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCitpdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAord291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCitUaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCiskKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IGZlZjZjNGM2MWUzLi41N2NmNzgwNGYwYSAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtMzUzOCw3ICszNTM4LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCisgIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKKyAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCisgCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCistCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKKysJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKKyAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAorIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKKyAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEzLURpc2FibGUtc2R0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTU4NTgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSA0ZGY1YTc0NzI2NTk4MzA5MmFmZDZmYmM1MzI5ZGQ4MDhjYzFkYTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8zOV0gRGlzYWJsZSBzZHQuCisKK1dlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KK0l0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCitzZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKK2J1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgorCitSUCAyMDEyLzgvNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitEaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBlZDc5MzFkYWVkMy4uNTJmNTJiMGVjODYgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMjkzMzMsMTIgKzI5MzMzLDEyIEBAIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorIGhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0KKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMKKysjZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggZTA1MDBlMzBkNTAuLjI0MmFkMjhlYzgzIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU5OTUsMTUgKzU5OTUsMTUgQEAgZmkKKyBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCistaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCistZmkKKy1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisrI2ZpCisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggMTIyNWVkYzU5NmIuLjNiODliODgwZmM4IDEwMDc1NQorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorQEAgLTIyMzI1LDExICsyMjMyNSwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKyBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisgCistICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisgCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorIAorLSAgZmkKKysjICBmaQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK2luZGV4IGQ4NDU1ZTQxNTc0Li44NDRjZjFhY2JjZSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK0BAIC0yMzIsNyArMjMyLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCisgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCisgR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAorIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKKy1HTElCQ1hYX0NIRUNLX1NEVF9ICisrI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKKyAKKyAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTQtbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTQtbGlidG9vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTUzODU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNC1saWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMzQ5NzdkOTk0NjY2YTkwOTgzYzk2YTkyNDBkZmEzNTQwNTYyZGEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMzldIGxpYnRvb2wKKworbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAord2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgorCitUaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KK0FyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Citmb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgorCitmdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCit0byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KKworUlAgMjAxMi84LzI0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbHRtYWluLnNoIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA3OWY5YmE4OWFmNS4uOGUyMjJmN2MxNmIgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgorIAorICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKKysgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCisrCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKKysJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrICAgICAgZmkKKyAKKyAgICAgICBvbGRsaWJzPQorICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDQ0NTI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNDU1OGJhN2ZhMDIwYzExMWY5YTIwNDAyMWE0MThjMGNlNTVkNzdmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMzldIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KKworVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKK21lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Cit0aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAorVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAorZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgorCitXZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IGU0YWRlMmUyYWIwLi4xMDg4NjNmNjlkMiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtOTEsMTAgKzkxLDE0IEBACisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKKyAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgorIAorKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLworKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQworKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCisrCisgLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KKyAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCisgI3VuZGVmICBMSU5LX1NQRUMKKy0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAorKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAorICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAorIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQorIAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDgzM2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gN2VmZmM2MzJkNjVjMmQ3MmJmNmZhMzJhMjE5ZWMyZjgyZmVmOTQwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMzldIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCisgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CisKK1VzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNTJmNTJiMGVjODYuLmE1ZjIwOGFmN2NmIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMzIyLDEwICsxMjMyMiwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTEyMzM2LDYgKzEyMzQ2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDI0MmFkMjhlYzgzLi5iN2E3ZWFkMWMwMiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTQ4LDEwICsxOTQ4LDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTk2Miw2ICsxOTcyLDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkYTAxMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGEyYjJiZjc3NjIxZjM0NGE4NDllNTVhYjE3OWVjZTg1ODdkMTkyMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDE3LzM5XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQorIGhvc3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDhlMjIyZjdjMTZiLi4wYTkzYjRlNWMzYiAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCisrCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAorKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCisrCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBkaXI9IiRsaWJkaXIiCisgCSAgICBhYnNkaXI9IiRsaWJkaXIiCisgCSAgZmkKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTgtZXhwb3J0LUNQUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTgtZXhwb3J0LUNQUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzg1MDk5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gY2FmYjZhNjIxYzA1YzFmMjM4Njc5ZDUyZmMwMjY0NDZmMzhjOGFmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTgvMzldIGV4cG9ydCBDUFAKKworVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCitidWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKK2luIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKKworY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCitjb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKK2NvbmZpZ3VyZTozNjY2OiAkPyA9IDAKK2NvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCitjb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKK2NvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKK2NvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKK2NvbmZpZ3VyZTozODc2OiAkPyA9IDAKKworTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCit1c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgoraGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKK2ludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCitmYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KKworVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKK2Vudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKK3RoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCithdm9pZCB0aGUgcHJvYmxlbS4KKworUlAgMjIvMDgvMjAxMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCA2NGUwOTFiYTcxZC4uMjU1ODIyZTNmMjcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAorIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAxMjlkMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSAxODIwNTdiODA4OTFlZGMwZThkNDY4MzVlMmQ4YmZkMjgzMzBhNTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxOS8zOV0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKKworVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAorZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCitidWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAorc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQorZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCitwaWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYworY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDU3Y2Y3ODA0ZjBhLi43NzcyMzQyYWQ1ZSAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNjE4LDYgKzYxOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKKyAKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KKyBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorK2xpYnN1YmRpcl90YXJnZXQgPSAkKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKKyBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAorQEAgLTI4NjcsNiArMjg2OCw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgorIAorIFBSRVBST0NFU1NPUl9ERUZJTkVTID0gXAorICAgLURHQ0NfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZVwiIFwKKysgIC1ER0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVD1cIiQobGlic3ViZGlyX3RhcmdldCkvaW5jbHVkZVwiIFwKKyAgIC1ERklYRURfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZS1maXhlZFwiIFwKKyAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSPVwiJChnY2NfZ3h4X2luY2x1ZGVfZGlyKVwiIFwKKyAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09UPSQoZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdCkgXAorZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCitpbmRleCBjNDc5NjM4NTY0My4uOTgwZTJiZDQ3YTcgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKyAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisrI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKKysgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KKysgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKysjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKyAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMjE4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBhNDc0MGYxMjkwZTZhNjAyZmJiZmEyN2I4NjNiZTJlM2IyNjc1Njg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMC8zOV0gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZworCitzaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KKworVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKK2h0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCisKK1JQCisyMDEyLzA5LzIyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQorIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK2luZGV4IGMxYjdjNzM5MzRhLi5lZjQzZDYyYzA3YSAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCitAQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorIAorLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KKyBNX1NJWkUJCT0gLUROPSQoUEFUX04pCisgTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgoraW5kZXggMjkzMjRlM2UwYWMuLmQ1Y2RiNDI1OWVmIDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KK0BAIC00MTQsNyArNDE0LDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCisgUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCisgSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKKyBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKKy1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUyA9CisgTV9TSVpFID0gLUROPSQoUEFUX04pCisgTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzYzYzdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZjNlZGFkODFkODBkZGU1ZDY0YmY3N2U2YWJhZmRhNTRkYjEwYjgyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMS8zOV0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgorICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAorCitodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDBhOTNiNGU1YzNiLi42ZGU2ZWQyZjlhMCAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaQorIAkgICAgZWxzZQorIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKKyAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgorLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisrCisgCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQljYXNlICRsaWJkaXIgaW4KKyAJCSAgW1xcL10qKQorLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICA7OworIAkJZXNhYworIAkgICAgICBmaQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NmMwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBiOGVhMmMyYzdkMzMzNzZmNWRkNjUxNjQ2YzdlODIyMDAwZTQ3NzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8zOV0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZworIGJhc2VfbGliZGlyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitpbmRleCA1ZThiMzRkZWQwMy4uN2U2MjhiZjY2MWUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitAQCAtMjEsNyArMjEsNyBAQAorICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAorICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMmQ2ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDg2NDViNTdlN2MwZGZkOTNhZmVlNWNhZWFhNTM0YzcxNGY0NDliYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxODozOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIzLzM5XSBhYXJjaDY0OiBBZGQgc3VwcG9ydCBmb3IgbXVzbCBsZHNvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitpbmRleCA3ZTYyOGJmNjYxZS4uMTcxN2NiZTU0NzEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitAQCAtMjQsNyArMjQsNyBAQAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmICBBU0FOX0NDMV9TUEVDCisgI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQzZTBhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGIxNjY2NTY1ZTRlMTMzZWU0MWYzMmZhODAzMjE2NWJjYjA2YWZlOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDI0LzM5XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCisKKyogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCisgICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKKyAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KKyogRml4IGJhZCBSUEFUSCBpdXNzdWU6CisgIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCisgL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAorIFtycGF0aHNdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQoraW5kZXggNzJjNmFlYWQ0NzUuLjQyYTg3NzQwYjMxIDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCisrKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KK0BAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorIAorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIAorIGlmIEVOQUJMRV9QTFVHSU4KKyBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCitpbmRleCA3MTA0YjY0OTAyNi4uMjEwM2M0Nzc0NjggMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgorQEAgLTM5Myw4ICszOTMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIAorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKKyBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQorIHNoYXJlZF9zb3VyY2UgPSBjYWxsYmFja3MuY2MgY2FsbGJhY2tzLmhoIGNvbm5lY3Rpb24uY2MgY29ubmVjdGlvbi5oaCBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhYzk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApAQCAtMCwwICsxLDM0NiBAQAorRnJvbSA3ZDYxNGE4NDcwOWQ3ZGM0YTI1MjljM2Q1MjllMmRhODU0MWY5ZmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzozOTo1NCArMDAwMAorU3ViamVjdDogW1BBVENIIDI1LzM5XSBoYW5kbGUgc3lzcm9vdCBzdXBwb3J0IGZvciBuYXRpdmVzZGstZ2NjCisKK0JlaW5nIGFibGUgdG8gYnVpbGQgYSBuYXRpdmVzZGsgZ2NjIGlzIHVzZWZ1bCwgcGFydGljdWxhcmx5IGluIGNhc2VzCit3aGVyZSB0aGUgaG9zdCBjb21waWxlciBtYXkgYmUgb2YgYW4gaW5jb21wYXRpYmxlIHZlcnNpb24gKG9yIGEgMzIKK2JpdCBjb21waWxlciBpcyBuZWVkZWQpLgorCitTYWRseSwgYnVpbGRpbmcgbmF0aXZlc2RrLWdjYyBpcyBub3Qgc3RyYWlnaHQgZm9yd2FyZC4gV2UgaW5zdGFsbAorbmF0aXZlc2RrLWdjYyBpbnRvIGEgcmVsb2NhdGFibGUgbG9jYXRpb24gYW5kIHRoaXMgbWVhbnMgdGhhdCBpdHMKK2xpYnJhcnkgbG9jYXRpb25zIGNhbiBjaGFuZ2UuICJOb3JtYWwiIHN5c3Jvb3Qgc3VwcG9ydCBkb2Vzbid0IGhlbHAKK2luIHRoaXMgY2FzZSBzaW5jZSB0aGUgdmFsdWVzIG9mIHBhdGhzIGxpa2UgImxpYmRpciIgY2hhbmdlLCBub3QganVzdAorYmFzZSByb290IGRpcmVjdG9yeSBvZiB0aGUgc3lzdGVtLgorCitJbiBvcmRlciB0byBoYW5kbGUgdGhpcyB3ZSBkbyB0d28gdGhpbmdzOgorCithKSBBZGQgJXIgaW50byBzcGVjIGZpbGUgbWFya3VwIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbmplY3RlZCBwYXRocworICAgc3VjaCBhcyBTWVNURU1MSUJTX0RJUiAoc2VlIGdjY19tdWx0aWxpYl9zZXR1cCgpKS4KK2IpIEFkZCBvdGhlciBwYXRocyB3aGljaCBuZWVkIHJlbG9jYXRpb24gaW50byBhIC5nY2NyZWxvY3ByZWZpeCBzZWN0aW9uCisgICB3aGljaCB0aGUgcmVsb2NhdGlvbiBjb2RlIHdpbGwgbm90aWNlIGFuZCBhZGp1c3QgYXV0b21hdGljYWxseS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitSUCAyMDE1LzcvMjgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworQWRkZWQgUFJFRklYVkFSIGFuZCBFWEVDX1BSRUZJWFZBUiB0byBzdXBwb3J0IHJ1bnRpbWUgcmVsb2NhdGlvbi4gIFdpdGhvdXQKK3RoZXNlIGFzIHBhcnQgb2YgdGhlIGdjY3JlbG9jcHJlZml4IHRoZSBzeXN0ZW0gY2FuJ3QgZG8gcnVudGltZSByZWxvY2F0aW9uCitpZiB0aGUgZXhlY3V0YWJsZSBpcyBtb3ZlZC4gIChUaGVzZSBwYXRocyB3ZXJlIG1pc3NlZCBpbiB0aGUgb3JpZ2luYWwKK2ltcGxlbWVudGF0aW9uLikKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUBrZXJuZWwuY3Jhc2hpbmcub3JnPgorLS0tCisgYy1mYW1pbHkvYy1vcHRzLmMgfCAgICA0ICstLQorIGNwcGRlZmF1bHQuYyAgICAgIHwgICA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjcHBkZWZhdWx0LmggICAgICB8ICAgMTMgKysrKy0tLS0tLS0KKyBnY2MuYyAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKysrLS0tLS0KKyBpbmNwYXRoLmMgICAgICAgICB8ICAgMTIgKysrKystLS0tLQorIHByZWZpeC5jICAgICAgICAgIHwgICAgNCArLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvY3BwZGVmYXVsdC5jCisrKysgZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmMKK0BAIC0zNSw2ICszNSwzMCBAQAorICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAjZW5kaWYKKyAKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOworK2NoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKKysjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisrc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKKysjZW5kaWYKKysKKyBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUworID0gSU5DTFVERV9ERUZBVUxUUzsKK0BAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZQorID0geworICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKy0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCistICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KKy0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCisrICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAorICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQorIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLworICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKK0BAIC04NSwzMyArMTA5LDI0IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGUKKyAjZW5kaWYKKyAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQorICAgfTsKKyAjZW5kaWYgLyogbm8gSU5DTFVERV9ERUZBVUxUUyAqLworIAorLSNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKKy1jb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXSA9IEdDQ19JTkNMVURFX0RJUjsKKy1jb25zdCBzaXplX3QgY3BwX0dDQ19JTkNMVURFX0RJUl9sZW4gPSBzaXplb2YgR0NDX0lOQ0xVREVfRElSIC0gODsKKy0jZWxzZQorLWNvbnN0IGNoYXIgY3BwX0dDQ19JTkNMVURFX0RJUltdID0gIiI7CistY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuID0gMDsKKy0jZW5kaWYKKy0KKyAvKiBUaGUgY29uZmlndXJlZCBwcmVmaXguICAqLworLWNvbnN0IGNoYXIgY3BwX1BSRUZJWFtdID0gUFJFRklYOworLWNvbnN0IHNpemVfdCBjcHBfUFJFRklYX2xlbiA9IHNpemVvZiBQUkVGSVggLSAxOworLWNvbnN0IGNoYXIgY3BwX0VYRUNfUFJFRklYW10gPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKytjaGFyIFBSRUZJWFZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVg7CisrY2hhciBFWEVDX1BSRUZJWFZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKyAKKyAvKiBUaGlzIHZhbHVlIGlzIHNldCBieSBjcHBfcmVsb2NhdGVkIGF0IHJ1bnRpbWUgKi8KKyBjb25zdCBjaGFyICpnY2NfZXhlY19wcmVmaXg7CitJbmRleDogZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvY3BwZGVmYXVsdC5oCisrKysgZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmgKK0BAIC0zMyw3ICszMyw4IEBACisgCisgc3RydWN0IGRlZmF1bHRfaW5jbHVkZQorIHsKKy0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrCisgICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisgCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCisgICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLworQEAgLTUwLDE3ICs1MSwxMyBAQCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgfTsKKyAKKyBleHRlcm4gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdOworLWV4dGVybiBjb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXTsKKy1leHRlcm4gY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuOworK2V4dGVybiBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAKKyAvKiBUaGUgY29uZmlndXJlLXRpbWUgcHJlZml4LCBpLmUuLCB0aGUgdmFsdWUgc3VwcGxpZWQgYXMgdGhlIGFyZ3VtZW50CisgICAgdG8gLS1wcmVmaXg9LiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBjcHBfUFJFRklYW107CisrZXh0ZXJuIGNoYXIgUFJFRklYVkFSW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpOworIC8qIFRoZSBsZW5ndGggb2YgdGhlIGNvbmZpZ3VyZS10aW1lIHByZWZpeC4gICovCistZXh0ZXJuIGNvbnN0IHNpemVfdCBjcHBfUFJFRklYX2xlbjsKKy0vKiBUaGUgY29uZmlndXJlLXRpbWUgZXhlY3V0aW9uIHByZWZpeC4gIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBsaWIvZ2NjCistICAgc3ViZGlyZWN0b3J5IG9mIGNwcF9QUkVGSVguICAqLworLWV4dGVybiBjb25zdCBjaGFyIGNwcF9FWEVDX1BSRUZJWFtdOworK2V4dGVybiBjaGFyIEVYRUNfUFJFRklYVkFSW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpOworIC8qIFRoZSBydW4tdGltZSBleGVjdXRpb24gcHJlZml4LiAgVGhpcyBpcyB0eXBpY2FsbHkgdGhlIGxpYi9nY2MKKyAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIGFjdHVhbCBpbnN0YWxsYXRpb24uICAqLworIGV4dGVybiBjb25zdCBjaGFyICpnY2NfZXhlY19wcmVmaXg7CitJbmRleDogZ2NjLTkuMy4wL2djYy9nY2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy05LjMuMC5vcmlnL2djYy9nY2MuYworKysrIGdjYy05LjMuMC9nY2MvZ2NjLmMKK0BAIC0yNTMsNiArMjUzLDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOworICNlbmRpZgorIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKKyAKKytzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOworKworIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KKyAKKyBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOworQEAgLTUyNyw2ICs1MjksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lCisgICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KKyAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCisgICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCisrICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4CisgICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgorQEAgLTE1MDAsMTAgKzE1MDMsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKKyAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKKyAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAorICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyAKKyAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZworICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcworQEAgLTE1MTEsOSArMTUxNCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGYKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOworIAorIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCitAQCAtNTkyMiw2ICs1OTI1LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGMKKyAJICAgICAgfQorIAkgICAgYnJlYWs7CisgCisrICAgICAgICAgIGNhc2UgJ3InOgorKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKKysJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOworKyAgICAgICAgICAgIGJyZWFrOworKworIAkgIGNhc2UgJ1MnOgorIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKKyAJICAgIGlmICh2YWx1ZSAhPSAwKQorSW5kZXg6IGdjYy05LjMuMC9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKysrKyBnY2MtOS4zLjAvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCitAQCAtMTM4Miw4ICsxMzgyLDggQEAgYWRkX3ByZWZpeGVkX3BhdGggKGNvbnN0IGNoYXIgKnN1ZmZpeCwgaQorICAgc2l6ZV90IHByZWZpeF9sZW4sIHN1ZmZpeF9sZW47CisgCisgICBzdWZmaXhfbGVuID0gc3RybGVuIChzdWZmaXgpOworLSAgcHJlZml4ICAgICA9IGlwcmVmaXggPyBpcHJlZml4IDogY3BwX0dDQ19JTkNMVURFX0RJUjsKKy0gIHByZWZpeF9sZW4gPSBpcHJlZml4ID8gc3RybGVuIChpcHJlZml4KSA6IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuOworKyAgcHJlZml4ICAgICA9IGlwcmVmaXggPyBpcHJlZml4IDogR0NDX0lOQ0xVREVfRElSVkFSOworKyAgcHJlZml4X2xlbiA9IGlwcmVmaXggPyBzdHJsZW4gKGlwcmVmaXgpIDogc3RybGVuKEdDQ19JTkNMVURFX0RJUlZBUikgLSA3OworIAorICAgcGF0aCA9IChjaGFyICopIHhtYWxsb2MgKHByZWZpeF9sZW4gKyBzdWZmaXhfbGVuICsgMSk7CisgICBtZW1jcHkgKHBhdGgsIHByZWZpeCwgcHJlZml4X2xlbik7CitJbmRleDogZ2NjLTkuMy4wL2djYy9pbmNwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvaW5jcGF0aC5jCisrKysgZ2NjLTkuMy4wL2djYy9pbmNwYXRoLmMKK0BAIC0xMzEsNyArMTMxLDcgQEAgYWRkX3N0YW5kYXJkX3BhdGhzIChjb25zdCBjaGFyICpzeXNyb290LAorICAgaW50IHJlbG9jYXRlZCA9IGNwcF9yZWxvY2F0ZWQgKCk7CisgICBzaXplX3QgbGVuOworIAorLSAgaWYgKGlwcmVmaXggJiYgKGxlbiA9IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuKSAhPSAwKQorKyAgaWYgKGlwcmVmaXggJiYgKGxlbiA9IHN0cmxlbihHQ0NfSU5DTFVERV9ESVJWQVIpIC0gNykgIT0gMCkKKyAgICAgeworICAgICAgIC8qIExvb2sgZm9yIGRpcmVjdG9yaWVzIHRoYXQgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcHJlZml4LgorIAkgIlRyYW5zbGF0ZSIgdGhlbSwgaS5lLiByZXBsYWNlIC91c3IvbG9jYWwvbGliL2djYy4uLiB3aXRoCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAJCSBub3cuICAqLworIAkgICAgICBpZiAoc3lzcm9vdCAmJiBwLT5hZGRfc3lzcm9vdCkKKyAJCWNvbnRpbnVlOworLQkgICAgICBpZiAoIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBjcHBfR0NDX0lOQ0xVREVfRElSLCBsZW4pKQorKwkgICAgICBpZiAoIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBHQ0NfSU5DTFVERV9ESVJWQVIsIGxlbikpCisgCQl7CisgCQkgIGNoYXIgKnN0ciA9IGNvbmNhdCAoaXByZWZpeCwgcC0+Zm5hbWUgKyBsZW4sIE5VTEwpOworIAkJICBpZiAocC0+bXVsdGlsaWIgPT0gMSAmJiBpbXVsdGlsaWIpCitAQCAtMTg1LDcgKzE4NSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAJICAgICAgZnJlZSAoc3lzcm9vdF9ub190cmFpbGluZ19kaXJfc2VwYXJhdG9yKTsKKyAJICAgIH0KKyAJICBlbHNlIGlmICghcC0+YWRkX3N5c3Jvb3QgJiYgcmVsb2NhdGVkCistCQkgICAmJiAhZmlsZW5hbWVfbmNtcCAocC0+Zm5hbWUsIGNwcF9QUkVGSVgsIGNwcF9QUkVGSVhfbGVuKSkKKysJCSAgICYmICFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgUFJFRklYVkFSLCBzdHJsZW4oUFJFRklYVkFSKSkpCisgCSAgICB7CisgIAkgICAgICBzdGF0aWMgY29uc3QgY2hhciAqcmVsb2NhdGVkX3ByZWZpeDsKKyAJICAgICAgY2hhciAqb3N0cjsKK0BAIC0yMDIsMTIgKzIwMiwxMiBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCQkgIGR1bW15ID0gY29uY2F0IChnY2NfZXhlY19wcmVmaXgsICJkdW1teSIsIE5VTEwpOworIAkJICByZWxvY2F0ZWRfcHJlZml4CisgCQkgICAgPSBtYWtlX3JlbGF0aXZlX3ByZWZpeCAoZHVtbXksCistCQkJCQkgICAgY3BwX0VYRUNfUFJFRklYLAorLQkJCQkJICAgIGNwcF9QUkVGSVgpOworKwkJCQkJICAgIEVYRUNfUFJFRklYVkFSLAorKwkJCQkJICAgIFBSRUZJWFZBUik7CisgCQkgIGZyZWUgKGR1bW15KTsKKyAJCX0KKyAJICAgICAgb3N0ciA9IGNvbmNhdCAocmVsb2NhdGVkX3ByZWZpeCwKKy0JCQkgICAgIHAtPmZuYW1lICsgY3BwX1BSRUZJWF9sZW4sCisrCQkJICAgICBwLT5mbmFtZSArIHN0cmxlbihQUkVGSVhWQVIpLAorIAkJCSAgICAgTlVMTCk7CisgCSAgICAgIHN0ciA9IHVwZGF0ZV9wYXRoIChvc3RyLCBwLT5jb21wb25lbnQpOworIAkgICAgICBmcmVlIChvc3RyKTsKK0luZGV4OiBnY2MtOS4zLjAvZ2NjL3ByZWZpeC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL3ByZWZpeC5jCisrKysgZ2NjLTkuMy4wL2djYy9wcmVmaXguYworQEAgLTcyLDcgKzcyLDkgQEAgTGljZW5zZSBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUAorICNpbmNsdWRlICJwcmVmaXguaCIKKyAjaW5jbHVkZSAiY29tbW9uL2NvbW1vbi10YXJnZXQuaCIKKyAKKy1zdGF0aWMgY29uc3QgY2hhciAqc3RkX3ByZWZpeCA9IFBSRUZJWDsKKytzdGF0aWMgY29uc3QgY2hhciBQUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYOworKworK3N0YXRpYyBjb25zdCBjaGFyICpzdGRfcHJlZml4ID0gUFJFRklYVkFSOworIAorIHN0YXRpYyBjb25zdCBjaGFyICpnZXRfa2V5X3ZhbHVlIChjaGFyICopOworIHN0YXRpYyBjaGFyICp0cmFuc2xhdGVfbmFtZSAoY2hhciAqKTsKK0BAIC0yMTIsNyArMjE0LDcgQEAgdHJhbnNsYXRlX25hbWUgKGNoYXIgKm5hbWUpCisgCXByZWZpeCA9IGdldGVudiAoa2V5KTsKKyAKKyAgICAgICBpZiAocHJlZml4ID09IDApCistCXByZWZpeCA9IFBSRUZJWDsKKysJcHJlZml4ID0gUFJFRklYVkFSOworIAorICAgICAgIC8qIFdlIHVzZWQgdG8gc3RyaXAgdHJhaWxpbmcgRElSX1NFUEFSQVRPUnMgaGVyZSwgYnV0IHRoYXQgY2FuCisgCSBzb21ldGltZXMgeWllbGQgYSByZXN1bHQgd2l0aCBubyBzZXBhcmF0b3Igd2hlbiBvbmUgd2FzIGNvZGVkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmYTc1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gNmMzOWEyMmMzZTg1ZDIwZGVlOWUyZmMyMjc0ZTk1ZGE5ODBkZTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNi8zOV0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAorIG11bHRpbGliLgorCitXZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KKzxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KK3doaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQorY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQordGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Citjby1leGlzdCBvbiB0YXJnZXQuCisKK1dlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yaworZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgorPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KK21pcHM2NC1wb2xrbWxsaWIzMi1saW51eAoraXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgorCitUaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKK2lzOgorCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK3doaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKK3dpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgorCitUaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKK2JpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKKworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitSUCAyMDE1LzcvMzEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNTlmYjY0ZjVmZDUuLjNlNzlkYTQyMzhjIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNjE3LDcgKzI2MTcsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgCXsKKyAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKKy0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKysJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKyAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKKyAJfQorIAorQEAgLTI2MjksNiArMjYyOSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCisgCSAgaWYgKCFza2lwX211bHRpX2RpcikKKyAJICAgIHsKKysJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCisrCSAgICAgICAgeworKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKKysJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKKysKKysJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKKysJCSAgICB9CisrCSAgICAgICAgICBlbHNlCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKKysJCSAgICB9CisrCisrCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KKysJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKKysJICAgICAgICAgICAgeworKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOworKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisrCSAgICAgICAgICAgICAgICBpZiAocmV0KQorKwkJICAgICAgICAgIGJyZWFrOworKwkgICAgICAgICAgICB9CisrCSAgICAgICAgfQorKworIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisgCSAgICAgIGlmIChyZXQpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZThhY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSAwN2RiMzRiMTZiNmM4ZTNkOTQ4YjQxN2YyZmMwNTI1MDBmZmI3N2QzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0Mjo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDI3LzM5XSBGaXggdmFyaW91cyBfRk9SX0JVSUxEIGFuZCByZWxhdGVkIHZhcmlhYmxlcworCitXaGVuIGRvaW5nIGEgRk9SX0JVSUxEIHRoaW5nLCB5b3UgaGF2ZSB0byBvdmVycmlkZSBDRkxBR1Mgd2l0aAorQ0ZMQUdTX0ZPUl9CVUlMRC4gQW5kIGlmIHlvdSB1c2UgQysrLCB5b3UgYWxzbyBoYXZlIHRvIG92ZXJyaWRlCitDWFhGTEFHUyB3aXRoIENYWEZMQUdTX0ZPUl9CVUlMRC4KK1dpdGhvdXQgdGhpcywgd2hlbiBidWlsZGluZyBmb3IgbWluZ3csIHlvdSBlbmQgdXAgdHJ5aW5nIHRvIHVzZQordGhlIG1pbmd3IGhlYWRlcnMgZm9yIGEgaG9zdCBidWlsZC4KKworVGhlIHNhbWUgZ29lcyBmb3Igb3RoZXIgdmFyaWFibGVzIGFzIHdlbGwsIHN1Y2ggYXMgQ1BQRkxBR1MsCitDUFAsIGFuZCBHTVBJTkMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICB8IDYgKysrKysrCisgTWFrZWZpbGUudHBsICAgICB8IDUgKysrKysKKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAyNTU4MjJlM2YyNy4uOWRjMGRmZjA0NzQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitAQCAtNzc1LDYgKzc4MCw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKKyAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKKyAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCisrCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCisgCSJGTEVYPSQoRkxFWCkiIFwKKyAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAoraW5kZXggNDFjYWU1OGEyNjcuLmQzZjZiNzlhY2RjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUudHBsCisrKysgYi9NYWtlZmlsZS50cGwKK0BAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNzMsNiArMTc0LDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xOTAsNiArMTk0LDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggNzc3MjM0MmFkNWUuLjAyZmVjODgxYjZkIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC04MDUsNyArODA1LDcgQEAgQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKKyBCVUlMRF9OT19QSUVfRkxBRyA9IEBCVUlMRF9OT19QSUVfRkxBR0AKKyBCVUlMRF9MREZMQUdTICs9ICQoQlVJTERfTk9fUElFX0ZMQUcpCisgQlVJTERfQ1BQRkxBR1M9IC1JLiAtSSQoQEQpIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpLyQoQEQpIFwKKy0JCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTKQorKwkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1NfRk9SX0JVSUxEKQorIAorICMgQWN0dWFsIG5hbWUgdG8gdXNlIHdoZW4gaW5zdGFsbGluZyBhIG5hdGl2ZSBjb21waWxlci4KKyBHQ0NfSU5TVEFMTF9OQU1FIDo9ICQoc2hlbGwgZWNobyBnY2N8c2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJykKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYTVmMjA4YWY3Y2YuLjA3ODhiN2JmMGI1IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTExOTY2LDcgKzExOTY2LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggYjdhN2VhZDFjMDIuLjVhYjUwZmFlMGYzIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE3NDMsNyArMTc0Myw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE1ZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU5NTQzZTg5N2ViMzUxOTRmYjQ3Mjg4Zjc3NjJlNDBhMThmZmY2MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjgvMzldIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKK2luZGV4IDY5ODczNGFkZDM1Li5lZWVlNjBlY2ZlYSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitAQCAtMzAsNiArMzAsNyBAQAorICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCisrI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCisgCisgI3VuZGVmIExJTktfU1BFQworICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTdlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSA4ZGY5OWFmMGE2NWVmNzQwYmNmMmI3ZGM5YTEwOWNjNTdmMTVjM2FhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTg6MTA6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8zOV0gQWRkIHNzcF9ub25zaGFyZWQgdG8gbGluayBjb21tYW5kbGluZSBmb3IgbXVzbCB0YXJnZXRzCisKK3doZW4gLWZzdGFjay1wcm90ZWN0b3Igb3B0aW9ucyBhcmUgZW5hYmxlZCB3ZSBuZWVkIHRvCitsaW5rIHdpdGggc3NwX3NoYXJlZCBvbiBtdXNsIHNpbmNlIGl0IGRvZXMgbm90IHByb3ZpZGUKK3RoZSBfX3N0YWNrX2Noa19mYWlsX2xvY2FsKCkgc28gZXNzZW50aWFsbHkgaXQgcHJvdmlkZXMKK2xpYnNzcCBidXQgbm90IGxpYnNzcF9ub25zaGFyZWQgc29tZXRoaW5nIGxpa2UKK1RBUkdFVF9MSUJDX1BST1ZJREVTX1NTUF9CVVRfTk9UX1NTUF9OT05TSEFSRUQKKyB3aGVyZS1hcyBmb3IgZ2xpYmMgdGhlIG5lZWRlZCBzeW1ib2xzCithcmUgYWxyZWFkeSBwcmVzZW50IGluIGxpYmNfbm9uc2hhcmVkIGxpYnJhcnkgdGhlcmVmb3JlCit3ZSBkbyBub3QgbmVlZCBhbnkgbGlicmFyeSBoZWxwZXIgb24gZ2xpYmMgYmFzZWQgc3lzdGVtcworYnV0IG11c2wgbmVlZHMgdGhlIGxpYnNzcF9ub3NoYXJlZCBmcm9tIGdjYworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICB8ICA3ICsrKysrKysKKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eC5oICAgfCAxMCArKysrKysrKysrCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgMTAgKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCitpbmRleCA0YjA1ZDhlOTNkMS4uMGNhMTE3ZTJlZDQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbGludXguaAorQEAgLTE5NSw2ICsxOTUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCisgICB9CisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrCisgI2VuZGlmCisgCisgI2lmIChERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMpICYmIGRlZmluZWQgKFNJTkdMRV9MSUJDKSAvKiB1Q2xpbnV4ICovCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKK2luZGV4IGZmY2ViMzJiZjY1Li5jODJjYjJhZDA1YiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKK0BAIC05NCw2ICs5NCwxNiBAQAorIAkJCQkJICIgLW0gZWxmMzJwcGNsaW51eCIpCisgI2VuZGlmCisgCisrLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCisrI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKKysjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisrI3VuZGVmIExJTktfU1NQX1NQRUMKKysjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKysjZW5kaWYKKysjZW5kaWYKKysKKyAjdW5kZWYgTElOS19PU19MSU5VWF9TUEVDCisgI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMgTElOS19PU19MSU5VWF9FTVVMICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKKyAgICV7IXN0YXRpYy1waWU6IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IDQ1YTlhN2NhZTU5Li5kMWU4OGE0MGU4MiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitAQCAtNDU2LDYgKzQ1NiwxNiBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworIAkJCQkJICAgIiAtbSBlbGY2NHBwYyIpCisgI2VuZGlmCisgCisrLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCisrI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKKysjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisrI3VuZGVmIExJTktfU1NQX1NQRUMKKysjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKysjZW5kaWYKKysjZW5kaWYKKysKKyAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQzMyIExJTktfT1NfTElOVVhfRU1VTDMyICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKKyAgICV7IXN0YXRpYy1waWU6IFwKKyAgICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzAtbGRibDEyOC1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZThjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gMWJmYWU2MjRiMjdlYTRhMWY1YzVhOTIwNTBkNzQxYjUxMWU3YjNkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAwMDo1NDowNSArMDAwMAorU3ViamVjdDogW1BBVENIIDMwLzM5XSBsZGJsMTI4IGNvbmZpZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAxMyArKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrKysrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMDc4OGI3YmYwYjUuLmViMWE0NWJiMjYzIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI5MzcwLDYgKzI5MzcwLDE1IEBAIGlmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgorIGVsc2UKKyAKKysgICAgICBjYXNlICIkdGFyZ2V0IiBpbgorKwlzMzkwKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKysJICA7OworKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubworKwkgIDs7CisrCSopCisrCisgaWYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZ3QgMiBcCisgICB8fCAoIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWVxIDIgJiYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9taW5vciAtZ2UgNCApOyB0aGVuIDoKKyAgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKK0BAIC0yOTM4MSw2ICsyOTM5MCwxMCBAQCBlbHNlCisgICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworIAorIGZpCisrCisrCSAgOzsKKysgICAgICBlc2FjCisrCisgZmkKKyAKKyAgICAgOzsKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggNWFiNTBmYWUwZjMuLjdmZmUzNWVlMWMzIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYwMzAsMTMgKzYwMzAsMjUgQEAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAorICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCisgCQkgICAgICBbdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdF0pXSwKKy0gICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsCisrICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLCBbCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKV0KKyAgICAgICBbR0NDX0dMSUJDX1ZFUlNJT05fR1RFX0lGRUxTRShbMl0sIFs0XSwgW2djY19jdl90YXJnZXRfbGRibDEyOD15ZXNdLCBbCisgICAgICAgW2djY19jdl90YXJnZXRfbGRibDEyOD1ubworICAgICAgIGdyZXAgJ15bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKl9fTE9OR19ET1VCTEVfTUFUSF9PUFRJT05BTCcgXAorICAgICAgICAgJHRhcmdldF9oZWFkZXJfZGlyL2JpdHMvd29yZHNpemUuaCA+IC9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCistICAgICAgXV0pXSkKKysgICAgICBdXSldCisrICAgICAgWworKwkgIDs7CisrICAgICAgZXNhYworKyAgICAgIF0pCisgICAgIDs7CisgZXNhYworIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2xkYmwxMjggPSB4eWVzOyB0aGVuCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYTI5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDMxZDAwOGY1NTczNjI3YzYxOTJjZTlmY2Y3MjlmMGJlNDY0YTdjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzEvMzldIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitpbmRleCAwOTliZjIzZTYyZi4uNDM2YjI3N2E3OWYgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDQ4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSA3NjFmYTZlM2UzNzYwOGNmZDFiMjg4ZTcyMWEyZmY4OTI4OGNkNmFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBTYXQsIDI0IE9jdCAyMDE1IDIwOjA5OjUzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzIvMzldIGxpYmdjY19zOiBVc2UgYWxpYXMgZm9yIF9fY3B1X2luZGljYXRvcl9pbml0IGluc3RlYWQgb2YKKyBzeW12ZXIKKworQWRhcHRlciBmcm9tCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNS0wNS9tc2cwMDg5OS5odG1sCisKK1RoaXMgZml4IHdhcyBkZWJhdGVkIGJ1dCBoYXNudCBiZWVuIGFwcGxpZWQgZ2NjIHVwc3RyZWFtIHNpbmNlCit0aGV5IGV4cGVjdCBtdXNsIHRvIHN1cHBvcnQgJ0AnIGluIHN5bWJvbCB2ZXJzaW9uaW5nIHdoaWNoIGlzCithIHN1bi9nbnUgdmVyc2lvbmluZyBleHRlbnRpb24uIFRoaXMgcGF0Y2ggaG93ZXZlciBhdm9pZHMgdGhlCituZWVkIGZvciB0aGUgJ0AnIHN5bWJvbHMgYXQgYWxsCisKK2xpYmdjYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2NwdWluZm8uYyAoX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwpOiBBZGQuCisJKF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wKTogUmVtb3ZlLgorCisJKiBjb25maWcvaTM4Ni90LWxpbnV4IChIT1NUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlIC1EVVNFX0VMRl9TWU1WRVIuCisKK2djYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IE1ha2UgX19idWlsdGluX2NwdV9pbml0CisJY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbnN0ZWFkIG9mIF9fY3B1X2luZGljYXRvcl9pbml0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK2luZGV4IDFiY2E1YTdlZWE2Li4wOTZjNGJjOGUyNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKKysrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK0BAIC0zNjY4NSwxMCArMzY2ODUsMTAgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCisgICAgIHsKKyAgICAgY2FzZSBJWDg2X0JVSUxUSU5fQ1BVX0lOSVQ6CisgICAgICAgeworLQkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXQgaW4gbGliZ2NjLiAqLworKwkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW4gbGliZ2NjLmEuICovCisgCXRyZWUgY2FsbF9leHByLCBmbmRlY2wsIHR5cGU7CisgICAgICAgICB0eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsgCistCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIsIHR5cGUpOworKwlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwiLCB0eXBlKTsKKyAJY2FsbF9leHByID0gYnVpbGRfY2FsbF9leHByIChmbmRlY2wsIDApOyAKKyAJcmV0dXJuIGV4cGFuZF9leHByIChjYWxsX2V4cHIsIHRhcmdldCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7CisgICAgICAgfQorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitpbmRleCBkNmNiMmRlNjI2NS4uY2UwNGVmNzgyMDUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCisrKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitAQCAtNTA0LDcgKzUwNCw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQorICAgcmV0dXJuIDA7CisgfQorIAorLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCistX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOworLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKKysjaWZuZGVmIFNIQVJFRAorK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKKysgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitpbmRleCA4NTA2YTYzNTc5MC4uNTY0Mjk2Zjc4OGUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKK0BAIC0zLDUgKzMsNSBAQAorICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKKyBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCisgCistSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIgJChDRVRfRkxBR1MpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwICQoQ0VUX0ZMQUdTKQorIENSVFNUVUZGX1RfQ0ZMQUdTICs9ICQoQ0VUX0ZMQUdTKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDgwYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSAxMjZlMzQyZmIzOWQ3YWY3MGMxZTVhNmRmOGZmYWZjOGRmYzNiZjA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDMzLzM5XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKKworbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKK3NvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9naW5jbHVkZS9zdGRkZWYuaCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitpbmRleCBkYTY5MmUxYzAxYS4uOWEwMGMyNjFhZGIgMTAwNjQ0CistLS0gYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKKysrKyBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAorQEAgLTEyOCw2ICsxMjgsNyBAQCBfVFlQRV93Y2hhcl90OworICNpZm5kZWYgX19faW50X3B0cmRpZmZfdF9oCisgI2lmbmRlZiBfR0NDX1BUUkRJRkZfVAorICNpZm5kZWYgX1BUUkRJRkZfVF9ERUNMQVJFRCAvKiBEcmFnb25GbHkgKi8KKysjaWZuZGVmIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNkZWZpbmUgX1BUUkRJRkZfVAorICNkZWZpbmUgX1RfUFRSRElGRl8KKyAjZGVmaW5lIF9UX1BUUkRJRkYKK0BAIC0xMzcsMTAgKzEzOCwxMiBAQCBfVFlQRV93Y2hhcl90OworICNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCisgI2RlZmluZSBfR0NDX1BUUkRJRkZfVAorICNkZWZpbmUgX1BUUkRJRkZfVF9ERUNMQVJFRAorKyNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2lmbmRlZiBfX1BUUkRJRkZfVFlQRV9fCisgI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50CisgI2VuZGlmCisgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKysjZW5kaWYgLyogX19ERUZJTkVEX3B0cmRpZmZfdCAqLworICNlbmRpZiAvKiBfUFRSRElGRl9UX0RFQ0xBUkVEICovCisgI2VuZGlmIC8qIF9HQ0NfUFRSRElGRl9UICovCisgI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLworQEAgLTE3OCw2ICsxODEsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNpZm5kZWYgX0dDQ19TSVpFX1QKKyAjaWZuZGVmIF9TSVpFVF8KKyAjaWZuZGVmIF9fc2l6ZV90CisrI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1NJWkVfVAorQEAgLTE5NCw2ICsxOTgsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNkZWZpbmUgX19faW50X3NpemVfdF9oCisgI2RlZmluZSBfR0NDX1NJWkVfVAorICNkZWZpbmUgX1NJWkVUXworKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2lmIGRlZmluZWQgKF9fRnJlZUJTRF9fKSBcCisgICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKKyAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSBcCitAQCAtMjI4LDYgKzIzMyw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNlbmRpZiAvKiBfU0laRV9UICovCisgI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KKyAjZW5kaWYgLyogX19zaXplX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCisgI3VuZGVmCV9fbmVlZF9zaXplX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLworIAorQEAgLTI1Nyw2ICsyNjMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKKyAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAorICNpZm5kZWYgX0dDQ19XQ0hBUl9UCisrI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1dDSEFSX1QKK0BAIC0yNzIsNiArMjc5LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKKyAjZGVmaW5lIF9HQ0NfV0NIQVJfVAorICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KKyAKKyAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXworICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgorQEAgLTMzNyw2ICszNDUsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CisgI2VuZGlmCisgI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCisgI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCisrI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KKyAjdW5kZWYJX19uZWVkX3djaGFyX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdjY2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gZDI2ZmE5ZWRlZGNjYzdlMWVjNDdlYWQ3ZjE4YWZjODA5NzE0ODNhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitEYXRlOiBNb24sIDE5IE1hciAyMDE4IDIyOjMxOjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzQvMzldIGZpeCBzZWdtZW50YXRpb24gZmF1bHQgaW4gcHJlY29tcGlsZWQgaGVhZGVyIGdlbmVyYXRpb24KKworUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKK3N0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMKK0NQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgordGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgorCitbWU9DVE8gIzExNzM4XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJjcHAvbGV4LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCitpbmRleCBlZWRmY2JiMzE0Ni4uMTUwNDBhMWIxZjAgMTAwNjQ0CistLS0gYS9saWJjcHAvbGV4LmMKKysrKyBiL2xpYmNwcC9sZXguYworQEAgLTMyODAsMTEgKzMyODAsMjcgQEAgY3BwX3NwZWxsX3Rva2VuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3BwX3Rva2VuICp0b2tlbiwKKyAgICAgc3BlbGxfaWRlbnQ6CisgICAgIGNhc2UgU1BFTExfSURFTlQ6CisgICAgICAgaWYgKGZvcnN0cmluZykKKy0JeworLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCistCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKKy0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CistCX0KKysgICAgICAgIHsKKysgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCisrICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CisrICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KKysgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7CisrICAgICAgICAgICAgICBpZiAoc3RyKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOworKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKKysgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisgICAgICAgZWxzZQorIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOworICAgICAgIGJyZWFrOworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTk5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKQEAgLTAsMCArMSwyNTggQEAKK0Zyb20gZmI1YmRmOGY4NTI3MjI4ZDU4N2U4YWY5ZmM3MDBlNTE2NGIzYzE4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJBR0hVTkFUSCBMT0xVUiA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgorRGF0ZTogV2VkLCA2IERlYyAyMDE3IDIyOjUyOjI2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMzUvMzldIEZpeCBmb3IgdGVzdHN1aXRlIGZhaWx1cmUKKworMjAxNy0xMS0xNiAgUmFnaHVuYXRoIExvbHVyICA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgorCisJKiBnY2MuZGcvcHI1NjI3NS5jOiBJZiBTU0UgaXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0CisJIi1tZnBtYXRoIiBpcyBub3Qgc2V0IHRvIHVzZSBTU0UuIFNldCAiLW1mcG1hdGg9Mzg3Ii4KKwkqIGdjYy5kZy9wcjY4MzA2LmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2ODMwNi0yLmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2ODMwNi0zLmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2OTYzNC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9pc2EtMTQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYzogTGlrZXdpc2UKKworSWYgLVdhbGwsIC1XZXJyb3IgYXJlIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIHZhcmlvdXMgdGVzdCBjYXNlcyBmYWlsCit0byBjb21waWxlLgorCitJZiBTU0UgaXMgZGlzYWJsZWQsIGJlIHN1cmUgdG8gLW1mcG1hdGg9Mzg3IHRvIHJlc29sdmUgdGhpcy4KKworVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjaGFuZ2VzIHRvIENoYW5nZWxvZyBmcm9tIHRoZSBvcmlnaW5hbCBwYXRjaC4KK1RoaXMgd2lsbCBoZWxwIHVzIGF2b2lkIGNvbmZsaWN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyAgICAgICAgICB8IDEgKworIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgICAgICB8IDIgKy0KKyAxNyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworaW5kZXggYjkwMWJiMmIxOTkuLmE0ZjZjOTVlMWExIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLworIAorIHR5cGVkZWYgbG9uZyBsb25nIHYydHcgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgyICogc2l6ZW9mIChsb25nIGxvbmcpKSkpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKK2luZGV4IDQ2NzJlYmU3OTg3Li4yYTM2OGM0ODRiNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIAorIHN0cnVjdCB7CisgICAgIGludCB0el9taW51dGVzd2VzdDsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCitpbmRleCBmNWE4YzEwMmNmOC4uZGYzMzkwYzY0YzIgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1hbHRpdmVjIC1tbm8tdnN4IiB7IHRhcmdldCBwb3dlcnBjKi0qLSogfSB9ICovCisgCisgZXh0ZXJuIHZvaWQgZm4yKCk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCitpbmRleCA1NGU1YjQwZjIyMS4uMDgxMzM4OWUyYzEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIAorIGVudW0gcG93ZXJwY19wbWNfdHlwZSB7IFBQQ19QTUNfSUJNIH07Cisgc3RydWN0IHsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKK2luZGV4IDYwYTU2MTQ5NDYzLi5iY2MyM2Y5Y2NkNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tZGNlIC1mc2NoZWR1bGUtaW5zbnMgLWZuby10cmVlLXZycCAtZmNvbXBhcmUtZGVidWcgLVduby1wc2FiaSIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHNjaGVkdWxpbmcgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCitpbmRleCA2OWZkZTU3YmYwNi4uN2YxZjFjMDNlZGYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hYmk9c3lzdiIgeyB0YXJnZXQgKi0qLW1pbmd3KiB9IH0gKi8KKyAKKyBkb3VibGUgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0JLyogeyBkZy1lcnJvciAiU1NFIGRpc2FibGVkIiB9ICovCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCitpbmRleCBlYTg5NmI3ZWJmZC4uYmYxNTU2OWI4MjYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworQEAgLTEsNiArMSw3IEBACisgLyogVGVzdCB3aGV0aGVyIGFsbCBvZiB0aGUgNjQtYml0IGZ1bmN0aW9uIHNwZWNpZmljIG9wdGlvbnMgYXJlIGFjY2VwdGVkCisgICAgd2l0aG91dCBlcnJvci4gICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tZnBtYXRoPTM4NyIgfSAqLworIAorICNpbmNsdWRlICJmdW5jc3BlYy01Ni5pbmMiCisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCitpbmRleCA4NTYxYTNjMjZkNi4uNjM3N2Y4MTQ2NDUgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29yZF9fKSkpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKK2luZGV4IDVkNDllNmU3N2ZlLi4xZGUyZGI5MmJkZCAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBydW4gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCitpbmRleCBmYTE3NjliNjJmYi4uZjc5ZmIxMjcyNmYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgc3RydWN0IEEKKyB7IAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKK2luZGV4IDJlODlmZjdkODFkLi42MzM5YmY2YjczNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgdGFyZ2V0LzUzNDI1ICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLworIAorIHR5cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCitpbmRleCA2MWY2MjgzZGJlOS4uMmM1YTU1ZjBhYzMgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81MzQyNSAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKyAKKyB0eXBlZGVmIGZsb2F0IF9fdjJzZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg4KSkpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworaW5kZXggMjMzNjZkMDkwOWQuLjk4MTBlM2FiYjc2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG1heWJlX3gzMiB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmcgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CisgdHlwZWRlZiB1aW50MzJfdCBFbGYzMl9Xb3JkOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworaW5kZXggOTYwMDZiM2UzMzguLjQyODdlNDUzOGJmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81OTY0NCAqLworIC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIC8qIFRoaXMgdGVzdCB1c2VzIF9fYnVpbHRpbl90cmFwICgpIGluc3RlYWQgb2YgZS5nLiBhYm9ydCwKKyAgICBiZWNhdXNlIGR1ZSB0byAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIGl0IHNob3VsZCBub3QgY2FsbAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworaW5kZXggYmZiOGM0NzAzZWIuLmVkMDRjZjE4MWYzIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdm9pZCBmb28gKCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworaW5kZXggNGUxMTJjODhkMDcuLmJjZmIzOTZhNjhkIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiBydGwtb3B0aW1pemF0aW9uLzcwNDY3ICovCisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHZvaWQgZm9vICh1bnNpZ25lZCBsb25nIGxvbmcgKik7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKK2luZGV4IDZjZGExNTM0MzExLi4yNmUzN2Y1YjhiYSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAgKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSIgfSAgKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSAtbWZwbWF0aD0zODciIH0gICovCisgI2RlZmluZSB2ZWN0b3IoZWxjb3VudCwgdHlwZSkgIFwKKyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgoZWxjb3VudCkqc2l6ZW9mKHR5cGUpKSkpIHR5cGUKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1ZTA3MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gZGMyM2NhYmFjNmE3YjJjYTg1YjAyZDJhNThhODkxNmM5OGYzODJlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDYgSnVuIDIwMTggMTI6MTA6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNi8zOV0gUmUtaW50cm9kdWNlIHNwZSBjb21tYW5kbGluZSBvcHRpb25zCisKK1RoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHdlIGtlZXAgYWNjZXB0aW5nCitzcGUgb3B0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NQRSBwb3J0IGlzIHJlbW92ZWQgZnJvbSByczYwMCBwb3J0XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCB8IDEyICsrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAoraW5kZXggZjRiNWM5MWUxMWYuLjY5ODY5MzUwZmNlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAorQEAgLTM0NSw2ICszNDUsMTggQEAgbWRlYnVnPQorIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQKKyAtbWRlYnVnPQlFbmFibGUgZGVidWcgb3V0cHV0LgorIAorK21zcGUKKytUYXJnZXQgVmFyKHJzNjAwMF9zcGUpIFNhdmUKKytHZW5lcmF0ZSBTUEUgU0lNRCBpbnN0cnVjdGlvbnMgb24gRTUwMC4KKysKKyttYWJpPXNwZQorK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmkpIFNhdmUKKytVc2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KKysKKyttYWJpPW5vLXNwZQorK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmksIDApCisrRG8gbm90IHVzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgorKworIG1hYmk9YWx0aXZlYworIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX2FsdGl2ZWNfYWJpKSBTYXZlCisgVXNlIHRoZSBBbHRpVmVjIEFCSSBleHRlbnNpb25zLgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjhhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM3LUNWRS0yMDE5LTE0MjUwLUNoZWNrLXplcm8tdmFsdWUtaW4tc2ltcGxlX29iamVjdF9lbGYucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBhYzRhZjU4M2JkNTlmNjYzMTY3MWFkNGFiZjk4NTc5OWNlNGE1M2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ2OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzcvMzldIENWRS0yMDE5LTE0MjUwOiBDaGVjayB6ZXJvIHZhbHVlIGluCisgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gKKworMjAxOS0wNy0yNSBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+CisKKwlQUiBsdG8vOTA5MjQKKwlCYWNrcG9ydCBmcm9tIG1haW5saW5lCisJMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgorCisJKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKKwlzaHN0cm5keC4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3Mzc5MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQWZmZWN0ZXM6IDwgIDkuMgorQ1ZFOiBDVkUtMjAxOS0xNDI1MAorRHJvcHBlZCBjaGFuZ2Vsb2cKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8QWt1c3RyZUBtdmlzdGEuY29tPgorLS0tCisgbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworaW5kZXggM2Q0OWYzMzk2MzEuLmMwMGNlYmRiNmM3IDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKKysrKyBiL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCitAQCAtNTU3LDYgKzU1NywxNCBAQCBzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCAodW5zaWduZWQgY2hhciBoZWFkZXJbU0lNUExFX09CSkVDVF9NQVRDSF9IRUFERVJfTEVOXSwKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKKysgICAgeworKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7CisrICAgICAgKmVyciA9IDA7CisrICAgICAgWERFTEVURSAoZW9yKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworICAgcmV0dXJuICh2b2lkICopIGVvcjsKKyB9CisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5ZmMwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzgtZ2VudHlwZXMtZ2VubW9kZXMtRG8tbm90LXVzZS1fX0xJTkVfXy1mb3ItbWFpbnRhaW5pbi5wYXRjaApAQCAtMCwwICsxLDE4NSBAQAorRnJvbSAwNzVlMDkyOWUwNDkxMzUzODM5MTA1MmMzMjE3OGI2YTE0ZWYwYWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTIgTWFyIDIwMjAgMTQ6NDE6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzOC8zOV0gZ2VudHlwZXMvZ2VubW9kZXM6IERvIG5vdCB1c2UgX19MSU5FX18gZm9yIG1haW50YWluaW5nCisgcmVwcm9kdWNpYmlsaXR5CisKK0luc2VydGluZyBsaW5lIG51bWJlcnMgaW50byBnZW5lcmF0ZWQgY29kZSBtZWFucyBpdHMgbm90IGFsd2F5cyByZXByb2R1Y2libGUgd3RoCitkaWZmZXJpbmcgdmVyc2lvbnMgb2YgaG9zdCBnY2MuIFZvaWQgdGhlIGlzc3VlIGJ5IG5vdCBhZGRpbmcgdGhlc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgUmVwcm9kdWNpYmlsaXR5IHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2VuZ3R5cGUuYyB8ICA2ICsrKy0tLQorIGdjYy9nZW5tb2Rlcy5jIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dlbmd0eXBlLmMgYi9nY2MvZ2VuZ3R5cGUuYworaW5kZXggNTMzMTczMzdjZjguLmJiYjI2MTUxNjcxIDEwMDY0NAorLS0tIGEvZ2NjL2dlbmd0eXBlLmMKKysrKyBiL2djYy9nZW5ndHlwZS5jCitAQCAtOTkxLDcgKzk5MSw3IEBAIGNyZWF0ZV9maWVsZF9hdCAocGFpcl9wIG5leHQsIHR5cGVfcCB0eXBlLCBjb25zdCBjaGFyICpuYW1lLCBvcHRpb25zX3Agb3B0LAorIC8qIENyZWF0ZSBhIGZha2UgZmllbGQgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS4gIE5FWFQgaXMgdGhlIG5leHQKKyAgICBmaWVsZCBpbiB0aGUgY2hhaW4uICAqLworICNkZWZpbmUgY3JlYXRlX2ZpZWxkKG5leHQsdHlwZSxuYW1lKSBcCistICAgIGNyZWF0ZV9maWVsZF9hbGwgKG5leHQsdHlwZSxuYW1lLCAwLCB0aGlzX2ZpbGUsIF9fTElORV9fKQorKyAgICBjcmVhdGVfZmllbGRfYWxsIChuZXh0LHR5cGUsbmFtZSwgMCwgdGhpc19maWxlLCAwKQorIAorIC8qIExpa2UgY3JlYXRlX2ZpZWxkLCBidXQgdGhlIGZpZWxkIGlzIG9ubHkgdmFsaWQgd2hlbiBjb25kaXRpb24gQ09ORAorICAgIGlzIHRydWUuICAqLworQEAgLTEwMjQsNyArMTAyNCw3IEBAIGNyZWF0ZV9vcHRpb25hbF9maWVsZF8gKHBhaXJfcCBuZXh0LCB0eXBlX3AgdHlwZSwgY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBjcmVhdGVfb3B0aW9uYWxfZmllbGQobmV4dCx0eXBlLG5hbWUsY29uZCkJXAorLSAgICAgICBjcmVhdGVfb3B0aW9uYWxfZmllbGRfKG5leHQsdHlwZSxuYW1lLGNvbmQsX19MSU5FX18pCisrICAgICAgIGNyZWF0ZV9vcHRpb25hbF9maWVsZF8obmV4dCx0eXBlLG5hbWUsY29uZCwwKQorIAorIC8qIFJldmVyc2UgYSBsaW5rZWQgbGlzdCBvZiAnc3RydWN0IHBhaXIncyBpbiBwbGFjZS4gICovCisgcGFpcl9wCitAQCAtNTE4Niw3ICs1MTg2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgIC8qIFRoZXNlIHR5cGVzIGFyZSBzZXQgdXAgd2l0aCAjZGVmaW5lIG9yIGVsc2Ugb3V0c2lkZSBvZiB3aGVyZQorICAgICAgICAgIHdlIGNhbiBzZWUgdGhlbS4gIFdlIHNob3VsZCBpbml0aWFsaXplIHRoZW0gYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgICByZWFkX2lucHV0X2xpc3QuICAqLworLSNkZWZpbmUgUE9TX0hFUkUoQ2FsbCkgZG8geyBwb3MuZmlsZSA9IHRoaXNfZmlsZTsgcG9zLmxpbmUgPSBfX0xJTkVfXzsgXAorKyNkZWZpbmUgUE9TX0hFUkUoQ2FsbCkgZG8geyBwb3MuZmlsZSA9IHRoaXNfZmlsZTsgcG9zLmxpbmUgPSAwOyBcCisgCUNhbGw7fSB3aGlsZSAoMCkKKyAgICAgICBQT1NfSEVSRSAoZG9fc2NhbGFyX3R5cGVkZWYgKCJDVU1VTEFUSVZFX0FSR1MiLCAmcG9zKSk7CisgICAgICAgUE9TX0hFUkUgKGRvX3NjYWxhcl90eXBlZGVmICgiUkVBTF9WQUxVRV9UWVBFIiwgJnBvcykpOworZGlmZiAtLWdpdCBhL2djYy9nZW5tb2Rlcy5jIGIvZ2NjL2dlbm1vZGVzLmMKK2luZGV4IGYzM2VlZmEyNDk0Li4wN2JlZjllZWJlMiAxMDA2NDQKKy0tLSBhL2djYy9nZW5tb2Rlcy5jCisrKysgYi9nY2MvZ2VubW9kZXMuYworQEAgLTQyOSw3ICs0MjksNyBAQCBjb21wbGV0ZV9hbGxfbW9kZXMgKHZvaWQpCisgfQorIAorIC8qIEZvciBlYWNoIG1vZGUgaW4gY2xhc3MgQ0xBU1MsIGNvbnN0cnVjdCBhIGNvcnJlc3BvbmRpbmcgY29tcGxleCBtb2RlLiAgKi8KKy0jZGVmaW5lIENPTVBMRVhfTU9ERVMoQykgbWFrZV9jb21wbGV4X21vZGVzIChNT0RFXyMjQywgX19GSUxFX18sIF9fTElORV9fKQorKyNkZWZpbmUgQ09NUExFWF9NT0RFUyhDKSBtYWtlX2NvbXBsZXhfbW9kZXMgKE1PREVfIyNDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZAorIG1ha2VfY29tcGxleF9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLAorIAkJICAgIGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lKQorQEAgLTQ4Nyw3ICs0ODcsNyBAQCBtYWtlX2NvbXBsZXhfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAvKiBGb3IgYWxsIG1vZGVzIGluIGNsYXNzIENMLCBjb25zdHJ1Y3QgdmVjdG9yIG1vZGVzIG9mIHdpZHRoCisgICAgV0lEVEgsIGhhdmluZyBhcyBtYW55IGNvbXBvbmVudHMgYXMgbmVjZXNzYXJ5LiAgKi8KKyAjZGVmaW5lIFZFQ1RPUl9NT0RFU19XSVRIX1BSRUZJWChQUkVGSVgsIEMsIFcpIFwKKy0gIG1ha2VfdmVjdG9yX21vZGVzIChNT0RFXyMjQywgI1BSRUZJWCwgVywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV92ZWN0b3JfbW9kZXMgKE1PREVfIyNDLCAjUFJFRklYLCBXLCBfX0ZJTEVfXywgMCkKKyAjZGVmaW5lIFZFQ1RPUl9NT0RFUyhDLCBXKSBWRUNUT1JfTU9ERVNfV0lUSF9QUkVGSVggKFYsIEMsIFcpCisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfdmVjdG9yX21vZGVzIChlbnVtIG1vZGVfY2xhc3MgY2wsIGNvbnN0IGNoYXIgKnByZWZpeCwgdW5zaWduZWQgaW50IHdpZHRoLAorQEAgLTUzOCw3ICs1MzgsNyBAQCBtYWtlX3ZlY3Rvcl9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpwcmVmaXgsIHVuc2lnbmVkIGludCB3aWR0aCwKKyAvKiBDcmVhdGUgYSB2ZWN0b3Igb2YgYm9vbGVhbnMgY2FsbGVkIE5BTUUgd2l0aCBDT1VOVCBlbGVtZW50cyBhbmQKKyAgICBCWVRFU0laRSBieXRlcyBpbiB0b3RhbC4gICovCisgI2RlZmluZSBWRUNUT1JfQk9PTF9NT0RFKE5BTUUsIENPVU5ULCBCWVRFU0laRSkgXAorLSAgbWFrZV92ZWN0b3JfYm9vbF9tb2RlICgjTkFNRSwgQ09VTlQsIEJZVEVTSVpFLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKCNOQU1FLCBDT1VOVCwgQllURVNJWkUsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBjb3VudCwKKyAJCSAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNpemUsIGNvbnN0IGNoYXIgKmZpbGUsCitAQCAtNTYwLDcgKzU2MCw3IEBAIG1ha2VfdmVjdG9yX2Jvb2xfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGNvdW50LAorIC8qIElucHV0LiAgKi8KKyAKKyAjZGVmaW5lIF9TUEVDSUFMX01PREUoQywgTikgXAorLSAgbWFrZV9zcGVjaWFsX21vZGUgKE1PREVfIyNDLCAjTiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9zcGVjaWFsX21vZGUgKE1PREVfIyNDLCAjTiwgX19GSUxFX18sIDApCisgI2RlZmluZSBSQU5ET01fTU9ERShOKSBfU1BFQ0lBTF9NT0RFIChSQU5ET00sIE4pCisgI2RlZmluZSBDQ19NT0RFKE4pIF9TUEVDSUFMX01PREUgKENDLCBOKQorIAorQEAgLTU3Myw3ICs1NzMsNyBAQCBtYWtlX3NwZWNpYWxfbW9kZSAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpuYW1lLAorIAorICNkZWZpbmUgSU5UX01PREUoTiwgWSkgRlJBQ1RJT05BTF9JTlRfTU9ERSAoTiwgLTFVLCBZKQorICNkZWZpbmUgRlJBQ1RJT05BTF9JTlRfTU9ERShOLCBCLCBZKSBcCistICBtYWtlX2ludF9tb2RlICgjTiwgQiwgWSwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9pbnRfbW9kZSAoI04sIEIsIFksIF9fRklMRV9fLCAwKQorIAorIHN0YXRpYyB2b2lkCisgbWFrZV9pbnRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC01ODYsMTYgKzU4NiwxNiBAQCBtYWtlX2ludF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorIH0KKyAKKyAjZGVmaW5lIEZSQUNUX01PREUoTiwgWSwgRikgXAorLQltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfRlJBQ1QsICNOLCBZLCAwLCBGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9GUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCAwKQorIAorICNkZWZpbmUgVUZSQUNUX01PREUoTiwgWSwgRikgXAorLQltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfVUZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfVUZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBBQ0NVTV9NT0RFKE4sIFksIEksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0FDQ1VNLCAjTiwgWSwgSSwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIFVBQ0NVTV9NT0RFKE4sIFksIEksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VBQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VBQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCAwKQorIAorIC8qIENyZWF0ZSBhIGZpeGVkLXBvaW50IG1vZGUgYnkgc2V0dGluZyBDTCwgTkFNRSwgQllURVNJWkUsIElCSVQsIEZCSVQsCisgICAgRklMRSwgYW5kIExJTkUuICAqLworQEAgLTYxNiw3ICs2MTYsNyBAQCBtYWtlX2ZpeGVkX3BvaW50X21vZGUgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAKKyAjZGVmaW5lIEZMT0FUX01PREUoTiwgWSwgRikgICAgICAgICAgICAgRlJBQ1RJT05BTF9GTE9BVF9NT0RFIChOLCAtMVUsIFksIEYpCisgI2RlZmluZSBGUkFDVElPTkFMX0ZMT0FUX01PREUoTiwgQiwgWSwgRikgXAorLSAgbWFrZV9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC02MzMsNyArNjMzLDcgQEAgbWFrZV9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorICNkZWZpbmUgREVDSU1BTF9GTE9BVF9NT0RFKE4sIFksIEYpCVwKKyAJRlJBQ1RJT05BTF9ERUNJTUFMX0ZMT0FUX01PREUgKE4sIC0xVSwgWSwgRikKKyAjZGVmaW5lIEZSQUNUSU9OQUxfREVDSU1BTF9GTE9BVF9NT0RFKE4sIEIsIFksIEYpCVwKKy0gIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCAwKQorIAorIHN0YXRpYyB2b2lkCisgbWFrZV9kZWNpbWFsX2Zsb2F0X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNjQ4LDcgKzY0OCw3IEBAIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorIH0KKyAKKyAjZGVmaW5lIFJFU0VUX0ZMT0FUX0ZPUk1BVChOLCBGKSBcCistICByZXNldF9mbG9hdF9mb3JtYXQgKCNOLCAjRiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgcmVzZXRfZmxvYXRfZm9ybWF0ICgjTiwgI0YsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyByZXNldF9mbG9hdF9mb3JtYXQgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAJCSAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC02NjksNyArNjY5LDcgQEAgcmVzZXRfZmxvYXRfZm9ybWF0IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmb3JtYXQsCisgCisgLyogX19pbnROIHN1cHBvcnQuICAqLworICNkZWZpbmUgSU5UX04oTSxQUkVDKQkJCQlcCistICBtYWtlX2ludF9uICgjTSwgUFJFQywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9pbnRfbiAoI00sIFBSRUMsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX2ludF9uIChjb25zdCBjaGFyICptLCBpbnQgYml0c2l6ZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC02OTgsNyArNjk4LDcgQEAgbWFrZV9pbnRfbiAoY29uc3QgY2hhciAqbSwgaW50IGJpdHNpemUsCisgLyogUGFydGlhbCBpbnRlZ2VyIG1vZGVzIGFyZSBzcGVjaWZpZWQgYnkgcmVsYXRpb24gdG8gYSBmdWxsIGludGVnZXIKKyAgICBtb2RlLiAgKi8KKyAjZGVmaW5lIFBBUlRJQUxfSU5UX01PREUoTSxQUkVDLE5BTUUpCQkJCVwKKy0gIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKCNNLCAjTkFNRSwgUFJFQywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoI00sICNOQU1FLCBQUkVDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbmFtZSwKKyAJCQkgICB1bnNpZ25lZCBpbnQgcHJlY2lzaW9uLAorQEAgLTcyNSw3ICs3MjUsNyBAQCBtYWtlX3BhcnRpYWxfaW50ZWdlcl9tb2RlIChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpuYW1lLAorIC8qIEEgc2luZ2xlIHZlY3RvciBtb2RlIGNhbiBiZSBzcGVjaWZpZWQgYnkgbmFtaW5nIGl0cyBjb21wb25lbnQKKyAgICBtb2RlIGFuZCB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMuICAqLworICNkZWZpbmUgVkVDVE9SX01PREUoQywgTSwgTikgXAorLSAgbWFrZV92ZWN0b3JfbW9kZSAoTU9ERV8jI0MsICNNLCBOLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgbWFrZV92ZWN0b3JfbW9kZSAoTU9ERV8jI0MsICNNLCBOLCBfX0ZJTEVfXywgMCk7Cisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfdmVjdG9yX21vZGUgKGVudW0gbW9kZV9jbGFzcyBiY2xhc3MsCisgCQkgIGNvbnN0IGNoYXIgKmJhc2UsCitAQCAtNzY4LDcgKzc2OCw3IEBAIG1ha2VfdmVjdG9yX21vZGUgKGVudW0gbW9kZV9jbGFzcyBiY2xhc3MsCisgCisgLyogQWRqdXN0YWJpbGl0eS4gICovCisgI2RlZmluZSBfQUREX0FESlVTVChBLCBNLCBYLCBDMSwgQzIpIFwKKy0gIG5ld19hZGp1c3QgKCNNLCAmYWRqXyMjQSwgI0EsICNYLCBNT0RFXyMjQzEsIE1PREVfIyNDMiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbmV3X2FkanVzdCAoI00sICZhZGpfIyNBLCAjQSwgI1gsIE1PREVfIyNDMSwgTU9ERV8jI0MyLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIEFESlVTVF9OVU5JVFMoTSwgWCkgICAgX0FERF9BREpVU1QgKG51bml0cywgTSwgWCwgUkFORE9NLCBSQU5ET00pCisgI2RlZmluZSBBREpVU1RfQllURVNJWkUoTSwgWCkgIF9BRERfQURKVVNUIChieXRlc2l6ZSwgTSwgWCwgUkFORE9NLCBSQU5ET00pCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5MTE0ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzktcHJvY2Vzc19hbHRfb3BlcmFuZHMtRG9uLXQtbWF0Y2gtdXNlci1kZWZpbmVkLXJlZ3Mtby5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSBlNzViY2MyZWM0ZjFlN2UwODFjZTE4NzEzZjBhMjU5MTNiYTE1MzQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmxhZGltaXIgTWFrYXJvdiA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTAgSnVsIDIwMTkgMTY6MDc6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzOS8zOV0gcHJvY2Vzc19hbHRfb3BlcmFuZHM6IERvbid0IG1hdGNoIHVzZXIgZGVmaW5lZCByZWdzCisgb25seSBpZiB0aGV5IGFyZSBlYXJseSBjbG9iYmVycworCitQUiB0YXJnZXQvOTExMDIgKGFhcmNoNjQgSUNFIG9uIExpbnV4IGtlcm5lbCB3aXRoIC1PcyBzdGFydGluZyB3aXRoIHIyNzAyNjYpCisKKzIwMTktMDctMTAgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgorCisJUFIgdGFyZ2V0LzkxMTAyCisJKiBscmEtY29uc3RyYWludHMuYyAocHJvY2Vzc19hbHRfb3BlcmFuZHMpOiBEb24ndCBtYXRjaCB1c2VyCisJZGVmaW5lZCByZWdzIG9ubHkgaWYgdGhleSBhcmUgZWFybHkgY2xvYmJlcnMuCisKKzIwMTktMDctMTAgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgorCisJUFIgdGFyZ2V0LzkxMTAyCisJKiBnY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jOiBOZXcgdGVzdC4KKworRnJvbS1TVk46IHIyNzMzNTcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21taXQvNjEzY2FlZDJmZWI5Y2ZjODE1ODMwODY3MGI1OWRmM2QwMzFlYzYyOV0KK1t0YWtvbmRyYTogZHJvcHBlZCBjb25mbGljdGluZyBDaGFuZ2VMb2cgY2hhbmdlc10KK1NpZ25lZC1vZmYtYnk6IFRhcmFzIEtvbmRyYXRpdWsgPHRha29uZHJhQGNpc2NvLmNvbT4KKy0tLQorIGdjYy9scmEtY29uc3RyYWludHMuYyAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jCisKK2RpZmYgLS1naXQgYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKK2luZGV4IGNmMzNkYTgwMTNlLi42MzgyZGJmODUyYiAxMDA2NDQKKy0tLSBhL2djYy9scmEtY29uc3RyYWludHMuYworKysrIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitAQCAtMjE3Miw4ICsyMTcyLDkgQEAgcHJvY2Vzc19hbHRfb3BlcmFuZHMgKGludCBvbmx5X2FsdGVybmF0aXZlKQorIAkJICAgIGVsc2UKKyAJCSAgICAgIHsKKyAJCQkvKiBPcGVyYW5kcyBkb24ndCBtYXRjaC4gIElmIHRoZSBvcGVyYW5kcyBhcmUKKy0JCQkgICBkaWZmZXJlbnQgdXNlciBkZWZpbmVkIGV4cGxpY2l0IGhhcmQgcmVnaXN0ZXJzLAorLQkJCSAgIHRoZW4gd2UgY2Fubm90IG1ha2UgdGhlbSBtYXRjaC4gICovCisrCQkJICAgZGlmZmVyZW50IHVzZXIgZGVmaW5lZCBleHBsaWNpdCBoYXJkCisrCQkJICAgcmVnaXN0ZXJzLCB0aGVuIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2gKKysJCQkgICB3aGVuIG9uZSBpcyBlYXJseSBjbG9iYmVyIG9wZXJhbmQuICAqLworIAkJCWlmICgoUkVHX1AgKCpjdXJyX2lkLT5vcGVyYW5kX2xvY1tub3BdKQorIAkJCSAgICAgfHwgU1VCUkVHX1AgKCpjdXJyX2lkLT5vcGVyYW5kX2xvY1tub3BdKSkKKyAJCQkgICAgJiYgKFJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2NbbV0pCitAQCAtMjE5Miw5ICsyMTkzLDE3IEBAIHByb2Nlc3NfYWx0X29wZXJhbmRzIChpbnQgb25seV9hbHRlcm5hdGl2ZSkKKyAJCQkJJiYgUkVHX1AgKG1fcmVnKQorIAkJCQkmJiBIQVJEX1JFR0lTVEVSX1AgKG1fcmVnKQorIAkJCQkmJiBSRUdfVVNFUlZBUl9QIChtX3JlZykpCistCQkJICAgICAgYnJlYWs7CisrCQkJICAgICAgeworKwkJCQlpbnQgaTsKKysJCQkJCisrCQkJCWZvciAoaSA9IDA7IGkgPCBlYXJseV9jbG9iYmVyZWRfcmVnc19udW07IGkrKykKKysJCQkJICBpZiAobSA9PSBlYXJseV9jbG9iYmVyZWRfbm9wc1tpXSkKKysJCQkJICAgIGJyZWFrOworKwkJCQlpZiAoaSA8IGVhcmx5X2Nsb2JiZXJlZF9yZWdzX251bQorKwkJCQkgICAgfHwgZWFybHlfY2xvYmJlcl9wKQorKwkJCQkgIGJyZWFrOworKwkJCSAgICAgIH0KKyAJCQkgIH0KKy0KKyAJCQkvKiBCb3RoIG9wZXJhbmRzIG11c3QgYWxsb3cgYSByZWxvYWQgcmVnaXN0ZXIsCisgCQkJICAgb3RoZXJ3aXNlIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2guICAqLworIAkJCWlmIChjdXJyX2FsdFttXSA9PSBOT19SRUdTKQorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi43MGI5OTA0NWE0OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jCitAQCAtMCwwICsxLDI2IEBACisrLyogUFIgdGFyZ2V0LzkxMTAyICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworKworK2ludAorK2ZvbyAobG9uZyBkLCBsb25nIGwpCisreworKyAgcmVnaXN0ZXIgbG9uZyBlIGFzbSAoIngxIikgPSBkOworKyAgcmVnaXN0ZXIgbG9uZyBmIGFzbSgieDIiKSA9IGw7CisrICBhc20gKCIiIDogOiAiciIgKGUpLCAiciIgKGYpKTsKKysgIHJldHVybiAzOworK30KKysKKytzdHJ1Y3QgVCB7IGludCBpOyBpbnQgajsgfTsKKyt1bmlvbiBTIHsgbG9uZyBoOyBzdHJ1Y3QgVCB0OyB9OworKworK3ZvaWQKKytiYXIgKHVuaW9uIFMgYikKKyt7CisrICB3aGlsZSAoMSkKKysgICAgeworKyAgICAgIHVuaW9uIFMgYyA9IGI7CisrICAgICAgYy50LmorKzsKKysgICAgICBiLmggPSBmb28gKGIuaCwgYy5oKTsKKysgICAgfQorK30KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwppbmRleCA0NGNiYTI4Li4zZGNmZGY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgICAgICJpNTg2IjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgImk2ODYiOiAgICAiLS1lbmFibGUtdGFyZ2V0cz1hbGwiLAogICAgICAgICAicG93ZXJwYyI6ICItLWVuYWJsZS10YXJnZXRzPXBvd2VycGM2NCIsCisgICAgICAgICJwb3dlcnBjNjRsZSI6ICItLWVuYWJsZS10YXJnZXRzPXBvd2VycGNsZSIsCiAgICAgICAgICJtaXBzIjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgInNwYXJjIjogICAiLS1lbmFibGUtdGFyZ2V0cz1hbGwiLAogICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCmluZGV4IDI0YmE4Y2UuLmE2NGM0Y2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwpAQCAtMTcsNiArMTcsOCBAQAogCiBHQ0NQSUUgPz89ICIiCiAKK1NZTVZFUlNfQ09ORiA/PSAiLS1lbmFibGUtc3ltdmVycz1nbnUiCisKIEVYVFJBX09FQ09ORiA9ICJcCiAgICAgJHtAWyctLWVuYWJsZS1jbG9jYWxlPWdlbmVyaWMnLCAnJ11bZC5nZXRWYXIoJ1VTRV9OTFMnKSAhPSAnbm8nXX0gXAogICAgIC0td2l0aC1nbnUtbGQgXApAQCAtMjcsMTAgKzI5LDExIEBACiAgICAgJHtHQ0NQSUV9IFwKICAgICAtLWVuYWJsZS1jOTkgXAogICAgIC0tZW5hYmxlLWxvbmctbG9uZyBcCi0gICAgLS1lbmFibGUtc3ltdmVycz1nbnUgXAorICAgICR7U1lNVkVSU19DT05GfSBcCiAgICAgLS1lbmFibGUtbGlic3RkY3h4LXBjaCBcCiAgICAgLS1wcm9ncmFtLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKICAgICAtLXdpdGhvdXQtbG9jYWwtcHJlZml4IFwKKyAgICAtLWRpc2FibGUtaW5zdGFsbC1saWJpYmVydHkgXAogICAgICR7RVhUUkFfT0VDT05GX0JBU0V9IFwKICAgICAke0VYVFJBX09FQ09ORl9HQ0NfRkxPQVR9IFwKICAgICAke0VYVFJBX09FQ09ORl9QQVRIU30gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCBmMTRjYmY3Li41NTNlZjdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMTA4LDEyICsxMDgsNiBAQAogCSMgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZ2NjLTx2ZXJzaW9uPiBjb3BpZXMKIAlybSAtZiAke0R9JHtiaW5kaXJ9LypnY2MtPy4/KgogCi0JIyBXZSB1c2UgbGliaWJlcnR5IGZyb20gYmludXRpbHMKLQlybSAtZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliL2xpYmliZXJ0eS5hCi0JIyBOb3Qgc3VyZSB3aGVyZSB0aGUgc3RyYW5nZSBwYXRocyBjb21lIGZyb20KLQlybSAtZiAke0R9JHtsaWJkaXJ9Ly4uL2xpYi9saWJpYmVydHkuYQotCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaWJlcnR5LmEKLQogCSMgQ2xlYW51cCBlbXB0eSBkaXJlY3RvcmllcyB3aGljaCBhcmUgbm90IHNoaXBwZWQKIAkjIHdlIHVzZSBybWRpciBpbnN0ZWFkIG9mICdybSAtZicgdG8gZW5zdXJlIHRoZSBub24gZW1wdHkgZGlyZWN0b3JpZXMgYXJlIG5vdCBkZWxldGVkCiAJIyAke0R9JHtsaWJkaXJ9Ly4uL2xpYiBvbmx5IHNlZW1zIHRvIGFwcGVhciB3aXRoIFNES01BQ0hJTkU9aTY4NgpAQCAtMTU4LDcgKzE1Miw3IEBACiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiCiBFWFRSQV9PRUNPTkZfcmVtb3ZlX2VsZiA9ICItLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IgogRVhUUkFfT0VDT05GX3JlbW92ZV9lYWJpID0gIi0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2VsZiA9ICItLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIgotRVhUUkFfT0VDT05GX2FwcGVuZF9lYWJpID0gIi0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2VsZiA9ICIgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfZWFiaSA9ICIgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKICMgZ2NjIDQuNyBuZWVkcyAtaXN5c3RlbQogZXhwb3J0IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCA9ICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IC1pc3lzdGVtPSR7dGFyZ2V0X2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCmluZGV4IDg4NTViYjEuLjZmYThjMjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCkBAIC02MSw5OCArNjEsMjIgQEAKIAlleHBvcnQgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfQ1hYRkxBR1N9IgogCWV4cG9ydCBMREZMQUdTX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX0xERkxBR1N9IgogCisJIyBQcmV2ZW50IG5hdGl2ZS9ob3N0IHN5c3Jvb3QgcGF0aCBmcm9tIGJlaW5nIHVzZWQgaW4gY29uZmlnYXJncy5oIGhlYWRlciwKKwkjIGFzIGl0IHdpbGwgYmUgcmV3cml0dGVuIHdoZW4gdXNlZCBieSBvdGhlciBzeXNyb290cyBwcmV2ZW50aW5nIHN1cHBvcnQKKwkjIGZvciBnY2MgcGx1Z2lucworCW9lX3J1bm1ha2UgY29uZmlndXJlLWdjYworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL2hvc3RAZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL2hvc3RAZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisKKwkjIFByZXZlbnQgc3lzcm9vdC93b3JrZGlyIHBhdGhzIGZyb20gYmVpbmcgdXNlZCBpbiBjaGVja3N1bS1vcHRpb25zLgorCSMgY2hlY2tzdW0tb3B0aW9ucyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgY2hlY2tzdW0gd2hpY2ggaXMgZW1iZWRkZWQgaW50bworCSMgdGhlIG91dHB1dCBiaW5hcnkuCisJb2VfcnVubWFrZSBUQVJHRVQtZ2NjPWNoZWNrc3VtLW9wdGlvbnMgYWxsLWdjYworCXNlZCAtaSAnc0Ake0RFQlVHX1BSRUZJWF9NQVB9QEBnJyAke0J9L2djYy9jaGVja3N1bS1vcHRpb25zCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL2hvc3RAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCiAJb2VfcnVubWFrZSBhbGwtaG9zdCBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYwogCShjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQotCSMgbm93IGdlbmVyYXRlIHNjcmlwdCB0byBkcml2ZSB0ZXN0aW5nCi0JZWNobyAiIyEvdXNyL2Jpbi9lbnYgc2giID4ke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2V0ID4+ICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQkjIHBydW5lIG91dCB0aGUgdW5uZWVkZWQgdmFycwotCXNlZCAtaSAtZSAiL15CQVNIL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVVNFUi9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXk9QVC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkRJUlNUQUNLL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eRVVJRC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkZVTkNOQU1FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eR1JPVVBTL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eSE9TVC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkhPTUUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15JRlMvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15MQ19BTEwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15MT0dOQU1FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTUFDSFRZUEUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15PU1RZUEUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QSVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU0hFTEwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL14nL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVUlEL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVEVSTS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBLR18vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QT1NJWExZXy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBQSUQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QUzQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15RL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU0hMVkwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15TVEFHSU5HL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTERfTElCUkFSWV9QQVRIL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUFNFVURPL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQotCSMgYXBwZW5kIGV4ZWN1dGlvbiBwYXJ0IG9mIHRoZSBzY3JpcHQKLWNhdCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjIDw8IFNUT1AKLXRhcmdldD0iXCQxIgotdXNhZ2UgKCkgewotCWVjaG8gIlVzYWdlOiIKLQllY2hvICJcJDAgdXNlckB0YXJnZXQgJ2V4dHJhIG9wdGlvbnMgdG8gZGVqYWdudSciCi0JZWNobyAiXCQwIHRhcmdldCAnZXh0cmEgb3B0aW9ucyB0byBkZWphZ251JyIKLQllY2hvICJcJDAgdGFyZ2V0IgotCWVjaG8gImUuZy4gXCQwIDE5Mi4xNjguNy4yICcgZGcuZXhwPXZpc2liaWxpdHktZC5jJyIKLQllY2hvICJ3aWxsIG9ubHkgcnVuIHZpc2liaWxpdHktZC5jIHRlc3QgY2FzZSIKLQllY2hvICJlLmcuIFwkMCAxOTIuMTY4LjcuMiAnLy1tdGh1bWIgZGcuZXhwPXZpc2liaWxpdHktZC5jJyIKLQllY2hvICJ3aWxsIG9ubHkgcnVuIHZpc2liaWxpdHktZC5jIHRlc3QgY2FzZSBpbiB0aHVtYiBtb2RlIgotCWVjaG8gIllvdSBuZWVkIHRvIGhhdmUgZGVqYWdudSBhdXRvZ2VuIGV4cGVjdCBpbnN0YWxsZWQiCi0JZWNobyAib24gdGhlIGJ1aWxkIGhvc3QiCi0gICAgfQotaWYgWyAieFwkdGFyZ2V0IiA9ICJ4IiBdCi10aGVuCi0JZWNobyAiUGxlYXNlIHNwZWNpZnkgdGhlIHRhcmdldCBtYWNoaW5lIGFuZCByZW1vdGUgdXNlciBpbiBmb3JtIG9mIHVzZXJAdGFyZ2V0XG4iCi0JdXNhZ2UKLQlleGl0IDE7Ci1maQotCi1zaGlmdAotCi1lY2hvICJcJHRhcmdldCIgfCBncmVwICJAIiAyPiYxID4gL2Rldi9udWxsCi1pZiBbICJ4XCQ/IiA9ICJ4MCIgXQotdGhlbgotICAgdXNlcj1cJChlY2hvIFwkdGFyZ2V0IHwgY3V0IC1kICdAJyAtZiAxKQotICAgdGFyZ2V0PVwkKGVjaG8gXCR0YXJnZXQgfCBjdXQgLWQgJ0AnIC1mIDIpCi1lbHNlCi0gICB1c2VyPVwkVVNFUgotZmkKLXNzaCBcJHVzZXJAXCR0YXJnZXQgZGF0ZSAyPiYxID4gL2Rldi9udWxsCi1pZiBbICJ4XCQ/IiAhPSAieDAiIF0KLXRoZW4KLQllY2hvICJGYWlsZWQgY29ubmVjdGluZyB0byBcJHVzZXJAXCR0YXJnZXQgaXQgY291bGQgYmUgYmVjYXVzZSIKLQllY2hvICJ5b3UgZG9uJ3QgaGF2ZSBwYXNzd29yZGxlc3Mgc3NoIHNldHVwIHRvIGFjY2VzcyBcJHRhcmdldCIKLQllY2hvICJvciBzb21ldGltZXMgaG9zdCBrZXkgaGFzIGJlZW4gY2hhbmdlZCIKLQllY2hvICJpbiBzdWNoIGNhc2UgZG8gc29tZXRoaW5nIGxpa2UgYmVsb3cgb24gYnVpbGQgaG9zdCIKLQllY2hvICJzc2gta2V5Z2VuIC1mICJ+Ly5zc2gva25vd25faG9zdHMiIC1SIFwkdGFyZ2V0IgotCWVjaG8gImFuZCB0aGVuIHRyeSBzc2ggXCR1c2VyQFwkdGFyZ2V0IgotCi0JdXNhZ2UKLQlleGl0IDEKLWZpCi0JZWNobyAibGFwcGVuZCBib2FyZHNfZGlyIFtwd2RdLy4uLy4uLy4uIiA+ICR7Qn0vc2l0ZS5leHAKLQllY2hvICJsb2FkX2dlbmVyaWNfY29uZmlnIFwidW5peFwiIiA+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIHVzZXJuYW1lIFwkdXNlciIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JZWNobyAic2V0X2JvYXJkX2luZm8gcnNoX3Byb2cgc3NoIiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyByY3BfcHJvZyBzY3AiID4+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIGhvc3RuYW1lIFwkdGFyZ2V0IiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQlERUpBR05VPSR7Qn0vc2l0ZS5leHAgbWFrZSAtayBjaGVjayBSVU5URVNURkxBR1M9Ii0tdGFyZ2V0X2JvYXJkPSR7UEFDS0FHRV9BUkNIfVwkQCIKLQotU1RPUAotCi0JY2htb2QgK3ggJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCiB9CiAKIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgpAQCAtMTkzLDEwICsxMTcsNiBAQAogCWNwICR7U30vbGlicXVhZG1hdGgvcXVhZG1hdGguaCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS8KIAljcCAke1N9L2xpYnF1YWRtYXRoL3F1YWRtYXRoX3dlYWsuaCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS8KIAotCSMgV2UgdXNlIGxpYmliZXJ0eSBmcm9tIGJpbnV0aWxzCi0JZmluZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIC1uYW1lIGxpYmliZXJ0eS5hIHwgeGFyZ3Mgcm0gLWYKLQlmaW5kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIgLW5hbWUgbGliaWJlcnR5LmggfCB4YXJncyBybSAtZgotCiAJZmluZCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS1maXhlZCAtdHlwZSBmIC1ub3QgLW5hbWUgIlJFQURNRSIgLW5vdCAtbmFtZSBsaW1pdHMuaCAtbm90IC1uYW1lIHN5c2xpbWl0cy5oIHwgeGFyZ3Mgcm0gLWYKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IDJkYTNjMDIuLmFjZTcwNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMTYsOSArMTYsMTYgQEAKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eHN0ZGJhc2UgPSAiIC0tZW5hYmxlLWNsb2NhbGU9Z251IgogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW5ld2xpYiA9ICIgLS13aXRoLW5ld2xpYiIKIAogIyBEaXNhYmxlIGlmdW5jcyBmb3IgbGliYXRvbWljIG9uIGFybSBjb25mbGljdHMgLW1hcmNoLy1tY3B1CiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgbGliYXRfY3ZfaGF2ZV9pZnVuYz1ubyAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybWViID0gIiBsaWJhdF9jdl9oYXZlX2lmdW5jPW5vICIKKworRElTQUJMRV9TVEFUSUNfY2xhc3MtbmF0aXZlc2RrID89ICIiCisKKyMgTmV3bGliIGRvZXMgbm90IHN1cHBvcnQgc3ltYm9sIHZlcnNpb25pbmcgb24gbGlic2R0Y2MrKworU1lNVkVSU19DT05GX2xpYmMtbmV3bGliID0gIiIKIAogIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjZ0IGZhaWxzCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKQEAgLTM2LDYgKzQzLDggQEAKIFJVTlRJTUVUQVJHRVQgPSAiJHtSVU5USU1FTElCU1NQfSBsaWJzdGRjKystdjMgbGliZ29tcCBsaWJhdG9taWMgJHtSVU5USU1FTElCSVRNfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdGT1JUUkFOJywgWycsZm9ydHJhbicsJyxmNzcnXSwgJ2xpYnF1YWRtYXRoJywgJycsIGQpfSBcCiAiCisjIE9ubHkgYnVpbGQgbGlic3RkYysrIGZvciBuZXdsaWIKK1JVTlRJTUVUQVJHRVRfbGliYy1uZXdsaWIgPSAibGlic3RkYysrLXYzIgogCiAjIGxpYmliZXJ0eQogIyBsaWJtdWRmbGFwCkBAIC0xNzksNyArMTg4LDcgQEAKIAogIyBpbmNsdWRlIHB5dGhvbiBkZWJ1Z2dpbmcgc2NyaXB0cwogRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKy5zby4qLWdkYi5weSBcCisgICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKy4qLWdkYi5weSBcCiAgICAgJHtkYXRhZGlyfS9nY2MtJHtCSU5WfS9weXRob24vbGlic3RkY3h4IFwKICIKIApAQCAtMzAyLDEwICszMTEsNiBAQAogCiAgICAgIyBIQUNLOiB0aGlzIHdvcmtzIGFyb3VuZCB0aGUgY29uZmlndXJlIHNldHRpbmcgQ1hYIHdpdGggLW5vc3RkKiBhcmdzCiAgICAgc2VkIC1pICdzLy1ub3N0ZGluYysrIC1ub3N0ZGxpYisrLy9nJyAkKGZpbmQgJHtCfSAtbmFtZSB0ZXN0c3VpdGVfZmxhZ3MgfCBoZWFkIC0xKQotICAgICMgSEFDSzogdGhpcyB3b3JrcyBhcm91bmQgdGhlIGRlLXN0YXNoaW5nIGNoYW5nZXMgdG8gY29uZmlnYXJncy5oLCBhcyB3ZWxsIGFzIHJlY2lwZS1zeXNyb290IGNoYW5naW5nIHRoZSBjb250ZW50Ci0gICAgc2VkIC1pICcvc3RhdGljIGNvbnN0IGNoYXIgY29uZmlndXJhdGlvbl9hcmd1bWVudHMvZCcgJHtCfS9nY2MvY29uZmlnYXJncy5oCi0gICAgJHtDQ30gLXYgMj4mMSB8IGdyZXAgIl5Db25maWd1cmVkIHdpdGg6IiB8IFwKLSAgICAgICAgc2VkICdzL0NvbmZpZ3VyZWQgd2l0aDogXCguKlwpL3N0YXRpYyBjb25zdCBjaGFyIGNvbmZpZ3VyYXRpb25fYXJndW1lbnRzW10gPSAiXDEiOy9nJyA+PiAke0J9L2djYy9jb25maWdhcmdzLmgKIAogICAgIGlmIFsgIiR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgPSAidXNlciIgXTsgdGhlbgogICAgICAgICAjIHFlbXUgdXNlciBoYXMgaXNzdWVzIGFsbG9jYXRpbmcgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwppbmRleCA4YjFkMWM5Li42NjhlMTRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTQzLDcgKzQzLDcgQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1ERVBFTkRTID0gImdjYy1ydW50aW1lIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyIKK0RFUEVORFMgPSAidmlydHVhbC9jcnlwdCBnY2MtcnVudGltZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCiAKICMgdXNlZCB0byBmaXggLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29yay1zaGFyZWQvZ2NjLTguMy4wLXIwL2djYy04LjMuMC9saWJzYW5pdGl6ZXIvbGliYmFja3RyYWNlLy4uLy4uL2xpYmJhY2t0cmFjZS9lbGYuYzo3NzI6MjE6IGVycm9yOiAnc3Quc3RfbW9kZScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCiBERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtV25vLWVycm9yIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwppbmRleCBiZGM2ZmY2Li44Y2I0MzI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCkBAIC0xOSw2ICsxOSw3IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3YSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSR7QVJNRlBBUkNIRVhUfSIKIEVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjd2ZSA9ICIgLS13aXRoLWFyY2g9YXJtdjd2ZSR7QVJNRlBBUkNIRVhUfSIKIEVYVFJBX09FQ09ORl9hcHBlbmRfYXJjID0gIiAtLXdpdGgtY3B1PSR7VFVORV9QS0dBUkNIfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfeDg2LTY0ID0gIiAtLXdpdGgtYXJjaD1uYXRpdmUiCiAKICMgbGliY2MxIHJlcXVyZXMgZ2NjX2N2X29iamR1bXAgd2hlbiBjcm9zcyBidWlsZCwgYnV0IGdjY19jdl9vYmpkdW1wIGlzCiAjIHNldCBpbiBzdWJkaXIgZ2NjLCBzbyBzdWJkaXIgbGliY2MxIGNhbid0IHVzZSBpdCwgZXhwb3J0IGl0IGhlcmUgdG8KQEAgLTEzNyw2ICsxMzgsMjEgQEAKICIKIAogZG9fY29tcGlsZSAoKSB7CisJIyBQcmV2ZW50IGZ1bGwgdGFyZ2V0IHN5c3Jvb3QgcGF0aCBmcm9tIGJlaW5nIHVzZWQgaW4gY29uZmlnYXJncy5oIGhlYWRlciwKKwkjIGFzIGl0IHdpbGwgYmUgcmV3cml0dGVuIHdoZW4gdXNlZCBieSBvdGhlciBzeXNyb290cyBwcmV2ZW50aW5nIHN1cHBvcnQKKwkjIGZvciBnY2MgcGx1Z2lucy4gQWRkaXRpb25hbGx5IHRoZSBwYXRoIGlzIGVtYmVkZGVkZWQgaW50byB0aGUgb3V0cHV0CisJIyBiaW5hcnksIHRoaXMgcHJldmVudHMgYnVpbGRpbmcgYSByZXByb2R1Y2libGUgYmluYXJ5LgorCW9lX3J1bm1ha2UgY29uZmlndXJlLWdjYworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL0BnJyAke0J9L2djYy9jb25maWdhcmdzLmgKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9IT1NUfUAvQGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCisJIyBQcmV2ZW50IHN5c3Jvb3Qvd29ya2RpciBwYXRocyBmcm9tIGJlaW5nIHVzZWQgaW4gY2hlY2tzdW0tb3B0aW9ucy4KKwkjIGNoZWNrc3VtLW9wdGlvbnMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGNoZWNrc3VtIHdoaWNoIGlzIGVtYmVkZGVkIGludG8KKwkjIHRoZSBvdXRwdXQgYmluYXJ5LgorCW9lX3J1bm1ha2UgVEFSR0VULWdjYz1jaGVja3N1bS1vcHRpb25zIGFsbC1nY2MKKwlzZWQgLWkgJ3NAJHtERUJVR19QUkVGSVhfTUFQfUBAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL0BnJyAke0J9L2djYy9jaGVja3N1bS1vcHRpb25zCisKIAlvZV9ydW5tYWtlIGFsbC1ob3N0CiB9CiAKQEAgLTE2NCw2ICsxODAsMTAgQEAKIAkjIENsZWFudXAgbWFucGFnZXMuLgogCXJtIC1yZiAke0R9JHttYW5kaXJ9L21hbjcKIAorCSMgRG9uJ3QgcGFja2FnZSBkZXRhaWxzIGFib3V0IHRoZSBidWlsZCBob3N0CisJcm0gLWYgJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L3BsdWdpbi9pbmNsdWRlL2F1dG8tYnVpbGQuaAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9wbHVnaW4vaW5jbHVkZS9iY29uZmlnLmgKKwogCWNkICR7RH0ke2JpbmRpcn0KIAogCSMgV2UgY2FyZSBhYm91dCBnKysgbm90IGMrKwpAQCAtMTcyLDEwICsxOTIsNiBAQAogCSMgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZ2NjLTx2ZXJzaW9uPiBvbmVzIGZvciB0aGlzCiAJcm0gLWYgKmdjYy0/Lj8qCiAKLQkjIFdlIHVzZSBsaWJpYmVydHkgZnJvbSBiaW51dGlscwotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSBsaWJpYmVydHkuYSB8IHhhcmdzIHJtIC1mCi0JZmluZCAke0R9JHtsaWJkaXJ9IC1uYW1lIGxpYmliZXJ0eS5oIHwgeGFyZ3Mgcm0gLWYKLQogCSMgTm90IHN1cmUgd2h5IHdlIGVuZCB1cCB3aXRoIHRoZXNlIGJ1dCB3ZSBkb24ndCB3YW50IHRoZW0uLi4KIAlybSAtZiAke1RBUkdFVF9QUkVGSVh9JHtUQVJHRVRfUFJFRklYfSoKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwppbmRleCBlMDA4ZDE0Li42ZDQ4ZWM5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwpAQCAtOSwxNCArOSwxOCBAQAogCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CiAJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CiAJCWVzYWMKLQkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCisJCWlmIFsgISAtZSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zIF07IHRoZW4KKwkJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlmaQogCWZpCiAJaWYgWyAtbiAiJHtAIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHU19NRkxPQVQnLCAnaGFyZCcsICdoZicsICcnLCBkKX0iIF07IHRoZW4KIAkJY2FzZSAiJHtUQVJHRVRfT1N9IiBpbgogCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1tdXNsZWFiaWhmIjs7CiAJCQkibGludXgtZ251ZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaWhmIjs7CiAJCWVzYWMKLQkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCisJCWlmIFsgISAtZSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zIF07IHRoZW4KKwkJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlmaQogCWZpCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjMuMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZjFjNDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjMuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3M2I2YTVkODE0MTY3MmM2MmJmODUxY2QzNGM0YWE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTU1YjRkN2NkY2E3YjM0YmUxMmY0Y2VhZTY1MTYyM2FhNzNiMmZkNjQwMTUyMzEzZjlmNjZhNzE0OTc1N2M0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMTllNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTkuMS5pbmMKQEAgLTAsMCArMSwyMSBAQAorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisJCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RiL2dkYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjdlOWY2MjM2YzQyNTA5N2Q5ZTVmMThhNmFjNDA2NTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjk5ZTBlYzgzMmZkZDJmMjFjODI2NjE3MWVhNWJmNDQwMjRiZDA1MTY0ZmRmMDY0ZTRkMTBjYzRjZjBkMTczNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl85LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc185LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZmU3ZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGlzIHByb2JsZW0gd2FzIGNyZWF0ZWQgYnkgdGhlIHVwc3RyZWFtIGNvbW1pdCA3ODcwOGI3YzhjCi1BZnRlciBhcHBseWluZyB0aGUgY29tbWl0LCBpdCB3aWxsIHNlbmQgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwKC1zaWduYWxfcGlkKS4KLUJ1dCBpZiB3ZSB1c2UgZ2Ric2VydmVyIHNlbmQgU0lHSU5ULCBhbmQgdGhlIGF0dGFjaGVkIHByb2Nlc3MgaXMgbm90IGEgcHJvY2VzcwotZ3JvdXAgbGVhZGVyLCB0aGVuIHRoZSAia2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCkiIHJldHVybnMgZXJyb3IgYW5kIGZhaWxzICB0bwotaW50ZXJydXB0IHRoZSBhdHRhY2hlZCBwcm9jZXNzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDVdCi0KLUF1dGhvcjogSm9zaCBHYW8KLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBnZGItOC4yL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4yLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotKysrIGdkYi04LjIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotQEAgLTU5NDAsOSArNTk0MCw3IEBAIGxpbnV4X2xvb2tfdXBfc3ltYm9scyAodm9pZCkKLSBzdGF0aWMgdm9pZAotIGxpbnV4X3JlcXVlc3RfaW50ZXJydXB0ICh2b2lkKQotIHsKLS0gIC8qIFNlbmQgYSBTSUdJTlQgdG8gdGhlIHByb2Nlc3MgZ3JvdXAuICBUaGlzIGFjdHMganVzdCBsaWtlIHRoZSB1c2VyCi0tICAgICB0eXBlZCBhIF5DIG9uIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbC4gICovCi0tICBraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKTsKLSsgIGtpbGwgKHNpZ25hbF9waWQsIFNJR0lOVCk7Ci0gfQotIAotIC8qIENvcHkgTEVOIGJ5dGVzIGZyb20gaW5mZXJpb3IncyBhdXhpbGlhcnkgdmVjdG9yIHN0YXJ0aW5nIGF0IE9GRlNFVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyODdlYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAwMzZmOGUxZDM4N2Y2NWU1MmNiMDIxZGJiMWJkMjhlOGI3NWNmMDE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjoyNzo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzaW0vY29tbW9uL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KK2luZGV4IGM2ZGUxNDEyMmMuLmM0YjEyMTQ5NDYgMTAwNjQ0CistLS0gYS9zaW0vY29tbW9uL01ha2VmaWxlLmluCisrKysgYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCitAQCAtMzUsNyArMzUsNyBAQCB0b29sZGlyID0gJChsaWJkaXIpLyQodGFyZ2V0X2FsaWFzKQorIGRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorIGRhdGFkaXIgPSBAZGF0YWRpckAKKyBtYW5kaXIgPSBAbWFuZGlyQAorLW1hbjFkaXIgPSAkKG1hbmRpcikvbWFuMQorK21hbjFkaXIgPSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKKyBpbmZvZGlyID0gQGluZm9kaXJACisgaW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNDc5ZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYjAyMDlmMjgyNzE2YmVkMmMyMzBjN2I0OTZmYmNjN2FmNTAzZDBjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6Mjc6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xMV0gbWFrZSBtYW4gaW5zdGFsbCByZWxhdGl2ZSB0byBERVNURElSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCi1pbmRleCAyMjdlNGNmYmMyLi44YzM0NTdlMGJkIDEwMDY0NAotLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKLSBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLSBkYXRhZGlyID0gQGRhdGFkaXJACi0gbWFuZGlyID0gQG1hbmRpckAKLS1tYW4xZGlyID0gJChtYW5kaXIpL21hbjEKLSttYW4xZGlyID0gJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0gaW5mb2RpciA9IEBpbmZvZGlyQAotIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDY3Y2FmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNmJmZjI4NjJmOTU5N2YzMjRhOTM4NWViMmY4MjhlODM4ZTUxYThhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjMwOjA5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHMtbGludXgtbmF0OiBEZWZpbmUgX0FCSU8zMiBpZiBub3QgZGVmaW5lZAorCitUaGlzIGhlbHBzIGJ1aWxkaW5nIGdkYiBvbiBtaXBzNjQgb24gbXVzbCwgc2luY2UKK211c2wgZG9lcyBub3QgcHJvdmlkZSBzZ2lkZWZzLmggdGhpcyBkZWZpbmUgaXMKK29ubHkgZGVmaW5lZCB3aGVuIEdDQyBpcyB1c2luZyBvMzIgQUJJLCBpbiB0aGF0CitjYXNlIGdjYyBlbWl0cyBpdCBhcyBidWlsdC1pbiBkZWZpbmUgYW5kIGhlbmNlCitpdCB3b3JrcyBvayBmb3IgbWlwczMyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9taXBzLWxpbnV4LW5hdC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYworaW5kZXggMTA0Yzk3MmYyNC4uN2Y1NzViMzM2MyAxMDA2NDQKKy0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYworQEAgLTQxLDYgKzQxLDEwIEBACisgI2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCisgI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1CisgI2VuZGlmCisrLyogbXVzbCBkb2VzIG5vdCBkZWZpbmUgYW5kIHJlbGllcyBvbiBjb21waWxlciBidWlsdC1pbiBtYWNyb3MgZm9yIGl0ICAgKi8KKysjaWZuZGVmIF9BQklPMzIKKysjZGVmaW5lIF9BQklPMzIgMQorKyNlbmRpZgorIAorIGNsYXNzIG1pcHNfbGludXhfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBsaW51eF9uYXRfdHJhZF90YXJnZXQKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNTRjNzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBiMTRhNTdkOTBlMWNkZDgxNDRjZGE0Yzg4ODJiZDFkYjQ0ZDI2ZGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MzA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xMV0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCi0KLVRoaXMgaGVscHMgYnVpbGRpbmcgZ2RiIG9uIG1pcHM2NCBvbiBtdXNsLCBzaW5jZQotbXVzbCBkb2VzIG5vdCBwcm92aWRlIHNnaWRlZnMuaCB0aGlzIGRlZmluZSBpcwotb25seSBkZWZpbmVkIHdoZW4gR0NDIGlzIHVzaW5nIG8zMiBBQkksIGluIHRoYXQKLWNhc2UgZ2NjIGVtaXRzIGl0IGFzIGJ1aWx0LWluIGRlZmluZSBhbmQgaGVuY2UKLWl0IHdvcmtzIG9rIGZvciBtaXBzMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCAzMjgzNWMxNmIyLi42OGE3NTg3YWYyIDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtNDEsNiArNDEsMTAgQEAKLSAjaWZuZGVmIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEKLSAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKLSAjZW5kaWYKLSsvKiBtdXNsIGRvZXMgbm90IGRlZmluZSBhbmQgcmVsaWVzIG9uIGNvbXBpbGVyIGJ1aWx0LWluIG1hY3JvcyBmb3IgaXQgICAqLwotKyNpZm5kZWYgX0FCSU8zMgotKyNkZWZpbmUgX0FCSU8zMiAxCi0rI2VuZGlmCi0gCi0gY2xhc3MgbWlwc19saW51eF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVibGljIGxpbnV4X25hdF90cmFkX3RhcmdldAotIHsKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRiYWI3YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gZDU4MTdiY2YyZjczMTM2OTliZmE4NWI0MTIyMGQ4NjJkYjMyNzY2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE4OjMyOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMgc3lzdGVtcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jIHwgNiArKysrKysKKyBnZGIvbmF0L3BwYy1saW51eC5oICAgICAgICAgICB8IDYgKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCitpbmRleCA1ZDhkNjdiZWMyLi5mZmNmNjVhYjU4IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCitAQCAtMjMsNyArMjMsMTMgQEAKKyAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgorICNpbmNsdWRlIDxzeXMvdWlvLmg+CisgI2luY2x1ZGUgPGVsZi5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgCisgI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LWNvbW1vbi5oIgorICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC10ZGVzYy5oIgorZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCitpbmRleCBkOTM3YTY1YjY5Li4xZmQ1NGI0YTBlIDEwMDY0NAorLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAorKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAorQEAgLTE4LDcgKzE4LDEzIEBACisgI2lmbmRlZiBOQVRfUFBDX0xJTlVYX0gKKyAjZGVmaW5lIE5BVF9QUENfTElOVVhfSAorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9jcHV0YWJsZS5oPgorIAorIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDE2NWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTAsMCArMSw5MTEgQEAKK0Zyb20gNTA1ZjEwYTBlYTFhOGJiYTA1ODQ4NTlkOWEzNDhiYjc3OTU5M2VjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgorCitnZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKKyAuCisgICAqIEFkZCBSZW5lc2FzIFNIIChzaDQpIHN1cHBvcnQgKENsb3NlczogIzU3NjI0MikKKyAgICAgLSBUaGFua3MgTm9idWhpcm8gSXdhbWF0c3UsIFRha2FzaGkgWW9zaGlpLgorQXV0aG9yOiBIZWN0b3IgT3JvbiA8enVtYmlAZGViaWFuLm9yZz4KK0J1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNTc2MjQyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzICsrLQorIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgfCAgIDUgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgICAgICAgICB8ICAgMyArLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jICAgICB8ICAgMyArCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgICAgIHwgICA0ICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jICAgICAgfCAgIDMgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jICAgICB8ICAgNCArCisgMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCitpbmRleCBjM2UwNzRiMjFmLi40MmRkN2FmNTljIDEwMDY0NAorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysgYi9nZGIvTWFrZWZpbGUuaW4KK0BAIC0yMzE3LDYgKzIzMTcsOCBAQCBBTExERVBGSUxFUyA9IFwKKyAJc2gtbmJzZC1uYXQuYyBcCisgCXNoLW5ic2QtdGRlcC5jIFwKKyAJc2gtdGRlcC5jIFwKKysJc2gtbGludXgtdGRlcC5jIFwKKysJc2gtbGludXgtbmF0LmMgXAorIAlzb2wyLXRkZXAuYyBcCisgCXNvbGliLWFpeC5jIFwKKyAJc29saWItc3ZyNC5jIFwKK2RpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmhvc3QgYi9nZGIvY29uZmlndXJlLmhvc3QKK2luZGV4IGNlNTI4MjM3MjkuLjViNTE3M2E3MWEgMTAwNjQ0CistLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKKysrKyBiL2dkYi9jb25maWd1cmUuaG9zdAorQEAgLTE0OCw2ICsxNDgsNyBAQCByaXNjdiotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7CisgCisgczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OworIAorK3NoKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Cisgc2gqLSotbmV0YnNkZWxmKiB8IHNoKi0qLWtuZXRic2QqLWdudSkKKyAJCQlnZGJfaG9zdD1uYnNkIDs7Cisgc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7CitkaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKK2luZGV4IDEzYzEwZWVlZGEuLjFkMGQ1ODNhNjQgMTAwNjQ0CistLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCisrKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCitAQCAtMTgsMTQgKzE4LDM3IEBACisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKysjaW5jbHVkZSAiZnJhbWUuaCIKKysjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgorKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKysjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisrI2luY2x1ZGUgImluZmVyaW9yLmgiCisgI2luY2x1ZGUgIm9zYWJpLmgiCisgCisrI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgorKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisrI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisrI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgCisgI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKKyAKKysjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisrI2luY2x1ZGUgPHN5cy91c2VyLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisrCisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysKKysjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKKyAjaW5jbHVkZSAic2gtdGRlcC5oIgorICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCitAQCAtMTgxLDkgKzIwNCw1MDUgQEAgc3RhdGljIHN0cnVjdCB0cmFtcF9mcmFtZSBzaF9saW51eF9ydF9zaWdyZXR1cm5fdHJhbXBfZnJhbWUgPSB7CisgICBzaF9saW51eF9ydF9zaWdyZXR1cm5faW5pdAorIH07CisgCisrLyogUmVjb2duaXppbmcgc2lnbmFsIGhhbmRsZXIgZnJhbWVzLiAgKi8KKysKKysvKiBHTlUvTGludXggaGFzIHR3byBmbGF2b3JzIG9mIHNpZ25hbHMuICBOb3JtYWwgc2lnbmFsIGhhbmRsZXJzLCBhbmQKKysgICAicmVhbHRpbWUiIChSVCkgc2lnbmFscy4gIFRoZSBSVCBzaWduYWxzIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKKysgICBpbmZvcm1hdGlvbiB0byB0aGUgc2lnbmFsIGhhbmRsZXIgaWYgdGhlIFNBX1NJR0lORk8gZmxhZyBpcyBzZXQKKysgICB3aGVuIGVzdGFibGlzaGluZyBhIHNpZ25hbCBoYW5kbGVyIHVzaW5nIGBzaWdhY3Rpb24nLiAgSXQgaXMgbm90CisrICAgdW5saWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgR05VL0xpbnV4IHdpbGwgc3VwcG9ydCBTQV9TSUdJTkZPCisrICAgZm9yIG5vcm1hbCBzaWduYWxzIHRvby4gICovCisrCisrLyogV2hlbiB0aGUgU0ggTGludXgga2VybmVsIGNhbGxzIGEgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZQorKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXNuJ3Qgc2V0LCB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRzIHRvIGEgYml0IG9mCisrICAgY29kZSBvbiB0aGUgc3RhY2suICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgUEMgYXBwZWFycyB0bworKyAgIGJlIHdpdGhpbiB0aGlzIGJpdCBvZiBjb2RlLgorKworKyAgIFRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3Igbm9ybWFsIHNpZ25hbHMgaXMKKysgICAgICAgbW92LncgIDFmLHIzCisrICAgICAgIHRyYXBhICAjMTYKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgIDE6IC53b3JkICBfX05SX3NpZ3JldHVybgorKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwNzcuCisrCisrICAgQ2hlY2tpbmcgZm9yIHRoZSBjb2RlIHNlcXVlbmNlIHNob3VsZCBiZSBzb21ld2hhdCByZWxpYWJsZSwgYmVjYXVzZQorKyAgIHRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgc2lncmV0dXJuLiAgVGhpcyBpcyB1bmxpa2VseQorKyAgIHRvIG9jY3VyIGFueXdoZXJlIG90aGVyIHRoYW4gYSBzaWduYWwgdHJhbXBvbGluZS4KKysKKysgICBJdCBraW5kIG9mIHN1Y2tzIHRoYXQgd2UgaGF2ZSB0byByZWFkIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzIGluCisrICAgb3JkZXIgdG8gaWRlbnRpZnkgYSBzaWduYWwgdHJhbXBvbGluZSwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQorKyAgIGFueSBvdGhlciB3YXkuICBUaGUgUENfSU5fU0lHVFJBTVAgbWFjcm8gaW4gdG0tbGludXguaCBhcnJhbmdlcyB0bworKyAgIG9ubHkgY2FsbCB1cyBpZiBubyBmdW5jdGlvbiBuYW1lIGNvdWxkIGJlIGlkZW50aWZpZWQsIHdoaWNoIHNob3VsZAorKyAgIGJlIHRoZSBjYXNlIHNpbmNlIHRoZSBjb2RlIGlzIG9uIHRoZSBzdGFjay4KKysKKysgICBEZXRlY3Rpb24gb2Ygc2lnbmFsIHRyYW1wb2xpbmVzIGZvciBoYW5kbGVycyB0aGF0IHNldCB0aGUKKysgICBTQV9SRVNUT1JFUiBmbGFnIGlzIGluIGdlbmVyYWwgbm90IHBvc3NpYmxlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGlzCisrICAgd2hhdCB0aGUgR05VIEMgTGlicmFyeSBoYXMgYmVlbiBkb2luZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdy4KKysgICBIb3dldmVyLCBhcyBvZiB2ZXJzaW9uIDIuMS4yLCB0aGUgR05VIEMgTGlicmFyeSB1c2VzIHNpZ25hbAorKyAgIHRyYW1wb2xpbmVzIChuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydCkgdGhhdCBhcmUgaWRlbnRpY2FsCisrICAgdG8gdGhlIG9uZXMgdXNlZCBieSB0aGUga2VybmVsLiAgVGhlcmVmb3JlLCB0aGVzZSB0cmFtcG9saW5lcyBhcmUKKysgICBzdXBwb3J0ZWQgdG9vLiAgKi8KKysKKysjZGVmaW5lIE1PVlcobikJICgweDkzMDB8KChuKS0yKSkJLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCisrI2RlZmluZSBUUkFQMTYJIDB4YzMxMAkJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIE9SX1IwX1IwIDB4MjAwYgkJCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLworKworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjAJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04yCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9zaWd0cmFtcF9jb2RlW10gPQorK3sKKysgIExJTlVYX1NJR1RSQU1QX0lOU04wLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjEsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgX19OUl9zaWdyZXR1cm4KKyt9OworKworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfc2lndHJhbXBfY29kZSkKKysKKysvKiBJZiBQQyBpcyBpbiBhIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YKKysgICB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytzaF9saW51eF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKKysgIGdkYl9ieXRlIGJ1ZltMSU5VWF9TSUdUUkFNUF9MRU5dOworKworKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKKysgICAgIG9uZSBvZiB0aGUgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0CisrICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCisrICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKysgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCisrICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLworKworKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMCkKKysgICAgeworKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjEpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgICBwYyAtPSAyOworKworKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9TSUdUUkFNUF9MRU4pICE9IDApCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIHBjOworK30KKysKKysvKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHNhbWUgZm9yIFJUIHNpZ25hbHMuICBIZXJlIHRoZSBpbnN0cnVjdGlvbgorKyAgIHNlcXVlbmNlIGlzCisrICAgICAgIG1vdi53ICAxZixyMworKyAgICAgICB0cmFwYSAgIzE2CisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAxOiAud29yZCAgX19OUl9ydF9zaWdyZXR1cm4KKysgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMGFkLgorKworKyAgIFRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgcnRfc2lncmV0dXJuLiAgKi8KKysKKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wCQlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xCQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yCQlPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfcnRfc2lndHJhbXBfY29kZVtdID0KKyt7CisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIF9fTlJfcnRfc2lncmV0dXJuCisrfTsKKysKKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUpCisrCisrLyogSWYgUEMgaXMgaW4gYSBSVCBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0CisrICAgb2YgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7CisrICBnZGJfYnl0ZSBidWZbTElOVVhfUlRfU0lHVFJBTVBfTEVOXTsKKysKKysgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCisrICAgICBvbmUgb2YgdGhlIHR3byBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKKysgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKKysgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQorKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKKysgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCisrCisrICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04wKQorKyAgICB7CisrICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSkKKysJcmV0dXJuIDA7CisrCisrICAgICAgcGMgLT0gMjsKKysKKysgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwKKysJCQkJICAgICBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pICE9IDApCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIHBjOworK30KKysKKysvKiBSZXR1cm4gd2hldGhlciBQQyBpcyBpbiBhIEdOVS9MaW51eCBzaWd0cmFtcCByb3V0aW5lLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc2hfbGludXhfc2lndHJhbXBfcCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKKysgIGNoYXIgKm5hbWU7CisrCisrICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7CisrCisrICAvKiBJZiB3ZSBoYXZlIE5BTUUsIHdlIGNhbiBvcHRpbWl6ZSB0aGUgc2VhcmNoLiAgVGhlIHRyYW1wb2xpbmVzIGFyZQorKyAgICAgbmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQuICBIb3dldmVyLCB0aGV5IGFyZW4ndCBkeW5hbWljYWxseQorKyAgICAgZXhwb3J0ZWQgZnJvbSB0aGUgc2hhcmVkIEMgbGlicmFyeSwgc28gdGhlIHRyYW1wb2xpbmUgbWF5IGFwcGVhciB0bworKyAgICAgYmUgcGFydCBvZiB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpZ2FjdGlvbiwKKysgICAgIF9fc2lnYWN0aW9uLCBvciBfX2xpYmNfc2lnYWN0aW9uIChhbGwgYWxpYXNlcyB0byB0aGUgc2FtZSBmdW5jdGlvbikuICAqLworKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzdHJzdHIgKG5hbWUsICJzaWdhY3Rpb24iKSAhPSBOVUxMKQorKyAgICByZXR1cm4gKHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwCisrCSAgICB8fCBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMCk7CisrCisrICByZXR1cm4gKHN0cmNtcCAoIl9fcmVzdG9yZSIsIG5hbWUpID09IDAKKysJICB8fCBzdHJjbXAgKCJfX3Jlc3RvcmVfcnQiLCBuYW1lKSA9PSAwKTsKKyt9CisrCisrLyogT2Zmc2V0IHRvIHN0cnVjdCBzaWdjb250ZXh0IGluIHVjb250ZXh0LCBmcm9tIDxhc20vdWNvbnRleHQuaD4uICAqLworKyNkZWZpbmUgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQgMTIKKysKKysKKysvKiBBc3N1bWluZyBORVhUX0ZSQU1FIGlzIGEgZnJhbWUgZm9sbG93aW5nIGEgR05VL0xpbnV4IHNpZ3RyYW1wCisrICAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHNpZ2NvbnRleHQgc3RydWN0dXJlLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfc2lnY29udGV4dF9hZGRyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGM7CisrICBDT1JFX0FERFIgc3A7CisrCisrICBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKKysKKysgIHBjID0gc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOworKyAgaWYgKHBjKQorKyAgICB7CisrICAgICAgcmV0dXJuIHNwOworKyAgICB9CisrCisrICBwYyA9IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKKysgIGlmIChwYykKKysgICAgeworKyAgICAgIENPUkVfQUREUiB1Y29udGV4dF9hZGRyOworKworKyAgICAgIC8qIFRoZSBzaWdjb250ZXh0IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbnRleHQuICBBCisrCSBwb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSB0aGlyZCBhcmd1bWVudAorKwkgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLiAgKi8KKysgICAgICB1Y29udGV4dF9hZGRyID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBBUkcwX1JFR05VTSsyKTsKKysgICAgICByZXR1cm4gdWNvbnRleHRfYWRkciArIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUOworKyAgICB9CisrCisrICBlcnJvciAoIkNvdWxkbid0IHJlY29nbml6ZSBzaWduYWwgdHJhbXBvbGluZS4iKTsKKysgIHJldHVybiAwOworK30KKysKKysvKiBTaWduYWwgdHJhbXBvbGluZXMuICAqLworK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKTsKKysKKytzdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorK3sKKysgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfY3VycmVudF9hcmNoICgpKTsKKysgIENPUkVfQUREUiBzaWdjb250ZXh0X2FkZHI7CisrCisrICBpZiAoKnRoaXNfY2FjaGUpCisrICAgIHJldHVybiAqdGhpc19jYWNoZTsKKysKKysgIGNhY2hlID0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKCk7CisrCisrICBjYWNoZS0+YmFzZSA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKKysgIHNpZ2NvbnRleHRfYWRkciA9IHRkZXAtPnNpZ2NvbnRleHRfYWRkciAodGhpc19mcmFtZSk7CisrICBpZiAodGRlcC0+c2NfcmVnX29mZnNldCkKKysgICAgeworKyAgICAgIGludCBpOworKworKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPnNjX251bV9yZWdzIDw9IFNIX05VTV9SRUdTKTsKKysKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+c2NfbnVtX3JlZ3M7IGkrKykKKysJaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXRbaV0gIT0gLTEpCisrCSAgY2FjaGUtPnNhdmVkX3JlZ3NbaV0gPSBzaWdjb250ZXh0X2FkZHIgKyB0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldOworKyAgICB9CisrCisrICAqdGhpc19jYWNoZSA9IGNhY2hlOworKyAgcmV0dXJuIGNhY2hlOworK30KKysKKytzdGF0aWMgdm9pZAorK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJCQkgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKKyt7CisrICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0KKysgICAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOworKworKyAgKCp0aGlzX2lkKSA9IGZyYW1lX2lkX2J1aWxkIChjYWNoZS0+YmFzZSArIDY0LCBjYWNoZS0+cGMpOworK30KKysKKytleHRlcm4gc3RydWN0IHZhbHVlICogc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoKTsKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKysgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCisreworKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOworKworKyAgcmV0dXJuIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUsIHJlZ251bSk7CisrfQorKworK3N0YXRpYyBpbnQKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAorKyAgICAgICAgICAgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisrICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKKyt7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSkpOworKworKyAgLyogV2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyIGlmIHdlIGRvbid0IGhhdmUgYSBzaWdjb250ZXh0X2FkZHIKKysgICAgIGhhbmRsZXIuICAqLworKyAgaWYgKHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9PSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+c2lndHJhbXBfcCAodGhpc19mcmFtZSkpCisrICAgIHJldHVybiAxOworKyAgICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kID0KKyt7CisrICBTSUdUUkFNUF9GUkFNRSwKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyLAorKyAgTlVMTCwKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIKKyt9OworKworKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOCisrICAgaW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCisrICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKyt2b2lkCisrc2hfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCisreworKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ3MgPSBncmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCisrICAgIHsKKysgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKKysgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKKysgICAgfQorK30KKysKKysvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKKysgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKKysgICBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKKysgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrdm9pZAorK3NoX2NvbGxlY3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjaGFyICpyZWdzID0gZ3JlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCisrICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOworKyAgICB9CisrfQorKworKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTgorKyAgIGluIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCisrICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NoX3N1cHBseV9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjb25zdCBjaGFyICpyZWdzID0gZnByZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKKysgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOworKyAgICB9CisrICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKKysgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKKyt9CisrCisrLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCisrICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQorKyAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCisrICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjaGFyICpyZWdzID0gZnByZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKKysgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKKysgICAgfQorKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOworKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKKyt9CisrCisrLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAorKyAgIGJ5IFNFQ1RfTkFNRSBhbmQgU0VDVF9TSVpFLiAgKi8KKysKKytjb25zdCBzdHJ1Y3QgcmVnc2V0ICoKKytzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUsIHNpemVfdCBzZWN0X3NpemUpCisreworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrCisrICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+Z3JlZ3NldCA9PSBOVUxMKQorKyAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZ3JlZ3NldCwKKysgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9ncmVnc2V0KTsKKysgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKKysgICAgfQorKworKyAgaWYgKChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWcyIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KSkKKysgICAgeworKyAgICAgIGlmICh0ZGVwLT5mcHJlZ3NldCA9PSBOVUxMKQorKyAgICB0ZGVwLT5mcHJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2ZwcmVnc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9mcHJlZ3NldCk7CisrICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OworKyAgICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrLyogVGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiBHTlUvTGludXggRUxGIGNvcmUtZHVtcHMgYXJlIGlkZW50aWNhbCB0bworKyAgIHRoZSByZWdpc3RlciBzZXRzIGluIGBzdHJ1Y3QgdXNlcicgdGhhdCBhcmUgdXNlZCBmb3IgYS5vdXQKKysgICBjb3JlLWR1bXBzLiAgVGhlc2UgYXJlIGFsc28gdXNlZCBieSBwdHJhY2UoMikuICBUaGUgY29ycmVzcG9uZGluZworKyAgIHR5cGVzIGFyZSBgZWxmX2dyZWdzZXRfdCcgZm9yIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzICh3aXRoCisrICAgYGVsZl9ncmVnX3QnIHRoZSB0eXBlIG9mIGEgc2luZ2xlIEdQIHJlZ2lzdGVyKSBhbmQgYGVsZl9mcHJlZ3NldF90JworKyAgIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorKworKyAgIFRob3NlIHR5cGVzIHVzZWQgdG8gYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lcyBgZ3JlZ3NldF90JyBhbmQKKysgICBgZnByZWdzZXRfdCcgdG9vLCBhbmQgR0RCIHVzZWQgdGhvc2UgbmFtZXMgaW4gdGhlIHBhc3QuICBCdXQgdGhvc2UKKysgICBuYW1lcyBhcmUgbm93IHVzZWQgZm9yIHRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gdGhlIGBtY29udGV4dF90JworKyAgIHR5cGUsIHdoaWNoIGhhdmUgYSBkaWZmZXJlbnQgc2l6ZSBhbmQgbGF5b3V0LiAgKi8KKysKKysvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJworKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KKysKKysvKiBGcm9tIDxzeXMvcmVnLmg+LiAgKi8KKytzdGF0aWMgaW50IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdID0KKyt7CisrIDAsCTQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwKKysgMzIsCTM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAorKworKyBSRUdfUEMqNCwgICBSRUdfUFIqNCwgICBSRUdfR0JSKjQsICAtMSwKKysgUkVHX01BQ0gqNCwgUkVHX01BQ0wqNCwgUkVHX1NSKjQsCisrfTsKKysKKysvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdAorKyAgIHNpZ2NvbnRleHQnIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KKysKKysvKiBGcm9tIDxhc20vc2lnY29udGV4dC5oPi4gICovCisrc3RhdGljIGludCBzaF9saW51eF9zY19yZWdfb2Zmc2V0W10gPQorK3sKKysgNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAkzMiwKKysgMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCTY0LAorKyA2OCwJNzIsCTgwLAktMSwKKysgODQsCTg4LAk3NgorK307CisrCisgc3RhdGljIHZvaWQKKyBzaF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKKysgIGJmZCBhYmZkOworKworKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OworKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk7CisrICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDIzICogNDsKKysKKysgIHRkZXAtPmpiX3BjX29mZnNldCA9IDMyOyAgICAgLyogRnJvbSA8Yml0cy9zZXRqbXAuaD4uICAqLworKworKyAgdGRlcC0+c2lndHJhbXBfcCA9IHNoX2xpbnV4X3NpZ3RyYW1wX3A7CisrICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBzaF9saW51eF9zaWdjb250ZXh0X2FkZHI7CisrICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gc2hfbGludXhfc2NfcmVnX29mZnNldDsKKysgIHRkZXAtPnNjX251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfc2NfcmVnX29mZnNldCk7CisrCisrICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyKGdkYmFyY2gsICZzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOworKworKyAgLyogSWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIG1hcHBpbmcsIGVuYWJsZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUKKysgICAgIHN1cHBvcnQsIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuICAqLworKyAgaWYgKHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldAorKyAgICAgICYmICFnZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbl9wIChnZGJhcmNoKSkKKysgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKKysKKyAgIGxpbnV4X2luaXRfYWJpIChpbmZvLCBnZGJhcmNoKTsKKyAKKyAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKK2luZGV4IGUzYWVlMGFjMjguLjU5NThjZjM2ODggMTAwNjQ0CistLS0gYS9nZGIvc2gtdGRlcC5jCisrKysgYi9nZGIvc2gtdGRlcC5jCitAQCAtMjEsNiArMjEsOSBAQAorICAgIHNhY0BjeWdudXMuY29tLiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZHVtbXktZnJhbWUuaCIKKyAjaW5jbHVkZSAiZnJhbWUuaCIKKyAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgorICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKK0BAIC02NiwyMyArNjksNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0geworIAorIHN0YXRpYyBjb25zdCBjaGFyICpzaF9hY3RpdmVfY2FsbGluZ19jb252ZW50aW9uID0gc2hfY2NfZ2NjOworIAorLSNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKKy0KKy1zdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKKy17CistICAvKiBCYXNlIGFkZHJlc3MuICAqLworLSAgQ09SRV9BRERSIGJhc2U7CistICBMT05HRVNUIHNwX29mZnNldDsKKy0gIENPUkVfQUREUiBwYzsKKy0KKy0gIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gICovCistICBpbnQgdXNlc19mcDsKKy0KKy0gIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCistICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107CistICBDT1JFX0FERFIgc2F2ZWRfc3A7CistfTsKKy0KKyBzdGF0aWMgaW50Cisgc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCisgeworQEAgLTEwNTAsNyArMTAzNiw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgICAgcmV0dXJuIDA7CisgICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCisgICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpID09IFRZUEVfQ09ERV9GTFQpCisrICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkgPT0gVFlQRV9DT0RFX0ZMVCkKKyAgICAgcmV0dXJuIDE7CisgICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCisgICByZXR1cm4gMDsKK0BAIC0xMTAwLDcgKzEwODYsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCisgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKKyAgICAgeworLSAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pOworKyAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pKTsKKyAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CisgICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKKyAKK0BAIC0xODM1LDcgKzE4MjEsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAorICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQorIHsKKyAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7CitAQCAtMTg2Miw3ICsxODQ4LDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCisgICByZXR1cm4gY2FjaGU7CisgfQorIAorLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKK0BAIC0xOTI5LDkgKzE5MTUsOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorICAgcmV0dXJuIGNhY2hlOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHZhbHVlICoKKy1zaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKy0JCQl2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKKytzdHJ1Y3QgdmFsdWUgKgorK3NoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJCQlpbnQgcmVnbnVtKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOworICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9IHNoX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKK0BAIC0xOTQ1LDcgKzE5MzEsNyBAQCBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKyAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgRnJvYiByZWdudW0gc28gdGhhdCB3ZSBwdWxsIHRoZSB2YWx1ZSBmcm9tCisgICAgICB0aGUgY29ycmVjdCBwbGFjZS4gICovCisgICBpZiAocmVnbnVtID09IGdkYmFyY2hfcGNfcmVnbnVtIChnZGJhcmNoKSkKKy0gICAgcmVnbnVtID0gUFJfUkVHTlVNOworKyAgICByZWdudW0gPSBQUl9SRUdOVU07IC8qIFhYWDogcmVhbGx5PyAqLworIAorICAgaWYgKHJlZ251bSA8IFNIX05VTV9SRUdTICYmIGNhY2hlLT5zYXZlZF9yZWdzW3JlZ251bV0gIT0gLTEpCisgICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X21lbW9yeSAodGhpc19mcmFtZSwgcmVnbnVtLAorQEAgLTIyMzQsOCArMjIyMCw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKKyBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorIHsKKy0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcDsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworIAorICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0LiAgKi8KKyAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7CitAQCAtMjI0Nyw2ICsyMjMzLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOworICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKKyAKKysgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLworKyAgdGRlcC0+Z3JlZ3NldCA9IE5VTEw7CisrICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBOVUxMOworKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IDIzOworKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAwOworKworKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KKysgIHRkZXAtPmZwcmVnc2V0ID0gTlVMTDsKKysgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IDM0KjQ7CisrCisrICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAtMTsKKysKKyAgIHNldF9nZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7CisgICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKKyAgIHNldF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKK0BAIC0yMzk4LDEwICsyMzk2LDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKKysKKyAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmljIG92ZXJyaWRlcywgaWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCisgICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gpOworIAorLSAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOworICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX3N0dWJfdW53aW5kKTsKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9mcmFtZV91bndpbmQpOworIAorZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmggYi9nZGIvc2gtdGRlcC5oCitpbmRleCA3NmUyZTc2ZTM5Li4yNzEwZjYzMDEwIDEwMDY0NAorLS0tIGEvZ2RiL3NoLXRkZXAuaAorKysrIGIvZ2RiL3NoLXRkZXAuaAorQEAgLTIxLDYgKzIxLDEyIEBACisgCisgLyogQ29udHJpYnV0ZWQgYnkgU3RldmUgQ2hhbWJlcmxhaW4gc2FjQGN5Z251cy5jb20uICAqLworIAorK3N0cnVjdCBmcmFtZV9pbmZvOworK3N0cnVjdCBnZGJhcmNoOworK3N0cnVjdCByZWdncm91cDsKKytzdHJ1Y3QgcmVnc2V0OworK3N0cnVjdCByZWdjYWNoZTsKKysKKyAvKiBSZWdpc3RlcnMgZm9yIGFsbCBTSCB2YXJpYW50cy4gIFVzZWQgYWxzbyBieSBzaDMtcm9tLmMuICAqLworIGVudW0KKyAgIHsKK0BAIC0yOSw2ICszNSw3IEBAIGVudW0KKyAgICAgQVJHMF9SRUdOVU0gPSA0LAorICAgICBBUkdMQVNUX1JFR05VTSA9IDcsCisgICAgIEZQX1JFR05VTSA9IDE0LAorKyAgICBTUF9SRUdOVU0gPSAxNSwKKyAgICAgUENfUkVHTlVNID0gMTYsCisgICAgIFBSX1JFR05VTSA9IDE3LAorICAgICBHQlJfUkVHTlVNID0gMTgsCitAQCAtODEsNiArODgsMjQgQEAgZW51bQorICAgICBGVjBfUkVHTlVNID0gNzYsCisgICAgIEZWX0xBU1RfUkVHTlVNID0gNzkKKyAgIH07CisrI2RlZmluZSBTSF9OVU1fUkVHUyA2NworKworK3N0cnVjdCBzaF9mcmFtZV9jYWNoZQorK3sKKysgIC8qIEJhc2UgYWRkcmVzcy4gICovCisrICBDT1JFX0FERFIgYmFzZTsKKysgIExPTkdFU1Qgc3Bfb2Zmc2V0OworKyAgQ09SRV9BRERSIHBjOworKworKyAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAqLworKyAgaW50IHVzZXNfZnA7CisrCisrICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLworKyAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOworKyAgQ09SRV9BRERSIHNhdmVkX3NwOworK307CisrCisrZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSk7CisgCisgLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgcmVnaXN0ZXIgaW4gYSBjb3JlLWZpbGUuICAqLworIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKK0BAIC04OSw4ICsxMTQsMzIgQEAgc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAorICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyB9OworIAorKy8qIHNoIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gICovCisgc3RydWN0IGdkYmFyY2hfdGRlcAorIHsKKysgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLworKyAgc3RydWN0IHJlZ3NldCAqZ3JlZ3NldDsKKysgIGludCAqZ3JlZ3NldF9yZWdfb2Zmc2V0OworKyAgaW50IGdyZWdzZXRfbnVtX3JlZ3M7CisrICBzaXplX3Qgc2l6ZW9mX2dyZWdzZXQ7CisrCisrICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLworKyAgc3RydWN0IHJlZ3NldCAqZnByZWdzZXQ7CisrICBzaXplX3Qgc2l6ZW9mX2ZwcmVnc2V0OworKworKyAgLyogT2Zmc2V0IG9mIHNhdmVkIFBDIGluIGptcF9idWYuICAqLworKyAgaW50IGpiX3BjX29mZnNldDsKKysKKysgIC8qIERldGVjdCBzaWd0cmFtcC4gICovCisrICBpbnQgKCpzaWd0cmFtcF9wKSAoc3RydWN0IGZyYW1lX2luZm8gKik7CisrCisrICAvKiBHZXQgYWRkcmVzcyBvZiBzaWdjb250ZXh0IGZvciBzaWd0cmFtcC4gICovCisrICBDT1JFX0FERFIgKCpzaWdjb250ZXh0X2FkZHIpIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKKysKKysgIC8qIE9mZnNldCBvZiByZWdpc3RlcnMgaW4gYHN0cnVjdCBzaWdjb250ZXh0Jy4gICovCisrICBpbnQgKnNjX3JlZ19vZmZzZXQ7CisrICBpbnQgc2NfbnVtX3JlZ3M7CisrCisgICAvKiBOb24tTlVMTCB3aGVuIGRlYnVnZ2luZyBmcm9tIGEgY29yZSBmaWxlLiAgUHJvdmlkZXMgdGhlIG9mZnNldAorICAgICAgd2hlcmUgZWFjaCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgaXMgc3RvcmVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZAorICAgICAgY29yZSBmaWxlIHNlY3Rpb24uICAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAoraW5kZXggNDkxNDQ5OGY5OC4uNmUyNWNiZWQxOCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCitAQCAtMTE2LDYgKzExNiwxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7CisgICAgICAgICAgICAgYXBwZW5kIGxpbmstZmxhZ3MgIiAtbSBlbGYzMnBwYyIKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICAic2gqLWxpbnV4KiIgeworKyAgICAgICAgc2V0IGFzbS1hcmNoIHNoLWxpbnV4CisrICAgICAgICBzZXQgYXNtLWZsYWdzICItSSR7c3JjZGlyfS8ke3N1YmRpcn0gLUkke29iamRpcn0vJHtzdWJkaXJ9IgorKwlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKKysgICAgfQorICAgICAic2gqLSotKiIgeworICAgICAgICAgc2V0IGFzbS1hcmNoIHNoCisgCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCitpbmRleCBhNGE1ZmM1NDVlLi44OWVmZWQ3Nzk1IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworQEAgLTQwLDkgKzQwLDggQEAKKyAJbW92LmwgICAuTGNvbnN0XEAscjEKKyAJYnJhCS5MYWZ0ZXJjb25zdFxACisgCW5vcAorLQlub3AKKy0uTGNvbnN0XEA6CisgCS5hbGlnbgkyCisrLkxjb25zdFxAOgorIAkubG9uZwlcc3VicgorIAkuYWxpZ24JMQorIC5MYWZ0ZXJjb25zdFxAOgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKK2luZGV4IDQyNGUxYjgzMjcuLjBkZTJlN2I2MzMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKK0BAIC0xLDYgKzEsOSBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorIAorIHZvaWQKKyBoYW5kbGVfVVNSMSAoaW50IHNpZykKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCitpbmRleCA0MjRlMWI4MzI3Li45NTJhYWYyMThhIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCitAQCAtMSw2ICsxLDEwIEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorIAorKyNpZmRlZiBfX3NoX18KKysjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCisrI2VuZGlmCisrCisgCisgdm9pZAorIGhhbmRsZV9VU1IxIChpbnQgc2lnKQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCitpbmRleCA4MWYzYjA4ZDZiLi4xNTc0YjJkNmNiIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworQEAgLTEsNiArMSw5IEBACisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorIAorIC8qIFNpZ25hbCBoYW5kbGVycywgd2Ugc2V0IGJyZWFrcG9pbnRzIGluIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgdGhlCisgICAgc2lnbmFscyByZWFsbHkgZ2V0IGRlbGl2ZXJlZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworaW5kZXggNzU2NjA2ODgwZi4uMTIwNWE5YmM5YyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworQEAgLTMsNiArMywxMCBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZGVmaW5lIGFsYXJtKGEpICAgICAgIC8qIERpdHRvIGZvciBhbGFybSgpICovCisrI2VuZGlmCisgCisgc3RhdGljIGludCBjb3VudCA9IDA7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzBkNTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBkYTMwMzcwYzFlM2ZmNzcyOGE4NTdlMTE5ZTA1MjlhOWYwOTcwODZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTg6MzI6MTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHBjL3B0cmFjZTogRGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzIG9uICFHTElCQyBzeXN0ZW1zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyB8IDYgKysrKysrCi0gZ2RiL25hdC9wcGMtbGludXguaCAgICAgICAgICAgfCA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotaW5kZXggMWI2OTVlNTMuLjE5NzgzNDdjIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi1AQCAtMjMsNyArMjMsMTMgQEAKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gI2luY2x1ZGUgPGVsZi5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyB1bmRlZiBwdF9yZWdzCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LWNvbW1vbi5oIgotICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC10ZGVzYy5oIgotZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCi1pbmRleCBmMTU2MWIzYi4uNDAzOTkzNjEgMTAwNjQ0Ci0tLS0gYS9nZGIvbmF0L3BwYy1saW51eC5oCi0rKysgYi9nZGIvbmF0L3BwYy1saW51eC5oCi1AQCAtMTgsNyArMTgsMTMgQEAKLSAjaWZuZGVmIE5BVF9QUENfTElOVVhfSAotICNkZWZpbmUgTkFUX1BQQ19MSU5VWF9ICi0gCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjIGRlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncwotKyNlbmRpZgotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjIHVuZGVmIHB0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL2NwdXRhYmxlLmg+Ci0gCi0gLyogVGhpcyBzb21ldGltZXMgaXNuJ3QgZGVmaW5lZC4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODQwY2FmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTE0ICswLDAgQEAKLUZyb20gMjE1NDg2YjUzYTdhNmRmY2EwNjRjZDJlOTE5NmE5ZGU2ZWQ2ZjBjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xMV0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgotCi1nZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKLSAuCi0gICAqIEFkZCBSZW5lc2FzIFNIIChzaDQpIHN1cHBvcnQgKENsb3NlczogIzU3NjI0MikKLSAgICAgLSBUaGFua3MgTm9idWhpcm8gSXdhbWF0c3UsIFRha2FzaGkgWW9zaGlpLgotQXV0aG9yOiBIZWN0b3IgT3JvbiA8enVtYmlAZGViaWFuLm9yZz4KLUJ1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNTc2MjQyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzICsrLQotIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgfCAgIDUgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgICAgICAgICB8ICAgMyArLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jICAgICB8ICAgMyArCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgICAgIHwgICA0ICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jICAgICAgfCAgIDMgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jICAgICB8ICAgNCArCi0gMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCBjNzZhNGU0Mzk0Li45MjFmZGFkYjQ5IDEwMDY0NAotLS0tIGEvZ2RiL01ha2VmaWxlLmluCi0rKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0yMzI2LDYgKzIzMjYsOCBAQCBBTExERVBGSUxFUyA9IFwKLSAJc2gtbmJzZC1uYXQuYyBcCi0gCXNoLW5ic2QtdGRlcC5jIFwKLSAJc2gtdGRlcC5jIFwKLSsJc2gtbGludXgtdGRlcC5jIFwKLSsJc2gtbGludXgtbmF0LmMgXAotIAlzb2wyLXRkZXAuYyBcCi0gCXNvbGliLWFpeC5jIFwKLSAJc29saWItc3B1LmMgXAotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuaG9zdCBiL2dkYi9jb25maWd1cmUuaG9zdAotaW5kZXggMjNhMmYxNjM5OS4uMzlhODg2ZWM1MyAxMDA2NDQKLS0tLSBhL2dkYi9jb25maWd1cmUuaG9zdAotKysrIGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMTUzLDYgKzE1Myw3IEBAIHJpc2N2Ki0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKLSAKLSBzMzkwKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Ci0gCi0rc2gqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKLSBzaCotKi1uZXRic2RlbGYqIHwgc2gqLSota25ldGJzZCotZ251KQotIAkJCWdkYl9ob3N0PW5ic2QgOzsKLSBzaCotKi1vcGVuYnNkKikJCWdkYl9ob3N0PW5ic2QgOzsKLWRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwotaW5kZXggZGI5Mzk2NzkxMC4uNDEwOWM1NDllOCAxMDA2NDQKLS0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLUBAIC0xOCwxNCArMTgsMzcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpbmNsdWRlICJmcmFtZS5oIgotKyNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCi0rI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotKyNpbmNsdWRlICJkd2FyZjItZnJhbWUuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAiaW5mZXJpb3IuaCIKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAKLSsjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiZmxvYXRmb3JtYXQuaCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotIAotKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsjaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSsjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsKLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotKyNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgotICNpbmNsdWRlICJzaC10ZGVwLmgiCi0gI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLUBAIC0xODAsOSArMjAzLDUwNSBAQCBzdGF0aWMgc3RydWN0IHRyYW1wX2ZyYW1lIHNoX2xpbnV4X3J0X3NpZ3JldHVybl90cmFtcF9mcmFtZSA9IHsKLSAgIHNoX2xpbnV4X3J0X3NpZ3JldHVybl9pbml0Ci0gfTsKLSAKLSsvKiBSZWNvZ25pemluZyBzaWduYWwgaGFuZGxlciBmcmFtZXMuICAqLwotKwotKy8qIEdOVS9MaW51eCBoYXMgdHdvIGZsYXZvcnMgb2Ygc2lnbmFscy4gIE5vcm1hbCBzaWduYWwgaGFuZGxlcnMsIGFuZAotKyAgICJyZWFsdGltZSIgKFJUKSBzaWduYWxzLiAgVGhlIFJUIHNpZ25hbHMgY2FuIHByb3ZpZGUgYWRkaXRpb25hbAotKyAgIGluZm9ybWF0aW9uIHRvIHRoZSBzaWduYWwgaGFuZGxlciBpZiB0aGUgU0FfU0lHSU5GTyBmbGFnIGlzIHNldAotKyAgIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2lnbmFsIGhhbmRsZXIgdXNpbmcgYHNpZ2FjdGlvbicuICBJdCBpcyBub3QKLSsgICB1bmxpa2VseSB0aGF0IGZ1dHVyZSB2ZXJzaW9ucyBvZiBHTlUvTGludXggd2lsbCBzdXBwb3J0IFNBX1NJR0lORk8KLSsgICBmb3Igbm9ybWFsIHNpZ25hbHMgdG9vLiAgKi8KLSsKLSsvKiBXaGVuIHRoZSBTSCBMaW51eCBrZXJuZWwgY2FsbHMgYSBzaWduYWwgaGFuZGxlciBhbmQgdGhlCi0rICAgU0FfUkVTVE9SRVIgZmxhZyBpc24ndCBzZXQsIHRoZSByZXR1cm4gYWRkcmVzcyBwb2ludHMgdG8gYSBiaXQgb2YKLSsgICBjb2RlIG9uIHRoZSBzdGFjay4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aGV0aGVyIHRoZSBQQyBhcHBlYXJzIHRvCi0rICAgYmUgd2l0aGluIHRoaXMgYml0IG9mIGNvZGUuCi0rCi0rICAgVGhlIGluc3RydWN0aW9uIHNlcXVlbmNlIGZvciBub3JtYWwgc2lnbmFscyBpcwotKyAgICAgICBtb3YudyAgMWYscjMKLSsgICAgICAgdHJhcGEgICMxNgotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgMTogLndvcmQgIF9fTlJfc2lncmV0dXJuCi0rICAgb3IgMHg5MzA1IDB4YzMxMCAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MDA3Ny4KLSsKLSsgICBDaGVja2luZyBmb3IgdGhlIGNvZGUgc2VxdWVuY2Ugc2hvdWxkIGJlIHNvbWV3aGF0IHJlbGlhYmxlLCBiZWNhdXNlCi0rICAgdGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBzaWdyZXR1cm4uICBUaGlzIGlzIHVubGlrZWx5Ci0rICAgdG8gb2NjdXIgYW55d2hlcmUgb3RoZXIgdGhhbiBhIHNpZ25hbCB0cmFtcG9saW5lLgotKwotKyAgIEl0IGtpbmQgb2Ygc3Vja3MgdGhhdCB3ZSBoYXZlIHRvIHJlYWQgbWVtb3J5IGZyb20gdGhlIHByb2Nlc3MgaW4KLSsgICBvcmRlciB0byBpZGVudGlmeSBhIHNpZ25hbCB0cmFtcG9saW5lLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlCi0rICAgYW55IG90aGVyIHdheS4gIFRoZSBQQ19JTl9TSUdUUkFNUCBtYWNybyBpbiB0bS1saW51eC5oIGFycmFuZ2VzIHRvCi0rICAgb25seSBjYWxsIHVzIGlmIG5vIGZ1bmN0aW9uIG5hbWUgY291bGQgYmUgaWRlbnRpZmllZCwgd2hpY2ggc2hvdWxkCi0rICAgYmUgdGhlIGNhc2Ugc2luY2UgdGhlIGNvZGUgaXMgb24gdGhlIHN0YWNrLgotKwotKyAgIERldGVjdGlvbiBvZiBzaWduYWwgdHJhbXBvbGluZXMgZm9yIGhhbmRsZXJzIHRoYXQgc2V0IHRoZQotKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXMgaW4gZ2VuZXJhbCBub3QgcG9zc2libGUuICBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMKLSsgICB3aGF0IHRoZSBHTlUgQyBMaWJyYXJ5IGhhcyBiZWVuIGRvaW5nIGZvciBxdWl0ZSBzb21lIHRpbWUgbm93LgotKyAgIEhvd2V2ZXIsIGFzIG9mIHZlcnNpb24gMi4xLjIsIHRoZSBHTlUgQyBMaWJyYXJ5IHVzZXMgc2lnbmFsCi0rICAgdHJhbXBvbGluZXMgKG5hbWVkIF9fcmVzdG9yZSBhbmQgX19yZXN0b3JlX3J0KSB0aGF0IGFyZSBpZGVudGljYWwKLSsgICB0byB0aGUgb25lcyB1c2VkIGJ5IHRoZSBrZXJuZWwuICBUaGVyZWZvcmUsIHRoZXNlIHRyYW1wb2xpbmVzIGFyZQotKyAgIHN1cHBvcnRlZCB0b28uICAqLwotKwotKyNkZWZpbmUgTU9WVyhuKQkgKDB4OTMwMHwoKG4pLTIpKQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDK24gdG8gUjMgKi8KLSsjZGVmaW5lIFRSQVAxNgkgMHhjMzEwCQkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgT1JfUjBfUjAgMHgyMDBiCQkJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCi0rCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMAlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KLSsjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04xCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjIJT1JfUjBfUjAJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxpbnV4X3NpZ3RyYW1wX2NvZGVbXSA9Ci0rewotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjAsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMSwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBfX05SX3NpZ3JldHVybgotK307Ci0rCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9MRU4gKHNpemVvZiBsaW51eF9zaWd0cmFtcF9jb2RlKQotKwotKy8qIElmIFBDIGlzIGluIGEgc2lndHJhbXAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFydCBvZgotKyAgIHRoZSByb3V0aW5lLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK3NoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOwotKyAgZ2RiX2J5dGUgYnVmW0xJTlVYX1NJR1RSQU1QX0xFTl07Ci0rCi0rICAvKiBXZSBvbmx5IHJlY29nbml6ZSBhIHNpZ25hbCB0cmFtcG9saW5lIGlmIFBDIGlzIGF0IHRoZSBzdGFydCBvZgotKyAgICAgb25lIG9mIHRoZSB0aHJlZSBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKLSsgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKLSsgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQotKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKLSsgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCi0rCi0rICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfU0lHVFJBTVBfTEVOKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoYnVmWzBdICE9IExJTlVYX1NJR1RSQU1QX0lOU04wKQotKyAgICB7Ci0rICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICAgIHBjIC09IDI7Ci0rCi0rICAgICAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCi0rCXJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAobWVtY21wIChidWYsIGxpbnV4X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1NJR1RSQU1QX0xFTikgIT0gMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotKy8qIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgc2FtZSBmb3IgUlQgc2lnbmFscy4gIEhlcmUgdGhlIGluc3RydWN0aW9uCi0rICAgc2VxdWVuY2UgaXMKLSsgICAgICAgbW92LncgIDFmLHIzCi0rICAgICAgIHRyYXBhICAjMTYKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgIDE6IC53b3JkICBfX05SX3J0X3NpZ3JldHVybgotKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwYWQuCi0rCi0rICAgVGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBydF9zaWdyZXR1cm4uICAqLwotKwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjAJCU1PVlcoNykJCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrNyB0byBSMyAqLwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEJCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIJCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlW10gPQotK3sKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgX19OUl9ydF9zaWdyZXR1cm4KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfcnRfc2lndHJhbXBfY29kZSkKLSsKLSsvKiBJZiBQQyBpcyBpbiBhIFJUIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQKLSsgICBvZiB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKLSsgIGdkYl9ieXRlIGJ1ZltMSU5VWF9SVF9TSUdUUkFNUF9MRU5dOwotKwotKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKLSsgICAgIG9uZSBvZiB0aGUgdHdvIGluc3RydWN0aW9ucy4gIFdlIG9wdGltaXplIGZvciBmaW5kaW5nIHRoZSBQQyBhdAotKyAgICAgdGhlIHN0YXJ0LCBhcyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlIHRyYW1wb2xpbmUgaXMgbm90IHRoZQotKyAgICAgZmlyc3QgZnJhbWUgb24gdGhlIHN0YWNrLiAgV2UgYXNzdW1lIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCi0rICAgICBQQyBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgdGhlcmUgd2lsbCBiZQotKyAgICAgYSBmZXcgdHJhaWxpbmcgcmVhZGFibGUgYnl0ZXMgb24gdGhlIHN0YWNrLiAgKi8KLSsKLSsgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChidWZbMF0gIT0gTElOVVhfUlRfU0lHVFJBTVBfSU5TTjApCi0rICAgIHsKLSsgICAgICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04xKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICBwYyAtPSAyOwotKwotKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLAotKwkJCQkgICAgIExJTlVYX1JUX1NJR1RSQU1QX0xFTikpCi0rCXJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAobWVtY21wIChidWYsIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1JUX1NJR1RSQU1QX0xFTikgIT0gMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotKy8qIFJldHVybiB3aGV0aGVyIFBDIGlzIGluIGEgR05VL0xpbnV4IHNpZ3RyYW1wIHJvdXRpbmUuICAqLwotKwotK3N0YXRpYyBpbnQKLStzaF9saW51eF9zaWd0cmFtcF9wIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpOwotKyAgY2hhciAqbmFtZTsKLSsKLSsgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCBOVUxMLCBOVUxMKTsKLSsKLSsgIC8qIElmIHdlIGhhdmUgTkFNRSwgd2UgY2FuIG9wdGltaXplIHRoZSBzZWFyY2guICBUaGUgdHJhbXBvbGluZXMgYXJlCi0rICAgICBuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydC4gIEhvd2V2ZXIsIHRoZXkgYXJlbid0IGR5bmFtaWNhbGx5Ci0rICAgICBleHBvcnRlZCBmcm9tIHRoZSBzaGFyZWQgQyBsaWJyYXJ5LCBzbyB0aGUgdHJhbXBvbGluZSBtYXkgYXBwZWFyIHRvCi0rICAgICBiZSBwYXJ0IG9mIHRoZSBwcmVjZWRpbmcgZnVuY3Rpb24uICBUaGlzIHNob3VsZCBhbHdheXMgYmUgc2lnYWN0aW9uLAotKyAgICAgX19zaWdhY3Rpb24sIG9yIF9fbGliY19zaWdhY3Rpb24gKGFsbCBhbGlhc2VzIHRvIHRoZSBzYW1lIGZ1bmN0aW9uKS4gICovCi0rICBpZiAobmFtZSA9PSBOVUxMIHx8IHN0cnN0ciAobmFtZSwgInNpZ2FjdGlvbiIpICE9IE5VTEwpCi0rICAgIHJldHVybiAoc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpICE9IDAKLSsJICAgIHx8IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwKTsKLSsKLSsgIHJldHVybiAoc3RyY21wICgiX19yZXN0b3JlIiwgbmFtZSkgPT0gMAotKwkgIHx8IHN0cmNtcCAoIl9fcmVzdG9yZV9ydCIsIG5hbWUpID09IDApOwotK30KLSsKLSsvKiBPZmZzZXQgdG8gc3RydWN0IHNpZ2NvbnRleHQgaW4gdWNvbnRleHQsIGZyb20gPGFzbS91Y29udGV4dC5oPi4gICovCi0rI2RlZmluZSBTSF9MSU5VWF9VQ09OVEVYVF9TSUdDT05URVhUX09GRlNFVCAxMgotKwotKwotKy8qIEFzc3VtaW5nIE5FWFRfRlJBTUUgaXMgYSBmcmFtZSBmb2xsb3dpbmcgYSBHTlUvTGludXggc2lndHJhbXAKLSsgICByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgc2lnY29udGV4dCBzdHJ1Y3R1cmUuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9zaWdjb250ZXh0X2FkZHIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYzsKLSsgIENPUkVfQUREUiBzcDsKLSsKLSsgIHNwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOwotKwotKyAgcGMgPSBzaF9saW51eF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSk7Ci0rICBpZiAocGMpCi0rICAgIHsKLSsgICAgICByZXR1cm4gc3A7Ci0rICAgIH0KLSsKLSsgIHBjID0gc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOwotKyAgaWYgKHBjKQotKyAgICB7Ci0rICAgICAgQ09SRV9BRERSIHVjb250ZXh0X2FkZHI7Ci0rCi0rICAgICAgLyogVGhlIHNpZ2NvbnRleHQgc3RydWN0dXJlIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29udGV4dC4gIEEKLSsJIHBvaW50ZXIgdG8gdGhlIHVzZXIgY29udGV4dCBpcyBwYXNzZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50Ci0rCSB0byB0aGUgc2lnbmFsIGhhbmRsZXIuICAqLwotKyAgICAgIHVjb250ZXh0X2FkZHIgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIEFSRzBfUkVHTlVNKzIpOwotKyAgICAgIHJldHVybiB1Y29udGV4dF9hZGRyICsgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQ7Ci0rICAgIH0KLSsKLSsgIGVycm9yICgiQ291bGRuJ3QgcmVjb2duaXplIHNpZ25hbCB0cmFtcG9saW5lLiIpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFNpZ25hbCB0cmFtcG9saW5lcy4gICovCi0rZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpOwotKwotK3N0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCi0rewotKyAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9jdXJyZW50X2FyY2ggKCkpOwotKyAgQ09SRV9BRERSIHNpZ2NvbnRleHRfYWRkcjsKLSsKLSsgIGlmICgqdGhpc19jYWNoZSkKLSsgICAgcmV0dXJuICp0aGlzX2NhY2hlOwotKwotKyAgY2FjaGUgPSBzaF9hbGxvY19mcmFtZV9jYWNoZSAoKTsKLSsKLSsgIGNhY2hlLT5iYXNlID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOwotKyAgc2lnY29udGV4dF9hZGRyID0gdGRlcC0+c2lnY29udGV4dF9hZGRyICh0aGlzX2ZyYW1lKTsKLSsgIGlmICh0ZGVwLT5zY19yZWdfb2Zmc2V0KQotKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgZ2RiX2Fzc2VydCAodGRlcC0+c2NfbnVtX3JlZ3MgPD0gU0hfTlVNX1JFR1MpOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5zY19udW1fcmVnczsgaSsrKQotKwlpZiAodGRlcC0+c2NfcmVnX29mZnNldFtpXSAhPSAtMSkKLSsJICBjYWNoZS0+c2F2ZWRfcmVnc1tpXSA9IHNpZ2NvbnRleHRfYWRkciArIHRkZXAtPnNjX3JlZ19vZmZzZXRbaV07Ci0rICAgIH0KLSsKLSsgICp0aGlzX2NhY2hlID0gY2FjaGU7Ci0rICByZXR1cm4gY2FjaGU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAotKwkJCSAgICAgc3RydWN0IGZyYW1lX2lkICp0aGlzX2lkKQotK3sKLSsgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPQotKyAgICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci0rCi0rICAoKnRoaXNfaWQpID0gZnJhbWVfaWRfYnVpbGQgKGNhY2hlLT5iYXNlICsgNjQsIGNhY2hlLT5wYyk7Ci0rfQotKwotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKiBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyICgpOwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotKyAgICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKLSt7Ci0rICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci0rCi0rICByZXR1cm4gc2hfZnJhbWVfcHJldl9yZWdpc3RlciAodGhpc19mcmFtZSwgdGhpc19jYWNoZSwgcmVnbnVtKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgKnNlbGYsCi0rICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSsgICAgICAgICAgICAgICAgIHZvaWQgKip0aGlzX3Byb2xvZ3VlX2NhY2hlKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKSk7Ci0rCi0rICAvKiBXZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNpZ2NvbnRleHRfYWRkcgotKyAgICAgaGFuZGxlci4gICovCi0rICBpZiAodGRlcC0+c2lnY29udGV4dF9hZGRyID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKHRkZXAtPnNpZ3RyYW1wX3AgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICh0aGlzX2ZyYW1lKSkKLSsgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQgPQotK3sKLSsgIFNJR1RSQU1QX0ZSQU1FLAotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIsCi0rICBOVUxMLAotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfc25pZmZlcgotK307Ci0rCi0rLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4KLSsgICBpbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKLSsgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3ZvaWQKLStzaF9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpncmVncywgc2l6ZV90IGxlbikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOwotKyAgY29uc3QgY2hhciAqcmVncyA9IGdyZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3M7IGkrKykKLSsgICAgewotKyAgICAgIGlmICgocmVnbnVtID09IGkgfHwgcmVnbnVtID09IC0xKQotKyAgICAgICYmIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSAhPSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOwotKyAgICB9Ci0rfQotKwotKy8qIENvbGxlY3QgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIHJlZ2lzdGVyIGNhY2hlIFJFR0NBQ0hFIGFuZCBzdG9yZQotKyAgIGl0IGluIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQotKyAgIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VULiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvcgotKyAgIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLSt2b2lkCi0rc2hfY29sbGVjdF9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNoYXIgKnJlZ3MgPSBncmVnczsKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSwgcmVncyArIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSk7Ci0rICAgIH0KLSt9Ci0rCi0rLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEZQUkVHUyBhbmQgTEVOCi0rICAgaW4gdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKLSsgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hfc3VwcGx5X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ3MgPSBmcHJlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOwotKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSsyNSwgcmVncyArIGkqNCk7Ci0rICAgIH0KLSsgIGlmIChyZWdudW0gPT0gRlBTQ1JfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOwotKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOwotK30KLSsKLSsvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKLSsgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTiBhcyBkZXNjcmliZWQgYnkgdGhlCi0rICAgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSsgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaF9jb2xsZWN0X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNoYXIgKnJlZ3MgPSBmcHJlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOwotKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOwotKyAgICB9Ci0rICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIqNCk7Ci0rICBpZiAocmVnbnVtID09IEZQVUxfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCi0rICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLwotKwotK2NvbnN0IHN0cnVjdCByZWdzZXQgKgotK3NoX2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgc2l6ZV90IHNlY3Rfc2l6ZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsKLSsgIGlmIChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWciKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5ncmVnc2V0ID09IE5VTEwpCi0rICAgIHRkZXAtPmdyZWdzZXQgPSByZWdzZXRfYWxsb2MgKGdkYmFyY2gsIHNoX3N1cHBseV9ncmVnc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2dyZWdzZXQpOwotKyAgICAgIHJldHVybiB0ZGVwLT5ncmVnc2V0OwotKyAgICB9Ci0rCi0rICBpZiAoKHN0cmNtcCAoc2VjdF9uYW1lLCAiLnJlZzIiKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpKQotKyAgICB7Ci0rICAgICAgaWYgKHRkZXAtPmZwcmVnc2V0ID09IE5VTEwpCi0rICAgIHRkZXAtPmZwcmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZnByZWdzZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2ZwcmVnc2V0KTsKLSsgICAgICByZXR1cm4gdGRlcC0+ZnByZWdzZXQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBUaGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIEdOVS9MaW51eCBFTEYgY29yZS1kdW1wcyBhcmUgaWRlbnRpY2FsIHRvCi0rICAgdGhlIHJlZ2lzdGVyIHNldHMgaW4gYHN0cnVjdCB1c2VyJyB0aGF0IGFyZSB1c2VkIGZvciBhLm91dAotKyAgIGNvcmUtZHVtcHMuICBUaGVzZSBhcmUgYWxzbyB1c2VkIGJ5IHB0cmFjZSgyKS4gIFRoZSBjb3JyZXNwb25kaW5nCi0rICAgdHlwZXMgYXJlIGBlbGZfZ3JlZ3NldF90JyBmb3IgdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgKHdpdGgKLSsgICBgZWxmX2dyZWdfdCcgdGhlIHR5cGUgb2YgYSBzaW5nbGUgR1AgcmVnaXN0ZXIpIGFuZCBgZWxmX2ZwcmVnc2V0X3QnCi0rICAgZm9yIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCi0rCi0rICAgVGhvc2UgdHlwZXMgdXNlZCB0byBiZSBhdmFpbGFibGUgdW5kZXIgdGhlIG5hbWVzIGBncmVnc2V0X3QnIGFuZAotKyAgIGBmcHJlZ3NldF90JyB0b28sIGFuZCBHREIgdXNlZCB0aG9zZSBuYW1lcyBpbiB0aGUgcGFzdC4gIEJ1dCB0aG9zZQotKyAgIG5hbWVzIGFyZSBub3cgdXNlZCBmb3IgdGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiB0aGUgYG1jb250ZXh0X3QnCi0rICAgdHlwZSwgd2hpY2ggaGF2ZSBhIGRpZmZlcmVudCBzaXplIGFuZCBsYXlvdXQuICAqLwotKwotKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0IHVzZXInCi0rICAgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLwotKwotKy8qIEZyb20gPHN5cy9yZWcuaD4uICAqLwotK3N0YXRpYyBpbnQgc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0W10gPQotK3sKLSsgMCwJNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAotKyAzMiwJMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCi0rCi0rIFJFR19QQyo0LCAgIFJFR19QUio0LCAgIFJFR19HQlIqNCwgIC0xLAotKyBSRUdfTUFDSCo0LCBSRUdfTUFDTCo0LCBSRUdfU1IqNCwKLSt9OwotKwotKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0Ci0rICAgc2lnY29udGV4dCcgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLwotKwotKy8qIEZyb20gPGFzbS9zaWdjb250ZXh0Lmg+LiAgKi8KLStzdGF0aWMgaW50IHNoX2xpbnV4X3NjX3JlZ19vZmZzZXRbXSA9Ci0rewotKyA0LAk4LAkxMiwJMTYsCTIwLAkyNCwJMjgsCTMyLAotKyAzNiwJNDAsCTQ0LAk0OCwJNTIsCTU2LAk2MCwJNjQsCi0rIDY4LAk3MiwJODAsCS0xLAotKyA4NCwJODgsCTc2Ci0rfTsKLSsKLSBzdGF0aWMgdm9pZAotIHNoX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgYmZkIGFiZmQ7Ci0rCi0rICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQ7Ci0rICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0KTsKLSsgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMjMgKiA0OwotKwotKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gMzI7ICAgICAvKiBGcm9tIDxiaXRzL3NldGptcC5oPi4gICovCi0rCi0rICB0ZGVwLT5zaWd0cmFtcF9wID0gc2hfbGludXhfc2lndHJhbXBfcDsKLSsgIHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9IHNoX2xpbnV4X3NpZ2NvbnRleHRfYWRkcjsKLSsgIHRkZXAtPnNjX3JlZ19vZmZzZXQgPSBzaF9saW51eF9zY19yZWdfb2Zmc2V0OwotKyAgdGRlcC0+c2NfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChzaF9saW51eF9zY19yZWdfb2Zmc2V0KTsKLSsKLSsgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIoZ2RiYXJjaCwgJnNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIGEgcmVnaXN0ZXIgbWFwcGluZywgZW5hYmxlIHRoZSBnZW5lcmljIGNvcmUgZmlsZQotKyAgICAgc3VwcG9ydCwgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4gICovCi0rICBpZiAodGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0Ci0rICAgICAgJiYgIWdkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uX3AgKGdkYmFyY2gpKQotKyAgICBzZXRfZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOwotKwotICAgbGludXhfaW5pdF9hYmkgKGluZm8sIGdkYmFyY2gpOwotIAotICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5jIGIvZ2RiL3NoLXRkZXAuYwotaW5kZXggZmU2NGNmOTc5YS4uNDQxNzExNGNkMCAxMDA2NDQKLS0tLSBhL2dkYi9zaC10ZGVwLmMKLSsrKyBiL2dkYi9zaC10ZGVwLmMKLUBAIC0yMSw2ICsyMSw5IEBACi0gICAgc2FjQGN5Z251cy5jb20uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJkdW1teS1mcmFtZS5oIgotICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCi0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotQEAgLTY2LDIzICs2OSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKnNoX2FjdGl2ZV9jYWxsaW5nX2NvbnZlbnRpb24gPSBzaF9jY19nY2M7Ci0gCi0tI2RlZmluZSBTSF9OVU1fUkVHUyA2NwotLQotLXN0cnVjdCBzaF9mcmFtZV9jYWNoZQotLXsKLS0gIC8qIEJhc2UgYWRkcmVzcy4gICovCi0tICBDT1JFX0FERFIgYmFzZTsKLS0gIExPTkdFU1Qgc3Bfb2Zmc2V0OwotLSAgQ09SRV9BRERSIHBjOwotLQotLSAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAgKi8KLS0gIGludCB1c2VzX2ZwOwotLQotLSAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KLS0gIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKLS0gIENPUkVfQUREUiBzYXZlZF9zcDsKLS19OwotLQotIHN0YXRpYyBpbnQKLSBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKLSB7Ci1AQCAtMTA1MCw3ICsxMDM2LDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICByZXR1cm4gMDsKLSAgIC8qIE90aGVyd2lzZSBpZiB0aGUgdHlwZSBvZiB0aGF0IG1lbWJlciBpcyBmbG9hdCwgdGhlIHdob2xlIHR5cGUgaXMKLSAgICAgIHRyZWF0ZWQgYXMgZmxvYXQuICAqLwotLSAgaWYgKFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkgPT0gVFlQRV9DT0RFX0ZMVCkKLSsgIGlmIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpKSA9PSBUWVBFX0NPREVfRkxUKQotICAgICByZXR1cm4gMTsKLSAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KLSAgIHJldHVybiAwOwotQEAgLTExMDAsNyArMTA4Niw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KLSAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQotICAgICB7Ci0tICAgICAgdHlwZSA9IHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSk7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSkpOwotICAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgICAgICB2YWwgPSBzaF9qdXN0aWZ5X3ZhbHVlX2luX3JlZyAoZ2RiYXJjaCwgYXJnc1thcmdudW1dLCBsZW4pOwotIAotQEAgLTE4MzQsNyArMTgyMCw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCi0gICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCi0gewotICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODYxLDcgKzE4NDcsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKLSAgIHJldHVybiBjYWNoZTsKLSB9Ci0gCi0tc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLSBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MjgsOSArMTkxNCw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCi0gICByZXR1cm4gY2FjaGU7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotLQkJCXZvaWQgKip0aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQotK3N0cnVjdCB2YWx1ZSAqCi0rc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAotKwkJCWludCByZWdudW0pCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7Ci0gICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0gc2hfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotQEAgLTE5NDQsNyArMTkzMCw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBGcm9iIHJlZ251bSBzbyB0aGF0IHdlIHB1bGwgdGhlIHZhbHVlIGZyb20KLSAgICAgIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8KLSAgIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKQotLSAgICByZWdudW0gPSBQUl9SRUdOVU07Ci0rICAgIHJlZ251bSA9IFBSX1JFR05VTTsgLyogWFhYOiByZWFsbHk/ICovCi0gCi0gICBpZiAocmVnbnVtIDwgU0hfTlVNX1JFR1MgJiYgY2FjaGUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAhPSAtMSkKLSAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5ICh0aGlzX2ZyYW1lLCByZWdudW0sCi1AQCAtMjI1NSw4ICsyMjQxLDggQEAgc2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgotIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gewotLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gCi0gICAvKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLCB1c2UgaXQuICAqLwotICAgYXJjaGVzID0gZ2RiYXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMsICZpbmZvKTsKLUBAIC0yMjY4LDYgKzIyNTQsMTggQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgIHRkZXAgPSBYQ05FVyAoc3RydWN0IGdkYmFyY2hfdGRlcCk7Ci0gICBnZGJhcmNoID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIHRkZXApOwotIAotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICB0ZGVwLT5ncmVnc2V0ID0gTlVMTDsKLSsgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IE5VTEw7Ci0rICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gMjM7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDA7Ci0rCi0rICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotKyAgdGRlcC0+ZnByZWdzZXQgPSBOVUxMOwotKyAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0gMzQqNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IC0xOwotKwotICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKLSAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MjIsMTAgKzI0MjAsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOwotKwotICAgLyogSG9vayBpbiBBQkktc3BlY2lmaWMgb3ZlcnJpZGVzLCBpZiB0aGV5IGhhdmUgYmVlbiByZWdpc3RlcmVkLiAgKi8KLSAgIGdkYmFyY2hfaW5pdF9vc2FiaSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0tICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7Ci0gICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfc3R1Yl91bndpbmQpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IDU5YWNkMzViODguLmJlM2Y5OThkODQgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5oCi0rKysgYi9nZGIvc2gtdGRlcC5oCi1AQCAtMjEsNiArMjEsMTIgQEAKLSAKLSAvKiBDb250cmlidXRlZCBieSBTdGV2ZSBDaGFtYmVybGFpbiBzYWNAY3lnbnVzLmNvbS4gICovCi0gCi0rc3RydWN0IGZyYW1lX2luZm87Ci0rc3RydWN0IGdkYmFyY2g7Ci0rc3RydWN0IHJlZ2dyb3VwOwotK3N0cnVjdCByZWdzZXQ7Ci0rc3RydWN0IHJlZ2NhY2hlOwotKwotIC8qIFJlZ2lzdGVycyBmb3IgYWxsIFNIIHZhcmlhbnRzLiAgVXNlZCBhbHNvIGJ5IHNoMy1yb20uYy4gICovCi0gZW51bQotICAgewotQEAgLTI5LDYgKzM1LDcgQEAgZW51bQotICAgICBBUkcwX1JFR05VTSA9IDQsCi0gICAgIEFSR0xBU1RfUkVHTlVNID0gNywKLSAgICAgRlBfUkVHTlVNID0gMTQsCi0rICAgIFNQX1JFR05VTSA9IDE1LAotICAgICBQQ19SRUdOVU0gPSAxNiwKLSAgICAgUFJfUkVHTlVNID0gMTcsCi0gICAgIEdCUl9SRUdOVU0gPSAxOCwKLUBAIC04MSw2ICs4OCwyNCBAQCBlbnVtCi0gICAgIEZWMF9SRUdOVU0gPSA3NiwKLSAgICAgRlZfTEFTVF9SRUdOVU0gPSA3OQotICAgfTsKLSsjZGVmaW5lIFNIX05VTV9SRUdTIDY3Ci0rCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlCi0rewotKyAgLyogQmFzZSBhZGRyZXNzLiAgKi8KLSsgIENPUkVfQUREUiBiYXNlOwotKyAgTE9OR0VTVCBzcF9vZmZzZXQ7Ci0rICBDT1JFX0FERFIgcGM7Ci0rCi0rICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICovCi0rICBpbnQgdXNlc19mcDsKLSsKLSsgIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCi0rICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107Ci0rICBDT1JFX0FERFIgc2F2ZWRfc3A7Ci0rfTsKLSsKLStleHRlcm4gc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKTsKLSAKLSAvKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgYSByZWdpc3RlciBpbiBhIGNvcmUtZmlsZS4gICovCi0gc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAotQEAgLTg5LDggKzExNCwzMiBAQCBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCi0gICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotIH07Ci0gCi0rLyogc2ggYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGluZm9ybWF0aW9uLiAgKi8KLSBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gewotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpncmVnc2V0OwotKyAgaW50ICpncmVnc2V0X3JlZ19vZmZzZXQ7Ci0rICBpbnQgZ3JlZ3NldF9udW1fcmVnczsKLSsgIHNpemVfdCBzaXplb2ZfZ3JlZ3NldDsKLSsKLSsgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpmcHJlZ3NldDsKLSsgIHNpemVfdCBzaXplb2ZfZnByZWdzZXQ7Ci0rCi0rICAvKiBPZmZzZXQgb2Ygc2F2ZWQgUEMgaW4gam1wX2J1Zi4gICovCi0rICBpbnQgamJfcGNfb2Zmc2V0OwotKwotKyAgLyogRGV0ZWN0IHNpZ3RyYW1wLiAgKi8KLSsgIGludCAoKnNpZ3RyYW1wX3ApIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSsKLSsgIC8qIEdldCBhZGRyZXNzIG9mIHNpZ2NvbnRleHQgZm9yIHNpZ3RyYW1wLiAgKi8KLSsgIENPUkVfQUREUiAoKnNpZ2NvbnRleHRfYWRkcikgKHN0cnVjdCBmcmFtZV9pbmZvICopOwotKwotKyAgLyogT2Zmc2V0IG9mIHJlZ2lzdGVycyBpbiBgc3RydWN0IHNpZ2NvbnRleHQnLiAgKi8KLSsgIGludCAqc2NfcmVnX29mZnNldDsKLSsgIGludCBzY19udW1fcmVnczsKLSsKLSAgIC8qIE5vbi1OVUxMIHdoZW4gZGVidWdnaW5nIGZyb20gYSBjb3JlIGZpbGUuICBQcm92aWRlcyB0aGUgb2Zmc2V0Ci0gICAgICB3aGVyZSBlYWNoIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBpcyBzdG9yZWQgaW5zaWRlIHRoZSBhc3NvY2lhdGVkCi0gICAgICBjb3JlIGZpbGUgc2VjdGlvbi4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1pbmRleCA5ODc5ZjBjYTQ3Li5jYmMwZTRkNWY3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLUBAIC0xMTYsNiArMTE2LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAgICAgICAgICAgICBhcHBlbmQgbGluay1mbGFncyAiIC1tIGVsZjMycHBjIgotICAgICAgICAgfQotICAgICB9Ci0rICAgICJzaCotbGludXgqIiB7Ci0rICAgICAgICBzZXQgYXNtLWFyY2ggc2gtbGludXgKLSsgICAgICAgIHNldCBhc20tZmxhZ3MgIi1JJHtzcmNkaXJ9LyR7c3ViZGlyfSAtSSR7b2JqZGlyfS8ke3N1YmRpcn0iCi0rCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgotKyAgICB9Ci0gICAgICJzaCotKi0qIiB7Ci0gICAgICAgICBzZXQgYXNtLWFyY2ggc2gKLSAJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKLWluZGV4IGE0YTVmYzU0NWUuLjg5ZWZlZDc3OTUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi1AQCAtNDAsOSArNDAsOCBAQAotIAltb3YubCAgIC5MY29uc3RcQCxyMQotIAlicmEJLkxhZnRlcmNvbnN0XEAKLSAJbm9wCi0tCW5vcAotLS5MY29uc3RcQDoKLSAJLmFsaWduCTIKLSsuTGNvbnN0XEA6Ci0gCS5sb25nCVxzdWJyCi0gCS5hbGlnbgkxCi0gLkxhZnRlcmNvbnN0XEA6Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotaW5kZXggNDI0ZTFiODMyNy4uMGRlMmU3YjYzMyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gdm9pZAotIGhhbmRsZV9VU1IxIChpbnQgc2lnKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLWluZGV4IDQyNGUxYjgzMjcuLjk1MmFhZjIxOGEgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLUBAIC0xLDYgKzEsMTAgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gCi0rI2lmZGVmIF9fc2hfXwotKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KLSsjZW5kaWYKLSsKLSAKLSB2b2lkCi0gaGFuZGxlX1VTUjEgKGludCBzaWcpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKLWluZGV4IDgxZjNiMDhkNmIuLjE1NzRiMmQ2Y2IgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi1AQCAtMSw2ICsxLDkgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gLyogU2lnbmFsIGhhbmRsZXJzLCB3ZSBzZXQgYnJlYWtwb2ludHMgaW4gdGhlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKLSAgICBzaWduYWxzIHJlYWxseSBnZXQgZGVsaXZlcmVkLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1pbmRleCA3NTY2MDY4ODBmLi4xMjA1YTliYzljIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1AQCAtMyw2ICszLDEwIEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNkZWZpbmUgYWxhcm0oYSkgICAgICAgLyogRGl0dG8gZm9yIGFsYXJtKCkgKi8KLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGNvdW50ID0gMDsKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzNjBkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZDEzMmYyMWQ4OTE1N2U5ODA1NzRkYTdkMGM5NDlmNmRkMTdkZjhjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI1OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbnQgZGlzYWJsZSBsaWJyZWFkbGluZS5hIHdoZW4gdXNpbmcgLS1kaXNhYmxlLXN0YXRpYworCitJZiBnZGIgaXMgY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zdGF0aWMgdGhlbiB0aGlzIGlzIGR1dGlmdWxseSBwYXNzZWQgdG8KK3JlYWRsaW5lIHdoaWNoIHRoZW4gZGlzYWJsZXMgbGlicmVhZGxpbmUuYSwgd2hpY2ggY2F1c2VzIGEgcHJvYmxlbSB3aGVuIGdkYgordHJpZXMgdG8gbGluayBhZ2FpbnN0IHRoYXQuCisKK1RvIGVuc3VyZSB0aGF0IHJlYWRsaW5lIGFsd2F5cyBidWlsZHMgc3RhdGljIGxpYnJhcmllcywgcGFzcyAtLWVuYWJsZS1zdGF0aWMgdG8KK3RoZSBzdWItY29uZmlndXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuZGVmIHwgMyArKy0KKyBNYWtlZmlsZS5pbiAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5kZWYgYi9NYWtlZmlsZS5kZWYKK2luZGV4IDMxMWZlYjlkZTMuLjI0YzA2ODVkNDggMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5kZWYKKysrKyBiL01ha2VmaWxlLmRlZgorQEAgLTEwNSw3ICsxMDUsOCBAQCBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBsaWJpY29udjsKKyAJCW1pc3Npbmc9IGluc3RhbGwtaHRtbDsKKyAJCW1pc3Npbmc9IGluc3RhbGwtaW5mbzsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBtNDsgfTsKKy1ob3N0X21vZHVsZXM9IHsgbW9kdWxlPSByZWFkbGluZTsgfTsKKytob3N0X21vZHVsZXM9IHsgbW9kdWxlPSByZWFkbGluZTsKKysgICAgICAgICAgICAgICAgZXh0cmFfY29uZmlndXJlX2ZsYWdzPSctLWVuYWJsZS1zdGF0aWMnO307CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2lkOyB9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpbTsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSB0ZXhpbmZvOyBub19pbnN0YWxsPSB0cnVlOyB9OworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDFhYWJmNmVkZTQuLmQ5NTdlZmRlODEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0yNTUxMCw3ICsyNTUxMCw3IEBAIGNvbmZpZ3VyZS1yZWFkbGluZToKKyAJICAkJHMvJCRtb2R1bGVfc3JjZGlyL2NvbmZpZ3VyZSBcCisgCSAgLS1zcmNkaXI9JCR7dG9wZGlyfS8kJG1vZHVsZV9zcmNkaXIgXAorIAkgICQoSE9TVF9DT05GSUdBUkdTKSAtLWJ1aWxkPSR7YnVpbGRfYWxpYXN9IC0taG9zdD0ke2hvc3RfYWxpYXN9IFwKKy0JICAtLXRhcmdldD0ke3RhcmdldF9hbGlhc30gIFwKKysJICAtLXRhcmdldD0ke3RhcmdldF9hbGlhc30gLS1lbmFibGUtc3RhdGljIFwKKyAJICB8fCBleGl0IDEKKyBAZW5kaWYgcmVhZGxpbmUKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZTNlZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDVmZGQ0MmFjYWE5NjViZTdjNDIwYTNmMmJhMTJiNzdlYTUwM2M1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA2LzExXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKLQotSWYgZ2RiIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc3RhdGljIHRoZW4gdGhpcyBpcyBkdXRpZnVsbHkgcGFzc2VkIHRvCi1yZWFkbGluZSB3aGljaCB0aGVuIGRpc2FibGVzIGxpYnJlYWRsaW5lLmEsIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gd2hlbiBnZGIKLXRyaWVzIHRvIGxpbmsgYWdhaW5zdCB0aGF0LgotCi1UbyBlbnN1cmUgdGhhdCByZWFkbGluZSBhbHdheXMgYnVpbGRzIHN0YXRpYyBsaWJyYXJpZXMsIHBhc3MgLS1lbmFibGUtc3RhdGljIHRvCi10aGUgc3ViLWNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmRlZiB8IDMgKystCi0gTWFrZWZpbGUuaW4gIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCA3NTA2M2I2ZDEyLi5jMjdiYmU0ZDI4IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuZGVmCi0rKysgYi9NYWtlZmlsZS5kZWYKLUBAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07Ci0taG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7IH07Ci0raG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7Ci0rICAgICAgICAgICAgICAgIGV4dHJhX2NvbmZpZ3VyZV9mbGFncz0nLS1lbmFibGUtc3RhdGljJzt9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpZDsgfTsKLSBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3ODE0ZmU3NDVmLi4zYjBkYzdjYmIwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMjU0NzAsNyArMjU0NzAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6Ci0gCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAotIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKLSAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCi0tCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9ICBcCi0rCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9IC0tZW5hYmxlLXN0YXRpYyBcCi0gCSAgfHwgZXhpdCAxCi0gQGVuZGlmIHJlYWRsaW5lCi0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyMmQwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDMyOWU1YmYyOWU5MzRiYTk5NjIyMzcyYTk2NjA4NjU4NjRiYjAyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSA8YXNtL3NnaWRlZnMuaD4KKworQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCisKK1RoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBwcm92aWRlZCBieSBnbGliYyBhbmQgdWNsaWJjCitidXQgbm90IGJ5IG11c2wuIFJlZ2FyZGxlc3Mgb2YgdGhlIGxpYmMsIHRoZSBrZXJuZWwgaGVhZGVycyBwcm92aWRlCis8YXNtL3NnaWRlZnMuaD4gd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZGVmaW5pdGlvbnMsIHNvIHVzZSB0aGF0CitpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK2luZGV4IDdmNTc1YjMzNjMuLmRjOTNhNjRhOTMgMTAwNjQ0CistLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYworKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKKyAjaW5jbHVkZSAiZ3JlZ3NldC5oIgorIAorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CisrI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+CisgI2luY2x1ZGUgIm5hdC9nZGJfcHRyYWNlLmgiCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ODk2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA3ODJiYjJhYjliMTA0ZGFkNGJiYWVkMWQ5YWM3NjljZTdlNWI5ZjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzE6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGV4b3J0ZWQgZGVmaW5pdGlvbnMgb2YgU0lHUlRNSU4KKworRGVmaW5lIFdfU1RPUENPREUgaWYgbm90IGRlZmluZWQgYWxyZWFkeQorCitfX1NJR1JUTUlOIGlzIGludGVybmFsIHRvIGdsaWJjIGFuZCBvdGhlciBsaWJjcyBlLmcuIG11c2wKK21heSBub3QgcHJvdmlkZSB0aGVtCisKK0ZpeGVzCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMzAxMgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2xpbnV4LW5hdC5jICAgICB8IDQgKystLQorIGdkYi9uYXQvbGludXgtbmF0LmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXggNDQ4NGZhNWM4Ny4uM2JiMGVlN2E0OSAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2RiL2xpbnV4LW5hdC5jCitAQCAtNDU4OCw2ICs0NTg4LDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCisgICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55CisgICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQorICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4pOworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4gKyAxKTsKKysgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTik7CisrICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKK2luZGV4IDQ0ZGNiYjc3NTguLjk3NWQ3Mjc2ZjYgMTAwNjQ0CistLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCitAQCAtOTEsNCArOTEsOCBAQCBleHRlcm4gdm9pZCBsaW51eF9zdG9wX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsd3ApOworIAorIGV4dGVybiBpbnQgbHdwX2lzX3N0ZXBwaW5nIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CisgCisrI2lmbmRlZiBXX1NUT1BDT0RFCisrI2RlZmluZSBXX1NUT1BDT0RFKHNpZykgKChzaWcpIDw8IDggfCAweDdmKQorKyNlbmRpZgorKworICNlbmRpZiAvKiBOQVRfTElOVVhfTkFUX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4ZjRiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGQ2ZTEyZDUyZjljZWY3ZjVlNjMxNTAwM2NlYWEyMzZmNmNjNzcyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTFdIHVzZSA8YXNtL3NnaWRlZnMuaD4KLQotQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCi0KLVRoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBwcm92aWRlZCBieSBnbGliYyBhbmQgdWNsaWJjCi1idXQgbm90IGJ5IG11c2wuIFJlZ2FyZGxlc3Mgb2YgdGhlIGxpYmMsIHRoZSBrZXJuZWwgaGVhZGVycyBwcm92aWRlCi08YXNtL3NnaWRlZnMuaD4gd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZGVmaW5pdGlvbnMsIHNvIHVzZSB0aGF0Ci1pbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDY4YTc1ODdhZjIuLjJiNzcyMjEzNzIgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYwotKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLUBAIC0zMSw3ICszMSw3IEBACi0gI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKLSAjaW5jbHVkZSAiZ3JlZ3NldC5oIgotIAotLSNpbmNsdWRlIDxzZ2lkZWZzLmg+Ci0rI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+Ci0gI2luY2x1ZGUgIm5hdC9nZGJfcHRyYWNlLmgiCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODE2OGM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA0MGM5YzE3NDU5MGNlNmZkYzg3M2I0NTMyODUyNDlmZTk1N2YzNzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzU6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIG9yZGVyIG9mIENGTEFHUworCitMZXRzIHVzIG92ZXJyaWRlIFdlcnJvciBpZiBuZWVkIGJlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCitpbmRleCAxNmE5ZjJmZDM4Li5iOWM4Y2Q5YzQxIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgorQEAgLTE0Niw3ICsxNDYsNyBAQCBQVEhSRUFEX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAorIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCisgCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9ICQoUFRIUkVBRF9DRkxBR1MpCisgSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQorLUlOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKKytJTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgorIAorICMgTERGTEFHUyBpcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHNldHRpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lCisgIyB3aGVuIHJ1bm5pbmcgbWFrZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTViZWM1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIGJhYjBiMzQ2NzI3MjdjNTAzMTNlYjk4Yjg1MjIzNTVjYmUxYmRlMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozMTo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgotCi1EZWZpbmUgV19TVE9QQ09ERSBpZiBub3QgZGVmaW5lZCBhbHJlYWR5Ci0KLV9fU0lHUlRNSU4gaXMgaW50ZXJuYWwgdG8gZ2xpYmMgYW5kIG90aGVyIGxpYmNzIGUuZy4gbXVzbAotbWF5IG5vdCBwcm92aWRlIHRoZW0KLQotRml4ZXMKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzMDEyCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIGdkYi9saW51eC1uYXQuYyAgICAgfCA0ICsrLS0KLSBnZGIvbmF0L2xpbnV4LW5hdC5oIHwgNCArKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDA2M2FmZTI2Li5mYjFkMmQ1ZCAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtNDcxMyw2ICs0NzEzLDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCi0gICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55Ci0gICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQotICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLwotLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4pOwotLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4gKyAxKTsKLSsgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTik7Ci0rICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKLWluZGV4IDFlMzJkZDllLi5iODg2MzA1ZCAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvbGludXgtbmF0LmgKLSsrKyBiL2dkYi9uYXQvbGludXgtbmF0LmgKLUBAIC05MCw0ICs5MCw4IEBAIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7Ci0gCi0gZXh0ZXJuIGludCBsd3BfaXNfc3RlcHBpbmcgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKLSAKLSsjaWZuZGVmIFdfU1RPUENPREUKLSsjZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qIE5BVF9MSU5VWF9OQVRfSCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0YmMyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYmE2ZmZhNDYxZmU3ODFkNDRkNmRjYmMwZmJkNTY5MjM3YjQ1MGZkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKLQotTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotaW5kZXggZjJmOGEwODRiZC4uOTUyOGRiMTM2NCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0xNDMsNyArMTQzLDcgQEAgQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi0gSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAke0NYWEZMQUdTfSAke0dMT0JBTF9DRkxBR1N9IFwKLSAJJHtQUk9GSUxFX0NGTEFHU30gJHtJTkNMVURFX0NGTEFHU30gJHtDUFBGTEFHU30KLSBJTlRFUk5BTF9XQVJOX0NGTEFHUyA9ICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCi0tSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAtREdEQlNFUlZFUgotK0lOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgJHtDT01QSUxFUl9DRkxBR1N9IC1ER0RCU0VSVkVSCi0gCi0gIyBMREZMQUdTIGlzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3Igc2V0dGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKLSAjIHdoZW4gcnVubmluZyBtYWtlLgotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNWM0OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1YjY5YTk4ZjZiYjczNjNhMWY3OWYyOWJhYzJiMjViN2RmNmQyZmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CisKK0dDQyBkZXRlY3RzIHRoYXQgd2UgY2FsbCAncmVzdHJpY3QnIGFzIHBhcmFtIG5hbWUgaW4gZnVuY3Rpb24KK3NpZ25hdHVyZXMgYW5kIGNvbXBsYWlucyBzaW5jZSBib3RoIHBhcmFtcyBhcmUgY2FsbGVkICdyZXN0cmljdCcKK3RoZXJlZm9yZSB3ZSB1c2UgX19yZXN0cmljdCB0byBkZW5vdGUgdGhlIEM5OSBrZXl3b3JrCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKK2luZGV4IGQ1MzVhNmE0OGIuLjdjMzRkNWExYWEgMTAwNjQ0CistLS0gYS9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKKysrKyBiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAorQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbAorICMgICBkZWZpbmUgZ2V0dGltZW9mZGF5IHJwbF9nZXR0aW1lb2ZkYXkKKyAjICBlbmRpZgorIF9HTF9GVU5DREVDTF9SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQorKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKKyAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOworIF9HTF9DWFhBTElBU19SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7CisgIyBlbHNlCisgIyAgaWYgIUBIQVZFX0dFVFRJTUVPRkRBWUAKKyBfR0xfRlVOQ0RFQ0xfU1lTIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKKysgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCisgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKKyAjICBlbmRpZgorIC8qIE5lZWQgdG8gY2FzdCwgYmVjYXVzZSBvbiBnbGliYyBzeXN0ZW1zLCBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKi4gICovCisgX0dMX0NYWEFMSUFTX1NZU19DQVNUIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKKyAjIGVuZGlmCisgX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKKyAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDljMDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGJjMWYwMWZmNWU1MjRmNzc3NzA4MzAyNGJjZTM0OGE5YjAwMTdhN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZb3Vzb25nIFpob3UgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTA6MzY6MDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGUgUE9TSVggZG9jdW1lbnQgc2F5cworCisgICAgVGhlIHB0aHJlYWRfc2lnbWFzaygpIGFuZCBzaWdwcm9jbWFzaygpIGZ1bmN0aW9ucyBzaGFsbCBmYWlsIGlmOgorCisgICAgW0VJTlZBTF0KKyAgICBUaGUgdmFsdWUgb2YgdGhlIGhvdyBhcmd1bWVudCBpcyBub3QgZXF1YWwgdG8gb25lIG9mIHRoZSBkZWZpbmVkIHZhbHVlcy4KKworYW5kIHRoaXMgaXMgaG93IG11c2wtbGliYyBpcyBjdXJyZW50bHkgZG9pbmcuICBGaXggdGhlIGNhbGwgdG8gYmUgc2FmZQorYW5kIGNvcnJlY3QKKworIFsxXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcHRocmVhZF9zaWdtYXNrLmh0bWwKKworZ2RiL0NoYW5nZUxvZzoKKzIwMTctMDMtMjQgIFlvdXNvbmcgWmhvdSAgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KKworICAgICogY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgKHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSk6CisgICAgRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtub3QgYXV0aG9yLCBjaGVycnktcGlja2VkIGZyb20gTEVERSBodHRwczovL2J1Z3MubGVkZS1wcm9qZWN0Lm9yZy9pbmRleC5waHA/ZG89ZGV0YWlscyZ0YXNrX2lkPTYzNyZvcGVuZWRmcm9tPS0xJTJCd2Vla10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyBiL2dkYi9nZGJzdXBwb3J0L3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKK2luZGV4IGMyOTJkNDk4ZGEuLmFmOWRjYWViMDggMTAwNjQ0CistLS0gYS9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCisrKysgYi9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCitAQCAtMzgsNyArMzgsNyBAQCBzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUgKGJvb2wgcXVpZXQpCisgICBpbnQgaTsKKyAgIGludCByZXM7CisgCistICByZXMgPSBnZGJfc2lnbWFzayAoMCwgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7CisrICByZXMgPSBnZGJfc2lnbWFzayAoU0lHX0JMT0NLLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKKyAgIGlmIChyZXMgPT0gLTEpCisgICAgIHBlcnJvcl93aXRoX25hbWUgKCgic2lncHJvY21hc2siKSk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5ZDUyZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAxOWI1ODEwNTZjMTcwOWY3ZDI4NzJjZDc2Yjk3NzU0MmEwZmU2MTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMV0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0Ci0KLUdDQyBkZXRlY3RzIHRoYXQgd2UgY2FsbCAncmVzdHJpY3QnIGFzIHBhcmFtIG5hbWUgaW4gZnVuY3Rpb24KLXNpZ25hdHVyZXMgYW5kIGNvbXBsYWlucyBzaW5jZSBib3RoIHBhcmFtcyBhcmUgY2FsbGVkICdyZXN0cmljdCcKLXRoZXJlZm9yZSB3ZSB1c2UgX19yZXN0cmljdCB0byBkZW5vdGUgdGhlIEM5OSBrZXl3b3JrCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKLWluZGV4IGI0YTBlNDljNTAuLmQyMmNlYTlhYWYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi0rKysgYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1AQCAtOTMsMjAgKzkzLDIwIEBAIHN0cnVjdCB0aW1ldmFsCi0gIyAgIGRlZmluZSBnZXR0aW1lb2ZkYXkgcnBsX2dldHRpbWVvZmRheQotICMgIGVuZGlmCi0gX0dMX0ZVTkNERUNMX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCi0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQotICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0gX0dMX0NYWEFMSUFTX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKLSAjIGVsc2UKLSAjICBpZiAhQEhBVkVfR0VUVElNRU9GREFZQAotIF9HTF9GVU5DREVDTF9TWVMgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKLSAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotICMgIGVuZGlmCi0gLyogTmVlZCB0byBjYXN0LCBiZWNhdXNlIG9uIGdsaWJjIHN5c3RlbXMsIGJ5IGRlZmF1bHQsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lem9uZSAqLiAgKi8KLSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwotICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZTAyNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGIxOTg1NTk1ZTQ2NzIxYmIxNjhhYzM4ZjRjODQxYTkxNWNjMmY3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZb3Vzb25nIFpob3UgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTA6MzY6MDMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xMV0gRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgUE9TSVggZG9jdW1lbnQgc2F5cwotCi0gICAgVGhlIHB0aHJlYWRfc2lnbWFzaygpIGFuZCBzaWdwcm9jbWFzaygpIGZ1bmN0aW9ucyBzaGFsbCBmYWlsIGlmOgotCi0gICAgW0VJTlZBTF0KLSAgICBUaGUgdmFsdWUgb2YgdGhlIGhvdyBhcmd1bWVudCBpcyBub3QgZXF1YWwgdG8gb25lIG9mIHRoZSBkZWZpbmVkIHZhbHVlcy4KLQotYW5kIHRoaXMgaXMgaG93IG11c2wtbGliYyBpcyBjdXJyZW50bHkgZG9pbmcuICBGaXggdGhlIGNhbGwgdG8gYmUgc2FmZQotYW5kIGNvcnJlY3QKLQotIFsxXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcHRocmVhZF9zaWdtYXNrLmh0bWwKLQotZ2RiL0NoYW5nZUxvZzoKLTIwMTctMDMtMjQgIFlvdXNvbmcgWmhvdSAgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KLQotICAgICogY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgKHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSk6Ci0gICAgRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtub3QgYXV0aG9yLCBjaGVycnktcGlja2VkIGZyb20gTEVERSBodHRwczovL2J1Z3MubGVkZS1wcm9qZWN0Lm9yZy9pbmRleC5waHA/ZG89ZGV0YWlscyZ0YXNrX2lkPTYzNyZvcGVuZWRmcm9tPS0xJTJCd2Vla10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLWluZGV4IDViYjY2MzIxYmIuLjY1OTdkZWNiYzYgMTAwNjQ0Ci0tLS0gYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLSsrKyBiL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYwotQEAgLTQxLDcgKzQxLDcgQEAgc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlIChib29sIHF1aWV0KQotICAgaW50IGk7Ci0gICBpbnQgcmVzOwotIAotLSAgcmVzID0gc2lncHJvY21hc2sgKDAsICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOwotKyAgcmVzID0gc2lncHJvY21hc2sgKFNJR19CTE9DSywgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7Ci0gICBpZiAocmVzID09IC0xKQotICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoInNpZ3Byb2NtYXNrIikpOwotIAotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWRkOTRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAzZDY3MDBkMzgxNTNhMGVjOGUwODAwZGU3MDNhNTA4OWE4Y2QzZDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgTm92IDIwMTggMTg6MDA6MjMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2Ric2VydmVyIGN0cmwtYyBoYW5kbGluZworCitUaGlzIHByb2JsZW0gd2FzIGNyZWF0ZWQgYnkgdGhlIHVwc3RyZWFtIGNvbW1pdCA3ODcwOGI3YzhjCitBZnRlciBhcHBseWluZyB0aGUgY29tbWl0LCBpdCB3aWxsIHNlbmQgU0lHSU5UIHRvIHRoZSBwcm9jZXNzCitncm91cCgtc2lnbmFsX3BpZCkuCitCdXQgaWYgd2UgdXNlIGdkYnNlcnZlciBzZW5kIFNJR0lOVCwgYW5kIHRoZSBhdHRhY2hlZCBwcm9jZXNzIGlzIG5vdCBhCitwcm9jZXNzCitncm91cCBsZWFkZXIsIHRoZW4gdGhlICJraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKSIgcmV0dXJucyBlcnJvciBhbmQKK2ZhaWxzICB0bworaW50ZXJydXB0IHRoZSBhdHRhY2hlZCBwcm9jZXNzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorW2h0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4OTQ1XQorCitBdXRob3I6IEpvc2ggR2FvCitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworaW5kZXggNDI1NTc5NWVhNi4uNzYyZjhiYWZiNiAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKK0BAIC01OTA0LDkgKzU5MDQsNyBAQCBsaW51eF9sb29rX3VwX3N5bWJvbHMgKHZvaWQpCisgc3RhdGljIHZvaWQKKyBsaW51eF9yZXF1ZXN0X2ludGVycnVwdCAodm9pZCkKKyB7CistICAvKiBTZW5kIGEgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwLiAgVGhpcyBhY3RzIGp1c3QgbGlrZSB0aGUgdXNlcgorLSAgICAgdHlwZWQgYSBeQyBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwuICAqLworLSAga2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCk7CisrICBraWxsIChzaWduYWxfcGlkLCBTSUdJTlQpOworIH0KKyAKKyAvKiBDb3B5IExFTiBieXRlcyBmcm9tIGluZmVyaW9yJ3MgYXV4aWxpYXJ5IHZlY3RvciBzdGFydGluZyBhdCBPRkZTRVQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl85LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKaW5kZXggOTVhYjM5Ny4uNDEzMWM5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTIyLDYgKzIyLDcgQEAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGVybD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCBcCiAJCS0td2l0aG91dC10Y2x0ayBcCiAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLS13aXRoLWdpdGNvbmZpZz0vZXRjL2dpdGNvbmZpZyAiCiAKICMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwZXJsbmF0aXZlIGJhc2gtY29tcGxldGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljYjM4Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZWQzOTM2MWEzYWUzNjJjOGFmODUyZDFhMDY5OTJiYzIiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhZDExMDMwZDJlYWM2NTZlZTllODg2MmY1NmQxNjEwNTUwZjc4NjcxODFiZWZmODE0Yzc3MTJhOTkxOTJlOTlkIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjU3NDY1ZTgzZjEzYmE5MTBhMTc4YjcxN2Q5Mzk1OGMwIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImNlOTk1Zjg2ZjQ0MWI1NmFiMWZkMDc4OGE5NDc4NjkwNGFlMmUyOTg5ZTcxOTFmZDY4MDYwMDAzMDExMzY2ZDciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZWEzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjE2NmJkZTk2YWRiYmMxMWM4ODQzZDRmOGY0Zjk4MTFiIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQ1MzM0OTU2MzAxYzg2ODQxZWIxZTViMWJiMjA4ODRhNmJhZDg5YTEwYTY3NjJjOTU4MjIwYzdjZjY0ZGEwMiIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIzMWMyMjcyYTg5NzkwMjI0OTdiYTNkNDIwMmRmMTQ1ZCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI5YTdhZTNhMDkzYmVhMzk3NzBlYjk2Y2EzZTViNDBiZmY3YWYwYjlmNjEyM2YwODlkNzgyMWQwZTViOGUxMjMwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmFhZjRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiVmVuZG9yIFBhY2thZ2UgTWFuYWdlbWVudCBmb3IgR29sYW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nbGlkZS5zaCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT01NDkwNWNmODk0ZjhjYzQxNmE5MmY0ZmMzNTBjMzViMiIKLQotR09fSU1QT1JUID0gImdpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUiCi1TUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKLVNSQ1JFViA9ICI5ZWY2Y2EzMTNiMzIwMDA3OTg2MWYyZGU0ZTU2N2IxZDIyMDgxZDE5IgotCi1pbmhlcml0IGdvCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgZm9yIHg4NiBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMxLwotIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2k1ODYtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlL3Vzci9iaW4vZ2xpZGUnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJ0ZXh0cmVsIgotCi0jIGZvciBhYXJjaDY0IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59LXB0ZXN0Ci0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzMvCi0jIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2dsaWRlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZGVwZW5kZW5jeS9kZXBlbmRlbmN5LnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvcmVwby9yZXBvLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvbWlycm9ycy9taXJyb3JzLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvY2ZnL2NmZy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2dvZGVwL3N0cmlwL3N0cmlwLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvcGF0aC9wYXRoLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvdHJlZS90cmVlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvdXRpbC91dGlsLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvYWN0aW9uL2FjdGlvbi50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NhY2hlL2NhY2hlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJ0ZXh0cmVsIgotCi0jIGZhaWxzIHRvIHJ1biB0YXNrIGNvbXBpbGVfcHRlc3RfYmFzZSBvbiBtaXBzCi1QVEVTVF9FTkFCTEVEX21pcHNhcmNoID0gIjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhZDBlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMy5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiOGVkNWI5MjkyMzc5ZDg2YzM5NTkyYTdlNmE1OGViOWM5MDM4NzdjZiIKKworaW5oZXJpdCBnbworCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIGZvciB4ODYgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMS8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9pNTg2LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS91c3IvYmluL2dsaWRlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKKworIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMzLworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nbGlkZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2RlcGVuZGVuY3kvZGVwZW5kZW5jeS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3JlcG8vcmVwby50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL21pcnJvcnMvbWlycm9ycy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NmZy9jZmcudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nb2RlcC9zdHJpcC9zdHJpcC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3BhdGgvcGF0aC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3RyZWUvdHJlZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3V0aWwvdXRpbC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2FjdGlvbi9hY3Rpb24udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jYWNoZS9jYWNoZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKKworIyBmYWlscyB0byBydW4gdGFzayBjb21waWxlX3B0ZXN0X2Jhc2Ugb24gbWlwcworUFRFU1RfRU5BQkxFRF9taXBzYXJjaCA9ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKaW5kZXggMTYzMGMxMi4uNDhiN2U2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC04LDggKzgsOCBAQAogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCi1TUkNSRVYgPSAiYjk4NDI0YzI0OTExOWI3OWQzZjcwOWUyNmViODZmMmZkNGQ1ZTVmMyIKLVBWID0gIjIwMTkwNTAxK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjUyNTY4MTdhY2U4NDkzNTAyZWM4ODUwMWExOWU0MDUxYzJlMjIwYjAiCitQViA9ICIyMDIwMDExNytnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jb25maWcuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDE0YjE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLUdPX0JBU0VWRVJTSU9OID0gIjEuMTIiCi1HT19NSU5PUiA9ICIuOSIKLVBWIC49ICIke0dPX01JTk9SfSIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKLQotU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiNjEzMjEwOWQ0MDUwZGEzNDllYWRjOWY3YjAzMDRlZjQiCi1TUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICJhYjBlNTZlZDljNDczMmE2NTNlZDIyZTIzMjY1MjcwOWFmYmY1NzNlNzEwZjU2YTA3ZjdmZGVjYTU3OGQ2MmZjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NDI4NTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gN2NjNTE5YWE1Zjg0Y2Y4ZmM3YWM4YzEwZmM2OWFhODA0MDMzMGVhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjQ5OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCBhZmFkYmFkLi5jZWRiZmJmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC04NSwxMSArODUsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7Ci0gCi0gCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgewotLQkJY2MgPSBlbnZbMF0KLSsJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKLSAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgewotLQkJY3h4ID0gZW52WzBdCi0rCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogY3h4fSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMzlkYmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotRnJvbSAyNjViNjkxYWM0NDBiZmI3MTFkOGRlMzIzMzQ2ZjdkNzJlNjIwZWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmlsaXBwbyBWYWxzb3JkYSA8ZmlsaXBwb0Bnb2xhbmcub3JnPgotRGF0ZTogVGh1LCAxMiBTZXAgMjAxOSAxMjozNzozNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBbcmVsZWFzZS1icmFuY2guZ28xLjEyLXNlY3VyaXR5XSBuZXQvdGV4dHByb3RvOiBkb24ndAotIG5vcm1hbGl6ZSBoZWFkZXJzIHdpdGggc3BhY2VzIGJlZm9yZSB0aGUgY29sb24KLQotUkZDIDcyMzAgaXMgY2xlYXIgYWJvdXQgaGVhZGVycyB3aXRoIGEgc3BhY2UgYmVmb3JlIHRoZSBjb2xvbiwgbGlrZQotCi1YLUFuc3dlciA6IDQyCi0KLWJlaW5nIGludmFsaWQsIGJ1dCB3ZSd2ZSBiZWVuIGFjY2VwdGluZyBhbmQgbm9ybWFsaXppbmcgdGhlbSBmb3IgY29tcGF0aWJpbGl0eQotcHVycG9zZXMgc2luY2UgQ0wgNTY5MDA1OSBpbiAyMDEyLgotCi1PbiB0aGUgY2xpZW50IHNpZGUsIHRoaXMgaXMgaGFybWxlc3MgYW5kIGluZGVlZCBtb3N0IGJyb3dzZXJzIGJlaGF2ZSB0aGUgc2FtZQotdG8gdGhpcyBkYXkuIE9uIHRoZSBzZXJ2ZXIgc2lkZSwgdGhpcyBiZWNvbWVzIGEgc2VjdXJpdHkgaXNzdWUgd2hlbiB0aGUKLWJlaGF2aW9yIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiBhIHJldmVyc2UgcHJveHkgc2l0dGluZyBpbiBmcm9udCBvZiB0aGUgc2VydmVyLgotCi1Gb3IgZXhhbXBsZSwgaWYgYSBXQUYgYWNjZXB0cyB0aGVtIHdpdGhvdXQgbm9ybWFsaXppbmcgdGhlbSwgaXQgbWlnaHQgYmUKLXBvc3NpYmxlIHRvIGJ5cGFzcyBpdHMgZmlsdGVycywgYmVjYXVzZSB0aGUgR28gc2VydmVyIHdvdWxkIGludGVycHJldCB0aGUKLWhlYWRlciBkaWZmZXJlbnRseS4gV29yc2UsIGlmIHRoZSByZXZlcnNlIHByb3h5IGNvYWxlc2NlcyByZXF1ZXN0cyBvbnRvIGEKLXNpbmdsZSBIVFRQLzEuMSBjb25uZWN0aW9uIHRvIGEgR28gc2VydmVyLCB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVxdWVzdAotYm91bmRhcmllcyBjYW4gZ2V0IG91dCBvZiBzeW5jIGJldHdlZW4gdGhlbSwgYWxsb3dpbmcgYW4gYXR0YWNrZXIgdG8gdGFjayBhbgotYXJiaXRyYXJ5IG1ldGhvZCBhbmQgcGF0aCBvbnRvIGEgcmVxdWVzdCBieSBvdGhlciBjbGllbnRzLCBpbmNsdWRpbmcKLWF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgdW5rbm93biB0byB0aGUgYXR0YWNrZXIuCi0KLVRoaXMgd2FzIHJlY2VudGx5IHByZXNlbnRlZCBhdCBtdWx0aXBsZSBzZWN1cml0eSBjb25mZXJlbmNlczoKLWh0dHBzOi8vcG9ydHN3aWdnZXIubmV0L2Jsb2cvaHR0cC1kZXN5bmMtYXR0YWNrcy1yZXF1ZXN0LXNtdWdnbGluZy1yZWJvcm4KLQotbmV0L2h0dHAgc2VydmVycyBhbHJlYWR5IHJlamVjdCBoZWFkZXIga2V5cyB3aXRoIGludmFsaWQgY2hhcmFjdGVycy4KLVNpbXBseSBzdG9wIG5vcm1hbGl6aW5nIGV4dHJhIHNwYWNlcyBpbiBuZXQvdGV4dHByb3RvLCBsZXQgaXQgcmV0dXJuIHRoZW0KLXVuY2hhbmdlZCBsaWtlIGl0IGRvZXMgZm9yIG90aGVyIGludmFsaWQgaGVhZGVycywgYW5kIGxldCBuZXQvaHR0cCBlbmZvcmNlCi1SRkMgNzIzMCwgd2hpY2ggaXMgSFRUUCBzcGVjaWZpYy4gVGhpcyBsb3NlcyB1cyBub3JtYWxpemF0aW9uIG9uIHRoZSBjbGllbnQKLXNpZGUsIGJ1dCB0aGVyZSdzIG5vIHJpZ2h0IGFuc3dlciBvbiB0aGUgY2xpZW50IHNpZGUgYW55d2F5LCBhbmQgaGlkaW5nIHRoZQotaXNzdWUgc291bmRzIHdvcnNlIHRoYW4gbGV0dGluZyB0aGUgYXBwbGljYXRpb24gZGVjaWRlLgotCi1GaXhlcyBDVkUtMjAxOS0xNjI3NgotCi1DaGFuZ2UtSWQ6IEk2ZDI3MmRlODI3ZTA4NzBkYTg1ZDkzZGY3NzBkNmEwZTE2MWJiY2YxCi1SZXZpZXdlZC1vbjogaHR0cHM6Ly90ZWFtLXJldmlldy5naXQuY29ycC5nb29nbGUuY29tL2MvZ29sYW5nL2dvLXByaXZhdGUvKy81NDk3MTkKLVJldmlld2VkLWJ5OiBCcmFkIEZpdHpwYXRyaWNrIDxicmFkZml0ekBnb29nbGUuY29tPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTI4MGI4NjhlODJiZjE3M2VhM2U5ODhiZTMwOTJkMTYwZWU2NjA4MikKLVJldmlld2VkLW9uOiBodHRwczovL3RlYW0tcmV2aWV3LmdpdC5jb3JwLmdvb2dsZS5jb20vYy9nb2xhbmcvZ28tcHJpdmF0ZS8rLzU1ODc3NgotUmV2aWV3ZWQtYnk6IERtaXRyaSBTaHVyYWx5b3YgPGRtaXRzaHVyQGdvb2dsZS5jb20+Ci0KLUNWRTogQ1ZFLTIwMTktMTYyNzYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9jb21taXQvNmU2ZjRhYWY3MGM4YjFjYzgxZTY1YTI2MzMyYWE5NDA5ZGUwM2FkOF0KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28gICAgICAgfCAgNCArKysrCi0gc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvbmV0L3RleHRwcm90by9yZWFkZXIuZ28gICAgICB8IDEwICsrLS0tLS0tLS0KLSBzcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbyB8IDEzICsrKysrKy0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28gYi9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotaW5kZXggNmViMDA4OGE5Ni4uODliZmRmYmI4MiAxMDA2NDQKLS0tLSBhL3NyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvCi0rKysgYi9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotQEAgLTQ3NDgsNiArNDc0OCwxMCBAQCBmdW5jIFRlc3RTZXJ2ZXJWYWxpZGF0ZXNIZWFkZXJzKHQgKnRlc3RpbmcuVCkgewotIAkJeyJmb29ceGZmYmFyOiBmb29cclxuIiwgNDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5IGluIGhlYWRlcgotIAkJeyJmb29ceDAwYmFyOiBmb29cclxuIiwgNDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5IGluIGhlYWRlcgotIAkJeyJGb286ICIgKyBzdHJpbmdzLlJlcGVhdCgieCIsIDE8PDIxKSArICJcclxuIiwgNDMxfSwgLy8gaGVhZGVyIHRvbyBsYXJnZQotKwkJLy8gU3BhY2VzIGJldHdlZW4gdGhlIGhlYWRlciBrZXkgYW5kIGNvbG9uIGFyZSBub3QgYWxsb3dlZC4KLSsJCS8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNC4KLSsJCXsiRm9vIDogYmFyXHJcbiIsIDQwMH0sCi0rCQl7IkZvb1x0OiBiYXJcclxuIiwgNDAwfSwKLSAKLSAJCXsiZm9vOiBmb28gZm9vXHJcbiIsIDIwMH0sICAgIC8vIExXUyBzcGFjZSBpcyBva2F5Ci0gCQl7ImZvbzogZm9vXHRmb29cclxuIiwgMjAwfSwgICAvLyBMV1MgdGFiIGlzIG9rYXkKLWRpZmYgLS1naXQgYS9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28gYi9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLWluZGV4IDVjMzI5NTQzZTIuLjVlNTQzOGE3MDggMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLSsrKyBiL3NyYy9uZXQvaHR0cC90cmFuc3BvcnRfdGVzdC5nbwotQEAgLTUxMzMsMyArNTEzMywzMCBAQCBmdW5jIFRlc3RUcmFuc3BvcnRJZ25vcmVzNDA4KHQgKnRlc3RpbmcuVCkgewotIAl9Ci0gCXQuRmF0YWxmKCJ0aW1lb3V0IGFmdGVyICV2IHdhaXRpbmcgZm9yIFRyYW5zcG9ydCBjb25uZWN0aW9ucyB0byBkaWUgb2ZmIiwgdGltZS5TaW5jZSh0MCkpCi0gfQotKwotK2Z1bmMgVGVzdEludmFsaWRIZWFkZXJSZXNwb25zZSh0ICp0ZXN0aW5nLlQpIHsKLSsJc2V0UGFyYWxsZWwodCkKLSsJZGVmZXIgYWZ0ZXJUZXN0KHQpCi0rCWNzdCA6PSBuZXdDbGllbnRTZXJ2ZXJUZXN0KHQsIGgxTW9kZSwgSGFuZGxlckZ1bmMoZnVuYyh3IFJlc3BvbnNlV3JpdGVyLCByICpSZXF1ZXN0KSB7Ci0rCQljb25uLCBidWYsIF8gOj0gdy4oSGlqYWNrZXIpLkhpamFjaygpCi0rCQlidWYuV3JpdGUoW11ieXRlKCJIVFRQLzEuMSAyMDAgT0tcclxuIiArCi0rCQkJIkRhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTk6MDk6MjcgR01UXHJcbiIgKwotKwkJCSJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOFxyXG4iICsKLSsJCQkiQ29udGVudC1MZW5ndGg6IDBcclxuIiArCi0rCQkJIkZvbyA6IGJhclxyXG5cclxuIikpCi0rCQlidWYuRmx1c2goKQotKwkJY29ubi5DbG9zZSgpCi0rCX0pKQotKwlkZWZlciBjc3QuY2xvc2UoKQotKwlyZXMsIGVyciA6PSBjc3QuYy5HZXQoY3N0LnRzLlVSTCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsKGVycikKLSsJfQotKwlkZWZlciByZXMuQm9keS5DbG9zZSgpCi0rCWlmIHYgOj0gcmVzLkhlYWRlci5HZXQoIkZvbyIpOyB2ICE9ICIiIHsKLSsJCXQuRXJyb3JmKGB1bmV4cGVjdGVkICJGb28iIGhlYWRlcjogJXFgLCB2KQotKwl9Ci0rCWlmIHYgOj0gcmVzLkhlYWRlci5HZXQoIkZvbyAiKTsgdiAhPSAiYmFyIiB7Ci0rCQl0LkVycm9yZihgYmFkICJGb28gIiBoZWFkZXIgdmFsdWU6ICVxLCB3YW50ICVxYCwgdiwgImJhciIpCi0rCX0KLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi1pbmRleCAyYzRmMjVkNWFlLi4xYTVlMzY0Y2Y3IDEwMDY0NAotLS0tIGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi0rKysgYi9zcmMvbmV0L3RleHRwcm90by9yZWFkZXIuZ28KLUBAIC00OTMsMTggKzQ5MywxMiBAQCBmdW5jIChyICpSZWFkZXIpIFJlYWRNSU1FSGVhZGVyKCkgKE1JTUVIZWFkZXIsIGVycm9yKSB7Ci0gCQkJcmV0dXJuIG0sIGVycgotIAkJfQotIAotLQkJLy8gS2V5IGVuZHMgYXQgZmlyc3QgY29sb247IHNob3VsZCBub3QgaGF2ZSB0cmFpbGluZyBzcGFjZXMKLS0JCS8vIGJ1dCB0aGV5IGFwcGVhciBpbiB0aGUgd2lsZCwgdmlvbGF0aW5nIHNwZWNzLCBzbyB3ZSByZW1vdmUKLS0JCS8vIHRoZW0gaWYgcHJlc2VudC4KLSsJCS8vIEtleSBlbmRzIGF0IGZpcnN0IGNvbG9uLgotIAkJaSA6PSBieXRlcy5JbmRleEJ5dGUoa3YsICc6JykKLSAJCWlmIGkgPCAwIHsKLSAJCQlyZXR1cm4gbSwgUHJvdG9jb2xFcnJvcigibWFsZm9ybWVkIE1JTUUgaGVhZGVyIGxpbmU6ICIgKyBzdHJpbmcoa3YpKQotIAkJfQotLQkJZW5kS2V5IDo9IGkKLS0JCWZvciBlbmRLZXkgPiAwICYmIGt2W2VuZEtleS0xXSA9PSAnICcgewotLQkJCWVuZEtleS0tCi0tCQl9Ci0tCQlrZXkgOj0gY2Fub25pY2FsTUlNRUhlYWRlcktleShrdls6ZW5kS2V5XSkKLSsJCWtleSA6PSBjYW5vbmljYWxNSU1FSGVhZGVyS2V5KGt2WzppXSkKLSAKLSAJCS8vIEFzIHBlciBSRkMgNzIzMCBmaWVsZC1uYW1lIGlzIGEgdG9rZW4sIHRva2VucyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIGNoYXJzLgotIAkJLy8gV2UgY291bGQgcmV0dXJuIGEgUHJvdG9jb2xFcnJvciBoZXJlLCBidXQgYmV0dGVyIHRvIGJlIGxpYmVyYWwgaW4gd2hhdCB3ZQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLWluZGV4IGY4NWZiZGMzNmQuLmI5MmZkY2QzYzcgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbwotKysrIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLUBAIC0xODgsMTEgKzE4OCwxMCBAQCBmdW5jIFRlc3RMYXJnZVJlYWRNSU1FSGVhZGVyKHQgKnRlc3RpbmcuVCkgewotIAl9Ci0gfQotIAotLS8vIFRlc3QgdGhhdCB3ZSByZWFkIHNsaWdodGx5LWJvZ3VzIE1JTUUgaGVhZGVycyBzZWVuIGluIHRoZSB3aWxkLAotLS8vIHdpdGggc3BhY2VzIGJlZm9yZSBjb2xvbnMsIGFuZCBzcGFjZXMgaW4ga2V5cy4KLSsvLyBUZXN0UmVhZE1JTUVIZWFkZXJOb25Db21wbGlhbnQgY2hlY2tzIHRoYXQgd2UgZG9uJ3Qgbm9ybWFsaXplIGhlYWRlcnMKLSsvLyB3aXRoIHNwYWNlcyBiZWZvcmUgY29sb25zLCBhbmQgYWNjZXB0IHNwYWNlcyBpbiBrZXlzLgotIGZ1bmMgVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50KHQgKnRlc3RpbmcuVCkgewotLQkvLyBJbnZhbGlkIEhUVFAgcmVzcG9uc2UgaGVhZGVyIGFzIHNlbnQgYnkgYW4gQXhpcyBzZWN1cml0eQotLQkvLyBjYW1lcmE6ICh0aGlzIGlzIGhhbmRsZWQgYnkgSUUsIEZpcmVmb3gsIENocm9tZSwgY3VybCwgZXRjLikKLSsJLy8gVGhlc2UgaW52YWxpZCBoZWFkZXJzIHdpbGwgYmUgcmVqZWN0ZWQgYnkgbmV0L2h0dHAgYWNjb3JkaW5nIHRvIFJGQyA3MjMwLgotIAlyIDo9IHJlYWRlcigiRm9vOiBiYXJcclxuIiArCi0gCQkiQ29udGVudC1MYW5ndWFnZTogZW5cclxuIiArCi0gCQkiU0lEIDogMFxyXG4iICsKLUBAIC0yMDIsOSArMjAxLDkgQEAgZnVuYyBUZXN0UmVhZE1JTUVIZWFkZXJOb25Db21wbGlhbnQodCAqdGVzdGluZy5UKSB7Ci0gCXdhbnQgOj0gTUlNRUhlYWRlcnsKLSAJCSJGb28iOiAgICAgICAgICAgICAgeyJiYXIifSwKLSAJCSJDb250ZW50LUxhbmd1YWdlIjogeyJlbiJ9LAotLQkJIlNpZCI6ICAgICAgICAgICAgICB7IjAifSwKLS0JCSJBdWRpbyBNb2RlIjogICAgICAgeyJOb25lIn0sCi0tCQkiUHJpdmlsZWdlIjogICAgICAgIHsiMTI3In0sCi0rCQkiU0lEICI6ICAgICAgICAgICAgIHsiMCJ9LAotKwkJIkF1ZGlvIE1vZGUgIjogICAgICB7Ik5vbmUifSwKLSsJCSJQcml2aWxlZ2UgIjogICAgICAgeyIxMjcifSwKLSAJfQotIAlpZiAhcmVmbGVjdC5EZWVwRXF1YWwobSwgd2FudCkgfHwgZXJyICE9IG5pbCB7Ci0gCQl0LkZhdGFsZigiUmVhZE1JTUVIZWFkZXIgPVxuJXYsICV2OyB3YW50OlxuJXYiLCBtLCBlcnIsIHdhbnQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmI4NTYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLUZyb20gNDdkYjY5ZTIwZWQ2NmZiNjJiMDFhZmZkODNkODI5NjU0YjgyOTg5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCi0KLUdvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCi1kZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgotVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKLWNhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCi0KLUhvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAotZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQotbGlicmFyeS4KLQotRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCi1idWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKLW9mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLUdPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCi1lbWJlZGRpbmcgaXMgZGlzYWJsZWQuCi0KLVNlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKLXBhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCi1hbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAotZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCi10aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKLWNnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKLWRlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCi0KLVRoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQotc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0Ci1hcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKLXJ1bnRpbWUvY2dvKS4KLQotVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCi1iZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCi1ieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IGNlZGJmYmYuLjU3NjNhMGQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTEyOCw3ICsxMjgsNyBAQCBmdW5jIEV4dHJhRW52VmFycygpIFtdY2ZnLkVudlZhciB7Ci0gZnVuYyBFeHRyYUVudlZhcnNDb3N0bHkoKSBbXWNmZy5FbnZWYXIgewotIAl2YXIgYiB3b3JrLkJ1aWxkZXIKLSAJYi5Jbml0KCkKLS0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKLSsJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KLSAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1pbmRleCAxMmUxNTI3Li5lNDFiZmFjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtMTc0LDYgKzE3NCw4IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIERvKHJvb3QgKkFjdGlvbikgewotIAl3Zy5XYWl0KCkKLSB9Ci0gCi0rdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKLSsKLSAvLyBidWlsZEFjdGlvbklEIGNvbXB1dGVzIHRoZSBhY3Rpb24gSUQgZm9yIGEgYnVpbGQgYWN0aW9uLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCXAgOj0gYS5QYWNrYWdlCi1AQCAtMTkwLDcgKzE5Miw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCS8vIGJ1dCBpdCBkb2VzIG5vdCBoaWRlIHRoZSBleGFjdCB2YWx1ZSBvZiAkR09QQVRILgotIAkvLyBJbmNsdWRlIHRoZSBmdWxsIGRpciBpbiB0aGF0IGNhc2UuCi0gCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KLS0JaWYgIXAuR29yb290ICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7Ci0rCWlmICFwLkdvcm9vdCAmJiAhb21pdEdvcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCi0gCX0KLSAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKLUBAIC0yMDEsMTMgKzIwMywxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAl9Ci0gCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0gCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCi0tCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHApCi0tCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSsJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKLSsJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQotIAkJfQotIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCi0gCQl9Ci0gCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPwotIAl9Ci1AQCAtMjA5NiwzMyArMjA5OCwzMyBAQCB2YXIgKAotIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCi0gZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCi1AQCAtMjEzMSwxMSArMjEzMywxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLSAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKLSAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgotIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKLSAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKLSAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQotIAl9Ci0rCWlmIGZpbHRlcmVkIHsKLSsJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQotKwl9Ci0gCXJldHVybiBjb21waWxlcgotIH0KLSAKLUBAIC0yMjg1LDggKzIyOTAsMjMgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gc3RyaW5ncy5GaWVsZHModikKLSB9Ci0gCi0rdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgotKwotK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgewotKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKLSsJaWYgIWZpbHRlckZsYWdzIHsKLSsJCXJldHVybiBmbGFncwotKwl9Ci0rCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKLSsJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKLSsJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKLSsJCX0KLSsJfQotKwlyZXR1cm4gbmV3ZmxhZ3MKLSt9Ci0rCi0gLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KLS1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0rZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgotIAotIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci1AQCAtMjMwNCw2ICsyMzI0LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsCi0gCWlmIGxkZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkxERkxBR1MiLCBkZWZhdWx0cywgcC5DZ29MREZMQUdTLCBjaGVja0xpbmtlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCi0rCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKLSsJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKLSsJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQotKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKLSsJfQotIAotIAlyZXR1cm4KLSB9Ci1AQCAtMjMxOSw3ICsyMzQ2LDcgQEAgdmFyIGNnb1JlID0gcmVnZXhwLk11c3RDb21waWxlKGBbL1xcOl1gKQotIAotIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJcCA6PSBhLlBhY2thZ2UKLS0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gbmlsLCBuaWwsIGVycgotIAl9Ci1AQCAtMjY3OSw3ICsyNzA2LDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAKLSAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7Ci0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKLSsJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gIiIsICIiLCBlcnIKLSAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Y2E0MGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNWMzMmMzOGJmMTliMjRmMGFhZGQ3ODAxMmQxN2ZmNWNhYTgyMTUxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAotCi10byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNyArKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTIyOCw3ICsyMjgsOSBAQCBmdW5jIHhpbml0KCkgewotIAl3b3JrZGlyID0geHdvcmtkaXIoKQotIAl4YXRleGl0KHJtd29ya2RpcikKLSAKLS0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSsJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwl9Ci0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1AQCAtMTE2LDcgKzExNiwxMSBAQCBmdW5jIGluaXQoKSB7Ci0gCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgotIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuCi0gCQkvLyBydW50aW1lLkdPUk9PVC4KLS0JCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7Ci0rCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkNsZWFuKHMpCi0rCQl9IGVsc2UgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCX0KLSAJfQotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNGEzM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDU1ZWI4Yzk1YTg5ZjMyYWVjMTZiNzc2NGU3OGU4Y2Y3NTE2OWRjODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNjoyNjoxMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cwotCi1zbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZwotY2FuIGZpbmQgdGhlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1pbmRleCAyMjBhYWIzLi43MDM5MjVmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotQEAgLTExMzUsNiArMTEzNSw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgewotIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCi0gCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCi1AQCAtMTE0Niw2ICsxMTQ3LDggQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCX0KLSAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotKwotIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKLSAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4gewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKLUBAIC0xMTU0LDYgKzExNTcsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJfQotIAl9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2U4ZGU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAxYmYxNWFhOGZiNzczNjA0YjI1MjRjZmRhYjQ5M2ZhNGQ4ZmE5Mjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kIGdvX2Jvb3RzdHJhcAotCi1mb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCi1pbmRleCA3ODg4MmQ5Li4yNTk0M2QwIDEwMDc1NQotLS0tIGEvc3JjL21ha2UuYmFzaAotKysrIGIvc3JjL21ha2UuYmFzaAotQEAgLTE2Myw3ICsxNjMsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgotIAlleGl0IDEKLSBmaQotIHJtIC1mIGNtZC9kaXN0L2Rpc3QKLS1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLSAKLSAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCi0gZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCi1AQCAtMTk0LDcgKzE5NCw3IEBAIGZpCi0gIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgotICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgotICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0gcm0gLWYgLi9jbWQvZGlzdC9kaXN0Ci0gCi0gIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwZDVkYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi1Gcm9tIGZlMGZjYWY0M2VmM2FhYjgxNTQxZGFkMmE3MWI0NjI1NGRjNGNmNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZGlzdDogc2VwYXJhdGUgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkcwotCi1DaGFuZ2UgdGhlIGRpc3QgdG9vbCB0byBhbGxvdyBmb3IgT0Utc3R5bGUgY3Jvc3MtCi1hbmQgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzOgotCi0gLSBjb21tYW5kIGZsYWdzIC0taG9zdC1vbmx5IGFuZCAtLXRhcmdldCBvbmx5IGFyZSBhZGRlZDsKLSAgIGlmIG9uZSBpcyBwcmVzZW50LCB0aGUgb3RoZXIgY2hhbmdlcyBtZW50aW9uZWQgYmVsb3cKLSAgIHRha2UgZWZmZWN0LCBhbmQgYXJndW1lbnRzIG1heSBhbHNvIGJlIHNwZWNpZmllZCBvbgotICAgdGhlIGNvbW1hbmQgbGluZSB0byBlbnVtZXJhdGUgdGhlIHBhY2thZ2UocykgdG8gYmUKLSAgIGJ1aWx0LgotCi0gLSBmb3IgT0UgY3Jvc3MgYnVpbGRzLCBnb19ib290c3RyYXAgaXMgYWx3YXlzIGJ1aWx0IGZvcgotICAgdGhlIGN1cnJlbnQgYnVpbGQgaG9zdCwgYW5kIGlzIG1vdmVkLCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0aW5nCi0gICB0b29sY2hhaW4gKGFzbSwgY29tcGlsZSwgZXRjLikgdG8gYSBzZXBhcmF0ZSAnbmF0aXZlX25hdGl2ZScKLSAgIGRpcmVjdG9yeSB1bmRlciBHT1JPT1QvcGtnL3Rvb2wuCi0KLSAtIGdvX2Jvb3RzdHJhcCBpcyBub3QgYXV0b21hdGljYWxseSByZW1vdmVkIGFmdGVyIHRoZSBidWlsZCwKLSAgIHNvIGl0IGNhbiBiZSByZXVzZWQgbGF0ZXIgKGUuZy4sIGJ1aWxkaW5nIGJvdGggc3RhdGljIGFuZAotICAgc2hhcmVkIHJ1bnRpbWUpLgotCi1Ob3RlIHRoYXQgZm9yIC0taG9zdC1vbmx5IGJ1aWxkcywgaXQgd291bGQgYmUgbmljZSB0byBzcGVjaWZ5Ci1qdXN0IHRoZSAiY21kIiBwYWNrYWdlIHRvIGJ1aWxkIG9ubHkgdGhlIGdvIGNvbW1hbmRzL3Rvb2xzLAotdGhlIHN0YWxlbmVzcyBjaGVja3MgaW4gdGhlIGRpc3QgdG9vbCB3aWxsIGZhaWwgaWYgdGhlICJzdGQiCi1saWJyYXJ5IGhhcyBub3QgYWxzbyBiZWVuIGJ1aWx0LiAgU28gaG9zdC1vbmx5IGJ1aWxkcyBoYXZlIHRvCi1idWlsZCBldmVyeXRoaW5nIGFueXdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotbW9yZSBkaXN0IGNsZWFudXAKLQotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTM5LDYgKzM5LDcgQEAgdmFyICgKLSAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKLSAJd29ya2RpciAgICAgICAgICBzdHJpbmcKLSAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKLSsJYnVpbGRfdG9vbGRpcgkgc3RyaW5nCi0gCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCi0gCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCi0gCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCi1AQCAtNTAsNiArNTEsNyBAQCB2YXIgKAotIAotIAlyZWJ1aWxkYWxsICAgYm9vbAotIAlkZWZhdWx0Y2xhbmcgYm9vbAotKwljcm9zc0J1aWxkICAgYm9vbAotIAotIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5Ci0gKQotQEAgLTIzMSw2ICsyMzMsOCBAQCBmdW5jIHhpbml0KCkgewotIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0gCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJfQotKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCi0rCi0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotQEAgLTI2MCw3ICsyNjQsNiBAQCBmdW5jIGNvbXBpbGVyRW52KGVudk5hbWUsIGRlZiBzdHJpbmcpIG1hCi0gCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKLSAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCi0gCQl9Ci0tCQltWyIiXSA9IGVudgotIAl9Ci0gCi0gCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7Ci1AQCAtNDg3LDggKzQ5MCwxMCBAQCBmdW5jIHNldHVwKCkgewotIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KLSAJaWYgcmVidWlsZGFsbCB7Ci0gCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCi0rCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCX0KLSAJeG1rZGlyYWxsKHRvb2xkaXIpCi0rCXhta2RpcmFsbChidWlsZF90b29sZGlyKQotIAotIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCi0gCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKLUBAIC0xMTU1LDExICsxMTYwLDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAotIAl2YXIgbm9CYW5uZXIgYm9vbAotIAl2YXIgZGVidWcgYm9vbAotKwl2YXIgaG9zdE9ubHkgYm9vbAotKwl2YXIgdGFyZ2V0T25seSBib29sCi0rCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQotKwotIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKLSAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQotIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKLSsJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKLSsJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKLSAKLS0JeGZsYWdwYXJzZSgwKQotKwl4ZmxhZ3BhcnNlKC0xKQotKwotKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgewotKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCX0KLSsJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKLSsJaWYgZmxhZy5OQXJnKCkgPiAwIHsKLSsJCWlmIGNyb3NzQnVpbGQgewotKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQotKwkJfSBlbHNlIHsKLSsJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCQl9Ci0rCX0KLSAKLSAJaWYgZGVidWcgewotIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgotQEAgLTEyMDcsOCArMTIzMCwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAotLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93Ci0tCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0Ci0rCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCi0rCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJfQotIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKLSAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCi0gCWlmIGRlYnVnIHsKLUBAIC0xMjM3LDcgKzEyNjUsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQotLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQotKwl9IGVsc2UgewotKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJfQotIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKLSAJaWYgZGVidWcgewotIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotQEAgLTEyNzQsNTAgKzEzMDYsODQgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0gCi0tCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKLS0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCi0rCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCi0rCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQotKwkJCXhyZW1vdmUoZikKLSsJCX0KLSsJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKLSsJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlpZiBob3N0T25seSB7Ci0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKLSsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgewotKwkJCWdvb3MgPSBvbGRnb29zCi0rCQkJZ29hcmNoID0gb2xkZ29hcmNoCi0rCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLSsJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLSsJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKLSAJCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCX0gZWxzZSB7Ci0tCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0tCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCi0rCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0rCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9IGVsc2UgewotKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0rCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0rCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0gCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotLQkJfQotLQkJZ29vcyA9IG9sZGdvb3MKLS0JCWdvYXJjaCA9IG9sZGdvYXJjaAotLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLS0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLS0JfQotLQl0YXJnZXRzIDo9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLS0JaWYgZ29vcyA9PSAianMiICYmIGdvYXJjaCA9PSAid2FzbSIgewotLQkJLy8gU2tpcCB0aGUgY21kIHRvb2xzIGZvciBqcy93YXNtLiBUaGV5J3JlIG5vdCB1c2FibGUuCi0tCQl0YXJnZXRzID0gdGFyZ2V0c1s6MV0KLS0JfQotLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoY21kR28sIHRhcmdldHMuLi4pCi0tCWlmIGRlYnVnIHsKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLS0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSsJCWlmIGRlYnVnIHsKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0rCQl9Ci0gCX0KLSAKLSAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KLUBAIC0xMzM1LDcgKzE0MDEsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAKLSAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgotLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bwotKwkvLyBrZWVwIGl0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCX0KLSAKLSAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KLSAJaWYgIW5vQmFubmVyIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjllZjk0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotRnJvbSA3Y2M2MGIzODg3YmUyZDU2NzRiOWY1ZDQyMmQwMjI5NzZjZjIwNWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IEZyaSwgMiBNYXIgMjAxOCAwNjowMDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKLQotVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcwotc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KLWJlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKLWxpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwotdGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZwotc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCi0KLVRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCi1pbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKLWVudmlyb25tZW50IHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA1ICsrKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLSsrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1AQCAtNjAwLDYgKzYwMCw5IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGFkZFRyYW5zaXRpdmVMaW5rRGVwcygKLSAJCQlpZiBwMSA9PSBuaWwgfHwgcDEuU2hsaWIgPT0gIiIgfHwgaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfQotKwkJCWlmIGdvUm9vdFByZWNpb3VzICYmIChwMS5TdGFuZGFyZCB8fCBwMS5Hb3Jvb3QpIHsKLSsJCQkJY29udGludWUKLSsJCQl9Ci0gCQkJaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSA9IHRydWUKLSAJCQkvLyBUT0RPKHJzYyk6IFRoZSB1c2Ugb2YgTW9kZUluc3RhbGwgaGVyZSBpcyBzdXNwZWN0LCBidXQgaWYgd2Ugb25seSBkbyBNb2RlQnVpbGQsCi0gCQkJLy8gd2UnbGwgZW5kIHVwIGJ1aWxkaW5nIGFuIG92ZXJhbGwgbGlicmFyeSBvciBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBhdCBydW50aW1lCi1JbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLUBAIC0xNDcsNiArMTQ3LDcgQEAgU2VlIGFsc286IGdvIGluc3RhbGwsIGdvIGdldCwgZ28gY2xlYW4uCi0gfQotIAotIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCi0rdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCi0gCi0gZnVuYyBpbml0KCkgewotIAkvLyBicmVhayBpbml0IGN5Y2xlCi1AQCAtMTYwLDYgKzE2MSwxMCBAQCBmdW5jIGluaXQoKSB7Ci0gCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQpCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCkKLSsKLSsJaWYgeCA6PSBvcy5HZXRlbnYoIkdPUk9PVF9PVkVSUklERSIpOyB4ICE9ICIiIHsKLSsJCWdvUm9vdFByZWNpb3VzID0gZmFsc2UKLSsJfQotIH0KLSAKLSAvLyBOb3RlIHRoYXQgZmxhZ3MgY29uc3VsdGVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlCi1JbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLUBAIC00MzYsNiArNDM2LDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVycgotIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm1pc3Npbmcgb3IgaW52YWxpZCBiaW5hcnktb25seSBwYWNrYWdlOyBleHBlY3RlZCBmaWxlICVxIiwgYS5QYWNrYWdlLlRhcmdldCkKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKLSsJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCi0rCQlpZiBlcnIgPT0gbmlsIHsKLSsJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKLSsJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCi0rCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJaWYgYi5Jc0NtZExpc3QgewotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci1AQCAtMTQzOCw2ICsxNDU1LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3QKLSAJCXJldHVybiBuaWwKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKLSsJCXAgOj0gYS5QYWNrYWdlCi0rCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKLSsJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQotKwkJCXJldHVybiBlcnIKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWNmNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAwZTBjMjQ3ZjBjYWVjMjM1Mjg4ODlmZjA5ZDk4MzQ4Y2JhOTAyOGYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyNiBPY3QgMjAxOCAxNTowMjozMiArMDgwMAotU3ViamVjdDogW1BBVENIXSB1c2UgR09CVUlMRE1PREUgdG8gc2V0IGJ1aWxkbW9kZQotCi1XaGlsZSBidWlsZGluZyBnbyBpdHNlbGYsIHRoZSBnbyBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydAotdG8gc2V0IGAtYnVpbGRtb2RlPXBpZScgZnJvbSBlbnZpcm9ubWVudC4KLQotQWRkIEdPQlVJTERNT0RFIHRvIHN1cHBvcnQgaXQgd2hpY2ggbWFrZSBQSUUgZXhlY3V0YWJsZXMgdGhlIGRlZmF1bHQKLWJ1aWxkIG1vZGUsIGFzIFBJRSBleGVjdXRhYmxlcyBhcmUgcmVxdWlyZWQgYXMgb2YgWW9jdG8KLQotUmVmZXJzOiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvZ29sYW5nLWRldi9nUkNlNVVSS2V3SQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW3Vwc3RyZWFtIGNob29zZSBhbnRvaGVyIHNvbHV0aW9uOiBgMTdhMjU2YgotY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3IgYW5kcm9pZC9hcm0nXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMjIzLDcgKzIyMywxMSBAQCBmdW5jIEFkZEJ1aWxkRmxhZ3MoY21kICpiYXNlLkNvbW1hbmQpIHsKLSAKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKLS0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQotKwl9IGVsc2UgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwl9Ci0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkTW9kLCAibW9kIiwgIiIsICIiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDBjZjRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1Gcm9tIDM1ZWE0YmUzNGU5NDkxMmIwMDgzN2UwZjdjNzM4NWYyZTk4ZmU3NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBsZDogcmVwbGFjZSBnbGliYyBkeW5hbWljIGxpbmtlciB3aXRoIG11c2wKLQotUmV3b3JrIG9mIHBhdGNoIGJ5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1mb3IgZ28gMS4xMC4gIFNob3VsZCBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsbHkgb24KLW11c2wgYmVpbmcgdGhlIHN5c3RlbSBDIGxpYnJhcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbUmVhbCBmaXggc2hvdWxkIGJlIHBvcnRhYmxlIGFjcm9zcyBsaWJjc10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KLUBAIC02MCw3ICs2MCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1taXBzbGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLUBAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLWxpbnV4LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgIi91c3IvbGliZXhlYy9sZC5lbGZfc28iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZmQ1ZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOWUzZGM0NGNkZmE1OGQ5NjUwNGQwYTc4OWRjODI2MTdkZDViZWY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjAxOjEzICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggMS85XSBjbWQvZ286IEFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotaW5kZXggMTc4NTJkZS4uN2I1ZWM1ZSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1AQCAtMTAwLDExICsxMDAsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7Ci0gCi0gCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhjZmcuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWNjID0gZW52WzBdCi0rCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhjZmcuR2V0ZW52KCJDWFgiKSk7IGxlbihlbnYpID4gMCB7Ci0tCQljeHggPSBlbnZbMF0KLSsJCWN4eCA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJBUiIsIFZhbHVlOiBlbnZPcigiQVIiLCAiYXIiKX0pCi0gCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWRkZDM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLUZyb20gYTEzYWU0ODRlNDExMzkwOTQ1MDVkMjgzNDQzN2U5MjYyYTUzMTVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE0OjIyICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1HbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bwotZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KLVRoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0Ci1jYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgotCi1Ib3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKLWRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKLWxpYnJhcnkuCi0KLUZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcwotYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCi1vZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgotCi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi1HT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQotZW1iZWRkaW5nIGlzIGRpc2FibGVkLgotCi1TZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCi1wYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAotYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKLWR1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAotdGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCi1jZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCi1kZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgotCi1UaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKLXNpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAotYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCi1ydW50aW1lL2NnbykuCi0KLVRoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQotYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAotYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IDdiNWVjNWUuLjI5MmYxMTcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTE1NCw3ICsxNTQsNyBAQCBmdW5jIEV4dHJhRW52VmFycygpIFtdY2ZnLkVudlZhciB7Ci0gZnVuYyBFeHRyYUVudlZhcnNDb3N0bHkoKSBbXWNmZy5FbnZWYXIgewotIAl2YXIgYiB3b3JrLkJ1aWxkZXIKLSAJYi5Jbml0KCkKLS0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKLSsJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KLSAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1pbmRleCA3ZGQ5YTkwLi5jY2ViYWY4IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtMzIsNiArMzIsOCBAQCBpbXBvcnQgKAotIAkidGltZSIKLSApCi0gCi0rdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKLSsKLSAvLyBhY3Rpb25MaXN0IHJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aW9ucyBpbiB0aGUgZGFnIHJvb3RlZCBhdCByb290Ci0gLy8gYXMgdmlzaXRlZCBpbiBhIGRlcHRoLWZpcnN0IHBvc3Qtb3JkZXIgdHJhdmVyc2FsLgotIGZ1bmMgYWN0aW9uTGlzdChyb290ICpBY3Rpb24pIFtdKkFjdGlvbiB7Ci1AQCAtMjA1LDcgKzIwNyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCS8vIFRoZSBjb21waWxlciBoaWRlcyB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUk9PVAotIAkvLyB3aGVuIGJ1aWxkaW5nIHRoaW5ncyBpbiBHT1JPT1QuCi0gCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KLS0JaWYgIXAuR29yb290ICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIWNmZy5CdWlsZFRyaW1wYXRoICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7Ci0gCQlmbXQuRnByaW50ZihoLCAiZGlyICVzXG4iLCBwLkRpcikKLSAJfQotIAlmbXQuRnByaW50ZihoLCAiZ29vcyAlcyBnb2FyY2ggJXNcbiIsIGNmZy5Hb29zLCBjZmcuR29hcmNoKQotQEAgLTIxOSwxMyArMjIxLDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCX0KLSAJaWYgbGVuKHAuQ2dvRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKLSAJCWZtdC5GcHJpbnRmKGgsICJjZ28gJXFcbiIsIGIudG9vbElEKCJjZ28iKSkKLS0JCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCkKLS0JCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSgpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQotKwkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwLCB0cnVlKQotKwkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKHRydWUpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQotIAkJaWYgbGVuKHAuQ1hYRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKLS0JCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSgpLCBjeHhmbGFncykKLSsJCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSh0cnVlKSwgY3h4ZmxhZ3MpCi0gCQl9Ci0gCQlpZiBsZW4ocC5GRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKCksIGZmbGFncykKLSsJCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUodHJ1ZSksIGZmbGFncykKLSAJCX0KLSAJCS8vIFRPRE8ocnNjKTogU2hvdWxkIHdlIGluY2x1ZGUgdGhlIFNXSUcgdmVyc2lvbiBvciBGb3J0cmFuL0dDQy9HKysvT2JqZWN0aXZlLUMgY29tcGlsZXIgdmVyc2lvbnM/Ci0gCX0KLUBAIC0yMjI5LDMzICsyMjMxLDQ4IEBAIHZhciAoCi0gLy8gZ2NjQ21kIHJldHVybnMgYSBnY2MgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDQyBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR2NjQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KLSBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBjY0V4ZSByZXR1cm5zIHRoZSBDQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBjeHhFeGUgcmV0dXJucyB0aGUgQ1hYIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGZjRXhlIHJldHVybnMgdGhlIEZDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShjZmcuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKLSt9Ci0rCi0rdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgotKwotK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgewotKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKLSsJaWYgIWZpbHRlckZsYWdzIHsKLSsJCXJldHVybiBmbGFncwotKwl9Ci0rCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKLSsJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKLSsJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKLSsJCX0KLSsJfQotKwlyZXR1cm4gbmV3ZmxhZ3MKLSB9Ci0gCi0gLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCi1AQCAtMjI2NCwxMSArMjI4MSwxNiBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLSAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKLSAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgotIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKLSAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKLSAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQotIAl9Ci0rCi0rCWlmIGZpbHRlcmVkIHsKLSsJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQotKwl9Ci0rCi0gCXJldHVybiBjb21waWxlcgotIH0KLSAKLUBAIC0yNDI5LDcgKzI0NTEsNyBAQCBmdW5jIGVudkxpc3Qoa2V5LCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7Ci0gfQotIAotIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCi0tZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKLSAKLSAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgewotQEAgLTI0NDgsNiArMjQ3MCwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAotIAkJcmV0dXJuCi0gCX0KLSAKLSsJaWYgZmlsdGVyZWQgewotKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQotKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCi0rCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCi0rCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKLSsJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCi0rCX0KLSsKLSAJcmV0dXJuCi0gfQotIAotQEAgLTI0NjIsNyArMjQ5Miw3IEBAIHZhciBjZ29SZSA9IGxhenlyZWdleHAuTmV3KGBbL1xcOl1gKQotIAotIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJcCA6PSBhLlBhY2thZ2UKLS0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gbmlsLCBuaWwsIGVycgotIAl9Ci1AQCAtMjgyMSw3ICsyODUxLDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAKLSAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7Ci0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKLSsJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gIiIsICIiLCBlcnIKLSAJfQotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEwMTE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDI4YWRhODg5NmI3NmQ2MjAyNDBiYWZjMjJhYTM5NTA3MWQ2MDE0ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNTozNyArMDQzMAotU3ViamVjdDogW1BBVENIIDMvOV0gY21kL2dvOiBBbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKLQotdG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNiArKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotaW5kZXggOWU1MDMxMS4uNjgzY2E2ZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1AQCAtMjQ0LDcgKzI0NCw5IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCXdvcmtkaXIgPSB4d29ya2RpcigpCi0gCXhhdGV4aXQocm13b3JrZGlyKQotIAotLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSsJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCX0KLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1pbmRleCBhMzI3N2E2Li5kYjk2MzUwIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KLUBAIC02MCw3ICs2MCwxMSBAQCBmdW5jIGRlZmF1bHRDb250ZXh0KCkgYnVpbGQuQ29udGV4dCB7Ci0gCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgotIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgY3R4dC5HT1JPT1QgcmF0aGVyIHRoYW4KLSAJCS8vIHJ1bnRpbWUuR09ST09ULgotLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQotKwkJfSBlbHNlIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCX0KLSAJfQotIAotIAljdHh0LkdPUEFUSCA9IGVudk9yKCJHT1BBVEgiLCBjdHh0LkdPUEFUSCkKLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDc2M2FkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiZjVjZjUzMDFhZTU5MTQ0OTg0NTRjODcyOTNkMWRmMmUxZDg0ODlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTY6MzIgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCi0KLXNvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCi1jYW4gZmluZCB0aGVtLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1pbmRleCAzZmEyNThkLi5mOTZmYjAyIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotQEAgLTEyMTUsNiArMTIxNSw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgewotIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCi0gCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCi1AQCAtMTIyNiw2ICsxMjI3LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCX0KLSAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKLSAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4gewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKLUBAIC0xMjM0LDYgKzEyMzYsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJfQotIAl9Ci0gCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYyYTQ2Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gZjA1ZWYzZGVkNTJiOTg1MzdjMTBlZmQwYjE1Y2Q5NjEyNDcxNTI0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE3OjE2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBtYWtlLmJhc2g6IG92ZXJyaWRlIENDIHdoZW4gYnVpbGRpbmcgZGlzdCBhbmQKLSBnb19ib290c3RyYXAKLQotZm9yIGhhbmRsaW5nIE9FIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcy4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCi1pbmRleCA5MmQxNDgxLi4wYzI4MjJmIDEwMDc1NQotLS0tIGEvc3JjL21ha2UuYmFzaAotKysrIGIvc3JjL21ha2UuYmFzaAotQEAgLTE3Nyw3ICsxNzcsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgotIAlleGl0IDEKLSBmaQotIHJtIC1mIGNtZC9kaXN0L2Rpc3QKLS1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAotIAotICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KLSBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKLUBAIC0yMDgsNyArMjA4LDcgQEAgZmkKLSAjIFJ1biBkaXN0IGJvb3RzdHJhcCB0byBjb21wbGV0ZSBtYWtlLmJhc2guCi0gIyBCb290c3RyYXAgaW5zdGFsbHMgYSBwcm9wZXIgY21kL2Rpc3QsIGJ1aWx0IHdpdGggdGhlIG5ldyB0b29sY2hhaW4uCi0gIyBUaHJvdyBvdXJzLCBidWlsdCB3aXRoIEdvIDEuNCwgYXdheSBhZnRlciBib290c3RyYXAuCi0tLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgotK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLSBybSAtZiAuL2NtZC9kaXN0L2Rpc3QKLSAKLSAjIERPIE5PVCBBREQgQU5ZIE5FVyBDT0RFIEhFUkUuCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU0YWFjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi1Gcm9tIDEwNzM1YmI4NGRmMTdiYTY1N2Y3NjgzNWY0ODNjZDg1NDNhODc5YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODoxMiArMDQzMAotU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQotYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKLQotIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7Ci0gICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93Ci0gICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KLSAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCi0gICBidWlsdC4KLQotIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKLSAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwotICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCi0gICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgotCi0gLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCi0gICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKLSAgIHNoYXJlZCBydW50aW1lKS4KLQotTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQotanVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKLXRoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgotbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bwotYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLWluZGV4IDY4M2NhNmYuLjBhZDA4MmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTQxLDYgKzQxLDcgQEAgdmFyICgKLSAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKLSAJd29ya2RpciAgICAgICAgICBzdHJpbmcKLSAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKLSsJYnVpbGRfdG9vbGRpciAgICBzdHJpbmcKLSAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKLSAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKLSAJZXhlICAgICAgICAgICAgICBzdHJpbmcKLUBAIC01Myw2ICs1NCw3IEBAIHZhciAoCi0gCi0gCXJlYnVpbGRhbGwgICBib29sCi0gCWRlZmF1bHRjbGFuZyBib29sCi0rCWNyb3NzQnVpbGQgICBib29sCi0gCi0gCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKLSApCi1AQCAtMjQ3LDYgKzI0OSw4IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotIAl9Ci0rCi0rCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1AQCAtNDc4LDggKzQ4MiwxMCBAQCBmdW5jIHNldHVwKCkgewotIAlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotIAlpZiByZWJ1aWxkYWxsIHsKLSAJCXhyZW1vdmVhbGwocCkKLSsJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKLSAJfQotIAl4bWtkaXJhbGwocCkKLSsJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCi0gCWlmIGdvb3MgIT0gZ29ob3N0b3MgfHwgZ29hcmNoICE9IGdvaG9zdGFyY2ggewotIAkJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb29zLCBnb2FyY2gpCi1AQCAtMTIwNywxMiArMTIxMywyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAKLSAJdmFyIG5vQmFubmVyIGJvb2wKLSAJdmFyIGRlYnVnIGJvb2wKLSsJdmFyIGhvc3RPbmx5IGJvb2wKLSsJdmFyIHRhcmdldE9ubHkgYm9vbAotKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLSsKLSAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCi0gCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKLSAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCi0rCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCi0rCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCi0gCi0tCXhmbGFncGFyc2UoMCkKLSsJeGZsYWdwYXJzZSgtMSkKLSAKLSsJaWYgaG9zdE9ubHkgJiYgdGFyZ2V0T25seSB7Ci0rCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKLSsJfQotKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQotKwlpZiBmbGFnLk5BcmcoKSA+IDAgewotKwkJaWYgY3Jvc3NCdWlsZCB7Ci0rCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCi0rCQl9IGVsc2UgewotKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKLSsJCX0KLSsJfQotIAkvLyBTZXQgR09QQVRIIHRvIGFuIGludGVybmFsIGRpcmVjdG9yeS4gV2Ugc2hvdWxkbid0IGFjdHVhbGx5Ci0gCS8vIG5lZWQgdG8gc3RvcmUgZmlsZXMgaGVyZSwgc2luY2UgdGhlIHRvb2xjaGFpbiB3b24ndAotIAkvLyBkZXBlbmQgb24gbW9kdWxlcyBvdXRzaWRlIG9mIHZlbmRvciBkaXJlY3RvcmllcywgYnV0IGlmCi1AQCAtMTI2Niw4ICsxMjg5LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAkJeHByaW50ZigiXG4iKQotIAl9Ci0gCi0tCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLS0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdwotKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAotKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAotKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSsJaWYgIWNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdwotKwl9Ci0gCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQotIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKLSAJaWYgZGVidWcgewotQEAgLTEyOTYsNyArMTMyNCwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCi0tCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCWlmIGNyb3NzQnVpbGQgewotKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCi0rCX0gZWxzZSB7Ci0rCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwl9Ci0gCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQotIAlpZiBkZWJ1ZyB7Ci0gCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi1AQCAtMTMzMyw1MCArMTM2NSw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJfQotIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSAKLS0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCWlmIGNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKLSsJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgewotKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCi0rCQkJeHJlbW92ZShmKQotKwkJfQotKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQotKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKLSsJCWlmIGhvc3RPbmx5IHsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQotIAkJfQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSAJfSBlbHNlIHsKLS0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0tCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KLS0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0tCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLS0JCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCi0rCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0rCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9IGVsc2UgewotKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0rCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0rCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9Ci0gCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKLSAKLS0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCQlpZiBkZWJ1ZyB7Ci0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQotIAkJfQotLQkJZ29vcyA9IG9sZGdvb3MKLS0JCWdvYXJjaCA9IG9sZGdvYXJjaAotLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLS0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLS0JfQotLQl0YXJnZXRzIDo9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLS0JaWYgZ29vcyA9PSAianMiICYmIGdvYXJjaCA9PSAid2FzbSIgewotLQkJLy8gU2tpcCB0aGUgY21kIHRvb2xzIGZvciBqcy93YXNtLiBUaGV5J3JlIG5vdCB1c2FibGUuCi0tCQl0YXJnZXRzID0gdGFyZ2V0c1s6MV0KLS0JfQotLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoY21kR28sIHRhcmdldHMuLi4pCi0tCWlmIGRlYnVnIHsKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLS0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSAJfQotIAotIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgotQEAgLTEzOTMsOCArMTQ1OSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCX0KLSAJfQotIAotLQkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCi0tCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCi0rCS8vIGtlZXAgaXQuCi0rCWlmICFjcm9zc0J1aWxkIHsKLSsJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwl9Ci0gCi0gCWlmIGdvb3MgPT0gImFuZHJvaWQiIHsKLSAJCS8vIE1ha2Ugc3VyZSB0aGUgZXhlYyB3cmFwcGVyIHdpbGwgc3luYyBhIGZyZXNoICRHT1JPT1QgdG8gdGhlIGRldmljZS4KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMzJjNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gOWJhNTA3ZTA3NmM3NDRmNGQzOTQ0MThlNGE4NDllNjhjZDQyNmE0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE4OjU2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNy85XSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcwotc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KLWJlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKLWxpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwotdGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZwotc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCi0KLVRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCi1pbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKLWVudmlyb25tZW50IHZhcmlhYmxlLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gfCAgMyArKysKLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gIHwgIDYgKysrKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1pbmRleCAzM2I3ODE4Li43NjE3YjRjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotQEAgLTY2Miw2ICs2NjIsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoYSwgYTEgKkFjdGlvbiwgc2hsaWIgc3RyaW5nKSB7Ci0gCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gewotIAkJCQljb250aW51ZQotIAkJCX0KLSsJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7Ci0rCQkJCWNvbnRpbnVlCi0rCQkJfQotIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCi0gCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAotIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggOTMwNWIyZC4uNjU2MDMxNyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMTU1LDYgKzE1NSw4IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgotIAotIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCi0gCi0rdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCi0rCi0gZnVuYyBpbml0KCkgewotIAkvLyBicmVhayBpbml0IGN5Y2xlCi0gCUNtZEJ1aWxkLlJ1biA9IHJ1bkJ1aWxkCi1AQCAtMTY3LDYgKzE2OSwxMCBAQCBmdW5jIGluaXQoKSB7Ci0gCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQpCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCkKLSsKLSsJaWYgeCA6PSBvcy5HZXRlbnYoIkdPUk9PVF9PVkVSUklERSIpOyB4ICE9ICIiIHsKLSsJCWdvUm9vdFByZWNpb3VzID0gZmFsc2UKLSsJfQotIH0KLSAKLSAvLyBOb3RlIHRoYXQgZmxhZ3MgY29uc3VsdGVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggY2NlYmFmOC4uNTk0NTBkNyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTQ1NSw2ICs0NTUsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7Ci0gCQlyZXR1cm4gZXJyb3JzLk5ldygiYmluYXJ5LW9ubHkgcGFja2FnZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiKQotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgewotKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKLSsJCWlmIGVyciA9PSBuaWwgewotKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQotKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCi0rCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKLSsJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCi0rCQlpZiBiLklzQ21kTGlzdCB7Ci0rCQkJcmV0dXJuIG5pbAotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLUBAIC0xNDk5LDYgKzE1MTYsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIG5pbAotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgewotKwkJcCA6PSBhLlBhY2thZ2UKLSsJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgewotKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCi0rCQkJcmV0dXJuIGVycgotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZTEzMmYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKLWNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KLQotV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCi0KLUFkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0Ci1idWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCi0KLVJlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1Ib25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggNjU2MDMxNy4uNWYzYTk4OCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMjMxLDcgKzIzMSwxMyBAQCBmdW5jIEFkZEJ1aWxkRmxhZ3MoY21kICpiYXNlLkNvbW1hbmQpIHsKLSAKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKLS0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwotKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQotKwl9IGVsc2UgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwl9Ci0rCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkTW9kLCAibW9kIiwgIiIsICIiKQotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiMTEwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAotCi1SZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLWZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgotbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLWluZGV4IDIzNzQxZWIuLjhlNzQ1NzYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1AQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotaW5kZXggNDVhNDA2ZS4uNzI0ZDNlMyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLWluZGV4IDdjNjY2MjMuLmQ4YjFkYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotaW5kZXggMjMxZTFmZi4uNjMxZGQ3YSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLWluZGV4IDk2MDQyMDguLjVlZjNmZmMgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi1pbmRleCA1MWQxNzkxLi5iMTVkYTg1IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYzLDcgKzYzLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJWGNvZmZyZWxvYzE6ICAgICAgeGNvZmZyZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLWluZGV4IDM0NTQ0NzYuLjQyY2MzNDYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotaW5kZXggZjFmYWQyMC4uZDJjYTEwYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCi0rCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI1OTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTQiCitHT19NSU5PUiA9ICIuMSIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMmFkMjU3MjExNWIwZDFiNGNiNGMxMzhlNmIzYTMxY2VlNjI5NGNiNDhhZjc1ZWU4NmJlYzNkY2EwNDUwNzY3NiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NzY2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gOWUzZGM0NGNkZmE1OGQ5NjUwNGQwYTc4OWRjODI2MTdkZDViZWY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjAxOjEzICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBjbWQvZ286IEFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMDIsMTEgKzEwMiwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgeworLQkJY2MgPSBlbnZbMF0KKysJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKKy0JCWN4eCA9IGVudlswXQorKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkFSIiwgVmFsdWU6IGVudk9yKCJBUiIsICJhciIpfSkKKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTg4NTY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMTkgQEAKK0Zyb20gYTEzYWU0ODRlNDExMzkwOTQ1MDVkMjgzNDQzN2U5MjYyYTUzMTVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE0OjIyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtMTU2LDcgKzE1Niw3IEBAIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKKyBmdW5jIEV4dHJhRW52VmFyc0Nvc3RseSgpIFtdY2ZnLkVudlZhciB7CisgCXZhciBiIHdvcmsuQnVpbGRlcgorIAliLkluaXQoKQorLQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9KQorKwljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9LCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQkvLyBTaG91bGQgbm90IGhhcHBlbiAtIGIuQ0ZsYWdzIHdhcyBnaXZlbiBhbiBlbXB0eSBwYWNrYWdlLgorIAkJZm10LkZwcmludGYob3MuU3RkZXJyLCAiZ286IGludmFsaWQgY2ZsYWdzOiAldlxuIiwgZXJyKQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMzIsNiArMzIsOCBAQCBpbXBvcnQgKAorIAkidGltZSIKKyApCisgCisrdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKKysKKyAvLyBhY3Rpb25MaXN0IHJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aW9ucyBpbiB0aGUgZGFnIHJvb3RlZCBhdCByb290CisgLy8gYXMgdmlzaXRlZCBpbiBhIGRlcHRoLWZpcnN0IHBvc3Qtb3JkZXIgdHJhdmVyc2FsLgorIGZ1bmMgYWN0aW9uTGlzdChyb290ICpBY3Rpb24pIFtdKkFjdGlvbiB7CitAQCAtMjA4LDcgKzIxMCw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW8KKyAJLy8gQXNzdW1lIGIuV29ya0RpciBpcyBiZWluZyB0cmltbWVkIHByb3Blcmx5LgorIAkvLyBXaGVuIC10cmltcGF0aCBpcyB1c2VkIHdpdGggYSBwYWNrYWdlIGJ1aWx0IGZyb20gdGhlIG1vZHVsZSBjYWNoZSwKKyAJLy8gdXNlIHRoZSBtb2R1bGUgcGF0aCBhbmQgdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkuCistCWlmICFwLkdvcm9vdCAmJiAhY2ZnLkJ1aWxkVHJpbXBhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKysJaWYgIXAuR29yb290ICYmICFvbWl0R29wYXRoICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCisgCX0gZWxzZSBpZiBjZmcuQnVpbGRUcmltcGF0aCAmJiBwLk1vZHVsZSAhPSBuaWwgeworIAkJZm10LkZwcmludGYoaCwgIm1vZHVsZSAlc0Alc1xuIiwgcC5Nb2R1bGUuUGF0aCwgcC5Nb2R1bGUuVmVyc2lvbikKK0BAIC0yMjQsMTMgKzIyNiwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvCisgCX0KKyAJaWYgbGVuKHAuQ2dvRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJjZ28gJXFcbiIsIGIudG9vbElEKCJjZ28iKSkKKy0JCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCkKKy0JCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSgpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorKwkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwLCB0cnVlKQorKwkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKHRydWUpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorIAkJaWYgbGVuKHAuQ1hYRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSgpLCBjeHhmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSh0cnVlKSwgY3h4ZmxhZ3MpCisgCQl9CisgCQlpZiBsZW4ocC5GRmlsZXMpID4gMCB7CistCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKCksIGZmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUodHJ1ZSksIGZmbGFncykKKyAJCX0KKyAJCS8vIFRPRE8ocnNjKTogU2hvdWxkIHdlIGluY2x1ZGUgdGhlIFNXSUcgdmVyc2lvbiBvciBGb3J0cmFuL0dDQy9HKysvT2JqZWN0aXZlLUMgY29tcGlsZXIgdmVyc2lvbnM/CisgCX0KK0BAIC0yMjI4LDMzICsyMjMwLDQ4IEBAIHZhciAoCisgLy8gZ2NjQ21kIHJldHVybnMgYSBnY2MgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDQyBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR2NjQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KKyBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBjY0V4ZSByZXR1cm5zIHRoZSBDQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBjY0V4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKKytmdW5jIChiICpCdWlsZGVyKSBjY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQorIH0KKyAKKyAvLyBjeHhFeGUgcmV0dXJucyB0aGUgQ1hYIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGZjRXhlIHJldHVybnMgdGhlIEZDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShjZmcuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKKyt9CisrCisrdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgorKworK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgeworKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKKysJaWYgIWZpbHRlckZsYWdzIHsKKysJCXJldHVybiBmbGFncworKwl9CisrCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKKysJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKKysJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKKysJCX0KKysJfQorKwlyZXR1cm4gbmV3ZmxhZ3MKKyB9CisgCisgLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCitAQCAtMjI2MywxMSArMjI4MCwxNiBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKyAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKKyAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgorIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKKyAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKKyAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQorIAl9CisrCisrCWlmIGZpbHRlcmVkIHsKKysJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQorKwl9CisrCisgCXJldHVybiBjb21waWxlcgorIH0KKyAKK0BAIC0yNDI4LDcgKzI0NTAsNyBAQCBmdW5jIGVudkxpc3Qoa2V5LCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7CisgfQorIAorIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTI0NDcsNiArMjQ2OSwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlCisgCQlyZXR1cm4KKyAJfQorIAorKwlpZiBmaWx0ZXJlZCB7CisrCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCisrCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKKysJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKKysJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQorKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKKysJfQorKworIAlyZXR1cm4KKyB9CisgCitAQCAtMjQ2MSw3ICsyNDkxLDcgQEAgdmFyIGNnb1JlID0gbGF6eXJlZ2V4cC5OZXcoYFsvXFw6XWApCisgCisgZnVuYyAoYiAqQnVpbGRlcikgY2dvKGEgKkFjdGlvbiwgY2dvRXhlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUywgcGNMREZMQUdTLCBjZ29maWxlcywgZ2NjZmlsZXMsIGd4eGZpbGVzLCBtZmlsZXMsIGZmaWxlcyBbXXN0cmluZykgKG91dEdvLCBvdXRPYmogW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlwIDo9IGEuUGFja2FnZQorLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHAsIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBuaWwsIG5pbCwgZXJyCisgCX0KK0BAIC0yODIwLDcgKzI4NTAsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBzd2lnSW50U2l6ZShvYmpkaXIgc3RyCisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmM3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gMjhhZGE4ODk2Yjc2ZDYyMDI0MGJhZmMyMmFhMzk1MDcxZDYwMTQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE1OjM3ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBjbWQvZ286IEFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAorCit0byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTI0Niw3ICsyNDYsOSBAQCBmdW5jIHhpbml0KCkgeworIAl3b3JrZGlyID0geHdvcmtkaXIoKQorIAl4YXRleGl0KHJtd29ya2RpcikKKyAKKy0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKysJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorKwl9CisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC02NCw3ICs2NCwxMSBAQCBmdW5jIGRlZmF1bHRDb250ZXh0KCkgYnVpbGQuQ29udGV4dCB7CisgCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgorIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgY3R4dC5HT1JPT1QgcmF0aGVyIHRoYW4KKyAJCS8vIHJ1bnRpbWUuR09ST09ULgorLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgeworKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQorKwkJfSBlbHNlIHsKKysJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCX0KKyAJfQorIAorIAljdHh0LkdPUEFUSCA9IGVudk9yKCJHT1BBVEgiLCBjdHh0LkdPUEFUSCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjOWM3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYmY1Y2Y1MzAxYWU1OTE0NDk4NDU0Yzg3MjkzZDFkZjJlMWQ4NDg5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE2OjMyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitzbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZworY2FuIGZpbmQgdGhlbS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMjgwLDYgKzEyODAsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTEyOTEsNiArMTI5Miw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTI5OSw2ICsxMzAxLDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWMxMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBmMDVlZjNkZWQ1MmI5ODUzN2MxMGVmZDBiMTVjZDk2MTI0NzE1MjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTc6MTYgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTc4LDcgKzE3OCw3IEBAIGlmIFsgIiRHT1JPT1RfQk9PVFNUUkFQIiA9ICIkR09ST09UIiBdOworIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAorIAorICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KKyBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKK0BAIC0yMDksNyArMjA5LDcgQEAgZmkKKyAjIFJ1biBkaXN0IGJvb3RzdHJhcCB0byBjb21wbGV0ZSBtYWtlLmJhc2guCisgIyBCb290c3RyYXAgaW5zdGFsbHMgYSBwcm9wZXIgY21kL2Rpc3QsIGJ1aWx0IHdpdGggdGhlIG5ldyB0b29sY2hhaW4uCisgIyBUaHJvdyBvdXJzLCBidWlsdCB3aXRoIEdvIDEuNCwgYXdheSBhZnRlciBib290c3RyYXAuCistLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKKyBybSAtZiAuL2NtZC9kaXN0L2Rpc3QKKyAKKyAjIERPIE5PVCBBREQgQU5ZIE5FVyBDT0RFIEhFUkUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZWUwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDI3NCBAQAorRnJvbSAxMDczNWJiODRkZjE3YmE2NTdmNzY4MzVmNDgzY2Q4NTQzYTg3OWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTg6MTIgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0NoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KK2FuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6CisKKyAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOworICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdworICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCisgICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQorICAgYnVpbHQuCisKKyAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCisgICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKKyAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJworICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KKworIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAorICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCisgICBzaGFyZWQgcnVudGltZSkuCisKK05vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKK2p1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCit0aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKK2xpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KK2J1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTQxLDYgKzQxLDcgQEAgdmFyICgKKyAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKKyAJd29ya2RpciAgICAgICAgICBzdHJpbmcKKyAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKKysJYnVpbGRfdG9vbGRpciAgICBzdHJpbmcKKyAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKKyAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKKyAJZXhlICAgICAgICAgICAgICBzdHJpbmcKK0BAIC01Myw2ICs1NCw3IEBAIHZhciAoCisgCisgCXJlYnVpbGRhbGwgICBib29sCisgCWRlZmF1bHRjbGFuZyBib29sCisrCWNyb3NzQnVpbGQgICBib29sCisgCisgCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKKyApCitAQCAtMjQ5LDYgKzI1MSw4IEBAIGZ1bmMgeGluaXQoKSB7CisgCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKyAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAl9CisrCisrCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitAQCAtNDgwLDggKzQ4NCwxMCBAQCBmdW5jIHNldHVwKCkgeworIAlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAlpZiByZWJ1aWxkYWxsIHsKKyAJCXhyZW1vdmVhbGwocCkKKysJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKKyAJfQorIAl4bWtkaXJhbGwocCkKKysJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCisgCWlmIGdvb3MgIT0gZ29ob3N0b3MgfHwgZ29hcmNoICE9IGdvaG9zdGFyY2ggeworIAkJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb29zLCBnb2FyY2gpCitAQCAtMTI0NCwxMiArMTI1MCwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAKKyAJdmFyIG5vQmFubmVyIGJvb2wKKyAJdmFyIGRlYnVnIGJvb2wKKysJdmFyIGhvc3RPbmx5IGJvb2wKKysJdmFyIHRhcmdldE9ubHkgYm9vbAorKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KKysKKyAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCisgCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKKyAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCisrCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCisrCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCisgCistCXhmbGFncGFyc2UoMCkKKysJeGZsYWdwYXJzZSgtMSkKKyAKKysJaWYgaG9zdE9ubHkgJiYgdGFyZ2V0T25seSB7CisrCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJfQorKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQorKwlpZiBmbGFnLk5BcmcoKSA+IDAgeworKwkJaWYgY3Jvc3NCdWlsZCB7CisrCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCisrCQl9IGVsc2UgeworKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJCX0KKysJfQorIAkvLyBTZXQgR09QQVRIIHRvIGFuIGludGVybmFsIGRpcmVjdG9yeS4gV2Ugc2hvdWxkbid0IGFjdHVhbGx5CisgCS8vIG5lZWQgdG8gc3RvcmUgZmlsZXMgaGVyZSwgc2luY2UgdGhlIHRvb2xjaGFpbiB3b24ndAorIAkvLyBkZXBlbmQgb24gbW9kdWxlcyBvdXRzaWRlIG9mIHZlbmRvciBkaXJlY3RvcmllcywgYnV0IGlmCitAQCAtMTMwMyw4ICsxMzI2LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCistCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKKy0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAorKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAorKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KKysJaWYgIWNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwl9CisgCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQorIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKKyAJaWYgZGVidWcgeworQEAgLTEzMzMsNyArMTM2MSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCistCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCisrCX0gZWxzZSB7CisrCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwl9CisgCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQorIAlpZiBkZWJ1ZyB7CisgCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCitAQCAtMTM3MCw1MCArMTQwMiw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKyAKKy0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKKysJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKKysJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgeworKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCisrCQkJeHJlbW92ZShmKQorKwkJfQorKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQorKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKKysJCWlmIGhvc3RPbmx5IHsKKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJfSBlbHNlIHsKKy0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCistCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKy0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysKKysJCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKysJCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCX0gZWxzZSB7CisrCQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKysJCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKysJCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKyAKKy0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCistCQl9CistCQlnb29zID0gb2xkZ29vcworLQkJZ29hcmNoID0gb2xkZ29hcmNoCistCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorLQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCistCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorLQl9CistCXRhcmdldHMgOj0gW11zdHJpbmd7InN0ZCIsICJjbWQifQorLQlpZiBnb29zID09ICJqcyIgJiYgZ29hcmNoID09ICJ3YXNtIiB7CistCQkvLyBTa2lwIHRoZSBjbWQgdG9vbHMgZm9yIGpzL3dhc20uIFRoZXkncmUgbm90IHVzYWJsZS4KKy0JCXRhcmdldHMgPSB0YXJnZXRzWzoxXQorLQl9CistCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgdGFyZ2V0cy4uLikKKy0JaWYgZGVidWcgeworLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQorLQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCistCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKysJCX0KKyAJfQorIAorIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgorQEAgLTE0MzAsOCArMTQ5NiwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCX0KKyAJfQorIAorLQkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCistCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCisrCS8vIGtlZXAgaXQuCisrCWlmICFjcm9zc0J1aWxkIHsKKysJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwl9CisgCisgCWlmIGdvb3MgPT0gImFuZHJvaWQiIHsKKyAJCS8vIE1ha2Ugc3VyZSB0aGUgZXhlYyB3cmFwcGVyIHdpbGwgc3luYyBhIGZyZXNoICRHT1JPT1QgdG8gdGhlIGRldmljZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNmODNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA0IEBACitGcm9tIDliYTUwN2UwNzZjNzQ0ZjRkMzk0NDE4ZTRhODQ5ZTY4Y2Q0MjZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODo1NiArMDQzMAorU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1RoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKK3N0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCitiZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCitsaWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKK3RoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKK3NldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgorCitUaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQoraW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCitlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA2ICsrKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC02NzAsNiArNjcwLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKAorIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTY3LDYgKzE2Nyw4IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgorIAorIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCisgCisrdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCisrCisgZnVuYyBpbml0KCkgeworIAkvLyBicmVhayBpbml0IGN5Y2xlCisgCUNtZEJ1aWxkLlJ1biA9IHJ1bkJ1aWxkCitAQCAtMTc5LDYgKzE4MSwxMCBAQCBmdW5jIGluaXQoKSB7CisgCisgCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQsIERlZmF1bHRCdWlsZEZsYWdzKQorIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwsIERlZmF1bHRCdWlsZEZsYWdzKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTQ2NCw2ICs0NjQsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyCisgCQlyZXR1cm4gZXJyb3JzLk5ldygiYmluYXJ5LW9ubHkgcGFja2FnZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiKQorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgeworKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKKysJCWlmIGVyciA9PSBuaWwgeworKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgorKwkJCXJldHVybiBuaWwKKysJCX0KKysJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKKysJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQlpZiBiLklzQ21kTGlzdCB7CisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KK0BAIC0xNDkzLDYgKzE1MTAsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdAorIAkJcmV0dXJuIG5pbAorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgeworKwkJcCA6PSBhLlBhY2thZ2UKKysJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgeworKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCisrCQkJcmV0dXJuIGVycgorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTVkOTgxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKK2NtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KKworV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKK3RvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCisKK0FkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0CitidWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCisKK1JlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0yNTEsNyArMjUxLDEzIEBAIGZ1bmMgQWRkQnVpbGRGbGFncyhjbWQgKmJhc2UuQ29tbWFuZCwgbWEKKyAKKyAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQorIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKKy0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKworKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKKysJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQorKwl9IGVsc2UgeworKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKwl9CisrCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCisgCWlmIG1hc2smT21pdE1vZEZsYWcgPT0gMCB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3Y2ZiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDExNSBAQAorRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAorCitSZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK2ZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgorbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK0BAIC02Myw3ICs2Myw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCVhjb2ZmcmVsb2MxOiAgICAgIHhjb2ZmcmVsb2MxLAorIAorIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAorIAorIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitAQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCmluZGV4IDkzYTNkM2IuLmYxOGQ5MjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwpAQCAtMjcsNiArMjcsMTYgQEAKIEdPVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCiBleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKIAorZXhwb3J0IEdPSE9TVE9TID89ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPz0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID89ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09PUyA/PSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID89ICIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPQVJNID89ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPz0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPz0gIiR7VEFSR0VUX0dPTUlQU30iCitleHBvcnQgR09ST09UX0ZJTkFMID89ICIke2xpYmRpcn0vZ28iCisKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlCVUlMRF9DQz0ke0JVSUxEX0NDfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDk0NWQwZjkuLmQ0OTI1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEzLDExICsxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgQ0dPX0NGTEFHUyA9ICIke0NGTEFHU30iCiBleHBvcnQgQ0dPX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKIGV4cG9ydCBHT19MREZMQUdTID0gJy1saW5rbW9kZSBleHRlcm5hbCAtZXh0bGQgJHtIT1NUX1BSRUZJWH1nY2MgLWV4dGxkZmxhZ3MgIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0gJHtMREZMQUdTfSInCkBAIC0yNSw4ICsyMSw4IEBACiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgotCWV4cG9ydCBDWFhfRk9SXyR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfT0iJHtIT1NUX1BSRUZJWH1neHggLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ0NfRk9SXyR7SE9TVF9HT1RVUExFfT0iJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke0hPU1RfR09UVVBMRX09IiR7SE9TVF9QUkVGSVh9Z3h4IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDNkMzQ0YTcuLjNkNTgwM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKQEAgLTUsMjMgKzUsMTQgQEAKIAogUE4gPSAiZ28tY3Jvc3MtJHtUVU5FX1BLR0FSQ0h9IgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBHT0NBQ0hFID0gIiR7Qn0vLmNhY2hlIgogQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke0dPT1N9XyR7R09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotCWV4cG9ydCBDWFhfRk9SXyR7R09PU31fJHtHT0FSQ2h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPVFVQTEV9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCmluZGV4IDk0ZjZmYjguLmYwYmVjNzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKQEAgLTQsMTggKzQsMTEgQEAKIFBOID0gImdvLWNyb3Nzc2RrLSR7U0RLX1NZU30iCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTdkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZTA1MTY2OWQxMTdkN2NkOWIyNGNlYTM0OTQ5NTllZWMzOTZlYzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjUgSmFuIDIwMjAgMjI6Mzc6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gL2JvbHRfcmlzY3Y2NDogQWRkIHN1cHBvcnQgZm9yIHJpc2N2NjQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvIHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvCisKK2RpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uM2Q2Yjg4ZDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfcmlzY3Y2NC5nbworQEAgLTAsMCArMSwxMiBAQAorKy8vICtidWlsZCByaXNjdjY0CisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHhGRkZGRkZGRkZGRkYgLy8gMjU2VEIKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4N0ZGRkZGRkYKKysKKysvLyBBcmUgdW5hbGlnbmVkIGxvYWQvc3RvcmVzIGJyb2tlbiBvbiB0aGlzIGFyY2g/CisrdmFyIGJyb2tlblVuYWxpZ25lZCA9IGZhbHNlCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKaW5kZXggZWFkODc4Ny4uNjE1Y2IyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgpAQCAtNiw2ICs2LDcgQEAKIEdPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCiBTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAogICAgICAgICAgICIKIAogU1JDUkVWID0gIjFmN2MxOWU1ZjUyZjQ5ZmZiOWY5NTZmNjRjMDEwYmUxNDY4MzQ2OGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKaW5kZXggOTczMWUxNi4uMjExNzlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTIsMTUgKzIsNiBAQAogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtDUFBGTEFHU30iCiBleHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7Q1hYRkxBR1N9IgpAQCAtMjksMTQgKzIwLDE0IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtDQ30iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7Q1hYfSIKIAogCWNkIHNyYwogCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIgc3RkCiAJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgogCQlleHBvcnQgR09UT09MRElSPSIke0J9L3BrZy90b29sL25hdGl2ZV9uYXRpdmUiCi0JCUNDPSIkQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKKwkJQ0M9IiRDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKIAkJCSRHT1RPT0xESVIvZ29fYm9vdHN0cmFwIGluc3RhbGwgLWxpbmtzaGFyZWQgLWJ1aWxkbW9kZT1zaGFyZWQgJHtHT19TSExJQl9MREZMQUdTfSBzdGQKIAlmaQogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCmluZGV4IDkxZWZkM2UuLjhlNDQyNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMSwxNSArMSw2IEBACiBERVBFTkRTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCi1leHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgotZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgR09DQUNIRSA9ICIke0J9Ly5jYWNoZSIKIEdPX0xERkxBR1MgPSAiIgogR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgpAQCAtNDMsMTIgKzM0LDEyIEBACiAJCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2Jpbi8KIAkJbG4gLXNmIC4uLyR7YmFzZWxpYn0vZ28vYmluLyRuYW1lICR7RH0ke2JpbmRpcn0vCiAJZG9uZQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3NyYwogfQogCiBQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYiCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ28vYmluICR7bGliZGlyfS9nby9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwgYmFzaCIKK1JERVBFTkRTXyR7UE59ID0gImdvLXJ1bnRpbWUiCiBJTlNBTkVfU0tJUF8ke1BOfSA9ICJsZGZsYWdzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmNkYjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby10YXJnZXQuaW5jCi0KLWV4cG9ydCBHT0JVSUxETU9ERT0iIgotCi0jIEFkZCBwaWUgdG8gR09CVUlMRE1PREUgdG8gc2F0aXNmeSAidGV4dHJlbCIgUUEgY2hlY2tpbmcsIGJ1dCBtaXBzCi0jIGRvZXNuJ3Qgc3VwcG9ydCAtYnVpbGRtb2RlPXBpZSwgc28gc2tpcCB0aGUgUUEgY2hlY2tpbmcgZm9yIG1pcHMgYW5kIGl0cwotIyB2YXJpYW50cy4KLXB5dGhvbigpIHsKLSAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyk6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCdJTlNBTkVfU0tJUF8lcycgJSBkLmdldFZhcignUE4nKSwgIiB0ZXh0cmVsIikKLSAgICBlbHNlOgotICAgICAgICBkLnNldFZhcignR09CVUlMRE1PREUnLCAncGllJykKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNDBjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXRhcmdldC5pbmMKKworZXhwb3J0IEdPQlVJTERNT0RFPSIiCisKKyMgQWRkIHBpZSB0byBHT0JVSUxETU9ERSB0byBzYXRpc2Z5ICJ0ZXh0cmVsIiBRQSBjaGVja2luZywgYnV0IG1pcHMvcmlzY3YKKyMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcy9yaXNjdiBhbmQgaXRzCisjIHZhcmlhbnRzLgorcHl0aG9uKCkgeworICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnLFRydWUpIG9yICdyaXNjdicgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyxUcnVlKToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicsVHJ1ZSksICIgdGV4dHJlbCIpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ0dPQlVJTERNT0RFJywgJ3BpZScpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qcXVlcnkvanF1ZXJ5XzMuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmY2ZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gImpRdWVyeSBpcyBhIGZhc3QsIHNtYWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vanF1ZXJ5LmNvbS8iCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7QlB9LmpzO3N0YXJ0bGluZT04O2VuZGxpbmU9MTA7bWQ1PWNkYjg2ZjViZGE5MGNhZWMwMjM1OTJkMmU3NjgzNTdjIgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5qcztuYW1lPWpzIFwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5taW4uanM7bmFtZT1taW4gXAorICAgIGh0dHBzOi8vY29kZS5qcXVlcnkuY29tLyR7QlB9Lm1pbi5tYXA7bmFtZT1tYXAgXAorICAgICIKKworU1JDX1VSSVtqcy5zaGEyNTZzdW1dID0gIjVhOTNhODg0OTNhYTMyYWFiMjI4YmY0NTcxYzAxMjA3ZDNiNDJiMDAwMjQwOWE0NTRkNDA0YjRkODM5NWJkNTUiCitTUkNfVVJJW21pbi5zaGEyNTZzdW1dID0gIjA5MjVlOGFkN2JkOTcxMzkxYThiMWU5OGJlOGU4N2E2OTcxOTE5ZWI1YjYwYzE5NjQ4NTk0MWMzYzFkZjA4OWEiCitTUkNfVVJJW21hcC5zaGEyNTZzdW1dID0gIjhkYTc0YWVjMGZjZGQ3Njc4YTI2NjNiM2NjOWJhZmJhZjAwOWU2ZDY5MjliMjhiYjNkZDk1YmNlZDE4MjA2ZjYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpxdWVyeS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLmpzIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2phdmFzY3JpcHQvJHtCUE59LworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59LmpzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke0JQfS5taW4uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59Lm1pbi5qcworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0ubWluLm1hcCAke0R9JHtkYXRhZGlyfS9qYXZhc2NyaXB0LyR7QlBOfS8ke0JQTn0ubWluLm1hcAorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaAppbmRleCAyNmU4YjA2Li41OWMwOWFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTEsNDEgKzEsMjUgQEAKLUZyb20gZmY0YWFlNGM4YmVhZjE3Y2I4ZTdhMzQzMWY2YzU0MWVjY2ZhZTI0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjI4ODU5ZWE5MzExMGQ1MmQ4YTg3ZDdiNWE2Yzg3OTZkMGQ1MjNlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyMjowOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24uCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCi0gbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSBsaWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDNhZDllMTguLjBlN2RkNGIgMTAwNjQ0Ci0tLS0gYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3ICsxLDcgQEAKLSBmaW5kX3BhY2thZ2UgKFB5dGhvbkxpYnMgMi42KQotIGZpbmRfcGFja2FnZSAoUHl0aG9uSW50ZXJwIDIuNiBSRVFVSVJFRCkKK2RpZmYgLS1naXQgYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitpbmRleCBmYTU5MGFlLi42OTEzMjE0IDEwMDY0NAorLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtMTE3LDcgKzExNyw3IEBAIElGIChTS0JVSUxEKQorICAgICBJTlNUQUxMKEZJTEVTIGxpYmNvbXBzL19faW5pdF9fLnB5IERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorICAgICBJTlNUQUxMKFRBUkdFVFMgcHljb21wcyBMSUJSQVJZIERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorIEVMU0UgKCkKKy0gICAgRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyAgICAjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQogIAotLWV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0rI2V4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0gCi0gaW5jbHVkZV9kaXJlY3Rvcmllcygke1BZVEhPTl9JTkNMVURFX1BBVEh9KQotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtMSUJDT01QU19JTkNMVURFX1BBVEh9KQotZGlmZiAtLWdpdCBhL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3ZmFmYTlmLi5lZDgyZDNkIDEwMDY0NAotLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotQEAgLTIsNyArMiw3IEBAIGZpbmRfcGFja2FnZSAoUHl0aG9uTGlicyAzLjApCi0gZmluZF9wYWNrYWdlIChQeXRob25JbnRlcnAgMy4wKQotICNhZGRfY3VzdG9tX3RhcmdldChweTMtY29weSkKLSAKLS1leGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotIAotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TElCQ09NUFNfSU5DTFVERV9QQVRIfSkKLS0tIAotMi4xMS4wCi0KKyAgICAgSU5TVEFMTChGSUxFUyAke3B5Y29tcHNfU1JDRElSfS9saWJjb21wcy9fX2luaXRfXy5weSBERVNUSU5BVElPTiAke1BZVEhPTl9JTlNUQUxMX0RJUn0vbGliY29tcHMpCisgICAgICNJTlNUQUxMKEZJTEVTICR7cHljb21wc19TUkNESVJ9L3Rlc3RzL19fdGVzdC5weSBERVNUSU5BVElPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiCmluZGV4IDM3MmMzYzMuLjQwYjYwMTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wc19naXQuYmIKQEAgLTgsOCArOCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jcmMzMi5jLXRvLXNvdXJjZXMtbGlzdC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotUFYgPSAiMC4xLjExIgotU1JDUkVWID0gImQ4NjhhNzliNzZmYjk4MGQxMzcxYzI4MTI0YWUwN2YwMGQyYjYzYTkiCitQViA9ICIwLjEuMTQiCitTUkNSRVYgPSAiNWEwZTA0Mjg2ZjM0NjJlMzMwOGYyYTMzMmViMGY5MGE2NjkyMDIxOCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZGY1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA1ZjhlZWU1MDQwZDcwNzQ3MTBjZDU0MmZjNTBmN2E0MDkxODMyMWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjMgRGVjIDIwMTkgMTQ6MzA6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSA8c3RkZXhjZXB0PiBmb3IgcnVudGltZV9lcnJvcgorCitGaXhlcworCitlcnJvcjogY2xhc3MgJ2xpYmRuZjo6TW9kdWxlUGFja2FnZUNvbnRhaW5lcjo6RXhjZXB0aW9uJyBkb2VzIG5vdCBoYXZlIGFueSBmaWVsZCBuYW1lZCAncnVudGltZV9lcnJvcicKKyAgICAgICAgIGV4cGxpY2l0IEV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmd2hhdCkgOiBydW50aW1lX2Vycm9yKHdoYXQpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzg2N10KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJkbmYvZ29hbC9Hb2FsLmhwcCAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgbGliZG5mL21vZHVsZS9Nb2R1bGVQYWNrYWdlQ29udGFpbmVyLmhwcCB8IDEgKworIGxpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwICAgICAgfCAzICsrLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJkbmYvZ29hbC9Hb2FsLmhwcCBiL2xpYmRuZi9nb2FsL0dvYWwuaHBwCitpbmRleCBmMzNkZmEyNC4uN2I4ZDgyMmMgMTAwNjQ0CistLS0gYS9saWJkbmYvZ29hbC9Hb2FsLmhwcAorKysrIGIvbGliZG5mL2dvYWwvR29hbC5ocHAKK0BAIC0yMiw2ICsyMiw3IEBACisgI2RlZmluZSBfX0dPQUxfSFBQCisgCisgI2luY2x1ZGUgPG1lbW9yeT4KKysjaW5jbHVkZSA8c3RkZXhjZXB0PgorIAorICNpbmNsdWRlICIuLi9kbmYtdHlwZXMuaCIKKyAjaW5jbHVkZSAiLi4vaHktZ29hbC5oIgorZGlmZiAtLWdpdCBhL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitpbmRleCAxZjgxNWZkYS4uMzdhODgzMmQgMTAwNjQ0CistLS0gYS9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCisrKysgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAjaW5jbHVkZSA8c2V0PgorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgCisgLy9jbGFzcyBNb2R1bGVQYWNrYWdlQ29udGFpbmVyOworIC8vdHlwZWRlZiBzdGQ6OnNoYXJlZF9wdHI8TW9kdWxlUGFja2FnZUNvbnRhaW5lcj4gTW9kdWxlUGFja2FnZUNvbnRhaW5lclB0cjsKK2RpZmYgLS1naXQgYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcCBiL2xpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwCitpbmRleCA2NjgyYjcyOS4uMGZjOGI1Y2QgMTAwNjQ0CistLS0gYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcAorKysrIGIvbGliZG5mL3JlcG8vc29sdmFibGUvRGVwZW5kZW5jeS5jcHAKK0BAIC0xOCw2ICsxOCw3IEBACisgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgI2luY2x1ZGUgIkRlcGVuZGVuY3kuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvdXRpbHMvdXRpbHMuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvcmVwby9EZXBlbmRlbmN5U3BsaXR0ZXIuaHBwIgorQEAgLTEwNiw0ICsxMDcsNCBAQCBEZXBlbmRlbmN5OjpnZXRSZWxkZXBJZChEbmZTYWNrICpzYWNrLCBjb25zdCBjaGFyICogcmVsZGVwU3RyKQorICAgICB9CisgfQorIAorLX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhM2UwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNjZkOWIyYmEzZmJjN2IwNGYyYjVhZDlkMGU1MzcxMzQwYzAzN2I1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmVrIEJsYWhhIDxtYmxhaGFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTAgSnVsIDIwMTkgMTA6MTE6MDEgKzAyMDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIEZpeCBQeXRob24gMy44IGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAoUmhCdWc6MTcyNDI0NCkKKworVGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjggYnkKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzYzODE6CisKKy91c3IvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2RuZi9wYWNrYWdlLnB5OjU3OiBEZXByZWNhdGlvbldhcm5pbmc6IFBZX1NTSVpFX1RfQ0xFQU4gd2lsbCBiZSByZXF1aXJlZCBmb3IgJyMnIGZvcm1hdHMKKyAgcmV0dXJuIHN1cGVyKFBhY2thZ2UsIHNlbGYpLmNoa3N1bQorCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE3MjQyNDQKKy0tLQorIHB5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAgICAgICB8IDMgKystCisgcHl0aG9uL2hhd2tleS9wYWNrYWdlZGVsdGEtcHkuY3BwIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKy0tLQorCitVbmNoYW5nZWQuICBBcHBlYXJzIGluIHZlcnNpb24gMC4zNS4yLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2hhd2tleS9wYWNrYWdlLXB5LmNwcCBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAKK2luZGV4IDUxMDJiYmEuLjY4ZTAzY2IgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCisrKysgYi9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCitAQCAtMTgsNiArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKysjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyAjaW5jbHVkZSA8UHl0aG9uLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCitAQCAtMjUxLDcgKzI1Miw3IEBAIGdldF9jaGtzdW0oX1BhY2thZ2VPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisgI2lmIFBZX01BSk9SX1ZFUlNJT04gPCAzCisgICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoImlzIyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworICNlbHNlCistICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoIml5IyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworKyAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgKFB5X3NzaXplX3QpY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIHJlczsKK2RpZmYgLS1naXQgYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAgYi9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKK2luZGV4IGNhMWNiN2QuLjFhNjQ4MzYgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKKysrKyBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCisrI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisgI2luY2x1ZGUgPFB5dGhvbi5oPgorIAorIC8vIGhhd2tleQorQEAgLTkyLDcgKzkzLDcgQEAgZ2V0X2Noa3N1bShfUGFja2FnZURlbHRhT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorICNpZiBQWV9NQUpPUl9WRVJTSU9OIDwgMworICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpcyMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZWxzZQorLSAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKysgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaXkjIiwgdHlwZSwgY3MsIChQeV9zc2l6ZV90KWNoZWNrc3VtX2xlbmd0aCk7CisgI2VuZGlmCisgCisgICAgIHJldHVybiByZXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4yOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKaW5kZXggM2YxMWUwMi4uY2MyY2ViOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKQEAgLTcsOSArNywxMiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1XSVRIX1RFU1RTLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiNzUxZjg5MDQ1YjgwZDU4YzBkMDU4MDBmNzQzNTdjZjc4Y2RmN2U3NyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjUsNCArMjgsNSBAQAogRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUE5CTEFDS0xJU1RbbGliZG5mXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsICdwYWNrYWdlX3JwbScsICcnLCAnRG9lcyBub3QgYnVpbGQgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMgZHVlIGRpc2FibGVkIHJwbSBzdXBwb3J0IGluIGxpYnNvbHYnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTEwMjUtMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEwMDEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCi1ERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCi1oaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3N0ZGMtcHJlZGVmLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ2NTY4NDY3MDgwY2ZkNzVlNzE1ZDA0NTEwMmI1NDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZjAzNjY2MGQ0NzhiZmFhMTRlNDA3ZmM1ZGUyNmQyMmRhMTA4NzExOGM4OTdiMWEzYWQyZTkwY2I3YmYzOSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMjMxLTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyZDU3YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJCU0QgcmVwbGFjZW1lbnQgZm9yIGxpYnJlYWRsaW5lIgorREVTQ1JJUFRJT04gPSAiQ29tbWFuZCBsaW5lIGVkaXRvciBsaWJyYXJ5IHByb3ZpZGluZyBnZW5lcmljIGxpbmUgZWRpdGluZywgXAoraGlzdG9yeSwgYW5kIHRva2VuaXphdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU0MjI4ZDBjNWE5MDkzYjAxYWVhYWVhZTY2NDE1MzMiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zdGRjLXByZWRlZi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjJlMjJhNTExMzFkZTk0ZmYyZGYyNDkwMWY3Y2ZlNDE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiYjgyY2I3ZTExNmE1ZjgwMjVkMzVlZjViNGY3ZDRhM2NkZDBhMzkwOWExNDZhMzkxMTIwOTVhMmQyMjkwNzEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhpc3RvcnkuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoaXN0b3J5LjNdID0gIiR7bWFuZGlyfS9tYW4zL2hpc3RvcnkuMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGM4YTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBcCi0gICAgICAgICAgIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiNDk3ZjVlYjIyOTM2NjI4MzViZWQ2YmRiMGY0MzUyMTc4OGIyY2ViZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJjdXJsIGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSBsaWJ4bWwyIgotCi1pbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotICAgIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgIC1ERU5BQkxFX1RFU1RTPU9GRiBcCi0gICAgLURFTkFCTEVfRE9DUz1PRkYgXAotICAgIC1EV0lUSF9aQ0hVTks9T0ZGIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwYTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgcHJvdmlkaW5nIEMgYW5kIFB5dGhvbiAobGliY1VSTCBsaWtlKSBBUEkgXAorICAgICAgICAgICBmb3IgZG93bmxvYWRpbmcgbGludXggcmVwb3NpdG9yeSBtZXRhZGF0YSBhbmQgcGFja2FnZXMuIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjY3YzJkMWY4M2YxYmY4N2JlM2YyNmJhNzMwZmNlN2ZiZGYwYzlmYmEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCBnbGliLTIuMCBvcGVuc3NsIGF0dHIgZ3BnbWUgbGlieG1sMiIKKworaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgLURQWVRIT05fREVTSVJFRD0zIFwKKyAgICAtREVOQUJMRV9URVNUUz1PRkYgXAorICAgIC1ERU5BQkxFX0RPQ1M9T0ZGIFwKKyAgICAtRFdJVEhfWkNIVU5LPU9GRiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IDVmOTI3N2YuLmE4NjA3ZjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpAQCAtMTAsNiArMTAsOSBAQAogCiBERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyIHpsaWIgbGliZWRpdCBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCiAKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCiBSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuY3Vyc2VzLXRlcm1pbmZvIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpAQCAtMTgsNyArMjEsNyBAQAogCiBNQUpPUl9WRVJTSU9OID0gIjkiCiBNSU5PUl9WRVJTSU9OID0gIjAiCi1QQVRDSF9WRVJTSU9OID0gIjAiCitQQVRDSF9WRVJTSU9OID0gIjEiCiAKIFBWID0gIiR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfS4ke1BBVENIX1ZFUlNJT059IgogCkBAIC0yNiwxMiArMjksMTQgQEAKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKIEJSQU5DSCA9ICJyZWxlYXNlLyR7TUFKT1JfVkVSU0lPTn0ueCIKLVNSQ1JFViA9ICIwMzk5ZDVhOTY4MmIzY2VmNzFjNjUzMzczZTM4ODkwYzYzYzRjMzY1IgorU1JDUkVWID0gImMxYTBhMjEzMzc4YTQ1OGZiZWExYTVjNzdiMzE1YzdkY2UwOGZkMDUiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0O2JyYW5jaD0ke0JSQU5DSH0gXAogICAgICAgICAgICBmaWxlOi8vMDAwNi1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJsbHZtb3JnLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdC9sbHZtIgogCiBMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgpAQCAtODcsNiArOTIsOCBAQAogICAgICAgICAgICAgICAgICAgLURMTFZNX0NPTkZJR19QQVRIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7UFZ9IFwKICAgICAgICAgICAgICAgICAgIgogCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCiAJc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYwppbmRleCBiODkwNWJjLi5hMGE3MmI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKQEAgLTUsOSArNSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbWFrZS8iCiBTRUNUSU9OID0gImRldmVsIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2ZTRkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGM5MGE3ZGRhNmM1NzJmNzliOGU3OGRhNDRiNmViZjg3MDRlZGVmNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZGlyLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyLmMgYi9kaXIuYwotaW5kZXggZjM0YmJmNS4uMTJlZWYzMCAxMDA2NDQKLS0tLSBhL2Rpci5jCi0rKysgYi9kaXIuYwotQEAgLTEyOTksMTUgKzEyOTksNDAgQEAgbG9jYWxfc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKLSB9Ci0gI2VuZGlmCi0gCi0rLyogU2ltaWxhcmx5IGZvciBsc3RhdC4gICovCi0rI2lmICFkZWZpbmVkKGxzdGF0KSAmJiAhZGVmaW5lZChXSU5ET1dTMzIpIHx8IGRlZmluZWQoVk1TKQotKyMgaWZuZGVmIFZNUwotKyMgIGlmbmRlZiBIQVZFX1NZU19TVEFUX0gKLStpbnQgbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzYnVmKTsKLSsjICBlbmRpZgotKyMgZWxzZQotKyAgICAvKiBXZSBhcmUgZG9uZSB3aXRoIHRoZSBmYWtlIGxzdGF0LiAgR28gYmFjayB0byB0aGUgcmVhbCBsc3RhdCAqLwotKyMgICBpZmRlZiBsc3RhdAotKyMgICAgIHVuZGVmIGxzdGF0Ci0rIyAgIGVuZGlmCi0rIyBlbmRpZgotKyMgZGVmaW5lIGxvY2FsX2xzdGF0IGxzdGF0Ci0rI2VsaWYgZGVmaW5lZChXSU5ET1dTMzIpCi0rLyogV2luZG93cyBkb2Vzbid0IHN1cHBvcnQgbHN0YXQoKS4gICovCi0rIyBkZWZpbmUgbG9jYWxfbHN0YXQgbG9jYWxfc3RhdAotKyNlbHNlCi0rc3RhdGljIGludAotK2xvY2FsX2xzdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQotK3sKLSsgIGludCBlOwotKyAgRUlOVFJMT09QIChlLCBsc3RhdCAocGF0aCwgYnVmKSk7Ci0rICByZXR1cm4gZTsKLSt9Ci0rI2VuZGlmCi0rCi0gdm9pZAotIGRpcl9zZXR1cF9nbG9iIChnbG9iX3QgKmdsKQotIHsKLSAgIGdsLT5nbF9vcGVuZGlyID0gb3Blbl9kaXJzdHJlYW07Ci0gICBnbC0+Z2xfcmVhZGRpciA9IHJlYWRfZGlyc3RyZWFtOwotICAgZ2wtPmdsX2Nsb3NlZGlyID0gZnJlZTsKLSsgIGdsLT5nbF9sc3RhdCA9IGxvY2FsX2xzdGF0OwotICAgZ2wtPmdsX3N0YXQgPSBsb2NhbF9zdGF0OwotLSAgLyogV2UgZG9uJ3QgYm90aGVyIHNldHRpbmcgZ2xfbHN0YXQsIHNpbmNlIGdsb2IgbmV2ZXIgY2FsbHMgaXQuCi0tICAgICBUaGUgc2xvdCBpcyBvbmx5IHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggNC40IEJTRC4gICovCi0gfQotIAotIHZvaWQKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2YmNmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gODMwOTYwMTc3NWQ5NDQyNDE2MzI5YTc3ZjdkY2ZkOGFhNzk5ZTlhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBGcmksIDIxIEZlYiAyMDIwIDE3OjM5OjU2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBtNC9nZXRsb2FkYXZnLm00OiByZXN0cmljdCBBSVggc3BlY2lmaWMgdGVzdCBvbiBBSVgKKworV2hlbiBjcm9zcyBjb21waWxpbmcgZm9yIGEgc3lzdGVtIHdpdGhvdXQgZ2V0bG9hZGF2ZywgZG8gbm90IHRyeSBhZGQKK2FkZGl0aW9uYWwgbGlua2VyIHBhdGhzIHVubGVzcyBpdCdzIGFic29sdXRlbHkgbmVjZXNzYXJ5LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBtNC9nZXRsb2FkYXZnLm00IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tNC9nZXRsb2FkYXZnLm00IGIvbTQvZ2V0bG9hZGF2Zy5tNAoraW5kZXggM2JkMmExNC4uNjk2YzVkZSAxMDA2NDQKKy0tLSBhL200L2dldGxvYWRhdmcubTQKKysrKyBiL200L2dldGxvYWRhdmcubTQKK0BAIC00Miw2ICs0Miw4IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICBmaQorIAorICAgIGlmIHRlc3QgJGdsX2Z1bmNfZ2V0bG9hZGF2Z19kb25lID0gbm87IHRoZW4KKysgICAgIEFTX0NBU0UoWyRob3N0X29zXSwKKysgICAgICAgICAgICAgW2FpeCpdLCBbCisgICAgICAjIFRoZXJlIGlzIGEgY29tbW9ubHkgYXZhaWxhYmxlIGxpYnJhcnkgZm9yIFJTLzYwMDAgQUlYLgorICAgICAgIyBTaW5jZSBpdCBpcyBub3QgYSBzdGFuZGFyZCBwYXJ0IG9mIEFJWCwgaXQgbWlnaHQgYmUgaW5zdGFsbGVkIGxvY2FsbHkuCisgICAgICBnbF9nZXRsb2FkYXZnX0xJQlM9JExJQlMKK0BAIC00OSw2ICs1MSw3IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICAgIEFDX0NIRUNLX0xJQihbZ2V0bG9hZGF2Z10sIFtnZXRsb2FkYXZnXSwKKyAgICAgICAgICAgICAgICAgICBbTElCUz0iLWxnZXRsb2FkYXZnICRMSUJTIiBnbF9mdW5jX2dldGxvYWRhdmdfZG9uZT15ZXNdLAorICAgICAgICAgICAgICAgICAgIFtMSUJTPSRnbF9nZXRsb2FkYXZnX0xJQlNdKQorKyAgICAgICBdLCBbOl0pCisgICAgZmkKKyAKKyAgICAjIFNldCB1cCB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5LgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbWFrZWluc3QtRG8tbm90LXVuZGVmLVBPU0lYLW9uLWNsYW5nLWFybS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhN2M5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA4NmI3OTQ3MTU2YTBjMzNlNzY4ZDBhMjY1ZTM4ZjI4ODFhNzBhN2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMzoxOTozNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtYWtlaW5zdDogRG8gbm90IHVuZGVmIFBPU0lYIG9uIGNsYW5nL2FybQorCitpZiBfX2FybSBpbnRlcm5hbCBjb21waWxlciBtYWNybyBpcyBkZWZpbmVkIHRoZW4gbWFrZSBhc3N1bWVzIHRoYXQgdGhlCitzeXN0ZW0gaXMgbm90IHBvc2l4IGFuZCBnb2VzIGFoZWFkIGFuZCB1bmRlZnMgUE9TSVgsIHdoaWNoIHJlc3VsdHMgaW4KK21pc2NvbXBpbGluZyBtYWtlIHdpdGggY2xhbmcsIHNpbmNlIGNsYW5nIGRvZXMgZGVmaW5lIF9fYXJtIHVubGlrZSBnY2MKK3doaWNoIGRvZXMgbm90LCBidXQgdGhleSBib3RoIHN1cHBvcnQgcG9zaXgganVzdCBmaW5lLCBzbyBoZXJlIGNoZWNrIGZvcgorY29tcGlsZXIgbm90IGJlaW5nIGNsYW5nIHdoZW4gX19hcm0gaXMgZGVmaW5lZCBiZWZvcmUgdW5kZWZpbmluZyBwb3NpeAorCitGaXhlcyBlcnJvciBsaWtlCisuLi9tYWtlLTQuMy9zcmMvam9iLmM6NTA3OjI3OiBlcnJvcjogdG9vIG1hbnkgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIGNhbGwsIGV4cGVjdGVkIDAsIGhhdmUgMQorICBzaWdzZXRtYXNrIChzaWdnZXRtYXNrICgwKSAmIH5mYXRhbF9zaWduYWxfbWFzaykKKyAgICAgICAgICAgICAgfn5+fn5+fn5+fiAgXgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbWFrZWludC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2VpbnQuaCBiL3NyYy9tYWtlaW50LmgKK2luZGV4IGM0MjhhMzYuLmZhZGY5NjMgMTAwNjQ0CistLS0gYS9zcmMvbWFrZWludC5oCisrKysgYi9zcmMvbWFrZWludC5oCitAQCAtMTE1LDcgKzExNSw3IEBAIGV4dGVybiBpbnQgZXJybm87CisgI2VuZGlmCisgCisgLyogU29tZSBzeXN0ZW1zIGRlZmluZSBfUE9TSVhfVkVSU0lPTiBidXQgYXJlIG5vdCByZWFsbHkgUE9TSVguMS4gICovCistI2lmIChkZWZpbmVkIChidXR0ZXJmbHkpIHx8IGRlZmluZWQgKF9fYXJtKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKysjaWYgKGRlZmluZWQgKGJ1dHRlcmZseSkgfHwgKGRlZmluZWQgKF9fYXJtKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKyAjIHVuZGVmIFBPU0lYCisgI2VuZGlmCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzk3MDgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGNkNzA5MWE3ZDg4MzA2MDA0Y2E5OGM1ZGFmY2M0MGY0NDU4OWIxMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorRGF0ZTogTW9uLCAyNCBGZWIgMjAyMCAxMDo1MjoyMSArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gc3JjL2Rpci5jOiBmaXggYnVmZmVyLW92ZXJmbG93IHdhcm5pbmcKKworRml4IGNvbXBpbGVyIHdhcm5pbmc6CisJc3JjL2Rpci5jOjEyOTQ6Nzogd2FybmluZzogJ3N0cm5jcHknIHNwZWNpZmllZCBib3VuZCBkZXBlbmRzIG9uIHRoZQorCQkJICBsZW5ndGggb2YgdGhlIHNvdXJjZSBhcmd1bWVudCBbLVdzdHJpbmdvcC1vdmVyZmxvdz1dCisKK1RoZSBleGlzdGluZyBjb2RlIGFzc3VtZXMgYHBhdGhgIHdpbGwgbmV2ZXIgZXhjZWVkIGBNQVhQQVRITEVOYC4gQWxzbyB0aGUKK3NpemUgb2YgdGhlIGJ1ZmZlciBpcyBpbmNyZWFzZWQgYnkgMSB0byBob2xkIGEgcGF0aCB3aXRoIHRoZSBsZW5ndGggb2YKK2BNQVhQQVRITEVOYCBhbmQgdHJhaWxpbmcgYDBgLgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy9kaXIuYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kaXIuYyBiL3NyYy9kaXIuYworaW5kZXggODYyYTE4ZS4uY2FkNGM0YSAxMDA2NDQKKy0tLSBhL3NyYy9kaXIuYworKysrIGIvc3JjL2Rpci5jCitAQCAtMTI4OSwxMCArMTI4OSwxMCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQorICAgaWYgKHBsZW4gPiAxICYmIHBhdGhbcGxlbiAtIDFdID09ICcuJworICAgICAgICYmIChwYXRoW3BsZW4gLSAyXSA9PSAnLycgfHwgcGF0aFtwbGVuIC0gMl0gPT0gJ1xcJykpCisgICAgIHsKKy0gICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOXTsKKysgICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOKzFdOworIAorLSAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgcGxlbiAtIDIpOworLSAgICAgIHBhcmVudFtwbGVuIC0gMl0gPSAnXDAnOworKyAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgTUFYUEFUSExFTik7CisrICAgICAgcGFyZW50W01JTihwbGVuIC0gMiwgTUFYUEFUSExFTildID0gJ1wwJzsKKyAgICAgICBpZiAoc3RhdCAocGFyZW50LCBidWYpIDwgMCB8fCAhX1NfSVNESVIgKGJ1Zi0+c3RfbW9kZSkpCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5YWNkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDk4NTg3MDJkYmQxZTEzNzI2MmMwNjc2NTkxOTkzNzY2MDg3OWY2M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjRlYzg3MC4uZTg3OTAxYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzk5LDEwICszOTksOSBAQCBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzdGVtIGxpYmMgaGFzIEdOVSBnbG9iXSwgW21ha2VfY3Zfc3lzX2dudV9nbG9iXSwKLSAjaW5jbHVkZSA8Z2xvYi5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi0tI2RlZmluZSBHTE9CX0lOVEVSRkFDRV9WRVJTSU9OIDEKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID4gMQotICMgaW5jbHVkZSA8Z251LXZlcnNpb25zLmg+Ci0tIyBpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTgotK2lmIF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAxIHx8IF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAyCi0gICAgZ251IGdsb2IKLSAjIGVuZGlmCi0gI2VuZGlmXSwKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDk3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZmI4YWFlZDNiMDQwZTU4OWNkODgwZmQ3MTRkZGE1ZWMwMDY4NzIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDEyOjEwOjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBtb2R1bGVzOiBmY250bDogYWxsb3cgYmVpbmcgZGV0ZWN0ZWQgYnkgaW1wb3J0aW5nCisgcHJvamVjdHMKKworR05VIHByb2plY3QgYG1ha2VgIHJlbGllcyBvbiBnbnVsaWIgYnV0IHByb3ZpZGVzIHNvbWUgb3duIGNvbXBhdGliaWxpdHkKK2Z1bmN0aW9ucyAtIGluY2x1ZGluZyBhbiBgZmNudGxgLCB3aGljaCBmYWlscyBvbiBtaW5ndy4KK1RoZSBpbnRlbnNpb24gb2YgZ251bGliIGlzIHByb3ZpZGluZyB0aGVzZSBmdW5jdGlvbnMgYW5kIGJlaW5nIHdpZGVyIHRlc3RlZCwKK2J1dCBzaWxlbnRseSBpbmplY3RpbmcgYSBmdW5jdGlvbiBvcGVucyBiYXR0bGUgb2YgY29tcGF0aWJpbGl0eSBsYXllcnMuCisKK1NvIGFkZGluZyBhIGhpbnQgaW50byB0YXJnZXQgYGNvbmZpZy5oYCB0byBhbGxvdyBkZWNpZGluZyB3aGV0aGVyIHVzaW5nCithbiBvd24gY29tcGF0aWJpbGl0eSBpbXBsZW1lbnRhdGlvbiBvciBub3QuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbTQvZ251bGliLWNvbXAubTQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL200L2dudWxpYi1jb21wLm00IGIvbTQvZ251bGliLWNvbXAubTQKK2luZGV4IDNlZTA4MTEuLmNmNzU1NDEgMTAwNjQ0CistLS0gYS9tNC9nbnVsaWItY29tcC5tNAorKysrIGIvbTQvZ251bGliLWNvbXAubTQKK0BAIC0xNDcsNiArMTQ3LDcgQEAKKyAgIGdsX0ZVTkNfRkNOVEwKKyAgIGlmIHRlc3QgJEhBVkVfRkNOVEwgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRkNOVEwgPSAxOyB0aGVuCisgICAgIEFDX0xJQk9CSihbZmNudGxdKQorKyAgICBBQ19ERUZJTkUoSEFWRV9HTlVMSUJfRkNOVEwsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjbnRsJyBmdW5jdGlvbiB2aWEgZ251bGliLl0pCisgICBmaQorICAgZ2xfRkNOVExfTU9EVUxFX0lORElDQVRPUihbZmNudGxdKQorICAgZ2xfRkNOVExfSApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllY2M0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0ZGQ4YjRmNDNhYTAwNzg3MDdhZDlhNzkzMmY0ZTEzN2JjNDM4M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IE1vbiwgMjQgRmViIDIwMjAgMTE6MTI6NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHczMjogY29tcGF0OiBkaXJlbnQuYzogZm9sbG93IGhlYWRlcgorCitzcmMvdzMyL2luY2x1ZGUvZGlyZW50LmggY29tcGxldGVseSBkZWxlZ2F0ZXMgdG8gbWluZ3cgZGlyZW50IGltcGxlbWVudGF0aW9uLAorZ251bGliIGRldGVjdHMgaXQgYXMgZmluZSBhbmQgY29tcGxldGVseSB1c2FibGUgLSB0cnVzdCBpbiB0aGF0LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy93MzIvY29tcGF0L2RpcmVudC5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdzMyL2NvbXBhdC9kaXJlbnQuYyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitpbmRleCBiOGVjNjE1Li5kZTgwZjcyIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvZGlyZW50LmMKKysrKyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitAQCAtMjMsNyArMjMsNyBAQCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSAiZGlyZW50LmgiCisgCistCisrI2lmbmRlZiBfX01JTkdXMzJfXworIERJUioKKyBvcGVuZGlyKGNvbnN0IGNoYXIqIHBEaXJOYW1lKQorIHsKK0BAIC0xOTMsMyArMTkzLDQgQEAgc2Vla2RpcihESVIqIHBEaXIsIGxvbmcgblBvc2l0aW9uKQorIAorICAgICAgICAgcmV0dXJuOworIH0KKysjZW5kaWYgIC8qICFfX01JTkdXMzJfXyAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMy1wb3NpeGZjbi1mY250bC1nbnVsaWItbWFrZS1lbXVsYXRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQxNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSAzZDA3NGM4ZmNhNWZjZjNlNmI4M2QzMzc4OGYzNWE4ZjFiM2E0NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IEZyaSwgMjEgRmViIDIwMjAgMTk6Mjk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHBvc2l4ZmNuOiBmY250bDogZ251bGliID4gbWFrZS1lbXVsYXRlZAorCitSYXRlIHRoZSBmY250bCBlbXVsYXRpb24gZnJvbSBnbnVsaWIgaGlnaGVyIHRoYW4gdGhlIG93biBvbmUuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzU3ODg4KQorCisgc3JjL291dHB1dC5oICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KKyBzcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvb3V0cHV0LmggYi9zcmMvb3V0cHV0LmgKK2luZGV4IGE1MDY1MDUuLmQzY2U2YjcgMTAwNjQ0CistLS0gYS9zcmMvb3V0cHV0LmgKKysrKyBiL3NyYy9vdXRwdXQuaAorQEAgLTY3LDE0ICs2NywyMSBAQCB2b2lkIG91dHB1dF9kdW1wIChzdHJ1Y3Qgb3V0cHV0ICpvdXQpOworIAorICMgaWZkZWYgV0lORE9XUzMyCisgLyogRm9yIGVtdWxhdGlvbnMgaW4gdzMyL2NvbXBhdC9wb3NpeGZjbi5jLiAgKi8KKy0jICBkZWZpbmUgRl9HRVRGRCAxCistIyAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBpZm5kZWYgRl9HRVRGRAorKyMgICBkZWZpbmUgRl9HRVRGRCAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9TRVRMS1cKKysjICAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBlbmRpZgorIC8qIEltcGxlbWVudGF0aW9uIG5vdGU6IE5vbmUgb2YgdGhlIHZhbHVlcyBvZiBsX3R5cGUgYmVsb3cgY2FuIGJlIHplcm8KKyAgICAtLSB0aGV5IGFyZSBjb21wYXJlZCB3aXRoIGEgc3RhdGljIGluc3RhbmNlIG9mIHRoZSBzdHJ1Y3QsIHNvIHplcm8KKyAgICBtZWFucyB1bmtub3duL2ludmFsaWQsIHNlZSB3MzIvY29tcGF0L3Bvc2l4ZmNuLmMuICovCistIyAgZGVmaW5lIEZfV1JMQ0sgMQorLSMgIGRlZmluZSBGX1VOTENLIDIKKy0KKysjICBpZm5kZWYgRl9XUkxDSworKyMgICBkZWZpbmUgRl9XUkxDSyAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9VTkxDSworKyMgICBkZWZpbmUgRl9VTkxDSyAyCisrIyAgZW5kaWYKKyBzdHJ1Y3QgZmxvY2sKKyAgIHsKKyAgICAgc2hvcnQgbF90eXBlOworQEAgLTg5LDcgKzk2LDkgQEAgc3RydWN0IGZsb2NrCisgdHlwZWRlZiBpbnRwdHJfdCBzeW5jX2hhbmRsZV90OworIAorIC8qIFB1YmxpYyBmdW5jdGlvbnMgZW11bGF0ZWQvcHJvdmlkZWQgaW4gcG9zaXhmY24uYy4gICovCisrIyAgaWZuZGVmIEhBVkVfR05VTElCX0ZDTlRMCisgaW50IGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKTsKKysjICBlbmRpZgorIGludHB0cl90IGNyZWF0ZV9tdXRleCAodm9pZCk7CisgaW50IHNhbWVfc3RyZWFtIChGSUxFICpmMSwgRklMRSAqZjIpOworIAorZGlmZiAtLWdpdCBhL3NyYy93MzIvY29tcGF0L3Bvc2l4ZmNuLmMgYi9zcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jCitpbmRleCA5NzVkZmI3Li5kMzM3YjljIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworKysrIGIvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworQEAgLTI5LDYgKzI5LDcgQEAgdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAjaWZuZGVmIE5PX09VVFBVVF9TWU5DCisgLyogU3VwcG9ydCBmb3IgT1VUUFVUX1NZTkMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gICovCisgCisrI2lmbmRlZiBIQVZFX0dOVUxJQl9GQ05UTAorIC8qIEVtdWxhdGlvbiBvZiBmY250bCB0aGF0IHN1cHBvcnRzIG9ubHkgRl9HRVRGRCBhbmQgRl9TRVRMS1cuICAqLworIGludAorIGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKQorQEAgLTE0Miw2ICsxNDMsNyBAQCBmY250bCAoaW50cHRyX3QgZmQsIGludCBjbWQsIC4uLikKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIH0KKysjZW5kaWYgLyogR05VTElCX1RFU1RfRkNOVEwgKi8KKyAKKyBzdGF0aWMgaW50cHRyX3QgbXV0ZXhfaGFuZGxlID0gLTE7CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTZhMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsb2IvQ09QWUlORy5MSUI7bWQ1PTRhNzcwYjY3ZTZiZTBmNjBkYTI0NGJlYjJkZTBmY2U0IgotcmVxdWlyZSBtYWtlLmluYwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1ndWlsZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1YjAxMjYxN2U3YzQ0YzBlZDQ4MjcyMTYyOTU3N2FjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZTI2MmJmMzYwMWI0MmQyYjFlNGVmODMxMDAyOWUxZGNmMjAwODNjNTQ0NmI0YjdhYTY3MDgxZmRmZmM1ODkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMGViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK3JlcXVpcmUgbWFrZS5pbmMKKworU1JDX1VSSSArPSAiXAorCWZpbGU6Ly8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2ggXAorCWZpbGU6Ly8wMDAzLXBvc2l4ZmNuLWZjbnRsLWdudWxpYi1tYWtlLWVtdWxhdGVkLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1tYWtlaW5zdC1Eby1ub3QtdW5kZWYtUE9TSVgtb24tY2xhbmctYXJtLnBhdGNoIFwKKyIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZ3VpbGUiCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDVmZGRlNDdjNWY3Y2E0NWNiNjk3ZTk3Mzg5NGZmNGY1ZDc5ZTEzYjc1MGVkNTdkN2I2NmQ4ZGVmYzc4ZTE5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCmluZGV4IDljZTMxZTUuLmU2NDQ4OGJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaApAQCAtMTYsMTIgKzE2LDEyIEBACiAtLS0gYS9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogKysrIGIvbWVzb25idWlsZC9lbnZjb25maWcucHkKIEBAIC0xOTIsNyArMTkyLDcgQEAgY2xhc3MgTWFjaGluZUluZm86Ci0gCisKICAgICAgICAgIGNwdV9mYW1pbHkgPSBsaXRlcmFsWydjcHVfZmFtaWx5J10KICAgICAgICAgIGlmIGNwdV9mYW1pbHkgbm90IGluIGtub3duX2NwdV9mYW1pbGllczoKIC0gICAgICAgICAgICBtbG9nLndhcm5pbmcoJ1Vua25vd24gQ1BVIGZhbWlseSAlcywgcGxlYXNlIHJlcG9ydCB0aGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy9uZXcnICUgY3B1X2ZhbWlseSkKICsgICAgICAgICAgICByYWlzZSBFbnZpcm9ubWVudEV4Y2VwdGlvbignVW5rbm93biBDUFUgZmFtaWx5ICVzLCBzZWUgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NZXNvbi9Vbmtub3duQ1BVIGZvciBkaXJlY3Rpb25zLicgJSBjcHVfZmFtaWx5KQotIAorCiAgICAgICAgICBlbmRpYW4gPSBsaXRlcmFsWydlbmRpYW4nXQogICAgICAgICAgaWYgZW5kaWFuIG5vdCBpbiAoJ2xpdHRsZScsICdiaWcnKToKIGRpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5IGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQpAQCAtMzAsMTIgKzMwLDEyIEBACiArKysgYi9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5CiBAQCAtMzU0LDkgKzM1NCw3IEBAIGRlZiBkZXRlY3RfY3B1X2ZhbWlseShjb21waWxlcnM6IENvbXBpbGVyc0RpY3QpIC0+IHN0cjoKICAgICAgICAgIHRyaWFsID0gJ3BhcmlzYycKLSAKKwogICAgICBpZiB0cmlhbCBub3QgaW4ga25vd25fY3B1X2ZhbWlsaWVzOgogLSAgICAgICAgbWxvZy53YXJuaW5nKCdVbmtub3duIENQVSBmYW1pbHkgeyFyfSwgcGxlYXNlIHJlcG9ydCB0aGlzIGF0ICcKIC0gICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzL25ldyB3aXRoIHRoZSAnCiAtICAgICAgICAgICAgICAgICAgICAgJ291dHB1dCBvZiBgdW5hbWUgLWFgIGFuZCBgY2F0IC9wcm9jL2NwdWluZm9gJy5mb3JtYXQodHJpYWwpKQogKyAgICAgICAgcmFpc2UgRW52aXJvbm1lbnRFeGNlcHRpb24oJ1Vua25vd24gQ1BVIGZhbWlseSAlcywgc2VlIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWVzb24vVW5rbm93bkNQVSBmb3IgZGlyZWN0aW9ucy4nICUgdHJpYWwpCi0gCisKICAgICAgcmV0dXJuIHRyaWFsCi0gCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCmluZGV4IGNlMTg2NjAuLmQyYzNmOGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaApAQCAtMTcsOCArMTcsOCBAQAogLS0tIGEvbWVzb25idWlsZC9lbnZjb25maWcucHkKICsrKyBiL21lc29uYnVpbGQvZW52Y29uZmlnLnB5CiBAQCAtMzYsNiArMzYsNyBAQCBfVCA9IHR5cGluZy5UeXBlVmFyKCdfVCcpCi0gCi0gCisKKwogIGtub3duX2NwdV9mYW1pbGllcyA9ICgKICsgICAgJ2FsbGFyY2gnLAogICAgICAnYWFyY2g2NCcsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKaW5kZXggZGM4MjJmYi4uYTViYWNhMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaApAQCAtMjgsMjUgKzI4LDI1IEBACiBAQCAtMTg0LDcgKzE4NCw3IEBAIGNsYXNzIERlcGVuZGVuY3k6CiAgICAgIGRlZiBnZXRfZXhlX2FyZ3Moc2VsZiwgY29tcGlsZXIpOgogICAgICAgICAgcmV0dXJuIFtdCi0gCisKIC0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKICsgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKICAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ3shcn0gaXMgbm90IGEgcGtnY29uZmlnIGRlcGVuZGVuY3knLmZvcm1hdChzZWxmLm5hbWUpKQotIAorCiAgICAgIGRlZiBnZXRfY29uZmlndG9vbF92YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lKToKIEBAIC0yNDcsNyArMjQ3LDcgQEAgY2xhc3MgSW50ZXJuYWxEZXBlbmRlbmN5KERlcGVuZGVuY3kpOgogICAgICAgICAgc2VsZi5zb3VyY2VzID0gc291cmNlcwogICAgICAgICAgc2VsZi5leHRfZGVwcyA9IGV4dF9kZXBzCi0gCisKIC0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKICsgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKICAgICAgICAgIHJhaXNlIERlcGVuZGVuY3lFeGNlcHRpb24oJ01ldGhvZCAiZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgpIiBpcyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGZvciBhbiBpbnRlcm5hbCBkZXBlbmRlbmN5JykKLSAKKwogQEAgLTY3MywxNSArNjczLDE4IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKICAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQotIAorCiAtICAgIGRlZiBfY2FsbF9wa2diaW5fcmVhbChzZWxmLCBhcmdzLCBlbnYpOgogLSAgICAgICAgY21kID0gc2VsZi5wa2diaW4uZ2V0X2NvbW1hbmQoKSArIGFyZ3MKICsgICAgZGVmIF9jYWxsX3BrZ2Jpbl9yZWFsKHNlbGYsIGFyZ3MsIGVudiwgdXNlX25hdGl2ZT1GYWxzZSk6CkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgICBjYWxsID0gJyAnLmpvaW4oY21kKQogICAgICAgICAgbWxvZy5kZWJ1ZygiQ2FsbGVkIGB7fWAgLT4ge31cbnt9Ii5mb3JtYXQoY2FsbCwgcmMsIG91dCkpCiAgICAgICAgICByZXR1cm4gcmMsIG91dCwgZXJyCi0gCisKIC0gICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSk6CiArICAgIGRlZiBfY2FsbF9wa2diaW4oc2VsZiwgYXJncywgZW52PU5vbmUsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgIyBBbHdheXMgY29weSB0aGUgZW52aXJvbm1lbnQgc2luY2Ugd2UncmUgZ29pbmcgdG8gbW9kaWZ5IGl0CkBAIC03MiwyMSArNzIsMjEgQEAKIC0gICAgICAgICAgICBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0gPSBzZWxmLl9jYWxsX3BrZ2Jpbl9yZWFsKGFyZ3MsIGVudikKICsgICAgICAgICAgICBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0gPSBzZWxmLl9jYWxsX3BrZ2Jpbl9yZWFsKGFyZ3MsIGVudiwgdXNlX25hdGl2ZSkKICAgICAgICAgIHJldHVybiBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0KLSAKKwogICAgICBkZWYgX2NvbnZlcnRfbWluZ3dfcGF0aHMoc2VsZiwgYXJnczogVC5MaXN0W3N0cl0pIC0+IFQuTGlzdFtzdHJdOgogQEAgLTkwNyw3ICs5MTAsNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uYW1lLCBvdXRfcmF3KSkKICAgICAgICAgIHNlbGYubGlua19hcmdzLCBzZWxmLnJhd19saW5rX2FyZ3MgPSBzZWxmLl9zZWFyY2hfbGlicyhvdXQsIG91dF9yYXcpCi0gCisKIC0gICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzKToKICsgICAgZGVmIGdldF9wa2djb25maWdfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSwga3dhcmdzLCB1c2VfbmF0aXZlPUZhbHNlKToKICAgICAgICAgIG9wdGlvbnMgPSBbJy0tdmFyaWFibGU9JyArIHZhcmlhYmxlX25hbWUsIHNlbGYubmFtZV0KLSAKKwogICAgICAgICAgaWYgJ2RlZmluZV92YXJpYWJsZScgaW4ga3dhcmdzOgogQEAgLTkyMCw3ICs5MjMsNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6Ci0gCisKICAgICAgICAgICAgICBvcHRpb25zID0gWyctLWRlZmluZS12YXJpYWJsZT0nICsgJz0nLmpvaW4oZGVmaW5pdGlvbildICsgb3B0aW9ucwotIAorCiAtICAgICAgICByZXQsIG91dCwgZXJyID0gc2VsZi5fY2FsbF9wa2diaW4ob3B0aW9ucykKICsgICAgICAgIHJldCwgb3V0LCBlcnIgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zLCB1c2VfbmF0aXZlPXVzZV9uYXRpdmUpCiAgICAgICAgICB2YXJpYWJsZSA9ICcnCkBAIC0xMDQsNyArMTA0LDcgQEAKICsgICAgICAgICAgICBwcmVmaXggPSBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2V4ZWNfcHJlZml4Jywge30sIHVzZV9uYXRpdmU9VHJ1ZSkKICAgICAgICAgICAgICBpZiBwcmVmaXg6CiAgICAgICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCwgJ2JpbicpCi0gCisKIEBAIC01MDgsNyArNTA4LDcgQEAgY2xhc3MgUXQ0RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKICAgICAgICAgIGFwcGxpY2F0aW9ucyA9IFsnbW9jJywgJ3VpYycsICdyY2MnLCAnbHVwZGF0ZScsICdscmVsZWFzZSddCiAgICAgICAgICBmb3IgYXBwbGljYXRpb24gaW4gYXBwbGljYXRpb25zOgpAQCAtMTEzLDEzICsxMTMsMTMgQEAKICsgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguZGlybmFtZShjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJyVzX2xvY2F0aW9uJyAlIGFwcGxpY2F0aW9uLCB7fSwgdXNlX25hdGl2ZT1UcnVlKSkKICAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246CiAgICAgICAgICAgICAgICAgIHBhc3MKLSAKKwogQEAgLTUxOCw3ICs1MTgsNyBAQCBjbGFzcyBRdDVEZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgogICAgICAgICAgUXRCYXNlRGVwZW5kZW5jeS5fX2luaXRfXyhzZWxmLCAncXQ1JywgZW52LCBrd2FyZ3MpCi0gCisKICAgICAgZGVmIGdldF9wa2djb25maWdfaG9zdF9iaW5zKHNlbGYsIGNvcmUpOgogLSAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJywge30pCiArICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSwgdXNlX25hdGl2ZT1UcnVlKQotIAorCiAgICAgIGRlZiBnZXRfcHJpdmF0ZV9pbmNsdWRlcyhzZWxmLCBtb2RfaW5jX2RpciwgbW9kdWxlKToKICAgICAgICAgIHJldHVybiBfcXRfZ2V0X3ByaXZhdGVfaW5jbHVkZXMobW9kX2luY19kaXIsIG1vZHVsZSwgc2VsZi52ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgppbmRleCAwYzQwMWM4Li41ZmQxYzVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL21tYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZhZTMyNzkyZTIwZjRkMjdhZGUxYzVhNzYyZDE2YjdkIgogCiBTUkNCUkFOQ0ggPz0gIm1hc3RlciIKLVNSQ1JFViA9ICJhZWY5MTNlMzFiNjU5NDYyZmU2YjkzMjBkMjQxNjc2Y2JhOTdmNjdiIgorU1JDUkVWID0gIjczZDZjNTlhZjhkMWJjZWRmNWRlNGFhMWY1ZDViN2Y3NjVmNTQ1ZjUiCiAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDEtc3RkbGliLUFkZC1zdHJsY2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDEtc3RkbGliLUFkZC1zdHJsY2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGZkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2gKQEAgLTAsMCArMSwxMTcgQEAKK0Zyb20gOGEyMDQxNzEwMDRmYTBkN2QyMTM4OTUzMGM3NDRkMjE1ZTk5ZWZiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTI6NDc6MzAgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHN0ZGxpYjogQWRkIHN0cmxjYXQKKworQWRkcyBzdHJsY2F0IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNhZmVseSBjb25jYXRlbmF0ZSBzdHJpbmdzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLm5hc20udXMvc2hvd19idWcuY2dpP2lkPTMzOTI2MzVdCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgfCAgMiArLQorIGNvbmZpZ3VyZS5hYyAgICAgICB8ICAyICsrCisgaW5jbHVkZS9jb21waWxlci5oIHwgIDQgKysrKworIHN0ZGxpYi9zdHJsY2F0LmMgICB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3RkbGliL3N0cmxjYXQuYworCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMzJlZjNkOTEuLmZmN2ViNDQ3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtOTMsNyArOTMsNyBAQCBOQVNNID0JYXNtL25hc20uJChPKQorIE5ESVNBU00gPSBkaXNhc20vbmRpc2FzbS4kKE8pCisgCisgTElCT0JKID0gc3RkbGliL3NucHJpbnRmLiQoTykgc3RkbGliL3ZzbnByaW50Zi4kKE8pIHN0ZGxpYi9zdHJsY3B5LiQoTykgXAorLQlzdGRsaWIvc3Rybmxlbi4kKE8pIHN0ZGxpYi9zdHJyY2hybnVsLiQoTykgXAorKwlzdGRsaWIvc3Rybmxlbi4kKE8pIHN0ZGxpYi9zdHJyY2hybnVsLiQoTykgc3RkbGliL3N0cmxjYXQuJChPKSBcCisgCVwKKyAJbmFzbWxpYi92ZXIuJChPKSBcCisgCW5hc21saWIvY3JjNjQuJChPKSBuYXNtbGliL21hbGxvYy4kKE8pIG5hc21saWIvZXJyZmlsZS4kKE8pIFwKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM4YjNiNTk2Li5iNGU4ODc3OCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTUyLDYgKzE1Miw3IEBAIEFDX0NIRUNLX0ZVTkNTKFt2c25wcmludGYgX3ZzbnByaW50Zl0pCisgQUNfQ0hFQ0tfRlVOQ1MoW3NucHJpbnRmIF9zbnByaW50Zl0pCisgQUNfQ0hFQ0tfRlVOQ1MoW3N0cmxjcHldKQorIEFDX0NIRUNLX0ZVTkNTKFtzdHJyY2hybnVsXSkKKytBQ19DSEVDS19GVU5DUyhbc3RybGNhdF0pCisgCisgZG5sIFRoZXNlIHR5cGVzIGFyZSBQT1NJWC1zcGVjaWZpYywgYW5kIFdpbmRvd3MgZG9lcyBpdCBkaWZmZXJlbnRseS4uLgorIEFDX0NIRUNLX1RZUEVTKFtzdHJ1Y3QgX3N0YXRpNjRdKQorQEAgLTE3MCw2ICsxNzEsNyBAQCBBQ19DSEVDS19ERUNMUyhzdHJzZXApCisgQUNfQ0hFQ0tfREVDTFMoc3RybGNweSkKKyBBQ19DSEVDS19ERUNMUyhzdHJubGVuKQorIEFDX0NIRUNLX0RFQ0xTKHN0cnJjaHJudWwpCisrQUNfQ0hFQ0tfREVDTFMoc3RybGNhdCkKKyAKKyBkbmwgQ2hlY2sgZm9yIG1pc3NpbmcgdHlwZXMKKyBBQ19UWVBFX1VJTlRQVFJfVAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tcGlsZXIuaCBiL2luY2x1ZGUvY29tcGlsZXIuaAoraW5kZXggNDE3OGM5OGUuLjgxNTNkMjk3IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9jb21waWxlci5oCisrKysgYi9pbmNsdWRlL2NvbXBpbGVyLmgKK0BAIC0xNTksNiArMTU5LDEwIEBAIHNpemVfdCBzdHJsY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOworIGNoYXIgKnN0cnJjaHJudWwoY29uc3QgY2hhciAqLCBpbnQpOworICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChIQVZFX1NUUkxDQVQpIHx8ICFIQVZFX0RFQ0xfU1RSTENBVAorK3NpemVfdCBzdHJsY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOworKyNlbmRpZgorKworICNpZm5kZWYgX19jcGx1c3BsdXMJCS8qIEMrKyBoYXMgZmFsc2UsIHRydWUsIGJvb2wgYXMga2V5d29yZHMgKi8KKyAjIGlmZGVmIEhBVkVfU1REQk9PTF9ICisgIyAgaW5jbHVkZSA8c3RkYm9vbC5oPgorZGlmZiAtLWdpdCBhL3N0ZGxpYi9zdHJsY2F0LmMgYi9zdGRsaWIvc3RybGNhdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjcwODRkNDYwCistLS0gL2Rldi9udWxsCisrKysgYi9zdGRsaWIvc3RybGNhdC5jCitAQCAtMCwwICsxLDQzIEBACisrLyoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMTkgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworKyAqCisrICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisrICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQorKyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCisrICoKKysgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKKysgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCisrICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IKKysgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisrICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCisrICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKKysgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorKyAqLworKworKyNpbmNsdWRlICJjb21waWxlci5oIgorKworKy8qCisrICogQ29uY2F0ZW5hdGUgc3JjIHN0cmluZyB0byBkZXN0IG9mIHNpemUgc2l6ZS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB3aWxsCisrICogaGF2ZSBubyBtb3JlIHRoYW4gc2l6ZS0xIGNoYXJhY3RlciB3aGVuIHRoZSBvcGVyYXRpb24gZmluaXNoZXMuIEFsd2F5cyBOVUwKKysgKiB0ZXJtaW5hdGVzLCB1bmxlc3Mgc2l6ZSA9PSAwIG9yIGRlc3QgaGFzIG5vIE5VTCB0ZXJtaW5hdG9yLiBSZXR1cm5zCisrICogc3RybGVuKGluaXRpYWwgZGVzdCkgKyBzdHJsZW4oc3JjKTsgaWYgcmV0dmFsID49IHNpemUsIHRydW5jYXRpb24gb2NjdXJyZWQuCisrICovCisrI2lmbmRlZiBIQVZFX1NUUkxDQVQKKysKKytzaXplX3Qgc3RybGNhdChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKQorK3sKKysgICAgc2l6ZV90IG47CisrCisrICAgIC8qIGZpbmQgdGhlIE5VTEwgdGVybWluYXRvciBpbiBkZXN0ICovCisrICAgIGZvciAobiA9IDA7IGkgPCBzaXplICYmIGRlc3Rbbl0gIT0gJ1wwJzsgbisrKQorKyAgICAgICAgOworKworKyAgICAvKiBkZXN0aW5hdGlvbiB3YXMgbm90IE5VTEwgdGVybWluYXRlZC4gUmV0dXJuIHRoZSBpbml0aWFsIHNpemUgKi8KKysgICAgaWYgKG4gPT0gc2l6ZSkKKysgICAgICAgIHJldHVybiBzaXplOworKworKyAgICByZXR1cm4gc3RybGNweSgmZGVzdFtuXSwgc3JjLCBzaXplIC0gbikgKyBuOworK30KKysKKysjZW5kaWYKKysKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAyLUFkZC1kZWJ1Zy1wcmVmaXgtbWFwLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAyLUFkZC1kZWJ1Zy1wcmVmaXgtbWFwLW9wdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmZhZTJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzI1IEBACitGcm9tIGZhNjc3YzFjYWY2YjgxOTI5NzE5MjBjZjVjMWFhOGNiMzNjNzQ2MDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDEzOjEyOjE3IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBBZGQgLS1kZWJ1Zy1wcmVmaXgtbWFwIG9wdGlvbgorCitBZGRzIGFuIG9wdGlvbiB0byByZW1hcCBmaWxlIHByZWZpeGVzIGluIG91dHB1dCBvYmplY3QgZmlsZXMuIFRoaXMgaXMKK2FuYWxvZ291cyB0byB0aGUgIi1mZGVidWctcHJlZml4LW1hcCIgb3B0aW9uIGluIEdDQywgYW5kIGFsbG93cyBmaWxlcyB0bworYmUgYnVpbHQgaW4gYSByZXByb2R1Y2libGUgbWFubmVyIHJlZ2FyZGxlc3Mgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEubmFzbS51cy9zaG93X2J1Zy5jZ2k/aWQ9MzM5MjYzNV0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIGFzbS9uYXNtLmMgICAgICAgICAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGluY2x1ZGUvbmFzbWxpYi5oICAgICAgIHwgIDkgKysrKysrKysrCisgbmFzbS50eHQgICAgICAgICAgICAgICAgfCAgNCArKysrCisgbmFzbWxpYi9maWxlbmFtZS5jICAgICAgfCAyMCArKysrKysrKysrKysrKysrKysrKworIG91dHB1dC9vdXRhczg2LmMgICAgICAgIHwgIDQgKysrLQorIG91dHB1dC9vdXRjb2ZmLmMgICAgICAgIHwgIDQgKystLQorIG91dHB1dC9vdXRlbGYuYyAgICAgICAgIHwgIDggKysrKy0tLS0KKyBvdXRwdXQvb3V0aWVlZS5jICAgICAgICB8ICAyICstCisgb3V0cHV0L291dG9iai5jICAgICAgICAgfCAgMiArLQorIHN0ZGxpYi9zdHJsY2F0LmMgICAgICAgIHwgIDIgKy0KKyB0ZXN0L2VsZmRlYnVncHJlZml4LmFzbSB8ICA2ICsrKysrKworIHRlc3QvcGVyZm9ybXRlc3QucGwgICAgIHwgMTIgKysrKysrKysrKy0tCisgMTIgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvZWxmZGVidWdwcmVmaXguYXNtCisKK2RpZmYgLS1naXQgYS9hc20vbmFzbS5jIGIvYXNtL25hc20uYworaW5kZXggMWM1YTVmYzUuLjVkNDUxMDNjIDEwMDY0NAorLS0tIGEvYXNtL25hc20uYworKysrIGIvYXNtL25hc20uYworQEAgLTg0MSw3ICs4NDEsOCBAQCBlbnVtIHRleHRfb3B0aW9ucyB7CisgICAgIE9QVF9CRUZPUkUsCisgICAgIE9QVF9MSU1JVCwKKyAgICAgT1BUX0tFRVBfQUxMLAorLSAgICBPUFRfTk9fTElORQorKyAgICBPUFRfTk9fTElORSwKKysgICAgT1BUX0RFQlVHX1BSRUZJWF9NQVAKKyB9OworIHN0cnVjdCB0ZXh0YXJncyB7CisgICAgIGNvbnN0IGNoYXIgKmxhYmVsOworQEAgLTg2Niw2ICs4NjcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRleHRhcmdzIHRleHRvcHRzW10gPSB7CisgICAgIHsibGltaXQtIiwgICBPUFRfTElNSVQsICAgdHJ1ZSwgMH0sCisgICAgIHsia2VlcC1hbGwiLCBPUFRfS0VFUF9BTEwsIGZhbHNlLCAwfSwKKyAgICAgeyJuby1saW5lIiwgIE9QVF9OT19MSU5FLCBmYWxzZSwgMH0sCisrICAgIHsiZGVidWctcHJlZml4LW1hcCIsIE9QVF9ERUJVR19QUkVGSVhfTUFQLCB0cnVlLCAwfSwKKyAgICAge05VTEwsIE9QVF9CT0dVUywgZmFsc2UsIDB9CisgfTsKKyAKK0BAIC0xMjE3LDYgKzEyMTksMjYgQEAgc3RhdGljIGJvb2wgcHJvY2Vzc19hcmcoY2hhciAqcCwgY2hhciAqcSwgaW50IHBhc3MpCisgICAgICAgICAgICAgICAgIGNhc2UgT1BUX05PX0xJTkU6CisgICAgICAgICAgICAgICAgICAgICBwcF9ub2xpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgT1BUX0RFQlVHX1BSRUZJWF9NQVA6IHsKKysgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqZDsKKysgICAgICAgICAgICAgICAgICAgIGNoYXIgKmM7CisrICAgICAgICAgICAgICAgICAgICBjID0gc3RyY2hyKHBhcmFtLCAnPScpOworKworKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgbmFzbV9lcnJvcihFUlJfTk9ORkFUQUwgfCBFUlJfTk9GSUxFIHwgRVJSX1VTQUdFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbiBgLS0lcycgbXVzdCBiZSBvZiB0aGUgZm9ybSBgQkFTRT1ERVNUJyIsIHApOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAgICAgKmMgPSAnXDAnOworKyAgICAgICAgICAgICAgICAgICAgZCA9IG5hc21fbWFsbG9jKHNpemVvZigqZCkpOworKyAgICAgICAgICAgICAgICAgICAgZC0+bmV4dCA9IGRlYnVnX3ByZWZpeGVzOworKyAgICAgICAgICAgICAgICAgICAgZC0+YmFzZSA9IG5hc21fc3RyZHVwKHBhcmFtKTsKKysgICAgICAgICAgICAgICAgICAgIGQtPmRlc3QgPSBuYXNtX3N0cmR1cChjICsgMSk7CisrICAgICAgICAgICAgICAgICAgICBkZWJ1Z19wcmVmaXhlcyA9IGQ7CisrICAgICAgICAgICAgICAgICAgICAqYyA9ICc9JzsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICBjYXNlIE9QVF9IRUxQOgorICAgICAgICAgICAgICAgICAgICAgaGVscCgwKTsKKyAgICAgICAgICAgICAgICAgICAgIGV4aXQoMCk7CitAQCAtMjAxMCw3ICsyMDMyLDkgQEAgc3RhdGljIHZvaWQgaGVscChjb25zdCBjaGFyIHhvcHQpCisgICAgICAgICAgIiAgIC0tbHBvc3RmaXggc3RyIGFwcGVuZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGFsbCBvdGhlciBzeW1ib2xzXG4iCisgICAgICAgICAgIiAgIC0ta2VlcC1hbGwgICAgIG91dHB1dCBmaWxlcyB3aWxsIG5vdCBiZSByZW1vdmVkIGV2ZW4gaWYgYW4gZXJyb3IgaGFwcGVuc1xuIgorICAgICAgICAgICIgICAtLW5vLWxpbmUgICAgICBpZ25vcmUgJSVsaW5lIGRpcmVjdGl2ZXMgaW4gaW5wdXRcbiIKKy0gICAgICAgICAiICAgLS1saW1pdC1YIHZhbCAgc2V0IGV4ZWN1dGlvbiBsaW1pdCBYXG4iKTsKKysgICAgICAgICAiICAgLS1saW1pdC1YIHZhbCAgc2V0IGV4ZWN1dGlvbiBsaW1pdCBYXG4iCisrICAgICAgICAgIiAgIC0tZGVidWctcHJlZml4LW1hcCBiYXNlPWRlc3RcbiIKKysgICAgICAgICAiICAgICAgICAgICAgICAgICAgcmVtYXAgcGF0aHMgc3RhcnRpbmcgd2l0aCAnYmFzZScgdG8gJ2Rlc3QnIGluIG91dHB1dCBmaWxlc1xuIik7CisgCisgICAgIGZvciAoaSA9IDA7IGkgPD0gTElNSVRfTUFYOyBpKyspIHsKKyAgICAgICAgIHByaW50ZigiICAgICAgICAgICAgICAgICAgICAgJS0xNXMgJXMgKGRlZmF1bHQgIiwKK2RpZmYgLS1naXQgYS9pbmNsdWRlL25hc21saWIuaCBiL2luY2x1ZGUvbmFzbWxpYi5oCitpbmRleCBlNTdkMGU2ZC4uY2Y5MjE1NDcgMTAwNjQ0CistLS0gYS9pbmNsdWRlL25hc21saWIuaAorKysrIGIvaW5jbHVkZS9uYXNtbGliLmgKK0BAIC0xOTUsMTAgKzE5NSwxOSBAQCBpbnQ2NF90IHJlYWRzdHJudW0oY2hhciAqc3RyLCBpbnQgbGVuZ3RoLCBib29sICp3YXJuKTsKKyAgKi8KKyBpbnQzMl90IHNlZ19hbGxvYyh2b2lkKTsKKyAKKytzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgeworKyAgICBzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKm5leHQ7CisrICAgIGNoYXIgKmJhc2U7CisrICAgIGNoYXIgKmRlc3Q7CisrfTsKKysKKytleHRlcm4gc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkZWJ1Z19wcmVmaXhlczsKKysKKyAvKgorICAqIEFkZC9yZXBsYWNlIG9yIHJlbW92ZSBhbiBleHRlbnNpb24gdG8gdGhlIGVuZCBvZiBhIGZpbGVuYW1lCisgICovCisgY29uc3QgY2hhciAqZmlsZW5hbWVfc2V0X2V4dGVuc2lvbihjb25zdCBjaGFyICppbm5hbWUsIGNvbnN0IGNoYXIgKmV4dGVuc2lvbik7CisrY2hhciAqZmlsZW5hbWVfZGVidWdfcmVtYXAoY2hhciAqZGVzdCwgY2hhciBjb25zdCAqaW5uYW1lLCBzaXplX3QgbGVuKTsKKyAKKyAvKgorICAqIFV0aWxpdHkgbWFjcm9zLi4uCitkaWZmIC0tZ2l0IGEvbmFzbS50eHQgYi9uYXNtLnR4dAoraW5kZXggYTI4MjAyZjkuLjQ0M2MwNmIyIDEwMDY0NAorLS0tIGEvbmFzbS50eHQKKysrKyBiL25hc20udHh0CitAQCAtMTQ3LDYgKzE0NywxMCBAQCBPUFRJT05TCisgCVByZXBlbmQgb3IgYXBwZW5kIChyZXNwZWN0aXZlbHkpIHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbGwgZ2xvYmFsIG9yCisgCWV4dGVybiB2YXJpYWJsZXMuCisgCisrLS1kZWJ1Zy1wcmVmaXgtbWFwICdCQVNFPURFU1QnOjoKKysgICAgTWFwIGZpbGUgbmFtZXMgYmVnaW5uaW5nIHdpdGggJ0JBU0UnIHRvICdERVNUJyB3aGVuIGVuY29kaW5nIHRoZW0gaW4KKysgICAgb3V0cHV0IG9iamVjdCBmaWxlcy4KKysKKyBTWU5UQVgKKyAtLS0tLS0KKyBUaGlzIG1hbiBwYWdlIGRvZXMgbm90IGZ1bGx5IGRlc2NyaWJlIHRoZSBzeW50YXggb2YgKm5hc20qJ3MgYXNzZW1ibHkgbGFuZ3VhZ2UsCitkaWZmIC0tZ2l0IGEvbmFzbWxpYi9maWxlbmFtZS5jIGIvbmFzbWxpYi9maWxlbmFtZS5jCitpbmRleCAxNzJhZTBiYy4uZmRhMmJlNDEgMTAwNjQ0CistLS0gYS9uYXNtbGliL2ZpbGVuYW1lLmMKKysrKyBiL25hc21saWIvZmlsZW5hbWUuYworQEAgLTM5LDYgKzM5LDggQEAKKyAjaW5jbHVkZSAibmFzbWxpYi5oIgorICNpbmNsdWRlICJlcnJvci5oIgorIAorK3N0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqZGVidWdfcHJlZml4ZXMgPSBOVUxMOworKworIC8qCisgICogQWRkL21vZGlmeSBhIGZpbGVuYW1lIGV4dGVuc2lvbiwgYXNzdW1lZCB0byBiZSBhIHBlcmlvZC1kZWxpbWl0ZWQKKyAgKiBmaWVsZCBhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGZpbGVuYW1lLiAgUmV0dXJucyBhIG5ld2x5IGFsbG9jYXRlZAorQEAgLTYxLDMgKzYzLDIxIEBAIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3NldF9leHRlbnNpb24oY29uc3QgY2hhciAqaW5uYW1lLCBjb25zdCBjaGFyICpleHRlbnNpb24pCisgCisgICAgIHJldHVybiBwOworIH0KKysKKytjaGFyICpmaWxlbmFtZV9kZWJ1Z19yZW1hcChjaGFyICpkZXN0LCBjaGFyIGNvbnN0ICppbiwgc2l6ZV90IGxlbikKKyt7CisrICAgIHN0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqZDsKKysgICAgc2l6ZV90IG47CisrCisrICAgIGZvciAoZCA9IGRlYnVnX3ByZWZpeGVzOyBkICE9IE5VTEw7IGQgPSBkLT5uZXh0KSB7CisrICAgICAgICBuID0gc3RybGVuKGQtPmJhc2UpOworKyAgICAgICAgaWYgKHN0cm5jbXAoaW4sIGQtPmJhc2UsIG4pID09IDApIHsKKysgICAgICAgICAgICBzdHJsY3B5KGRlc3QsIGQtPmRlc3QsIGxlbik7CisrICAgICAgICAgICAgc3RybGNhdChkZXN0LCAmaW5bbl0sIGxlbik7CisrICAgICAgICAgICAgcmV0dXJuIGRlc3Q7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgc3RybGNweShkZXN0LCBpbiwgbGVuKTsKKysgICAgcmV0dXJuIGRlc3Q7CisrfQorZGlmZiAtLWdpdCBhL291dHB1dC9vdXRhczg2LmMgYi9vdXRwdXQvb3V0YXM4Ni5jCitpbmRleCAzZjk4NjdiOS4uZDVmNGY5NjYgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0YXM4Ni5jCisrKysgYi9vdXRwdXQvb3V0YXM4Ni5jCitAQCAtMTEzLDYgKzExMyw4IEBAIHN0YXRpYyB2b2lkIGFzODZfc2VjdF93cml0ZShzdHJ1Y3QgU2VjdGlvbiAqLCBjb25zdCB1aW50OF90ICosCisgCisgc3RhdGljIHZvaWQgYXM4Nl9pbml0KHZvaWQpCisgeworKyAgICBjaGFyIGZpbGVuYW1lW0ZJTEVOQU1FX01BWF07CisrCisgICAgIHN0ZXh0LmRhdGEgPSBzYWFfaW5pdCgxTCk7CisgICAgIHN0ZXh0LmRhdGFsZW4gPSAwTDsKKyAgICAgc3RleHQuaGVhZCA9IHN0ZXh0Lmxhc3QgPSBOVUxMOworQEAgLTEzNCw3ICsxMzYsNyBAQCBzdGF0aWMgdm9pZCBhczg2X2luaXQodm9pZCkKKyAgICAgc3Ryc2xlbiA9IDA7CisgCisgICAgIC8qIGFzODYgbW9kdWxlIG5hbWUgPSBpbnB1dCBmaWxlIG1pbnVzIGV4dGVuc2lvbiAqLworLSAgICBhczg2X2FkZF9zdHJpbmcoZmlsZW5hbWVfc2V0X2V4dGVuc2lvbihpbm5hbWUsICIiKSk7CisrICAgIGFzODZfYWRkX3N0cmluZyhmaWxlbmFtZV9kZWJ1Z19yZW1hcChmaWxlbmFtZSwgZmlsZW5hbWVfc2V0X2V4dGVuc2lvbihpbm5hbWUsICIiKSwgc2l6ZW9mKGZpbGVuYW1lKSkpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBhczg2X2NsZWFudXAodm9pZCkKK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0Y29mZi5jIGIvb3V0cHV0L291dGNvZmYuYworaW5kZXggYTJmZDMwMmMuLmJjZjU3NmZiIDEwMDY0NAorLS0tIGEvb3V0cHV0L291dGNvZmYuYworKysrIGIvb3V0cHV0L291dGNvZmYuYworQEAgLTEwNzAsMTQgKzEwNzAsMTQgQEAgc3RhdGljIHZvaWQgY29mZl9zeW1ib2woY2hhciAqbmFtZSwgaW50MzJfdCBzdHJwb3MsIGludDMyX3QgdmFsdWUsCisgCisgc3RhdGljIHZvaWQgY29mZl93cml0ZV9zeW1ib2xzKHZvaWQpCisgeworLSAgICBjaGFyIGZpbGVuYW1lWzE4XTsKKysgICAgY2hhciBmaWxlbmFtZVsxOV07CisgICAgIHVpbnQzMl90IGk7CisgCisgICAgIC8qCisgICAgICAqIFRoZSBgLmZpbGUnIHJlY29yZCwgYW5kIHRoZSBmaWxlIG5hbWUgYXV4aWxpYXJ5IHJlY29yZC4KKyAgICAgICovCisgICAgIGNvZmZfc3ltYm9sKCIuZmlsZSIsIDBMLCAwTCwgLTIsIDAsIDB4NjcsIDEpOworLSAgICBzdHJuY3B5KGZpbGVuYW1lLCBpbm5hbWUsIDE4KTsKKysgICAgZmlsZW5hbWVfZGVidWdfcmVtYXAoZmlsZW5hbWUsIGlubmFtZSwgMTkpOworICAgICBuYXNtX3dyaXRlKGZpbGVuYW1lLCAxOCwgb2ZpbGUpOworIAorICAgICAvKgorZGlmZiAtLWdpdCBhL291dHB1dC9vdXRlbGYuYyBiL291dHB1dC9vdXRlbGYuYworaW5kZXggZGU5OWQwNzYuLjIwM2I1ZGMwIDEwMDY0NAorLS0tIGEvb3V0cHV0L291dGVsZi5jCisrKysgYi9vdXRwdXQvb3V0ZWxmLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKKy0gKiAgIAorKyAqCisgICogICBDb3B5cmlnaHQgMTk5Ni0yMDE3IFRoZSBOQVNNIEF1dGhvcnMgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgICogICBTZWUgdGhlIGZpbGUgQVVUSE9SUyBpbmNsdWRlZCB3aXRoIHRoZSBOQVNNIGRpc3RyaWJ1dGlvbiBmb3IKKyAgKiAgIHRoZSBzcGVjaWZpYyBjb3B5cmlnaHQgaG9sZGVycy4KK0BAIC0xNCw3ICsxNCw3IEBACisgICogICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgICogICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICAqICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCistICogICAgIAorKyAqCisgICogICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORAorICAqICAgICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLAorICAqICAgICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorQEAgLTMxNSw3ICszMTUsNyBAQCBlbGZfZGlyZWN0aXZlKGVudW0gZGlyZWN0aXZlIGRpcmVjdGl2ZSwgY2hhciAqdmFsdWUsIGludCBwYXNzKQorIAorIHN0YXRpYyB2b2lkIGVsZl9pbml0KHZvaWQpCisgeworLSAgICBzdHJsY3B5KGVsZl9tb2R1bGUsIGlubmFtZSwgc2l6ZW9mKGVsZl9tb2R1bGUpKTsKKysgICAgZmlsZW5hbWVfZGVidWdfcmVtYXAoZWxmX21vZHVsZSwgaW5uYW1lLCBzaXplb2YoZWxmX21vZHVsZSkpOworICAgICBzZWN0cyA9IE5VTEw7CisgICAgIG5zZWN0cyA9IHNlY3RsZW4gPSAwOworICAgICBzeW1zID0gc2FhX2luaXQoKGludDMyX3Qpc2l6ZW9mKHN0cnVjdCBlbGZfc3ltYm9sKSk7CitAQCAtODY4LDcgKzg2OCw3IEBAIHN0YXRpYyB2b2lkIGVsZjMyX291dChpbnQzMl90IHNlZ3RvLCBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAiIHNlZ21lbnQgYmFzZSByZWZlcmVuY2VzIik7CisgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgaWYgKHdydCA9PSBOT19TRUcpIHsKKy0gICAgICAgICAgICAgICAgICAgIC8qIAorKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAqIFRoZSBpZigpIGlzIGEgaGFjayB0byBkZWFsIHdpdGggY29tcGlsZXJzIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgKiBkb24ndCBoYW5kbGUgc3dpdGNoKCkgc3RhdGVtZW50cyB3aXRoIDY0LWJpdAorICAgICAgICAgICAgICAgICAgICAgICogZXhwcmVzc2lvbnMuCitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGllZWUuYyBiL291dHB1dC9vdXRpZWVlLmMKK2luZGV4IDNhMjg5NDJkLi5mNjE4MjRlNCAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRpZWVlLmMKKysrKyBiL291dHB1dC9vdXRpZWVlLmMKK0BAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIHZvaWQgaWVlZV91bnF1YWxpZmllZF9uYW1lKGNoYXIgKiwgY2hhciAqKTsKKyAgKi8KKyBzdGF0aWMgdm9pZCBpZWVlX2luaXQodm9pZCkKKyB7CistICAgIHN0cmxjcHkoaWVlZV9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKGllZWVfaW5maWxlKSk7CisrICAgIGZpbGVuYW1lX2RlYnVnX3JlbWFwKGllZWVfaW5maWxlLCBpbm5hbWUsIHNpemVvZihpZWVlX2luZmlsZSkpOworICAgICBhbnlfc2VncyA9IGZhbHNlOworICAgICBmcHViaGVhZCA9IE5VTEw7CisgICAgIGZwdWJ0YWlsID0gJmZwdWJoZWFkOworZGlmZiAtLWdpdCBhL291dHB1dC9vdXRvYmouYyBiL291dHB1dC9vdXRvYmouYworaW5kZXggYjRmMmM0OTkuLjU1YmJhNGExIDEwMDY0NAorLS0tIGEvb3V0cHV0L291dG9iai5jCisrKysgYi9vdXRwdXQvb3V0b2JqLmMKK0BAIC02NDAsNyArNjQwLDcgQEAgc3RhdGljIGVudW0gZGlyZWN0aXZlX3Jlc3VsdCBvYmpfZGlyZWN0aXZlKGVudW0gZGlyZWN0aXZlLCBjaGFyICosIGludCk7CisgCisgc3RhdGljIHZvaWQgb2JqX2luaXQodm9pZCkKKyB7CistICAgIHN0cmxjcHkob2JqX2luZmlsZSwgaW5uYW1lLCBzaXplb2Yob2JqX2luZmlsZSkpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChvYmpfaW5maWxlLCBpbm5hbWUsIHNpemVvZihvYmpfaW5maWxlKSk7CisgICAgIGZpcnN0X3NlZyA9IHNlZ19hbGxvYygpOworICAgICBhbnlfc2VncyA9IGZhbHNlOworICAgICBmcHViaGVhZCA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3RkbGliL3N0cmxjYXQuYyBiL3N0ZGxpYi9zdHJsY2F0LmMKK2luZGV4IDcwODRkNDYwLi5lZTkzZGVhMyAxMDA2NDQKKy0tLSBhL3N0ZGxpYi9zdHJsY2F0LmMKKysrKyBiL3N0ZGxpYi9zdHJsY2F0LmMKK0BAIC0yOSw3ICsyOSw3IEBAIHNpemVfdCBzdHJsY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCisgICAgIHNpemVfdCBuOworIAorICAgICAvKiBmaW5kIHRoZSBOVUxMIHRlcm1pbmF0b3IgaW4gZGVzdCAqLworLSAgICBmb3IgKG4gPSAwOyBpIDwgc2l6ZSAmJiBkZXN0W25dICE9ICdcMCc7IG4rKykKKysgICAgZm9yIChuID0gMDsgbiA8IHNpemUgJiYgZGVzdFtuXSAhPSAnXDAnOyBuKyspCisgICAgICAgICA7CisgCisgICAgIC8qIGRlc3RpbmF0aW9uIHdhcyBub3QgTlVMTCB0ZXJtaW5hdGVkLiBSZXR1cm4gdGhlIGluaXRpYWwgc2l6ZSAqLworZGlmZiAtLWdpdCBhL3Rlc3QvZWxmZGVidWdwcmVmaXguYXNtIGIvdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYTY3YmEyOWMKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3QvZWxmZGVidWdwcmVmaXguYXNtCitAQCAtMCwwICsxLDYgQEAKKys7VGVzdG5hbWU9dW5vcHRpbWl6ZWQ7IEFyZ3VtZW50cz0tTzAgLS1kZWJ1Zy1wcmVmaXgtbWFwIGVsZj1FTEYgLWZlbGYgLW9lbGZkZWJ1Z3ByZWZpeC5vOyBGaWxlcz1zdGRvdXQgc3RkZXJyIGVsZmRlYnVncHJlZml4Lm87IFZhbGlkYXRlPXJlYWRlbGYgLS13aWRlIC0tc3ltYm9scyBlbGZkZWJ1Z3ByZWZpeC5vIHwgZ3JlcCAnRklMRS4qRUxGZGVidWdwcmVmaXguYXNtJworKworKwkgIFNFQ1RJT04gLnRleHQKKyt0ZXN0OgkJCTsgWzFdCisrCSAgcmV0CisrCitkaWZmIC0tZ2l0IGEvdGVzdC9wZXJmb3JtdGVzdC5wbCBiL3Rlc3QvcGVyZm9ybXRlc3QucGwKK2luZGV4IGY3ODY1YjM5Li4wOTZmOTYwNCAxMDA3NTUKKy0tLSBhL3Rlc3QvcGVyZm9ybXRlc3QucGwKKysrKyBiL3Rlc3QvcGVyZm9ybXRlc3QucGwKK0BAIC00MiwxNCArNDIsMjIgQEAgc3ViIHBlcmZvcm0geworICAgICBURVNUOgorICAgICB3aGlsZSg8VEVTVEZJTEU+KSB7CisgICAgICAgICAjU2VlIGlmIHRoZXJlIGlzIGEgdGVzdCBjYXNlCistICAgICAgICBsYXN0IHVubGVzcyAvVGVzdG5hbWU9KC4qKTtccypBcmd1bWVudHM9KC4qKTtccypGaWxlcz0oLiopLzsKKy0gICAgICAgIG15ICgkc3VibmFtZSwgJGFyZ3VtZW50cywgJGZpbGVzKSA9ICgkMSwgJDIsICQzKTsKKysgICAgICAgIGxhc3QgdW5sZXNzIC9UZXN0bmFtZT0oLiopO1xzKkFyZ3VtZW50cz0oLiopO1xzKkZpbGVzPShbXjtdKikoPzo7XHMqVmFsaWRhdGU9KC4qKSk/LzsKKysgICAgICAgIG15ICgkc3VibmFtZSwgJGFyZ3VtZW50cywgJGZpbGVzLCAkdmFsaWRhdGUpID0gKCQxLCAkMiwgJDMsICQ0KTsKKysgICAgICAgIGNob21wICRmaWxlczsKKyAgICAgICAgIGRlYnVncHJpbnQoIiRzdWJuYW1lIHwgJGFyZ3VtZW50cyB8ICRmaWxlcyIpOworIAorICAgICAgICAgI0NhbGwgbmFzbSB3aXRoIHRoaXMgdGVzdCBjYXNlCisgICAgICAgICBzeXN0ZW0oIiRuYXNtICRhcmd1bWVudHMgJHRlc3RwYXRoID4gJHN0ZG91dGZpbGUgMj4gJHN0ZGVycmZpbGUiKTsKKyAgICAgICAgIGRlYnVncHJpbnQoIiRuYXNtICRhcmd1bWVudHMgJHRlc3RwYXRoID4gJHN0ZG91dGZpbGUgMj4gJHN0ZGVycmZpbGUgLS0tLT4gJD8iKTsKKyAKKysgICAgICAgIGlmKCR2YWxpZGF0ZSkgeworKyAgICAgICAgICAgIGlmKHN5c3RlbSgiJHZhbGlkYXRlID4+ICRzdGRvdXRmaWxlIDI+PiAkc3RkZXJyZmlsZSIpICE9IDApIHsKKysgICAgICAgICAgICAgICAgcHJpbnQgIlRlc3QgJHRlc3RuYW1lLyRzdWJuYW1lIHZhbGlkYXRpb24gZmFpbGVkXG4iOworKyAgICAgICAgICAgICAgICAkZ2xvYmFscmVzdWx0ID0gMTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrCisgICAgICAgICAjTW92ZSB0aGUgb3V0cHV0IHRvIHRoZSB0ZXN0IGRpcgorICAgICAgICAgbWtwYXRoKCIkb3V0cHV0ZGlyLyR0ZXN0bmFtZS8kc3VibmFtZSIpOworICAgICAgICAgZm9yZWFjaChzcGxpdCAvIC8sJGZpbGVzKSB7CistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vQ1ZFLTIwMTktMTQyNDgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vQ1ZFLTIwMTktMTQyNDgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1ZDJjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS9DVkUtMjAxOS0xNDI0OC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDkzZDQxZDgyOTYzYjJjZmQwYjI0YzkwNmY1YThkYWY1MzI4MWI1NTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSC4gUGV0ZXIgQW52aW4gKEludGVsKSIgPGhwYUB6eXRvci5jb20+CitEYXRlOiBGcmksIDE2IEF1ZyAyMDE5IDAxOjEyOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEJSIDMzOTI1NzY6IGRvbid0IHNlZ2ZhdWx0IG9uIGEgYmFkICVwcmFnbWEgbGltaXQKKworRG9uJ3Qgc2VnZmF1bHQgb24gYSBiYWQgJXByYWdtYSBsaW1pdC4gSW5zdGVhZCB0cmVhdCBhIE5VTEwgcG9pbnRlciBhcworYW4gZW1wdHkgc3RyaW5nLgorCitSZXBvcnRlZC1ieTogUmVuIEtpbXVyYSA8cmt4MTIwOWRldkBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBILiBQZXRlciBBbnZpbiAoSW50ZWwpIDxocGFAenl0b3IuY29tPgorCitDVkU6IENWRS0yMDE5LTE0MjQ4CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3JlcG8ub3IuY3ovbmFzbS5naXQvY29tbWl0LzkzZDQxZDgyOTYzYjJjZmQwYjI0YzkwNmY1YThkYWY1MzI4MWI1NTldCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgYXNtL25hc20uYyB8IDcgKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2FzbS9uYXNtLmMgYi9hc20vbmFzbS5jCitpbmRleCBjODRkNjc1Li42NTExNmFiIDEwMDY0NAorLS0tIGEvYXNtL25hc20uYworKysrIGIvYXNtL25hc20uYworQEAgLTIxMiw2ICsyMTIsMTEgQEAgbmFzbV9zZXRfbGltaXQoY29uc3QgY2hhciAqbGltaXQsIGNvbnN0IGNoYXIgKnZhbHN0cikKKyAgICAgYm9vbCBybl9lcnJvcjsKKyAgICAgaW50IGVycmxldmVsOworIAorKyAgICBpZiAoIWxpbWl0KQorKyAgICAgICAgbGltaXQgPSAiIjsKKysgICAgaWYgKCF2YWxzdHIpCisrICAgICAgICB2YWxzdHIgPSAiIjsKKysKKyAgICAgZm9yIChpID0gMDsgaSA8PSBMSU1JVF9NQVg7IGkrKykgeworICAgICAgICAgaWYgKCFuYXNtX3N0cmljbXAobGltaXQsIGxpbWl0X2luZm9baV0ubmFtZSkpCisgICAgICAgICAgICAgYnJlYWs7CitAQCAtMjA0LDcgKzIwOSw3IEBAIG5hc21fc2V0X2xpbWl0KGNvbnN0IGNoYXIgKmxpbWl0LCBjb25zdCBjaGFyICp2YWxzdHIpCisgICAgICAgICAgICAgZXJybGV2ZWwgPSBFUlJfV0FSTklOR3xFUlJfTk9GSUxFfEVSUl9VU0FHRTsKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBlcnJsZXZlbCA9IEVSUl9XQVJOSU5HfEVSUl9QQVNTMXxXQVJOX1VOS05PV05fUFJBR01BOworLSAgICAgICAgbmFzbV9lcnJvcihlcnJsZXZlbCwgInVua25vd24gbGltaXQ6IGAlcyciLCBsaW1pdCk7CisrICAgICAgICBuYXNtX2Vycm9yKGVycmxldmVsLCAiaW52YWxpZCBsaW1pdCB2YWx1ZTogYCVzJyIsIHZhbHN0cik7CisgICAgICAgICByZXR1cm4gRElSUl9FUlJPUjsKKyAgICAgfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTQuMDIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xNC4wMi5iYgppbmRleCBlNGY5NjRjLi5mOGE4ZDc2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xNC4wMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xNC4wMi5iYgpAQCAtNSw2ICs1LDkgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTk3NTUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyNDgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtZGVidWctcHJlZml4LW1hcC1vcHRpb24ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzZjQ4OWFhNDhhZDJhYTFmOTY3ZGM1ZTI5M2JiZDA2ZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphL2ZpeC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamEvZml4LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZDc3OTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamEvZml4LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGU5MmE5MTUxODNmOGJmZjI2OGY3NGM4Y2QwMGQ5ODYzMDFhMmJiZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBtYWtlcG9zdCA8bWFrZXBvc3RAZmlyZW1haWwuY2M+Ci1EYXRlOiBNb24sIDI0IERlYyAyMDE4IDAzOjEzOjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBzdF9tdGltIGlmIHN0X210aW1lIGlzIG1hY3JvLCBmaXggIzE1MTAKLQotSW4gUE9TSVguMS0yMDA4LCBzeXNfc3RhdCBoYXMgYSBzdF9tdGltIG1lbWJlciBhbmQgYSBzdF9tdGltZSBiYWNrd2FyZAotY29tcGF0aWJpbGl0eSBtYWNyby4gU2hvdWxkIGhlbHAgYXZvaWQgaGFyZGNvZGluZyBwbGF0Zm9ybSBkZXRlY3Rpb24uCi0KLVNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvZGlza19pbnRlcmZhY2UuY2MgfCAxNCArKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Rpc2tfaW50ZXJmYWNlLmNjIGIvc3JjL2Rpc2tfaW50ZXJmYWNlLmNjCi1pbmRleCBkNGMyZmIwLi5kYzI5N2M0IDEwMDY0NAotLS0tIGEvc3JjL2Rpc2tfaW50ZXJmYWNlLmNjCi0rKysgYi9zcmMvZGlza19pbnRlcmZhY2UuY2MKLUBAIC0yMDIsMTkgKzIwMiwxMyBAQCBUaW1lU3RhbXAgUmVhbERpc2tJbnRlcmZhY2U6OlN0YXQoY29uc3Qgc3RyaW5nJiBwYXRoLCBzdHJpbmcqIGVycikgY29uc3QgewotICAgLy8gdGhhdCBpdCBkb2Vzbid0IGV4aXN0LgotICAgaWYgKHN0LnN0X210aW1lID09IDApCi0gICAgIHJldHVybiAxOwotLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX1BPU0lYX0NfU09VUkNFKQotKyNpZiBkZWZpbmVkKF9BSVgpCi0rICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbWUgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltZV9uOwotKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgcmV0dXJuICgoaW50NjRfdClzdC5zdF9tdGltZXNwZWMudHZfc2VjICogMTAwMDAwMDAwMExMICsKLSAgICAgICAgICAgc3Quc3RfbXRpbWVzcGVjLnR2X25zZWMpOwotLSNlbGlmIChfUE9TSVhfQ19TT1VSQ0UgPj0gMjAwODA5TCB8fCBfWE9QRU5fU09VUkNFID49IDcwMCB8fCBkZWZpbmVkKF9CU0RfU09VUkNFKSB8fCBkZWZpbmVkKF9TVklEX1NPVVJDRSkgfHwgXAotLSAgICAgICBkZWZpbmVkKF9fQklPTklDX18pIHx8IChkZWZpbmVkIChfX1NWUjQpICYmIGRlZmluZWQgKF9fc3VuKSkgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCi0tICAvLyBGb3IgZ2xpYmMsIHNlZSAiVGltZXN0YW1wIGZpbGVzIiBpbiB0aGUgTm90ZXMgb2YgaHR0cDovL3d3dy5rZXJuZWwub3JnL2RvYy9tYW4tcGFnZXMvb25saW5lL3BhZ2VzL21hbjIvc3RhdC4yLmh0bWwKLS0gIC8vIG5ld2xpYiwgdUNsaWJjIGFuZCBtdXNsIGZvbGxvdyB0aGUga2VybmVsIChvciBDeWd3aW4pIGhlYWRlcnMgYW5kIGRlZmluZSB0aGUgcmlnaHQgbWFjcm8gdmFsdWVzIGFib3ZlLgotLSAgLy8gRm9yIGJzZCwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mcmVlYnNkL2ZyZWVic2QvYmxvYi9tYXN0ZXIvc3lzL3N5cy9zdGF0LmggYW5kIHNpbWlsYXIKLS0gIC8vIEZvciBiaW9uaWMsIEMgYW5kIFBPU0lYIEFQSSBpcyBhbHdheXMgZW5hYmxlZC4KLS0gIC8vIEZvciBzb2xhcmlzLCBzZWUgaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vY2QvRTg4MzUzXzAxL2h0bWwvRTM3ODQxL3N0YXQtMi5odG1sLgotKyNlbGlmIGRlZmluZWQoc3RfbXRpbWUpIC8vIEEgbWFjcm8sIHNvIHdlJ3JlIGxpa2VseSBvbiBtb2Rlcm4gUE9TSVguCi0gICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbS50dl9zZWMgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltLnR2X25zZWM7Ci0tI2VsaWYgZGVmaW5lZChfQUlYKQotLSAgcmV0dXJuIChpbnQ2NF90KXN0LnN0X210aW1lICogMTAwMDAwMDAwMExMICsgc3Quc3RfbXRpbWVfbjsKLSAjZWxzZQotICAgcmV0dXJuIChpbnQ2NF90KXN0LnN0X210aW1lICogMTAwMDAwMDAwMExMICsgc3Quc3RfbXRpbWVuc2VjOwotICNlbmRpZgotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYzYzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjEwLjAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKKworREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKK1NSQ1JFViA9ICJlZDdmNjcwNDBiMzcwMTg5ZDk4OWFkYmQ2MGZmOGVhMjk5NTcyMzFmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmluamEtYnVpbGQvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJcHl0aG9uMyAuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAorfQorCitkb19jb21waWxlKCkgeworCXB5dGhvbjMgLi9jb25maWd1cmUucHkKKwluaW5qYQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAgJHtTfS9uaW5qYSAke0R9JHtiaW5kaXJ9L25pbmphCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuOS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMjM2ZTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIk5pbmphIGlzIGEgc21hbGwgYnVpbGQgc3lzdGVtIHdpdGggYSBmb2N1cyBvbiBzcGVlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vbWFydGluZS5naXRodWIuY29tL25pbmphLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE4MTU4NmE2NGFkNGU0NzZjNzkxY2RhN2UyZjJjNTJlIgotCi1ERVBFTkRTID0gInJlMmMtbmF0aXZlIG5pbmphLW5hdGl2ZSIKLQotU1JDUkVWID0gImIyNWMwOGJkYTQ5NDkxOTJjNjljZWE0Y2VlMDU3ODg3MzQxYTJmZmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uaW5qYS1idWlsZC9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UgXAotICAgICAgICAgICBmaWxlOi8vZml4LW11c2wucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0JcHl0aG9uMyAuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAotfQotCi1kb19jb21waWxlKCkgewotCXB5dGhvbjMgLi9jb25maWd1cmUucHkKLQluaW5qYQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLUQgLW0gMDc1NSAgJHtTfS9uaW5qYSAke0R9JHtiaW5kaXJ9L25pbmphCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkxZWQ1MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotRnJvbSBkNDJiMjNmNGZiNWQ2YmQ1OGU5MmU5OTVmZTViZWZjNzZlZmJhZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE1OjQ3OjU4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFN3aXRjaCBhbGwgc2NyaXB0cyB0byB1c2UgUHl0aG9uIDMueAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbWFrZVBhY2thZ2UgICAgICAgICAgfCAyICstCi0gb3BrZy1jb21wYXJlLWluZGV4ZXMgfCAyICstCi0gb3BrZy1ncmFwaC1kZXBzICAgICAgfCAyICstCi0gb3BrZy1saXN0LWZpZWxkcyAgICAgfCAyICstCi0gb3BrZy1tYWtlLWluZGV4ICAgICAgfCAyICstCi0gb3BrZy1zaG93LWRlcHMgICAgICAgfCAyICstCi0gb3BrZy11bmJ1aWxkICAgICAgICAgfCAyICstCi0gb3BrZy11cGRhdGUtaW5kZXggICAgfCAyICstCi0gb3BrZy5weSAgICAgICAgICAgICAgfCAyICstCi0gOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tYWtlUGFja2FnZSBiL21ha2VQYWNrYWdlCi1pbmRleCA0YmRmYzU2Li4wMjEyNGRkIDEwMDc1NQotLS0tIGEvbWFrZVBhY2thZ2UKLSsrKyBiL21ha2VQYWNrYWdlCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSAKLSAjIFRoZSBnZW5lcmFsIGFsZ29yaXRobSB0aGlzIHByb2dyYW0gZm9sbG93cyBnb2VzIGxpa2UgdGhpczoKLSAjICAgUnVuIHRhciB0byBleHRyYWN0IGNvbnRyb2wgZnJvbSBjb250cm9sLnRhci5neiBmcm9tIHRoZSBwYWNrYWdlLgotZGlmZiAtLWdpdCBhL29wa2ctY29tcGFyZS1pbmRleGVzIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKLWluZGV4IGI2MGQyMGEuLjgwYzEyNjMgMTAwNzU1Ci0tLS0gYS9vcGtnLWNvbXBhcmUtaW5kZXhlcwotKysrIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLWdyYXBoLWRlcHMgYi9vcGtnLWdyYXBoLWRlcHMKLWluZGV4IDY2NTNmZDUuLmYxZTM3NmEgMTAwNzU1Ci0tLS0gYS9vcGtnLWdyYXBoLWRlcHMKLSsrKyBiL29wa2ctZ3JhcGgtZGVwcwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctbGlzdC1maWVsZHMgYi9vcGtnLWxpc3QtZmllbGRzCi1pbmRleCBjMTRhOTBmLi4yNGY3OTU1IDEwMDc1NQotLS0tIGEvb3BrZy1saXN0LWZpZWxkcwotKysrIGIvb3BrZy1saXN0LWZpZWxkcwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctbWFrZS1pbmRleCBiL29wa2ctbWFrZS1pbmRleAotaW5kZXggM2Y3NTdmNi4uMjk4OGY5ZiAxMDA3NTUKLS0tLSBhL29wa2ctbWFrZS1pbmRleAotKysrIGIvb3BrZy1tYWtlLWluZGV4Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIiIiCi0gICAgVXRpbGl0eSB0byBjcmVhdGUgb3BrZyBjb21wYXRpYmxlIGluZGV4ZXMKLSAiIiIKLSAKLWRpZmYgLS1naXQgYS9vcGtnLXNob3ctZGVwcyBiL29wa2ctc2hvdy1kZXBzCi1pbmRleCAxNTNmMjFlLi40ZTE4YjRmIDEwMDc1NQotLS0tIGEvb3BrZy1zaG93LWRlcHMKLSsrKyBiL29wa2ctc2hvdy1kZXBzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy11bmJ1aWxkIGIvb3BrZy11bmJ1aWxkCi1pbmRleCA0ZjM2YmVjLi41NzY0MmM5IDEwMDc1NQotLS0tIGEvb3BrZy11bmJ1aWxkCi0rKysgYi9vcGtnLXVuYnVpbGQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLXVwZGF0ZS1pbmRleCBiL29wa2ctdXBkYXRlLWluZGV4Ci1pbmRleCAzNDFjMWMyLi43YmZmOGExIDEwMDc1NQotLS0tIGEvb3BrZy11cGRhdGUtaW5kZXgKLSsrKyBiL29wa2ctdXBkYXRlLWluZGV4Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSAKLSBpbXBvcnQgc3lzLCBvcwotZGlmZiAtLWdpdCBhL29wa2cucHkgYi9vcGtnLnB5Ci1pbmRleCAyZWNhYzhhLi43ZTY0ZGU0IDEwMDY0NAotLS0tIGEvb3BrZy5weQotKysrIGIvb3BrZy5weQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotICMgICBDb3B5cmlnaHQgKEMpIDIwMDEgQWxleGFuZGVyIFMuIEd1eSA8YTdyQGFuZGVybi5vcmc+Ci0gIyAgICAgICAgICAgICAgICAgICAgICBBbmRlcm4gUmVzZWFyY2ggTGFicwotICMKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLW9wa2ctYnVpbGQtY2xhbXAtbXRpbWVzLXRvLVNPVVJDRV9EQVRFX0VQT0NILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1jbGFtcC1tdGltZXMtdG8tU09VUkNFX0RBVEVfRVBPQ0gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExODExNjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1jbGFtcC1tdGltZXMtdG8tU09VUkNFX0RBVEVfRVBPQ0gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDU5ZGE1NTc3YmY4ZGY0NDFjNmNhOTU4ZTUwZmNiODMyMjg3MDI3NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotRGF0ZTogVGh1LCAxMiBTZXAgMjAxOSAxMDoyNDo1OCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBvcGtnLWJ1aWxkOiBjbGFtcCBtdGltZXMgdG8gU09VUkNFX0RBVEVfRVBPQ0gKLQotRm9yIHJlcHJvZHVjaWJsZSBidWlsZHMsIGNsYW1wIG10aW1lcyBiaWdnZXIgdGhhbiBTT1VSQ0VfREFURV9FUE9DSCB0bwotU09VUkNFX0RBVEVfRVBPQ0ggKGJ1aWxkIGdlbmVyYXRlZCBmaWxlcywgdXN1YWxseSkuCi0KLUZpeGVzIGJ1Z3ppbGxhIDEzNDUwCi0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gb3BrZy1idWlsZCB8IDkgKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvb3BrZy1idWlsZCBiL29wa2ctYnVpbGQKLWluZGV4IGRjZDJkNjguLjI1MTdhMmIgMTAwNzU1Ci0tLS0gYS9vcGtnLWJ1aWxkCi0rKysgYi9vcGtnLWJ1aWxkCi1AQCAtMjk3LDkgKzI5NywxNiBAQCBta2RpciAkdG1wX2RpcgotIAotIGJ1aWxkX2RhdGU9IiR7U09VUkNFX0RBVEVfRVBPQ0g6LSQoZGF0ZSArJXMpfSIKLSAKLSttdGltZV9hcmdzPSIiCi0rIyAtLWNsYW1wLW10aW1lIHJlcXVpcmVzIHRhciA+IDEuMjguIE9ubHkgdXNlIGl0IGlmIFNPVVJDRV9EQVRFX0VQT0NIIGlzIHNldCwgdG8gYXZvaWQgaGF2aW5nIGEgZ2VuZXJpYyBjYXNlIGRlcGVuZGVuY3kgb24gdGFyID4gMS4yOC4KLSsjIHRoaXMgc2V0dGluZyB3aWxsIG1ha2Ugc3VyZSBmaWxlcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSBoYXZlIGNvbnNpc3RlbnQgbXRpbWVzLCBmb3IgcmVwcm9kdWNpYmxlIGJ1aWxkcy4KLStpZiBbICEgLXogIiRTT1VSQ0VfREFURV9FUE9DSCIgIF07IHRoZW4KLSsgICAgbXRpbWVfYXJncz0iLS1tdGltZT1AJGJ1aWxkX2RhdGUgLS1jbGFtcC1tdGltZSIKLStmaQotKwotICggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgZmluZCAuIC10eXBlIGYgPiAkdG1wX2Rpci9jb250cm9sX2xpc3QgKQotICggY2QgJHBrZ19kaXIgJiYgZmluZCAuIC1wYXRoIC4vJENPTlRST0wgLXBydW5lIC1vIC1wcmludCA+ICR0bXBfZGlyL2ZpbGVfbGlzdCApCi0tKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvZmlsZV9saXN0IHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQotKyggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAkbXRpbWVfYXJncyAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2ZpbGVfbGlzdCB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKLSAoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gLS1tdGltZT1AJGJ1aWxkX2RhdGUgLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9jb250cm9sX2xpc3QgfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQotIHJtICR0bXBfZGlyL2ZpbGVfbGlzdAotIHJtICR0bXBfZGlyL2NvbnRyb2xfbGlzdAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL2ZpeC1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDU5NzliCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL2ZpeC1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRml4IHJlcHJvZHVjaWJpbGl0eSBpc3N1ZXMgaW4gb3BrZy1idWlsZAorCitUaGVyZSBpcyBhIHNvcnRpbmcgcHJvYmxlbSB3aXRoIG9wa2ctYnVpbGQgd2hlcmUgdGhlIGlwayBnZW5lcmF0ZWQgaXMgZGVwZW5kaW5nCit1cG9uIHRoZSBvcmRlciBvZiBmaWxlcyBvbiBkaXNrLiBUaGUgcmVhc29uIGlzIHRoZSAtLXNvcnQgb3B0aW9uIHRvIHRhciBvbmx5CitpbmZsdWVuY2VzIHRoZSBvcmRlcnMgb2YgZmlsZXMgdGFyIHJlYWRzLCBub3QgdGhvc2UgcGFzc2VkIGJ5IHRoZSAtVCBvcHRpb24uCisKK0FkZCBpbiBhIHNvcnQgY2FsbCB0byByZXNvbHZlIHRoaXMgaXNzdWUuIFRvIGVuc3VyZSBjb25zaXN0ZW50IHNvcnRpbmcgd2UKK2Fsc28gbmVlZCB0byBmb3JjZSB0byBhIHNwZWNpZmljIGxvY2FsZSAoQykgZWxzZSB0aGUgcmVzdWx0cyBhcmUgc3RpbGwgbm90CitkZXRlcm1pbmlzdGljLgorCitSUCAyMDIwLzIvNQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL29wa2ctZGV2ZWwvWXR0WjczTkxyWVFdCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IG9wa2ctdXRpbHMtMC40LjIvb3BrZy1idWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wa2ctdXRpbHMtMC40LjIub3JpZy9vcGtnLWJ1aWxkCisrKysgb3BrZy11dGlscy0wLjQuMi9vcGtnLWJ1aWxkCitAQCAtMzA1LDggKzMwNSwxMCBAQCBpZiBbICEgLXogIiRTT1VSQ0VfREFURV9FUE9DSCIgIF07IHRoZW4KKyAgICAgbXRpbWVfYXJncz0iLS1tdGltZT1AJGJ1aWxkX2RhdGUgLS1jbGFtcC1tdGltZSIKKyBmaQorIAorLSggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgZmluZCAuIC10eXBlIGYgPiAkdG1wX2Rpci9jb250cm9sX2xpc3QgKQorLSggY2QgJHBrZ19kaXIgJiYgZmluZCAuIC1wYXRoIC4vJENPTlRST0wgLXBydW5lIC1vIC1wYXRoIC4gLW8gLXByaW50ICA+ICR0bXBfZGlyL2ZpbGVfbGlzdCApCisrZXhwb3J0IExBTkc9QworK2V4cG9ydCBMQ19BTEw9QworKyggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgZmluZCAuIC10eXBlIGYgfCBzb3J0ID4gJHRtcF9kaXIvY29udHJvbF9saXN0ICkKKysoIGNkICRwa2dfZGlyICYmIGZpbmQgLiAtcGF0aCAuLyRDT05UUk9MIC1wcnVuZSAtbyAtcGF0aCAuIC1vIC1wcmludCAgfCBzb3J0ID4gJHRtcF9kaXIvZmlsZV9saXN0ICkKKyAoIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gJG10aW1lX2FyZ3MgLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9maWxlX2xpc3QgfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCisgKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uIC0tbXRpbWU9QCRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvY29udHJvbF9saXN0IHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkKKyBybSAkdG1wX2Rpci9maWxlX2xpc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waXBlZmFpbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waXBlZmFpbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVkZGNjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvcGlwZWZhaWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1XZSBuZWVkIG9wa2ctYnVpbGQgdG8gZmFpbCBpZiBmb3IgZXhhbXBsZSB0aGUgdGFyIGNvbW1hbmQgaXMgcGFzc2VkIGludmFsaWQgCi1vcHRpb25zLiBXaXRob3V0IHRoaXMsIHdlIHNlZSBzaWxlbnRseSBjcmVhdGVkIGVtcHR5IHBhY2thZ2VkIHdoZXJlIGRhdGEudGFyCi1pcyB6ZXJvIGJ5dGVzIGluIHNpemUuIFRoaXMgY3JlYXRlcyBoYXJkIHRvIGRlYnVnIHByb2JsZW1zLgotCi1BbiBleGFtcGxlIGlzIHdoZW4gcmVwcm9kdWNpYmxlIGJ1aWxkcyBhcmUgZW5hYmxlZCBhbmQgcnVuIG9uIG9sZCBob3N0cyBsaWtlCi1jZW50b3M3IHdoaWNoIGhhcyB0YXIgPCAxLjI4OgotCi1TdWJwcm9jZXNzIG91dHB1dDp0YXI6IHVucmVjb2duaXplZCBvcHRpb24gJy0tY2xhbXAtbXRpbWUnCi1UcnkgYHRhciAtLWhlbHAnIG9yIGB0YXIgLS11c2FnZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0KLUluZGV4OiBvcGtnLXV0aWxzLTAuNC4xL29wa2ctYnVpbGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGtnLXV0aWxzLTAuNC4xLm9yaWcvb3BrZy1idWlsZAotKysrIG9wa2ctdXRpbHMtMC40LjEvb3BrZy1idWlsZAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL3NoCi0rIyEvYmluL2Jhc2gKLSAKLSA6IDw8PWN1dAotID1oZWFkMSBOQU1FCi1AQCAtMTIsNiArMTIsNyBAQCBvcGtnLWJ1aWxkIC0gY29uc3RydWN0IGFuIC5vcGsgZnJvbSBhIGRpCi0gIyAgIFVwZGF0ZWQgdG8gd29yayBvbiBGYW1pbGlhciBQcmUwLjdyYzEsIHdpdGggYnVzeWJveCB0YXIuCi0gIyAgIE5vdGUgaXQgUmVxdWlyZXM6IGJpbnV0aWxzLWFyIChzaW5jZSB0aGUgYnVzeWJveCBhciBjYW4ndCBjcmVhdGUpCi0gc2V0IC1lCi0rc2V0IC1vIHBpcGVmYWlsCi0gCi0gdmVyc2lvbj0xLjAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI2YzdhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCi1TVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCi1QUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZy1idWlsZC1jbGFtcC1tdGltZXMtdG8tU09VUkNFX0RBVEVfRVBPQ0gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGlwZWZhaWwucGF0Y2ggXAotIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMvcmVmcy8iCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjhjMTQwZjgzNWI2OTRhMGMyN2NmYjIzZDI0MjZhMDJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllYTllZmRkOWZlMTM2NjFhZDI1MWUzYTI4NjBjMWM5MzA0NWFkY2ZhYTY2NTljM2U4NmQ5NzQ4ZWNkYTNiNmUiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCIKLQotIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCi1QWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXBpY2tsZSBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtc3RyaW5nb2xkIgotUFlUSE9OUkRFUFNfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJRyA9ICJweXRob24gdXBkYXRlLWFsdGVybmF0aXZlcyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCwke1BZVEhPTlJERVBTfSIKLVBBQ0tBR0VDT05GSUdbdXBkYXRlLWFsdGVybmF0aXZlc10gPSAiLCwsIgotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCXJtIC1mICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi0JZmkKLQotICAgIGlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgZ3JlcCAtbFogIi91c3IvYmluL2Vudi4qcHl0aG9uIiAke0R9JHtiaW5kaXJ9LyogfCB4YXJncyAtMCBybQotICAgIGZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KLQkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJwotCWZpCi19Ci0KLSMgVGhlc2UgYXJlIGVtcHR5IGFuZCB3aWxsIHB1bGwgcHl0aG9uMy1kZXYgaW50byBpbWFnZXMgd2hlcmUgaXQgd291bGRuJ3QKLSMgaGF2ZSBiZWVuIG90aGVyd2lzZSwgc28gZG9uJ3QgZ2VuZXJhdGUgdGhlbS4KLVBBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgotCi1QQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgotRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotCi1wa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKLQlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcwotCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzE1MjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4yLmJiCkBAIC0wLDAgKzEsNjYgQEAKK1NVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKK1NVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1mZmExMWZmM2MxNWViMzFjNmE3Y2VhYTAwY2M5Zjk4NiIKK1BST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvJHtCUE59L3NuYXBzaG90LyR7QlBOfS0ke1BWfS50YXIuZ3ogXCAKKyAgICAgICAgICAgZmlsZTovL2ZpeC1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAorIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMvcmVmcy8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYzIxMDY1MDY0NGZjYjliYmEwNmFkNWVjOTVhNjNlYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTI5YWQ4N2Q1NDE3ODllMGI4MmQ2MjZkYjAxYTEyMDFhYzQ4ZGY2ZjQ5ZjIyNjJmY2ZiODZjZjgxNWU1ZDZjIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCisKK2luaGVyaXQgcGVybG5hdGl2ZQorCisjIEZvciBuYXRpdmUgYnVpbGRzIHdlIHVzZSB0aGUgaG9zdCBQeXRob24KK1BZVEhPTlJERVBTID0gInB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtbWF0aCBweXRob24zLWNyeXB0IHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWZjbnRsIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1zdHJpbmdvbGQiCitQWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgorCitQQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgorUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlncmVwIC1sWiAiL3Vzci9iaW4vZW52LipweXRob24iICR7RH0ke2JpbmRpcn0vKiB8IHhhcmdzIC0wIHJtCisJZmkKKworCWlmIFsgLWUgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIgXTsgdGhlbgorCQlzZWQgLWkgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIC1lICdzLC91c3IvYmluLCR7YmluZGlyfSxnOyBzLC91c3IvbGliLCR7bm9uYXJjaF9saWJkaXJ9LGcnCisJZmkKK30KKworIyBUaGVzZSBhcmUgZW1wdHkgYW5kIHdpbGwgcHVsbCBweXRob24zLWRldiBpbnRvIGltYWdlcyB3aGVyZSBpdCB3b3VsZG4ndAorIyBoYXZlIGJlZW4gb3RoZXJ3aXNlLCBzbyBkb24ndCBnZW5lcmF0ZSB0aGVtLgorUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCisKK1BBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCitGSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCitSUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCisKK3BrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgeworCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCisJcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wZW5faW5uZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3Blbl9pbm5lci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4ZTA5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3Blbl9pbm5lci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbSBXZWQgTm92IDIwIDIyOjM1OjAyIDIwMTkKLUZyb206IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1UbzogPG9wa2ctZGV2ZWxAZ29vZ2xlZ3JvdXBzLmNvbT4sIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotQ0M6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1TdWJqZWN0OiBbb3BrZ11bUEFUQ0ggMi8yXSBvcGVuX2lubmVyOiBhZGQgc3VwcG9ydCBmb3IgZW1wdHkgcGF5bG9hZHMKLURhdGU6IFdlZCwgMjAgTm92IDIwMTkgMTY6MzQ6NDggLTA2MDAKLU1lc3NhZ2UtSUQ6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0zLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi4yMi4wCi1Jbi1SZXBseS1UbzogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVJlZmVyZW5jZXM6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0xLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVN1cHBvcnQgZm9yIGVtcHR5IGNvbXByZXNzZWQgcGF5bG9hZHMgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQgb24NCi1saWJhcmNoaXZlLg0KLQ0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+DQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0NCi0gbGlib3BrZy9vcGtnX2FyY2hpdmUuYyB8IDcgKysrKysrKw0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspDQotDQotZGlmZiAtLWdpdCBhL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMgYi9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotaW5kZXggMGU5Y2NlYS4uZjE5Y2VjZSAxMDA2NDQNCi0tLS0gYS9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotKysrIGIvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLUBAIC02MTgsNiArNjE4LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgYXJjaGl2ZSAqb3Blbl9pbm5lcihzdHJ1Y3QgYXJjaGl2ZSAqb3V0ZXIpDQotICAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0gICAgIH0NCi0gDQotKyAgICByID0gYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2VtcHR5KGlubmVyKTsNCi0rICAgIGlmIChyICE9IEFSQ0hJVkVfT0spIHsNCi0rICAgICAgICBvcGtnX21zZyhFUlJPUiwgIkVtcHR5IGZvcm1hdCBub3Qgc3VwcG9ydGVkOiAlc1xuIiwNCi0rICAgICAgICAgICAgICAgICBhcmNoaXZlX2Vycm9yX3N0cmluZyhpbm5lcikpOw0KLSsgICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQotKyAgICB9DQotKw0KLSAgICAgciA9IGFyY2hpdmVfcmVhZF9vcGVuKGlubmVyLCBkYXRhLCBOVUxMLCBpbm5lcl9yZWFkLCBpbm5lcl9jbG9zZSk7DQotICAgICBpZiAociAhPSBBUkNISVZFX09LKSB7DQotICAgICAgICAgb3BrZ19tc2coRVJST1IsICJGYWlsZWQgdG8gb3BlbiBpbm5lciBhcmNoaXZlOiAlc1xuIiwNCi0tLSANCi0yLjIyLjANCi0NCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnX2FyY2hpdmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZ19hcmNoaXZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTFlYmFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnX2FyY2hpdmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20gV2VkIE5vdiAyMCAyMjozNTowMSAyMDE5Ci1SZXR1cm4tUGF0aDogPHJpY2hhcmQucHVyZGllK2NhZl89cnB1cmRpZT1ycHN5cy5uZXRAbGludXhmb3VuZGF0aW9uLm9yZz4KLUZyb206IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1UbzogPG9wa2ctZGV2ZWxAZ29vZ2xlZ3JvdXBzLmNvbT4sIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotQ0M6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1TdWJqZWN0OiBbb3BrZ11bUEFUQ0ggMS8yXSBvcGtnX2FyY2hpdmUuYzogYXZvaWQgZG91YmxlIGZyZWUgb24gdW5jb21wcmVzcwotIGVycm9yCi1EYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE2OjM0OjQ3IC0wNjAwCi1NZXNzYWdlLUlEOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMi1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuMjIuMAotSW4tUmVwbHktVG86IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0xLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1SZWZlcmVuY2VzOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMS1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgb3Blbi1pbm5lciBmdW5jdGlvbiBjYWxscyBhcmNoaXZlX3JlYWRfb3Blbi4gT24gZXJyb3IsDQotYXJjaGl2ZV9yZWFkX29wZW4gY2FsbHMgaW5uZXJfY2xvc2UsIHdoaWNoIGFsc28gY2xvc2VzIHRoZSBvdXR0ZXINCi1hcmNoaXZlLiBPbiBlcnJvciwgcmV0dXJuIE5VTEwgZGlyZWN0bHkgdG8gYXZvaWQgZG91YmxlIGZyZWUuDQotDQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+DQotLS0tDQotIGxpYm9wa2cvb3BrZ19hcmNoaXZlLmMgfCA0ICsrLS0NCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCi0NCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1pbmRleCAzZDg3ZGIxLi4wZTljY2VhIDEwMDY0NA0KLS0tLSBhL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi0rKysgYi9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotQEAgLTYyMiw3ICs2MjIsNyBAQCBzdGF0aWMgc3RydWN0IGFyY2hpdmUgKm9wZW5faW5uZXIoc3RydWN0IGFyY2hpdmUgKm91dGVyKQ0KLSAgICAgaWYgKHIgIT0gQVJDSElWRV9PSykgew0KLSAgICAgICAgIG9wa2dfbXNnKEVSUk9SLCAiRmFpbGVkIHRvIG9wZW4gaW5uZXIgYXJjaGl2ZTogJXNcbiIsDQotICAgICAgICAgICAgICAgICAgYXJjaGl2ZV9lcnJvcl9zdHJpbmcoaW5uZXIpKTsNCi0tICAgICAgICBnb3RvIGVycl9jbGVhbnVwOw0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSAgICAgfQ0KLSANCi0gICAgIHJldHVybiBpbm5lcjsNCi1AQCAtNjgzLDcgKzY4Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXJjaGl2ZSAqZXh0cmFjdF9vdXRlcihjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqYXJuYW1lKQ0KLSANCi0gICAgIGlubmVyID0gb3Blbl9pbm5lcihvdXRlcik7DQotICAgICBpZiAoIWlubmVyKQ0KLS0gICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotIA0KLSAgICAgcmV0dXJuIGlubmVyOw0KLSANCi0tLSANCi0yLjIyLjANCi0NCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBhZThiMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgotU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgotCi1ERVBFTkRTID0gImxpYmFyY2hpdmUiCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wa2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2dfY29uZi1jcmVhdGUtb3BrZy5sb2NrLWluLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BrZ19hcmNoaXZlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5faW5uZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImJhMGMyMTMwNWZjOTNiMjZlODQ0OTgxZWYxMDBkYzg1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1YWMxZTAzN2QzODc3ZjYzNWQ4ODNmOGE1NTVlMTcyODgzYTI1ZDNlZWI3OTg2Yzc1ODkwZmRkMzEyNTBhNDMiCi0KLSMgVGhpcyBuZWVkcyB0byBiZSBiZWZvcmUgcHRlc3QgaW5oZXJpdCwgb3RoZXJ3aXNlIGFsbCBwdGVzdCBmaWxlcyBlbmQgcGFja2FnZWQKLSMgaW4gbGlib3BrZyBwYWNrYWdlIGlmIE9QS0dMSUJESVIgPT0gbGliZGlyLCBiZWNhdXNlIGRlZmF1bHQKLSMgUFRFU1RfUEFUSCA/PSAiJHtsaWJkaXJ9LyR7QlBOfS9wdGVzdCIKLVBBQ0tBR0VTID0rICJsaWJvcGtnIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID8/PSAiJHt0YXJnZXRfbG9jYWxzdGF0ZWRpcn0vbGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGlic29sdiIKLQotUEFDS0FHRUNPTkZJR1tncGddID0gIi0tZW5hYmxlLWdwZywtLWRpc2FibGUtZ3BnLFwKLSAgICBnbnVwZyBncGdtZSBsaWJncGctZXJyb3IsXAotICAgICR7QCAiZ251cGciIGlmICgibmF0aXZlIiBpbiBkLmdldFZhcigiUE4iKSkgZWxzZSAiZ251cGctZ3BnIn1cCi0gICAgIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW3NzbC1jdXJsXSA9ICItLWVuYWJsZS1zc2wtY3VybCwtLWRpc2FibGUtc3NsLWN1cmwsY3VybCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LC0tZGlzYWJsZS1zaGEyNTYiCi1QQUNLQUdFQ09ORklHW2xpYnNvbHZdID0gIi0td2l0aC1saWJzb2x2LC0td2l0aG91dC1saWJzb2x2LGxpYnNvbHYiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1wYXRoZmluZGVyIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWxvY2Fsc3RhdGVkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtsb2NhbHN0YXRlZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0gLS1zeXNjb25mZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7c3lzY29uZmRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IgotCi0jIFJlbGVhc2UgdGFyYmFsbCBoYXMgdW51c2VkIGJpbmFyaWVzIG9uIHRoZSB0ZXN0cyBmb2xkZXIsIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBhdXRvbWFrZS4KLSMgRm9yIG5vdywgZGVsZXRlIHRoZW0gdG8gYXZvaWQgcGFja2FnaW5nIGVycm9ycyAod3JvbmcgYXJjaGl0ZWN0dXJlKQotZG9fdW5wYWNrX2FwcGVuZCAoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdyZW1vdmVfdGVzdF9iaW5hcmllcycsIGQpCi19Ci0KLXJlbW92ZV90ZXN0X2JpbmFyaWVzICgpIHsKLQlybSAke1dPUktESVJ9L29wa2ctJHtQVn0vdGVzdHMvbGlib3BrZ190ZXN0KgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGtnCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCi0JZWNobyAib3B0aW9uIGxpc3RzX2RpciAke09QS0dMSUJESVJ9L29wa2cvbGlzdHMiID4+JHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQotCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5Ci0JaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCXNlZCAtaSAtZSAnL0BlY2hvICReL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0Jc2VkIC1pIC1lICcvQFBZVEhPTlBBVEg9LiAkKFBZVEhPTikgJF4vYVxcdEBpZiBbICIkJD8iICE9ICIwIiBdO3RoZW4gZWNobyAiRkFJTDoiJF47ZWxzZSBlY2hvICJQQVNTOiIkXjtmaScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gb3BrZy1hcmNoLWNvbmZpZyBsaWJhcmNoaXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBiaW51dGlscyBweXRob24zLWNvcmUgcHl0aG9uMy1jb21wcmVzc2lvbiIKLVJSRVBMQUNFU18ke1BOfSA9ICJvcGtnLW5vZ3BnIG9wa2ctY29sbGF0ZXJhbCIKLVJDT05GTElDVFNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotUlBST1ZJREVTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKLQotRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhNzRkYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMi5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgorU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTg7bWQ1PWQ2MjAwYjBmMmI0MWRlZTI3OGFhNWZhZDMzM2VlY2FlIgorCitERVBFTkRTID0gImxpYmFyY2hpdmUiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wa2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2dfY29uZi1jcmVhdGUtb3BrZy5sb2NrLWluLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImJkMTNlNWRmYzFjMjUzNmYwYzdiMmUxNWY3OTUyNzhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2ODg3ODUyYzQzNDU3ZWRmZmY5ZDhiNmQ5NTIwZjNmMWNkZDU1ZjI1ZWI2MDBhNmViMzFlMWM0ZTE1MWUxMDYiCisKKyMgVGhpcyBuZWVkcyB0byBiZSBiZWZvcmUgcHRlc3QgaW5oZXJpdCwgb3RoZXJ3aXNlIGFsbCBwdGVzdCBmaWxlcyBlbmQgcGFja2FnZWQKKyMgaW4gbGlib3BrZyBwYWNrYWdlIGlmIE9QS0dMSUJESVIgPT0gbGliZGlyLCBiZWNhdXNlIGRlZmF1bHQKKyMgUFRFU1RfUEFUSCA/PSAiJHtsaWJkaXJ9LyR7QlBOfS9wdGVzdCIKK1BBQ0tBR0VTID0rICJsaWJvcGtnIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKwordGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCitPUEtHTElCRElSID8/PSAiJHt0YXJnZXRfbG9jYWxzdGF0ZWRpcn0vbGliIgorCitQQUNLQUdFQ09ORklHID8/PSAibGlic29sdiIKKworUEFDS0FHRUNPTkZJR1tncGddID0gIi0tZW5hYmxlLWdwZywtLWRpc2FibGUtZ3BnLFwKKyAgICBnbnVwZyBncGdtZSBsaWJncGctZXJyb3IsXAorICAgICR7QCAiZ251cGciIGlmICgibmF0aXZlIiBpbiBkLmdldFZhcigiUE4iKSkgZWxzZSAiZ251cGctZ3BnIn1cCisgICAgIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW3NzbC1jdXJsXSA9ICItLWVuYWJsZS1zc2wtY3VybCwtLWRpc2FibGUtc3NsLWN1cmwsY3VybCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NoYTI1Nl0gPSAiLS1lbmFibGUtc2hhMjU2LC0tZGlzYWJsZS1zaGEyNTYiCitQQUNLQUdFQ09ORklHW2xpYnNvbHZdID0gIi0td2l0aC1saWJzb2x2LC0td2l0aG91dC1saWJzb2x2LGxpYnNvbHYiCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1wYXRoZmluZGVyIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWxvY2Fsc3RhdGVkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtsb2NhbHN0YXRlZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0gLS1zeXNjb25mZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7c3lzY29uZmRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9vcGtnCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BrZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCisJZWNobyAib3B0aW9uIGxpc3RzX2RpciAke09QS0dMSUJESVJ9L29wa2cvbGlzdHMiID4+JHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKworCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5CisJaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCXNlZCAtaSAtZSAnL0BlY2hvICReL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pIC1lICcvQFBZVEhPTlBBVEg9LiAkKFBZVEhPTikgJF4vYVxcdEBpZiBbICIkJD8iICE9ICIwIiBdO3RoZW4gZWNobyAiRkFJTDoiJF47ZWxzZSBlY2hvICJQQVNTOiIkXjtmaScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKK30KKworUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gb3BrZy1hcmNoLWNvbmZpZyBsaWJhcmNoaXZlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBiaW51dGlscyBweXRob24zLWNvcmUgcHl0aG9uMy1jb21wcmVzc2lvbiIKK1JSRVBMQUNFU18ke1BOfSA9ICJvcGtnLW5vZ3BnIG9wa2ctY29sbGF0ZXJhbCIKK1JDT05GTElDVFNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorUlBST1ZJREVTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzEzNTc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjI1Nzk5OTE3YzdkMzFhODkxZDVlMzJiODNhZDA4ZjZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmODkwMWY5MTQ0YjVlYzE3ZGZmZGIzMzU0OGI1ZjRjN2Y4MDQ5YjBkMTAyM2JlMzQ2MmNkZDY0ZWM1YTNhYjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIm9yYy1leGFtcGxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcmMtLioiCi1GSUxFU19vcmMtZXhhbXBsZXMgPSAiJHtsaWJkaXJ9L29yYy8qIgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0ZGMzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjMxLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiT3B0aW1pc2VkIElubmVyIExvb3AgUnVudGltZSBDb21waWxlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL21vZHVsZXMvb3JjLmh0bWwiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0MDBiZDlkMDllOGFmNTZiOWVjOTgyYjNkODU3OTdlIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9vcmMvb3JjLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNmI5NWE0N2VmZjcxM2U5MTg3M2UyYzJiMWE1YjNhZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMGFiNWYxMGE2YTlhZTdjM2E2YjQyMTgyNDY1NjRjM2JmMDBkNjU3Y2JkZjU4N2U2ZDM0ZWMzZWYwNjE2MDc1IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBndGstZG9jCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKK0dUS0RPQ19NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR1RLRE9DX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKK0ZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYgppbmRleCA1ZDdmNTVmLi5iNTg5N2IzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYgpAQCAtMjIsMyArMjIsNiBAQAogUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCBkKX0iCiBQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCiAKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBhdGNoLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuMTAuYmIKaW5kZXggNTgwMTA4ZS4uY2M5ODNlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiCkBAIC0xLDQgKzEsNCBAQAotU1JDX1VSSSA9ICJodHRwOi8vbml4b3Mub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorU1JDX1VSSSA9ICJodHRwczovL25peG9zLm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL2hhbmRsZS1yZWFkLW9ubHktZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2ggXAogICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtQ2hlY2tMaWIucG0tZG8tbm90LWF0dGVtcHQtdG8tcnVuLWEtY3Jvc3MtZXhlY3V0YWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1YmJlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtQ2hlY2tMaWIucG0tZG8tbm90LWF0dGVtcHQtdG8tcnVuLWEtY3Jvc3MtZXhlY3V0YWJsZS5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIGEwMzNjOWVjZTEyYjZlZWFkNDhlZWQ2M2YxMDZjY2RlYzYxNTliMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTY6MjY6NTUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2tMaWIucG06IGRvIG5vdCBhdHRlbXB0IHRvIHJ1biBhIGNyb3NzIGV4ZWN1dGFibGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBpbmMvRGV2ZWwvQ2hlY2tMaWIucG0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmMvRGV2ZWwvQ2hlY2tMaWIucG0gYi9pbmMvRGV2ZWwvQ2hlY2tMaWIucG0KK2luZGV4IDM2YTQ1MWEuLmIwNGFjYzEgMTAwNjQ0CistLS0gYS9pbmMvRGV2ZWwvQ2hlY2tMaWIucG0KKysrKyBiL2luYy9EZXZlbC9DaGVja0xpYi5wbQorQEAgLTMzMCw3ICszMzAsNyBAQCBzdWIgYXNzZXJ0X2xpYiB7CisgICAgICAgICBwdXNoIEBtaXNzaW5nLCAkbGliIGlmICRydiAhPSAwIHx8ICEteCAkZXhlZmlsZTsKKyAgICAgICAgIG15ICRhYnNleGVmaWxlID0gRmlsZTo6U3BlYy0+cmVsMmFicygkZXhlZmlsZSk7CisgICAgICAgICAkYWJzZXhlZmlsZSA9ICciJyAuICRhYnNleGVmaWxlIC4gJyInIGlmICRhYnNleGVmaWxlID1+IG0vXHMvOworLSAgICAgICAgcHVzaCBAd3JvbmdyZXN1bHQsICRsaWIgaWYgJHJ2ID09IDAgJiYgLXggJGV4ZWZpbGUgJiYgc3lzdGVtKCRhYnNleGVmaWxlKSAhPSAwOworKyAgICAgICAgcHVzaCBAd3JvbmdyZXN1bHQsICRsaWIgaWYgJHJ2ID09IDAgJiYgLXggJGV4ZWZpbGUgJiYgMCAhPSAwOworICAgICAgICAgdW5saW5rICRvZmlsZSBpZiAtZSAkb2ZpbGU7CisgICAgICAgICBfY2xlYW51cF9leGUoJGV4ZWZpbGUpOworICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtUEFUQ0gtcGVybC0xMzQxMTctQ2xvc2UtREFUQS1pbi1sb2NfdG9vbHMucGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtUEFUQ0gtcGVybC0xMzQxMTctQ2xvc2UtREFUQS1pbi1sb2NfdG9vbHMucGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljYWUwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGEwNGE3NWYyMGYwM2FhMDhjZTgxMThiM2IwYjNmOTNlYjNlOTk3YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIExlYWNoIDxyaWNoK3BlcmxAaHlwaGVuLWRhc2gtaHlwaGVuLmluZm8+CitEYXRlOiBTdW4sIDE5IE1heSAyMDE5IDIwOjE2OjQxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFBBVENIOiBbcGVybCAjMTM0MTE3XSBDbG9zZSBEQVRBIGluIGxvY190b29scy5wbAorCitUaGlzIHByZXZlbnRzIHVuZXhwZWN0ZWQgdGV4dCBhbmQgZml4ZXMgdGVzdCBsaWIvd2FybmluZ3MudAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFthMDRhNzVmMjBmMDNhYTA4Y2U4MTE4YjNiMGIzZjkzZWIzZTk5N2M1XQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IFplbmcgPG1hdHRoZXcuemVuZ0B3aW5kcml2ZXIuY29tPgorCistLS0KKyB0L2xvY190b29scy5wbCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3QvbG9jX3Rvb2xzLnBsIGIvdC9sb2NfdG9vbHMucGwKK2luZGV4IGM3NmUyOTM4OGEuLmJlZWJkOThkODggMTAwNjQ0CistLS0gYS90L2xvY190b29scy5wbAorKysrIGIvdC9sb2NfdG9vbHMucGwKK0BAIC00MjEsNyArNDIxLDcgQEAgc3ViIGZpbmRfbG9jYWxlcyAoJDskKSB7CisgICAgICAgICB9CisKKyAgICAgICAgICMgVGhlIHJlc3Qgb2YgdGhlIGxvY2FsZXMgYXJlIGluIHRoaXMgZmlsZS4KKy0gICAgICAgIHB1c2ggQERhdGEsIDxEQVRBPjsKKysgICAgICAgIHB1c2ggQERhdGEsIDxEQVRBPjsgY2xvc2UgREFUQTsKKworICAgICAgICAgZm9yZWFjaCBteSAkbGluZSAoQERhdGEpIHsKKyAgICAgICAgICAgICBteSAoJGxvY2FsZV9uYW1lLCAkbGFuZ3VhZ2VfY29kZXMsICRjb3VudHJ5X2NvZGVzLCAkZW5jb2RpbmdzKSA9CistLQorMi4yNS4wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2RkNTJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGaXhlcyB0byBtYWtlIHRoZSBwZXJsIGJ1aWxkIHJlcHJvZHVjaWJsZToKKworYSkgUmVtb3ZlIHRoZSBcbiBmcm9tIGNvbmZpZ3VyZV9hdHRyLnNoIHNpbmNlIGl0IGdldHMgcXVvdGVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbgorICAgd2hldGhlciB0aGUgc2hlbGwgaXMgYmFzaCBvciBkYXNoIHdoaWNoIGNhbiBjYXVzZSB0aGUgdGVzdCByZXN1bHQgdG8gYmUgaW5jb3JyZWN0LgorICAgUmVwb3J0ZWQgdXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg3CisKK2IpIFNvcnQgdGhlIG9yZGVyIG9mIHRoZSBtb2R1bGUgbGlzdHMgZnJvbSBjb25maWd1cmVfbW9kcy5zaCBzaW5jZSBvdGhlcndpc2UKKyAgIHRoZSByZXN1bHQgaXNuJ3QgdGhlIHNhbWUgbGVhZGluZyB0byBtYWtlZmlsZSBkaWZmZXJlbmNlcy4KKyAgIFJlcG9ydGVkIHVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL2lzc3Vlcy84OAorCitjKSBTb3J0IHRoZSBFbmNvZGU6OkJ5dGUgYnl0ZV90LmZubSBmaWxlIG91dHB1dCAoYW5kIHRoZSBtYWtlZmlsZSBkZXBlbmRzIHdoaWxzdCAKKyAgIHRoZXJlIGZvciBnb29kIG1lYXN1cmUpCisgICBUaGlzIG5lZWRzIHRvIGdvIHRvIHVwc3RyZWFtIHBlcmwgKG5vdCBkb25lKQorCitkKSBVc2UgYmFzaCBmb3IgcGVybC1jcm9zcyBjb25maWd1cmUgc2luY2Ugb3RoZXJ3aXNlIHRybmwgZ2V0cyBzZXQgdG8gIlxuIiB3aXRoIGJhc2gKKyAgIGFuZCAiIiB3aXRoIGRhc2gKKyAgIFJlcG9ydGVkIHVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL2lzc3Vlcy84NworCitSUCAyMDIwLzIvNworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWzc1JSBzdWJtaXR0ZWRdCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZworCitJbmRleDogcGVybC01LjMwLjEvY25mL2NvbmZpZ3VyZV9tb2RzLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjMwLjEub3JpZy9jbmYvY29uZmlndXJlX21vZHMuc2gKKysrKyBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlX21vZHMuc2gKK0BAIC04Miw3ICs4Miw3IEBAIGV4dG9ubHlpZigpIHsKKyB9CisgCisgZGVmaW5ldHJpbXNwYWNlcygpIHsKKy0Jdj1gZWNobyAiJDIiIHwgc2VkIC1yIC1lICdzL1xzKy8gL2cnIC1lICdzL15ccysvLycgLWUgJ3MvXHMrJC8vJ2AKKysJdj1gZWNobyAiJDIiIHwgc2VkIC1yIC1lICdzL1xzKy8gL2cnIC1lICdzL15ccysvLycgLWUgJ3MvXHMrJC8vJyB8IHhhcmdzIC1uMSB8IExBTkc9QyBzb3J0IHwgeGFyZ3NgCisgCWRlZmluZSAkMSAiJHYiCisgfQorIAorSW5kZXg6IHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL0J5dGUvTWFrZWZpbGUuUEwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NwYW4vRW5jb2RlL0J5dGUvTWFrZWZpbGUuUEwKKysrKyBwZXJsLTUuMzAuMS9jcGFuL0VuY29kZS9CeXRlL01ha2VmaWxlLlBMCitAQCAtMTcxLDcgKzE3MSw3IEBAIHN1YiBwb3N0YW1ibGUKKyAgICAgbXkgJGxlbmd0aHNvZmFyID0gbGVuZ3RoKCRzdHIpOworICAgICBteSAkY29udGludWF0b3IgPSAnJzsKKyAgICAgJHN0ciAuPSAiJHRhYmxlLmMgOiAkZW5jMnhzIE1ha2VmaWxlLlBMIjsKKy0gICAgZm9yZWFjaCBteSAkZmlsZSAoQHskdGFibGVzeyR0YWJsZX19KQorKyAgICBmb3JlYWNoIG15ICRmaWxlIChzb3J0IChAeyR0YWJsZXN7JHRhYmxlfX0pKQorICAgICB7CisgICAgICAgICAkc3RyIC49ICRjb250aW51YXRvci4nICcuJHNlbGYtPmNhdGZpbGUoJGRpciwkZmlsZSk7CisgICAgICAgICBpZiAoIGxlbmd0aCgkc3RyKS0kbGVuZ3Roc29mYXIgPiAxMjgqJG51bWxpbmVzICkKK0BAIC0xODksNyArMTg5LDcgQEAgc3ViIHBvc3RhbWJsZQorICAgICAgICAgcXF7XG5cdFwkKFBFUkwpICRwbGliICRlbmMyeHMgJHVjb3B0cyAtbyBcJFxAIC1mICR0YWJsZS5mbm1cblxufTsKKyAgICAgb3BlbiAoRklMRUxJU1QsICI+JHRhYmxlLmZubSIpCisgICAgICAgICB8fCBkaWUgIkNvdWxkIG5vdCBvcGVuICR0YWJsZS5mbm06ICQhIjsKKy0gICAgZm9yZWFjaCBteSAkZmlsZSAoQHskdGFibGVzeyR0YWJsZX19KQorKyAgICBmb3JlYWNoIG15ICRmaWxlIChzb3J0IChAeyR0YWJsZXN7JHRhYmxlfX0pKQorICAgICB7CisgICAgICAgICBwcmludCBGSUxFTElTVCAkc2VsZi0+Y2F0ZmlsZSgkZGlyLCRmaWxlKSAuICJcbiI7CisgICAgIH0KK0luZGV4OiBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjMwLjEub3JpZy9jbmYvY29uZmlndXJlCisrKysgcGVybC01LjMwLjEvY25mL2NvbmZpZ3VyZQorQEAgLTEsNCArMSw0IEBACistIyEvYmluL3NoCisrIyEvYmluL2Jhc2gKKyAKKyBiYXNlPSR7MCUvKn07IHRlc3QgLXogIiRiYXNlIiAmJiBiYXNlPS4KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZW5jb2RlZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9lbmNvZGVmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk2ZWQwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZW5jb2RlZml4LnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1RoZSBjb2RlIGlzIGVuY29kaW5nIGhvc3QgY29tcGlsZXIgcGFyYW1ldGVycyBpbnRvIHRhcmdldCBidWlsZHMuIEF2b2lkCit0aGlzIGZvciBvdXIgdGFyZ2V0IGJ1aWxkcyAocGF0Y2ggaXMgdGFyZ2V0IHNwZWNpZmljLCBub3QgbmF0aXZlKQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgaGFja10KK1JQIDIwMjAvMi8xOAorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBwZXJsLTUuMzAuMS9jcGFuL0VuY29kZS9iaW4vZW5jMnhzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjMwLjEub3JpZy9jcGFuL0VuY29kZS9iaW4vZW5jMnhzCisrKysgcGVybC01LjMwLjEvY3Bhbi9FbmNvZGUvYmluL2VuYzJ4cworQEAgLTE5NSw3ICsxOTUsNyBAQCBzdWIgY29tcGlsZXJfaW5mbyB7CisgICAgICMgYWJvdmUgYmVjb21lcyBmYWxzZS4KKyAgICAgbXkgJHNpemVkICA9ICRkZWNsYXJhdGlvbiAmJiAhKCRjb21wYXQgJiYgISRwZWRhbnRpYyk7CisgCistICAgIHJldHVybiAoJGNwcCwgJHN0YXRpYywgJHNpemVkKTsKKysgICAgcmV0dXJuICgwLCAxLCAxKTsKKyB9CisgCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2ZpeC1zZXRncm91cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZml4LXNldGdyb3VwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ5MGU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZml4LXNldGdyb3VwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotVGVzdCBzY3JpcHQgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtOgotCi0jIS91c3IvYmluL2VudiBwZXJsCi0kKSA9ICIyIDIiOwotcHJpbnQgJCE7Ci0KLVJlc3VsdCBmcm9tIHBlcmwgNS4yOCB1bmRlciBzdHJhY2U6Ci0KLXNldGdyb3VwcygxLCBbMl0pICAgICAgICAgICAgICAgICAgICAgICA9IDAKLXNldHJlc2dpZCgtMSwgMiwgLTEpICAgICAgICAgICAgICAgICAgICA9IDAKLQotUmVzdWx0IGZyb20gcGVybCA1LjMwIHVuZGVyIHN0cmFjZToKLQotc2V0Z3JvdXBzKDEsIFstMV0pICAgICAgICAgICAgICAgICAgICAgID0gLTEgRUlOVkFMIChJbnZhbGlkIGFyZ3VtZW50KQotc2V0cmVzZ2lkKC0xLCAyLCAtMSkgICAgICAgICAgICAgICAgICAgID0gMAotCi1QYXRjaCB3aGljaCBicm9rZSB0aGlzIHVwc3RyZWFtOgotaHR0cHM6Ly9wZXJsNS5naXQucGVybC5vcmcvcGVybC5naXQvY29tbWl0ZGlmZi81ZDRhNTJiNWM2OGExMWJmYzk3YzJlMjQ4MDY5OTNiODRhNjFlYWRlCi0KLUlzc3VlIGlzIHRoYXQgdGhlIG5ldyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBlbmRwdHIgdG8gdGhlIGVuZCBvZiB0aGUKLXNjYW5uZWQgbnVtYmVyIGFuZCBuZWVkcyB0byBiZSByZXNldCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgZm9yIAotZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuCi0KLVtZT0NUTyAjMTMzOTFdCi0KLVJQCi0yMDE5LzYvMTQKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogcGVybC01LjMwLjAvbWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS4zMC4wLm9yaWcvbWcuYwotKysrIHBlcmwtNS4zMC4wL21nLmMKLUBAIC0zMTc5LDYgKzMyNTYsNyBAQCBQZXJsX21hZ2ljX3NldChwVEhYXyBTViAqc3YsIE1BR0lDICptZykKLSAJICAgIGNvbnN0IGNoYXIgKnAgPSBTdlBWX2NvbnN0KHN2LCBsZW4pOwotICAgICAgICAgICAgIEdyb3Vwc190ICpnYXJ5ID0gTlVMTDsKLSAgICAgICAgICAgICBjb25zdCBjaGFyKiBlbmRwdHIgPSBwICsgbGVuOwotKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYWxlbmQgPSBwICsgbGVuOwotICAgICAgICAgICAgIFVWIHV2OwotICNpZmRlZiBfU0NfTkdST1VQU19NQVgKLSAgICAgICAgICAgIGludCBtYXhncnAgPSBzeXNjb25mKF9TQ19OR1JPVVBTX01BWCk7Ci1AQCAtMzIwOSw2ICszMjg3LDcgQEAgUGVybF9tYWdpY19zZXQocFRIWF8gU1YgKnN2LCBNQUdJQyAqbWcpCi0gICAgICAgICAgICAgICAgICAgICBOZXd4KGdhcnksIGkgKyAxLCBHcm91cHNfdCk7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgIFJlbmV3KGdhcnksIGkgKyAxLCBHcm91cHNfdCk7Ci0rICAgICAgICAgICAgICAgIGVuZHB0ciA9IHJlYWxlbmQ7Ci0gICAgICAgICAgICAgICAgIGlmIChncm9rX2F0b1VWKHAsICZ1diwgJmVuZHB0cikpCi0gICAgICAgICAgICAgICAgICAgICBnYXJ5W2ldID0gKEdyb3Vwc190KXV2OwotICAgICAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCmluZGV4IDNjMmNlY2IuLjgwY2U0YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gN2YzMTNjYWMzMWM1NWNiZTYyYTRkMGNkZmE4MzIxY2MwNWE4ZWIzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTEyMGFjYWEyYmU1Nzg3ZDk2NTdmNmI5MWJjOGVlM2MyZDY2NGZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogU3VuLCAyNyBNYXkgMjAwNyAyMTowNDoxMSArMDAwMAogU3ViamVjdDogW1BBVENIXSBwZXJsOiA1LjguNyAtPiA1LjguOCAoZnJvbSBPRSkKQEAgLTIwLDcgKzIwLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3BtIGIvY29uZmlncG0KLWluZGV4IDA5YzRhM2IuLjZhMGE2ODAgMTAwNzU1CitpbmRleCBjOGRlOGJmLi4yMDQ2MTNjIDEwMDc1NQogLS0tIGEvY29uZmlncG0KICsrKyBiL2NvbmZpZ3BtCiBAQCAtNjg3LDcgKzY4Nyw3IEBAIHN1YiBGRVRDSCB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dAppbmRleCAzMzFhNDRkLi45ZWNmY2UwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKQEAgLTIyMTgsNiArMjIxOCw3IEBACiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtaGFzaC1uYW1lZGNhcHR1cmUgKz0gInBlcmwtbW9kdWxlLXN0cmljdCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoLW5hbWVkY2FwdHVyZSArPSAicGVybC1tb2R1bGUteHNsb2FkZXIiCiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtaGFzaCArPSAicGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIiCitSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtaGFzaCArPSAicGVybC1tb2R1bGUtY2FycCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1tZW1vaXplICs9ICJwZXJsLW1vZHVsZS1zdHJpY3QiCiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtbWVtb2l6ZSArPSAicGVybC1tb2R1bGUtdGllLWhhc2giCiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtcmVmaGFzaCArPSAicGVybC1tb2R1bGUtY29uZmlnIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YxZjZkNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiRXJyb3IgLSBFcnJvci9leGNlcHRpb24gaGFuZGxpbmcgaW4gYW4gT08taXNoIHdheSIKLURFU0NSSVBUSU9OID0gIlRoZSBFcnJvciBwYWNrYWdlIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzLiBGaXJzdGx5IFwKLUVycm9yIHByb3ZpZGVzIGEgcHJvY2VkdXJhbCBpbnRlcmZhY2UgdG8gZXhjZXB0aW9uIGhhbmRsaW5nLiBcCi1TZWNvbmRseSBFcnJvciBpcyBhIGJhc2UgY2xhc3MgZm9yIGVycm9ycy9leGNlcHRpb25zIHRoYXQgY2FuIFwKLWVpdGhlciBiZSB0aHJvd24sIGZvciBzdWJzZXF1ZW50IGNhdGNoLCBvciBjYW4gc2ltcGx5IGJlIHJlY29yZGVkLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vYml0YnVja2V0Lm9yZy9zaGxvbWlmL3BlcmwtZXJyb3IucG0iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKLQotREVQRU5EUyArPSAicGVybCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSAgICBwZXJsLW1vZHVsZS1vdmVybG9hZCBcCi0gICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKLSAgICBwZXJsLW1vZHVsZS12YXJzIFwKLSAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAotICAgIHBlcmwtbW9kdWxlLWJhc2UgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgcGVybC1tb2R1bGUtaW8taGFuZGxlIFwKLSAgICBwZXJsLW1vZHVsZS1pcGMtb3BlbjMgXAotICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGVmOWIyODkwZmIxNDRkODA0NTI3YmEzMjU3M2RkNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdiMmFjODI3NWRmYTA0MTQ0NzQ1YTZjMTkwMGE1OTYyODBmODYyYjk3ZDIyYmFiMGM1Y2UwMjY4MmViZDNiZSIKLQotUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyB0ZXN0IHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCi0Jcm0gLXJmICR7Qn0vdC9wb2QtY292ZXJhZ2UudAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM4ODA4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI5LmJiCkBAIC0wLDAgKzEsNDcgQEAKK1NVTU1BUlkgPSAiRXJyb3IgLSBFcnJvci9leGNlcHRpb24gaGFuZGxpbmcgaW4gYW4gT08taXNoIHdheSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFcnJvciBwYWNrYWdlIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzLiBGaXJzdGx5IFwKK0Vycm9yIHByb3ZpZGVzIGEgcHJvY2VkdXJhbCBpbnRlcmZhY2UgdG8gZXhjZXB0aW9uIGhhbmRsaW5nLiBcCitTZWNvbmRseSBFcnJvciBpcyBhIGJhc2UgY2xhc3MgZm9yIGVycm9ycy9leGNlcHRpb25zIHRoYXQgY2FuIFwKK2VpdGhlciBiZSB0aHJvd24sIGZvciBzdWJzZXF1ZW50IGNhdGNoLCBvciBjYW4gc2ltcGx5IGJlIHJlY29yZGVkLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGxvbWlmL3BlcmwtZXJyb3IucG0iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKKworREVQRU5EUyArPSAicGVybCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS1vdmVybG9hZCBcCisgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICBwZXJsLW1vZHVsZS12YXJzIFwKKyAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIHBlcmwtbW9kdWxlLWJhc2UgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgcGVybC1tb2R1bGUtaW8taGFuZGxlIFwKKyAgICBwZXJsLW1vZHVsZS1pcGMtb3BlbjMgXAorICAgIHBlcmwtbW9kdWxlLWxpYiBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjczMmIxYzYyMDdlNGE5YTNlMjk4N2M4ODM2ODAzOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWEyM2Y3OTEzMDMyYWVkNmQ0YjY4MzIxMzczYTM4OTljYTY2NTkwZjQ3MjczOTFhMDkxZWMxOWM5NWJmN2FkYyIKKworUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyB0ZXN0IHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCisJcm0gLXJmICR7Qn0vdC9wb2QtY292ZXJhZ2UudAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmwvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybC9ydW4tcHRlc3QKaW5kZXggMGQ2M2QxNS4uZDgwMjc4MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybC9ydW4tcHRlc3QKQEAgLTYsOCArNiw2IEBACiAgICAgY2F0ICRjYXNlLm91dHB1dAogICAgIGlmIFsgJHJldCAtbmUgMCBdOyB0aGVuCiAgICAgICAgIGVjaG8gIkZBSUw6ICR7Y2FzZSUudH0iCi0gICAgZWxpZiBncmVwIC1pICdTS0lQJyAkY2FzZS5vdXRwdXQ7IHRoZW4KLSAgICAgICAgZWNobyAiU0tJUDogJHtjYXNlJS50fSIKICAgICBlbHNlCiAgICAgICAgIGVjaG8gIlBBU1M6ICR7Y2FzZSUudH0iCiAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NTlmODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2R1bGU6OkJ1aWxkIC0gQnVpbGQgYW5kIGluc3RhbGwgUGVybCBtb2R1bGVzIgotREVTQ1JJUFRJT04gPSAiTWFueSBQZXJsIGRpc3RyaWJ1dGlvbnMgdXNlIGEgQnVpbGQuUEwgZmlsZSBpbnN0ZWFkIG9mIGEgXAotTWFrZWZpbGUuUEwgZmlsZSB0byBkcml2ZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwgYnVpbGQsIHRlc3QgYW5kIFwKLWluc3RhbGxhdGlvbi4gVHJhZGl0aW9uYWxseSwgQnVpbGQuUEwgdXNlcyBNb2R1bGU6OkJ1aWxkIGFzIHRoZSB1bmRlcmx5aW5nIFwKLWJ1aWxkIHN5c3RlbS4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUsIGxpZ2h0d2VpZ2h0LCBkcm9wLWluIHJlcGxhY2VtZW50LiBcCi1XaGVyZWFzIE1vZHVsZTo6QnVpbGQgaGFzIG92ZXIgNiw3MDAgbGluZXMgb2YgY29kZTsgdGhpcyBtb2R1bGUgaGFzIGxlc3MgdGhhbiBcCi0xMjAsIHlldCBzdXBwb3J0cyB0aGUgZmVhdHVyZXMgbmVlZGVkIGJ5IG1vc3QgZGlzdHJpYnV0aW9ucy4iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9Nb2R1bGUtQnVpbGQiCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTk0OTtlbmRsaW5lPTk1NDttZDU9NjI0YzA2ZGI1NmEyYWY0ZDcwY2Y5ZWRjMjlmY2FlMWIiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL01vZHVsZS1CdWlsZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQ0N2Q5ZTAyZTYzZjdhMTY0Mzk4Njc4OWE4ZjFiYTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZlNDkxYTZjZGE5MTRiMDFiYzhlNTkyZmFhMmI1NDA0ZTlmMzU5MTVjYTE1MzIyZjhmMmE4ZDhmOTAwOGMxOCIKLQotUyA9ICIke1dPUktESVJ9L01vZHVsZS1CdWlsZC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuX2J1aWxkIHB0ZXN0LXBlcmwKLQotIyBGcm9tOgotIyBodHRwczovL2dpdGh1Yi5jb20vcmVoc2Fjay9tZXRhLWNwYW4vYmxvYi9tYXN0ZXIvcmVjaXBlcy1kZXZlbC9tb2R1bGUtYnVpbGQtcGVybC9tb2R1bGUtYnVpbGQtcGVybF8wLjQyMTYuYmIKLSMKLWRvX3BhdGNoX21vZHVsZV9idWlsZCAoKSB7Ci0gICAgY2QgJHtTfQotICAgIHNlZCAtaSAtZSAncyxteSAkaW50ZXJwcmV0ZXIgPSAkc2VsZi0+e3Byb3BlcnRpZXN9e3Blcmx9OyxteSAkaW50ZXJwcmV0ZXIgPSAiJHtiaW5kaXJ9L3BlcmwiOyxnJyBsaWIvTW9kdWxlL0J1aWxkL0Jhc2UucG0KLX0KLQotZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZG9fcGF0Y2hfbW9kdWxlX2J1aWxkIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yICR7Qn0vaW5jICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgJHtCfS9ibGliICR7RH0ke1BURVNUX1BBVEh9Ci0JY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgIHBlcmwtbW9kdWxlLWNwYW4gXAotICAgIHBlcmwtbW9kdWxlLWNvbmZpZyBcCi0gICAgcGVybC1tb2R1bGUtY3dkIFwKLSAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCi0gICAgcGVybC1tb2R1bGUtZW5jb2RlIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY29tbWFuZCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtaW5zdGFsbCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtaW5zdGFsbGVkIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1ta2Jvb3RzdHJhcCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFja2xpc3QgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhcnNleHMgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAotICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICBwZXJsLW1vZHVsZS1tZXRhZGF0YSBcCi0gICAgcGVybC1tb2R1bGUtcGVybC1vc3R5cGUgXAotICAgIHBlcmwtbW9kdWxlLXBvZC1tYW4gXAotICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzIFwKLSAgICBwZXJsLW1vZHVsZS10ZXh0LWFiYnJldiBcCi0gICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKLSAgICBwZXJsLW1vZHVsZS11dGY4IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgZ2NjIFwKLSAgICBtYWtlIFwKLSAgICBwZXJsLW1vZHVsZS1ibGliIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8tZW5jb2RpbmcgXAotICAgIHBlcmwtbW9kdWxlLXBvZC10ZXh0IFwKLSAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcy1lbnYgXAotICAgIHBlcmwtbW9kdWxlLXRhcC1wYXJzZXIgXAotICAgIHBlcmwtbW9kdWxlLXRhcC1wYXJzZXItc2NoZWR1bGVyIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LWhhcm5lc3MgXAotICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0iCi0KLVJQUk9WSURFU18ke1BOfSArPSAiXAotICAgIGxpYm1vZHVsZS1idWlsZC1iYXNlLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1jb21wYXQtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWNvbmZpZy1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtY29va2Jvb2stcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWR1bXBlci1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtbm90ZXMtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLXBwbWFrZXItcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLXBsYXRmb3JtLWRlZmF1bHQtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLXBsYXRmb3JtLXVuaXgtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLXBvZHBhcnNlci1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIzMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZmQ3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIzMS5iYgpAQCAtMCwwICsxLDEyMyBAQAorU1VNTUFSWSA9ICJNb2R1bGU6OkJ1aWxkIC0gQnVpbGQgYW5kIGluc3RhbGwgUGVybCBtb2R1bGVzIgorREVTQ1JJUFRJT04gPSAiTWFueSBQZXJsIGRpc3RyaWJ1dGlvbnMgdXNlIGEgQnVpbGQuUEwgZmlsZSBpbnN0ZWFkIG9mIGEgXAorTWFrZWZpbGUuUEwgZmlsZSB0byBkcml2ZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwgYnVpbGQsIHRlc3QgYW5kIFwKK2luc3RhbGxhdGlvbi4gVHJhZGl0aW9uYWxseSwgQnVpbGQuUEwgdXNlcyBNb2R1bGU6OkJ1aWxkIGFzIHRoZSB1bmRlcmx5aW5nIFwKK2J1aWxkIHN5c3RlbS4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUsIGxpZ2h0d2VpZ2h0LCBkcm9wLWluIHJlcGxhY2VtZW50LiBcCitXaGVyZWFzIE1vZHVsZTo6QnVpbGQgaGFzIG92ZXIgNiw3MDAgbGluZXMgb2YgY29kZTsgdGhpcyBtb2R1bGUgaGFzIGxlc3MgdGhhbiBcCisxMjAsIHlldCBzdXBwb3J0cyB0aGUgZmVhdHVyZXMgbmVlZGVkIGJ5IG1vc3QgZGlzdHJpYnV0aW9ucy4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9Nb2R1bGUtQnVpbGQiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTk0OTtlbmRsaW5lPTk1NDttZDU9NjI0YzA2ZGI1NmEyYWY0ZDcwY2Y5ZWRjMjlmY2FlMWIiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9ML0xFL0xFT05UL01vZHVsZS1CdWlsZC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjA2NmIxOTNlNDYxZDdkZmUxZWNhMTdhMTM5MzUzMDAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlMGY0YzY5MmMxNzQwYzFhYzg0ZWExNGQ3ZWEzZDhiYzc5OGIyZmIyNmMwOTg3NzIyOWUwNGY0MzBiMmI3MTciCisKK1MgPSAiJHtXT1JLRElSfS9Nb2R1bGUtQnVpbGQtJHtQVn0iCisKK2luaGVyaXQgY3Bhbl9idWlsZCBwdGVzdC1wZXJsCisKKyMgRnJvbToKKyMgaHR0cHM6Ly9naXRodWIuY29tL3JlaHNhY2svbWV0YS1jcGFuL2Jsb2IvbWFzdGVyL3JlY2lwZXMtZGV2ZWwvbW9kdWxlLWJ1aWxkLXBlcmwvbW9kdWxlLWJ1aWxkLXBlcmxfMC40MjE2LmJiCisjCitkb19wYXRjaF9tb2R1bGVfYnVpbGQgKCkgeworICAgIGNkICR7U30KKyAgICBzZWQgLWkgLWUgJ3MsbXkgJGludGVycHJldGVyID0gJHNlbGYtPntwcm9wZXJ0aWVzfXtwZXJsfTssbXkgJGludGVycHJldGVyID0gIiR7YmluZGlyfS9wZXJsIjssZycgbGliL01vZHVsZS9CdWlsZC9CYXNlLnBtCit9CisKK2RvX3BhdGNoW3Bvc3RmdW5jc10gKz0gImRvX3BhdGNoX21vZHVsZV9idWlsZCIKKworRVhUUkFfQ1BBTl9CVUlMRF9GTEFHUyA9ICItLWNyZWF0ZV9wYWNrbGlzdD0wIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIHJtIC1yZiAke0R9JHtkb2NkaXJ9L3BlcmwvaHRtbAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7Qn0vaW5jICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtCfS9ibGliICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtCfS9fYnVpbGQgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L2xpYiAke0R9JHtQVEVTVF9QQVRIfQorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfQorCXNlZCAtaSAtZSAicywncGVybCcgPT4gLiosJ3BlcmwnID0+ICcvdXNyL2Jpbi9wZXJsJ1wsLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9cLlwuLCR7YmluZGlyfS8sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtEfSwsZyIgXAorICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vX2J1aWxkL2J1aWxkX3BhcmFtcyBcCisgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9fYnVpbGQvcnVudGltZV9wYXJhbXMKKyAgICAgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L2JsaWIvbGliaHRtbC9zaXRlL2xpYi9Nb2R1bGUvCisgICAgICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS9fYnVpbGQvbWFnaWNudW0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgcGVybC1tb2R1bGUtY3BhbiBcCisgICAgcGVybC1tb2R1bGUtY29uZmlnIFwKKyAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNidWlsZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jb21tYW5kIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsZWQgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1rYm9vdHN0cmFwIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYWNrbGlzdCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFyc2V4cyBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWNvcHkgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBcCisgICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAorICAgIHBlcmwtbW9kdWxlLW1ldGFkYXRhIFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsLW9zdHlwZSBcCisgICAgcGVybC1tb2R1bGUtcG9kLW1hbiBcCisgICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtYWJicmV2IFwKKyAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAorICAgIHBlcmwtbW9kdWxlLXV0ZjggXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbCBcCisgICAgcGVybC1kZXYgXAorICAgIHBlcmwtbW9kdWxlLWJsaWIgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNvbW1hbmQtbW0gXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCisgICAgcGVybC1tb2R1bGUtbGliIFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsaW8gXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpby1lbmNvZGluZyBcCisgICAgcGVybC1tb2R1bGUtcG9kLXRleHQgXAorICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzLWVudiBcCisgICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlciBcCisgICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlci1zY2hlZHVsZXIgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtaGFybmVzcyBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJcCisgICAgbGlibW9kdWxlLWJ1aWxkLWJhc2UtcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLWNvbXBhdC1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtY29uZmlnLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1jb29rYm9vay1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtZHVtcGVyLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1ub3Rlcy1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtcHBtYWtlci1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tZGVmYXVsdC1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tdW5peC1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtcG9kcGFyc2VyLXBlcmwgXAorIgorCisjIHQveHMudCBSREVQRU5EUyBvbiAiRVhURVJOLmgiIHByb3ZpZGVkIGJ5IHBlcmwtZGV2CitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCA9ICJkZXYtZGVwcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M5Yjc2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUw6OlBhcnNlciAtIEEgcGVybCBtb2R1bGUgZm9yIHBhcnNpbmcgWE1MIGRvY3VtZW50cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGliZXhwYXQuZ2l0aHViLmlvLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI7ZW5kbGluZT02O21kNT1jODc2N2Q3NTE2MjI5ZjA3YjI2ZTQyZDFjZjhiNTFmMSIKLQotREVQRU5EUyArPSAiZXhwYXQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9YTUwvWE1MLVBhcnNlci0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWY0ODEzZmUzOTUyMzYyNDUxMjAxY2VkNmZiY2UzNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWFlOWQwN2VlOWMzNTMyNmIzZDlhYWQ1NmVhZTcxYTY3MzBhNzNhMTE2YjlmZTllOGE0NzU4YjdjYzAzMzIxNiIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1QYXJzZXItJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IENDPScke0NDfScgTEQ9JyR7Q0NMRH0nIEZVTExfQVI9JyR7QVJ9JyIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotIyBmaXggdXAgc3ViIE1ha2VNYWtlciBwcm9qZWN0IGFzIGFyZ3VtZW50cyBkb24ndCBnZXQgcHJvcGFnYXRlZCB0aG91Z2gKLSMgc2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Mjg2MzIKLWRvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCXNlZCAtRSBcCi0JICAgIC1lICdzOi1MJHtTVEFHSU5HX0xJQkRJUn06OmcnIC1lICdzOi1JJHtTVEFHSU5HX0lOQ0RJUn06OmcnIFwKLQkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlzZWQgLWUgJ3M6LS1zeXNyb290PS4qXChcc1x8JFwpOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gOmcnIFwKLQkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKLQlzZWQgJ3M6XkZVTExfQVIgPSAuKjpGVUxMX0FSID0gJHtBUn06ZycgLWkgRXhwYXQvTWFrZWZpbGUKLQkjIG1ha2Ugc3VyZSB0aGVzZSB0d28gZG8gbm90IGJ1aWxkIGluIHBhcmFsbGVsCi0Jc2VkICdzIV4kKElOU1RfRFlOQU1JQyk6ISQoSU5TVF9EWU5BTUlDKTogJChCT09UU1RSQVApIScgLWkgRXhwYXQvTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxzdGF0cwotCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGZpbHRlcgotCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGNvbW1lbnRzCi0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMvY2Fub25pY2FsCi0JY3AgLXIgJHtCfS9zYW1wbGVzICR7RH0ke1BURVNUX1BBVEh9Ci0JY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3NhbXBsZXMKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtaWYgcGVybC1tb2R1bGUtdGVzdCBwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCi0KLUJCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzE1NGJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40Ni5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIlhNTDo6UGFyc2VyIC0gQSBwZXJsIG1vZHVsZSBmb3IgcGFyc2luZyBYTUwgZG9jdW1lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJleHBhdC5naXRodWIuaW8vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BhcnNlci5wbTtiZWdpbmxpbmU9MTtlbmRsaW5lPTc7bWQ1PWQxMmNjNzc4YzgwZmM0YzUxOGYwZTVkZWUyOWZkNWZiIgorCitERVBFTkRTICs9ICJleHBhdCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtUGFyc2VyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wZXJsL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNoZWNrTGliLnBtLWRvLW5vdC1hdHRlbXB0LXRvLXJ1bi1hLWNyb3NzLWV4ZWN1dGFibGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODBiYjE4YThlNjI0MGZjZjdlYzJmN2I1NzYwMWMxNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDMzMTMzMjQ5MWM1MWNjY2ZiNGNiOTRmZmM0NGY5Y2Q3MzM3OGU2MTg0OThkNGEzN2RmOWUwNDM2NjFjNTE1ZCIKKworUyA9ICIke1dPUktESVJ9L1hNTC1QYXJzZXItJHtQVn0iCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IENDPScke0NDfScgTEQ9JyR7Q0NMRH0nIEZVTExfQVI9JyR7QVJ9JyIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworIyBmaXggdXAgc3ViIE1ha2VNYWtlciBwcm9qZWN0IGFzIGFyZ3VtZW50cyBkb24ndCBnZXQgcHJvcGFnYXRlZCB0aG91Z2gKKyMgc2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Mjg2MzIKK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtRSBcCisJICAgIC1lICdzOi1MJHtTVEFHSU5HX0xJQkRJUn06OmcnIC1lICdzOi1JJHtTVEFHSU5HX0lOQ0RJUn06OmcnIFwKKwkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlzZWQgLWUgJ3M6LS1zeXNyb290PS4qXChcc1x8JFwpOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gOmcnIFwKKwkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKKwlzZWQgJ3M6XkZVTExfQVIgPSAuKjpGVUxMX0FSID0gJHtBUn06ZycgLWkgRXhwYXQvTWFrZWZpbGUKKwkjIG1ha2Ugc3VyZSB0aGVzZSB0d28gZG8gbm90IGJ1aWxkIGluIHBhcmFsbGVsCisJc2VkICdzIV4kKElOU1RfRFlOQU1JQyk6ISQoSU5TVF9EWU5BTUlDKTogJChCT09UU1RSQVApIScgLWkgRXhwYXQvTWFrZWZpbGUKK30KKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgorCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwljcGFuX2RvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxzdGF0cworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGZpbHRlcgorCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbGNvbW1lbnRzCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMvY2Fub25pY2FsCisJY3AgLXIgJHtCfS9zYW1wbGVzICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3NhbXBsZXMKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtaWYgcGVybC1tb2R1bGUtdGVzdCBwZXJsLW1vZHVsZS10ZXN0LW1vcmUiCisKK0JCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYwppbmRleCA3MTUyMDU3Li45OGUzMzYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKQEAgLTQyLDYgKzQyLDkgQEAKIAogCSAjIFJlbW92ZSBhIHVzZWxlc3MgdGltZXN0YW1wLi4uCiAJIHNlZCAtaSAtZSAnL0F1dG9nZW5lcmF0ZWQgc3RhcnRpbmcgb24vZCcgJHtEfSR7UFRFU1RfUEFUSH0vbGliL3VuaWNvcmUvbWt0YWJsZXMubHN0CisKKwkgIyBSZW1vdmUgZmlsZXMgd2l0aCBob3N0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIGJ1aWxkaW5nIG5hdGl2ZSBiaW5hcmllcworCSBybSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZS5jb25maWcgJHtEfSR7UFRFU1RfUEFUSH0veGNvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9L3hjb25maWcuc2gKIH0KIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5MDZhNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBzY3JpcHRpbmcgbGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBlcmwub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weWluZzttZDU9NWIxMjJhMzZkMGY2ZGM1NTI3OWEwZWJjNjlmM2M2MGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQXJ0aXN0aWM7bWQ1PTcxYTRkNWQ5YWNjMThjMDk1MmE2ZGYyMjE4YmI2OGRhIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY3Bhbi5vcmcvc3JjLzUuMC9wZXJsLSR7UFZ9LnRhci5nejtuYW1lPXBlcmwgXAotICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL3JlbGVhc2VzL2Rvd25sb2FkLzEuMy9wZXJsLWNyb3NzLTEuMy50YXIuZ3o7bmFtZT1wZXJsLWNyb3NzIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtcmRlcGVuZHMudHh0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlX3Rvb2wuc2gtZG8tbm90LXF1b3RlLXRoZS1hcmd1bWVudC10by1jb21tYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUV4dFV0aWxzLU1ha2VNYWtlci1hZGQtTERGTEFHUy13aGVuLWxpbmtpbmctYmluYXJ5LW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Tb21laG93LXRoaXMtbW9kdWxlLWJyZWFrcy10aHJvdWdoLXRoZS1wZXJsLXdyYXBwZXItLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Vycm5vX3Zlci5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1jcm9zcy1hZGQtTERGTEFHUy13aGVuLWxpbmtpbmctbGlicGVybC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLWR5bmxvYWRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZV9wYXRoLnNoLWRvLW5vdC1oYXJkY29kZS1wcmVmaXgtbGliLWFzLWxpYnIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXNldGdyb3VwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZW5jMnhzLUFkZC1lbnZpcm9ubWVudC12YXJpYWJsZS10by1zdXBwcmVzcy1jb21tZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUNvbnN0YW50LUZpeC11cC1zaGViYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbcGVybC5tZDVzdW1dID0gIjk3NzA1ODRjZGY5YjU2MzFjMzgwOTc2NDVjZTMzNTQ5IgotU1JDX1VSSVtwZXJsLnNoYTI1NnN1bV0gPSAiODUxMjEzYzc1NGQ5OGNjZmYwNDJjYWE0MGJhN2E3OTZiMmNlZTg4YzUzMjVmMTIxYmU1Y2JiNjFiYmY5NzVmMiIKLVNSQ19VUklbcGVybC1jcm9zcy5tZDVzdW1dID0gIjRkZGEzZGFmOWM0ZmU0MmIzZDZhNWRkMDUyODUyYTQ4IgotU1JDX1VSSVtwZXJsLWNyb3NzLnNoYTI1NnN1bV0gPSAiNDllZGVhMWVhMmNkNmM1YzQ3Mzg2Y2E3MWJlZGE4ZDE1MGM3NDg4MzU3ODEzNTRkYmU3Zjc1YjFkZjI3ZTcwMyIKLQotUyA9ICIke1dPUktESVJ9L3BlcmwtJHtQVn0iCi0KLWluaGVyaXQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgKz0gInpsaWIgdmlydHVhbC9jcnlwdCIKLQotUEVSTF9MSUJfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9LjAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJiZGIgZ2RibSIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLVVpX2RiLGRiIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICIsLVVpX2dkYm0sZ2RibSIKLQotIyBEb24ndCBnZW5lcmF0ZSBjb21tZW50cyBpbiBlbmMyeHMgb3V0cHV0IGZpbGVzLiBUaGV5IGFyZSBub3QgcmVwcm9kdWNpYmxlCi1leHBvcnQgRU5DMlhTX05PX0NPTU1FTlRTID0gIjEiCi0KLWRvX3VucGFja19hcHBlbmQoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19jb3B5X3Blcmxjcm9zcycsIGQpCi19Ci0KLWRvX2NvcHlfcGVybGNyb3NzKCkgewotICAgIGNwIC1yZnAgJHtXT1JLRElSfS9wZXJsLWNyb3NzKi8qICR7U30KLX0KLQotZG9fY29uZmlndXJlX2NsYXNzLXRhcmdldCgpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKLSAgICAtRHVzZXNocnBsaWIgXAotICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCi0gICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtRGFyY2hsaWJleHA9JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXggXAotICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLQotICAgICNwZXJsLmMgdXNlcyBhbiBBUkNITElCX0VYUCBkZWZpbmUgdG8gZ2VuZXJhdGUgY29tcGlsZS10aW1lIGNvZGUgdGhhdAotICAgICNhZGRzIHRoZSBhcmNobGliZXhwIHBhdGggdG8gQElOQyBkdXJpbmcgcnVuLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgYQotICAgICNuZXcgcGVybCBpbnRlcnByZXRlci4KLQotICAgICNCZWNhdXNlIHdlJ3ZlIGNoYW5nZWQgdGhpcyB2YWx1ZSBpbiBhIHRlbXBvcmFyeSB3YXkgdG8gbWFrZSBpdAotICAgICNwb3NzaWJsZSB0byB1c2UgRXh0VXRpbHM6OkVtYmVkIGluIHRoZSB0YXJnZXQgYnVpbGQgKHRoZSB0ZW1wb3JhcnkKLSAgICAjdmFsdWUgaW4gY29uZmlnLnNoIGdldHMgcmUtc3RyaXBwZWQgb3V0IGR1cmluZyBwYWNrYWdpbmcpLCB0aGUKLSAgICAjQVJDSExJQl9FWFAgdmFsdWUgdGhhdCBnZXRzIGdlbmVyYXRlZCBzdGlsbCB1c2VzIHRoZSB0ZW1wb3JhcnkgdmVyc2lvbgotICAgICNpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBleHBlY3RlZCB2ZXJzaW9uIChpLmUuIGJlY2F1c2VzIGl0J3MgaW4gdGhlCi0gICAgI2dlbmVyYXRlZCBjb25maWcuaCwgaXQgZG9lc24ndCBnZXQgc3RyaXBwZWQgb3V0IGR1cmluZyBwYWNrYWdpbmcgbGlrZQotICAgICN0aGUgb3RoZXJzIGluIGNvbmZpZy5zaCkuCi0KLSAgICBzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIGNvbmZpZy5oCi19Ci0KLWRvX2NvbmZpZ3VyZV9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKLSAgICAtRHVzZXNocnBsaWIgXAotICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCi0gICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtRGFyY2hsaWJleHA9JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXggXAotICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLQotICAgICMgU2VlIHRoZSBjb21tZW50IGFib3ZlCi0gICAgc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBjb25maWcuaAotfQotCi1kb19jb25maWd1cmVfY2xhc3MtbmF0aXZlKCkgewotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLURiaW49JHtiaW5kaXJ9L3BlcmwtbmF0aXZlIFwKLSAgICAtRHVzZXNocnBsaWIgXAotICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCi0gICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtVWlfeGxvY2FsZSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIGlmIFsgLW4gIiRTT1VSQ0VfREFURV9FUE9DSCIgXTsgdGhlbgotICAgICAgICBQRVJMX0JVSUxEX0RBVEU9IiQoJHtQWVRIT059IC1jICJcCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmU7IFwKLXByaW50KGRhdGV0aW1lLmZyb210aW1lc3RhbXAoJFNPVVJDRV9EQVRFX0VQT0NILCB0aW1lem9uZS51dGMpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpKSBcCi0gICAgICAgICAgICAiKSIKLSAgICAgICAgZWNobyAiI2RlZmluZSBQRVJMX0JVSUxEX0RBVEUgXCIkUEVSTF9CVUlMRF9EQVRFXCIiID4+IGNvbmZpZy5oCi0gICAgZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLwotCi0gICAgIyBTYXZlIG5hdGl2ZSBjb25maWcKLSAgICBpbnN0YWxsIGNvbmZpZy5zaCAke0R9JHtsaWJkaXJ9L3Blcmw1Ci0gICAgaW5zdGFsbCBsaWIvQ29uZmlnLnBtICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCi0gICAgaW5zdGFsbCBsaWIvRXh0VXRpbHMvdHlwZW1hcCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLwotCi0gICAgIyBGaXggdXAgc2hhcmVkIGxpYnJhcnkKLSAgICBybSAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5zbwotICAgIGxuIC1zZiAuLi8uLi8uLi8uLi9saWJwZXJsLnNvLiR7UEVSTF9MSUJfVkVSfSAkKGVjaG8gJHtEfS8ke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFKS9saWJwZXJsLnNvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIFRoaXMgaXMgdXNlZCB0byBzdWJzdGl0dXRlIHRhcmdldCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBuYXRpdmUgcGVybCB2aWEgcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKLSAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnktdGFyZ2V0LnBsCi0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgICMgVGhpcyBpcyB1c2VkIHRvIHN1YnN0aXR1dGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIG5hdGl2ZSBwZXJsIHZpYSBwZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAotICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKLQotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCBcCi0gICAgICAgIFBFUkw1TElCPSckUEVSTDVMSUI6JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1L3NpdGVfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1LyR7UFZ9JwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgICMgVGhvc2Ugd3JhcHBlcnMgbWVhbiB0aGF0IHBlcmwgaW5zdGFsbGVkIGZyb20gc3N0YXRlICh3aGljaCBtYXkgY2hhbmdlCi0gICAgIyBwYXRoIGxvY2F0aW9uKSB3b3JrcyBhbmQgdGhhdCBpbiB0aGUgbmF0aXZlc2RrIGNhc2UsIHRoZSBTREsgY2FuIGJlCi0gICAgIyBpbnN0YWxsZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24gZnJvbSB0aGUgb25lIGl0IHdhcyBidWlsdCBmb3IuCi0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsLW5hdGl2ZS9wZXJsIFBFUkw1TElCPSckUEVSTDVMSUI6JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1L3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9JwotCi0gICAgIyBVc2UgL3Vzci9iaW4vZW52IG5hdGl2ZXBlcmwgZm9yIHRoZSBwZXJsIHNjcmlwdC4KLSAgICBmb3IgZiBpbiBgZ3JlcCAtSWwgJyMhICoke2JpbmRpcn0vcGVybCcgJHtEfS8ke2JpbmRpcn0vKmA7IGRvCi0gICAgICAgICAgICBzZWQgLWkgLWUgJ3N8JHtiaW5kaXJ9L3Blcmx8L3Vzci9iaW4vZW52IG5hdGl2ZXBlcmx8JyAkZgotICAgIGRvbmUKLX0KLQotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcGVybF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotICAgICAgICAjIEZpeCB1cCBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgotICAgICAgICBzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtERUJVR19QUkVGSVhfTUFQfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19JTkNESVJ9LCR7aW5jbHVkZWRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS8ke1RBUkdFVF9QUkVGSVh9LCR7YmluZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnhzIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJwaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJtYW4gXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydGV4dCBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ1c2FnZSBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZGNoZWNrZXIgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RzZWxlY3QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL2NvbmZpZy5oIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9wZXJsLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3BwLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9Db25maWcucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWcucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWcucG9kIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2dpdC5wbCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS5wbCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRmlsZUNhY2hlLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vcG9kLyoucG9kIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvY29uZmlnLnNoCi19Ci0KLXJlcXVpcmUgcGVybC1wdGVzdC5pbmMKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3BlcmwgJHtiaW5kaXJ9L3BlcmwucmVhbCAke2JpbmRpcn0vcGVybCR7UFZ9ICR7bGliZGlyfS9saWJwZXJsLnNvKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvc2l0ZV9wZXJsIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9Db25maWcucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ29uZmlnX2dpdC5wbCBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfaGVhdnktdGFyZ2V0LnBsIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9jb25maWcuc2ggXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3N0cmljdC5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3dhcm5pbmdzIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS92YXJzLnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9zaXRlX3BlcmwgXAotICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBwZXJsLW1vZHVsZS1jb25maWcgcGVybC1tb2R1bGUtd2FybmluZ3MgXAotICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRS9saWJwZXJsLmEiCi0KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUiCi0KLUZJTEVTXyR7UE59LWRvY19hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS9Vbmljb2RlL0NvbGxhdGUvKi50eHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovLnBhY2tsaXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy9NQU5JRkVTVC5TS0lQIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy94c3VicHAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL3R5cGVtYXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0VuY29kZS9lbmNvZGUuaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi0KLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9LyoiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wb2QiCi0KLUZJTEVTXyR7UE59LXBvZCA9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vcG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi5wb2QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyoucG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyoucG9kIFwgCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi8qLyoucG9kIFwgCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGUtY3BhbiAke1BOfS1tb2R1bGUtdW5pY29yZSIKLQotRklMRVNfJHtQTn0tbW9kdWxlLWNwYW4gKz0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9DUEFOIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tbW9kdWxlLXVuaWNvcmUgKz0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS91bmljb3JlIgotCi0jIENyZWF0ZSBhIHBlcmwtbW9kdWxlcyBwYWNrYWdlIHJlY29tbWVuZGluZyBhbGwgdGhlIG90aGVyIHBlcmwKLSMgcGFja2FnZXMgKGFjdHVhbGx5IHRoZSBub24gbW9kdWxlcyBwYWNrYWdlcyBhbmQgbm90IGNyZWF0ZWQgdG9vKQotQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIgotUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZXMgIgotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3BlcmxfcGFja2FnZXMgIgotCi1weXRob24gc3BsaXRfcGVybF9wYWNrYWdlcyAoKSB7Ci0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9wZXJsNS8ke1BWfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qL2F1dG8vKFteLl0qKS9bXi9dKlwuKHNvfGxkfGl4fGFsKScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKmxpbnV4LyhbXlwvXSopXC5wbScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidNb2R1bGUvKFteXC9dKilcLnBtJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ01vZHVsZS8oW15cL10qKS8uKicsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKmxpbnV4LyhbXlwvXS4qKVwuKHBtfHBsfGUyeCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInKF4oPyEoQ1BBTlwvfENQQU5QTFVTXC98TW9kdWxlXC98dW5pY29yZVwvKVteXC9dKS4qKVwuKHBtfHBsfGUyeCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLQotICAgICMgcGVybC1tb2R1bGVzIHNob3VsZCByZWNvbW1lbmQgZXZlcnkgcGVybCBtb2R1bGUsIGFuZCBvbmx5IHRoZQotICAgICMgbW9kdWxlcy4gRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhlIHJlc3VsdCBvZiBkb19zcGxpdF9wYWNrYWdlcygpIGFzIHNvbWUKLSAgICAjIG1vZHVsZXMgYXJlIG1hbnVhbGx5IHNwbGl0IChlZy4gcGVybC1tb2R1bGUtdW5pY29yZSkuCi0gICAgcGFja2FnZXMgPSBmaWx0ZXIobGFtYmRhIHA6ICdwZXJsLW1vZHVsZS0nIGluIHAsIGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkpCi0gICAgZC5zZXRWYXIoZC5leHBhbmQoIlJSRUNPTU1FTkRTXyR7UE59LW1vZHVsZXMiKSwgJyAnLmpvaW4ocGFja2FnZXMpKQotCi0gICAgIyBSZWFkIHRoZSBwcmUtZ2VuZXJhdGVkIGRlcGVuZGVuY3kgZmlsZSwgYW5kIHVzZSBpdCB0byBzZXQgbW9kdWxlIGRlcGVuZGVjaWVzCi0gICAgZm9yIGxpbmUgaW4gb3BlbihkLmV4cGFuZCgiJHtXT1JLRElSfSIpICsgJy9wZXJsLXJkZXBlbmRzLnR4dCcpLnJlYWRsaW5lcygpOgotICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzcGxpdGxpbmVbMF0gKyAnLW5hdGl2ZScKLSAgICAgICAgICAgIGRlcGVuZHMgPSAicGVybC1uYXRpdmUiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzcGxpdGxpbmVbMF0ucmVwbGFjZSgiUkRFUEVORFNfcGVybCIsICJSREVQRU5EU18ke1BOfSIpCi0gICAgICAgICAgICBkZXBlbmRzID0gc3BsaXRsaW5lWzJdLnN0cmlwKCciJykucmVwbGFjZSgicGVybC1tb2R1bGUiLCAiJHtQTn0tbW9kdWxlIikKLSAgICAgICAgZC5hcHBlbmRWYXIoZC5leHBhbmQobW9kdWxlKSwgIiAiICsgZGVwZW5kcykKLX0KLQotcHl0aG9uKCkgewotICAgIGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLXRhcmdldCI6Ci0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5wZXJsLW1vZHVsZS0uKig/PCFuYXRpdmUpJCIpCi0gICAgZWxpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy1uYXRpdmUiOgotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJecGVybC1tb2R1bGUtLiotbmF0aXZlJCIpCi0gICAgZWxpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy1uYXRpdmVzZGsiOgotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJebmF0aXZlc2RrLXBlcmwtbW9kdWxlLS4qIikKLX0KLQotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicGVybCBwZXJsLW1vZHVsZXMiCi1SREVQRU5EU18ke1BOfS1wb2QgKz0gInBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKLQotZG9fY3JlYXRlX3JkZXBlbmRzX2luYygpIHsKLSAgICBjZCAke1dPUktESVJ9Ci0gICAgY2F0IDw8J0VPUFJFQU1CTEUnID4gJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmluYwotCi0jIFNvbWUgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgYWJvdmUgZG9lc24ndCBtYW5hZ2UgdG8gZmlndXJlIG91dAotUkRFUEVORFNfJHtQTn0tbW9kdWxlLWZpbGUtc3BlYyArPSAiJHtQTn0tbW9kdWxlLWZpbGUtc3BlYy11bml4IgotUkRFUEVORFNfJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50ICs9ICIke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQtY2FsYyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS10aHJlYWQtcXVldWUgKz0gIiR7UE59LW1vZHVsZS1hdHRyaWJ1dGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlLW92ZXJsb2FkICs9ICIke1BOfS1tb2R1bGUtb3ZlcmxvYWRpbmciCi0KLSMgR2VuZXJhdGVkIGRlcGVuZHMgbGlzdCBiZXlvbmQgdGhpcyBsaW5lCi1FT1BSRUFNQkxFCi0gICAgdGVzdCAtZSBwYWNrYWdlcy1zcGxpdC5uZXcgJiYgcm0gLXJmIHBhY2thZ2VzLXNwbGl0Lm5ldwotICAgIGNwIC1yIHBhY2thZ2VzLXNwbGl0IHBhY2thZ2VzLXNwbGl0Lm5ldyAmJiBjZCBwYWNrYWdlcy1zcGxpdC5uZXcKLSAgICBmaW5kIC4gLW5hbWUgXCoucG0gfCB4YXJncyBzZWQgLWkgJy9ePWhlYWQvLC9ePWN1dC9kJwotICAgIGVncmVwIC1yICJeXHMqKFw8dXNlIC4qfFw8cmVxdWlyZSAuKik7PyIgcGVybC1tb2R1bGUtKiAtLWluY2x1ZGU9IioucG0iIHwgXAotICAgIHNlZCAicy9cLy4qXC5wbTogKi8gKz0gL2c7cy9bXCJcJ10vL2c7cy87LiovXCIvZztzLys9IC4qXChyZXF1aXJlXHx1c2VcKVw+ICovKz0gXCJwZXJsLW1vZHVsZS0vZztzL0NQQU5QTFVTOjouKi9jcGFucGx1cy9nO3MvQ1BBTjo6LiovY3Bhbi9nO3MvOjovLS9nO3MvIFteK1wiXS4qLy9nO3MvXy8tL2c7cy9cLnBsXCIkL1wiLztzL1wiXD9cJC9cIi87cy8oLy87IiB8IHRyIFs6dXBwZXI6XSBbOmxvd2VyOl0gfCBcCi0gICAgYXdrICd7aWYgKCQzICE9ICJceDIyIiQxIlx4MjIiKXsgcHJpbnQgJDB9fSd8IFwKLSAgICBncmVwIC12IC1lICJcLXZtc1wtIiAtZSBtb2R1bGUtNSAtZSAiXiQiIC1lICJcXCQiIC1lIHlvdXIgLWUgdGsgLWUgYXV0b3BlcmwgLWUgaHRtbCAtZSBodHRwIC1lIHBhcnNlLWNwYW4gLWUgcGVybC1vc3R5cGUgLWUgbmRibS1maWxlIC1lIG1vZHVsZS1tYWMgLWUgZmNnaSAtZSBsd3AgLWUgZGJkIC1lIGRiaXggfCBcCi0gICAgc29ydCAtdSB8IFwKLSAgICBzZWQgJ3MvXi9SREVQRU5EU18vO3MvcGVybC1tb2R1bGUtLyR7UE59LW1vZHVsZS0vZztzL21vZHVsZS1cKG1vZHVsZS1cKS9cMS9nO3MvXChtb2R1bGUtbG9hZFwpLWNvbmRpdGlvbmFsL1wxL2c7cy9lbmNvZGUtY29uZmlnbG9jYWwvJi1wbS87JyB8IFwKLSAgICBlZ3JlcCAtd3YgJz0+fG1vZHVsZS1hfG1vZHVsZS1hcGFjaGUuP3xtb2R1bGUtYXByfG1vZHVsZS1hdXRoZW4tc2FzbHxtb2R1bGUtYi1hc21kYXRhfG1vZHVsZS1jb252ZXJ0LWViY2RpY3xtb2R1bGUtZGV2ZWwtc2l6ZXxtb2R1bGUtZGlnZXN0LXBlcmwtbWQ1fG1vZHVsZS1kdW1wdmFsdWV8bW9kdWxlLWV4dHV0aWxzLWNvbnN0YW50LWFhYXJnaDU2aGFzaHxtb2R1bGUtZXh0dXRpbHMteHNzeW1zZXR8bW9kdWxlLWZpbGUtYnNkZ2xvYnxtb2R1bGUtZm9yfG1vZHVsZS1pdHxtb2R1bGUtaW8tc29ja2V0LWluZXQ2fG1vZHVsZS1pby1zb2NrZXQtc3NsfG1vZHVsZS1pby1zdHJpbmd8bW9kdWxlLWlwYy1zeXN0ZW0tc2ltcGxlfG1vZHVsZS1sZXhpY2FsfG1vZHVsZS1sb2NhbC1saWJ8bWV0YWRhdGF8bW9kdWxlLW1vZHBlcmwtdXRpbHxtb2R1bGUtcGx1Z2dhYmxlLW9iamVjdHxtb2R1bGUtdGVzdC1idWlsZGVyLWlvLXNjYWxhcnxtb2R1bGUtdGVzdDJ8bW9kdWxlLXRleHQtdW5pZGVjb2RlfG1vZHVsZS11bmljb3JlfG1vZHVsZS13aW4zMnxvYmplY3RzXHNsb2FkfHN5c2NhbGwucGh8c3lzdGVtaW5mby5waHwlcycgfCBcCi0gICAgZWdyZXAgLXd2ICc9Pnxtb2R1bGUtYWxnb3JpdGhtLWRpZmZ8bW9kdWxlLWNhcnB8bW9kdWxlLWM8ZXh0dXRpbHMtbW0tdW5peD58bW9kdWxlLWVuY29kZS1oYW5leHRyYXxtb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyLXZlcnNpb24tcmVnZXh8bW9kdWxlLWZpbGUtc3BlY3xtb2R1bGUtaW8tY29tcHJlc3MtbHptYXxtb2R1bGUtbG9jYWxlLW1ha2V0ZXh0LWxleGljb258bW9kdWxlLWxvZy1hZ2VudHxtb2R1bGUtbWV0YS1ub3RhdGlvbnxtb2R1bGUtbmV0LWxvY2FsY2ZnfG1vZHVsZS1uZXQtcGluZy1leHRlcm5hbHxtb2R1bGUtYi1kZXBhcnNlfG1vZHVsZS1zY2FsYXItdXRpbHxtb2R1bGUtc29tZS1tb2R1bGV8bW9kdWxlLXN5bWJvbHxtb2R1bGUtdXJpfG1vZHVsZS13aW4zMmFwaS1maWxlJyA+PiAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuZ2VuZXJhdGVkCi0gICAgY3AgJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmdlbmVyYXRlZCAke1RISVNESVJ9L2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0Ci19Ci0KLSMgYml0YmFrZSBwZXJsIC1jIGNyZWF0ZV9yZGVwZW5kc19pbmMKLWFkZHRhc2sgZG9fY3JlYXRlX3JkZXBlbmRzX2luYwotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciIKLQotcGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyICgpIHsKLSAgICAgICBta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KLSAgICAgICAjIENyZWF0ZSBhIHdyYXBwZXIgdGhhdCAvdXNyL2Jpbi9lbnYgcGVybCB3aWxsIHVzZSB0byBnZXQgcGVybC1uYXRpdmUuCi0gICAgICAgIyBUaGlzIE1VU1QgbGl2ZSBpbiB0aGUgbm9ybWFsIGJpbmRpci4KLSAgICAgICBjYXQgPiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybCA8PCBFT0YKLSMhL2Jpbi9zaAotcmVhbHBhdGg9XGByZWFkbGluayAtZm4gXCQwXGAKLWV4ZWMgXGBkaXJuYW1lIFwkcmVhbHBhdGhcYC9wZXJsLW5hdGl2ZS9wZXJsICJcJEAiCi1FT0YKLSAgICAgICBjaG1vZCAwNzU1ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsCi0gICAgICAgY2F0ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OGM0MjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4yLmJiCkBAIC0wLDAgKzEsMzg3IEBACitTVU1NQVJZID0gIlBlcmwgc2NyaXB0aW5nIGxhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wZXJsLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlpbmc7bWQ1PTViMTIyYTM2ZDBmNmRjNTUyNzlhMGViYzY5ZjNjNjBiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0FydGlzdGljO21kNT03MWE0ZDVkOWFjYzE4YzA5NTJhNmRmMjIxOGJiNjhkYSBcCisgICAgICAgICAgICAgICAgICAgICIKKworCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmNwYW4ub3JnL3NyYy81LjAvcGVybC0ke1BWfS50YXIuZ3o7bmFtZT1wZXJsIFwKKyAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9yZWxlYXNlcy9kb3dubG9hZC8xLjMuMi9wZXJsLWNyb3NzLTEuMy4yLnRhci5nejtuYW1lPXBlcmwtY3Jvc3MgXAorICAgICAgICAgICBmaWxlOi8vcGVybC1yZGVwZW5kcy50eHQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfdG9vbC5zaC1kby1ub3QtcXVvdGUtdGhlLWFyZ3VtZW50LXRvLWNvbW1hLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRXh0VXRpbHMtTWFrZU1ha2VyLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1iaW5hcnktbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNvbWVob3ctdGhpcy1tb2R1bGUtYnJlYWtzLXRocm91Z2gtdGhlLXBlcmwtd3JhcHBlci0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXJybm9fdmVyLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wZXJsLWNyb3NzLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1saWJwZXJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtZHlubG9hZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlX3BhdGguc2gtZG8tbm90LWhhcmRjb2RlLXByZWZpeC1saWItYXMtbGlici5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWVuYzJ4cy1BZGQtZW52aXJvbm1lbnQtdmFyaWFibGUtdG8tc3VwcHJlc3MtY29tbWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Db25zdGFudC1GaXgtdXAtc2hlYmFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVBBVENILXBlcmwtMTM0MTE3LUNsb3NlLURBVEEtaW4tbG9jX3Rvb2xzLnBsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldGVybWluaXNtLnBhdGNoICBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICBmaWxlOi8vcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9lbmNvZGVmaXgucGF0Y2ggXAorIgorCitTUkNfVVJJW3Blcmwuc2hhMjU2c3VtXSA9ICI2NmRiN2RmOGE5MTk3OWViNTc2ZmFjOTE3NDM2NDRkYTg3ODI0NGNmOGVlMTUyZjAyY2Q2ZjVjZDdhNzMxNjg5IgorU1JDX1VSSVtwZXJsLWNyb3NzLnNoYTI1NnN1bV0gPSAiZGVmYTEyZjBhZDdiZTBiNmM0OGI0Zjc2ZTJmYjViMzdjMWIzN2ZiZWI2ZTllYmU5MzgyNzljZDUzOWEwYzIwYyIKKworUyA9ICIke1dPUktESVJ9L3BlcmwtJHtQVn0iCisKK2luaGVyaXQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworREVQRU5EUyArPSAiemxpYiB2aXJ0dWFsL2NyeXB0IgorCitQRVJMX0xJQl9WRVIgPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0uMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiBnZGJtIgorUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwtVWlfZGIsZGIiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIiwtVWlfZ2RibSxnZGJtIgorCisjIERvbid0IGdlbmVyYXRlIGNvbW1lbnRzIGluIGVuYzJ4cyBvdXRwdXQgZmlsZXMuIFRoZXkgYXJlIG5vdCByZXByb2R1Y2libGUKK2V4cG9ydCBFTkMyWFNfTk9fQ09NTUVOVFMgPSAiMSIKKworZG9fdW5wYWNrX2FwcGVuZCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2NvcHlfcGVybGNyb3NzJywgZCkKK30KKworZG9fY29weV9wZXJsY3Jvc3MoKSB7CisgICAgY3AgLXJmcCAke1dPUktESVJ9L3BlcmwtY3Jvc3MqLyogJHtTfQorfQorCitkb19jb25maWd1cmVfY2xhc3MtdGFyZ2V0KCkgeworICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAorICAgIC1EdXNlc2hycGxpYiBcCisgICAgLURzb25hbWU9bGlicGVybC5zby41IFwKKyAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAorICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCisgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorCisgICAgI3BlcmwuYyB1c2VzIGFuIEFSQ0hMSUJfRVhQIGRlZmluZSB0byBnZW5lcmF0ZSBjb21waWxlLXRpbWUgY29kZSB0aGF0CisgICAgI2FkZHMgdGhlIGFyY2hsaWJleHAgcGF0aCB0byBASU5DIGR1cmluZyBydW4tdGltZSBpbml0aWFsaXphdGlvbiBvZiBhCisgICAgI25ldyBwZXJsIGludGVycHJldGVyLgorCisgICAgI0JlY2F1c2Ugd2UndmUgY2hhbmdlZCB0aGlzIHZhbHVlIGluIGEgdGVtcG9yYXJ5IHdheSB0byBtYWtlIGl0CisgICAgI3Bvc3NpYmxlIHRvIHVzZSBFeHRVdGlsczo6RW1iZWQgaW4gdGhlIHRhcmdldCBidWlsZCAodGhlIHRlbXBvcmFyeQorICAgICN2YWx1ZSBpbiBjb25maWcuc2ggZ2V0cyByZS1zdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyksIHRoZQorICAgICNBUkNITElCX0VYUCB2YWx1ZSB0aGF0IGdldHMgZ2VuZXJhdGVkIHN0aWxsIHVzZXMgdGhlIHRlbXBvcmFyeSB2ZXJzaW9uCisgICAgI2luc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGV4cGVjdGVkIHZlcnNpb24gKGkuZS4gYmVjYXVzZXMgaXQncyBpbiB0aGUKKyAgICAjZ2VuZXJhdGVkIGNvbmZpZy5oLCBpdCBkb2Vzbid0IGdldCBzdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyBsaWtlCisgICAgI3RoZSBvdGhlcnMgaW4gY29uZmlnLnNoKS4KKworICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKK30KKworZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAorICAgIC1EdXNlc2hycGxpYiBcCisgICAgLURzb25hbWU9bGlicGVybC5zby41IFwKKyAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAorICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCisgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorCisgICAgIyBTZWUgdGhlIGNvbW1lbnQgYWJvdmUKKyAgICBzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIGNvbmZpZy5oCit9CisKK2RvX2NvbmZpZ3VyZV9jbGFzcy1uYXRpdmUoKSB7CisgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtRGJpbj0ke2JpbmRpcn0vcGVybC1uYXRpdmUgXAorICAgIC1EdXNlc2hycGxpYiBcCisgICAgLURzb25hbWU9bGlicGVybC5zby41IFwKKyAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAorICAgIC1VaV94bG9jYWxlIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Cit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgaWYgWyAtbiAiJFNPVVJDRV9EQVRFX0VQT0NIIiBdOyB0aGVuCisgICAgICAgIFBFUkxfQlVJTERfREFURT0iJCgke1BZVEhPTn0gLWMgIlwKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZTsgXAorcHJpbnQoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgkU09VUkNFX0RBVEVfRVBPQ0gsIHRpbWV6b25lLnV0Yykuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZJykpIFwKKyAgICAgICAgICAgICIpIgorICAgICAgICBlY2hvICIjZGVmaW5lIFBFUkxfQlVJTERfREFURSBcIiRQRVJMX0JVSUxEX0RBVEVcIiIgPj4gY29uZmlnLmgKKyAgICBmaQorfQorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UKKyAgICAjIFRoaXMgaXNuJ3QgZ2VuZXJhdGVkIHJlbGlhYmx5IHNvIGRlbGV0ZSBhbmQgcmUtZ2VuZXJhdGUuCisgICAgIyBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL2lzc3Vlcy84NgorCisgICAgaWYgWyAtZSBwb2QvcGVybHRvYy5wb2QgXTsgdGhlbgorICAgICAgICBiYm5vdGUgUmVidWlsZGluZyBwZXJsdG9jLnBvZAorICAgICAgICBybSAtZiBwb2QvcGVybHRvYy5wb2QKKyAgICAgICAgb2VfcnVubWFrZSBwb2QvcGVybHRvYy5wb2QKKyAgICBmaQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy8KKworICAgICMgU2F2ZSBuYXRpdmUgY29uZmlnCisgICAgaW5zdGFsbCBjb25maWcuc2ggJHtEfSR7bGliZGlyfS9wZXJsNQorICAgIGluc3RhbGwgbGliL0NvbmZpZy5wbSAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LworICAgIGluc3RhbGwgbGliL0V4dFV0aWxzL3R5cGVtYXAgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy8KKworICAgICMgRml4IHVwIHNoYXJlZCBsaWJyYXJ5CisgICAgcm0gJHtEfS8ke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFL2xpYnBlcmwuc28KKyAgICBsbiAtc2YgLi4vLi4vLi4vLi4vbGlicGVybC5zby4ke1BFUkxfTElCX1ZFUn0gJChlY2hvICR7RH0vJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRSkvbGlicGVybC5zbworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCisgICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAorCisgICAgIyBUaGlzIGNvbnRhaW5zIGhvc3Qtc3BlY2lmaWMgaW5mb3JtYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgbWluaXBlcmwgKGEgaGVscGVyIGV4ZWN1dGFibGUgYnVpbHQgd2l0aCBob3N0IGNvbXBpbGVyKQorICAgICMgYW5kIHRoZXJlZm9yZSBpc24ndCByZXByb2R1Y2libGUuIEkgYmVsaWV2ZSB0aGUgZmlsZSBpc24ndCBhY3R1YWxseSBuZWVkZWQgb24gdGFyZ2V0LgorICAgIHJtICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS94Y29uZmlnLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICMgVGhpcyBpcyB1c2VkIHRvIHN1YnN0aXR1dGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIG5hdGl2ZSBwZXJsIHZpYSBwZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAorICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKKworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCBcCisgICAgICAgIFBFUkw1TElCPSckUEVSTDVMSUI6JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1L3NpdGVfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1LyR7UFZ9JworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgICMgVGhvc2Ugd3JhcHBlcnMgbWVhbiB0aGF0IHBlcmwgaW5zdGFsbGVkIGZyb20gc3N0YXRlICh3aGljaCBtYXkgY2hhbmdlCisgICAgIyBwYXRoIGxvY2F0aW9uKSB3b3JrcyBhbmQgdGhhdCBpbiB0aGUgbmF0aXZlc2RrIGNhc2UsIHRoZSBTREsgY2FuIGJlCisgICAgIyBpbnN0YWxsZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24gZnJvbSB0aGUgb25lIGl0IHdhcyBidWlsdCBmb3IuCisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsLW5hdGl2ZS9wZXJsIFBFUkw1TElCPSckUEVSTDVMSUI6JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1L3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9JworCisgICAgIyBVc2UgL3Vzci9iaW4vZW52IG5hdGl2ZXBlcmwgZm9yIHRoZSBwZXJsIHNjcmlwdC4KKyAgICBmb3IgZiBpbiBgZ3JlcCAtSWwgJyMhICoke2JpbmRpcn0vcGVybCcgJHtEfS8ke2JpbmRpcn0vKmA7IGRvCisgICAgICAgICAgICBzZWQgLWkgLWUgJ3N8JHtiaW5kaXJ9L3Blcmx8L3Vzci9iaW4vZW52IG5hdGl2ZXBlcmx8JyAkZgorICAgIGRvbmUKK30KKworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcGVybF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgeworICAgICAgICAjIEZpeCB1cCBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgorICAgICAgICBzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtERUJVR19QUkVGSVhfTUFQfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19JTkNESVJ9LCR7aW5jbHVkZWRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS8ke1RBUkdFVF9QUkVGSVh9LCR7YmluZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnhzLnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoLnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QybWFuLnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydGV4dC5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnVzYWdlLnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RjaGVja2VyLnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RzZWxlY3QucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvY29uZmlnLmggXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3BlcmwuaCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcHAuaCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wb2QgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfZ2l0LnBsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LnBsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9GaWxlQ2FjaGUucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QvKi5wb2QgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS9jb25maWcuc2gKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0tbWlzYyA9ICJjb3JlbGlzdCBjcGFuIGVuYzJ4cyBlbmNndWVzcyBoMnBoIGgyeHMgaW5zdG1vZHNoIGpzb25fcHAgbGlibmV0Y2ZnIFwKKyAgICAgICAgICAgICAgICAgICAgIHBpY29udiBwbDJwbSBwb2QyaHRtbCBwb2QybWFuIHBvZDJ0ZXh0IHBvZDJ1c2FnZSBwb2RjaGVja2VyIHBvZHNlbGVjdCBcCisgICAgICAgICAgICAgICAgICAgICBwcm92ZSBwdGFyIHB0YXJkaWZmIHB0YXJncmVwIHNoYXN1bSBzcGxhaW4geHN1YnBwIHppcGRldGFpbHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY29yZWxpc3RdID0gIiR7YmluZGlyfS9jb3JlbGlzdCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGFuXSA9ICIke2JpbmRpcn0vY3BhbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtlbmMyeHNdID0gIiR7YmluZGlyfS9lbmMyeHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZW5jZ3Vlc3NdID0gIiR7YmluZGlyfS9lbmNndWVzcyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoMnBoXSA9ICIke2JpbmRpcn0vaDJwaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoMnhzXSA9ICIke2JpbmRpcn0vaDJ4cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0bW9kc2hdID0gIiR7YmluZGlyfS9pbnN0bW9kc2giCitBTFRFUk5BVElWRV9MSU5LX05BTUVbanNvbl9wcF0gPSAiJHtiaW5kaXJ9L2pzb25fcHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbGlibmV0Y2ZnXSA9ICIke2JpbmRpcn0vbGlibmV0Y2ZnIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpY29udl0gPSAiJHtiaW5kaXJ9L3BpY29udiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwbDJwbV0gPSAiJHtiaW5kaXJ9L3BsMnBtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZDJodG1sXSA9ICIke2JpbmRpcn0vcG9kMmh0bWwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kMm1hbl0gPSAiJHtiaW5kaXJ9L3BvZDJtYW4iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kMnRleHRdID0gIiR7YmluZGlyfS9wb2QydGV4dCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QydXNhZ2VdID0gIiR7YmluZGlyfS9wb2QydXNhZ2UiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kY2hlY2tlcl0gPSAiJHtiaW5kaXJ9L3BvZGNoZWNrZXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kc2VsZWN0XSA9ICIke2JpbmRpcn0vcG9kc2VsZWN0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Byb3ZlXSA9ICIke2JpbmRpcn0vcHJvdmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHRhcl0gPSAiJHtiaW5kaXJ9L3B0YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHRhcmRpZmZdID0gIiR7YmluZGlyfS9wdGFyZGlmZiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwdGFyZ3JlcF0gPSAiJHtiaW5kaXJ9L3B0YXJncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NoYXN1bV0gPSAiJHtiaW5kaXJ9L3NoYXN1bSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzcGxhaW5dID0gIiR7YmluZGlyfS9zcGxhaW4iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbeHN1YnBwXSA9ICIke2JpbmRpcn0veHN1YnBwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ppcGRldGFpbHNdID0gIiR7YmluZGlyfS96aXBkZXRhaWxzIgorCityZXF1aXJlIHBlcmwtcHRlc3QuaW5jCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wZXJsICR7YmluZGlyfS9wZXJsLnJlYWwgJHtiaW5kaXJ9L3Blcmwke1BWfSAke2xpYmRpcn0vbGlicGVybC5zbyogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWcucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ29uZmlnX2dpdC5wbCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfaGVhdnktdGFyZ2V0LnBsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9jb25maWcuc2ggXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3N0cmljdC5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3dhcm5pbmdzIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS92YXJzLnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9zaXRlX3BlcmwgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL01BTklGRVNULlNLSVAgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL3hzdWJwcCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvdHlwZW1hcCBcCisgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFL2xpYnBlcmwuYSIKKworRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRSIKKworRklMRVNfJHtQTn0tZG9jX2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L1VuaWNvZGUvQ29sbGF0ZS8qLnR4dCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8ucGFja2xpc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0VuY29kZS9lbmNvZGUuaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCisKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtiaW5kaXJ9LyoiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1wb2QiCisKK0ZJTEVTXyR7UE59LXBvZCA9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vcG9kIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyoucG9kIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyoucG9kIFwgCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi8qLyoucG9kIFwgCisgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGUtY3BhbiAke1BOfS1tb2R1bGUtdW5pY29yZSIKKworRklMRVNfJHtQTn0tbW9kdWxlLWNwYW4gKz0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9DUEFOIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tbW9kdWxlLXVuaWNvcmUgKz0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS91bmljb3JlIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI0MCIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJUaHJlYWQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtUaHJlYWQuM10gPSAiJHttYW5kaXJ9L21hbjMvVGhyZWFkLjMiCisKKyMgQ3JlYXRlIGEgcGVybC1tb2R1bGVzIHBhY2thZ2UgcmVjb21tZW5kaW5nIGFsbCB0aGUgb3RoZXIgcGVybAorIyBwYWNrYWdlcyAoYWN0dWFsbHkgdGhlIG5vbiBtb2R1bGVzIHBhY2thZ2VzIGFuZCBub3QgY3JlYXRlZCB0b28pCitBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCitQQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyAiCisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfcGVybF9wYWNrYWdlcyAiCisKK3B5dGhvbiBzcGxpdF9wZXJsX3BhY2thZ2VzICgpIHsKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLiovYXV0by8oW14uXSopL1teL10qXC4oc298bGR8aXh8YWwpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dKilcLnBtJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ01vZHVsZS8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopLy4qJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicoXig/IShDUEFOXC98Q1BBTlBMVVNcL3xNb2R1bGVcL3x1bmljb3JlXC8pW15cL10pLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorCisgICAgIyBwZXJsLW1vZHVsZXMgc2hvdWxkIHJlY29tbWVuZCBldmVyeSBwZXJsIG1vZHVsZSwgYW5kIG9ubHkgdGhlCisgICAgIyBtb2R1bGVzLiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgcmVzdWx0IG9mIGRvX3NwbGl0X3BhY2thZ2VzKCkgYXMgc29tZQorICAgICMgbW9kdWxlcyBhcmUgbWFudWFsbHkgc3BsaXQgKGVnLiBwZXJsLW1vZHVsZS11bmljb3JlKS4KKyAgICBwYWNrYWdlcyA9IGZpbHRlcihsYW1iZGEgcDogJ3BlcmwtbW9kdWxlLScgaW4gcCwgZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKSkKKyAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCisKKyAgICAjIFJlYWQgdGhlIHByZS1nZW5lcmF0ZWQgZGVwZW5kZW5jeSBmaWxlLCBhbmQgdXNlIGl0IHRvIHNldCBtb2R1bGUgZGVwZW5kZWNpZXMKKyAgICBmb3IgbGluZSBpbiBvcGVuKGQuZXhwYW5kKCIke1dPUktESVJ9IikgKyAnL3BlcmwtcmRlcGVuZHMudHh0JykucmVhZGxpbmVzKCk6CisgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQorICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXSArICctbmF0aXZlJworICAgICAgICAgICAgZGVwZW5kcyA9ICJwZXJsLW5hdGl2ZSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXS5yZXBsYWNlKCJSREVQRU5EU19wZXJsIiwgIlJERVBFTkRTXyR7UE59IikKKyAgICAgICAgICAgIGRlcGVuZHMgPSBzcGxpdGxpbmVbMl0uc3RyaXAoJyInKS5yZXBsYWNlKCJwZXJsLW1vZHVsZSIsICIke1BOfS1tb2R1bGUiKQorICAgICAgICBkLmFwcGVuZFZhcihkLmV4cGFuZChtb2R1bGUpLCAiICIgKyBkZXBlbmRzKQorfQorCitweXRob24oKSB7CisgICAgaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtdGFyZ2V0IjoKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qKD88IW5hdGl2ZSkkIikKKyAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZSI6CisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5wZXJsLW1vZHVsZS0uKi1uYXRpdmUkIikKKyAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZXNkayI6CisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiKQorfQorCitSREVQRU5EU18ke1BOfS1taXNjICs9ICJwZXJsIHBlcmwtbW9kdWxlcyIKK1JERVBFTkRTXyR7UE59LXBvZCArPSAicGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgorCitkb19jcmVhdGVfcmRlcGVuZHNfaW5jKCkgeworICAgIGNkICR7V09SS0RJUn0KKyAgICBjYXQgPDwnRU9QUkVBTUJMRScgPiAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuaW5jCisKKyMgU29tZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBhYm92ZSBkb2Vzbid0IG1hbmFnZSB0byBmaWd1cmUgb3V0CitSREVQRU5EU18ke1BOfS1tb2R1bGUtZmlsZS1zcGVjICs9ICIke1BOfS1tb2R1bGUtZmlsZS1zcGVjLXVuaXgiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQgKz0gIiR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludC1jYWxjIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLXRocmVhZC1xdWV1ZSArPSAiJHtQTn0tbW9kdWxlLWF0dHJpYnV0ZXMiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtb3ZlcmxvYWQgKz0gIiR7UE59LW1vZHVsZS1vdmVybG9hZGluZyIKKworIyBHZW5lcmF0ZWQgZGVwZW5kcyBsaXN0IGJleW9uZCB0aGlzIGxpbmUKK0VPUFJFQU1CTEUKKyAgICB0ZXN0IC1lIHBhY2thZ2VzLXNwbGl0Lm5ldyAmJiBybSAtcmYgcGFja2FnZXMtc3BsaXQubmV3CisgICAgY3AgLXIgcGFja2FnZXMtc3BsaXQgcGFja2FnZXMtc3BsaXQubmV3ICYmIGNkIHBhY2thZ2VzLXNwbGl0Lm5ldworICAgIGZpbmQgLiAtbmFtZSBcKi5wbSB8IHhhcmdzIHNlZCAtaSAnL149aGVhZC8sL149Y3V0L2QnCisgICAgZWdyZXAgLXIgIl5ccyooXDx1c2UgLip8XDxyZXF1aXJlIC4qKTs/IiBwZXJsLW1vZHVsZS0qIC0taW5jbHVkZT0iKi5wbSIgfCBcCisgICAgc2VkICJzL1wvLipcLnBtOiAqLyArPSAvZztzL1tcIlwnXS8vZztzLzsuKi9cIi9nO3MvKz0gLipcKHJlcXVpcmVcfHVzZVwpXD4gKi8rPSBcInBlcmwtbW9kdWxlLS9nO3MvQ1BBTlBMVVM6Oi4qL2NwYW5wbHVzL2c7cy9DUEFOOjouKi9jcGFuL2c7cy86Oi8tL2c7cy8gW14rXCJdLiovL2c7cy9fLy0vZztzL1wucGxcIiQvXCIvO3MvXCJcP1wkL1wiLztzLygvLzsiIHwgdHIgWzp1cHBlcjpdIFs6bG93ZXI6XSB8IFwKKyAgICBhd2sgJ3tpZiAoJDMgIT0gIlx4MjIiJDEiXHgyMiIpeyBwcmludCAkMH19J3wgXAorICAgIGdyZXAgLXYgLWUgIlwtdm1zXC0iIC1lIG1vZHVsZS01IC1lICJeJCIgLWUgIlxcJCIgLWUgeW91ciAtZSB0ayAtZSBhdXRvcGVybCAtZSBodG1sIC1lIGh0dHAgLWUgcGFyc2UtY3BhbiAtZSBwZXJsLW9zdHlwZSAtZSBuZGJtLWZpbGUgLWUgbW9kdWxlLW1hYyAtZSBmY2dpIC1lIGx3cCAtZSBkYmQgLWUgZGJpeCB8IFwKKyAgICBzb3J0IC11IHwgXAorICAgIHNlZCAncy9eL1JERVBFTkRTXy87cy9wZXJsLW1vZHVsZS0vJHtQTn0tbW9kdWxlLS9nO3MvbW9kdWxlLVwobW9kdWxlLVwpL1wxL2c7cy9cKG1vZHVsZS1sb2FkXCktY29uZGl0aW9uYWwvXDEvZztzL2VuY29kZS1jb25maWdsb2NhbC8mLXBtLzsnIHwgXAorICAgIGVncmVwIC13diAnPT58bW9kdWxlLWF8bW9kdWxlLWFwYWNoZS4/fG1vZHVsZS1hcHJ8bW9kdWxlLWF1dGhlbi1zYXNsfG1vZHVsZS1iLWFzbWRhdGF8bW9kdWxlLWNvbnZlcnQtZWJjZGljfG1vZHVsZS1kZXZlbC1zaXplfG1vZHVsZS1kaWdlc3QtcGVybC1tZDV8bW9kdWxlLWR1bXB2YWx1ZXxtb2R1bGUtZXh0dXRpbHMtY29uc3RhbnQtYWFhcmdoNTZoYXNofG1vZHVsZS1leHR1dGlscy14c3N5bXNldHxtb2R1bGUtZmlsZS1ic2RnbG9ifG1vZHVsZS1mb3J8bW9kdWxlLWl0fG1vZHVsZS1pby1zb2NrZXQtaW5ldDZ8bW9kdWxlLWlvLXNvY2tldC1zc2x8bW9kdWxlLWlvLXN0cmluZ3xtb2R1bGUtaXBjLXN5c3RlbS1zaW1wbGV8bW9kdWxlLWxleGljYWx8bW9kdWxlLWxvY2FsLWxpYnxtZXRhZGF0YXxtb2R1bGUtbW9kcGVybC11dGlsfG1vZHVsZS1wbHVnZ2FibGUtb2JqZWN0fG1vZHVsZS10ZXN0LWJ1aWxkZXItaW8tc2NhbGFyfG1vZHVsZS10ZXN0Mnxtb2R1bGUtdGV4dC11bmlkZWNvZGV8bW9kdWxlLXVuaWNvcmV8bW9kdWxlLXdpbjMyfG9iamVjdHNcc2xvYWR8c3lzY2FsbC5waHxzeXN0ZW1pbmZvLnBofCVzJyB8IFwKKyAgICBlZ3JlcCAtd3YgJz0+fG1vZHVsZS1hbGdvcml0aG0tZGlmZnxtb2R1bGUtY2FycHxtb2R1bGUtYzxleHR1dGlscy1tbS11bml4Pnxtb2R1bGUtZW5jb2RlLWhhbmV4dHJhfG1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXItdmVyc2lvbi1yZWdleHxtb2R1bGUtZmlsZS1zcGVjfG1vZHVsZS1pby1jb21wcmVzcy1sem1hfG1vZHVsZS1sb2NhbGUtbWFrZXRleHQtbGV4aWNvbnxtb2R1bGUtbG9nLWFnZW50fG1vZHVsZS1tZXRhLW5vdGF0aW9ufG1vZHVsZS1uZXQtbG9jYWxjZmd8bW9kdWxlLW5ldC1waW5nLWV4dGVybmFsfG1vZHVsZS1iLWRlcGFyc2V8bW9kdWxlLXNjYWxhci11dGlsfG1vZHVsZS1zb21lLW1vZHVsZXxtb2R1bGUtc3ltYm9sfG1vZHVsZS11cml8bW9kdWxlLXdpbjMyYXBpLWZpbGUnID4+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQKKyAgICBjcCAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuZ2VuZXJhdGVkICR7VEhJU0RJUn0vZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKK30KKworIyBiaXRiYWtlIHBlcmwgLWMgY3JlYXRlX3JkZXBlbmRzX2luYworYWRkdGFzayBkb19jcmVhdGVfcmRlcGVuZHNfaW5jCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyIgorCitwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIgKCkgeworICAgICAgIG1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorICAgICAgICMgQ3JlYXRlIGEgd3JhcHBlciB0aGF0IC91c3IvYmluL2VudiBwZXJsIHdpbGwgdXNlIHRvIGdldCBwZXJsLW5hdGl2ZS4KKyAgICAgICAjIFRoaXMgTVVTVCBsaXZlIGluIHRoZSBub3JtYWwgYmluZGlyLgorICAgICAgIGNhdCA+ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsIDw8IEVPRgorIyEvYmluL3NoCityZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYAorZXhlYyBcYGRpcm5hbWUgXCRyZWFscGF0aFxgL3BlcmwtbmF0aXZlL3BlcmwgIlwkQCIKK0VPRgorICAgICAgIGNobW9kIDA3NTUgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKKyAgICAgICBjYXQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjYuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjYuMy5iYgppbmRleCA5NGJjMTEyLi43MzJjYTJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS42LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiCkBAIC04LDcgKzgsNiBAQAogU0VDVElPTiA9ICJkZXZlbCIKIFBST1ZJREVTICs9ICJwa2djb25maWciCiBSUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyIKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKIAogIyBUaGUgcGtnY29uZiBsaWNlbnNlIHNlZW1zIHRvIGJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJTRC0yLUNsYXVzZSBvcgogIyBJU0MsIGJ1dCBoYXMgZGlmZmVyZW50IHdvcmRpbmcsIHNvIG5lZWRzIGl0cyBvd24gbmFtZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1BZGQtTUlQUy1nbnUtaGFzaC1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMDI3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1BZGQtTUlQUy1nbnUtaGFzaC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDA1MjQwZTEzNjY4NDIyYzRmOTExOGYyY2RlOTUzZWM4NzVkMGQ2OGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNCBKYW4gMjAyMCAwMTozNzoyMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBBZGQgTUlQUyBnbnUgaGFzaCBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9hcmNoLW1pcHMuYyB8IDEgKworIHNyYy9wcmVsaW5rLmMgICB8IDEgKworIHNyYy9wcmVsaW5rLmggICB8IDUgKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCistLS0gYS9zcmMvYXJjaC1taXBzLmMKKysrKyBiL3NyYy9hcmNoLW1pcHMuYworQEAgLTMyNCw2ICszMjQsNyBAQCBtaXBzX2FkanVzdF9keW4gKERTTyAqZHNvLCBpbnQgbiwgR0VsZl9ECisgICAgIGNhc2UgRFRfTUlQU19CQVNFX0FERFJFU1M6CisgICAgIGNhc2UgRFRfTUlQU19STERfTUFQOgorICAgICBjYXNlIERUX01JUFNfT1BUSU9OUzoKKysgICAgY2FzZSBEVF9NSVBTX1hIQVNIOgorICAgICAgIGlmIChkeW4tPmRfdW4uZF9wdHIgPj0gc3RhcnQpCisgCWR5bi0+ZF91bi5kX3B0ciArPSBhZGp1c3Q7CisgICAgICAgcmV0dXJuIDE7CistLS0gYS9zcmMvcHJlbGluay5jCisrKysgYi9zcmMvcHJlbGluay5jCitAQCAtNDI1LDYgKzQyNSw3IEBAIHByZWxpbmtfcHJlcGFyZSAoRFNPICpkc28pCisgCSAgeworIAkgIGNhc2UgU0hUX0hBU0g6CisgCSAgY2FzZSBTSFRfR05VX0hBU0g6CisrCSAgY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAJICBjYXNlIFNIVF9EWU5TWU06CisgCSAgY2FzZSBTSFRfUkVMOgorIAkgIGNhc2UgU0hUX1JFTEE6CistLS0gYS9zcmMvcHJlbGluay5oCisrKysgYi9zcmMvcHJlbGluay5oCitAQCAtMTE0LDYgKzExNCwxMSBAQCB0eXBlZGVmIHVpbnQ4X3QgRWxmNjRfQnl0ZTsKKyAjZGVmaW5lIFNIVF9NSVBTX0FCSUZMQUdTICAgICAgIDB4NzAwMDAwMmEKKyAjZW5kaWYKKyAKKysjaWZuZGVmIFNIVF9NSVBTX1hIQVNICisrI2RlZmluZSBEVF9NSVBTX1hIQVNICSAgICAweDcwMDAwMDM2CisrI2RlZmluZSBTSFRfTUlQU19YSEFTSCAgICAgICAweDcwMDAwMDJiCisrI2VuZGlmCisrCisgI2lmbmRlZiBSU1NfVU5ERUYKKyAjZGVmaW5lIFJTU19VTkRFRiAgICAgICAgICAgICAgMAorICNlbmRpZgorLS0tIGEvc3JjL2Rzby5jCisrKysgYi9zcmMvZHNvLmMKK0BAIC0xMDksNiArMTA5LDExIEBAIHJlYWRfZHluYW1pYyAoRFNPICpkc28pCisgCQkgICAgZHNvLT5pbmZvX0RUX0dOVV9IQVNIID0gZHluLmRfdW4uZF92YWw7CisgCQkgICAgZHNvLT5pbmZvX3NldF9tYXNrIHw9ICgxVUxMIDw8IERUX0dOVV9IQVNIX0JJVCk7CisgCQkgIH0KKysJCWVsc2UgaWYgKGR5bi5kX3RhZyA9PSBEVF9NSVBTX1hIQVNIKQorKwkJICB7CisrCQkgICAgZHNvLT5pbmZvX0RUX0dOVV9IQVNIID0gZHluLmRfdW4uZF92YWw7CisrCQkgICAgZHNvLT5pbmZvX3NldF9tYXNrIHw9ICgxVUxMIDw8IERUX0dOVV9IQVNIX0JJVCk7CisrCQkgIH0KKyAJCWVsc2UgaWYgKGR5bi5kX3RhZyA9PSBEVF9UTFNERVNDX1BMVCkKKyAJCSAgeworIAkJICAgIGRzby0+aW5mb19EVF9UTFNERVNDX1BMVCA9IGR5bi5kX3VuLmRfdmFsOworQEAgLTE0NjMsNiArMTQ2OCw3IEBAIGFkanVzdF9kc28gKERTTyAqZHNvLCBHRWxmX0FkZHIgc3RhcnQsIEcKKyAJICBicmVhazsKKyAJY2FzZSBTSFRfSEFTSDoKKyAJY2FzZSBTSFRfR05VX0hBU0g6CisrCWNhc2UgU0hUX01JUFNfWEhBU0g6CisgCWNhc2UgU0hUX05PQklUUzoKKyAJY2FzZSBTSFRfU1RSVEFCOgorIAkgIGJyZWFrOworLS0tIGEvc3JjL3NwYWNlLmMKKysrKyBiL3NyYy9zcGFjZS5jCitAQCAtNjEsNiArNjEsNyBAQCBwcmludF9zZWN0aW9ucyAoRFNPICpkc28sIEdFbGZfRWhkciAqZWhkCisgICAgICAgeyBTSFRfR05VX3ZlcnN5bSwgIlZFUlNZTSIgfSwKKyAgICAgICB7IFNIVF9HTlVfTElCTElTVCwgIkxJQkxJU1QiIH0sCisgICAgICAgeyBTSFRfR05VX0hBU0gsICJHTlVfSEFTSCIgfSwKKysgICAgICB7IFNIVF9NSVBTX1hIQVNILCAiTUlQU19YSEFTSCIgfSwKKyAgICAgICB7IDAsIE5VTEwgfQorICAgICB9OworIAorQEAgLTE4Myw2ICsxODQsNyBAQCByZWFkb25seV9pc19tb3ZhYmxlIChEU08gKmRzbywgR0VsZl9FaGRyCisgICAgIHsKKyAgICAgY2FzZSBTSFRfSEFTSDoKKyAgICAgY2FzZSBTSFRfR05VX0hBU0g6CisrICAgIGNhc2UgU0hUX01JUFNfWEhBU0g6CisgICAgIGNhc2UgU0hUX0RZTlNZTToKKyAgICAgY2FzZSBTSFRfUkVMOgorICAgICBjYXNlIFNIVF9SRUxBOgorQEAgLTU1OCw2ICs1NjAsNyBAQCBmaW5kX3JlYWRvbmx5X3NwYWNlIChEU08gKmRzbywgR0VsZl9TaGRyCisgCQkgICAgeworIAkJICAgIGNhc2UgU0hUX0hBU0g6CisgCQkgICAgY2FzZSBTSFRfR05VX0hBU0g6CisrCQkgICAgY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAJCSAgICBjYXNlIFNIVF9EWU5TWU06CisgCQkgICAgY2FzZSBTSFRfU1RSVEFCOgorIAkJICAgIGNhc2UgU0hUX0dOVV92ZXJkZWY6CistLS0gYS9zcmMvZXhlYy5jCisrKysgYi9zcmMvZXhlYy5jCitAQCAtNjUsNyArNjUsMTEgQEAgdXBkYXRlX2R5bmFtaWNfdGFncyAoRFNPICpkc28sIEdFbGZfU2hkcgorIAkgIHx8IChkeW5hbWljX2luZm9faXNfc2V0IChkc28sIERUX0dOVV9IQVNIX0JJVCkKKyAJICAgICAgJiYgZHNvLT5pbmZvX0RUX0dOVV9IQVNIID09IG9sZF9zaGRyW2pdLnNoX2FkZHIKKyAJICAgICAgJiYgb2xkX3NoZHJbal0uc2hfdHlwZSA9PSBTSFRfR05VX0hBU0gKKy0JICAgICAgJiYgc2V0X2R5bmFtaWMgKGRzbywgRFRfR05VX0hBU0gsIHNoZHJbaV0uc2hfYWRkciwgMSkpKQorKwkgICAgICAmJiBzZXRfZHluYW1pYyAoZHNvLCBEVF9HTlVfSEFTSCwgc2hkcltpXS5zaF9hZGRyLCAxKSkKKysJICB8fCAoZHluYW1pY19pbmZvX2lzX3NldCAoZHNvLCBEVF9HTlVfSEFTSF9CSVQpCisrCSAgICAgICYmIGRzby0+aW5mb19EVF9HTlVfSEFTSCA9PSBvbGRfc2hkcltqXS5zaF9hZGRyCisrCSAgICAgICYmIG9sZF9zaGRyW2pdLnNoX3R5cGUgPT0gU0hUX01JUFNfWEhBU0gKKysJICAgICAgJiYgc2V0X2R5bmFtaWMgKGRzbywgRFRfTUlQU19YSEFTSCwgc2hkcltpXS5zaF9hZGRyLCAxKSkpCisgCXJldHVybiAxOworICAgICB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2ODgyNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAyMTM2OTY5ZTNlMTk2YjljZjdmNDc4ODM0MGVmYTRiMWQ5YjM5NTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDExIE9jdCAyMDE4IDEwOjA1OjUyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNyYy9hcmNoLW1pcHMuYzogY2hlY2sgaW5mby0+cmVzb2x2ZXRscyBiZWZvcmUgdXNlIGl0cyBtZW1iZXIKLQotVGhlIGluZm8tPnJlc29sdmV0bHMgbWlnaHQgYmUgTlVMTCBhY2NvcmRpbmcgdG8gc3JjL3ByZWxpbmsuYzoKLVtzbmlwXQotIC8qIER5bmFtaWMgbGlua2VyIGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeSwKLSAgICBhbGwgc3ltYm9scyByZXNvbHZlIHRvIHRoZW1zZWx2ZXMgd2l0aCB0aGUgZXhjZXB0aW9uCi0gICAgb2YgU0hOX1VOREVGIHN5bWJvbHMgd2hpY2ggcmVzb2x2ZSB0byAwLiAgKi8KLWlmIChpbmZvLT5zeW10YWJbcl9zeW1dLnN0X3NobmR4ID09IFNITl9VTkRFRikKLSAgewotICAgIGluZm8tPnJlc29sdmVlbnQgPSBOVUxMOwotICAgIGluZm8tPnJlc29sdmV0bHMgPSBOVUxMOwotW3NuaXBdCi0KLVNvIHdlIG11c3QgY2hlY2sgaXQgYmVmb3JlIHVzZSBpdHMgbWVtYmVycywgb3RoZXJ3aXNlLCB0aGVyZSBtaWdodCBiZQotU2VnbWVudGF0aW9uIGZhdWx0IGVycm9yLgotCi1GaXhlZDoKLU1BQ0hJTkUgPSAicWVtdW1pcHMiCi1JTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgcWVtdSIKLSQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwKLVtzbmlwXQotfCAvcGF0aC90by9xZW11bWlwcy1wb2t5LWxpbnV4L2NvcmUtaW1hZ2UtbWluaW1hbC8xLjAtcjAvdGVtcC9ydW4ucHJlbGlua19pbWFnZS4xMDAwOiBsaW5lIDExMTogIDEwMTAgU2VnbWVudGF0aW9uIGZhdWx0ICAgICAgKGNvcmUgZHVtcGVkKQotW3NuaXBdCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvcGlwZXJtYWlsL3lvY3RvLzIwMTgtT2N0b2Jlci8wNDI4MTIuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYXJjaC1taXBzLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hcmNoLW1pcHMuYyBiL3NyYy9hcmNoLW1pcHMuYwotaW5kZXggY2NiMTgzNC4uMDJjNjA4ZiAxMDA2NDQKLS0tLSBhL3NyYy9hcmNoLW1pcHMuYwotKysrIGIvc3JjL2FyY2gtbWlwcy5jCi1AQCAtNTY3LDcgKzU2Nyw4IEBAIG1pcHNfcHJlbGlua19yZWxvYyAoc3RydWN0IHByZWxpbmtfaW5mbyAqaW5mbywgR0VsZl9BZGRyIHJfb2Zmc2V0LAotICAgICAgIGlmIChkc28tPmVoZHIuZV90eXBlID09IEVUX0VYRUMpCi0gCXsKLSAJICB2YWx1ZSA9IGluZm8tPnJlc29sdmUgKGluZm8sIHJfc3ltLCByX3R5cGUpOwotLQkgIHZhbHVlICs9IGluZm8tPnJlc29sdmV0bHMtPm9mZnNldCAtIFRMU19UUF9PRkZTRVQ7Ci0rCSAgaWYgKGluZm8tPnJlc29sdmV0bHMgIT0gTlVMTCkKLSsJICAgIHZhbHVlICs9IGluZm8tPnJlc29sdmV0bHMtPm9mZnNldCAtIFRMU19UUF9PRkZTRVQ7Ci0gCSAgaWYgKHJfdHlwZSA9PSBSX01JUFNfVExTX1RQUkVMMzIpCi0gCSAgICBtaXBzX3ByZWxpbmtfMzJiaXRfcmVsb2MgKGRzbywgcmVsYSwgdmFsdWUpOwotIAkgIGVsc2UKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKaW5kZXggZjA5NDZkZS4uZTE5N2FmOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCkBAIC05LDcgKzksNyBAQAogcnVudGltZSBhbmQgdGh1cyBwcm9ncmFtcyBjb21lIHVwIGZhc3Rlci4iCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1TUkNSRVYgPSAiYTg1M2E1ZDcxNWQ4NGVlYzkzYWE2OGU4ZjJkZjI2YjdkODYwZjViMiIKK1NSQ1JFViA9ICJmOTk3NTUzN2RiZmQ5YWRlMGZjODEzYmQ1Y2Y1ZmNiZTQxNzUzYTM3IgogUFYgPSAiMS4wK2dpdCR7U1JDUFZ9IgogCiAjCkBAIC0yOCwxMiArMjgsMTIgQEAKIFBBQ0tBR0VTID0rICIke1BOfS1jcm9uIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3ByZWxpbmstY3Jvc3MuZ2l0O2JyYW5jaD1jcm9zc19wcmVsaW5rX3N0YWdpbmcgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtTUlQUy1nbnUtaGFzaC1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNyb24uZGFpbHkgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5kZWZhdWx0IFwKICAgICAgICAgICAgZmlsZTovL21hY3Jvcy5wcmVsaW5rIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaCBcCi0iCisgICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogIyBlcnJvcjogZXJyb3IuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXBzZXVkby1Pbi1hLURCLWZpeHVwLXJlbW92ZS1maWxlcy10aGF0LWRvLW5vdC1leGlzdC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0OWUzMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXBzZXVkby1Pbi1hLURCLWZpeHVwLXJlbW92ZS1maWxlcy10aGF0LWRvLW5vdC1leGlzdC0ucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBiMDkwMmUzNjEwOGI0OWU2YmM4OGQ2YjI1MWNjMmY4Y2ZmY2Q1YTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvQHJpYmFsZGEuY29tPgorRGF0ZTogU3VuLCA1IEFwciAyMDIwIDExOjQwOjMwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBzZXVkbzogT24gYSBEQiBmaXh1cCByZW1vdmUgZmlsZXMgdGhhdCBkbyBub3QgZXhpc3QgYW55bW9yZQorCitJZiB0aGUgdXNlciBkZWNpZGVzIHRvIGZpeCBhIGRhdGFiYXNlLCByZW1vdmUgdGhlIGZpbGVzIHRoYXQgZG8gbm90CitleGlzdCBhbnltb3JlLgorSWYgb25seSBEQiB0ZXN0IGlzIHNlbGVjdGVkIGRvIG5vdCBjaGFuZ2UgdGhlIGJlaGF2aW91ciAocmV0dXJuIGVycm9yKS4KKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvQHJpYmFsZGEuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9nL29wZW5lbWJlZGRlZC1jb3JlL21lc3NhZ2UvMTM3MDQ1XQorLS0tCisgcHNldWRvLmMgfCAxMyArKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wc2V1ZG8uYyBiL3BzZXVkby5jCitpbmRleCAwZjU4NTBlLi45OGU1YjBjIDEwMDY0NAorLS0tIGEvcHNldWRvLmMKKysrKyBiL3BzZXVkby5jCitAQCAtMTA4Nyw5ICsxMDg3LDE1IEBAIHBzZXVkb19kYl9jaGVjayhpbnQgZml4KSB7CisgCQkJaW50IGZpeHVwX25lZWRlZCA9IDA7CisgCQkJcHNldWRvX2RlYnVnKFBEQkdGX0RCLCAiQ2hlY2tpbmcgPCVzPlxuIiwgbS0+cGF0aCk7CisgCQkJaWYgKGxzdGF0KG0tPnBhdGgsICZidWYpKSB7CistCQkJCWVycm9ycyA9IEVYSVRfRkFJTFVSRTsKKy0JCQkJcHNldWRvX2RpYWcoImNhbid0IHN0YXQgPCVzPlxuIiwgbS0+cGF0aCk7CistCQkJCWNvbnRpbnVlOworKwkJCQlpZiAoIWZpeCkgeworKwkJCQkJcHNldWRvX2RpYWcoImNhbid0IHN0YXQgPCVzPlxuIiwgbS0+cGF0aCk7CisrCQkJCQllcnJvcnMgPSBFWElUX0ZBSUxVUkU7CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9EQiwgImNhbid0IHN0YXQgPCVzPlxuIiwgbS0+cGF0aCk7CisrCQkJCQlmaXh1cF9uZWVkZWQgPSAyOworKwkJCQkJZ290byBkb19maXh1cDsKKysJCQkJfQorIAkJCX0KKyAJCQkvKiBjYW4ndCBjaGVjayBmb3IgZGV2aWNlIHR5cGUgbWlzbWF0Y2hlcywgdWlkL2dpZCwgb3IKKyAJCQkgKiBwZXJtaXNzaW9ucywgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIHZlcnkgdGhpbmdzIHdlCitAQCAtMTEyNSw2ICsxMTMxLDcgQEAgcHNldWRvX2RiX2NoZWNrKGludCBmaXgpIHsKKyAJCQkJCVNfSVNESVIobS0+bW9kZSkpOworIAkJCQlmaXh1cF9uZWVkZWQgPSAyOworIAkJCX0KKysJCQlkb19maXh1cDoKKyAJCQlpZiAoZml4dXBfbmVlZGVkKSB7CisgCQkJCS8qIGluIGZpeHVwIG1vZGUsIGVpdGhlciBkZWxldGUgKG1pc21hdGNoZXMpIG9yCisgCQkJCSAqIGNvcnJlY3QgKGRldi9pbm8pLgorLS0gCisyLjIxLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXJlYWxwYXRoLmMtUmVtb3ZlLXRyYWlsaW5nLXNsYXNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc4MjllZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXJlYWxwYXRoLmMtUmVtb3ZlLXRyYWlsaW5nLXNsYXNoZXMucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA4NmM5YTU2MTBlMzMzM2FkNmFhYWRiMWFjMWU4YjVhMmM5NDhkMTE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI1IE5vdiAyMDE5IDE4OjQ2OjQ1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlYWxwYXRoLmM6IFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzCisKK0xpbnV4IHN5c3RlbSdzIHJlYWxwYXRoKCkgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMsIGJ1dCBwc2V1ZG8ncyBkb2Vzbid0LCBuZWVkCittYWtlIHRoZW0gaWRlbnRpY2FsLgorCitFLmcuLCB0aGUgZm9sbG93aW5nIGNvZGUgKHJlbC5jKSBwcmludHMgJy90bXAnIHdpdGggc3lzdGVtJ3MgcmVhbHBhdGgsIGJ1dAorcHNldWRvJ3MgcmVhbHBhdGggcHJpbnRzICcvdG1wLyc6CisKKyAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAjaW5jbHVkZSA8bGltaXRzLmg+CisgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICAgIGNoYXIgb3V0W1BBVEhfTUFYXTsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwgcmVhbHBhdGgoIi90bXAvIiwgb3V0KSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworJCBiaXRiYWtlIGJhc2UtcGFzc3dkIC1jZGV2c2hlbGwgIyBGb3IgcHNldWRvIGVudgorJCBnY2MgcmVsLmMKKyQgLi9hLm91dAorL3RtcC8gKGJ1dCBzaG91bGQgYmUgL3RtcCkKKworVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9nL3Bva3kvbWVzc2FnZS8xMTg3OV0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBwb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYyB8ICAgIDkgKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMgYi9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYworLS0tIGEvcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMKKysrKyBiL3BvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jCitAQCAtMTQsNyArMTQsMTQgQEAKKyAJCWVycm5vID0gRU5BTUVUT09MT05HOworIAkJcmV0dXJuIE5VTEw7CisgCX0KKy0JaWYgKChsZW4gPSBzdHJsZW4ocm5hbWUpKSA+PSBwc2V1ZG9fc3lzX3BhdGhfbWF4KCkpIHsKKysJCWxlbiA9IHN0cmxlbihybmFtZSk7CisrCQljaGFyICplcCA9IHJuYW1lICsgbGVuIC0gMTsKKysJCXdoaWxlIChlcCA+IHJuYW1lICYmICplcCA9PSAnLycpIHsKKysJCQktLWxlbjsKKysJCQkqKGVwLS0pID0gJ1wwJzsKKysJCX0KKysKKysJCWlmIChsZW4gPj0gcHNldWRvX3N5c19wYXRoX21heCgpKSB7CisgCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKKyAJCXJldHVybiBOVUxMOworIAl9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDA2LXhhdHRyLWFkanVzdC1mb3ItYXR0ci0yLjQuNDgtcmVsZWFzZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDA2LXhhdHRyLWFkanVzdC1mb3ItYXR0ci0yLjQuNDgtcmVsZWFzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjEzNTdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gOTNkOTVlZDJlYWVkY2NhMTEwYzIxNGUxZmUzZjg4OTZiMWY2Zjg1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNyBEZWMgMjAxOSAyMDoyNDoyNyArMDEwMAorU3ViamVjdDogW1BBVENIXSB4YXR0cjogYWRqdXN0IGZvciBhdHRyIDIuNC40OCByZWxlYXNlCisKK0xhdGVzdCB2ZXJzaW9ucyBvZiBhdHRyIGhhdmUgcmVtb3ZlZCB0aGUgeGF0dHIuaCBoZWFkZXIsCit3aXRoIHRoZSByYXRpb25hbGUgdGhhdCBsaWJjIGlzIHByb3ZpZGluZyB0aGUgc2FtZSB3cmFwcGVycy4KKworYXR0ci9hdHRyaWJ1dGVzLmggaXMgcHJvdmlkaW5nIHRoZSBFTk9BVFRSIGRlZmluaXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBwb3J0cy9saW51eC9zdWJwb3J0cyAgICAgICAgIHwgNSArKystLQorIHBvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmggfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcG9ydHMvbGludXgvc3VicG9ydHMgYi9wb3J0cy9saW51eC9zdWJwb3J0cworaW5kZXggMmM0M2FjOS4uNzQwZWM4MyAxMDA3NTUKKy0tLSBhL3BvcnRzL2xpbnV4L3N1YnBvcnRzCisrKysgYi9wb3J0cy9saW51eC9zdWJwb3J0cworQEAgLTI5LDExICsyOSwxMiBAQCBmaQorIGlmCSRwb3J0X3hhdHRyOyB0aGVuCisgCWNhdCA+IGR1bW15LmMgPDxFT0YKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKysjaW5jbHVkZSA8c3lzL3hhdHRyLmg+CisrI2luY2x1ZGUgPGF0dHIvYXR0cmlidXRlcy5oPgorIGludCBpOworIEVPRgorIAlpZiAhICR7Q0N9IC1jIC1vIGR1bW15Lm8gZHVtbXkuYyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0JCWVjaG8gPiYyICJXYXJuaW5nOiBDYW4ndCBjb21waWxlIHRyaXZpYWwgcHJvZ3JhbSB1c2luZyA8YXR0ci94YXR0ci5oPiIuCisrCQllY2hvID4mMiAiV2FybmluZzogQ2FuJ3QgY29tcGlsZSB0cml2aWFsIHByb2dyYW0gdXNpbmcgPGF0dHIvYXR0cmlidXRlcy5oPiIuCisgCQllY2hvID4mMiAiICAgICAgICAgeGF0dHIgc3VwcG9ydCB3aWxsIHJlcXVpcmUgdGhhdCBoZWFkZXIuIgorIAlmaQorIAllY2hvICJsaW51eC94YXR0ciIKK2RpZmYgLS1naXQgYS9wb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oIGIvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaAoraW5kZXggNTZjZDNjYS4uMDY4ZDM5YSAxMDA2NDQKKy0tLSBhL3BvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmgKKysrKyBiL3BvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmgKK0BAIC0yLDUgKzIsNiBAQAorICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vbmx5CisgICoKKyAgKi8KKy0jaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorKyNpbmNsdWRlIDxzeXMveGF0dHIuaD4KKysjaW5jbHVkZSA8YXR0ci9hdHRyaWJ1dGVzLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3NlY2NvbXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvc2VjY29tcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODNmOTk3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3NlY2NvbXAucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK1BzZXVkbyBjaGFuZ2VzIHRoZSBzeXNjYWxsIGFjY2VzcyBwYXR0ZXJucyB3aGljaCBtYWtlcyBpdCBpbmNvbXBhdGlibGUgd2l0aAorc2VjY29tcC4gVGhlcmVmb3JlIGludGVyY2VwdCB0aGUgc2VjY29tcCBzeXNjYWxsIGFuZCBhbHRlciBpdCwgcHJldGVuZGluZyB0aGF0CitzZWNjb21wIHdhcyBzZXR1cCB3aGVuIGluIGZhY3Qgd2UgZG8gbm90aGluZy4gSWYgd2UgZXJyb3IgYXMgdW5zdXBwb3J0ZWQsIAordXRpbGl0aWVzIGxpa2UgZmlsZSB3aWxsIGV4aXQgd2l0aCBlcnJvcnMgc28gd2UgY2FuJ3QganVzdCBkaXNhYmxlIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMjAvNC8zCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSXQgZmFpbHMgdG8gY29tcGlsZSBwc2V1ZG8tbmF0aXZlIG9uIGNlbnRvcyA3OgorCit8IHBvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jOiBJbiBmdW5jdGlvbiDigJhwcmN0bOKAmToKK3wgcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmM6MTI5OjE0OiBlcnJvcjog4oCYU0VDQ09NUF9TRVRfTU9ERV9GSUxURVLigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCit8ICAgIGlmIChjbWQgPT0gU0VDQ09NUF9TRVRfTU9ERV9GSUxURVIpIHsKK3wgICAgICAgICAgICAgICBeCisKK0FkZCBtYWNybyBndWFyZCBmb3Igc2VjY29tcCB0byBhdm9pZCB0aGUgZmFpbHVyZS4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBnaXQvcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYworKysrIGdpdC9wb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYworQEAgLTU3LDYgKzU3LDcgQEAgaW50IHBzZXVkb19jYXBzZXQoY2FwX3VzZXJfaGVhZGVyX3QgaGRycAorIGxvbmcKKyBzeXNjYWxsKGxvbmcgbnVtYmVyLCAuLi4pIHsKKyAJbG9uZyByYyA9IC0xOworKwl2YV9saXN0IGFwOworIAorIAlpZiAoIXBzZXVkb19jaGVja193cmFwcGVycygpIHx8ICFyZWFsX3N5c2NhbGwpIHsKKyAJCS8qIHJjIHdhcyBpbml0aWFsaXplZCB0byB0aGUgImZhaWx1cmUiIHZhbHVlICovCitAQCAtNzcsNiArNzgsMjAgQEAgc3lzY2FsbChsb25nIG51bWJlciwgLi4uKSB7CisgCSh2b2lkKSBudW1iZXI7CisgI2VuZGlmCisgCisrI2lmZGVmIFNZU19zZWNjb21wCisrCS8qIHBzZXVkbyBhbmQgc2VjY29tcCBhcmUgaW5jb21wYXRpYmxlIGFzIHBzZXVkbyB1c2VzIGRpZmZlcmVudCBzeXNjYWxscworKwkgKiBzbyBwcmV0ZW5kIHRvIGVuYWJsZSBzZWNjb21wIGJ1dCByZWFsbHkgZG8gbm90aGluZyAqLworKwlpZiAobnVtYmVyID09IFNZU19zZWNjb21wKSB7CisrCQl1bnNpZ25lZCBsb25nIGNtZDsKKysJCXZhX3N0YXJ0KGFwLCBudW1iZXIpOworKwkJY21kID0gdmFfYXJnKGFwLCB1bnNpZ25lZCBsb25nKTsKKysJCXZhX2VuZChhcCk7CisrCQlpZiAoY21kID09IFNFQ0NPTVBfU0VUX01PREVfRklMVEVSKSB7CisrCQkgICAgcmV0dXJuIDA7CisrCQl9CisrCX0KKysjZW5kaWYKKysKKyAJLyogZ2NjIG1hZ2ljIHRvIGF0dGVtcHQgdG8ganVzdCBwYXNzIHRoZXNlIGFyZ3MgdG8gc3lzY2FsbC4gd2UgaGF2ZSB0bworIAkgKiBndWVzcyBhYm91dCB0aGUgbnVtYmVyIG9mIGFyZ3M7IHRoZSBkb2NzIGRpc2N1c3MgY2FsbGluZyBjb252ZW50aW9ucworIAkgKiB1cCB0byA3LCBzbyBsZXQncyB0cnkgdGhhdD8KK0BAIC05MiwzICsxMDgsNDQgQEAgc3RhdGljIGxvbmcgd3JhcF9zeXNjYWxsKGxvbmcgbnIsIHZhX2xpcworIAkodm9pZCkgYXA7CisgCXJldHVybiAtMTsKKyB9CisrCisraW50CisrcHJjdGwoaW50IG9wdGlvbiwgLi4uKSB7CisrCWludCByYyA9IC0xOworKwl2YV9saXN0IGFwOworKworKwlpZiAoIXBzZXVkb19jaGVja193cmFwcGVycygpIHx8ICFyZWFsX3ByY3RsKSB7CisrCQkvKiByYyB3YXMgaW5pdGlhbGl6ZWQgdG8gdGhlICJmYWlsdXJlIiB2YWx1ZSAqLworKwkJcHNldWRvX2Vub3N5cygicHJjdGwiKTsKKysJCXJldHVybiByYzsKKysJfQorKworKyNpZmRlZiBTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUgorKwkvKiBwc2V1ZG8gYW5kIHNlY2NvbXAgYXJlIGluY29tcGF0aWJsZSBhcyBwc2V1ZG8gdXNlcyBkaWZmZXJlbnQgc3lzY2FsbHMKKysJICogc28gcHJldGVuZCB0byBlbmFibGUgc2VjY29tcCBidXQgcmVhbGx5IGRvIG5vdGhpbmcgKi8KKysJaWYgKG9wdGlvbiA9PSBQUl9TRVRfU0VDQ09NUCkgeworKwkJdW5zaWduZWQgbG9uZyBjbWQ7CisrCQl2YV9zdGFydChhcCwgb3B0aW9uKTsKKysJCWNtZCA9IHZhX2FyZyhhcCwgdW5zaWduZWQgbG9uZyk7CisrCQl2YV9lbmQoYXApOworKwkJaWYgKGNtZCA9PSBTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUikgeworKwkJICAgIHJldHVybiAwOworKwkJfQorKwl9CisrI2VuZGlmCisrCisrCS8qIGdjYyBtYWdpYyB0byBhdHRlbXB0IHRvIGp1c3QgcGFzcyB0aGVzZSBhcmdzIHRvIHByY3RsLiB3ZSBoYXZlIHRvCisrCSAqIGd1ZXNzIGFib3V0IHRoZSBudW1iZXIgb2YgYXJnczsgdGhlIGRvY3MgZGlzY3VzcyBjYWxsaW5nIGNvbnZlbnRpb25zCisrCSAqIHVwIHRvIDUsIHNvIGxldCdzIHRyeSB0aGF0PworKwkgKi8KKysJdm9pZCAqcmVzID0gX19idWlsdGluX2FwcGx5KCh2b2lkICgqKSgpKSByZWFsX3ByY3RsLCBfX2J1aWx0aW5fYXBwbHlfYXJncygpLCBzaXplb2YobG9uZykgKiA1KTsKKysJX19idWlsdGluX3JldHVybihyZXMpOworK30KKysKKysvKiB1bnVzZWQuCisrICovCisrc3RhdGljIGludCB3cmFwX3ByY3RsKGludCBvcHRpb24sIHZhX2xpc3QgYXApIHsKKysJKHZvaWQpIG9wdGlvbjsKKysJKHZvaWQpIGFwOworKwlyZXR1cm4gLTE7CisrfQorSW5kZXg6IGdpdC9wb3J0cy9saW51eC9ndXRzL3ByY3RsLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBnaXQvcG9ydHMvbGludXgvZ3V0cy9wcmN0bC5jCitAQCAtMCwwICsxLDE1IEBACisrLyoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMjAgUmljaGFyZCBQdXJkaWUKKysgKgorKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMS1vbmx5CisrICoKKysgKiBpbnQgcHJjdGwoaW50IG9wdGlvbiwgLi4uKQorKyAqCWludCByYyA9IC0xOworKyAqLworKworKwkvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHByY3RsIGlzIGhhbmQtd3JhcHBlZCAqLworKwlyYyA9IC0xOworKworKy8qCXJldHVybiByYzsKKysgKiB9CisrICovCitJbmRleDogZ2l0L3BvcnRzL2xpbnV4L3BvcnRkZWZzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3J0cy9saW51eC9wb3J0ZGVmcy5oCisrKysgZ2l0L3BvcnRzL2xpbnV4L3BvcnRkZWZzLmgKK0BAIC0zMiwzICszMiw1IEBAIEdMSUJDX0NPTVBBVF9TWU1CT0wobWVtY3B5LDIuMCk7CisgCisgI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisrI2luY2x1ZGUgPGxpbnV4L3NlY2NvbXAuaD4KK0luZGV4OiBnaXQvcG9ydHMvbGludXgvd3JhcGZ1bmNzLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcG9ydHMvbGludXgvd3JhcGZ1bmNzLmluCisrKysgZ2l0L3BvcnRzL2xpbnV4L3dyYXBmdW5jcy5pbgorQEAgLTU2LDMgKzU2LDQgQEAgaW50IGdldGdyZW50X3Ioc3RydWN0IGdyb3VwICpnYnVmLCBjaGFyCisgaW50IGNhcHNldChjYXBfdXNlcl9oZWFkZXJfdCBoZHJwLCBjb25zdCBjYXBfdXNlcl9kYXRhX3QgZGF0YXApOyAvKiByZWFsX2Z1bmM9cHNldWRvX2NhcHNldCAqLworIGxvbmcgc3lzY2FsbChsb25nIG5yLCAuLi4pOyAvKiBoYW5kX3dyYXBwZWQ9MSAqLworIGludCByZW5hbWVhdDIoaW50IG9sZGRpcmZkLCBjb25zdCBjaGFyICpvbGRwYXRoLCBpbnQgbmV3ZGlyZmQsIGNvbnN0IGNoYXIgKm5ld3BhdGgsIHVuc2lnbmVkIGludCBmbGFncyk7IC8qIGZsYWdzPUFUX1NZTUxJTktfTk9GT0xMT1cgKi8KKytpbnQgcHJjdGwoaW50IG9wdGlvbiwgLi4uKTsgLyogaGFuZF93cmFwcGVkPTEgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKaW5kZXggN2ZmOGU0NC4uNTBlMzAwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMKQEAgLTE2LDYgKzE2LDcgQEAKIFBST1ZJREVTICs9ICJ2aXJ0dWFsL2Zha2Vyb290IgogCiBNQUtFT1BUUyA9ICIiCitNQUtFT1BUU19jbGFzcy1uYXRpdmUgPSAiJ1JQQVRIPS1XbCwtLXJwYXRoPVhPUklHSU4vLi4vLi4vLi4vc3FsaXRlMy1uYXRpdmUvdXNyL2xpYi8nIgogCiBpbmhlcml0IHNpdGVpbmZvIHBrZ2NvbmZpZwogCkBAIC0xMTUsNiArMTE2LDcgQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwljaHJwYXRoICR7RH0ke2JpbmRpcn0vcHNldWRvIC1yIGBjaHJwYXRoICR7RH0ke2JpbmRpcn0vcHNldWRvIHwgY3V0IC1kID0gLWYgMiB8IHNlZCBzL1hPUklHSU4vXFwkT1JJR0lOL2AKIAlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CiAJIyBUaGUgZmFsbGJhY2sgZmlsZXMgc2hvdWxkIG5ldmVyIGJlIG1vZGlmaWVkCiAJaW5zdGFsbCAtbSA0NDQgJHtXT1JLRElSfS9mYWxsYmFjay1wYXNzd2QgJHtEfSR7c3lzY29uZmRpcn0vcGFzc3dkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCmluZGV4IDFmMmRmNGEuLmEzMDQ5YzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCkBAIC04LDYgKzgsMTAgQEAKICAgICAgICAgICAgZmlsZTovL3Rvb21hbnlmaWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2V0YWJsZXMtd3JhcHBlcnMtdXNlLVB5dGhvbi0zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN0YXR4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXhhdHRyLWFkanVzdC1mb3ItYXR0ci0yLjQuNDgtcmVsZWFzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZWNjb21wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDUkVWID0gIjA2MDA1OGJiMjlmNzBiMjQ0ZTY4NWIzYzcwNGViMDY0MWI3MzZmNzMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1jb252ZXJ0LXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MTYyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1jb252ZXJ0LXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDU1NSBAQAorRnJvbSAwMDg0OGQ3NjBmYTM5OTllMmJlZDc1OWI1ODU0NTJiMzVkNjVkNmVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNSBNYXIgMjAyMCAxMjowMjozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb252ZXJ0IHNoZWJhbmcgZnJvbSBweXRob24gdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2NvbW1pdC81ODM5MDFhMDc0ZGM2NTE0NWQzZDYxMzZiYTdkY2QwMjYzNGQ2ODBiXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBkb2MvRElTVFVUSUxTLnJzdC50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGRvYy9wb3N0cHJvY2Vzcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBkb2Mvc3VtbWFyaXplLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L19faW5pdF9fLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9hdXhmdW5jcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY2FwaV9tYXBzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NiX3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jZnVuY3MucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9kaWFnbm9zZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvZjJweTJlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9mdW5jMnN1YnIucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS91c2VfcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5ICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5ICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbWEvYmVuY2gucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L21hL3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9tYXRyaXhsaWIvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eCAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZ19kaXN0cmlidXRpb25zLnB5eCB8IDIgKy0KKyBudW1weS9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L3Rlc3Rpbmcvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBydW50ZXN0cy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9jaGFuZ2Vsb2cucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9yZWZndWlkZV9jaGVjay5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RGbGF0LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weSAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgNDkgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kb2MvRElTVFVUSUxTLnJzdC50eHQgYi9kb2MvRElTVFVUSUxTLnJzdC50eHQKK2luZGV4IGJjZWY4MjUuLmJjMTcwMGYgMTAwNjQ0CistLS0gYS9kb2MvRElTVFVUSUxTLnJzdC50eHQKKysrKyBiL2RvYy9ESVNUVVRJTFMucnN0LnR4dAorQEAgLTU5LDcgKzU5LDcgQEAgU2NpUHkgcHVyZSBQeXRob24gcGFja2FnZSBleGFtcGxlCisgCisgQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBhIG1pbmltYWwgYGBzZXR1cC5weWBgIGZpbGUgZm9yIGEgcHVyZSBTY2lQeSBwYWNrYWdlOjoKKyAKKy0gICMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICAgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsdG9wX3BhdGg9Tm9uZSk6CisgICAgICAgZnJvbSBudW1weS5kaXN0dXRpbHMubWlzY191dGlsIGltcG9ydCBDb25maWd1cmF0aW9uCisgICAgICAgY29uZmlnID0gQ29uZmlndXJhdGlvbignbXlwYWNrYWdlJyxwYXJlbnRfcGFja2FnZSx0b3BfcGF0aCkKK2RpZmYgLS1naXQgYS9kb2MvY2RvYy9udW1weWZpbHRlci5weSBiL2RvYy9jZG9jL251bXB5ZmlsdGVyLnB5CitpbmRleCAwZWM1MDY5Li4wNjdiZDM2IDEwMDc1NQorLS0tIGEvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkKKysrKyBiL2RvYy9jZG9jL251bXB5ZmlsdGVyLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgbnVtcHlmaWx0ZXIucHkgSU5QVVRGSUxFCisgCitkaWZmIC0tZ2l0IGEvZG9jL3Bvc3Rwcm9jZXNzLnB5IGIvZG9jL3Bvc3Rwcm9jZXNzLnB5CitpbmRleCAyZTUwYzExLi4xYmU2ZjM5IDEwMDc1NQorLS0tIGEvZG9jL3Bvc3Rwcm9jZXNzLnB5CisrKysgYi9kb2MvcG9zdHByb2Nlc3MucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAlcHJvZyBNT0RFIEZJTEVTLi4uCisgCitkaWZmIC0tZ2l0IGEvZG9jL3N1bW1hcml6ZS5weSBiL2RvYy9zdW1tYXJpemUucHkKK2luZGV4IGNmY2UyNzEuLjU2M2FmMDIgMTAwNzU1CistLS0gYS9kb2Mvc3VtbWFyaXplLnB5CisrKysgYi9kb2Mvc3VtbWFyaXplLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgc3VtbWFyaXplLnB5CisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkgYi9udW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weQoraW5kZXggM2JjYjdiOC4uODg0MzJjOCAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIHRha2VzIHRlbXBsYXRlZCBmaWxlIC54eHguc3JjIGFuZCBwcm9kdWNlcyAueHh4IGZpbGUgIHdoZXJlIC54eHggaXMKKyAuaSBvciAuYyBvciAuaCwgdXNpbmcgdGhlIGZvbGxvd2luZyB0ZW1wbGF0ZSBydWxlcworZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5IGIvbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkKK2luZGV4IGJjOTcyODMuLjg3NTAyYTkgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBjcHVpbmZvCisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkgYi9udW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weQoraW5kZXggYzVjMTE2My4uYWY3NTk3MSAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIHByb2Nlc3NfZmlsZShmaWxlbmFtZSkKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc2V0dXAucHkgYi9udW1weS9kaXN0dXRpbHMvc2V0dXAucHkKK2luZGV4IDgyYTUzYmQuLjY0NjkyMWIgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvc2V0dXAucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsdG9wX3BhdGg9Tm9uZSk6CitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5IGIvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CitpbmRleCA0ZjM0MGI2Li4xODkwODFkIDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBUaGlzIGZpbGUgZGVmaW5lcyBhIHNldCBvZiBzeXN0ZW1faW5mbyBjbGFzc2VzIGZvciBnZXR0aW5nCisgaW5mb3JtYXRpb24gYWJvdXQgdmFyaW91cyByZXNvdXJjZXMgKGxpYnJhcmllcywgbGlicmFyeSBkaXJlY3RvcmllcywKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L19faW5pdF9fLnB5IGIvbnVtcHkvZjJweS9fX2luaXRfXy5weQoraW5kZXggNDJlMzYzMi4uMDlhMzY1NyAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvX19pbml0X18ucHkKKysrKyBiL251bXB5L2YycHkvX19pbml0X18ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiJGb3J0cmFuIHRvIFB5dGhvbiBJbnRlcmZhY2UgR2VuZXJhdG9yLgorIAorICIiIgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvYXV4ZnVuY3MucHkgYi9udW1weS9mMnB5L2F1eGZ1bmNzLnB5CitpbmRleCA0MDRiZGJkLi5kMjNkOTU5IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9hdXhmdW5jcy5weQorKysrIGIvbnVtcHkvZjJweS9hdXhmdW5jcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEF1eGlsaWFyeSBmdW5jdGlvbnMgZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NhcGlfbWFwcy5weSBiL251bXB5L2YycHkvY2FwaV9tYXBzLnB5CitpbmRleCBjZTc5ZjY4Li5lNWQzZmQyIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9jYXBpX21hcHMucHkKKysrKyBiL251bXB5L2YycHkvY2FwaV9tYXBzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQ29weXJpZ2h0IDE5OTksMjAwMCBQZWFydSBQZXRlcnNvbiBhbGwgcmlnaHRzIHJlc2VydmVkLAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY2JfcnVsZXMucHkgYi9udW1weS9mMnB5L2NiX3J1bGVzLnB5CitpbmRleCAxODNkN2MyLi45M2U5M2ZlIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9jYl9ydWxlcy5weQorKysrIGIvbnVtcHkvZjJweS9jYl9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkIGNhbGwtYmFjayBtZWNoYW5pc20gZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NmdW5jcy5weSBiL251bXB5L2YycHkvY2Z1bmNzLnB5CitpbmRleCBjY2I3YjNhLi5jZGI3ODNkIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9jZnVuY3MucHkKKysrKyBiL251bXB5L2YycHkvY2Z1bmNzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQyBkZWNsYXJhdGlvbnMsIENQUCBtYWNyb3MsIGFuZCBDIGZ1bmN0aW9ucyBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5IGIvbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkKK2luZGV4IGY2MWQ4ODEuLmZlNTEwYmYgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weQorKysrIGIvbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBCdWlsZCBjb21tb24gYmxvY2sgbWVjaGFuaXNtIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkgYi9udW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weQoraW5kZXggMmFhZjVkNy4uZmI1ZWYyZiAxMDA3NTUKKy0tLSBhL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5CisrKysgYi9udW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIGNyYWNrZm9ydHJhbiAtLS0gcmVhZCBmb3J0cmFuICg3Nyw5MCkgY29kZSBhbmQgZXh0cmFjdCBkZWNsYXJhdGlvbiBpbmZvcm1hdGlvbi4KKyAKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2RpYWdub3NlLnB5IGIvbnVtcHkvZjJweS9kaWFnbm9zZS5weQoraW5kZXggMDI0MWZlZC4uNmMwMzA0YyAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvZGlhZ25vc2UucHkKKysrKyBiL251bXB5L2YycHkvZGlhZ25vc2UucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgaW1wb3J0IG9zCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9mMnB5MmUucHkgYi9udW1weS9mMnB5L2YycHkyZS5weQoraW5kZXggZDAzZWZmOS4uYzE3YmZkOSAxMDA3NTUKKy0tLSBhL251bXB5L2YycHkvZjJweTJlLnB5CisrKysgYi9udW1weS9mMnB5L2YycHkyZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIGYycHkyZSAtIEZvcnRyYW4gdG8gUHl0aG9uIEMvQVBJIGdlbmVyYXRvci4gMm5kIEVkaXRpb24uCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkgYi9udW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weQoraW5kZXggODVlYWU4MC4uNzBiZTEyOCAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkIEY5MCBtb2R1bGUgc3VwcG9ydCBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvZnVuYzJzdWJyLnB5IGIvbnVtcHkvZjJweS9mdW5jMnN1YnIucHkKK2luZGV4IDYwMTBkNWEuLmZkZWEwYzIgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2Z1bmMyc3Vici5weQorKysrIGIvbnVtcHkvZjJweS9mdW5jMnN1YnIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBSdWxlcyBmb3IgYnVpbGRpbmcgQy9BUEkgbW9kdWxlIHdpdGggZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvcnVsZXMucHkgYi9udW1weS9mMnB5L3J1bGVzLnB5CitpbmRleCBmMmY3MTNiLi5mODdiMDNjIDEwMDc1NQorLS0tIGEvbnVtcHkvZjJweS9ydWxlcy5weQorKysrIGIvbnVtcHkvZjJweS9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIFJ1bGVzIGZvciBidWlsZGluZyBDL0FQSSBtb2R1bGUgd2l0aCBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9zZXR1cC5weSBiL251bXB5L2YycHkvc2V0dXAucHkKK2luZGV4IGE4YzE0MDEuLjJlN2E1MTcgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L3NldHVwLnB5CisrKysgYi9udW1weS9mMnB5L3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgc2V0dXAucHkgZm9yIGluc3RhbGxpbmcgRjJQWQorIAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvdXNlX3J1bGVzLnB5IGIvbnVtcHkvZjJweS91c2VfcnVsZXMucHkKK2luZGV4IDZmNDRmMTYuLjgyMTRmNDIgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L3VzZV9ydWxlcy5weQorKysrIGIvbnVtcHkvZjJweS91c2VfcnVsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBCdWlsZCAndXNlIG90aGVycyBtb2R1bGUgZGF0YScgbWVjaGFuaXNtIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkgYi9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weQoraW5kZXggNDM0NTg2MS4uOTFlNjZlNyAxMDA2NDQKKy0tLSBhL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5CisrKysgYi9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyBpbXBvcnQgc3lzLCBvcworZGlmZiAtLWdpdCBhL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkgYi9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5CitpbmRleCA2MTEwMmQ2Li4wMjExZjRlIDEwMDc1NQorLS0tIGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weQorKysrIGIvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIFVzYWdlOiBtYWtlX2xpdGUucHkgPHdyYXBwZWRfcm91dGluZXNfZmlsZT4gPGxhcGFja19kaXI+IDxvdXRwdXRfZGlyPgorIAorZGlmZiAtLWdpdCBhL251bXB5L21hL2JlbmNoLnB5IGIvbnVtcHkvbWEvYmVuY2gucHkKK2luZGV4IGE5YmE0MmQuLmEzNzc0MzYgMTAwNjQ0CistLS0gYS9udW1weS9tYS9iZW5jaC5weQorKysrIGIvbnVtcHkvbWEvYmVuY2gucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorZGlmZiAtLWdpdCBhL251bXB5L21hL3NldHVwLnB5IGIvbnVtcHkvbWEvc2V0dXAucHkKK2luZGV4IGQxZDZjODkuLmEwNGI3OWIgMTAwNjQ0CistLS0gYS9udW1weS9tYS9zZXR1cC5weQorKysrIGIvbnVtcHkvbWEvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLHRvcF9wYXRoPU5vbmUpOgorZGlmZiAtLWdpdCBhL251bXB5L21hdHJpeGxpYi9zZXR1cC5weSBiL251bXB5L21hdHJpeGxpYi9zZXR1cC5weQoraW5kZXggZDA5ODFkNi4uNTc1MzRkMSAxMDA2NDQKKy0tLSBhL251bXB5L21hdHJpeGxpYi9zZXR1cC5weQorKysrIGIvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJywgdG9wX3BhdGg9Tm9uZSk6CitkaWZmIC0tZ2l0IGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eCBiL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXgKK2luZGV4IDdhMGRmZTAuLjNhN2Y4MWEgMTAwNjQ0CistLS0gYS9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4CisrKysgYi9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgI2N5dGhvbjogbGFuZ3VhZ2VfbGV2ZWw9MworIAorIGZyb20gbGliYy5zdGRpbnQgY2ltcG9ydCB1aW50MzJfdAorZGlmZiAtLWdpdCBhL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZ19kaXN0cmlidXRpb25zLnB5eCBiL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZ19kaXN0cmlidXRpb25zLnB5eAoraW5kZXggMWJlZjUwNi4uNGRhNmE0YiAxMDA2NDQKKy0tLSBhL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZ19kaXN0cmlidXRpb25zLnB5eAorKysrIGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgI2N5dGhvbjogbGFuZ3VhZ2VfbGV2ZWw9MworICIiIgorIFRoaXMgZmlsZSBzaG93cyBob3cgdGhlIHRvIHVzZSBhIEJpdEdlbmVyYXRvciB0byBjcmVhdGUgYSBkaXN0cmlidXRpb24uCitkaWZmIC0tZ2l0IGEvbnVtcHkvc2V0dXAucHkgYi9udW1weS9zZXR1cC5weQoraW5kZXggNGNjZGFlZS4uZGIwNmM4MiAxMDA2NDQKKy0tLSBhL251bXB5L3NldHVwLnB5CisrKysgYi9udW1weS9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkgYi9udW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weQoraW5kZXggNzJiMjJjZS4uMWU5YTMwMSAxMDA3NTUKKy0tLSBhL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5CisrKysgYi9udW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIlByaW50cyB0eXBlLWNvZXJjaW9uIHRhYmxlcyBmb3IgdGhlIGJ1aWx0LWluIE51bVB5IHR5cGVzCisgCisgIiIiCitkaWZmIC0tZ2l0IGEvbnVtcHkvdGVzdGluZy9zZXR1cC5weSBiL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkKK2luZGV4IDdjM2YyZmIuLmJkMzE1ZWUgMTAwNzU1CistLS0gYS9udW1weS90ZXN0aW5nL3NldHVwLnB5CisrKysgYi9udW1weS90ZXN0aW5nL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyAKK2RpZmYgLS1naXQgYS9ydW50ZXN0cy5weSBiL3J1bnRlc3RzLnB5CitpbmRleCBhMzgwNTRmLi4zODNkZGFhIDEwMDc1NQorLS0tIGEvcnVudGVzdHMucHkKKysrKyBiL3J1bnRlc3RzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgcnVudGVzdHMucHkgW09QVElPTlNdIFstLSBBUkdTXQorIAorZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGQ3ZjgwN2IuLjcwNWVhNWQgMTAwNzU1CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIgTnVtUHkgaXMgdGhlIGZ1bmRhbWVudGFsIHBhY2thZ2UgZm9yIGFycmF5IGNvbXB1dGluZyB3aXRoIFB5dGhvbi4KKyAKKyBJdCBwcm92aWRlczoKK2RpZmYgLS1naXQgYS90b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5IGIvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weQoraW5kZXggMzI3ZjZkYy4uODgzNzY4NCAxMDA3NTUKKy0tLSBhL3Rvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkKKysrKyBiL3Rvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBBIHNjcmlwdCB0byBjcmVhdGUgQyBjb2RlLWNvdmVyYWdlIHJlcG9ydHMgYmFzZWQgb24gdGhlIG91dHB1dCBvZgorIHZhbGdyaW5kJ3MgY2FsbGdyaW5kIHRvb2wuCitkaWZmIC0tZ2l0IGEvdG9vbHMvY2hhbmdlbG9nLnB5IGIvdG9vbHMvY2hhbmdlbG9nLnB5CitpbmRleCBiMTM1YjE0Li41ZDhiMzNjIDEwMDc1NQorLS0tIGEvdG9vbHMvY2hhbmdlbG9nLnB5CisrKysgYi90b29scy9jaGFuZ2Vsb2cucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBlbmNvZGluZzp1dGYtOCAtKi0KKyAiIiIKKyBTY3JpcHQgdG8gZ2VuZXJhdGUgY29udHJpYnV0b3IgYW5kIHB1bGwgcmVxdWVzdCBsaXN0cworZGlmZiAtLWdpdCBhL3Rvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5IGIvdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkKK2luZGV4IGE5ODk2NjguLmFlNTMwNTQgMTAwNzU1CistLS0gYS90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weQorKysrIGIvdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyBpbXBvcnQgYXJncGFyc2UKKyBpbXBvcnQgc3VicHJvY2VzcworZGlmZiAtLWdpdCBhL3Rvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkgYi90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5CitpbmRleCA2ZjkwMDAxLi4xMGUwMzc4IDEwMDY0NAorLS0tIGEvdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weQorKysrIGIvdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyByIiIiCisgTG9vayBmb3IgZXNjYXBlIHNlcXVlbmNlcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjYuCisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkgYi90b29scy9yZWZndWlkZV9jaGVjay5weQoraW5kZXggMmM2MjgwOS4uYTE5YTI5ZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5CisrKysgYi90b29scy9yZWZndWlkZV9jaGVjay5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIHJlZmd1aWRlX2NoZWNrLnB5IFtPUFRJT05TXSBbLS0gQVJHU10KKyAKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkgYi90b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkKK2luZGV4IDRmZjg3MGUuLmY4ZjA1ZTYgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weQoraW5kZXggOGQ5Yzc5Ny4uNTRmZmU3MSAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5CitpbmRleCBlOGJmNzExLi5iMzc3ZjdjIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGbGF0LnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGbGF0LnB5CitpbmRleCA3MWJlMjc3Li41NTAzNGJmIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGbGF0LnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdEZvcnRyYW4ucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZvcnRyYW4ucHkKK2luZGV4IDQyNmU4OTQuLjBmN2QwZTYgMTAwNjQ0CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEZvcnRyYW4ucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkKK2luZGV4IDA2NWJlMGQuLjg1NGEyM2MgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weQoraW5kZXggOTdmZTgwYy4uMzFiNjNkMCAxMDA2NDQKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weQoraW5kZXggYWMxYjc0OS4uZjQ3ZDllOCAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkKK2luZGV4IDQ1ZTc2M2IuLjA2N2I5MjIgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGVjZmU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIDYyOTg5MWY2NzYwMTI3NWM5YzRkZTBiYjAxYWZjZjFhOGM0NGZhM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNiBNYXIgMjAxOCAxOTo1NToyMSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBucHlfY3B1OiBBZGQgcmlzY3Ygc3VwcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzEwNzYxXQotLS0tCi0gbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIGIvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAotaW5kZXggNWVkZDhmNC4uZTFlNDc5NiAxMDA2NDQKLS0tLSBhL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmgKLSsrKyBiL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmgKLUBAIC05Niw2ICs5Niw4IEBACi0gICAgICNkZWZpbmUgTlBZX0NQVV9PUjFLCi0gI2VsaWYgZGVmaW5lZChfX21jNjgwMDBfXykKLSAgICAgI2RlZmluZSBOUFlfQ1BVX002OEsKLSsjZWxpZiBkZWZpbmVkKF9fcmlzY3YpCi0rICAgICNkZWZpbmUgTlBZX0NQVV9SSVNDVgotICNlbGlmIGRlZmluZWQoX19hcmNfXykgJiYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKLSAgICAgI2RlZmluZSBOUFlfQ1BVX0FSQ0VMCi0gI2VsaWYgZGVmaW5lZChfX2FyY19fKSAmJiBkZWZpbmVkKF9fQklHX0VORElBTl9fKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYjJhNmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gYjg4MWUwYjJiYTljZjFhNGFhMzUxYTFjMWVhOTBiMWUxNzc2Y2UyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMiBBdWcgMjAxOSAxNTozNzozNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBudW1weS9yYW5kb20vc2V0dXAucHk6IHJlbW92ZSB0aGUgZGV0ZWN0aW9uIG9mIHg4NiB0YXJnZXRzCi0gdmlhIHVuYW1lKCkKLQotVGhpcyB3YXMgYmFkbHkgYnJlYWtpbmcgY29tcGlsYXRpb24gZm9yIEFSTSB0YXJnZXRzIChhbmQgcG9zc2libHkKLW90aGVyIG5vbi14ODYgdGFyZ2V0cyk7IGlmIC1tc3NlMiBpcyBkZXNpcmFibGUgZm9yIHg4NiBidWlsZHMgaXQgaGFzCi10byBiZSBwYXNzZWQgdGhyb3VnaCBhbm90aGVyIGNoYW5uZWwuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbnVtcHkvcmFuZG9tL3NldHVwLnB5IHwgNSAtLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvcmFuZG9tL3NldHVwLnB5IGIvbnVtcHkvcmFuZG9tL3NldHVwLnB5Ci1pbmRleCBhMWJmM2I4Li42MGZiNTM0IDEwMDY0NAotLS0tIGEvbnVtcHkvcmFuZG9tL3NldHVwLnB5Ci0rKysgYi9udW1weS9yYW5kb20vc2V0dXAucHkKLUBAIC00OSwxMSArNDksNiBAQCBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJywgdG9wX3BhdGg9Tm9uZSk6Ci0gICAgIGVsaWYgbm90IGlzX21zdmM6Ci0gICAgICAgICAjIFNvbWUgYml0IGdlbmVyYXRvcnMgcmVxdWlyZSBjOTkKLSAgICAgICAgIEVYVFJBX0NPTVBJTEVfQVJHUyArPSBbJy1zdGQ9Yzk5J10KLS0gICAgICAgIElOVEVMX0xJS0UgPSBhbnkoW3ZhbCBpbiBrLmxvd2VyKCkgZm9yIGsgaW4gcGxhdGZvcm0udW5hbWUoKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiAoJ3g4NicsICdpNjg2JywgJ2kzODYnLCAnYW1kNjQnKV0pCi0tICAgICAgICBpZiBJTlRFTF9MSUtFOgotLSAgICAgICAgICAgICMgQXNzdW1lcyBHQ0Mgb3IgR0NDLWxpa2UgY29tcGlsZXIKLS0gICAgICAgICAgICBFWFRSQV9DT01QSUxFX0FSR1MgKz0gWyctbXNzZTInXQotIAotICAgICAjIFVzZSBsZWdhY3kgaW50ZWdlciB2YXJpYWJsZSBzaXplcwotICAgICBMRUdBQ1lfREVGUyA9IFsoJ05QX1JBTkRPTV9MRUdBQ1knLCAnMScpXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYwppbmRleCBmNjhiOTBlLi43Mjc3NTUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYwpAQCAtNywxMSArNywxMCBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29udmVydC1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzQ4YjJhZDc4NWY4MmNkZmUyOGM5MDdjZTM1ZTJhNzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdiN2I2MTQ1ZTdiYTU5MThjZTI2YmUyNTk5OWI2ZDRiMzVjZjlmYmZkZjQ2YjdkYTUwMDkwZmZkYjAyMDQ0NSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZDYzMWM3NjFmMTQxZDM4MmI0ZTFiMzFjODIzMmZjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5M2VlNTllYzM4ZjNiZjhmOWE0MmQ1ZjQzMDFmNjBlNjgyNWE0YTYzODVhMTQ1ZjcwYmFkY2QyYmYyYTExMTM0IgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3JlbGVhc2VzIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCkBAIC0xOSw2ICsxOCw4IEBACiAjIE5lZWRlZCBmb3IgYnVpbGRpbmcgd2l0aCBnY2MgNC54IGZyb20gY2VudG9zIDcKIENGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtc3RkPWM5OSIKIAorREVQRU5EUyArPSAicHl0aG9uMy1jeXRob24tbmF0aXZlIgorCiBTID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCiAKIENMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE3LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE4LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTcuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xOC4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTZiOTliCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaApAQCAtMCwwICsxLDI0OCBAQAorRnJvbSAwYjI5N2Q0ZmYxYzBlNDQ4MGFkMzNhY2FlNzkzZmJhZjRiZjAxNWI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmljdG9yIFN0aW5uZXIgPHZzdGlubmVyQHB5dGhvbi5vcmc+CitEYXRlOiBUaHUsIDIgQXByIDIwMjAgMDI6NTI6MjAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnBvLTM5NTAzOiBDVkUtMjAyMC04NDkyOiBGaXggQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyCisgKEdILTE4Mjg0KQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisoaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8wYjI5N2Q0ZmYxYzBlNDQ4MGFkMzNhY2FlNzkzZmJhZjRiZjAxNWI0KQorCitDVkU6IENWRS0yMDIwLTg0OTIKKworVGhlIEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBjbGFzcyBvZiB0aGUgdXJsbGliLnJlcXVlc3QgbW9kdWxlIHVzZXMKK2FuIGluZWZmaWNpZW50IHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBjYW4gYmUgZXhwbG9pdGVkIGJ5IGFuCithdHRhY2tlciB0byBjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlLiBGaXggdGhlIHJlZ2V4IHRvIHByZXZlbnQgdGhlCitjYXRhc3Ryb3BoaWMgYmFja3RyYWNraW5nLiBWdWxuZXJhYmlsaXR5IHJlcG9ydGVkIGJ5IEJlbiBDYWxsZXIKK2FuZCBNYXR0IFNjaHdhZ2VyLgorCitBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgb2YgdXJsbGliLnJlcXVlc3Qgbm93IHBhcnNlcyBhbGwKK1dXVy1BdXRoZW50aWNhdGUgSFRUUCBoZWFkZXJzIGFuZCBhY2NlcHRzIG11bHRpcGxlIGNoYWxsZW5nZXMgcGVyCitoZWFkZXI6IHVzZSB0aGUgcmVhbG0gb2YgdGhlIGZpcnN0IEJhc2ljIGNoYWxsZW5nZS4KKworQ28tQXV0aG9yZWQtQnk6IFNlcmhpeSBTdG9yY2hha2EgPHN0b3JjaGFrYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSAgICAgICAgICAgICAgICAgICAgICB8IDkwICsrKysrKysrKysrKy0tLS0tLS0KKyBMaWIvdXJsbGliL3JlcXVlc3QucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCA2OSArKysrKysrKysrLS0tLQorIC4uLi8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0ICB8ICAzICsKKyAuLi4vMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdCAgfCAgNSArKworIDQgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QKKworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQoraW5kZXggOGFiZWRhYWM5OC4uZTY5YWMzZTIxMyAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CitAQCAtMTQ0Niw0MCArMTQ0Niw2NCBAQCBjbGFzcyBIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgYnlwYXNzID0geydleGNsdWRlX3NpbXBsZSc6IFRydWUsICdleGNlcHRpb25zJzogW119CisgICAgICAgICBzZWxmLmFzc2VydFRydWUoX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZigndGVzdCcsIGJ5cGFzcykpCisgCistICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGgoc2VsZiwgcXVvdGVfY2hhcj0nIicpOgorLSAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorLSAgICAgICAgcGFzc3dvcmRfbWFuYWdlciA9IE1vY2tQYXNzd29yZE1hbmFnZXIoKQorLSAgICAgICAgYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWFuYWdlcikKKy0gICAgICAgIHJlYWxtID0gIkFDTUUgV2lkZ2V0IFN0b3JlIgorLSAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorLSAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSVzJXMlc1xyXG5cclxuJyAlCistICAgICAgICAgICAgKHF1b3RlX2NoYXIsIHJlYWxtLCBxdW90ZV9jaGFyKSkKKy0gICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX2hhbmRsZXIpCistICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorLSAgICAgICAgc2VsZi5fdGVzdF9iYXNpY19hdXRoKG9wZW5lciwgYXV0aF9oYW5kbGVyLCAiQXV0aG9yaXphdGlvbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCistCistICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfd2l0aF9zaW5nbGVfcXVvdGVkX3JlYWxtKHNlbGYpOgorLSAgICAgICAgc2VsZi50ZXN0X2Jhc2ljX2F1dGgocXVvdGVfY2hhcj0iJyIpCistCistICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfd2l0aF91bnF1b3RlZF9yZWFsbShzZWxmKToKKy0gICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKy0gICAgICAgIHBhc3N3b3JkX21hbmFnZXIgPSBNb2NrUGFzc3dvcmRNYW5hZ2VyKCkKKy0gICAgICAgIGF1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21hbmFnZXIpCistICAgICAgICByZWFsbSA9ICJBQ01FIFdpZGdldCBTdG9yZSIKKy0gICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKy0gICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0lc1xyXG5cclxuJyAlIHJlYWxtKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfaGFuZGxlcikKKy0gICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgorKyAgICBkZWYgY2hlY2tfYmFzaWNfYXV0aChzZWxmLCBoZWFkZXJzLCByZWFsbSk6CisrICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChyZWFsbT1yZWFsbSwgaGVhZGVycz1oZWFkZXJzKToKKysgICAgICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisrICAgICAgICAgICAgcGFzc3dvcmRfbWFuYWdlciA9IE1vY2tQYXNzd29yZE1hbmFnZXIoKQorKyAgICAgICAgICAgIGF1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21hbmFnZXIpCisrICAgICAgICAgICAgYm9keSA9ICdcclxuJy5qb2luKGhlYWRlcnMpICsgJ1xyXG5cclxuJworKyAgICAgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcig0MDEsIGJvZHkpCisrICAgICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfaGFuZGxlcikKKysgICAgICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorICAgICAgICAgICAgIHNlbGYuX3Rlc3RfYmFzaWNfYXV0aChvcGVuZXIsIGF1dGhfaGFuZGxlciwgIkF1dGhvcml6YXRpb24iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIikKKysKKysgICAgZGVmIHRlc3RfYmFzaWNfYXV0aChzZWxmKToKKysgICAgICAgIHJlYWxtID0gInJlYWxtMkBleGFtcGxlLmNvbSIKKysgICAgICAgIHJlYWxtMiA9ICJyZWFsbTJAZXhhbXBsZS5jb20iCisrICAgICAgICBiYXNpYyA9IGYnQmFzaWMgcmVhbG09IntyZWFsbX0iJworKyAgICAgICAgYmFzaWMyID0gZidCYXNpYyByZWFsbT0ie3JlYWxtMn0iJworKyAgICAgICAgb3RoZXJfbm9fcmVhbG0gPSAnT3RoZXJzY2hlbWUgeHh4JworKyAgICAgICAgZGlnZXN0ID0gKGYnRGlnZXN0IHJlYWxtPSJ7cmVhbG0yfSIsICcKKysgICAgICAgICAgICAgICAgICBmJ3FvcD0iYXV0aCwgYXV0aC1pbnQiLCAnCisrICAgICAgICAgICAgICAgICAgZidub25jZT0iZGNkOThiNzEwMmRkMmYwZThiMTFkMGY2MDBiZmIwYzA5MyIsICcKKysgICAgICAgICAgICAgICAgICBmJ29wYXF1ZT0iNWNjYzA2OWM0MDNlYmFmOWYwMTcxZTk1MTdmNDBlNDEiJykKKysgICAgICAgIGZvciByZWFsbV9zdHIgaW4gKAorKyAgICAgICAgICAgICMgdGVzdCAicXVvdGUiIGFuZCAncXVvdGUnCisrICAgICAgICAgICAgZidCYXNpYyByZWFsbT0ie3JlYWxtfSInLAorKyAgICAgICAgICAgIGYiQmFzaWMgcmVhbG09J3tyZWFsbX0nIiwKKysKKysgICAgICAgICAgICAjIGNoYXJzZXQgaXMgaWdub3JlZAorKyAgICAgICAgICAgIGYnQmFzaWMgcmVhbG09IntyZWFsbX0iLCBjaGFyc2V0PSJVVEYtOCInLAorKworKyAgICAgICAgICAgICMgTXVsdGlwbGUgY2hhbGxlbmdlcyBwZXIgaGVhZGVyCisrICAgICAgICAgICAgZid7YmFzaWN9LCB7YmFzaWMyfScsCisrICAgICAgICAgICAgZid7YmFzaWN9LCB7b3RoZXJfbm9fcmVhbG19JywKKysgICAgICAgICAgICBmJ3tvdGhlcl9ub19yZWFsbX0sIHtiYXNpY30nLAorKyAgICAgICAgICAgIGYne2Jhc2ljfSwge2RpZ2VzdH0nLAorKyAgICAgICAgICAgIGYne2RpZ2VzdH0sIHtiYXNpY30nLAorKyAgICAgICAgKToKKysgICAgICAgICAgICBoZWFkZXJzID0gW2YnV1dXLUF1dGhlbnRpY2F0ZToge3JlYWxtX3N0cn0nXQorKyAgICAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfYXV0aChoZWFkZXJzLCByZWFsbSkKKysKKysgICAgICAgICMgbm8gcXVvdGU6IGV4cGVjdCBhIHdhcm5pbmcKKysgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcpKToKKysgICAgICAgICAgICBoZWFkZXJzID0gW2YnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09e3JlYWxtfSddCisrICAgICAgICAgICAgc2VsZi5jaGVja19iYXNpY19hdXRoKGhlYWRlcnMsIHJlYWxtKQorKworKyAgICAgICAgIyBNdWx0aXBsZSBoZWFkZXJzOiBvbmUgY2hhbGxlbmdlIHBlciBoZWFkZXIuCisrICAgICAgICAjIFVzZSB0aGUgZmlyc3QgQmFzaWMgcmVhbG0uCisrICAgICAgICBmb3IgY2hhbGxlbmdlcyBpbiAoCisrICAgICAgICAgICAgW2Jhc2ljLCAgYmFzaWMyXSwKKysgICAgICAgICAgICBbYmFzaWMsICBkaWdlc3RdLAorKyAgICAgICAgICAgIFtkaWdlc3QsIGJhc2ljXSwKKysgICAgICAgICk6CisrICAgICAgICAgICAgaGVhZGVycyA9IFtmJ1dXVy1BdXRoZW50aWNhdGU6IHtjaGFsbGVuZ2V9JworKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNoYWxsZW5nZSBpbiBjaGFsbGVuZ2VzXQorKyAgICAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfYXV0aChoZWFkZXJzLCByZWFsbSkKKyAKKyAgICAgZGVmIHRlc3RfcHJveHlfYmFzaWNfYXV0aChzZWxmKToKKyAgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKK2RpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKK2luZGV4IDdmZTUwNTM1ZGEuLjJhM2Q3MTU1NGYgMTAwNjQ0CistLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQorQEAgLTkzNyw4ICs5MzcsMTUgQEAgY2xhc3MgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyOgorIAorICAgICAjIGFsbG93IGZvciBkb3VibGUtIGFuZCBzaW5nbGUtcXVvdGVkIHJlYWxtIHZhbHVlcworICAgICAjIChzaW5nbGUgcXVvdGVzIGFyZSBhIHZpb2xhdGlvbiBvZiB0aGUgUkZDLCBidXQgYXBwZWFyIGluIHRoZSB3aWxkKQorLSAgICByeCA9IHJlLmNvbXBpbGUoJyg/Oi4qLCkqWyBcdF0qKFteIFx0XSspWyBcdF0rJworLSAgICAgICAgICAgICAgICAgICAgJ3JlYWxtPShbIlwnXT8pKFteIlwnXSopXFwyJywgcmUuSSkKKysgICAgcnggPSByZS5jb21waWxlKCcoPzpefCwpJyAgICMgc3RhcnQgb2YgdGhlIHN0cmluZyBvciAnLCcKKysgICAgICAgICAgICAgICAgICAgICdbIFx0XSonICAgICMgb3B0aW9uYWwgd2hpdGVzcGFjZXMKKysgICAgICAgICAgICAgICAgICAgICcoW14gXHRdKyknICMgc2NoZW1lIGxpa2UgIkJhc2ljIgorKyAgICAgICAgICAgICAgICAgICAgJ1sgXHRdKycgICAgIyBtYW5kYXRvcnkgd2hpdGVzcGFjZXMKKysgICAgICAgICAgICAgICAgICAgICMgcmVhbG09eHh4CisrICAgICAgICAgICAgICAgICAgICAjIHJlYWxtPSd4eHgnCisrICAgICAgICAgICAgICAgICAgICAjIHJlYWxtPSJ4eHgiCisrICAgICAgICAgICAgICAgICAgICAncmVhbG09KFsiXCddPykoW14iXCddKilcXDInLAorKyAgICAgICAgICAgICAgICAgICAgcmUuSSkKKyAKKyAgICAgIyBYWFggY291bGQgcHJlLWVtcHRpdmVseSBzZW5kIGF1dGggaW5mbyBhbHJlYWR5IGFjY2VwdGVkIChSRkMgMjYxNywKKyAgICAgIyBlbmQgb2Ygc2VjdGlvbiAyLCBhbmQgc2VjdGlvbiAxLjIgaW1tZWRpYXRlbHkgYWZ0ZXIgImNyZWRlbnRpYWxzIgorQEAgLTk1MCwyNyArOTU3LDUxIEBAIGNsYXNzIEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcjoKKyAgICAgICAgIHNlbGYucGFzc3dkID0gcGFzc3dvcmRfbWdyCisgICAgICAgICBzZWxmLmFkZF9wYXNzd29yZCA9IHNlbGYucGFzc3dkLmFkZF9wYXNzd29yZAorIAorKyAgICBkZWYgX3BhcnNlX3JlYWxtKHNlbGYsIGhlYWRlcik6CisrICAgICAgICAjIHBhcnNlIFdXVy1BdXRoZW50aWNhdGUgaGVhZGVyOiBhY2NlcHQgbXVsdGlwbGUgY2hhbGxlbmdlcyBwZXIgaGVhZGVyCisrICAgICAgICBmb3VuZF9jaGFsbGVuZ2UgPSBGYWxzZQorKyAgICAgICAgZm9yIG1vIGluIEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5maW5kaXRlcihoZWFkZXIpOgorKyAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKKysgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywgIiciXToKKysgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAzKQorKworKyAgICAgICAgICAgIHlpZWxkIChzY2hlbWUsIHJlYWxtKQorKworKyAgICAgICAgICAgIGZvdW5kX2NoYWxsZW5nZSA9IFRydWUKKysKKysgICAgICAgIGlmIG5vdCBmb3VuZF9jaGFsbGVuZ2U6CisrICAgICAgICAgICAgaWYgaGVhZGVyOgorKyAgICAgICAgICAgICAgICBzY2hlbWUgPSBoZWFkZXIuc3BsaXQoKVswXQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHNjaGVtZSA9ICcnCisrICAgICAgICAgICAgeWllbGQgKHNjaGVtZSwgTm9uZSkKKysKKyAgICAgZGVmIGh0dHBfZXJyb3JfYXV0aF9yZXFlZChzZWxmLCBhdXRocmVxLCBob3N0LCByZXEsIGhlYWRlcnMpOgorICAgICAgICAgIyBob3N0IG1heSBiZSBhbiBhdXRob3JpdHkgKHdpdGhvdXQgdXNlcmluZm8pIG9yIGEgVVJMIHdpdGggYW4KKyAgICAgICAgICMgYXV0aG9yaXR5CistICAgICAgICAjIFhYWCBjb3VsZCBiZSBtdWx0aXBsZSBoZWFkZXJzCistICAgICAgICBhdXRocmVxID0gaGVhZGVycy5nZXQoYXV0aHJlcSwgTm9uZSkKKysgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmdldF9hbGwoYXV0aHJlcSkKKysgICAgICAgIGlmIG5vdCBoZWFkZXJzOgorKyAgICAgICAgICAgICMgbm8gaGVhZGVyIGZvdW5kCisrICAgICAgICAgICAgcmV0dXJuCisgCistICAgICAgICBpZiBhdXRocmVxOgorLSAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQorLSAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CistICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICclcyciICUKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUpCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgbW8gPSBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucnguc2VhcmNoKGF1dGhyZXEpCistICAgICAgICAgICAgICAgIGlmIG1vOgorLSAgICAgICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorLSAgICAgICAgICAgICAgICAgICAgaWYgcXVvdGUgbm90IGluIFsnIicsIiciXToKKy0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMikKKy0gICAgICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpID09ICdiYXNpYyc6CistICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCisrICAgICAgICB1bnN1cHBvcnRlZCA9IE5vbmUKKysgICAgICAgIGZvciBoZWFkZXIgaW4gaGVhZGVyczoKKysgICAgICAgICAgICBmb3Igc2NoZW1lLCByZWFsbSBpbiBzZWxmLl9wYXJzZV9yZWFsbShoZWFkZXIpOgorKyAgICAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorKyAgICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWQgPSBzY2hlbWUKKysgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisrCisrICAgICAgICAgICAgICAgIGlmIHJlYWxtIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIGZpcnN0IG1hdGNoaW5nIEJhc2ljIGNoYWxsZW5nZS4KKysgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGZvbGxvd2luZyBjaGFsbGVuZ2VzIGV2ZW4gaWYgdGhleSB1c2UgdGhlIEJhc2ljCisrICAgICAgICAgICAgICAgICAgICAjIHNjaGVtZS4KKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQorKworKyAgICAgICAgaWYgdW5zdXBwb3J0ZWQgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIGRvZXMgbm90ICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAlciIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNjaGVtZSwpKQorIAorICAgICBkZWYgcmV0cnlfaHR0cF9iYXNpY19hdXRoKHNlbGYsIGhvc3QsIHJlcSwgcmVhbG0pOgorICAgICAgICAgdXNlciwgcHcgPSBzZWxmLnBhc3N3ZC5maW5kX3VzZXJfcGFzc3dvcmQocmVhbG0sIGhvc3QpCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmJlODBjZTc5ZDkKKy0tLSAvZGV2L251bGwKKysrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0CitAQCAtMCwwICsxLDMgQEAKKys6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXJgIG9mIDptb2Q6YHVybGxpYi5yZXF1ZXN0YAorK25vdyBwYXJzZXMgYWxsIFdXVy1BdXRoZW50aWNhdGUgSFRUUCBoZWFkZXJzIGFuZCBhY2NlcHRzIG11bHRpcGxlIGNoYWxsZW5nZXMKKytwZXIgaGVhZGVyOiB1c2UgdGhlIHJlYWxtIG9mIHRoZSBmaXJzdCBCYXNpYyBjaGFsbGVuZ2UuCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uOWYyODAwNTgxYworLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0CitAQCAtMCwwICsxLDUgQEAKKytDVkUtMjAyMC04NDkyOiBUaGUgOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyYCBjbGFzcyBvZiB0aGUKKys6bW9kOmB1cmxsaWIucmVxdWVzdGAgbW9kdWxlIHVzZXMgYW4gaW5lZmZpY2llbnQgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIGNhbgorK2JlIGV4cGxvaXRlZCBieSBhbiBhdHRhY2tlciB0byBjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlLiBGaXggdGhlIHJlZ2V4IHRvCisrcHJldmVudCB0aGUgY2F0YXN0cm9waGljIGJhY2t0cmFja2luZy4gVnVsbmVyYWJpbGl0eSByZXBvcnRlZCBieSBCZW4gQ2FsbGVyCisrYW5kIE1hdHQgU2Nod2FnZXIuCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoCmluZGV4IDE2OWQxYjEuLjVmOTljZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1YmJhNGY1N2YwNDgwMTZhYTkyY2U1OTA5ZTllMzcyZGI2MTk1NTRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhOGY4NzFjOWViYzRmY2I5OWQ0MTYzYjIyNmFhYmVlZjI2NTY3MDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNyBKdWwgMjAxOCAxMDoxMzozOCArMDgwMAogU3ViamVjdDogW1BBVENIXSBjb25kaXRpb25hbGx5IGRvIG5vdCBmZXRjaCBjb2RlIGJ5IGVhc3lfaW5zdGFsbApAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weSBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKLWluZGV4IDA1NTA4Y2UuLjk0NWUxMTggMTAwNzU1CitpbmRleCA0MjYzMDFkLi41NWM4MDYyIDEwMDY0NAogLS0tIGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQogKysrIGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQotQEAgLTY0MCw2ICs2NDAsMTEgQEAgY2xhc3MgZWFzeV9pbnN0YWxsKENvbW1hbmQpOgorQEAgLTY0OSw2ICs2NDksMTEgQEAgY2xhc3MgZWFzeV9pbnN0YWxsKENvbW1hbmQpOgogICAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzKHRtcGRpcikgYW5kIHJtdHJlZShybXRyZWVfc2FmZSh0bXBkaXIpKQogIAogICAgICBkZWYgZWFzeV9pbnN0YWxsKHNlbGYsIHNwZWMsIGRlcHM9RmFsc2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzN2U3OTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKQEAgLTAsMCArMSw0MSBAQAorREVTQ1JJUFRJT04gPSAiQ3l0aG9uIGlzIGEgbGFuZ3VhZ2Ugc3BlY2lhbGx5IGRlc2lnbmVkIGZvciB3cml0aW5nIFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcy4gXAorSXQncyBkZXNpZ25lZCB0byBicmlkZ2UgdGhlIGdhcCBiZXR3ZWVuIHRoZSBuaWNlLCBoaWdoLWxldmVsLCBlYXN5LXRvLXVzZSB3b3JsZCBvZiBQeXRob24gXAorYW5kIHRoZSBtZXNzeSwgbG93LWxldmVsIHdvcmxkIG9mIEMuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZTIzZmFkZDZjZWVmOGM2MThmYzFjNjUxOTFkODQ2ZmEiCitQWVBJX1BBQ0tBR0UgPSAiQ3l0aG9uIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTg5OWFiYWE0OGI2OGJiNjc5YWVmNDVjZWI0Yjg5ZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMyNzU1Mjg0Zjk0MmNiYjNiNDNhMDZjZDg1OTc0ZWYzYzk3MGEwMjFhZWYxOWI1MjQzYzAzZWUyYjA4ZmEwNSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIkN5dGhvbi0oP1A8cHZlcj4uKilcLnRhciIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayArPSAiXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS14bWwgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJ14jIS4qcHl0aG9uJyAke0R9YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiAke1BZVEhPTl9QTn18JyAkUFlUSFNDUklQVAorCWRvbmUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKaW5kZXggNjMzNzUyZi4uMjNlYzI5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMKQEAgLTgsOCArOCw4IEBACiAKIFBZUElfUEFDS0FHRSA9ICJnaXRkYjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGU1OWU1ZmIwMDk2MDU0MWY2ZTEzN2IxNDU2YWIwYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzM2MTEzMWExODM2NjYxYTE1NTE3MjkzMmExM2MwOGJkYTJkYjM2NzRlNGNhYTMyMzY4YWE2ZWIwMmYzOGMyIgorU1JDX1VSSVttZDVzdW1dID0gIjFhN2VhMzM2MmU0MDVmOGE1NjM0ZjdlZTUzNjM2MDk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiNmRmMTQzMzU2N2E1MWE0YTljMWE1YTBkZTk3N2FhMzUxYTQwNWNjNTZkN2QzNWYzMzg4YmFkMWY2MzAzNTAiCiAKIERFUEVORFMgPSAiJHtQWVRIT05fUE59LWFzeW5jICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLW5hdGl2ZSAke1BZVEhPTl9QTn0tc21tYXAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA3ZWU1OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8wMDAxLXB5dGhvbi1uYXRpdmUtZml4LW9uZS1kb19wb3B1bGF0ZV9zeXNyb290LXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDZjYmI3NTI5Y2Y3ZmYwZGEzY2E2NDlmYjM0ODZmYWNkOTYyMGQ2MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNSBPY3QgMjAxOCAwNzozMjoxNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBweXRob24tbmF0aXZlOiBmaXggb25lIGRvX3BvcHVsYXRlX3N5c3Jvb3Qgd2FybmluZwotCi1GaXggYmVsb3cgd2FybmluZzoKLVdBUk5JTkc6IFNraXBwaW5nIFJQQVRIIC91c3IvbGliNjQgYXMgaXMgYSBzdGFuZGFyZCBzZWFyY2ggcGF0aCBmb3IKLXdvcmsveDg2XzY0LWxpbnV4L3B5dGhvbi1uYXRpdmUvMi43LjE1LXIxLjEvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLwotdXNyL2xpYi9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvCi0KLXNldHVwLnB5IHdpbGwgY2hlY2sgZGIuaCB1bmRlciBpbmNsdWRlX2RpcnMsIGZvciBuYXRpdmUgYnVpbGQsCi0vdXNyL2xpYjY0IHdpbGwgYmUgaW5zZXJ0IHRvIHBvc3Rpb24gMCBvZiBpbmNsdWRlX2RpcnMsIHNvCi1pdCdzIHByaW9yaXR5IGlzIGhpZ2hlciB0aGVuIG91ciBzeXNyb290LCBjYXVzZSBkYi5oIHN5c3Jvb3QKLWlzIGlnbm9yZWQsIGFuZCBycGF0aCBzZXQgdG8gL3Vzci9saWI2NC4gYW5kIHRoaXMgY2F1c2Ugd2FybmluZwotd2hlbiBkb19wb3B1bGF0ZV9zeXNyb290LiB1c2UgYXBwZW5kIHRvIGZpeCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gc2V0dXAucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCBhMmM4MTI3Li4yMmY5ZTIzIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtNDcsNyArNDcsNyBAQCBkZWYgYWRkX2Rpcl90b19saXN0KGRpcmxpc3QsIGRpcik6Ci0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGRpcl9leGlzdHMgPSBvcy5wYXRoLmlzZGlyKGRpcikKLSAgICAgICAgIGlmIGRpcl9leGlzdHM6Ci0tICAgICAgICAgICAgZGlybGlzdC5pbnNlcnQoMCwgZGlyKQotKyAgICAgICAgICAgIGRpcmxpc3QuYXBwZW5kKGRpcikKLSAKLSBNQUNPU19TREtfUk9PVCA9IE5vbmUKLSAKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMC1kaXN0dXRpbHMtZml4LXN3aWctcGFyYW1ldGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkyNDdjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIyBTb21lIHZlcnNpb25zIG9mIFNXSUcgZG8gbm90IHVzZSB0aGUgZXh0ZW5zaW9uIHBhcmFtZXRlci4KLSMgTWFrZSBpdCBvcHRpb25hbC4KLSMgU2lnbmVkLU9mZjogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+Ci1JbmRleDogUHl0aG9uLTIuNi4xL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi42LjEub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5Ci0rKysgUHl0aG9uLTIuNi4xL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKLUBAIC01NjYsNyArNTY2LDcgQEAgY2xhc3MgYnVpbGRfZXh0IChDb21tYW5kKToKLSAgICAgICAgICAgICB0YXJnZXRfbGFuZz1sYW5ndWFnZSkKLSAKLSAKLS0gICAgZGVmIHN3aWdfc291cmNlcyAoc2VsZiwgc291cmNlcywgZXh0ZW5zaW9uKToKLSsgICAgZGVmIHN3aWdfc291cmNlcyAoc2VsZiwgc291cmNlcywgZXh0ZW5zaW9uPU5vbmUpOgotIAotICAgICAgICAgIiIiV2FsayB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMgaW4gJ3NvdXJjZXMnLCBsb29raW5nIGZvciBTV0lHCi0gICAgICAgICBpbnRlcmZhY2UgKC5pKSBmaWxlcy4gIFJ1biBTV0lHIG9uIGFsbCB0aGF0IGFyZSBmb3VuZCwgYW5kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMS1kaXN0dXRpbHMtbmV2ZXItbW9kaWZ5LXNoZWJhbmctbGluZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTI0NjliLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMgRG9uJ3QgbW9kaWZ5IHRoZSBzaGUtYmFuZyBsaW5lIGZvciBhIGNyb3NzLWJ1aWxkLgotIyBPdGhlcndpc2UgaXQgcG9pbnRzIHRvIG91ciBob3N0cHl0aG9uICh3aGljaCB3ZSBkbyBub3Qgd2FudCkKLSMKLSMgU2lnbmVkLU9mZjogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+Ci0KLUluZGV4OiBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi42LjEub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQotKysrIFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQotQEAgLTg3LDcgKzg3LDcgQEAgY2xhc3MgYnVpbGRfc2NyaXB0cyAoQ29tbWFuZCk6Ci0gICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotIAotICAgICAgICAgICAgICAgICBtYXRjaCA9IGZpcnN0X2xpbmVfcmUubWF0Y2goZmlyc3RfbGluZSkKLS0gICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0rICAgICAgICAgICAgICAgIGlmIEZhbHNlOiAjbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgICBhZGp1c3QgPSAxCi0gICAgICAgICAgICAgICAgICAgICBwb3N0X2ludGVycCA9IG1hdGNoLmdyb3VwKDEpIG9yICcnCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjBmMTczLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLVJlYmFzZWQgZm9yIFB5dGhvbiAyLjcuOQotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotMjAxMS8wOS8yOQotVGhlIHB5dGhvbiByZWNpcGUgYnVpbGRpbmcgd2FzIGZhaWxpbmcgYmVjYXVzZSBweXRob24tbmF0aXZlIAotY291bGQgbm90IGhhbmRsZSBzeXMubGliIHZhci4gc3lzLmxpYiB2YXIgaXMgZGVmaW5lZCBpbiB0aGUgCi1tdWx0aWxpYiBwYXRjaCBoZW5jZSBhZGRlZCB0aGlzIG11bHRpbGliLnBhdGNoIGZvciBweXRob24tbmF0aXZlIAotcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLUBAIC0xMDgsNiArMTA4LDcgQEAgUHlBUElfRlVOQyhjaGFyICopIFB5X0dldFBhdGgodm9pZCk7Ci0gLyogSW4gdGhlaXIgb3duIGZpbGVzICovCi0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFBsYXRmb3JtKHZvaWQpOwotK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRMaWIodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKLSBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQotIAotIAotK2xpYm5hbWUgPSBzeXMubGliCi0rCi0gaWYgc3lzLnZlcnNpb24gPCAiMi4yIjoKLSAgICAgV0lORE9XU19TQ0hFTUUgPSB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZScsCi1AQCAtNDIsNyArNDQsNyBAQCBlbHNlOgotIElOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3VuaXhfcHJlZml4JzogewotICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS8nK2xpYm5hbWUrJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdoZWFkZXJzJzogJyRiYXNlL2luY2x1ZGUvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvJGRpc3RfbmFtZScsCi0gICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9iaW4nLAotICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9weWRvYy5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5Ci1AQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIERvYzoKLSAgICAgZG9jbW9kdWxlID0gZG9jY2xhc3MgPSBkb2Nyb3V0aW5lID0gZG9jb3RoZXIgPSBkb2Nwcm9wZXJ0eSA9IGRvY2RhdGEgPSBmYWlsCi0gCi0gICAgIGRlZiBnZXRkb2Nsb2Moc2VsZiwgb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgIGJhc2VkaXI9b3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAic3lzLmxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIrc3lzLnZlcnNpb25bMDozXSkpOgotICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb2NhdGlvbiBvZiBtb2R1bGUgZG9jcyBvciBOb25lIiIiCi0gCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKLUBAIC0yODgsMTMgKzI4OCwxOSBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6Ci0gICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6Ci0gICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcHl0aG9uIikpCi0rICAgICAgICAgICAgaWYgc3lzLmxpYiAhPSAibGliIjoKLSsgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBpZiBzeXMubGliICE9ICJsaWIiOgotKyAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCi0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcGFja2FnZXMiKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXBhY2thZ2VzIikpCi0gICAgIHJldHVybiBzaXRlcGFja2FnZXMKLSAKLSBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotQEAgLTQsMTAgKzQsMTEgQEAKLSBpbXBvcnQgdW5pdHRlc3QKLSBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlCi0gZGwgPSBpbXBvcnRfbW9kdWxlKCdkbCcsIGRlcHJlY2F0ZWQ9VHJ1ZSkKLStpbXBvcnQgc3lzCi0gCi0gc2hhcmVkbGlicyA9IFsKLS0gICAgKCcvdXNyL2xpYi9saWJjLnNvJywgJ2dldHBpZCcpLAotLSAgICAoJy9saWIvbGliYy5zby42JywgJ2dldHBpZCcpLAotKyAgICAoJy91c3IvJytzeXMubGliKycvbGliYy5zbycsICdnZXRwaWQnKSwKLSsgICAgKCcvJytzeXMubGliKycvbGliYy5zby42JywgJ2dldHBpZCcpLAotICAgICAoJy91c3IvYmluL2N5Z3dpbjEuZGxsJywgJ2dldHBpZCcpLAotICAgICAoJy91c3IvbGliL2xpYmMuZHlsaWInLCAnZ2V0cGlkJyksCi0gICAgIF0KLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQotQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLSAKLSAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKLUluZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgotQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwotIAotICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKLSBNQUNIREVQPQlATUFDSERFUEAKLStMSUI9CQlATElCQAotIAotICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQotIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKLSBNQU5ESVI9CQlAbWFuZGlyQAotIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAotIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCi0tU0NSSVBURElSPQkkKHByZWZpeCkvbGliCi0rU0NSSVBURElSPQkkKHByZWZpeCkvQExJQkAKLSAKLSAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCi0gQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NDQsNiArNjQ1LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAotIAkJLURFWEVDX1BSRUZJWD0nIiQoZXhlY19wcmVmaXgpIicgXAotIAkJLURWRVJTSU9OPSciJChWRVJTSU9OKSInIFwKLSAJCS1EVlBBVEg9JyIkKFZQQVRIKSInIFwKLSsJCS1ETElCPSciJChMSUIpIicgXAotIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCi0gCi0gTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKLUBAIC02OTIsNyArNjk0LDcgQEAgcmVnZW4tYXN0OgotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAotIAotIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLS0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotKwkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLURMSUI9JyIkKExJQikiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSAKLSBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi0gCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9Nb2R1bGVzL2dldHBhdGguYwotKysrIFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKLUBAIC0xMDAsNiArMTAwLDEzIEBACi0gI2Vycm9yICJQUkVGSVgsIEVYRUNfUFJFRklYLCBWRVJTSU9OLCBhbmQgVlBBVEggbXVzdCBiZSBjb25zdGFudCBkZWZpbmVkIgotICNlbmRpZgotIAotKyNkZWZpbmUgTElCX1BZVEhPTiBMSUIgIi9weXRob24iIFZFUlNJT04KLSsKLSsjaWZuZGVmIFBZVEhPTlBBVEgKLSsjZGVmaW5lIFBZVEhPTlBBVEggUFJFRklYICIvIiBMSUJfUFlUSE9OICI6IiBcCi0rICAgICAgICBFWEVDX1BSRUZJWCAiLyIgTElCX1BZVEhPTiAiL2xpYi1keW5sb2FkIgotKyNlbmRpZgotKwotICNpZm5kZWYgTEFORE1BUksKLSAjZGVmaW5lIExBTkRNQVJLICJvcy5weSIKLSAjZW5kaWYKLUBAIC0xMDgsNyArMTE1LDcgQEAgc3RhdGljIGNoYXIgcHJlZml4W01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgZXhlY19wcmVmaXhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciBwcm9ncGF0aFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyICptb2R1bGVfc2VhcmNoX3BhdGggPSBOVUxMOwotLXN0YXRpYyBjaGFyIGxpYl9weXRob25bXSA9ICJsaWIvcHl0aG9uIiBWRVJTSU9OOwotK3N0YXRpYyBjaGFyIGxpYl9weXRob25bXSA9IExJQl9QWVRIT047Ci0gCi0gc3RhdGljIHZvaWQKLSByZWR1Y2UoY2hhciAqZGlyKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi1AQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKLSB7Ci0gCXJldHVybiBQTEFURk9STTsKLSB9Ci0rCi0rI2lmbmRlZiBMSUIKLSsjZGVmaW5lIExJQiAibGliIgotKyNlbmRpZgotKwotK2NvbnN0IGNoYXIgKgotK1B5X0dldExpYih2b2lkKQotK3sKLSsJcmV0dXJuIExJQjsKLSt9Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCi0rKysgUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKLUBAIC0xNDM3LDYgKzE0MzcsOCBAQCBfUHlTeXNfSW5pdCh2b2lkKQotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UGxhdGZvcm0oKSkpOwotKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJsaWIiLAotKyAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldExpYigpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygicHJlZml4IiwKLUluZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotQEAgLTc1OCw2ICs3NTgsMTEgQEAgU3VuT1MqKQotICAgICA7OwotIGVzYWMKLSAKLStBQ19TVUJTVChMSUIpCi0rQUNfTVNHX0NIRUNLSU5HKExJQikKLStMSUI9YGJhc2VuYW1lICR7bGliZGlyfWAKLStBQ19NU0dfUkVTVUxUKCRMSUIpCi0rCi0gCi0gQUNfU1VCU1QoTElCUkFSWSkKLSBBQ19NU0dfQ0hFQ0tJTkcoTElCUkFSWSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9ub2hvc3RsaWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzgwNjBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi0yMDE0LzEyLzE1Ci1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy45L3NldHVwLnB5Ci1AQCAtNDM5LDkgKzQzOSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgZGVmIGRldGVjdF9tb2R1bGVzKHNlbGYpOgotICAgICAgICAgIyBFbnN1cmUgdGhhdCAvdXNyL2xvY2FsIGlzIGFsd2F5cyB1c2VkCi0tICAgICAgICBpZiBub3QgY3Jvc3NfY29tcGlsaW5nOgotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQotKyAgICAgICAgIyBpZiBub3QgY3Jvc3NfY29tcGlsaW5nOgotKyAgICAgICAgICAgICMgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLCAnL3Vzci9sb2NhbC9saWInKQotKyAgICAgICAgICAgICMgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKLSAgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBzZWxmLmFkZF9nY2NfcGF0aHMoKQotICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKLUBAIC00ODAsMTUgKzQ4MCwxNSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHJldmVyc2VkKG9wdGlvbnMuZGlycyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KGRpcl9saXN0LCBkaXJlY3RvcnkpCi0gCi0tICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0tICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSsgICAgICAgICNpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0rICAgICAgICAgICAgICAgICNhbmQgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJyk6Ci0gICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawotICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCi0gICAgICAgICAgICAgIyBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIHRoYW4KLSAgICAgICAgICAgICAjIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkIChpc3N1ZSAjNzQ3MykKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCi0rICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRElSIikpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotKyAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKLSAKLSAgICAgICAgIHRyeToKLUBAIC03NjEsOCArNzYxLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBwYXNzICMgSXNzdWUgNzM4NDogQWxyZWFkeSBsaW5rZWQgYWdhaW5zdCBjdXJzZXMgb3IgdGluZm8uCi0gICAgICAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoY3Vyc2VzX2xpYnJhcnkpCi0tICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvdGVybWNhcCddLAotKyAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtY2FwJyk6Ci0gICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKCd0ZXJtY2FwJykKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdyZWFkbGluZScsIFsncmVhZGxpbmUuYyddLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDJhYWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3JldmVydF91c2Vfb2Zfc3lzY29uZmlnZGF0YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLU9uIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiwgc3lzY29uZmlnIHJlYWQgdGhlIGRhdGEgZnJvbSBib3RoIHRoZSBNYWtlZmlsZSBhbmQKLXRoZSBQeXRob24uaCBmaWxlIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBjcmVhdGVkIGRpY3Rpb25hcmllcyB3aXRoIHRoZWlyIHZhcmlhYmxlcwotYW5kIHVzZWQgdGhvc2Ugd2hlbiB1c2luZyBnZXRfY29uZmlnX3ZhcigpLCBub3cgaXQgdXNlcyBfc3lzY29uZmlnZGF0YS5idWlsZF90aW1lX3ZhcnNbXQotd2hpY2ggY29udGFpbnMgaW5mb3JtYXRpb24gZnJvbSB0aGUgSE9TVCwgZXJyb25lb3VzIGluIG91ciBjYXNlLCB0aGlzIHBhdGNoIHJldmVydHMgdGhpcwotYmVoYXZpb3IgYW5kIHVzZXMgUHl0aG9uLmggYW5kIE1ha2VmaWxlIHRvIGdldCBpbmZvcm1hdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjkvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTQwMSwxMiArNDAxLDY2IEBAIF9jb25maWdfdmFycyA9IE5vbmUKLSAKLSBkZWYgX2luaXRfcG9zaXgoKToKLSAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgotLSAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKLS0gICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCi0tICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKLS0gICAgX2NvbmZpZ192YXJzID0ge30KLS0gICAgX2NvbmZpZ192YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCi0rICAgIGcgPSB7fQotKyAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBNYWtlZmlsZToKLSsgICAgdHJ5OgotKyAgICAgICAgZmlsZW5hbWUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQotKyAgICAgICAgcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIGcpCi0rICAgIGV4Y2VwdCBJT0Vycm9yLCBtc2c6Ci0rICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotKyAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotKyAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLSsKLSsgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotKwotKyAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgotKyAgICB0cnk6Ci0rICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCi0rICAgICAgICBwYXJzZV9jb25maWdfaChmaWxlKGZpbGVuYW1lKSwgZykKLSsgICAgZXhjZXB0IElPRXJyb3IsIG1zZzoKLSsgICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0rICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0rICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotKwotKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0rCi0rICAgICMgT24gQUlYLCB0aGVyZSBhcmUgd3JvbmcgcGF0aHMgdG8gdGhlIGxpbmtlciBzY3JpcHRzIGluIHRoZSBNYWtlZmlsZQotKyAgICAjIC0tIHRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgUHl0aG9uIHNvdXJjZSwgYnV0IHdoZW4gaW5zdGFsbGVkCi0rICAgICMgdGhlIHNjcmlwdHMgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LgotKyAgICBpZiBweXRob25fYnVpbGQ6Ci0rICAgICAgICBnWydMRFNIQVJFRCddID0gZ1snQkxEU0hBUkVEJ10KLSAKLSsgICAgZWxpZiBnZXRfcHl0aG9uX3ZlcnNpb24oKSA8ICcyLjEnOgotKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIHR3byBicmFuY2hlcyBhcmUgZm9yIDEuNS4yIGNvbXBhdGliaWxpdHkuCi0rICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2FpeDQnOiAgICAgICAgICAjIHdoYXQgYWJvdXQgQUlYIDMueCA/Ci0rICAgICAgICAgICAgIyBMaW5rZXIgc2NyaXB0IGlzIGluIHRoZSBjb25maWcgZGlyZWN0b3J5LCBub3QgaW4gTW9kdWxlcyBhcyB0aGUKLSsgICAgICAgICAgICAjIE1ha2VmaWxlIHNheXMuCi0rICAgICAgICAgICAgcHl0aG9uX2xpYiA9IGdldF9weXRob25fbGliKHN0YW5kYXJkX2xpYj0xKQotKyAgICAgICAgICAgIGxkX3NvX2FpeCA9IG9zLnBhdGguam9pbihweXRob25fbGliLCAnY29uZmlnJywgJ2xkX3NvX2FpeCcpCi0rICAgICAgICAgICAgcHl0aG9uX2V4cCA9IG9zLnBhdGguam9pbihweXRob25fbGliLCAnY29uZmlnJywgJ3B5dGhvbi5leHAnKQotKwotKyAgICAgICAgICAgIGdbJ0xEU0hBUkVEJ10gPSAiJXMgJXMgLWJJOiVzIiAlIChsZF9zb19haXgsIGdbJ0NDJ10sIHB5dGhvbl9leHApCi0rCi0rICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnYmVvcyc6Ci0rICAgICAgICAgICAgIyBMaW5rZXIgc2NyaXB0IGlzIGluIHRoZSBjb25maWcgZGlyZWN0b3J5LiAgSW4gdGhlIE1ha2VmaWxlIGl0IGlzCi0rICAgICAgICAgICAgIyByZWxhdGl2ZSB0byB0aGUgc3JjZGlyLCB3aGljaCBhZnRlciBpbnN0YWxsYXRpb24gbm8gbG9uZ2VyIG1ha2VzCi0rICAgICAgICAgICAgIyBzZW5zZS4KLSsgICAgICAgICAgICBweXRob25fbGliID0gZ2V0X3B5dGhvbl9saWIoc3RhbmRhcmRfbGliPTEpCi0rICAgICAgICAgICAgbGlua2Vyc2NyaXB0X3BhdGggPSBzdHJpbmcuc3BsaXQoZ1snTERTSEFSRUQnXSlbMF0KLSsgICAgICAgICAgICBsaW5rZXJzY3JpcHRfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobGlua2Vyc2NyaXB0X3BhdGgpCi0rICAgICAgICAgICAgbGlua2Vyc2NyaXB0ID0gb3MucGF0aC5qb2luKHB5dGhvbl9saWIsICdjb25maWcnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZXJzY3JpcHRfbmFtZSkKLSsKLSsgICAgICAgICAgICAjIFhYWCB0aGlzIGlzbid0IHRoZSByaWdodCBwbGFjZSB0byBkbyB0aGlzOiBhZGRpbmcgdGhlIFB5dGhvbgotKyAgICAgICAgICAgICMgbGlicmFyeSB0byB0aGUgbGluaywgaWYgbmVlZGVkLCBzaG91bGQgYmUgaW4gdGhlICJidWlsZF9leHQiCi0rICAgICAgICAgICAgIyBjb21tYW5kLiAgKEl0J3MgYWxzbyBuZWVkZWQgZm9yIG5vbi1NUyBjb21waWxlcnMgb24gV2luZG93cywgYW5kCi0rICAgICAgICAgICAgIyBpdCdzIHRha2VuIGNhcmUgb2YgZm9yIHRoZW0gYnkgdGhlICdidWlsZF9leHQuZ2V0X2xpYnJhcmllcygpJwotKyAgICAgICAgICAgICMgbWV0aG9kLikKLSsgICAgICAgICAgICBnWydMRFNIQVJFRCddID0gKCIlcyAtTCVzL2xpYiAtbHB5dGhvbiVzIiAlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlua2Vyc2NyaXB0LCBQUkVGSVgsIGdldF9weXRob25fdmVyc2lvbigpKSkKLSsKLSsgICAgZ2xvYmFsIF9jb25maWdfdmFycwotKyAgICBfY29uZmlnX3ZhcnMgPSBnCi0gCi0gZGVmIF9pbml0X250KCk6Ci0gICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgTlQiIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3VuaXhjY29tcGlsZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS91bml4Y2NvbXBpbGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTAyODI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3VuaXhjY29tcGlsZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIENDIHZhcmlhYmxlLHNvbWV0aW1lcyBsaWtlOiJ4ODZfNjQtcG9reS1saW51eC1nY2MgICAtbTY0IC0tc3lzcm9vdD0vJHtUTVBESVJ9L3N5c3Jvb3RzL3FlbXV4ODYtNjQiLCBjb250YWlucyBvcHRpb24gaW5mb3JtYXRpb24uIAotVGhpcyB3aWxsIGxlYWQgdG8gd3JvbmcgY29tcGlsZXIgbmFtZSAicWVtdXg4Ni02NCIgcmF0aGVyIHRoYW4gIng4Nl82NC1wb2t5LWxpbnV4LWdjYyIgd2hlbiBweXRob24gZmluZGluZyB0aGUgY29tcGlsZXIgbmFtZS4KLQotU2lnbmVkLW9mZi1ieTogTWVpIExlaSA8bGVpLm1laUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IFB5dGhvbi0yLjcuMi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkJMjAxMS0xMS0yNCAxMzo1MToxMC41Mzk5OTg3MjIgLTA4MDAKLSsrKyBQeXRob24tMi43LjIvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CTIwMTEtMTEtMjQgMTU6NTQ6MzYuODcyMTM3NzY2IC0wODAwCi1AQCAtMjgyLDcgKzI4Miw3IEBACi0gICAgICAgICAjIHRoaXMgdGltZSwgdGhlcmUncyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoaXMgaW5mb3JtYXRpb24gZnJvbQotICAgICAgICAgIyB0aGUgY29uZmlndXJhdGlvbiBkYXRhIHN0b3JlZCBpbiB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiwgc28KLSAgICAgICAgICMgd2UgdXNlIHRoaXMgaGFjay4KLS0gICAgICAgIGNvbXBpbGVyID0gb3MucGF0aC5iYXNlbmFtZShzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNDIikpCi0rICAgICAgICBjb21waWxlciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ0MiKQotICAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzo2XSA9PSAiZGFyd2luIjoKLSAgICAgICAgICAgICAjIE1hY09TWCdzIGxpbmtlciBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIC1SIGZsYWcgYXQgYWxsCi0gICAgICAgICAgICAgcmV0dXJuICItTCIgKyBkaXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM2ODEwZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi5pbmMKLUVYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIGV4cGF0LW5hdGl2ZSBnZGJtLW5hdGl2ZSBkYi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICAgICAgIGZpbGU6Ly8wNS1lbmFibGUtY3R5cGVzLWNyb3NzLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8xMC1kaXN0dXRpbHMtZml4LXN3aWctcGFyYW1ldGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8xMS1kaXN0dXRpbHMtbmV2ZXItbW9kaWZ5LXNoZWJhbmctbGluZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ub2hvc3RsaWJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1SZXNvbHZlLWludGVybWVkaWF0ZS1zdGFnaW5nLWlzc3Vlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1uYXRpdmUtZml4LW9uZS1kb19wb3B1bGF0ZV9zeXNyb290LXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiIKLQotaW5oZXJpdCBuYXRpdmUKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aC1zeXN0ZW0tZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSIKLQotRVhUUkFfT0VNQUtFID0gJ1wKLSAgTElCQz0iIiBcCi0gIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCi0nCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0JYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi0jIFJlZ2VuZXJhdGUgYWxsIG9mIHRoZSBnZW5lcmF0ZWQgZmlsZXMKLSMgVGhpcyBlbnN1cmVzIHRoYXQgcGdlbiBhbmQgZnJpZW5kcyBnZXQgY3JlYXRlZCBkdXJpbmcgdGhlIGNvbXBpbGUgcGhhc2UKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBvZV9ydW5tYWtlIHJlZ2VuLWFsbAotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQotCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59Ci0KLQkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgotCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KLQkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob258JyAkUFlUSFNDUklQVAotCWRvbmUKLQotCSMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCi0JIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCi0JIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCi0JIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgotCWxuIC1zIHB5dGhvbi1uYXRpdmUvcHl0aG9uICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uCi0KLQkjIFdlIGRvbid0IHdhbnQgbW9kdWxlcyBpbiB+Ly5sb2NhbCBiZWluZyB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UKLQkjIGluc3RhbGxlZCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QsIHNvIGRpc2FibGUgdXNlciBzaXRlIHN1cHBvcnQuCi0Jc2VkIC1pIC1lICdzLF5cKEVOQUJMRV9VU0VSX1NJVEUgPSBcKS4qLFwxRmFsc2UsJyAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2l0ZS5weQotfQotCi1weXRob24oKXsKLQotICAgICMgUmVhZCBKU09OIG1hbmlmZXN0Ci0gICAgaW1wb3J0IGpzb24KLSAgICBweXRob25kaXIgPSBkLmdldFZhcignVEhJU0RJUicpCi0gICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgotICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIpCi0KLSAgICBycHJvdmlkZXMgPSBkLmdldFZhcignUlBST1ZJREVTJykuc3BsaXQoKQotCi0gICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24tbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbi1mb28tbmF0aXZlCi0gICAgcG4gPSAncHl0aG9uJwotCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5ICsgJy1uYXRpdmUnCi0gICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcnByb3ZpZGVzOgotICAgICAgICAgICAgICBycHJvdmlkZXMuYXBwZW5kKHB5cGFja2FnZSkKLQotICAgIGQuc2V0VmFyKCdSUFJPVklERVMnLCAnICcuam9pbihycHJvdmlkZXMpKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCmluZGV4IDBlNjQ1MDEuLmNlM2MyMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKQEAgLTUsNiArNSw4IEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xZGVjZTc4MjFiZjNmZDcwZmUxMzA5ZWFhMzdkNTJhMiIKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCIKKwogaW5oZXJpdCBweXBpCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGlwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OGIzMjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJQeXRob24gcGFyc2luZyBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vcHlwYXJzaW5nLndpa2lzcGFjZXMuY29tLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjU3YTU2NjIzMzg4ODUxM2UxZjA3YmExM2UyZjQ3ZjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMDk1M2U0N2EwMTEyZjdhNjVhZWMyMzA1ZmZkZjdiNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjAzZWM4NzgzYmY3NzFhMTU1YjIwNzI3OWI5YmNjYjhkZWEwMmQ4ZjBjOWU1ZjhlYWQ1MDdiYzMyNDZlY2MxIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicHlwYXJzaW5nLSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKaW5kZXggMDI3ZTI1OS4uMDdjMmY4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCkBAIC0xMCw4ICsxMCwxMCBAQAogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiODlhNTkyZDczM2IzMWUxODBhNGI2YWQ3NjBjMDY4NWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VhZTc4MmNjZjM2Yjc5MGMyMWJkZTdkODZhNGYzMDNhNDQxY2Q3NzAzNmIyNWM1NTlhNjAyY2Y1MTg2Y2U0ZCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYzk1NmVlYTE0MmFmOWMyYjAyZDcyZTNjMDQyYWYzMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWM2ZTYwMTFlYzJmNmQ1N2Q0M2EzZjkyOTZjNGVmMDIyYzJjYmY0OWJhYjI2YjQwN2ZlNjc5OTJhZTMzOTdmIgogCiBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MS40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfNDEuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjk0NDA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MS40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCi0KLVBST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgotUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgotUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwppbmRleCBjMzg2MDkwLi4wNWIzMjgxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCkBAIC0yLDEwICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4LyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mODJlYjNhMWE3ZmFkZTYwYmRhNTk4MDkzNTA4NGI2MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImU5MmMyM2M4ODJjN2Q1NTY0Y2U1NzczZmUzMWIyNzcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwZjYxMDI3OWU4YjI1NzhjYWI2ZGIyMDc0MTEzMDMzMTczNWM3ODFiNTYwNTNjNTljNDA3NmRhMjdmMDZiNjYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00M2NmYzllNGFjMGUzNzdhY2ZiOWI3NmY1NmI4NDE1ZCIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2MzBjMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeXRob24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmciCi1MSUNFTlNFID0gIlBTRnYyIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0jIGJ1bXAgdGhpcyBvbiBldmVyeSBjaGFuZ2UgaW4gY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5Ci1JTkNfUFIgPSAicjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU0NjYyNDI5ODliZDMzYzFiZDJiNmE1MjZhNzQyNDk4IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiM2I2ZDJjOTJmNDJhNjA2Njc4MTQzNThhYjlmMGNmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDQzZjAzM2NkYmQwYWE3YjcwMjNjODFiMGU5ODZmZDExZTY1M2I1MjQ4ZGFjOTE0NGQ1MDhmMTE4MTJiYTQxIgotCi0jIHB5dGhvbiByZWNpcGUgaXMgYWN0dWFsbHkgcHl0aG9uIDIueAotIyBhbHNvLCBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj4yKFwuXGQrKSspLnRhciIKLQotQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgotCi1QWVRIT05fTUFKTUlOID0gIjIuNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gIC0td2l0aC10aHJlYWRzIFwKLSAgLS13aXRoLXB5bWFsbG9jIFwKLSAgLS13aXRob3V0LWN4eC1tYWluIFwKLSAgLS13aXRoLXNpZ25hbC1tb2R1bGUgXAotICAtLWVuYWJsZS1zaGFyZWQgXAotICAtLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0gXAotICBhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vIGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfaD1ubyBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWxpYmRpcmxlYWY9IiQoZWNobyAke2xpYmRpcn0gfCBzZWQgLWUgJ3M6JHtwcmVmaXh9Lzo6JykiCi0Jc2VkIC1pIC1lICJzOlNFRE1FTElCTEVBRjoke2xpYmRpcmxlYWZ9OmciIFwKLQkJJHtTfS9jb25maWd1cmUuYWMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9L2luc3RhbGw6aW5zdGFsbDpnJyBcCi0JCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vbWtkaXI6bWtkaXI6ZycgXAotCQkke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDJmODQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA0Y2RmMmU5ZGYxM2M2MzI3ZmNjOTRkNTNlNDk1MzAwNTU0M2FlZjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDYgQXByIDIwMTYgMTc6NDM6MDIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xMF0gZGlzdHV0aWxzOiBzZXQgdGhlIHByZWZpeCB0byBiZSBpbnNpZGUgc3RhZ2luZwotIGRpcmVjdG9yeQotCi1UaGUgcHJvcGVyIHByZWZpeCBpcyBpbnNpZGUgb3VyIHN0YWdpbmcgYXJlYS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLW1lZGlhLmRlPgotU2lnbmVkLW9mZi1ieTogUGhpbCBCbHVuZGVsbCA8cGhpbGJAZ251Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgfCAxMCArKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLWluZGV4IGRlN2RhMWQuLmYzYWFjZjcgMTAwNjQ0Ci0tLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC03NSw3ICs3NSw3IEBAIGRlZiBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTAsIHByZWZpeD1Ob25lKToKLSAgICAgc3lzLmV4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCi0gICAgICIiIgotICAgICBpZiBwcmVmaXggaXMgTm9uZToKLS0gICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAotKyAgICAgICAgcHJlZml4ID0gb3MuZW52aXJvblsnU1RBR0lOR19JTkNESVInXS5yc3RyaXAoJ2luY2x1ZGUnKQotIAotICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6Ci0gICAgICAgICBpZiBweXRob25fYnVpbGQ6Ci1AQCAtMTE1LDEyICsxMTUsMTYgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKLSAgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICAgc3lzLmV4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCi0gICAgICIiIgotKyAgICBsaWJfYmFzZW5hbWUgPSBvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddLnNwbGl0KCcvJylbLTFdCi0gICAgIGlmIHByZWZpeCBpcyBOb25lOgotLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCi0rICAgICAgICBpZiBwbGF0X3NwZWNpZmljOgotKyAgICAgICAgICAgIHByZWZpeCA9IG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10ucnN0cmlwKGxpYl9iYXNlbmFtZSkKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgcHJlZml4ID0gUFJFRklYCi0gCi0gICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKLSAgICAgICAgIGxpYnB5dGhvbiA9IG9zLnBhdGguam9pbihwcmVmaXgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYiIsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliX2Jhc2VuYW1lLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgotICAgICAgICAgICAgIHJldHVybiBsaWJweXRob24KLSAgICAgICAgIGVsc2U6Ci0tLSAKLTIuOC4wLnJjMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbi1SZXNvbHZlLWludGVybWVkaWF0ZS1zdGFnaW5nLWlzc3Vlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZmMmNjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA3N2JjYjMyMzhiMjg1M2Q1MTE3MTQ1NDRlMGY4NGEzN2JlNmM3OWJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1EYXRlOiBXZWQsIDE0IE5vdiAyMDEyIDE0OjMxOjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjogUmVzb2x2ZSBpbnRlcm1lZGlhdGUgc3RhZ2luZyBpc3N1ZXMKLQotV2hlbiBjcm9zcyBjb21waWxpbmcgcHl0aG9uLCB3ZSB1c2VkIHRvIG5lZWQgdG8gaW5zdGFsbCB0aGUgTWFrZWZpbGUsIHB5Y29uZmlnLmgKLWFuZCB0aGUgcHl0aG9uIGxpYnJhcnkgdG8gdGhlaXIgZmluYWwgbG9jYXRpb24gYmVmb3JlIGJlaW5nIGFibGUgdG8gY29tcGlsZSB0aGUKLXJlc3Qgb2YgcHl0aG9uLiBUaGlzIGNoYW5nZSBhbGxvd3MgdXMgdG8gcG9pbnQgcHl0aG9uIGF0IGl0cyBvd24gc291cmNlIHdoZW4KLWJ1aWxkaW5nLCBhdm9pZGluZyBhIHZhcmlldHkgb2Ygc3lzcm9vdCBzdGFnaW5nIGlzc3VlcyBhbmQgc2ltcGxpZnlpbmcgdGhlIG1haW4KLXB5dGhvbiByZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxMi8xMS8xMwotCi0tLS0KLSBMaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSB8IDMgKysrCi0gTGliL3N5c2NvbmZpZy5weSAgICAgICAgICAgfCA1ICsrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLWluZGV4IDJmNGI4Y2EuLjE1YmNlYjUgMTAwNjQ0Ci0tLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC0zMSw2ICszMSw5IEBAIGVsc2U6Ci0gICAgICMgc3lzLmV4ZWN1dGFibGUgY2FuIGJlIGVtcHR5IGlmIGFyZ3ZbMF0gaGFzIGJlZW4gY2hhbmdlZCBhbmQgUHl0aG9uIGlzCi0gICAgICMgdW5hYmxlIHRvIHJldHJpZXZlIHRoZSByZWFsIHByb2dyYW0gbmFtZQotICAgICBwcm9qZWN0X2Jhc2UgPSBvcy5nZXRjd2QoKQotK19QWVRIT05CVUlMRERJUiA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05CVUlMRERJUiIsIE5vbmUpCi0raWYgX1BZVEhPTkJVSUxERElSOgotKyAgICBwcm9qZWN0X2Jhc2UgPSBfUFlUSE9OQlVJTERESVIKLSBpZiBvcy5uYW1lID09ICJudCIgYW5kICJwY2J1aWxkIiBpbiBwcm9qZWN0X2Jhc2VbLTg6XS5sb3dlcigpOgotICAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIpKQotICMgUEMvVlM3LjEKLWRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggOWM4MzUwZC4uYmRkYmUyZSAxMDA2NDQKLS0tLSBhL0xpYi9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9zeXNjb25maWcucHkKLUBAIC05Myw2ICs5Myw3IEBAIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCi0gX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCi0gX0NPTkZJR19WQVJTID0gTm9uZQotIF9VU0VSX0JBU0UgPSBOb25lCi0rX1BZVEhPTkJVSUxERElSID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkJVSUxERElSIiwgTm9uZSkKLSAKLSBkZWYgX3NhZmVfcmVhbHBhdGgocGF0aCk6Ci0gICAgIHRyeToKLUBAIC0xMDAsNyArMTAxLDkgQEAgZGVmIF9zYWZlX3JlYWxwYXRoKHBhdGgpOgotICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgIHJldHVybiBwYXRoCi0gCi0taWYgc3lzLmV4ZWN1dGFibGU6Ci0raWYgX1BZVEhPTkJVSUxERElSOgotKyAgICBfUFJPSkVDVF9CQVNFID0gX1BZVEhPTkJVSUxERElSCi0rZWxpZiBzeXMuZXhlY3V0YWJsZToKLSAgICAgX1BST0pFQ1RfQkFTRSA9IG9zLnBhdGguZGlybmFtZShfc2FmZV9yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkpCi0gZWxzZToKLSAgICAgIyBzeXMuZXhlY3V0YWJsZSBjYW4gYmUgZW1wdHkgaWYgYXJndlswXSBoYXMgYmVlbiBjaGFuZ2VkIGFuZCBQeXRob24gaXMKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24yLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNGY4MjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotRnJvbSAzZjQ5YmU4MWUzMWMxNjQ2NTRhZWIxMGI2NWViYWRlOTgyY2EyZWQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjIgT2N0IDIwMTggMTU6MjQ6NDggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uMjogdXNlIGNjX2Jhc2VuYW1lIHRvIHJlcGxhY2UgQ0MgZm9yIGNoZWNraW5nIGNvbXBpbGVyCi0KLVdoZW4gd29ya2luZyBwYXRoIGNvbnRhaW5zICJjbGFuZyIvImdjYyIvImljYyIsIGl0IG1pZ2h0IGJlIHBhcnQgb2YgJENDCi1iZWNhdXNlIG9mIHRoZSAiLS1zeXNyb290IiBwYXJhbWV0ZXIuIFRoYXQgY291bGQgY2F1c2UganVkZ2VtZW50IGVycm9yCi1hYm91dCBjbGFuZy9nY2MvaWNjIGNvbXBpbGVycy4gZS5nLgotV2hlbiAiaWNjIiBpcyBjb250YWluZGVkIGluIHdvcmtpbmcgcGF0aCwgYmVsb3cgZXJyb3JzIGFyZSByZXBvcnRlZCB3aGVuCi1jb21waWxpbmcgcHl0aG9uOgoteDg2XzY0LXdycy1saW51eC1nY2M6IGVycm9yOiBzdHJpY3Q6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLXg4Nl82NC13cnMtbGludXgtZ2NjOiBlcnJvcjogdW5yZWNvZ25pemVkIGNvbW1hbmQgbGluZSBvcHRpb24gJy1mcC1tb2RlbCcKLQotSGVyZSB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIgdG8gYXZvaWQgc3VjaAota2luZCBvZiBpc3N1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLQotUGF0Y2ggb3JpZ25hbGx5IGZyb20gTGkgWmhvdSwgSSBqdXN0IHJld29yayBpdCB0byBuZXcgdmVyc2lvbgotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZGIxYzk0MC4uZGZjZDg5YSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjg0LDcgKzY4NCw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCi0gcHJlc2V0X2N4eD0iJENYWCIKLSBpZiB0ZXN0IC16ICIkQ1hYIgotIHRoZW4KLS0gICAgICAgIGNhc2UgIiRDQyIgaW4KLSsgICAgICAgIGNhc2UgIiRjY19iYXNlbmFtZSIgaW4KLSAgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwotICAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7Ci0gICAgICAgICBlc2FjCi1AQCAtNzU3LDE0ICs3NTcsMTQgQEAgcm1kaXIgQ2FzZVNlbnNpdGl2ZVRlc3REaXIKLSAKLSBjYXNlICRNQUNIREVQIGluCi0gYnNkb3MqKQotLSAgICBjYXNlICRDQyBpbgotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBnY2MpIENDPSIkQ0MgLURfSEFWRV9CU0RJIjs7Ci0gICAgIGVzYWM7OwotIGVzYWMKLSAKLSBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gaHAqfEhQKikKLS0gICAgY2FzZSAkQ0MgaW4KLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgY2N8Ki9jYykgQ0M9IiRDQyAtQWUiOzsKLSAgICAgZXNhYzs7Ci0gU3VuT1MqKQotQEAgLTEwODQsNyArMTA4NCw3IEBAIHRoZW4KLSAgICAgICAgIGZpCi0gCi0gICAgICAgICAjIENsYW5nIGFsc28gbmVlZHMgLWZ3cmFwdgotLSAgICAgICAgY2FzZSAkQ0MgaW4KLSsgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgICAgKmNsYW5nKikgV1JBUD0iLWZ3cmFwdiIKLSAgICAgICAgICAgICA7OwotICAgICAgICAgZXNhYwotQEAgLTEzMDQsNyArMTMwNCw3IEBAIHllcykKLSBlc2FjCi0gCi0gIyBJQ0MgbmVlZHMgLWZwLW1vZGVsIHN0cmljdCBvciBmbG9hdHMgYmVoYXZlIGJhZGx5Ci0tY2FzZSAiJENDIiBpbgotK2Nhc2UgIiRjY19iYXNlbmFtZSIgaW4KLSAqaWNjKikKLSAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWZwLW1vZGVsIHN0cmljdCIKLSAgICAgOzsKLUBAIC0xNDQzLDcgKzE0NDMsNyBAQCBlbHNlCi0gZmldLAotIFtBQ19NU0dfUkVTVUxUKG5vKV0pCi0gaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCi0tICBjYXNlICRDQyBpbgotKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgKmNsYW5nKikKLSAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgICBMVE9GTEFHUz0iLWZsdG8iCi1AQCAtMTUwOCw3ICsxNTA4LDcgQEAgdGhlbgotICAgZmkKLSBmaQotIExMVk1fUFJPRl9FUlI9bm8KLS1jYXNlICRDQyBpbgotK2Nhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAqY2xhbmcqKQotICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1mcHJvZmlsZS1pbnN0ci1nZW5lcmF0ZSIKLUBAIC0yMzIyLDcgKzIzMjIsNyBAQCB0aGVuCi0gCQl0aGVuIENDU0hBUkVEPSItZlBJQyIKLSAJCWVsc2UgQ0NTSEFSRUQ9Ii1LcGljIC1iZWxmIgotIAkJZmk7OwotLQlJUklYKi82KikgIGNhc2UgJENDIGluCi0rCUlSSVgqLzYqKSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJCSAgICpnY2MqKSBDQ1NIQVJFRD0iLXNoYXJlZCI7OwotIAkJICAgKikgQ0NTSEFSRUQ9IiI7OwotIAkJICAgZXNhYzs7Ci1AQCAtMjM2Niw3ICsyMzY2LDcgQEAgdGhlbgotIAkJdGhlbgotIAkJCUxJTktGT1JTSEFSRUQ9Ii1XbCwtLWV4cG9ydC1keW5hbWljIgotIAkJZmk7OwotLQlTdW5PUy81KikgY2FzZSAkQ0MgaW4KLSsJU3VuT1MvNSopIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCQkgICpnY2MqKQotIAkJICAgIGlmICRDQyAtWGxpbmtlciAtLWhlbHAgMj4mMSB8IGdyZXAgZXhwb3J0LWR5bmFtaWMgPi9kZXYvbnVsbAotIAkJICAgIHRoZW4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3OTVhNzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1XZSBuZWVkIHRvIGVuc3VyZSBvdXIgaG9zdCB0b29scyBnZXQgcnVuIGR1cmluZyBidWlsZCwgbm90IHRoZSBmcmVzaGx5Ci1idWlsdCBjcm9zcy10b29scyAodGhpcyB3aWxsIG5vdCB3b3JrKSwgc28gd2UgaW50cm9kdWNlIEhPU1RQWVRIT04gYW5kIEhPU1RQR0VOLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjE0Ci1TaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgotCi1JbmRleDogUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy4xMy9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yNDUsNiArMjQ1LDcgQEAgTElCRkZJX0lOQ0xVREVESVI9CUBMSUJGRklfSU5DTFVERURJUkAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICMgUGFyc2VyCi0gUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCi0rSE9TVFBHRU49CSQoUEdFTikkKEVYRSkKLSAKLSBQU1JDUz0JCVwKLSAJCVBhcnNlci9hY2NlbGVyLmMgXAotQEAgLTUxMiw3ICs1MTMsNyBAQCAkKEJVSUxEUFlUSE9OKToJTW9kdWxlcy9weXRob24ubyAkKExJQlJBCi0gCQkJJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKLSAKLSBwbGF0Zm9ybTogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKLS0JJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQgZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10nID5wbGF0Zm9ybQotKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50IGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdJyA+cGxhdGZvcm0KLSAKLSAjIENyZWF0ZSBidWlsZCBkaXJlY3RvcnkgYW5kIGdlbmVyYXRlIHRoZSBzeXNjb25maWcgYnVpbGQtdGltZSBkYXRhIHRoZXJlLgotICMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKLUBAIC02NjMsNyArNjYzLDcgQEAKLSAJIyBSZWdlbmVyYXRlIEluY2x1ZGUvZ3JhbWluaXQuaCBhbmQgUHl0aG9uL2dyYW1pbml0LmMKLSAJIyBmcm9tIEdyYW1tYXIvR3JhbW1hciB1c2luZyBwZ2VuCi0gCUAkKE1LRElSX1ApIEluY2x1ZGUKLS0JJChQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKLSsJJChIT1NUUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCi0gCQkkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oIFwKLSAJCSQoc3JjZGlyKS9QeXRob24vZ3JhbWluaXQuYwotIAotQEAgLTExMjEsMjcgKzExMjIsMjcgQEAgbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTAotIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKLSAJZmkKLSAJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotIAlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtdHQgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0rCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpIC1mIFwKLSAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAotIAkJJChERVNURElSKSQoTElCREVTVCkKLSAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtdCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCi0gCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLXQgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0rCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLSAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAotKwkJJChIT1NUUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0Ci0gCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0Ci0rCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0Ci0gCi0gIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCi0gJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43LjEzL3NldHVwLnB5Ci1AQCAtMzUwLDYgKzM1MCw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCi0gICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgnKioqIFdBUk5JTkc6IHJlbmFtaW5nICIlcyIgc2luY2UgaW1wb3J0aW5nIGl0JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICVzJyAlIChleHQubmFtZSwgd2h5KSwgbGV2ZWw9MykKLSsgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICBhc3NlcnQgbm90IHNlbGYuaW5wbGFjZQotICAgICAgICAgICAgIGJhc2VuYW1lLCB0YWlsID0gb3MucGF0aC5zcGxpdGV4dChleHRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgbmV3bmFtZSA9IGJhc2VuYW1lICsgIl9mYWlsZWQiICsgdGFpbAotQEAgLTU3NCw2ICs1NzUsOSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gCi0gICAgICAgICAjIFhYWCBPbWl0dGVkIG1vZHVsZXM6IGdsLCBwdXJlLCBkbCwgU0dJLXNwZWNpZmljIG1vZHVsZXMKLSAKLSsgICAgICAgIGxpYl9kaXJzID0gWyBvcy5nZXRlbnYoIlNUQUdJTkdfTElCRElSIiksICBvcy5nZXRlbnYoIlNUQUdJTkdfQkFTRUxJQkRJUiIpIF0KLSsgICAgICAgIGluY19kaXJzID0gWyBvcy5nZXRlbnYoIlNUQUdJTkdfSU5DRElSIikgXQotKwotICAgICAgICAgIwotICAgICAgICAgIyBUaGUgZm9sbG93aW5nIG1vZHVsZXMgYXJlIGFsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhbmQgY29tcGlsZQotICAgICAgICAgIyBvbiBwcmV0dHkgbXVjaCBhbnkgUE9TSVhpc2ggcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTBjZWI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotV2UgbmVlZCB0byBzdXBwbHkgU1RBR0lOR19JTkNESVIgaGVyZSwgb3RoZXJ3aXNlIHRoZSBUayBoZWFkZXJzCi13aWxsIG5vdCBiZSBmb3VuZC4KLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLQotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA4ZmUxZmI4Li42N2VkYTc0IDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMTg5Miw3ICsxODkyLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBkb3R2ZXJzaW9uID0gZG90dmVyc2lvbls6LTFdICsgJy4nICsgZG90dmVyc2lvblstMV0KLSAgICAgICAgICAgICB0Y2xfaW5jbHVkZV9zdWIgPSBbXQotICAgICAgICAgICAgIHRrX2luY2x1ZGVfc3ViID0gW10KLS0gICAgICAgICAgICBmb3IgZGlyIGluIGluY19kaXJzOgotKyAgICAgICAgICAgIGZvciBkaXIgaW4gW29zLmdldGVudigiU1RBR0lOR19JTkNESVIiKV06Ci0gICAgICAgICAgICAgICAgIHRjbF9pbmNsdWRlX3N1YiArPSBbZGlyICsgb3Muc2VwICsgInRjbCIgKyBkb3R2ZXJzaW9uXQotICAgICAgICAgICAgICAgICB0a19pbmNsdWRlX3N1YiArPSBbZGlyICsgb3Muc2VwICsgInRrIiArIGRvdHZlcnNpb25dCi0gICAgICAgICAgICAgdGtfaW5jbHVkZV9zdWIgKz0gdGNsX2luY2x1ZGVfc3ViCi1AQCAtMTkxMSwyMiArMTkxMSw2IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICBpZiBkaXIgbm90IGluIGluY2x1ZGVfZGlyczoKLSAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZChkaXIpCi0gCi0tICAgICAgICAjIENoZWNrIGZvciB2YXJpb3VzIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzCi0tICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgotLSAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9pbmNsdWRlJykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9saWInKQotLSAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cygnL3Vzci9YMTFSNi9pbmNsdWRlJyk6Ci0tICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNi9pbmNsdWRlJykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExUjYvbGliNjQnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNi9saWInKQotLSAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cygnL3Vzci9YMTFSNS9pbmNsdWRlJyk6Ci0tICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNS9pbmNsdWRlJykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExUjUvbGliJykKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgIyBBc3N1bWUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgWDExCi0tICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvaW5jbHVkZScpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL1gxMS9saWInKQotLQotICAgICAgICAgIyBJZiBDeWd3aW4sIHRoZW4gdmVyaWZ5IHRoYXQgWCBpcyBpbnN0YWxsZWQgYmVmb3JlIHByb2NlZWRpbmcKLSAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAgICAgICAgeDExX2luYyA9IGZpbmRfZmlsZSgnWDExL1hsaWIuaCcsIFtdLCBpbmNsdWRlX2RpcnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYzg3NDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNS1lbmFibGUtY3R5cGVzLWNyb3NzLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotUmViYXNlZCBmb3IgcHl0aG9uIDIuNy45Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLSMgQ1R5cGVzIG5lZWQgdG8ga25vdyB0aGUgYWN0dWFsIGhvc3Qgd2UgYXJlIGJ1aWxkaW5nIG9uLgotIyBTaWduZWQtT2ZmOiBNaWNoYWVsIERpZXRyaWNoIDxtZHRAZW1kZXRlLmRlPgotCi1JbmRleDogUHl0aG9uLTIuNy45L3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43Ljkvc2V0dXAucHkKLUBAIC0yMDI4LDEyICsyMDI4LDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgICAgICAgICAgIyBQYXNzIGVtcHR5IENGTEFHUyBiZWNhdXNlIHdlJ2xsIGp1c3QgYXBwZW5kIHRoZSByZXN1bHRpbmcKLSAgICAgICAgICAgICAgICAgIyBDRkxBR1MgdG8gUHl0aG9uJ3M7IC1nIG9yIC1PMiBpcyB0byBiZSBhdm9pZGVkLgotLSAgICAgICAgICAgICAgICBjbWQgPSAiY2QgJXMgJiYgZW52IENGTEFHUz0nJyAnJXMvY29uZmlndXJlJyAlcyIgXAotLSAgICAgICAgICAgICAgICAgICAgICAlIChmZmlfYnVpbGRkaXIsIGZmaV9zcmNkaXIsICIgIi5qb2luKGNvbmZpZ19hcmdzKSkKLSsgICAgICAgICAgICAgICAgY21kID0gIihjZCAlcyAmJiBhdXRvY29uZiAtVyBjcm9zcykgJiYgKGNkICVzICYmIGVudiBDRkxBR1M9JycgJyVzL2NvbmZpZ3VyZScgJXMpIiBcCi0rICAgICAgICAgICAgICAgICAgICAlIChmZmlfc3JjZGlyLCBmZmlfYnVpbGRkaXIsIGZmaV9zcmNkaXIsICIgIi5qb2luKGNvbmZpZ19hcmdzKSkKLSAKLSAgICAgICAgICAgICAgICAgcmVzID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgICAgICAgICAgICAgaWYgcmVzIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhmZmlfY29uZmlnZmlsZSk6Ci0tICAgICAgICAgICAgICAgICAgICBwcmludCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBfY3R5cGVzIG1vZHVsZSIKLSsgICAgICAgICAgICAgICAgICAgIHByaW50ICJGYWlsZWQgdG8gY29uZmlndXJlIF9jdHlwZXMgbW9kdWxlIChyZXM9JWQpIG9yIG1pc3NpbmcgY29uZmZpbGU9JXMiICUgKCByZXMsIGZmaV9jb25maWdmaWxlICkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotICAgICAgICAgICAgIGZmaWNvbmZpZyA9IHt9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNWIzMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoZSBwb2lzb24gZGlyZWN0b3JpZXMgcGF0Y2ggaGFzIGRldGVjdGVkIGxpYnJhcnkgcGF0aCBpc3N1ZSB3aGlsZSAKLWNvbXBpbGluZyB0aGUgcHl0aG9uIGluIGNyb3NzIGVudmlyb25tZW50LCBhcyBzZWVuIGJlbGxvdy4KLQotd2FybmluZzogbGlicmFyeSBzZWFyY2ggcGF0aCAiL3Vzci9saWIvdGVybWNhcCIgaXMgdW5zYWZlIGZvciBjcm9zcy1jb21waWxhdGlvbgotCi1UaGlzIFBhdGNoIGZpeGVzIHRoaXMgaXNzdWUgaW4gdGhlIHB5dGhvbiBidWlsZCBlbnZpcm9ubWVudC4KLTExIE9jdCAyMDEwCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi0yMDExLzA5LzI5Ci1SZWJhc2VkIGZvciBweXRob24gMi43LjIKLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNjdlZGE3NC4uNTljNTM3ZSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTc2MSwxMiArNzYxLDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgcGFzcyAjIElzc3VlIDczODQ6IEFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6Ci0gICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQotLSAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy91c3IvbGliL3Rlcm1jYXAnXSwKLSsgICAgICAgICAgICBlbGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVybWNhcCcpOgotICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZCgndGVybWNhcCcpCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigncmVhZGxpbmUnLCBbJ3JlYWRsaW5lLmMnXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1bJy91c3IvbGliL3Rlcm1jYXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1yZWFkbGluZV9leHRyYV9saW5rX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykgKQotICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzI5NzM0MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1jb25maWd1cmUuYWM6IGFkZCBDUk9TU1BZVEhPTlBBVEggaW50byBQWVRIT05QQVRIIGZvciBQWVRIT05fRk9SX0JVSUxECi0KLVdoZW4gYnVpbGRpbmcgeDg2LT54ODYgdGhlIHN5c3RlbSB3aWxsIHRyeSB0byBleGVjdXRlIC5zbyBhbmQgcmVsYXRlZCBpdGVtcwotZnJvbSB0aGUgZGVmYXVsdCBQWVRIT05QQVRILiAgVGhpcyB3aWxsIGZhaWwgaWYgdGhlIHRhcmdldCBDUFUgY29udGFpbnMKLWluc3RydWN0aW9ucyB0aGF0IHRoZSBob3N0IENQVSBkb2VzIG5vdCBoYXZlLCBhZGQgQ1JPU1NQWVRIT05QQVRICi1pbnRvIFBZVEhPTlBBVEggc28gd2UgY2FuIHByZXBlbmQgdGhlIGxpc3QgdG8gZmluZCBjb3JyZWN0IGxpYnMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtQ29yZSBpbnRlZ3JhdGlvbiBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi1AQCAtMzYsNyArMzYsNyBAQCBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgotIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCi0gCWZpCi0gICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCi0tCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAotKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoQ1JPU1NQWVRIT05QQVRIKTokKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi9wbGF0LSQoTUFDSERFUCkgJyRpbnRlcnAKLSAgICAgZmkKLSBlbGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KLSAgICAgQUNfTVNHX0VSUk9SKFtDcm9zcyBjb21waWxpbmcgcmVxdWlyZWQgLS1ob3N0PUhPU1QtVFVQTEUgYW5kIC0tYnVpbGQ9QVJDSF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2ZlYTc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMi9Nb2R1bGVzL1NldHVwLmRpc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9Nb2R1bGVzL1NldHVwLmRpc3QJMjAxMS0wNi0xMSAwODo0NjoyNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBQeXRob24tMi43LjIvTW9kdWxlcy9TZXR1cC5kaXN0CTIwMTEtMTItMjcgMTU6NTE6NDEuMjQ0NjIzMjE5IC0wODAwCi1AQCAtMjQ4LDcgKzI0OCw3IEBACi0gIyBNZXNzYWdlLURpZ2VzdCBBbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBSRkMgMTMyMS4gIFRoZSBuZWNlc3NhcnkgZmlsZXMKLSAjIG1kNS5jIGFuZCBtZDUuaCBhcmUgaW5jbHVkZWQgaGVyZS4KLSAKLS0jX21kNSBtZDVtb2R1bGUuYyBtZDUuYwotK19tZDUgbWQ1bW9kdWxlLmMgbWQ1LmMKLSAKLSAKLSAjIFRoZSBfc2hhIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBTSEEgY2hlY2tzdW0gYWxnb3JpdGhtcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NzA5NWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1fdGtpbnRlciBtb2R1bGUgbmVlZHMgdGsgbW9kdWxlIGFsb25nIHdpdGggdGNsLiB0ayBpcyBub3QgeWV0IGludGVncmF0ZWQKLWluIHlvY3RvIHNvIHdlIHNraXAgdGhlIGNoZWNrIGZvciB0aGlzIG1vZHVsZS4KLUF2b2lkIGEgd2FybmluZyBieSBub3QgYWRkaW5nIHRoaXMgbW9kdWxlIHRvIG1pc3NpbmcgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1BbHNvIHNpbXBseSBkaXNhYmxlIHRoZSB0ayBtb2R1bGUgc2luY2UgaXRzIG5vdCBpbiBERVBFTkRTLgotU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotCi1JbmRleDogUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLUBAIC0xNzgzLDEwICsxNzgzLDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKLSAKLSAgICAgICAgICMgQ2FsbCB0aGUgbWV0aG9kIGZvciBkZXRlY3Rpbmcgd2hldGhlciBfdGtpbnRlciBjYW4gYmUgY29tcGlsZWQKLS0gICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotKyAgICAgICAgIyBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSAKLS0gICAgICAgIGlmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLS0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQotKyAgICAgICAgIyB0a2ludGVyIG1vZHVsZSB3aWxsIG5vdCBiZSBhdmFsYWlibGUgYXMgeW9jdG8KLSsgICAgICAgICMgZG9lc24ndCBoYXZlIHRrIGludGVncmF0ZWQgKHlldCkKLSsgICAgICAgICNpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106Ci0rICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0gCi0gIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYwotICMjICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJhNTgyMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXN1bmF1ZGlvZGV2IG1vZHVsZSBpcyBzdW5vcyBzcGVjaWZpYyBzbyB3ZSBhdm9pZCBhIHdhcm5pbmcgYnkgbm90IAotYWRkaW5nIHRoaXMgbW9kdWxlIHRvIG1pc3NpbmcgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLUluZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotQEAgLTE2NzEsOCArMTY3MSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6Ci0gICAgICAgICAgICAgIyBTdW5PUyBzcGVjaWZpYyBtb2R1bGVzCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignc3VuYXVkaW9kZXYnLCBbJ3N1bmF1ZGlvZGV2LmMnXSkgKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnc3VuYXVkaW9kZXYnKQotKyAgICAgICAgIyBJZiBwbGF0Zm9ybSBpcyBub3Qgc3Vub3Mgd2FybmluZyBpcyB1c2VsZXNzCi0rICAgICAgICAjZWxzZToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ3N1bmF1ZGlvZGV2JykKLSAKLSAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgIyBfc2Nwcm94eQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jZ2lfcHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NnaV9weS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU1MDRmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NnaV9weS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUxpYi9jZ2kucHk6IFVwZGF0ZSB0aGUgc2NyaXB0IGFzIG1lbnRpb25lZCBpbiB0aGUgY29tbWVudAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi0tLS0gUHl0aG9uLTIuNi42L0xpYi9jZ2kucHkub3JpZwkyMDEwLTA4LTAxIDIyOjE0OjI3LjAwMDAwMDAwMCAtMDUwMAotKysrIFB5dGhvbi0yLjYuNi9MaWIvY2dpLnB5CTIwMTEtMDktMjEgMTU6Mjg6NDAuNDc4MjA4NjMxIC0wNTAwCi1AQCAtMSwxMyArMSw0IEBACi0tIyEgL3Vzci9sb2NhbC9iaW4vcHl0aG9uCi0tCi0tIyBOT1RFOiB0aGUgYWJvdmUgIi91c3IvbG9jYWwvYmluL3B5dGhvbiIgaXMgTk9UIGEgbWlzdGFrZS4gIEl0IGlzCi0tIyBpbnRlbnRpb25hbGx5IE5PVCAiL3Vzci9iaW4vZW52IHB5dGhvbiIuICBPbiBtYW55IHN5c3RlbXMKLS0jIChlLmcuIFNvbGFyaXMpLCAvdXNyL2xvY2FsL2JpbiBpcyBub3QgaW4gJFBBVEggYXMgcGFzc2VkIHRvIENHSQotLSMgc2NyaXB0cywgYW5kIC91c3IvbG9jYWwvYmluIGlzIHRoZSBkZWZhdWx0IGRpcmVjdG9yeSB3aGVyZSBQeXRob24gaXMKLS0jIGluc3RhbGxlZCwgc28gL3Vzci9iaW4vZW52IHdvdWxkIGJlIHVuYWJsZSB0byBmaW5kIHB5dGhvbi4gIEdyYW50ZWQsCi0tIyBiaW5hcnkgaW5zdGFsbGF0aW9ucyBieSBMaW51eCB2ZW5kb3JzIG9mdGVuIGluc3RhbGwgUHl0aG9uIGluCi0tIyAvdXNyL2Jpbi4gIFNvIGxldCB0aG9zZSB2ZW5kb3JzIHBhdGNoIGNnaS5weSB0byBtYXRjaCB0aGVpciBjaG9pY2UKLS0jIG9mIGluc3RhbGxhdGlvbi4KLSsjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gCi0gIiIiU3VwcG9ydCBtb2R1bGUgZm9yIENHSSAoQ29tbW9uIEdhdGV3YXkgSW50ZXJmYWNlKSBzY3JpcHRzLgotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmQ2YzY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUF1dGhvcjogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotRGF0ZTogICBTdW4gTWFyIDI1IDAyOjAyOjI3IDIwMTIgKzAyMDAKLQotVGhpcyBwYXRjaCB3YXMgYWRkZWQgZm9yIDY0Yml0IGhvc3QgbWFjaGluZXMuIEluIHRoZSBjb21waWxlIHByb2Nlc3MgcHl0aG9uCi1pcyBjaGVja2luZyBpZiBwbGF0Zm9ybSBpcyBhIDY0Yml0IHBsYXRmb3JtIHVzaW5nIHN5cy5tYXhpbnQgd2hpY2ggaXMgdGhlIGhvc3QncwotdmFsdWUuIFRoZSBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIHNvIHRoYXQgcHl0aG9uIHdvdWxkIGNoZWNrIGlmIFRBUkdFVCBtYWNoaW5lCi1pcyA2NGJpdCBub3QgdGhlIEhPU1QgbWFjaGluZS4gSW4gdGhpcyB3YXkgd2lsbCBoYXZlICJkbCIgYW5kICJpbWFnZW9wIiBtb2R1bGVzCi1idWlsdCBpZiBIT1NUIG1hY2hpbmUgaXMgNjRiaXQgYnV0IHRoZSB0YXJnZXQgbWFjaGluZSBpcyAzMmJpdC4KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IFB5dGhvbi0yLjcuMTEvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjExLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43LjExL3NldHVwLnB5Ci1AQCAtMzUsNiArMzUsMjEgQEAgQ09NUElMRURfV0lUSF9QWURFQlVHID0gKCctLXdpdGgtcHlkZWJ1ZwotICMgVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCB0byBob2xkIHRoZSBsaXN0IG9mIG1vZHVsZXMgdG8gYmUgZGlzYWJsZWQuCi0gZGlzYWJsZWRfbW9kdWxlX2xpc3QgPSBbXQotIAotK2RlZiB0YXJnZXRfaXNfNjRiaXRfcGxhdGZvcm0gKCk6Ci0rICAgICIiIgotKyAgICBJbiBjYXNlIG9mIGNyb3NzLWNvbXBpbGUsIHNvbWUgbW9kdWxlcyBhcmUgbm90IGJ1aWxkIGFzIHNldHVwIGNoZWNrcyBpZiBIT1NUCi0rICAgIGlzIDY0Yml0IGFuZCBub3QgVEFSR0VULgotKyAgICBBcyBweXRob24gd2FzIGJ1aWx0IGZvciBUQVJHRVQgd2UgY2FuIGNoZWNrIHRoaXMgaW4gcHljb25maWcuaCBpbiB0aGlzIHdheToKLSsJU2l6ZW9mIExPTkcgb24gYSAzMiBiaXQgcGxhdGZvcm0gaXMgNCBieXRlcwotKwlTaXplb2YgTE9ORyBvbiBhIDY0IGJpdCBwbGF0Zm9ybSBpcyA4IGJ5dGVzCi0rICAgICIiIgotKyAgICBweWNvbmYgPSBvcGVuKCJweWNvbmZpZy5oIikucmVhZCgpCi0rICAgIGF1eCA9IHJlLnNlYXJjaChyIiNzKmRlZmluZVxzK1NJWkVPRl9MT05HXHMrOFxzKiIsIHB5Y29uZikKLSsgICAgaWYgYXV4IGlzIG5vdCBOb25lOgotKwlyZXR1cm4gVHJ1ZQotKyAgICBlbHNlOgotKwlyZXR1cm4gRmFsc2UKLSsKLSBkZWYgYWRkX2Rpcl90b19saXN0KGRpcmxpc3QsIGRpcik6Ci0gICAgICIiIkFkZCB0aGUgZGlyZWN0b3J5ICdkaXInIHRvIHRoZSBsaXN0ICdkaXJsaXN0JyAoYXQgdGhlIGZyb250KSBpZgotICAgICAxKSAnZGlyJyBpcyBub3QgYWxyZWFkeSBpbiAnZGlybGlzdCcKLUBAIC03MTYsNyArNzMxLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignYXVkaW9vcCcsIFsnYXVkaW9vcC5jJ10pICkKLSAKLSAgICAgICAgICMgRGlzYWJsZWQgb24gNjQtYml0IHBsYXRmb3JtcwotLSAgICAgICAgaWYgc3lzLm1heHNpemUgIT0gOTIyMzM3MjAzNjg1NDc3NTgwN0w6Ci0rICAgICAgICBpZiBub3QgdGFyZ2V0X2lzXzY0Yml0X3BsYXRmb3JtKCk6Ci0gICAgICAgICAgICAgIyBPcGVyYXRpb25zIG9uIGltYWdlcwotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2ltYWdlb3AnLCBbJ2ltYWdlb3AuYyddKSApCi0gICAgICAgICBlbHNlOgotQEAgLTE1NDUsNyArMTU2MCw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19jb2RlY3NfJXMnICUgbG9jKQotIAotICAgICAgICAgIyBEeW5hbWljIGxvYWRpbmcgbW9kdWxlCi0tICAgICAgICBpZiBzeXMubWF4aW50ID09IDB4N2ZmZmZmZmY6Ci0rICAgICAgICBpZiBub3QgdGFyZ2V0X2lzXzY0Yml0X3BsYXRmb3JtKCk6Ci0gICAgICAgICAgICAgIyBUaGlzIHJlcXVpcmVzIHNpemVvZihpbnQpID09IHNpemVvZihsb25nKSA9PSBzaXplb2YoY2hhciopCi0gICAgICAgICAgICAgZGxfaW5jID0gZmluZF9maWxlKCdkbGZjbi5oJywgW10sIGluY19kaXJzKQotICAgICAgICAgICAgIGlmIChkbF9pbmMgaXMgbm90IE5vbmUpIGFuZCAoaG9zdF9wbGF0Zm9ybSBub3QgaW4gWydhdGhlb3MnXSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0NjU5NTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLSMgVGhpcyBzY3JpcHQgaXMgdXNlZCBhcyBhIGJpdGJha2UgdGFzayB0byBjcmVhdGUgYSBuZXcgcHl0aG9uIG1hbmlmZXN0Ci0jICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci0jCi0jIE91ciBnb2FsIGlzIHRvIGtlZXAgcHl0aG9uLWNvcmUgYXMgc21hbGwgYXMgcG9zaWJsZSBhbmQgYWRkIG90aGVyIHB5dGhvbgotIyBwYWNrYWdlcyBvbmx5IHdoZW4gdGhlIHVzZXIgbmVlZHMgdGhlbSwgaGVuY2Ugd2h5IHdlIHNwbGl0IHVwc3RyZWFtIHB5dGhvbgotIyBpbnRvIHNldmVyYWwgcGFja2FnZXMuCi0jCi0jIEluIGEgdmVyeSBzaW1wbGlzdGljIHdheSB3aGF0IHRoaXMgZG9lcyBpczogCi0jIExhdW5jaCBweXRob24gYW5kIHNlZSBzcGVjaWZpY2FsbHkgd2hhdCBpcyByZXF1aXJlZCBmb3IgaXQgdG8gcnVuIGF0IGEgbWluaW11bQotIwotIyBHbyB0aHJvdWdoIHRoZSBweXRob24tbWFuaWZlc3QgZmlsZSBhbmQgbGF1bmNoIGEgc2VwYXJhdGUgdGFzayBmb3IgZXZlcnkgc2luZ2xlCi0jIG9uZSBvZiB0aGUgZmlsZXMgb24gZWFjaCBwYWNrYWdlLCB0aGlzIHRhc2sgd2lsbCBjaGVjayB3aGF0IHdhcyByZXF1aXJlZCBmb3IgdGhhdAotIyBzcGVjaWZpYyBtb2R1bGUgdG8gcnVuLCB0aGVzZSBtb2R1bGVzIHdpbGwgYmUgY2FsbGVkIGRlcGVuZGVuY2llcy4KLSMgVGhlIG91dHB1dCBvZiBzdWNoIHRhc2sgd2lsbCBiZSBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZQotIyBmb3VuZCBmb3IgdGhhdCBmaWxlLgotIwotIyBTdWNoIG91dHB1dCB3aWxsIGJlIHBhcnNlZCBieSB0aGlzIHNjcmlwdCwgd2Ugd2lsbCBsb29rIGZvciBlYWNoIGRlcGVuZGVuY3kgb24gdGhlCi0jIG1hbmlmZXN0IGFuZCBpZiB3ZSBmaW5kIHRoYXQgYW5vdGhlciBwYWNrYWdlIGFscmVhZHkgaW5jbHVkZXMgaXQsIHRoZW4gd2Ugd2lsbCBhZGQKLSMgdGhhdCBwYWNrYWdlIGFzIGFuIFJERVBFTkRTIHRvIHRoZSBwYWNrYWdlIHdlIGFyZSBjdXJyZW50bHkgY2hlY2tpbmc7IGluIGNhc2Ugd2UgZG9udAotIyBmaW5kIHRoZSBjdXJyZW50IGRlcGVuZGVuY3kgb24gYW55IG90aGVyIHBhY2thZ2Ugd2Ugd2lsbCBhZGQgaXQgdG8gdGhlIGN1cnJlbnQgcGFja2FnZQotIyBhcyBwYXJ0IG9mIEZJTEVTLgotIwotIwotIyBUaGlzIHdheSB3ZSB3aWxsIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdCBkdXJpbmcKLSMgdGhpcyBwcm9jZXNzLCBvbiB0aGlzIG5ldyBtYW5pZmVzdCBlYWNoIHBhY2thZ2Ugd2lsbCBjb250YWluIHNwZWNpZmljYWxseSBvbmx5Ci0jIHdoYXQgaXQgbmVlZHMgdG8gcnVuLgotIwotIyBUaGVyZSBhcmUgc29tZSBjYXZlYXRzIHdoaWNoIHdlIHRyeSB0byBkZWFsIHdpdGgsIHN1Y2ggYXMgcmVwZWF0ZWQgZmlsZXMgb24gZGlmZmVyZW50Ci0jIHBhY2thZ2VzLCBwYWNrYWdlcyB0aGF0IGluY2x1ZGUgZm9sZGVycywgd2lsZGNhcmRzLCBhbmQgc3BlY2lhbCBwYWNrYWdlcy4KLSMgSXRzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGlzIG1ldGhvZCBvbmx5IHdvcmtzIGZvciBweXRob24gZmlsZXMsIGFuZCBzaGFyZWQKLSMgbGlicmFyaWVzLiBTdGF0aWMgbGlicmFyaWVzLCBoZWFkZXIgZmlsZXMgYW5kIGJpbmFyaWVzIG5lZWQgdG8gYmUgZGVhbHQgd2l0aCBtYW51YWxseS4KLSMKLSMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjkgYXQgZ21haWwgZG90IGNvbT4KLQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IGNvbGxlY3Rpb25zCi0KLSMgSGFjayB0byBnZXQgbmF0aXZlIHB5dGhvbiBzZWFyY2ggcGF0aCAoZm9yIGZvbGRlcnMpLCBub3QgZm9uZCBvZiBpdCBidXQgaXQgd29ya3MgZm9yIG5vdwotcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKLWZvciBwIGluIHN5cy5wYXRoOgotICBpZiBwaXZvdCBpbiBwOgotICAgIG5hdGl2ZWxpYmZvbGRlcj1wWzpwLmZpbmQocGl2b3QpK2xlbihwaXZvdCldCi0KLSMgRW1wdHkgZGljdCB0byBob2xkIHRoZSB3aG9sZSBtYW5pZmVzdAotbmV3X21hbmlmZXN0ID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotCi0jIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcywgZm9sZGVycyBhbmQgd2lsZGNhcmRzCi1hbGxmaWxlcz1bXQotcmVwZWF0ZWQ9W10KLXdpbGRjYXJkcz1bXQotCi1oYXNmb2xkZXJzPVtdCi1hbGxmb2xkZXJzPVtdCi0KLWRlZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gIGlmIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliJykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliNjQnKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWIzMicpKToKLSAgICByZXR1cm4gVHJ1ZQotICBlbHNlOgotICAgIHJldHVybiBGYWxzZQotCi1kZWYgcHJlcGVuZF9jb21tZW50cyhjb21tZW50cywganNvbl9tYW5pZmVzdCk6Ci0gICAgd2l0aCBvcGVuKGpzb25fbWFuaWZlc3QsICdyKycpIGFzIG1hbmlmZXN0OgotICAgICAgICBqc29uX2NvbnRlbnRzID0gbWFuaWZlc3QucmVhZCgpCi0gICAgICAgIG1hbmlmZXN0LnNlZWsoMCwgMCkKLSAgICAgICAgbWFuaWZlc3Qud3JpdGUoY29tbWVudHMgKyBqc29uX2NvbnRlbnRzKQotCi0jIFJlYWQgZXhpc3RpbmcgSlNPTiBtYW5pZmVzdAotd2l0aCBvcGVuKCdweXRob24yLW1hbmlmZXN0Lmpzb24nKSBhcyBtYW5pZmVzdDoKLSAgICAjIFRoZSBKU09OIGZvcm1hdCBkb2Vzbid0IGFsbG93IGNvbW1lbnRzIHNvIHdlIGhhY2sgdGhlIGNhbGwgdG8ga2VlcCB0aGUgY29tbWVudHMgdXNpbmcgYSBtYXJrZXIKLSAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3QucmVhZCgpCi0gICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNiAjIEVPQyArIFxuCi0gICAgbWFuaWZlc3Quc2VlaygwKQotICAgIGNvbW1lbnRzID0gbWFuaWZlc3QucmVhZChqc29uX3N0YXJ0KQotICAgIG1hbmlmZXN0X3N0ciA9IG1hbmlmZXN0LnJlYWQoKQotICAgIG9sZF9tYW5pZmVzdCA9IGpzb24ubG9hZHMobWFuaWZlc3Rfc3RyLCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKLQotIyBGaXJzdCBwYXNzIHRvIGdldCBjb3JlLXBhY2thZ2UgZnVuY3Rpb25hbGl0eSwgYmVjYXVzZSB3ZSBiYXNlIGV2ZXJ5dGhpbmcgb24gdGhlIGZhY3QgdGhhdCBjb3JlIGlzIGFjdHVhbGx5IHdvcmtpbmcKLSMgTm90IGV4YWN0bHkgdGhlIHNhbWUgc28gaXQgc2hvdWxkIG5vdCBiZSBhIGZ1bmN0aW9uCi1wcmludCAoIkdldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBjb3JlIHBhY2thZ2U6IikKLQotIyBTcGVjaWFsIGNhbGwgdG8gY2hlY2sgZm9yIGNvcmUgcGFja2FnZQotb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICdweXRob24tY29yZS1wYWNrYWdlJ10pCi1mb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKLSAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgotICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKLSAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCi0gICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQotCi1mb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgotICBpZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gICAgIyBQYXNzIGl0IGRpcmVjdGx5Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBhc3N1bWUgaXQgd2FzIGFkZGVkIGNvcnJlY3RseSAobWFudWFsbHkpCi0gIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgotICAgICMgUGFzcyBpdCBkaXJlY3RseQotICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICBjb250aW51ZQotICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKLSAgaWYgdmFsdWUgPT0gJyc6Ci0gICAgY29udGludWUKLSAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIHZhbHVlOgotICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICBjb250aW51ZQotICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKLSAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aCh2YWx1ZSkpKVswXQotCi0KLSAgIyBMYXVuY2ggc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBtb2R1bGUgZm9yIGRldGVybWluaXN0aWMgYmVoYXZpb3IKLSAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljCi0gIHByaW50ICgnR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCi0gIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczIucHknLCAnJXMnICUgdmFsdWVdKQotICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKLSAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgotICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0KLSMgV2UgY2hlY2sgd2hpY2ggcGFja2FnZXMgaW5jbHVkZSBmb2xkZXJzCi1mb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKLSAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgotICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gICAgICAgICAgICBwcmludCAoJyVzIGlzIGEgZm9sZGVyJyAlIHZhbHVlKQotICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBoYXNmb2xkZXJzOgotICAgICAgICAgICAgICAgIGhhc2ZvbGRlcnMuYXBwZW5kKGtleSkKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBhbGxmb2xkZXJzOgotICAgICAgICAgICAgICAgIGFsbGZvbGRlcnMuYXBwZW5kKHZhbHVlKQotCi1mb3Iga2V5IGluIG9sZF9tYW5pZmVzdDoKLSAgICAjIFVzZSBhbiBlbXB0eSBkaWN0IGFzIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgZGF0YSBmb3IgZWFjaCBwYWNrYWdlIGFuZCBmaWxsIGl0IHVwCi0gICAgbmV3X21hbmlmZXN0W2tleV0gPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSA9IG9sZF9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10KLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXT1bXQotICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddID0gW10KLQotICAgICMgQWxsIHBhY2thZ2VzIHNob3VsZCBkZXBlbmQgb24gY29yZQotICAgIGlmIGtleSAhPSAnY29yZSc6Ci0gICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCi0KLSAgICAjIEhhbmRsZSBzcGVjaWFsIGNhc2VzLCB3ZSBhc3N1bWUgdGhhdCB3aGVuIHRoZXkgd2VyZSBtYW51YWxseSBhZGRlZCAKLSAgICAjIHRvIHRoZSBtYW5pZmVzdCB3ZSBrbmV3IHdoYXQgd2Ugd2VyZSBkb2luZy4KLSAgICBwcmludCAoJ0hhbmRsaW5nIHBhY2thZ2UgJXMnICUga2V5KQotICAgIHNwZWNpYWxfcGFja2FnZXM9WydtaXNjJywgJ21vZHVsZXMnLCAndGVzdHMnLCAnZGV2J10KLSAgICBpZiBrZXkgaW4gc3BlY2lhbF9wYWNrYWdlcyBvciAnc3RhdGljZGV2JyBpbiBrZXk6Ci0gICAgICAgIHByaW50KCdQYXNzaW5nICVzIHBhY2thZ2UgZGlyZWN0bHknICUga2V5KQotICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XT1vbGRfbWFuaWZlc3Rba2V5XQotICAgICAgICBjb250aW51ZQotCi0gICAgZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAjIFdlIGFscmVhZHkgaGFuZGxlZCBjb3JlIG9uIHRoZSBmaXJzdCBwYXNzCi0gICAgICAgIGlmIGtleSA9PSAnY29yZSc6Ci0gICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKLSAgICAgICAgaWYgaXNGb2xkZXIodmFsdWUpOgotICAgICAgICAgICAgIyBQYXNzIGZvbGRlcnMgZGlyZWN0bHkKLSAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZQotICAgICAgICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICMgUGFzcyBpdCBkaXJlY3RseSB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0dXJlCi0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCi0gICAgICAgIGlmIHZhbHVlID09ICcnOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIHZhbHVlOgotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgotICAgICAgICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCi0KLSAgICAgICAgIyBMYXVuY2ggc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBtb2R1bGUgZm9yIGRldGVybWluaXN0aWMgYmVoYXZpb3IKLSAgICAgICAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljCi0gICAgICAgIHByaW50ICgnR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCi0gICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczIucHknLCAnJXMnICUgdmFsdWVdKQotCi0gICAgICAgICMgV2UgY2FuIHByaW50IGRlcGVuZGVuY2llcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzCi0gICAgICAgICNwcmludCAob3V0cHV0KQotICAgICAgICAjIE91dHB1dCB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcwotICAgICAgICBmb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKLQotICAgICAgICAgICAgIyBXYXJuaW5nOiBUaGlzIGZpcnN0IHBhcnQgaXMgdWdseQotICAgICAgICAgICAgIyBPbmUgb2YgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdhcyBmb3VuZCwgY291bGQgYmUgaW5zaWRlIG9mIG9uZSBvZiB0aGUgZm9sZGVycyBpbmNsdWRlZCBieSBhbm90aGVyIHBhY2thZ2UKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGlzIGhhcHBlbnMgc28gd2UgY2FuIGFkZCB0aGUgcGFja2FnZSBjb250YWluaW5nIHRoZSBmb2xkZXIgYXMgYW4gUkRFUEVORFMKLSAgICAgICAgICAgICMgZS5nLiBGb2xkZXIgZW5jb2RpbmdzIGNvbnRhaW5lZCBpbiBjb2RlY3MKLSAgICAgICAgICAgICMgVGhpcyB3b3VsZCBiZSBzb2x2ZWQgaWYgbm8gcGFja2FnZXMgaW5jbHVkZWQgYW55IGZvbGRlcnMKLQotICAgICAgICAgICAgIyBUaGlzIGNhbiBiZSBkb25lIGluIHR3byB3YXlzOgotICAgICAgICAgICAgIyAxIC0gV2UgYXNzdW1lIHRoYXQgaWYgd2UgdGFrZSBvdXQgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGggd2Ugd291bGQgZ2V0Ci0gICAgICAgICAgICAjICAgdGhlIGZvbGRlciBzdHJpbmcsIHRoZW4gd2Ugd291bGQgY2hlY2sgaWYgZm9sZGVyIHN0cmluZyBpcyBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCi0gICAgICAgICAgICAjICAgVGhpcyB3b3VsZCBub3Qgd29yayBpZiBhIHBhY2thZ2UgY29udGFpbnMgYSBmb2xkZXIgd2hpY2ggY29udGFpbnMgYW5vdGhlciBmb2xkZXIKLSAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgotICAgICAgICAgICAgIyAgIGZvbGRlcl9zdHJpbmcgd291bGQgbm90IG1hdGNoIGFueSB2YWx1ZSBjb250YWluZWQgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycwotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAyIC0gV2UgZG8gaXQgdGhlIG90aGVyIHdheSBhcm91bmQsIGNoZWNraW5nIGlmIHRoZSBmb2xkZXIgaXMgY29udGFpbmVkIGluIHRoZSBwYXRoCi0gICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKLSAgICAgICAgICAgICMgICBpcyBmb2xkZXJfc3RyaW5nIGluc2lkZSBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZT8sIAotICAgICAgICAgICAgIyAgIFllcywgaXQgd29ya3MsIGJ1dCB3ZSB3YXN0ZSBhIGNvdXBsZSBvZiBtaWxsaXNlY29uZHMuCi0KLSAgICAgICAgICAgIGluRm9sZGVycz1GYWxzZQotICAgICAgICAgICAgZm9yIGZvbGRlciBpbiBhbGxmb2xkZXJzOgotICAgICAgICAgICAgICAgICMgVGhlIG1vZHVsZSBjb3VsZCBoYXZlIGEgZGlyZWN0b3J5IG5hbWVkIGFmdGVyIGl0LCBlLmcuIHhtbCwgaWYgd2UgdGFrZSBvdXQgdGhlIGZpbGVuYW1lIGZyb20gdGhlIHBhdGgKLSAgICAgICAgICAgICAgICAjIHdlJ2xsIGVuZCB1cCB3aXRoICR7bGliZGlyfSwgYW5kIHdlIHdhbnQgJHtsaWJkaXJ9L3htbAotICAgICAgICAgICAgICAgIGlmIGlzRm9sZGVyKGl0ZW0pOgotICAgICAgICAgICAgICAgICAgICBjaGVja19wYXRoID0gaXRlbQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoaXRlbSkKLSAgICAgICAgICAgICAgICBpZiBmb2xkZXIgaW4gY2hlY2tfcGF0aCA6Ci0gICAgICAgICAgICAgICAgICAgIGluRm9sZGVycyA9IFRydWUgIyBEaWQgd2UgZmluZCBhIGZvbGRlcj8KLSAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBGYWxzZSAjIFNlY29uZCBmbGFnIHRvIGJyZWFrIGlubmVyIGZvcgotICAgICAgICAgICAgICAgICAgICAjIExvb3Agb25seSB0aHJvdWdoIHBhY2thZ2VzIHdoaWNoIGNvbnRhaW4gZm9sZGVycwotICAgICAgICAgICAgICAgICAgICBmb3Iga2V5Zm9sZGVyIGluIGhhc2ZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVyRm91bmQgPT0gRmFsc2UpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgZm9sZGVyICVzIG9uIHBhY2thZ2UgJXMiICUgKGl0ZW0sa2V5Zm9sZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfZm9sZGVyPT1mb2xkZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAoJyVzIGZvdW5kIGluICVzJyAlIChmb2xkZXIsIGtleWZvbGRlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGtleWZvbGRlciBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10gYW5kIGtleWZvbGRlciAhPSBrZXk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKGtleWZvbGRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgIyBBIGZvbGRlciB3YXMgZm91bmQgc28gd2UncmUgZG9uZSB3aXRoIHRoaXMgaXRlbSwgd2UgY2FuIGdvIG9uCi0gICAgICAgICAgICBpZiBpbkZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgaXQgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCi0gICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICAjIEhhbmRsZSBjb3JlIGFzIGEgc3BlY2lhbCBwYWNrYWdlLCB3ZSBhbHJlYWR5IGRpZCBpdCBzbyB3ZSBwYXNzIGl0IHRvIE5FVyBkYXRhIHN0cnVjdHVyZSBkaXJlY3RseQotICAgICAgICAgICAgICAgIGlmIGtleT09J2NvcmUnOgotICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKLSAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKLSAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLQotICAgICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMKLSAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKLQotICAgICAgICAgICAgICAgIGVsc2U6Ci0KLSAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgaXQKLSAgICAgICAgICAgICAgICAgICAgIyBhcyBhbiBSREVQRU5EUywgb3IgaWYgaXRzIG5vdCwgaXQgbWVhbnMgaXQgc2hvdWxkIGJlIGNvbnRhaW5lZCBvbiB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2UsIHNvIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5ld2tleSBpbiBvbGRfbWFuaWZlc3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoIkNoZWNraW5nICVzICIgJSBpdGVtICsgIiBpbiAlcyIgJSBuZXdrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydmaWxlcyddOiAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHdlcmUgbmVzdGluZywgd2UgbmVlZCB0byBjaGVjayBpdHMgbm90IHRoZSBzYW1lIGtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdrZXkhPWtleSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBSREVQRU5EUywgYmVjYXVzZSBpdCBjb250YWlucyAlcycgJSAobmV3a2V5LCBrZXksIGl0ZW0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKG5ld2tleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIEZJTEVTJyAlIChpdGVtLCBrZXkpKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSBpdCB3YXNudCBmb3VuZCBvbiBhbm90aGVyIHBhY2thZ2UsIGl0cyBub3QgYW4gUkRFUCwgc28gYWRkIGl0IHRvIEZJTEVTIGZvciB0aGlzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKLQotcHJpbnQgKCdUaGUgZm9sbG93aW5nIGZpbGVzIGFyZSByZXBlYXRlZCAoY29udGFpbmVkIGluIG1vcmUgdGhhbiBvbmUgcGFja2FnZSksIHBsZWFzZSBjaGVjayB3aGljaCBwYWNrYWdlIHNob3VsZCBnZXQgaXQ6JykKLXByaW50IChyZXBlYXRlZCkKLXByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gd2lsZGNhcmRzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKLXByaW50KHdpbGRjYXJkcykKLXByaW50KCdUaGUgZm9sbG93aW5nIGZpbGVzIGNvbnRhaW4gZm9sZGVycywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCi1wcmludChoYXNmb2xkZXJzKQotCi0jIFNvcnQgaXQganVzdCBzbyBpdCBsb29rcyBuaWNlIAotZm9yIGtleSBpbiBuZXdfbWFuaWZlc3Q6Ci0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uc29ydCgpCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uc29ydCgpCi0KLSMgQ3JlYXRlIHRoZSBtYW5pZmVzdCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSB0aGF0IHdhcyBidWlsdAotd2l0aCBvcGVuKCdweXRob24yLW1hbmlmZXN0Lmpzb24ubmV3JywndycpIGFzIG91dGZpbGU6Ci0gICAganNvbi5kdW1wKG5ld19tYW5pZmVzdCxvdXRmaWxlLCBpbmRlbnQ9NCkKLQotcHJlcGVuZF9jb21tZW50cyhjb21tZW50cywncHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldycpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjczMDkzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtFbWJlZGRlZCBzcGVjaWZpY10KLQotVGhpcyBwYXRjaCBmaXhlcyBpc3N1aW5nIHdpdGggZGlmZmVyZW50IGxpYmRpciBsaWtlIGxpYjY0LgotVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmF0aXZlIHB5dGhvbiBiaW5hcnkgbW9kdWxlcyBmaW5kYWJsZQotaW4gdGhlIGluc3RhbGwgcHJvY2VzcyBvZiB0aGUgaG9zdCBweXRob24uCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiAyMDEyLzAzLzE0Ci0KLVVwZGF0ZWQgZm9yIHB5dGhvbiAyLjcuMwotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IDIwMTIvMDUvMDEKLQotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotCi1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9zeXNjb25maWcucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9MaWIvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9zeXNjb25maWcucHkKLUBAIC05LDcgKzksNyBAQCBfSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAncG9zaXhfcHJlZml4JzogewotICAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLS0gICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7cGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLUBAIC02Nyw3ICs2Nyw3IEBAIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICdwb3NpeF91c2VyJzogewotICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0tICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi1JbmRleDogUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuOS9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMDQ2LDI3ICsxMDQ2LDI3IEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUEwKLSAJCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jIFwKLSAJCQkkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHMgOyBcCi0gCWZpCi0tCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0rCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpIC1mIFwKLSAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAotIAkJJChERVNURElSKSQoTElCREVTVCkKLS0JUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotKwlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpIC1mIFwKLSAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAotIAkJJChERVNURElSKSQoTElCREVTVCkKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0rCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSAkKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKLSAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCi0tCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0rCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSAkKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKLSAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCi0tCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0rCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSAkKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0Ci0tCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0rCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSAkKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAotIAotICMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9mbG9hdC1lbmRpYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2Zsb2F0LWVuZGlhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1YzkwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2Zsb2F0LWVuZGlhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi1QeXRob24gdXNlcyBBQ19SVU5fSUZFTFNFIHRvIGRldGVybWluZSB0aGUgYnl0ZSBvcmRlciBmb3IgZmxvYXRzIGFuZCBkb3VibGVzLAotYW5kIGZhbGxzIGJhY2sgb250byAiSSBkb24ndCBrbm93IiBpZiBpdCBjYW4ndCBydW4gY29kZS4gIFRoaXMgcmVzdWx0cyBpbgotY3JpcHBsZWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbiBQeXRob24sIGFuZCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBmYWlsLgotCi1JbnN0ZWFkIG9mIHJ1bm5pbmcgY29kZSwgdGFrZSBhIG1hY3JvIGZyb20gYXV0b2NvbmYtYXJjaGl2ZSB3aGljaCBjb21waWxlcyBDCi13aXRoIGEgc3BlY2lhbCBkb3VibGUgaW4gd2hpY2ggaGFzIGFuIEFTQ0lJIHJlcHJlc2VudGF0aW9uLCBhbmQgdGhlbiBncmVwcyB0aGUKLWJpbmFyeSB0byBpZGVudGlmeSB0aGUgZm9ybWF0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDI1M2Y0N2IyODEyMGM0MmNmZTUzYTRlMmY1ZWQwYWIwZWQ0NjlkZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zc0BidXJ0b25pbmkuY29tPgotRGF0ZTogV2VkLCAxOSBTZXAgMjAxOCAwNzoyNTo0OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBjbG9zZXMgYnBvLTM0NTg1OiBEb24ndCBkbyBydW50aW1lIHRlc3QgdG8gZ2V0IGZsb2F0IGJ5dGUKLSBvcmRlci4gKEdILTkwODUpCi0KLUN1cnJlbnRseSBjb25maWd1cmUuYWMgdXNlcyBBQ19SVU5fSUZFTFNFIHRvIGRldGVybWluZSB0aGUgYnl0ZSBvcmRlciBvZiBkb3VibGVzLCBidXQgdGhpcyBzaWxlbnRseSBmYWlscyB1bmRlciBjcm9zcyBjb21waWxhdGlvbiBhbmQgUHl0aG9uIGRvZXNuJ3QgZG8gZmxvYXRzIHByb3Blcmx5LgotCi1JbnN0ZWFkLCBzdGVhbCBhIG1hY3JvIGZyb20gYXV0b2NvbmYtYXJjaGl2ZSB3aGljaCBjb21waWxlcyBjb2RlIHVzaW5nIG1hZ2ljIGRvdWJsZXMgKHdoaWNoIGVuY29kZSB0byBBU0NJSSkgYW5kIGdyZXAgZm9yIHRoZSByZXByZXNlbnRhdGlvbiBpbiB0aGUgYmluYXJ5LgotCi1SRkMgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgeWV0IGhhbmRsZSB0aGUgd2VpcmQgYW5jaWVudCBBUk12NCBPQUJJICdtaXhlZC1lbmRpYW4nIGVuY29kaW5nIHByb3Blcmx5LiBUaGlzIGVuY29kaW5nIGlzIGFuY2llbnQgYW5kIEkgZG9uJ3QgYmVsaWV2ZSB0aGUgdW5pb24gb2YgIlB5dGhvbiAzLjggdXNlcnMiIGFuZCAiT0FCSSB1c2VycyIgaGFzIGFueXRoaW5nIGluLiBTaG91bGQgdGhlIHN1cHBvcnQgZm9yIHRoaXMganVzdCBiZSBkcm9wcGVkIHRvbz8gQWx0ZXJuYXRpdmVseSwgc29tZW9uZSB3aWxsIG5lZWQgdG8gZmluZCBhbiBPQUJJIHRvb2xjaGFpbiB0byB2ZXJpZnkgdGhlIGVuY29kaW5nIG9mIHRoZSBtYWdpYyBkb3VibGUuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSAuLi4vQnVpbGQvMjAxOC0wOS0xOC0xNi0yOC0zMS5icG8tMzQ1ODUuQ0dNdTBoLnJzdCB8ICAzICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDc2ICsrKystLS0tLS0tLS0tLS0tLS0tCi0gbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgICAgICAgICAgICAgICAgICAgfCA4MyArKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9CdWlsZC8yMDE4LTA5LTE4LTE2LTI4LTMxLmJwby0zNDU4NS5DR011MGgucnN0Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0IG00L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkxM2Q1NDY5ZDAuLjc2NzI3MzUzOTYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM4MzUsNzQgKzM4MzUsMjQgQEAgZmldLAotICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBsaXR0bGUtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDVceDA0XHgwM1x4MDJceDAxXHhmZlx4M2ZceDQzIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUiID0geWVzCi0tdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCi0tICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotLSAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBiaWctZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4NDNceDNmXHhmZlx4MDFceDAyXHgwM1x4MDRceDA1IiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUiID0geWVzCi0rQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KLStpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gInllcyIKLSB0aGVuCi0gICBBQ19ERUZJTkUoRE9VQkxFX0lTX0JJR19FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0gICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLS1maQotLQotLSMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KLS0jIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCi0tIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotLSMgY29udmVyc2lvbnMgd29yay4KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIEFSTSBtaXhlZC1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDAxXHhmZlx4M2ZceDQzXHgwNVx4MDRceDAzXHgwMiIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStlbGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAibm8iCi0gdGhlbgotKyAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCi0rICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotKyAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotK2Vsc2UKLSsgICMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KLSsgICMgV2hpbGUgUHl0aG9uIGRvZXNuJ3QgY3VycmVudGx5IGhhdmUgZnVsbCBzdXBwb3J0IGZvciB0aGVzZSBwbGF0Zm9ybXMKLSsgICMgKHNlZSBlLmcuLCBpc3N1ZSAxNzYyNTYxKSwgd2UgY2FuIGF0IGxlYXN0IG1ha2Ugc3VyZSB0aGF0IGZsb2F0IDwtPiBzdHJpbmcKLSsgICMgY29udmVyc2lvbnMgd29yay4KLSsgICMgRkxPQVRfV09SRFNfQklHRU5ESUFOIGRvZXNudCBhY3R1YWxseSBkZXRlY3QgdGhpcyBjYXNlLCBidXQgaWYgaXQncyBub3QgYmlnCi0rICAjIG9yIGxpdHRsZSwgdGhlbiBpdCBtdXN0IGJlIHRoaXM/Ci0gICBBQ19ERUZJTkUoRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0gICAgaW4gQVJNIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMyldKQotZGlmZiAtLWdpdCBhL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00IGIvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yMTZiOTBkODAzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotQEAgLTAsMCArMSw4MyBAQAotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMgIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5odG1sCi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIwotKyMgU1lOT1BTSVMKLSsjCi0rIyAgIEFYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOKFtBQ1RJT04tSUYtVFJVRV0sIFtBQ1RJT04tSUYtRkFMU0VdLCBbQUNUSU9OLUlGLVVOS05PV05dKQotKyMKLSsjIERFU0NSSVBUSU9OCi0rIwotKyMgICBDaGVja3MgdGhlIG9yZGVyaW5nIG9mIHdvcmRzIHdpdGhpbiBhIG11bHRpLXdvcmQgZmxvYXQuIFRoaXMgY2hlY2sgaXMKLSsjICAgbmVjZXNzYXJ5IGJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIGNlcnRhaW4gQVJNIHN5c3RlbXMpLCB0aGUgZmxvYXQKLSsjICAgd29yZCBvcmRlcmluZyBjYW4gYmUgZGlmZmVyZW50IGZyb20gdGhlIGJ5dGUgb3JkZXJpbmcuIEluIGEgbXVsdGktd29yZAotKyMgICBmbG9hdCBjb250ZXh0LCAiYmlnLWVuZGlhbiIgaW1wbGllcyB0aGF0IHRoZSB3b3JkIGNvbnRhaW5pbmcgdGhlIHNpZ24KLSsjICAgYml0IGlzIGZvdW5kIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gd2l0aCB0aGUgbG93ZXN0IGFkZHJlc3MuIFRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24gd2FzIGluc3BpcmVkIGJ5IHRoZSBBQ19DX0JJR0VORElBTiBtYWNybyBpbiBhdXRvY29uZi4KLSsjCi0rIyAgIFRoZSBlbmRpYW5uZXNzIGlzIGRldGVjdGVkIGJ5IGZpcnN0IGNvbXBpbGluZyBDIGNvZGUgdGhhdCBjb250YWlucyBhCi0rIyAgIHNwZWNpYWwgZG91YmxlIGZsb2F0IHZhbHVlLCB0aGVuIGdyZXBwaW5nIHRoZSByZXN1bHRpbmcgb2JqZWN0IGZpbGUgZm9yCi0rIyAgIGNlcnRhaW4gc3RyaW5ncyBvZiBBU0NJSSB2YWx1ZXMuIFRoZSBkb3VibGUgaXMgc3BlY2lhbGx5IGNyYWZ0ZWQgdG8gaGF2ZQotKyMgICBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiB0aGF0IGNvcnJlc3BvbmRzIHdpdGggYSBzaW1wbGUgc3RyaW5nLiBJbiB0aGlzCi0rIyAgIGltcGxlbWVudGF0aW9uLCB0aGUgc3RyaW5nICJub29uc2VlcyIgd2FzIHNlbGVjdGVkIGJlY2F1c2UgdGhlCi0rIyAgIGluZGl2aWR1YWwgd29yZCB2YWx1ZXMgKCJub29uIiBhbmQgInNlZXMiKSBhcmUgcGFsaW5kcm9tZXMsIHRodXMgbWFraW5nCi0rIyAgIHRoaXMgdGVzdCBieXRlLW9yZGVyIGFnbm9zdGljLiBJZiBncmVwIGZpbmRzIHRoZSBzdHJpbmcgIm5vb25zZWVzIiBpbgotKyMgICB0aGUgb2JqZWN0IGZpbGUsIHRoZSB0YXJnZXQgcGxhdGZvcm0gc3RvcmVzIGZsb2F0IHdvcmRzIGluIGJpZy1lbmRpYW4KLSsjICAgb3JkZXIuIElmIGdyZXAgZmluZHMgInNlZXNub29uIiwgZmxvYXQgd29yZHMgYXJlIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCi0rIyAgIElmIG5laXRoZXIgdmFsdWUgaXMgZm91bmQsIHRoZSB1c2VyIGlzIGluc3RydWN0ZWQgdG8gc3BlY2lmeSB0aGUKLSsjICAgb3JkZXJpbmcuCi0rIwotKyMgTElDRU5TRQotKyMKLSsjICAgQ29weXJpZ2h0IChjKSAyMDA4IERhbmllbCBBbWVsYW5nIDxkYW5AYW1lbGFuZy5uZXQ+Ci0rIwotKyMgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKLSsjICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCi0rIyAgIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywgd2l0aG91dCBhbnkKLSsjICAgd2FycmFudHkuCi0rCi0rI3NlcmlhbCAxMQotKwotK0FDX0RFRlVOKFtBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTl0sCi0rICBbQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciBmbG9hdCB3b3JkIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiwKLSsgICAgICAgICAgICAgICAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiwgWwotKwotK2F4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPXVua25vd24KLStBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLSsKLStkb3VibGUgZCA9IDkwOTA0MjM0OTY3MDM2ODEwMzM3NDcwNDc4OTA1NTA1MDExNDc2MjExNjkyNzM1NjE1NjMyMDE0Nzk3MTIwODQ0MDUzNDg4ODY1ODE2Njk1MjczNzIzNDY5MDk3ODU4MDU2MjU3NTE3MDIwMTkxMjQ3NDg3NDI5NTE2OTMyMTMwNTAzNTYwNjUwMDAyMzI3NTY0NTE3NTcwNzc4NDgwMjM2NzI0NTI1MTQwNTIwMTIxMzcxNzM5MjAxNDk2NTQwMTMyNjQwMTA5OTc3Nzc5NDIwNTY1Nzc2NTY4OTQyNTkyLjA7Ci0rCi0rXV0pXSwgWwotKwotK2lmIGdyZXAgbm9vbnNlZXMgY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49eWVzCi0rZmkKLStpZiBncmVwIHNlZXNub29uIGNvbmZ0ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KLSsgIGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSB1bmtub3duOyB0aGVuCi0rICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPW5vCi0rICBlbHNlCi0rICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPXVua25vd24KLSsgIGZpCi0rZmkKLSsKLStdKV0pCi0rCi0rY2FzZSAkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4gaW4KLSsgIHllcykKLSsgICAgbTRfZGVmYXVsdChbJDFdLAotKyAgICAgIFtBQ19ERUZJTkUoW0ZMT0FUX1dPUkRTX0JJR0VORElBTl0sIDEsCi0rICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0ZW0gc3RvcmVzIHdvcmRzIHdpdGhpbiBmbG9hdHMKLSsgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgZmlyc3RdKV0pIDs7Ci0rICBubykKLSsgICAgJDIgOzsKLSsgICopCi0rICAgIG00X2RlZmF1bHQoWyQzXSwKLSsgICAgICBbQUNfTVNHX0VSUk9SKFsKLSsKLStVbmtub3duIGZsb2F0IHdvcmQgb3JkZXJpbmcuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHByZXNldAotK2F4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPW5vIChvciB5ZXMpIGFjY29yZGluZyB0byB5b3VyIHN5c3RlbS4KLSsKLSsgICAgXSldKSA7OwotK2VzYWMKLSsKLStdKSMgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZ2V0X21vZHVsZV9kZXBzMi5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZ2V0X21vZHVsZV9kZXBzMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlN2M2Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotIyBUaGlzIHNjcmlwdCBpcyBsYXVuY2hlZCBvbiBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIHB5dGhvbiBtb2R1bGUKLSMgSXQgY2hlY2tzIGZvciBkZXBlbmRlbmNpZXMgZm9yIHRoYXQgc3BlY2lmaWMgbW9kdWxlIGFuZCBwcmludHMgCi0jIHRoZW0gb3V0LCB0aGUgb3V0cHV0IG9mIHRoaXMgZXhlY3V0aW9uIHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCi0jIGZvciBhIHNwZWNpZmljIG1vZHVsZSwgd2hpY2ggd2lsbCBiZSBwYXJzZWQgYW4gZGVhbHQgb24gY3JlYXRlX21hbmlmZXN0LnB5Ci0jCi0jIEF1dGhvcjogQWxlamFuZHJvIEVuZWRpbm8gSGVybmFuZGV6IFNhbWFuaWVnbyAiYWVoczI5IiA8YWVoczI5QGdtYWlsLmNvbT4KLQotCi0jIFdlIGNhbiBnZXQgYSBsb2cgcGVyIG1vZHVsZSwgZm9yIGFsbCB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2VyZSBmb3VuZCwgYnV0IGl0cyBtZXNzeS4KLWRlYnVnPUZhbHNlCi0KLWltcG9ydCBzeXMKLQotIyBXZSBjYW4gZ2V0IGEgbGlzdCBvZiB0aGUgbW9kdWxlcyB3aGljaCBhcmUgY3VycmVudGx5IHJlcXVpcmVkIHRvIHJ1biBweXRob24KLSMgc28gd2UgcnVuIHB5dGhvbi1jb3JlIGFuZCBnZXQgaXRzIG1vZHVsZXMsIHdlIHRoZW4gaW1wb3J0IHdoYXQgd2UgbmVlZAotIyBhbmQgY2hlY2sgd2hhdCBtb2R1bGVzIGFyZSBjdXJyZW50bHkgcnVubmluZywgaWYgd2Ugc3Vic3RyYWN0IHRoZW0gZnJvbSB0aGUKLSMgbW9kdWxlcyB3ZSBoYWQgaW5pdGlhbGx5LCB3ZSBnZXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIG1vZHVsZSB3ZSBpbXBvcnRlZC4KLQotIyBXZSB1c2UgaW1wb3J0bGliIHRvIGFjaGlldmUgdGhpcywgc28gd2UgYWxzbyBuZWVkIHRvIGtub3cgd2hhdCBtb2R1bGVzIGltcG9ydGxpYiBuZWVkcwotaW1wb3J0IGltcG9ydGxpYgotCi1jb3JlX2RlcHM9c2V0KHN5cy5tb2R1bGVzKQotCi1kZWYgZml4X3BhdGgoZGVwX3BhdGgpOgotICAgIGltcG9ydCBvcwotICAgICMgV2UgRE9OVCB3YW50IHRoZSBwYXRoIG9uIG91ciBIT1NUIHN5c3RlbQotICAgIHBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCi0gICAgZGVwX3BhdGg9ZGVwX3BhdGhbZGVwX3BhdGguZmluZChwaXZvdCkrbGVuKHBpdm90KTpdCi0KLSAgICBpZiAnL3Vzci9iaW4nIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvYmluJycke2JpbmRpcn0nKQotCi0gICAgIyBIYW5kbGUgbXVsdGlsaWIsIGlzIHRoZXJlIGEgYmV0dGVyIHdheT8KLSAgICBpZiAnL3Vzci9saWIzMicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWIzMicsJyR7bGliZGlyfScpCi0gICAgaWYgJy91c3IvbGliNjQnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliNjQnLCcke2xpYmRpcn0nKQotICAgIGlmICcvdXNyL2xpYicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWInLCcke2xpYmRpcn0nKQotICAgIGlmICcvdXNyL2luY2x1ZGUnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvaW5jbHVkZScsJyR7aW5jbHVkZWRpcn0nKQotICAgIGlmICdfX2luaXRfXy4nIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9ICBvcy5wYXRoLnNwbGl0KGRlcF9wYXRoKVswXQotCi0gICAgIyBJZiBhICoucHljIGZpbGUgd2FzIGltcG9ydGVkLCB3ZSByZXBsYWNlIGl0IHdpdGggKi5weSAoc2luY2Ugd2UgZGVhbCB3aXRoIFBZQ3Mgb24gY3JlYXRlX21hbmlmZXN0KQotICAgIGlmICcucHljJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcucHljJywnLnB5JykKLQotICAgIHJldHVybiBkZXBfcGF0aAotCi0jIE1vZHVsZSB0byBpbXBvcnQgd2FzIHBhc3NlZCBhcyBhbiBhcmd1bWVudAotY3VycmVudF9tb2R1bGUgPSAgc3RyKHN5cy5hcmd2WzFdKS5yc3RyaXAoKQotaWYoZGVidWc9PVRydWUpOgotCWxvZyA9IG9wZW4oJ2xvZ18lcycgJSBjdXJyZW50X21vZHVsZSwndycpCi0gICAgICAgIGxvZy53cml0ZSgnTW9kdWxlICVzIGdlbmVyYXRlZCB0aGUgZm9sbG93aW5nIGRlcGVuZGVuY2llczpcbicgJSBjdXJyZW50X21vZHVsZSkKLXRyeToKLSAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnJXMnICUgY3VycmVudF9tb2R1bGUpCi1leGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICBpZiAoZGVidWc9PVRydWUpOgotICAgICAgICBsb2cud3JpdGUoJ01vZHVsZSB3YXMgbm90IGZvdW5kJykKLSAgICBwYXNzCi0KLQotIyBHZXQgY3VycmVudCBtb2R1bGUgZGVwZW5kZW5jaWVzLCBkaWYgd2lsbCBjb250YWluIGEgbGlzdCBvZiBzcGVjaWZpYyBkZXBzIGZvciB0aGlzIG1vZHVsZQotbW9kdWxlX2RlcHM9c2V0KHN5cy5tb2R1bGVzKQotCi0jIFdlIGhhbmRsZSB0aGUgY29yZSBwYWNrYWdlICgxc3QgcGFzcyBvbiBjcmVhdGVfbWFuaWZlc3QucHkpIGFzIGEgc3BlY2lhbCBjYXNlCi1pZiBjdXJyZW50X21vZHVsZSA9PSAncHl0aG9uLWNvcmUtcGFja2FnZSc6Ci0gICAgZGlmID0gY29yZV9kZXBzCi1lbHNlOgotICAgIGRpZiA9IG1vZHVsZV9kZXBzLWNvcmVfZGVwcwotCi0KLSMgQ2hlY2sgd2hlcmUgZWFjaCBkZXBlbmRlbmN5IGNhbWUgZnJvbQotZm9yIGl0ZW0gaW4gZGlmOgotICAgIGRlcF9wYXRoPScnCi0gICAgdHJ5OgotICAgICAgICBpZiAoZGVidWc9PVRydWUpOgotICAgICAgICAgICAgbG9nLndyaXRlKCdDYWxsaW5nOiBzeXMubW9kdWxlc1snICsgJyVzJyAlIGl0ZW0gKyAnXS5fX2ZpbGVfX1xuJykKLSAgICAgICAgZGVwX3BhdGggPSBzeXMubW9kdWxlc1snJXMnICUgaXRlbV0uX19maWxlX18KLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgIyBEZWFscyB3aXRoIHRocmVhZCAoYnVpbHRpbiBtb2R1bGUpIG5vdCBoYXZpbmcgX19maWxlX18gYXR0cmlidXRlCi0JaWYgZGVidWc9PVRydWU6Ci0gICAgICAgICAgICBsb2cud3JpdGUoaXRlbSArICcgJykKLSAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpCi0JICAgIGxvZy53cml0ZSgnXG4nKQotICAgICAgICAgICAgcGFzcwotICAgIGV4Y2VwdCBOYW1lRXJyb3IgYXMgZToKLSAgICAgICAgIyBEZWFscyB3aXRoIE5hbWVFcnJvcjogbmFtZSAnZGVwX3BhdGgnIGlzIG5vdCBkZWZpbmVkCi0gICAgICAgICMgYmVjYXVzZSBtb2R1bGUgaXMgbm90IGZvdW5kICh3YXNuJ3QgY29tcGlsZWQ/KSwgZS5nLiBiZGRzbQotICAgICAgICBpZiAoZGVidWc9PVRydWUpOgotICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0rJyAnKSAKLSAgICAgICAgICAgIGxvZy53cml0ZShzdHIoZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBwYXNzCi0KLSAgICAjIFNpdGUtY3VzdG9taXplIGlzIGEgc3BlY2lhbCBjYXNlIHNpbmNlIHdlIChPcGVuRW1iZWRkZWQpIHB1dCBpdCB0aGVyZSBtYW51YWxseQotICAgIGlmICdzaXRlY3VzdG9taXplJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSAnJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlY3VzdG9taXplLnB5JwotICAgICAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKLSAgICAgICAgcHJpbnQgKGRlcF9wYXRoKQotICAgICAgICBjb250aW51ZQotCi0gICAgZGVwX3BhdGggPSBmaXhfcGF0aChkZXBfcGF0aCkKLQotICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgIGxvZy53cml0ZShkZXBfcGF0aCsnXG4nKQotCi0gICAgIyBQcmludHMgb3V0IHJlc3VsdCwgd2hpY2ggaXMgd2hhdCB3aWxsIGJlIHVzZWQgYnkgY3JlYXRlX21hbmlmZXN0Ci0gICAgcHJpbnQgKGRlcF9wYXRoKQotCi1pZiBkZWJ1Zz09VHJ1ZToKLSAgICBsb2cuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYWFmYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLXdoZW4gYnVpbGRpbmcgcHl0aG9uIGZvciBxZW11eDg2LTY0IG9uIHVidW50dSAxMS4xMC82NGJpdAotaXQgZ3JvcGVzIGludG8gaG9zdCBpbmNsdWRlcyBhbmQgdGhlbiBtaXhlcyB0aGVtIHdpdGggY3Jvc3MKLWluY2x1ZGVzIGFuZCBhcyBhIHJlc3VsdCBzb21lIG1vZHVsZXMgZmFpbCB0byBjb21waWxlIGFuZCBsaW5rCi1vbmUgb2YgdGhlIG1vZHVsZXMgaXMgcHl0aG9uLWVsZW1lbnR0cmVlIHdoaWNoIGlzIHRoZW4gbm90Ci1mb3VuZCBkdXJpbmcgaW1hZ2UgY3JlYXRpb24KLQotUHJvYmxlIGlzIHRoYXQgc2V0dXAucHkgdHJpZXMgdG8gYWRkIG5hdGl2ZSBpbmNsdWRlcyB0aGF0IG5ld2VyCi11YnVudHUgaGFzIGludHJvZHVjZWQgZm9yIG11bHRpYXJjaCBzdXBwb3J0LiBCdXQgdGhhdCBzaG91bGQKLW9ubHkgaGFwcGVuIGZvciBuYXRpdmUgYnVpbGRzIGFuZCBub3QgY3Jvc3MgYnVpbGRpbmcgcHl0aG9uCi1zbyB3ZSBhZGQgYSBjaGVjayBoZXJlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGJhMmQyNDIuLmJmODU5YmUgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0zOTMsNiArMzkzLDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICAgICAgaWYgbm90IGZpbmRfZXhlY3V0YWJsZSgnZHBrZy1hcmNoaXRlY3R1cmUnKToKLSAgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCdDUk9TU19DT01QSUxFJykgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICBvcHQgPSAnJwotICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotICAgICAgICAgICAgIG9wdCA9ICctdCcgKyBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hPU1RfR05VX1RZUEUnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNGJjMTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLUBAIC03NTgsNiArNzU4LDEwIEBAIFN1bk9TKikKLSAgICAgOzsKLSBlc2FjCi0gCi0rQUNfU1VCU1QoTElCKQotK0FDX01TR19DSEVDS0lORyhMSUIpCi0rTElCPSJTRURNRUxJQkxFQUYiCi0rQUNfTVNHX1JFU1VMVCgkTElCKQotIAotIEFDX1NVQlNUKExJQlJBUlkpCi0gQUNfTVNHX0NIRUNLSU5HKExJQlJBUlkpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0luY2x1ZGUvcHl0aG9ucnVuLmgKLSsrKyBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLUBAIC0xMDgsNiArMTA4LDcgQEAgUHlBUElfRlVOQyhjaGFyICopIFB5X0dldFBhdGgodm9pZCk7Ci0gLyogSW4gdGhlaXIgb3duIGZpbGVzICovCi0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFZlcnNpb24odm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFBsYXRmb3JtKHZvaWQpOwotK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRMaWIodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldEJ1aWxkSW5mbyh2b2lkKTsKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotQEAgLTIyLDYgKzIyLDggQEAgZnJvbSBzaXRlIGltcG9ydCBVU0VSX0JBU0UKLSBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfU0lURQotIAotIAotK2xpYm5hbWUgPSBzeXMubGliCi0rCi0gaWYgc3lzLnZlcnNpb24gPCAiMi4yIjoKLSAgICAgV0lORE9XU19TQ0hFTUUgPSB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZScsCi1AQCAtNDEsOCArNDMsOCBAQCBlbHNlOgotIAotIElOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3VuaXhfcHJlZml4JzogewotLSAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwdXJlbGliJzogJyRwbGF0YmFzZS8nK2xpYm5hbWUrJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS8nK2xpYm5hbWUrJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdoZWFkZXJzJzogJyRiYXNlL2luY2x1ZGUvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvJGRpc3RfbmFtZScsCi0gICAgICAgICAnc2NyaXB0cyc6ICckYmFzZS9iaW4nLAotICAgICAgICAgJ2RhdGEnICAgOiAnJGJhc2UnLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtMTE5LDggKzExOSwxMSBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuCi0gICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKLSAKLSAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgotLSAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliIiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSsgICAgICAgIGlmIHBsYXRfc3BlY2lmaWMgb3Igc3RhbmRhcmRfbGliOgotKyAgICAgICAgICAgIGxpYiA9IHN5cy5saWIKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgbGliID0gImxpYiIKLSsgICAgICAgIGxpYnB5dGhvbiA9IG9zLnBhdGguam9pbihwcmVmaXgsIGxpYiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKLSAgICAgICAgICAgICByZXR1cm4gbGlicHl0aG9uCi0gICAgICAgICBlbHNlOgotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9weWRvYy5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3B5ZG9jLnB5Ci1AQCAtMzc1LDcgKzM3NSw3IEBAIGNsYXNzIERvYzoKLSAgICAgZG9jbW9kdWxlID0gZG9jY2xhc3MgPSBkb2Nyb3V0aW5lID0gZG9jb3RoZXIgPSBkb2Nwcm9wZXJ0eSA9IGRvY2RhdGEgPSBmYWlsCi0gCi0gICAgIGRlZiBnZXRkb2Nsb2Moc2VsZiwgb2JqZWN0LAotLSAgICAgICAgICAgICAgICAgIGJhc2VkaXI9b3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAic3lzLmxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIrc3lzLnZlcnNpb25bMDozXSkpOgotICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb2NhdGlvbiBvZiBtb2R1bGUgZG9jcyBvciBOb25lIiIiCi0gCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKLUBAIC0yODgsMTMgKzI4OCwxOCBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6Ci0gICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczJlbXgnLCAncmlzY29zJyk6Ci0gICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAiTGliIiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcHl0aG9uIikpCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBpZiBzeXMubGliICE9ICJsaWIiOgotKyAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCi0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcGFja2FnZXMiKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXBhY2thZ2VzIikpCi0gICAgIHJldHVybiBzaXRlcGFja2FnZXMKLSAKLSBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9zeXNjb25maWcucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3N5c2NvbmZpZy5weQotQEAgLTcsMTAgKzcsMTAgQEAgZnJvbSBvcy5wYXRoIGltcG9ydCBwYXJkaXIsIHJlYWxwYXRoCi0gCi0gX0lOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKLS0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdzdGRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0rICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7cGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAotQEAgLTY1LDEwICs2NSwxMCBAQCBfSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCi0gICAgICAgICB9LAotICAgICAncG9zaXhfdXNlcic6IHsKLS0gICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLS0gICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0rICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9kbC5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotQEAgLTQsMTAgKzQsMTEgQEAKLSBpbXBvcnQgdW5pdHRlc3QKLSBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlCi0gZGwgPSBpbXBvcnRfbW9kdWxlKCdkbCcsIGRlcHJlY2F0ZWQ9VHJ1ZSkKLStpbXBvcnQgc3lzCi0gCi0gc2hhcmVkbGlicyA9IFsKLS0gICAgKCcvdXNyL2xpYi9saWJjLnNvJywgJ2dldHBpZCcpLAotLSAgICAoJy9saWIvbGliYy5zby42JywgJ2dldHBpZCcpLAotKyAgICAoJy91c3IvJytzeXMubGliKycvbGliYy5zbycsICdnZXRwaWQnKSwKLSsgICAgKCcvJytzeXMubGliKycvbGliYy5zby42JywgJ2dldHBpZCcpLAotICAgICAoJy91c3IvYmluL2N5Z3dpbjEuZGxsJywgJ2dldHBpZCcpLAotICAgICAoJy91c3IvbGliL2xpYmMuZHlsaWInLCAnZ2V0cGlkJyksCi0gICAgIF0KLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X3NpdGUucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotQEAgLTI1MiwxMiArMjUyLDE2IEBAIGNsYXNzIEhlbHBlckZ1bmN0aW9uc1Rlc3RzKHVuaXR0ZXN0LlRlc3QKLSAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKLSAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKLSAgICAgICAgICAgICAjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBldGMKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKLSAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3B5dGhvbicgKyBzeXMudmVyc2lvbls6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0gICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdzaXRlLXB5dGhvbicpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhbnRlZCBpbiBkaXJzKQotKyAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsIHN5cy5saWIsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhbnRlZCBpbiBkaXJzKQotKyAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsIHN5cy5saWIsICdzaXRlLXB5dGhvbicpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhbnRlZCBpbiBkaXJzKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAjIG90aGVyIHBsYXRmb3JtcwotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90cmFjZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci1AQCAtNzU0LDEwICs3NTQsMTAgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQotIAotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCi0gICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi1AQCAtOTEsNiArOTEsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCi0gCi0gIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwotIE1BQ0hERVA9CUBNQUNIREVQQAotK0xJQj0JCUBMSUJACi0gCi0gIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCi0gTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTExMCw3ICsxMTEsNyBAQCBMSUJESVI9CQlAbGliZGlyQAotIE1BTkRJUj0JCUBtYW5kaXJACi0gSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACi0gQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKLS1TQ1JJUFRESVI9CSQocHJlZml4KS9saWIKLStTQ1JJUFRESVI9CSQocHJlZml4KS9ATElCQAotIAotICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLSBCSU5MSUJERVNUPQkkKExJQkRJUikvcHl0aG9uJChWRVJTSU9OKQotQEAgLTY0NSw2ICs2NDYsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0Ci0gCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCi0gCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAotIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXAotKwkJLURMSUI9JyIkKExJQikiJyBcCi0gCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKLSAKLSBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTY5Myw3ICs2OTUsNyBAQCByZWdlbi1hc3Q6Ci0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCi0gCi0gUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotLQkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtRExJQj0nIiQoTElCKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotIAotIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLSAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCi0rKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEwMCw2ICsxMDAsMTMgQEAKLSAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCi0gI2VuZGlmCi0gCi0rI2RlZmluZSBMSUJfUFlUSE9OIExJQiAiL3B5dGhvbiIgVkVSU0lPTgotKwotKyNpZm5kZWYgUFlUSE9OUEFUSAotKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKLSsgICAgICAgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0rI2VuZGlmCi0rCi0gI2lmbmRlZiBMQU5ETUFSSwotICNkZWZpbmUgTEFORE1BUksgIm9zLnB5IgotICNlbmRpZgotQEAgLTEwOCw3ICsxMTUsNyBAQCBzdGF0aWMgY2hhciBwcmVmaXhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciBleGVjX3ByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIHByb2dwYXRoW01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgKm1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7Ci0tc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gImxpYi9weXRob24iIFZFUlNJT047Ci0rc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gTElCX1BZVEhPTjsKLSAKLSBzdGF0aWMgdm9pZAotIHJlZHVjZShjaGFyICpkaXIpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKLUBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQotIHsKLSAJcmV0dXJuIFBMQVRGT1JNOwotIH0KLSsKLSsjaWZuZGVmIExJQgotKyNkZWZpbmUgTElCICJsaWIiCi0rI2VuZGlmCi0rCi0rY29uc3QgY2hhciAqCi0rUHlfR2V0TGliKHZvaWQpCi0rewotKwlyZXR1cm4gTElCOwotK30KLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE0MzcsNiArMTQzNyw4IEBAIF9QeVN5c19Jbml0KHZvaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQbGF0Zm9ybSgpKSk7Ci0rICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRMaWIoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJleGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldFByb2dyYW1GdWxsUGF0aCgpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInByZWZpeCIsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYWI0MWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotV2hlbiB1c2luZyBtYWtlIC1qIHdpdGggdGhlICdpbnN0YWxsJyB0YXJnZXQsIGl0J3MgcG9zc2libGUgZm9yIGFsdGJpbmluc3RhbGwKLSh3aGljaCBub3JtYWxseSBjcmVhdGVzIEJJTkRJUikgYW5kIGxpYmFpbnN0YWxsICh3aGljaCBkb2Vzbid0LCB0aG91Z2ggaXQKLWluc3RhbGxzIHB5dGhvbi1jb25maWcgdGhlcmUpIHRvIHJhY2UsIHJlc3VsdGluZyBpbiBhIGZhaWx1cmUgZHVlIHRvCi1hdHRlbXB0aW5nIHRvIGluc3RhbGwgcHl0aG9uLWNvbmZpZyBpbnRvIGEgbm9uZXhpc3RlbnQgQklORElSLiBFbnN1cmUgaXQgYWxzbwotZXhpc3RzIGluIHRoZSBsaWJhaW5zdGFsbCB0YXJnZXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gUHl0aG9uLTIuNy4zLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy4zL01ha2VmaWxlLnByZS5pbgotQEAgLTExODcsNyArMTE4Nyw3IEBACi0gTElCUEM9CQkkKExJQkRJUikvcGtnY29uZmlnCi0gCi0gbGliYWluc3RhbGw6CUBERUZfTUFLRV9SVUxFQCBweXRob24tY29uZmlnCi0tCUBmb3IgaSBpbiAkKExJQkRJUikgJChMSUJQKSAkKExJQlBMKSAkKExJQlBDKTsgXAotKwlAZm9yIGkgaW4gJChMSUJESVIpICQoTElCUCkgJChMSUJQTCkgJChMSUJQQykgJChCSU5ESVIpOyBcCi0gCWRvIFwKLSAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKLSAJCQllY2hvICJDcmVhdGluZyBkaXJlY3RvcnkgJCRpIjsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGZjYWFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUZyb20gNzE0NDdmMDQ5NzliMjY3Zjg4NjY1NzNiNjdhNDM0MGIyNzE5ZDc5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNDoxMDo0MyArMDgwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKLQotSW4gdGhlIGZvbGxvd2luZyBjb21taXQ6Ci0uLi4KLWNvbW1pdCBlNzExY2FmYWIxM2VmYzljMWZlNmM1Y2Q3NTgyNjQwMTQ0NWViNTg1Ci1BdXRob3I6IEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgotRGF0ZTogICBXZWQgSnVuIDExIDE2OjQ0OjA0IDIwMDggKzAwMDAKLQotICAgIE1lcmdlZCByZXZpc2lvbnMgNjQxMDQsNjQxMTcgdmlhIHN2bm1lcmdlIGZyb20KLSAgICBzdm4rc3NoOi8vcHl0aG9uZGV2QHN2bi5weXRob24ub3JnL3B5dGhvbi90cnVuawotLi4uCi0oc2VlIGRpZmYgaW4gc2V0dXAucHkpCi1JdCBhc3NpZ25lZCBsaWJyYXJpZXMgZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgYWNjb3JkaW5nCi10aGUgaG9zdF9wbGF0Zm9ybSwgYnV0IG5vdCBwYXNzIGl0IHRvIEV4dGVuc2lvbi4KLQotSW4gZ2xpYmMsIHRoZSBmb2xsb3dpbmcgY29tbWl0IGNhdXNlZCB0d28gZGVmaW5pdGlvbiBvZgotc2VtX2dldHZhbHVlIGFyZSBkaWZmZXJlbnQuCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD0wNDJlMTUyMWM3OTRhOTQ1ZWRjNDNiNWJmYTdlNjlhZDcwNDIwNTI0Ci0oc2VlIGRpZmYgaW4gbnB0bC9zZW1fZ2V0dmFsdWUuYyBmb3IgZGV0YWlsKQotYF9fbmV3X3NlbV9nZXR2YWx1ZScgaXMgdGhlIGxhdGVzdCBzZW1fZ2V0dmFsdWVAQEdMSUJDXzIuMQotYW5kIGBfX29sZF9zZW1fZ2V0dmFsdWUnIGlzIHRvIGNvbXBhdCB0aGUgb2xkIHZlcnNpb24KLXNlbV9nZXR2YWx1ZUBHTElCQ18yLjAuCi0KLVRvIGJ1aWxkIHB5dGhvbiBmb3IgZW1iZWRkZWQgTGludXggc3lzdGVtczoKLWh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuMy4xL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sCi1JZiBub3QgZXhwbGljaXRseSBsaW5rIHRvIGxpYnJhcnkgcHRocmVhZCAoLWxwdGhyZWFkKSwgaXQgd2lsbAotbG9hZCBnbGliYydzIHNlbV9nZXR2YWx1ZSByYW5kb21seSBhdCBydW50aW1lLgotCi1TdWNoIGFzIGJ1aWxkIHB5dGhvbiBvbiBsaW51eCB4ODZfNjQgaG9zdCBhbmQgcnVuIHRoZSBweXRob24KLW9uIGxpbnV4IHg4Nl8zMiB0YXJnZXQuIElmIG5vdCBsaW5rIGxpYnJhcnkgcHRocmVhZCwgaXQgY2F1c2VkCi1tdWx0aXByb2Nlc3NpbmcgYm91bmRlZCBzZW1hcGhvcmUgY291bGQgbm90IHdvcmsgY29ycmVjdGx5LgotLi4uCi0+Pj4gaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotPj4+IHBvb2xfc2VtYSA9IG11bHRpcHJvY2Vzc2luZy5Cb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCi0+Pj4gcG9vbF9zZW1hLmFjcXVpcmUoKQotVHJ1ZQotPj4+IHBvb2xfc2VtYS5yZWxlYXNlKCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLVZhbHVlRXJyb3I6IHNlbWFwaG9yZSBvciBsb2NrIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCi0uLi4KLQotQW5kIHRoZSBzZW1hcGhvcmUgaXNzdWUgYWxzbyBjYXVzZWQgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkucHV0KCkgaHVuZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5OTldCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNldHVwLnB5IHwgNyArKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDU0MDU0YzIuLjk2NDZiZmMgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xNTg2LDggKzE1ODYsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCi0tCi0tICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMaW51eCBhbmQgb3RoZXIgdW5pY2VzCi0rICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JykpOgotKyAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHRocmVhZCddCi0rICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlciB1bmljZXMKLSAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKLSAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3J0J10KLSAKLUBAIC0xNjEwLDYgKzE2MTIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6Ci0gICAgICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPW1hY3Jvcy5pdGVtcygpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX211bHRpcHJvY2Vzc2luZycpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNmJlMGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1SZW1vdmUgdGhlIFJQQVRIIHRvIGF2b2lkIFFBIGlzc3VlIHdhcm5pbmcuCi0KLVJQOiBBZGRlZCBzZWNvbmRhcnkgdW5uZWNlc3NhcnkgcnBhdGggdG8gdGhlIGxpc3QgMjAxMi84LzcKLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0KLQotSW5kZXg6IFB5dGhvbi0yLjcuMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMy5vcmlnL3NldHVwLnB5CTIwMTItMDgtMDcgMTA6NDE6NTguNTYwMTMyNTI5ICswMDAwCi0rKysgUHl0aG9uLTIuNy4zL3NldHVwLnB5CTIwMTItMDgtMDcgMTE6MDk6NDcuODUyMDk0NTE1ICswMDAwCi1AQCAtMTA0Miw3ICsxMDQyLDYgQEAKLSAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ19ic2RkYicsIFsnX2JzZGRiLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyA9IFsnYnNkZGIuaCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1kYl9pbmNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9ZGJsaWJzKSkKLSAgICAgICAgIGVsc2U6Ci1AQCAtMTI1Miw3ICsxMjUxLDYgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiYnVpbGRpbmcgZGJtIHVzaW5nIGJkYiIKLSAgICAgICAgICAgICAgICAgICAgICAgICBkYm1leHQgPSBFeHRlbnNpb24oJ2RibScsIFsnZGJtbW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPWRibGliX2RpciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9ZGJfaW5jcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0hBVkVfQkVSS0RCX0gnLCBOb25lKSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNTJlODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwxMTM4ICswLDAgQEAKLSMgRE8gTk9UIChlbnRpcmVseSkgbW9kaWZ5IHRoaXMgZmlsZSBtYW51YWxseSwgcGxlYXNlIHJlYWQuCi0jCi0jIElNUE9SVEFOVCBOT1RFOgotIyBQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIHJlbGllcyBvbiB0aGUgZmFjdCB0aGUgdGhlCi0jIHRhcmdldCBhbmQgbmF0aXZlIFB5dGhvbiBwYWNrYWdlcyBhcmUgdGhlIHNhbWUsIGFuZCBpdCBhbHNvIG5lZWRzIHRvIGJlIGV4ZWN1dGVkCi0jIHdpdGggYSBmdWxseSB3b3JraW5nIG5hdGl2ZSBwYWNrYWdlICh3aXRoIGFsbCB0aGUgUEFDS0FHRUNPTkZJR3MgZW5hYmxlZCBhbmQgYWxsCi0jIGFuZCBhbGwgdGhlIG1vZHVsZXMgc2hvdWxkIGJlIHdvcmtpbmcsIGNoZWNrIGxvZy5kb19jb21waWxlKSwgb3RoZXJ3aXNlIHRoZSBzY3JpcHQKLSMgd2lsbCBmYWlsIHRvIGZpbmQgZGVwZW5kZW5jaWVzIGNvcnJlY3RseSwgdGhpcyBub3RlIGlzIHZhbGlkIGVpdGhlciBpZiB5b3UgYXJlCi0jIHVwZ3JhZGluZyB0byBhIG5ldyBQeXRob24gdmVyc2lvbiBvciBhZGRpbmcgYSBuZXcgcGFja2FnZS4KLSMKLSMKLSMgSWYgeW91IGFyZSBhZGRpbmcgYSBuZXcgcGFja2FnZSBwbGVhc2UgZm9sbG93IHRoZSBuZXh0IHN0ZXBzOgotIyAgICAgSG93IHRvIGFkZCBhIG5ldyBwYWNrYWdlOgotIyAgICAgLSBJZiBhIHVzZXIgd2FudHMgdG8gYWRkIGEgbmV3IHBhY2thZ2UgYWxsIHRoYXQgaGFzIHRvIGJlIGRvbmUgaXM6Ci0jICAgICBNb2RpZnkgdGhlIHB5dGhvbjItbWFuaWZlc3QuanNvbiBmaWxlLCBhbmQgYWRkIHRoZSByZXF1aXJlZCBmaWxlKHMpIHRvIHRoZSBGSUxFUyBsaXN0LAotIyAgICAgZmlsbCB1cCB0aGUgU1VNTUFSWSBzZWN0aW9uIGFzIHdlbGwsIHRoZSBzY3JpcHQgc2hvdWxkIGhhbmRsZSBhbGwgdGhlIHJlc3QuCi0jCi0jICAgICBSZWFsIGV4YW1wbGU6Ci0jICAgICBXZSB3YW50IHRvIGFkZCBhIHdlYiBicm93c2VyIHBhY2thZ2UsIGluY2x1ZGluZyB0aGUgZmlsZSB3ZWJicm93c2VyLnB5Ci0jICAgICB3aGljaCBhdCB0aGUgbW9tZW50IGlzIG9uIHB5dGhvbi1taXNjLgotIyAgICAgIndlYmJyb3dzZXIiOiB7Ci0jICAgICAgICAgImZpbGVzIjogWyIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3dlYmJyb3dzZXIucHkiXSwKLSMgICAgICAgICAicmRlcGVuZHMiOiBbXSwKLSMgICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gV2ViIEJyb3dzZXIgc3VwcG9ydCJ9Ci0jCi0jICAgICAqIE5vdGUgdGhhdCB0aGUgcmRlcGVuZHMgZmllbGQgd2FzIGxlZnQgZW1wdHkKLSMKLSMgICAgIFdlIHJ1biAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdCBhbmQgdGhlIHJlc3VsdGluZyBtYW5pZmVzdAotIyAgICAgc2hvdWxkIGJlIGNvbXBsZXRlZCBhZnRlciBhIGZldyBzZWNvbmRzLCBzaG93aW5nIHNvbWV0aGluZyBsaWtlOgotIyAgICAgIndlYmJyb3dzZXIiOiB7Ci0jICAgICAgICAgImZpbGVzIjogWyIke2xpYmRpcn0vcHl0aG9uMi43L3dlYmJyb3dzZXIucHkiXSwKLSMgICAgICAgICAicmRlcGVuZHMiOiBbImNvcmUiLCJmY250bCIsImlvIiwicGlja2xlIiwic2hlbGwiLCJzdWJwcm9jZXNzIl0sCi0jICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFdlYiBCcm93c2VyIHN1cHBvcnQifQotIwotIwotIyBJZiB5b3UgYXJlIHVwZ3JhZGluZyBQeXRob24gdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2UgZm9sbG93IHRoZSBuZXh0IHN0ZXBzOgotIyAgICAgQWZ0ZXIgZWFjaCBQeXRob24gdXBncmFkZSwgdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIHNob3VsZCBiZSBleGVjdXRlZCwgYmVjYXVzZSB3ZQotIyAgICAgZG9uJ3QgY29udHJvbCB3aGF0IGNoYW5nZXMgb24gdXBzdHJlYW0gUHl0aG9uLCBzbywgc29tZSBtb2R1bGUgZGVwZW5kZW5jeQotIyAgICAgbWlnaHQgaGF2ZSBjaGFuZ2VkIHdpdGhvdXQgdXMgcmVhbGl6aW5nIGl0LCBhIGNlcnRhaW4gbW9kdWxlIGNhbiBlaXRoZXIgaGF2ZQotIyAgICAgbW9yZSBvciBsZXNzIGRlcGVuZGVuY2llcywgb3IgY291bGQgYmUgZGVwZW5kaW5nIG9uIGEgbmV3IGZpbGUgdGhhdCB3YXMganVzdAotIyAgICAgY3JlYXRlZCBvbiB0aGUgbmV3IHJlbGVhc2UgYW5kIGZvciBvYnZpb3VzIHJlYXNvbnMgd2Ugd291bGRuJ3QgaGF2ZSBpdCBvbiBvdXIKLSMgICAgIG9sZCBtYW5pZmVzdCwgYWxsIG9mIHRoZXNlIGlzc3VlcyB3b3VsZCBjYXVzZSBydW50aW1lIGVycm9ycyBvbiBvdXIgc3lzdGVtLgotIwotIyAgICAgLSBVcGdyYWRlIGJvdGggdGhlIG5hdGl2ZSBhbmQgdGFyZ2V0IFB5dGhvbiBwYWNrYWdlcyB0byBhIG5ldyB2ZXJzaW9uCi0jICAgICAtIFJ1biB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgZm9yIHRoZSB0YXJnZXQgUHl0aG9uIHBhY2thZ2UgYXMgaXRzIHNob3duIGJlbG93OgotIwotIyAgICAgJCBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLSMKLSMgICAgIFRoaXMgd2lsbCBhdXRvbWF0aWNhbGx5IHJlcGxhY2UgeW91ciBtYW5pZmVzdCBmaWxlIGxvY2F0ZWQgdW5kZXIgdGhlIFB5dGhvbiBkaXJlY3RvcnkKLSMgICAgIHdpdGggYW4gbmV3IG9uZSwgd2hpY2ggY29udGFpbnMgdGhlIG5ldyBkZXBlbmRlbmNpZXMgKGlmIGFueSkuCi0jCi0jICAgICBTZXZlcmFsIHRoaW5ncyBjb3VsZCBoYXZlIGdvbmUgd3JvbmcgaGVyZSwgSSB3aWxsIHRyeSB0byBleHBsYWluIGEgZmV3OgotIwotIyAgICAgYSkgQSBuZXcgZmlsZSB3YXMgaW50cm9kdWNlZCBvbiB0aGlzIHJlbGVhc2UsIGUuZy4gc2hhMyouc286Ci0jICAgICAgICBUaGUgdGFzayB3aWxsIGNoZWNrIHdoYXQgaXRzIG5lZWRlZCB0byBpbXBvcnQgZXZlcnkgbW9kdWxlLCBtb3JlIHRoYW4gb25lIG1vZHVsZSB3b3VsZAotIyAgICAgICAgd291bGQgcHJvYmFibHkgZGVwZW5kIG9uIHNoYTMqLnNvLCBhbHRob3VnaCBvbmx5IG9uZSBtb2R1bGUgc2hvdWxkIGNvbnRhaW4gaXQuCi0jCi0jICAgICAgICBBZnRlciBydW5uaW5nIHRoZSB0YXNrLCB0aGUgbmV3IG1hbmlmZXN0IHdpbGwgaGF2ZSB0aGUgc2hhMyouc28gZmlsZSBvbiBtb3JlIHRoYW4gb25lCi0jICAgICAgICBtb2R1bGUsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IGRlY2lkZSB3aGljaCBvbmUgb2YgdGhlbSBzaG91bGQgZ2V0IGl0IGFuZCBkZWxldGUgaXQgZnJvbQotIyAgICAgICAgdGhlIG90aGVycywgZm9yIGV4YW1wbGUgc2hhMyouc28gc2hvdWxkIGxpa2VseSBiZSBvbiAke1BOfS1jcnlwdC4KLSMgICAgICAgIE9uY2UgeW91IGhhdmUgZGVsZXRlZCBmcm9tIHRoZSBvdGhlcnMgeW91IG5lZWQgdG8gcnVuIHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayBhZ2FpbiwKLSMgICAgICAgIHRoaXMgd2lsbCBwb3B1bGF0ZSB0aGUgb3RoZXIgbW9kdWxlJ3MgcmRlcGVuZHMgZmllbGRzLCB3aXRoICR7UE59LWNyeXB0IGFuZCB5b3Ugc2hvdWxkIGJlCi0jICAgICAgICBnb29kIHRvIGdvLgotIwotIyAgICAgYikgVGhlIG5hdGl2ZSBwYWNrYWdlIHdhc24ndCBidWlsdCBjb3JyZWN0bHkgYW5kIGl0cyBtaXNzaW5nIGEgY2VydGFpbiBtb2R1bGU6Ci0jICAgICAgICBBcyBtZW50aW9uZWQgYmVmb3JlLCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG5hdGl2ZSBwYWNrYWdlIHdhcyBidWlsdCB3aXRoIGFsbCB0aGUgbW9kdWxlcwotIyAgICAgICAgYmVjYXVzZSBpdCBpcyB1c2VkIGFzIGJhc2UgdG8gYnVpbGQgdGhlIG1hbmlmZXN0IGZpbGUsIHlvdSBuZWVkIHRvIG1hbnVhbGx5IGNoZWNrIGxvZy5kb19jb21waWxlCi0jICAgICAgICBzaW5jZSBpdCB3b24ndCBlcnJvciBvdXQgdGhlIGNvbXBpbGUgZnVuY3Rpb24gaWYgaXRzIG9ubHkgbWlzc2luZyBhIGNvdXBsZSBvZiBtb2R1bGVzLgotIwotIyAgICAgICAgZS5nLiBtaXNzaW5nIHRoZSBfdXVpZCBtb2R1bGUsIGxvZy5kb19jb21waWxlIHdvdWxkIHNob3cgdGhlIGZvbGxvd2luZzoKLSMgICAgICAgIFB5dGhvbiBidWlsZCBmaW5pc2hlZCBzdWNjZXNzZnVsbHkhCi0jICAgICAgICBUaGUgbmVjZXNzYXJ5IGJpdHMgdG8gYnVpbGQgdGhlc2Ugb3B0aW9uYWwgbW9kdWxlcyB3ZXJlIG5vdCBmb3VuZDoKLSMgICAgICAgIF91dWlkCi0jCi0jICAgICAgICBXaGF0IHdpbGwgaGFwcGVuIGhlcmUgaXMgdGhhdCB0aGUgbmV3IG1hbmlmZXN0IHdvdWxkIG5vdCBiZSBhd2FyZSB0aGF0IHRoZSBfdXVpZCBtb2R1bGUgZXhpc3RzLCBzbwotIyAgICAgICAgbm90IG9ubHkgd2Ugd29uJ3Qga25vdyBvZiBhbnkgZGVwZW5kZW5jaWVzIHRvIGl0LCBidXQgYWxzbywgdGhlIF91dWlkKiBmaWxlcyB3aWxsIGJlIHBhY2thZ2VkIG9uCi0jICAgICAgICB0aGUgbWlzYyBwYWNrYWdlICh3aGljaCBpcyB3aGVyZSBhbnkgZmlsZSB0aGF0IGRvZXNuJ3QgYmVsb25nIGFueXdoZXJlIGVsc2UgZW5kcyB1cCkuCi0jCi0jICAgICAgICBUaGlzIHdpbGwgZXZlbnR1YWxseSBjYXVzZSBydW50aW1lIGVycm9ycyBvbiBvdXIgc3lzdGVtIGlmIHdlIGRvbid0IGluY2x1ZGUgdGhlIG1pc2MgcGFja2FnZSBvbgotIyAgICAgICAgb24gb3VyIGltYWdlLCBiZWNhdXNlIHRoZSBfdXVpZCBmaWxlcyB3aWxsIGJlIG1pc3NpbmcuCi0jICAgICAgICBJZiB3ZSBidWlsZCB0aGUgX3V1aWQgbW9kdWxlIGNvcnJlY3RseSBhbmQgcnVuIHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayB0aGUgX3V1aWQgZmlsZXMgd2lsbCBiZQotIyAgICAgICAgZGV0ZWN0ZWQgY29ycmVjdGx5IGFsb25nIHdpdGggaXRzIGRlcGVuZGVuY2llcywgYW5kIHdlIHdpbGwgZ2V0IGEgd29ya2luZyBtYW5pZmVzdC4KLSMKLSMgICAgICAgIFRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgaXQgaXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgZnVsbHkgd29ya2luZyBuYXRpdmUgYnVpbGQsCi0jICAgICAgICBzbyB3ZSBjYW4gYXZvaWQgdGhlc2UgZXJyb3JzLgotIwotIwotIwotIyBETyBOT1QgTU9ESUZZIFRIRSBORVhUIExJTkUhLCBJVCBJUyBVU0VEIEFTIEEgTUFSS0VSIEZPUiBUSEUgQUNUVUFMIEpTT04gTUFOSUZFU1QKLSMgRU9DCi17Ci0gICAgInRlc3RzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVzdCBzdWl0ZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgIm1vZHVsZXMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy8qL3Rlc3QiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdHMiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIvaWRsZV90ZXN0LyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVzdCIKLSAgICAgICAgXSwgCi0gICAgICAgICJjYWNoZWQiOiBbXQotICAgIH0sIAotICAgICIydG8zIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS8ydG8zKiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWIydG8zIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImFyZ3BhcnNlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tbWFuZCBsaW5lIGFyZ3VtZW50IHBhcnNlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hcmdwYXJzZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJhdWRpbyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibWF0aCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2F1ZGlvZGV2LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jaHVuay5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXVkaW9vcC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NuZGhkci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N1bmF1ZGlvLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2FpZmYucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhdmUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiYnNkZGIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEJlcmtlbGV5IERhdGFiYXNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYnNkZGIiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ic2RkYi5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb2RlY3MiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb2RlYyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dldHRleHQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfY24uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfaGsuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfaXNvMjAyMi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19qcC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19rci5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc190dy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpYnl0ZWNvZGVjLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC91bmljb2RlZGF0YS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbG9jYWxlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmdwcmVwLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94ZHJsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29tcGlsZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJ5dGVjb2RlIGNvbXBpbGF0aW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlYWxsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weV9jb21waWxlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvbXBpbGVyIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29tcGlsZXIgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVyIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvbXByZXNzaW9uIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJzaGVsbCIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nemlwLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iejIuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RhcmZpbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3ppcGZpbGUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29udGV4dGxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnRjb250ZXh0cy4iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29udGV4dGxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb3JlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uKiIsIAotICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uMi43L3B5Y29uZmlnKi5oIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db25maWdQYXJzZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJEaWN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyTGlzdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlclN0cmluZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX19mdXR1cmVfXy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX2FiY29sbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3N5c2NvbmZpZ2RhdGEucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L193ZWFrcmVmc2V0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hYmMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXRleGl0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlY3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbGxlY3Rpb25zLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb3B5LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb3B5X3JlZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvYWxpYXNlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzL3V0Zl84LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZW5lcmljcGF0aC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0b3B0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9oZWFwcS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1wb3J0bGliIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9rZXl3b3JkLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29sbGVjdGlvbnMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19oZWFwcS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2xvY2FsZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3N0cnVjdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYmluYXNjaWkuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2l0ZXJ0b29scy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvb3BlcmF0b3Iuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3JlYWRsaW5lLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zdHJvcC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvdGltZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQveHJlYWRsaW5lcy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGluZWNhY2hlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9uZXcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29zLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wbGF0Zm9ybS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9zaXhwYXRoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmxjb21wbGV0ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb21waWxlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfY29uc3RhbnRzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfcGFyc2UucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0YXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RydWN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeXNjb25maWcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RyYWNlYmFjay5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHlwZXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dhcm5pbmdzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy93ZWFrcmVmLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNyeXB0IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgY3J5cHRvZ3JhcGhpYyBhbmQgaGFzaGluZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaGFzaGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hhc2hsaWIuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NyeXB0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tZDUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NoYS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjdHlwZXMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jdHlwZXMiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdHlwZXNfdGVzdC5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjdXJzZXMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjdXJzZXMgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N1cnNlcyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N1cnNlcy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkYXRldGltZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3N0cnB0aW1lLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jYWxlbmRhci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGF0ZXRpbWUuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImJzZGRiIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImdkYm0iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hbnlkYm0ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RiaGFzaC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtYmRibS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZGJtLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy93aGljaGRiLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRlYnVnZ2VyIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJwcHJpbnQiLCAKLSAgICAgICAgICAgICJzaGVsbCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2JkYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGRiLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRldiI6IHsKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmFzZV9saWJkaXJ9LyouYSIsIAotICAgICAgICAgICAgIiR7YmFzZV9saWJkaXJ9LyoubyIsIAotICAgICAgICAgICAgIiR7ZGF0YWRpcn0vYWNsb2NhbCIsIAotICAgICAgICAgICAgIiR7ZGF0YWRpcn0vcGtnY29uZmlnIiwgCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS8qLmEiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vKi5sYSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS8qLm8iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9wa2djb25maWciLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9NYWtlZmlsZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCi0gICAgfSwgCi0gICAgImRpZmZsaWIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXJzIGZvciBjb21wdXRpbmcgZGVsdGFzIGJldHdlZW4gb2JqZWN0cyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaWZmbGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRpc3R1dGlscy1zdGF0aWNkZXYiOiB7Ci0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZy9saWIqLmEiCi0gICAgICAgIF0sIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiZGlzdHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgotICAgIH0sIAotICAgICJkaXN0dXRpbHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXN0dXRpbHMiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZG9jdGVzdCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZyYW1ld29yayBmb3IgcnVubmluZyBleGFtcGxlcyBpbiBkb2NzdHJpbmdzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJkZWJ1Z2dlciIsIAotICAgICAgICAgICAgImRpZmZsaWIiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJwcHJpbnQiLCAKLSAgICAgICAgICAgICJzaGVsbCIsIAotICAgICAgICAgICAgInVuaXR0ZXN0IgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZG9jdGVzdC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJlbWFpbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGVtYWlsIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJzdWJwcm9jZXNzIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW1haWwiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltYXBsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZmNudGwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbidzIGZjbnRsIGludGVyZmFjZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2ZjbnRsLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImdkYm0iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBHTlUgZGF0YWJhc2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2dkYm0uc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaG90c2hvdCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhvdHNob3QgcGVyZm9ybWFuY2UgcHJvZmlsZXIiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ob3RzaG90IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faG90c2hvdC5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJodG1sIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9IVE1MUGFyc2VyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mb3JtYXR0ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0bWxlbnRpdHlkZWZzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odG1sbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYXJrdXBiYXNlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZ21sbGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImlkbGUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9pZGxlIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pZGxlbGliIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImltYWdlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29sb3JzeXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltZ2hkci5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJpbyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU3RyaW5nSU8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19weWlvLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pby5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2lvLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc29ja2V0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3NsLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jU3RyaW5nSU8uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3NlbGVjdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvdGVybWlvcy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlwZXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NvY2tldC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3NsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZW1wZmlsZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJqc29uIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvanNvbiIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2pzb24uc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibGFuZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBsYW5ndWFnZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmlzZWN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2RlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2Rlb3AucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnVuY3Rvb2xzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbnNwZWN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYmlzZWN0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZnVuY3Rvb2xzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hcnJheS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcGFyc2VyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcGNvZGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JlcHIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N5bWJvbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW4ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Rva2VuaXplLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImxvZ2dpbmciOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xvZ2dpbmciCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibWFpbGJveCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1haWxib3ggZm9ybWF0IHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImVtYWlsIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibWltZSIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21haWxib3gucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibWF0aCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1hdGggc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3JhbmRvbS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY21hdGguc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21hdGguc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JhbmRvbS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2V0cy5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtaW1lIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gTUlNRSBoYW5kbGluZyBBUElzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvTWltZVdyaXRlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWltZXRvb2xzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldHlwZXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3F1b3ByaS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmZjODIyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91dS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtbWFwIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWVtb3J5LW1hcHBlZCBmaWxlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tbWFwLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1vZHVsZXMiOiB7Ci0gICAgICAgICJmaWxlcyI6IFtdLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgIjJ0bzMiLCAKLSAgICAgICAgICAgICJhcmdwYXJzZSIsIAotICAgICAgICAgICAgImF1ZGlvIiwgCi0gICAgICAgICAgICAiYnNkZGIiLCAKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb21waWxlIiwgCi0gICAgICAgICAgICAiY29tcGlsZXIiLCAKLSAgICAgICAgICAgICJjb21wcmVzc2lvbiIsIAotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJjdHlwZXMiLCAKLSAgICAgICAgICAgICJjdXJzZXMiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImRiIiwgCi0gICAgICAgICAgICAiZGVidWdnZXIiLCAKLSAgICAgICAgICAgICJkaWZmbGliIiwgCi0gICAgICAgICAgICAiZGlzdHV0aWxzIiwgCi0gICAgICAgICAgICAiZG9jdGVzdCIsIAotICAgICAgICAgICAgImVtYWlsIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJnZGJtIiwgCi0gICAgICAgICAgICAiaG90c2hvdCIsIAotICAgICAgICAgICAgImh0bWwiLCAKLSAgICAgICAgICAgICJpZGxlIiwgCi0gICAgICAgICAgICAiaW1hZ2UiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImpzb24iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibG9nZ2luZyIsIAotICAgICAgICAgICAgIm1haWxib3giLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibWltZSIsIAotICAgICAgICAgICAgIm1tYXAiLCAKLSAgICAgICAgICAgICJtdWx0aXByb2Nlc3NpbmciLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJuZXRzZXJ2ZXIiLCAKLSAgICAgICAgICAgICJudW1iZXJzIiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAicGtndXRpbCIsIAotICAgICAgICAgICAgInBsaXN0bGliIiwgCi0gICAgICAgICAgICAicHByaW50IiwgCi0gICAgICAgICAgICAicHJvZmlsZSIsIAotICAgICAgICAgICAgInB5ZG9jIiwgCi0gICAgICAgICAgICAicmUiLCAKLSAgICAgICAgICAgICJyZXNvdXJjZSIsIAotICAgICAgICAgICAgInJvYm90cGFyc2VyIiwgCi0gICAgICAgICAgICAicnVucHkiLCAKLSAgICAgICAgICAgICJzaGVsbCIsIAotICAgICAgICAgICAgInNtdHBkIiwgCi0gICAgICAgICAgICAic3FsaXRlMyIsIAotICAgICAgICAgICAgInNxbGl0ZTMiLCAKLSAgICAgICAgICAgICJzdHJpbmdvbGQiLCAKLSAgICAgICAgICAgICJzdWJwcm9jZXNzIiwgCi0gICAgICAgICAgICAic3lzbG9nIiwgCi0gICAgICAgICAgICAidGVybWluYWwiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciLCAKLSAgICAgICAgICAgICJ0a2ludGVyIiwgCi0gICAgICAgICAgICAidW5pdHRlc3QiLCAKLSAgICAgICAgICAgICJ1bml4YWRtaW4iLCAKLSAgICAgICAgICAgICJ4bWwiLCAKLSAgICAgICAgICAgICJ4bWxycGMiLCAKLSAgICAgICAgICAgICJ6bGliIgotICAgICAgICBdLCAKLSAgICAgICAgInN1bW1hcnkiOiAiQWxsIFB5dGhvbiBtb2R1bGVzIgotICAgIH0sIAotICAgICJtdWx0aXByb2Nlc3NpbmciOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJzdWJwcm9jZXNzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX211bHRpcHJvY2Vzc2luZy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXVsdGlwcm9jZXNzaW5nIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm5ldGNsaWVudCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIGNsaWVudHMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJjdHlwZXMiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImVtYWlsIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibWltZSIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Db29raWUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19MV1BDb29raWVKYXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19Nb3ppbGxhQ29va2llSmFyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iYXNlNjQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nvb2tpZWxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnRwbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9obWFjLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odHRwbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ubnRwbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3BsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RlbG5ldGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXJsbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxwYXJzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXVpZC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJuZXRzZXJ2ZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBzZXJ2ZXJzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb21wcmVzc2lvbiIsIAotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAic2hlbGwiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciLCAKLSAgICAgICAgICAgICJ1bml4YWRtaW4iLCAKLSAgICAgICAgICAgICJ6bGliIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQmFzZUhUVFBTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0NHSUhUVFBTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1NpbXBsZUhUVFBTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1NvY2tldFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2dpLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm51bWJlcnMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBudW1iZXIgQVBJcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGVjaW1hbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZnJhY3Rpb25zLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9udW1iZXJzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInBpY2tsZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1BpY2tsZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlja2xlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGV0b29scy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hlbHZlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInBrZ3V0aWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wa2d1dGlsLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInBsaXN0bGliIjogewotICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsaXN0bGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInBwcmludCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcHJpbnQucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicHJvZmlsZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInJlc291cmNlIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY1Byb2ZpbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19sc3Byb2Yuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Byb2ZpbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BzdGF0cy5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJweWRvYyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJwa2d1dGlsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3B5ZG9jX2RhdGEiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicmUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBSZWd1bGFyIEV4cHJlc3Npb24gQVBJcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJyZXNvdXJjZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJlc291cmNlIGNvbnRyb2wgaW50ZXJmYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmVzb3VyY2Uuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicm9ib3RwYXJzZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByb2JvdHMudHh0IHBhcnNlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yb2JvdHBhcnNlci5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJydW5weSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlciBmb3IgbG9jYXRpbmcvZXhlY3V0aW5nIHNjcmlwdHMgaW4gbW9kdWxlIG5hbWVzcGFjZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgInBrZ3V0aWwiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ydW5weS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzaGVsbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29tcHJlc3Npb24iLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJ1bml4YWRtaW4iLCAKLSAgICAgICAgICAgICJ6bGliIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY21kLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21tYW5kcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlyY2FjaGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ZubWF0Y2gucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dsb2IucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BvcGVuMi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hsZXgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NodXRpbC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzbXRwZCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBEYWVtb24iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vc210cGQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzeW5jaGF0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY29yZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc210cGQucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic3FsaXRlMyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImRhdGV0aW1lIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NxbGl0ZTMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NxbGl0ZTMiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic3RyaW5nb2xkIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3RyaW5nIEFQSXMgW2RlcHJlY2F0ZWRdIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nb2xkLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInN1YnByb2Nlc3MiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdWJwcm9jZXNzIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VicHJvY2Vzcy5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzeXNsb2ciOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc3lzbG9nLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInRlcm1pbmFsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVybWluYWwgY29udHJvbGxpbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHR5LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90dHkucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGV4dHV0aWxzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gb3B0aW9uIHBhcnNpbiIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Nzdi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Nzdi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvb3B0cGFyc2UucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RleHR3cmFwLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInRocmVhZGluZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvUXVldWUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L190aHJlYWRpbmdfbG9jYWwucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkaW5nLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdXRleC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGhyZWFkaW5nLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInRraW50ZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3RraW50ZXIuc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLXRrIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInVuaXR0ZXN0IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImRpZmZsaWIiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJwcHJpbnQiLCAKLSAgICAgICAgICAgICJzaGVsbCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VuaXR0ZXN0IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInVuaXhhZG1pbiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFVuaXggYWRtaW5pc3RyYXRpb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0cGFzcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ3JwLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9uaXMuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAieG1sIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgWE1MIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fZWxlbWVudHRyZWUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3B5ZXhwYXQuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3htbCIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ4bWxycGMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibWltZSIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgIm5ldHNlcnZlciIsIAotICAgICAgICAgICAgInBrZ3V0aWwiLCAKLSAgICAgICAgICAgICJweWRvYyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIsIAotICAgICAgICAgICAgInhtbCIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Eb2NYTUxSUENTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1NpbXBsZVhNTFJQQ1NlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcveG1scnBjbGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInpsaWIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC96bGliLnNvIgotICAgICAgICBdCi0gICAgfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzcwMDJhNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEvYmluL3NoCi0KLXB5dGhvbiAtbXRlc3QgLVcgfCBzZWQgLXUgLWUgJy9cLlwuXC4gb2svIHMvXi9QQVNTOiAvZycgLWUgJy9cLlwuXC4gW0VSUk9SfEZBSUxdLyBzL14vRkFJTDogL2cnIC1lICcvXC5cLlwuIHNraXBwZWQvIHMvXi9TS0lQOiAvZycgLWUgJ3MvIFwuXC5cLiBvay8vZycgLWUgJ3MvIFwuXC5cLiBFUlJPUi8vZycgLWUgJ3MvIFwuXC5cLiBGQUlMLy9nJyAtZSAncy8gXC5cLlwuIHNraXBwZWQvL2cnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFjYjU1Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotcHl0aG9uIHNob3VsZCBzZWFyY2ggZm9yIGRiLmggaW4gaW5jX2RpcnMgYW5kIG5vdCBpbiBhIGhhcmRjb2RlZCBwYXRoLgotSWYgZGIuaCBpcyBmb3VuZCBidXQgSEFTSFZFUlNJT04gaXMgbm90IDIgd2UgYXZvaWQgYSB3YXJuaW5nIGJ5IG5vdCAKLWFkZGluZyB0aGlzIG1vZHVsZSB0byBtaXNzaW5nIHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCBiODg3ODA4Li5hZTUxNjA3IDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMTIzNyw2ICsxMjM3LDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgIyB0aGUgbW9yZSByZWNlbnQgYmVya2VsZXlkYidzIGRiLmggZmlsZSBmaXJzdCBpbiB0aGUgaW5jbHVkZSBwYXRoCi0gICAgICAgICAjIHdoZW4gYXR0ZW1wdGluZyB0byBjb21waWxlIGFuZCBpdCB3aWxsIGZhaWwuCi0gICAgICAgICBmID0gIi91c3IvaW5jbHVkZS9kYi5oIgotKyAgICAgICAgaWYgbGVuKGluY19kaXJzKSAhPSAwOgotKyAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oaW5jX2RpcnNbMF0sICJkYi5oIikKLSAKLSAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgaWYgaXNfbWFjb3N4X3Nka19wYXRoKGYpOgotQEAgLTEyNTcsOCArMTI1OSwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcykpCi0gICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ2JzZGRiMTg1JywgWydic2RkYm1vZHVsZS5jJ10pKQotLSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdic2RkYjE4NScpCi0rICAgICAgICAgICAgIyBJZiBhIG5ld2VyIHZlcnNpb24gaXMgZGV0ZWN0ZWQgZG9uJ3QgcmVwb3J0IGFuIHVzZWxlc3MKLSsgICAgICAgICAgICAjIHdhcm5pbmcKLSsgICAgICAgICAgICAjZWxzZToKLSsgICAgICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdic2RkYjE4NScpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdic2RkYjE4NScpCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNjZGI5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVGhpcyBwYXRjaCBza2lwcyBvdmVyIHRoZSAnaW1wb3J0IGNoZWNrJyBzZXR1cC5weSBkb2VzIHdoZW4gYnVpbGRpbmcKLWV4dGVuc2lvbnMuICBUaGlzIGdlbmVyYWxseSB3b24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBUb20gWmFudXNzaSA8dG9tLnphbnVzc2lAaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy4yL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMS0xMS0wNCAxNjo0NjozNC41NTM3OTY0MTAgLTA1MDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMS0xMS0wNCAxNjo1OTo0OS42OTI4MDIzMTMgLTA1MDAKLUBAIC0yODcsNiArMjg3LDE1IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoZXh0Lm5hbWUsIHN5cy5leGNfaW5mbygpWzFdKSkKLSAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCi0gICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICAjIElmIHdlJ3JlIGNyb3NzLWNvbXBpbGluZywgd2Ugd2FudCB0byBza2lwIHRoZSBpbXBvcnQgY2hlY2sKLSsgICAgICAgICMgaS5lLiB3ZSBzaG91bGRuJ3QgYmUgZHluYW1pY2FsbHkgbG9hZGluZyB0YXJnZXQgc2hhcmVkIGxpYnMKLSsgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCdDUk9TU19DT01QSUxFJykgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgKLSsgICAgICAgICAgICAgICAgJ1dBUk5JTkc6IHNraXBwaW5nIGltcG9ydCBjaGVjayBmb3IgY3Jvc3MtY29tcGlsZWQgIiVzIicgJQotKyAgICAgICAgICAgICAgICBleHQubmFtZSkKLSsgICAgICAgICAgICByZXR1cm4KLSsKLSAgICAgICAgICMgV29ya2Fyb3VuZCBmb3IgTWFjIE9TIFg6IFRoZSBDYXJib24tYmFzZWQgbW9kdWxlcyBjYW5ub3QgYmUKLSAgICAgICAgICMgcmVsaWFibHkgaW1wb3J0ZWQgaW50byBhIGNvbW1hbmQtbGluZSBQeXRob24KLSAgICAgICAgIGlmICdDYXJib24nIGluIGV4dC5leHRyYV9saW5rX2FyZ3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwdHdlYWtzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cHR3ZWFrcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5MWIxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwdHdlYWtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotVGhpcyBwYXRjaCByZW1vdmVzIHZhcmlvdXMgd2F5cyBuYXRpdmUgc3lzdGVtIG9wdGlvbnMgY2FuIHBhc3MgaW50byB0aGUgcHl0aG9uIAotY29tcGlsYXRpb24gYW5kIHNvbWVob3cgYnJlYWsgQyBtb2R1bGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNwZWNpZmljXQotCi1SUCAyMDEyLzA0LzIzCi0KLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9zZXR1cC5weQkyMDEyLTA0LTIzIDIwOjAzOjQ3LjI5NTU4MjU1MyArMDAwMAotKysrIFB5dGhvbi0yLjcuMi9zZXR1cC5weQkyMDEyLTA0LTIzIDIwOjAzOjE1LjAwMDAwMDAwMCArMDAwMAotQEAgLTIzMSw3ICsyMzEsMTMgQEAKLSAgICAgICAgICMgY29tcGlsZXJzCi0gICAgICAgICBpZiBjb21waWxlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAoY2NzaGFyZWQsY2ZsYWdzKSA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0NDU0hBUkVEJywnQ0ZMQUdTJykKLS0gICAgICAgICAgICBhcmdzWydjb21waWxlcl9zbyddID0gY29tcGlsZXIgKyAnICcgKyBjY3NoYXJlZCArICcgJyArIGNmbGFncwotKyAgICAgICAgICAgICMgTmVlZCB0byBmaWx0ZXIgb3V0IC1pc3lzcm9vdCBmcm9tIHRoZSBmbGFncy4gSWRlYWxseSBzaG91bGQgCi0rICAgICAgICAgICAgIyBmaWd1cmUgb3V0IHRhcmdldCBmbGFncyBoZXJlLgotKyAgICAgICAgICAgIGZsYWdzID0gW10KLSsgICAgICAgICAgICBmb3IgZiBpbiBjZmxhZ3Muc3BsaXQoKToKLSsgICAgICAgICAgICAgICAgaWYgbm90IGYuc3RhcnRzd2l0aCgiLWlzeXN0ZW0iKToKLSsgICAgICAgICAgICAgICAgICAgIGZsYWdzLmFwcGVuZChmKQotKyAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgJyAnLmpvaW4oZmxhZ3MpCi0gICAgICAgICBzZWxmLmNvbXBpbGVyLnNldF9leGVjdXRhYmxlcygqKmFyZ3MpCi0gCi0gICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQotQEAgLTM5Myw3ICszOTksNiBAQAotICAgICAgICAgIyBpbnRvIGNvbmZpZ3VyZSBhbmQgc3RvcmVkIGluIHRoZSBNYWtlZmlsZSAoaXNzdWUgZm91bmQgb24gT1MgWCAxMC4zKS4KLSAgICAgICAgIGZvciBlbnZfdmFyLCBhcmdfbmFtZSwgZGlyX2xpc3QgaW4gKAotICAgICAgICAgICAgICAgICAoJ0xERkxBR1MnLCAnLVInLCBzZWxmLmNvbXBpbGVyLnJ1bnRpbWVfbGlicmFyeV9kaXJzKSwKLS0gICAgICAgICAgICAgICAgKCdMREZMQUdTJywgJy1MJywgc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMpLAotICAgICAgICAgICAgICAgICAoJ0NQUEZMQUdTJywgJy1JJywgc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMpKToKLSAgICAgICAgICAgICBlbnZfdmFsID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKGVudl92YXIpCi0gICAgICAgICAgICAgaWYgZW52X3ZhbDoKLUBAIC00MTksMTYgKzQyNCwxNiBAQAotICAgICAgICAgICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiByZXZlcnNlZChvcHRpb25zLmRpcnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQotIAotLSAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KSAhPSAnL3VzcicgXAotLSAgICAgICAgICAgICAgICBhbmQgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJyk6Ci0rIyAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KSAhPSAnL3VzcicgXAotKyMgICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgotICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKLSAgICAgICAgICAgICAjIChQWVRIT05GUkFNRVdPUksgaXMgc2V0KSB0byBhdm9pZCAjIGxpbmtpbmcgcHJvYmxlbXMgd2hlbgotICAgICAgICAgICAgICMgYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyB0aGFuCi0gICAgICAgICAgICAgIyB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZCAoaXNzdWUgIzc0NzMpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkRJUiIpKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJJTkNMVURFRElSIikpCi0rIyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLSsjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRElSIikpCi0rIyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKLSsjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERURJUiIpKQotIAotICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIGhhdmVfdW5pY29kZSA9IHVuaWNvZGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM4YjVlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIE9wZW5FbWJlZGRlZCBzaXRlY3VzdG9taXplLnB5IChDKSAyMDAyLTIwMDggTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+Ci0jIEdQTHYyIG9yIGxhdGVyCi0jIFZlcnNpb246IDIwMDgxMTIzCi0jIEZlYXR1cmVzOgotIyAqIHNldCBwcm9wZXIgZGVmYXVsdCBlbmNvZGluZwotIyAqIGVuYWJsZSByZWFkbGluZSBjb21wbGV0aW9uIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlcgotIyAqIGxvYWQgY29tbWFuZCBsaW5lIGhpc3Rvcnkgb24gc3RhcnR1cAotIyAqIHNhdmUgY29tbWFuZCBsaW5lIGhpc3Rvcnkgb24gZXhpdCAKLQotaW1wb3J0IG9zCi0KLWRlZiBfX2V4aXRoYW5kbGVyKCk6Ci0gICAgdHJ5OgotICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoICIlcy8ucHl0aG9uLWhpc3RvcnkiICUgb3MuZ2V0ZW52KCAiSE9NRSIsICIvdG1wIiApICkKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgcGFzcwotCi1kZWYgX19yZWdpc3RlckV4aXRIYW5kbGVyKCk6Ci0gICAgaW1wb3J0IGF0ZXhpdAotICAgIGF0ZXhpdC5yZWdpc3RlciggX19leGl0aGFuZGxlciApCi0KLWRlZiBfX2VuYWJsZVJlYWRsaW5lU3VwcG9ydCgpOgotICAgIHJlYWRsaW5lLnNldF9oaXN0b3J5X2xlbmd0aCggMTAwMCApCi0gICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoICJ0YWI6IGNvbXBsZXRlIiApCi0gICAgdHJ5OgotICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZSggIiVzLy5weXRob24taGlzdG9yeSIgJSBvcy5nZXRlbnYoICJIT01FIiwgIi90bXAiICkgKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBwYXNzCi0KLWltcG9ydCBzeXMKLXRyeToKLSAgICBpbXBvcnQgcmxjb21wbGV0ZXIsIHJlYWRsaW5lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotZWxzZToKLSAgICBfX3JlZ2lzdGVyRXhpdEhhbmRsZXIoKQotICAgIF9fZW5hYmxlUmVhZGxpbmVTdXBwb3J0KCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2NTE3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1UaGUgY29tcGlsZWQgLnB5YyBmaWxlcyBjb250YWluIHRpbWUgc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgY29tcGlsZSB0aW1lLgotVGhpcyBwcmV2ZW50cyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5LiBUaGlzIHBhdGNoIGFsbG93cyB0byBhY2hpZXZlIGJpbmFyeQotcmVwcm9kdWNpYmlsaXR5IGJ5IG92ZXJyaWRpbmcgdGhlIGJ1aWxkIHRpbWUgc3RhbXAgYnkgdGhlIHZhbHVlIAotZXhwb3J0ZWQgdmlhIFNPVVJDRV9EQVRFX0VQT0NILiAKLQotUGF0Y2ggYnkgQmVybmhhcmQgTS4gV2llZGVtYW5uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLQotRnJpIEZlYiAyNCAxNzowODoyNSBVVEMgMjAxNyAtIGJ3aWVkZW1hbm5Ac3VzZS5jb20KLQotLSBBZGQgcmVwcm9kdWNpYmxlLnBhdGNoIHRvIGFsbG93IHJlcHJvZHVjaWJsZSBidWlsZHMgb2YgdmFyaW91cwotICBweXRob24gcGFja2FnZXMgbGlrZSBweXRob24tYW1xcAotICBVcHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk2Ci0KLQotQEAgLTAsMCArMSwxNSBAQAotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvTGliL3B5X2NvbXBpbGUucHkKLSsrKyBQeXRob24tMi43LjEzL0xpYi9weV9jb21waWxlLnB5Ci1AQCAtMTA4LDYgKzEwOCwxMCBAQCBkZWYgY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lCi0gICAgICAgICAgICAgdGltZXN0YW1wID0gbG9uZyhvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKLSAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCi0rICAgICAgICBzZGUgPSBvcy5lbnZpcm9uLmdldCgnU09VUkNFX0RBVEVfRVBPQ0gnKQotKyAgICAgICAgaWYgc2RlIGFuZCB0aW1lc3RhbXAgPiBpbnQoc2RlKToKLSsgICAgICAgICAgICB0aW1lc3RhbXAgPSBpbnQoc2RlKQotKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGUsICh0aW1lc3RhbXAsIHRpbWVzdGFtcCkpCi0gICAgICAgICBjb2Rlc3RyaW5nID0gZi5yZWFkKCkKLSAgICAgdHJ5OgotICAgICAgICAgY29kZW9iamVjdCA9IF9fYnVpbHRpbl9fLmNvbXBpbGUoY29kZXN0cmluZywgZGZpbGUgb3IgZmlsZSwnZXhlYycpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0YTNiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotUHl0aG9uIHRyaWVzIHRvIHVzZSBuY3Vyc2VzdyBmcm9tIHRoZSBob3N0LAotaWYgaXQgaXMgbm90IGZvdW5kIGNhdXNlcyBhbiBlcnJvciBvbiBjb25maWd1cmUsCi13ZSBzaG91bGQgdXNlIG5jdXJzZXN3IGZyb20gc3lzcm9vdCBpbnN0ZWFkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjkvY29uZmlndXJlLmFjCi1AQCAtNDMxMSw3ICs0MzExLDcgQEAgZmkKLSAKLSAjIGZpcnN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKLSBhY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCi0tQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKLStDUFBGTEFHUz0iJENQUEZMQUdTIC1JPS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKLSAKLSBBQ19DSEVDS19IRUFERVJTKGN1cnNlcy5oIG5jdXJzZXMuaCkKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI5LjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjkuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNlNmJkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI5LjE2LmJiCkBAIC0wLDAgKzEsMTggQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWN5dGhvbi5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBweXRob24zLXNldHVwdG9vbHMgXAorIgorCisjIHJ1bm5pbmcgYnVpbGRfZXh0IGEgc2Vjb25kIHRpbWUgZHVyaW5nIGluc3RhbGwgZmFpbHMsIGJlY2F1c2UgUHl0aG9uCisjIHdvdWxkIHRoZW4gYXR0ZW1wdCB0byBpbXBvcnQgY3l0aG9uaXplZCBtb2R1bGVzIGJ1aWx0IGZvciB0aGUgdGFyZ2V0CisjIGFyY2hpdGVjdHVyZS4KK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0tc2tpcC1idWlsZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyByZW5hbWUgc2NyaXB0cyB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIFB5dGhvbiAyIGJ1aWxkIG9mIEN5dGhvbgorICAgIG12ICR7RH0ke2JpbmRpcn0vY3l0aG9uICR7RH0ke2JpbmRpcn0vY3l0aG9uMworICAgIG12ICR7RH0ke2JpbmRpcn0vY3l0aG9uaXplICR7RH0ke2JpbmRpcn0vY3l0aG9uaXplMworICAgIG12ICR7RH0ke2JpbmRpcn0vY3lnZGIgJHtEfSR7YmluZGlyfS9jeWdkYjMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMDVkYzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCi1ERVBFTkRTID0gImV4cGF0IGRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MjhiN2E5ZTdlMmQxNTRhN2NlYjNlMTM1MzYyODNlNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZGQ0ZGUyYzRmNWU1OGYyODdiMTIwMTNlZDdiNDFkZWU4MWQ1MDNjOGQwZDIzOTdjNWJkMmZiMDFiYWRmMjYwIgotCi1TID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKLQotIyBkb2N1bWVudGF0aW9uIG5lZWRzIHB5dGhvbjMtc3BoaW54LCB3aGljaCBpcyBub3QgaW4gb2UtY29yZSBvciBtZXRhLXB5dGhvbiBmb3Igbm93Ci0jIGNoYW5nZSB0byB1c2UgUEFDS0FHRUNPTkZJRyB3aGVuIHB5dGhvbjMtc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUKLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCi0KLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTcwMGZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTYuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IgorREVQRU5EUyA9ICJleHBhdCBkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGliaW50bCIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTFhNDVjOTczZDgyYmVkZmYwMzNhNGI1N2Q2OWQ1ZDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTEyMzhmMWQ4NmM5OTVkOGFlZDJlMjJmMDRhMWUzNzc5ZjBkNzBlNTg3Y2FmZmVhYjQ4NTdmM2M2NjJlZDVhNCIKKworUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCisKKyMgZG9jdW1lbnRhdGlvbiBuZWVkcyBweXRob24zLXNwaGlueCwgd2hpY2ggaXMgbm90IGluIG9lLWNvcmUgb3IgbWV0YS1weXRob24gZm9yIG5vdworIyBjaGFuZ2UgdG8gdXNlIFBBQ0tBR0VDT05GSUcgd2hlbiBweXRob24zLXNwaGlueCBpcyBhZGRlZCB0byBvZS1jb3JlCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgorCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWMzZjVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTM1YTIzZDQyYjYxNTQ3MDU4MzU2MzEzMjg3MmM5N2Q2IgotCi1ERVBFTkRTID0gInB5dGhvbjMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTE3MjlmMTllNzBhOWRjNDgzNzQzMzE5M2E1ZTc5OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzVlODdlOTg1ZjcwMTA2ZjZmOTdlMDUwZjNiZWQ5OTA2NDFlMGUxMDQ1NjYxMzRiOWNkMjM4NDlhNDYwZTk2IgotCi1TID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzMwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNTQ3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE2LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9N2E0NjQ2OTA3YWI5MDgzYzgyNjI4MGIxOWUxMDMxMDYiCisKK0RFUEVORFMgPSAicHl0aG9uMyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjljY2I2ZjMzMmUyMzM2MGY5NjRkZTcyYzhlYTVmMGVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkNGU5OTljY2E3NGE1MjYxMTc3M2E0MjkxMjA4ODA3ODM2M2EzMDkxMmU4ODIyZjdhM2QzODA0M2I3Njc1NzMiCisKK1MgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGQ3NTNkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGxpYnJhcnkgdXNlZCB0byBpbnRlcmFjdCB3aXRoIEdpdCByZXBvc2l0b3JpZXMiCi1ERVNDUklQVElPTiA9ICJHaXRQeXRob24gcHJvdmlkZXMgb2JqZWN0IG1vZGVsIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBcCi1hIGdpdCByZXBvc2l0b3J5LiBBY2Nlc3MgcmVwb3NpdG9yeSBpbmZvcm1hdGlvbiBjb252ZW5pZW50bHksIGFsdGVyIHRoZSBcCi1pbmRleCBkaXJlY3RseSwgaGFuZGxlIHJlbW90ZXMsIG9yIGdvIGRvd24gdG8gbG93LWxldmVsIG9iamVjdCBkYXRhYmFzZSBcCi1hY2Nlc3Mgd2l0aCBiaWctZmlsZXMgc3VwcG9ydC4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9naXRweXRob24tZGV2ZWxvcGVycy9HaXRQeXRob24iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGI4ZDI2YzM3YzFkNWEwNGY5YjAxODZlZGJlYmMxODMiCi0KLVBZUElfUEFDS0FHRSA9ICJHaXRQeXRob24iCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2NlYzE0YTVjOWYxODcwMjQwNjEyMjk4M2Q4MDAzMmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDJmNDk0NWY4MjYwZjY5ODFkNzI0ZjU5NTdiYzA3NjM5OGFkYTU1Y2I1ZDI1YWFlZTEwMTA4YmNkYzg5NDEwMCIKLQotREVQRU5EUyArPSAiICR7UFlUSE9OX1BOfS1naXRkYiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZ2l0ZGIgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAotICAgICAgICAgICAgICAgICAgIGdpdCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjMxM2VmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC41LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGxpYnJhcnkgdXNlZCB0byBpbnRlcmFjdCB3aXRoIEdpdCByZXBvc2l0b3JpZXMiCitERVNDUklQVElPTiA9ICJHaXRQeXRob24gcHJvdmlkZXMgb2JqZWN0IG1vZGVsIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBcCithIGdpdCByZXBvc2l0b3J5LiBBY2Nlc3MgcmVwb3NpdG9yeSBpbmZvcm1hdGlvbiBjb252ZW5pZW50bHksIGFsdGVyIHRoZSBcCitpbmRleCBkaXJlY3RseSwgaGFuZGxlIHJlbW90ZXMsIG9yIGdvIGRvd24gdG8gbG93LWxldmVsIG9iamVjdCBkYXRhYmFzZSBcCithY2Nlc3Mgd2l0aCBiaWctZmlsZXMgc3VwcG9ydC4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9naXRweXRob24tZGV2ZWxvcGVycy9HaXRQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGI4ZDI2YzM3YzFkNWEwNGY5YjAxODZlZGJlYmMxODMiCisKK1BZUElfUEFDS0FHRSA9ICJHaXRQeXRob24iCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNzU1NWFkODlhMjJmNjYzYzI1Y2NlZDVmNjIzYmRlZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWMyMzk4ZmZjM2RjYjNjNDBiMjczMjRiMzE2ZjA4YTRmOTNhZDY0NmQ1YTYzMjhjYWZiYjg3MWFhNzlmNWU0MiIKKworREVQRU5EUyArPSAiICR7UFlUSE9OX1BOfS1naXRkYiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZ2l0ZGIgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorICAgICAgICAgICAgICAgICAgIGdpdCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMTU4MzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWdpdGRiLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGNkOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjYuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGliYXJjaGl2ZS1jXzIuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxpYmFyY2hpdmUtY18yLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk4M2FlNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxpYmFyY2hpdmUtY18yLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJQeXRob24gaW50ZXJmYWNlIHRvIGxpYmFyY2hpdmUiCitERVNDUklQVElPTiA9ICJBIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYXJjaGl2ZS4gSXQgdXNlcyB0aGUgc3RhbmRhcmQgY3R5cGVzIG1vZHVsZSB0byBcCisgICAgZHluYW1pY2FsbHkgbG9hZCBhbmQgYWNjZXNzIHRoZSBDIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0NoYW5nYWNvL3B5dGhvbi1saWJhcmNoaXZlLWMiCitMSUNFTlNFID0gIkNDMC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT1iY2FiMzgwMjI3YTgzYmMxNDczNTBiNDBhODFlNmZmYyIKKworUFlQSV9QQUNLQUdFID0gImxpYmFyY2hpdmUtYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwODNiZDJjYjAwNDNjMWUyMmE1MmNiOWEwNWUzMTUzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTE5MzQ0Y2VjMjAzZjVkYjY1OTZhMjliNWJjMjZiMDdiYTk2NjI5MjVhMDVlMjQ5ODBiODQ3MDkyMzJlZjYwIgorCitSREVQRU5EU18ke1BOfSArPSAibGliYXJjaGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWdpY18wLjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWdpY18wLjQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk4MDE2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hZ2ljXzAuNC4xNS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkZpbGUgdHlwZSBpZGVudGlmaWNhdGlvbiB1c2luZyBsaWJtYWdpYyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHVzZXMgY3R5cGVzIHRvIGFjY2VzcyB0aGUgbGlibWFnaWMgZmlsZSB0eXBlIFwKKyAgICBpZGVudGlmaWNhdGlvbiBsaWJyYXJ5LiBJdCBtYWtlcyB1c2Ugb2YgdGhlIGxvY2FsIG1hZ2ljIGRhdGFiYXNlIGFuZCBzdXBwb3J0cyBcCisgICAgYm90aCB0ZXh0dWFsIGFuZCBNSU1FLXR5cGUgb3V0cHV0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2FodXBwL3B5dGhvbi1tYWdpYyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNmE5MzRmMTY1ZThjMzI0NWYyNDFlNzdkNDAxYmI4OCIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1tYWdpYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzg0Yzk1YTQ3MjE4ZjY2YzY1MDFjZDZkZDQ1ZmY1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMzc2NWMwZjU4MmQyZGZjNzJjMTVmM2I1YTgyYWVjZmFlOTQ5OGJkMjljYTg0MGQ3MmYzN2Q3YmQzOGJmY2Q1IgorCitSREVQRU5EU18ke1BOfSArPSAiZmlsZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEzOWU1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJUZW1wbGF0aW5nIGxpYnJhcnkgZm9yIFB5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWFrb3RlbXBsYXRlcy5vcmcvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRmN2U2YzdjODI5OTBhY2YwMjI4YTU1ZTAwZDI5YmM5IgotCi1QWVBJX1BBQ0tBR0UgPSAiTWFrbyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YzNmMmRhMGI3NGFmNTI5YTRjNGE1MzdkMDg0OGJmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzY5MTk1OTlhOWI3ZGM1ZDg2YTdhODk4OGYyM2E5YTNhM2QwODMwNzAwMjNiYWIyM2Q2NGY3ZjFkMWUwYTRiIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0taHRtbCBcCi0gICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzM4MDA5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRlbXBsYXRpbmcgbGlicmFyeSBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYWtvdGVtcGxhdGVzLm9yZy8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTQzZWI2NzcxODIyMmRiMjFkNDRhNGVmMTgzNjY3NWYiCisKK1BZUElfUEFDS0FHRSA9ICJNYWtvIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjI2NjBhNDkxNmYyZjYzNDU2ZTY4ODVjNzI3YjdjZDJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5ODRhNjczM2UxZDQ3Mjc5NmNlZWYzN2FkNDhjMjZmNGE5ODRiYjE4MTE5YmIyZGJjMzdhNDRkOGY2ZTc1YTQiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBici8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnIvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OGRhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnIvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMDliZDgzNjhiZjBkNTM4NTY2M2ExMGVlYjg5MDEzMTQ4MTY4MWJkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEFwciAyMDIwIDA5OjI4OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoYW5nZSBzaGViYW5nIHRvIHB5dGhvbjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBwYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weSB8IDIgKy0KKyBwYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Bici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5IGIvcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkKK2luZGV4IDhlOTZmMjEuLmIwN2NiZTMgMTAwNjQ0CistLS0gYS9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQorKysrIGIvcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkKK0BAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgVGVzdEluc3RhbGxXaXRob3V0UGJyKGJhc2UuQmFzZVRlc3RDYXNlKToKKyAgICAgICAgIHBrZ3MgPSB7CisgICAgICAgICAgICAgJ3BrZ1Rlc3QnOiB7CisgICAgICAgICAgICAgICAgICdzZXR1cC5weSc6IHRleHR3cmFwLmRlZGVudCgiIiJcCistICAgICAgICAgICAgICAgICAgICAjIS91c3IvYmluL2VudiBweXRob24KKysgICAgICAgICAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzZXR1cHRvb2xzCisgICAgICAgICAgICAgICAgICAgICBzZXR1cHRvb2xzLnNldHVwKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAncGtnVGVzdCcsCitkaWZmIC0tZ2l0IGEvcGJyL3Rlc3RzL3Rlc3RfcGFja2FnaW5nLnB5IGIvcGJyL3Rlc3RzL3Rlc3RfcGFja2FnaW5nLnB5CitpbmRleCAwN2JlNTQ3Li5mNmE5NDEyIDEwMDY0NAorLS0tIGEvcGJyL3Rlc3RzL3Rlc3RfcGFja2FnaW5nLnB5CisrKysgYi9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkKK0BAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgQ3JlYXRlUGFja2FnZXMoZml4dHVyZXMuRml4dHVyZSk6CisgCisgICAgIGRlZmF1bHRzID0geworICAgICAgICAgJ3NldHVwLnB5JzogdGV4dHdyYXAuZGVkZW50KHNpeC51KCIiIlwKKy0gICAgICAgICAgICAjIS91c3IvYmluL2VudiBweXRob24KKysgICAgICAgICAgICAjIS91c3IvYmluL2VudiBweXRob24zCisgICAgICAgICAgICAgaW1wb3J0IHNldHVwdG9vbHMKKyAgICAgICAgICAgICBzZXR1cHRvb2xzLnNldHVwKAorICAgICAgICAgICAgICAgICBzZXR1cF9yZXF1aXJlcz1bJ3BiciddLAorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzgzNWU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcGJyLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDc3ZDJhYTI4NWFkOTcyNTBhMTcyYjE5OWY0MDYwYjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM4ZTQyMGNkNGVkNGNlYzRlNzk5OWVlNDc0MDllODc2YWY1NzVkNGMzNWE0NTg0MGQ1OWU4YjVmMzE1NWFiOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjMzNWVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC40LmJiCkBAIC0wLDAgKzEsNSBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcGJyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiNjVjZGMzMmUxYTFmZjU2ZDQ4MWZjMTVhYThjYWY5ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTM5ZDI2MjU1NDdkYmZhNWZiMGI4MWRhZWJiMzk2MDFjNDc4YzIxOTU2ZGM1N2UyZTA3Yjc0NDUwYThjNTA2YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcC8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXAvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwY2ZmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXAvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gZTdhMDBlOWI1MTA0YWUyZmJjZWEzMmEzNWM4NTc2MGI3N2ZhZTdlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEFwciAyMDIwIDA5OjQyOjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoYW5nZSBzaGViYW5nIHRvIHB5dGhvbjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK3BpcCB3aWxsIGRyb3Agc3VwcG9ydCBvZiBweXRob24yIGZyb20gMjEuMAorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkgICAgICAgICAgICAgfCAyICstCisgc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkgICAgICAgICAgICAgICAgfCAyICstCisgc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkgfCAyICstCisgc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5ICAgICAgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weSBiL3NyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5CitpbmRleCAzYWE4YTQ2Li5lMWFkMTc5IDEwMDc1NQorLS0tIGEvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkKKysrKyBiL3NyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgaW1wb3J0IHBpcC5faW50ZXJuYWwudXRpbHMuaW5qZWN0X3NlY3VyZXRyYW5zcG9ydCAgIyBub3FhCisgZnJvbSBwaXAuX2ludGVybmFsLnV0aWxzLnR5cGluZyBpbXBvcnQgTVlQWV9DSEVDS19SVU5OSU5HCisgCitkaWZmIC0tZ2l0IGEvc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkgYi9zcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weQoraW5kZXggM2E1MmI3NS4uYWQzZjgxZCAxMDA2NDQKKy0tLSBhL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5CisrKysgYi9zcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGNvZGluZzogdXRmLTggLSotCisgIyBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBY3RpdmVTdGF0ZSBTb2Z0d2FyZSBJbmMuCisgIyBDb3B5cmlnaHQgKGMpIDIwMTMgRWRkeSBQZXRyaciZb3IKK2RpZmYgLS1naXQgYS9zcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weSBiL3NyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5CitpbmRleCBjNjExMzZiLi5hNDk3ZTk4IDEwMDY0NAorLS0tIGEvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkKKysrKyBiL3NyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgU2NyaXB0IHdoaWNoIHRha2VzIG9uZSBvciBtb3JlIGZpbGUgcGF0aHMgYW5kIHJlcG9ydHMgb24gdGhlaXIgZGV0ZWN0ZWQKKyBlbmNvZGluZ3MKK2RpZmYgLS1naXQgYS9zcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkgYi9zcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkKK2luZGV4IDA2YTU5NGUuLmJmYTc4MzkgMTAwNjQ0CistLS0gYS9zcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkKKysrKyBiL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGNvZGluZzogdXRmLTggLSotCisgCisgIiIiCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI3ZTZmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04YmEwNmQ1MjljOTU1MDQ4ZTVkZGQ3YzQ1NDU5ZWIyZSIKLQotREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWFhYWY5MGZiYWZjNTBlN2JhMWU2NmZmY2ViMDA5NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjEyMDdkNzZjMTAzMWU1MTc2Njg4OThhNmI0NmE5ZmIxNTAxYzdhNDcxMGVmNWRmZDZhNDBhZDllNjc1N2VhNyIKLQotaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAotICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY29tcGlsZSBcCi0gIHB5dGhvbjMtaW8gXAotICBweXRob24zLWh0bWwgXAotICBweXRob24zLWpzb24gXAotICBweXRob24zLW5ldHNlcnZlciBcCi0gIHB5dGhvbjMtc2V0dXB0b29scyBcCi0gIHB5dGhvbjMtdW5peGFkbWluIFwKLSAgcHl0aG9uMy14bWxycGMgXAotICBweXRob24zLXBpY2tsZSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8yMC4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMjAuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTczZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMjAuMC4yLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OGJhMDZkNTI5Yzk1NTA0OGU1ZGRkN2M0NTQ1OWViMmUiCisKK0RFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjdkNDJiYTQ5YjgwOTYwNGYwZGYzZDU1ZGYxYzNmZDg2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkYjBjOGVhNGM3ZWE1MWM4MDQ5NjQwZThlNmU3ZmRlOTQ5ZGU2NzJiZmE0OTQ5OTIwNjc1NTYzYTVhNjk2N2YiCisKK2luaGVyaXQgcHlwaSBkaXN0dXRpbHMzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKKyAgICBybSAke0R9LyR7YmluZGlyfS9waXAKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24zLWNvbXBpbGUgXAorICBweXRob24zLWlvIFwKKyAgcHl0aG9uMy1odG1sIFwKKyAgcHl0aG9uMy1qc29uIFwKKyAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAorICBweXRob24zLXNldHVwdG9vbHMgXAorICBweXRob24zLXVuaXhhZG1pbiBcCisgIHB5dGhvbjMteG1scnBjIFwKKyAgcHl0aG9uMy1waWNrbGUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWFhMDFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBDYWlybyBjYW52YXMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9weWNhaXJvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gInB5dGhvbi1kZXZlbCIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBNUEx2MS4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjJlMDcxYWI3Mjk3ODQzMWIyOTRhMGQ2OTYzMjc0MjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1MR1BMLTIuMTttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1NUEwtMS4xO21kNT1iZmUxZjc1ZDYwNjkxMmE0MTExYzkwNzQzZDZjNzMyNSIKLQotIyBjYWlybyA+PSAxLjE0Ci1ERVBFTkRTID0gImNhaXJvIHB5dGhvbjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Z29iamVjdC9weWNhaXJvL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9weWNhaXJvLSR7UFZ9LnRhci5neiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzYxMGRhOGE0MGE3YmVkNTQ4OTkxYWEzNDE2NDMxZDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzAxNzJlNThiNmJhZDc1NzJhMzUxOGMyNjcyOWIwNzRhY2RkZTE1ZTZmZWU2Y2JhYjZkMzUyOGFkNTUyYjc4NiIKLQotUyA9ICIke1dPUktESVJ9L3B5Y2Fpcm8tJHtQVn0iCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnCi0KLUNGTEFHUyArPSAiLWZQSUMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1GSUxFU18ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE5LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjYwODM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE5LjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBDYWlybyBjYW52YXMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9weWNhaXJvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gInB5dGhvbi1kZXZlbCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBNUEx2MS4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjM3MTNjYTJjMjhkOTMxMmFkNzE4NTIwYjZkYzNlZWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1MR1BMLTIuMTttZDU9ZmFkOWIzMzMyYmU4OTRiYWI5YmM1MDE1NzI4NjRiMjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1NUEwtMS4xO21kNT1iZmUxZjc1ZDYwNjkxMmE0MTExYzkwNzQzZDZjNzMyNSIKKworIyBjYWlybyA+PSAxLjE0CitERVBFTkRTID0gImNhaXJvIHB5dGhvbjMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Z29iamVjdC9weWNhaXJvL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9weWNhaXJvLSR7UFZ9LnRhci5neiIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzhiODQ0MTYwMjE2NDBiMDEyNTBjOGY4ZWM0YzUyZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY1YmE5Mzc0YTQ2Yzk4NzI5ZGQzNzI3ZDk5M2Y1ZTE3ZWQwMjg2ZmQ2NzM4ZWQ0NjRmZTRlZmEwNjEyZDE5YyIKKworUyA9ICIke1dPUktESVJ9L3B5Y2Fpcm8tJHtQVn0iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnCisKK0NGTEFHUyArPSAiLWZQSUMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitGSUxFU18ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVjMGFjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgotREVTQ1JJUFRJT04gPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5Z21lbnRzLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUxZDdiN2JmZmJmZWFhMTQwODNmZDJiZDMyMzZhZWE4IgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi1TUkNfVVJJW21kNXN1bV0gPSAiNWVjYzNmYmIyYTc4M2U5MTdiMzY5MjcxZmMwZTZjZDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODgxYzRjMTU3ZTQ1ZjMwYWYxODVjMWZmZThkNTQ5ZDQ4YWM5MTI3NDMzZjJjMzgwYzI0Yjg0NTcyYWQ2NjI5NyIKLQotREVQRU5EUyArPSAiXAotICAgICAgICAgICAgJHtQWVRIT05fUE59IFwKLSAgICAgICAgICAgICIKLQotUFlQSV9QQUNLQUdFID0gIlB5Z21lbnRzIgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NGI5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjUuMi5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlB5Z21lbnRzIGlzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBwYWNrYWdlIHdyaXR0ZW4gaW4gUHl0aG9uLiIKK0RFU0NSSVBUSU9OID0gIlB5Z21lbnRzIGlzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBwYWNrYWdlIHdyaXR0ZW4gaW4gUHl0aG9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weWdtZW50cy5vcmcvIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lMWQ3YjdiZmZiZmVhYTE0MDgzZmQyYmQzMjM2YWVhOCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworU1JDX1VSSVttZDVzdW1dID0gIjQ2NWEzNTU1OTg2MzA4OWQ5NTlkNzgzYTY5Zjc5YjlmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4YzhhYTVhOWY3NzhmY2QxMDI2YTE3MzYxZGRhZjczMzBkMWI3YzYyYWU5N2MzYmIwYWU3M2UwYjliNmIwZmUiCisKK0RFUEVORFMgKz0gIlwKKyAgICAgICAgICAgICR7UFlUSE9OX1BOfSBcCisgICAgICAgICAgICAiCisKK1BZUElfUEFDS0FHRSA9ICJQeWdtZW50cyIKKworaW5oZXJpdCBweXBpCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYzNkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjcuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1weXBhcnNpbmcuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkNTk1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uMy1zY29uc18ke1BWfS5iYgotaW5oZXJpdCBuYXRpdmUgcHl0aG9uM25hdGl2ZQotREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gIiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9zY29ucyBTQ09OU19MSUJfRElSPScke1NUQUdJTkdfRElSX0hPU1R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBQWVRIT05OT1VTRVJTSVRFPScxJwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMTI3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjIuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIHB5dGhvbjMtc2NvbnNfJHtQVn0uYmIKK2luaGVyaXQgbmF0aXZlIHB5dGhvbjNuYXRpdmUKK0RFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9zY29ucyBTQ09OU19MSUJfRElSPScke1NUQUdJTkdfRElSX0hPU1R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBQWVRIT05OT1VTRVJTSVRFPScxJworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM3YWFlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiU29mdHdhcmUgQ29uc3RydWN0aW9uIHRvb2wgKG1ha2UvYXV0b3Rvb2xzIHJlcGxhY2VtZW50KSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzdiYjUzYTA4ZTZiZWFlYTBjOTBlNzgyMWQ3MzEyODQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Njb25zL3Njb25zLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNWIyYTM5OTMzMTNiYmVkZDIyMWQ0ZDU3NThmZDJmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2VhNDE3ZmRkNzQ5OWEzNmY0MDc5MjNkMDNiNGI3MDAwYjBmOWU4ZmQ3YjMxYjMxNmI5Y2U3ZWJhOTE0M2E1IgotCi1TID0gIiR7V09SS0RJUn0vc2NvbnMtJHtQVn0iCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc2NvbnMub3JnL3BhZ2VzL2Rvd25sb2FkLmh0bWwiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICIxcywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCIgJHtTfS9zY3JpcHQvKgotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY29yZSBcCi0gIHB5dGhvbjMtZmNudGwgXAotICBweXRob24zLWlvIFwKLSAgcHl0aG9uMy1qc29uIFwKLSAgcHl0aG9uMy1zaGVsbCBcCi0gIHB5dGhvbjMtcGlja2xlIFwKLSAgcHl0aG9uMy1wcHJpbnQgXAotICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMTE3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlNvZnR3YXJlIENvbnN0cnVjdGlvbiB0b29sIChtYWtlL2F1dG90b29scyByZXBsYWNlbWVudCkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS9MSUNFTlNFLXB5dGhvbjMtc2NvbnMtJHtQVn07bWQ1PWUxNGUxYjMzNDI4ZGYyNGE0MGE3ODJhZTE0Mjc4NWQwIgorCisjIHB5cGkgcGFja2FnZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgbGljZW5zZSBmaWxlCitTUkNfVVJJICs9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vU0NvbnMvc2NvbnMvJHtQVn0vTElDRU5TRTtkb3dubG9hZGZpbGVuYW1lPUxJQ0VOU0UtcHl0aG9uMy1zY29ucy0ke1BWfTtuYW1lPWxpY2Vuc2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmOWM0YWQwNmRjZjE0MjdiZTk1NDcyZWFmMzgwYzgxYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWFhNDgzYzMwM2VmZWI2NzhlNmY3Yzc3NmM4NDQ0YTQ4MmY4ZGRjM2FkODkxZjhiNmNkZDM1MjY0ZGE5YTFmIgorU1JDX1VSSVtsaWNlbnNlLm1kNXN1bV0gPSAiZTE0ZTFiMzM0MjhkZjI0YTQwYTc4MmFlMTQyNzg1ZDAiCitTUkNfVVJJW2xpY2Vuc2Uuc2hhMjU2c3VtXSA9ICI3MmVkODg5MTY1ZmIyODM3OGNhZGFjMTQ1NTJiZTRhOTU5ZjFlYmFiNmIxNDhhYmI1ZGQyYjQ5NzEyYzNjNmY2IgorCitTID0gIiR7V09SS0RJUn0vc2NvbnMtJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc2NvbnMub3JnL3BhZ2VzL2Rvd25sb2FkLmh0bWwiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgIjFzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsIiAke1N9L3NjcmlwdC8qCit9CisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCisgIHB5dGhvbjMtY29yZSBcCisgIHB5dGhvbjMtZmNudGwgXAorICBweXRob24zLWlvIFwKKyAgcHl0aG9uMy1qc29uIFwKKyAgcHl0aG9uMy1zaGVsbCBcCisgIHB5dGhvbjMtcGlja2xlIFwKKyAgcHl0aG9uMy1wcHJpbnQgXAorICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYWY4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGMzOWQwODk2OTMwZTI1YzIyNGNjODk3NjYwZmM4NTExY2NhZTMwYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMyBBcHIgMjAyMCAxMDowMToxMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBjaGFuZ2Ugc2hlYmFuZyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkgICB8IDIgKy0KKyBzZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5IHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkgYi9wa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weQoraW5kZXggYWU2NzAwMS4uOTMzZTM5OCAxMDA2NDQKKy0tLSBhL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5CisrKysgYi9wa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGNvZGluZzogdXRmLTggLSotCisgIyBDb3B5cmlnaHQgKGMpIDIwMDUtMjAxMCBBY3RpdmVTdGF0ZSBTb2Z0d2FyZSBJbmMuCisgIyBDb3B5cmlnaHQgKGMpIDIwMTMgRWRkeSBQZXRyaciZb3IKK2RpZmYgLS1naXQgYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5IGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQoraW5kZXggYWJjYTFhZS4uNmJjZGM5OCAxMDA2NDQKKy0tLSBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKKysrKyBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBFYXN5IEluc3RhbGwKKyAtLS0tLS0tLS0tLS0KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDEuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180NS4yLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDEuNC4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQ1LjIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3OTUzMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2l4LmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxYzM2NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjE0LjAuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zaXguaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTY3NDU4OGE1N2U2NDlkMWE2ZDk3N2VjMzEyMjE0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzZiZGJkY2U0NmU2ZTZhM2Q2MWEzMzdjMGY4Yjc2M2NhMWU4NzE3YzAzYjM2OWU4N2E3ZWM3Y2UxMzE5YzBhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzL25vX3RyYWNlYmFjazIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHMvbm9fdHJhY2ViYWNrMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTQ1MTAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzL25vX3RyYWNlYmFjazIucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAordHJhY2ViYWNrMiBhZGRzIHRyYWNlYmFjayBmb3IgcHl0aG9uMi4gUmF0aGVyIHRoYW4gZGVwZW5kIG9uIHRyYWNlYmFjazIsIHdlJ3JlCitweXRob24zIG9ubHkgc28ganVzdCB1c2UgdHJhY2ViYWNrLgorVGhpcyBjYXVzZWQgYnJlYWthZ2UgaW4gb2Utc2VsZnRlc3QgLWogd2hpY2ggdXNlcyB0ZXN0dG9vbHMgb24gdGhlIGF1dG9idWlsZGVyCit1c2luZyBidWlsZHRvb2xzLXRhcmJhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT3VyIHJlY2lwZSBpcyBweXRob24zIHNwZWNpZmljXQorKE9uY2UgcHkyIGlzIEVPTCB1cHN0cmVhbSBwcm9iYWJseSBjb3VsZC9zaG91bGQgdGFrZSB0aGlzKQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiB0ZXN0dG9vbHMtMi4zLjAvdGVzdHRvb2xzL2NvbnRlbnQucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0ZXN0dG9vbHMtMi4zLjAub3JpZy90ZXN0dG9vbHMvY29udGVudC5weQorKysrIHRlc3R0b29scy0yLjMuMC90ZXN0dG9vbHMvY29udGVudC5weQorQEAgLTE5LDggKzE5LDcgQEAgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIAorIGZyb20gZXh0cmFzIGltcG9ydCB0cnlfaW1wb3J0CistIyBUbyBsZXQgc2V0dXAucHkgd29yaywgbWFrZSB0aGlzIGEgY29uZGl0aW9uYWwgaW1wb3J0LgorLXRyYWNlYmFjayA9IHRyeV9pbXBvcnQoJ3RyYWNlYmFjazInKQorK2ltcG9ydCB0cmFjZWJhY2sKKyAKKyBmcm9tIHRlc3R0b29scy5jb21wYXQgaW1wb3J0ICgKKyAgICAgX2IsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIKaW5kZXggODk2ZWNlZS4uYTI1NGI5MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYgpAQCAtMSwyICsxLDQgQEAKIGluaGVyaXQgc2V0dXB0b29sczMKIHJlcXVpcmUgcHl0aG9uLXRlc3R0b29scy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL25vX3RyYWNlYmFjazIucGF0Y2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2gKaW5kZXggMDlmMjc5YmEuLjU5NTkyODIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDIzMjk0YzZiYTY4OTYxMTU4MjgyOTNmZGI3ZTY3YjQ3YjM4YmE2NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAzOWM1M2RkNWJhZGRlYzMzNTlhMDViZTBiZmY0NmEzYjMyYmJiODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjUgSmFuIDIwMTkgMTk6MDQ6MTMgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGFkZCAvdXNyL2xpYi90ZXJtY2FwIHRvIGxpbmtlciBmbGFncyB0byBhdm9pZCBob3N0CkBAIC0xMiwxNCArMTIsMTQgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYjQzNTdlMy4uZmJlYzAwZCAxMDA2NDQKK2luZGV4IDIwZDdmMzUuLmFiMThmZjAgMTAwNjQ0CiAtLS0gYS9zZXR1cC5weQogKysrIGIvc2V0dXAucHkKLUBAIC04NTYsNyArODU2LDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorQEAgLTk1Nyw3ICs5NTcsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVybWNhcCcpOgogICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZCgndGVybWNhcCcpCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigncmVhZGxpbmUnLCBbJ3JlYWRsaW5lLmMnXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1bJy91c3IvbGliL3Rlcm1jYXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1yZWFkbGluZV9leHRyYV9saW5rX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykgKQorICAgICAgICAgICAgIHNlbGYuYWRkKEV4dGVuc2lvbigncmVhZGxpbmUnLCBbJ3JlYWRsaW5lLmMnXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPVsnL3Vzci9saWIvdGVybWNhcCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9cmVhZGxpbmVfZXh0cmFfbGlua19hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9cmVhZGxpbmVfbGlicykpCiAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoCmluZGV4IGVhNzUyNjIuLjExMmM5NzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBmYmRhZDFlYWY1NDFhOGU5MmJlODFmMzk1MTRjZDI0OWIzYjA4MDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEwNzhiNmZmMTQ5MmU4NDhhZDEwNTU3NjRmYjlhNDE0YWJhZjNlMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgNSBGZWIgMjAxOSAxNTo1MjowMiArMDEwMAogU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgImxpYiIgYXMgbG9jYXRpb24gZm9yIG1vZHVsZXMsIHNpdGUtcGFja2FnZXMKQEAgLTExLDEzICsxMSwxMyBAQAogIEluY2x1ZGUvcHl0aG9ucnVuLmggIHwgIDIgKysKICBMaWIvc2l0ZS5weSAgICAgICAgICB8ICA0ICsrLS0KICBNYWtlZmlsZS5wcmUuaW4gICAgICB8ICA1ICsrKy0tCi0gTW9kdWxlcy9nZXRwYXRoLmMgICAgfCAxOCArKysrKysrKysrKystLS0tLS0KKyBNb2R1bGVzL2dldHBhdGguYyAgICB8IDIyICsrKysrKysrKysrKysrLS0tLS0tLS0KICBQeXRob24vZ2V0cGxhdGZvcm0uYyB8IDEwICsrKysrKysrKysKICBQeXRob24vc3lzbW9kdWxlLmMgICB8ICAyICsrCi0gNiBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKyA2IGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKLWluZGV4IDZmMGM2ZmMuLjBhMTdlZGQgMTAwNjQ0CitpbmRleCA0NjA5MWUwLi42MWIyZTE1IDEwMDY0NAogLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAogKysrIGIvSW5jbHVkZS9weXRob25ydW4uaAogQEAgLTcsNiArNyw4IEBACkBAIC0yOCwxMiArMjgsMTIgQEAKICsKICAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgUHlBUElfRlVOQyhpbnQpIFB5UnVuX1NpbXBsZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgUHlDb21waWxlckZsYWdzICopOwotIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9BbnlGaWxlRmxhZ3MoRklMRSAqLCBjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKKyBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUV4RmxhZ3MoCiBkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQotaW5kZXggZmZkMTMyYi4uYjU1ZjZkOCAxMDA2NDQKK2luZGV4IGEwNjVhYjAuLjFkNzIwZWYgMTAwNjQ0CiAtLS0gYS9MaWIvc2l0ZS5weQogKysrIGIvTGliL3NpdGUucHkKLUBAIC0zMzQsMTIgKzMzNCwxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgorQEAgLTMzNSwxMiArMzM1LDEyIEBAIGRlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6CiAgICAgICAgICBzZWVuLmFkZChwcmVmaXgpCiAgCiAgICAgICAgICBpZiBvcy5zZXAgPT0gJy8nOgpAQCAtNDksMTAgKzQ5LDEwIEBACiAgCiAgZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCi1pbmRleCA2ZTgxYjJmLi42NzFhMjBlIDEwMDY0NAoraW5kZXggNjU2NjVkZi4uYmU0OTE0MCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLnByZS5pbgogKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTQyLDcgKzE0Miw3IEBAIExJQkRJUj0JCUBsaWJkaXJACitAQCAtMTQzLDcgKzE0Myw3IEBAIExJQkRJUj0JCUBsaWJkaXJACiAgTUFORElSPQkJQG1hbmRpckAKICBJTkNMVURFRElSPQlAaW5jbHVkZWRpckAKICBDT05GSU5DTFVERURJUj0JJChleGVjX3ByZWZpeCkvaW5jbHVkZQpAQCAtNjEsNyArNjEsNyBAQAogIEFCSUZMQUdTPQlAQUJJRkxBR1NACiAgCiAgIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotQEAgLTc2OCw2ICs3NjgsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCitAQCAtNzUzLDYgKzc1Myw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMgTWFrZWZpbGUKICAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKICAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCiAgCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCkBAIC02OSw3ICs2OSw3IEBACiAgCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKICAKICBQcm9ncmFtcy9weXRob24ubzogJChzcmNkaXIpL1Byb2dyYW1zL3B5dGhvbi5jCi1AQCAtODU2LDcgKzg1Nyw3IEBAIHJlZ2VuLW9wY29kZToKK0BAIC04NjgsNyArODY5LDcgQEAgcmVnZW4tc3ltYm9sOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oCiAgUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0X3VucGFyc2UubyBQeXRob24vYXN0Lm8gUHl0aG9uL2Z1dHVyZS5vIFBhcnNlci9wYXJzZXRvay5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogIAogIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKQEAgLTc5LDcyICs3OSw5MCBAQAogIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKICAJCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwogZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKLWluZGV4IGU2YTNlOGUuLjBjNjJhZjYgMTAwNjQ0CitpbmRleCBiNzI3ZjY2Li5jMDAzZTQ2IDEwMDY0NAogLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKICsrKyBiL01vZHVsZXMvZ2V0cGF0aC5jCi1AQCAtMTIzLDYgKzEyMyw3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgd2NoYXJfdCAqZXhlY19wcmVmaXg7ICAgICAgICAgICAgICAvKiBFWEVDX1BSRUZJWCBkZWZpbmUgKi8KK0BAIC0xMjgsNiArMTI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICB3Y2hhcl90ICpleGVjX3ByZWZpeDsgICAgICAgICAgICAgIC8qIEVYRUNfUFJFRklYIG1hY3JvICovCiAgCiAgICAgIHdjaGFyX3QgKmxpYl9weXRob247ICAgICAgICAgICAgICAgLyogImxpYi9weXRob25YLlkiICovCiArICAgIHdjaGFyX3QgKm11bHRpbGliX3B5dGhvbjsgICAgICAgICAgICAgICAvKiAibGliW3N1ZmZpeF0vcHl0aG9uWC5ZIiAqLwotICAgICB3Y2hhcl90IGFyZ3YwX3BhdGhbTUFYUEFUSExFTisxXTsKLSAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOyAgICAvKiAiLi4uL2xpYi9weXRob25YWS56aXAiICovCiAgCi1AQCAtMzE0LDcgKzMxNSw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAorICAgICBpbnQgcHJlZml4X2ZvdW5kOyAgICAgICAgIC8qIGZvdW5kIHBsYXRmb3JtIGluZGVwZW5kZW50IGxpYnJhcmllcz8gKi8KKyAgICAgaW50IGV4ZWNfcHJlZml4X2ZvdW5kOyAgICAvKiBmb3VuZCB0aGUgcGxhdGZvcm0gZGVwZW5kZW50IGxpYnJhcmllcz8gKi8KK0BAIC0zODYsNyArMzg3LDcgQEAgc2VhcmNoX2Zvcl9wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCiAgICAgICAgICBpZiAoZGVsaW0pIHsKICAgICAgICAgICAgICAqZGVsaW0gPSBMJ1wwJzsKICAgICAgICAgIH0KLS0gICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pOwotICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7Ci0gICAgICAgICByZXR1cm4gMTsKLSAgICAgfQotQEAgLTM0Myw3ICszNDQsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgY29weV9hYnNvbHV0ZShwcmVmaXgsIGNhbGN1bGF0ZS0+YXJndjBfcGF0aCwgTUFYUEFUSExFTisxKTsKLSAgICAgZG8gewotICAgICAgICAgbiA9IHdjc2xlbihwcmVmaXgpOwotLSAgICAgICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24pOwotKyAgICAgICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChwcmVmaXgsIExBTkRNQVJLKTsKLSAgICAgICAgIGlmIChpc21vZHVsZShwcmVmaXgpKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtMzU1LDcgKzM1Niw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAotICAgICAvKiBMb29rIGF0IGNvbmZpZ3VyZSdzIFBSRUZJWCAqLwotICAgICB3Y3NuY3B5KHByZWZpeCwgY2FsY3VsYXRlLT5wcmVmaXgsIE1BWFBBVEhMRU4pOwotICAgICBwcmVmaXhbTUFYUEFUSExFTl0gPSBMJ1wwJzsKLS0gICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24pOwotKyAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7Ci0gICAgIGlmIChpc21vZHVsZShwcmVmaXgpKSB7Ci0gICAgICAgICByZXR1cm4gMTsKLUBAIC00MjcsNyArNDI4LDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgICAgICAgICB3Y3NuY3B5KGV4ZWNfcHJlZml4LCBjb3JlX2NvbmZpZy0+aG9tZSwgTUFYUEFUSExFTik7CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKyAgICAgICAgIGlmIChfUHlTdGF0dXNfRVhDRVBUSU9OKHN0YXR1cykpIHsKKyAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgICAgICAgfQotICAgICAgICAgZXhlY19wcmVmaXhbTUFYUEFUSExFTl0gPSBMJ1wwJzsKLS0gICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24pOwotKyAgICAgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBMImxpYi1keW5sb2FkIik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAgICAgfQotQEAgLTQ2NCw3ICs0NjUsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAotICAgICBjb3B5X2Fic29sdXRlKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSk7CitAQCAtNDQ0LDcgKzQ0NSw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAogICAgICBkbyB7Ci0gICAgICAgICBuID0gd2NzbGVuKGV4ZWNfcHJlZml4KTsKLS0gICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24pOwotKyAgICAgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBMImxpYi1keW5sb2FkIik7Ci0gICAgICAgICBpZiAoaXNkaXIoZXhlY19wcmVmaXgpKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtNDc2LDcgKzQ3Nyw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgIC8qIExvb2sgYXQgY29uZmlndXJlJ3MgRVhFQ19QUkVGSVggKi8KLSAgICAgd2NzbmNweShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5leGVjX3ByZWZpeCwgTUFYUEFUSExFTik7Ci0gICAgIGV4ZWNfcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24pOwotKyAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pOwotICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICBpZiAoaXNkaXIoZXhlY19wcmVmaXgpKSB7Ci0gICAgICAgICByZXR1cm4gMTsKLUBAIC04NzEsNiArODcyLDEwIEBAIGNhbGN1bGF0ZV9pbml0KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLAorICAgICAgICAgLyogUGF0aDogPGFyZ3YwX3BhdGggb3Igc3Vic3RyaW5nPiAvIDxsaWJfcHl0aG9uPiAvIExBTkRNQVJLICovCisgICAgICAgICBzaXplX3QgbiA9IHdjc2xlbihwcmVmaXgpOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIHByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgIH0KK0BAIC00NjcsNyArNDY4LDcgQEAgc2VhcmNoX2Zvcl9wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGlmIChzYWZlX3djc2NweShwcmVmaXgsIGNhbGN1bGF0ZS0+cHJlZml4LCBwcmVmaXhfbGVuKSA8IDApIHsKKyAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICB9CistICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKysgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisgICAgIGlmIChfUHlTdGF0dXNfRVhDRVBUSU9OKHN0YXR1cykpIHsKKyAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgIH0KK0BAIC01MTAsNyArNTExLDcgQEAgY2FsY3VsYXRlX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKKyAgICAgICAgIGlmIChzYWZlX3djc2NweShwcmVmaXgsIGNhbGN1bGF0ZS0+cHJlZml4LCBwcmVmaXhfbGVuKSA8IDApIHsKKyAgICAgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgICAgIH0KKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKysgICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjM1LDcgKzYzNiw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgICAgICAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgIH0KK0BAIC02NjcsNyArNjY4LDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKKyAgICAgZG8geworICAgICAgICAgLyogUGF0aDogPGFyZ3YwX3BhdGggb3Igc3Vic3RyaW5nPiAvIDxsaWJfcHl0aG9uPiAvICJsaWItZHlubG9hZCIgKi8KKyAgICAgICAgIHNpemVfdCBuID0gd2NzbGVuKGV4ZWNfcHJlZml4KTsKKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgIH0KK0BAIC02ODksNyArNjkwLDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKKyAgICAgaWYgKHNhZmVfd2NzY3B5KGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmV4ZWNfcHJlZml4LCBleGVjX3ByZWZpeF9sZW4pIDwgMCkgeworICAgICAgICAgcmV0dXJuIFBBVEhMRU5fRVJSKCk7CisgICAgIH0KKy0gICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgZXhlY19wcmVmaXhfbGVuKTsKKysgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICB9CitAQCAtOTI4LDcgKzkyOSw3IEBAIGNhbGN1bGF0ZV9hcmd2MF9wYXRoKFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBjb25zdCB3Y2hhcl90ICpwcm9ncmFtX2Z1bGxfcGF0CisgICAgICAgICAgICAgcmV0dXJuIFBBVEhMRU5fRVJSKCk7CisgICAgICAgICB9CisgICAgICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChhcmd2MF9wYXRoLCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGFyZ3YwX3BhdGhfbGVuKTsKKysgICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKGFyZ3YwX3BhdGgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBhcmd2MF9wYXRoX2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKyAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworQEAgLTEyMDEsNiArMTIwMiwxMCBAQCBjYWxjdWxhdGVfaW5pdChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgY29uc3QgUHlDb25maWcgKmNvbmZpZykKICAgICAgaWYgKCFjYWxjdWxhdGUtPmxpYl9weXRob24pIHsKICAgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiRVhFQ19QUkVGSVggZGVmaW5lIiwgbGVuKTsKICAgICAgfQpAQCAtMTUyLDEwICsxNzAsMTAgQEAKICsgICAgaWYgKCFjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbikgewogKyAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJFWEVDX1BSRUZJWCBkZWZpbmUiLCBsZW4pOwogKyAgICB9Ci0gICAgIHJldHVybiBfUHlfSU5JVF9PSygpOwotIH0KICAKLUBAIC04ODIsNiArODg3LDcgQEAgY2FsY3VsYXRlX2ZyZWUoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUpCisgICAgIGNhbGN1bGF0ZS0+d2FybmluZ3MgPSBjb25maWctPnBhdGhjb25maWdfd2FybmluZ3M7CisgICAgIGNhbGN1bGF0ZS0+cHl0aG9ucGF0aF9lbnYgPSBjb25maWctPnB5dGhvbnBhdGhfZW52OworQEAgLTEyMTYsNiArMTIyMSw3IEBAIGNhbGN1bGF0ZV9mcmVlKFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlKQogICAgICBQeU1lbV9SYXdGcmVlKGNhbGN1bGF0ZS0+cHJlZml4KTsKICAgICAgUHlNZW1fUmF3RnJlZShjYWxjdWxhdGUtPmV4ZWNfcHJlZml4KTsKICAgICAgUHlNZW1fUmF3RnJlZShjYWxjdWxhdGUtPmxpYl9weXRob24pOwpAQCAtMTgyLDEwICsyMDAsMTAgQEAKICsJcmV0dXJuIExJQjsKICt9CiBkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCi1pbmRleCBlZmU1YjI5Li5kZTc3YjE3IDEwMDY0NAoraW5kZXggNWIwZmI4MS4uMGRjZTc1NCAxMDA2NDQKIC0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYwogKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMjMxOSw2ICsyMzE5LDggQEAgX1B5U3lzX0JlZ2luSW5pdChQeU9iamVjdCAqKnN5c21vZCkKK0BAIC0yNjY4LDYgKzI2NjgsOCBAQCBfUHlTeXNfSW5pdENvcmUoX1B5UnVudGltZVN0YXRlICpydW50aW1lLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwogICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0UGxhdGZvcm0oKSkpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eb24tdC1zZWFyY2gtc3lzdGVtLWZvci1oZWFkZXJzLWxpYnJhcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNmOGUxZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA4NWU4Zjg2YWQyYjdkZWMwODQ4Y2Q1NWI4ZTgxMGE1ZTI3MjJiMjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBXZWQsIDQgTWFyIDIwMjAgMDA6MDY6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3Qgc2VhcmNoIHN5c3RlbSBmb3IgaGVhZGVycy9saWJyYXJpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBzZXR1cC5weSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA5ZGExYjNhLi41OTc4MmMwIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtNjc0LDggKzY3NCw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERURJUiIpKQorIAorLSAgICAgICAgc3lzdGVtX2xpYl9kaXJzID0gWycvbGliNjQnLCAnL3Vzci9saWI2NCcsICcvbGliJywgJy91c3IvbGliJ10KKy0gICAgICAgIHN5c3RlbV9pbmNsdWRlX2RpcnMgPSBbJy91c3IvaW5jbHVkZSddCisrICAgICAgICBzeXN0ZW1fbGliX2RpcnMgPSBbXQorKyAgICAgICAgc3lzdGVtX2luY2x1ZGVfZGlycyA9IFtdCisgICAgICAgICAjIGxpYl9kaXJzIGFuZCBpbmNfZGlycyBhcmUgdXNlZCB0byBzZWFyY2ggZm9yIGZpbGVzOworICAgICAgICAgIyBpZiBhIGZpbGUgaXMgZm91bmQgaW4gb25lIG9mIHRob3NlIGRpcmVjdG9yaWVzLCBpdCBjYW4KKyAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1NYWtlZmlsZS1kby1ub3QtY29tcGlsZS0ucHljLWluLXBhcmFsbGVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1NYWtlZmlsZS1kby1ub3QtY29tcGlsZS0ucHljLWluLXBhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYmNlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLU1ha2VmaWxlLWRvLW5vdC1jb21waWxlLS5weWMtaW4tcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSBjNTAxZTEyMWE4NzJjYmNlZjhmZmU2MjZjMWRlMTczYTEyNWJlOWY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE2IEphbiAyMDIwIDEyOjM0OjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBkbyBub3QgY29tcGlsZSAucHljIGluIHBhcmFsbGVsCisKK1RoaXMgd2FzIGZvdW5kIHRvIGJyZWFrIHJlcHJvZHVjaWJpbGl0eSwgYW5kIHByb2R1Y2Ugc3RyYW5nZSBmaWxlIG93bmVyc2hpcAorcmFjZXMuCisKK1RoZSB1cHN0cmVhbSBjb21taXQgaW50cm9kdWNpbmcgdGhlIGNoYW5nZSB3YXM6CitodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzFhMmRkODJmNTZiZDgxM2FhY2M1NzBlMTcyY2VmZTU1YThhNDE1MDQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLnByZS5pbiB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KK2luZGV4IDEyNDExMTIuLjVkZmRmNDQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrKyBiL01ha2VmaWxlLnByZS5pbgorQEAgLTE0NTcsMzAgKzE0NTcsMzAgQEAgbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKKyAJZmkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKy0JCS1qMCAtZCAkKExJQkRFU1QpIC1mIFwKKysJCS1kICQoTElCREVTVCkgLWYgXAorIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCisgCQkkKERFU1RESVIpJChMSUJERVNUKQorIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKy0JCS1qMCAtZCAkKExJQkRFU1QpIC1mIFwKKysJCS1kICQoTElCREVTVCkgLWYgXAorIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCisgCQkkKERFU1RESVIpJChMSUJERVNUKQorIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKysJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisgCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcworIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKysJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisgCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcworIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU9PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1icG8tMzY4NTItcHJvcGVyLWRldGVjdGlvbi1vZi1taXBzLWFyY2hpdGVjdHVyZS1mb3ItLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1icG8tMzY4NTItcHJvcGVyLWRldGVjdGlvbi1vZi1taXBzLWFyY2hpdGVjdHVyZS1mb3ItLnBhdGNoCmluZGV4IGU3YWY4ODYuLmM0ZmFlMDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDc1MzVjMzk5NTFiOWQxNWRkNjRjNDY2OTA5MmE4NTgyYmE1NTU0NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFhZDc3MWQ4NjcyOGVlMmVkMzBlMjAyZTk3NjhkOGQ4MjVmOTY0NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXR0aGlhcyBTY2hvZXBmZXIgPG1hdHRoaWFzLnNjaG9lcGZlckBpdGhpbnguaW8+CiBEYXRlOiBGcmksIDMxIE1heSAyMDE5IDE1OjM0OjM0ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJwby0zNjg1MjogcHJvcGVyIGRldGVjdGlvbiBvZiBtaXBzIGFyY2hpdGVjdHVyZSBmb3Igc29mdApAQCAtMTIsMTUgKzEyLDE3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8xMzE5Nl0KIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIFNjaG9lcGZlciA8bWF0dGhpYXMuc2Nob2VwZmVyQGl0aGlueC5pbz4KKworJSUgb3JpZ2luYWwgcGF0Y2g6IDAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaAogLS0tCi0gY29uZmlndXJlLmFjIHwgMTY5ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCisgY29uZmlndXJlLmFjIHwgMTc1ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxNTQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGE3ZGU5MDFlMDguLmE3M2UyZGU1MWIgMTAwNjQ0CitpbmRleCBlZGU3MTBlLi5iYzgxYjBiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC03MjcsMTU4ICs3MjcsMjMgQEAgZmkKK0BAIC03MTAsMTYwICs3MTAsMjcgQEAgZmkKICBNVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCiAgQUNfU1VCU1QoTVVMVElBUkNIKQogIApAQCAtMTYzLDYgKzE2NSw4IEBACiAtICAgICAgICBpMzg2LWdudQogLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogLSAgICAgICAgZGFyd2luCistI2VsaWYgZGVmaW5lZChfX1ZYV09SS1NfXykKKy0gICAgICAgIHZ4d29ya3MKIC0jZWxzZQogLSMgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CiAtI2VuZGlmCkBAIC0xOTAsMTIgKzE5NCwxNiBAQAogKyAgICAgCVBMQVRGT1JNX1RSSVBMRVQ9dnh3b3JrcwogKwk7OwogKyAgICAgKikKLSsJUExBVEZPUk1fVFJJUExFVD0ke3RhcmdldF9jcHV9LSR7dGFyZ2V0X29zfQorKyAgICAgICAgaWYgdGVzdCAiJHt0YXJnZXRfY3B1fSIgIT0gImk2ODYiOyB0aGVuCisrCQlQTEFURk9STV9UUklQTEVUPSR7dGFyZ2V0X2NwdX0tJHt0YXJnZXRfb3N9CisrCWVsc2UKKysJCVBMQVRGT1JNX1RSSVBMRVQ9aTM4Ni0ke3RhcmdldF9vc30KKysJZmkKICsJOzsKICtlc2FjCQogIAogIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCiAgICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4JE1VTFRJQVJDSDsgdGhlbgogLS0gCi0yLjIxLjAKKzIuMjQuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzY2UzYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGFjY2UzZDQ0MWU3ZWFkYWRkMmQzY2UzODY1NDE1NWRjNDNmMWY2MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDA5OjM2OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZml4IExJQlBMCisKK1VzZSBMSUJESVIgcmF0aGVyIHRoYW4gcHJlZml4L2xpYiwgc28gdGhhdCBpdCB3b3VsZCB3b3JrIHdoZW4gbGliNjQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jPgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGNlMDQyNTguLjkxNWY0NzUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ1MzIsOSArNDUzMiw5IEBAIGZpCisgZG5sIGRlZmluZSBMSUJQTCBhZnRlciBBQklGTEFHUyBhbmQgTERWRVJTSU9OIGlzIGRlZmluZWQuCisgQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKKyBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCA9IHg7IHRoZW4KKy0gIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorKyAgTElCUEw9JyQoTElCRElSKSciL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKKyBlbHNlCistICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorKyAgTElCUEw9JyQoTElCRElSKSciL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorIGZpCisgQUNfU1VCU1QoTElCUEwpCisKKy0tCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2gKaW5kZXggMTcwOTAxMS4uZTdhZjNjNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZWZmOTAzYzYwMGY0YzQwZjU3NTNlOTVhYjE1NTcxMjZmYzZlMGM5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2FkYTljNzQ5ZjZiZWI1MWMxM2EzZGViYzg1MDc1NWU5MTE1NDhhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBKYW4gMjAxOSAxNjo0NjozMCArMDEwMAogU3ViamVjdDogW1BBVENIXSBkaXN0dXRpbHMvc3lzY29uZmlnOiBhcHBlbmQKQEAgLTE1LDEwICsxNSwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCAwYTAzNGVlLi4zZGZkMGEzIDEwMDY0NAoraW5kZXggYjUxNjI5ZS4uMmRmMzQ4YyAxMDA2NDQKIC0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTQzOSw2ICs0MzksOCBAQCBkZWYgX2luaXRfcG9zaXgoKToKK0BAIC00MzgsNiArNDM4LDggQEAgZGVmIF9pbml0X3Bvc2l4KCk6CiAgICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCiAgICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAogICAgICApKQpAQCAtMjgsNyArMjgsNyBAQAogICAgICBidWlsZF90aW1lX3ZhcnMgPSBfdGVtcC5idWlsZF90aW1lX3ZhcnMKICAgICAgZ2xvYmFsIF9jb25maWdfdmFycwogZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA4N2ZhNWU2Li43NTZhNDFjIDEwMDY0NAoraW5kZXggYjJkNzkwYi4uNDA1MjczYyAxMDA2NDQKIC0tLSBhL0xpYi9zeXNjb25maWcucHkKICsrKyBiL0xpYi9zeXNjb25maWcucHkKIEBAIC00MTksNiArNDE5LDggQEAgZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1tYWluLmMtaWYtT0VQWVRIT04zSE9NRS1pcy1zZXQtdXNlLWluc3RlYWQtb2YtUFlUSE9OLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1tYWluLmMtaWYtT0VQWVRIT04zSE9NRS1pcy1zZXQtdXNlLWluc3RlYWQtb2YtUFlUSE9OLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTQ2Yzc0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNWNlM2FjNTk1MzE4MjhmZjY4MjY0NmZiYmE1OWIyMTI2YjI4YThhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KLURhdGU6IFRodSwgMjUgQXByIDIwMTkgMTU6MzQ6MjYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFpbi5jOiBpZiBPRVBZVEhPTjNIT01FIGlzIHNldCB1c2UgaW5zdGVhZCBvZiBQWVRIT05IT01FCi0KLVRoZXJlIGlzIG9uZSB2YXJpYWJsZSBQWVRIT05IT01FIHRvIGRldGVybWluZSB3aGVyZSBsaWJyYXJpZXMgYXJlIGNvbWluZwotZnJvbSBmb3IgYm90aCBweXRob24yIGFuZCBweXRob24zLiBUaGlzIGJlY29tZXMgYW4gaXNzdWUgaWYgb25seSBvbmUgaGFzCi1saWJyYXJpZXMgaW4gdGhlIHNwZWNpZmllZCBQWVRIT05IT01FIHBhdGgsIGJ1dCB0aGV5IGFyZSB1c2luZyB0aGUgc2FtZQotUFlUSE9OSE9NRS4gQ3JlYXRpbmcgYW5vdGhlciB2YXJpYWJsZSBPRVBZVEhPTjNIT01FIHRvIGFsbG93IGZvciBhIHdheQotdG8gc2V0IGEgZGlmZmVyZW50IHBhdGggZm9yIHB5dGhvbjMKLQotU2lnbmVkLW9mZi1ieTogSmFld29uIExlZSA8amFld29uLmxlZUB4aWxpbnguY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25dCi0KLS0tLQotIE1vZHVsZXMvbWFpbi5jIHwgMTcgKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKLWluZGV4IGFjYzU5YzYuLjQwNzA4NWEgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL21haW4uYwotKysrIGIvTW9kdWxlcy9tYWluLmMKLUBAIC0xODM0LDEwICsxODM0LDE5IEBAIGNvbmZpZ19pbml0X2hvbWUoX1B5Q29yZUNvbmZpZyAqY29uZmlnKQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIF9QeV9JTklUX09LKCk7Ci0gICAgIH0KLS0KLS0gICAgaW50IHJlcyA9IGNvbmZpZ19nZXRfZW52X3Zhcl9kdXAoJmhvbWUsIEwiUFlUSE9OSE9NRSIsICJQWVRIT05IT01FIik7Ci0tICAgIGlmIChyZXMgPCAwKSB7Ci0tICAgICAgICByZXR1cm4gREVDT0RFX0xPQ0FMRV9FUlIoIlBZVEhPTkhPTUUiLCByZXMpOwotKyAgICBpbnQgcmVzOwotKyAgICBjb25zdCBjaGFyICpvZXB5dGhvbjNob21lID0gY29uZmlnX2dldF9lbnZfdmFyKCJPRVBZVEhPTjNIT01FIik7Ci0rICAgIGlmIChvZXB5dGhvbjNob21lKSB7Ci0rICAgICAgICByZXMgPSBjb25maWdfZ2V0X2Vudl92YXJfZHVwKCZob21lLCBMIk9FUFlUSE9OM0hPTUUiLCAiT0VQWVRIT04zSE9NRSIpOwotKyAgICAgICAgaWYgKHJlcyA8IDApIHsKLSsgICAgICAgICAgICByZXR1cm4gREVDT0RFX0xPQ0FMRV9FUlIoIk9FUFlUSE9OM0hPTUUiLCByZXMpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGVsc2UgewotKyAgICAgICAgcmVzID0gY29uZmlnX2dldF9lbnZfdmFyX2R1cCgmaG9tZSwgTCJQWVRIT05IT01FIiwgIlBZVEhPTkhPTUUiKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJQWVRIT05IT01FIiwgcmVzKTsKLSsgICAgICAgIH0KLSAgICAgfQotICAgICBjb25maWctPmhvbWUgPSBob21lOwotICAgICByZXR1cm4gX1B5X0lOSVRfT0soKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtcHl0aG9uMy1Eby1ub3QtaGFyZGNvZGUtbGliLWZvci1kaXN0dXRpbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtRG8tbm90LWhhcmRjb2RlLWxpYi1mb3ItZGlzdHV0aWxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMDMxYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtRG8tbm90LWhhcmRjb2RlLWxpYi1mb3ItZGlzdHV0aWxzLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gYmI3MTFiNTNmMTBkMzJhOTBhMjdjY2Y0YjBkYzUxZTRhNzAxZDg2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDcgRmViIDIwMjAgMDk6NDI6MDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcHl0aG9uMzogRG8gbm90IGhhcmRjb2RlICJsaWIiIGZvciBkaXN0dXRpbHMKKworR2V0IHRoZSBzeXMubGliIGZyb20gcHl0aG9uMyBpdHNlbGYgYW5kIGRvIG5vdCB1c2UKK2hhcmRjb2RlZCB2YWx1ZSBvZiAnbGliJyBmb3IgZGlzdHV0aWxzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKK2luZGV4IGM2MjVjOTUuLjhlMzJmNTQgMTAwNjQ0CistLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKK0BAIC0xOSw2ICsxOSw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCisgZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKKyBIQVNfVVNFUl9TSVRFID0gVHJ1ZQorCisrbGlibmFtZSA9IHN5cy5saWIKKysKKyBXSU5ET1dTX1NDSEVNRSA9IHsKKyAgICAgJ3B1cmVsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAorICAgICAncGxhdGxpYic6ICckYmFzZS9MaWIvc2l0ZS1wYWNrYWdlcycsCitAQCAtMjksOCArMzEsOCBAQCBXSU5ET1dTX1NDSEVNRSA9IHsKKworIElOU1RBTExfU0NIRU1FUyA9IHsKKyAgICAgJ3VuaXhfcHJlZml4JzogeworLSAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorLSAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwdXJlbGliJzogJyRiYXNlLycgKyBsaWJuYW1lICsgJy9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKysgICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS8nICsgbGlibmFtZSArICcvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisgICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0JGFiaWZsYWdzLyRkaXN0X25hbWUnLAorICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKKyAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKKy0tCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKaW5kZXggYTBlYTg5Ny4uZmIxMGNhOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtcHl0aG9uMy11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjY0NTMxN2ZlZjA5YWZlMzFiMDFiYjJjMWQ0ZmU1YjlhZmRiYjExYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTk0NzgzZGE1YzIxY2FiODFiNjU4OWVkMmQ0Mjc1ZTY2NWE5NDZmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDIyIE9jdCAyMDE4IDE1OjE5OjUxICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IHVzZSBjY19iYXNlbmFtZSB0byByZXBsYWNlIENDIGZvciBjaGVja2luZyBjb21waWxlcgpAQCAtMjEsMTIgKzIxLDEzIEBACiBwYXRjaCBvcmlnaW5hbGx5IGZyb20gTGkgWmhvdSwgSSBqdXN0IHJld29yayBpdCB0byBuZXcgdmVyc2lvbgogCiBTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCAxOSArKysrKysrKysrLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGE3ZGU5MDEuLjRhMzY4MWYgMTAwNjQ0CitpbmRleCBhMTg5ZDQyLi4wZjg1NDg2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC01NCw2ICs1NCw3IEBAIEFDX0NPTkZJR19IRUFERVIocHljb25maWcuaCkKQEAgLTM3LDcgKzM4LDcgQEAKICAKICAjIHB5YnVpbGRkaXIudHh0IHdpbGwgYmUgY3JlYXRlZCBieSAtLWdlbmVyYXRlLXBvc2l4LXZhcnMgaW4gdGhlIE1ha2VmaWxlCiAgcm0gLWYgcHlidWlsZGRpci50eHQKLUBAIC02OTUsNyArNjk2LDcgQEAgQUNfTVNHX1JFU1VMVCgkd2l0aF9jeHhfbWFpbikKK0BAIC02NzEsNyArNjcyLDcgQEAgQUNfTVNHX1JFU1VMVCgkd2l0aF9jeHhfbWFpbikKICBwcmVzZXRfY3h4PSIkQ1hYIgogIGlmIHRlc3QgLXogIiRDWFgiCiAgdGhlbgpAQCAtNDYsNyArNDcsNyBAQAogICAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1RPT0woQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKICAgICAgICAgIGNsYW5nfCovY2xhbmcpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbY2xhbmcrK10sIFtjbGFuZysrXSwgW25vdGZvdW5kXSkgOzsKLUBAIC05NzksNyArOTgwLDcgQEAgcm1kaXIgQ2FzZVNlbnNpdGl2ZVRlc3REaXIKK0BAIC05NTcsNyArOTU4LDcgQEAgcm1kaXIgQ2FzZVNlbnNpdGl2ZVRlc3REaXIKICAKICBjYXNlICRhY19zeXNfc3lzdGVtIGluCiAgaHAqfEhQKikKQEAgLTU1LDcgKzU2LDcgQEAKICAgICAgY2N8Ki9jYykgQ0M9IiRDQyAtQWUiOzsKICAgICAgZXNhYzs7CiAgZXNhYwotQEAgLTEzMzYsNyArMTMzNyw3IEBAIGVsc2UKK0BAIC0xMzM1LDcgKzEzMzYsNyBAQCBlbHNlCiAgZmldLAogIFtBQ19NU0dfUkVTVUxUKG5vKV0pCiAgaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCkBAIC02NCw3ICs2NSw3IEBACiAgICAgICpjbGFuZyopCiAgICAgICAgQUNfU1VCU1QoTExWTV9BUikKICAgICAgICBBQ19QQVRIX1RPT0woTExWTV9BUiwgbGx2bS1hciwgJycsICR7bGx2bV9wYXRofSkKLUBAIC0xNDI2LDcgKzE0MjcsNyBAQCB0aGVuCitAQCAtMTQyNSw3ICsxNDI2LDcgQEAgdGhlbgogICAgZmkKICBmaQogIExMVk1fUFJPRl9FUlI9bm8KQEAgLTczLDE2ICs3NCwxNiBAQAogICAgKmNsYW5nKikKICAgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93CiAgICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCi1AQCAtMTUwMCw3ICsxNTAxLDcgQEAgdGhlbgotICAgICAgICAgICAgV1JBUD0iLWZ3cmFwdiIKLSAgICAgICAgIGZpCitAQCAtMTQ4Niw3ICsxNDg3LDcgQEAgZXNhYworICMgY29tcGlsZXIgYW5kIHBsYXRmb3JtLiAgQkFTRUNGTEFHUyB0d2Vha3MgbmVlZCB0byBiZSBtYWRlIGV2ZW4gaWYgdGhlCisgIyB1c2VyIHNldCBPUFQuCiAgCi0tICAgICAgICBjYXNlICRDQyBpbgotKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICAgICAqY2xhbmcqKQotICAgICAgICAgICAgICAgICBjY19pc19jbGFuZz0xCi0gICAgICAgICAgICAgICAgIDs7Ci1AQCAtMTYyMyw3ICsxNjI0LDcgQEAgeWVzKQorLWNhc2UgJENDIGluCisrY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgKmNsYW5nKikKKyAgICAgICAgIGNjX2lzX2NsYW5nPTEKKyAgICAgICAgIDs7CitAQCAtMTYyMiw3ICsxNjIzLDcgQEAgeWVzKQogIAogICAgICAjIElDQyBkb2Vzbid0IHJlY29nbml6ZSB0aGUgb3B0aW9uLCBidXQgb25seSBlbWl0cyBhIHdhcm5pbmcKICAgICAgIyMgWFhYIGRvZXMgaXQgZW1pdCBhbiB1bnVzZWQgcmVzdWx0IHdhcm5pbmcgYW5kIGNhbiBpdCBiZSBkaXNhYmxlZD8KQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgKmljYyopCiAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCiAgICAgIDs7Ci1AQCAtMTk2NSw3ICsxOTY2LDcgQEAgeWVzKQorQEAgLTE5NDMsNyArMTk0NCw3IEBAIHllcykKICBlc2FjCiAgCiAgIyBJQ0MgbmVlZHMgLWZwLW1vZGVsIHN0cmljdCBvciBmbG9hdHMgYmVoYXZlIGJhZGx5CkBAIC0xMDAsNyArMTAxLDcgQEAKICAqaWNjKikKICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLWZwLW1vZGVsIHN0cmljdCIKICAgICAgOzsKLUBAIC0yNzI3LDcgKzI3MjgsNyBAQCB0aGVuCitAQCAtMjcxMSw3ICsyNzEyLDcgQEAgdGhlbgogIAkJdGhlbgogIAkJCUxJTktGT1JTSEFSRUQ9Ii1XbCwtLWV4cG9ydC1keW5hbWljIgogIAkJZmk7OwpAQCAtMTA5LDcgKzExMCw3IEBACiAgCQkgICpnY2MqKQogIAkJICAgIGlmICRDQyAtWGxpbmtlciAtLWhlbHAgMj4mMSB8IGdyZXAgZXhwb3J0LWR5bmFtaWMgPi9kZXYvbnVsbAogIAkJICAgIHRoZW4KLUBAIC01NDI5LDcgKzU0MzAsNyBAQCBpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94ODciID0geWVzOyB0aGVuCitAQCAtNTM2Miw3ICs1MzYzLDcgQEAgaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgogICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ2NDkxCiAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDEwLTExL21zZzAwMzY2Lmh0bWwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzhlZDYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gNzAxOWJhMTg0YjgyOGVkNzI1Mzc1MGNmNDA5ZmM1NzYwZWY5MGE1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEphbiAyMDIwIDE3OjQ0OjA1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBwYXNzIG1pc3NpbmcgbGlicmFyaWVzIHRvIEV4dGVuc2lvbiBmb3IKKyBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCisKK0luIHRoZSBmb2xsb3dpbmcgY29tbWl0OgorLi4uCitjb21taXQgZTcxMWNhZmFiMTNlZmM5YzFmZTZjNWNkNzU4MjY0MDE0NDVlYjU4NQorQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KK0RhdGU6ICAgV2VkIEp1biAxMSAxNjo0NDowNCAyMDA4ICswMDAwCisKKyAgICBNZXJnZWQgcmV2aXNpb25zIDY0MTA0LDY0MTE3IHZpYSBzdm5tZXJnZSBmcm9tCisgICAgc3ZuK3NzaDovL3B5dGhvbmRldkBzdm4ucHl0aG9uLm9yZy9weXRob24vdHJ1bmsKKy4uLgorKHNlZSBkaWZmIGluIHNldHVwLnB5KQorSXQgYXNzaWduZWQgbGlicmFyaWVzIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGFjY29yZGluZwordGhlIGhvc3RfcGxhdGZvcm0sIGJ1dCBub3QgcGFzcyBpdCB0byBFeHRlbnNpb24uCisKK0luIGdsaWJjLCB0aGUgZm9sbG93aW5nIGNvbW1pdCBjYXVzZWQgdHdvIGRlZmluaXRpb24gb2YKK3NlbV9nZXR2YWx1ZSBhcmUgZGlmZmVyZW50LgoraHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9MDQyZTE1MjFjNzk0YTk0NWVkYzQzYjViZmE3ZTY5YWQ3MDQyMDUyNAorKHNlZSBkaWZmIGluIG5wdGwvc2VtX2dldHZhbHVlLmMgZm9yIGRldGFpbCkKK2BfX25ld19zZW1fZ2V0dmFsdWUnIGlzIHRoZSBsYXRlc3Qgc2VtX2dldHZhbHVlQEBHTElCQ18yLjEKK2FuZCBgX19vbGRfc2VtX2dldHZhbHVlJyBpcyB0byBjb21wYXQgdGhlIG9sZCB2ZXJzaW9uCitzZW1fZ2V0dmFsdWVAR0xJQkNfMi4wLgorCitUbyBidWlsZCBweXRob24gZm9yIGVtYmVkZGVkIExpbnV4IHN5c3RlbXM6CitodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMuMS95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbAorSWYgbm90IGV4cGxpY2l0bHkgbGluayB0byBsaWJyYXJ5IHB0aHJlYWQgKC1scHRocmVhZCksIGl0IHdpbGwKK2xvYWQgZ2xpYmMncyBzZW1fZ2V0dmFsdWUgcmFuZG9tbHkgYXQgcnVudGltZS4KKworU3VjaCBhcyBidWlsZCBweXRob24gb24gbGludXggeDg2XzY0IGhvc3QgYW5kIHJ1biB0aGUgcHl0aG9uCitvbiBsaW51eCB4ODZfMzIgdGFyZ2V0LiBJZiBub3QgbGluayBsaWJyYXJ5IHB0aHJlYWQsIGl0IGNhdXNlZAorbXVsdGlwcm9jZXNzaW5nIGJvdW5kZWQgc2VtYXBob3JlIGNvdWxkIG5vdCB3b3JrIGNvcnJlY3RseS4KKy4uLgorPj4+IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKz4+PiBwb29sX3NlbWEgPSBtdWx0aXByb2Nlc3NpbmcuQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQorPj4+IHBvb2xfc2VtYS5hY3F1aXJlKCkKK1RydWUKKz4+PiBwb29sX3NlbWEucmVsZWFzZSgpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CitWYWx1ZUVycm9yOiBzZW1hcGhvcmUgb3IgbG9jayByZWxlYXNlZCB0b28gbWFueSB0aW1lcworLi4uCisKK0FuZCB0aGUgc2VtYXBob3JlIGlzc3VlIGFsc28gY2F1c2VkIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpLnB1dCgpIGh1bmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuc2luZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZWMzZjJhNC4uYjBmMTU0MSAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTE2NzEsNyArMTY3MSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQorIAorLSAgICAgICAgc2VsZi5hZGQoRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCisrICAgICAgICBzZWxmLmFkZChFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywgbGlicmFyaWVzPVsncHRocmVhZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAKKyAgICAgZGVmIGRldGVjdF91dWlkKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLURvbi10LWRvLXJ1bnRpbWUtdGVzdC10by1nZXQtZmxvYXQtYnl0ZS1vcmRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcyMWU3Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLURvbi10LWRvLXJ1bnRpbWUtdGVzdC10by1nZXQtZmxvYXQtYnl0ZS1vcmRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi1Gcm9tIGZhOTZhN2ZkMTllMTdiOWM2YjRkZDAxYzNjMzc3NGZiMzgyZGRkYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA1IFNlcCAyMDE4IDExOjQ1OjUyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGRvIHJ1bnRpbWUgdGVzdCB0byBnZXQgZmxvYXQgYnl0ZSBvcmRlcgotCi1QeXRob24gdXNlcyBBQ19SVU5fSUZFTFNFIHRvIGRldGVybWluZSB0aGUgYnl0ZSBvcmRlciBmb3IgZmxvYXRzIGFuZCBkb3VibGVzLAotYW5kIGZhbGxzIGJhY2sgb250byAiSSBkb24ndCBrbm93IiBpZiBpdCBjYW4ndCBydW4gY29kZS4gIFRoaXMgcmVzdWx0cyBpbgotY3JpcHBsZWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbiBQeXRob24sIGFuZCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBmYWlsLgotCi1JbnN0ZWFkIG9mIHJ1bm5pbmcgY29kZSwgdGFrZSBhIG1hY3JvIGZyb20gYXV0b2NvbmYtYXJjaGl2ZSB3aGljaCBjb21waWxlcyBDCi13aXRoIGEgc3BlY2lhbCBkb3VibGUgaW4gd2hpY2ggaGFzIGFuIEFTQ0lJIHJlcHJlc2VudGF0aW9uLCBhbmQgdGhlbiBncmVwcyB0aGUKLWJpbmFyeSB0byBpZGVudGlmeSB0aGUgZm9ybWF0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNDU4NV0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICB8IDcyICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG00L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00IHwgODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0YTM2ODFmLi40YWIxOWE2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00MzI4LDc3ICs0MzI4LDE5IEBAIGZpCi0gIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgotICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGxpdHRsZS1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHgwNVx4MDRceDAzXHgwMlx4MDFceGZmXHgzZlx4NDMiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLS10aGVuCi0tICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLS0gIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0tZmkKLS0KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGJpZy1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHg0M1x4M2ZceGZmXHgwMVx4MDJceDAzXHgwNFx4MDUiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgotK2lmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAieWVzIgotIHRoZW4KLSAgIEFDX0RFRklORShET1VCTEVfSVNfQklHX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSAgICB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgotLSMgV2hpbGUgUHl0aG9uIGRvZXNuJ3QgY3VycmVudGx5IGhhdmUgZnVsbCBzdXBwb3J0IGZvciB0aGVzZSBwbGF0Zm9ybXMKLS0jIChzZWUgZS5nLiwgaXNzdWUgMTc2MjU2MSksIHdlIGNhbiBhdCBsZWFzdCBtYWtlIHN1cmUgdGhhdCBmbG9hdCA8LT4gc3RyaW5nCi0tIyBjb252ZXJzaW9ucyB3b3JrLgotLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgQVJNIG1peGVkLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKLS1BQ19DQUNIRV9WQUwoYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDFceGZmXHgzZlx4NDNceDA1XHgwNFx4MDNceDAyIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPW5vXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlIiA9IHllcwotK2VsaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9ICJubyIKLSB0aGVuCi0tICBBQ19ERUZJTkUoRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NCwgMSwKLSsgIEFDX0RFRklORShET1VCTEVfSVNfTElUVExFX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLS0gICBpbiBBUk0gbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKV0pCi0rICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0rZWxzZQotKyAgQUNfTVNHX0VSUk9SKFtDYW5ub3QgaWRlbnRpZnkgZmxvYXRpbmcgcG9pbnQgYnl0ZSBvcmRlcl0pCi0gZmkKLSAKLSAjIFRoZSBzaG9ydCBmbG9hdCByZXByIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuMSByZXF1aXJlcyB0aGUKLWRpZmYgLS1naXQgYS9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjE2YjkwZAotLS0tIC9kZXYvbnVsbAotKysrIGIvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLUBAIC0wLDAgKzEsODMgQEAKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjICBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4uaHRtbAotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMKLSsjIFNZTk9QU0lTCi0rIwotKyMgICBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTihbQUNUSU9OLUlGLVRSVUVdLCBbQUNUSU9OLUlGLUZBTFNFXSwgW0FDVElPTi1JRi1VTktOT1dOXSkKLSsjCi0rIyBERVNDUklQVElPTgotKyMKLSsjICAgQ2hlY2tzIHRoZSBvcmRlcmluZyBvZiB3b3JkcyB3aXRoaW4gYSBtdWx0aS13b3JkIGZsb2F0LiBUaGlzIGNoZWNrIGlzCi0rIyAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBjZXJ0YWluIEFSTSBzeXN0ZW1zKSwgdGhlIGZsb2F0Ci0rIyAgIHdvcmQgb3JkZXJpbmcgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBieXRlIG9yZGVyaW5nLiBJbiBhIG11bHRpLXdvcmQKLSsjICAgZmxvYXQgY29udGV4dCwgImJpZy1lbmRpYW4iIGltcGxpZXMgdGhhdCB0aGUgd29yZCBjb250YWluaW5nIHRoZSBzaWduCi0rIyAgIGJpdCBpcyBmb3VuZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHdpdGggdGhlIGxvd2VzdCBhZGRyZXNzLiBUaGlzCi0rIyAgIGltcGxlbWVudGF0aW9uIHdhcyBpbnNwaXJlZCBieSB0aGUgQUNfQ19CSUdFTkRJQU4gbWFjcm8gaW4gYXV0b2NvbmYuCi0rIwotKyMgICBUaGUgZW5kaWFubmVzcyBpcyBkZXRlY3RlZCBieSBmaXJzdCBjb21waWxpbmcgQyBjb2RlIHRoYXQgY29udGFpbnMgYQotKyMgICBzcGVjaWFsIGRvdWJsZSBmbG9hdCB2YWx1ZSwgdGhlbiBncmVwcGluZyB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlIGZvcgotKyMgICBjZXJ0YWluIHN0cmluZ3Mgb2YgQVNDSUkgdmFsdWVzLiBUaGUgZG91YmxlIGlzIHNwZWNpYWxseSBjcmFmdGVkIHRvIGhhdmUKLSsjICAgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gdGhhdCBjb3JyZXNwb25kcyB3aXRoIGEgc2ltcGxlIHN0cmluZy4gSW4gdGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiwgdGhlIHN0cmluZyAibm9vbnNlZXMiIHdhcyBzZWxlY3RlZCBiZWNhdXNlIHRoZQotKyMgICBpbmRpdmlkdWFsIHdvcmQgdmFsdWVzICgibm9vbiIgYW5kICJzZWVzIikgYXJlIHBhbGluZHJvbWVzLCB0aHVzIG1ha2luZwotKyMgICB0aGlzIHRlc3QgYnl0ZS1vcmRlciBhZ25vc3RpYy4gSWYgZ3JlcCBmaW5kcyB0aGUgc3RyaW5nICJub29uc2VlcyIgaW4KLSsjICAgdGhlIG9iamVjdCBmaWxlLCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN0b3JlcyBmbG9hdCB3b3JkcyBpbiBiaWctZW5kaWFuCi0rIyAgIG9yZGVyLiBJZiBncmVwIGZpbmRzICJzZWVzbm9vbiIsIGZsb2F0IHdvcmRzIGFyZSBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLgotKyMgICBJZiBuZWl0aGVyIHZhbHVlIGlzIGZvdW5kLCB0aGUgdXNlciBpcyBpbnN0cnVjdGVkIHRvIHNwZWNpZnkgdGhlCi0rIyAgIG9yZGVyaW5nLgotKyMKLSsjIExJQ0VOU0UKLSsjCi0rIyAgIENvcHlyaWdodCAoYykgMjAwOCBEYW5pZWwgQW1lbGFuZyA8ZGFuQGFtZWxhbmcubmV0PgotKyMKLSsjICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0rIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotKyMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0rIyAgIHdhcnJhbnR5LgotKwotKyNzZXJpYWwgMTEKLSsKLStBQ19ERUZVTihbQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU5dLAotKyAgW0FDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgZmxvYXQgd29yZCBvcmRlcmluZyBpcyBiaWdlbmRpYW4sCi0rICAgICAgICAgICAgICAgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4sIFsKLSsKLStheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCi0rQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0rCi0rZG91YmxlIGQgPSA5MDkwNDIzNDk2NzAzNjgxMDMzNzQ3MDQ3ODkwNTUwNTAxMTQ3NjIxMTY5MjczNTYxNTYzMjAxNDc5NzEyMDg0NDA1MzQ4ODg2NTgxNjY5NTI3MzcyMzQ2OTA5Nzg1ODA1NjI1NzUxNzAyMDE5MTI0NzQ4NzQyOTUxNjkzMjEzMDUwMzU2MDY1MDAwMjMyNzU2NDUxNzU3MDc3ODQ4MDIzNjcyNDUyNTE0MDUyMDEyMTM3MTczOTIwMTQ5NjU0MDEzMjY0MDEwOTk3Nzc3OTQyMDU2NTc3NjU2ODk0MjU5Mi4wOwotKwotK11dKV0sIFsKLSsKLStpZiBncmVwIG5vb25zZWVzIGNvbmZ0ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KLSsgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPXllcwotK2ZpCi0raWYgZ3JlcCBzZWVzbm9vbiBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gdW5rbm93bjsgdGhlbgotKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubwotKyAgZWxzZQotKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCi0rICBmaQotK2ZpCi0rCi0rXSldKQotKwotK2Nhc2UgJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIGluCi0rICB5ZXMpCi0rICAgIG00X2RlZmF1bHQoWyQxXSwKLSsgICAgICBbQUNfREVGSU5FKFtGTE9BVF9XT1JEU19CSUdFTkRJQU5dLCAxLAotKyAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIHN0b3JlcyB3b3JkcyB3aXRoaW4gZmxvYXRzCi0rICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkIGZpcnN0XSldKSA7OwotKyAgbm8pCi0rICAgICQyIDs7Ci0rICAqKQotKyAgICBtNF9kZWZhdWx0KFskM10sCi0rICAgICAgW0FDX01TR19FUlJPUihbCi0rCi0rVW5rbm93biBmbG9hdCB3b3JkIG9yZGVyaW5nLiBZb3UgbmVlZCB0byBtYW51YWxseSBwcmVzZXQKLStheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSBhY2NvcmRpbmcgdG8geW91ciBzeXN0ZW0uCi0rCi0rICAgIF0pXSkgOzsKLStlc2FjCi0rCi0rXSkjIEFYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAzLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAzLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZDViYzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotRnJvbSBiODgxYTc5YWRjZDRhZTVhYzhmZTRmNDlkMGZjNzdjNDdmNzc3OTE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDExOjE2OjE0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBwYXNzIG1pc3NpbmcgbGlicmFyaWVzIHRvIEV4dGVuc2lvbiBmb3IKLSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCi0KLUluIHRoZSBmb2xsb3dpbmcgY29tbWl0OgotLi4uCi1jb21taXQgZTcxMWNhZmFiMTNlZmM5YzFmZTZjNWNkNzU4MjY0MDE0NDVlYjU4NQotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KLURhdGU6ICAgV2VkIEp1biAxMSAxNjo0NDowNCAyMDA4ICswMDAwCi0KLSAgICBNZXJnZWQgcmV2aXNpb25zIDY0MTA0LDY0MTE3IHZpYSBzdm5tZXJnZSBmcm9tCi0gICAgc3ZuK3NzaDovL3B5dGhvbmRldkBzdm4ucHl0aG9uLm9yZy9weXRob24vdHJ1bmsKLS4uLgotKHNlZSBkaWZmIGluIHNldHVwLnB5KQotSXQgYXNzaWduZWQgbGlicmFyaWVzIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGFjY29yZGluZwotdGhlIGhvc3RfcGxhdGZvcm0sIGJ1dCBub3QgcGFzcyBpdCB0byBFeHRlbnNpb24uCi0KLUluIGdsaWJjLCB0aGUgZm9sbG93aW5nIGNvbW1pdCBjYXVzZWQgdHdvIGRlZmluaXRpb24gb2YKLXNlbV9nZXR2YWx1ZSBhcmUgZGlmZmVyZW50LgotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9MDQyZTE1MjFjNzk0YTk0NWVkYzQzYjViZmE3ZTY5YWQ3MDQyMDUyNAotKHNlZSBkaWZmIGluIG5wdGwvc2VtX2dldHZhbHVlLmMgZm9yIGRldGFpbCkKLWBfX25ld19zZW1fZ2V0dmFsdWUnIGlzIHRoZSBsYXRlc3Qgc2VtX2dldHZhbHVlQEBHTElCQ18yLjEKLWFuZCBgX19vbGRfc2VtX2dldHZhbHVlJyBpcyB0byBjb21wYXQgdGhlIG9sZCB2ZXJzaW9uCi1zZW1fZ2V0dmFsdWVAR0xJQkNfMi4wLgotCi1UbyBidWlsZCBweXRob24gZm9yIGVtYmVkZGVkIExpbnV4IHN5c3RlbXM6Ci1odHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMuMS95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbAotSWYgbm90IGV4cGxpY2l0bHkgbGluayB0byBsaWJyYXJ5IHB0aHJlYWQgKC1scHRocmVhZCksIGl0IHdpbGwKLWxvYWQgZ2xpYmMncyBzZW1fZ2V0dmFsdWUgcmFuZG9tbHkgYXQgcnVudGltZS4KLQotU3VjaCBhcyBidWlsZCBweXRob24gb24gbGludXggeDg2XzY0IGhvc3QgYW5kIHJ1biB0aGUgcHl0aG9uCi1vbiBsaW51eCB4ODZfMzIgdGFyZ2V0LiBJZiBub3QgbGluayBsaWJyYXJ5IHB0aHJlYWQsIGl0IGNhdXNlZAotbXVsdGlwcm9jZXNzaW5nIGJvdW5kZWQgc2VtYXBob3JlIGNvdWxkIG5vdCB3b3JrIGNvcnJlY3RseS4KLS4uLgotPj4+IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLT4+PiBwb29sX3NlbWEgPSBtdWx0aXByb2Nlc3NpbmcuQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQotPj4+IHBvb2xfc2VtYS5hY3F1aXJlKCkKLVRydWUKLT4+PiBwb29sX3NlbWEucmVsZWFzZSgpCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci1WYWx1ZUVycm9yOiBzZW1hcGhvcmUgb3IgbG9jayByZWxlYXNlZCB0b28gbWFueSB0aW1lcwotLi4uCi0KLUFuZCB0aGUgc2VtYXBob3JlIGlzc3VlIGFsc28gY2F1c2VkIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpLnB1dCgpIGh1bmcuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTk5XQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCBiN2EzNmE2Li42NThlYWQzIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMTU4NCw4ICsxNTg0LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKLSAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKLSAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQotLQotLSAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGludXggYW5kIG90aGVyIHVuaWNlcwotKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcpKToKLSsgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKLSsgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3B0aHJlYWQnXQotKyAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXIgdW5pY2VzCi0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCi0gCi1AQCAtMTYwMyw2ICsxNjA1LDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9bGlzdChtYWNyb3MuaXRlbXMoKSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQotICAgICAgICAgIyBFbmQgbXVsdGlwcm9jZXNzaW5nCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2gKaW5kZXggYzE1Mjk1Yy4uNGJkOThmNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMTctc2V0dXAucHktZG8tbm90LXJlcG9ydC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItZGlzYS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTNiNTljYjk2NThlMWQzZWZhMzUzNTg0MDkzOWEwZmE5MmE3MGE1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTJkZDEyN2I0MTYzYWZmNmNjMzVhZjBkMDI1MTMyMTk2NDIzMmFkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCA3IE9jdCAyMDE5IDEzOjIyOjE0ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBkbyBub3QgcmVwb3J0IG1pc3NpbmcgZGVwZW5kZW5jaWVzIGZvciBkaXNhYmxlZApAQCAtMTAsMjIgKzEwLDIzIEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBzZXR1cC5weSB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDRiNTM2NjguLjAwOTc2NDMgMTAwNjQ0CitpbmRleCA3NjkxMjU4Li5lYzNmMmE0IDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtMzY1LDYgKzM2NSwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CitAQCAtNDA4LDYgKzQwOCwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CiAgICAgICAgICAgICAgICAgIHByaW50KCIlLSpzICAgJS0qcyAgICUtKnMiICUgKGxvbmdlc3QsIGUsIGxvbmdlc3QsIGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdlc3QsIGcpKQogIAogKyAgICAgICAgIyBUaGVyZSBpcyBubyBuZWVkIHRvIHJlcG9ydCBtaXNzaW5nIG1vZHVsZSBkZXBlbmRlbmNpZXMsCiArICAgICAgICAjIGlmIHRoZSBtb2R1bGVzIGhhdmUgYmVlbiBkaXNhYmxlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCi0rICAgICAgICBtaXNzaW5nID0gbGlzdChzZXQobWlzc2luZykgLSBzZXQoc3lzY29uZl9kaXMpKQorKyAgICAgICAgc2VsZi5taXNzaW5nID0gbGlzdChzZXQoc2VsZi5taXNzaW5nKSAtIHNldChzeXNjb25mX2RpcykpCiArCi0gICAgICAgICBpZiBtaXNzaW5nOgorICAgICAgICAgaWYgc2VsZi5taXNzaW5nOgogICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICBwcmludCgiUHl0aG9uIGJ1aWxkIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSEiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNGE5MTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDIwLWNvbmZpZ3VyZS5hYy1zZXR1cC5weS1kby1ub3QtYWRkLWEtY3Vyc2VzLWluY2x1ZGUtcGEucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA4NjNjMDlmNjQwYTVkZmQzM2ZmMjI5MTViMGQ1ZmVlN2JjNWRmNzBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE2IEZlYiAyMDIwIDE3OjUwOjI1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYywgc2V0dXAucHk6IGRvIG5vdCBhZGQgYSBjdXJzZXMgaW5jbHVkZSBwYXRoIGZyb20KKyB0aGUgaG9zdAorCitUaGlzIGxlYWRzIHRvIGhvc3QgY29udGFtaW5hdGlvbiwgYW5kIHBhcnRpY3VsYXJseSBjYW4gY2F1c2UKK2N1cnNlcyBtb2R1bGVzIHRvIGZhaWwgYXQgcnVudGltZSBpZiB0aGUgaG9zdCBjdXJzZXMgaXMgY29uZmlndXJlZAorZGlmZmVyZW50bHkgdG8gbmF0aXZlIGN1cnNlcyAob2JzZXJ2ZWQgb24gY3VycmVudCBPcGVuU3VzZSBUdW1ibGV3ZWVkCithcyBkbmYgZmFpbHVyZXMpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDYgLS0tLS0tCisgc2V0dXAucHkgICAgIHwgMiAtLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOTE1ZjQ3NS4uYzkxMTAxMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDgyOCwxMiArNDgyOCw2IEBAIHRoZW4KKyAgIFtEZWZpbmUgaWYgeW91IGhhdmUgc3RydWN0IHN0YXQuc3RfbXRpbWVuc2VjXSkKKyBmaQorIAorLSMgZmlyc3QgY3Vyc2VzIGhlYWRlciBjaGVjaworLWFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKKy1pZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCistICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgorLWZpCistCisgQUNfQ0hFQ0tfSEVBREVSUyhjdXJzZXMuaCBuY3Vyc2VzLmgpCisgCisgIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCBiMGYxNTQxLi43MjA4Y2QwIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtOTczLDggKzk3Myw2IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWwnCisgICAgICAgICBpZiBjdXJzZXNfbGlicmFyeSA9PSAnbmN1cnNlc3cnOgorICAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ0hBVkVfTkNVUlNFU1cnLCAnMScpKQorLSAgICAgICAgICAgIGlmIG5vdCBDUk9TU19DT01QSUxJTkc6CistICAgICAgICAgICAgICAgIGN1cnNlc19pbmNsdWRlcy5hcHBlbmQoJy91c3IvaW5jbHVkZS9uY3Vyc2VzdycpCisgICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAorICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCisgICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKaW5kZXggZDQ5NjA0Yi4uNjFhYzNlNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYTI3NGJhNzc4ODM4ODI0ZWZjYWNhYmE1N2M0MTViNzI2MmY3NzllYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjUxMzQ3ZmM5NzBhMzk3YTljZDYzZWQzZjg3YzVlNmM1MmUxNTE4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE0IE1heSAyMDEzIDE1OjAwOjI2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IEFkZCB0YXJnZXQgYW5kIG5hdGl2ZSByZWNpcGVzCkBAIC0xOCwxMCArMTgsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLWluZGV4IDNkZmQwYTMuLjZjNmIwOWEgMTAwNjQ0CitpbmRleCAyZGYzNDhjLi40ZjhkYjg0IDEwMDY0NAogLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKICsrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtOTcsNyArOTcsOSBAQCBkZWYgZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wLCBwcmVmaXg9Tm9uZSk6CitAQCAtOTYsNyArOTYsOSBAQCBkZWYgZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wLCBwcmVmaXg9Tm9uZSk6CiAgICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMuYmFzZV9wcmVmaXggb3IKICAgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAgIiIiCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCiAgICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKLUBAIC0xNDAsNyArMTQyLDEzIEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0wLCBwcmVmaXg9Tm9uZSk6CitAQCAtMTM5LDcgKzE0MSwxMyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgogICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCiAgICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgICIiIgpAQCAtNDcsNyArNDcsNyBAQAogICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgogICAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICAgICAgIGVsc2U6Ci1AQCAtMTQ4LDcgKzE1Niw3IEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0wLCBwcmVmaXg9Tm9uZSk6CitAQCAtMTQ3LDcgKzE1NSw3IEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0wLCBwcmVmaXg9Tm9uZSk6CiAgCiAgICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgIGxpYnB5dGhvbiA9IG9zLnBhdGguam9pbihwcmVmaXgsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKaW5kZXggMjRlNjdiNC4uMTg0NTQwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZmVhZDQ4YzhiNTAxYThkN2MzZGIyMWRmMmU1OTlmOTBmMzhmMTFkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmE3MjAyNzAwNTc4ZDQzNWIwN2NmZGZiN2I1N2U4MzE4NTc1MjgwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIERhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTU6NTc6NTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gX3RraW50ZXIgbW9kdWxlIG5lZWRzIHRrIG1vZHVsZSBhbG9uZyB3aXRoIHRjbC4gdGsgaXMgbm90IHlldApAQCAtMTEsMjYgKzExLDIxIEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKIC0tLQotIHNldHVwLnB5IHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgc2V0dXAucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggZmJlYzAwZC4uYjdhMzZhNiAxMDA2NDQKK2luZGV4IGFiMThmZjAuLjc2OTEyNTggMTAwNjQ0CiAtLS0gYS9zZXR1cC5weQogKysrIGIvc2V0dXAucHkKLUBAIC0xNjIzLDEwICsxNjIzLDEyIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoZXh0cykKK0BAIC0xNzA2LDggKzE3MDYsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBzZWxmLmRldGVjdF9kZWNpbWFsKCkKKyAgICAgICAgIHNlbGYuZGV0ZWN0X2N0eXBlcygpCisgICAgICAgICBzZWxmLmRldGVjdF9tdWx0aXByb2Nlc3NpbmcoKQorLSAgICAgICAgaWYgbm90IHNlbGYuZGV0ZWN0X3RraW50ZXIoKToKKy0gICAgICAgICAgICBzZWxmLm1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCisrIyAgICAgICAgaWYgbm90IHNlbGYuZGV0ZWN0X3RraW50ZXIoKToKKysjICAgICAgICAgICAgc2VsZi5taXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQorICAgICAgICAgc2VsZi5kZXRlY3RfdXVpZCgpCiAgCi0gICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0tICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSsgICAgICAgICMgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0gCi0tICAgICAgICBpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106Ci0tICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSsgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0rICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCi0rICAgICAgICAjaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQotIAotICAgICAgICAgIyBCdWlsZCB0aGUgX3V1aWQgbW9kdWxlIGlmIHBvc3NpYmxlCi0gICAgICAgICB1dWlkX2luY3MgPSBmaW5kX2ZpbGUoInV1aWQuaCIsIGluY19kaXJzLCBbIi91c3IvaW5jbHVkZS91dWlkIl0pCisgIyMgICAgICAgICAjIFVuY29tbWVudCB0aGVzZSBsaW5lcyBpZiB5b3Ugd2FudCB0byBwbGF5IHdpdGggeHhtb2R1bGUuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLWNvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2gKaW5kZXggZjIzYjhiNy4uYzhhOGYzZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLWNvbmZpZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tY29uZmlnLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotcHl0aG9uLWNvbmZpZzogUmV2ZXJ0IHRvIHVzaW5nIGRpc3R1dGlscy5zeXNjb25maWcKK0Zyb20gMDdkZjBhZTBkNzBjYmE2ZDE4NDdmZTFjMjRhNzEwNjM5MzBiZWM2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFR5bGVyIEhhbGwgPHR5bGVyd2hhbGxAZ21haWwuY29tPgorRGF0ZTogU3VuLCA0IE1heSAyMDE0IDIwOjA2OjQzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbi1jb25maWc6IFJldmVydCB0byB1c2luZyBkaXN0dXRpbHMuc3lzY29uZmlnCiAKIFRoZSBuZXdlciBzeXNjb25maWcgbW9kdWxlIHNoYXJlcyBzb21lIGNvZGUgd2l0aCBkaXN0dXRpbHMuc3lzY29uZmlnLCBidXQgdGhlIHNhbWUgbW9kaWZpY2F0aW9ucyBhcyBpbgogCkBAIC0xMiwxMSArMTUsMTYgQEAKIAogU2lnbmVkLW9mZi1ieTogVHlsZXIgSGFsbCA8dHlsZXJ3aGFsbEBnbWFpbC5jb20+CiA6Ci1JbmRleDogUHl0aG9uLTMuMy4zL01pc2MvcHl0aG9uLWNvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0zLjMuMy5vcmlnL01pc2MvcHl0aG9uLWNvbmZpZy5pbgotKysrIFB5dGhvbi0zLjMuMy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLUBAIC00LDcgKzQsNyBAQAorCistLS0KKyBNaXNjL3B5dGhvbi1jb25maWcuaW4gfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgoraW5kZXggNzI3YzRhOC4uYzcwMjgyOSAxMDA2NDQKKy0tLSBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorKysrIGIvTWlzYy9weXRob24tY29uZmlnLmluCitAQCAtNiw3ICs2LDcgQEAKICBpbXBvcnQgZ2V0b3B0CiAgaW1wb3J0IG9zCiAgaW1wb3J0IHN5cwpAQCAtMjQsOCArMzIsOCBAQAogK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAKICB2YWxpZF9vcHRzID0gWydwcmVmaXgnLCAnZXhlYy1wcmVmaXgnLCAnaW5jbHVkZXMnLCAnbGlicycsICdjZmxhZ3MnLAotICAgICAgICAgICAgICAgJ2xkZmxhZ3MnLCAnZXh0ZW5zaW9uLXN1ZmZpeCcsICdoZWxwJywgJ2FiaWZsYWdzJywgJ2NvbmZpZ2RpciddCi1AQCAtMzIsMTQgKzMyLDE0IEBAIGlmICctLWhlbHAnIGluIG9wdF9mbGFnczoKKyAgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInLAorQEAgLTM1LDE0ICszNSwxNCBAQCBpZiAnLS1oZWxwJyBpbiBvcHRfZmxhZ3M6CiAgCiAgZm9yIG9wdCBpbiBvcHRfZmxhZ3M6CiAgICAgIGlmIG9wdCA9PSAnLS1wcmVmaXgnOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCmluZGV4IGRiYTkyYjAuLjNiY2M5YjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KQEAgLTEyMiw3ICsxMjIsOCBAQAogICAgICAgICAgICAgImxvZ2dpbmciLAogICAgICAgICAgICAgIm5ldGNsaWVudCIsCiAgICAgICAgICAgICAibnVtYmVycyIsCi0gICAgICAgICAgICAic3RyaW5nb2xkIgorICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidHlwaW5nIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXN5bmNpbyIsCkBAIC0xODIsMjYgKzE4MywxNSBAQAogICAgICJjb21wcmVzc2lvbiI6IHsKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwKLSAgICAgICAgICAgICJzaGVsbCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29tcHJlc3Npb24ucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2J6Mi5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ3ppcC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2J6Mi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fbHptYS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC96bGliLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2x6bWEucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RhcmZpbGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3ppcGZpbGUucHkiCiAgICAgICAgIF0sCiAgICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX2NvbXByZXNzaW9uLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iejIuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2x6bWEuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3RhcmZpbGUuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCiAgICAgICAgIF0KQEAgLTIxMCwxMiArMjAwLDEwIEBACiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwKICAgICAgICAgInJkZXBlbmRzIjogW10sCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uMyIsCiAgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iLAogICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LnJlYWwiLAotICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9IiwKLSAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcqLmgiLAotICAgICAgICAgICAgIiR7cHJlZml4fS9saWIvcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcqLypbIS5hXSIsCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbjMiLAorICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZyouaCIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlckRpY3QucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJMaXN0LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyU3RyaW5nLnB5IiwKQEAgLTIyMyw2ICsyMTEsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19hYmNvbGwucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19ib290bG9jYWxlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29sbGVjdGlvbnNfYWJjLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29tcHJlc3Npb24ucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19tYXJrdXBiYXNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YSoucHkiLApAQCAtMjMxLDYgKzIyMCw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXJncGFyc2UucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzdC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iejIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVjcy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29kZW9wLnB5IiwKQEAgLTI0Nyw2ICsyMzcsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy9sYXRpbl8xLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvdXRmXzgucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VudW0ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ZubWF0Y2gucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Z1bmN0b29scy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2VuZXJpY3BhdGgucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dldG9wdC5weSIsCkBAIC0yNjcsMTMgKzI1OCwxNiBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3RpbWUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX19weWNhY2hlX18veHJlYWRsaW5lcy4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19iejIuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2Nzdi4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9faGVhcHEuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX29wY29kZS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fcG9zaXhzdWJwcm9jZXNzLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvYXJyYXkuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvYmluYXNjaWkuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvZ3JwLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL21hdGguKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3JlYWRsaW5lLiouc28iLApAQCAtMjgxLDE0ICsyNzUsMTggQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC90aW1lLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvemxpYi4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saW5lY2FjaGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xvY2FsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbHptYS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbmV3LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9udHBhdGgucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wY29kZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3BlcmF0b3IucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wdHBhcnNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcy5weSIsCisJICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wYXRobGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wa2d1dGlsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wbGF0Zm9ybS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcG9zaXhwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9yZS5weSIsCkBAIC0yOTYsNiArMjk0LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ybGNvbXBsZXRlci5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcnVucHkucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NlbGVjdG9ycy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2h1dGlsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaWduYWwucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGVjdXN0b21pemUucHkiLApAQCAtMzE1LDEyICszMTQsMTQgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90cmFjZWJhY2sucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3R5cGVzLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS93YXJuaW5ncy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2Vha3JlZi5weSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS93ZWFrcmVmLnB5IiwKKyAgICAgICAgICAgICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi8qWyEuYV0iCiAgICAgICAgIF0sCiAgICAgICAgICJjYWNoZWQiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX19mdXR1cmVfXy4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX2Jvb3Rsb2NhbGUuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb2xsZWN0aW9uc19hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb21wcmVzc2lvbi4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19zaXRlYnVpbHRpbnMuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19zeXNjb25maWdkYXRhLioucHljIiwKQEAgLTMyOSw2ICszMzAsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2FyZ3BhcnNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hc3QuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Jpc2VjdC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYnoyLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2RlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2RlY3MuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvZGVvcC4qLnB5YyIsCkBAIC0zMzksNiArMzQxLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jc3YuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Rpcy4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZW51bS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZnVuY3Rvb2xzLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nZW5lcmljcGF0aC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2V0b3B0LioucHljIiwKQEAgLTM1MCwxMCArMzUzLDE0IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18va2V5d29yZC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbGluZWNhY2hlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sb2NhbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2x6bWEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL250cGF0aC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3Bjb2RlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3B0cGFyc2UuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29zLioucHljIiwKKwkgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BhdGhsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BrZ3V0aWwuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BsYXRmb3JtLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wb3NpeHBhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3JlLioucHljIiwKQEAgLTM2MSw2ICszNjgsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3JsY29tcGxldGVyLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ydW5weS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2VsZWN0b3JzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NpZ25hbC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2l0ZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3JlX2NvbXBpbGUuKi5weWMiLApAQCAtNDA1LDEwICs0MTMsMTAgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYmxha2UyLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jcnlwdC4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9faGFzaGxpYi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fbWQ1Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGExLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTMuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX21kNS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhNTEyLiouc28iCiAgICAgICAgIF0sCiAgICAgICAgICJjYWNoZWQiOiBbCkBAIC01MTksMTQgKzUyNywxMiBAQAogICAgICAgICBdCiAgICAgfSwKICAgICAiZGlzdHV0aWxzLXdpbmRvd3MiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtKi5leGUiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkaXN0cmlidXRpb24gdXRpbGl0aWVzIChXaW5kb3dzIGluc3RhbGxlciBzdHVicykiLAogICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiZGlzdHV0aWxzIgorICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkaXN0cmlidXRpb24gdXRpbGl0aWVzIChXaW5kb3dzIGluc3RhbGxlciBzdHVicykiCisgICAgICAgICJmaWxlcyI6IFtdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJkaXN0dXRpbHMiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIiwKQEAgLTU0MSwxMyArNTQ3LDE5IEBACiAgICAgImRvY3Rlc3QiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJhc3luY2lvIiwKKyAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiZGVidWdnZXIiLAogICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImlvIiwKICAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgIm51bWJlcnMiLAogICAgICAgICAgICAgInBwcmludCIsCiAgICAgICAgICAgICAic2hlbGwiLAogICAgICAgICAgICAgInN0cmluZ29sZCIsCisgICAgICAgICAgICAidHlwaW5nIiwKICAgICAgICAgICAgICJ1bml0dGVzdCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwpAQCAtNjQxLDggKzY1Myw3IEBACiAgICAgICAgICAgICAiY3J5cHQiLAogICAgICAgICAgICAgIm1hdGgiLAogICAgICAgICAgICAgIm5ldGNsaWVudCIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJzaGVsbCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19weWlvLnB5IiwKQEAgLTg3NSw5ICs4ODYsNyBAQAogICAgICAgICAgICAgIm1hdGgiLAogICAgICAgICAgICAgIm1pbWUiLAogICAgICAgICAgICAgIm5ldGNsaWVudCIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NnaS5weSIsCkBAIC05MzQsMTIgKzk0Myw4IEBACiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGtndXRpbC5weSIKLSAgICAgICAgXSwKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIgotICAgICAgICBdCisgICAgICAgICJmaWxlcyI6IFtdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJwbGlzdGxpYiI6IHsKICAgICAgICAgInN1bW1hcnkiOiAiR2VuZXJhdGUgYW5kIHBhcnNlIE1hYyBPUyBYIC5wbGlzdCBmaWxlcyIsCkBAIC05ODgsOCArOTkzLDcgQEAKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKLSAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInBrZ3V0aWwiCisgICAgICAgICAgICAibmV0Y2xpZW50IgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5ZG9jKiIsCkBAIC0xMDE1LDIyICsxMDE5LDE3IEBACiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAic3RyaW5nb2xkIiwKLSAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgICAgICAic3RyaW5nb2xkIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY21kLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mbm1hdGNoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nbG9iLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaGxleC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2h1dGlsLnB5IgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NobGV4LnB5IgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NtZC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZm5tYXRjaC4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2xvYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hsZXguKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NodXRpbC4qLnB5YyIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaGxleC4qLnB5YyIKICAgICAgICAgXQogICAgIH0sCiAgICAgInNtdHBkIjogewpAQCAtMTE1MCwxMiArMTE0OSwxNyBAQAogICAgICJ1bml0dGVzdCI6IHsKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiLAogICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRpZmZsaWIiLAorICAgICAgICAgICAgImlvIiwKICAgICAgICAgICAgICJsb2dnaW5nIiwKKyAgICAgICAgICAgICJuZXRjbGllbnQiLAorICAgICAgICAgICAgIm51bWJlcnMiLAogICAgICAgICAgICAgInBwcmludCIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3VuaXR0ZXN0IiwKQEAgLTExNzIsNyArMTE3Niw2IEBACiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRwYXNzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9ncnAuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvbmlzLiouc28iCiAgICAgICAgIF0sCiAgICAgICAgICJjYWNoZWQiOiBbCkBAIC0xMTg1LDkgKzExODgsNyBAQAogICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJsb2dnaW5nIiwKLSAgICAgICAgICAgICJzaGVsbCIsCi0gICAgICAgICAgICAic3RyaW5nb2xkIiwKLSAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgICAgICAic3RyaW5nb2xkIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dmVudioiLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0CmluZGV4IDNlNDVkMzkuLjQwNWIwN2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QKQEAgLTEsMyArMSwzIEBACiAjIS9iaW4vc2gKIAotcHl0aG9uMyAtbSB0ZXN0IC12IHwgc2VkIC11IC1lICcvXC5cLlwuIG9rLyBzL14vUEFTUzogL2cnIC1lICcvXC5cLlwuIFtFUlJPUnxGQUlMXS8gcy9eL0ZBSUw6IC9nJyAtZSAnL1wuXC5cLiBza2lwcGVkLyBzL14vU0tJUDogL2cnIC1lICdzLyBcLlwuXC4gb2svL2cnIC1lICdzLyBcLlwuXC4gRVJST1IvL2cnIC1lICdzLyBcLlwuXC4gRkFJTC8vZycgLWUgJ3MvIFwuXC5cLiBza2lwcGVkLy9nJworcHl0aG9uMyAtbSB0ZXN0IC12IHwgc2VkIC11IC1lICcvXC5cLlwuIG9rLyBzL14vUEFTUzogL2cnIC1yIC1lICcvXC5cLlwuIChFUlJPUnxGQUlMKS8gcy9eL0ZBSUw6IC9nJyAtZSAnL1wuXC5cLiBza2lwcGVkLyBzL14vU0tJUDogL2cnIC1lICdzLyBcLlwuXC4gb2svL2cnIC1lICdzLyBcLlwuXC4gRVJST1IvL2cnIC1lICdzLyBcLlwuXC4gRkFJTC8vZycgLWUgJ3MvIFwuXC5cLiBza2lwcGVkLy9nJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA5MTRmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0MCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeXRob24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmciCi1MSUNFTlNFID0gIlBTRnYyIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU0NjYyNDI5ODliZDMzYzFiZDJiNmE1MjZhNzQyNDk4IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDMucHkgXAotICAgICAgICAgICBmaWxlOi8vZ2V0X21vZHVsZV9kZXBzMy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24zLW1hbmlmZXN0Lmpzb24gXAotICAgICAgICAgICBmaWxlOi8vY2hlY2tfYnVpbGRfY29tcGxldGVuZXNzLnB5IFwKLSAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICcnLCAnZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLnByZS11c2UtcWVtdS13cmFwcGVyLXdoZW4tZ2F0aGVyaW5nLXByb2ZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uMy11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvbi10LWRvLXJ1bnRpbWUtdGVzdC10by1nZXQtZmxvYXQtYnl0ZS1vcmRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1MaWItc3lzY29uZmlnLnB5LWZpeC1hbm90aGVyLXBsYWNlLXdoZXJlLWxpYi1pcy1oYXJkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtZml4LUlzc3VlMzY0NjQtcGFyYWxsZWwtYnVpbGQtcmFjZS1wcm9ibGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zc3B5dGhvbnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVmb3JtYXRfc3lzY29uZmlnLnB5IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUZMQUdfUkVGLWFsd2F5cy1mb3ItaW50ZXJuZWQtc3RyaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RfbG9jYWxlLnB5LWNvcnJlY3QtdGhlLXRlc3Qtb3V0cHV0LWZvcm1hdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWluLmMtaWYtT0VQWVRIT04zSE9NRS1pcy1zZXQtdXNlLWluc3RlYWQtb2YtUFlUSE9OLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDhlZDgwMzBiMTE4MzEwN2M0OGYyMDkyZTc5YTg3ZTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTg1YTc2ZWE5ZjNkNmM0ODVlYzE3ODBmY2E0ZTUwMDcyNWE0YTdiYmM2M2M3OGViYzQ0MTcwZGU5YjYxOWQ5NCIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1DVkVfUFJPRFVDVCA9ICJweXRob24iCi0KLVBZVEhPTl9NQUpNSU4gPSAiMy43IgotUFlUSE9OX0JJTkFCSSA9ICIke1BZVEhPTl9NQUpNSU59bSIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcWVtdSBwdGVzdCBtdWx0aWxpYl9oZWFkZXIgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1NVUxUSUxJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJywxKS5zcGxpdCgnLycpWy0xXX0iCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRldiA9ICJweXRob24zLWNvbmZpZyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnIgotQUxURVJOQVRJVkVfVEFSR0VUW3B5dGhvbjMtY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9IgotCi0KLURFUEVORFMgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGxpYmZmaSBiemlwMiBvcGVuc3NsIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHogdmlydHVhbC9jcnlwdCB1dGlsLWxpbnV4IGxpYnRpcnBjIGxpYm5zbDIiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIiAtLXdpdGhvdXQtZW5zdXJlcGlwIC0tZW5hYmxlLXNoYXJlZCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0iCi0KLWV4cG9ydCBDUk9TU1BZVEhPTlBBVEg9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyIKLQotRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24zLW5hdGl2ZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X3dvcmtpbmdfdHpzZXQ9eWVzIFwKLSIKLXB5dGhvbigpIHsKLSAgICAjIFBHTyBjdXJyZW50bHkgY2F1c2VzIGJ1aWxkcyB0byBub3QgYmUgcmVwcm9kdWNpYmxlLCBzbyBkaXNhYmxlIGl0IGZvcgotICAgICMgbm93LiBTZWUgWU9DVE8gIzEzNDA3Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsIFRydWUsIEZhbHNlLCBkKSBhbmQgZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpICE9ICcxJzoKLSAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJ3BnbycpCi0gICAgZWxzZToKLSAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJycpCi19Ci0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAicmVhZGxpbmUgJHtQQUNLQUdFQ09ORklHX1BHT30gZ2RibSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAicmVhZGxpbmUgZ2RibSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID8/PSAicmVhZGxpbmUgZ2RibSIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCi0jIFVzZSBwcm9maWxlIGd1aWRlZCBvcHRpbWlzYXRpb24gYnkgcnVubmluZyBQeUJlbmNoIGluc2lkZSBxZW11LXVzZXIKLVBBQ0tBR0VDT05GSUdbcGdvXSA9ICItLWVuYWJsZS1vcHRpbWl6YXRpb25zLCxxZW11LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdGtdID0gIiwsdGsiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIiwsZ2RibSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7Qn0vTW9kdWxlcwotICAgIGNhdCA+ICR7Qn0vTW9kdWxlcy9TZXR1cC5sb2NhbCA8PCBFT0YKLSpkaXNhYmxlZCoKLSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dkYm0nLCAnJywgJ19nZGJtIF9kYm0nLCBkKX0KLSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JlYWRsaW5lJywgJycsICdyZWFkbGluZScsIGQpfQotRU9GCi19Ci0KLUNQUEZMQUdTX2FwcGVuZCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS9uY3Vyc2VzdyAtSSR7U1RBR0lOR19JTkNESVJ9L3V1aWQiCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICBMSUI9JHtiYXNlbGlifSBcCi0nCi0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGdvJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsIFsnJHtCfScsICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgotICAgICAgICAgICAgICAgIGNhdCA+cGdvLXdyYXBwZXIgPDxFT0YKLSMhL2Jpbi9zaAotY2QgJHtCfQotJHFlbXVfYmluYXJ5ICJcJEAiCi1FT0YKLSAgICAgICAgICAgICAgICBjaG1vZCAreCBwZ28td3JhcHBlcgotICAgICAgICBmaQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgICAgICR7V09SS0RJUn0vY2hlY2tfYnVpbGRfY29tcGxldGVuZXNzLnB5ICR7VH0vbG9nLmRvX2NvbXBpbGUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLSAgICAgICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0gICAgICAgIGRvbmUKLSAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKLSAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCi0gICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQotICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCi0gICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCi0gICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgJHtEfSAtbmFtZSBfc3lzY29uZmlnKi5weWAKLSAgICAgICAgY3AgJHN5c2NvbmZpZ2ZpbGUgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQotCi0gICAgICAgIHNlZCAtaSAgXAotICAgICAgICAgICAgICAgIC1lICJzLF4gJ0xJQkRJUicuKiwgJ0xJQkRJUic6ICcke1NUQUdJTkdfTElCRElSfSdcLCxnIiBcCi0gICAgICAgICAgICAgICAgLWUgInMsXiAnSU5DTFVERURJUicuKiwgJ0lOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAotICAgICAgICAgICAgICAgIC1lICJzLF4gJ0NPTkZJTkNMVURFRElSJy4qLCAnQ09ORklOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAotICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTERJUlNUT01BS0UnL3tOOyBzLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnfSIgXAotICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTFVERVBZJy9zLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnIiBcCi0gICAgICAgICAgICAgICAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBPRVBZVEhPTjNIT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJyBQWVRIT05OT1VTRVJTSVRFPScxJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUgX3N5c2NvbmZpZ2RhdGEucHkiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLSAgICAgICAgIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotICAgICAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLSAgICAgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLSAgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLSAgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotICAgICAgICAgICAgICAgICR7UEtHRH0vJHtwcmVmaXh9L2xpYi9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfSovTWFrZWZpbGUgXAotICAgICAgICAgICAgICAgICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZwotCi0gICAgICAgICMgUmVmb3JtYXQgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0IHNvIHRoYXQgaXQgcmVtYWlucwotICAgICAgICAjIHJlcHJvZHVjaWJsZQotICAgICAgICBmb3IgYyBpbiAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weTsgZG8KLSAgICAgICAgICAgIHB5dGhvbjMgJHtXT1JLRElSfS9yZWZvcm1hdF9zeXNjb25maWcucHkgJGMKLSAgICAgICAgZG9uZQotCi0gICAgICAgICMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAotICAgICAgICBjZCAke1BLR0R9Ci0gICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgLiAtbmFtZSBfc3lzY29uZmlnZGF0YV8qLnB5YAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnKSIKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJywgb3B0aW1pemU9MSkiCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLSAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTIpIgotICAgICAgICBjZCAtCi0KLSAgICAgICAgbXYgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9Ci0gICAgICAgIAotICAgICAgICAjUmVtb3ZlIHRoZSB1bm5lZWRlZCBjb3B5IG9mIHRhcmdldCBzeXNjb25maWcgZGF0YQotICAgICAgICBybSAtcmYgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEKLX0KLQotIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0Ci0jIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCi1JTkNMVURFX1BZQ1MgPz0gIjEiCi0KLXB5dGhvbigpewotICAgIGltcG9ydCBjb2xsZWN0aW9ucywganNvbgotCi0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKLSAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCi0gICAgIyB0aGF0IGRlcGVuZGVuY3kuCi0gICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQotCi0gICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgotICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0gICAgIyBGaXJzdCBzZXQgUlBST1ZJREVTIGZvciAtbmF0aXZlIGNhc2UKLSAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQotICAgIHBuID0gJ3B5dGhvbjMnCi0gICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKLQotICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgotICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJwotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKLSAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICBkLnNldFZhcignUlBST1ZJREVTX2NsYXNzLW5hdGl2ZScsICcgJy5qb2luKHJwcm92aWRlcykpCi0KLSAgICAjIFRoZW4gd29yayBvbiB0aGUgdGFyZ2V0Ci0gICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCi0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0KLSAgICBuZXdwYWNrYWdlcz1bXQotICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgotICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleQotCi0gICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6Ci0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZwotICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKLSAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQotICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKLQotICAgICAgICAjIEFkZCBjYWNoZWQgZmlsZXMKLSAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKLSAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106Ci0gICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKLQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106Ci0gICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCi0gICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgotICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJywgMSlbMV0KLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQotCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XS5nZXQoJ3JyZWNvbW1lbmRzJywgKCkpOgotICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKLQotICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQotCi0gICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZwotICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcwotICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKLX0KLQotIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0Ci0KLWRvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKLSAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgotICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCi0gICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQotICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKLSAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KLSAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90Ci0gICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KLQotICAgIGNkICR7V09SS0RJUn0KLSAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KLSAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkgJHtQWVRIT05fTUFKTUlOfQotICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgotfQotCi0jIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAotYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKLQotIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Ci1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCi1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3BhdGNoIgotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKLQotIyBGb3IgaGlzdG9yaWNhbCByZWFzb25zIFBOIGlzIGVtcHR5IGFuZCBwcm92aWRlZCBieSBweXRob24zLW1vZHVsZXMKLUZJTEVTXyR7UE59ID0gIiIKLVJQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgotCi1GSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgotRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKLQotIyBwcm92aWRlIHB5dGhvbi1weXZlbnYgZnJvbSBweXRob24zLXZlbnYKLVJQUk9WSURFU18ke1BOfS12ZW52ICs9ICJweXRob24zLXB5dmVudiIKLQotIyBwYWNrYWdlIGxpYnB5dGhvbjMKLVBBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgotRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgotRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7cHJlZml4fS9saWIvcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fQklOQUJJfS0qL2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKLUlOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1lbWFpbCBweXRob24zLWNvZGVjcyBweXRob24zLXB5ZG9jIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtYXVkaW8iCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbWlzYyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgcHl0aG9uMy1taXNjIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZCIKLQotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICIke1BOfS1tb2R1bGVzICR7UE59LXRlc3RzIHVuemlwIGJ6aXAyIGxpYmdjYyB0emRhdGEtZXVyb3BlIGNvcmV1dGlscyBzZWQiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtdHItdHIuaXNvLTg4NTktOSIKLVJERVBFTkRTXyR7UE59LXRraW50ZXIgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJ3RrIHRrLWxpYicsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YTE2ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjguMi5iYgpAQCAtMCwwICsxLDM1MiBAQAorU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgorTElDRU5TRSA9ICJQU0Z2MiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMDNhNmRiYzgwMmVlODk2MDIwYTQ3MTYxZTc1OTY0MiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IFwKKyAgICAgICAgICAgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIFwKKyAgICAgICAgICAgZmlsZTovL2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSBcCisgICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAnJywgJ2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5wcmUtdXNlLXFlbXUtd3JhcHBlci13aGVuLWdhdGhlcmluZy1wcm9maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1MaWItc3lzY29uZmlnLnB5LWZpeC1hbm90aGVyLXBsYWNlLXdoZXJlLWxpYi1pcy1oYXJkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtZml4LUlzc3VlMzY0NjQtcGFyYWxsZWwtYnVpbGQtcmFjZS1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zc3B5dGhvbnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVmb3JtYXRfc3lzY29uZmlnLnB5IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUZMQUdfUkVGLWFsd2F5cy1mb3ItaW50ZXJuZWQtc3RyaW5ncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RfbG9jYWxlLnB5LWNvcnJlY3QtdGhlLXRlc3Qtb3V0cHV0LWZvcm1hdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWNvbmZpZ3VyZS5hYy1zZXR1cC5weS1kby1ub3QtYWRkLWEtY3Vyc2VzLWluY2x1ZGUtcGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtc3lzdGVtLWZvci1oZWFkZXJzLWxpYnJhcmllcy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImU5ZDZlYmM5MjE4M2ExNzdiOGU4YTU4Y2FkNWI4ZDY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2NDZlN2RjMjMzMzYyZjU5NzE0YzYxOTMwMTdiYjJkNmY3YjM4ZDZhYjRhMGNiNWZiYWM1YzM2YzRkODQ1ZGYiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgorCisjIFRoaXMgaXMgbm90IGV4cGxvaXRhYmxlIHdoZW4gZ2xpYmMgaGFzIENWRS0yMDE2LTEwNzM5IGZpeGVkLgorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktMTgzNDgiCisKK1BZVEhPTl9NQUpNSU4gPSAiMy44IgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBxZW11IHB0ZXN0IG11bHRpbGliX2hlYWRlciB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK01VTFRJTElCX1NVRkZJWCA9ICIke0BkLmdldFZhcignYmFzZV9saWJkaXInLDEpLnNwbGl0KCcvJylbLTFdfSIKKworQUxURVJOQVRJVkVfJHtQTn0tZGV2ID0gInB5dGhvbjMtY29uZmlnIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3B5dGhvbjMtY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWciCitBTFRFUk5BVElWRV9UQVJHRVRbcHl0aG9uMy1jb25maWddID0gIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZy0ke01VTFRJTElCX1NVRkZJWH0iCisKKworREVQRU5EUyA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgbGliZmZpIGJ6aXAyIG9wZW5zc2wgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiB2aXJ0dWFsL2NyeXB0IHV0aWwtbGludXggbGlidGlycGMgbGlibnNsMiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHl0aG9uMy1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aG91dC1lbnN1cmVwaXAgLS1lbmFibGUtc2hhcmVkIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSIKKworZXhwb3J0IENST1NTUFlUSE9OUEFUSD0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIgorCitFWFRSQU5BVElWRVBBVEggKz0gInB5dGhvbjMtbmF0aXZlIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICIgXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3Zfd29ya2luZ190enNldD15ZXMgXAorIgorcHl0aG9uKCkgeworICAgICMgUEdPIGN1cnJlbnRseSBjYXVzZXMgYnVpbGRzIHRvIG5vdCBiZSByZXByb2R1Y2libGUsIHNvIGRpc2FibGUgaXQgZm9yCisgICAgIyBub3cuIFNlZSBZT0NUTyAjMTM0MDcKKyAgICBpZiBiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdxZW11LXVzZXJtb2RlJywgVHJ1ZSwgRmFsc2UsIGQpIGFuZCBkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgIT0gJzEnOgorICAgICAgICBkLnNldFZhcignUEFDS0FHRUNPTkZJR19QR08nLCAncGdvJykKKyAgICBlbHNlOgorICAgICAgICBkLnNldFZhcignUEFDS0FHRUNPTkZJR19QR08nLCAnJykKK30KKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJyZWFkbGluZSAke1BBQ0tBR0VDT05GSUdfUEdPfSBnZGJtIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJyZWFkbGluZSBnZGJtIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPz89ICJyZWFkbGluZSBnZGJtIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLCxyZWFkbGluZSIKKyMgVXNlIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXNhdGlvbiBieSBydW5uaW5nIFB5QmVuY2ggaW5zaWRlIHFlbXUtdXNlcgorUEFDS0FHRUNPTkZJR1twZ29dID0gIi0tZW5hYmxlLW9wdGltaXphdGlvbnMsLHFlbXUtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t0a10gPSAiLCx0ayIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLCxnZGJtIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtCfS9Nb2R1bGVzCisgICAgY2F0ID4gJHtCfS9Nb2R1bGVzL1NldHVwLmxvY2FsIDw8IEVPRgorKmRpc2FibGVkKgorJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2RibScsICcnLCAnX2dkYm0gX2RibScsIGQpfQorJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVhZGxpbmUnLCAnJywgJ3JlYWRsaW5lJywgZCl9CitFT0YKK30KKworQ1BQRkxBR1NfYXBwZW5kID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L25jdXJzZXN3IC1JJHtTVEFHSU5HX0lOQ0RJUn0vdXVpZCIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCisgIExJQj0ke2Jhc2VsaWJ9IFwKKycKKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZ28nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9JywgWycke0J9JywgJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfSddKX0iCisgICAgICAgICAgICAgICAgY2F0ID5wZ28td3JhcHBlciA8PEVPRgorIyEvYmluL3NoCitjZCAke0J9CiskcWVtdV9iaW5hcnkgIlwkQCIKK0VPRgorICAgICAgICAgICAgICAgIGNobW9kICt4IHBnby13cmFwcGVyCisgICAgICAgIGZpCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICAgICAgJHtXT1JLRElSfS9jaGVja19idWlsZF9jb21wbGV0ZW5lc3MucHkgJHtUfS9sb2cuZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIG9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorICAgICAgICBmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKyAgICAgICAgZG9uZQorICAgICAgICAjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQorICAgICAgICAjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKKyAgICAgICAgIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCisgICAgICAgICMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KKyAgICAgICAgbG4gLXMgcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbjMKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIG1rZGlyIC1wICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEKKyAgICAgICAgc3lzY29uZmlnZmlsZT1gZmluZCAke0R9IC1uYW1lIF9zeXNjb25maWcqLnB5YAorICAgICAgICBjcCAkc3lzY29uZmlnZmlsZSAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhL19zeXNjb25maWdkYXRhLnB5CisKKyAgICAgICAgc2VkIC1pICBcCisgICAgICAgICAgICAgICAgLWUgInMsXiAnTElCRElSJy4qLCAnTElCRElSJzogJyR7U1RBR0lOR19MSUJESVJ9J1wsLGciIFwKKyAgICAgICAgICAgICAgICAtZSAicyxeICdJTkNMVURFRElSJy4qLCAnSU5DTFVERURJUic6ICcke1NUQUdJTkdfSU5DRElSfSdcLCxnIiBcCisgICAgICAgICAgICAgICAgLWUgInMsXiAnQ09ORklOQ0xVREVESVInLiosICdDT05GSU5DTFVERURJUic6ICcke1NUQUdJTkdfSU5DRElSfSdcLCxnIiBcCisgICAgICAgICAgICAgICAgLWUgIi9eICdJTkNMRElSU1RPTUFLRScve047IHMsL3Vzci9pbmNsdWRlLCR7U1RBR0lOR19JTkNESVJ9LGd9IiBcCisgICAgICAgICAgICAgICAgLWUgIi9eICdJTkNMVURFUFknL3MsL3Vzci9pbmNsdWRlLCR7U1RBR0lOR19JTkNESVJ9LGciIFwKKyAgICAgICAgICAgICAgICAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhL19zeXNjb25maWdkYXRhLnB5Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJyBQWVRIT05OT1VTRVJTSVRFPScxJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUgX3N5c2NvbmZpZ2RhdGEucHkiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKyAgICAgICAgIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQorICAgICAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKyAgICAgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgICAgICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9Ki9NYWtlZmlsZSBcCisgICAgICAgICAgICAgICAgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YSoucHkgXAorICAgICAgICAgICAgICAgICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0tY29uZmlnCisKKyAgICAgICAgIyBSZWZvcm1hdCBfc3lzY29uZmlnZGF0YSBhZnRlciBtb2RpZnlpbmcgaXQgc28gdGhhdCBpdCByZW1haW5zCisgICAgICAgICMgcmVwcm9kdWNpYmxlCisgICAgICAgIGZvciBjIGluICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5OyBkbworICAgICAgICAgICAgcHl0aG9uMyAke1dPUktESVJ9L3JlZm9ybWF0X3N5c2NvbmZpZy5weSAkYworICAgICAgICBkb25lCisKKyAgICAgICAgIyBSZWNvbXBpbGUgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0CisgICAgICAgIGNkICR7UEtHRH0KKyAgICAgICAgc3lzY29uZmlnZmlsZT1gZmluZCAuIC1uYW1lIF9zeXNjb25maWdkYXRhXyoucHlgCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScpIgorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisgICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnLCBvcHRpbWl6ZT0xKSIKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJywgb3B0aW1pemU9MikiCisgICAgICAgIGNkIC0KKworICAgICAgICBtdiAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZyAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZy0ke01VTFRJTElCX1NVRkZJWH0KKyAgICAgICAgCisgICAgICAgICNSZW1vdmUgdGhlIHVubmVlZGVkIGNvcHkgb2YgdGFyZ2V0IHN5c2NvbmZpZyBkYXRhCisgICAgICAgIHJtIC1yZiAke1BLR0R9LyR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YQorfQorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLCBqc29uCisKKyAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignVEhJU0RJUicpLCAncHl0aG9uMycsICdweXRob24zLW1hbmlmZXN0Lmpzb24nKQorICAgICMgVGhpcyBweXRob24gY2hhbmdlcyB0aGUgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIGZpbGUsIHNvIG1hcmsKKyAgICAjIHRoYXQgZGVwZW5kZW5jeS4KKyAgICBiYi5wYXJzZS5tYXJrX2RlcGVuZGVuY3koZCwgZmlsZW5hbWUpCisKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdF9maWxlLnJlYWQoKQorICAgICAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2CisgICAgICAgIG1hbmlmZXN0X2ZpbGUuc2Vlayhqc29uX3N0YXJ0KQorICAgICAgICBtYW5pZmVzdF9zdHIgPSBtYW5pZmVzdF9maWxlLnJlYWQoKQorICAgICAgICBweXRob25fbWFuaWZlc3QgPSBqc29uLmxvYWRzKG1hbmlmZXN0X3N0ciwgb2JqZWN0X3BhaXJzX2hvb2s9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QpCisKKyAgICAjIEZpcnN0IHNldCBSUFJPVklERVMgZm9yIC1uYXRpdmUgY2FzZQorICAgICMgSGFyZGNvZGVkIHNpbmNlIGl0IGNhbnQgYmUgcHl0aG9uMy1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uMy1mb28tbmF0aXZlCisgICAgcG4gPSAncHl0aG9uMycKKyAgICBycHJvdmlkZXMgPSBkLmdldFZhcignUlBST1ZJREVTJykuc3BsaXQoKQorCisgICAgIyAke1BOfS1taXNjLW5hdGl2ZSBpcyBub3QgaW4gdGhlIG1hbmlmZXN0CisgICAgcnByb3ZpZGVzLmFwcGVuZChwbiArICctbWlzYy1uYXRpdmUnKQorCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5ICsgJy1uYXRpdmUnCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcnByb3ZpZGVzOgorICAgICAgICAgICAgICBycHJvdmlkZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgIGQuc2V0VmFyKCdSUFJPVklERVNfY2xhc3MtbmF0aXZlJywgJyAnLmpvaW4ocnByb3ZpZGVzKSkKKworICAgICMgVGhlbiB3b3JrIG9uIHRoZSB0YXJnZXQKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZSA9IHBuICsgJy0nICsga2V5CisKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBwcmVwZW5kLCBvdGhlcndpc2UgcHl0aG9uLW1pc2MgZ2V0cyBldmVyeXRoaW5nCisgICAgICAgICAgICAjIHNvIHdlIHVzZSBhIG5ldyB2YXJpYWJsZQorICAgICAgICAgICAgbmV3cGFja2FnZXMuYXBwZW5kKHB5cGFja2FnZSkKKworICAgICAgICAjICJCdWlsZCIgcHl0aG9uJ3MgbWFuaWZlc3QgRklMRVMsIFJERVBFTkRTIGFuZCBTVU1NQVJZCisgICAgICAgIGQuc2V0VmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnJykKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydmaWxlcyddOgorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgICAgICMgQWRkIGNhY2hlZCBmaWxlcworICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKyAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKKyAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KKyAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6CisgICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nLCAxKVsxXQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCisKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldLmdldCgncnJlY29tbWVuZHMnLCAoKSk6CisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJywgMSlbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorCisgICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCisKKyAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCisgICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQorICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1wa2d1dGlsJywgJzEnKQorfQorCisjIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbjMgY3JlYXRlX21hbmlmZXN0My5weSAke1BZVEhPTl9NQUpNSU59CisgICAgY3AgcHl0aG9uMy1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCit9CisKKyMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CithZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAorCisjIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAiJHtQTn06ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAiJHtQTn06ZG9fcGF0Y2giCisKKyMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCitSUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG9wZW5zc2wgY2EtY2VydGlmaWNhdGVzIgorCisjIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgUE4gaXMgZW1wdHkgYW5kIHByb3ZpZGVkIGJ5IHB5dGhvbjMtbW9kdWxlcworRklMRVNfJHtQTn0gPSAiIgorUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCitGSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgorCisjIHByb3ZpZGUgcHl0aG9uLXB5dmVudiBmcm9tIHB5dGhvbjMtdmVudgorUlBST1ZJREVTXyR7UE59LXZlbnYgKz0gInB5dGhvbjMtcHl2ZW52IgorCisjIHBhY2thZ2UgbGlicHl0aG9uMworUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCitGSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCitGSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0tKi9saWJweXRob24ke1BZVEhPTl9NQUpNSU59LmEiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCisKKyMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtZW1haWwgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1weWRvYyBweXRob24zLXBpY2tsZSBweXRob24zLWF1ZGlvIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW1pc2MiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbWlzYyIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQiCisKKyMgY2F0Y2ggbWFucGFnZQorUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKK0ZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKKworIyBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxODc0OCBhbmQgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNzM5NQorUkRFUEVORFNfbGlicHl0aG9uM19hcHBlbmRfbGliYy1nbGliYyA9ICIgbGliZ2NjIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCBiemlwMiBsaWJnY2MgdHpkYXRhLWV1cm9wZSBjb3JldXRpbHMgc2VkIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXRyLXRyLmlzby04ODU5LTkiCitSREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworUkRFUEVORFNfJHtQTn0tdGVzdHNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgYmFzaCIKK1JERVBFTkRTXyR7UE59LXRlc3RzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGJhc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Yjg1NmE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCBcCi0gICAgICAgICAgIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2NyeXB0IgotCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIFwKLSAgICAgICAgICAgJHtESVNUUk9fU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2V0dXB0d2Vha3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJycsICdmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmxvYXQtZW5kaWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24tZGlyIHB5dGhvbm5hdGl2ZSBwdGVzdAotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBhY19jdl9maWxlX19kZXZfcHRjPW5vIGFjX2N2X3dvcmtpbmdfdHpzZXQ9eWVzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiYmRiIgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwsZGIiCi1QQUNLQUdFQ09ORklHW3RrXSA9ICIsLHRrIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotICAgICAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgyCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9kbGZjbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9saW51eC9jZHJvbS5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L3N5cy90eXBlcy5oCi0gICAgICAgIHNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5Ci0gICAgICAgIGNkIC0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyNeTERGTEFHUz0uKiNMREZMQUdTPSR7TERGTEFHU30gLUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0jZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCi0JZXhwb3J0IFBZVEhPTkJVSUxERElSPSIke0J9IgotCi0JIyBBZnRlciBzd2l6emxpbmcgdGhlIG1ha2VmaWxlLCB3ZSBuZWVkIHRvIHJ1biB0aGUgYnVpbGQgYWdhaW4uCi0JIyBpbnN0YWxsIGNhbiByYWNlIHdpdGggdGhlIGJ1aWxkIHNvIHdlIGhhdmUgdG8gcnVuIHRoaXMgZmlyc3QsIHRoZW4gaW5zdGFsbAotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCi0KLSAgICBpZiBbIC16ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIHJtIC1yZiAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2JzZGRiCi0gICAgZmkKLQotICAgICMgUHl0aG9uIDMueCB2ZXJzaW9uIG9mIDJ0bzMgaXMgbm93IHRoZSBkZWZhdWx0Ci0gICAgbXYgJHtEfS8ke2JpbmRpcn0vMnRvMyAke0R9LyR7YmluZGlyfS8ydG8zLSR7UFlUSE9OX01BSk1JTn0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbjIuNyBQWVRIT05IT01FPScke3ByZWZpeH0nIFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJyBQWVRIT05OT1VTRVJTSVRFPScxJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLQlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKLQkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotCShjZCAke1BLR0R9OyBweXRob24gLW0gcHlfY29tcGlsZSAuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5KQotfQotCi1QQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbi1tb2R1bGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKLQotIyBwYWNrYWdlIGxpYnB5dGhvbjIKLVBBQ0tBR0VTID0rICJsaWIke0JQTn0yIgotRklMRVNfbGliJHtCUE59MiA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgotCi0jIHB0ZXN0Ci1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICIke1BOfS1tb2R1bGVzICR7UE59LXRlc3RzIHVuemlwIHR6ZGF0YS1ldXJvcGUgY29yZXV0aWxzIHNlZCIKLVJERVBFTkRTXyR7UE59LXRraW50ZXIgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJ3RrIHRrLWxpYicsICcnLCBkKX0iCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLSMgTmFzdHkgYnV0IGlmIGJkYiBpc24ndCBlbmFibGVkIHRoZSBwYWNrYWdlIHdvbid0IGJlIGdlbmVyYXRlZAotUkRFUEVORFNfJHtQTn0tbW9kdWxlc19yZW1vdmUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmRiJywgJycsICcke1BOfS1ic2RkYicsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCi0KLSMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAotIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgotCi1JTkNMVURFX1BZQ1MgPz0gIjEiCi0KLXB5dGhvbigpewotICAgIGltcG9ydCBjb2xsZWN0aW9ucywganNvbgotCi0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbicsICdweXRob24yLW1hbmlmZXN0Lmpzb24nKQotICAgICMgVGhpcyBweXRob24gY2hhbmdlcyB0aGUgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIGZpbGUsIHNvIG1hcmsKLSAgICAjIHRoYXQgZGVwZW5kZW5jeS4KLSAgICBiYi5wYXJzZS5tYXJrX2RlcGVuZGVuY3koZCwgZmlsZW5hbWUpCi0KLSAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIG1hbmlmZXN0X2ZpbGU6Ci0gICAgICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2Ci0gICAgICAgIG1hbmlmZXN0X2ZpbGUuc2Vlayhqc29uX3N0YXJ0KQotICAgICAgICBtYW5pZmVzdF9zdHIgPSBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBweXRob25fbWFuaWZlc3QgPSBqc29uLmxvYWRzKG1hbmlmZXN0X3N0ciwgb2JqZWN0X3BhaXJzX2hvb2s9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QpCi0KLSAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKLQotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLQotICAgIG5ld3BhY2thZ2VzPVtdCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlPSBwbiArICctJyArIGtleQotCi0gICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6Ci0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZwotICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKLSAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQotICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKLSAgICAgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6Ci0gICAgICAgICAgICAgICAgaWYgdmFsdWUuZW5kc3dpdGgoJy5weScpOgotICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUgKyAnYycpCi0KLSAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgotICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScpWzFdCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKLSAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKLQotICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKLSAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCi19Ci0KLSMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDIucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczIucHkgZmlsZTovL3B5dGhvbjItbWFuaWZlc3QuanNvbiIKLQotZG9fY3JlYXRlX21hbmlmZXN0KCkgewotICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCi0gICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKLSAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCi0gICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzawotICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgotICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKLSAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgotCi0gICAgY2QgJHtXT1JLRElSfQotICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgotICAgIG5hdGl2ZXB5dGhvbiBjcmVhdGVfbWFuaWZlc3QyLnB5Ci0gICAgY3AgcHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24KLX0KLQotIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLWFkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0Ci0KLSMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob246ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiCmluZGV4IDM3MmVlYmQuLjJmYzA3NjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKQEAgLTUsNyArNSwxMCBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L3R1bmN0bC5jO2VuZGxpbmU9NDttZDU9ZmYzYTA5OTk2YmM1ZmZmNmJjNWQ0ZTBiNGMyOGY5OTkiCiAKLVNSQ19VUkkgPSAiZmlsZTovL3R1bmN0bC5jIgorU1JDX1VSSSA9ICJcCisgICAgZmlsZTovL3R1bmN0bC5jIFwKKyAgICBmaWxlOi8vcWVtdS1vZS1icmlkZ2UtaGVscGVyIFwKKyAgICAiCiAKIFMgPSAiJHtXT1JLRElSfSIKIApAQCAtMTgsNiArMjEsOCBAQAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KIAlpbnN0YWxsIHR1bmN0bCAke0R9JHtiaW5kaXJ9LworCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9xZW11LW9lLWJyaWRnZS1oZWxwZXIgJHtEfSR7YmluZGlyfS8KIH0KIAogREVQRU5EUyArPSAicWVtdS1zeXN0ZW0tbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9xZW11LW9lLWJyaWRnZS1oZWxwZXIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyL3FlbXUtb2UtYnJpZGdlLWhlbHBlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMDU3ZDRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9xZW11LW9lLWJyaWRnZS1oZWxwZXIKQEAgLTAsMCArMSwyNSBAQAorIyEgL2Jpbi9zaAorIyBDb3B5cmlnaHQgMjAyMCBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisjCisjIEF0dGVtcHRzIHRvIGZpbmQgYW5kIGV4ZWMgdGhlIGhvc3QgcWVtdS1icmlkZ2UtaGVscGVyIHByb2dyYW0KKworIyBJZiB0aGUgUUVNVV9CUklER0VfSEVMUEVSIHZhcmlhYmxlIGlzIHNldCBieSB0aGUgdXNlciwgZXhlYyBpdC4KK2lmIFsgLW4gIiRRRU1VX0JSSURHRV9IRUxQRVIiIF07IHRoZW4KKyAgICBleGVjICIkUUVNVV9CUklER0VfSEVMUEVSIiAiJEAiCitmaQorCisjIFNlYXJjaCBjb21tb24gcGF0aHMgZm9yIHRoZSBoZWxwZXIgcHJvZ3JhbQorQk49InFlbXUtYnJpZGdlLWhlbHBlciIKK1BBVEhTPSIvdXNyL2xpYmV4ZWMvIC91c3IvbGliL3FlbXUvIgorCitmb3IgcCBpbiAkUEFUSFM7IGRvCisgICAgaWYgWyAtZSAiJHAvJEJOIiBdOyB0aGVuCisgICAgICAgIGV4ZWMgIiRwLyRCTiIgIiRAIgorICAgIGZpCitkb25lCisKK2VjaG8gIiRCTiBub3QgZm91bmQhIiA+IC9kZXYvc3RkZXJyCitleGl0IDEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlLmluYwppbmRleCA2OWMyYzQzLi4yOGNmZDJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlLmluYwpAQCAtMyw4ICszLDggQEAKIHJlcXVpcmUgcWVtdS5pbmMKIAogU1JDX1VSSV9hcHBlbmQgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDExLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaCBcCiAgICAgICAgICAgICAiCiAKIEVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIExEPScke0xEfScgQVI9JyR7QVJ9JyBPQkpDT1BZPScke09CSkNPUFl9JyBMREZMQUdTPScke0xERkxBR1N9JyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1uYXRpdmVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtc3lzdGVtLW5hdGl2ZV80LjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1zeXN0ZW0tbmF0aXZlXzQuMi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtc3lzdGVtLW5hdGl2ZV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4yLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYwppbmRleCA4MTg0ZWY1Li4yNGY5YTAzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgICAgICBzb2Z0bW11b25seSArPSBhcmNoICsgIi1zb2Z0bW11LCIKICAgICAgICAgICAgIGFyY2hzLnJlbW92ZShhcmNoKQogICAgIGxpbnV4dXNlcm9ubHkgPSAiIgotICAgIGZvciBhcmNoIGluIFsnYXJtZWInLCAnYWxwaGEnLCAncHBjNjRhYmkzMicsICdzcGFyYzMycGx1cycsICdhYXJjaDY0X2JlJ106CisgICAgZm9yIGFyY2ggaW4gWydhcm1lYicsICdhbHBoYScsICdwcGM2NGFiaTMyJywgJ3BwYzY0bGUnLCAnc3BhcmMzMnBsdXMnLCAnYWFyY2g2NF9iZSddOgogICAgICAgICBpZiBhcmNoIGluIGFyY2hzOgogICAgICAgICAgICAgbGludXh1c2Vyb25seSArPSBhcmNoICsgIi1saW51eC11c2VyLCIKICAgICAgICAgICAgIGFyY2hzLnJlbW92ZShhcmNoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggNjAxZmMyMi4uN2ExY2NmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCkBAIC0yNywxMyArMjcsMjEgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDgtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMC1jb25maWd1cmUtQWRkLXBrZy1jb25maWctaGFuZGxpbmctZm9yLWxpYmdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWh3LWkzODYtcGMtZml4LXJlZ3Jlc3Npb24taW4tcGFyc2luZy12Z2EtY21kbGluZS1wYXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTU4OTAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTIwNjgucGF0Y2ggXAotICAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC0xNzExLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTcwMzktMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC03MDM5LTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzAzOS0zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2ggXAorCSAgIGZpbGU6Ly9DVkUtMjAyMC03MjExLnBhdGNoIFwKKwkgICBmaWxlOi8vMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC0xMTEwMi5wYXRjaCBcCisJICAgIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIAotU1JDX1VSSVttZDVzdW1dID0gImNkZjJiNWNhNTJiOWFiYWM5YmFjYjU4NDJmYTQyMGY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1NmU2MDIxODY4OWJkZWVjNjk5MDMwODdmZDc1ODJkNWQzZTcyMjM4ZDAyZjQ0ODFkOGRjNmQ3OWZkOTA5YzYiCitTUkNfVVJJW21kNXN1bV0gPSAiMjc4ZWViMjk0ZTRiNDk3ZTc5YWY3YTU3ZTY2MGNiOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM0ODFkNDEwOGNlMjExYTA1M2VmMTViZTY5YWYxYmRkOWRkZTE1MTBmZGE4MGQ5MmJlMGY2YzNlOTg3NjhmMCIKIAogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKQEAgLTU1LDEwICs2MywxMiBAQAogCSMgRG9uJ3QgY2hlY2sgdGhlIGZpbGUgZ2VucmVhdGVkIGJ5IGNvbmZpZ3VyZQogCXNlZCAtaSAtZSAnL3dpbGRjYXJkIGNvbmZpZy1ob3N0Lm1hay9kJyBcCiAJICAgICAgIC1lICckIHsvZW5kaWYvZH0nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKKyAgICAgICAgc2VkIC1pIC1lICdzLCR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMywke2JpbmRpcn0vcHl0aG9uMywnIFwKKyAgICAgICAgICAgICR7RH0vJHtQVEVTVF9QQVRIfS90ZXN0cy9xZW11LWlvdGVzdHMvY29tbW9uLmVudiAKIH0KIAogIyBRRU1VX1RBUkdFVFMgaXMgb3ZlcnJpZGFibGUgdmFyaWFibGUKLVFFTVVfVEFSR0VUUyA/PSAiYXJtIGFhcmNoNjQgaTM4NiBtaXBzIG1pcHNlbCBtaXBzNjQgbWlwczY0ZWwgcHBjIHBwYzY0IHJpc2N2MzIgcmlzY3Y2NCBzaDQgeDg2XzY0IgorUUVNVV9UQVJHRVRTID89ICJhcm0gYWFyY2g2NCBpMzg2IG1pcHMgbWlwc2VsIG1pcHM2NCBtaXBzNjRlbCBwcGMgcHBjNjQgcHBjNjRsZSByaXNjdjMyIHJpc2N2NjQgc2g0IHg4Nl82NCIKIAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKQEAgLTc1LDYgKzg1LDggQEAKICAgICAtLWRpc2FibGUtc3RyaXAgXAogICAgIC0tZGlzYWJsZS13ZXJyb3IgXAogICAgIC0tZXh0cmEtY2ZsYWdzPScke0NGTEFHU30nIFwKKyAgICAtLXdpdGgtZ2l0PS9iaW4vZmFsc2UgXAorICAgIC0tZGlzYWJsZS1naXQtdXBkYXRlIFwKICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKICAgICAiCiAKQEAgLTEzNSw3ICsxNDcsNyBAQAogUEFDS0FHRUNPTkZJR1t2aXJ0ZnNdID0gIi0tZW5hYmxlLXZpcnRmcyAtLWVuYWJsZS1hdHRyLC0tZGlzYWJsZS12aXJ0ZnMsbGliY2FwIGF0dHIsIgogUEFDS0FHRUNPTkZJR1thaW9dID0gIi0tZW5hYmxlLWxpbnV4LWFpbywtLWRpc2FibGUtbGludXgtYWlvLGxpYmFpbywiCiBQQUNLQUdFQ09ORklHW3hmc10gPSAiLS1lbmFibGUteGZzY3RsLC0tZGlzYWJsZS14ZnNjdGwseGZzcHJvZ3MsIgotUEFDS0FHRUNPTkZJR1t4ZW5dID0gIi0tZW5hYmxlLXhlbiwtLWRpc2FibGUteGVuLHhlbix4ZW4tbGlieGVuc3RvcmUgeGVuLWxpYnhlbmN0cmwgeGVuLWxpYnhlbmd1ZXN0IgorUEFDS0FHRUNPTkZJR1t4ZW5dID0gIi0tZW5hYmxlLXhlbiwtLWRpc2FibGUteGVuLHhlbi10b29scyx4ZW4tdG9vbHMtbGlieGVuc3RvcmUgeGVuLXRvb2xzLWxpYnhlbmN0cmwgeGVuLXRvb2xzLWxpYnhlbmd1ZXN0IgogUEFDS0FHRUNPTkZJR1t2bmMtc2FzbF0gPSAiLS1lbmFibGUtdm5jIC0tZW5hYmxlLXZuYy1zYXNsLC0tZGlzYWJsZS12bmMtc2FzbCxjeXJ1cy1zYXNsLCIKIFBBQ0tBR0VDT05GSUdbdm5jLWpwZWddID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtanBlZywtLWRpc2FibGUtdm5jLWpwZWcsanBlZywiCiBQQUNLQUdFQ09ORklHW3ZuYy1wbmddID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtcG5nLC0tZGlzYWJsZS12bmMtcG5nLGxpYnBuZywiCkBAIC0xNjUsNiArMTc3LDEwIEBACiAjIHVzYnJlZGlyIHdpbGwgYmUgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCiBQQUNLQUdFQ09ORklHW3VzYi1yZWRpcl0gPSAiLS1lbmFibGUtdXNiLXJlZGlyLC0tZGlzYWJsZS11c2ItcmVkaXIsdXNicmVkaXIiCiBQQUNLQUdFQ09ORklHW3NuYXBweV0gPSAiLS1lbmFibGUtc25hcHB5LC0tZGlzYWJsZS1zbmFwcHksc25hcHB5IgorUEFDS0FHRUNPTkZJR1tnbHVzdGVyZnNdID0gIi0tZW5hYmxlLWdsdXN0ZXJmcywtLWRpc2FibGUtZ2x1c3RlcmZzIgorUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi0tZW5hYmxlLXhrYmNvbW1vbiwtLWRpc2FibGUteGtiY29tbW9uLGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbbGlidWRldl0gPSAiLS1lbmFibGUtbGlidWRldiwtLWRpc2FibGUtbGlidWRldixldWRldiIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS1lbmFibGUtbGlieG1sMiwtLWRpc2FibGUtbGlieG1sMixsaWJ4bWwyIgogCiBJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1BZGQtZW5hYmxlLWRpc2FibGUtdWRldi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLUFkZC1lbmFibGUtZGlzYWJsZS11ZGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYzU4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1BZGQtZW5hYmxlLWRpc2FibGUtdWRldi5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGE0NzFjZjRlNGM3MzM1MGUwOTBlYjJjZDg3ZWM5NTlkMTM4MDEyZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFRodSwgMTkgTWFyIDIwMjAgMTE6NTQ6MjYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGVuYWJsZS9kaXNhYmxlIGxpYnVkZXYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggY2FjMjcxYy4uYmQxMTZlYiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMTUzOSw2ICsxNTM5LDEwIEBAIGZvciBvcHQgZG8KKyAgIDs7CisgICAtLWRpc2FibGUtcGx1Z2lucykgcGx1Z2lucz0ibm8iCisgICA7OworKyAgLS1lbmFibGUtbGlidWRldikgbGlidWRldj0ieWVzIgorKyAgOzsKKysgIC0tZGlzYWJsZS1saWJ1ZGV2KSBsaWJ1ZGV2PSJubyIKKysgIDs7CisgICAqKQorICAgICAgIGVjaG8gIkVSUk9SOiB1bmtub3duIG9wdGlvbiAkb3B0IgorICAgICAgIGVjaG8gIlRyeSAnJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaAppbmRleCA5NDc4MTAyLi42NmZmOTk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDQ2NTVkYzE4MDc0ZTBiZTlkMjM5ZjUxZGFjMzJiNjE0MzVkYTg1NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUyNmNiN2UyNmY2ZGQ5NmM5ZWUyZmZhMDVjZTBhMzU4ZDNiZmJmYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFRodSwgMjcgTm92IDIwMTQgMTQ6MDQ6MjkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogQWRkIG1pc3Npbmcgd2Fjb20gSElEIGRlc2NyaXB0b3IKQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaHcvdXNiL2Rldi13YWNvbS5jIGIvaHcvdXNiL2Rldi13YWNvbS5jCi1pbmRleCA4YzQzZGI5My4uM2ZmOGNhMjggMTAwNjQ0CitpbmRleCA4ZWQ1N2IzYi4uMTUwMjkyOGIgMTAwNjQ0CiAtLS0gYS9ody91c2IvZGV2LXdhY29tLmMKICsrKyBiL2h3L3VzYi9kZXYtd2Fjb20uYwogQEAgLTc0LDYgKzc0LDg5IEBAIHN0YXRpYyBjb25zdCBVU0JEZXNjU3RyaW5ncyBkZXNjX3N0cmluZ3MgPSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXFlbXUtRG8tbm90LWluY2x1ZGUtZmlsZS1pZi1ub3QtZXhpc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjY2FjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDk4YzJkYTEyOWRiMTllZTYzZDdlMjFiNzdhMGVmNzA4MjJjOTUwNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbGVrc2l5IE9iaXRvdHNreXkgPG9vYml0b3RzQGNpc2NvLmNvbT4KK0RhdGU6IFdlZCwgMjUgTWFyIDIwMjAgMjE6MjE6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcWVtdTogRG8gbm90IGluY2x1ZGUgZmlsZSBpZiBub3QgZXhpc3RzCisKK1NjcmlwdCBjb25maWd1cmUgY2hlY2tzIGZvciBpZl9hbGcuaCBhbmQgY2hlY2sgZmFpbGVkIGJ1dAoraWZfYWxnLmggc3RpbGwgaW5jbHVkZWQuCisKK1Vwc3RyZWFtLXN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAyMC0wMy9tc2cwNzE4OC5odG1sXQorU2lnbmVkLW9mZi1ieTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CistLS0KKyBsaW51eC11c2VyL3N5c2NhbGwuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saW51eC11c2VyL3N5c2NhbGwuYyBiL2xpbnV4LXVzZXIvc3lzY2FsbC5jCitpbmRleCBmYzE4ZjI0NC4uNjhkNjI2NjYgMTAwNjQ0CistLS0gYS9saW51eC11c2VyL3N5c2NhbGwuYworKysrIGIvbGludXgtdXNlci9zeXNjYWxsLmMKK0BAIC0xMDYsNyArMTA2LDkgQEAKKyAjaW5jbHVkZSA8bGludXgvYmxrcGcuaD4KKyAjaW5jbHVkZSA8bmV0cGFja2V0L3BhY2tldC5oPgorICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisrI2lmIGRlZmluZWQoQ09ORklHX0FGX0FMRykKKyAjaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgImxpbnV4X2xvb3AuaCIKKyAjaW5jbHVkZSAidW5hbWUuaCIKKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCmluZGV4IDJjY2RkZDUuLjdmN2RhNTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjc3NTFmM2EyM2UzZGIzMDEyZjM5MWIzYjNiNzNhNDQ4NDQ4OGNlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGVlNjI4MTUxNmJkOTIxMGU3NWU5MWQ3MDVkYTg5MTZiYWIzYmY1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CiBEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjA2OjU2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdWJwYWNrYWdlIC1wdGVzdCB3aGljaCBydW5zIGFsbCB1bml0IHRlc3QgY2FzZXMgZm9yCkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotaW5kZXggZmQ3ZmRiODYuLjgzYjdmNDA5IDEwMDY0NAoraW5kZXggODU2NmY1ZjEuLjUyZDAzMjBiIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQogKysrIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotQEAgLTExODMsNCArMTE4MywxMiBAQCBhbGw6ICQoUUVNVV9JT1RFU1RTX0hFTFBFUlMteSkKK0BAIC0xMjEwLDQgKzEyMTAsMTIgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCiAgLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy8qLmQpCiAgLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy9saWJxb3MvKi5kKQogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKaW5kZXggNWM0MmQ2OC4uMDEyZDYwZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyMzViOTRmMTE4ODU5Nzg3M2M4Nzc2YjAxOWZlZDQ5OTQ3OTgzMzkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjZTFlY2VhYjIzNTBkMjc5NjBlYzI1NDY1MDcxNzA4NWY2YTExYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMjggTWFyIDIwMTQgMTc6NDI6NDMgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogQWRkIGFkZGl0aW9uIGVudmlyb25tZW50IHNwYWNlIHRvIGJvb3QgbG9hZGVyCkBAIC0xOSwxNSArMTksMTUgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L21pcHMvbWlwc19tYWx0YS5jIGIvaHcvbWlwcy9taXBzX21hbHRhLmMKLWluZGV4IDIwZTAxOWJmLi5kMTUwYjAxYyAxMDA2NDQKK2luZGV4IDkyZTljYTViLi4zYTdmMzk1NCAxMDA2NDQKIC0tLSBhL2h3L21pcHMvbWlwc19tYWx0YS5jCiArKysgYi9ody9taXBzL21pcHNfbWFsdGEuYwotQEAgLTYwLDcgKzYwLDcgQEAKK0BAIC01OSw3ICs1OSw3IEBACiAgCi0gI2RlZmluZSBFTlZQX0FERFIJCTB4ODAwMDIwMDBsCi0gI2RlZmluZSBFTlZQX05CX0VOVFJJRVMJIAkxNgotLSNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFCSAJMjU2Ci0rI2RlZmluZSBFTlZQX0VOVFJZX1NJWkUJIAkxMDI0CisgI2RlZmluZSBFTlZQX0FERFIgICAgICAgICAgIDB4ODAwMDIwMDBsCisgI2RlZmluZSBFTlZQX05CX0VOVFJJRVMgICAgIDE2CistI2RlZmluZSBFTlZQX0VOVFJZX1NJWkUgICAgIDI1NgorKyNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFICAgICAxMDI0CiAgCiAgLyogSGFyZHdhcmUgYWRkcmVzc2VzICovCi0gI2RlZmluZSBGTEFTSF9BRERSRVNTIDB4MWUwMDAwMDBVTEwKKyAjZGVmaW5lIEZMQVNIX0FERFJFU1MgICAgICAgMHgxZTAwMDAwMFVMTApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCmluZGV4IDBhYzRhYjQuLmJjMzAzOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNhZDdhMzc1MDE1ZDQ3ZmRmNTAxNmUwM2UxMWZhOTM0NDBkNmQ4YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQxMjcyOTZiYjEwNDZjZGY3Mzk5NGJhNjlkYzkxM2Q4YzAyZmQ3NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMCBPY3QgMjAxNSAyMjoxOTowOCArMDEwMAogU3ViamVjdDogW1BBVENIXSBxZW11OiBkaXNhYmxlIFZhbGdyaW5kCkBAIC0xMywxMCArMTMsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggNzE0ZTdmYjYuLmRhZDRmYzU5IDEwMDc1NQoraW5kZXggNjA5OWJlMWQuLmE3NjYwMTdiIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC01MzM1LDE1ICs1MzM1LDYgQEAgZmkKK0BAIC01MzkwLDE1ICs1MzkwLDYgQEAgZmkKICAjIGNoZWNrIGlmIHdlIGhhdmUgdmFsZ3JpbmQvdmFsZ3JpbmQuaAogIAogIHZhbGdyaW5kX2g9bm8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCmluZGV4IGE3MzY4MTUuLmVjMzAzMzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gODBlNjA3MGJjZGZlNjM2YjEwM2ExMzU5OGU2YzM4YWQwZDBlNzYyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmNkZjgyYWYyZWJhMzEyYjliOGRhODZkZGEyOGI5OGQzZDUxZjRkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFN0ZXBoZW4gQXJub2xkIDxzYXJub2xkQHZjdGxhYnMuY29tPgogRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAxODowOTo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBxZW11LW5hdGl2ZTogc2V0IGxkLmJmZCwgZml4IGNmbGFncywgYW5kIHNldCBzb21lIGVudmlyb25tZW50CkBAIC0xMCwxMCArMTAsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggZGFkNGZjNTkuLjY4NWJiZTVlIDEwMDc1NQoraW5kZXggYTc2NjAxN2IuLjcyZjExYWNhIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKLUBAIC01OTcxLDEwICs1OTcxLDYgQEAgd3JpdGVfY19za2VsZXRvbgorQEAgLTYwODUsMTAgKzYwODUsNiBAQCB3cml0ZV9jX3NrZWxldG9uCiAgaWYgdGVzdCAiJGdjb3YiID0gInllcyIgOyB0aGVuCiAgICBDRkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAtZyAkQ0ZMQUdTIgogICAgTERGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlICRMREZMQUdTIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKaW5kZXggYTQyMzg1NS4uMDgxMGFlOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhZDg1MzYwMWU3NWY2ZDBkZDA5NjcyYmNjYTA1ZmJlNGZhYzc2NmE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiY2M2M2Y3NzVlMjY1ZGY2OTk2M2E0YWQ3ODA1Yjg2NzhhY2U2OGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgogRGF0ZTogVGh1LCAyMSBEZWMgMjAxNyAxMTozNToxNiAtMDgwMAogU3ViamVjdDogW1BBVENIXSBjaGFyZGV2OiBjb25uZWN0IHNvY2tldCB0byBhIHNwYXduZWQgY29tbWFuZApAQCAtNTIsMTAgKzUyLDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCi1pbmRleCA3Y2E1ZDk3YS4uMjA3ZmFlNGEgMTAwNjQ0CitpbmRleCAxODVmZTM4ZC4uNTRmYTQyMzQgMTAwNjQ0CiAtLS0gYS9jaGFyZGV2L2NoYXItc29ja2V0LmMKICsrKyBiL2NoYXJkZXYvY2hhci1zb2NrZXQuYwotQEAgLTEyNzgsNiArMTI3OCw2NyBAQCBzdGF0aWMgYm9vbCBxbXBfY2hhcmRldl92YWxpZGF0ZV9zb2NrZXQoQ2hhcmRldlNvY2tldCAqc29jaywKK0BAIC0xMjg4LDYgKzEyODgsNjcgQEAgc3RhdGljIGJvb2wgcW1wX2NoYXJkZXZfdmFsaWRhdGVfc29ja2V0KENoYXJkZXZTb2NrZXQgKnNvY2ssCiAgICAgIHJldHVybiB0cnVlOwogIH0KICAKQEAgLTEyMyw3ICsxMjMsNyBAQAogIAogIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyZGV2QmFja2VuZCAqYmFja2VuZCwKLUBAIC0xMjg2LDYgKzEzNDcsOSBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCitAQCAtMTI5Niw2ICsxMzU3LDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogIHsKICAgICAgU29ja2V0Q2hhcmRldiAqcyA9IFNPQ0tFVF9DSEFSREVWKGNocik7CiAgICAgIENoYXJkZXZTb2NrZXQgKnNvY2sgPSBiYWNrZW5kLT51LnNvY2tldC5kYXRhOwpAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAgIGJvb2wgZG9fbm9kZWxheSAgICAgPSBzb2NrLT5oYXNfbm9kZWxheSA/IHNvY2stPm5vZGVsYXkgOiBmYWxzZTsKICAgICAgYm9vbCBpc19saXN0ZW4gICAgICA9IHNvY2stPmhhc19zZXJ2ZXIgID8gc29jay0+c2VydmVyICA6IHRydWU7CiAgICAgIGJvb2wgaXNfdGVsbmV0ICAgICAgPSBzb2NrLT5oYXNfdGVsbmV0ICA/IHNvY2stPnRlbG5ldCAgOiBmYWxzZTsKLUBAIC0xMzUxLDYgKzE0MTUsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorQEAgLTEzNjEsNiArMTQyNSwxNCBAQCBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgCiAgICAgIHVwZGF0ZV9kaXNjb25uZWN0ZWRfZmlsZW5hbWUocyk7CiAgCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgICAgaWYgKHMtPmlzX2xpc3RlbikgewogICAgICAgICAgaWYgKHFtcF9jaGFyZGV2X29wZW5fc29ja2V0X3NlcnZlcihjaHIsIGlzX3RlbG5ldCB8fCBpc190bjMyNzAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3dhaXRjb25uZWN0LCBlcnJwKSA8IDApIHsKLUBAIC0xMzcwLDkgKzE0NDIsMjYgQEAgc3RhdGljIHZvaWQgcWVtdV9jaHJfcGFyc2Vfc29ja2V0KFFlbXVPcHRzICpvcHRzLCBDaGFyZGV2QmFja2VuZCAqYmFja2VuZCwKK0BAIC0xMzgwLDkgKzE0NTIsMjYgQEAgc3RhdGljIHZvaWQgcWVtdV9jaHJfcGFyc2Vfc29ja2V0KFFlbXVPcHRzICpvcHRzLCBDaGFyZGV2QmFja2VuZCAqYmFja2VuZCwKICAgICAgY29uc3QgY2hhciAqaG9zdCA9IHFlbXVfb3B0X2dldChvcHRzLCAiaG9zdCIpOwogICAgICBjb25zdCBjaGFyICpwb3J0ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJwb3J0Iik7CiAgICAgIGNvbnN0IGNoYXIgKmZkID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJmZCIpOwpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgIGlmICgoISFwYXRoICsgISFmZCArICEhaG9zdCkgIT0gMSkgewogICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLAogICAgICAgICAgICAgICAgICAgICAiRXhhY3RseSBvbmUgb2YgJ3BhdGgnLCAnZmQnIG9yICdob3N0JyByZXF1aXJlZCIpOwotQEAgLTE0MTUsMTIgKzE1MDQsMjQgQEAgc3RhdGljIHZvaWQgcWVtdV9jaHJfcGFyc2Vfc29ja2V0KFFlbXVPcHRzICpvcHRzLCBDaGFyZGV2QmFja2VuZCAqYmFja2VuZCwKK0BAIC0xNDI1LDEyICsxNTE0LDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIHNvY2stPmhhc190bHNfYXV0aHogPSBxZW11X29wdF9nZXQob3B0cywgInRscy1hdXRoeiIpOwogICAgICBzb2NrLT50bHNfYXV0aHogPSBnX3N0cmR1cChxZW11X29wdF9nZXQob3B0cywgInRscy1hdXRoeiIpKTsKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDctYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKaW5kZXggYjUwZThjMi4uODliYWFkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDctYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDctYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGY1MWU0OWU3ZDdkODdiNzI1NDI0MmI3MzYwZjk5YzJkZjk0YTVhMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE1OWE5OGQxMDAxMjMwMzBhNDE0NWU3ZWZlM2I4YTAwMTkyMGE5ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAyNiBGZWIgMjAxMyAxMTo0MzoyOCAtMDUwMAogU3ViamVjdDogW1BBVENIXSBhcGljOiBmaXh1cCBmYWxsdGhyb3VnaCB0byBQSUMKQEAgLTMwLDcgKzMwLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpYy5jIGIvaHcvaW50Yy9hcGljLmMKLWluZGV4IGJjZTg5OTExLi5kZjRiNTgyZSAxMDA2NDQKK2luZGV4IDJhNzRmN2I0Li40ZDVkYTM2NSAxMDA2NDQKIC0tLSBhL2h3L2ludGMvYXBpYy5jCiArKysgYi9ody9pbnRjL2FwaWMuYwogQEAgLTYwMyw3ICs2MDMsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRldikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaAppbmRleCBlNTYyZjI1Li4zMGJiNGRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyNWEwNjRmOTFmNzM2MzBlNWRmZjJhNmFlYjIzZDk1M2M0NjljZWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjZjhjOWFhYzUyNDNmNTA2YTFhM2U4ZTI4NDQxNGYzMTFjZGUwNGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgogRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDo1MTo0OSAtMDgwMAogU3ViamVjdDogW1BBVENIXSBsaW51eC11c2VyOiBGaXggd2Via2l0Z3RrIGhhbmdzIG9uIDMyLWJpdCB4ODYgdGFyZ2V0CkBAIC0xOSwxNSArMTksMTUgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbWFpbi5jIGIvbGludXgtdXNlci9tYWluLmMKLWluZGV4IDhmZmM1MjUxLi40MDY3ZTczOSAxMDA2NDQKK2luZGV4IDZmZjc4NTFlLi5lYmZmMDQ4NSAxMDA2NDQKIC0tLSBhL2xpbnV4LXVzZXIvbWFpbi5jCiArKysgYi9saW51eC11c2VyL21haW4uYwotQEAgLTc3LDcgKzc3LDcgQEAgaW50IGhhdmVfZ3Vlc3RfYmFzZTsKK0BAIC03OCw3ICs3OCw3IEBAIGludCBoYXZlX2d1ZXN0X2Jhc2U7CiAgICAgICAgKFRBUkdFVF9MT05HX0JJVFMgPT0gMzIgfHwgZGVmaW5lZChUQVJHRVRfQUJJMzIpKQogIC8qIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUgd2UgYXNzaWduIHJlc2VydmVkX3ZhIHRvIGEgdmFyaWFibGUKICAgICBvZiB0eXBlIGFiaV91bG9uZyBhbmQgZXhwZWN0IGl0IHRvIGZpdC4gIEF2b2lkIHRoZSBsYXN0IHBhZ2UuICAqLwotLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMHhmZmZmZmZmZnVsICYgVEFSR0VUX1BBR0VfTUFTSykKLSsjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4N2ZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCistIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEoQ1BVKSAgKDB4ZmZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCisrIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEoQ1BVKSAgKDB4N2ZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCiAgIyAgZWxzZQotICMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykKKyAjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQShDUFUpICAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykKICAjICBlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOS1GaXgtd2Via2l0Z3RrLWJ1aWxkcy5wYXRjaAppbmRleCA0MDcyZDk0Li43ZTI3M2VlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOS1GaXgtd2Via2l0Z3RrLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOS1GaXgtd2Via2l0Z3RrLWJ1aWxkcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjYzM2I5YTE4MTNmY2Q3MTVkY2U0NDY1OWE4OTI5M2YxYzY0YWU4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjEzMTY2MDA3ZTNiODUyYzk5Y2FmMmNkMzRhOTcyZTJjODQ2MDczNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBKYW5zYSA8bWFydGluLmphbnNhQGxnZS5jb20+CiBEYXRlOiBGcmksIDEgSnVuIDIwMTggMDg6NDE6MDcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4IHdlYmtpdGd0ayBidWlsZHMKQEAgLTE4LDYgKzE4LDcgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CisKIC0tLQogIGluY2x1ZGUvZXhlYy9jcHUtYWxsLmggIHwgIDYgKy0tLS0tCiAgaW5jbHVkZS9leGVjL2NwdV9sZHN0LmggfCAgNSArKysrLQpAQCAtMjYsNyArMjcsNyBAQAogIDQgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oIGIvaW5jbHVkZS9leGVjL2NwdS1hbGwuaAotaW5kZXggNTM2ZWE1OGY4MS4uNGM2M2E2YTJlNCAxMDA2NDQKK2luZGV4IGU5Njc4MWE0Li5hMzY5ZjgxYSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKICsrKyBiL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKIEBAIC0xNjIsMTIgKzE2Miw4IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGd1ZXN0X2Jhc2U7CkBAIC00NCw3ICs0NSw3IEBACiAgCiAgI2luY2x1ZGUgImV4ZWMvaHdhZGRyLmgiCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmggYi9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAotaW5kZXggOTE1MWZkYjA0Mi4uY2IyYjhmMzI5ZiAxMDA2NDQKK2luZGV4IGZkNDk5ZjdlLi4zMDU3NWY2MCAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oCiArKysgYi9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAogQEAgLTY1LDcgKzY1LDEwIEBAIHR5cGVkZWYgdWludDY0X3QgYWJpX3B0cjsKQEAgLTYwLDcgKzYxLDcgQEAKICAjZGVmaW5lIGgyZ192YWxpZCh4KSBndWVzdF9hZGRyX3ZhbGlkKCh1bnNpZ25lZCBsb25nKSh4KSAtIGd1ZXN0X2Jhc2UpCiAgCiBkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9tbWFwLmMgYi9saW51eC11c2VyL21tYXAuYwotaW5kZXggNDZhNmUzYTc2MS4uNzczNTQ2NTQ2MiAxMDA2NDQKK2luZGV4IDQ2YTZlM2E3Li43NzM1NDY1NCAxMDA2NDQKIC0tLSBhL2xpbnV4LXVzZXIvbW1hcC5jCiArKysgYi9saW51eC11c2VyL21tYXAuYwogQEAgLTc4LDcgKzc4LDcgQEAgaW50IHRhcmdldF9tcHJvdGVjdChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBwcm90KQpAQCAtMTEwLDEwICsxMTEsMTAgQEAKICAKICAgICAgaWYgKGZsYWdzICYgTVJFTUFQX0ZJWEVEKSB7CiBkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zeXNjYWxsLmMgYi9saW51eC11c2VyL3N5c2NhbGwuYwotaW5kZXggOGI0MWEwMzkwMS4uYmM1ZDg1ZGUwMiAxMDA2NDQKK2luZGV4IDE3MWMwY2FlLi5mYzE4ZjI0NCAxMDA2NDQKIC0tLSBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jCiArKysgYi9saW51eC11c2VyL3N5c2NhbGwuYwotQEAgLTQwMzEsOSArNDAzMSw2IEBAIHN0YXRpYyBpbmxpbmUgYWJpX3Vsb25nIGRvX3NobWF0KENQVUFyY2hTdGF0ZSAqY3B1X2VudiwKK0BAIC00MTM4LDkgKzQxMzgsNiBAQCBzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBkb19zaG1hdChDUFVBcmNoU3RhdGUgKmNwdV9lbnYsCiAgICAgICAgICAgICAgcmV0dXJuIC1UQVJHRVRfRUlOVkFMOwogICAgICAgICAgfQogICAgICB9CkBAIC0xMjMsNyArMTI0LDcgQEAKICAKICAgICAgbW1hcF9sb2NrKCk7CiAgCi1AQCAtNjg4MSw3ICs2ODc4LDcgQEAgc3RhdGljIGludCBvcGVuX3NlbGZfbWFwcyh2b2lkICpjcHVfZW52LCBpbnQgZmQpCitAQCAtNjk5MCw3ICs2OTg3LDcgQEAgc3RhdGljIGludCBvcGVuX3NlbGZfbWFwcyh2b2lkICpjcHVfZW52LCBpbnQgZmQpCiAgICAgICAgICB9CiAgICAgICAgICBpZiAoaDJnX3ZhbGlkKG1pbikpIHsKICAgICAgICAgICAgICBpbnQgZmxhZ3MgPSBwYWdlX2dldF9mbGFncyhoMmcobWluKSk7CkBAIC0xMzIsNiArMTMzLDMgQEAKICAgICAgICAgICAgICBpZiAocGFnZV9jaGVja19yYW5nZShoMmcobWluKSwgbWF4IC0gbWluLCBmbGFncykgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgfQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1jb25maWd1cmUtQWRkLXBrZy1jb25maWctaGFuZGxpbmctZm9yLWxpYmdjcnlwdC5wYXRjaAppbmRleCBhOGFiN2RhLi4zNGRmNzhiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1jb25maWd1cmUtQWRkLXBrZy1jb25maWctaGFuZGxpbmctZm9yLWxpYmdjcnlwdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1jb25maWd1cmUtQWRkLXBrZy1jb25maWctaGFuZGxpbmctZm9yLWxpYmdjcnlwdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNTIxNGRkNDQ2MWYyMDkwZWYwOTY1YjRkMjUxOGY0OTkyN2Q2MWNiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzIwNzYwN2NkZjM5OTZhZDk3ODNjM2JmZmJjZDNkNjVlNzRjMDE1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE5OjU2OjI4ICswODAwCi1TdWJqZWN0OiBbUWVtdS1kZXZlbF0gW1BBVENIXSBjb25maWd1cmU6IEFkZCBwa2ctY29uZmlnIGhhbmRsaW5nIGZvciBsaWJnY3J5cHQKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBBZGQgcGtnLWNvbmZpZyBoYW5kbGluZyBmb3IgbGliZ2NyeXB0CiAKIGxpYmdjcnlwdCBtYXkgYWxzbyBiZSBjb250cm9sbGVkIGJ5IHBrZy1jb25maWcsIHRoaXMgcGF0Y2ggYWRkcyBwa2ctY29uZmlnCiBoYW5kbGluZyBmb3IgbGliZ2NyeXB0LgpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE5LTA4L21zZzA2MzMzLmh0bWxdCiAKIFNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZSB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBlNDRlNDU0Li4wZjM2MmE3IDEwMDc1NQoraW5kZXggNzJmMTFhY2EuLmNhYzI3MWNlIDEwMDc1NQogLS0tIGEvY29uZmlndXJlCiArKysgYi9jb25maWd1cmUKIEBAIC0yODc1LDYgKzI4NzUsMzAgQEAgaGFzX2xpYmdjcnlwdCgpIHsKQEAgLTQ4LDcgKzQ5LDcgQEAKICAKICBpZiB0ZXN0ICIkbmV0dGxlIiAhPSAibm8iOyB0aGVuCiAgICAgIHBhc3M9Im5vIgotQEAgLTI5MDIsNyArMjkyNiwxNCBAQCBmaQorQEAgLTI5MTUsNyArMjkzOSwxNCBAQCBmaQogIAogIGlmIHRlc3QgIiRnY3J5cHQiICE9ICJubyI7IHRoZW4KICAgICAgcGFzcz0ibm8iCkBAIC02NCw3ICs2NSw3IEBACiAgICAgICAgICBnY3J5cHRfY2ZsYWdzPSQobGliZ2NyeXB0LWNvbmZpZyAtLWNmbGFncykKICAgICAgICAgIGdjcnlwdF9saWJzPSQobGliZ2NyeXB0LWNvbmZpZyAtLWxpYnMpCiAgICAgICAgICAjIERlYmlhbiBoYXMgcmVtb3ZlZCAtbGdwZy1lcnJvciBmcm9tIGxpYmdjcnlwdC1jb25maWcKLUBAIC0yOTEyLDE1ICsyOTQzLDE2IEBAIGlmIHRlc3QgIiRnY3J5cHQiICE9ICJubyI7IHRoZW4KK0BAIC0yOTI1LDE1ICsyOTU2LDE2IEBAIGlmIHRlc3QgIiRnY3J5cHQiICE9ICJubyI7IHRoZW4KICAgICAgICAgIHRoZW4KICAgICAgICAgICAgICBnY3J5cHRfbGlicz0iJGdjcnlwdF9saWJzIC1sZ3BnLWVycm9yIgogICAgICAgICAgZmkKQEAgLTg4LDYgKzg5LDMgQEAKICAgICAgaWYgdGVzdCAiJHBhc3MiID0gInllcyI7IHRoZW4KICAgICAgICAgIGdjcnlwdD0ieWVzIgogICAgICAgICAgY2F0ID4gJFRNUEMgPDwgRU9GCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLWh3LWkzODYtcGMtZml4LXJlZ3Jlc3Npb24taW4tcGFyc2luZy12Z2EtY21kbGluZS1wYXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZTA4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gYTg4YzQwZjAyYWNlODhmMDliMmE4NWE2NDgzMWIyNzdiMmViYzg4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIFd1IDxwZXRlckBsZWtlbnN0ZXluLm5sPgorRGF0ZTogU2F0LCAyMSBEZWMgMjAxOSAxNzoyMToyNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBody9pMzg2L3BjOiBmaXggcmVncmVzc2lvbiBpbiBwYXJzaW5nIHZnYSBjbWRsaW5lIHBhcmFtZXRlcgorCitXaGVuIHRoZSAndmdhPScgcGFyYW1ldGVyIGlzIHN1Y2NlZWRlZCBieSBhbm90aGVyIHBhcmFtZXRlciwgUUVNVSA0LjIuMAord291bGQgcmVmdXNlIHRvIHN0YXJ0IHdpdGggYSByYXRoZXIgY3J5cHRpYyBtZXNzYWdlOgorCisgICAgJCBxZW11LXN5c3RlbS14ODZfNjQgLWtlcm5lbCAvYm9vdC92bWxpbnV6LWxpbnV4IC1hcHBlbmQgJ3ZnYT03OTIgcXVpZXQnCisgICAgcWVtdTogY2FuJ3QgcGFyc2UgJ3ZnYScgcGFyYW1ldGVyOiBJbnZhbGlkIGFyZ3VtZW50CisKK0l0IHdhcyBub3QgY2xlYXIgd2hldGhlciB0aGlzIGFwcGxpZWQgdG8gdGhlICctdmdhIHN0ZCcgcGFyYW1ldGVyIG9yIHRoZQorJy1hcHBlbmQnIG9uZS4gRml4IHRoZSBwYXJzaW5nIHJlZ3Jlc3Npb24gYW5kIGNsYXJpZnkgdGhlIGVycm9yLgorCitGaXhlczogMTMzZWYwNzRiZCAoImh3L2kzODYvcGM6IHJlcGxhY2UgdXNlIG9mIHN0cnRvbCB3aXRoIHFlbXVfc3RydG91aSBpbiB4ODZfbG9hZF9saW51eCgpIikKK0NjOiBTZXJnaW8gTG9wZXogPHNscEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogUGV0ZXIgV3UgPHBldGVyQGxla2Vuc3RleW4ubmw+CitNZXNzYWdlLUlkOiA8MjAxOTEyMjExNjIxMjQuMTE1OTI5MS0xLXBldGVyQGxla2Vuc3RleW4ubmw+CitDYzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZworU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0ZGlmZjtoPWE4OGM0MGYwMmFjZTg4ZjA5YjJhODVhNjQ4MzFiMjc3YjJlYmM4OGNdCistLS0KKyBody9pMzg2L3g4Ni5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9pMzg2L3g4Ni5jIGIvaHcvaTM4Ni94ODYuYworaW5kZXggZDhiYjVjMmE5Ni4uOWI5YTRkNTgzNyAxMDA2NDQKKy0tLSBhL2h3L2kzODYveDg2LmMKKysrKyBiL2h3L2kzODYveDg2LmMKK0BAIC02MTIsNiArNjEyLDcgQEAgdm9pZCB4ODZfbG9hZF9saW51eChYODZNYWNoaW5lU3RhdGUgKng4Nm1zLAorICAgICB2bW9kZSA9IHN0cnN0cihrZXJuZWxfY21kbGluZSwgInZnYT0iKTsKKyAgICAgaWYgKHZtb2RlKSB7CisgICAgICAgICB1bnNpZ25lZCBpbnQgdmlkZW9fbW9kZTsKKysgICAgICAgIGNvbnN0IGNoYXIgKmVuZDsKKyAgICAgICAgIGludCByZXQ7CisgICAgICAgICAvKiBza2lwICJ2Z2E9IiAqLworICAgICAgICAgdm1vZGUgKz0gNDsKK0BAIC02MjIsMTAgKzYyMyw5IEBAIHZvaWQgeDg2X2xvYWRfbGludXgoWDg2TWFjaGluZVN0YXRlICp4ODZtcywKKyAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAodm1vZGUsICJhc2siLCAzKSkgeworICAgICAgICAgICAgIHZpZGVvX21vZGUgPSAweGZmZmQ7CisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIHJldCA9IHFlbXVfc3RydG91aSh2bW9kZSwgTlVMTCwgMCwgJnZpZGVvX21vZGUpOworLSAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInFlbXU6IGNhbid0IHBhcnNlICd2Z2EnIHBhcmFtZXRlcjogJXNcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoLXJldCkpOworKyAgICAgICAgICAgIHJldCA9IHFlbXVfc3RydG91aSh2bW9kZSwgJmVuZCwgMCwgJnZpZGVvX21vZGUpOworKyAgICAgICAgICAgIGlmIChyZXQgIT0gMCB8fCAoKmVuZCAmJiAqZW5kICE9ICcgJykpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBpbnZhbGlkICd2Z2E9JyBrZXJuZWwgcGFyYW1ldGVyLlxuIik7CisgICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorLS0gCisyLjI1LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEyLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE5LTEyMDY4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE5LTEyMDY4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTY1NWU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi1Gcm9tIGRlNTk0ZTQ3NjU5MDI5MzE2YmJmOTM5MWVmYjc5ZGEwYTFhMDhlMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBBdWcgMjAxOSAxNzozNToyMSArMDUzMAotU3ViamVjdDogW1BBVENIXSBzY3NpOiBsc2k6IGV4aXQgaW5maW5pdGUgbG9vcCB3aGlsZSBleGVjdXRpbmcgc2NyaXB0Ci0gKENWRS0yMDE5LTEyMDY4KQotCi1XaGVuIGV4ZWN1dGluZyBzY3JpcHQgaW4gbHNpX2V4ZWN1dGVfc2NyaXB0KCksIHRoZSBMU0kgc2NzaSBhZGFwdGVyCi1lbXVsYXRvciBhZHZhbmNlcyAncy0+ZHNwJyBpbmRleCB0byByZWFkIG5leHQgb3Bjb2RlLiBUaGlzIGNhbiBsZWFkCi10byBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBuZXh0IG9wY29kZSBpcyBlbXB0eS4gTW92ZSB0aGUgZXhpc3RpbmcKLWxvb3AgZXhpdCBhZnRlciAxMGsgaXRlcmF0aW9ucyBzbyB0aGF0IGl0IGNvdmVycyBuby1vcCBvcGNvZGVzIGFzCi13ZWxsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWRlNTk0ZTQ3NjU5MDI5MzE2YmJmOTM5MWVmYjc5ZGEwYTFhMDhlMDhdCi1DVkU6IENWRS0yMDE5LTEyMDY4Ci0KLVJlcG9ydGVkLWJ5OiBCdWdzIFN5c1NlYyA8YnVncy1zeXNzZWNAcnViLmRlPgotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGh3L3Njc2kvbHNpNTNjODk1YS5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9zY3NpL2xzaTUzYzg5NWEuYyBiL2h3L3Njc2kvbHNpNTNjODk1YS5jCi1pbmRleCAyMjJhMjg2Li5lYzUzYjE0IDEwMDY0NAotLS0tIGEvaHcvc2NzaS9sc2k1M2M4OTVhLmMKLSsrKyBiL2h3L3Njc2kvbHNpNTNjODk1YS5jCi1AQCAtMTg2LDYgKzE4Niw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpuYW1lc1tdID0gewotIC8qIEZsYWcgc2V0IGlmIHRoaXMgaXMgYSB0YWdnZWQgY29tbWFuZC4gICovCi0gI2RlZmluZSBMU0lfVEFHX1ZBTElEICAgICAoMSA8PCAxNikKLSAKLSsvKiBNYXhpbXVtIGluc3RydWN0aW9ucyB0byBwcm9jZXNzLiAqLwotKyNkZWZpbmUgTFNJX01BWF9JTlNOICAgIDEwMDAwCi0rCi0gdHlwZWRlZiBzdHJ1Y3QgbHNpX3JlcXVlc3QgewotICAgICBTQ1NJUmVxdWVzdCAqcmVxOwotICAgICB1aW50MzJfdCB0YWc7Ci1AQCAtMTEzMyw3ICsxMTM2LDIxIEBAIHN0YXRpYyB2b2lkIGxzaV9leGVjdXRlX3NjcmlwdChMU0lTdGF0ZSAqcykKLSAKLSAgICAgcy0+aXN0YXQxIHw9IExTSV9JU1RBVDFfU1JVTjsKLSBhZ2FpbjoKLS0gICAgaW5zbl9wcm9jZXNzZWQrKzsKLSsgICAgaWYgKCsraW5zbl9wcm9jZXNzZWQgPiBMU0lfTUFYX0lOU04pIHsKLSsgICAgICAgIC8qIFNvbWUgd2luZG93cyBkcml2ZXJzIG1ha2UgdGhlIGRldmljZSBzcGluIHdhaXRpbmcgZm9yIGEgbWVtb3J5Ci0rICAgICAgICAgICBsb2NhdGlvbiB0byBjaGFuZ2UuICBJZiB3ZSBoYXZlIGJlZW4gZXhlY3V0ZWQgYSBsb3Qgb2YgY29kZSB0aGVuCi0rICAgICAgICAgICBhc3N1bWUgdGhpcyBpcyB0aGUgY2FzZSBhbmQgZm9yY2UgYW4gdW5leHBlY3RlZCBkZXZpY2UgZGlzY29ubmVjdC4KLSsgICAgICAgICAgIFRoaXMgaXMgYXBwYXJlbnRseSBzdWZmaWNpZW50IHRvIGJlYXQgdGhlIGRyaXZlcnMgaW50byBzdWJtaXNzaW9uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIShzLT5zaWVuMCAmIExTSV9TSVNUMF9VREMpKSB7Ci0rICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAibHNpX3Njc2k6IGluZi4gbG9vcCB3aXRoIFVEQyBtYXNrZWQiKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGxzaV9zY3JpcHRfc2NzaV9pbnRlcnJ1cHQocywgTFNJX1NJU1QwX1VEQywgMCk7Ci0rICAgICAgICBsc2lfZGlzY29ubmVjdChzKTsKLSsgICAgICAgIHRyYWNlX2xzaV9leGVjdXRlX3NjcmlwdF9zdG9wKCk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgaW5zbiA9IHJlYWRfZHdvcmQocywgcy0+ZHNwKTsKLSAgICAgaWYgKCFpbnNuKSB7Ci0gICAgICAgICAvKiBJZiB3ZSByZWNlaXZlIGFuIGVtcHR5IG9wY29kZSBpbmNyZW1lbnQgdGhlIERTUCBieSA0IGJ5dGVzCi1AQCAtMTU3MCwxOSArMTU4Nyw3IEBAIGFnYWluOgotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgfQotLSAgICBpZiAoaW5zbl9wcm9jZXNzZWQgPiAxMDAwMCAmJiBzLT53YWl0aW5nID09IExTSV9OT1dBSVQpIHsKLS0gICAgICAgIC8qIFNvbWUgd2luZG93cyBkcml2ZXJzIG1ha2UgdGhlIGRldmljZSBzcGluIHdhaXRpbmcgZm9yIGEgbWVtb3J5Ci0tICAgICAgICAgICBsb2NhdGlvbiB0byBjaGFuZ2UuICBJZiB3ZSBoYXZlIGJlZW4gZXhlY3V0ZWQgYSBsb3Qgb2YgY29kZSB0aGVuCi0tICAgICAgICAgICBhc3N1bWUgdGhpcyBpcyB0aGUgY2FzZSBhbmQgZm9yY2UgYW4gdW5leHBlY3RlZCBkZXZpY2UgZGlzY29ubmVjdC4KLS0gICAgICAgICAgIFRoaXMgaXMgYXBwYXJlbnRseSBzdWZmaWNpZW50IHRvIGJlYXQgdGhlIGRyaXZlcnMgaW50byBzdWJtaXNzaW9uLgotLSAgICAgICAgICovCi0tICAgICAgICBpZiAoIShzLT5zaWVuMCAmIExTSV9TSVNUMF9VREMpKSB7Ci0tICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhMT0dfR1VFU1RfRVJST1IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAibHNpX3Njc2k6IGluZi4gbG9vcCB3aXRoIFVEQyBtYXNrZWQiKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGxzaV9zY3JpcHRfc2NzaV9pbnRlcnJ1cHQocywgTFNJX1NJU1QwX1VEQywgMCk7Ci0tICAgICAgICBsc2lfZGlzY29ubmVjdChzKTsKLS0gICAgfSBlbHNlIGlmIChzLT5pc3RhdDEgJiBMU0lfSVNUQVQxX1NSVU4gJiYgcy0+d2FpdGluZyA9PSBMU0lfTk9XQUlUKSB7Ci0rICAgIGlmIChzLT5pc3RhdDEgJiBMU0lfSVNUQVQxX1NSVU4gJiYgcy0+d2FpdGluZyA9PSBMU0lfTk9XQUlUKSB7Ci0gICAgICAgICBpZiAocy0+ZGNudGwgJiBMU0lfRENOVExfU1NNKSB7Ci0gICAgICAgICAgICAgbHNpX3NjcmlwdF9kbWFfaW50ZXJydXB0KHMsIExTSV9EU1RBVF9TU0kpOwotICAgICAgICAgfSBlbHNlIHsKLUBAIC0xOTcwLDYgKzE5NzUsMTAgQEAgc3RhdGljIHZvaWQgbHNpX3JlZ193cml0ZWIoTFNJU3RhdGUgKnMsIGludCBvZmZzZXQsIHVpbnQ4X3QgdmFsKQotICAgICBjYXNlIDB4MmY6IC8qIERTUFsyNDozMV0gKi8KLSAgICAgICAgIHMtPmRzcCAmPSAweDAwZmZmZmZmOwotICAgICAgICAgcy0+ZHNwIHw9IHZhbCA8PCAyNDsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBGSVhNRTogaWYgcy0+d2FpdGluZyAhPSBMU0lfTk9XQUlULCB0aGlzIHdpbGwgb25seSBleGVjdXRlIG9uZQotKyAgICAgICAgICogaW5zdHJ1Y3Rpb24uICBJcyB0aGlzIGNvcnJlY3Q/Ci0rICAgICAgICAgKi8KLSAgICAgICAgIGlmICgocy0+ZG1vZGUgJiBMU0lfRE1PREVfTUFOKSA9PSAwCi0gICAgICAgICAgICAgJiYgKHMtPmlzdGF0MSAmIExTSV9JU1RBVDFfU1JVTikgPT0gMCkKLSAgICAgICAgICAgICBsc2lfZXhlY3V0ZV9zY3JpcHQocyk7Ci1AQCAtMTk4OCw2ICsxOTk3LDEwIEBAIHN0YXRpYyB2b2lkIGxzaV9yZWdfd3JpdGViKExTSVN0YXRlICpzLCBpbnQgb2Zmc2V0LCB1aW50OF90IHZhbCkKLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIDB4M2I6IC8qIERDTlRMICovCi0gICAgICAgICBzLT5kY250bCA9IHZhbCAmIH4oTFNJX0RDTlRMX1BGRiB8IExTSV9EQ05UTF9TVEQpOwotKyAgICAgICAgLyoKLSsgICAgICAgICAqIEZJWE1FOiBpZiBzLT53YWl0aW5nICE9IExTSV9OT1dBSVQsIHRoaXMgd2lsbCBvbmx5IGV4ZWN1dGUgb25lCi0rICAgICAgICAgKiBpbnN0cnVjdGlvbi4gIElzIHRoaXMgY29ycmVjdD8KLSsgICAgICAgICAqLwotICAgICAgICAgaWYgKCh2YWwgJiBMU0lfRENOVExfU1REKSAmJiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOKSA9PSAwKQotICAgICAgICAgICAgIGxzaV9leGVjdXRlX3NjcmlwdChzKTsKLSAgICAgICAgIGJyZWFrOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTExMDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTExMDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThmM2UxZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xMTEwMi5wYXRjaApAQCAtMCwwICsxLDE0OCBAQAorRnJvbSA4ZmZiNzI2NWFmNjRlYzgxNzQ4MzM1ZWM4ZjIwZTdhYjU0MmMzODUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitEYXRlOiBUdWUsIDI0IE1hciAyMDIwIDIyOjU3OjIyICswNTMwCitTdWJqZWN0OiBbUEFUQ0hdIG5ldDogdHVsaXA6IGNoZWNrIGZyYW1lIHNpemUgYW5kIHIvdyBkYXRhIGxlbmd0aAorCitUdWxpcCBuZXR3b3JrIGRyaXZlciB3aGlsZSBjb3B5aW5nIHR4L3J4IGJ1ZmZlcnMgZG9lcyBub3QgY2hlY2sKK2ZyYW1lIHNpemUgYWdhaW5zdCByL3cgZGF0YSBsZW5ndGguIFRoaXMgbWF5IGxlYWQgdG8gT09CIGJ1ZmZlcgorYWNjZXNzLiBBZGQgY2hlY2sgdG8gYXZvaWQgaXQuCisKK0xpbWl0IGl0ZXJhdGlvbnMgb3ZlciBkZXNjcmlwdG9ycyB0byBhdm9pZCBwb3RlbnRpYWwgaW5maW5pdGUKK2xvb3AgaXNzdWUgaW4gdHVsaXBfeG1pdF9saXN0X3VwZGF0ZS4KKworUmVwb3J0ZWQtYnk6IExpIFFpYW5nIDxwYW5ncGVpLmxxQGFudGZpbi5jb20+CitSZXBvcnRlZC1ieTogWmltaW5nIFpoYW5nIDxlenJha2llekBnbWFpbC5jb20+CitSZXBvcnRlZC1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KK1Rlc3RlZC1ieTogTGkgUWlhbmcgPGxpcTNlYUBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogTGkgUWlhbmcgPGxpcTNlYUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9OGZmYjcyNjVhZjY0ZWM4MTc0ODMzNWVjOGYyMGU3YWI1NDJjMzg1MF0KK0NWRTogQ1ZFLTIwMjAtMTExMDIKK1NpZ25lZC1vZmYtYnk6IENoZWUgWWFuZyBMZWUgPGNoZWUueWFuZy5sZWVAaW50ZWwuY29tPgorLS0tCisgaHcvbmV0L3R1bGlwLmMgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L25ldC90dWxpcC5jIGIvaHcvbmV0L3R1bGlwLmMKK2luZGV4IGNmYWMyNzEuLjEyOTVmNTEgMTAwNjQ0CistLS0gYS9ody9uZXQvdHVsaXAuYworKysrIGIvaHcvbmV0L3R1bGlwLmMKK0BAIC0xNzAsNiArMTcwLDEwIEBAIHN0YXRpYyB2b2lkIHR1bGlwX2NvcHlfcnhfYnl0ZXMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGxlbiA9IHMtPnJ4X2ZyYW1lX2xlbjsKKyAgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzLT5yeF9mcmFtZV9sZW4gKyBsZW4gPiBzaXplb2Yocy0+cnhfZnJhbWUpKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgcGNpX2RtYV93cml0ZSgmcy0+ZGV2LCBkZXNjLT5idWZfYWRkcjEsIHMtPnJ4X2ZyYW1lICsKKyAgICAgICAgICAgICAocy0+cnhfZnJhbWVfc2l6ZSAtIHMtPnJ4X2ZyYW1lX2xlbiksIGxlbik7CisgICAgICAgICBzLT5yeF9mcmFtZV9sZW4gLT0gbGVuOworQEAgLTE4MSw2ICsxODUsMTAgQEAgc3RhdGljIHZvaWQgdHVsaXBfY29weV9yeF9ieXRlcyhUVUxJUFN0YXRlICpzLCBzdHJ1Y3QgdHVsaXBfZGVzY3JpcHRvciAqZGVzYykKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbGVuID0gcy0+cnhfZnJhbWVfbGVuOworICAgICAgICAgfQorKworKyAgICAgICAgaWYgKHMtPnJ4X2ZyYW1lX2xlbiArIGxlbiA+IHNpemVvZihzLT5yeF9mcmFtZSkpIHsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgICAgICAgICBwY2lfZG1hX3dyaXRlKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMiwgcy0+cnhfZnJhbWUgKworICAgICAgICAgICAgIChzLT5yeF9mcmFtZV9zaXplIC0gcy0+cnhfZnJhbWVfbGVuKSwgbGVuKTsKKyAgICAgICAgIHMtPnJ4X2ZyYW1lX2xlbiAtPSBsZW47CitAQCAtMjI3LDcgKzIzNSw4IEBAIHN0YXRpYyBzc2l6ZV90IHR1bGlwX3JlY2VpdmUoVFVMSVBTdGF0ZSAqcywgY29uc3QgdWludDhfdCAqYnVmLCBzaXplX3Qgc2l6ZSkKKyAKKyAgICAgdHJhY2VfdHVsaXBfcmVjZWl2ZShidWYsIHNpemUpOworIAorLSAgICBpZiAoc2l6ZSA8IDE0IHx8IHNpemUgPiAyMDQ4IHx8IHMtPnJ4X2ZyYW1lX2xlbiB8fCB0dWxpcF9yeF9zdG9wcGVkKHMpKSB7CisrICAgIGlmIChzaXplIDwgMTQgfHwgc2l6ZSA+IHNpemVvZihzLT5yeF9mcmFtZSkgLSA0CisrICAgICAgICB8fCBzLT5yeF9mcmFtZV9sZW4gfHwgdHVsaXBfcnhfc3RvcHBlZChzKSkgeworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKK0BAIC0yNzUsNyArMjg0LDYgQEAgc3RhdGljIHNzaXplX3QgdHVsaXBfcmVjZWl2ZV9uYyhOZXRDbGllbnRTdGF0ZSAqbmMsCisgICAgIHJldHVybiB0dWxpcF9yZWNlaXZlKHFlbXVfZ2V0X25pY19vcGFxdWUobmMpLCBidWYsIHNpemUpOworIH0KKyAKKy0KKyBzdGF0aWMgTmV0Q2xpZW50SW5mbyBuZXRfdHVsaXBfaW5mbyA9IHsKKyAgICAgLnR5cGUgPSBORVRfQ0xJRU5UX0RSSVZFUl9OSUMsCisgICAgIC5zaXplID0gc2l6ZW9mKE5JQ1N0YXRlKSwKK0BAIC01NTgsNyArNTY2LDcgQEAgc3RhdGljIHZvaWQgdHVsaXBfdHgoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgICAgICBpZiAoKHMtPmNzcls2XSA+PiBDU1I2X09NX1NISUZUKSAmIENTUjZfT01fTUFTSykgeworICAgICAgICAgICAgIC8qIEludGVybmFsIG9yIGV4dGVybmFsIExvb3BiYWNrICovCisgICAgICAgICAgICAgdHVsaXBfcmVjZWl2ZShzLCBzLT50eF9mcmFtZSwgcy0+dHhfZnJhbWVfbGVuKTsKKy0gICAgICAgIH0gZWxzZSB7CisrICAgICAgICB9IGVsc2UgaWYgKHMtPnR4X2ZyYW1lX2xlbiA8PSBzaXplb2Yocy0+dHhfZnJhbWUpKSB7CisgICAgICAgICAgICAgcWVtdV9zZW5kX3BhY2tldChxZW11X2dldF9xdWV1ZShzLT5uaWMpLAorICAgICAgICAgICAgICAgICBzLT50eF9mcmFtZSwgcy0+dHhfZnJhbWVfbGVuKTsKKyAgICAgICAgIH0KK0BAIC01NzAsMjMgKzU3OCwzMSBAQCBzdGF0aWMgdm9pZCB0dWxpcF90eChUVUxJUFN0YXRlICpzLCBzdHJ1Y3QgdHVsaXBfZGVzY3JpcHRvciAqZGVzYykKKyAgICAgfQorIH0KKyAKKy1zdGF0aWMgdm9pZCB0dWxpcF9jb3B5X3R4X2J1ZmZlcnMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisrc3RhdGljIGludCB0dWxpcF9jb3B5X3R4X2J1ZmZlcnMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgeworICAgICBpbnQgbGVuMSA9IChkZXNjLT5jb250cm9sID4+IFRERVMxX0JVRjFfU0laRV9TSElGVCkgJiBUREVTMV9CVUYxX1NJWkVfTUFTSzsKKyAgICAgaW50IGxlbjIgPSAoZGVzYy0+Y29udHJvbCA+PiBUREVTMV9CVUYyX1NJWkVfU0hJRlQpICYgVERFUzFfQlVGMl9TSVpFX01BU0s7CisgCisrICAgIGlmIChzLT50eF9mcmFtZV9sZW4gKyBsZW4xID4gc2l6ZW9mKHMtPnR4X2ZyYW1lKSkgeworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisgICAgIGlmIChsZW4xKSB7CisgICAgICAgICBwY2lfZG1hX3JlYWQoJnMtPmRldiwgZGVzYy0+YnVmX2FkZHIxLAorICAgICAgICAgICAgIHMtPnR4X2ZyYW1lICsgcy0+dHhfZnJhbWVfbGVuLCBsZW4xKTsKKyAgICAgICAgIHMtPnR4X2ZyYW1lX2xlbiArPSBsZW4xOworICAgICB9CisgCisrICAgIGlmIChzLT50eF9mcmFtZV9sZW4gKyBsZW4yID4gc2l6ZW9mKHMtPnR4X2ZyYW1lKSkgeworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisgICAgIGlmIChsZW4yKSB7CisgICAgICAgICBwY2lfZG1hX3JlYWQoJnMtPmRldiwgZGVzYy0+YnVmX2FkZHIyLAorICAgICAgICAgICAgIHMtPnR4X2ZyYW1lICsgcy0+dHhfZnJhbWVfbGVuLCBsZW4yKTsKKyAgICAgICAgIHMtPnR4X2ZyYW1lX2xlbiArPSBsZW4yOworICAgICB9CisgICAgIGRlc2MtPnN0YXR1cyA9IChsZW4xICsgbGVuMikgPyAwIDogMHg3ZmZmZmZmZjsKKysKKysgICAgcmV0dXJuIDA7CisgfQorIAorIHN0YXRpYyB2b2lkIHR1bGlwX3NldHVwX2ZpbHRlcl9hZGRyKFRVTElQU3RhdGUgKnMsIHVpbnQ4X3QgKmJ1ZiwgaW50IG4pCitAQCAtNjUxLDEzICs2NjcsMTUgQEAgc3RhdGljIHVpbnQzMl90IHR1bGlwX3RzKFRVTElQU3RhdGUgKnMpCisgCisgc3RhdGljIHZvaWQgdHVsaXBfeG1pdF9saXN0X3VwZGF0ZShUVUxJUFN0YXRlICpzKQorIHsKKysjZGVmaW5lIFRVTElQX0RFU0NfTUFYIDEyOAorKyAgICB1aW50OF90IGkgPSAwOworICAgICBzdHJ1Y3QgdHVsaXBfZGVzY3JpcHRvciBkZXNjOworIAorICAgICBpZiAodHVsaXBfdHMocykgIT0gQ1NSNV9UU19TVVNQRU5ERUQpIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICBmb3IgKDs7KSB7CisrICAgIGZvciAoaSA9IDA7IGkgPCBUVUxJUF9ERVNDX01BWDsgaSsrKSB7CisgICAgICAgICB0dWxpcF9kZXNjX3JlYWQocywgcy0+Y3VycmVudF90eF9kZXNjLCAmZGVzYyk7CisgICAgICAgICB0dWxpcF9kdW1wX3R4X2Rlc2NyaXB0b3IocywgJmRlc2MpOworIAorQEAgLTY3NSwxMCArNjkzLDEwIEBAIHN0YXRpYyB2b2lkIHR1bGlwX3htaXRfbGlzdF91cGRhdGUoVFVMSVBTdGF0ZSAqcykKKyAgICAgICAgICAgICAgICAgcy0+dHhfZnJhbWVfbGVuID0gMDsKKyAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgdHVsaXBfY29weV90eF9idWZmZXJzKHMsICZkZXNjKTsKKy0KKy0gICAgICAgICAgICBpZiAoZGVzYy5jb250cm9sICYgVERFUzFfTFMpIHsKKy0gICAgICAgICAgICAgICAgdHVsaXBfdHgocywgJmRlc2MpOworKyAgICAgICAgICAgIGlmICghdHVsaXBfY29weV90eF9idWZmZXJzKHMsICZkZXNjKSkgeworKyAgICAgICAgICAgICAgICBpZiAoZGVzYy5jb250cm9sICYgVERFUzFfTFMpIHsKKysgICAgICAgICAgICAgICAgICAgIHR1bGlwX3R4KHMsICZkZXNjKTsKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHR1bGlwX2Rlc2Nfd3JpdGUocywgcy0+Y3VycmVudF90eF9kZXNjLCAmZGVzYyk7CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTE3MTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTcxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTdiYzgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTE3MTEucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA2OTNmZDJhY2RmMTRkZDg2YzBiZjg1MjYxMGYxYzJjY2E4MGE3NGRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmVsaXBlIEZyYW5jaW9zaSA8ZmVsaXBlQG51dGFuaXguY29tPgorRGF0ZTogVGh1LCAyMyBKYW4gMjAyMCAxMjo0NDo1OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBpc2NzaTogQ2FwIGJsb2NrIGNvdW50IGZyb20gR0VUIExCQSBTVEFUVVMgKENWRS0yMDIwLTE3MTEpCisKK1doZW4gcXVlcnlpbmcgYW4gaVNDU0kgc2VydmVyIGZvciB0aGUgcHJvdmlzaW9uaW5nIHN0YXR1cyBvZiBibG9ja3MgKHZpYQorR0VUIExCQSBTVEFUVVMpLCBRZW11IG9ubHkgdmFsaWRhdGVzIHRoYXQgdGhlIHJlc3BvbnNlIGRlc2NyaXB0b3IgemVybydzCitMQkEgbWF0Y2hlcyB0aGUgb25lIHJlcXVlc3RlZC4gR2l2ZW4gdGhlIFNDU0kgc3BlYyBhbGxvd3Mgc2VydmVycyB0bworcmVzcG9uZCB3aXRoIHRoZSBzdGF0dXMgb2YgYmxvY2tzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBMVU4sIFFlbXUgbWF5CitoYXZlIGl0cyBoZWFwIGNvcnJ1cHRlZCBieSBjbGVhcmluZy9zZXR0aW5nIHRvbyBtYW55IGJpdHMgYXQgdGhlIGVuZCBvZgoraXRzIGFsbG9jbWFwIGZvciB0aGUgTFVOLgorCitBIG1hbGljaW91cyBndWVzdCBpbiBjb250cm9sIG9mIHRoZSBpU0NTSSBzZXJ2ZXIgY291bGQgY2FyZWZ1bGx5IHByb2dyYW0KK1FlbXUncyBoZWFwIChieSBzZWxlY3RpdmVseSBzZXR0aW5nIHRoZSBiaXRtYXApIGFuZCB0aGVuIHNtYXNoIGl0LgorCitUaGlzIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGJpdHMgdGhhdCBpc2NzaV9jb19ibG9ja19zdGF0dXMoKSB3aWxsIHRyeSB0bwordXBkYXRlIGluIHRoZSBhbGxvY21hcCBzbyBpdCBjYW4ndCBvdmVyZmxvdyB0aGUgYml0bWFwLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPXBhdGNoO2g9NjkzZmQyYWNkZjE0ZGQ4NmMwYmY4NTI2MTBmMWMyY2NhODBhNzRkY10KK0NWRTogQ1ZFLTIwMjAtMTcxMQorCitGaXhlczogQ1ZFLTIwMjAtMTcxMQorQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1NpZ25lZC1vZmYtYnk6IEZlbGlwZSBGcmFuY2lvc2kgPGZlbGlwZUBudXRhbml4LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIFR1cnNjaG1pZCA8cGV0ZXIudHVyc2NobUBudXRhbml4LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJhcGhhZWwgTm9yd2l0eiA8cmFwaGFlbC5ub3J3aXR6QG51dGFuaXguY29tPgorU2lnbmVkLW9mZi1ieTogS2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IExlZSBDaGVlIFlhbmcgPGNoZWUueWFuZy5sZWVAaW50ZWwuY29tPgorLS0tCisgYmxvY2svaXNjc2kuYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmxvY2svaXNjc2kuYyBiL2Jsb2NrL2lzY3NpLmMKK2luZGV4IDJhZWE3ZTMuLmNiZDU3MjkgMTAwNjQ0CistLS0gYS9ibG9jay9pc2NzaS5jCisrKysgYi9ibG9jay9pc2NzaS5jCitAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIGlzY3NpX2NvX2Jsb2NrX3N0YXR1cyhCbG9ja0RyaXZlclN0YXRlICpicywKKyAgICAgc3RydWN0IHNjc2lfZ2V0X2xiYV9zdGF0dXMgKmxiYXMgPSBOVUxMOworICAgICBzdHJ1Y3Qgc2NzaV9sYmFfc3RhdHVzX2Rlc2NyaXB0b3IgKmxiYXNkID0gTlVMTDsKKyAgICAgc3RydWN0IElzY3NpVGFzayBpVGFzazsKKy0gICAgdWludDY0X3QgbGJhOworKyAgICB1aW50NjRfdCBsYmEsIG1heF9ieXRlczsKKyAgICAgaW50IHJldDsKKyAKKyAgICAgaXNjc2lfY29faW5pdF9pc2NzaXRhc2soaXNjc2lsdW4sICZpVGFzayk7CitAQCAtNzIxLDYgKzcyMSw3IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIGlzY3NpX2NvX2Jsb2NrX3N0YXR1cyhCbG9ja0RyaXZlclN0YXRlICpicywKKyAgICAgfQorIAorICAgICBsYmEgPSBvZmZzZXQgLyBpc2NzaWx1bi0+YmxvY2tfc2l6ZTsKKysgICAgbWF4X2J5dGVzID0gKGlzY3NpbHVuLT5udW1fYmxvY2tzIC0gbGJhKSAqIGlzY3NpbHVuLT5ibG9ja19zaXplOworIAorICAgICBxZW11X211dGV4X2xvY2soJmlzY3NpbHVuLT5tdXRleCk7CisgcmV0cnk6CitAQCAtNzY0LDcgKzc2NSw3IEBAIHJldHJ5OgorICAgICAgICAgZ290byBvdXRfdW5sb2NrOworICAgICB9CisgCistICAgICpwbnVtID0gKGludDY0X3QpIGxiYXNkLT5udW1fYmxvY2tzICogaXNjc2lsdW4tPmJsb2NrX3NpemU7CisrICAgICpwbnVtID0gTUlOKChpbnQ2NF90KSBsYmFzZC0+bnVtX2Jsb2NrcyAqIGlzY3NpbHVuLT5ibG9ja19zaXplLCBtYXhfYnl0ZXMpOworIAorICAgICBpZiAobGJhc2QtPnByb3Zpc2lvbmluZyA9PSBTQ1NJX1BST1ZJU0lPTklOR19UWVBFX0RFQUxMT0NBVEVEIHx8CisgICAgICAgICBsYmFzZC0+cHJvdmlzaW9uaW5nID09IFNDU0lfUFJPVklTSU9OSU5HX1RZUEVfQU5DSE9SRUQpIHsKKy0tIAorMS44LjMuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2YmNhNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTEucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBiMjY2M2Q1MjdhMTk5MmJhOThjMDI2NjQ1OGIyMWFkYTNiOWQwZDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MDc6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGNwX2VtdTogRml4IG9vYiBhY2Nlc3MKKworVGhlIG1haW4gbG9vcCBvbmx5IGNoZWNrcyBmb3Igb25lIGF2YWlsYWJsZSBieXRlLCB3aGlsZSB3ZSBzb21ldGltZXMKK25lZWQgdHdvIGJ5dGVzLgorCitDVkU6IENWRS0yMDIwLTcwMzkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvc2xpcnAvbGlic2xpcnAvY29tbWl0LzI2NTVmZmZlZDdhOWU3NjViY2I0NzAxZGQ4NzZlOWRhYjk3NWYyODldCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zcmMvdGNwX3N1YnIuYyB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc2xpcnAvc3JjL3RjcF9zdWJyLmMgYi9zbGlycC9zcmMvdGNwX3N1YnIuYworaW5kZXggZDZkZDEzMy4uNGJlYTJkNCAxMDA2NDQKKy0tLSBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jCisrKysgYi9zbGlycC9zcmMvdGNwX3N1YnIuYworQEAgLTg4Niw2ICs4ODYsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgICAgIGNhc2UgNToKKysgICAgICAgICAgICAgICAgaWYgKGJwdHIgPT0gbS0+bV9kYXRhICsgbS0+bV9sZW4gLSAxKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBXZSBuZWVkIHR3byBieXRlcyAqLworICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHZlcnNpb25zIDEuMCBhbmQKKyAgICAgICAgICAgICAgICAgICogMi4wIGlzIGhlcmUuIEZvciBmdXR1cmUgdmVyc2lvbnMgb2YKK0BAIC05MDEsNiArOTAzLDEwIEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICAgICAgLyogVGhpcyBpcyB0aGUgZmllbGQgY29udGFpbmluZyB0aGUgcG9ydAorICAgICAgICAgICAgICAgICAgKiBudW1iZXIgdGhhdCBSQS1wbGF5ZXIgaXMgbGlzdGVuaW5nIHRvLgorICAgICAgICAgICAgICAgICAgKi8KKysKKysgICAgICAgICAgICAgICAgaWYgKGJwdHIgPT0gbS0+bV9kYXRhICsgbS0+bV9sZW4gLSAxKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBXZSBuZWVkIHR3byBieXRlcyAqLworKworICAgICAgICAgICAgICAgICBscG9ydCA9ICgoKHVpbnQ4X3QgKilicHRyKVswXSA8PCA4KSArICgodWludDhfdCAqKWJwdHIpWzFdOworICAgICAgICAgICAgICAgICBpZiAobHBvcnQgPCA2OTcwKQorICAgICAgICAgICAgICAgICAgICAgbHBvcnQgKz0gMjU2OyAvKiBkb24ndCBrbm93IHdoeSAqLworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTAwZmEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMi5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDhmNjdlNzZlNDE0OGUzN2YzZDhkMmJjYmRlZTc0MTdmZGVkYjc2NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBGZWIgMjAyMCAxMjoxMDozNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzbGlycDogdXNlIGNvcnJlY3Qgc2l6ZSB3aGlsZSBlbXVsYXRpbmcgY29tbWFuZHMKKworV2hpbGUgZW11bGF0aW5nIHNlcnZpY2VzIGluIHRjcF9lbXUoKSwgaXQgdXNlcyAnbWJ1Zicgc2l6ZQorJ20tPm1fc2l6ZScgdG8gd3JpdGUgY29tbWFuZHMgdmlhIHNucHJpbnRmKDMpLiBVc2UgTV9GUkVFUk9PTShtKQorc2l6ZSB0byBhdm9pZCBwb3NzaWJsZSBPT0IgYWNjZXNzLgorU2lnbmVkLW9mZi1ieTogZGVmYXVsdCBhdmF0YXJQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IFNhbXVlbCBUaGliYXVsdCdzIGF2YXRhclNhbXVlbCBUaGliYXVsdAorPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+CitNZXNzYWdlLUlkOiA8MjAyMDAxMDkwOTQyMjguNzk3NjQtMy1wcGFuZGl0QHJlZGhhdC5jb20+CisKK0NWRTogQ1ZFLTIwMjAtNzAzOQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9zbGlycC9saWJzbGlycC9jb21taXQvODJlYmU5YzM3MGEwZTI5NzBmYjU2OTVhYTE5YWE1MjE0YTZhMWM4MF0KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNsaXJwL3NyYy90Y3Bfc3Vici5jIHwgOSArKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2xpcnAvc3JjL3RjcF9zdWJyLmMgYi9zbGlycC9zcmMvdGNwX3N1YnIuYworaW5kZXggNGJlYTJkNC4uZThlZDRlZiAxMDA2NDQKKy0tLSBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jCisrKysgYi9zbGlycC9zcmMvdGNwX3N1YnIuYworQEAgLTY5Niw3ICs2OTYsNyBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgbjQgPSAobGFkZHIgJiAweGZmKTsKKyAKKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBtLT5tX3NpemUgLSBtLT5tX2xlbiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPUlQgJWQsJWQsJWQsJWQsJWQsJWRcclxuJXMiLCBuMSwgbjIsIG4zLCBuNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuNSwgbjYsIHggPT0gNyA/IGJ1ZmYgOiAiIik7CisgICAgICAgICAgICAgcmV0dXJuIDE7CitAQCAtNzMxLDggKzczMSw3IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICBuNCA9IChsYWRkciAmIDB4ZmYpOworIAorICAgICAgICAgICAgIG0tPm1fbGVuID0gYnB0ciAtIG0tPm1fZGF0YTsgLyogQWRqdXN0IGxlbmd0aCAqLworLSAgICAgICAgICAgIG0tPm1fbGVuICs9CistICAgICAgICAgICAgICAgIHNucHJpbnRmKGJwdHIsIG0tPm1fc2l6ZSAtIG0tPm1fbGVuLAorKyAgICAgICAgICAgIG0tPm1fbGVuICs9IHNucHJpbnRmKGJwdHIsIE1fRlJFRVJPT00obSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIyNyBFbnRlcmluZyBQYXNzaXZlIE1vZGUgKCVkLCVkLCVkLCVkLCVkLCVkKVxyXG4lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIHggPT0gNyA/IGJ1ZmYgOiAiIik7CisgCitAQCAtNzU4LDggKzc1Nyw4IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgIGlmIChtLT5tX2RhdGFbbS0+bV9sZW4gLSAxXSA9PSAnXDAnICYmIGxwb3J0ICE9IDAgJiYKKyAgICAgICAgICAgICAoc28gPSB0Y3BfbGlzdGVuKHNsaXJwLCBJTkFERFJfQU5ZLCAwLCBzby0+c29fbGFkZHIuc19hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRvbnMobHBvcnQpLCBTU19GQUNDRVBUT05DRSkpICE9IE5VTEwpCistICAgICAgICAgICAgbS0+bV9sZW4gPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihtLT5tX2RhdGEsIG0tPm1fc2l6ZSwgIiVkIiwgbnRvaHMoc28tPnNvX2Zwb3J0KSkgKyAxOworKyAgICAgICAgICAgIG0tPm1fbGVuID0gc25wcmludGYobS0+bV9kYXRhLCBNX1JPT00obSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQiLCBudG9ocyhzby0+c29fZnBvcnQpKSArIDE7CisgICAgICAgICByZXR1cm4gMTsKKyAKKyAgICAgY2FzZSBFTVVfSVJDOgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGNlNDgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMy5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIDBiMDM5NTliNzIwMzZhZmNlMTUxNzgzNzIwZDllNTQ5ODhjZjc2ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBGZWIgMjAyMCAxMjoxNTowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzbGlycDogdXNlIGNvcnJlY3Qgc2l6ZSB3aGlsZSBlbXVsYXRpbmcgSVJDIGNvbW1hbmRzCisKK1doaWxlIGVtdWxhdGluZyBJUkMgRENDIGNvbW1hbmRzLCB0Y3BfZW11KCkgdXNlcyAnbWJ1Zicgc2l6ZQorJ20tPm1fc2l6ZScgdG8gd3JpdGUgRENDIGNvbW1hbmRzIHZpYSBzbnByaW50ZigzKS4gVGhpcyBtYXkKK2xlYWQgdG8gT09CIHdyaXRlIGFjY2VzcywgYmVjYXVzZSAnYnB0cicgcG9pbnRzIHNvbWV3aGVyZSBpbgordGhlIG1pZGRsZSBvZiAnbWJ1ZicgYnVmZmVyLCBub3QgYXQgdGhlIHN0YXJ0LiBVc2UgTV9GUkVFUk9PTShtKQorc2l6ZSB0byBhdm9pZCBPT0IgYWNjZXNzLgorUmVwb3J0ZWQtYnk6IGRlZmF1bHQgYXZhdGFyVmlzaG51IERldiBUSiA8dmlzaG51ZGV2dGpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogZGVmYXVsdCBhdmF0YXJQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK1Jldmlld2VkLWJ5OiBTYW11ZWwgVGhpYmF1bHQncyBhdmF0YXJTYW11ZWwgVGhpYmF1bHQKKzxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorTWVzc2FnZS1JZDogPDIwMjAwMTA5MDk0MjI4Ljc5NzY0LTItcHBhbmRpdEByZWRoYXQuY29tPgorCitDVkU6IENWRS0yMDIwLTcwMzkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvc2xpcnAvbGlic2xpcnAvY29tbWl0L2NlMTMxMDI5ZDZkNGE0MDVjYjdkM2FjNjcxNmQwM2U1OGZiNGE1ZDldCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zcmMvdGNwX3N1YnIuYyB8IDExICsrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IGU4ZWQ0ZWYuLjNhNGE4ZWUgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC03NzcsNyArNzc3LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9zaXplLCAiRENDIENIQVQgY2hhdCAlbHUgJXUlY1xuIiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEQ0MgQ0hBVCBjaGF0ICVsdSAldSVjXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50b2hzKHNvLT5zb19mcG9ydCksIDEpOworICAgICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnB0ciwgIkRDQyBTRU5EICUyNTZzICV1ICV1ICV1IiwgYnVmZiwgJmxhZGRyLCAmbHBvcnQsCitAQCAtNzg3LDggKzc4OCw4IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG0tPm1fbGVuID0gYnB0ciAtIG0tPm1fZGF0YTsgLyogQWRqdXN0IGxlbmd0aCAqLworLSAgICAgICAgICAgIG0tPm1fbGVuICs9CistICAgICAgICAgICAgICAgIHNucHJpbnRmKGJwdHIsIG0tPm1fc2l6ZSwgIkRDQyBTRU5EICVzICVsdSAldSAldSVjXG4iLCBidWZmLAorKyAgICAgICAgICAgIG0tPm1fbGVuICs9IHNucHJpbnRmKGJwdHIsIE1fRlJFRVJPT00obSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICJEQ0MgU0VORCAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbnRvaGwoc28tPnNvX2ZhZGRyLnNfYWRkciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG50b2hzKHNvLT5zb19mcG9ydCksIG4xLCAxKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJwdHIsICJEQ0MgTU9WRSAlMjU2cyAldSAldSAldSIsIGJ1ZmYsICZsYWRkciwgJmxwb3J0LAorQEAgLTc5OCw4ICs3OTksOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUsICJEQ0MgTU9WRSAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIE1PVkUgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCBuMSwgMSk7CisgICAgICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MjExLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcyMTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiZTRjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MjExLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMTRlYzM2ZTEwN2E4YzlhZjdkMGE4MGMzNTcxZmUzOWIyOTFmZjFkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogTW9uLCAxMyBKYW4gMjAyMCAxNzo0NDozMSArMDUzMAorU3ViamVjdDogW1BBVENIXSBzbGlycDogdGZ0cDogcmVzdHJpY3QgcmVsYXRpdmUgcGF0aCBhY2Nlc3MKKwordGZ0cCByZXN0cmljdHMgcmVsYXRpdmUgb3IgZGlyZWN0b3J5IHBhdGggYWNjZXNzIG9uIExpbnV4IHN5c3RlbXMuCitBcHBseSBzYW1lIHJlc3RyaWN0aW9ucyBvbiBXaW5kb3dzIHN5c3RlbXMgdG9vLiBJdCBoZWxwcyB0byBhdm9pZAorZGlyZWN0b3J5IHRyYXZlcnNhbCBpc3N1ZS4KKworRml4ZXM6IGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3FlbXUvK2J1Zy8xODEyNDUxCitSZXBvcnRlZC1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitSZXZpZXdlZC1ieTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorTWVzc2FnZS1JZDogPDIwMjAwMTEzMTIxNDMxLjE1NjcwOC0xLXBwYW5kaXRAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwLy0vY29tbWl0LzE0ZWMzNmUxMDdhOGM5YWY3ZDBhODBjMzU3MWZlMzliMjkxZmYxZDQucGF0Y2hdCitDVkU6IENWRS0yMDIwLTcyMTEKK1NpZ25lZC1vZmYtYnk6IENoZWUgWWFuZyBMZWUgPGNoZWUueWFuZy5sZWVAaW50ZWwuY29tPgorCistLS0KKyBzbGlycC9zcmMvdGZ0cC5jIHwgOSArKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2xpcnAvc3JjL3RmdHAuYyBiL3NsaXJwL3NyYy90ZnRwLmMKK2luZGV4IDA5M2MyZTAuLmU1MmU3MWIgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGZ0cC5jCisrKysgYi9zbGlycC9zcmMvdGZ0cC5jCitAQCAtMzQ0LDggKzM0NCwxMyBAQCBzdGF0aWMgdm9pZCB0ZnRwX2hhbmRsZV9ycnEoU2xpcnAgKnNsaXJwLCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqc3Jjc2FzLAorICAgICBrICs9IDY7IC8qIHNraXBwaW5nIG9jdGV0ICovCisgCisgICAgIC8qIGRvIHNhbml0eSBjaGVja3Mgb24gdGhlIGZpbGVuYW1lICovCistICAgIGlmICghc3RybmNtcChyZXFfZm5hbWUsICIuLi8iLCAzKSB8fAorLSAgICAgICAgcmVxX2ZuYW1lW3N0cmxlbihyZXFfZm5hbWUpIC0gMV0gPT0gJy8nIHx8IHN0cnN0cihyZXFfZm5hbWUsICIvLi4vIikpIHsKKysgICAgaWYgKAorKyNpZmRlZiBHX09TX1dJTjMyCisrICAgICAgICBzdHJzdHIocmVxX2ZuYW1lLCAiLi5cXCIpIHx8CisrICAgICAgICByZXFfZm5hbWVbc3RybGVuKHJlcV9mbmFtZSkgLSAxXSA9PSAnXFwnIHx8CisrI2VuZGlmCisrICAgICAgICBzdHJzdHIocmVxX2ZuYW1lLCAiLi4vIikgfHwKKysgICAgICAgIHJlcV9mbmFtZVtzdHJsZW4ocmVxX2ZuYW1lKSAtIDFdID09ICcvJykgeworICAgICAgICAgdGZ0cF9zZW5kX2Vycm9yKHNwdCwgMiwgIkFjY2VzcyB2aW9sYXRpb24iLCB0cCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0CmluZGV4IDIyMDZiMzEuLmIyNWE3OTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3J1bi1wdGVzdApAQCAtNyw0ICs3LDQgQEAKIGV4cG9ydCBTUkNfUEFUSD0kcHRlc3RkaXIKIAogY2QgJHB0ZXN0ZGlyL3Rlc3RzCi1tYWtlIC1mIE1ha2VmaWxlLmluY2x1ZGUgLWsgcnVudGVzdC1URVNUUyB8IHNlZCAnLzogT0svIHMvXi9QQVNTOiAvZycKK21ha2UgLWYgTWFrZWZpbGUuaW5jbHVkZSAtayBydW50ZXN0LVRFU1RTIHwgc2VkICcvXm9rIC9zL29rIC9QQVNTOiAvZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4yLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLVJpcC1vdXQtcGFydGlhbC1zdXBwb3J0LWZvci11bnVzZWQtTUQyLWFuZC1SSVBFTUQxNjAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNGUzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gMmQ1M2QxZTMwOGE1YmQxNWExNmNjMjg5ZmE3ZTFmMjY0ZWE3MDZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhbnUgTWF0aWxhaW5lbiA8cG1hdGlsYWlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjYgSnVuIDIwMTggMTA6NDY6MTQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmlwIG91dCBwYXJ0aWFsIHN1cHBvcnQgZm9yIHVudXNlZCBNRDIgYW5kIFJJUEVNRDE2MCBkaWdlc3RzCisKK0luc3BpcmVkIGJ5ICM0NTMsIGFkZGluZyBjb25maWd1cmUtY2hlY2tzIGZvciB1bnVzZWQgZGlnZXN0cyBhbGdvcml0aG1zCitzZWVtcyBub25zZW5zaWNhbCwgYXQgbm8gcG9pbnQgaW4gcnBtIGhpc3RvcnkgaGF2ZSB0aGVzZSBhbGdvcml0aG1zIGJlZW4KK3VzZWQgZm9yIGFueXRoaW5nIGluIHJwbSBzbyB0aGVyZSdzIG5vdCBldmVuIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8KK2NhcmUgYWJvdXQuIFNvIHRoZSBxdWVzdGlvbiBiZWNvbWVzIHdoeSBkbyB3ZSBhcHBlYXIgdG8gaGF2ZSAoc29tZSkKK3N1cHBvcnQgZm9yIHRob3NlIHVudXNlZCBhbGdvcml0aG1zPyBTbyBsZXRzIGRvbid0LCBwcm9ibGVtIHNvbHZlZC4uLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL2NvbW1pdC9mZjRiOTExMWFlYmEwMWRkMDI1ZGQxMzNjZTYxN2ZiODBmNzM5OGEwXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBycG1pby9kaWdlc3RfYmVlY3J5cHQuYyB8IDcgLS0tLS0tLQorIHJwbWlvL2RpZ2VzdF9uc3MuYyAgICAgIHwgMiAtLQorIHJwbWlvL2RpZ2VzdF9vcGVuc3NsLmMgIHwgNiAtLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMgYi9ycG1pby9kaWdlc3RfYmVlY3J5cHQuYworaW5kZXggNTk3MDI3ZTI1Li42NTNhMzk0OTEgMTAwNjQ0CistLS0gYS9ycG1pby9kaWdlc3RfYmVlY3J5cHQuYworKysrIGIvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKK0BAIC0xMzIsMTAgKzEzMiw2IEBAIERJR0VTVF9DVFggcnBtRGlnZXN0SW5pdChpbnQgaGFzaGFsZ28sIHJwbURpZ2VzdEZsYWdzIGZsYWdzKQorIAljdHgtPkRpZ2VzdCA9ICh2b2lkICopIHNoYTUxMkRpZ2VzdDsKKyAJYnJlYWs7CisgI2VuZGlmCistICAgIGNhc2UgUEdQSEFTSEFMR09fUklQRU1EMTYwOgorLSAgICBjYXNlIFBHUEhBU0hBTEdPX01EMjoKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19USUdFUjE5MjoKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19IQVZBTF81XzE2MDoKKyAgICAgZGVmYXVsdDoKKyAJZnJlZShjdHgpOworIAlyZXR1cm4gTlVMTDsKK0BAIC0yOTIsOSArMjg4LDYgQEAgc3RhdGljIGludCBwZ3BWZXJpZnlTaWdSU0EocGdwRGlnQWxnIHBncGtleSwgcGdwRGlnQWxnIHBncHNpZywgdWludDhfdCAqaGFzaCwgc2kKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOgorICAgICAgICAgcHJlZml4ID0gIjMwMjEzMDA5MDYwNTJiMGUwMzAyMWEwNTAwMDQxNCI7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgICAgICBwcmVmaXggPSAiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwMjA1MDAwNDEwIjsKKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTI1NjoKKyAgICAgICAgIHByZWZpeCA9ICIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCI7CisgICAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9ycG1pby9kaWdlc3RfbnNzLmMgYi9ycG1pby9kaWdlc3RfbnNzLmMKK2luZGV4IGUxMTkyMGUzZS4uYjNkMmI1NTk1IDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X25zcy5jCisrKysgYi9ycG1pby9kaWdlc3RfbnNzLmMKK0BAIC0xMTcsNyArMTE3LDYgQEAgc3RhdGljIEhBU0hfSGFzaFR5cGUgZ2V0SGFzaFR5cGUoaW50IGhhc2hhbGdvKQorIHsKKyAgICAgc3dpdGNoIChoYXNoYWxnbykgeworICAgICBjYXNlIFBHUEhBU0hBTEdPX01ENToJcmV0dXJuIEhBU0hfQWxnTUQ1OworLSAgICBjYXNlIFBHUEhBU0hBTEdPX01EMjoJcmV0dXJuIEhBU0hfQWxnTUQyOworICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTE6CXJldHVybiBIQVNIX0FsZ1NIQTE7CisgI2lmZGVmIFNIQTIyNF9MRU5HVEgKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEEyMjQ6CXJldHVybiBIQVNIX0FsZ1NIQTIyNDsKK0BAIC0yMTcsNyArMjE2LDYgQEAgc3RhdGljIFNFQ09pZFRhZyBnZXRIYXNoQWxnKHVuc2lnbmVkIGludCBoYXNoYWxnbykKKyB7CisgICAgIHN3aXRjaCAoaGFzaGFsZ28pIHsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19NRDU6CXJldHVybiBTRUNfT0lEX01ENTsKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CXJldHVybiBTRUNfT0lEX01EMjsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOglyZXR1cm4gU0VDX09JRF9TSEExOworICNpZmRlZiBTSEEyMjRfTEVOR1RICisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMjI0OglyZXR1cm4gU0VDX09JRF9TSEEyMjQ7CitkaWZmIC0tZ2l0IGEvcnBtaW8vZGlnZXN0X29wZW5zc2wuYyBiL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKK2luZGV4IDE4ZTUyYTcyNC4uMGFlNDhkZDFkIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X29wZW5zc2wuYworKysrIGIvcnBtaW8vZGlnZXN0X29wZW5zc2wuYworQEAgLTE3MiwxMiArMTcyLDYgQEAgc3RhdGljIGNvbnN0IEVWUF9NRCAqZ2V0RVZQTUQoaW50IGhhc2hhbGdvKQorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTE6CisgICAgICAgICByZXR1cm4gRVZQX3NoYTEoKTsKKyAKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19SSVBFTUQxNjA6CistICAgICAgICByZXR1cm4gRVZQX3JpcGVtZDE2MCgpOworLQorLSAgICBjYXNlIFBHUEhBU0hBTEdPX01EMjoKKy0gICAgICAgIHJldHVybiBFVlBfbWQyKCk7CistCisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMjU2OgorICAgICAgICAgcmV0dXJuIEVWUF9zaGEyNTYoKTsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLXJwbXBsdWdpbnMuYy1jYWxsLWRsZXJyb3ItcHJpb3ItdG8tZGxzeW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG1wbHVnaW5zLmMtY2FsbC1kbGVycm9yLXByaW9yLXRvLWRsc3ltLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NDJlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG1wbHVnaW5zLmMtY2FsbC1kbGVycm9yLXByaW9yLXRvLWRsc3ltLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNjg3OGE4M2Y5YmFjMDE1YzY0ZDgzY2VlNDI1MzBhMjBhMjY0Y2M1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCA3IEphbiAyMDIwIDEyOjAyOjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHJwbXBsdWdpbnMuYzogY2FsbCBkbGVycm9yKCkgcHJpb3IgdG8gZGxzeW0oKQorCitUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgaW4gdGhlIG1hbnBhZ2U7IGlmIHRoZXJlIGlzCithIGxpbmdlcmluZyBlcnJvciBmcm9tIGFuIHVucmVsYXRlZCBkbCooKSBjYWxsIHRoYXQgd2FzCituZXZlciBvYnRhaW5lZCB2aWEgZGxlcnJvcigpLCBpdCBuZWVkcyB0byBiZSBjbGVhcmVkCitwcmlvciB0byBjYWxsaW5nIGRsc3ltKCkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvOTk4XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBsaWIvcnBtcGx1Z2lucy5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9ycG1wbHVnaW5zLmMgYi9saWIvcnBtcGx1Z2lucy5jCitpbmRleCA2NWU2ODRlODQuLmI5NTBmODVjZiAxMDA2NDQKKy0tLSBhL2xpYi9ycG1wbHVnaW5zLmMKKysrKyBiL2xpYi9ycG1wbHVnaW5zLmMKK0BAIC02OCw2ICs2OCw4IEBAIHN0YXRpYyBycG1QbHVnaW4gcnBtUGx1Z2luTmV3KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnBhdGgsCisgCisgICAgIC8qIG1ha2Ugc3VyZSB0aGUgcGx1Z2luIGhhcyB0aGUgc3VwcG9ydGVkIGhvb2tzIGZsYWcgKi8KKyAgICAgaG9va3NfbmFtZSA9IHJzdHJzY2F0KE5VTEwsIG5hbWUsICJfaG9va3MiLCBOVUxMKTsKKysgICAgLyogY2xlYXIgb3V0IGFueSBvbGQgZXJyb3JzIHRoYXQgd2VyZW4ndCBmZXRjaGVkICovCisrICAgIGRsZXJyb3IoKTsKKyAgICAgaG9va3MgPSBkbHN5bShoYW5kbGUsIGhvb2tzX25hbWUpOworICAgICBpZiAoKGVycm9yID0gZGxlcnJvcigpKSAhPSBOVUxMKSB7CisgCXJwbWxvZyhSUE1MT0dfRVJSLCBfKCJGYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2wgJXM6ICVzXG4iKSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCmluZGV4IGMzNzMzMGUuLjE3MjU1ZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgpAQCAtNDIsNiArNDIsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ycG0tcnBtaW8uYy1yZXN0cmljdC12aXJ0dWFsLW1lbW9yeS11c2FnZS1pZi1saW1pdC1zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTYtcnBtc2NyaXB0LmMtY2hhbmdlLWxvZ2dpbmctbGV2ZWwtYXJvdW5kLXNjcmlwdGxldHMtdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vbm8tZmluZC1wcm92aWRlcy1yZXF1aXJlcy1kby1ub3QtdXNlLW1vbm9kaXMtZnJvbS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUEUgPSAiMSIKQEAgLTQ5LDcgKzUxLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgorREVQRU5EUyA9ICJvcGVuc3NsIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCkBAIC01OCw3ICs2MCw3IEBACiAjIE9FLWNvcmUgcGF0Y2hlcyBhdXRvcmVjb25mIHRvIGFkZGl0aW9uYWxseSBydW4gZ251LWNvbmZpZ2l6ZSwgd2hpY2ggZmFpbHMgd2l0aCB0aGlzIHJlY2lwZQogRVhUUkFfQVVUT1JFQ09ORl9hcHBlbmQgPSAiIC0tZXhjbHVkZT1nbnUtY29uZmlnaXplIgogCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiIKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIC0td2l0aC1jcnlwdG89b3BlbnNzbCIKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtbmxzIgogCiAjIC0tc3lzY29uZmRpciBwcmV2ZW50cyBycG0gZnJvbSBhdHRlbXB0aW5nIHRvIGFjY2VzcyBtYWNoaW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW4gc3lzcm9vdC9ldGM7IHdlIG5lZWQgdG8gaGF2ZSBpdCBpbiByb290ZnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKaW5kZXggZmZiMWQwNi4uMTUyZmYwMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKQEAgLTIwLDYgKzIwLDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgogCisjIC0xNjU0OCByZXF1aXJlZCBmb3IgdjMuMS4zcHJlMS4gQWxyZWFkeSBpbiB2My4xLjMuCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICIgQ1ZFLTIwMTctMTY1NDggIgorCiBpbmhlcml0IGF1dG90b29scwogCiBQQUNLQUdFQ09ORklHID8/PSAiYWNsIGF0dHIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKaW5kZXggY2UxYjAyZi4uYTM4YjNmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCkBAIC04LDEwICs4LDEwIEBACiBTRUNUSU9OID0gImRldmVsL3J1YnkiCiBMSUNFTlNFID0gIlJ1YnkgfCBCU0QtMi1DbGF1c2UgfCBCU0QtMy1DbGF1c2UgfCBHUEx2MiB8IElTQyB8IE1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zNDA5NDhlMTg4MmU1Nzk3MzE4NDFiZjQ5Y2RjMjJjMSBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTViOGM4NzU1OTg2ODc5Njk3OTgwNjEwMGRiM2YzODA1IFwKICAgICBmaWxlOi8vQlNETDttZDU9MTlhYWY2NWM4OGE0MGI1MDhkMTdhZTRiZTUzOWM0YjVcCiAgICAgZmlsZTovL0dQTDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCi0gICAgZmlsZTovL0xFR0FMO21kNT00YWMwYjg0ZDFmN2Y0MjBiY2EyODJlMWFkZWZjN2Y5OSBcCisgICAgZmlsZTovL0xFR0FMO21kNT0yYjZkNjJkYzBkNjA4ZjM0ZDUxMGNhM2Y0MjgxMTBlYyBcCiAiCiAKIERFUEVORFMgPSAicnVieS1uYXRpdmUgemxpYiBvcGVuc3NsIHRjbCBsaWJ5YW1sIGdkYm0gcmVhZGxpbmUgbGliZmZpIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDEtTW9kaWZ5LXNoZWJhbmctb2YtbGliZXhlYy15MnJhY2MtYW5kLWxpYmV4ZWMtcmFjYzJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDEtTW9kaWZ5LXNoZWJhbmctb2YtbGliZXhlYy15MnJhY2MtYW5kLWxpYmV4ZWMtcmFjYzJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTZiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMS1Nb2RpZnktc2hlYmFuZy1vZi1saWJleGVjLXkycmFjYy1hbmQtbGliZXhlYy1yYWNjMnkucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBlZWQ3YmM4NTVmZDhkMjMyZDRkMjAzY2M5MDI3ZGQwN2NlZThlY2EyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFNhdCwgOCBGZWIgMjAyMCAxNToxNjoxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBNb2RpZnkgc2hlYmFuZyBvZiBsaWJleGVjL3kycmFjYyBhbmQgbGliZXhlYy9yYWNjMnkuCisKK2NoYW5nZSAvdXNyL2xvY2FsL2Jpbi9ydWJ5IHRvIC91c3IvYmluL2VudiBydWJ5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KKy0tLQorIGxpYmV4ZWMvcmFjYzJ5IHwgMiArLQorIGxpYmV4ZWMveTJyYWNjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZXhlYy9yYWNjMnkgYi9saWJleGVjL3JhY2MyeQoraW5kZXggZjg4ZDczZWQyYy4uNzRlNDljZmEyMSAxMDA3NTUKKy0tLSBhL2xpYmV4ZWMvcmFjYzJ5CisrKysgYi9saWJleGVjL3JhY2MyeQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2xvY2FsL2Jpbi9ydWJ5CisrIyEvdXNyL2Jpbi9lbnYgcnVieQorICMKKyAjICRJZCQKKyAjCitkaWZmIC0tZ2l0IGEvbGliZXhlYy95MnJhY2MgYi9saWJleGVjL3kycmFjYworaW5kZXggNzkzM2Y5NDE1My4uMzZkYWY4NjRlMSAxMDA3NTUKKy0tLSBhL2xpYmV4ZWMveTJyYWNjCisrKysgYi9saWJleGVjL3kycmFjYworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2xvY2FsL2Jpbi9ydWJ5CisrIyEvdXNyL2Jpbi9lbnYgcnVieQorICMKKyAjICRJZCQKKyAjCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2gKaW5kZXggNTk3OWQ4Yi4uYjMxZGVlMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaApAQCAtNiwxMyArNiwxMyBAQAogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCi0gTWFrZWZpbGUuaW4gfCAyICstCisgdGVtcGxhdGUvTWFrZWZpbGUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvdGVtcGxhdGUvTWFrZWZpbGUuaW4gYi90ZW1wbGF0ZS9NYWtlZmlsZS5pbgogaW5kZXggZmExZTE5ZWYzNy4uYmJkMDdmYTM0YiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgorLS0tIGEvdGVtcGxhdGUvTWFrZWZpbGUuaW4KKysrKyBiL3RlbXBsYXRlL01ha2VmaWxlLmluCiBAQCAtMTA5LDcgKzEwOSw3IEBAIE1JU1NJTkcgPSBATElCT0JKU0AgQEFMTE9DQUAKICBFTkFCTEVfU0hBUkVEID0gQEVOQUJMRV9TSEFSRURACiAgTERTSEFSRUQgPSBATElCUlVCWV9MRFNIQVJFREAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAzLWNvbmZpZ3VyZS5hYy1jaGVjay1maW5pdGUtaXNpbmYtaXNuYW4tYXMtbWFjcm9zLWZpcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYThjZmYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAzLWNvbmZpZ3VyZS5hYy1jaGVjay1maW5pdGUtaXNpbmYtaXNuYW4tYXMtbWFjcm9zLWZpcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotRnJvbSBiZDcxYjY5OGJmNzMzZTZlOTMyODJjZDJiMWI5M2Y1MWUxYTMzYzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbm9idSA8bm9idUBiMmRkMDNjOC0zOWQ0LTRkOGYtOThmZi04MjNmZTY5YjA4MGU+Ci1EYXRlOiBGcmksIDggRmViIDIwMTkgMDc6MjI6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIGNvbmZpZ3VyZS5hYzogY2hlY2sgZmluaXRlLGlzaW5mLGlzbmFuIGFzIG1hY3JvcyBmaXJzdAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1bcnVieS1jb3JlOjkxNDg3XSBbQnVnICMxNTU5NV0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2NpLnJ1YnktbGFuZy5vcmcvcnVieS90cnVua0A2NzAzNiBiMmRkMDNjOC0zOWQ0LTRkOGYtOThmZi04MjNmZTY5YjA4MGUKLQotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L2NvbW1pdC83NGY5NGIzZTZlYmYxNWI3NmYzYjM1N2U3NTQwOTU0MTJiMDA2ZTk0XQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KLS0tLQotIGFjbG9jYWwubTQgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgIHwgMTMgKysrKy0tLS0tLS0tLQotIHRvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00IHwgMTMgKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbC9tNC9ydWJ5X3JlcGxhY2VfZnVuY3MubTQKLQotZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00Ci1pbmRleCBiMGZlM2ViOTU5Li5lZDdkMTRlZjYzIDEwMDY0NAotLS0tIGEvYWNsb2NhbC5tNAotKysrIGIvYWNsb2NhbC5tNAotQEAgLTM1LDYgKzM1LDcgQEAgbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X2Z1bmNfYXR0cmlidXRlLm00XSkKLSBtNF9pbmNsdWRlKFt0b29sL200L3J1YnlfbWluZ3czMi5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3ByZXBlbmRfb3B0aW9uLm00XSkKLSBtNF9pbmNsdWRlKFt0b29sL200L3J1YnlfcHJvZ19nbnVfbGQubTRdKQotK200X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00XSkKLSBtNF9pbmNsdWRlKFt0b29sL200L3J1YnlfcmVwbGFjZV90eXBlLm00XSkKLSBtNF9pbmNsdWRlKFt0b29sL200L3J1Ynlfcm1fcmVjdXJzaXZlLm00XSkKLSBtNF9pbmNsdWRlKFt0b29sL200L3J1Ynlfc2V0am1wX3R5cGUubTRdKQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM0ZDI4ODhkMi4uMjY5MWRhNmEzYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTQ2LDkgKzk0Niw2IEBAIG1haW4oKQotIAkJYWNfY3ZfZnVuY19mc3luYz15ZXMKLSAJCWFjX2N2X2Z1bmNfc2Vla2Rpcj15ZXMKLSAJCWFjX2N2X2Z1bmNfdGVsbGRpcj15ZXMKLS0JCWFjX2N2X2Z1bmNfaXNpbmY9eWVzCi0tCQlhY19jdl9mdW5jX2lzbmFuPXllcwotLQkJYWNfY3ZfZnVuY19maW5pdGU9eWVzCi0gCQlhY19jdl9mdW5jX2xjaG93bj15ZXMKLSAJCWFjX2N2X2Z1bmNfbGluaz15ZXMKLSAJCWFjX2N2X2Z1bmNfcmVhZGxpbms9eWVzCi1AQCAtOTk5LDkgKzk5Niw2IEBAIG1haW4oKQotIFtuZXRic2QqXSwgWwlMSUJTPSItbG0gJExJQlMiCi0gCQldLAotIFtkcmFnb25mbHkqXSwgWwlMSUJTPSItbG0gJExJQlMiCi0tCQkjIGlzaW5mKCkgYW5kIGlzbmFuKCkgYXJlIG1hY3JvcyBvbiBEcmFnb25GbHkuCi0tCQlhY19jdl9mdW5jX2lzaW5mPXllcwotLQkJYWNfY3ZfZnVuY19pc25hbj15ZXMKLSAJCV0sCi0gW2FpeCpdLFsJTElCUz0iLWxtICRMSUJTIgotIAkJYWNfY3ZfZnVuY19yb3VuZD1ubwotQEAgLTE3MjQsMTEgKzE3MTgsOCBAQCBBQ19SRVBMQUNFX0ZVTkNTKGR1cDIpCi0gQUNfUkVQTEFDRV9GVU5DUyhlcmYpCi0gQUNfUkVQTEFDRV9GVU5DUyhleHBsaWNpdF9iemVybykKLSBBQ19SRVBMQUNFX0ZVTkNTKGZmcykKLS1BQ19SRVBMQUNFX0ZVTkNTKGZpbml0ZSkKLSBBQ19SRVBMQUNFX0ZVTkNTKGZsb2NrKQotIEFDX1JFUExBQ0VfRlVOQ1MoaHlwb3QpCi0tQUNfUkVQTEFDRV9GVU5DUyhpc2luZikKLS1BQ19SRVBMQUNFX0ZVTkNTKGlzbmFuKQotIEFDX1JFUExBQ0VfRlVOQ1MobGdhbW1hX3IpCi0gQUNfUkVQTEFDRV9GVU5DUyhtZW1tb3ZlKQotIEFDX1JFUExBQ0VfRlVOQ1MobmFuKQotQEAgLTE3NDEsNiArMTczMiwxMCBAQCBBQ19SRVBMQUNFX0ZVTkNTKHN0cmxjcHkpCi0gQUNfUkVQTEFDRV9GVU5DUyhzdHJzdHIpCi0gQUNfUkVQTEFDRV9GVU5DUyh0Z2FtbWEpCi0gCi0rUlVCWV9SRVBMQUNFX0ZVTkMoW2Zpbml0ZV0sIFtAJTpAaW5jbHVkZSA8bWF0aC5oPl0pCi0rUlVCWV9SRVBMQUNFX0ZVTkMoW2lzaW5mXSwgW0AlOkBpbmNsdWRlIDxtYXRoLmg+XSkKLStSVUJZX1JFUExBQ0VfRlVOQyhbaXNuYW5dLCBbQCU6QGluY2x1ZGUgPG1hdGguaD5dKQotKwotICMgZm9yIG1pc3Npbmcvc2V0cHJvY3RpdGxlLmMKLSBBU19DQVNFKFsiJHRhcmdldF9vcyJdLAotIFthaXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251IHwgbGludXgqIHwgZGFyd2luKl0sIFtBQ19ERUZJTkUoU1BUX1RZUEUsU1BUX1JFVVNFQVJHVildLAotZGlmZiAtLWdpdCBhL3Rvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00IGIvdG9vbC9tNC9ydWJ5X3JlcGxhY2VfZnVuY3MubTQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5kMDYxMmUyOWEwCi0tLS0gL2Rldi9udWxsCi0rKysgYi90b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNAotQEAgLTAsMCArMSwxMyBAQAotKyMgLSotIEF1dG9jb25mIC0qLQotK2RubCBSVUJZX1JFUExBQ0VfRlVOQyBbZnVuY10gW2luY2x1ZGVkXQotK0FDX0RFRlVOKFtSVUJZX1JFUExBQ0VfRlVOQ10sIFtkbmwKLSsgICAgQUNfQ0hFQ0tfREVDTChbJDFdLGRubAotKyAgICAgICAgW0FDX0RFRklORShBU19UUl9DUFAoSEFWRV9bJDFdKSldLGRubAotKyAgICAgICAgW0FDX1JFUExBQ0VfRlVOQ1MoJDEpXSxkbmwKLSsgICAgICAgIFskMl0pZG5sCi0rXSkKLSsKLStkbmwgUlVCWV9SRVBMQUNFX0ZVTkNTIFtmdW5jc10gW2luY2x1ZGVkXQotK0FDX0RFRlVOKFtSVUJZX1JFUExBQ0VfRlVOQ1NdIFtkbmwKLSsgICAgbTRfbWFwX2FyZ3NfdyhbJDFdLCBbUlVCWV9SRVBMQUNFX0ZVTkMoXSwgWyksIFskMl1dKWRubAotK10pCi0tLSAKLTIuMjMuMC5yYzEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3JlbW92ZV9oYXNfaW5jbHVkZV9tYWNyb3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcmVtb3ZlX2hhc19pbmNsdWRlX21hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWU2MzMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3JlbW92ZV9oYXNfaW5jbHVkZV9tYWNyb3MucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRmlsdGVyIG91dCBfX2hhc19pbmNsdWRlKiBjb21waWxlciBkZWZpbmVzCisKK1RoZXkgYXJlIGludGVybmFsIHRvIGNvbXBpbGVyIGFuZCB0aGlzIGhlYWRlciBpcyBsYXRlciBvbiBpbmNsdWRlcyBpbiBDCitmaWxlcywgYnV0IG5ld2VyIGdjYyA+PSAxMCBjb21wbGFpbnMgYWJvdXQgaXQuCisKK2Vycm9yIGluIGluaXRpYWwgaGVhZGVyIGZpbGU6Cit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdG1wLzIwMjAwMTI0LTg2NjI1LTE0aGlqdTQuYzoxOgorfCAvdG1wLzIwMjAwMTI0LTg2NjI1LTExeTZsNmkuaDoxMzg0OTo5OiBlcnJvcjogIl9faGFzX2luY2x1ZGUiIGNhbm5vdCBiZSB1c2VkIGFzIGEgbWFjcm8gbmFtZQorfCAxMzg0OSB8ICNkZWZpbmUgX19oYXNfaW5jbHVkZSBfX2hhc19pbmNsdWRlCit8ICAgICAgIHwgICAgICAgICBefn5+fn5+fn5+fn5+Cit8IGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQgZHVlIHRvIC1XZmF0YWwtZXJyb3JzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL2NvbW1vbi5taworKysrIGIvY29tbW9uLm1rCitAQCAtMjIxLDYgKzIyMSw4IEBAICQoVElNRVNUQU1QRElSKS8kKE1KSVRfSEVBREVSOi5oPSkkKE1KSVQKKyAJCSQoVElNRVNUQU1QRElSKS8kKGFyY2gpLy50aW1lCisgCSQoRUNITykgYnVpbGRpbmcgJChARjoudGltZT0uaCkKKyAJJChRKSAkKENQUCkgLURNSklUX0hFQURFUiAkKE1KSVRfSEVBREVSX0ZMQUdTKSAkKENGTEFHUykgJChYQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKHNyY2Rpcikvdm0uYyAkKENQUE9VVEZMQUcpJChARjoudGltZT0uaCkubmV3CisrCSQoUSlzZWQgLWkgLWUgIi8jZGVmaW5lIF9faGFzX2luY2x1ZGUgX19oYXNfaW5jbHVkZS9kIiAkKEBGOi50aW1lPS5oKS5uZXcKKysJJChRKXNlZCAtaSAtZSAiLyNkZWZpbmUgX19oYXNfaW5jbHVkZV9uZXh0IF9faGFzX2luY2x1ZGVfbmV4dC9kIiAkKEBGOi50aW1lPS5oKS5uZXcKKyAJJChRKSAkKElGQ0hBTkdFKSAiLS10aW1lc3RhbXA9JEAiICQoQEY6LnRpbWU9LmgpICQoQEY6LnRpbWU9LmgpLm5ldworIAorICQoTUpJVF9IRUFERVI6Lmg9KSQoTUpJVF9IRUFERVJfU1VGRklYKS5oOiAkKFRJTUVTVEFNUERJUikvJChNSklUX0hFQURFUjouaD0pJChNSklUX0hFQURFUl9TVUZGSVgpLnRpbWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjYuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyOGY2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS5hYy1jaGVjay1maW5pdGUtaXNpbmYtaXNuYW4tYXMtbWFjcm9zLWZpcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODc1NGJmYjM2ZDUyYzJiZjFmYjNkM2RkYzcxMDE2MDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY5NzZiNzE2ZWNjMWZkMzRmOWI3YzNjMmIwN2JiZDM3NjMxODE1Mzc3YTJlM2U4NWE1YjE5NGNmZGNiZWQ3ZCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2dtcF0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwgLS1kaXNhYmxlLWlwdjYsIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZGlzYWJsZS12ZXJzaW9uZWQtcGF0aHMgXAotICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgLS1kaXNhYmxlLWR0cmFjZSBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1sb2FkLXJlbGF0aXZlIFwKLSAgICAtLXdpdGgtcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKLSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICAjIEZpbmQgb3V0IHJiY29uZmlnLnJiIGZyb20gLmluc3RhbGxlZC5saXN0Ci0gICAgcmJjb25maWdfcmI9YGdyZXAgcmJjb25maWcucmIgJHtCfS8uaW5zdGFsbGVkLmxpc3RgCi0gICAgIyBSZW1vdmUgYnVpbGQgaG9zdCBkaXJlY3RvcmllcwotICAgIHNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCi0gICAgICAgICAgIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0gICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLSAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLSAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0gICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0gICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotICAgICAgICAke0R9JHJiY29uZmlnX3JiCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGNwIC1yZiAke1N9L3Rlc3QgJHtEfSR7UFRFU1RfUEFUSH0vCi0gICAgIyBpbnN0YWxsIHRlc3QtYmluYXJpZXMKLSAgICBmaW5kICQoZmluZCAuLy5leHQgLXBhdGggJyovLXRlc3QtJykgLW5hbWUgJyouc28nIC1wcmludDAgXAotICAgICAgICB8IHRhciAtLW5vLXJlY3Vyc2lvbiAtLW51bGwgLVQgLSAtLW5vLXNhbWUtb3duZXIgLS1wcmVzZXJ2ZS1wZXJtaXNzaW9ucyAtY2YgLSBcCi0gICAgICAgIHwgdGFyIC1DICR7RH0ke2xpYmRpcn0vcnVieS8ke1NIUlRfVkVSfS4wLyAtLW5vLXNhbWUtb3duZXIgLS1wcmVzZXJ2ZS1wZXJtaXNzaW9ucyAtLXN0cmlwLWNvbXBvbmVudHM9MiAteGYgLQotICAgICMgYWRqdXN0IHBhdGggdG8gbm90IGFzc3VtZSBidWlsZCBkaXJlY3RvcnkgbGF5b3V0Ci0gICAgc2VkIC1lICdzfEZpbGUuZXhwYW5kX3BhdGgoLipcLlwuL2Jpbi9lcmJbXildKnxGaWxlLmV4cGFuZF9wYXRoKCIke2JpbmRpcn0vZXJiInxnJyBcCi0gICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZXJiL3Rlc3RfZXJiX2NvbW1hbmQucmIKLQotICAgIGNwIC1yICR7U30vaW5jbHVkZSAke0R9LyR7bGliZGlyfS9ydWJ5LwotICAgIHRlc3RfY2FzZV9yYj1gZ3JlcCBydWJ5Z2Vtcy90ZXN0X2Nhc2UucmIgJHtCfS8uaW5zdGFsbGVkLmxpc3RgCi0gICAgc2VkIC1pIC1lICdzOi4uLy4uLy4uL3Rlc3QvOi4uLy4uLy4uL3B0ZXN0L3Rlc3QvOmcnICR7RH0vJHRlc3RfY2FzZV9yYgotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgotCi1TVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCi1SREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKLQotU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKLVJERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgotCi1GSUxFU18ke1BOfS1wdGVzdF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAke2xpYmRpcn0vcnVieS9pbmNsdWRlIFwKLSAgICAke2xpYmRpcn0vcnVieS8ke1NIUlRfVkVSfS4wLyovLXRlc3QtIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwNzA4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjcuMC5iYgpAQCAtMCwwICsxLDkyIEBACityZXF1aXJlIHJ1YnkuaW5jCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidWNvbnRleHQiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJmNGE1NGU4MjMxMTc2ZTEwOWE0MmM1NDZiNDcyNWE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjOTlhYTkzYjVlMmYxYmM4NDM3ZDFiYmJlZmQyN2IxM2U3Njk0MDI1MzMxZjc3MjQ1ZDBjMDY4ZWYxZjhjYmUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsIC0tZGlzYWJsZS1pcHY2LCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisgICAgLS13aXRoLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBMSUJTPSctbHVjb250ZXh0JyBcCisgICAgYWNfY3ZfZnVuY19pc25hbj15ZXMgXAorICAgIGFjX2N2X2Z1bmNfaXNpbmY9eWVzIFwKKyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICAjIEZpbmQgb3V0IHJiY29uZmlnLnJiIGZyb20gLmluc3RhbGxlZC5saXN0CisgICAgcmJjb25maWdfcmI9YGdyZXAgcmJjb25maWcucmIgJHtCfS8uaW5zdGFsbGVkLmxpc3RgCisgICAgIyBSZW1vdmUgYnVpbGQgaG9zdCBkaXJlY3RvcmllcworICAgIHNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCisgICAgICAgICAgIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAke0R9JHJiY29uZmlnX3JiCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGNwIC1yZiAke1N9L3Rlc3QgJHtEfSR7UFRFU1RfUEFUSH0vCisKKyAgICBpbnN0YWxsIC1EICR7U30vdG9vbC90ZXN0L3J1bm5lci5yYiAke0R9JHtQVEVTVF9QQVRIfS90b29sL3Rlc3QvcnVubmVyLnJiCisgICAgY3AgLXIgJHtTfS90b29sL2xpYiAke0R9JHtQVEVTVF9QQVRIfS90b29sLworICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2xpYgorICAgIGNwIC1yICR7U30vbGliL2RpZF95b3VfbWVhbiAke1N9L2xpYi9yZG9jICR7RH0ke1BURVNUX1BBVEh9L2xpYgorCisgICAgIyBpbnN0YWxsIHRlc3QtYmluYXJpZXMKKyAgICBmaW5kICQoZmluZCAuLy5leHQgLXBhdGggJyovLXRlc3QtJykgLW5hbWUgJyouc28nIC1wcmludDAgXAorICAgICAgICB8IHRhciAtLW5vLXJlY3Vyc2lvbiAtLW51bGwgLVQgLSAtLW5vLXNhbWUtb3duZXIgLS1wcmVzZXJ2ZS1wZXJtaXNzaW9ucyAtY2YgLSBcCisgICAgICAgIHwgdGFyIC1DICR7RH0ke2xpYmRpcn0vcnVieS8ke1NIUlRfVkVSfS4wLyAtLW5vLXNhbWUtb3duZXIgLS1wcmVzZXJ2ZS1wZXJtaXNzaW9ucyAtLXN0cmlwLWNvbXBvbmVudHM9MiAteGYgLQorICAgICMgYWRqdXN0IHBhdGggdG8gbm90IGFzc3VtZSBidWlsZCBkaXJlY3RvcnkgbGF5b3V0CisgICAgc2VkIC1lICdzfEZpbGUuZXhwYW5kX3BhdGgoLipcLlwuL2Jpbi9lcmJbXildKnxGaWxlLmV4cGFuZF9wYXRoKCIke2JpbmRpcn0vZXJiInxnJyBcCisgICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZXJiL3Rlc3RfZXJiX2NvbW1hbmQucmIKKworICAgIGNwIC1yICR7U30vaW5jbHVkZSAke0R9LyR7bGliZGlyfS9ydWJ5LworICAgIHRlc3RfY2FzZV9yYj1gZ3JlcCBydWJ5Z2Vtcy90ZXN0X2Nhc2UucmIgJHtCfS8uaW5zdGFsbGVkLmxpc3RgCisgICAgc2VkIC1pIC1lICdzOi4uLy4uLy4uL3Rlc3QvOi4uLy4uLy4uL3B0ZXN0L3Rlc3QvOmcnICR7RH0vJHRlc3RfY2FzZV9yYgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgorCitTVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCitSREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKKworU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKK1JERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgorCitGSUxFU18ke1BOfS1wdGVzdF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAke2xpYmRpcn0vcnVieS9pbmNsdWRlIFwKKyAgICAke2xpYmRpcn0vcnVieS8ke1NIUlRfVkVSfS4wLyovLXRlc3QtIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQppbmRleCBkNDJhZGRmLi43ZjcyZjMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKQEAgLTgsNyArOCw3IEBACiBUeXBlPW9uZXNob3QKIEV4ZWNTdGFydD0jU0JJTkRJUiMvcnVuLXBvc3RpbnN0cwogRXhlY1N0YXJ0UG9zdD0jQkFTRV9CSU5ESVIjL3N5c3RlbWN0bCAtLW5vLXJlbG9hZCBkaXNhYmxlIHJ1bi1wb3N0aW5zdHMuc2VydmljZQotUmVtYWluQWZ0ZXJFeGl0PU5vCitSZW1haW5BZnRlckV4aXQ9eWVzCiBUaW1lb3V0U2VjPTAKIAogW0luc3RhbGxdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKaW5kZXggNGZkMzNmOC4uOWJjZjAyNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMTIsOSArMTIsNiBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0L3NxdWFzaGZzLXRvb2xzIgogCi0jIG5lZWRzIEZOTV9FWFRNQVRDSAotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwotCiBFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImd6aXAgeHogbHpvIGx6NCBsem1hIHhhdHRyIHJlcHJvZHVjaWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2gKaW5kZXggNTJkMmNkYy4uMjM1ZTgwMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQyMjVhYWE4ODQxZjQ3YmE4YWE3YjM1M2IwYWMzMDI4ZDU5MTNlZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU5N2NjMjA2ZDk4MmU3MjM3ZWI5M2ZkYzMzZThjNGJiNmJiMmQ3OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgOSBGZWIgMjAxNyAwMToyNzo0OSAtMDgwMAogU3ViamVjdDogW1BBVENIXSBjYXBzLWFiYnJldi5hd2s6IGZpeCBnYXdrJ3MgcGF0aApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YzE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtc3RyYWNlLWZpeC1yZXByb2R1Y2liaWx0eS1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA2MzA5NzkyYzQ5Y2E5MDBjZWM2YTdmMWRjNWI1MWJmNzViNjI5ZTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBXZWQsIDExIE1hciAyMDIwIDE5OjU2OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN0cmFjZTogZml4IHJlcHJvZHVjaWJpbHR5IGlzc3VlcworCitUaGUgZnVsbCBwYXRoIHRvIHRoZSBnZW5fdGVzdHMuc2ggc2NyaXB0IGlzIGVuY29kZWQgaW4gdGhlIHRlc3RzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIHRlc3RzL2dlbl90ZXN0cy5zaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9nZW5fdGVzdHMuc2ggYi90ZXN0cy9nZW5fdGVzdHMuc2gKK2luZGV4IDVlMWU3YzkuLjFlNjVlYWMgMTAwNzU1CistLS0gYS90ZXN0cy9nZW5fdGVzdHMuc2gKKysrKyBiL3Rlc3RzL2dlbl90ZXN0cy5zaAorQEAgLTQ2LDcgKzQ2LDcgQEAgd2hpbGUgcmVhZCAtciBuYW1lIGFyZzAgYXJnczsgZG8geworIAorIAloZHI9IlwKKyAjIS9iaW4vc2ggLWVmdQorLSMgR2VuZXJhdGVkIGJ5ICQwIGZyb20gJGlucHV0ICgkbmFtZSAkYXJnMCAkYXJncyk7IGRvIG5vdCBlZGl0LiIKKysjIEdlbmVyYXRlZCBieSAkKGJhc2VuYW1lICQwKSBmcm9tICRpbnB1dCAoJG5hbWUgJGFyZzAgJGFyZ3MpOyBkbyBub3QgZWRpdC4iCisgCisgCWNhc2UgIiRhcmcwIiBpbgorIAkJKyopCitAQCAtODAsNyArODAsNyBAQCB3aGlsZSByZWFkIC1yIG5hbWUgYXJnMCBhcmdzOyBkbyB7CisgCisgaWYgWyAtbiAiJG5hbWVzIiBdOyB0aGVuCisgCXsKKy0JCXByaW50ZiAnIyBHZW5lcmF0ZWQgYnkgJXMgZnJvbSAlczsgZG8gbm90IGVkaXQuXG4nICIkMCIgIiRpbnB1dCIKKysJCXByaW50ZiAnIyBHZW5lcmF0ZWQgYnkgJXMgZnJvbSAlczsgZG8gbm90IGVkaXQuXG4nICIkKGJhc2VuYW1lICQwKSIgIiRpbnB1dCIKKyAJCXByaW50ZiAnR0VOX1RFU1RTID0nCisgCQlwcmludGYgJyAlcy5nZW4udGVzdCcgJG5hbWVzCisgCQllY2hvCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWQ4NWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA4NzlhZTcxYzQ3MmNlNTIyZjFiMzUxNGQyYWJmNmFkNDliNGFjYzA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggU2VwIDIwMTcgMjI6NTE6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHMvc2lnYWN0aW9uOiBDaGVjayBmb3IgbWlwcyBhbmQgYWxwaGEgYmVmb3JlIHVzaW5nCi0gc2FfcmVzdG9yZXIKLQotbG9jYWwgc3RydWN0dXJlIGRvZXMgbm90IGRlZmluZSByZXN0b3JlciBtZW1iZXIgZm9yIG1pcHMgYW5kIGFscGhhCi1pbiBkZWZpbml0aW9uLCB3ZSBuZWVkIHRvIG1hdGNoIHRoYXQgYXNzdW1wdGlvbiBoZXJlIHdoZXJlIHRoZXkgYXJlCi1iZWluZyBzZXQKLQotRml4ZXMKLXwgLi4vLi4vc3RyYWNlLTQuMTgvdGVzdHMvc2lnYWN0aW9uLmM6MTc3OjM2OiBlcnJvcjogJ3N0cnVjdF9zZXRfc2Ege2FrYSBzdHJ1Y3Qgc2V0X3NhfScgaGFzIG5vIG1lbWJlciBuYW1lZCAncmVzdG9yZXInCi18ICAjIGRlZmluZSBTQV9SRVNUT1JFUl9BUkdTICwgbmV3X2FjdC0+cmVzdG9yZXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSB0ZXN0cy9zaWdhY3Rpb24uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvdGVzdHMvc2lnYWN0aW9uLmMKLSsrKyBiL3Rlc3RzL3NpZ2FjdGlvbi5jCi1AQCAtMTU2LDcgKzE1Niw3IEBAIG1haW4odm9pZCkKLSAJc2lnZGVsc2V0KG1hc2subGliYywgU0lHSFVQKTsKLSAKLSAJbWVtY3B5KG5ld19hY3QtPm1hc2ssIG1hc2sub2xkLCBzaXplb2YobWFzay5vbGQpKTsKLS0jIGlmZGVmIFNBX1JFU1RPUkVSCi0rI2lmIGRlZmluZWQoU0FfUkVTVE9SRVIpICYmICFkZWZpbmVkKE1JUFMpICYmICFkZWZpbmVkKEFMUEhBKQotIAluZXdfYWN0LT5mbGFncyA9IFNBX1JFU1RPUkVSOwotIAluZXdfYWN0LT5yZXN0b3JlciA9ICh1bnNpZ25lZCBsb25nKSAweGRlYWRmYWNlY2FmZWYwMGRVTEw7Ci0gIyAgZGVmaW5lIFNBX1JFU1RPUkVSX0ZNVCAiLCBzYV9mbGFncz1TQV9SRVNUT1JFUiwgc2FfcmVzdG9yZXI9JSNseCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCmluZGV4IDA4ZmE1YzUuLjQyYzE4OTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZWY1MDQwYjRmMTUwMDZhMjJhYzYzYTNiYWNmY2VhYzM2ZmZjMjA0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWU0N2UyMDUyNTU5Mjg2Nzk3MDFhNWI3NjliZDdhZTBmODE1MTE5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEdhYnJpZWwgQmFyYnUgPGdhYnJpZWwuYmFyYnVAZW5lYS5jb20+CiBEYXRlOiBUaHUsIDI1IEp1bCAyMDEzIDE1OjI4OjMzICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIHN0cmFjZTogQWRkIHB0ZXN0CkBAIC0xNCwxMCArMTQsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggODI1Yzk4OS4uNDYyM2M0OCAxMDA2NDQKK2luZGV4IDhjZjRjMzYuLjY2MTYyZWIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xNCw2ICsxNCw3IEBAIFNJWkVPRl9MT05HID0gQFNJWkVPRl9MT05HQAorQEAgLTE1LDYgKzE1LDcgQEAgU0laRU9GX0xPTkcgPSBAU0laRU9GX0xPTkdACiAgTVBFUlNfTkFNRSA9CiAgTVBFUlNfQ0NfRkxBR1MgPQogIEFSQ0hfTUZMQUdTID0KQEAgLTI1LDcgKzI1LDcgQEAKICBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKQogIEFNX0NQUEZMQUdTID0gJChBUkNIX01GTEFHUykgXAogIAkgICAgICAtSSQoYnVpbGRkaXIpIFwKLUBAIC00NzcsMyArNDc4LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKK0BAIC01MzgsMyArNTM5LDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKICBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCkBAIC00NCw2ICs0NCw2IEBACiArCWRvbmUKICsJZm9yIGZpbGUgaW4gJChFWFRSQV9ESVNUKTsgZG8gXAogKwkJaW5zdGFsbCAkKHNyY2RpcikvJCRmaWxlICQoREVTVERJUikvJChURVNURElSKTsgXAotKwkJc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKKysJCSNzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCiArCWZvciBpIGluIG5ldCBzY21fcmlnaHRzLWZkIHJ0X3NpZ2FjdGlvbjsgZG8gc2VkIC1pIC1lICdzLyQkc3JjZGlyLy4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkaS50ZXN0OyBkb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaAppbmRleCA1ZmVmZmYzLi5lOGRiZDdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNiYzQ3NTAyYWIwMTFlYThkN2M5Y2Q3MjRiMjUxNzRlY2Q5NTA2YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ4N2E3ZmViNWVhNzVkYTcwNjFhZmRkNDczZmFiYTA0NGVjOGViMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogRGF0ZTogTW9uLCAxOCBKYW4gMjAxNiAxMzozMzo1MCAtMDgwMAogU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IHJlbW92ZSBuZWVkIGZvciBzY3JpcHRzCkBAIC0xNiw3ICsxNiw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTQ5YjA1OC4uNGJhOTg5YyAxMDA2NDQKK2luZGV4IGRkNGYxM2YuLjY1ZjAwMGIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTEyLDEyICsxMiwxMiBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9taXBzLVNJR0VNVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2gKaW5kZXggMGQzMTkyYi4uZTg2ZGE5NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9taXBzLVNJR0VNVC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyMGMxODRhN2FiM2ZiN2JlNjdmYjc2MjZjNDExZTc1NmVhNjFkMmY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3OTQ2NDhkODQ2NzJiYmRhMzBhOTIwYTA1NTQwYjU2Y2QxNTVlZDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgNyBBdWcgMjAxNiAyMzo0Nzo1NyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IEZpeCBidWlsZCB3aXRoIG1pcHMvbWlwczY0IG9uIG11c2wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YmQ5MDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGNjOTczMDdlOGUzOWE4MTk5OWM2YTM2NWQwNTc0ODdhMDJlNjEyOGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxOCBKYW4gMjAxNiAxMTowMDowMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBtcGVycy5tNDogbW9yZSByb2J1c3QgdGVzdCBmb3IgLW0zMi8tbXgzMiBjb21waWxlIHN1cHBvcnQKLQotV2hlbiB1c2luZyB0aGUgZGVmYXVsdCBPRSB0b29sY2hhaW4gZm9yIHg4Ni02NCwgdGhlIGJhc2ljIGNoZWNrcyBmb3IKLS1tMzIgYW5kIC1teDMyIGNvbXBpbGUgc3VwcG9ydCBpbiBtcGVycy5tNCBwYXNzIGJ1dCBsYXRlciBhdHRlbXB0cyB0bwotYWN0dWFsbHkgdXNlIHRoZSB0b29sY2hhaW4gd2l0aCAtbTMyIGZhaWwsIGUuZy4KLQotIHwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9ob21lL2FuZHJlL2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9pbmNsdWRlL3N5cy9zeXNjYWxsLmg6MzE6MCwKLSB8ICAgICAgICAgICAgICAgICAgZnJvbSAuLi9zdHJhY2UtNC4xMS9kZWZzLmg6NTUsCi0gfCAgICAgICAgICAgICAgICAgIGZyb20gbXBlcnMtbTMyL2tlcm5lbF9kaXJlbnQuYzozMjoKLSB8IC9ob21lL2FuZHJlL2J1aWxkL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9pbmNsdWRlL2JpdHMvc3lzY2FsbC5oOjQxOjI5OiBmYXRhbCBlcnJvcjogYml0cy9zeXNjYWxsLTMyLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLQotTWFrZSB0aGUgbXBlcnMubTQgdGVzdHMgbW9yZSByb2J1c3Qgc28gdGhhdCBjb25maWd1cmUgY29ycmVjdGx5Ci1kZXRlY3RzIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgT0UgdG9vbGNoYWluLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotLS0tCi0gbTQvbXBlcnMubTQgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbTQvbXBlcnMubTQgYi9tNC9tcGVycy5tNAotaW5kZXggMTM3MjVkNy4uZDg1NzhlYSAxMDA2NDQKLS0tLSBhL200L21wZXJzLm00Ci0rKysgYi9tNC9tcGVycy5tNAotQEAgLTg4LDYgKzg4LDcgQEAgY2FzZSAiJGFyY2giIGluCi0gCUNGTEFHUz0iJENGTEFHUyBNUEVSU19DRkxBR1MgJElGTEFHIgotIAlBQ19DQUNIRV9DSEVDSyhbZm9yIG1wZXJzX25hbWUgcGVyc29uYWxpdHkgY29tcGlsZSBzdXBwb3J0XSwgW3N0X2N2X2NjXSwKLSAJCVtBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCQkJCQkJICAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAJCQkJCQkgICAgIGludCBtYWluKCl7cmV0dXJuIDA7fV1dKV0sCi0gCQkJCSAgIFtzdF9jdl9jYz15ZXNdLAotIAkJCQkgICBbc3RfY3ZfY2M9bm9dKV0pCi1AQCAtOTUsNiArOTYsNyBAQCBjYXNlICIkYXJjaCIgaW4KLSAJCUFDX0NBQ0hFX0NIRUNLKFtmb3IgbXBlcnNfbmFtZSBwZXJzb25hbGl0eSBydW50aW1lIHN1cHBvcnRdLAotIAkJCVtzdF9jdl9ydW50aW1lXSwKLSAJCQlbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rCQkJCQkJCSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAJCQkJCQkJIGludCBtYWluKCl7cmV0dXJuIDA7fV1dKV0sCi0gCQkJCSAgICAgICBbc3RfY3ZfcnVudGltZT15ZXNdLAotIAkJCQkgICAgICAgW3N0X2N2X3J1bnRpbWU9bm9dLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaAppbmRleCAzZTMyY2MzLi5jNWQ4ZmY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gM2ZhZDQ4MjFkOTBjZDI2NGQxYjk0MjUzYjljZjRmZGY1ZDQwMzRiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAyOSBNYXkgMjAxOSAwMDoxMDozMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IFR3ZWFrIHB0ZXN0IGRpc2sgc3BhY2UgbWFuYWdlbWVudAorCiBJZiB0aGUgdGVzdCBpcyBzdWNjZXNzZnVsLCByZW1vdmUgdGhlIGxvZyBhbmQgZXhwIGZpbGVzLiBUaGlzIHN0b3BzIHN0cmFjZQogdXNpbmcgYXJvdW5kIDYwME1CIG9mIGRpc2sgc3BhY2UgYW5kIHJ1bm5pbmcgb3VyIHB0ZXN0IGltYWdlcyBvdXQgb2Ygc3BhY2UuCiAKQEAgLTUsMTAgKzEwLDE0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbc3BlY2lmaWMgdG8gT0UgaW1hZ2Ugc3BhY2UgaXNzdWVzXQogCi1JbmRleDogc3RyYWNlLTQuMjYvdGVzdHMvZ2VuX3Rlc3RzLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3RyYWNlLTQuMjYub3JpZy90ZXN0cy9nZW5fdGVzdHMuc2gKLSsrKyBzdHJhY2UtNC4yNi90ZXN0cy9nZW5fdGVzdHMuc2gKKy0tLQorIHRlc3RzL2dlbl90ZXN0cy5zaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuX3Rlc3RzLnNoIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCitpbmRleCAzNTQwMjA0Li41ZTFlN2M5IDEwMDc1NQorLS0tIGEvdGVzdHMvZ2VuX3Rlc3RzLnNoCisrKysgYi90ZXN0cy9nZW5fdGVzdHMuc2gKIEBAIC02Miw2ICs2Miw3IEBAIHdoaWxlIHJlYWQgLXIgbmFtZSBhcmcwIGFyZ3M7IGRvIHsKICAJCSRoZHIKICAJCS4gIlwke3NyY2Rpcj0ufS9pbml0LnNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3J1bi1wdGVzdAppbmRleCAyZmVkOTg0Li40NjYwMjA3IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3J1bi1wdGVzdApAQCAtMSwzICsxLDYgQEAKICMhL2Jpbi9zaAotZXhwb3J0IFRJTUVPVVRfRFVSQVRJT049MzAKLW1ha2UgLUIgLUMgdGVzdHMgLWsgdGVzdC1zdWl0ZS5sb2cKK2V4cG9ydCBUSU1FT1VUX0RVUkFUSU9OPTEyMAorY2hvd24gbm9ib2R5IHRlc3RzCitjaG93biBub2JvZHkgdGVzdHMvKgorY2hvd24gbm9ib2R5IC4uL3B0ZXN0CitzdSBub2JvZHkgLWMgIm1ha2UgLUIgLUMgdGVzdHMgLWsgdGVzdC1zdWl0ZS5sb2ciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3N5c19oZWFkZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ2ZjJjMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3N5c19oZWFkZXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotUmVtb3ZlIGNvbmZpZ3VyZSBjaGVja3MgZm9yIGZldyBzeXMvIGhlYWRlcnMKLQotc3lzL2lwYy5oLCBzeXMvc2VtLmgsIHN5cy9zaG0uaCwgYW5kIHN5cy9tc2cuaCBhcmUgYWN0dWFsbHkgd3JhcHBlcnMKLWZvciBrZXJuZWwgaGVhZGVycyBpbiBsaWJjIGlmIGF2YWlsYWJsZSwgaGVyZSBzdHJhY2UgaXMgdHJ5aW5nIHRvIG1hdGNoCi10cmFjZWQgcHJvY2VzcydzIEFQSXMgdG8gc3lzY2FsbHMga2VybmVsIHN0cnVjdHVyZXMKLQotUmVtb3ZpbmcgdGhlIGNoZWNrcyBtYWtlcyBpdCBkZWZhdWx0IHRvIHJpZ2h0IGtlcm5lbCBVQVBJIGhlYWRlcnMgdW5kZXIgbGludXgvCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLnN0cmFjZS5pby9waXBlcm1haWwvc3RyYWNlLWRldmVsLzIwMTktTm92ZW1iZXIvMDA5MjIyLmh0bWxdCi1TdWdnZXN0ZWQtYnk6IFJpY2ggRmVsa2VyIDxkYWxpYXNAYWVyaWZhbC5jeD4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQzOSwxMSArNDM5LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhtNF9ub3JtYWxpemUoWwotIAlzeXMvY29uZi5oCi0gCXN5cy9ldmVudGZkLmgKLSAJc3lzL2Zhbm90aWZ5LmgKLS0Jc3lzL2lwYy5oCi0tCXN5cy9tc2cuaAotIAlzeXMvcXVvdGEuaAotLQlzeXMvc2VtLmgKLS0Jc3lzL3NobS5oCi0gCXN5cy9zaWduYWxmZC5oCi0gCXN5cy94YXR0ci5oCi0gCXVzdGF0LmgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91aW50cHRyX3QucGF0Y2gKaW5kZXggNmQzZGQ2Zi4uMDg4ZDY4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91aW50cHRyX3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91aW50cHRyX3QucGF0Y2gKQEAgLTEsMTAgKzEsMjAgQEAKLWluY2x1ZGUgc3RkaW50LmggZm9yIGdldHRpbmcgdWludHB0cl90IGRlZmluaXRpb24KK0Zyb20gYTZjOTM2NmJmYmNlZjZmM2Y0YmIwNjhiMWYxYTU2MjM5MzViNTAxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDUgTm92IDIwMTkgMjA6MDU6MDggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgZ2V0dGluZyB1aW50cHRyX3QgZGVmaW5pdGlvbgogCiBmaXhlcyBkb19jb21waWxlX3B0ZXN0X2Jhc2UKIHRlc3RzL2Zhbm90aWZ5X21hcmsuYzoxOTE6MjM6IGVycm9yOiAndWludHB0cl90JyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnaW50cHRyX3QnPwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIHRlc3RzL2Zhbm90aWZ5X21hcmsuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZmFub3RpZnlfbWFyay5jIGIvdGVzdHMvZmFub3RpZnlfbWFyay5jCitpbmRleCBhYWRlNjQzLi5kZTU3OWYzIDEwMDY0NAogLS0tIGEvdGVzdHMvZmFub3RpZnlfbWFyay5jCiArKysgYi90ZXN0cy9mYW5vdGlmeV9tYXJrLmMKIEBAIC0xOCw2ICsxOCw3IEBACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAppbmRleCA3MDc3MDQ4Li5kNDZiMTQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGYwZDdlYmY0ODQ0MWUwYjA5MGMzZTYwNTNiOGM4NDVkMGE0YTNiMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEyYTcyNmIyODBlY2E5NDg4M2VkY2I0ZGExZWFhZjhlOTNkNDE3MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogRGF0ZTogTW9uLCAxOCBKYW4gMjAxNiAxMTowMTowMCAtMDgwMAogU3ViamVjdDogW1BBVENIXSB1cGRhdGUgZ2F3ayBwYXRocywgL2Jpbi9nYXdrIC0+IC91c3IvYmluL2dhd2sKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMDBhZmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2UuaW8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkxHUEwtMi4xKyAmIEdQTC0yKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAxNjlhMDQ4MTA4MzBlOTRmNGIxY2ZiODIzYzlmNTkyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91aW50cHRyX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3lzX2hlYWRlcnMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODRmNWU3MmRlODEzYzliMWJiNjA1N2VlOGFiNDI4ZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmMxMzExOTg3NDk2NTY0MDFmZTNlZmQ2YjRiMTZhMDdlYTg2N2U4ZjUzMDg2N2NlYWU4OTMwYmJjOTM3YTA0NyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubyxibHVlejUiCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1tcGVycz1ubyIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1Ec2lnY29udGV4dF9zdHJ1Y3Q9c2lnY29udGV4dCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLVBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeKERFQl9DSEFOR0VMT0dUSU1FfFJQTV9DSEFOR0VMT0dUSU1FfFdBUk5fQ0ZMQUdTX0ZPUl9CVUlMRHxMREZMQUdTX0ZPUl9CVUlMRCkiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKLQlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotCWluc3RhbGwgLW0gNjQ0ICR7Qn0vY29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyAke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgZ3JlcCBnYXdrIHNlZCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTU1MmRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjUuYmIKQEAgLTAsMCArMSw1NiBAQAorU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJMR1BMLTIuMSsgJiBHUEwtMisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNzU2ZDlkNWRhYmMyNzY2M2RmNjRmMGJmNDkyMTY2YyIKKworU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHRlc3Qtc3BhY2VzYXZlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VpbnRwdHJfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImRiY2UyZTg0NjMyYjM5YTRlZDg2YjlmYzYwNDQ3YWY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmNTg5NThjOGU1OWVhNjIyOTNkOTA3ZDEwNTcyZTM1MmI1ODJiZDc5NDhlZDIxYWEyOGViYjQ3ZTViZjMwZmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sYmx1ZXo1IgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbXBlcnM9bm8iCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHNpZ2NvbnRleHRfc3RydWN0PXNpZ2NvbnRleHQiCisKK1RFU1RESVIgPSAidGVzdHMiCitQVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXihERUJfQ0hBTkdFTE9HVElNRXxSUE1fQ0hBTkdFTE9HVElNRXxXQVJOX0NGTEFHU19GT1JfQlVJTER8TERGTEFHU19GT1JfQlVJTEQpIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCisJcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCWluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KKwlpbnN0YWxsIC1tIDY0NCAke0J9L2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIHNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmZhMWM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1TVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkFwYWNoZS0yICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjQ4N2FlNzA5NGQzNTlmYTkwZmI5YzQwOTZlNTJlMmIiCi0KLURFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUgbHo0IgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWZmMjQ5Zjg0OGY4MzRkZWQ4ODUzNjU0M2UwMzE5NzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2JkMGI1YzhlNGM1MTc1MjYzZGM5YTkyZmQ5YWVmOTRjZTkxN2U4MGFmMDM0ZjI2ZmU1YzQ1ZmRlN2UwZjc3MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotQ1ZFX1BST0RVQ1QgPSAiYXBhY2hlOnN1YnZlcnNpb24iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLQotUEFDS0FHRUNPTkZJR1tib29zdF0gPSAiLS13aXRoLWJvb3N0PSR7UkVDSVBFX1NZU1JPT1R9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LWJvb3N0LGJvb3N0IgotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgIC0td2l0aG91dC1hcHhzIFwKLSAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgXAotICAgIC0td2l0aG91dC1zd2lnIFwKLSAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAotICAgIC0td2l0aC11dGY4cHJvYz1pbnRlcm5hbCBcCi0gICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUgXAotIgotCi1hY3BhdGhzID0gIi1JIGJ1aWxkLyAtSSBidWlsZC9hYy1tYWNyb3MvIgotCi1DUFBGTEFHUyArPSAiLVAiCi1CVUlMRF9DUFBGTEFHUyArPSAiLVAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2xpYnRvb2wKLQlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKLQlybSAtZiAke1N9L2FjbG9jYWwubTQKLQlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKLX0KLQotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCi0jfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKLQotUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODc5ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTMuMC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkFwYWNoZS0yICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjQ4N2FlNzA5NGQzNTlmYTkwZmI5YzQwOTZlNTJlMmIiCisKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUgbHo0IgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzAwNGI0ZGFlMThiZjQ1YTBiNmVhNGVmODgyMDA2NGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM1MGNlMmMzZmFhN2IxYWU5MTAzYzQzMjAxN2RmOThkZmQ5ODljNDIzOWY5ZjgyNzBiYjNhMzE0ZWQ5ZTViZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKKworQ1ZFX1BST0RVQ1QgPSAiYXBhY2hlOnN1YnZlcnNpb24iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKKworUEFDS0FHRUNPTkZJR1tib29zdF0gPSAiLS13aXRoLWJvb3N0PSR7UkVDSVBFX1NZU1JPT1R9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LWJvb3N0LGJvb3N0IgorUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgIC0td2l0aG91dC1hcHhzIFwKKyAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgXAorICAgIC0td2l0aG91dC1zd2lnIFwKKyAgICAtLWRpc2FibGUta2V5Y2hhaW4gXAorICAgIC0td2l0aC11dGY4cHJvYz1pbnRlcm5hbCBcCisgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUgXAorIgorCitFWFRSQV9PRU1BS0UgKz0gInBrZ2NvbmZpZ19kaXI9JHtsaWJkaXJ9L3BrZ2NvbmZpZyIKKworYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKKworQ1BQRkxBR1MgKz0gIi1QIgorQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9saWJ0b29sCisJcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00CisJcm0gLWYgJHtTfS9hY2xvY2FsLm00CisJc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Cit9CisKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAorI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCisjfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAorI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCitQQVJBTExFTF9NQUtFSU5TVCA9ICIiCisKK1JERVBFTkRTXyR7UE59ID0gInNlcmYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDM4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC8wMDAxLWFyY2hpdGVjdHVyZS1SZWNvZ25pc2UtUklTQ1YtMzItUklTQ1YtNjQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA0YTZhY2UwYTk2NTk2NWVhMTVlODhjMzQxOGM3MTU4Y2E1Y2M5ZjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgTm92IDIwMTkgMTA6MTI6MDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJjaGl0ZWN0dXJlOiBSZWNvZ25pc2UgUklTQ1YtMzIvUklTQ1YtNjQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvMTcxYjUzMzgwMDg1YjEyODhiMDNiMTlhMmI5NzhmMzZhNWMwMDNkMF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYXJjaGl0ZWN0dXJlLmggfCAxMyArKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9hcmNoaXRlY3R1cmUuaCBiL3NyYy9hcmNoaXRlY3R1cmUuaAoraW5kZXggMjY2NzllMi4uODljN2QzMiAxMDA2NDQKKy0tLSBhL3NyYy9hcmNoaXRlY3R1cmUuaAorKysrIGIvc3JjL2FyY2hpdGVjdHVyZS5oCitAQCAtNTcsNiArNTcsOCBAQCBlbnVtIHsKKyAgICAgICAgIEFSQ0hJVEVDVFVSRV9NNjhLLAorICAgICAgICAgQVJDSElURUNUVVJFX1RJTEVHWCwKKyAgICAgICAgIEFSQ0hJVEVDVFVSRV9DUklTLAorKyAgICAgICBBUkNISVRFQ1RVUkVfUklTQ1YzMiwKKysgICAgICAgQVJDSElURUNUVVJFX1JJU0NWNjQsCisgICAgICAgICBfQVJDSElURUNUVVJFX01BWCwKKyAgICAgICAgIF9BUkNISVRFQ1RVUkVfSU5WQUxJRCA9IC0xCisgfTsKK0BAIC0xOTQsNiArMTk2LDE3IEBAIGludCB1bmFtZV9hcmNoaXRlY3R1cmUodm9pZCk7CisgI2VsaWYgZGVmaW5lZChfX2NyaXNfXykKKyAjICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9DUklTCisgIyAgZXJyb3IgIk1pc3NpbmcgTElCX0FSQ0hfVFVQTEUgZm9yIENSSVMiCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KQorKyMgIGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA0CisrIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9SSVNDVjMyCisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInJpc2N2MzItbGludXgtZ251IgorKyMgIGVsaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDgKKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX1JJU0NWNjQKKysjICAgIGRlZmluZSBMSUJfQVJDSF9UVVBMRSAicmlzY3Y2NC1saW51eC1nbnUiCisrIyAgZWxzZQorKyMgICAgZXJyb3IgIlVucmVjb2duaXplZCByaXNjdiBhcmNoaXRlY3R1cmUgdmFyaWFudCIKKysjICBlbmRpZgorKyMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSBtb2RlbCIKKyAjZWxzZQorICMgIGVycm9yICJQbGVhc2UgcmVnaXN0ZXIgeW91ciBhcmNoaXRlY3R1cmUgaGVyZSEiCisgI2VuZGlmCistLSAKKzIuMjQuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC9taXBzNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC9taXBzNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwNmJjNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0L21pcHM2NC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitSZWNvZ25pc2UgbWlwczY0IG4zMi9uNjQKKworVGhlc2UgYXJlIHN1cHBvcnRlZCBpbiBzeXN0ZW1kIG5vdyBhIGRheXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvY2FmNDliOTViM2E2ZWZlOTQ1NTA3ODA5OGM3MjlkODNiMDhlNTIwNl0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL3NyYy9hcmNoaXRlY3R1cmUuaAorKysrIGIvc3JjL2FyY2hpdGVjdHVyZS5oCitAQCAtMTI3LDEzICsxMjcsMjIgQEAgaW50IHVuYW1lX2FyY2hpdGVjdHVyZSh2b2lkKTsKKyAjICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9TUEFSQworICMgIGRlZmluZSBMSUJfQVJDSF9UVVBMRSAic3BhcmMtbGludXgtZ251IgorICMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSIKKy0jZWxpZiBkZWZpbmVkKF9fbWlwczY0X18pCisrI2VsaWYgZGVmaW5lZChfX21pcHM2NCkgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAjICBpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCisgIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9NSVBTNjQKKy0jICAgIGVycm9yICJNaXNzaW5nIExJQl9BUkNIX1RVUExFIGZvciBNSVBTNjQiCisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgIm1pcHM2NC1saW51eC1nbnVhYmk2NCIKKyAjICBlbHNlCisgIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9NSVBTNjRfTEUKKy0jICAgIGVycm9yICJNaXNzaW5nIExJQl9BUkNIX1RVUExFIGZvciBNSVBTNjRfTEUiCisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgIm1pcHM2NGVsLWxpbnV4LWdudWFiaTY0IgorKyMgIGVuZGlmCisrIyAgZGVmaW5lIFBST0NfQ1BVSU5GT19NT0RFTCAiY3B1IG1vZGVsIgorKyNlbGlmIGRlZmluZWQoX19taXBzNjQpCisrIyAgaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorKyMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0CisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgIm1pcHM2NC1saW51eC1nbnVhYmluMzIiCisrIyAgZWxzZQorKyMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0X0xFCisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMiIKKyAjICBlbmRpZgorICMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSBtb2RlbCIKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCmluZGV4IGFlZjg4MzkuLmE3YTFmMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKQEAgLTMsNiArMyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NC5wYXRjaCBcCiAiCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgppbmRleCBiNGJkNGNhLi5lZDE0ZmU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgpAQCAtMjksNyArMjksNyBAQAogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTkgMyA1IC4gc3RvcCAyMCAwIDEgMiA2IC4iCiAKICMgbWFuZ2xpbmcgbmVlZGVkIGZvciBtYWtlCi1NQUtFX0FSQ0ggPSAiYGVjaG8gJHtUQVJHRVRfQVJDSH0gfCBzZWQgcyxpLjg2LGk2ODYsIHwgc2VkIHMsYWFyY2g2NC4qLGE2NCxgIgorTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQuKixhNjQsIHwgc2VkIHMsYXJtZWIsYXJtLGAiCiBNQUtFX09TID0gImBlY2hvICR7VEFSR0VUX09TfSB8IHNlZCBzLF5saW51eC4qLEdOVS9MaW51eCxgIgogCiBFWFRSQV9PRU1BS0UgPSAiTUFDSElORT0ke01BS0VfQVJDSH0gT1BTWVM9JHtNQUtFX09TfSAnQ0M9JHtDQ30nICdBUj0ke0FSfSciCkBAIC00Niw2ICs0Niw3IEBACiBDRkxBR1NfYXBwZW5kX21pcHM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiBDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiBDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NGxlID0gIiAke0xDTF9TVE9QX1NFUlZJQ0VTfSIKIENGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvMDAwMS1GaXgtYWJkNGFiZWRkMi1GYWlsZWQtdG8tYnVpbGQtdGstOC42LjEwLXdpdGgtY3Jvc3MtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2QzNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGY3ZmE0OGM0Yzc1YTFlNzQ4ZGM1MDcxZTcwOWMwYjYyZmY3MzllYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiamFuLm5panRtYW5zIiA8bmlqdG1hbnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogTW9uLCA5IERlYyAyMDE5IDEwOjAyOjIwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBbYWJkNGFiZWRkMl06IEZhaWxlZCB0byBidWlsZCB0ayA4LjYuMTAgd2l0aCBjcm9zcworIGNvbXBpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS90Y2x0ay90Y2wvY29tbWl0L2Y3ZmE0OGM0Yzc1YTFlNzQ4ZGM1MDcxZTcwOWMwYjYyZmY3MzllYWFdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbXBhdC9zdHJ0b2wuYyAgfCAyICstCisgY29tcGF0L3N0cnRvdWwuYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbXBhdC9zdHJ0b2wuYyBiL2NvbXBhdC9zdHJ0b2wuYworaW5kZXggYjdmNjkxOTZjLi44MTEwMDZhNjQgMTAwNjQ0CistLS0gYS9jb21wYXQvc3RydG9sLmMKKysrKyBiL2NvbXBhdC9zdHJ0b2wuYworQEAgLTUzLDcgKzUzLDcgQEAgc3RydG9sKAorICAgICAgKi8KKyAKKyAgICAgcCA9IHN0cmluZzsKKy0gICAgd2hpbGUgKFRjbElzU3BhY2VQcm9jKCpwKSkgeworKyAgICB3aGlsZSAoaXNzcGFjZShVQ0hBUigqcCkpKSB7CisgCXAgKz0gMTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL2NvbXBhdC9zdHJ0b3VsLmMgYi9jb21wYXQvc3RydG91bC5jCitpbmRleCBlMzdlYjA1ZjguLjE1NTg3ZjFkYSAxMDA2NDQKKy0tLSBhL2NvbXBhdC9zdHJ0b3VsLmMKKysrKyBiL2NvbXBhdC9zdHJ0b3VsLmMKK0BAIC03NCw3ICs3NCw3IEBAIHN0cnRvdWwoCisgICAgICAqLworIAorICAgICBwID0gc3RyaW5nOworLSAgICB3aGlsZSAoVGNsSXNTcGFjZVByb2MoKnApKSB7CisrICAgIHdoaWxlIChpc3NwYWNlKFVDSEFSKCpwKSkpIHsKKyAJcCArPSAxOworICAgICB9CisgICAgIGlmICgqcCA9PSAnLScpIHsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2gKaW5kZXggYzg1MzBlMS4uODY2MzJkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2gKQEAgLTgsNiArOCw3IEBACiBGaXhlZCB0aGUgVENMX0lOQ0xVREVfU1BFQwogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQogIE1ha2VmaWxlLmluICB8ICAgIDIgKy0KICBjb25maWd1cmUgICAgfCAgICA0ICsrLS0KQEAgLTM0LDcgKzM1LDcgQEAKIEBAIC0xOTEzNCw3ICsxOTEzNCw3IEBAIGV2YWwgIlRDTF9MSUJfRklMRT1saWJ0Y2wke0xJQl9TVUZGSVh9IgogIGV2YWwgIlRDTF9MSUJfRklMRT0ke1RDTF9MSUJfRklMRX0iCiAgCi0gVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworIHRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJwogLVBSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpciknCiArUFJJVkFURV9JTkNMVURFX0RJUj0nJChpbmNsdWRlZGlyKS90Y2wkKFZFUlNJT04pJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCkBAIC01Niw3ICs1Nyw3IEBACiBAQCAtNzkxLDcgKzc5MSw3IEBAIGV2YWwgIlRDTF9MSUJfRklMRT1saWJ0Y2wke0xJQl9TVUZGSVh9IgogIGV2YWwgIlRDTF9MSUJfRklMRT0ke1RDTF9MSUJfRklMRX0iCiAgCi0gVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworIHRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJwogLVBSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpciknCiArUFJJVkFURV9JTkNMVURFX0RJUj0nJChpbmNsdWRlZGlyKS90Y2wkKFZFUlNJT04pJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaAppbmRleCAxNmY3YzgwLi4xN2QyNTFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2gKQEAgLTE0LDEwICsxNCwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBTb25nLkxpIDxTb25nLkxpQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgogLS0tCi0gY29uZmlndXJlIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIEluZGV4OiB1bml4L2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjcsOCArMjgsOCBAQAogIAogIGV2YWwgIlRDTF9MSUJfRklMRT0ke1RDTF9MSUJfRklMRX0iCiAgCi0tVENMX0xJQlJBUlk9JyQocHJlZml4KS9saWIvdGNsJChWRVJTSU9OKScKLStUQ0xfTElCUkFSWT0nJChsaWJkaXIpL3RjbCQoVkVSU0lPTiknCistdGVzdCAteiAiJFRDTF9MSUJSQVJZIiAmJiBUQ0xfTElCUkFSWT0nJChwcmVmaXgpL2xpYi90Y2wkKFZFUlNJT04pJworK3Rlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJwogIFBSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpciknCiAgSFRNTF9ESVI9JyQoRElTVERJUikvaHRtbCcKICAKQEAgLTQwLDggKzQxLDggQEAKICAKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotLVRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCi0rVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworLXRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQocHJlZml4KS9saWIvdGNsJChWRVJTSU9OKScKKyt0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKICBQUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRkOTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi4xMC5iYgpAQCAtMCwwICsxLDEwNSBAQAorU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCisKKyMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCitMSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKKyIKKworREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCisKK0JBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYWJkNGFiZWRkMi1GYWlsZWQtdG8tYnVpbGQtdGstOC42LjEwLXdpdGgtY3Jvc3MtLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOTdjNTU1NzNmODUyMGJjYWI3NGUyMWJmZDhkMGFhZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTE5NmRiZjY2MzhlM2RmOGQ1Yzg3YjU4MTVjOGMyYjc1ODQ5NmViNmYwZTQxNDQ2NTk2YzlhNGU2MzhkODdlZCIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKKworVkVSID0gIiR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCit9CisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCisJbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAorCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9CisJc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAorCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KKwlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCisJZG9uZQorfQorCitTWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCisKK1BBQ0tBR0VTID0rICJ0Y2wtbGliIgorRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIlRocmVhZC4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW1RocmVhZC4zXSA9ICIke21hbmRpcn0vbWFuMy9UaHJlYWQuMyIKKworIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQorUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGNsdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKK0JJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCisKKyMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQorU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCisKKyMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCisjICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0CitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCit0Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCisJICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAorCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCisJICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCisKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzNzc4MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIENvbW1hbmQgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vdGNsLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvdGNsdGsiCi0KLSMgaHR0cDovL3d3dy50Y2wudGsvc29mdHdhcmUvdGNsdGsvbGljZW5zZS5odG1sCi1MSUNFTlNFID0gInRjbCAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vY29tcGF0L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbGlicmFyeS9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL21hY29zeC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3Rlc3RzL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vd2luL2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSIKLQotREVQRU5EUyA9ICJ0Y2wtbmF0aXZlIHpsaWIiCi0KLUJBU0VfU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdGNsLyR7QlBOfSR7UFZ9LXNyYy50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly90Y2wtYWRkLXNvbmFtZS5wYXRjaCIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9ub25fbmF0aXZlX2J1aWxkX2lzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9pc3N1ZV93aXRoX29sZF9kaXN0cm9fZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm9fcGFja2FnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsdGVyLWluY2x1ZGVkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhYTBhMTIxZDk1YTBlN2I3M2EwMzZmMjYwMjg1MzhkNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDBjZDJkZTJjODdiOWJhODA4NmI0Mzk1N2EwZGUzZWIyZWI1NjVjNzE1OWQ1ZjUzY2NiYmEzZmViOTE1ZjRlIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke0JBU0VfU1JDX1VSSX0iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS91bml4IgotCi1WRVIgPSAiJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJpbmNvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtcHJpdmF0ZS1oZWFkZXJzCi0JbG4gLXNmIC4vdGNsc2gke1ZFUn0gJHtEfSR7YmluZGlyfS90Y2xzaAotCWxuIC1zZiB0Y2xzaDguNiAke0R9JHtiaW5kaXJ9L3RjbHNoJHtWRVJ9Ci0Jc2VkIC1pICJzOy1MJHtCfTstTCR7U1RBR0lOR19MSUJESVJ9O2ciIHRjbENvbmZpZy5zaAotCXNlZCAtaSAiczsnJHtXT1JLRElSfTsnJHtTVEFHSU5HX0lOQ0RJUn07ZyIgdGNsQ29uZmlnLnNoCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2xpYmRpcn0KLQlmb3IgZGlyIGluIGNvbXBhdCBnZW5lcmljIHVuaXg7IGRvCi0JCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vLi4vJGRpci8qLmggJHtEfSR7aW5jbHVkZWRpcn0vJHtCUE59JHtWRVJ9LyRkaXIvCi0JZG9uZQotfQotCi1TWVNST09UX0RJUlMgKz0gIiR7YmluZGlyX2Nyb3Nzc2NyaXB0c30iCi0KLVBBQ0tBR0VTID0rICJ0Y2wtbGliIgotRklMRVNfdGNsLWxpYiA9ICIke2xpYmRpcn0vbGlidGNsOC42LnNvLioiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RjbCR7VkVSfSAke2xpYmRpcn0vdGNsOC42ICR7bGliZGlyfS90Y2w4IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdGNsQ29uZmlnLnNoICR7bGliZGlyfS90Y2xvb0NvbmZpZy5zaCIKLQotIyBpc24ndCBnZXR0aW5nIHBpY2tlZCB1cCBieSBzaGxpYnMgY29kZQotUkRFUEVORFNfJHtQTn0gKz0gInRjbC1saWIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmdjYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgdGNsdGVzdAotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwICR7Qn0vdGNsdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vLi4vbGlicmFyeSAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vLi4vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotIyBGaXggc29tZSBwYXRocyB0aGF0IG1pZ2h0IGJlIHVzZWQgYnkgVGNsIGV4dGVuc2lvbnMKLUJJTkNPTkZJR19HTE9CID0gIipDb25maWcuc2giCi0KLSMgRml4IHRoZSBwYXRoIGluIHNzdGF0ZQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIipDb25maWcuc2giCi0KLSMgQ2xlYW51cCBob3N0IHBhdGggZnJvbSAke2xpYmRpcn0vdGNsQ29uZmlnLnNoIGFuZCByZW1vdmUgdGhlCi0jICR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoIGZyb20gdGFyZ2V0Ci1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInRjbF9wYWNrYWdlX3ByZXByb2Nlc3MiCi10Y2xfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXNlZCAtaSAtZSAiczske0RFQlVHX1BSRUZJWF9NQVB9OztnIiBcCi0JICAgICAgIC1lICJzOy1MJHtTVEFHSU5HX0xJQkRJUn07LUwke2xpYmRpcn07ZyIgXAotCSAgICAgICAtZSAiczske1NUQUdJTkdfSU5DRElSfTske2luY2x1ZGVkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7LS1zeXNyb290PSR7UkVDSVBFX1NZU1JPT1R9OztnIiBcCi0JICAgICAgICR7UEtHRH0ke2xpYmRpcn0vdGNsQ29uZmlnLnNoCi0KLQlybSAtZiAke1BLR0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS90Y2xDb25maWcuc2gKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZmMxMWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlNlbGVjdGl2ZWx5IHJlbW92ZSAjaWZkZWYgc3RhdGVtZW50cyBmcm9tIHNvdXJjZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy91bmlmZGVmLyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzhmYzZjMmMxZGM0ZjE4Yzg5MWVkNWI3YTQ2OWZlMzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdW5pZmRlZi5jO2VuZGxpbmU9MzI7bWQ1PWFhZWM4NGQ4YjY4ZDhiNmRlYTcxZjQ1ZTk5NDllYmZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3RhdC5hdC9wcm9nLyR7QlBOfS8ke0JQfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzM3MDUzZmQ4YTdkOWFiM2FkZjVlNTBmODhhZjk1YjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODI4ZmZjMjcwYWMyNjJiODhmZTAxMTEzNmFjZWYyNzgwYzA1YjBkYzNjNTQzNWQwMDU2NTE3NDA3ODhkNDUzNyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidW5pZmRlZi0oP1A8cHZlcj4oKFxkK1wuKikrKSg/IVthLWYwLTldezYsfSkpLnRhciIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHByZWZpeD0ke3ByZWZpeH0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjEwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMi5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlNlbGVjdGl2ZWx5IHJlbW92ZSAjaWZkZWYgc3RhdGVtZW50cyBmcm9tIHNvdXJjZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitIT01FUEFHRSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy91bmlmZGVmLyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzQ5OGNhZjM0NmY2Yjc3OTM0ODgyMTAxNzQ5YWRhMjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdW5pZmRlZi5jO2VuZGxpbmU9MzI7bWQ1PTZmNGVlODA4NWQ2ZTZhYjBmN2NiNDM5MGUxYTljNDk3IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3RhdC5hdC9wcm9nLyR7QlBOfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYWU4YzBiM2I0YzQzYzFmNmJjNWYzMjQxMmE4MjA4MTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDNjZTBmMDJlY2RjZGM3MjNiMjQ3NTU3NTU2M2RkYjE5MmU5ODhjODg2ZDM2ODI2MGJjMGE2M2FlZTNhYzQwMCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidW5pZmRlZi0oP1A8cHZlcj4oKFxkK1wuKikrKSg/IVthLWYwLTldezYsfSkpLnRhciIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHByZWZpeD0ke3ByZWZpeH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRjZDZkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNzliYmFmODkyOWVjOGVkMzU5MTFiMzU3MWY1YTI0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmI5YjYwZmMwMjMwYjBkYjJjOGEwZTJhODBlYzI5ZjFjMTBiNDNkYzc4MzU1YWJiYTc4YWRlZGJjMmUwM2ExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmNjIwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjYuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWFmMTI1NjQ4NTA1NTAzYjEzOWViYzJkMmM5ZWVlNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZjMxNjQ5OTMyODcyZjA5NDk3MWQ0NjQ1M2IyMWM2MGE0MTY2MTY3MGY5OGFmYTMzNDA2MjQyNWI0YWVjNDdhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLUZpeC10aW1lcmZkLXN5c2NhbGwtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWZiYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbSA1ZDQxMWZkMTQ3ZDY1MmU5ZDdiYjI1OWY0MDQ4NjkzYzZlNDc0MmFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgOSBNYXIgMjAyMCAxNjozMDoxOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtZW1jaGVjay90ZXN0czogRml4IHRpbWVyZmQgc3lzY2FsbCB0ZXN0CisKK21vZGVybiBsaWJjIHByb3ZpZGVzIHRoZXNlIGZ1bmN0aW9ucywgbW9yZW92ZXIgdGhpcyBhbHNvIGVuc3VyZXMgdGhhdCB3ZQorYXJlIDY0Yml0IHRpbWVfdCBzYWZlLiBGYWxsYmFjayB0byBleGlzdGluZyBkZWZpbml0aW9ucyBpZiBsaWJjIGRvZXMgbm90CitoYXZlIHRoZSBpbXBsZW1lbnRhdGlvbiBvciBzeXNjYWxsIGlzIG5vdCBkZWZpbmVkCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL3ZhbGdyaW5kL21haWxtYW4vbWVzc2FnZS8zNjk0Mzg5Ny9dCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrKworIG1lbWNoZWNrL3Rlc3RzL2xpbnV4L3RpbWVyZmQtc3lzY2FsbC5jIHwgMTAgKysrKysrKystLQorIDUgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvY29uZmlnLmguaW4KKysrKyBiL2NvbmZpZy5oLmluCitAQCAtMzAxLDYgKzMwMSw5IEBACisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3lzbnZsLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX1NZU19TWVNOVkxfSAorIAorKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWVyZmQuaD4gaGVhZGVyIGZpbGUuICovCisrI3VuZGVmIEhBVkVfU1lTX1RJTUVSRkRfSAorKworIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICovCisgI3VuZGVmIEhBVkVfU1lTX1RJTUVfSAorIAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00MDk4LDYgKzQwOTgsNyBAQCBBQ19DSEVDS19IRUFERVJTKFsgICAgICAgXAorICAgICAgICAgc3lzL3N5c2NhbGwuaCAgICBcCisgICAgICAgICBzeXMvc3lzbnZsLmggICAgIFwKKyAgICAgICAgIHN5cy90aW1lLmggICAgICAgXAorKyAgICAgICAgc3lzL3RpbWVyZmQuaCAgICBcCisgICAgICAgICBzeXMvdHlwZXMuaCAgICAgIFwKKyAgICAgICAgIF0pCisgCistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC90aW1lcmZkLXN5c2NhbGwuYworKysrIGIvbWVtY2hlY2svdGVzdHMvbGludXgvdGltZXJmZC1zeXNjYWxsLmMKK0BAIC00NSw2ICs0NSw5IEBACisgI2lmIGRlZmluZWQoSEFWRV9TWVNfVElNRV9IKQorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNlbmRpZgorKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVSRkRfSCkKKysjaW5jbHVkZSA8c3lzL3RpbWVyZmQuaD4KKysjZW5kaWYKKyAjaWYgZGVmaW5lZChIQVZFX1NZU19UWVBFU19IKQorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjZW5kaWYKK0BAIC01NCw3ICs1Nyw4IEBACisgICogdGltZXJmZF8qIHN5c3RlbSBjYWxsIG51bWJlcnMgaW50cm9kdWNlZCBpbiAyLjYuMjMuIFRoZXNlIGNvbnN0YW50cyBhcmUKKyAgKiBub3QgeWV0IGluIHRoZSBnbGliYyAyLjcgaGVhZGVycywgdGhhdCBpcyB3aHkgdGhleSBhcmUgZGVmaW5lZCBoZXJlLgorICAqLworLSNpZm5kZWYgX19OUl90aW1lcmZkX2NyZWF0ZQorKyNpZiAhZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2lmICFkZWZpbmVkKF9fTlJfdGltZXJmZF9jcmVhdGUpCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykKKyAjZGVmaW5lIF9fTlJfdGltZXJmZF9jcmVhdGUgIDI4MworICNlbGlmIGRlZmluZWQoX19pMzg2X18pCitAQCAtNjcsOCArNzEsMTAgQEAKKyAjZXJyb3IgQ2Fubm90IGRldGVjdCB5b3VyIGFyY2hpdGVjdHVyZSEKKyAjZW5kaWYKKyAjZW5kaWYKKysjZW5kaWYKKyAKKy0jaWZuZGVmIF9fTlJfdGltZXJmZF9zZXR0aW1lCisrI2lmICFkZWZpbmVkKEhBVkVfU1lTX1RJTUVSRkRfSCkKKysjaWYgIWRlZmluZWQoX19OUl90aW1lcmZkX3NldHRpbWUpCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykKKyAjZGVmaW5lIF9fTlJfdGltZXJmZF9zZXR0aW1lIDI4NgorICNkZWZpbmUgX19OUl90aW1lcmZkX2dldHRpbWUgMjg3CitAQCAtODUsNyArOTEsNyBAQAorICNlcnJvciBDYW5ub3QgZGV0ZWN0IHlvdXIgYXJjaGl0ZWN0dXJlIQorICNlbmRpZgorICNlbmRpZgorLQorKyNlbmRpZgorIAorIAorIC8qIERlZmluaXRpb25zIGZyb20gaW5jbHVkZS9saW51eC90aW1lcmZkLmggKi8KK0BAIC0xMjcsNiArMTMzLDcgQEAgdm9pZCBzZXRfdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICp0bXIsCisgICB0bXItPnR2X25zZWMgPSAobG9uZykgKDEwMDBVTEwgKiAodXN0aW1lICUgMTAwMDAwMFVMTCkpOworIH0KKyAKKysjaWYgIWRlZmluZWQoSEFWRV9TWVNfVElNRVJGRF9IKQorIGludCB0aW1lcmZkX2NyZWF0ZShpbnQgY2xvY2tpZCwgaW50IGZsYWdzKQorIHsKKyAgIHJldHVybiBzeXNjYWxsKF9fTlJfdGltZXJmZF9jcmVhdGUsIGNsb2NraWQsIGZsYWdzKTsKK0BAIC0xNDIsNiArMTQ5LDcgQEAgaW50IHRpbWVyZmRfZ2V0dGltZShpbnQgdWZjLCBzdHJ1Y3QgaXRpbQorIHsKKyAgIHJldHVybiBzeXNjYWxsKF9fTlJfdGltZXJmZF9nZXR0aW1lLCB1ZmMsIG90bXIpOworIH0KKysjZW5kaWYKKyAKKyBsb25nIHdhaXR0bXIoaW50IHRmZCwgaW50IHRpbWVvKQorIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbm9uZS10ZXN0cy1mZGxlYWtfY21zZy5zdGRlcnIuZXhwLWFkanVzdC10bXAtcGF0aHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW5vbmUtdGVzdHMtZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cC1hZGp1c3QtdG1wLXBhdGhzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NDE5OTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW5vbmUtdGVzdHMtZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cC1hZGp1c3QtdG1wLXBhdGhzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZjQwNTI5N2QzMzgyY2Q5ODM5MWQwMmYzOTdlMjM4N2RhMWY0Mjg3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNCBKYW4gMjAyMCAxNzo1NTozOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBub25lL3Rlc3RzL2ZkbGVha19jbXNnLnN0ZGVyci5leHA6IGFkanVzdCAvdG1wIHBhdGhzCisKK0luIG9lLWNvcmUsIC90bXAgaXMgbGlua2VkIHRvIC92YXIvdm9sYXRpbGUvdG1wIGFuZAordmFsZ3JpbmQgb3V0cHV0IGNoYW5nZXMgYWNjb3JkaW5nbHkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBub25lL3Rlc3RzL2ZkbGVha19jbXNnLnN0ZGVyci5leHAgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwIGIvbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwCitpbmRleCA2ZTVhNzk3YjkuLjBlZGUxYWIxOCAxMDA2NDQKKy0tLSBhL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAorKysrIGIvbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwCitAQCAtMjUsMTAgKzI1LDEwIEBAIE9wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogL2Rldi9udWxsCisgCisgCisgRklMRSBERVNDUklQVE9SUzogNiBvcGVuIGF0IGV4aXQuCistT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAvdG1wL2RhdGEyCisrT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAuLi4KKyAgICAuLi4KKyAKKy1PcGVuIGZpbGUgZGVzY3JpcHRvciAuLi46IC90bXAvZGF0YTEKKytPcGVuIGZpbGUgZGVzY3JpcHRvciAuLi46IC4uLgorICAgIC4uLgorIAorIE9wZW4gQUZfVU5JWCBzb2NrZXQgLi4uOiA8dW5rbm93bj4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtdGVzdHMtTWFrZS1wdGhyZWFkX2RldGF0Y2gtY2FsbC1wb3J0YWJsZS1hY3Jvc3MtcGxhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtdGVzdHMtTWFrZS1wdGhyZWFkX2RldGF0Y2gtY2FsbC1wb3J0YWJsZS1hY3Jvc3MtcGxhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDA3ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS10ZXN0cy1NYWtlLXB0aHJlYWRfZGV0YXRjaC1jYWxsLXBvcnRhYmxlLWFjcm9zcy1wbGF0LnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gOTJmY2Y3NWQ2ZDM5MDNlNDU0OTJiMDQxYmY0YWQwNzc4N2QyZTU4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDE5OjUwOjA0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzOiBNYWtlIHB0aHJlYWRfZGV0YWNoKCkgY2FsbCBwb3J0YWJsZQorIGFjcm9zcyBwbGF0Zm9ybXMKKworcHRocmVhZF90IGlzIG9wYXF1ZSB0eXBlIHRoZXJlZm9yZSB3ZSBjYW4gbm90IGFwcGx5IHNpbXBsZSBhcml0aG1ldGljIHRvCit2YXJpYWJsZXMgb2YgcHRocmVhZF90IHR5cGUgdGhpcyB0ZXN0IG5lZWRzIHRvIHBhc3MgYSBpbnZhbGlkIHB0aHJlYWRfdAoraGFuZGxlLCB0eXBjYXN0aW5nIHRvIHVpbnRwdHJfdCB3b3JrcyB0b28gYW5kIGlzIHBvcnRhYmxlIGFjcm9zcyBnbGliYyBhbmQKK211c2wKKworRml4ZXMKK3wgcHRoX2RldGFjaGVkMy5jOjI0OjI1OiBlcnJvcjogaW52YWxpZCB1c2Ugb2YgdW5kZWZpbmVkIHR5cGUgJ3N0cnVjdCBfX3B0aHJlYWQnCit8ICAgIDI0IHwgICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKK3wgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBeCisKK1sgYnZhbmFzc2NoZTogcmVmb3JtYXR0ZWQgcGF0Y2ggZGVzY3JpcHRpb24gYW5kIGZpeGVkIHVwIGxpbmUgbnVtYmVycyBdCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPXZhbGdyaW5kLmdpdDthPWNvbW1pdDtoPTkyZmNmNzVkNmQzOTAzZTQ1NDkyYjA0MWJmNGFkMDc3ODdkMmU1OGFdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyAgICAgICAgICAgfCAzICsrLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAxIHwgNCArKy0tCisgZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCitpbmRleCBjMDJlZWYxLi5lZmViMTViIDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworQEAgLTQsNiArNCw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgc3RhdGljIHZvaWQqIHRocmVhZF9mdW5jKHZvaWQqIGFyZykKKyB7CitAQCAtMjEsNyArMjIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCisgICBwdGhyZWFkX2RldGFjaCh0aHJlYWQpOworIAorICAgLyogSW52b2tlIHB0aHJlYWRfZGV0YWNoKCkgd2l0aCBhbiBpbnZhbGlkIHRocmVhZCBJRC4gKi8KKy0gIHB0aHJlYWRfZGV0YWNoKHRocmVhZCArIDgpOworKyAgcHRocmVhZF9kZXRhY2goKHB0aHJlYWRfdCkoKHVpbnRwdHJfdCl0aHJlYWQgKyA4KSk7CisgCisgICBmcHJpbnRmKHN0ZGVyciwgIkZpbmlzaGVkLlxuIik7CisgCitkaWZmIC0tZ2l0IGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMQoraW5kZXggNTg0MTJlYy4uOGRkNThiYSAxMDA2NDQKKy0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAxCisrKysgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMQorQEAgLTEsMTEgKzEsMTEgQEAKKyAKKyBwdGhyZWFkX2RldGFjaCgpOiBpbnZhbGlkIHRocmVhZCBJRCAweC4uLi4uLi4uCisgICAgYXQgMHguLi4uLi4uLjogcHRocmVhZF9kZXRhY2ggKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorLSAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyMSkKKysgICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjIpCisgCisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjQpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI1KQorIAorIEZpbmlzaGVkLgorIAorZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIKK2luZGV4IGJkYzVjZjguLmU4MmRlZTEgMTAwNjQ0CistLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMgorKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIKK0BAIC0yLDEyICsyLDEyIEBACisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHZnRHJkX3NldF9qb2luYWJsZSAoZHJkX3B0aHJlYWRfaW50ZXJjZXB0cy5jOj8pCisgICAgYnkgMHguLi4uLi4uLjogcHRocmVhZF9kZXRhY2ggKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorLSAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyMSkKKysgICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjIpCisgCisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHZnRHJkX3NldF9qb2luYWJsZSAoZHJkX3B0aHJlYWRfaW50ZXJjZXB0cy5jOj8pCisgICAgYnkgMHguLi4uLi4uLjogcHRocmVhZF9kZXRhY2ggKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorLSAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyNCkKKysgICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjUpCisgCisgRmluaXNoZWQuCisgCistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItdmFsZ3JpbmQtYWRqdXN0LXN0ZF9saXN0LWV4cGVjdGVkLW91dHB1dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItdmFsZ3JpbmQtYWRqdXN0LXN0ZF9saXN0LWV4cGVjdGVkLW91dHB1dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgyOTcyZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDZlMWU5MjY1YjAzY2Y1MWQwOWMwMjhkNjU3ZmU4MjZkNzE1NmE3ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDEzIE1heSAyMDE5IDE3OjI2OjI2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSB2YWxncmluZDogYWRqdXN0IHN0ZF9saXN0IGV4cGVjdGVkIG91dHB1dAotCi1UaGUgcnVuLXB0ZXN0IHNjcmlwdCB1c2VzIGEgY3VzdG9tIC0teW9jdG8tcHRlc3Qgb3B0aW9uCi10byBjaGFuZ2UgdGhlIHN1bW1hcnkgc3RhdGlzdGljcyB0aGF0IHZhbGdyaW5kIGlzc3VlcwotdG8gYSBmb3JtYXQgdGhhdCBtYXRjaGVzIHdoYXQgcHRlc3QtcnVubmVyIGV4cGVjdHMuCi0KLU9ubHkgdGhpcyBzdGRfbGlzdCB0ZXN0IHdoaWNoIGNoZWNrcyB0aGF0IHN0cmNweSgpIHdvcmtzCi1wcm9wZXJseSBvbiBVYnVudHUtMTIuMDQgYW5kIGxhdGVyIGlzIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlLgotSXQncyBub3JtYWwgb3V0cHV0IHdoZW4gY2FsbGVkIHdpdGggLS15b2N0by1wdGVzdCBpcyBhIGJsYW5rCi1saW5lIHNvIGFkanVzdCB0aGUgZXhwZWN0ZWQgb3V0cHV0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1lvY3RvIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBkcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cCB8IDIgLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwIGIvZHJkL3Rlc3RzL3N0ZF9saXN0LnN0ZGVyci5leHAKLWluZGV4IGQxODc4NmY4MC4uOGIxMzc4OTE3IDEwMDY0NAotLS0tIGEvZHJkL3Rlc3RzL3N0ZF9saXN0LnN0ZGVyci5leHAKLSsrKyBiL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi1AQCAtMSwzICsxIEBACi0gCi0tCi0tRVJST1IgU1VNTUFSWTogMCBlcnJvcnMgZnJvbSAwIGNvbnRleHRzIChzdXBwcmVzc2VkOiAwIGZyb20gMCkKLS0tIAotMi4xNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4ODZjNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGE2NTQ3ZmMxN2MxMjBkYmQ5NWI4NTJmNTBiMGM0YmRlZTRmZWRiOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMToyMDozMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDYvNl0gcHRoX2RldGFjaGVkMy5jOiBEZXJlZmVyZW5jZSBwdGhyZWFkX3QgYmVmb3JlIGFkZGluZwotIG9mZnNldCB0byBpdAotCi1GaXhlcwotZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgX19wdGhyZWFkJwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYwotaW5kZXggYzAyZWVmMS4uMzVkNDNhNiAxMDA2NDQKLS0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKLSsrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKLUBAIC0yMSw3ICsyMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgIHB0aHJlYWRfZGV0YWNoKHRocmVhZCk7Ci0gCi0gICAvKiBJbnZva2UgcHRocmVhZF9kZXRhY2goKSB3aXRoIGFuIGludmFsaWQgdGhyZWFkIElELiAqLwotLSAgcHRocmVhZF9kZXRhY2godGhyZWFkICsgOCk7Ci0rICBwdGhyZWFkX2RldGFjaCgocHRocmVhZF90KikoJnRocmVhZCArIDgpKTsKLSAKLSAgIGZwcmludGYoc3RkZXJyLCAiRmluaXNoZWQuXG4iKTsKLSAKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3JlbW92ZS1mb3ItYWFyY2g2NCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3JlbW92ZS1mb3ItYWFyY2g2NAppbmRleCBhY2Y0ZmQxLi5hM2EwYzZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcmVtb3ZlLWZvci1hYXJjaDY0CkBAIC0xLDMgKzEsNCBAQAorZ2Ric2VydmVyX3Rlc3RzL2hndGxzCiBjYWNoZWdyaW5kL3Rlc3RzL2FubjEKIGNhbGxncmluZC90ZXN0cy9zaW13b3JrMQogY2FsbGdyaW5kL3Rlc3RzL3NpbXdvcmsyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9zMzkweF92ZWNfb3BfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3MzOTB4X3ZlY19vcF90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYTY3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9zMzkweF92ZWNfb3BfdC5wYXRjaApAQCAtMCwwICsxLDE5IEBACitzMzkweF92ZWNfb3BfdCBpcyBub3QgbmVlZGVkIGFueXdoZXJlLCBvbmx5IGVsZW1lbnRzIG9mIGVudW0gYXJlIGFjY2Vzc2VkCityZW1vdmluZyBpdCBlbnN1cmVzIHRoYXQgdmFsZ3JpbmQgY2FuIGJlIGJ1aWx0IHdpdGggLWZuby1jb21tb24gb3B0aW9uCisKK0ZpeGVzCitsZDogLi4vLi4vVkVYL2xpYnZleC1hbWQ2NC1saW51eC5hKGxpYnZleF9hbWQ2NF9saW51eF9hLWd1ZXN0X3MzOTBfaGVscGVycy5vKTovdXNyL3NyYy9kZWJ1Zy92YWxncmluZC8zLjE1LjAtcjAvYnVpbGQvVkVYLy4uLy4uL3ZhbGdyaW5kLTMuMTUuMC9WRVgvcHJpdi9ndWVzdF9zMzkwX2RlZnMuaDoyODk6IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYHMzOTB4X3ZlY19vcF90JzsgLi4vLi4vVkVYL2xpYnZleG11bHRpYXJjaC1hbWQ2NC1saW51eC5hKGxpYnZleG11bHRpYXJjaF9hbWQ2NF9saW51eF9hLW11bHRpYXJjaF9tYWluX21haW4ubyk6L3Vzci9zcmMvZGVidWcvdmFsZ3JpbmQvMy4xNS4wLXIwL2J1aWxkL1ZFWC8uLi8uLi92YWxncmluZC0zLjE1LjAvVkVYL3ByaXYvZ3Vlc3RfczM5MF9kZWZzLmg6Mjg5OiBmaXJzdCBkZWZpbmVkIGhlcmUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tIGEvVkVYL3ByaXYvZ3Vlc3RfczM5MF9kZWZzLmgKKysrKyBiL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oCitAQCAtMjg2LDcgKzI4Niw3IEBAIGVudW0geworICAgIFMzOTBfVkVDX09QX1ZGQ0hFID0gMTgsCisgICAgUzM5MF9WRUNfT1BfVkZUQ0kgPSAxOSwKKyAgICBTMzkwX1ZFQ19PUF9MQVNUID0gMjAgLy8gc3VwcG9zZWQgdG8gYmUgdGhlIGxhc3QgZWxlbWVudCBpbiBlbnVtCistfSBzMzkweF92ZWNfb3BfdDsKKyt9OworIAorIC8qIEFyZ3VtZW50cyBvZiBzMzkweF9kaXJ0eWhlbHBlcl92ZWNfb3AoLi4uKSB3aGljaCBhcmUgcGFja2VkIGludG8gb25lCisgICAgVUxvbmcgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE1LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE1LjAuYmIKaW5kZXggNjNmOTcyOS4uNzk1NDQzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTUuMC5iYgpAQCAtMjksNyArMjksNiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMy1jb3JyZWN0LWluY2x1ZGUtZGlyZWN0aXZlLXBhdGgtZm9yLWNvbmZpZy5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDUtdGMyMF92ZXJpZnl3cmFwLmMtRmFrZS1fX0dMSUJDX1BSRVJFUS13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stYXJtNjQtRGVmaW5lLV9fVEhST1ctaWYtbm90LWFscmVhZHktZGVmaW5lZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lbWNoZWNrLXg4Ni1EZWZpbmUtX19USFJPVy1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2ggXApAQCAtMzgsOCArMzcsMTEgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1sb2NhbC1mdW5jdGlvbnMtc3RhdGljLXRvLWF2b2lkLWFzc2VtYmxlci1lcnJvci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldHVybi1hLXZhbGlkLWV4aXRfY29kZS1mcm9tLXZnX3JlZ3Rlc3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS12YWxncmluZC1maWx0ZXJfeG1sX2ZyYW1lcy1kby1ub3QtZmlsdGVyLXVzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGp1c3QtcGF0aC1maWx0ZXItZm9yLTItbWVtY2hlY2stdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vczM5MHhfdmVjX29wX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiNDZlNWZiZGNiYzM1MDJhNTk3NmEzMTdhMDg2MGE5NzUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDE3YzdhOWRhOGY2MGRkMDU2OThiM2E3YmM2MDAyZTRlZjk5NmYxNGMxM2YwZmY5NjY3OWExNjg3M2U3OGFiMSIKQEAgLTYzLDcgKzY1LDggQEAKICMgRGlzYWJsZSBmb3IgcG93ZXJwYzY0IHdpdGggbXVzbAogQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9wb3dlcnBjNjQgPSAnbnVsbCcKIAotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgbXVsdGlsaWJfaGVhZGVyCisjIGJyb2tlbnNlaXAgaXMgdW5mb3J0dW5hdGVseSByZXF1aXJlZCBieSBwdGVzdHMgdG8gcGFzcworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0IG11bHRpbGliX2hlYWRlcgogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGxzIC0td2l0aG91dC1tcGljYyIKIEVYVFJBX09FQ09ORiArPSAiJHtAWyctLWVuYWJsZS1vbmx5MzJiaXQnLCctLWVuYWJsZS1vbmx5NjRiaXQnXVtkLmdldFZhcignU0lURUlORk9fQklUUycpICE9ICczMiddfSIKQEAgLTExNSw3ICsxMTgsNyBAQAogICAgZ2RiIGxpYmdvbXAgXAogICAgcGVybCBcCiAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCi0gICBwcm9jcHMgc2VkICR7UE59LWRiZyIKKyAgIHByb2NwcyBzZWQgJHtQTn0tZGJnICR7UE59LXNyYyIKIFJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKIAogIyBPbmUgb2YgdGhlIHRlc3RzIGNvbnRhaW5zIGEgYm9ndXMgaW50ZXJwcmV0ZXIgcGF0aCBvbiBwdXJwb3NlLgpAQCAtMjAzLDQgKzIwNiwyNCBAQAogICAgICMgaGFuZGxlIG11bHRpbGliCiAgICAgc2VkIC1pIHM6QGxpYmRpckA6JHtsaWJkaXJ9OmcgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CiAgICAgc2VkIC1pIHM6QGJpbmRpckA6JHtiaW5kaXJ9OmcgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisKKyAgICAjIFRoaXMgdGVzdCBmYWlscyBvbiB0aGUgaG9zdCBhcyB3ZWxsLCB1c2luZyBib3RoIDMuMTUgYW5kIGdpdCBtYXN0ZXIgKGFzIG9mIEphbiAyNCAyMDIwKQorICAgICMgaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjgzMworICAgIHJtICR7RH0ke1BURVNUX1BBVEh9L21lbWNoZWNrL3Rlc3RzL292ZXJsYXAudmd0ZXN0CisKKyAgICAjIEFzIHRoZSBiaW5hcnkgaXNuJ3Qgc3RyaXBwZWQgb3IgZGVidWctc3BsaXR0ZWQsIHRoZSBzb3VyY2UgZmlsZSBpc24ndCBmZXRjaGVkCisgICAgIyB2aWEgZHdhcmZzcmNmaWxlcyBlaXRoZXIsIHNvIGl0IG5lZWRzIHRvIGJlIGluc3RhbGxlZCBtYW51YWxseS4KKyAgICBta2RpciAtcCAke0R9L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfS8ke0JQfS9ub25lL3Rlc3RzLworICAgIGluc3RhbGwgJHtTfS9ub25lL3Rlc3RzL3Rscy5jICR7RH0vdXNyL3NyYy9kZWJ1Zy8ke1BOfS8ke0VYVEVORFBFfSR7UFZ9LSR7UFJ9LyR7QlB9L25vbmUvdGVzdHMvCiB9CisKKyMgYXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSB0ZXN0cyB3aWxsIGZhaWwKKyMgcnVuLXN0cmlwLXJlbG9jLnNoLCBydW4tc3RyaXAtc3RybWVyZ2Uuc2ggYW5kIHNvIG9uIHdpbGwgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIlwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9ub25lL3Rlc3RzL3RscyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbm9uZS90ZXN0cy90bHMuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L25vbmUvdGVzdHMvdGxzMi5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vaGVsZ3JpbmQvdGVzdHMvdGMwOV9iYWRfdW5sb2NrIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9tZW1jaGVjay90ZXN0cy9tYW51ZWwxIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMyBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKaW5kZXggZGY3OThkZi4uN2QyN2M0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3htbHRvL3htbHRvXzAuMC4yOC5iYgpAQCAtMTMsNiArMTMsOCBAQAogCiBpbmhlcml0IGF1dG90b29scwogCitDTEVBTkJST0tFTiA9ICIxIgorCiBERVBFTkRTID0gImxpYnhtbDItbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfSA9ICJkb2Nib29rLXhtbC1kdGQ0IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxOTEwMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjkyMjc1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxOTEwMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCi1PUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKLVBvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAotQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAotc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCi1BQ1BJIHRhYmxlcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi0KLUxJQ0VOU0UgPSAiSW50ZWwgfCBCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NvdXJjZS9jb21waWxlci9hc2xjb21waWxlLmM7YmVnaW5saW5lPTc7ZW5kbGluZT0xNTA7bWQ1PWI1NjkwZDllZjhkNTRiMmIxZTFjYzk4YWFkNjRjZDg3IgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1ERVBFTkRTID0gImJpc29uIGZsZXggYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjUzOWEwMjUyYmNiNDJjMzgzY2VlYWViMTJhZTlhNjBkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyOWRiNDAxNDYwMGU0Yjc3MWIxMWE4NDI3NmQyZDc2ZWI0MGZiMjZlYWJjODU4NjQ4NTJlZjFmOTYyYmU5NWYiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL2Rvd25sb2FkcyIKLQotUyA9ICIke1dPUktESVJ9L2FjcGljYS11bml4LSR7UFZ9IgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWNwaXh0cmFjdCBhY3BpZHVtcCIKLQotRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgXAotICAgICAgICAgICAgICAgIE9QVF9DRkxBR1M9LVdhbGwgXAotICAgICAgICAgICAgICAgIERFU1RESVI9JHtEfSBcCi0gICAgICAgICAgICAgICAgUFJFRklYPSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgSU5TVEFMTERJUj0ke2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIElOU1RBTExGTEFHUz0gXAotICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKLVBST1ZJREVTID0gImlhc2wiCi1SUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCi1SUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJpYXNsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAyMDAyMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMjAwMjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYTlmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMjAwMjE0LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiQUNQSUNBIHRvb2xzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlYnVnIG9mIEFDUEkgdGFibGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIEFDUEkgQ29tcG9uZW50IEFyY2hpdGVjdHVyZSAoQUNQSUNBKSBwcm9qZWN0IHByb3ZpZGVzIGFuIFwKK09TLWluZGVwZW5kZW50IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgXAorUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gKEFDUEkpLiBBQ1BJQ0EgY29kZSBjb250YWlucyB0aG9zZSBwb3J0aW9ucyBvZiBcCitBQ1BJIG1lYW50IHRvIGJlIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaG9zdCBPUyBhcyBhIGtlcm5lbC1yZXNpZGVudCBcCitzdWJzeXN0ZW0sIGFuZCBhIHNtYWxsIHNldCBvZiB0b29scyB0byBhc3Npc3QgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nIFwKK0FDUEkgdGFibGVzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKKworTElDRU5TRSA9ICJJbnRlbCB8IEJTRCB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc291cmNlL2NvbXBpbGVyL2FzbGNvbXBpbGUuYztiZWdpbmxpbmU9NztlbmRsaW5lPTE1MDttZDU9NmFkYmNiODFlOWVlNmFlNTBjNTY5Yjk0ZmUxMmY3YzUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCisKK0RFUEVORFMgPSAibTQtbmF0aXZlIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNTA1YmE2MTcwYjc3ZGIxMzk5ZWFlMGUyYTk1OTExMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzdhYjlmODU1N2NhMTA0ZjZlOGY0OWVmYWE4ZWVhZDI5Zjc4Y2ExMWNhZGZjODk4OTAxMjQ2OWVjYzA3MzhlIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCisKK1MgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peC0ke1BWfSIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QgYWNwaWR1bXAiCisKK0VYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIFwKKyAgICAgICAgICAgICAgICBPUFRfQ0ZMQUdTPS1XYWxsIFwKKyAgICAgICAgICAgICAgICBERVNURElSPSR7RH0gXAorICAgICAgICAgICAgICAgIFBSRUZJWD0ke3ByZWZpeH0gXAorICAgICAgICAgICAgICAgIElOU1RBTExESVI9JHtiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMRkxBR1M9IFwKKyAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsCit9CisKKyMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0CitQUk9WSURFUyA9ICJpYXNsIgorUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgorUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgorUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYwppbmRleCAwMzliODY4Li4xZWJiMzNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKQEAgLTI1LDcgKzI1LDYgQEAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgcGVybCBzZWQgc2hhZG93IHV0aWwtbGludXgtc2V0cHJpdiIKIAotREVQRU5EU19hcHBlbmRfbGliYy1nbGliYyA9ICIgdmlydHVhbC9saWJjLWxvY2FsZSIKIFJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCiAJZ2xpYmMtZ2NvbnYtYmlnNWhrc2NzIFwKIAlnbGliYy1nY29udi1pc284ODU5LTEgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIKaW5kZXggZWFkYzgyMi4uOGZmOWU2ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNS4wLmJiCkBAIC0xMiw2ICsxMiwxNSBAQAogICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMDU7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA1IFwKICAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA2O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNiBcCiAgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMDg7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA4IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA5O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTE7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDExIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDEyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxMzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTMgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTQ7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDE0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDE1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxNSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxNjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTYgXAogICAgICAgICAgICBmaWxlOi8vZXhlY3V0ZV9jbWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCkBAIC0zOCw2ICs0NywyNCBAQAogU1JDX1VSSVtwYXRjaDAwNi5zaGEyNTZzdW1dID0gImQ2ODUyOWE2ZmYyMDFiNmZmNTkxNTMxOGFiMTJmYzE2YjhhMGViYjc3ZmRhMzMwODMwM2ZjYzFlMTMzOTg0MjAiCiBTUkNfVVJJW3BhdGNoMDA3Lm1kNXN1bV0gPSAiNDExNTYwZDgxZmRlMmRjNWIxN2I4M2MzZjNiNThjNmYiCiBTUkNfVVJJW3BhdGNoMDA3LnNoYTI1NnN1bV0gPSAiMTdiNDFlN2VlMzY3M2Q4ODg3ZGQyNTk5MjQxN2EzOTg2Nzc1MzNhYjg4Mjc5MzhhYTQxZmFkNzBkZjE5YWY5YiIKK1NSQ19VUklbcGF0Y2gwMDgubWQ1c3VtXSA9ICJkZDdjZjdhNzg0ZDE4Mzg4MjJjYWQ4ZDQxOTMxNTk5MSIKK1NSQ19VUklbcGF0Y2gwMDguc2hhMjU2c3VtXSA9ICJlZWM2NDU4ODYyMmE4MmE1MDI5YjI3NzZlMjE4YTc1YTM2NDBiZWY0OTUzZjA5ZDZlZTFmNDE5OTY3MGFkN2UzIgorU1JDX1VSSVtwYXRjaDAwOS5tZDVzdW1dID0gImMxYjNlOTM3Y2Q2ZGNjYmI3ZmQ3NzJmMzI4MTJhMGRhIgorU1JDX1VSSVtwYXRjaDAwOS5zaGEyNTZzdW1dID0gImVkM2NhMjE3NjczMDNmYzNkZTkzOTM0YWE1MjRjMmU5MjA3ODdjNTA2YjYwMWNjNDBhNDg5N2Q0YjA5NGQ5MDMiCitTUkNfVVJJW3BhdGNoMDEwLm1kNXN1bV0gPSAiMTliNDFlNzNiMDM2MDJkMGUyNjFjNDcxYjUzZTY3MGMiCitTUkNfVVJJW3BhdGNoMDEwLnNoYTI1NnN1bV0gPSAiZDZmYmMzMjVmMGI1ZGM1NGRkYmU4ZWU0MzAyMGJjZWQ4YmQ1ODlkZGZmZWE1OWQxMjhkYjE0YjJlNTJhOGExMSIKK1NSQ19VUklbcGF0Y2gwMTEubWQ1c3VtXSA9ICI0MTQzMzkzMzBhMzYzNDEzNzA4MWE5N2YyYzg2MTVhOCIKK1NSQ19VUklbcGF0Y2gwMTEuc2hhMjU2c3VtXSA9ICIyYzRkZTMzMmI5MWVhZjc5N2FiYmJkNmM3OTcwOTY5MGI1Y2JkNDhiMTJlOGRmZTc0ODA5NmRiZDdiZjQ3NGVhIgorU1JDX1VSSVtwYXRjaDAxMi5tZDVzdW1dID0gIjE4NzAyNjhmNjJiOTA3MjIxYjA3OGFkMTA5ZTFmYTk0IgorU1JDX1VSSVtwYXRjaDAxMi5zaGEyNTZzdW1dID0gIjI5NDNlZTE5Njg4MDE4Mjk2ZjJhMDRkYmZlMzBiNzEzOGI4ODk3MDBlZmE4ZmYxYzA1MjRhZjI3MWUwZWUyMzMiCitTUkNfVVJJW3BhdGNoMDEzLm1kNXN1bV0gPSAiNDBkOTIzYWY0Yjk1MmIwMTk4M2VkNGM4ODlhZTI2NTMiCitTUkNfVVJJW3BhdGNoMDEzLnNoYTI1NnN1bV0gPSAiZjVkNzE3OGQ4ZGEzMDc5OWUwMWI4M2EwODAyMDE4ZDkxM2Q2YWE5NzJkZDJkZGFkM2I5MjdmM2YzZWI3MDk5YSIKK1NSQ19VUklbcGF0Y2gwMTQubWQ1c3VtXSA9ICI1Nzg1N2IyMjA1M2M4MTY3Njc3ZTVlNWFjNWM2NjY5YiIKK1NSQ19VUklbcGF0Y2gwMTQuc2hhMjU2c3VtXSA9ICI1ZDZlZWU2NTE0ZWU2ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0NmYxYzVhOWEzNWRiMWY3MmFmNTg5IgorU1JDX1VSSVtwYXRjaDAxNS5tZDVzdW1dID0gImM0YzZlYTIzZDA5YTc0ZWFhOTM4NTQzOGU0OGZkZjAyIgorU1JDX1VSSVtwYXRjaDAxNS5zaGEyNTZzdW1dID0gImE1MTdkZjJkZGE5M2IyNmQ1Y2JmMDBlZmZlZmVhOTNlM2E0Y2NkNjY1MmYxNTJmNDEwOTE3MDU0NGViZmEwNWUiCitTUkNfVVJJW3BhdGNoMDE2Lm1kNXN1bV0gPSAiYTY4MmVkNmZhMmMyZTdhN2MzYmE2YmRlYWRhMDdmYjUiCitTUkNfVVJJW3BhdGNoMDE2LnNoYTI1NnN1bV0gPSAiZmZkMWQ3YTU0YTk5ZmE3ZjViMTgyNWU0ZjdlOTVkOGM4ODc2YmMyY2ExNTFmMTUwZTc1MWQ0MjljNjUwYjA2ZCIKIAogREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgogREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuOC5iYgppbmRleCA4ZTliNzc5Li5kNThmNTUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuOC5iYgpAQCAtNCw3ICs0LDcgQEAKIExaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLiIKIEhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvYnppcDIvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJiemlwMiIKK0xJQ0VOU0UgPSAiYnppcDItMS4wLjYiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT00O2VuZGxpbmU9Mzc7bWQ1PTYwMGFmNDNjNTBmMWZjYjgyZTMyZjE5YjMyZGY0NjY0IgogCiBTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvcHViLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZV8xLjMuNTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2ZhOGViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWctYWx0ZXJuYXRpdmVzLW5hdGl2ZV8xLjMuNTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZ18xLjMuNTguYmIKLQotU1VNTUFSWSA9ICIke1NVTU1BUllfY2hrY29uZmlnLWFsdGVybmF0aXZlc30iCi1ERVNDUklQVElPTiA9ICIke0RFU0NSSVBUSU9OX2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXN9IgotREVQRU5EUyA9ICIiCi1QUk9WSURFUyArPSAidmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi0jIFRoZSBzeXNyb290IGJyYW5jaCBpcyAxLjMuNTkgKyBzb21lIGdpdCBjb21taXRzIGZyb20gbWFzdGVyICsgLS1zeXNyb290Ci0jIHN1cHBvcnQgZm9yIGFsdGVybmF0aXZlcy4KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rZXJnb3RoL2Noa2NvbmZpZzticmFuY2g9c3lzcm9vdCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJjaGtjb25maWctKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICJjZDQzN2VjYmQ4OTg2Yzg5NDQ0MmY4ZmNlMWUwMDYxZTIwZjA0ZGVlIgotUFYgPSAiMS4zLjU5KyR7U1JDUFZ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi0jIFdlIHdhbnQgb3VyIG5hdGl2ZSByZWNpcGVzIHRvIGJ1aWxkIHVzaW5nIHRoZSB0YXJnZXQgcGF0aHMgcmF0aGVyIHRoYW4gcGF0aHMKLSMgaW50byB0aGUgc3lzcm9vdCwgYXMgd2UgbWF5IHVzZSB0aGVtIHRvIGNvbnN0cnVjdCB0aGUgcm9vdGZzLiBBcyBzdWNoLCB3ZQotIyBvbmx5IGFkanVzdCB0aGUgcGF0aHMgdG8gbWF0Y2ggdGhlIG1ldGFkYXRhIGZvciB0aGUgdGFyZ2V0LCBub3QgbmF0aXZlLgotb2JleV92YXJpYWJsZXMgKCkgewotCXNlZCAtaSAncyxBTFRFUk5BVElWRVNfUk9PVCxPUEtHX09GRkxJTkVfUk9PVCwnICR7U30vYWx0ZXJuYXRpdmVzLmMKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBhbHRlcm5hdGl2ZXMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hbHRlcm5hdGl2ZXMgXAotCSAgICAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcwotCi0JaW5zdGFsbCAtRCAtbSAwNzU1IGFsdGVybmF0aXZlcyAke0R9JHtiaW5kaXJ9L2FsdGVybmF0aXZlcwotCWluc3RhbGwgLUQgLW0gMDY0NCBhbHRlcm5hdGl2ZXMuOCAke0R9JHttYW5kaXJ9L21hbjgvYWx0ZXJuYXRpdmVzLjgKLQotCWxuIC1zIGFsdGVybmF0aXZlcyAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMKLQlsbiAtcyBhbHRlcm5hdGl2ZXMuOCAke0R9JHttYW5kaXJ9L21hbjgvdXBkYXRlLWFsdGVybmF0aXZlcy44Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpbnV4c3RkYmFzZSgpIHsKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9sc2IKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy9yZXBsYWNlX2NhZGRyX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2ZDE5MzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy9yZXBsYWNlX2NhZGRyX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1jYWRkcl90IGlzIGEgbGVnYWN5IEJTRCB0eXBlIHdoaWNoIHdhcyByZWplY3RlZCBieSB0aGUgUE9TSVggc3RhbmRhcmQuCi1Vc2Ugdm9pZCAqIGluc3RlYWQuCi0KLXN5cy91bml0c3RkLmggaXMgbm90IG5lZWRlZCBhbmQgbW9yZW92ZXIgaXRzIG5vdCBhdmFpbGFibGUgb24gYWxsIEMgbGlicmFyeQotaW1wbGVtZW50YXRpb25zIGUuZy4gbXVzbAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogY2hrY29uZmlnLTEuMy41OC9hbHRlcm5hdGl2ZXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNoa2NvbmZpZy0xLjMuNTgub3JpZy9hbHRlcm5hdGl2ZXMuYwotKysrIGNoa2NvbmZpZy0xLjMuNTgvYWx0ZXJuYXRpdmVzLmMKLUBAIC0yMiw3ICsyMiw2IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNkZWZpbmUJRkxBR1NfVEVTVAkoMSA8PCAwKQotSW5kZXg6IGNoa2NvbmZpZy0xLjMuNTgvbGV2ZWxkYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY2hrY29uZmlnLTEuMy41OC5vcmlnL2xldmVsZGIuYwotKysrIGNoa2NvbmZpZy0xLjMuNTgvbGV2ZWxkYi5jCi1AQCAtNDQyLDcgKzQ0Miw3IEBAIGludCBwYXJzZVNlcnZpY2VJbmZvKGludCBmZCwgY2hhciAqIG5hbWUKLSAgICAgZnN0YXQoZmQsICZzYik7Ci0gCi0gICAgIGJ1ZnN0YXJ0ID0gbW1hcChOVUxMLCBzYi5zdF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKLS0gICAgaWYgKGJ1ZnN0YXJ0ID09ICgoY2FkZHJfdCkgLTEpKSB7Ci0rICAgIGlmIChidWZzdGFydCA9PSAoKHZvaWQqKSAtMSkpIHsKLSAJY2xvc2UoZmQpOwotIAlyZXR1cm4gLTE7Ci0gICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZ18xLjMuNTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMWRkNjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZ18xLjMuNTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gIkEgc3lzdGVtIHRvb2wgZm9yIG1haW50YWluaW5nIHRoZSAvZXRjL3JjKi5kIGhpZXJhcmNoeSIKLURFU0NSSVBUSU9OID0gIkNoa2NvbmZpZyBpcyBhIGJhc2ljIHN5c3RlbSB1dGlsaXR5LiAgSXQgdXBkYXRlcyBhbmQgcXVlcmllcyBydW5sZXZlbCBcCi1pbmZvcm1hdGlvbiBmb3Igc3lzdGVtIHNlcnZpY2VzLiAgQ2hrY29uZmlnIG1hbmlwdWxhdGVzIHRoZSBudW1lcm91cyBcCi1zeW1ib2xpYyBsaW5rcyBpbiAvZXRjL3JjLmQsIHRvIHJlbGlldmUgc3lzdGVtIGFkbWluaXN0cmF0b3JzIG9mIHNvbWUgXAotb2YgdGhlIGRydWRnZXJ5IG9mIG1hbnVhbGx5IGVkaXRpbmcgdGhlIHN5bWJvbGljIGxpbmtzLiIKLQotUkVDSVBFX05PX1VQREFURV9SRUFTT04gPSAiVmVyc2lvbiAxLjUgcmVxdWlyZXMgc2VsaW51eCIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2IgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTU3NGM2OTY1YWU1ZjU4M2U1NTg4MGUzOTdmYmIwMTgiCi0KLURFUEVORFMgPSAibGlibmV3dCBwb3B0IgotUFJPVklERVMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcyIKLQotUFIgPSAicjciCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtCUE59LSR7UFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmVkb3JhLXN5c3YvY2hrY29uZmlnLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlX2NhZGRyX3QucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDUkVWID0gIjNlMGIzOTA5ZmY2MzI4ZDIzMmIyN2I5YzMyZjFhOTMwOWM2Y2QwYTQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi0jIE1ha2VmaWxlIHVzZXMgUlBNX09QVF9GTEFHUyB0byBjb25zdHJ1Y3QgQ0ZMQUdTCi0jCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdSUE1fT1BUX0ZMQUdTPSR7Q0ZMQUdTfScgXAotICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAnQklORElSPSR7YmFzZV9zYmluZGlyfScgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSAgICAnTUFORElSPSR7bWFuZGlyfScgXAotICAgICdBTFRESVI9JHtsb2NhbHN0YXRlZGlyfS9saWIvYWx0ZXJuYXRpdmVzJyBcCi0gICAgJ0FMVERBVEFESVI9JHtzeXNjb25mZGlyfS9hbHRlcm5hdGl2ZXMnIFwKLSIKLQotZG9fdW5wYWNrW3Bvc3RmdW5jc10gKz0gIm9iZXlfdmFyaWFibGVzIgotZG9fdW5wYWNrW3ZhcmRlcHNdICs9ICJvYmV5X3ZhcmlhYmxlcyIKLW9iZXlfdmFyaWFibGVzICgpIHsKLQlzZWQgLWkgLWUgJ3MsL2V0Yywke3N5c2NvbmZkaXJ9LDsgcywvbGliL3N5c3RlbWQsJHtiYXNlX2xpYmRpcn0vc3lzdGVtZCwnICR7U30vbGV2ZWxkYi5oCi0Jc2VkIC1pIC1lICdzLC9ldGMvYWx0ZXJuYXRpdmVzLCR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzLCcgXAotCSAgICAgICAtZSAncywvdmFyL2xpYi9hbHRlcm5hdGl2ZXMsJHtsb2NhbHN0YXRlZGlyfS9saWIvYWx0ZXJuYXRpdmVzLCcgXAotCSAgICAgICAtZSAncywvdXNyL3NoYXJlL2xvY2FsZSwke2RhdGFkaXJ9L2xvY2FsZSwnICR7U30vYWx0ZXJuYXRpdmVzLmMKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdJTlNUQUxMTkxTRElSPSR7RH0ke2RhdGFkaXJ9L2xvY2FsZScgXAotCQknQklORElSPSR7c2JpbmRpcn0nIGluc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Noa2NvbmZpZy5kCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1hbHRlcm5hdGl2ZXMgJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyIKLVNVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzID0gIk1haW50YWluIHN5bWJvbGljIGxpbmtzIGRldGVybWluaW5nIGRlZmF1bHQgY29tbWFuZHMiCi1ERVNDUklQVElPTl8ke1BOfS1hbHRlcm5hdGl2ZXMgPSAiYWx0ZXJuYXRpdmVzIGNyZWF0ZXMsIHJlbW92ZXMsIG1haW50YWlucyBhbmQgZGlzcGxheXMgXAotaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5bWJvbGljIGxpbmtzIGNvbXByaXNpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0uIgotU1VNTUFSWV8ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7U1VNTUFSWV8ke1BOfS1hbHRlcm5hdGl2ZXN9IC0gRG9jdW1lbnRhdGlvbiBmaWxlcyIKLURFU0NSSVBUSU9OXyR7UE59LWFsdGVybmF0aXZlcy1kb2MgPSAiJHtERVNDUklQVElPTl8ke1BOfS1hbHRlcm5hdGl2ZXN9ICBcCi1UaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCi1SUFJPVklERVNfJHtQTn0tYWx0ZXJuYXRpdmVzICs9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIgotUkNPTkZMSUNUU18ke1BOfS1hbHRlcm5hdGl2ZXMgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtZHBrZyIKLUZJTEVTXyR7UE59LWFsdGVybmF0aXZlcyA9ICIke3NiaW5kaXJ9L2FsdGVybmF0aXZlcyAke3NiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgXAotCQkJICAgICR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzICR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcyIKLUZJTEVTXyR7UE59LWFsdGVybmF0aXZlcy1kb2MgPSAiJHttYW5kaXJ9L21hbjgvYWx0ZXJuYXRpdmVzLjggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuOC91cGRhdGUtYWx0ZXJuYXRpdmVzLjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUNWRS0yMDE2LTIwMzctMS1ieXRlLW91dC1vZi1ib3VuZHMtd3JpdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUNWRS0yMDE2LTIwMzctMS1ieXRlLW91dC1vZi1ib3VuZHMtd3JpdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMzA1NDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQ2ICswLDAgQEAKLUZyb20gZWJmOWEyZDc3NjQ3NDE4MTkzNmE3MjBjZTgxMWQ3MmJiZDFkYTNiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdmVsIFJhaXNrdXAgPHByYWlza3VwQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDI2IEphbiAyMDE2IDIzOjE3OjU0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE2LTIwMzcgLSAxIGJ5dGUgb3V0LW9mLWJvdW5kcyB3cml0ZQotCi1FbnN1cmUgdGhhdCBjcGlvX3NhZmVyX25hbWVfc3VmZml4IGFsd2F5cyB3b3JrcyB3aXRoIGR5bmFtaWNhbGx5Ci1hbGxvY2F0ZWQgYnVmZmVyLCBhbmQgdGhhdCBpdCBoYXMgc2l6ZSBvZiBhdCBsZWFzdCAzMiBieXRlcy4KLVRoZW4sIGFueSBjYWxsIHRvIGNwaW9fc2FmZXJfbmFtZV9zdWZmaXggaXMgc2FmZSAoaXQgcmVxdWlyZXMgYXQKLWxlYXN0IDIgYnl0ZXMgaW4gdGhlIGJ1ZmZlcikuCi0KLUFsc28gZW5zdXJlIHRoYXQgY19uYW1lc2l6ZSBpcyBhbHdheXMgY29ycmVjdGx5IGluaXRpYWxpemVkIChieQotY3Bpb19zZXRfY19uYW1lKSB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiByZWFkaW5nCi1maWxlX2hkci5jX25hbWVzaXplIChwcmV2aW91c2x5IGhhcHBlbmVkIGZvciB0YXIgYXJjaGl2ZXMpLgotCi1SZWZlcmVuY2VzOgotaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2J1Zy1jcGlvQGdudS5vcmcvbXNnMDA1NDUuaHRtbAotCi0qIHNyYy9jb3B5aW4uYyAocXVlcnlfcmVuYW1lKTogRHJvcCB0aGUgaGFjaywgYXMgd2Ugbm93IHdvcmsgd2l0aAotZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJ1ZmZlci4gIFVzZSBjcGlvX3NldF9jX25hbWUuCi0oY3JlYXRlX2RlZmVyZWRfbGlua3NfdG9fc2tpcHBlZCk6IFVzZSBjcGlvX3NldF9jX25hbWUgcmF0aGVyIHRoYW4KLW1hbnVhbCBhc3NpZ25tZW50LgotKHJlYWRfbmFtZV9mcm9tX2ZpbGUpOiBOZXcgZnVuY3Rpb24gdG8gYXZvaWQgQyZQLgotKHJlYWRfaW5fb2xkX2FzY2lpLCByZWFkX2luX25ld19hc2NpaSwgcmVhZF9pbl9iaW5hcnkpOiBVc2UKLXJlYWRfbmFtZV9mcm9tX2ZpbGUuCi0ocHJvY2Vzc19jb3B5X2luKTogSW5pdGlhbGl6ZSBmaWxlX2hkci5jX25hbWVzaXplLgotKiBzcmMvY29weW91dC5jIChwcm9jZXNzX2NvcHlfb3V0KTogVXNlIGNwaW9fc2V0X2NfbmFtZS4KLSogc3JjL2NwaW9oZHIuaCAoY3Bpb19zZXRfY19uYW1lKTogTmV3IHByb3RvdHlwZS4KLSogc3JjL3Rhci5jIChyZWFkX2luX3Rhcl9oZWFkZXIpOiBVc2UgY3Bpb19zZXRfY19uYW1lLgotKiBzcmMvdXRpbC5jIChjcGlvX3NldF9jX25hbWUpOiBOZXcgZnVuY3Rpb24gdG8gc2V0Ci1maWxlX2hkci0+Y19uYW1lIGFuZCBjX25hbWVzaXplIGZyb20gYXJiaXRyYXJ5IHN0cmluZy4KLShjcGlvX3NhZmVyX25hbWVfc3VmZml4KTogU29tZSBkb2NzIGZpeGVzLgotKiB0ZXN0cy9pbm91dC5hdDogQWxzbyB0ZXN0IGNvcHktaW4sIGFuZCB0cnkgdmFyaW91cyBmb3JtYXRzLgotCi1DVkU6IENWRS0yMDE2LTIwMzcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvY3Bpby5naXQvY29tbWl0Lz9pZD1kMzZlYzVmNGU5MzEzMGVmYjI0ZmI5Njc4YWFmZDg4ZTgwNzAwOTViXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gc3JjL2NvcHlpbi5jICAgfCA2OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL2NvcHlvdXQuYyAgfCAxMyArKysrKy0tLS0tLQotIHNyYy9jcGlvaGRyLmggIHwgIDEgKwotIHNyYy90YXIuYyAgICAgIHwgMTAgKysrKystLS0tCi0gc3JjL3V0aWwuYyAgICAgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSB0ZXN0cy9pbm91dC5hdCB8IDE5ICsrKysrKysrKysrKysrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcHlpbi5jIGIvc3JjL2NvcHlpbi5jCi1pbmRleCBjZGU5MTFlLi45NzJmOGE2IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlpbi5jCi0rKysgYi9zcmMvY29weWluLmMKLUBAIC03NiwyOCArNzYsNyBAQCBxdWVyeV9yZW5hbWUoc3RydWN0IGNwaW9fZmlsZV9zdGF0KiBmaWxlX2hkciwgRklMRSAqdHR5X2luLCBGSUxFICp0dHlfb3V0LAotICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotICAgZWxzZQotLSAgLyogRGViaWFuIGhhY2s6IGZpbGVfaHJkLmNfbmFtZSBpcyBzb21ldGltZXMgc2V0IHRvCi0tICAgICBwb2ludCB0byBzdGF0aWMgbWVtb3J5IGJ5IGNvZGUgaW4gdGFyLmMuICBUaGlzCi0tICAgICBjYXVzZXMgYSBzZWdmYXVsdC4gIFRoaXMgaGFzIGJlZW4gZml4ZWQgYW5kIGFuCi0tICAgICBhZGRpdGlvbmFsIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBmaWxlIG5hbWUKLS0gICAgIGlzIG5vdCB0b28gbG9uZyBoYXMgYmVlbiBhZGRlZC4gIChSZXBvcnRlZCBieQotLSAgICAgSG9yc3QgS25vYmxvY2guKSAgVGhpcyBidWcgaGFzIGJlZW4gcmVwb3J0ZWQgdG8KLS0gICAgICJidWctZ251LXV0aWxzQHByZXAuYWkubWl0LmVkdSIuICg5OS8xLzYpIC1CRU0gKi8KLS0gICAgewotLSAgICAgIGlmIChhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdGFyICYmIGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikKLS0JewotLQkgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLQkgIGZpbGVfaGRyLT5jX25hbWUgPSB4c3RyZHVwIChuZXdfbmFtZS5kc19zdHJpbmcpOwotLQl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgaWYgKGlzX3Rhcl9maWxlbmFtZV90b29fbG9uZyAobmV3X25hbWUuZHNfc3RyaW5nKSkKLS0JICAgIGVycm9yICgwLCAwLCBfKCIlczogZmlsZSBuYW1lIHRvbyBsb25nIiksCi0tCQkgICBuZXdfbmFtZS5kc19zdHJpbmcpOwotLQkgIGVsc2UKLS0JICAgIHN0cmNweSAoZmlsZV9oZHItPmNfbmFtZSwgbmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JfQotLSAgICB9Ci0rICAgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIG5ld19uYW1lLmRzX3N0cmluZyk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gDAotQEAgLTM0NCw4ICszMjMsNyBAQCBjcmVhdGVfZGVmZXJlZF9saW5rc190b19za2lwcGVkIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLAotIAkgICAgZF9wcmV2LT5uZXh0ID0gZC0+bmV4dDsKLSAJICBlbHNlCi0gCSAgICBkZWZlcm1lbnRzID0gZC0+bmV4dDsKLS0JICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0JICBmaWxlX2hkci0+Y19uYW1lID0geHN0cmR1cChkLT5oZWFkZXIuY19uYW1lKTsKLSsJICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBkLT5oZWFkZXIuY19uYW1lKTsKLSAJICBmcmVlX2RlZmVybWVudCAoZCk7Ci0gCSAgY29weWluX3JlZ3VsYXJfZmlsZShmaWxlX2hkciwgaW5fZmlsZV9kZXMpOwotIAkgIHJldHVybiAwOwotQEAgLTEwNjQsNiArMTA0MiwyMiBAQCByZWFkX2luX2hlYWRlciAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2RlcykKLSAgICAgfQotIH0KLSAKLStzdGF0aWMgdm9pZAotK3JlYWRfbmFtZV9mcm9tX2ZpbGUgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBmZCwgdWludG1heF90IGxlbikKLSt7Ci0rICBzdGF0aWMgY2hhciAqdG1wX2ZpbGVuYW1lOwotKyAgc3RhdGljIHNpemVfdCBidWZsZW47Ci0rCi0rICBpZiAoYnVmbGVuIDwgbGVuKQotKyAgICB7Ci0rICAgICAgYnVmbGVuID0gbGVuOwotKyAgICAgIHRtcF9maWxlbmFtZSA9IHhyZWFsbG9jICh0bXBfZmlsZW5hbWUsIGJ1Zmxlbik7Ci0rICAgIH0KLSsKLSsgIHRhcGVfYnVmZmVyZWRfcmVhZCAodG1wX2ZpbGVuYW1lLCBmZCwgbGVuKTsKLSsgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIHRtcF9maWxlbmFtZSk7Ci0rfQotKwotIC8qIEZpbGwgaW4gRklMRV9IRFIgYnkgcmVhZGluZyBhbiBvbGQtZm9ybWF0IEFTQ0lJIGZvcm1hdCBjcGlvIGhlYWRlciBmcm9tCi0gICAgZmlsZSBkZXNjcmlwdG9yIElOX0RFUywgZXhjZXB0IGZvciB0aGUgbWFnaWMgbnVtYmVyLCB3aGljaCBpcwotICAgIGFscmVhZHkgZmlsbGVkIGluLiAgKi8KLUBAIC0xMDkwLDE0ICsxMDg0LDggQEAgcmVhZF9pbl9vbGRfYXNjaWkgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gICBmaWxlX2hkci0+Y19yZGV2X21pbiA9IG1pbm9yIChkZXYpOwotIAotICAgZmlsZV9oZHItPmNfbXRpbWUgPSBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19tdGltZSk7Ci0tICBmaWxlX2hkci0+Y19uYW1lc2l6ZSA9IEZST01fT0NUQUwgKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKTsKLSAgIGZpbGVfaGRyLT5jX2ZpbGVzaXplID0gRlJPTV9PQ1RBTCAoYXNjaWlfaGVhZGVyLmNfZmlsZXNpemUpOwotLSAgCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplICsgMSk7Ci0tICB0YXBlX2J1ZmZlcmVkX3JlYWQgKGZpbGVfaGRyLT5jX25hbWUsIGluX2RlcywgKGxvbmcpIGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLSsgIHJlYWRfbmFtZV9mcm9tX2ZpbGUgKGZpbGVfaGRyLCBpbl9kZXMsIEZST01fT0NUQUwgKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKSk7Ci0gCi0gICAvKiBIUC9VWCBjcGlvIGNyZWF0ZXMgYXJjaGl2ZXMgdGhhdCBsb29rIGp1c3QgbGlrZSBvcmRpbmFyeSBhcmNoaXZlcywKLSAgICAgIGJ1dCBmb3IgZGV2aWNlcyBpdCBzZXRzIG1ham9yID0gMCwgbWlub3IgPSAxLCBhbmQgcHV0cyB0aGUKLUBAIC0xMTUyLDE0ICsxMTQwLDggQEAgcmVhZF9pbl9uZXdfYXNjaWkgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gICBmaWxlX2hkci0+Y19kZXZfbWluID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX2Rldl9taW4pOwotICAgZmlsZV9oZHItPmNfcmRldl9tYWogPSBGUk9NX0hFWCAoYXNjaWlfaGVhZGVyLmNfcmRldl9tYWopOwotICAgZmlsZV9oZHItPmNfcmRldl9taW4gPSBGUk9NX0hFWCAoYXNjaWlfaGVhZGVyLmNfcmRldl9taW4pOwotLSAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBGUk9NX0hFWCAoYXNjaWlfaGVhZGVyLmNfbmFtZXNpemUpOwotICAgZmlsZV9oZHItPmNfY2hrc3VtID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX2Noa3N1bSk7Ci0tICAKLS0gIC8qIFJlYWQgZmlsZSBuYW1lIGZyb20gaW5wdXQuICAqLwotLSAgaWYgKGZpbGVfaGRyLT5jX25hbWUgIT0gTlVMTCkKLS0gICAgZnJlZSAoZmlsZV9oZHItPmNfbmFtZSk7Ci0tICBmaWxlX2hkci0+Y19uYW1lID0gKGNoYXIgKikgeG1hbGxvYyAoZmlsZV9oZHItPmNfbmFtZXNpemUpOwotLSAgdGFwZV9idWZmZXJlZF9yZWFkIChmaWxlX2hkci0+Y19uYW1lLCBpbl9kZXMsIChsb25nKSBmaWxlX2hkci0+Y19uYW1lc2l6ZSk7Ci0rICByZWFkX25hbWVfZnJvbV9maWxlIChmaWxlX2hkciwgaW5fZGVzLCBGUk9NX0hFWCAoYXNjaWlfaGVhZGVyLmNfbmFtZXNpemUpKTsKLSAKLSAgIC8qIEluIFNWUjQgQVNDSUkgZm9ybWF0LCB0aGUgYW1vdW50IG9mIHNwYWNlIGFsbG9jYXRlZCBmb3IgdGhlIGhlYWRlcgotICAgICAgaXMgcm91bmRlZCB1cCB0byB0aGUgbmV4dCBsb25nLXdvcmQsIHNvIHdlIG1pZ2h0IG5lZWQgdG8gZHJvcAotQEAgLTEyMDcsMTYgKzExODksOSBAQCByZWFkX2luX2JpbmFyeSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWluID0gbWlub3IgKHNob3J0X2hkci0+Y19yZGV2KTsKLSAgIGZpbGVfaGRyLT5jX210aW1lID0gKHVuc2lnbmVkIGxvbmcpIHNob3J0X2hkci0+Y19tdGltZXNbMF0gPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAgfCBzaG9ydF9oZHItPmNfbXRpbWVzWzFdOwotLQotLSAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBzaG9ydF9oZHItPmNfbmFtZXNpemU7Ci0gICBmaWxlX2hkci0+Y19maWxlc2l6ZSA9ICh1bnNpZ25lZCBsb25nKSBzaG9ydF9oZHItPmNfZmlsZXNpemVzWzBdIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgIHwgc2hvcnRfaGRyLT5jX2ZpbGVzaXplc1sxXTsKLS0KLS0gIC8qIFJlYWQgZmlsZSBuYW1lIGZyb20gaW5wdXQuICAqLwotLSAgaWYgKGZpbGVfaGRyLT5jX25hbWUgIT0gTlVMTCkKLS0gICAgZnJlZSAoZmlsZV9oZHItPmNfbmFtZSk7Ci0tICBmaWxlX2hkci0+Y19uYW1lID0gKGNoYXIgKikgeG1hbGxvYyAoZmlsZV9oZHItPmNfbmFtZXNpemUpOwotLSAgdGFwZV9idWZmZXJlZF9yZWFkIChmaWxlX2hkci0+Y19uYW1lLCBpbl9kZXMsIChsb25nKSBmaWxlX2hkci0+Y19uYW1lc2l6ZSk7Ci0rICByZWFkX25hbWVfZnJvbV9maWxlIChmaWxlX2hkciwgaW5fZGVzLCBzaG9ydF9oZHItPmNfbmFtZXNpemUpOwotIAotICAgLyogSW4gYmluYXJ5IG1vZGUsIHRoZSBhbW91bnQgb2Ygc3BhY2UgYWxsb2NhdGVkIGluIHRoZSBoZWFkZXIgZm9yCi0gICAgICB0aGUgZmlsZW5hbWUgaXMgYGNfbmFtZXNpemUnIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgc2hvcnQtd29yZCwKLUBAIC0xMjk3LDYgKzEyNzIsNyBAQCBwcm9jZXNzX2NvcHlfaW4gKCkKLSAgICAgICByZWFkX3BhdHRlcm5fZmlsZSAoKTsKLSAgICAgfQotICAgZmlsZV9oZHIuY19uYW1lID0gTlVMTDsKLSsgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSAwOwotIAotICAgaWYgKHJlbmFtZV9iYXRjaF9maWxlKQotICAgICB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcHlvdXQuYyBiL3NyYy9jb3B5b3V0LmMKLWluZGV4IDFmMDk4N2EuLmJiMzk1NTkgMTAwNjQ0Ci0tLS0gYS9zcmMvY29weW91dC5jCi0rKysgYi9zcmMvY29weW91dC5jCi1AQCAtNjYwLDggKzY2MCw3IEBAIHByb2Nlc3NfY29weV9vdXQgKCkKLSAJICBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChpbnB1dF9uYW1lLmRzX3N0cmluZywgZmFsc2UsCi0gCQkJCSAgIW5vX2Fic19wYXRoc19mbGFnLCB0cnVlKTsKLSAjaWZuZGVmIEhQVVhfQ0RGCi0tCSAgZmlsZV9oZHIuY19uYW1lID0gaW5wdXRfbmFtZS5kc19zdHJpbmc7Ci0tCSAgZmlsZV9oZHIuY19uYW1lc2l6ZSA9IHN0cmxlbiAoaW5wdXRfbmFtZS5kc19zdHJpbmcpICsgMTsKLSsJICBjcGlvX3NldF9jX25hbWUgKCZmaWxlX2hkciwgaW5wdXRfbmFtZS5kc19zdHJpbmcpOwotICNlbHNlCi0gCSAgaWYgKCAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhcikgJiYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikgKQotIAkgICAgewotQEAgLTY3MCwxNiArNjY5LDE1IEBAIHByb2Nlc3NfY29weV9vdXQgKCkKLSAJCSBwcm9wZXJseSByZWNyZWF0ZSB0aGUgZGlyZWN0b3J5IGFzIGhpZGRlbiAoaW4gY2FzZSB0aGUKLSAJCSBmaWxlcyBvZiBhIGRpcmVjdG9yeSBnbyBpbnRvIHRoZSBhcmNoaXZlIGJlZm9yZSB0aGUKLSAJCSBkaXJlY3RvcnkgaXRzZWxmIChlLmcgZnJvbSAiZmluZCAuLi4gLWRlcHRoIC4uLiB8IGNwaW8iKSkuICAqLwotLQkgICAgICBmaWxlX2hkci5jX25hbWUgPSBhZGRfY2RmX2RvdWJsZV9zbGFzaGVzIChpbnB1dF9uYW1lLmRzX3N0cmluZyk7Ci0tCSAgICAgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSBzdHJsZW4gKGZpbGVfaGRyLmNfbmFtZSkgKyAxOwotKyAgICAgICAgICAgICAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9jZGZfZG91YmxlX3NsYXNoZXMgKGlucHV0X25hbWUuZHNfc3RyaW5nKSk7Ci0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgewotIAkgICAgICAvKiBXZSBkb24ndCBtYXJrIENERidzIGluIHRhciBmaWxlcy4gIFdlIGFzc3VtZSB0aGUgImhpZGRlbiIKLSAJCSBkaXJlY3Rvcnkgd2lsbCBhbHdheXMgZ28gaW50byB0aGUgYXJjaGl2ZSBiZWZvcmUgYW55IG9mCi0gCQkgaXRzIGZpbGVzLiAgKi8KLS0JICAgICAgZmlsZV9oZHIuY19uYW1lID0gaW5wdXRfbmFtZS5kc19zdHJpbmc7Ci0tCSAgICAgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSBzdHJsZW4gKGlucHV0X25hbWUuZHNfc3RyaW5nKSArIDE7Ci0rICAgICAgICAgICAgICBjcGlvX3NldF9jX25hbWUgKCZmaWxlX2hkciwgaW5wdXRfbmFtZS5kc19zdHJpbmcpOwotIAkgICAgfQotICNlbmRpZgotIAotQEAgLTg2Niw4ICs4NjQsNyBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gICBmaWxlX2hkci5jX2Noa3N1bSA9IDA7Ci0gCi0gICBmaWxlX2hkci5jX2ZpbGVzaXplID0gMDsKLS0gIGZpbGVfaGRyLmNfbmFtZXNpemUgPSAxMTsKLS0gIGZpbGVfaGRyLmNfbmFtZSA9IENQSU9fVFJBSUxFUl9OQU1FOwotKyAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIENQSU9fVFJBSUxFUl9OQU1FKTsKLSAgIGlmIChhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdGFyICYmIGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikKLSAgICAgd3JpdGVfb3V0X2hlYWRlciAoJmZpbGVfaGRyLCBvdXRfZmlsZV9kZXMpOwotICAgZWxzZQotZGlmZiAtLWdpdCBhL3NyYy9jcGlvaGRyLmggYi9zcmMvY3Bpb2hkci5oCi1pbmRleCBiMjllNmZiLi5mNGM2M2JlIDEwMDY0NAotLS0tIGEvc3JjL2NwaW9oZHIuaAotKysrIGIvc3JjL2NwaW9oZHIuaAotQEAgLTEyOSw1ICsxMjksNiBAQCBzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgLyogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBDUElPIGhlYWRlciAqLwotICAgY2hhciAqY190YXJfbGlua25hbWU7Ci0gfTsKLSAKLSt2b2lkIGNwaW9fc2V0X2NfbmFtZShzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBjaGFyICpuYW1lKTsKLSAKLSAjZW5kaWYgLyogY3Bpb2hkci5oICovCi1kaWZmIC0tZ2l0IGEvc3JjL3Rhci5jIGIvc3JjL3Rhci5jCi1pbmRleCBhMmNlMTcxLi5lNDFmODlkIDEwMDY0NAotLS0tIGEvc3JjL3Rhci5jCi0rKysgYi9zcmMvdGFyLmMKLUBAIC0yODIsNyArMjgyLDcgQEAgcmVhZF9pbl90YXJfaGVhZGVyIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgICAgIGlmIChudWxsX2Jsb2NrICgobG9uZyAqKSAmdGFyX3JlYywgVEFSUkVDT1JEU0laRSkpCi0gI2VuZGlmCi0gCXsKLS0JICBmaWxlX2hkci0+Y19uYW1lID0gQ1BJT19UUkFJTEVSX05BTUU7Ci0rCSAgY3Bpb19zZXRfY19uYW1lIChmaWxlX2hkciwgQ1BJT19UUkFJTEVSX05BTUUpOwotIAkgIHJldHVybjsKLSAJfQotICNpZiAwCi1AQCAtMzE2LDkgKzMxNiwxMSBAQCByZWFkX2luX3Rhcl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gCX0KLSAKLSAgICAgICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3VzdGFyKQotLQlmaWxlX2hkci0+Y19uYW1lID0gc3Rhc2hfdGFyX2ZpbGVuYW1lIChOVUxMLCB0YXJfaGRyLT5uYW1lKTsKLSsgICAgICAgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIHN0YXNoX3Rhcl9maWxlbmFtZSAoTlVMTCwgdGFyX2hkci0+bmFtZSkpOwotICAgICAgIGVsc2UKLS0JZmlsZV9oZHItPmNfbmFtZSA9IHN0YXNoX3Rhcl9maWxlbmFtZSAodGFyX2hkci0+cHJlZml4LCB0YXJfaGRyLT5uYW1lKTsKLSsgICAgICAgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIHN0YXNoX3Rhcl9maWxlbmFtZSAodGFyX2hkci0+cHJlZml4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9oZHItPm5hbWUpKTsKLSsKLSAgICAgICBmaWxlX2hkci0+Y19ubGluayA9IDE7Ci0gICAgICAgZmlsZV9oZHItPmNfbW9kZSA9IEZST01fT0NUQUwgKHRhcl9oZHItPm1vZGUpOwotICAgICAgIGZpbGVfaGRyLT5jX21vZGUgPSBmaWxlX2hkci0+Y19tb2RlICYgMDc3Nzc7Ci1AQCAtMzk4LDcgKzQwMCw3IEBAIHJlYWRfaW5fdGFyX2hlYWRlciAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2RlcykKLSAJY2FzZSBBUkVHVFlQRToKLSAJICAvKiBPbGQgdGFyIGZvcm1hdDsgaWYgdGhlIGxhc3QgY2hhciBpbiBmaWxlbmFtZSBpcyAnLycgdGhlbiBpdCBpcwotIAkgICAgIGEgZGlyZWN0b3J5LCBvdGhlcndpc2UgaXQncyBhIHJlZ3VsYXIgZmlsZS4gICovCi0tCSAgaWYgKGZpbGVfaGRyLT5jX25hbWVbc3RybGVuIChmaWxlX2hkci0+Y19uYW1lKSAtIDFdID09ICcvJykKLSsJICBpZiAoZmlsZV9oZHItPmNfbmFtZVtmaWxlX2hkci0+Y19uYW1lc2l6ZSAtIDFdID09ICcvJykKLSAJICAgIGZpbGVfaGRyLT5jX21vZGUgfD0gQ1BfSUZESVI7Ci0gCSAgZWxzZQotIAkgICAgZmlsZV9oZHItPmNfbW9kZSB8PSBDUF9JRlJFRzsKLWRpZmYgLS1naXQgYS9zcmMvdXRpbC5jIGIvc3JjL3V0aWwuYwotaW5kZXggNmZmNjAzMi4uNGYzYzA3MyAxMDA2NDQKLS0tLSBhL3NyYy91dGlsLmMKLSsrKyBiL3NyYy91dGlsLmMKLUBAIC0xNDEwLDggKzE0MTAsMzQgQEAgc2V0X2ZpbGVfdGltZXMgKGludCBmZCwKLSAgICAgdXRpbWVfZXJyb3IgKG5hbWUpOwotIH0KLSAKLSsKLSt2b2lkCi0rY3Bpb19zZXRfY19uYW1lIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBjaGFyICpuYW1lKQotK3sKLSsgIHN0YXRpYyBzaXplX3QgYnVmbGVuID0gMDsKLSsgIHNpemVfdCBsZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKLSsKLSsgIGlmIChidWZsZW4gPT0gMCkKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICBpZiAoYnVmbGVuIDwgMzIpCi0rICAgICAgICBidWZsZW4gPSAzMjsKLSsgICAgICBmaWxlX2hkci0+Y19uYW1lID0geG1hbGxvYyAoYnVmbGVuKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoYnVmbGVuIDwgbGVuKQotKyAgICB7Ci0rICAgICAgYnVmbGVuID0gbGVuOwotKyAgICAgIGZpbGVfaGRyLT5jX25hbWUgPSB4cmVhbGxvYyAoZmlsZV9oZHItPmNfbmFtZSwgYnVmbGVuKTsKLSsgICAgfQotKwotKyAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBsZW47Ci0rICBtZW1tb3ZlIChmaWxlX2hkci0+Y19uYW1lLCBuYW1lLCBsZW4pOwotK30KLSsKLSAvKiBEbyB3ZSBoYXZlIHRvIGlnbm9yZSBhYnNvbHV0ZSBwYXRocywgYW5kIGlmIHNvLCBkb2VzIHRoZSBmaWxlbmFtZQotLSAgIGhhdmUgYW4gYWJzb2x1dGUgcGF0aD8gICovCi0rICAgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoPyAgQmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBtYWtlIHN1cmUgdGhhdCB0aGUKLSsgICBhbGxvY2F0ZWQgTkFNRSBidWZmZXIgaGFzIGNhcGFjaXR5IGF0IGxlYXN0IDIgYnl0ZXMuICovCi0rCi0gdm9pZAotIGNwaW9fc2FmZXJfbmFtZV9zdWZmaXggKGNoYXIgKm5hbWUsIGJvb2wgbGlua190YXJnZXQsIGJvb2wgYWJzb2x1dGVfbmFtZXMsCi0gCQkJYm9vbCBzdHJpcF9sZWFkaW5nX2RvdHMpCi1AQCAtMTQyNiw2ICsxNDUyLDEwIEBAIGNwaW9fc2FmZXJfbmFtZV9zdWZmaXggKGNoYXIgKm5hbWUsIGJvb2wgbGlua190YXJnZXQsIGJvb2wgYWJzb2x1dGVfbmFtZXMsCi0gCSAgKytwOwotICAgICAgIH0KLSAgIGlmIChwICE9IG5hbWUpCi0rICAgIC8qIFRoZSAncCcgc3RyaW5nIGlzIHNob3J0ZW5lZCB2ZXJzaW9uIG9mICduYW1lJyB3aXRoIG9uZSBleGNlcHRpb247ICB3aGVuCi0rICAgICAgIHRoZSAnbmFtZScgcG9pbnRzIHRvIGFuIGVtcHR5IHN0cmluZyAoYnVmZmVyIHdoZXJlIG5hbWVbMF0gPT0gJ1wwJykgdGhlCi0rICAgICAgICdwJyB0aGVuIHBvaW50cyB0byBzdGF0aWMgc3RyaW5nICIuIi4gIFNvIGNhbGxlciBuZWVkcyB0byBlbnN1cmUgdGhlcmUKLSsgICAgICAgYXJlIGF0IGxlYXN0IHR3byBieXRlcyBhdmFpbGFibGUgaW4gJ25hbWUnIGJ1ZmZlciBzbyBtZW1tb3ZlIHN1Y2NlZWRzLiAqLwotICAgICBtZW1tb3ZlIChuYW1lLCBwLCAoc2l6ZV90KShzdHJsZW4gKHApICsgMSkpOwotIH0KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9pbm91dC5hdCBiL3Rlc3RzL2lub3V0LmF0Ci1pbmRleCA2MGMzNzE2Li43MzBjYmQyIDEwMDY0NAotLS0tIGEvdGVzdHMvaW5vdXQuYXQKLSsrKyBiL3Rlc3RzL2lub3V0LmF0Ci1AQCAtMzUsNyArMzUsMjIgQEAgd2hpbGUgcmVhZCBOQU1FIExFTkdUSAotIGRvCi0gCWdlbmZpbGUgLS1sZW5ndGggJExFTkdUSCA+ICROQU1FCi0gCWVjaG8gJE5BTUUKLS1kb25lIDwgZmlsZWxpc3QgfAotLSBjcGlvIC0tcXVpZXQgLW8gPiBhcmNoaXZlXSkKLStkb25lIDwgZmlsZWxpc3QgPiBmaWxlbGlzdF9yYXcKLSsKLStmb3IgZm9ybWF0IGluIGJpbiBvZGMgbmV3YyBjcmMgdGFyIHVzdGFyIGhwYmluIGhwb2RjCi0rZG8KLSsgICAgY3BpbyAtLWZvcm1hdD0kZm9ybWF0IC0tcXVpZXQgLW8gPCBmaWxlbGlzdF9yYXcgPiBhcmNoaXZlLiRmb3JtYXQKLSsgICAgcm0gLXJmIG91dHB1dAotKyAgICBta2RpciBvdXRwdXQgJiYgY2Qgb3V0cHV0Ci0rICAgIGNwaW8gLWkgLS1xdWlldCA8IC4uL2FyY2hpdmUuJGZvcm1hdAotKwotKyAgICB3aGlsZSByZWFkIGZpbGUKLSsgICAgZG8KLSsgICAgICAgIHRlc3QgLWYgJGZpbGUgfHwgZWNobyAiJGZpbGUgbm90IGZvdW5kIgotKyAgICBkb25lIDwgLi4vZmlsZWxpc3RfcmF3Ci0rCi0rICAgIGNkIC4uCi0rZG9uZQotK10pCi0gCi0gQVRfQ0xFQU5VUAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUZpeC1DVkUtMjAxNS0xMTk3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM5OTkxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUZpeC1DVkUtMjAxNS0xMTk3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLUZyb20gZGNlZTQ4OWY4MjFjMTI2MGEwMTM2ZmNkZmRiNmZmNGRkMTEwODZhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IERlYyAyMDE1IDE3OjU4OjAzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBDVkUtMjAxNS0xMTk3Ci0KLUFwcGx5IHBhdGNoIGJ5IFZpdGV6c2xhdiBDaXplayBvZiBTdVNFIHRvIGZpeCBDVkUtMjAxNS0xMTk3LgotVXBzdHJlYW0gaXMgZG9ybWFudCBvciBubyBsb25nZXIgZXhpc3RpbmcuIFRvIHJlc3RvcmUgdGhlIG9sZAotYmVoYXZpb3VyIHVzZSAtLWV4dHJhY3Qtb3Zlci1zeW1saW5rcyAoQ2xvc2VzOiAjNzc0NjY5KQotVGhpcyBpc3N1ZSBoYXMgYmVlbiBkaXNjb3ZlcmVkIGJ5IEFsZXhhbmRlciBDaGVyZXBhbm92LgotQXV0aG9yOiBWaXRlenNsYXYgQ2l6ZWsgPHZjaXpla0BzdXNlLmN6PgotQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzc0NjY5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotQ1ZFOiBDVkUtMjAxNS0xMTk3Ci1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBkb2MvY3Bpby4xICAgfCAgMSArCi0gc3JjL2NvcHlpbi5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2V4dGVybi5oIHwgIDEgKwotIHNyYy9nbG9iYWwuYyB8ICAzICsrKwotIHNyYy9tYWluLmMgICB8ICA3ICsrKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2RvYy9jcGlvLjEgYi9kb2MvY3Bpby4xCi1pbmRleCAyYTY4MjQxLi5kYzQ2NzZjIDEwMDY0NAotLS0tIGEvZG9jL2NwaW8uMQotKysrIGIvZG9jL2NwaW8uMQotQEAgLTQ5LDYgKzQ5LDcgQEAgY3BpbyBcLSBjb3B5IGZpbGVzIHRvIGFuZCBmcm9tIGFyY2hpdmVzCi0gW1xmQlwtXC1ub1wtcHJlc2VydmVcLW93bmVyXGZSXSBbXGZCXC1cLW1lc3NhZ2U9XGZJTUVTU0FHRVxmUl0KLSBbXGZCXC1cLWZvcmNlXC1sb2NhbFxmUl0gW1xmQlwtXC1ub1wtYWJzb2x1dGVcLWZpbGVuYW1lc1xmUl0gW1xmQlwtXC1zcGFyc2VcZlJdCi0gW1xmQlwtXC1vbmx5XC12ZXJpZnlcLWNyY1xmUl0gW1xmQlwtXC10b1wtc3Rkb3V0XGZSXSBbXGZCXC1cLXF1aWV0XGZSXQotK1tcZkJcLVwtZXh0cmFjdFwtb3Zlclwtc3ltbGlua3NcZlJdCi0gW1xmQlwtXC1yc2hcLWNvbW1hbmQ9XGZJQ09NTUFORFxmUl0KLSBbXGZJcGF0dGVyblxmUi4uLl0gW1xmQjxcZlIgXGZJYXJjaGl2ZVxmUl0KLSAKLWRpZmYgLS1naXQgYS9zcmMvY29weWluLmMgYi9zcmMvY29weWluLmMKLWluZGV4IGNkZTkxMWUuLjA1M2FmZTcgMTAwNjQ0Ci0tLS0gYS9zcmMvY29weWluLmMKLSsrKyBiL3NyYy9jb3B5aW4uYwotQEAgLTY5NSw2ICs2OTUsNTEgQEAgY29weWluX2xpbmsgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9maWxlX2RlcykKLSAgIGZyZWUgKGxpbmtfbmFtZSk7Ci0gfQotIAwKLSsKLStzdGF0aWMgaW50Ci0rcGF0aF9jb250YWluc19zeW1saW5rKGNoYXIgKnBhdGgpCi0rewotKyAgc3RydWN0IHN0YXQgc3Q7Ci0rICBjaGFyICpzbGFzaDsKLSsgIGNoYXIgKm5leHRzbGFzaDsKLSsKLSsgIC8qIHdlIGdvdCBOVUxMIHBvaW50ZXIgb3IgZW1wdHkgc3RyaW5nICovCi0rICBpZiAoIXBhdGggfHwgISpwYXRoKSB7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsgIH0KLSsKLSsgIHNsYXNoID0gcGF0aDsKLSsKLSsgIHdoaWxlICgobmV4dHNsYXNoID0gc3RyY2hyKHNsYXNoICsgMSwgJy8nKSkgIT0gTlVMTCkgewotKyAgICBzbGFzaCA9IG5leHRzbGFzaDsKLSsgICAgKnNsYXNoID0gJ1wwJzsKLSsKLSsgICAgaWYgKGxzdGF0KHBhdGgsICZzdCkgIT0gMCkgewotKyAgICAgIGlmIChlcnJubyA9PSBFTE9PUCkgewotKyAgICAgICAgLyogRUxPT1AgLSB0b28gbWFueSBzeW1saW5rcyAqLwotKyAgICAgICAgKnNsYXNoID0gJy8nOwotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgfSBlbHNlIGlmIChlcnJubyA9PSBFTk9NRU0pIHsKLSsgICAgICAgIC8qIE5vIG1lbW9yeSBmb3IgbHN0YXQgLSB0ZXJtaW5hdGUgKi8KLSsgICAgICAgIHhhbGxvY19kaWUoKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgLyogY2Fubm90IGxzdGF0IHBhdGggLSBnaXZlIHVwICovCi0rICAgICAgICAqc2xhc2ggPSAnLyc7Ci0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGlmIChTX0lTTE5LKHN0LnN0X21vZGUpKSB7Ci0rICAgICAgKnNsYXNoID0gJy8nOwotKyAgICAgIHJldHVybiB0cnVlOwotKyAgICB9Ci0rCi0rICAgICpzbGFzaCA9ICcvJzsKLSsgIH0KLSsKLSsgIHJldHVybiBmYWxzZTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBjb3B5aW5fZmlsZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2ZpbGVfZGVzKQotIHsKLUBAIC0xNDY4LDYgKzE1MTMsMjMgQEAgcHJvY2Vzc19jb3B5X2luICgpCi0gCXsKLSAJICAvKiBDb3B5IHRoZSBpbnB1dCBmaWxlIGludG8gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuICAqLwotIAotKyAgICAgICAgICAvKiBDYW4gd2Ugd3JpdGUgZmlsZXMgb3ZlciBzeW1saW5rcz8gKi8KLSsgICAgICAgICAgaWYgKCFleHRyYWN0X292ZXJfc3ltbGlua3MpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgaWYgKHBhdGhfY29udGFpbnNfc3ltbGluayhmaWxlX2hkci5jX25hbWUpKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgLyogc2tpcCB0aGUgZmlsZSAqLwotKyAgICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW4ndCB3cml0ZSBvdmVyIHN5bWxpbmtzLiBTa2lwcGluZyAlc1xuIiwgZmlsZV9oZHIuY19uYW1lKTsKLSsgICAgICAgICAgICAgICAgICB0YXBlX3Rvc3NfaW5wdXQgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci5jX2ZpbGVzaXplKTsKLSsgICAgICAgICAgICAgICAgICB0YXBlX3NraXBfcGFkZGluZyAoaW5fZmlsZV9kZXMsIGZpbGVfaGRyLmNfZmlsZXNpemUpOwotKyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgICAgLyogdGVybWluYXRlICovCi0rCSAgICAgICAgICBlcnJvciAoMSwgMCwgXygiQ2FuJ3Qgd3JpdGUgb3ZlciBzeW1saW5rczogJXNcbiIpLCBmaWxlX2hkci5jX25hbWUpOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQotKwotIAkgIC8qIERvIHdlIG5lZWQgdG8gcmVuYW1lIHRoZSBmaWxlPyAqLwotIAkgIGlmIChyZW5hbWVfZmxhZyB8fCByZW5hbWVfYmF0Y2hfZmlsZSkKLSAJICAgIHsKLWRpZmYgLS1naXQgYS9zcmMvZXh0ZXJuLmggYi9zcmMvZXh0ZXJuLmgKLWluZGV4IGUyN2Q2NjIuLmQ4NjRiZGUgMTAwNjQ0Ci0tLS0gYS9zcmMvZXh0ZXJuLmgKLSsrKyBiL3NyYy9leHRlcm4uaAotQEAgLTk2LDYgKzk2LDcgQEAgZXh0ZXJuIGNoYXIgaW5wdXRfaXNfc3BlY2lhbDsKLSBleHRlcm4gY2hhciBvdXRwdXRfaXNfc3BlY2lhbDsKLSBleHRlcm4gY2hhciBpbnB1dF9pc19zZWVrYWJsZTsKLSBleHRlcm4gY2hhciBvdXRwdXRfaXNfc2Vla2FibGU7Ci0rZXh0ZXJuIGJvb2wgZXh0cmFjdF9vdmVyX3N5bWxpbmtzOwotIGV4dGVybiBpbnQgKCp4c3RhdCkgKCk7Ci0gZXh0ZXJuIHZvaWQgKCpjb3B5X2Z1bmN0aW9uKSAoKTsKLSBleHRlcm4gY2hhciAqY2hhbmdlX2RpcmVjdG9yeV9vcHRpb247Ci1kaWZmIC0tZ2l0IGEvc3JjL2dsb2JhbC5jIGIvc3JjL2dsb2JhbC5jCi1pbmRleCA1N2U1MDVhLi4zMzZmY2U0IDEwMDY0NAotLS0tIGEvc3JjL2dsb2JhbC5jCi0rKysgYi9zcmMvZ2xvYmFsLmMKLUBAIC0xODcsNiArMTg3LDkgQEAgYm9vbCB0b19zdGRvdXRfb3B0aW9uID0gZmFsc2U7Ci0gLyogVGhlIG5hbWUgdGhpcyBwcm9ncmFtIHdhcyBydW4gd2l0aC4gICovCi0gY2hhciAqcHJvZ3JhbV9uYW1lOwotIAotKy8qIEV4dHJhY3QgZmlsZXMgb3ZlciBzeW1ib2xpYyBsaW5rcyAqLwotK2Jvb2wgZXh0cmFjdF9vdmVyX3N5bWxpbmtzOwotKwotIC8qIEEgcG9pbnRlciB0byBlaXRoZXIgbHN0YXQgb3Igc3RhdCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIKLSAgICBkZXJlZmVyZW5jaW5nIG9mIHN5bWxpbmtzIGlzIGRvbmUgZm9yIGlucHV0IGZpbGVzLiAgKi8KLSBpbnQgKCp4c3RhdCkgKCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKLWluZGV4IGExMzg2MWYuLjg3Y2IzMDkgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFpbi5jCi0rKysgYi9zcmMvbWFpbi5jCi1AQCAtNTksNiArNTksNyBAQCBlbnVtIGNwaW9fb3B0aW9ucyB7Ci0gICBERUJVR19PUFRJT04sICAgICAgICAgICAgICAgICAgCi0gICBCTE9DS19TSVpFX09QVElPTiwgICAgICAgICAgICAgCi0gICBUT19TVERPVVRfT1BUSU9OLAotKyAgRVhUUkFDVF9PVkVSX1NZTUxJTktTLAotICAgUkVOVU1CRVJfSU5PREVTX09QVElPTiwKLSAgIElHTk9SRV9ERVZOT19PUFRJT04sCi0gICBERVZJQ0VfSU5ERVBFTkRFTlRfT1BUSU9OCi1AQCAtMjQzLDYgKzI0NCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0gewotICAgIE5fKCJDcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyB3aGVyZSBuZWVkZWQiKSwgR1JJRCsxIH0sCi0gICB7Im5vLXByZXNlcnZlLW93bmVyIiwgTk9fUFJFU0VSVkVfT1dORVJfT1BUSU9OLCAwLCAwLAotICAgIE5fKCJEbyBub3QgY2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgdGhlIGZpbGVzIiksIEdSSUQrMSB9LAotKyAgeyJleHRyYWN0LW92ZXItc3ltbGlua3MiLCBFWFRSQUNUX09WRVJfU1lNTElOS1MsIDAsIDAsCi0rICAgTl8oIkZvcmNlIHdyaXRpbmcgb3ZlciBzeW1ib2xpYyBsaW5rcyIpLCBHUklEKzEgfSwKLSAgIHsidW5jb25kaXRpb25hbCIsICd1JywgTlVMTCwgMCwKLSAgICBOXygiUmVwbGFjZSBhbGwgZmlsZXMgdW5jb25kaXRpb25hbGx5IiksIEdSSUQrMSB9LAotICAgeyJzcGFyc2UiLCBTUEFSU0VfT1BUSU9OLCBOVUxMLCAwLAotQEAgLTQzMiw2ICs0MzUsMTAgQEAgY3JjIG5ld2Mgb2RjIGJpbiB1c3RhciB0YXIgKGFsbC1jYXBzIGFsc28gcmVjb2duaXplZCkiKSwgYXJnKSk7Ci0gICAgICAgbm9fY2hvd25fZmxhZyA9IHRydWU7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2UgRVhUUkFDVF9PVkVSX1NZTUxJTktTOiAgICAgICAgICAgICAgICAgICAgICAgIC8qIC0tZXh0cmFjdC1vdmVyLXN5bWxpbmtzICovCi0rICAgICAgZXh0cmFjdF9vdmVyX3N5bWxpbmtzID0gdHJ1ZTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSAnbyc6CQkvKiBDb3B5LW91dCBtb2RlLiAgKi8KLSAgICAgICBpZiAoY29weV9mdW5jdGlvbiAhPSAwKQotIAlVU0FHRV9FUlJPUiAoKDAsIDAsIF8oIk1vZGUgYWxyZWFkeSBkZWZpbmVkIikpKTsKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUZpeC1zZWdmYXVsdC13aXRoLWFwcGVuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4YjMwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLUZpeC1zZWdmYXVsdC13aXRoLWFwcGVuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMzJkOTVmZTBjOTBjNTkzNTJhMGNlMzEwMmZjOTg2NmNiZmIwZjYyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlcmdleSBQb3pueWFrb2ZmIDxncmF5QGdudS5vcmc+Ci1EYXRlOiBTYXQsIDEgRGVjIDIwMTggMTE6NDA6MDIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNpZ2ZhdWx0IHdoZW4gYXBwZW5kaW5nIHRvIGFyY2hpdmUKLQotQnVnIHJlcG9ydGVkIGJ5IFJvc3MgQnVydG9uLiBTZWUKLTxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWNwaW8vMjAxOC0xMS9tc2cwMDAwMC5odG1sPgotCi0qIHNyYy91dGlsLmM6IEtlZXAgc3RhdGljIGNvcHkgb2YgdGhlIGJ1ZmZlciBwb2ludGVyOyBhbHdheXMKLWFzc2lnbiBpdCB0byBmaWxlX2hkci0+Y19uYW1lLiBVc2UgeDJyZWFsbG9jIGZvciBtZW1vcnkgbWFuYWdlbWVudC4KLS0tLQotIHNyYy91dGlsLmMgfCAxNyArKysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3V0aWwuYyBiL3NyYy91dGlsLmMKLWluZGV4IDEwNDg2ZGMuLjRlNDkxMjQgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jCi0rKysgYi9zcmMvdXRpbC5jCi1AQCAtMTQxMywyMiArMTQxMywxMyBAQCBzZXRfZmlsZV90aW1lcyAoaW50IGZkLAotIHZvaWQKLSBjcGlvX3NldF9jX25hbWUgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGNoYXIgKm5hbWUpCi0gewotKyAgc3RhdGljIGNoYXIgKmJ1ZiA9IE5VTEw7Ci0gICBzdGF0aWMgc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0gICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0gCi0tICBpZiAoYnVmbGVuID09IDApCi0tICAgIHsKLS0gICAgICBidWZsZW4gPSBsZW47Ci0tICAgICAgaWYgKGJ1ZmxlbiA8IDMyKQotLSAgICAgICAgYnVmbGVuID0gMzI7Ci0tICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhtYWxsb2MgKGJ1Zmxlbik7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGJ1ZmxlbiA8IGxlbikKLS0gICAgewotLSAgICAgIGJ1ZmxlbiA9IGxlbjsKLS0gICAgICBmaWxlX2hkci0+Y19uYW1lID0geHJlYWxsb2MgKGZpbGVfaGRyLT5jX25hbWUsIGJ1Zmxlbik7Ci0tICAgIH0KLS0KLSsgIHdoaWxlIChidWZsZW4gPCBsZW4pCi0rICAgIGJ1ZiA9IHgycmVhbGxvYyAoYnVmLCAmYnVmbGVuKTsKLSsgIGZpbGVfaGRyLT5jX25hbWUgPSBidWY7Ci0gICBmaWxlX2hkci0+Y19uYW1lc2l6ZSA9IGxlbjsKLSAgIG1lbW1vdmUgKGZpbGVfaGRyLT5jX25hbWUsIG5hbWUsIGxlbik7Ci0gfQotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MTNiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBjcGlvIGlzIGEgcHJvZ3JhbSB0byBtYW5hZ2UgYXJjaGl2ZXMgb2YgZmlsZXMiCi1ERVNDUklQVElPTiA9ICJHTlUgY3BpbyBpcyBhIHRvb2wgZm9yIGNyZWF0aW5nIGFuZCBleHRyYWN0aW5nIGFyY2hpdmVzLCBvciBjb3B5aW5nIGZpbGVzIGZyb20gb25lIHBsYWNlIHRvIFwKLWFub3RoZXIuIEl0IGhhbmRsZXMgYSBudW1iZXIgb2YgY3BpbyBmb3JtYXRzIGFzIHdlbGwgYXMgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIgZmlsZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NwaW8vIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vY3Bpby9jcGlvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUNWRS0yMDE1LTExOTcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXNlZ2ZhdWx0LXdpdGgtYXBwZW5kLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmMyMDc1NjFhODZiNjM4NjJlZWE0YjgzMDAzMTNlODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhhMzVlOTJkZWIzYzg1ZDI2OWEwMDU5YTI3ZDQxNDBhOTY2N2E2MzY5NDU5Mjk5ZDA4YzE3ZjcxM2E5MmU3MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLUVYVFJBX09FQ09ORiArPSAiREVGQVVMVF9STVRfRElSPSR7c2JpbmRpcn0iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0vCi0gICAgICAgIG12ICIke0R9JHtiaW5kaXJ9L2NwaW8iICIke0R9JHtiYXNlX2JpbmRpcn0vY3BpbyIKLSAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLSAgICBmaQotCi0gICAgIyBBdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgdmVyc2lvbiBmcm9tIHRhcgotICAgIG12ICIke0R9JHttYW5kaXJ9L21hbjgvcm10LjgiICIke0R9JHttYW5kaXJ9L21hbjgvcm10LWNwaW8uOCIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJtdCIKLQotRklMRVNfJHtQTn0tcm10ID0gIiR7c2JpbmRpcn0vcm10KiIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiY3BpbyIKLUFMVEVSTkFUSVZFXyR7UE59LXJtdCA9ICJybXQiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgotCi1BTFRFUk5BVElWRV9QUklPUklUWVtybXRdID0gIjUwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JtdF0gPSAiJHtzYmluZGlyfS9ybXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fMi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2VhOGM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTMuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJHTlUgY3BpbyBpcyBhIHByb2dyYW0gdG8gbWFuYWdlIGFyY2hpdmVzIG9mIGZpbGVzIgorREVTQ1JJUFRJT04gPSAiR05VIGNwaW8gaXMgYSB0b29sIGZvciBjcmVhdGluZyBhbmQgZXh0cmFjdGluZyBhcmNoaXZlcywgb3IgY29weWluZyBmaWxlcyBmcm9tIG9uZSBwbGFjZSB0byBcCithbm90aGVyLiBJdCBoYW5kbGVzIGEgbnVtYmVyIG9mIGNwaW8gZm9ybWF0cyBhcyB3ZWxsIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyIGZpbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jcGlvLyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NwaW8vY3Bpby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM4OWM1NDUyZDY2N2MyM2I1ZWNlYjIwNmY1MDAwODEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NzQ3MGQ5Yzk4NDMxN2Y2NTg1NjdjMDNiZmVmYjZiMGM4MjlmZjE3ZGJmNmIwZGU0OGQ3MWE0YzhmM2RiODgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitFWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9LworICAgICAgICBtdiAiJHtEfSR7YmluZGlyfS9jcGlvIiAiJHtEfSR7YmFzZV9iaW5kaXJ9L2NwaW8iCisgICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisgICAgZmkKKworICAgICMgQXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIHZlcnNpb24gZnJvbSB0YXIKKyAgICBtdiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC44IiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC1jcGlvLjgiCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1ybXQiCisKK0ZJTEVTXyR7UE59LXJtdCA9ICIke3NiaW5kaXJ9L3JtdCoiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNwaW8iCitBTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFlbcm10XSA9ICI1MCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7c2JpbmRpcn0vcm10IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzVjNjY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1TVU1NQVJZID0gIkNyb24gZGFlbW9uIGZvciBleGVjdXRpbmcgcHJvZ3JhbXMgYXQgc2V0IHRpbWVzIgotREVTQ1JJUFRJT04gPSAiQ3JvbmllIGNvbnRhaW5zIHRoZSBzdGFuZGFyZCBVTklYIGRhZW1vbiBjcm9uZCB0aGF0IHJ1bnMgXAotc3BlY2lmaWVkIHByb2dyYW1zIGF0IHNjaGVkdWxlZCB0aW1lcyBhbmQgcmVsYXRlZCB0b29scy4gSXQgaXMgYmFzZWQgb24gdGhlIFwKLW9yaWdpbmFsIGNyb24gYW5kIGhhcyBzZWN1cml0eSBhbmQgY29uZmlndXJhdGlvbiBlbmhhbmNlbWVudHMgbGlrZSB0aGUgXAotYWJpbGl0eSB0byB1c2UgcGFtIGFuZCBTRUxpbnV4LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tIgotCi0jIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSBMaWNlbnNlCi1MSUNFTlNFID0gIklTQyAmIEJTRC0zLUNsYXVzZSAmIEJTRC0yLUNsYXVzZSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRkMmE1OTIxNzA3NjBlMTM4NmM3NjllMTA0M2IzNzIyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jcm9uLmM7ZW5kbGluZT0yMDttZDU9YjQyNWMzMzQyNjUwMjYxNzcxMjgzNTNhMTQyNjMzYjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BvcGVuLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0zMTttZDU9ZWRkNTA3NDJkOGRlZjcxMmU5NDcyZGJhMzUzNjY4YTkiCi0KLVNFQ1RJT04gPSAidXRpbHMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kLyR7QlBOfS9yZWxlYXNlcy8iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvcmVsZWFzZXMvZG93bmxvYWQvY3JvbmllLSR7UFZ9LWZpbmFsL2Nyb25pZS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY3JvbmQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9udGFiIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLnNlcnZpY2UgXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0iCi0KLVBBTV9TUkNfVVJJID0gImZpbGU6Ly9jcm9uZF9wYW1fY29uZmlnLnBhdGNoIgotUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tYWNjZXNzIHBhbS1wbHVnaW4tbG9naW51aWQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMDIzM2I5Njk5N2UxN2ExNDJlMWZiZTBkN2NlODIyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjg5NzA1NTljYWQ0MjYyZjhmZmQ3ZWM3MmFiZjY4MmQyZGNjZTA0ZmRmYjhmMjA2YTcxZDk2NTY2YWJhODgyIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLXdpdGgtYXVkaXQsLS13aXRob3V0LWF1ZGl0LGF1ZGl0LCIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtLCR7UEFNX0RFUFN9IgotCi1JTklUU0NSSVBUX05BTUUgPSAiY3JvbmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5MCAyIDMgNCA1IC4gc3RvcCA2MCAwIDEgNiAuIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY3JvbnRhYiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNyb25kLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcm9uZC5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nyb25kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY3JvbmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY3JvbmQKLQotCSMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY3JvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jcm9uZC5zZXJ2aWNlCi0KLQkjIGJlbG93IGFyZSBuZWNlc3NhcnkgZm9yIGEgY29tcGxldGUgY3JvbiBlbnZpcm9ubWVudAotCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb250YWIgJHtEfSR7c3lzY29uZmRpcn0vCi0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kCi0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkKLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkKLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRlbnkKLQotCSMgYmVsb3cgc2V0dGluZyBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgbm9ybWFsIHVzZXIgdXNpbmcgY3JvbnRhYgotCi0JIyBzZXRnaWQgZm9yIGNyb250YWIgYmluYXJ5Ci0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCWNobW9kIDI3NTUgJHtEfSR7YmluZGlyfS9jcm9udGFiCi0KLQkjIGFsbG93ICdjcm9udGFiJyBncm91cCB3cml0ZSB0byAvdmFyL3Nwb29sL2Nyb24KLQljaG93biByb290OmNyb250YWIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCWNobW9kIDc3MCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCi0KLQljaG1vZCA2MDAgJHtEfSR7c3lzY29uZmRpcn0vY3JvbnRhYgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9uKiIKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9udGFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlZjRhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjUuYmIKQEAgLTAsMCArMSw4NCBAQAorU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKK0RFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKK3NwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCitvcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKK2FiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKKworIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQorTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgorCitTRUNUSU9OID0gInV0aWxzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC8ke0JQTn0vcmVsZWFzZXMvIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllL3JlbGVhc2VzL2Rvd25sb2FkL2Nyb25pZS0ke1BWfS9jcm9uaWUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2Nyb25kLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vY3JvbnRhYiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9uZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCIKK1BBTV9ERVBTID0gImxpYnBhbSBsaWJwYW0tcnVudGltZSBwYW0tcGx1Z2luLWFjY2VzcyBwYW0tcGx1Z2luLWxvZ2ludWlkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzUxYTM3ZDBiNWJkMDE0NDgxNjcyNGI0NDgyNzQ3YWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmUzNGM3OTUwNWU1NTQ0MzIzMjgxODU0NzQ0Yjk5NTVmZjE2YjE2MGVlNTY5ZjlkZjdjMGRkZGFlNTcyMGVhYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKK1BBQ0tBR0VDT05GSUdbYW5hY3Jvbl0gPSAiLS1lbmFibGUtYW5hY3JvbiwtLWRpc2FibGUtYW5hY3JvbixhbmFjcm9uIgorCitJTklUU0NSSVBUX05BTUUgPSAiY3JvbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5MCAyIDMgNCA1IC4gc3RvcCA2MCAwIDEgNiAuIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY3JvbnRhYiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNyb25kLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcm9uZC5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nyb25kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY3JvbmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY3JvbmQKKworCSMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY3JvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jcm9uZC5zZXJ2aWNlCisKKwkjIGJlbG93IGFyZSBuZWNlc3NhcnkgZm9yIGEgY29tcGxldGUgY3JvbiBlbnZpcm9ubWVudAorCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb250YWIgJHtEfSR7c3lzY29uZmRpcn0vCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRlbnkKKworCSMgYmVsb3cgc2V0dGluZyBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgbm9ybWFsIHVzZXIgdXNpbmcgY3JvbnRhYgorCisJIyBzZXRnaWQgZm9yIGNyb250YWIgYmluYXJ5CisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCWNobW9kIDI3NTUgJHtEfSR7YmluZGlyfS9jcm9udGFiCisKKwkjIGFsbG93ICdjcm9udGFiJyBncm91cCB3cml0ZSB0byAvdmFyL3Nwb29sL2Nyb24KKwljaG93biByb290OmNyb250YWIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCWNobW9kIDc3MCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCisKKwljaG1vZCA2MDAgJHtEfSR7c3lzY29uZmRpcn0vY3JvbnRhYgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9uKiIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9udGFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKaW5kZXggMjE0OWNiZS4uZTM4OWQ4YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC01LDE0ICs1LDE2IEBACiBkb2N1bWVudCB0eXBlcy4iCiBIT01FUEFHRSA9ICJodHRwczovL3d3dy5jdXBzLm9yZy8iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogREVQRU5EUyA9ICJnbnV0bHMgbGlicG5nIGpwZWcgZGJ1cyB6bGliIGxpYnVzYjEiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LXNvdXJjZS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdXNlX2VjaG9fb25seV9pbl9pbml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jdXBzXzEuNC42LmJiLUZpeC1idWlsZC1vbi1wcGM2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X2N1cHMgXAorICAgICAgICAgICBmaWxlOi8vY3Vwcy12b2xhdGlsZXMuY29uZiBcCiAgICAgICAgICAgICIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzIgpAQCAtMjIsNyArMjQsNyBAQAogCiBDTEVBTkJST0tFTiA9ICIxIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBiaW5jb25maWcgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZyBtdWx0aWxpYl9zY3JpcHQKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKIEdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGxwYWRtaW4iCkBAIC00NSwxMCArNDcsNiBAQAogICAgICAgICAgICAgICAgLS1lbmFibGUtZGVidWcgXAogICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlbHJvIFwKICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYnVzYiBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcGhwIFwKLSAgICAgICAgICAgICAgIC0td2l0aG91dC1wZXJsIFwKLSAgICAgICAgICAgICAgIC0td2l0aG91dC1weXRob24gXAotICAgICAgICAgICAgICAgLS13aXRob3V0LWphdmEgXAogICAgICAgICAgICAgICAgRFNPRkxBR1M9JyR7TERGTEFHU30nIFwKICAgICAgICAgICAgICAgICIKIApAQCAtNzEsNiArNjksNyBAQAogCiAJIyBSZW1vdmUgL3Zhci9ydW4gZnJvbSBwYWNrYWdlIGFzIGN1cHNkIHdpbGwgcG9wdWxhdGUgaXQgb24gc3RhcnR1cAogCXJtIC1mciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuCisJcm0gLWZyICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cKIAlybWRpciAke0R9LyR7bGliZXhlY2Rpcn0vJHtCUE59L2RyaXZlcgogCiAJIyBGaXggdGhlIHBhbSBjb25maWd1cmF0aW9uIGZpbGUgcGVybWlzc2lvbnMKQEAgLTgyLDE4ICs4MSwyMCBAQAogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ2ZhbHNlJywndHJ1ZScsZCl9OyB0aGVuCiAJICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAJICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYyoKKwkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2N1cHMtdm9sYXRpbGVzLmNvbmYgXAorCQkgICAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9jdXBzLmNvbmYKKwllbHNlCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X2N1cHMgXAorCQkgICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfY3VwcwogCWZpCiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS1saWIgJHtQTn0tbGliaW1hZ2UiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3Byb2NwcycsICcnLCBkKX0iCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2N1cHMvYmFja2VuZCBcCi0JCSR7bGliZGlyfS9jdXBzL2NnaS1iaW4gXAotCQkke2xpYmRpcn0vY3Vwcy9maWx0ZXIgXAotCQkke2xpYmRpcn0vY3Vwcy9tb25pdG9yIFwKLQkJJHtsaWJkaXJ9L2N1cHMvbm90aWZpZXIgXAotCQkke2xpYmRpcn0vY3Vwcy9kYWVtb24gXAorRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0vY3Vwcy8gXAogCSAgICAgICAiCiAKIEZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliY3Vwcy5zby4qIgpAQCAtMTA5LDcgKzExMCw5IEBACiAgICAgICAgICAgICAgICAiCiBDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3Vwcy9jdXBzZC5jb25mIgogCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vY3Vwcy1jb25maWciCisKIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiY3Vwc19zeXNyb290X3ByZXByb2Nlc3MiCiBjdXBzX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0Jc2VkIC1pICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vY3Vwcy1jb25maWcgLWUgJ3M6Y3Vwc19kYXRhZGlyPS4qOmN1cHNfZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHM6JyAtZSAnczpjdXBzX3NlcnZlcmJpbj0uKjpjdXBzX3NlcnZlcmJpbj0ke2xpYmRpcn0vY3VwczonCisJc2VkIC1pICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vY3Vwcy1jb25maWcgLWUgJ3M6Y3Vwc19kYXRhZGlyPS4qOmN1cHNfZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHM6JyAtZSAnczpjdXBzX3NlcnZlcmJpbj0uKjpjdXBzX3NlcnZlcmJpbj0ke2xpYmV4ZWNkaXJ9L2N1cHM6JwogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhNjlmMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gMWZiMDcxNjJhOWVkMTg3Y2NjZjA2ZTM0YzliZjg0MWQxNWM2ZTY0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBTdW4sIDMwIEphbiAyMDExIDE2OjM3OjI3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHRyeSB0byBydW4gZ2VuZXJhdGVkIGJpbmFyaWVzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci0KLS0tLQotIHBwZGMvTWFrZWZpbGUgfCAzMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BwZGMvTWFrZWZpbGUgYi9wcGRjL01ha2VmaWxlCi1pbmRleCBlNTYzOTg4Li45NzNkZDNmIDEwMDY0NAotLS0tIGEvcHBkYy9NYWtlZmlsZQotKysrIGIvcHBkYy9NYWtlZmlsZQotQEAgLTE4OSw4ICsxODksOCBAQCBnZW5zdHJpbmdzOgkJZ2Vuc3RyaW5ncy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIFwKLSAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKExERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKLSAJCWxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpIFwKLSAJCSQoRE5TU0RMSUJTKSAkKENPTU1PTkxJQlMpICQoTElCWikKLS0JZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCi0tCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKLSsjCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgotKyMJLi9nZW5zdHJpbmdzID5zYW1wbGUuYwotIAotIAotICMKLUBAIC0yMDksOSArMjA5LDkgQEAgcHBkYy1zdGF0aWM6CQlwcGRjLm8gbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgZm9vLmRydiBmb28tZnIucG8KLSAJCS4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSAkKEROU1NETElCUykgXAotIAkJJChDT01NT05MSUJTKSAkKExJQlopCi0gCSQoQ09ERV9TSUdOKSAtcyAiJChDT0RFX1NJR05fSURFTlRJVFkpIiAkQAotLQllY2hvIFRlc3RpbmcgUFBEIGNvbXBpbGVyLi4uCi0tCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLUkgLi4vZGF0YSBmb28uZHJ2Ci0tCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2Ci0rIwllY2hvIFRlc3RpbmcgUFBEIGNvbXBpbGVyLi4uCi0rIwkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgotKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAteiAtSSAuLi9kYXRhIGZvby5kcnYKLSAKLSAKLSAjCi1AQCAtMjQwLDE3ICsyNDAsMTcgQEAgcHBkaS1zdGF0aWM6CQlwcGRjLXN0YXRpYyBwcGRpLm8gbGliY3Vwc3BwZGMuYSAgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpCi0gCQkuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgJChETlNTRExJQlMpIFwKLSAJCSQoQ09NTU9OTElCUykgJChMSUJaKQotIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKLS0JZWNobyBUZXN0aW5nIFBQRCBpbXBvcnRlci4uLgotLQkkKFJNKSAtciBwcGQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgotLQkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgotLQkuL3BwZGktc3RhdGljIC1JIC4uL2RhdGEgLW8gc2FtcGxlLWltcG9ydC5kcnYgcHBkLyoKLS0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIC1kIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKLS0JaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKLS0JCWVjaG8gUFBEIGltcG9ydCBPSzsgXAotLQllbHNlIFwKLS0JCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKLS0JCWV4aXQgMTsgXAotLQlmaQotKyMJZWNobyBUZXN0aW5nIFBQRCBpbXBvcnRlci4uLgotKyMJJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKLSsjCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSBzYW1wbGUuZHJ2Ci0rIwkuL3BwZGktc3RhdGljIC1JIC4uL2RhdGEgLW8gc2FtcGxlLWltcG9ydC5kcnYgcHBkLyoKLSsjCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0rIwlpZiBkaWZmIC1yIHBwZCBwcGQyID4vZGV2L251bGw7IHRoZW4gXAotKyMJCWVjaG8gUFBEIGltcG9ydCBPSzsgXAotKyMJZWxzZSBcCi0rIwkJZWNobyBQUEQgaW1wb3J0IEZBSUxFRDsgXAotKyMJCWV4aXQgMTsgXAotKyMJZmkKLSAKLSAKLSAjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS11c2UtZWNoby1vbmx5LWluLWluaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS11c2UtZWNoby1vbmx5LWluLWluaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiYmFkMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLXVzZS1lY2hvLW9ubHktaW4taW5pdC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGEzZjRkOGJhOTdmNDY2OWE5NTk0M2E3ZTY1ZWI2MWFhNDRjZTc5OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDEzIERlYyAyMDEyIDE5OjAzOjUyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMS80XSB1c2UgZWNobyBvbmx5IGluIGluaXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc2NoZWR1bGVyL2N1cHMuc2guaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY2hlZHVsZXIvY3Vwcy5zaC5pbiBiL3NjaGVkdWxlci9jdXBzLnNoLmluCitpbmRleCA4OWFjMzZkLi42NjE4YTBmIDEwMDY0NAorLS0tIGEvc2NoZWR1bGVyL2N1cHMuc2guaW4KKysrKyBiL3NjaGVkdWxlci9jdXBzLnNoLmluCitAQCAtNTAsNyArNTAsNyBAQCBjYXNlICJgdW5hbWVgIiBpbgorIAkJRUNIT19FUlJPUj06CisgCQk7OworIAorLQlMaW51eCopCisrCURpc2FibGVMaW51eCopCisgCQlJU19PTj0vYmluL3RydWUKKyAJCWlmIHRlc3QgLWYgL2V0Yy9pbml0LmQvZnVuY3Rpb25zOyB0aGVuCisgCQkJLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDItZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyNDhlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gM2U5YTk2NWRjZDY1YWIyZDQwYjc1M2I2Zjc5MmExYTQ1NTkxODJhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CitEYXRlOiBTdW4sIDMwIEphbiAyMDExIDE2OjM3OjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBkb24ndCB0cnkgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorCistLS0KKyBwcGRjL01ha2VmaWxlIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcGRjL01ha2VmaWxlIGIvcHBkYy9NYWtlZmlsZQoraW5kZXggMzJlMmUwYi4uZjE0NzhkNCAxMDA2NDQKKy0tLSBhL3BwZGMvTWFrZWZpbGUKKysrKyBiL3BwZGMvTWFrZWZpbGUKK0BAIC0xODYsOCArMTg2LDggQEAgZ2Vuc3RyaW5nczoJCWdlbnN0cmluZ3MubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSBcCisgCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChBTExfTERGTEFHUykgLW8gZ2Vuc3RyaW5ncyBnZW5zdHJpbmdzLm8gXAorIAkJbGliY3Vwc3BwZGMuYSAkKExJTktDVVBTU1RBVElDKQorIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKKy0JZWNobyBHZW5lcmF0aW5nIGxvY2FsaXphdGlvbiBzdHJpbmdzLi4uCistCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKKysjCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgorKyMJLi9nZW5zdHJpbmdzID5zYW1wbGUuYworIAorIAorICMKK0BAIC0yMDUsOSArMjA1LDkgQEAgcHBkYy1zdGF0aWM6CQlwcGRjLm8gbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgZm9vLmRydiBmb28tZnIucG8KKyAJJChMRF9DWFgpICQoQVJDSEZMQUdTKSAkKEFMTF9MREZMQUdTKSAtbyBwcGRjLXN0YXRpYyBwcGRjLm8gbGliY3Vwc3BwZGMuYSBcCisgCQkkKExJTktDVVBTU1RBVElDKQorIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKKy0JZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgorLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgorLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgorKyMJZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2CisgCisgCisgIworQEAgLTIzNSwxNyArMjM1LDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpCisgCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChBTExfTERGTEFHUykgLW8gcHBkaS1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgXAorIAkJJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KKy0JJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKy0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKKy0JLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCistCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CistCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCistCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKKy0JZWxzZSBcCistCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCistCQlleGl0IDE7IFwKKy0JZmkKKysjCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KKysjCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CisrIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgorKyMJLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCisrIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorKyMJaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKKysjCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKKysjCWVsc2UgXAorKyMJCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKKysjCQlleGl0IDE7IFwKKysjCWZpCisgCisgCisgIworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMy1jdXBzXzEuNC42LmJiLUZpeC1idWlsZC1vbi1wcGM2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDhjN2E5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSA2NmMyMDc5YWU5MTM4OWVlMGY5ZDcwNGJmMGQyY2NjZDUzYjJjNjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjIgSnVsIDIwMTIgMTY6NTQ6MTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIGN1cHNfMS40LjYuYmI6IEZpeCBidWlsZCBvbiBwcGM2NAorCitNYWtlIENVUFNfU0VSVkVSQklOIHJlbGF0aXZlIHRvIGxpYmRpciBvdGhlcndpc2Ugb24gNjRiaXQgYXJjaGVzCitlLmcuIHBwYzY0IHdoZXJlIGJhc2UgbGliZGlyIGlzIGxpYjY0IHRoaXMgZG9lcyBub3QgZ28gd2VsbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCisKK1VwZGF0ZSBvbiAyMDE5MDkwNDoKK1JlZGVmaW5lIENVUFNfU0VSVkVSQklOIHRvICIkbGliZXhlY2Rpci9jdXBzIiB3aGljaCBzb2x2ZXMgZmlsZSBjb25mbGljdGlvbgord2hlbiBtdWx0aWxpYiBpcyBlbmFibGVkLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNCB8IDIgKy0KKyBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNCBiL2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQKK2luZGV4IGI3NDA4M2EuLjlhNWFiYjIgMTAwNjQ0CistLS0gYS9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CisrKysgYi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CitAQCAtMjcwLDcgKzI3MCw3IEBAIGNhc2UgIiRob3N0X29zX25hbWUiIGluCisgCSopCisgCQkjIEFsbCBvdGhlcnMKKyAJCUlOU1RBTExfU1lTVj0iaW5zdGFsbC1zeXN2IgorLQkJQ1VQU19TRVJWRVJCSU49IiRleGVjX3ByZWZpeC9saWIvY3VwcyIKKysJCUNVUFNfU0VSVkVSQklOPSIkbGliZXhlY2Rpci9jdXBzIgorIAkJOzsKKyBlc2FjCisgCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBkM2RmMTQ1Li5iYzY4YTZjIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC02NDIwLDcgKzY0MjAsNyBAQCBjYXNlICIkaG9zdF9vc19uYW1lIiBpbgorIAkqKQorIAkJIyBBbGwgb3RoZXJzCisgCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKKy0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCisrCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKKyAJCTs7CisgZXNhYworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDQtY3Vwcy1maXgtbXVsdGlsaWItaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM5MjYwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA3ZGJkYTE4ODdhYTE5YWI3MjBhZmYyMjMxMmY0Y2FmZjJkNTc1ZjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMgT2N0IDIwMTggMDA6Mjc6MTEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGN1cHM6IGZpeCBtdWx0aWxpYiBpbnN0YWxsIGZpbGUgY29uZmxpY3RzCisKK0BDVVBTX1NFUlZFUkJJTkAgaXMgJHtsaWJkaXJ9IHJlbGF0ZWQgdGhhdCBjYXVzZXMgbXVsdGlsaWIgaW5zdGFsbCBmaWxlCitjb25mbGljdC4gUmVtb3ZlIEBDVVBTX1NFUlZFUkJJTkAgZnJvbSB0aGUgY29tbWVudCBsaW5lIG9mIGN1cHMtZmlsZXMuY29uZiB0bworYXZvaWQgdGhlIGNvbmZsaWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbiBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCitpbmRleCA0YTc4YmE2Li4wM2M2NTgyIDEwMDY0NAorLS0tIGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KKysrKyBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCitAQCAtNzMsNyArNzMsNyBAQCBQYWdlTG9nIEBDVVBTX0xPR0RJUkAvcGFnZV9sb2cKKyAjUmVxdWVzdFJvb3QgQENVUFNfUkVRVUVTVFNACisgCisgIyBMb2NhdGlvbiBvZiBoZWxwZXIgcHJvZ3JhbXMuLi4KKy0jU2VydmVyQmluIEBDVVBTX1NFUlZFUkJJTkAKKysjU2VydmVyQmluCisgCisgIyBTU0wvVExTIGtleWNoYWluIGZvciB0aGUgc2NoZWR1bGVyLi4uCisgI1NlcnZlcktleWNoYWluIEBDVVBTX1NFUlZFUktFWUNIQUlOQAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODg1ZmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUBDVVBTX1NFUlZFUkJJTkAgaXMgJHtsaWJkaXJ9IHJlbGF0ZWQgdGhhdCBjYXVzZXMgbXVsdGlsaWIgaW5zdGFsbCBmaWxlCi1jb25mbGljdC4gUmVtb3ZlIEBDVVBTX1NFUlZFUkJJTkAgZnJvbSB0aGUgY29tbWVudCBsaW5lIG9mIGN1cHMtZmlsZXMuY29uZiB0bwotYXZvaWQgdGhlIGNvbmZsaWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluIGIvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KLWluZGV4IDRhNzhiYTYuLjAzYzY1ODIgMTAwNjQ0Ci0tLS0gYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgotKysrIGIvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KLUBAIC03Myw3ICs3Myw3IEBAIFBhZ2VMb2cgQENVUFNfTE9HRElSQC9wYWdlX2xvZwotICNSZXF1ZXN0Um9vdCBAQ1VQU19SRVFVRVNUU0AKLSAKLSAjIExvY2F0aW9uIG9mIGhlbHBlciBwcm9ncmFtcy4uLgotLSNTZXJ2ZXJCaW4gQENVUFNfU0VSVkVSQklOQAotKyNTZXJ2ZXJCaW4KLSAKLSAjIFNTTC9UTFMga2V5Y2hhaW4gZm9yIHRoZSBzY2hlZHVsZXIuLi4KLSAjU2VydmVyS2V5Y2hhaW4gQENVUFNfU0VSVkVSS0VZQ0hBSU5ACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy12b2xhdGlsZXMuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLXZvbGF0aWxlcy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZGU3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy12b2xhdGlsZXMuY29uZgpAQCAtMCwwICsxIEBACitkICAvdmFyL2xvZy9jdXBzIDA3NTUgcm9vdCByb290IC0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzX3NlcnZlcmJpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzX3NlcnZlcmJpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVjNmFmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1NYWtlIENVUFNfU0VSVkVSQklOIHJlbGF0aXZlIHRvIGxpYmRpciBvdGhlcndpc2Ugb24gNjRiaXQgYXJjaGVzCi1lLmcuIHBwYzY0IHdoZXJlIGJhc2UgbGliZGlyIGlzIGxpYjY0IHRoaXMgZG9lcyBub3QgZ28gd2VsbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCi0KLVVwZGF0ZSBvbiAyMDE5MDkwNDoKLVJlZGVmaW5lIENVUFNfU0VSVkVSQklOIHRvICIkbGliZXhlY2Rpci9jdXBzIiB3aGljaCBzb2x2ZXMgZmlsZSBjb25mbGljdGlvbgotd2hlbiBtdWx0aWxpYiBpcyBlbmFibGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGN1cHMtMS40LjYvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGN1cHMtMS40LjYub3JpZy9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CTIwMDktMDQtMTIgMTY6MDQ6NTEuMDAwMDAwMDAwIC0wNzAwCi0rKysgY3Vwcy0xLjQuNi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CTIwMTItMDctMjEgMTI6MTI6MDUuODk2NDA1OTIzIC0wNzAwCi1AQCAtMzk3LDcgKzM5Nyw3IEBACi0gCSopCi0gCQkjIEFsbCBvdGhlcnMKLSAJCUlOU1RBTExfU1lTVj0iaW5zdGFsbC1zeXN2IgotLQkJQ1VQU19TRVJWRVJCSU49IiRleGVjX3ByZWZpeC9saWIvY3VwcyIKLSsJCUNVUFNfU0VSVkVSQklOPSIkbGliZXhlY2Rpci9jdXBzIgotIAkJOzsKLSBlc2FjCi0gCi1JbmRleDogY3Vwcy0xLjQuNi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTEuNC42Lm9yaWcvY29uZmlndXJlCTIwMTItMDctMjEgMTI6MTM6MzQuNTEyNDA1OTUwIC0wNzAwCi0rKysgY3Vwcy0xLjQuNi9jb25maWd1cmUJMjAxMi0wNy0yMSAxMjoxNDowNS43MjQ0MDYwMTcgLTA3MDAKLUBAIC0xMTE4MSw3ICsxMTE4MSw3IEBACi0gCSopCi0gCQkjIEFsbCBvdGhlcnMKLSAJCUlOU1RBTExfU1lTVj0iaW5zdGFsbC1zeXN2IgotLQkJQ1VQU19TRVJWRVJCSU49IiRleGVjX3ByZWZpeC9saWIvY3VwcyIKLSsJCUNVUFNfU0VSVkVSQklOPSIkbGliZXhlY2Rpci9jdXBzIgotIAkJOzsKLSBlc2FjCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdXNlX2VjaG9fb25seV9pbl9pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk2ZjEzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdXNlX2VjaG9fb25seV9pbl9pbml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotSW5kZXg6IGN1cHMtMS42LjEvc2NoZWR1bGVyL2N1cHMuc2guaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTEuNi4xLm9yaWcvc2NoZWR1bGVyL2N1cHMuc2guaW4KLSsrKyBjdXBzLTEuNi4xL3NjaGVkdWxlci9jdXBzLnNoLmluCi1AQCAtNjcsNyArNjcsNyBAQCBjYXNlICJgdW5hbWVgIiBpbgotIAkJRUNIT19FUlJPUj06Ci0gCQk7OwotIAotLQlMaW51eCopCi0rCURpc2FibGVMaW51eCopCi0gCQlJU19PTj0vYmluL3RydWUKLSAJCWlmIHRlc3QgLWYgL2V0Yy9pbml0LmQvZnVuY3Rpb25zOyB0aGVuCi0gCQkJLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy92b2xhdGlsZXMuOTlfY3VwcyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy92b2xhdGlsZXMuOTlfY3VwcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzBlMTllCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3ZvbGF0aWxlcy45OV9jdXBzCkBAIC0wLDAgKzEsMiBAQAorIyA8dHlwZT4gPG93bmVyPiA8Z3JvdXA+IDxtb2RlPiA8cGF0aD4gPGxpbmtzb3VyY2U+CitkIHJvb3Qgcm9vdCAwNzU1IC92YXIvbG9nL2N1cHMgbm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNTUzNGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjdXBzLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzYzNjg5Zjc3MzVkM2ZlOTVhMjk0MzM5NzE4OWU0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjYxYWI0NDllNDc0OGEyNGM2YWIzNTViNDgxZmY3NjkxMjQ3YTE0MGQzMjdiMmI3NTI2ZmNlMzRiN2Y5YWE4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MjMwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4zLjEuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGN1cHMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGFkODg5N2M5N2NmNGQ5MGYyMGRhYzQzMThmNDc0MjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWJjYTlkODk1MDdlM2Y2OGNiYzg0NDgyZmU0NmFlOGQ1MzMzYWY1YmMyYjkwNjEzNDdiMjAwNzE4MmFjNzdjZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODZjM2RkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIkxpbmUtb3JpZW50ZWQgdGV4dCBlZGl0b3IiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZWQvIgotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjNzA1MWFlZjkyMTlkYzcyMzdmMjA2YzVjNDE3OWE3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkLmg7ZW5kbGluZT0yMDttZDU9OGFmOGU3ZGM3Mjc1ZGNhMDVjZTZjOWU3ZWNlN2FlYzggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbi5jO2VuZGxpbmU9MTc7bWQ1PWQ0ZGQ2YTYyYzUwMjcxMjM1OGNhMTg1NTFmOTc4NzgxIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLUNWRV9QUk9EVUNUID0gImdudTplZCIKLQotIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCi1iaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCi0KLSMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8ke0JQfS50YXIubHoiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkM2FhZWI1ZWIwMzIxNDI5NDhkN2EyZjk4YTI0ODk5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZDQ0ODljMGFkN2ExMDhjNTE0MjYyZGEyOGU2YzJhNDI2OTQ2ZmI0MDhhMzk3N2VmMWVkMzQzMDhiZGZkMTc0IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotaW5oZXJpdCB0ZXhpbmZvCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkke1N9L2NvbmZpZ3VyZQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCi0JaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCi0JCXJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgotCWZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzgzMDA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNi5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkxpbmUtb3JpZW50ZWQgdGV4dCBlZGl0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZWQvIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjNzA1MWFlZjkyMTlkYzcyMzdmMjA2YzVjNDE3OWE3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkLmg7ZW5kbGluZT0yMDttZDU9MDIyNmE4ZGQ4OGM3NmFmYmE3NzNmMmYwZjdjODNmNWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFpbi5jO2VuZGxpbmU9MTc7bWQ1PWViZDRhZmY4NmRjOWZhNTAyN2Q1NWJjNTE5MTc0NmI5IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTRUNUSU9OID0gImJhc2UiCisKK0NWRV9QUk9EVUNUID0gImdudTplZCIKKworIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCitiaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCisKKyMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8ke0JQfS50YXIubHoiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYjQ4MGQ5ODIyODkwNjRjYTA0MGJjNWM3NWZjZWZmZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZmMwN2ExNGFiMDQ4YTc1ODQ3M2NlMjIyZTc4NGZiZjAzMTQ4NWJjZDU0YTc2Zjc0YWNmZWUxZjM5MGQ4YjJjIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworaW5oZXJpdCB0ZXhpbmZvCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkke1N9L2NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisJaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisJCXJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorCWZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggMTUzZWE1NS4uZDVjOTMyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtMTksNyArMTksNyBAQAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0yLDcgKzIsNyBAQCBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSBBQ19JTklUKGV0aHRvb2wsIDUuMywgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKKyBBQ19JTklUKGV0aHRvb2wsIDUuNCwgbmV0ZGV2QHZnZXIua2VybmVsLm9yZykKICBBQ19QUkVSRVEoMi41MikKICBBQ19DT05GSUdfU1JDRElSKFtldGh0b29sLmNdKQogLUFNX0lOSVRfQVVUT01BS0UoW2dudV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAxMzMxYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2M2QxYzgzNWI4NjE5MTJlYTBkZmQ1MmNmNjZhMmRhNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDJkOGVhMzYwNDMxYTJlYTM1ZmY2MWMyNzZiY2YyYWZlZTFhZDkwMTY2OGEwYjUwYWU5ZjFjNTgxNDc1NmJkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmFzaC1jb21wbGV0aW9uCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCi0gICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlYWZhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjQuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgorREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYmIyNGFhNDE0YWI5YTExZmY2NmQzNTFiNWI4NDkzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjI1YTQ2YjYxYmM2ZTI2ZjU2ZGNiOTczZmMyOGFjZWExNTllMmMzMmM5ZDZkYTQyYzBmYThkMWE2MzM5ODI5IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmFzaC1jb21wbGV0aW9uCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCisgICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYwppbmRleCBhZDM2NDI5Li45YWE3MjM5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYwpAQCAtNiw5ICs2LDkgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9ZmluZHV0aWxzIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLnh6IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImZpbmQgeGFyZ3MiCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNjRkMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA4NmRiMmE1ZjNiN2VmODExM2U1Mzg0YjRlMDJkMmIyOTljODdhMDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIGdsL2xpYi9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dsL2xpYi9NYWtlZmlsZS5hbSBiL2dsL2xpYi9NYWtlZmlsZS5hbQotaW5kZXggYTllMmZlNC4uMWM2ZWE5YyAxMDA2NDQKLS0tLSBhL2dsL2xpYi9NYWtlZmlsZS5hbQotKysrIGIvZ2wvbGliL01ha2VmaWxlLmFtCi1AQCAtMTIzNCw3ICsxMjM0LDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NzA0NzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotRnJvbSBhM2Y0ODIxYzRhM2Y3MjNkMjFjOTI5OGQ1NGJlZThhNjU2YmZkN2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVybmhhcmQgVm9lbGtlciA8bWFpbEBiZXJuaGFyZC12b2Vsa2VyLmRlPgotRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAyMzozMDowOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBmaW5kOiBtYWtlIC1kZWxldGUgaG9ub3VyIHRoZSAtaWdub3JlX3JlYWRkaXJfcmFjZSBvcHRpb24KLQotKiBmaW5kL3ByZWQuYyAocHJlZF9kZWxldGUpOiBSZXR1cm4gdHJ1ZSB3aGVuIHRoZSAtaWdub3JlX3JlYWRkaXJfcmFjZQotb3B0aW9uIGlzIGFjdGl2ZSBhbmQgdW5saW5rYXQoKSBjYW1lIGJhY2sgd2l0aCBFTk9FTlQuCi0qIGRvYy9maW5kLnRleGkgKE9wdGlvbiAtaWdub3JlX3JlYWRkaXJfcmFjZSk6IERvY3VtZW50IHRoZSBjaGFuZ2UuCi0oQWN0aW9uIC1kZWxldGUpOiBMaWtld2lzZS4KLSogZmluZC9maW5kLjE6IExpa2V3aXNlLgotKiBORVdTIChCdWcgRml4ZXMpOiBNZW50aW9uIHRoZSBmaXguCi0KLUZvciBub3csIGl0IHNlZW1zIGEgYml0IGhhcmQgdG8gYWRkIGEgcHJvcGVyIHRlc3QgZm9yIHRoaXMsCi1zbyB0aGUgZm9sbG93aW5nIHNoZWxsIHNuaXBwZXQgZGVtb25zdHJhdGVzIHRoZSByYWNlOgotCi0gICQgc2VxIDEwIHwgeGFyZ3MgdG91Y2gKLSAgJCBlbnYgdGltZSAtZiAnZmluZCBleGl0IHN0YXR1czogJXhcbmZpbmQgdGltZTogJWUnIFwKLSAgICAgIGZpbmQgLWlnbm9yZV9yZWFkZGlyX3JhY2UgLXR5cGUgZiBcCi0gICAgICAgIC1kZWxldGUgXAotICAgICAgICAtZXhlYyBzaCAtYyAnc2xlZXAgJChiYXNlbmFtZSB7fSknIFw7IFwKLSAgICAgICAgLXByaW50ZiAnZmluZCBkZWxldGVkOiAlcFxuJyBcCi0gICAgICAgICYgXAotICAgIHNsZWVwIDIwOyBcCi0gICAgc2VxIDEwIHwgeGFyZ3Mgcm0gLWZ2OyBcCi0gICAgd2FpdCAkIQotCi1SZXBvcnRlZCBieSBBbGV4YW5kZXIgR29sdWJldiBpbgotaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzUyOTgxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIE5FV1MgICAgICAgICAgfCAgNCArKysrCi0gZG9jL2ZpbmQudGV4aSB8IDE1ICsrKysrKysrKysrKysrLQotIGZpbmQvZmluZC4xICAgfCAyMiArKysrKysrKysrKysrKysrKysrKysrCi0gZmluZC9wcmVkLmMgICB8ICA2ICsrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKLWluZGV4IDY2MGMyNDEuLmI4NmVjMWUgMTAwNjQ0Ci0tLS0gYS9ORVdTCi0rKysgYi9ORVdTCi1AQCAtNDIsNiArNDIsMTAgQEAgVXBkYXRlZCB0aGUgRGFuaXNoIHRyYW5zbGF0aW9uLgotIAotICoqIEJ1ZyBGaXhlczoKLSAKLSsjNTI5ODE6IGZpbmQ6IHRoZSAnLWRlbGV0ZScgYWN0aW9uIG5vIGxvbmdlciBjb21wbGFpbnMgYWJvdXQgZGlzYXBwZWFyZWQgZmlsZXMKLSsgICAgICAgIHdoZW4gdGhlICctaWdub3JlX3JlYWRkaXJfcmFjZScgb3B0aW9uIGlzIGdpdmVuLCB0b28uICBUaGF0IGFjdGlvbiB3aWxsCi0rICAgICAgICBhbHNvIHJldHVybnMgdHJ1ZSBpbiBzdWNoIGEgY2FzZSBub3cuCi0rCi0gQXBwbGllZCBwYXRjaCAjODY4ODogU3BlbGxpbmcgZml4ZXMuCi0gCi0gKiBNYWpvciBjaGFuZ2VzIGluIHJlbGVhc2UgNC41LjE4LCAyMDE1LTEyLTI3Ci1kaWZmIC0tZ2l0IGEvZG9jL2ZpbmQudGV4aSBiL2RvYy9maW5kLnRleGkKLWluZGV4IGZkZWI4NDEuLjI0N2MxOWEgMTAwNjQ0Ci0tLS0gYS9kb2MvZmluZC50ZXhpCi0rKysgYi9kb2MvZmluZC50ZXhpCi1AQCAtMTQxOCw3ICsxNDE4LDE1IEBAIGdpdmVzIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gc2VhcmNoIHNwZWVkLgotIElmIGEgZmlsZSBkaXNhcHBlYXJzIGFmdGVyIGl0cyBuYW1lIGhhcyBiZWVuIHJlYWQgZnJvbSBhIGRpcmVjdG9yeSBidXQKLSBiZWZvcmUgQGNvZGV7ZmluZH0gZ2V0cyBhcm91bmQgdG8gZXhhbWluaW5nIHRoZSBmaWxlIHdpdGggQGNvZGV7c3RhdH0sCi0gZG9uJ3QgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZS4gIElmIHlvdSBkb24ndCBzcGVjaWZ5IHRoaXMgb3B0aW9uLCBhbgotLWVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBpc3N1ZWQuICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIGluIHN5c3RlbQotK2Vycm9yIG1lc3NhZ2Ugd2lsbCBiZSBpc3N1ZWQuCi0rCi0rRnVydGhlcm1vcmUsIEBjb2Rle2ZpbmR9IHdpdGggdGhlIEBzYW1wey1pZ25vcmVfcmVhZGRpcl9yYWNlfSBvcHRpb24KLSt3aWxsIGlnbm9yZSBlcnJvcnMgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZQotK2hhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMgcmVhZDogaXQgd2lsbCBub3Qgb3V0cHV0Ci0rYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uCi0rd2lsbCBiZSB0cnVlLgotKwotK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VmdWwgaW4gc3lzdGVtCi0gc2NyaXB0cyAoY3JvbiBzY3JpcHRzLCBmb3IgZXhhbXBsZSkgdGhhdCBleGFtaW5lIGFyZWFzIG9mIHRoZQotIGZpbGVzeXN0ZW0gdGhhdCBjaGFuZ2UgZnJlcXVlbnRseSAobWFpbCBxdWV1ZXMsIHRlbXBvcmFyeSBkaXJlY3RvcmllcywKLSBhbmQgc28gZm9ydGgpLCBiZWNhdXNlIHRoaXMgc2NlbmFyaW8gaXMgY29tbW9uIGZvciB0aG9zZSBzb3J0cyBvZgotQEAgLTI3NzksNiArMjc4NywxMSBAQCBleHBsaWNpdGx5LgotIAotIElmIEBzYW1wey1kZWxldGV9IGZhaWxzLCBAY29kZXtmaW5kfSdzIGV4aXQgc3RhdHVzIHdpbGwgYmUgbm9uemVybwotICh3aGVuIGl0IGV2ZW50dWFsbHkgZXhpdHMpLgotKwotK1RvZ2V0aGVyIHdpdGggdGhlIEBzYW1wey1pZ25vcmVfcmVhZGRpcl9yYWNlfSBvcHRpb24sIEBjb2Rle2ZpbmR9IHdpbGwKLStpZ25vcmUgZXJyb3JzIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUgaGFzIGRpc2FwcGVhcmVkCi0rc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6IGl0IHdpbGwgbm90IG91dHB1dCBhbiBlcnJvciBkaWFnbm9zdGljLCBhbmQKLSt0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbiB3aWxsIGJlIHRydWUuCi0gQGVuZCBkZWZmbgotIAotIEBub2RlIEFkZGluZyBUZXN0cwotZGlmZiAtLWdpdCBhL2ZpbmQvZmluZC4xIGIvZmluZC9maW5kLjEKLWluZGV4IDdiMTQxYjguLjBlZWM0MWMgMTAwNjQ0Ci0tLS0gYS9maW5kL2ZpbmQuMQotKysrIGIvZmluZC9maW5kLjEKLUBAIC00NzksNiArNDc5LDE3IEBAIG9uZSBwYXJ0IG9mIHRoZSBmaWxlc3lzdGVtIHdpdGggdGhpcyBvcHRpb24gb24gYW5kIHBhcnQgb2YgaXQgd2l0aCB0aGlzIG9wdGlvbgotIG9mZiAoaWYgeW91IG5lZWQgdG8gZG8gdGhhdCwgeW91IHdpbGwgbmVlZCB0byBpc3N1ZSB0d28gXGZCZmluZFxmUiBjb21tYW5kcwotIGluc3RlYWQsIG9uZSB3aXRoIHRoZSBvcHRpb24gYW5kIG9uZSB3aXRob3V0IGl0KS4KLSAKLStGdXJ0aGVybW9yZSwKLSsuQiBmaW5kCi0rd2l0aCB0aGUKLSsuQiBcLWlnbm9yZV9yZWFkZGlyX3JhY2UKLStvcHRpb24gd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZQotKy5CIFwtZGVsZXRlCi0rYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMgcmVhZDoKLStpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiB3aWxsIGJlIHRydWUuCi0rCi0gLklQICJcLW1heGRlcHRoIFxmSWxldmVsc1xmUiIKLSBEZXNjZW5kIGF0IG1vc3QgXGZJbGV2ZWxzXGZSIChhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyKSBsZXZlbHMgb2YKLSBkaXJlY3RvcmllcyBiZWxvdyB0aGUgc3RhcnRpbmctcG9pbnRzLgotQEAgLTEwMzAsNiArMTA0MSwxNyBAQCBhbmQKLSAuQiBcLWRlbGV0ZQotIHRvZ2V0aGVyLgotIAotK1RvZ2V0aGVyIHdpdGggdGhlCi0rLkIgXC1pZ25vcmVfcmVhZGRpcl9yYWNlCi0rb3B0aW9uLAotKy5CIGZpbmQKLSt3aWxsIGlnbm9yZSBlcnJvcnMgb2YgdGhlCi0rLkIgXC1kZWxldGUKLSthY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUgaGFzIGRpc2FwcGVhcmVkIHNpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcwotK3JlYWQ6IGl0IHdpbGwgbm90IG91dHB1dCBhbiBlcnJvciBkaWFnbm9zdGljLCBhbmQgdGhlIHJldHVybiBjb2RlIG9mIHRoZQotKy5CIFwtZGVsZXRlCi0rYWN0aW9uIHdpbGwgYmUgdHJ1ZS4KLSsKLSAuSVAgIlwtZXhlYyBcZkljb21tYW5kXGZSIDsiCi0gRXhlY3V0ZSBcZkljb21tYW5kXGZSOyB0cnVlIGlmIDAgc3RhdHVzIGlzIHJldHVybmVkLiAgQWxsIGZvbGxvd2luZwotIGFyZ3VtZW50cyB0bwotZGlmZiAtLWdpdCBhL2ZpbmQvcHJlZC5jIGIvZmluZC9wcmVkLmMKLWluZGV4IDMyOTM4ZmIuLjQzMWYwNjUgMTAwNjQ0Ci0tLS0gYS9maW5kL3ByZWQuYwotKysrIGIvZmluZC9wcmVkLmMKLUBAIC0zMjQsNiArMzI0LDEyIEBAIHByZWRfZGVsZXRlIChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0YXRfYnVmLCBzdHJ1Y3QgcHJlZGljYXRlICpwcmVkCi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBpZiAoRU5PRU5UID09IGVycm5vICYmIG9wdGlvbnMuaWdub3JlX3JlYWRkaXJfcmFjZSkKLSsJICAgIHsKLSsJICAgICAgLyogSWdub3JlIHVubGluaygpIGVycm9yIGZvciB2YW5pc2hlZCBmaWxlcy4gICovCi0rCSAgICAgIGVycm5vID0gMDsKLSsJICAgICAgcmV0dXJuIHRydWU7Ci0rCSAgICB9Ci0gCSAgaWYgKEVJU0RJUiA9PSBlcnJubykKLSAJICAgIHsKLSAJICAgICAgaWYgKChmbGFncyAmIEFUX1JFTU9WRURJUikgPT0gMCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTNlOGVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotRnJvbSA4MGNkZmJhMDc5NjI3ZTE1MTI5YTkyNmExMzM4MjViOTYxZDQxZTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IE1vbiwgNSBNYXIgMjAxOCAxMDo1NjoyOSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBmZmx1c2g6IGFkanVzdCB0byBnbGliYyAyLjI4IGxpYmlvLmggcmVtb3ZhbAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Qcm9ibGVtIHJlcG9ydGVkIGJ5IERhbmllbCBQLiBCZXJyYW5nw6kgaW46Ci1odHRwczovL2xpc3RzLmdudS5vcmcvci9idWctZ251bGliLzIwMTgtMDMvbXNnMDAwMDAuaHRtbAotKiBsaWIvZmZsdXNoLmMgKGNsZWFyX3VuZ2V0Y19idWZmZXJfcHJlc2VydmluZ19wb3NpdGlvbikKLShkaXNhYmxlX3NlZWtfb3B0aW1pemF0aW9uLCBycGxfZmZsdXNoKToKLSogbGliL2ZwdXJnZS5jIChmcHVyZ2UpOgotKiBsaWIvZnJlYWRhaGVhZC5jIChmcmVhZGFoZWFkKToKLSogbGliL2ZyZWFkaW5nLmMgKGZyZWFkaW5nKToKLSogbGliL2ZzZWVrby5jIChmc2Vla28pOgotKiBsaWIvc3RkaW8taW1wbC5oIChfSU9fSU5fQkFDS1VQKSBbX0lPX0VPRl9TRUVOXToKLURlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgotCi1VcHN0cmVhbS1jb21taXQ6IDRhZjRhNGE3MTgyN2MwYmM1ZTBlYzY3YWYyM2VkZWY0ZjE1Y2VlOGUKLVNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRhZjRhNGE3MTgyN2MwYmM1ZTBlYzY3YWYyM2VkZWY0ZjE1Y2VlOGVdCi0tLS0KLSBnbC9saWIvZmZsdXNoLmMgICAgIHwgNiArKystLS0KLSBnbC9saWIvZnB1cmdlLmMgICAgIHwgMiArLQotIGdsL2xpYi9mcmVhZGFoZWFkLmMgfCAyICstCi0gZ2wvbGliL2ZyZWFkaW5nLmMgICB8IDIgKy0KLSBnbC9saWIvZnNlZWtvLmMgICAgIHwgNCArKy0tCi0gZ2wvbGliL3N0ZGlvLWltcGwuaCB8IDYgKysrKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mZmx1c2guYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9mZmx1c2guYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZmZsdXNoLmMKLUBAIC0zMyw3ICszMyw3IEBACi0gI3VuZGVmIGZmbHVzaAotIAotIAotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gCi0gLyogQ2xlYXIgdGhlIHN0cmVhbSdzIHVuZ2V0YyBidWZmZXIsIHByZXNlcnZpbmcgdGhlIHZhbHVlIG9mIGZ0ZWxsbyAoZnApLiAgKi8KLSBzdGF0aWMgdm9pZAotQEAgLTcyLDcgKzcyLDcgQEAgY2xlYXJfdW5nZXRjX2J1ZmZlciAoRklMRSAqZnApCi0gCi0gI2VuZGlmCi0gCi0tI2lmICEgKGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovKQotKyNpZiAhIChkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovKQotIAotICMgaWYgKGRlZmluZWQgX19zZmVycm9yIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXyB8fCBkZWZpbmVkIF9fQU5EUk9JRF9fKSAmJiBkZWZpbmVkIF9fU05QVAotIC8qIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCwgRHJhZ29uRmx5LCBNYWMgT1MgWCwgQ3lnd2luLCBBbmRyb2lkICovCi1AQCAtMTQ4LDcgKzE0OCw3IEBAIHJwbF9mZmx1c2ggKEZJTEUgKnN0cmVhbSkKLSAgIGlmIChzdHJlYW0gPT0gTlVMTCB8fCAhIGZyZWFkaW5nIChzdHJlYW0pKQotICAgICByZXR1cm4gZmZsdXNoIChzdHJlYW0pOwotIAotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gCi0gICBjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24gKHN0cmVhbSk7Ci0gCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcHVyZ2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9mcHVyZ2UuYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnB1cmdlLmMKLUBAIC02Miw3ICs2Miw3IEBAIGZwdXJnZSAoRklMRSAqZnApCi0gICAvKiBNb3N0IHN5c3RlbXMgcHJvdmlkZSBGSUxFIGFzIGEgc3RydWN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpdG1hc2sgaW4KLSAgICAgIDxzdGRpby5oPiwgYmVjYXVzZSB0aGV5IG5lZWQgaXQgZm9yIGltcGxlbWVudGluZyBnZXRjKCkgYW5kIHB1dGMoKSBhcwotICAgICAgZmFzdCBtYWNyb3MuICAqLwotLSMgaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjIGlmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgIGZwLT5fSU9fcmVhZF9lbmQgPSBmcC0+X0lPX3JlYWRfcHRyOwotICAgZnAtPl9JT193cml0ZV9wdHIgPSBmcC0+X0lPX3dyaXRlX2Jhc2U7Ci0gICAvKiBBdm9pZCBtZW1vcnkgbGVhayB3aGVuIHRoZXJlIGlzIGFuIGFjdGl2ZSB1bmdldGMgYnVmZmVyLiAgKi8KLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkYWhlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9mcmVhZGFoZWFkLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkYWhlYWQuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSBzaXplX3QKLSBmcmVhZGFoZWFkIChGSUxFICpmcCkKLSB7Ci0tI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgIGlmIChmcC0+X0lPX3dyaXRlX3B0ciA+IGZwLT5fSU9fd3JpdGVfYmFzZSkKLSAgICAgcmV0dXJuIDA7Ci0gICByZXR1cm4gKGZwLT5fSU9fcmVhZF9lbmQgLSBmcC0+X0lPX3JlYWRfcHRyKQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRpbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9mcmVhZGluZy5jCi0rKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGluZy5jCi1AQCAtMzEsNyArMzEsNyBAQCBmcmVhZGluZyAoRklMRSAqZnApCi0gICAvKiBNb3N0IHN5c3RlbXMgcHJvdmlkZSBGSUxFIGFzIGEgc3RydWN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpdG1hc2sgaW4KLSAgICAgIDxzdGRpby5oPiwgYmVjYXVzZSB0aGV5IG5lZWQgaXQgZm9yIGltcGxlbWVudGluZyBnZXRjKCkgYW5kIHB1dGMoKSBhcwotICAgICAgZmFzdCBtYWNyb3MuICAqLwotLSMgaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjIGlmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgIHJldHVybiAoKGZwLT5fZmxhZ3MgJiBfSU9fTk9fV1JJVEVTKSAhPSAwCi0gICAgICAgICAgIHx8ICgoZnAtPl9mbGFncyAmIChfSU9fTk9fUkVBRFMgfCBfSU9fQ1VSUkVOVExZX1BVVFRJTkcpKSA9PSAwCi0gICAgICAgICAgICAgICAmJiBmcC0+X0lPX3JlYWRfYmFzZSAhPSBOVUxMKSk7Ci1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mc2Vla28uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9mc2Vla28uYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnNlZWtvLmMKLUBAIC00Nyw3ICs0Nyw3IEBAIGZzZWVrbyAoRklMRSAqZnAsIG9mZl90IG9mZnNldCwgaW50IHdoZW4KLSAjZW5kaWYKLSAKLSAgIC8qIFRoZXNlIHRlc3RzIGFyZSBiYXNlZCBvbiBmcHVyZ2UuYy4gICovCi0tI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgIGlmIChmcC0+X0lPX3JlYWRfZW5kID09IGZwLT5fSU9fcmVhZF9wdHIKLSAgICAgICAmJiBmcC0+X0lPX3dyaXRlX3B0ciA9PSBmcC0+X0lPX3dyaXRlX2Jhc2UKLSAgICAgICAmJiBmcC0+X0lPX3NhdmVfYmFzZSA9PSBOVUxMKQotQEAgLTEyMyw3ICsxMjMsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCi0gICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgIH0KLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotICAgICAgIGZwLT5fZmxhZ3MgJj0gfl9JT19FT0ZfU0VFTjsKLSAgICAgICBmcC0+X29mZnNldCA9IHBvczsKLSAjZWxpZiBkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXwotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvc3RkaW8taW1wbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL3N0ZGlvLWltcGwuaAotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvc3RkaW8taW1wbC5oCi1AQCAtMTgsNiArMTgsMTIgQEAKLSAgICB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBvZiBzdGRpbyBleHRlbnNpb24gQVBJLCBleGNlcHQgdGhhdCBzb21lIGZpZWxkcwotICAgIGhhdmUgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucywgb3IgdGhlaXIgYWNjZXNzIHJlcXVpcmVzIHNvbWUgY2FzdHMuICAqLwotIAotKy8qIEdsaWJjIDIuMjggbWFkZSBfSU9fSU5fQkFDS1VQIHByaXZhdGUuICBGb3Igbm93LCB3b3JrIGFyb3VuZCB0aGlzCi0rICAgcHJvYmxlbSBieSBkZWZpbmluZyBpdCBvdXJzZWx2ZXMuICBGSVhNRTogRG8gbm90IHJlbHkgb24gZ2xpYmMKLSsgICBpbnRlcm5hbHMuICAqLwotKyNpZiAhZGVmaW5lZCBfSU9fSU5fQkFDS1VQICYmIGRlZmluZWQgX0lPX0VPRl9TRUVOCi0rIyBkZWZpbmUgX0lPX0lOX0JBQ0tVUCAweDEwMAotKyNlbmRpZgotIAotIC8qIEJTRCBzdGRpbyBkZXJpdmVkIGltcGxlbWVudGF0aW9ucy4gICovCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1tYWtlZGV2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmIzOTUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1tYWtlZGV2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA4MDYyODA0N2E2Y2M4M2Y4MmUwYzQxMGE4MmI4ZjdmYWNkOWQ1MGYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IFNlcCAyMDE2IDE5OjIxOjQyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vdW50bGlzdDogaW5jbHVkZSBzeXNtYWNyb3MuaCBmb3IgZ2xpYmMKLQotT24gRmVkb3JhIHJhd2hpZGUgKGdsaWJjIDIuMjUpLCAnLi9nbnVsaWItdG9vbCAtLXRlc3QgbW91bnRsaXN0JwotcmVwb3J0czoKLS4uLy4uL2dsbGliL21vdW50bGlzdC5jOiBJbiBmdW5jdGlvbiAncmVhZF9maWxlX3N5c3RlbV9saXN0JzoKLS4uLy4uL2dsbGliL21vdW50bGlzdC5jOjUzNDoxMzogd2FybmluZzogJ19fbWFrZWRldl9mcm9tX3N5c190eXBlcycgaXMgZGVwcmVjYXRlZDoKLSAgSW4gdGhlIEdOVSBDIExpYnJhcnksIGBtYWtlZGV2JyBpcyBkZWZpbmVkIGJ5IDxzeXMvc3lzbWFjcm9zLmg+LgotICBGb3IgaGlzdG9yaWNhbCBjb21wYXRpYmlsaXR5LCBpdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBieQotICA8c3lzL3R5cGVzLmg+IGFzIHdlbGwsIGJ1dCB3ZSBwbGFuIHRvIHJlbW92ZSB0aGlzIHNvb24uCi0gIFRvIHVzZSBgbWFrZWRldicsIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZGlyZWN0bHkuCi0gIElmIHlvdSBkaWQgbm90IGludGVuZCB0byB1c2UgYSBzeXN0ZW0tZGVmaW5lZCBtYWNybyBgbWFrZWRldicsCi0gIHlvdSBzaG91bGQgI3VuZGVmIGl0IGFmdGVyIGluY2x1ZGluZyA8c3lzL3R5cGVzLmg+LgotICBbLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9uc10KLSAgICAgICAgICAgICBtZS0+bWVfZGV2ID0gbWFrZWRldiAoZGV2bWFqLCBkZXZtaW4pOwotICAgICAgICAgICAgIF5+Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmg6Mzk3OjAsCi0gICAgICAgICAgICAgICAgIGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oOjI1LAotICAgICAgICAgICAgICAgICBmcm9tIC4vc3lzL3R5cGVzLmg6MjgsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2xsaWIvbW91bnRsaXN0Lmg6MjMsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2xsaWIvbW91bnRsaXN0LmM6MjA6Ci0vdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oOjg5OjE6IG5vdGU6IGRlY2xhcmVkIGhlcmUKLSBfX1NZU01BQ1JPU19ERUZJTkVfTUFLRURFViAoX19TWVNNQUNST1NfRlNUX0lNUExfVEVNUEwpCi0gXgotCi1GaXggaXQgYnkgaW5jbHVkaW5nIHRoZSByaWdodCBoZWFkZXJzLiAgV2UgYWxzbyBuZWVkIGEgZml4IHRvCi1hdXRvY29uZidzIEFDX0hFQURFUl9NQUpPUiwgYnV0IHRoYXQncyBhIHNlcGFyYXRlIHBhdGNoLgotCi0qIG00L21vdW50bGlzdC5tNCAoZ2xfUFJFUkVRX01PVVRMSVNUX0VYVFJBKTogSW5jbHVkZQotQUNfSEVBREVSX01BSk9SLgotKiBsaWIvbW91bnRsaXN0LmMgKGluY2x1ZGVzKTogVXNlIGNvcnJlY3QgaGVhZGVycy4KLQotU2lnbmVkLW9mZi1ieTogRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLWNvbW1pdDogNGRhNjNjNTg4MWY2MGY3MTk5OWE5NDM2MTJkYTkxMTIyMzJiOTE2MQotU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbNGRhNjNjNTg4MWY2MGY3MTk5OWE5NDM2MTJkYTkxMTIyMzJiOTE2MV0KLS0tLQotIGdsL2xpYi9tb3VudGxpc3QuYyB8IDYgKysrKysrCi0gZ2wvbTQvbW91bnRsaXN0Lm00IHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9tb3VudGxpc3QuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9tb3VudGxpc3QuYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKLUBAIC0zNyw2ICszNywxMiBAQAotICMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2VuZGlmCi0gCi0rI2lmIE1BSk9SX0lOX01LREVWCi0rIyBpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSsjZWxpZiBNQUpPUl9JTl9TWVNNQUNST1MKLSsjIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZCBNT1VOVEVEX0dFVEZTU1RBVCAgIC8qIE9TRl8xIGFuZCBEYXJ3aW4xLjMueCAqLwotICMgaWYgSEFWRV9TWVNfVUNSRURfSAotICMgIGluY2x1ZGUgPGdycC5oPiAvKiBuZWVkZWQgb24gT1NGIFY0LjAgZm9yIGRlZmluaXRpb24gb2YgTkdST1VQUywKLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbTQvbW91bnRsaXN0Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbTQvbW91bnRsaXN0Lm00Ci0rKysgZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAotQEAgLTEsNCArMSw0IEBACi0tIyBzZXJpYWwgMTEKLSsjIHNlcmlhbCAxMgotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNiwgMjAwOS0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTE1LDUgKzE1LDYgQEAgQUNfREVGVU4oW2dsX1BSRVJFUV9NT1VOVExJU1RfRVhUUkFdLAotIFsKLSAgIGRubCBOb3RlIGdsX0xJU1RfTU9VTlRFRF9GSUxFX1NZU1RFTVMgY2hlY2tzIGZvciBtbnRlbnQuaCwgbm90IHN5cy9tbnRlbnQuaC4KLSAgIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9tbnRlbnQuaF0pCi0rICBBQ19IRUFERVJfTUFKT1IoKWRubCBmb3IgdXNlIG9mIG1ha2VkZXYgKCkKLSAgIGdsX0ZTVFlQRU5BTUUKLSBdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNjJlZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgZmluZHV0aWxzLmluYwotCi0jIEdQTHYyKyAoPDwgNC4yLjMyKSwgR1BMdjMrICg+PSA0LjIuMzIpCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5OTM2YWE4MDA5NDM4Y2UxODViZWEyNjk0YTk5N2ZjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZWQ0YzlmNzM3MzFjZDQ4ZmVjM2I2YmRhY2NjZTg5NjQ3M2I2ZDhlMzM3ZTk2MTJlMTZjZjE0MzFiYjExNjlkIgotCi0jIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzI3Mjk5Ci1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiZ2xfY3ZfZnVuY193Y3dpZHRoX3dvcmtzPXllcyIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1NPUlQ9JHtiaW5kaXJ9L3NvcnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTY4OGU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjcuMC5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIGZpbmR1dGlscy5pbmMKKworIyBHUEx2MisgKDw8IDQuMi4zMiksIEdQTHYzKyAoPj0gNC4yLjMyKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MzEzNTZkZWM0YjExMDliODEyZmVjZmRkZmVhZDZiMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWZlZmJkZjk4NThmN2U0ZmViODZmMDM2ZTEyNDdhNTRjNzlmYzJkOGU0YjcwNjRkNWFhYTFmNDdkZmE3ODlhIgorCisjIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzI3Mjk5CitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiZ2xfY3ZfZnVuY193Y3dpZHRoX3dvcmtzPXllcyIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX1NPUlQ9JHtiaW5kaXJ9L3NvcnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzLTQuMC4xNy9DVkUtMjAxNS04MzI3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlZGM4OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzLTQuMC4xNy9DVkUtMjAxNS04MzI3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0KLWh0dHA6Ly9ienIubGludXhmb3VuZGF0aW9uLm9yZy9sb2dnZXJoZWFkL29wZW5wcmludGluZy9jdXBzLWZpbHRlcnMvcmV2aXNpb24vNzQwNgotCi1IYW5kIGFwcGxpZWQgY2hhbmdlIHRvIHV0aWwuYy4gRml4IHdhcyBmb3IgY3Vwcy1maWx0ZXJzIGJ1dCBhbHNvIGFwcGxpZWQgdG8gZm9vbWF0aWMtZmlsdGVycy4KLQotQ1ZFOiBDVkUtMjAxNS04MzI3Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IHV0aWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXRpbC5jCi0rKysgYi91dGlsLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotIAotIAotLWNvbnN0IGNoYXIqIHNoZWxsZXNjYXBlcyA9ICJ8Ozw+JiEkXCdcIiMqPygpW117fSI7Ci0rY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiYCMqPygpW117fSI7Ci0gCi0gY29uc3QgY2hhciAqIHRlbXBfZGlyKCkKLSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzLTQuMC4xNy9DVkUtMjAxNS04NTYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5NzNjNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzLTQuMC4xNy9DVkUtMjAxNS04NTYwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0KLWh0dHA6Ly9ienIubGludXhmb3VuZGF0aW9uLm9yZy9sb2dnZXJoZWFkL29wZW5wcmludGluZy9jdXBzLWZpbHRlcnMvcmV2aXNpb24vNzQxOQotCi1IYW5kIGFwcGxpZWQgY2hhbmdlIHRvIHV0aWwuYy4gRml4IHdhcyBmb3IgY3Vwcy1maWx0ZXJzIGJ1dCBhbHNvIGFwcGxpZWQgdG8gZm9vbWF0aWMtZmlsdGVycy4KLQotQ1ZFOiBDVkUtMjAxNS04NTYwCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotSW5kZXg6IHV0aWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdXRpbC5jCi0rKysgYi91dGlsLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotIAotIAotLWNvbnN0IGNoYXIqIHNoZWxsZXNjYXBlcyA9ICJ8PD4mISRcJ1wiIyo/KClbXXt9IjsKLStjb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDs8PiYhJFwnXCIjKj8oKVtde30iOwotIAotIGNvbnN0IGNoYXIgKiB0ZW1wX2RpcigpCi0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQyYzlhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlblByaW50aW5nIHByaW50ZXIgc3VwcG9ydCAtIGZpbHRlcnMiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9vcGVucHJpbnRpbmcvc3RhcnQiCi1ERVNDUklQVElPTiA9ICJGb29tYXRpYyBpcyBhIHByaW50ZXIgZGF0YWJhc2UgZGVzaWduZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2V0IHVwIFwKLWNvbW1vbiBwcmludGVycyBmb3IgdXNlIHdpdGggVU5JWC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zLlwKLUl0IHByb3ZpZGVzIHRoZSAiZ2x1ZSIgYmV0d2VlbiBhIHByaW50IHNwb29sZXIgKGxpa2UgQ1VQUyBvciBscHIpIGFuZCBcCi10aGUgcHJpbnRlciwgYnkgcHJvY2Vzc2luZyBmaWxlcyBzZW50IHRvIHRoZSBwcmludGVyLiBcCi0gXAotVGhpcyBwYWNrYWdlIGNvbnNpc3RzIG9mIGZpbHRlcnMgdXNlZCBieSB0aGUgcHJpbnRlciBzcG9vbGVycyBcCi10byBjb252ZXJ0IHRoZSBpbmNvbWluZyBQb3N0U2NyaXB0IGRhdGEgaW50byB0aGUgcHJpbnRlcidzIG5hdGl2ZSBcCi1mb3JtYXQgdXNpbmcgYSBwcmludGVyLXNwZWNpZmljLCBidXQgc3Bvb2xlci1pbmRlcGVuZGVudCBQUEQgZmlsZS4gXAotIgotCi1ERVBFTkRTICs9ICJjdXBzIHBlcmwgbGlieG1sMiIKLVBSID0gInIxIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vZm9vbWF0aWMtZmlsdGVycy0ke1BWfS9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5wcmludGluZy5vcmcvZG93bmxvYWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9DVkUtMjAxNS04NTYwLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNS04MzI3LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjA1ZjVkY2JmZTM1OWYxOThlZWYzZGY1YjI4M2Q4OTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTJlMmU1M2U1MDI1NzFlODhlZWI5MDEwYzQ1YTBkNTQ2NzFmMTU3MDdlZTEwNGY1YzljMjJiNTllYTdhMzNlMyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZm9vbWF0aWMtZmlsdGVycy0oP1A8cHZlcj4oKFxkfFxkXGQpXC4qKSspXC50YXJcLmd6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZmlsZS1jb252ZXJ0ZXItY2hlY2sgLS13aXRoLWZpbGUtY29udmVydGVyPXRleHR0b3BzIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgUEVSTD0iJHtiaW5kaXJ9L2VudiBwZXJsIgotICAgIGV4cG9ydCBDVVBTX1NFUlZFUkJJTj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyAgICAgICAjIC91c3IvbGliIE5PVCBsaWJkaXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfbGludXhzdGRiYXNlKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzL2ZpbHRlcgotICAgIGxuIC1zZiAke2JpbmRpcn0vZm9vbWF0aWMtcmlwICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy9maWx0ZXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzLyAke2V4ZWNfcHJlZml4fS9saWIvcHByLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a181LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a181LjAuMS5iYgppbmRleCBlYWJhNmM3Li5lNzljY2ZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzUuMC4xLmJiCkBAIC00Niw2ICs0Niw4IEBACiAJZG9uZQogCXNlZCAtaSAtZSAnc3wvdXNyL2xvY2FsL2Jpbnwke2JpbmRpcn18ZycgXAogCSAgICAtZSAnc3wjISR7YmFzZV9iaW5kaXJ9L2F3a3wjISR7YmluZGlyfS9hd2t8ZycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qLmF3aworCisgICAgICAgIHNlZCAtaSAtZSAic3xHQVdLTE9DQUxFfExBTkd8ZyIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9NYWtldGVzdHMKIH0KIAogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxMS0wMDAxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YyODU1NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxMS0wMDAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSA4ODU0NDRmY2JlMTBkYzQyNzg3ZWNiNzY2ODZjOGVlNGRkMzNiZjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBUdWUsIDIwIEF1ZyAyMDE5IDEwOjEwOjI4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UgLmZvcmNlcHV0IGluYWNjZXNzaWJsZQotCi1CdWcgIzcwMTM0MywgIzcwMTM0NCwgIzcwMTM0NQotCi1Nb3JlIGRlZmVuc2l2ZSBwcm9ncmFtbWluZy4gV2UgZG9uJ3Qgd2FudCBwZW9wbGUgdG8gYWNjZXNzIC5mb3JlY3B1dAotZXZlbiB0aG91Z2ggaXQgaXMgbm8gbG9uZ2VyIHN1ZmZpY2llbnQgdG8gYnlwYXNzIFNBRkVSLiBUaGUgZXhwbG9pdAotaW4gIzcwMTM0MyBkaWRuJ3Qgd29yayBhbnl3YXkgYmVjYXVzZSBvZiBlYXJsaWVyIHdvcmsgdG8gc3RvcCB0aGUgZXJyb3IKLWhhbmRsZXIgYmVpbmcgdXNlZCwgYnV0IG5ldmVydGhlbGVzcywgcHJldmVudCBhY2Nlc3MgdG8gLmZvcmNlcHV0IGZyb20KLS5zZXR1c2VycGFyYW1zMi4KLQotQ1ZFOiBDVkUtMjAxOS0xNDgxMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIFJlc291cmNlL0luaXQvZ3NfbGV2Mi5wcyAgfCA2ICsrKy0tLQotIFJlc291cmNlL0luaXQvZ3NfcGRmd3IucHMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcyBiL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcwotaW5kZXggOThkNTVmZS4uZjFiNzcxZiAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzCi1AQCAtMTU4LDcgKzE1OCw3IEBAIGVuZAotICAgICB7Ci0gICAgICAgcG9wIHBvcAotICAgICB9IGlmZWxzZQotLSAgfSBmb3JhbGwKLSsgIH0gZXhlY3V0ZW9ubHkgZm9yYWxsCi0gICAgICAgICAlIEEgY29udGV4dCBzd2l0Y2ggbWlnaHQgaGF2ZSBvY2N1cnJlZCBkdXJpbmcgdGhlIGFib3ZlIGxvb3AsCi0gICAgICAgICAlIGNhdXNpbmcgdGhlIGludGVycHJldGVyLWxldmVsIHBhcmFtZXRlcnMgdG8gYmUgcmVzZXQuCi0gICAgICAgICAlIFNldCB0aGVtIGFnYWluIHRvIHRoZSBuZXcgdmFsdWVzLiAgRnJvbSBoZXJlIG9uLCB3ZSBhcmUgc2FmZSwKLUBAIC0yMjksOSArMjI5LDkgQEAgZW5kCi0gICAgICAgIHsgcG9wIHBvcAotICAgICAgICB9Ci0gICAgICAgaWZlbHNlCi0tICAgIH0KLSsgICAgfSBleGVjdXRlb25seQotICAgIGZvcmFsbCBwb3AKLS19IC5iaW5kIG9kZWYKLSt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLSAKLSAlIEluaXRpYWxpemUgdGhlIHBhc3N3b3Jkcy4KLSAlIE5PVEU6IHRoZSBuYW1lcyBTdGFydEpvYlBhc3N3b3JkIGFuZCBTeXN0ZW1QYXJhbXNQYXNzd29yZCBhcmUga25vd24gdG8KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcwotaW5kZXggMDBjMTlmYS4uZGZlNTA0ZCAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKLUBAIC02NTIsMTEgKzY1MiwxMSBAQCBjdXJyZW50ZGljdCAvLnBkZm1hcmtwYXJhbXMgLnVuZGVmCi0gICAgICAgICAgIHN5c3RlbWRpY3QgLy5wZGZfaG9va2VkX0RTQ19DcmVhdG9yIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgICAgICAgIHBvcAotLSAgICAgIH0gaWYKLSsgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgIH0gewotICAgICAgIHBvcAotICAgICB9IGlmZWxzZQotLSAgfQotKyAgfSBleGVjdXRlb25seQotICAgewotICAgICBwb3AKLSAgIH0gaWZlbHNlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxNy0wMDAxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc2ZTIxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxNy0wMDAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLUZyb20gMGJhZmJkOWMxMjczZmFiMGRjNzlmZDIwZGIwZmZjNDQ0MzY4M2Y5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogTW9uLCAyOSBBcHIgMjAxOSAxMToxNDowNiArMDEwMAotU3ViamVjdDogW1BBVENIIDEvMl0gUERGIGludGVycHJldGVyIC0gRGVjb2RlIFRvVW5pY29kZSBlbnRyaWVzIG9mIHRoZSBmb3JtCi0gL0lkZW50aXR5LUgvVgotCi1CdWcgIzcwMTAwMyAiVGV4dCBzZWFyY2hhYmlsaXR5IGJyb2tlbiBkdWUgdG8gb21pc3Npb24gb2YgL1RvVW5pY29kZSAvSWRlbnRpdHktSCIKLQotVGhlIFBERiByZWZlcmVuY2VzIGZyb20gMS4yIHRvbyAyLjAgYWxsIHN0YXRlIHRoYXQgdGhlIHZhbHVlIGFzc29jaWF0ZWQKLXdpdGggYSBUb1VuaWNvZGUga2V5IGluIGEgRm9udERlc2NyaXB0b3IgbXVzdCBiZSBhIHN0cmVhbSBvYmplY3QuIEhvd2V2ZXIKLXRoaXMgZmlsZSAoYW5kIG9uZSBjYXNlIHNlZW4gcHJldmlvdXNseSwgYnVnIDY4NzM1MSkgaGF2ZSBGb250RGVzY3JpcHRvcgotZGljdGlvbmFyaWVzIHdoZXJlIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSAvVG9Vbmljb2RlIGtleSBpcyBhCi1uYW1lIG9iamVjdCwgaW4gYm90aCBjYXNlcyAvSWRlbnRpdHktSC4KLQotQWx0aG91Z2ggdGhpcyBpcyBjbGVhcmx5IG5vdCBsZWdhbCwgQWNyb2JhdCBub3Qgb25seSB0b2xlcmF0ZXMgaXQsIGl0Ci1hY3R1YWxseSB1c2VzIGl0IGZvciBzZWFyY2gvY29weS9wYXN0ZSAoc2VlIGJ1ZyA3MDEwMDMgZm9yIGRldGFpbHMpLgotV2l0aG91dCB0aGUga2V5IEFjcm9iYXQgaXMgdW5hYmxlIHRvIHN1Y2Nlc3NmdWxseSBzZWFyY2ggdGhlIG91dHB1dCBmaWxlLgotCi1XZSBjYW4ndCBzaW1wbHkgcHJlc2VydmUgdGhlIG5hbWUgb2JqZWN0IGFzIGEgVG9Vbmljb2RlIHZhbHVlOyB3aGVuCi1oYW5kbGluZyBUb1VuaWNvZGUgd2UgYWN0dWFsbHkgZGVjb2RlIHRoZSBDTWFwIGFuZCBidWlsZCBhCi1HbHlwaE5hbWVzMlVuaWNvZGUgbWFwIChhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgRzJVIGRhdGEKLXByb2R1Y2VkIGJ5IHRoZSBNaWNyb3NvZnQgUG9zdFNjcmlwdCBwcmludGVyIGRyaXZlcikuIFdoZW4gd3JpdGluZyB0aGUKLW91dHB1dCBmaWxlIHdlIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGdldCBhIFVuaWNvZGUgdmFsdWUgZm9yIGVhY2gKLWNoYXJhY3RlciB3ZSB3cml0ZSwgYW5kIGJ1aWxkIGEgbmV3IFRvVW5pY29kZSBDTWFwIHVzaW5nIHRoYXQuCi0KLVRoaXMgY29tbWl0IHRhY2tsZXMgdGhlIHByb2JsZW0gYnkgcHJlLXNjYW5uaW5nIGZvciBhIG5hbWUgb2JqZWN0IGFuZAotdGhlbiBjaGVja2luZyB0byBzZWUgaWYgaXRzIElkZW50aXR5LUggb3IgSWRlbnRpdHktViAoYWx0aG91Z2ggd2UgaGF2ZQotbm90IHNlZW4gYW4gSWRlbnRpdHktViwgdGhlcmUgc2VlbXMgbm8gcmVhc29uIHdoeSBpdCB3b3VsZG4ndCBiZQotZXF1YWxseSB2YWxpZCkuIElmIHdlIGZpbmQgZWl0aGVyIG9mIHRoZXNlIHRoZW4gd2UgY29uc3RydWN0IGEKLUdseXBoTmFtZXMyVW5pY29kZSB0YWJsZSBmb3IgYWxsIHBvc3NpYmxlIHZhbHVlcyAoMCAtIDY1NTM1KSBhbmQgc3RvcmUKLXRoYXQgd2l0aCB0aGUgZm9udCBhcyBub3JtYWwuIFdoZW4gd2Ugd3JpdGUgdGhlIG91dHB1dCBmaWxlIHdlIG9ubHkKLXdyaXRlIHRoZSByZXF1aXJlZCBlbnRyaWVzIGZvciB0aGUgc3Vic2V0IGZvbnQsIHNvIHdlIHdyaXRlIGEgbm93Ci1jb21wbGV0ZWx5IGxlZ2FsIFRvVW5pY29kZSBDTWFwLCBhbmQgQWNyb2JhdCBpcyBlcXVhbGx5IGhhcHB5IHdpdGggdGhhdAotYXMgdGhlIG9yaWdpbmFsIG5hbWUuCi0KLUlmIHRoZSBUb1VuaWNvZGUgdmFsdWUgaXNuJ3QgYSBuYW1lIG9iamVjdCwgb3IgaXNuJ3Qgb25lIG9mIHRoZQotaWRlbnRpdGllcyB0aGVuIHdlIHByb2NlZWQgYXMgYmVmb3JlLiBUaGlzIG1lYW5zIHdlIHdpbGwgcHJpbnQgYQotd2FybmluZyBmb3Igbm9uIGNvbmZvcm1pbmcgVG9Vbmljb2RlIGVudHJpZXMgYW5kIGlnbm9yZSB0aGVtLgotCi1DVkU6IENWRS0yMDE5LTE0ODE3Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogU3RlZmFuIEdoaW5lYSA8c3RlZmFuLmdoaW5lYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcyB8IDIwMCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotaW5kZXggOWZiODVmNi4uMmRmMzMwMyAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLUBAIC02MjEsODYgKzYyMSwxNDQgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgUERGREVCVUcgewotICAgICAgICAgICAoLnByb2Nlc3NUb1VuaWNvZGUgYmVnKSA9Ci0gICAgICAgICB9IGlmCi0tICAgICAgICAyIGluZGV4IC9Ub1VuaWNvZGUga25vd25vZ2V0IHsKLS0gICAgICAgICAgZHVwIHR5cGUgL2RpY3R0eXBlIGVxIHsgZHVwIC9GaWxlIGtub3duIG5vdCB9IHsgLy90cnVlIH0gaWZlbHNlIHsKLS0gICAgICAgICAgICAlIFdlIHVuZGVmaW5lIHdyb25nIC9MZW5ndGggYW5kIGRlZmluZSAvRmlsZSBpbiBzdHJlYW0gZGljdGlvbmFyaWVzLgotLSAgICAgICAgICAgICUgQnVnNjg3MzUxLnBkZiBkZWZpbmVzIC9Ub1VuaWNvZGUgL0lkZW50aXR5LUgsIHdoYXQgaXMgaW5jb3JyZWN0LgotLSAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IElnbm9yaW5nIGJhZCBUb1VuaWNvZGUgQ01hcC5cbikgIHBkZmZvcm1hdHdhcm5pbmcKLS0gICAgICAgICAgICBwb3AKLSsKLSsgICAgICAgIDIgaW5kZXggL1RvVW5pY29kZSBrbm93bm9nZXQKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBkdXAgdHlwZSAvbmFtZXR5cGUgZXEgewotKyAgICAgICAgICAgICAgJSBUaGlzIGlzIGNvbnRyYXJ5IHRvIHRoZSBzcGVjaWZpY2F0aW9uIGJ1dCBpdCBzZWVtcyB0aGF0IEFjcm9iYXQgYXQgbGVhc3Qgd2lsbCBhY2NlcHQKLSsgICAgICAgICAgICAgICUgYSBUb1VuaWNvZGUgd2l0aCBhIHZhbHVlIG9mIElkZW50aXR5LUggKmFuZCogd2lsbCB1c2UgdGhhdCBmb3Igc2VhcmNoLCBjb3B5L3Bhc3RlLgotKyAgICAgICAgICAgICAgJSBXZSBjYW4ndCBwYXNzIHRocm91Z2ggYSBuYW1lLCBzbyB0aGUgYmVzdCB3ZSBjYW4gZG8gaXMgYnVpbGQgYSBHbHlwaE5hbWVzMlVuaWNvZGUKLSsgICAgICAgICAgICAgICUgbWFwIG1hdGNoaW5nIHRoYXQgd2hpY2ggd291bGQgaGF2ZSBiZWVuIGdlbmVyYXRlZCBieSBhIGZ1bGwgMTYtYml0IElkZW50aXR5IENNYXAKLSsgICAgICAgICAgICAgICUKLSsgICAgICAgICAgICAgICUgU2VlIGJ1ZyBudW1iZXJzIDcwMTAwMyBhbmQgNjg3MzUxCi0rICAgICAgICAgICAgICAlCi0rICAgICAgICAgICAgICBkdXAgL0lkZW50aXR5LUggZXEgMSBpbmRleCAvSWRlbnRpdHktViBlcSBvcnsKLSsgICAgICAgICAgICAgICAgcG9wCi0rICAgICAgICAgICAgICAgIDEgaW5kZXggL0ZvbnRJbmZvIC5rbm93bmdldCBub3QgewotKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgMiBpbmRleCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotKyAgICAgICAgICAgICAgICAgIC9Gb250SW5mbyA1IGRpY3QgZHVwIDUgMSByb2xsIC5mb3JjZXB1dAotKyAgICAgICAgICAgICAgICAgIHNldGdsb2JhbAotKyAgICAgICAgICAgICAgICB9IGlmCi0rICAgICAgICAgICAgICAgIGR1cCAvR2x5cGhOYW1lczJVbmljb2RlIC5rbm93bmdldCBub3QgewotKyAgICAgICAgICAgICAgICAgIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICUgTm8gZXhpc3RpbmcgRzJVLCBtYWtlIG9uZQotKyAgICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgICBkdXAgd2NoZWNrIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nLCB3cml0ZWFibGUgRzJVLCBkb24ndCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgICAgIHBvcCAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcgcmVhZCBvbmx5IEcyVSwgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgZXhjaCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotKyAgICAgICAgICAgICAgICAgIGR1cCAvR2x5cGhOYW1lczJVbmljb2RlIDEwMCBkaWN0IGR1cCA0IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICAzIDIgcm9sbCBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvIGcydQotKwotKyAgICAgICAgICAgICAgICAwIDEgNjU1MzV7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleAotKyAgICAgICAgICAgICAgICAgIGR1cCBkdXAgMjU2IG1vZCBleGNoIDI1NiBpZGl2ICAgICAgICAgJSBnMnUgaW5kZXggbG8tYnl0ZSBoaS1ieXRlCi0rICAgICAgICAgICAgICAgICAgMiBzdHJpbmcgZHVwIDAgNCAtMSByb2xsICAgICAgICAgICAgICAlIGcydSBpbmRleCBsby1ieXRlICgpICgpIDAgaGktYnl0ZQotKyAgICAgICAgICAgICAgICAgIHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXggbG8tYnl0ZSAoeCkKLSsgICAgICAgICAgICAgICAgICBkdXAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgKHgpICh4KSAxCi0rICAgICAgICAgICAgICAgICAgNCAtMSByb2xsIHB1dCAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCAoeCkgKHgpIDEgbG8tYnl0ZSAtPiBkaWN0IGluZGV4ICh4eCkKLSsgICAgICAgICAgICAgICAgICAyIGluZGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGluZGV4ICh4eCkgZGljdAotKyAgICAgICAgICAgICAgICAgIDMgMSByb2xsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgZzJ1IGluZGV4ICh4eCkKLSsgICAgICAgICAgICAgICAgICBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1Ci0rICAgICAgICAgICAgICAgIH0gZm9yCi0rICAgICAgICAgICAgICAgIHBvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbwotKyAgICAgICAgICAgICAgICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZW5jb2Rpbmd8bnVsbAotKyAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBXZSBidWlsdCBhIEdseXBoTmFtZXMyVW5pY29kZSB0YWJsZSwgZG9uJ3QgbmVlZCB0byBwcm9jZXNzIGZ1cnRoZXIKLSsgICAgICAgICAgICAgIH17Ci0rICAgICAgICAgICAgICAgIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5hbWUgaXMgbm90IElkZW50aXR5LVYgb3IgSCwgZmFpbCBieSBmYWxsaW5nIHRocm91Z2gKLSsgICAgICAgICAgICAgIH1pZmVsc2UKLSAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgL1BERlNjYW5SdWxlcyAuZ2V0dXNlcnBhcmFtIGR1cCAvL251bGwgZXEgewotLSAgICAgICAgICAgICAgcG9wIC8vUERGU2NhblJ1bGVzX251bGwKLS0gICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIDEgZGljdCBkdXAgL1BERlNjYW5SdWxlcyA0IC0xIHJvbGwgcHV0Ci0tICAgICAgICAgICAgfSBpZmVsc2UKLS0gICAgICAgICAgICAvL1BERlNjYW5SdWxlc190cnVlIHNldHVzZXJwYXJhbXMKLS0gICAgICAgICAgICBQREZmaWxlIGZpbGVwb3NpdGlvbgotLSAgICAgICAgICAgIDMgLTEgcm9sbAotLSAgICAgICAgICAgIGNvdW50IDEgc3ViCi0tICAgICAgICAgICAgY291bnRkaWN0c3RhY2sKLS0gICAgICAgICAgICB7IC8vZmFsc2UgcmVzb2x2ZXN0cmVhbQotLSAgICAgICAgICAgICAgJSBGb2xsb3dpbmcgQWNyb2JhdCB3ZSBpZ25vcmUgZXZlcnl0aGluZyBvdXRzaWRlCi0tICAgICAgICAgICAgICAlICAgYmVnaW5jb2Rlc3BhY2VyYW5nZSAuLiBlbmRjbWFwLgotLSAgICAgICAgICAgICAgZHVwIDAgKGJlZ2luY29kZXNwYWNlcmFuZ2UpIC9TdWJGaWxlRGVjb2RlIGZpbHRlciBmbHVzaGZpbGUKLS0gICAgICAgICAgICAgIC9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgotLSAgICAgICAgICAgICAgLy9Ub1VuaWNvZGVDTWFwUmVhZGVyIGJlZ2luCi0tICAgICAgICAgICAgICAxMiBkaWN0IGJlZ2luCi0tICAgICAgICAgICAgICAvQ01hcFR5cGUgMiBkZWYKLS0gICAgICAgICAgICAgIG1hcmsgZXhjaCAlIGVtdWxhdGUgJ2JlZ2luY29kZXNwYWNlcmFuZ2UnCi0tICAgICAgICAgICAgICAwIChlbmRjbWFwKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgY3Z4IC9iZWdpbmNtYXAgY3Z4IGV4Y2ggMiAuZXhlY24KLS0gICAgICAgICAgICAgIGVuZGNtYXAKLS0gICAgICAgICAgICAgIHVzZXJkaWN0IC8ubGFzdFRvVW5pY29kZSBjdXJyZW50ZGljdCBwdXQKLS0gICAgICAgICAgICAgIGVuZCBlbmQgZW5kCi0tICAgICAgICAgICAgfQotKyAgICAgICAgICAgIC8vdHJ1ZQotKyAgICAgICAgICB9IGlmZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBub3QgYSBuYW1lLCB0cnkgYXMgYSBkaWN0aW9uYXJ5IChhcyBzcGVjaWZpZWQpCi0gCi0tICAgICAgICAgICAgUERGU1RPUE9ORVJST1IgewotLSAgICAgICAgICAgICAgeyBleGVjIH0gMCBnZXQKLS0gICAgICAgICAgICAgIC8vZmFsc2UKLS0gICAgICAgICAgICAgIDUgLTIgcm9sbAotLSAgICAgICAgICAgICAgNQotKyAgICAgICAgICAlIElmIHRoZSBUb1VuaWNvZGUgaXNuJ3QgYSBuYW1lLCBvciB0aGUgbmFtZSBpc24ndCBJZGVudGl0eS1WIG9yIC1IIHRoZW4gZm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uCi0rICAgICAgICAgICUgSWYgaXRzIG5vdCBhIGRpY3Rpb25hcnkgdHlwZSB0aHJvdyBhbiBlcnJvciwgb3RoZXJ3aXNlIGRlY29kZSBpdCBhbmQgYnVpbGQgYSBHbHlwaE5hbWVzMlVuaWNvZGUKLSsgICAgICAgICAgJQotKyAgICAgICAgICB7Ci0rICAgICAgICAgICAgZHVwIHR5cGUgL2RpY3R0eXBlIGVxIHsgZHVwIC9GaWxlIGtub3duIG5vdCB9IHsgLy90cnVlIH0gaWZlbHNlIHsKLSsgICAgICAgICAgICAgICUgV2UgdW5kZWZpbmUgd3JvbmcgL0xlbmd0aCBhbmQgZGVmaW5lIC9GaWxlIGluIHN0cmVhbSBkaWN0aW9uYXJpZXMuCi0rICAgICAgICAgICAgICAlIEJ1ZzY4NzM1MS5wZGYgZGVmaW5lcyAvVG9Vbmljb2RlIC9JZGVudGl0eS1ILCB3aGF0IGlzIGluY29ycmVjdC4KLSsgICAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IElnbm9yaW5nIGJhZCBUb1VuaWNvZGUgQ01hcC5cbikgIHBkZmZvcm1hdHdhcm5pbmcKLSsgICAgICAgICAgICAgIHBvcAotICAgICAgICAgICAgIH0gewotLSAgICAgICAgICAgICAgeyBzdG9wcGVkIH0gMCBnZXQKLS0gICAgICAgICAgICAgIDQgMiByb2xsCi0tICAgICAgICAgICAgICA0Ci0tICAgICAgICAgICAgfSBpZmVsc2UKLS0gICAgICAgICAgICBhcnJheSBhc3RvcmUgY3Z4IGV4ZWMKLSsgICAgICAgICAgICAgIC9QREZTY2FuUnVsZXMgLmdldHVzZXJwYXJhbSBkdXAgLy9udWxsIGVxIHsKLSsgICAgICAgICAgICAgICAgcG9wIC8vUERGU2NhblJ1bGVzX251bGwKLSsgICAgICAgICAgICAgIH0gewotKyAgICAgICAgICAgICAgICAxIGRpY3QgZHVwIC9QREZTY2FuUnVsZXMgNCAtMSByb2xsIHB1dAotKyAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgIC8vUERGU2NhblJ1bGVzX3RydWUgc2V0dXNlcnBhcmFtcwotKyAgICAgICAgICAgICAgUERGZmlsZSBmaWxlcG9zaXRpb24KLSsgICAgICAgICAgICAgIDMgLTEgcm9sbAotKyAgICAgICAgICAgICAgY291bnQgMSBzdWIKLSsgICAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrCi0rICAgICAgICAgICAgICB7IC8vZmFsc2UgcmVzb2x2ZXN0cmVhbQotKyAgICAgICAgICAgICAgICAlIEZvbGxvd2luZyBBY3JvYmF0IHdlIGlnbm9yZSBldmVyeXRoaW5nIG91dHNpZGUKLSsgICAgICAgICAgICAgICAgJSAgIGJlZ2luY29kZXNwYWNlcmFuZ2UgLi4gZW5kY21hcC4KLSsgICAgICAgICAgICAgICAgZHVwIDAgKGJlZ2luY29kZXNwYWNlcmFuZ2UpIC9TdWJGaWxlRGVjb2RlIGZpbHRlciBmbHVzaGZpbGUKLSsgICAgICAgICAgICAgICAgL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCi0rICAgICAgICAgICAgICAgIC8vVG9Vbmljb2RlQ01hcFJlYWRlciBiZWdpbgotKyAgICAgICAgICAgICAgICAxMiBkaWN0IGJlZ2luCi0rICAgICAgICAgICAgICAgIC9DTWFwVHlwZSAyIGRlZgotKyAgICAgICAgICAgICAgICBtYXJrIGV4Y2ggJSBlbXVsYXRlICdiZWdpbmNvZGVzcGFjZXJhbmdlJwotKyAgICAgICAgICAgICAgICAwIChlbmRjbWFwKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgY3Z4IC9iZWdpbmNtYXAgY3Z4IGV4Y2ggMiAuZXhlY24KLSsgICAgICAgICAgICAgICAgZW5kY21hcAotKyAgICAgICAgICAgICAgICB1c2VyZGljdCAvLmxhc3RUb1VuaWNvZGUgY3VycmVudGRpY3QgcHV0Ci0rICAgICAgICAgICAgICAgIGVuZCBlbmQgZW5kCi0rICAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgY291bnRkaWN0c3RhY2sgZXhjaCBzdWIgMCAubWF4IHsgZW5kIH0gcmVwZWF0Ci0tICAgICAgICAgICAgY291bnQgZXhjaCBzdWIgMiBzdWIgMCAubWF4IHsgZXhjaCBwb3AgfSByZXBlYXQKLS0gICAgICAgICAgICAzIDEgcm9sbCAgICAgICAgICAgICAgICAgICAgICUgU3RhY2ggdGhlIHN0b3AgZmxhZy4KLS0gICAgICAgICAgICBQREZmaWxlIGV4Y2ggc2V0ZmlsZXBvc2l0aW9uCi0tICAgICAgICAgICAgc2V0dXNlcnBhcmFtcwotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IEZhaWxlZCB0byByZWFkIFRvVW5pY29kZSBDTWFwLlxuKSAgcGRmZm9ybWF0d2FybmluZwotLSAgICAgICAgICAgIH0gewotLSAgICAgICAgICAgICAgMSBpbmRleCAvRm9udEluZm8gLmtub3duZ2V0IG5vdCB7Ci0tICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgMiBpbmRleCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgICAvRm9udEluZm8gNSBkaWN0IGR1cCA1IDEgcm9sbCAuZm9yY2VwdXQKLS0gICAgICAgICAgICAgICAgc2V0Z2xvYmFsCi0tICAgICAgICAgICAgICB9IGlmCi0tICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLS0gICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0rICAgICAgICAgICAgICBQREZTVE9QT05FUlJPUiB7Ci0rICAgICAgICAgICAgICAgIHsgZXhlYyB9IDAgZ2V0Ci0rICAgICAgICAgICAgICAgIC8vZmFsc2UKLSsgICAgICAgICAgICAgICAgNSAtMiByb2xsCi0rICAgICAgICAgICAgICAgIDUKLSsgICAgICAgICAgICAgIH0gewotKyAgICAgICAgICAgICAgICB7IHN0b3BwZWQgfSAwIGdldAotKyAgICAgICAgICAgICAgICA0IDIgcm9sbAotKyAgICAgICAgICAgICAgICA0Ci0rICAgICAgICAgICAgICB9IGlmZWxzZQotKyAgICAgICAgICAgICAgYXJyYXkgYXN0b3JlIGN2eCBleGVjCi0rCi0rICAgICAgICAgICAgICBjb3VudGRpY3RzdGFjayBleGNoIHN1YiAwIC5tYXggeyBlbmQgfSByZXBlYXQKLSsgICAgICAgICAgICAgIGNvdW50IGV4Y2ggc3ViIDIgc3ViIDAgLm1heCB7IGV4Y2ggcG9wIH0gcmVwZWF0Ci0rICAgICAgICAgICAgICAzIDEgcm9sbCAgICAgICAgICAgICAgICAgICAgICUgU3RhY2ggdGhlIHN0b3AgZmxhZy4KLSsgICAgICAgICAgICAgIFBERmZpbGUgZXhjaCBzZXRmaWxlcG9zaXRpb24KLSsgICAgICAgICAgICAgIHNldHVzZXJwYXJhbXMKLSsgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgKCAgICoqKiogV2FybmluZzogRmFpbGVkIHRvIHJlYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0gICAgICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0tICAgICAgICAgICAgICAgICAgLy9mYWxzZSAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcsIHdyaXRlYWJsZSBHMlUsIGRvbid0IG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAxIGluZGV4IC9Gb250SW5mbyAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICAvRm9udEluZm8gNSBkaWN0IGR1cCA1IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZgotKyAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAlIE5vIGV4aXN0aW5nIEcyVSwgbWFrZSBvbmUKLSAgICAgICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAgICAgcG9wIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZyByZWFkIG9ubHkgRzJVLCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgICBkdXAgd2NoZWNrIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nLCB3cml0ZWFibGUgRzJVLCBkb24ndCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgICAgIHBvcCAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcgcmVhZCBvbmx5IEcyVSwgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSBpZmVsc2UKLSAgICAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgZXhjaCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotKyAgICAgICAgICAgICAgICAgIGR1cCAvR2x5cGhOYW1lczJVbmljb2RlIDEwMCBkaWN0IGR1cCA0IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICAzIDIgcm9sbCBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvIGcydQotKyAgICAgICAgICAgICAgICBleGNoIHBvcCBleGNoICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZzJ1IGVuY29kaW5nfG51bGwKLSsgICAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGdldCAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBFbmNvZGluZ3xudWxsIENNYXAKLSsgICAgICAgICAgICAgICAgLmNvbnZlcnRfVG9Vbmljb2RlLWludG8tZzJ1ICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0Ci0rICAgICAgICAgICAgICAgIC8vbnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCAvL251bGwKLSAgICAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgZXhjaCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0tICAgICAgICAgICAgICAgIDMgMiByb2xsIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgfSBpZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvIGcydQotLSAgICAgICAgICAgICAgZXhjaCBwb3AgZXhjaCAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBlbmNvZGluZ3xudWxsCi0tICAgICAgICAgICAgICB1c2VyZGljdCAvLmxhc3RUb1VuaWNvZGUgZ2V0ICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZzJ1IEVuY29kaW5nfG51bGwgQ01hcAotLSAgICAgICAgICAgICAgLmNvbnZlcnRfVG9Vbmljb2RlLWludG8tZzJ1ICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0Ci0tICAgICAgICAgICAgICAvL251bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgLy9udWxsCi0gICAgICAgICAgICAgfSBpZmVsc2UKLS0gICAgICAgICAgfSBpZmVsc2UKLS0gICAgICAgIH0gaWYKLS0gICAgICAgIFBERkRFQlVHIHsKLS0gICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotKyAgICAgICAgICB9IGlmCi0rICAgICAgICAgIFBERkRFQlVHIHsKLSsgICAgICAgICAgICAoLnByb2Nlc3NUb1VuaWNvZGUgZW5kKSA9Ci0rICAgICAgICAgIH0gaWYKLSAgICAgICAgIH0gaWYKLSAgICAgICB9IGlmCi0gICAgIH0gc3RvcHBlZAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNDhmZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzNiArMCwwIEBACi1Gcm9tIGNkMWIxY2FjYWRhYzI0NzllMjkxZWZlNjExOTc5YmRjMWIzYmRiMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTA6MTA6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFBERiBpbnRlcnByZXRlciAtIHJldmlldyAuZm9yY2VwdXQgc2VjdXJpdHkKLQotQnVnICM3MDE0NTAgIlNhZmVyIE1vZGUgQnlwYXNzIGJ5IC5mb3JjZXB1dCBFeHBvc3VyZSBpbiAucGRmZXhlY3Rva2VuIgotCi1CeSBhYnVzaW5nIHRoZSBlcnJvciBoYW5kbGVyIGl0IHdhcyBwb3NzaWJsZSB0byBnZXQgdGhlIFBERkRFQlVHIHBvcnRpb24KLW9mIC5wZGZleGVjdG9rZW4sIHdoaWNoIHVzZXMgLmZvcmNlcHV0IGxlZnQgcmVhZGFibGUuCi0KLUFkZCBhbiBleGVjdXRlb25seSBhcHByb3ByaWF0ZWx5IHRvIG1ha2Ugc3VyZSB0aGF0IGNsYXVzZSBpc24ndCByZWFkYWJsZQotbm8gbXN0dGVyIHdoYXQuCi0KLVJldmlldyBhbGwgdGhlIHVzZXMgb2YgLmZvcmNlcHV0IHNlYXJjaGluZyBmb3Igc2ltaWxhciBjYXNlcywgYWRkCi1leGVjdXRlb25seSBhcyByZXF1aXJlZCB0byBzZWN1cmUgdGhvc2UuIEFsbCBjYXNlcyBpbiB0aGUgUG9zdFNjcmlwdAotc3VwcG9ydCBmaWxlcyBzZWVtIHRvIGJlIGNvdmVyZWQgYWxyZWFkeS4KLQotQ1ZFOiBDVkUtMjAxOS0xNDgxNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIFJlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgfCAgMiArLQotIFJlc291cmNlL0luaXQvcGRmX2RyYXcucHMgfCAxNCArKysrKysrLS0tLS0tLQotIFJlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgfCAyOSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIFJlc291cmNlL0luaXQvcGRmX21haW4ucHMgfCAgNiArKystLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMgIHwgMTEgKysrKysrLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMKLWluZGV4IDFhMjE4ZjQuLmNmZmRlNWMgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCi1AQCAtMTU3LDcgKzE1Nyw3IEBAIGN1cnJlbnRkaWN0IC9udW0tY2hhcnMtZGljdCAudW5kZWYKLSAgICAgewotICAgICAgIGR1cCA9PW9ubHkgKCkgPSBmbHVzaAotICAgICB9IGlmZWxzZSAlIFBERlNURVAKLS0gIH0gaWYgJSBQREZERUJVRwotKyAgfSBleGVjdXRlb25seSBpZiAlIFBERkRFQlVHCi0gICAyIGNvcHkgLmtub3duZ2V0IHsKLSAgICAgZXhjaCBwb3AgZXhjaCBwb3AgZXhjaCBwb3AgZXhlYwotICAgfSB7Ci1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMKLWluZGV4IGUxOGE3YzIuLjBhMzkyNGMgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCi1AQCAtNTAxLDggKzUwMSw4IEBAIGVuZAotICAgICAgICggICAgICAgIE91dHB1dCBtYXkgYmUgaW5jb3JyZWN0LlxuKSBwZGZmb3JtYXRlcnJvcgotICAgICAgIC8vcGRmZGljdCAvLmdzX3dhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICBQREZTVE9QT05FUlJPUiB7IC9ncyAvdW5kZWZpbmVkIHNpZ25hbGVycm9yIH0gaWYKLS0gICAgfSBpZgotLSAgfQotKyAgICB9IGV4ZWN1dGVvbmx5IGlmCi0rICB9IGV4ZWN1dGVvbmx5Ci0gICBpZmVsc2UKLSB9IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCi0gCi1AQCAtMTE0Miw3ICsxMTQyLDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICAgIH0KLSsgICAgICB9IGV4ZWN1dGVvbmx5Ci0gICAgICAgewotICAgICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotQEAgLTExNTAsOCArMTE1MCw4IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLSAgICAgICBlbmQKLS0gICAgfSBpZmVsc2UKLS0gIH0gbG9vcAotKyAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotKyAgfSBleGVjdXRlb25seSBsb29wCi0gICB7Ci0gICAgIChcbiAgICoqKiogRXJyb3I6IEZpbGUgaGFzIHVuYmFsYW5jZWQgcS9RIG9wZXJhdG9ycyBcKHRvbyBtYW55IHEnc1wpXG4gICAgICAgICAgICAgICBPdXRwdXQgbWF5IGJlIGluY29ycmVjdC5cbikKLSAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAua25vd25nZXQKLUBAIC0xMTY1LDE0ICsxMTY1LDE0IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgIC5zZXRnbG9iYWwKLSAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gICAgfQotKyAgICB9IGV4ZWN1dGVvbmx5Ci0gICAgIHsKLSAgICAgICBjdXJyZW50Z2xvYmFsIC8vcGRmZGljdCBnY2hlY2sgLnNldGdsb2JhbAotICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgIC5zZXRnbG9iYWwKLSAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgfSBpZgotKyAgfSBleGVjdXRlb25seSBpZgotICAgcG9wCi0gCi0gICAlIHJlc3RvcmUgcGRmZW1wdHljb3VudAotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi1pbmRleCAyZGYzMzAzLi42YTZhNWZlIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotQEAgLTYzOCw3ICs2MzgsNyBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICAgICAgICAgICAgY3VycmVudGdsb2JhbCAyIGluZGV4IGR1cCBnY2hlY2sgc2V0Z2xvYmFsCi0gICAgICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0gICAgICAgICAgICAgICAgICAgc2V0Z2xvYmFsCi0tICAgICAgICAgICAgICAgIH0gaWYKLSsgICAgICAgICAgICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLSAgICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAlIE5vIGV4aXN0aW5nIEcyVSwgbWFrZSBvbmUKLSAgICAgICAgICAgICAgICAgfSB7Ci1AQCAtNjY4LDEwICs2NjgsMTIgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICAgICAgICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZW5jb2Rpbmd8bnVsbCBmb250LWluZm8KLSAgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwKLSAgICAgICAgICAgICAgICAgLy9mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgV2UgYnVpbHQgYSBHbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUsIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBmdXJ0aGVyCi0tICAgICAgICAgICAgICB9ewotKyAgICAgICAgICAgICAgfSBleGVjdXRlb25seQotKyAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBuYW1lIGlzIG5vdCBJZGVudGl0eS1WIG9yIEgsIGZhaWwgYnkgZmFsbGluZyB0aHJvdWdoCi0gICAgICAgICAgICAgICB9aWZlbHNlCi0tICAgICAgICAgIH0gewotKyAgICAgICAgICB9IGV4ZWN1dGVvbmx5Ci0rICAgICAgICAgIHsKLSAgICAgICAgICAgICAvL3RydWUKLSAgICAgICAgICAgfSBpZmVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbm90IGEgbmFtZSwgdHJ5IGFzIGEgZGljdGlvbmFyeSAoYXMgc3BlY2lmaWVkKQotIAotQEAgLTc1OSw5ICs3NjEsOSBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICAgIFBERkRFQlVHIHsKLSAgICAgICAgICAgICAoLnByb2Nlc3NUb1VuaWNvZGUgZW5kKSA9Ci0gICAgICAgICAgIH0gaWYKLS0gICAgICAgIH0gaWYKLS0gICAgICB9IGlmCi0tICAgIH0gc3RvcHBlZAotKyAgICAgICAgfSBleGVjdXRlb25seSBpZgotKyAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgICAgfSBleGVjdXRlb25seSBzdG9wcGVkCi0gICAgIHsKLSAgICAgICAuZHN0YWNrZGVwdGggMSBjb3VudGRpY3RzdGFjayAxIHN1YgotICAgICAgIHtwb3AgZW5kfSBmb3IKLUBAIC0xMjkxLDE5ICsxMjkzLDIwIEBAIGN1cnJlbnRkaWN0IC9lZXhlY19wZGZfcGFyYW1fZGljdCAudW5kZWYKLSAgICAgICAgICAgICAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgICAgICAgICAgICBRCi0tICAgICAgICAgICAgfSByZXBlYXQKLSsgICAgICAgICAgICB9IGV4ZWN1dGVvbmx5IHJlcGVhdAotICAgICAgICAgICAgIFEKLS0gICAgICAgICAgfSBQREZmaWxlIGZpbGVwb3NpdGlvbiAyIC5leGVjbiAlIEtlZXAgcGRmY291bnQgdmFsaWQuCi0rICAgICAgICAgIH0gZXhlY3V0ZW9ubHkgUERGZmlsZSBmaWxlcG9zaXRpb24gMiAuZXhlY24gJSBLZWVwIHBkZmNvdW50IHZhbGlkLgotICAgICAgICAgICBQREZmaWxlIGV4Y2ggc2V0ZmlsZXBvc2l0aW9uCi0tICAgICAgICB9IGlmZWxzZQotLSAgICAgIH0gewotKyAgICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLSsgICAgICB9IGV4ZWN1dGVvbmx5Ci0rICAgICAgewotICAgICAgICAgJSBQREYgVHlwZSAzIGZvbnRzIGRvbid0IHVzZSAubm90ZGVmCi0gICAgICAgICAlIGQxIGltcGxlbWVudGF0aW9uIGFkanVzdHMgdGhlIHdpZHRoIGFzIG5lZWRlZAotICAgICAgICAgMCAwIDAgMCAwIDAKLSAgICAgICAgIHBkZm9wZGljdCAvZDEgZ2V0IGV4ZWMKLSAgICAgICB9IGlmZWxzZQotICAgICAgIGVuZCBlbmQKLS0gICAgfSBiZGVmCi0rICAgIH0gZXhlY3V0ZW9ubHkgYmRlZgotICAgICBkdXAgY3VycmVudGRpY3QgRW5jb2RpbmcgLnByb2Nlc3NUb1VuaWNvZGUKLSAgICAgY3VycmVudGRpY3QgZW5kIC5jb21wbGV0ZWZvbnQgZXhjaCBwb3AKLSB9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgotQEAgLTIxMDMsOSArMjEwNiw5IEBAIGN1cnJlbnRkaWN0IC9DTWFwX3JlYWRfZGljdCB1bmRlZgotICAgICAgICAgICAoV2lsbCBjb250aW51ZSwgYnV0IGNvbnRlbnQgbWF5IGJlIG1pc3NpbmcuKSA9IGZsdXNoCi0gICAgICAgICB9IGlmZWxzZQotICAgICAgIH0gaWYKLS0gICAgfSBpZgotKyAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgIC9maW5kcmVzb3VyY2UgY3Z4IC91bmRlZmluZWQgc2lnbmFsZXJyb3IKLS0gIH0gbG9vcAotKyAgfSBleGVjdXRlb25seSBsb29wCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLSAKLSAvYnVpbGRDSURUeXBlMCB7CSUgPENJREZvbnRUeXBlMC1mb250LXJlc291cmNlPiBidWlsZENJRFR5cGUwIDxmb250PgotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzCi1pbmRleCA1MzA1ZWE2Li5hNTllNjNjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcwotQEAgLTI3NDksMTUgKzI3NDksMTUgQEAgY3VycmVudGRpY3QgL1BERjJQU19tYXRyaXhfa2V5IHVuZGVmCi0gICAgICAgICAgIC5zZXRnbG9iYWwKLSAgICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgICAgfQotKyAgICAgIH0gZXhlY3V0ZW9ubHkKLSAgICAgICB7Ci0gICAgICAgICBjdXJyZW50Z2xvYmFsIC8vcGRmZGljdCBnY2hlY2sgLnNldGdsb2JhbAotICAgICAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgIH0gaWYKLS0gIH0gaWYKLSsgICAgfSBleGVjdXRlb25seSBpZgotKyAgfSBleGVjdXRlb25seSBpZgotICAgcG9wCi0gICBjb3VudCBQREZleGVjc3RhY2tjb3VudCBzdWIgeyBwb3AgfSByZXBlYXQKLSAgIChhZnRlciBleGVjKSBWTURFQlVHCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCi1pbmRleCAyODVlNTgyLi42YzFmMTAwIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMKLUBAIC0xODYsMTQgKzE4NiwxNCBAQCBjdXJyZW50ZGljdCAvZ3B1dF9hbHdheXNfYWxsb3cgLnVuZGVmCi0gICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgIH0KLSsgICAgfSBleGVjdXRlb25seQotICAgICB7Ci0gICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gIH0gaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSB9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgotIAotICUgU2F2ZSBQREYgZ3N0YXRlCi1AQCAtNDQwLDExICs0NDAsMTIgQEAgY3VycmVudGRpY3QgL2dwdXRfYWx3YXlzX2FsbG93IC51bmRlZgotICAgZHVwIHR5cGUgL2Jvb2xlYW50eXBlIGVxIHsKLSAgICAgLmN1cnJlbnRTTWFzayB0eXBlIC9kaWN0dHlwZSBlcSB7Ci0gICAgICAgLmN1cnJlbnRTTWFzayAvUHJvY2Vzc2VkIDIgaW5kZXggLmZvcmNlcHV0Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSsgICAgewotKyAgICAgIC5zZXRTTWFzawotKyAgICB9aWZlbHNlCi0gICB9IGV4ZWN1dGVvbmx5Ci0gICB7Ci0tICAgICAgLnNldFNNYXNrCi0tICB9aWZlbHNlCi0tICB9ewotICAgLnNldFNNYXNrCi0gICB9aWZlbHNlCi0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDg2OS0wMDAxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTVlYzFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDQ4NTkwNDc3MmM1ZjBhYTExNDAwMzI3NDZlNWEwYWJmYzQwZjRjZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDA5OjQ1OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA3MDE4NDE6IHJlbW92ZSAuZm9yY2VwdXQgZnJvbSAvLmNoYXJrZXlzCisKK1doZW4gbG9hZGluZyBUeXBlIDEgb3IgVHJ1ZXR5cGUgZm9udHMgZnJvbSBkaXNrLCB3ZSBhdHRlbXB0IHRvIGV4dGVuZCB0aGUgZ2x5cGgKK25hbWUgdGFibGUgdG8gaW5jbHVkZSBhbGwgaWRlbnRpZmlhYmxlIGdseXBoIG5hbWVzIGZyb20gdGhlIEFkb2JlIEdseXBoIExpc3QuCisKK0luIHRoZSBjYXNlIG9mIFR5cGUgMSBmb250cywgdGhlIGZvbnQgaXRzZWxmIChhbG1vc3QgYWx3YXlzKSBtYXJrcyB0aGUKK0NoYXJTdHJpbmdzIGRpY3Rpb25hcnkgYXMgcmVhZC1vbmx5LCBoZW5jZSB3ZSBoYXZlIHRvIHVzZSAuZm9yY2VwdXQgZm9yIHRoYXQKK2Nhc2UuCisKK0J1dCBmb3IgVHJ1ZXR5cGUgZm9udHMsIHRoZSBDaGFyU3RyaW5ncyBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgaW50ZXJuYWxseSBhbmQgaXMKK25vdCByZWFkLW9ubHkgdW50aWwgKmFmdGVyKiB3ZSBoYXZlIGZ1bGx5IHBvcHVsYXRlZCBpdCAoaW5jbHVkaW5nIHRoZSBleHRlbmRlZAorZ2x5cGggbmFtZXMgZnJvbSB0aGUgQUdMKSwgaGVuY2UgdGhlcmUgaXMgbm8gbmVlZCBmb3IgLmZvcmNlcHV0LCBhbmQgbm8gbmVlZCB0bworY2FycnkgdGhlIHNlY3VyaXR5IHJpc2sgb2YgdXNpbmcgaXQuCisKK1JlcGxhY2Ugd2l0aCByZWd1bGFyIHB1dC4KKworQ1ZFOiBDVkUtMjAxOS0xNDg2OQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCisKK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfdHRmLnBzIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcyBiL1Jlc291cmNlL0luaXQvZ3NfdHRmLnBzCitpbmRleCBlMzQ5NjdkLi41MzU0ZmYwIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc190dGYucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfdHRmLnBzCitAQCAtMTMwMSw3ICsxMzAxLDcgQEAgY3VycmVudGRpY3QgLy5waWNrY21hcF93aXRoX25vX3hsYXRtYXAgLnVuZGVmCisgICAgICAgICAgIFRURkRFQlVHIHsgKFxuMSBzZXR0aW5nIGFsaWFzOiApIHByaW50IGR1cCA9PW9ubHkKKyAgICAgICAgICAgICAgICAgKCB0byBiZSB0aGUgc2FtZSBhcyAgKSBwcmludCAyIGluZGV4IC8vPT0gZXhlYyB9IGlmCisgCistICAgICAgICAgIDcgaW5kZXggMiBpbmRleCAzIC0xIHJvbGwgZXhjaCAuZm9yY2VwdXQKKysgICAgICAgICAgNyBpbmRleCAyIGluZGV4IDMgLTEgcm9sbCBleGNoIHB1dAorICAgICAgICAgfSBmb3JhbGwKKyAgICAgICAgIHBvcCBwb3AgcG9wCisgICAgICAgfQorQEAgLTEzMTksNyArMTMxOSw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgICBleGNoIHBvcAorICAgICAgICAgICBUVEZERUJVRyB7IChcbjIgc2V0dGluZyBhbGlhczogKSBwcmludCAxIGluZGV4ID09b25seQorICAgICAgICAgICAgICAgICAgICAgICggdG8gdXNlIGdseXBoIGluZGV4OiApIHByaW50IGR1cCAvLz09IGV4ZWMgfSBpZgorLSAgICAgICAgICA1IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dAorKyAgICAgICAgICA1IGluZGV4IDMgMSByb2xsIHB1dAorICAgICAgICAgICAvL2ZhbHNlCisgICAgICAgICB9CisgICAgICAgICB7CitAQCAtMTMzNiw3ICsxMzM2LDcgQEAgY3VycmVudGRpY3QgLy5waWNrY21hcF93aXRoX25vX3hsYXRtYXAgLnVuZGVmCisgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgIENoYXJTdHJpbmdzKGRpY3QpIGlzdW5pY29kZShib29sZWFuKSBjbWFwKGRpY3QpIFJBR0woZGljdCkgZ25hbWUobmFtZSkgY29kZXAoaW50ZWdlcikgZ2luZGV4KGludGVnZXIpCisgICAgICAgICAgIFRURkRFQlVHIHsgKFwzIG5zZXR0aW5nIGFsaWFzOiApIHByaW50IDEgaW5kZXggPT1vbmx5CisgICAgICAgICAgICAgICAgICggdG8gYmUgaW5kZXg6ICkgcHJpbnQgZHVwIC8vPT0gZXhlYyB9IGlmCistICAgICAgICAgIGV4Y2ggcG9wIDUgaW5kZXggMyAxIHJvbGwgLmZvcmNlcHV0CisrICAgICAgICAgIGV4Y2ggcG9wIDUgaW5kZXggMyAxIHJvbGwgcHV0CisgICAgICAgICB9CisgICAgICAgICB7CisgICAgICAgICAgIHBvcCBwb3AKK0BAIC0xMzY2LDcgKzEzNjYsNyBAQCBjdXJyZW50ZGljdCAvLnBpY2tjbWFwX3dpdGhfbm9feGxhdG1hcCAudW5kZWYKKyAgICAgICB9IGlmZWxzZQorICAgICBdCisgICBUVEZERUJVRyB7IChFbmNvZGluZzogKSBwcmludCBkdXAgPT09IGZsdXNoIH0gaWYKKy19IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYJCSUgaGlkZXMgLmZvcmNlcHV0CisrfSAuYmluZCBvZGVmCisgCisgJSAtLS0tLS0tLS0tLS0tLS0tIENJREZvbnRUeXBlIDIgZm9udCBsb2FkaW5nIC0tLS0tLS0tLS0tLS0tLS0gJQorIAorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pY3JvYmxhemUvb2JqYXJjaC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplZWIvb2JqYXJjaC5oCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplL29iamFyY2guaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0bGUvb2JqYXJjaC5oIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0bGUvb2JqYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wb3dlcnBjNjRsZS9vYmphcmNoLmgKQEAgLTAsMCArMSw0MCBAQAorLyogUGFyYW1ldGVycyBkZXJpdmVkIGZyb20gbWFjaGluZSBhbmQgY29tcGlsZXIgYXJjaGl0ZWN0dXJlLiAqLworLyogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBtZWNoYW5pY2FsbHkgYnkgZ2VuYXJjaC5jLiAqLworCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gU2NhbGFyIGFsaWdubWVudHMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfQUxJR05fU0hPUlRfTU9EIDIKKyNkZWZpbmUgQVJDSF9BTElHTl9JTlRfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9MT05HX01PRCA4CisjZGVmaW5lIEFSQ0hfQUxJR05fUFRSX01PRCA4CisjZGVmaW5lIEFSQ0hfQUxJR05fRkxPQVRfTU9EIDQKKyNkZWZpbmUgQVJDSF9BTElHTl9ET1VCTEVfTU9EIDgKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBzaXplcyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9DSEFSIDAKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9TSE9SVCAxCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfSU5UIDIKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9MT05HIDMKKyNkZWZpbmUgQVJDSF9MT0cyX1NJWkVPRl9MT05HX0xPTkcgMworI2RlZmluZSBBUkNIX1NJWkVPRl9HWF9DT0xPUl9JTkRFWCA4CisjZGVmaW5lIEFSQ0hfU0laRU9GX1BUUiA4CisjZGVmaW5lIEFSQ0hfU0laRU9GX0ZMT0FUIDQKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfRE9VQkxFIDgKKyNkZWZpbmUgQVJDSF9GTE9BVF9NQU5USVNTQV9CSVRTIDI0CisjZGVmaW5lIEFSQ0hfRE9VQkxFX01BTlRJU1NBX0JJVFMgNTMKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFVuc2lnbmVkIG1heCB2YWx1ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTUFYX1VDSEFSICgodW5zaWduZWQgY2hhcikweGZmICsgKHVuc2lnbmVkIGNoYXIpMCkKKyNkZWZpbmUgQVJDSF9NQVhfVVNIT1JUICgodW5zaWduZWQgc2hvcnQpMHhmZmZmICsgKHVuc2lnbmVkIHNob3J0KTApCisjZGVmaW5lIEFSQ0hfTUFYX1VJTlQgKCh1bnNpZ25lZCBpbnQpfjAgKyAodW5zaWduZWQgaW50KTApCisjZGVmaW5lIEFSQ0hfTUFYX1VMT05HICgodW5zaWduZWQgbG9uZyl+MEwgKyAodW5zaWduZWQgbG9uZykwKQorCisJIC8qIC0tLS0tLS0tLS0tLS0tLS0gTWlzY2VsbGFuZW91cyAtLS0tLS0tLS0tLS0tLS0tICovCisKKyNkZWZpbmUgQVJDSF9JU19CSUdfRU5ESUFOIDAKKyNkZWZpbmUgQVJDSF9QVFJTX0FSRV9TSUdORUQgMAorI2RlZmluZSBBUkNIX0ZMT0FUU19BUkVfSUVFRSAxCisjZGVmaW5lIEFSQ0hfQVJJVEhfUlNISUZUIDIKKyNkZWZpbmUgQVJDSF9ESVZfTkVHX1BPU19UUlVOQ0FURVMgMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllMWYzZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAotYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCi1kb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCi1cCi1GdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCi1vbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKLWRvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgotCi1ERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MjcvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci1wLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODE3LTAwMDEucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDgxNy0wMDAyLnBhdGNoIFwKLSIKLQotU1JDX1VSSSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vYmphcmNoLmggXAotICAgICAgICAgICBmaWxlOi8vY3Vwcy1uby1nY3J5cHQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzM5OTBhNTA0YTNhMjNiOWJhYmU5ZGUwMGVkNjU5N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc2MGU4YmRkMDdhMDhkYmQ0NDUxODhhNjU1N2NiNzBlNjBjY2I2YTU2MDFmN2RiZmJhMGQyMjVlMjhjZTI4NSIKLQotIyBQdXQgc29tZXRoaW5nIGxpa2UKLSMKLSMgICBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1naG9zdHNjcmlwdCA9ICIgeDExIgotIwotIyBpbiBsb2NhbC5jb25mIHRvIGVuYWJsZSBidWlsZGluZyB3aXRoIFgxMS4gIEJlIGNhcmVmdWwuICBUaGUgb3JkZXIKLSMgb2YgdGhlIG92ZXJyaWRlcyBtYXR0ZXJzIQotIwotI1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIFwKLSAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteCwgdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4dCBndGsrM1wKLSAgICAgICAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtbGlicGFwZXIgLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCi0gICAgICAgICAgICAgICAgQ1VQU0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vY3Vwcy1jb25maWciIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2hvMzIgPSAiIC0td2l0aC1sYXJnZV9jb2xvcl9pbmRleD0wIgotCi0jIEV4cGxpY2l0eSBkaXNhYmxlIGxpYnRpZmYsIGZvbnRjb25maWcsCi0jIGZyZWV0eXBlLCBjdXBzIGZvciBnaG9zdHNjcmlwdC1uYXRpdmUKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmPW5vIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWpiaWcyZGVjIC0td2l0aG91dC1saWJwYXBlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKLQotIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MwotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgotQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgb2JqCi0JbWtkaXIgLXAgc29vYmoKLQlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KLQkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAotCWZpCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKLQlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgotCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCi0JCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbwotCQkJY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dob3N0c2NyaXB0LSR7UFZ9LyRpIG9iai9hdXgvJGkKLQkJZG9uZQotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L1Jlc291cmNlICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotICAgIGNwIC1yICR7U30vaWNjcHJvZmlsZXMgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBta2RpciAtcCBvYmoKLSAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KLSAgICAgICAgb2VfcnVubWFrZSBvYmovYXV4LyRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9Ci0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQotICAgIGRvbmUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLSMgZ2hvc3RzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydHMgImFyYyIKLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYXJjKS4qIgotCi0jIHNvbWUgZW50cmllcyBpbiBOVkQgdXNlcyBncGxfZ2hvc3RzY3JpcHQKLUNWRV9QUk9EVUNUID0gImdob3N0c2NyaXB0IGdwbF9naG9zdHNjcmlwdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuNTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjUwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YzMyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjUwLmJiCkBAIC0wLDAgKzEsMTI5IEBACitTVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAorYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCitkb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCitcCitGdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCitvbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKK2RvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgorCitERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitTUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5NTAvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9ta2Rpci1wLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwOTcwY2Y2MjJiZDViNDZmNjhlZWM5MzgzNzUzODcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmNTNlODlmZDY0NzgxNTgyOGZjNTE3MTYxM2U4NjBlODUzNWI2OGY3YWZiYzkxYmY4OWFlZTg4Njc2OWNlODkiCisKKyMgUHV0IHNvbWV0aGluZyBsaWtlCisjCisjICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKKyMKKyMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCisjIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKKyMKKyNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCisgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCisgICAgICAgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWxpYnBhcGVyIC0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAorICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKKworIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAorIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyAtLXdpdGhvdXQtbGlicGFwZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCisKKyMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKKyMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKKyMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKK0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKK0JVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wIG9iagorCW1rZGlyIC1wIHNvb2JqCisJaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCisJCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKKwlmaQorfQorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKwkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCisJaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KKwkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagorCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKwkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCisJCWRvbmUKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KKyAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworfQorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgbWtkaXIgLXAgb2JqCisgICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisgICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKKyAgICBkb25lCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIGdob3N0c2NyaXB0IGRvZXMgbm90IHN1cHBvcnRzICJhcmMiCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IWFyYykuKiIKKworIyBzb21lIGVudHJpZXMgaW4gTlZEIHVzZXMgZ3BsX2dob3N0c2NyaXB0CitDVkVfUFJPRFVDVCA9ICJnaG9zdHNjcmlwdCBncGxfZ2hvc3RzY3JpcHQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA0YTNlYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgZ3JlcCB1dGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvcHJvamVjdHMvZ3JlcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWdyZXAiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ncmVwL2dyZXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDVkMDcxOGExYjdjYzcwNmE0YmRmODExNTM2M2YxZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjk2MDU0MWM0OTk2MTllZmQ2YWZlMWZhNzk1NDAyZTQ3MzNjOGUxMWViZjlmYWZjY2MwYmI0YmNjZGM1YjUxNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9tNC9pbml0Lm00Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCi0JCXJtZGlyICR7RH0ke2JpbmRpcn0vCi0JZmkKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgotUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLWVuYWJsZS1wZXJsLXJlZ2V4cCwtLWRpc2FibGUtcGVybC1yZWdleHAsbGlicGNyZSIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKLQotZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzZkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy40LmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjExMWIxMTdkMjJkNmE3ZDA0OWQ2YWU3NTA1ZTljNGQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4ZTY3NTFjNDFhN2MyNWJmYzZlOTM2M2E0MTc4NmNmZjNiYTU3MDljZjExZDVhZDkwM2NmN2NjZTMxY2MzZmIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXNlZCAtaSAtZSAnMXMsIyFAU0hFTExALCMhL2Jpbi9zaCwnICR7U30vc3JjL2VncmVwLnNoCisJcm0gLWYgJHtTfS9tNC9pbml0Lm00Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCisJCXJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLWVuYWJsZS1wZXJsLXJlZ2V4cCwtLWRpc2FibGUtcGVybC1yZWdleHAsbGlicGNyZSIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJncmVwIGVncmVwIGZncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2dyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZWdyZXBdID0gIiR7YmFzZV9iaW5kaXJ9L2VncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9mZ3JlcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2ZpbGVzLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWxpdGxpYi1pZGVudGljYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9maWxlcy8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMDVkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9maWxlcy8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZTczOGY5MTg1YmE5MGYyMDgzYzg0NmFkZTM1NTEyMzRiYjVhN2NiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogU2F0LCA3IE1hciAyMDIwIDAwOjU5OjEzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbWFucGFnZXMgbXVsaXRsaWIgaWRlbnRpY2FsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGQxOGM0OWIuLjYxNzVmZTkgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC05MTcsNyArOTE3LDcgQEAgU1VGRklYRVMgKz0gLm1hbgorIAkgICAgIC1lICJzfFtAXU1EQVRFW0BdfGAkKFBFUkwpICQodG9wX3NyY2RpcikvbWRhdGUucGwgJDxgfGciIFwKKyAJICAgICAtZSAic3xbQF1PTERGT05URElSW0BdfGBlY2hvICQob2xkZm9udGRpcikgfCBzZWQgLWYgJChtYWtldmFyZXNjYXBlKWB8ZyIgXAorIAkgICAgIC1lICJzfFtAXVBERkRPQ0RJUltAXXxgZWNobyAkKHBkZmRvY2RpcikgfCBzZWQgLWYgJChtYWtldmFyZXNjYXBlKWB8ZyIgXAorLQkgICAgIC1lICJzfFtAXVNZU1RFTU1BQ1JPRElSW0BdfGBlY2hvICQoc3lzdGVtdG1hY2RpcikgfCBzZWQgLWYgJChtYWtldmFyZXNjYXBlKWB8ZyIgXAorKwkgICAgIC1lICJzfFtAXVNZU1RFTU1BQ1JPRElSW0BdfGBlY2hvICQoc3lzdGVtdG1hY2RpcikgfCBzZWQgLWUgJ3MsJChsaWJkaXIpLCQocHJlZml4KS9saWIqLCcgfCBzZWQgLWYgJChtYWtldmFyZXNjYXBlKWB8ZyIgXAorIAkgICAgIC1lICJzfFtAXVRNQUNfQU5fUFJFRklYW0BdfCQodG1hY19hbl9wcmVmaXgpfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX01fUFJFRklYW0BdfCQodG1hY19tX3ByZWZpeCl8ZyIgXAorIAkgICAgIC1lICJzfFtAXVRNQUNfTURJUltAXXwkKHRtYWNkaXIpL21tfGciIFwKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuNC5iYgppbmRleCAwODI1OTdmLi5lMzk4NDc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi40LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAJZmlsZTovL2dyb2ZmLW5vdC1zZWFyY2gtZm9udHMtb24tYnVpbGQtaG9zdC5wYXRjaCBcCiAJZmlsZTovLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoIFwKIAlmaWxlOi8vMDAwMS1JbmNsdWRlLWNvbmZpZy5oLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWxpdGxpYi1pZGVudGljYWwucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMDhmYjA0MzM1ZTJmNWU3M2YyM2VhNGMzYWRiZjBjNWYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCmluZGV4IDUwZGFkN2IuLjk3NzhlNjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCkBAIC0xMiw3ICsxMiw3IEBACiAKIFBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGd6aXAtcmVwbGFjZW1lbnQtbmF0aXZlIgogCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIHBlcmwtcHRlc3QgZ3JlcCBkaWZmdXRpbHMiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGdyZXAgZGlmZnV0aWxzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiCmluZGV4IDc4Mjk1YzUuLjBmYWYxOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci5iYgpAQCAtOCw3ICs4LDcgQEAKICMgbm9ybWFsIGxpbnV4IHV0aWxpdGllcyBub3QgYnVzeWJveCBvbmVzCiBJTUFHRV9JTlNUQUxMICs9ICJcCiAgICAgYmFzaCBjb3JldXRpbHMgdXRpbC1saW51eCB0YXIgZ3ppcCBiemlwMiBrbW9kIFwKLSAgICBweXRob24tbW9kdWxlcyBweXRob24tbWlzYyBcCisgICAgcHl0aG9uMy1tb2R1bGVzIHB5dGhvbjMtbWlzYyBcCiAgICAgZTJmc3Byb2dzIGUyZnNwcm9ncy1ta2UyZnMgcGFydGVkIFwKICAgICAiCiAjIHdlIG5lZWQgYSBwYXJ0aWN1bGFyIGluaXRyYW1mcyBmb3IgbGl2ZSBpbWFnZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5ydWxlcyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5ydWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnJ1bGVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMDU5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUlQdjYgUGFja2V0IEZpbHRlcmluZyBGcmFtZXdvcmsKK0JlZm9yZT1uZXR3b3JrLXByZS50YXJnZXQKK1dhbnRzPW5ldHdvcmstcHJlLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9b25lc2hvdAorRXhlY1N0YXJ0PUBTQklORElSQC9pcDZ0YWJsZXMtcmVzdG9yZSAtdyAtLSBAUlVMRVNESVJAL2lwNnRhYmxlcy5ydWxlcworRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXA2dGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcDZ0YWJsZXMucnVsZXMKK1JlbWFpbkFmdGVyRXhpdD15ZXMKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXB0YWJsZXMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UKaW5kZXggMDQxMzE2ZS4uMGViM2MzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXB0YWJsZXMuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcHRhYmxlcy5zZXJ2aWNlCkBAIC0xLDEyICsxLDEyIEBACiBbVW5pdF0KLURlc2NyaXB0aW9uPVBhY2tldCBGaWx0ZXJpbmcgRnJhbWV3b3JrCitEZXNjcmlwdGlvbj1JUHY0IFBhY2tldCBGaWx0ZXJpbmcgRnJhbWV3b3JrCiBCZWZvcmU9bmV0d29yay1wcmUudGFyZ2V0CiBXYW50cz1uZXR3b3JrLXByZS50YXJnZXQKIAogW1NlcnZpY2VdCiBUeXBlPW9uZXNob3QKLUV4ZWNTdGFydD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAvZXRjL2lwdGFibGVzL2lwdGFibGVzLnJ1bGVzCi1FeGVjUmVsb2FkPUBTQklORElSQC9pcHRhYmxlcy1yZXN0b3JlIC9ldGMvaXB0YWJsZXMvaXB0YWJsZXMucnVsZXMKK0V4ZWNTdGFydD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAtdyAtLSBAUlVMRVNESVJAL2lwdGFibGVzLnJ1bGVzCitFeGVjUmVsb2FkPUBTQklORElSQC9pcHRhYmxlcy1yZXN0b3JlIC13IC0tIEBSVUxFU0RJUkAvaXB0YWJsZXMucnVsZXMKIFJlbWFpbkFmdGVyRXhpdD15ZXMKIAogW0luc3RhbGxdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjlmY2IxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCi1maWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMvaXB0YWJsZXMuYztiZWdpbmxpbmU9MTM7ZW5kbGluZT0yNTttZDU9YzVjZmZkMDk5NzQ1NThjZjI3ZDBmNzYzZGYyYTEyZGMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1vbmx5LWNoZWNrLWNvbm50cmFjay13aGVuLWxpYm5mbmV0bGluay1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMucnVsZXMgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjlkZTcxMWQxNWMwNDBjNDAyY2YzMDM4YzY5ZmY1MTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTIzY2FjMDM0MTgxMjA2YjQ1NDVmNGU3ZTczMGU3NmUwOGI1ZjNkZDc4NzcxYmE5NjQ1YTY3NTZkZTljZGQ4MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLSMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKLVBBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLQotIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCi1QQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcwotCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgotCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Ci19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LW1vZHVsZS0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgbW9kdWxlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsICcke2xpYmRpcn0veHRhYmxlcycsIHInbGliKC4qKVwuc28kJywgJyR7UE59LW1vZHVsZS0lcycsICcke1BOfSBtb2R1bGUgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotICAgIGlmIG1vZHVsZXM6Ci0gICAgICAgIG1ldGFwa2cgPSBkLmdldFZhcignUE4nKSArICctbW9kdWxlcycKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcgKyAnICcuam9pbihtb2R1bGVzKSkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHRhYmxlcyIKLQotIyBJbmNsdWRlIHRoZSBzeW1saW5rcyBhcyB3ZWxsIGluIHJlc3BlY3RpdmUgcGFja2FnZXMKLUZJTEVTXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgKz0gIiR7bGliZGlyfS94dGFibGVzL2xpYnh0X3N0YXRlLnNvIgotRklMRVNfJHtQTn0tbW9kdWxlLXh0LWN0ICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9OT1RSQUNLLnNvIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1tb2R1bGUteHQtY29ubnRyYWNrID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LW1vZHVsZS14dC1jdCA9ICJkZXYtc28iCi0KLUFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pcHRhYmxlcwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcHRhYmxlcy5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS9pcHRhYmxlcwotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2lwdGFibGVzLnNlcnZpY2UKLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImlwdGFibGVzLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LW1vZHVsZS14dC1zdGFuZGFyZCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gIiBcCi0gICAgJHtQTn0tbW9kdWxlcyBcCi0gICAga2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCi0gICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAotICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAotICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAotICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCi0gICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMTM4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguNC5iYgpAQCAtMCwwICsxLDEwOCBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcga2VybmVsIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiaXB0YWJsZXMgaXMgdGhlIHVzZXJzcGFjZSBjb21tYW5kIGxpbmUgcHJvZ3JhbSB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCBuZXR3b3JrIHBhY2tldCBcCitmaWx0ZXJpbmcgY29kZSBpbiBMaW51eC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubmV0ZmlsdGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtbGlibmZuZXRsaW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLW9ubHktY2hlY2stY29ubnRyYWNrLXdoZW4tbGlibmZuZXRsaW5rLWVuYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9pcDZ0YWJsZXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pcDZ0YWJsZXMucnVsZXMgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjliMjAxMTA3OTU3ZmJmNjI3MDljM2Q4MjI2MjM5YjBkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5M2EzYTU0OTBhNTQ0YzJjYmYyZWYxNWNmN2U3ZWQyMWFmMTg0NWJhZjIyODMxOGQ1YzM2ZWY4ODI3ZTE1N2MiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJcCisgICAgaXB0YWJsZXMuc2VydmljZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaXB2NicsICdpcDZ0YWJsZXMuc2VydmljZScsICcnLCBkKX0gXAorIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWtlcm5lbD0ke1NUQUdJTkdfSU5DRElSfSIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKKyMgbGlibmZuZXRsaW5rIHJlY2lwZSBpcyBpbiBtZXRhLW5ldHdvcmtpbmcgbGF5ZXIKK1BBQ0tBR0VDT05GSUdbbGlibmZuZXRsaW5rXSA9ICItLWVuYWJsZS1saWJuZm5ldGxpbmssLS1kaXNhYmxlLWxpYm5mbmV0bGluayxsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKKworIyBsaWJuZnRubCByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyKHByZXZpb3VzbHkga25vd24gYXMgbGlibmZ0YWJsZXMpCitQQUNLQUdFQ09ORklHW2xpYm5mdG5sXSA9ICItLWVuYWJsZS1uZnRhYmxlcywtLWRpc2FibGUtbmZ0YWJsZXMsbGlibmZ0bmwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgUmVtb3ZlIHNvbWUgbGlidG9vbCBtNCBmaWxlcworICAgICMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgorICAgIHJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00Cit9CisKK0lQVEFCTEVTX1JVTEVTX0RJUiA/PSAiJHtzeXNjb25mZGlyfS8ke0JQTn0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7SVBUQUJMRVNfUlVMRVNfRElSfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lwdGFibGVzLnJ1bGVzICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcHRhYmxlcy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisKKyAgICBzZWQgLWkgXAorICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBSVUxFU0RJUkAsJHtJUFRBQkxFU19SVUxFU19ESVJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXB0YWJsZXMuc2VydmljZQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaXB2NicsICd0cnVlJywgJ2ZhbHNlJywgZCl9IDsgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcDZ0YWJsZXMucnVsZXMgJHtEfSR7SVBUQUJMRVNfUlVMRVNfRElSfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcDZ0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICAgICAtZSAncyxAUlVMRVNESVJALCR7SVBUQUJMRVNfUlVMRVNfRElSfSxnJyBcCisgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcDZ0YWJsZXMuc2VydmljZQorICAgIGZpCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgbW9kdWxlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsICcke2xpYmRpcn0veHRhYmxlcycsIHInbGliKC4qKVwuc28kJywgJyR7UE59LW1vZHVsZS0lcycsICcke1BOfSBtb2R1bGUgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorICAgIGlmIG1vZHVsZXM6CisgICAgICAgIG1ldGFwa2cgPSBkLmdldFZhcignUE4nKSArICctbW9kdWxlcycKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcgKyAnICcuam9pbihtb2R1bGVzKSkKK30KKworUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tbW9kdWxlLXh0LXN0YW5kYXJkIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BOfS1tb2R1bGVzIFwKKyAgICBrZXJuZWwtbW9kdWxlLXgtdGFibGVzIFwKKyAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLWZpbHRlciBcCisgICAga2VybmVsLW1vZHVsZS1pcHRhYmxlLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCisgICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2sgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKKyAgICBrZXJuZWwtbW9kdWxlLWlwdC1tYXNxdWVyYWRlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpcHY2JywgJ1wKKyAgICAgICAga2VybmVsLW1vZHVsZS1pcDZ0YWJsZS1maWx0ZXIgXAorICAgICAgICBrZXJuZWwtbW9kdWxlLWlwNi10YWJsZXMgXAorICAgICcsICcnLCBkKX0gXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94dGFibGVzIgorCisjIEluY2x1ZGUgdGhlIHN5bWxpbmtzIGFzIHdlbGwgaW4gcmVzcGVjdGl2ZSBwYWNrYWdlcworRklMRVNfJHtQTn0tbW9kdWxlLXh0LWNvbm50cmFjayArPSAiJHtsaWJkaXJ9L3h0YWJsZXMvbGlieHRfc3RhdGUuc28iCitGSUxFU18ke1BOfS1tb2R1bGUteHQtY3QgKz0gIiR7bGliZGlyfS94dGFibGVzL2xpYnh0X05PVFJBQ0suc28iCisKK0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKKworSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWNvbm50cmFjayA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1tb2R1bGUteHQtY3QgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWNoYW5nZS12YXJpYWJsZS1uYW1lLXRvLWF2b2lkLWNvbGxpZGluZy13aXRoLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwNmEwYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSBhYjFhYTJlYjAwOTdhN2VmMDVmZmNjYWMwNThiMDY4MTJkZWIyNjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2FtaSBLZXJvbGEgPGtlcm9sYXNhQGlraS5maT4KK0RhdGU6IFNhdCwgMjggRGVjIDIwMTkgMTc6MTY6MjcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbmluZm9kOiBjaGFuZ2UgdmFyaWFibGUgbmFtZSB0byBhdm9pZCBjb2xsaWRpbmcgd2l0aCBmdW5jdGlvbgorIG5hbWUKKworVGhlIHN5cy9jYXBhYmlsaXR5LmggaGVhZGVyIGhhcyAnZXh0ZXJuIGludCBjYXBfc2V0dWlkKHVpZF90IHVpZCk7JworZnVuY3Rpb24gcHJvdG90eXBlLgorCitBZGRyZXNzZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMvaXNzdWVzLzI0NgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzL2NvbW1pdC8xOGY5YTg0ZTBlNzAyODQxZDZjYzRkNWY1OTNkZTRmYmQxMzQ4ZTgzXQorU2lnbmVkLW9mZi1ieTogU2FtaSBLZXJvbGEgPGtlcm9sYXNhQGlraS5maT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbmluZm9kL25pbmZvZC5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uaW5mb2QvbmluZm9kLmMgYi9uaW5mb2QvbmluZm9kLmMKK2luZGV4IGJhZGJmODAuLjI4ZjAzYWYgMTAwNjQ0CistLS0gYS9uaW5mb2QvbmluZm9kLmMKKysrKyBiL25pbmZvZC9uaW5mb2QuYworQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgdm9pZCBkb19kYWVtb25pemUodm9pZCkKKyAvKiAtLS0tLS0tLS0gKi8KKyAjaWZkZWYgSEFWRV9MSUJDQVAKKyBzdGF0aWMgY29uc3QgY2FwX3ZhbHVlX3QgY2FwX25ldF9yYXcgPSBDQVBfTkVUX1JBVzsKKy1zdGF0aWMgY29uc3QgY2FwX3ZhbHVlX3QgY2FwX3NldHVpZCA9ICBDQVBfU0VUVUlEOyAKKytzdGF0aWMgY29uc3QgY2FwX3ZhbHVlX3QgY2FwX3NldHVzZXJpZCA9IENBUF9TRVRVSUQ7Cisgc3RhdGljIGNhcF9mbGFnX3ZhbHVlX3QgY2FwX29rOworICNlbHNlCisgc3RhdGljIHVpZF90IGV1aWQ7CitAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0YXRpYyB2b2lkIGxpbWl0X2NhcGFiaWxpdGllcyh2b2lkKQorIAorIAljYXBfZ2V0X2ZsYWcoY2FwX2N1cl9wLCBDQVBfU0VUVUlELCBDQVBfUEVSTUlUVEVELCAmY2FwX29rKTsKKyAJaWYgKGNhcF9vayAhPSBDQVBfQ0xFQVIpCistCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dWlkLCBDQVBfU0VUKTsKKysJCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX1BFUk1JVFRFRCwgMSwgJmNhcF9zZXR1c2VyaWQsIENBUF9TRVQpOworIAorIAlpZiAoY2FwX3NldF9wcm9jKGNhcF9wKSA8IDApIHsKKyAJCURFQlVHKExPR19FUlIsICJjYXBfc2V0X3Byb2M6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworQEAgLTUxOSw4ICs1MTksOCBAQCBzdGF0aWMgdm9pZCBkcm9wX2NhcGFiaWxpdGllcyh2b2lkKQorIAorIAkvKiBzZXR1aWQgLyBzZXR1aWQgKi8KKyAJaWYgKGNhcF9vayAhPSBDQVBfQ0xFQVIpIHsKKy0JCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX1BFUk1JVFRFRCwgMSwgJmNhcF9zZXR1aWQsIENBUF9TRVQpOworLQkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfRUZGRUNUSVZFLCAxLCAmY2FwX3NldHVpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKysJCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX0VGRkVDVElWRSwgMSwgJmNhcF9zZXR1c2VyaWQsIENBUF9TRVQpOworIAorIAkJaWYgKGNhcF9zZXRfcHJvYyhjYXBfcCkgPCAwKSB7CisgCQkJREVCVUcoTE9HX0VSUiwgImNhcF9zZXRfcHJvYzogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhM2Y1NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1maXgtc3lzdGVtZC1Eb2N1bWVudGF0aW9uLXVybC1lcnJvci5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGMxZjE1MjdlYjMwZDRhNWZlZWJmOWEwNzU3NTgyYmJmN2ZlM2VhZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgU3RldmFuYXRvIDxhbmRyZWEuc3RldmFuYXRvLjk1QGhvdG1haWwuaXQ+CitEYXRlOiBUdWUsIDUgTm92IDIwMTkgMTk6MDg6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbmluZm9kOiBmaXggc3lzdGVtZCBEb2N1bWVudGF0aW9uIHVybCBlcnJvcgorCitzeXN0ZW1kWzFdOiAvdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbS9uaW5mb2Quc2VydmljZTozOiBJbnZhbGlkIFVSTCwgaWdub3Jpbmc6IG5pbmZvZCg4KQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzL2NvbW1pdC9jMWYxNTI3ZWIzMGQ0YTVmZWViZjlhMDc1NzU4MmJiZjdmZTNlYWU5XQorU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3lzdGVtZC9uaW5mb2Quc2VydmljZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4gYi9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCitpbmRleCA1YWI2OWNhMDBlOTYuLjhlNzlmY2Q5MjM4ZSAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4KKysrKyBiL3N5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4KK0BAIC0xLDYgKzEsNiBAQAorIFtVbml0XQorIERlc2NyaXB0aW9uPVJlc3BvbmQgdG8gSVB2NiBOb2RlIEluZm9ybWF0aW9uIFF1ZXJpZXMKKy1Eb2N1bWVudGF0aW9uPW5pbmZvZCg4KQorK0RvY3VtZW50YXRpb249bWFuOm5pbmZvZCg4KQorIFJlcXVpcmVzPW5ldHdvcmsudGFyZ2V0CisgQWZ0ZXI9bmV0d29yay50YXJnZXQKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtcmFycGQtcmRpc2MtRHJvcC1Qcml2YXRlVXNlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDczNjdjYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNmU1MWQ1Mjk5ODhjZmMwYmIzNTc3NTFmZDc2N2U5ZjE0NzhlMmI4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgRmViIDIwMjAgMDY6MDg6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmFycGQ6IHJkaXNjOiBEcm9wIFByaXZhdGVVc2VycworCitOZWl0aGVyIHJhcnBkIG5vciByZGlzYyBjYW4gZ2FpbiB0aGUgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyB3aXRoCitQcml2YXRlVXNlcnMgZW5hYmxlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CistLS0KKyBzeXN0ZW1kL3JhcnBkLnNlcnZpY2UuaW4gfCAxIC0KKyBzeXN0ZW1kL3JkaXNjLnNlcnZpY2UuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluCitpbmRleCBlNjAwYzEwYzkzZTYuLmY1ZDc2MjFhN2NlOCAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluCitAQCAtMTIsNyArMTIsNiBAQCBBbWJpZW50Q2FwYWJpbGl0aWVzPUNBUF9ORVRfUkFXCisgRHluYW1pY1VzZXI9eWVzCisgUHJpdmF0ZVRtcD15ZXMKKyBQcml2YXRlRGV2aWNlcz15ZXMKKy1Qcml2YXRlVXNlcnM9eWVzCisgUHJvdGVjdFN5c3RlbT1zdHJpY3QKKyBQcm90ZWN0SG9tZT15ZXMKKyBQcm90ZWN0Q29udHJvbEdyb3Vwcz15ZXMKK2RpZmYgLS1naXQgYS9zeXN0ZW1kL3JkaXNjLnNlcnZpY2UuaW4gYi9zeXN0ZW1kL3JkaXNjLnNlcnZpY2UuaW4KK2luZGV4IDRlMmExZWM5ZDBlNS4uYTcxYjg3ZDM2YjM3IDEwMDY0NAorLS0tIGEvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCisrKysgYi9zeXN0ZW1kL3JkaXNjLnNlcnZpY2UuaW4KK0BAIC04LDkgKzgsMTAgQEAgQWZ0ZXI9bmV0d29yay50YXJnZXQKKyBFbnZpcm9ubWVudEZpbGU9LS9ldGMvc3lzY29uZmlnL3JkaXNjCisgRXhlY1N0YXJ0PUBzYmluZGlyQC9yZGlzYyAtZiAtdCAkT1BUSU9OUyAkU0VORF9BRERSRVNTICRSRUNFSVZFX0FERFJFU1MKKyAKKytDYXBhYmlsaXR5Qm91bmRpbmdTZXQ9Q0FQX05FVF9SQVcKKyBBbWJpZW50Q2FwYWJpbGl0aWVzPUNBUF9ORVRfUkFXCisgUHJpdmF0ZVRtcD15ZXMKKy1Qcml2YXRlVXNlcnM9eWVzCisrRHluYW1pY1VzZXI9eWVzCisgUHJvdGVjdFN5c3RlbT1zdHJpY3QKKyBQcm90ZWN0SG9tZT15ZXMKKyBQcm90ZWN0Q29udHJvbEdyb3Vwcz15ZXMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiCmluZGV4IDNmOWU5OTEuLjJhZWQ2YjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgpAQCAtMTAsNyArMTAsMTEgQEAKIAogREVQRU5EUyA9ICJnbnV0bHMiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmluZm9kLWNoYW5nZS12YXJpYWJsZS1uYW1lLXRvLWF2b2lkLWNvbGxpZGluZy13aXRoLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pbmZvZC1maXgtc3lzdGVtZC1Eb2N1bWVudGF0aW9uLXVybC1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDUkVWID0gIjEzZTAwODQ3MTc2YWEyMzY4M2Q2OGZjZTFkMTdmZmI1MjM1MTA5NDYiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC0yMSwzMCArMjUsMzUgQEAKICMgYnJlYWtzIHRoZSB2ZXJzaW9uIG9yZGVyLgogQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMDAtMTIxMyBDVkUtMjAwMC0xMjE0IgogCi1QQUNLQUdFQ09ORklHID8/PSAibGliY2FwIGxpYmdjcnlwdCByYXJwZCB0cmFjZXJvdXRlNiIKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJjYXAgbGliZ2NyeXB0IHJhcnBkIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnbmluZm9kIHRyYWNlcm91dGU2JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKIFBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItRFVTRV9DQVA9dHJ1ZSwgLURVU0VfQ0FQPWZhbHNlLCBsaWJjYXAiCiBQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLURVU0VfQ1JZUFRPPWdjcnlwdCwgLURVU0VfQ1JZUFRPPW5vbmUsIGxpYmdjcnlwdCIKIFBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRFVTRV9JRE49dHJ1ZSwgLURVU0VfSUROPWZhbHNlLCBsaWJpZG4yIgogUEFDS0FHRUNPTkZJR1tnZXR0ZXh0XSA9ICItRFVTRV9HRVRURVhUPXRydWUsIC1EVVNFX0dFVFRFWFQ9ZmFsc2UsIGdldHRleHQiCitQQUNLQUdFQ09ORklHW25pbmZvZF0gPSAiLURCVUlMRF9OSU5GT0Q9dHJ1ZSwtREJVSUxEX05JTkZPRD1mYWxzZSwiCiBQQUNLQUdFQ09ORklHW3JhcnBkXSA9ICItREJVSUxEX1JBUlBEPXRydWUsLURCVUlMRF9SQVJQRD1mYWxzZSwiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZHVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSwsc3lzdGVtZCIKIFBBQ0tBR0VDT05GSUdbdHJhY2Vyb3V0ZTZdID0gIi1EQlVJTERfVFJBQ0VST1VURTY9dHJ1ZSwtREJVSUxEX1RSQUNFUk9VVEU2PWZhbHNlLCIKIFBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLURCVUlMRF9IVE1MX01BTlM9dHJ1ZSAtREJVSUxEX01BTlM9dHJ1ZSwtREJVSUxEX0hUTUxfTUFOUz1mYWxzZSAtREJVSUxEX01BTlM9ZmFsc2UsIGxpYnhzbHQiCiAKLWluaGVyaXQgbWVzb24gdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBtZXNvbiBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotRVhUUkFfT0VNRVNPTiArPSAiLS1wcmVmaXg9JHtyb290X3ByZWZpeH0vIgorIyBIYXZlIHRvIGRpc2FibGUgc2V0Y2FwL3N1aWQgYXMgaXRzIG5vdCBkZXRlcm1pbmlzdGljCitFWFRSQV9PRU1FU09OICs9ICItLXByZWZpeD0ke3Jvb3RfcHJlZml4fS8gLUROT19TRVRDQVBfT1JfU1VJRD10cnVlIgogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiAKIEFMVEVSTkFUSVZFXyR7UE59LXBpbmcgPSAicGluZyIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtwaW5nXSA9ICIke2Jhc2VfYmluZGlyfS9waW5nIgogCi1TUExJVFBLR1MgPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiAke1BOfS10ZnRwZCAke1BOfS1yYXJwZCAke1BOfS1yZGlzYyAke1BOfS1uaW5mb2QiCitTUExJVFBLR1MgPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LWNsb2NrZGlmZiAke1BOfS10ZnRwZCAke1BOfS1yZGlzYyBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmFycGQnLCAnJHtQTn0tcmFycGQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tbmluZm9kJywgJycsIGQpfSIKIFBBQ0tBR0VTICs9ICIke1NQTElUUEtHU30iCiAKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1yYXJwZCA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tdHJhY2Vyb3V0ZTYgPSAiMSIKIFJERVBFTkRTXyR7UE59ICs9ICIke1NQTElUUEtHU30iCiAKIEZJTEVTXyR7UE59ID0gIiIKQEAgLTU0LDYgKzYzLDExIEBACiBGSUxFU18ke1BOfS10cmFjZXJvdXRlNgk9ICIke2Jhc2VfYmluZGlyfS90cmFjZXJvdXRlNiIKIEZJTEVTXyR7UE59LWNsb2NrZGlmZiA9ICIke2Jhc2VfYmluZGlyfS9jbG9ja2RpZmYiCiBGSUxFU18ke1BOfS10ZnRwZCA9ICIke2Jhc2VfYmluZGlyfS90ZnRwZCIKLUZJTEVTXyR7UE59LXJhcnBkID0gIiR7YmFzZV9zYmluZGlyfS9yYXJwZCIKK0ZJTEVTXyR7UE59LXJhcnBkID0gIiR7YmFzZV9zYmluZGlyfS9yYXJwZCAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yYXJwZEAuc2VydmljZSIKIEZJTEVTXyR7UE59LXJkaXNjID0gIiR7YmFzZV9zYmluZGlyfS9yZGlzYyIKIEZJTEVTXyR7UE59LW5pbmZvZCA9ICIke2Jhc2Vfc2JpbmRpcn0vbmluZm9kICR7c3lzY29uZmRpcn0vaW5pdC5kL25pbmZvZC5zaCIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAnJHtQTn0tbmluZm9kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LXJkaXNjIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LW5pbmZvZCA9ICJuaW5mb2Quc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1yZGlzYyA9ICJyZGlzYy5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzBkNWUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKLURFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlMDFmNWUwMmIxZjBjYzkzNGQ1OTNhN2IwZGRjZWI2IgotCi1ERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCi0KLVBBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIHh6IGx6byIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLQlsaWJ4bWwyIFwKLQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi1ERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCi1QQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHosIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKLVBBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgotUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwNDYzOTYyNTViZDdjZjZkMGY2NjAzYTliZGEzOWFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2NDNkNTBlZDQwYzc1OWY1NDEyYTNhZjRlMzUzY2ZmYmNlNGZkZjNiNWNmMzIxY2I3MmNhY2YwNmIyZDgyNWUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUNQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCi0KLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KLQkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKLQljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCi19Ci0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgotCi1QQUNLQUdFUyA9KyAiYnNkdGFyIgotRklMRVNfYnNkdGFyID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLUFMVEVSTkFUSVZFX2JzZHRhciA9ICJ0YXIiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbdGFyXSA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1QQUNLQUdFUyA9KyAiYnNkY3BpbyIKLUZJTEVTX2JzZGNwaW8gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUFMVEVSTkFUSVZFX2JzZGNwaW8gPSAiY3BpbyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgotQUxURVJOQVRJVkVfVEFSR0VUW2NwaW9dID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFiNDBmYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMi5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCitERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZTAxZjVlMDJiMWYwY2M5MzRkNTkzYTdiMGRkY2ViNiIKKworREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgorCitQQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiB4eiBsem8iCisKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisJbGlieG1sMiBcCisJJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKKyIKKworREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgorUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6LCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgorUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCitQQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKK1BBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHMsLS13aXRob3V0LW1iZWR0bHMsbWJlZHRscywiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGFyZ2VmaWxlIgorCitTUkNfVVJJID0gImh0dHA6Ly9saWJhcmNoaXZlLm9yZy9kb3dubG9hZHMvbGliYXJjaGl2ZS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOTUzZWQ2YjQ3Njk0ZGFkZjBlNjA0MmY4ZjlmZjQ1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjBkNThkMTI2MzJlY2YxZThmYWQ3MzE2ZGM4MmM2Yjk3MzhhMzU2MjU3NDZiNDdlY2RjYWY0YWVkMTc2MTc2IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZworCitDUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCisJIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0CisJY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLworfQorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKKworUEFDS0FHRVMgPSsgImJzZHRhciIKK0ZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitBTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgorQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworUEFDS0FHRVMgPSsgImJzZGNwaW8iCitGSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitBTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFkYzdkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi1Gcm9tIDgyZjk4ZGNiYzQyOWJiZTg5YTk4MzdjNTMzY2JjYmMwMmU3N2M3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1EYXRlOiBUdWUsIDI4IEp1biAyMDE2IDEyOjQzOjMxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlkbjogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzogSW4gZnVuY3Rpb24gJ21haW4nOgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTcyOjc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotfCAgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE4Nzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotfCAgICAgIF5+fn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIwMjo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKLXwgICAgIF5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMjA6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyNDU6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyODE6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzY0OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0NDI6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0OTg6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjUyNzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLXwgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU1MTo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9pZG4uYyB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYwotaW5kZXggYmUxYzdkMS4uNjhlNDI5MSAxMDA2NDQKLS0tLSBhL3NyYy9pZG4uYwotKysrIGIvc3JjL2lkbi5jCi1AQCAtMTcwLDcgKzE3MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgKGFyZ3NfaW5mby5pZG5hX3RvX3VuaWNvZGVfZ2l2ZW4gPyAxIDogMCkgKwotICAgICAgIChhcmdzX2luZm8ubmZrY19naXZlbiA/IDEgOiAwKSAhPSAxKQotICAgICB7Ci0tICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotKyAgICAgIGVycm9yICgwLCAwLCAiJXMiLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKLSAgICAgICB1c2FnZSAoRVhJVF9GQUlMVVJFKTsKLSAgICAgfQotIAotQEAgLTE4NSw3ICsxODUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgaWYgKCFhcmdzX2luZm8ucXVpZXRfZ2l2ZW4KLSAgICAgICAmJiBhcmdzX2luZm8uaW5wdXRzX251bSA9PSAwCi0gICAgICAgJiYgaXNhdHR5IChmaWxlbm8gKHN0ZGluKSkpCi0tICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCi0rICAgIGZwcmludGYgKHN0ZGVyciwgIiVzIiwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCi0gCQkgICAgICAgInRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lIGNoYXJhY3Rlci5cbiIpKTsKLSAKLSAgIGRvCi1AQCAtMTk3LDcgKzE5Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgaWYgKGZlb2YgKHN0ZGluKSkKLSAJICAgIGJyZWFrOwotIAotLQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKLSsJICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgXygiaW5wdXQgZXJyb3IiKSk7Ci0gCX0KLSAKLSAgICAgICBpZiAoc3RybGVuIChsaW5lKSA+IDApCi1AQCAtMjE1LDcgKzIxNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgaWYgKCFxKQotIAkgICAgewotIAkgICAgICBmcmVlIChwKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJICAgIH0KLSAKLUBAIC0yNDAsNyArMjQwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCi0gCSAgICB7Ci0gCSAgICAgIGZyZWUgKHIpOwotLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAkgICAgfQotIAotQEAgLTI3Nyw3ICsyNzcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsICZsZW4pOwotIAkgIGZyZWUgKHApOwotIAkgIGlmICghcSkKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAKLSAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQotQEAgLTMzNiw3ICszMzYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOwotIAkgIGZyZWUgKHEpOwotIAkgIGlmICghcikKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLSAKLSAJICBwID0gc3RyaW5ncHJlcF91dGY4X3RvX2xvY2FsZSAocik7Ci1AQCAtMzYwLDcgKzM2MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgTlVMTCk7Ci0gCSAgZnJlZSAocCk7Ci0gCSAgaWYgKCFxKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotIAotIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCi1AQCAtNDM4LDcgKzQzOCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgaWYgKCFxKQotIAkgICAgewotIAkgICAgICBmcmVlIChwKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLSAJICAgIH0KLSAKLUBAIC00OTQsNyArNDk0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKLSAJICBmcmVlIChxKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci0gCi0gCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOwotQEAgLTUyMyw3ICs1MjMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgICAgICBpZiAoIXEpCi0gCQl7Ci0gCQkgIGZyZWUgKHApOwotLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAkJfQotIAotQEAgLTUzNyw3ICs1MzcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHIgPSBzdHJpbmdwcmVwX3V0ZjhfbmZrY19ub3JtYWxpemUgKHAsIC0xKTsKLSAJICBmcmVlIChwKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSsJCSAgIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7Ci0gCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLSAJICAgIHsKLUBAIC01NDcsNyArNTQ4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChyKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNiZDIzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gY2RkOWUyZTk2MGVlYjRlZGE3YjA4ZjAxMTNkMGNkMDM1MjRjMWQ0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDEwIEp1bCAyMDEyIDAyOjQ0OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmlkbjogZml4IGJ1aWxkIHdpdGggYXV0b21ha2UgMS4xMgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotYXV0b21ha2UgMS4xMi54IGhhcyBkZXByZWNhdGVkIEFNX1BST0dfTUtESVJfUCAsIGFuZCB0aHJvd3MgYSB3YXJuaW5nIGZvciB0aGF0LAotYW5kIHRoZSB3YXJuaW5ncyBhcmUgdHJlYXRlZCBhcyBlcnJvcnMgYmVjYXVzZSBvZiB0aGUgLVdlcnJvciBwYXJhbWV0ZXIuCi0KLVRoZXNlIEFNX1BST0dfTUtESVJfUCBhcmUgY29taW5nIGZyb20gZ2V0dGV4dCwgYW5kIHRoZSBsYXRlc3QgZ2V0dGV4dCBjb2RlIGhhcyBub3QKLWVsaW1pbmF0ZWQgdGhlc2UgZGVwcmVjYXRlZCBtYWNyb3MgeWV0LiBTbyBkaXNhYmxlIHRoZSB0cmVhdG1lbnQgb2Ygd2FybmluZ3MKLWFzIGVycm9ycyB1bnRpbCBnZXR0ZXh0IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1hY3Jvcy4KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDcvMTAKLQotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyNjFkYWQyLi5jNGY5MzVlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW0dOVSBMaWJpZG5dLCBbMS4zNF0sIFtidWctbGliaWRuQGdudS5vcmddKQotIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQotIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKLSBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKLS1BTV9JTklUX0FVVE9NQUtFKFsxLjEwIC1XYWxsIC1XZXJyb3IgLVduby1vdmVycmlkZV0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCAtV25vLW92ZXJyaWRlXSkKLSBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQotIAotICMgTGlicmFyeSBjb2RlIG1vZGlmaWVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVklTSU9OKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODYzNTMwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KLQotU2lnbmVkLW9mZi1ieTogTWFya28gTGluZHF2aXN0IDxjYXpmaTc0QGdtYWlsLmNvbT4KLWRpZmYgLU51cmRkIGxpYmlkbi0xLjI2L2RvYy9NYWtlZmlsZS5hbSBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0KLS0tLSBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0JMjAxMi0wOS0xOCAxMToyNTo0NS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBsaWJpZG4tMS4yNi9kb2MvTWFrZWZpbGUuYW0JMjAxMy0wMi0wOCAwNzo0MToyNC41OTE0MzE0NjIgKzAyMDAKLUBAIC00OSwxNSArNDksOSBAQAotCi0gIyBNYW4gcGFnZXMuCi0KLS1kaXN0X21hbl9NQU5TID0gaWRuLjEgJChnZG9jX01BTlMpCi0rZGlzdF9tYW5fTUFOUyA9ICQoZ2RvY19NQU5TKQotIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gJChkaXN0X21hbl9NQU5TKQotCi0taWRuLjE6ICQodG9wX3NyY2Rpcikvc3JjL2lkbi5jICQodG9wX3NyY2Rpcikvc3JjL2lkbi5nZ28gXAotLQkJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKLS0JJChIRUxQMk1BTikgXAotLQkJLS1uYW1lPSJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgY29tbWFuZCBsaW5lIHRvb2wiIFwKLS0JCS0tb3V0cHV0PSRAICQodG9wX2J1aWxkZGlyKS9zcmMvaWRuJChFWEVFWFQpCi0tCi0gIyBHRE9DCi0KLSBHRE9DX0JJTiA9ICQoc3JjZGlyKS9nZG9jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMDU1OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBkNGY2NGI3ODQxOTEzOWVkYTNjMGUxYzZlZTExNmJiNWY3MGVhNjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMiBNYXkgMjAxMiAxODowNToxOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJ0YXNuMTogZml4IGJ1aWxkIHdpdGggYXV0b21ha2UgMS4xMgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCi0KLXwgYXV0b21ha2U6IHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycwotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiB3YXJuaW5nOiAnbGliaWRuLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWAotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDUvMDMKLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4Mjk3NjQ5Li43Yjk2MjZlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMyw2ICszMywxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxOCkKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgMCkKLSBBQ19TVUJTVChMVF9BR0UsIDYpCi0gCi0rIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKLSttNF9wYXR0ZXJuX2FsbG93KFtBTV9QUk9HX0FSXSkKLStBTV9QUk9HX0FSCi0rCi0gQUNfUFJPR19DQwotIGdsX0VBUkxZCi0gbGdsX0VBUkxZCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2JmZGQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiKEdQTHYyKyB8IExHUEx2MykgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDgzNGVhN2Q0ODA0MzhhZGEwNGU1ZDg0NjE1MjM5NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4yLmM7ZW5kbGluZT0xNjttZDU9NDI2Yjc0ZDZkZWI2MjBhYjZkMzljOGE2ZWZkNGMxM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbjIuaC5pbjtlbmRsaW5lPTI3O21kNT1jMmNkMjhkM2Y4NzI2MGYxNTdmMDIyZWFiYjgzNzE0ZiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImI4NDZkNGQyMGUyMmI5OWQ2ZjczODdiYjY2ZTAwYTFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjNzM0NzMyYjUwNmQ4Nzg3NTNlYzY2MDY5ODJiZjdiOTM2ZTg2OGMyNWMzMGRkYjBkODNmN2Q3MDU2MzgxZmUiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzfC1MJHtTVEFHSU5HX0xJQkRJUn18fCcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliaWRuMi5wYwotfQotCi1MSUNFTlNFXyR7UE59ID0gIihHUEx2MisgfCBMR1BMdjMpIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZGY5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIHN1cHBvcnQgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkltcGxlbWVudGF0aW9uIG9mIHRoZSBTdHJpbmdwcmVwLCBQdW55Y29kZSBhbmQgSUROQSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBJRVRGIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSB3b3JraW5nIGdyb3VwLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICIoR1BMdjIrIHwgTEdQTHYzKSAmIEdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkODM0ZWE3ZDQ4MDQzOGFkYTA0ZTVkODQ2MTUyMzk1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbjIuYztlbmRsaW5lPTE2O21kNT00MjZiNzRkNmRlYjYyMGFiNmQzOWM4YTZlZmQ0YzEzYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvaWRuMi5oLmluO2VuZGxpbmU9Mjc7bWQ1PWMyY2QyOGQzZjg3MjYwZjE1N2YwMjJlYWJiODM3MTRmIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDFjNTA4NDk5NTI5NWU1MTlmOTU5NzhhZTk3ODVlZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFjYjFkYjNkMmUyNDlhNmEzZWI2ZjA5NDY3NzdjMmU4OTJkNWM1ZGM3YmQ5MWM3NDM5NGZjM2EwMWNhYjhiNSIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBndGstZG9jIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE5lZWQgdG8gcmVtb3ZlIGFueSBkdXBsaWNhdGUgd2hpdGVzcGFjZSB0b28gZm9yIHJlcHJvZHVjaWJpbGl0eQorCXNlZCAtaSAtZSAnc3wtTCR7U1RBR0lOR19MSUJESVJ9fHwnIC1lICdzLyAgKi8gL2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmlkbjIucGMKK30KKworTElDRU5TRV8ke1BOfSA9ICIoR1BMdjIrIHwgTEdQTHYzKSIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNlNWI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKLQotIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKLSMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCi1QQUNLQUdFUyA9KyAiaWRuIgotRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgotCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKLUxJQ0VOU0VfaWRuID0gIkdQTHYzKyIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCmluZGV4IDIzMjYyZTguLmI1NWJiMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgpAQCAtMSwxMiArMSwxMiBAQAogU1VNTUFSWSA9ICJNaW5pbWFsaXN0aWMgdXNlci1zcGFjZSBOZXRsaW5rIHV0aWxpdHkgbGlicmFyeSIKIERFU0NSSVBUSU9OID0gIk1pbmltYWxpc3RpYyB1c2VyLXNwYWNlIGxpYnJhcnkgb3JpZW50ZWQgdG8gTmV0bGluayBkZXZlbG9wZXJzLCBwcm92aWRpbmcgXAogICAgIGZ1bmN0aW9ucyBmb3IgY29tbW9uIHRhc2tzIGluIHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBjb25zdHJ1Y3RpbmcgYm90aCB0aGUgTmV0bGluayBoZWFkZXIgYW5kIFRMVnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9pbmRleC5odG1sIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvaW5kZXguaHRtbCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKIFNSQ19VUklbdGFyLm1kNXN1bV0gPSAiYmU5YjRiNTMyOGM2ZGExYmRhNTY1YWM1ZGZmYWRiMmQiCiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ODAyMDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gInBpcGVsaW5lIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIEMgbGlicmFyeSBmb3Igc2V0dGluZyB1cCBhbmQgcnVubmluZyBwaXBlbGluZXMgb2YgcHJvY2Vzc2VzLCBcCi13aXRob3V0IG5lZWRpbmcgdG8gaW52b2x2ZSBzaGVsbCBjb21tYW5kLWxpbmUgcGFyc2luZyB3aGljaCBpcyBvZnRlbiBcCi1lcnJvci1wcm9uZSBhbmQgaW5zZWN1cmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYnBpcGVsaW5lLm5vbmdudS5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbGlicGlwZWxpbmUvbGlicGlwZWxpbmUtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjRjOGZlNmNkODU0MjJiYWFmZDZlMDYwZjg5NmM2MWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MzM3MDZiN2Q4NDVmMDhiNDJiYzY2ZGRiZTg0NWQ1N2U3MjZiZjg5Mjk4ZTJjZWUyOWYwOTU3N2UyZjkwMmYiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scwotCi1hY3BhdGhzID0gIi1JICR7U30vZ2wvbTQgLUkgJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4MjQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMTY5ZGU0Y2MxZjZmN2Y3ZDQzMGE1YmVkODU4YjJmZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ1OWM2NDljMWFlOWQ2NzYwNGQxNjQ0ZjExNmFkNGQyOTdlYWE2NmY4MzhlM2RmYWI5NmI0MWU4NWIwNTlmYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKK2FjcGF0aHMgPSAiLUkgJHtTfS9nbC9tNCAtSSAke1N9L200IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1YTI3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCisKK0RFUEVORFMgPSAiZXhwYXQgemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyIKKworU1JDUkVWID0gIjYwNWRkMjY0NWVmODk5ZTJiN2M5NTcwOTQ3NmZiNTFlMjhkN2UzNzgiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsJ3BhY2thZ2VfcnBtJywncnBtJywnJyxkKX0iCitQQUNLQUdFQ09ORklHW3JwbV0gPSAiLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04sLHJwbSIKKworRVhUUkFfT0VDTUFLRSA9ICItRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmU5YWUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgotCi1ERVBFTkRTID0gImV4cGF0IHpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0iCi0KLVNSQ1JFViA9ICI1MjA1YzU2ODNjZTJjOGI4Mjg4NTM0MDU5YmE0MGEzMThhMmExNjFkIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJwbSIKLVBBQ0tBR0VDT05GSUdbcnBtXSA9ICItREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiwscnBtIgotCi1FWFRSQV9PRUNNQUtFID0gIi1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjZDlmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotQ29uc2lkZXIgbXVzbCBwcm92aWRlZCBidWlsdC1pbiBkZWZpbmVzCi0KLUhlbHBzIGNvbXBpbGUgbGlidGlycGMgd2l0aCBtdXNsCi1iaXRzL2VuZGlhbi5oIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLSBhL3RpcnBjL3JwYy90eXBlcy5oCi0rKysgYi90aXJwYy9ycGMvdHlwZXMuaAotQEAgLTY2LDcgKzY2LDcgQEAgdHlwZWRlZiAgIGludDMyX3QgcnBjX2lubGluZV90OwotICNkZWZpbmUgbWVtX2ZyZWUocHRyLCBic2l6ZSkJZnJlZShwdHIpCi0gCi0gCi0tI2lmIGRlZmluZWQgX19BUFBMRV9DQ19fIHx8IGRlZmluZWQgX19GcmVlQlNEX18KLSsjaWYgZGVmaW5lZCBfX0FQUExFX0NDX18gfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXyB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gIyBkZWZpbmUgX191X2NoYXJfZGVmaW5lZAotICMgZGVmaW5lIF9fZGFkZHJfdF9kZWZpbmVkCi0gI2VuZGlmCi0tLS0gYS9zcmMveGRyX2Zsb2F0LmMKLSsrKyBiL3NyYy94ZHJfZmxvYXQuYwotQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHN0cnVjdCBzZ2xfbGltaXRzIHsKLSB9OwotICNlbHNlCi0gCi0tI2luY2x1ZGUgPGJpdHMvZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPGVuZGlhbi5oPgotICNkZWZpbmUgSUVFRUZQCi0gCi0gI2VuZGlmIC8qIHZheCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzY2VjZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjL2ZpbGVzL2xpYnRpcnBjLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjVkMmE2MjNlOWRmYmQ4MThkMmYzZjNhNGE4NzhlM2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNhNTI5ZjAyMjkyZTEwYzE1ODU2MjI5NWExZmZkOTVkMmNlOGFmOTc4MjBlMzUzNGZlMWIwZTNhZWM3NTYxZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwYwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2YwotICAgICAgICBmb3IgbGlua19oZWFkZXIgaW4gJHtEfSR7aW5jbHVkZWRpcn0vdGlycGMvcnBjLyo7IGRvCi0gICAgICAgICAgICBpZiBbIC1mICRsaW5rX2hlYWRlciAtYSAhIC1lICR7RH0vJHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpIF07IHRoZW4KLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vdGlycGMvcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKSAke0R9JHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGZvciBsaW5rX2hlYWRlciBpbiAke0R9JHtpbmNsdWRlZGlyfS90aXJwYy9ycGNzdmMvKjsgZG8KLSAgICAgICAgICAgIGlmIFsgLWYgJGxpbmtfaGVhZGVyIC1hICEgLWUgJHtEfS8ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikgXTsgdGhlbgotICAgICAgICAgICAgICAgIGxuIC1zZiAuLi90aXJwYy9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgbG4gLXNmICB0aXJwYy9uZXRjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vbmV0Y29uZmlnLmgKLQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDBkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlidGlycGMvZmlsZXMvbGlidGlycGMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjVmOWNjMThiZmFkNTBmN2M0NDZjNzdmNGFlMDBiYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Mjc4ZTlhNTE4MWQ1YWY5Y2Q3ODg1MzIyZmRlY2ViYzQ0NGY5YTNkYTg3YzUyNmU3ZDQ3ZjdhMTJhMzdkMWNjIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNlNjk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLVJERVBFTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAotICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2ciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhYmM3NzYyNDNjODExZTk4NzJmNzNhYjM4YjdmOGI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmMTRjY2UyMjU0YTk2ZDhmY2I2ZDMxODFlMWEzYzI5YThmODMyNTMxYzNlODZmZjZmMjUyNGVjZGE5YTg3MjEiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1wcm9wc10gPSAiLS13aXRoLXdlYmRhdi1wcm9wcywtLXdpdGhvdXQtd2ViZGF2LXByb3BzLGxpYnhtbDIgc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKLVBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMgLS13aXRob3V0LWZhbSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAotCi1JTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2Ci0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9zeXN0ZW1kL2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCi0JI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncwotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQvbGlnaHR0cGQuY29uZiIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgcidebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNTVjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NS5iYgpAQCAtMCwwICsxLDgzIEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitSREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTRiZGEyYzI4YmNiZGFjNmViOTQxNTI4ZjZlZGYwMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YTBiNTBlOWM5ZDVjYzNkOWU0ODU5MjMxNWMyNWEyZDY0NTg1OGY4NjNlMWNjZDEyMDUwN2EzMGNlMjFlOTI3IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCitQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIC0td2l0aG91dC1mYW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKKworSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2Mvc3lzdGVtZC9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQorCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkL2xpZ2h0dHBkLmNvbmYiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsIHInXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2UvMDAwMS1SZW1vdmUtdGltZXN0YW1wLWZyb20tbWFucGFnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjA5NWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmYjBiNThiZTkzOGJhYjU1NzFhYzBiZGVjMzcyNWY2ZDg4YjA3ZTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBTYXQsIDIyIEZlYiAyMDIwIDE5OjAxOjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0aW1lc3RhbXAgZnJvbSBtYW5wYWdlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsc2ItZGlzY3Vzc0BsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZ10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBBLiBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwNGZkZWNkLi41YmU4MDgxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTcsNyArMTcsNyBAQCBtYW46IGxzYl9yZWxlYXNlLjEuZ3oKKyAKKyBsc2JfcmVsZWFzZS4xLmd6OiBsc2JfcmVsZWFzZQorIAlALi9oZWxwMm1hbiAtTiAtLWluY2x1ZGUgLi9sc2JfcmVsZWFzZS5leGFtcGxlcyAtLWFsdF92ZXJzaW9uX2tleT1wcm9ncmFtX3ZlcnNpb24gLi9sc2JfcmVsZWFzZSA+bHNiX3JlbGVhc2UuMQorLQlAZ3ppcCAtOWYgbHNiX3JlbGVhc2UuMQorKwlAZ3ppcCAtOWZuIGxzYl9yZWxlYXNlLjEKKyAKKyBpbnN0YWxsOiBhbGwKKyAJaW5zdGFsbCAtRCAtbSA2NDQgbHNiX3JlbGVhc2UuMS5neiAke21hbmRpcn0vbWFuMS9sc2JfcmVsZWFzZS4xLmd6CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYgppbmRleCA1MmUzMDI2Li5hMDZjYmNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aW1lc3RhbXAtZnJvbS1tYW5wYWdlLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLWNvbmZpZ3VyZS10aW1lLWNoZWNrLWZvci1nZXRkZW50cy1nZXRkZW50czY0LUFQSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSA0MDRkZmViNGZhZWYyMTNiMDQ1MGYxNzNiNjBjZDcwODBlZGVjMzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTA6MzI6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBjb25maWd1cmUgdGltZSBjaGVjayBmb3IgZ2V0ZGVudHMvZ2V0ZGVudHM2NCBBUElzCi0KLWdsaWJjIDIuMzAgaGFzIGFkZGVkIHdyYXBwZXIgZm9yIGdldGRlbnRzNjQgdGhpcyB3aWxsIGhlbHAgaW4gZGV0ZWN0aW5nCi1yaWdodCBjb25kaXRpb24gdG8gdXNlIGZhbGxiYWNrCi0KLUNoZWNrIGZvciBnZXRkZW50cyBBUEkgYXMgd2VsbCB3aGlsZSBoZXJlCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU0Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0ZGVudHMvZ2V0ZGVudHMuaCB8IDggKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NSw2ICs2NSw4IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAotICAgICBmYWxsb2NhdGUgXAotICAgICBmY2hvd25hdCBcCi0gICAgIGZzdGF0YXQgXAotKyAgICBnZXRkZW50cyBcCi0rICAgIGdldGRlbnRzNjQgXAotICAgICBrY21wIFwKLSAgICAgbWtkaXJhdCBcCi0gICAgIG1rbm9kYXQgXAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGRlbnRzL2dldGRlbnRzLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKLS0KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gLyoKLSAgKiBTZWUgZnMvY29tcGF0LmMgc3RydWN0IGNvbXBhdF9saW51eF9kaXJlbnQKLSAgKi8KLUBAIC0zNCwxMiArMzQsMTcgQEAgc3RydWN0IGxpbnV4X2RpcmVudCB7Ci0gCWNoYXIgICAgICAgICAgICBkX25hbWVbXTsKLSB9OwotIAotKyNpZiBIQVZFX0dFVERFTlRTCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNlbHNlCi0gc3RhdGljIGlubGluZSBpbnQKLSBnZXRkZW50cyh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQgKmRpcnAsIHVuc2lnbmVkIGludCBzaXplKQotIHsKLSAJcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfZ2V0ZGVudHMsIGZkLCBkaXJwLCBzaXplKTsKLSB9Ci0gCi0rI2VuZGlmIC8qIEhBVkVfR0VUREVOVFMgKi8KLSsKLSBzdHJ1Y3QgbGludXhfZGlyZW50NjQgewotIAl1aW50NjRfdAlkX2lubzsKLSAJaW50NjRfdAkJZF9vZmY7Ci1AQCAtNDgsMTAgKzUzLDEzIEBAIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCB7Ci0gCWNoYXIJCWRfbmFtZVtdOwotIH07Ci0gCi0rI2lmIEhBVkVfR0VUREVOVFM2NAotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZWxzZQotIHN0YXRpYyBpbmxpbmUgaW50Ci0gZ2V0ZGVudHM2NCh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCAqZGlycDY0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gCXJldHVybiBsdHBfc3lzY2FsbChfX05SX2dldGRlbnRzNjQsIGZkLCBkaXJwNjQsIHNpemUpOwotIH0KLS0KLSsjZW5kaWYgLyogSEFWRV9HRVRERU5UUzY0ICovCi0gI2VuZGlmIC8qIEdFVERFTlRTX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtbW9yZS1tdXNsLWV4Y2x1c2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzJmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNzg4YzQ3Y2VlZjdmMTE1YWI3ZjdhYTE3ZjkxOGU1ODc5NWY0ZTZjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxMzowNjowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBBZGQgbW9yZSBtdXNsIGV4Y2x1c2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgZmFub3RpZnkxMywgZmFub3RpZnkxNSwgc2V0eGF0dHIwMyBdCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZSAgICAgIHwgNCArKysrCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitpbmRleCA1MDQwNDJlMTEuLjk0ZGIwNjI2NiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitAQCAtMjAsNCArMjAsOCBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgorIAorIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL3Rlc3RjYXNlcy5taworIAorK2lmZXEgKCQoTElCQyksbXVzbCkKKytGSUxURVJfT1VUX01BS0VfVEFSR0VUUyAgICAgICAgOj0gYWNjZXB0NF8wMQorK2VuZGlmCisrCisgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5taworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKK2luZGV4IDhkZTI0NzA3NS4uZWIyNDBmNDMyIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlCitAQCAtMjAsNiArMjAsMTAgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KKyAKKyBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay90ZXN0Y2FzZXMubWsKKyAKKytpZmVxICgkKExJQkMpLG11c2wpCisrRklMVEVSX09VVF9NQUtFX1RBUkdFVFMgICAgICAgIDo9IHRpbWVyX2NyZWF0ZTAxIHRpbWVyX2NyZWF0ZTAzCisrZW5kaWYKKysKKyBDUFBGTEFHUwkJKz0gLURfR05VX1NPVVJDRSAtSSQoYWJzX3NyY2RpcikvLi4vaW5jbHVkZQorIAorIExETElCUwkJCSs9IC1scHRocmVhZCAtbHJ0CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGI1YzI1YzUuLmIxYTk5OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlYzI4Mjk4MGU2ZWVlOTZmNWI3NGFiYTQ2NDE0MWY4NjA0OTI2M2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZTQ1M2QxYmU4MjZiODYyZDQ3ZTA4NjYzZmQ2OWVlYTlkZDYyNzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoxOTowMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIG9wdGlvbiB0byBzZWxlY3QgbGliYyBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDEvNl0gYnVpbGQ6IEFkZCBvcHRpb24gdG8gc2VsZWN0IGxpYmMgaW1wbGVtZW50YXRpb24KIAogVGhlcmUgYXJlIG1vcmUgdGhhbiBnbGliYyBmb3IgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBvbgogbGludXggbm93IGEgZGF5cywgdWNsaWJjIGNsb2FrZWQgbGlrZSBnbGliYyBidXQgbXVzbCBlLmcuIGlzIHZlcnkKQEAgLTExLDIwICsxMSwyOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorcnRfdGdzaWdxdWV1ZWluZm8gZmFpbHMgd2l0aDoKK3J0X3Rnc2lncXVldWVpbmZvMDEuYzogSW4gZnVuY3Rpb24gJ3NpZ3VzcjFfaGFuZGxlcic6CitydF90Z3NpZ3F1ZXVlaW5mbzAxLmM6NDI6MjI6IGVycm9yOiAnc2lnaW5mb190JyB7YWthICdzdHJ1Y3QgPGFub255bW91cz4nfSBoYXMgbm8gbWVtYmVyIG5hbWVkICdfc2lmaWVsZHMnOyBkaWQgeW91IG1lYW4gJ19fc2lfZmllbGRzJz8KKyAgIDQyIHwgIHNpZ3ZhbF9yY3YgPSB1aW5mby0+X3NpZmllbGRzLl9ydC5TSV9TSUdWQUwuc2l2YWxfcHRyOworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgX19zaV9maWVsZHMKKwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgbWFsbG9wdCwgcHJvZmlsLCBycGMwMTYsCitydF9zaWdzdXNwZW5kLCBzYnJrX211dGV4LCBzZXRkb21haW5uYW1lLCBzZXRob3N0bmFtZSwgc2lnc3VzcGVuZCwKK3Rlc3RwaS0zLCB0ZXN0cGktNSwgdGVzdHBpLTYsIHVzdGF0OyBtb3ZlIHJ0X3Rnc2lncXVldWVpbmZvCitmcm9tIDAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXQorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8IDUgKysrKy0KLSB0ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlICAgICAgICAgICAgIHwgNCArKystCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUgICAgICAgIHwgNCArKysrCi0gdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSAgIHwgNCArKysrCi0gdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSB8IDUgKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKKyB0ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlICAgICAgICAgIHwgNSArKysrLQorIHRlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgICAgfCA0ICsrKy0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNzY4Y2E0Ni4uZTlkNjc5YSAxMDA2NDQKK2luZGV4IDc2OGNhNDYwNi4uZTlkNjc5YTcxIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtNDEsNiArNDEsMTEgQEAgdnBhdGggJS5tawkJJCh0b3Bfc3JjZGlyKS9tazokKHRvcF9zcmNkaXIpL21rL2luY2x1ZGUKQEAgLTQwLDE4ICs0OSwxOSBAQAogICMgQ09NTU9OX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gYWxsLCBjbGVhbiwgYW5kIGluc3RhbGwuCiAgIyBJTlNUQUxMX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gY2xlYW4gYW5kIGluc3RhbGwgKGNvbnRhaW5zCiBkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLWluZGV4IDM5ZDc5YzcuLjI0YTU3ZDkgMTAwNjQ0CitpbmRleCAzMzE5YjMxNjMuLjk0ZWEzNjJjOCAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00OSwxMiArNDksMTUgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorQEAgLTQ5LDEzICs0OSwxNiBAQCBTVUJESVJTCQkJKz0gY29ubmVjdG9ycyBcCiAgCQkJICAgbG9nZ2luZyBcCiAgCQkJICAgbWVtIFwKICAJCQkgICBudW1hIFwKIC0JCQkgICBwdHkgXAogIAkJCSAgIHNjaGVkIFwKICAJCQkgICBzZWN1cml0eSBcCi0gCQkJICAgdGltZXJzIFwKKyAJCQkgICBzb3VuZCBcCiAgCQkJICAgdHJhY2luZyBcCisgCQkJICAgdWV2ZW50cyBcCiAgCiAraWZuZXEgKCQoTElCQyksbXVzbCkKICtTVUJESVJTCQkJKz0gcHR5CkBAIC02MSw3ICs3MSw3IEBACiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2YTU3ZDc5Li43NGJiOTMzIDEwMDY0NAoraW5kZXggNmE1N2Q3OWVlLi43NGJiOTMzNzAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQApAQCAtNzQsNzYgKzg0LDE5IEBACiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA0NWEwMGNmLi5kMWJlY2QwIDEwMDY0NAoraW5kZXggNDVhMDBjZjdkLi5hZjVhNTkxYTAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1AQCAtMjgsNiArMjgsMTEgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQotIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAorQEAgLTI5LDYgKzI5LDEwIEBAIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAogIAkJICAgbWluY29yZSBtcHJvdGVjdCBuZnR3IHByb2ZpbCByZW1hcF9maWxlX3BhZ2VzIHNicmsKICBlbmRpZgotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX0RJUlMJKz0gY29uZnN0ciBmbXRtc2cgZ2V0Y29udGV4dCBpb2N0bCBtYWxsb3B0IHByb2ZpbCBcCi0rCQkgICBydF9zaWdzdXNwZW5kIHNldGRvbWFpbm5hbWUgc2V0aG9zdG5hbWUgc2lnc3VzcGVuZCBcCi0rCQkgICB1c3RhdAotK2VuZGlmCiAgCisraWZlcSAoJChMSUJDKSxtdXNsKQorK0ZJTFRFUl9PVVRfRElSUwkrPSBjb25mc3RyIGZtdG1zZyBnZXRjb250ZXh0IGlvY3RsIHJ0X3Rnc2lncXVldWVpbmZvCisrZW5kaWYKKysKICBpZmVxICgkKFVDTElCQyksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YzU1YTZiLi5mN2NkYTYyIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSAKLSBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQotIAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSBhY2wxCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi1pbmRleCA2NmU5ZDU2Li5lYThlYjhhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLUBAIC0yMyw0ICsyMyw5IEBACi0gdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfRElSUyArPSBycGMwMQotK2VuZGlmCi0rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA2ODYxNmE3Li43NDg3NTRiIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0gaW5jbHVkZSAkKGFic19zcmNkaXIpLy4uLy4uL2NvbmZpZy5tawotIAotIE1BS0VfVEFSR0VUUwkJOj0gdGVzdHBpLTAgdGVzdHBpLTEgdGVzdHBpLTIgdGVzdHBpLTQgdGVzdHBpLTUgdGVzdHBpLTYgdGVzdHBpLTcgc2Jya19tdXRleAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSB0ZXN0cGktNSB0ZXN0cGktNiBzYnJrX211dGV4Ci0rZW5kaWYKLSsKLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLWluZGV4IDE4ODFmNzUuLjI2NmUwYjggMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjQsNCArMjQsOSBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgotIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfTUFLRV9UQVJHRVRTCTo9IHRlc3RwaS0zCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi0tLSAKLTIuNy40Ci0KKyBlbmRpZgorLS0KKzIuMjUuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQwMDgxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZTNhODUwMmQwYTRmOGE0NGRkZDAyY2E0YjJlZmMwOTcxMzNmYjlmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGhpYXMgRmllZGxlciA8bWF0aGlhcy5maWVkbGVyQGFveC10ZWNoLmRlPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMjo0Njo0OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBjdmUtMjAxNy0xNzA1MjogQXZvaWQgdW5zYWZlIGV4aXRzIGluIHRocmVhZHMKLQotQWNjb3JkaW5nIHRvIG1hbnBhZ2UgZXhpdCgzKSBjYWxsaW5nIGV4aXQgaXMgbm90IHRocmVhZC1zYWZlLgotQW5kIHdpdGggZ2xpYmMgMi4yOCAoYW5kIHByb2JhYmx5IGFsc28gd2l0aCBnbGliYyA+PTIuMjcpIHNvbWV0aW1lcwotY2hpbGQgcHJvY2Vzc2VzIGNyZWF0ZWQgaW4gZm9ya190aHJlYWQgY2FuIGdldCBzdHVjayBvbiBwcm9jZXNzIGV4aXQgaW4KLWdsaWJjJ3MgX19ydW5fZXhpdF9oYW5kbGVycyB0cnlpbmcgdG8gYWNxdWlyZSBzb21lIGxvY2sgd2hpY2ggd2FzIGluCi1sb2NrZWQgc3RhdGUgd2hpbGUgdGhlIGZvcmsgd2FzIGNyZWF0ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGV4aXQgaXMKLWNhbGxlZCBpbiBtbWFwX3RocmVhZCBjb25jdXJyZW50bHkgdG8gdGhlIGZvcmsuCi1XaGlsZSB0aGUgbWFpbiBwcm9jZXNzIHdpbGwgc3RpbGwgcmV0dXJuIHdpdGggUEFTU0VEIHNvbWUgb2YgaXRzCi1jaGlsZHJlbiBhcmUgbGVmdCBiZWhpbmQuCi0KLUNvbXBhcmluZyB0aGUgc291cmNlIGNvZGUgd2l0aCB0aGUgb3JpZ2luYWwgcHJvZ3JhbSBhcyBkZXNjcmliZWQgaW4gdGhlCi1jb21taXQgMmI3ZTg2NjViNGZmNTFjMDM0YzU1ZGYzY2ZmNzY1MThkMWE5ZWUzYSBvZiBsaW51eCBrZXJuZWwgPj00LjEzCi10aGUgZXhpdHMgaW4gbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvCi10cmlnZ2VyIHRoZSBvcmlnaW5hbCBidWcuCi0KLVRoZXJlZm9yZSB0aG9zZSBleGl0IGNhbGxzIGFyZSByZW1vdmVkLiBUaGUgbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkCi1zaG91bGQgc3RpbGwgZXhpdCB3aGVuIHRoZWlyIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJlYWQgaW4gZG9fdGVzdF9mb3JrCi1jYWxscyBleGl0X2dyb3VwLiBUaGUgcmVtYWluaW5nIGV4aXQgaW4gZG9fdGVzdF9mb3JrIHdpbGwgYmUgY2FsbGVkIGluCi10aGUgbWFpbiB0aHJlYWQgd2l0aG91dCBhbnkgY29uY3VycmVudCB0aHJlYWQgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLQotU2lnbmVkLW9mZi1ieTogTWF0aGlhcyBGaWVkbGVyIDxtYXRoaWFzLmZpZWRsZXJAYW94LXRlY2guZGU+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvOWYwYjQ1MmMxYWY0YmNiNTRkYTM1NzExZWIzZmE3NzMzNGEzNTBiNF0KLQotQ1ZFOiBDVkUtMjAxNy0xNzA1MgotCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIHwgNSAtLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1pbmRleCBkN2RhN2U5MTkuLjE4Y2QyYTZkNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1AQCAtNTgsOCArNTgsNiBAQCBzdGF0aWMgdm9pZCAqbW1hcF90aHJlYWQodm9pZCAqYXJnKQotIAlmb3IgKDs7KSB7Ci0gCQlTQUZFX01NQVAoTlVMTCwgMHgxMDAwMDAwLCBQUk9UX1JFQUQsCi0gCQkJCU1BUF9QT1BVTEFURXxNQVBfQU5PTllNT1VTfE1BUF9QUklWQVRFLCAtMSwgMCk7Ci0tCQlpZiAoKmRvX2V4aXQpCi0tCQkJZXhpdCgwKTsKLSAJfQotIAotIAlyZXR1cm4gYXJnOwotQEAgLTY3LDkgKzY1LDYgQEAgc3RhdGljIHZvaWQgKm1tYXBfdGhyZWFkKHZvaWQgKmFyZykKLSAKLSBzdGF0aWMgdm9pZCAqZm9ya190aHJlYWQodm9pZCAqYXJnKQotIHsKLS0JaWYgKCpkb19leGl0KQotLQkJZXhpdCgwKTsKLS0KLSAJdXNsZWVwKHJhbmQoKSAlIDEwMDAwKTsKLSAJU0FGRV9GT1JLKCk7Ci0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGY2ZjVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSBmYmVkYTgyZjQ0MGEwMDk4YmU0MmRkNjY4Y2JjNDcyMTJhODZhYjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTY6Mjc6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3ZlL21lbHRkb3duLmM6IEZpeCBrZXJuZWwgc3ltYm9sIGZpbmRpbmcKLQotbWVsdGRvd24gY2FzZSBmYWlscyBhcyBiZWxvdy4KLXNhZmVfZmlsZV9vcHMuYzoyMTk6IEJST0s6IEV4cGVjdGVkIDMgY29udmVyc2lvbnMgZ290IDIgYXQgbWVsdGRvd24uYzoyNzIKLQotZmluZF9rZXJuZWxfc3ltYm9sIGlzIGRlZmluZWQgdG8gdHJ5IHR3aWNlIHdpdGggZWFjaCBvZiAvcHJvYy9rYWxsc3ltcyBhbmQKLS9ib290L1N5c3RlbS5tYXAtJXMuIEN1cnJlbnRseSBpZiB0aGUgc3ltYm9sIGlzIG5vdCBmb3VuZCBpbiAvcHJvYy9rYWxsc3ltcywKLXdoZW4ga2VybmVsIG9wdGlvbiBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIGRpc2FibGVkLCBpdCB3b3VsZCBzdG9wIHRoZSBjYXNlCi1pbW1lZGlhdGVseSBkdWUgdG8gU0FGRV9GSUxFX0xJTkVTX1NDQU5GLgotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBGSUxFX0xJTkVTX1NDQU5GIHRvIGdpdmUgZmluZF9rZXJuZWxfc3ltYm9sIHNlY29uZAotY2hhbmNlLgotCi1banN0YW5jZWtdIEZpeCBhbHNvIGNvbmRpdGlvbiBpbnRyb2R1Y2VkIGluIDc3MDlkMmFlOTJlYSwgZXZlbiBpZgotICAgICAgICAgICAvcHJvYy9rYWxsc3ltcyBpcyBkaXNhYmxlZCwgd2Ugc3RpbGwgd2FudCB0byB0cnkgU3lzdGVtLm1hcC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2MyMDQ5YjVjODc0YmMwNzFmODE4NWJmZmI1ZmQ3ZGNiMDQyZDllYzhdCi0KLVJlbW92ZSB0aGUgaHVuayBmb3IgdXBzdHJlYW0gNzcwOWQyYWU5MmVhICgiY3ZlL21lbHRkb3duLmM6IGFib3J0IHRoZSB0ZXN0IGlmIGthbGxzeW1zIHdhcyBub3QgZW5hYmxlZCIpCi10aGF0IGhhcyBiZWVuIGNvdmVyZWQgYnkgdGhpcyBwYXRjaC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyB8IDEzICsrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotaW5kZXggYTUzZWE5Yi4uMjI2NTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9tZWx0ZG93bi5jCi1AQCAtMjY3LDkgKzI2NywxNSBAQCBmaW5kX3N5bWJvbF9pbl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzeW1uYW1lKQotIAlpbnQgcmV0LCByZWFkOwotIAljaGFyIGZtdFtzdHJsZW4oc3ltbmFtZSkgKyA2NF07Ci0gCi0rCXRzdF9yZXMoVElORk8sICJMb29raW5nIGZvciAlcyBpbiAlcyIsIHN5bW5hbWUsIGZpbGVuYW1lKTsKLSsJaWYgKGFjY2VzcyhmaWxlbmFtZSwgRl9PSykgPT0gLTEpIHsKLSsJCXRzdF9yZXMoVElORk8sICIlcyBub3QgYXZhaWxhYmxlIiwgZmlsZW5hbWUpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJc3ByaW50ZihmbXQsICIlJWx4ICUlYyAlcyUlYyIsIHN5bW5hbWUpOwotIAotLQlyZXQgPSBTQUZFX0ZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0rCXJldCA9IEZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0gCWlmIChyZXQpCi0gCQlyZXR1cm4gMDsKLSAKLUBAIC0yODcsMTMgKzI5MywxMSBAQCBmaW5kX2tlcm5lbF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSkKLSAJaWYgKGFkZHIpCi0gCQlyZXR1cm4gYWRkcjsKLSAKLS0JdHN0X3JlcyhUSU5GTywgIm5vdCBmb3VuZCAnJXMnIGluIC9wcm9jL2thbGxzeW1zIiwgbmFtZSk7Ci0gCWlmICh1bmFtZSgmdXRzbmFtZSkgPCAwKQotIAkJdHN0X2JyayhUQlJPSyB8IFRFUlJOTywgInVuYW1lIik7Ci0gCi0gCXNwcmludGYoc3lzdGVtbWFwLCAiL2Jvb3QvU3lzdGVtLm1hcC0lcyIsIHV0c25hbWUucmVsZWFzZSk7Ci0gCi0tCXRzdF9yZXMoVElORk8sICJsb29raW5nIGluICclcydcbiIsIHN5c3RlbW1hcCk7Ci0gCWFkZHIgPSBmaW5kX3N5bWJvbF9pbl9maWxlKHN5c3RlbW1hcCwgbmFtZSk7Ci0gCXJldHVybiBhZGRyOwotIH0KLUBAIC0zMDgsNiArMzEyLDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJc2F2ZWRfY21kbGluZV9hZGRyID0gZmluZF9rZXJuZWxfc3ltYm9sKCJzYXZlZF9jb21tYW5kX2xpbmUiKTsKLSAJdHN0X3JlcyhUSU5GTywgIiZzYXZlZF9jb21tYW5kX2xpbmUgPT0gMHglbHgiLCBzYXZlZF9jbWRsaW5lX2FkZHIpOwotIAotKwlpZiAoIXNhdmVkX2NtZGxpbmVfYWRkcikKLSsJCXRzdF9icmsoVENPTkYsICJzYXZlZF9jb21tYW5kX2xpbmUgbm90IGZvdW5kIik7Ci0rCi0gCXNwZWNfZmQgPSBTQUZFX09QRU4oIi9wcm9jL2NtZGxpbmUiLCBPX1JET05MWSk7Ci0gCi0gCW1lbXNldCh0YXJnZXRfYXJyYXksIDEsIHNpemVvZih0YXJnZXRfYXJyYXkpKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1rc3dhcDAxLnNoLUFkZC11ZGV2YWRtLXRyaWdnZXItYmVmb3JlLXN3YXAtdmVyaWZpY2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0MzNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZmFlODg1MmE2M2Q5ZmE2ZTU2ZmI4YjI0ZWFmMTA1NjBiZDEzNzU3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxMiBOb3YgMjAxOSAxMTozMzo1MCArMDgwMAotU3ViamVjdDogW1BBVENIXSBta3N3YXAwMS5zaDogQWRkICJ1ZGV2YWRtIHRyaWdnZXIiIGJlZm9yZSBzd2FwIHZlcmlmaWNhdGlvbgotCi1GaXg6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2lzc3Vlcy80NTgKLQotU29tZXRpbWVzIHRoZSBzd2FwIGRldmljZSBjYW5ub3Qgc2hvdyB1cCBpbiAvZGV2L2Rpc2svYnktdXVpZC8KLW9yIC9kZXYvZGlzay9ieS1sYWJsZS8gZHVlIHRvIHRoZSBpc3N1ZSAjNDU4LiBXaGVuIHRoaXMgaXNzdWUKLWhhcHBlbnMsICJibGtpZCAtYyAvZGV2L251bGwiIGFuZCAibHMgL2Rldi9kaXNrL2J5LXV1aWQvIiBzaG93Ci1kaWZmZXJlbnQgVVVJRCBvZiB0aGUgZGV2aWNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMTkzNDE0XQotCi1TaWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2ggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2gKLWluZGV4IDNhMzQ4YzZlNi4uOTQzN2M0YTRlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotKysrIGIvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotQEAgLTEyOSw2ICsxMjksOCBAQCBta3N3YXBfdGVzdCgpCi0gCQlyZXR1cm4KLSAJZmkKLSAKLSsJdWRldmFkbSB0cmlnZ2VyIC0tbmFtZS1tYXRjaD0kVFNUX0RFVklDRQotKwotIAlpZiBbIC1uICIkZGV2aWNlIiBdOyB0aGVuCi0gCQlta3N3YXBfdmVyaWZ5ICIkbWtzd2FwX29wIiAiJG9wX2FyZyIgIiRkZXZpY2UiICIkc2l6ZSIgIiRkZXZfZmlsZSIKLSAJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotLS0gCi0yLjE0LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkODQ3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyMSBNYXkgMjAxOSAxMDoxMDo0NCArMDIwMAotU3ViamVjdDogW1BBVENIXSBvdmVyY29tbWl0X21lbW9yeTogdXBkYXRlIGZvciAibW06IGZpeCBmYWxzZS1wb3NpdGl2ZQotIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiCi0KLWNvbW1pdCA4Yzc4MjliMDRjNTIgKCJtbTogZml4IGZhbHNlLXBvc2l0aXZlIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiKQotY2hhbmdlcyBsb2dpYyBvZiBfX3ZtX2Vub3VnaF9tZW1vcnkoKSwgc2ltcGxpZnlpbmcgaXQgdG86Ci0gICAgV2hlbiBpbiBHVUVTUyBtb2RlLCBjYXRjaCB3aWxkIGFsbG9jYXRpb25zIGJ5IGNvbXBhcmluZyB0aGVpciByZXF1ZXN0Ci0gICAgc2l6ZSB0byB0b3RhbCBhbW91bnQgb2YgcmFtIGFuZCBzd2FwIGluIHRoZSBzeXN0ZW0uCi0KLVRlc3RjYXNlIGN1cnJlbnRseSBhbGxvY2F0ZXMgbWVtX3RvdGFsICsgc3dhcF90b3RhbCwgd2hpY2ggZG9lc24ndCB0cmlnZ2VyCi1uZXcgY29uZGl0aW9uLiBNYWtlIGl0IG1vcmUgZXh0cmVtZSwgYnV0IGFzc3VtaW5nIGZyZWVfdG90YWwgLyAyIHdpbGwgUEFTUywKLWFuZCAyKnN1bV90b3RhbCB3aWxsIEZBSUwuCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMF0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgfCAxMSArKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLWluZGV4IDU1NTI5OGYuLjM0NTc2NGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3R1bmFibGUvb3ZlcmNvbW1pdF9tZW1vcnkuYwotQEAgLTM2LDExICszNiwxMCBAQAotICAqCi0gICogVGhlIHByb2dyYW0gaXMgZGVzaWduZWQgdG8gdGVzdCB0aGUgdHdvIHR1bmFibGVzOgotICAqCi0tICogV2hlbiBvdmVyY29tbWl0X21lbW9yeSA9IDAsIGFsbG9jYXRhYmxlIG1lbW9yeSBjYW4ndCBvdmVyZXh0ZW5kcwotLSAqIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkuIEkgY2hvb3NlIHRoZSB0aHJlZSBjYXNlczoKLSsgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMCwgYWxsb2NhdGFibGUgbWVtb3J5IGNhbid0IG92ZXJleHRlbmQKLSsgKiB0aGUgYW1vdW50IG9mIHRvdGFsIG1lbW9yeToKLSAgKiBhLiBsZXNzIHRoYW4gZnJlZV90b3RhbDogICAgZnJlZV90b3RhbCAvIDIsIGFsbG9jIHNob3VsZCBwYXNzLgotLSAqIGIuIGdyZWF0ZXIgdGhhbiBmcmVlX3RvdGFsOiBmcmVlX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0tICogYy4gZXF1YWwgdG8gc3VtX3RvdGFsOiAgICAgIHN1bV90YXRhbCwgICAgICBhbGxvYyBzaG91bGQgZmFpbAotKyAqIGIuIGdyZWF0ZXIgdGhhbiBzdW1fdG90YWw6ICAgc3VtX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0gICoKLSAgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMSwgaXQgY2FuIGFsbG9jIGVub3VnaCBtdWNoIG1lbW9yeSwgSQotICAqIGNob29zZSB0aGUgdGhyZWUgY2FzZXM6Ci1AQCAtMTY0LDkgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG92ZXJjb21taXRfbWVtb3J5X3Rlc3Qodm9pZCkKLSAKLSAJdXBkYXRlX21lbSgpOwotIAlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAvIDIsIEVYUEVDVF9QQVNTKTsKLS0JdXBkYXRlX21lbSgpOwotLQlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAqIDIsIEVYUEVDVF9GQUlMKTsKLS0JYWxsb2NfYW5kX2NoZWNrKHN1bV90b3RhbCwgRVhQRUNUX0ZBSUwpOwotKwlhbGxvY19hbmRfY2hlY2soc3VtX3RvdGFsICogMiwgRVhQRUNUX0ZBSUwpOwotIAotIAkvKiBzdGFydCB0byB0ZXN0IG92ZXJjb21taXRfbWVtb3J5PTEgKi8KLSAJc2V0X3N5c190dW5lKCJvdmVyY29tbWl0X21lbW9yeSIsIDEsIDEpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTU2YzA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjkgQXVnIDIwMTkgMjE6MDk6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbC9ydF9zaWd0aW1lZHdhaXQwMTogRml4IHdyb25nIHNpZ3NldCBsZW5ndGggZm9yIE1JUFMKLQotcnRfc2lndGltZWR3YWl0MDEgZmFpbHMgYXMgZm9sbG93IG9uIE1JUFMgYXJjaGVzCi1ydF9zaWd0aW1lZHdhaXQwMSAgICAxICBURkFJTCAgOiAgLi4uL3NpZ3dhaXRpbmZvMDEuYzo1ODogdGVzdF9lbXB0eV9zZXQKLSguLi4vc2lnd2FpdGluZm8wMS5jOiAxNDgpOiBVbmV4cGVjdGVkIGZhaWx1cmU6Ci1URVNUX0VSUk5PPUVJTlZBTCgyMik6IEludmFsaWQgYXJndW1lbnQKLQotQXMgdGhpcyBjYXNlIHB1cnBvc2VseSBieXBhc3NlcyBnbGliYywgaXQgc2hvdWxkIGFsaWduIHdpdGggdGhlIHNpemUgb2Yga2VybmVsCi1kZWZpbml0aW9uIG9mIHNpZ3NldF90IHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIG90aGVyIGFyY2hlcy4KLWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oI24xNQotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBfTlNJRyB3aGljaCBpcyBhbHdheXMgcmlnaHQgZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2E1MDQ2NjI1ZWFlZWQyZDNmYmE0NTZjM2JhODRjNmMxNDFjMmFkN2NdCi0KLVN1Z2dlc3RlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYyB8IDUgKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotaW5kZXggNWEzMmNlMS4uNmEzMGMyNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotQEAgLTEyOCw5ICsxMjgsOCBAQCBzdGF0aWMgaW50IG15X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSBzdGF0aWMgaW50IG15X3J0X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSAJCQkgICAgICBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCi0gewotLQotLQkvKiBUaGUgbGFzdCBhcmd1bWVudCBpcyAobnVtYmVyX29mX3NpZ25hbHMpLyhiaXRzX3Blcl9ieXRlKSwgd2hpY2ggYXJlIDY0IGFuZCA4LCByZXNwLiAqLwotLQlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgOCk7Ci0rCS8qIF9OU0lHIGlzIGFsd2F5cyB0aGUgcmlnaHQgbnVtYmVyIG9mIGJpdHMgb2Ygc2lnbmFsIG1hcCBmb3IgYWxsIGFyY2hlcyAqLwotKwlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgX05TSUcvOCk7Ci0gfQotICNlbmRpZgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1DaGVjay1mb3ItdGltZTY0LXVuc2FmZS1zeXNjYWxscy1iZWZvcmUtdXNpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGYwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaApAQCAtMCwwICsxLDEyMiBAQAorRnJvbSA4OWM1ODQxYmQxNDhhN2FlNzBjNjVmNGExY2E1OTk2YjdmMGNkZGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMjI6NTI6MDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbHM6IENoZWNrIGZvciB0aW1lNjQgdW5zYWZlIHN5c2NhbGxzIGJlZm9yZSB1c2luZyB0aGVtCisKK211c2wgaXMgdXNpbmcgNjRiaXQgdGltZV90IG5vdyBvbiAzMmJpdCBhcmNoaXRlY3R1cmVzIGFuZCB0aGVzZSBzeXNjYWxscworbm8gbG9uZ2VyIGV4aXN0LCB0aGVyZWZvcmUgaXRzIGJldHRlciB0byBjaGVjayBmb3IgdGhlbSBiZWluZyBhdmFpbGFibGUKK2JlZm9yZSB1c2luZyB0aGVtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogWWFuZyBYdSA8eHV5YW5nMjAxOC5qeUBjbi5mdWppdHN1LmNvbT4KK1Jldmlld2VkLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBhY2NlcHRlZCBhcyA1YjU3YWUyOTEzZTJkMmQxNjdjYmQzODIyNzg0YjRjNGJhMzM2ODEyCistLS0KKyBsaWIvdHN0X2Nsb2Nrcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKystLS0tLS0tLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jICAgICAgIHwgIDYgKystLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMi5jICAgICAgIHwgIDggKysrLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3RzdF9jbG9ja3MuYyBiL2xpYi90c3RfY2xvY2tzLmMKK2luZGV4IDUxOTVkYTM4Zi4uZmEyZjFjYjg0IDEwMDY0NAorLS0tIGEvbGliL3RzdF9jbG9ja3MuYworKysrIGIvbGliL3RzdF9jbG9ja3MuYworQEAgLTMsMjggKzMsMjQgQEAKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+CisgICovCisKKy0vKgorLSAqIGNsb2NrX2dldHRpbWUoKSBhbmQgY2xvY2tfZ2V0cmVzKCkgZnVuY3Rpb25zCistICovCistCistI2RlZmluZSBfR05VX1NPVVJDRQorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisrI2RlZmluZSBUU1RfTk9fREVGQVVMVF9NQUlOCisrI2luY2x1ZGUgInRzdF90ZXN0LmgiCisgI2luY2x1ZGUgInRzdF9jbG9ja3MuaCIKKysjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgorIAorIGludCB0c3RfY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqcmVzKQorIHsKKy0JcmV0dXJuIHN5c2NhbGwoU1lTX2Nsb2NrX2dldHJlcywgY2xrX2lkLCByZXMpOworKwlyZXR1cm4gdHN0X3N5c2NhbGwoX19OUl9jbG9ja19nZXRyZXMsIGNsa19pZCwgcmVzKTsKKyB9CisgCisgaW50IHRzdF9jbG9ja19nZXR0aW1lKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLQlyZXR1cm4gc3lzY2FsbChTWVNfY2xvY2tfZ2V0dGltZSwgY2xrX2lkLCB0cyk7CisrCXJldHVybiB0c3Rfc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIGNsa19pZCwgdHMpOworIH0KKyAKKyBpbnQgdHN0X2Nsb2NrX3NldHRpbWUoY2xvY2tpZF90IGNsa19pZCwgc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistCXJldHVybiBzeXNjYWxsKFNZU19jbG9ja19zZXR0aW1lLCBjbGtfaWQsIHRzKTsKKysJcmV0dXJuIHRzdF9zeXNjYWxsKF9fTlJfY2xvY2tfc2V0dGltZSwgY2xrX2lkLCB0cyk7CisgfQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jCitpbmRleCA1ODNkOGY3YjkuLjA4ZWExNjczYSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKK0BAIC0zOCwxMCArMzgsOCBAQAorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlICJ0ZXN0LmgiCistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLQorLSNkZWZpbmUgZ2V0dGltZW9mZGF5KGEsYikgIHN5c2NhbGwoX19OUl9nZXR0aW1lb2ZkYXksYSxiKQorKyNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCisgCisgY2hhciAqVENJRCA9ICJnZXR0aW1lb2ZkYXkwMSI7CisgaW50IFRTVF9UT1RBTCA9IDE7CitAQCAtNjMsNyArNjEsNyBAQCBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKKyAJZm9yIChsYyA9IDA7IFRFU1RfTE9PUElORyhsYyk7IGxjKyspIHsKKyAJCXRzdF9jb3VudCA9IDA7CisgCistCQlURVNUKGdldHRpbWVvZmRheSgodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisrCQlURVNUKGx0cF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisgCisgCQkvKiBnZXR0aW1lb2ZkYXkgcmV0dXJucyBhbiBpbnQsIHNvIHdlIG5lZWQgdG8gdHVybiB0aGUgbG9uZworIAkJICogVEVTVF9SRVRVUk4gaW50byBhbiBpbnQgdG8gdGVzdCB3aXRoICovCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMKK2luZGV4IDFkNjBmNDQ4ZS4uNTE3MGFkMmY3IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworQEAgLTE2LDE0ICsxNiwxMiBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCistCistI2RlZmluZSBnZXR0aW1lb2ZkYXkoYSxiKSAgc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSxhLGIpCisrI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKKyAKKyBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGRvbmU7Cisgc3RhdGljIGNoYXIgKnN0cl9ydGltZTsKK0BAIC00OCwxMyArNDYsMTMgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X2dldHRpbWVvZmRheSh2b2lkKQorIAorIAlhbGFybShydGltZSk7CisgCistCWlmIChnZXR0aW1lb2ZkYXkoJnR2MSwgTlVMTCkpIHsKKysJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYxLCBOVUxMKSkgeworIAkJdHN0X3JlcyhUQlJPSyB8IFRFUlJOTywgImdldHRpbWVvZmRheSgpIGZhaWxlZCIpOworIAkJcmV0dXJuOworIAl9CisgCisgCXdoaWxlICghZG9uZSkgeworLQkJaWYgKGdldHRpbWVvZmRheSgmdHYyLCBOVUxMKSkgeworKwkJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYyLCBOVUxMKSkgeworIAkJCXRzdF9yZXMoVEJST0sgfCBURVJSTk8sICJnZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKTsKKyAJCQlyZXR1cm47CisgCQl9CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWEyNjE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSBlNzQ3ZDA0NTZhZGMwODBhMWQzMWZiNjUzYmRhOWRjNDkxNzk1YzgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBTdW4sIDE2IEp1biAyMDE5IDExOjE0OjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGxzL3Rna2lsbDAzOiB3YWl0IGZvciBkZWZ1bmN0IHRpZCB0byBnZXQgZGV0YWNoZWQKLQotQ2FzZSB3aGVyZSBkZWZ1bmN0IHRpZCBpcyB1c2VkIGhhcyBiZWVuIG9ic2VydmVkIHRvIHNwb3JhZGljYWxseSBmYWlsOgotICB0Z2tpbGwwMy5jOjk2OiBGQUlMOiBEZWZ1bmN0IHRpZCBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBFU1JDSDogU1VDQ0VTUwotCi1nbGliYyBfX3B0aHJlYWRfdGltZWRqb2luX2V4KCkgd2FpdHMgZm9yIENMT05FX0NISUxEX0NMRUFSVElEIHRvIGNsZWFyIHRpZCwKLWFuZCB0aGVuIHJlc3VtZXMuIEtlcm5lbCBjbGVhcnMgaXQgKGdsaWJjIHBkLT50aWQpIGF0OgotICBkb19leGl0Ci0gICAgZXhpdF9tbQotICAgICAgbW1fcmVsZWFzZQotICAgICAgICBwdXRfdXNlcigwLCB0c2stPmNsZWFyX2NoaWxkX3RpZCk7Ci0KLWJ1dCBrZXJuZWwgdGlkIGlzIHN0aWxsIHZhbGlkLCBwcmVzdW1hYmx5IHVudGlsOgotICByZWxlYXNlX3Rhc2sKLSAgICBfX2V4aXRfc2lnbmFsCi0gICAgICBfX3VuaGFzaF9wcm9jZXNzCi0gICAgICAgIGRldGFjaF9waWQKLQotVG8gYXZvaWQgcmFjZSB3YWl0IHVudGlsIC9wcm9jLzxwaWQ+L3Rhc2svPHRpZD4gZGlzYXBwZWFycy4KLQotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1SZXZpZXdlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogU3VtaXQgR2FyZyA8c3VtaXQuZ2FyZ0BsaW5hcm8ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2U3NDdkMDQ1NmFkYzA4MGExZDMxZmI2NTNiZGE5ZGM0OTE3OTVjODBdCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90Z2tpbGwvdGdraWxsMDMuYwotaW5kZXggZjViYmRjNS4uNTkzYTIxNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLUBAIC03LDYgKzcsNyBAQAotIAotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgPHB3ZC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAidHN0X3NhZmVfcHRocmVhZC5oIgotQEAgLTQyLDYgKzQzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSB7Ci0gCXNpZ3NldF90IHNpZ3VzcjE7Ci0gCXB0aHJlYWRfdCBkZWZ1bmN0X3RocmVhZDsKLSsJY2hhciBkZWZ1bmN0X3RpZF9wYXRoW1BBVEhfTUFYXTsKLSAKLSAJc2lnZW1wdHlzZXQoJnNpZ3VzcjEpOwotIAlzaWdhZGRzZXQoJnNpZ3VzcjEsIFNJR1VTUjEpOwotQEAgLTU1LDggKzU3LDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJVFNUX0NIRUNLUE9JTlRfV0FJVCgwKTsKLSAKLSAJU0FGRV9QVEhSRUFEX0NSRUFURSgmZGVmdW5jdF90aHJlYWQsIE5VTEwsIGRlZnVuY3RfdGhyZWFkX2Z1bmMsIE5VTEwpOwotLQotIAlTQUZFX1BUSFJFQURfSk9JTihkZWZ1bmN0X3RocmVhZCwgTlVMTCk7Ci0rCXNwcmludGYoZGVmdW5jdF90aWRfcGF0aCwgIi9wcm9jLyVkL3Rhc2svJWQiLCBnZXRwaWQoKSwgZGVmdW5jdF90aWQpOwotKwlUU1RfUkVUUllfRk5fRVhQX0JBQ0tPRkYoYWNjZXNzKGRlZnVuY3RfdGlkX3BhdGgsIFJfT0spLCAtMSwgMTUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCi1AQCAtMTA4LDQgKzExMSw1IEBAIHN0YXRpYyBzdHJ1Y3QgdHN0X3Rlc3QgdGVzdCA9IHsKLSAJLnNldHVwID0gc2V0dXAsCi0gCS5jbGVhbnVwID0gY2xlYW51cCwKLSAJLnRlc3QgPSBydW4sCi0rCS50aW1lb3V0ID0gMjAsCi0gfTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRmODdmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi1Gcm9tIDA0NjNkNzkzNTY2NzcyYTYwNjI1NTk1NzkxNWY5OWQxNjZkNTc0MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTg6MzA6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdGNhc2VzOiB1c2UgcHl0aG9uMyBldmVyeXdoZXJlIHRvIHJ1biBweXRob24gc2NyaXB0cwotCi1UaGUgc2NyaXB0cyB0aGVtc2VsdmVzIGhhdmUgIyEvdXNyL2Jpbi9weXRob24zIGluIHRoZW0sCi1zbyBJIHRydXN0IHRoZXkgYXJlIGFscmVhZHkgcHkzLWNvbXBhdGlibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2ggICAgIHwgIDIgKy0KLSAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoICAgICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggICAgIHwgIDIgKy0KLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdCAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCi0gdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggICAgICAgfCAgNiArKystLS0KLSA4IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKLWluZGV4IDhhN2QwZjZlMC4uNDNlMjM0ZDAxIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaWYgISBncmVwIHNjaGVkX2RlYnVnIC1xdyAvcHJvYy9jbWRsaW5lIDsgdGhlbgotIAl0c3RfYnJrbSBUQ09ORiAiS2VybmVsIGNtZGxpbmUgcGFyYW1ldGVyICdzY2hlZF9kZWJ1ZycgbmVlZGVkLCIgXAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLWluZGV4IGVjNzgzMTllMi4uOWZlZmNiZjZlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCi1AQCAtMzUsNyArMzUsNyBAQCBlbHNlCi0gCW1heF9zY2hlZF9zbXQ9MQotIGZpCi0gCi0tdHN0X3Rlc3RfY21kcyBweXRob24KLSt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKLSAKLSBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQotIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi1pbmRleCBlMTA3ZmNlMzUuLjJjZDBlY2IwNSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAotQEAgLTMzLDcgKzMzLDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotaW5kZXggNDkwMzQ0YmIzLi5hYjNhNWQxMWQgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLWluZGV4IDk3OGNhMDJhZS4uNDM4ZWY2MDNmIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCi1AQCAtMjcsNyArMjcsNyBAQCBleHBvcnQgVFNUX1RPVEFMPTIKLSAjIENoZWNraW5nIHRlc3QgZW52aXJvbm1lbnQKLSBjaGVja19rZXJ2ZWxfYXJjaAotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotaW5kZXggYTBkYWQ1ODM0Li4zYTlhZmRiZjIgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0IGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLWluZGV4IGQyZTFiNGM0OS4uYTg1OWU4NWJjIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0Ci1AQCAtMjIsNyArMjIsNyBAQCBkbwotIGRvbmUKLSAKLSAjICBjcmVhdGlvbiBvZiB1c2VycyBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgKHJlbW92ZWQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0cykKLS1yc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uICRQV0QvY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbjMgJFBXRC9jcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSAKLSBlY2hvICJTdGFydGluZyBBQ0wgdGVzdGluZyIKLSAKLUBAIC01MSwxOSArNTEsMTkgQEAgZWNobyAiQmFzaWMgdGVzdHMgZmluaXNoZWQiCi0gCi0gZWNobyAiTE9ORyBBQ0wgVEVTVCIKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyIKLS1weXRob24gY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcHl0aG9uMyBjcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyBvbiB0aGUgcmVtb3RlIGhvc3QiCi0gbWtkaXIgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLS1weXRob24gdGVzdF9sb25nX2FjbC5weSAtbCAkTUFYTEVOR1RIIC1wICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0rcHl0aG9uMyB0ZXN0X2xvbmdfYWNsLnB5IC1sICRNQVhMRU5HVEggLXAgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBybSAtcmYgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBlY2hvICJMb25nIEFDTCB0ZXN0IE9LIHdpdGggJE1BWExFTkdUSCBlbnRyaWVzIgotIGVjaG8gIkFDTCBTVFJFU1NJTkcgVEVTVCIKLS1weXRob24gc2V0YWNsX3N0cmVzcy5weSAtbiAxMDAgLXUgJFVTRVJfTkIgLWcgJEdSUF9OQiAtZiAkRklMRV9OQiAtcCAkTkZTTU5URElSCi0rcHl0aG9uMyBzZXRhY2xfc3RyZXNzLnB5IC1uIDEwMCAtdSAkVVNFUl9OQiAtZyAkR1JQX05CIC1mICRGSUxFX05CIC1wICRORlNNTlRESVIKLSAKLSAjIHJlbW92ZSBsb2NhbCBhbiByZW1vdGUgdXNlcnMKLS1weXRob24gY2xlYW51c2Vycy5weQotLXB5dGhvbiBjbGVhbmdyb3Vwcy5weQotLXJzaCAtbiAkUkVNT1RFSE9TVCBweXRob24gJFBXRC9jbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbmdyb3Vwcy5weQotK3JzaCAtbiAkUkVNT1RFSE9TVCBweXRob24zICRQV0QvY2xlYW51c2Vycy5weQotIAotIGVjaG8gIlRlc3QgT0siCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotaW5kZXggZDEzMDI2MDQ5Li4yNzc5ODg1NjggMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKLUBAIC0xNSwxNSArMTUsMTUgQEAgJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0wCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMS5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0xCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMi5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0yCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkyLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTIucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktNC5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS00Ci0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gCi0gZXhwb3J0IExPR19GSUxFPSIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTM2Yjc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAxNTY3NzZhM2UyOTQ5MWIzNjNmZGM5ODExOTEyZTEyOTg2NTVkMDYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RldmVuIFByaWNlIDxzdGV2ZW4ucHJpY2VAYXJtLmNvbT4KLURhdGU6IEZyaSwgMTkgSnVsIDIwMTkgMTM6NDg6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXN0YXQwMjogRml4IEVGQVVMVCBpbiAzMmJpdCBjb21wYXRpYmlsaXR5IG1vZGUKLQotVGhlIHNpemUgb2YgZGV2X3QgaXMgbGFyZ2VyIHRoYW4gMzIgYml0cyB3aGljaCBjYXVzZXMgdGhlIGRldiBhcmd1bWVudAotdG8gYmUgcGFzc2VkIGluY29ycmVjdGx5LiBPbiBBcm0gdGhpcyBtZWFucyB0aGF0IHRoZSBFRkFVTFQgdGVzdCBjYXNlCi1hY3R1YWxseSByZXR1cm5zIEVJTlZBTCBiZWNhdXNlIHRoZSBkZXZpY2UgbnVtYmVyIGlzbid0IHJlY29nbmlzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+Ci1BY2tlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvMTU2Nzc2YTNlMjk0OTFiMzYzZmRjOTgxMTkxMmUxMjk4NjU1ZDA2MF0KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy91c3RhdC91c3RhdDAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotaW5kZXggOWJiZTRmMy4uMWEwZTllMCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotQEAgLTM2LDcgKzM2LDcgQEAgaW50IFRTVF9UT1RBTCA9IEFSUkFZX1NJWkUodGMpOwotIAotIHZvaWQgcnVuKHVuc2lnbmVkIGludCB0ZXN0KQotIHsKLS0JVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAqdGNbdGVzdF0uZGV2LCB0Y1t0ZXN0XS5idWYpKTsKLSsJVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAodW5zaWduZWQgaW50KSp0Y1t0ZXN0XS5kZXYsIHRjW3Rlc3RdLmJ1ZikpOwotIAotIAlpZiAoKFRTVF9SRVQgPT0gLTEpICYmIChUU1RfRVJSID09IHRjW3Rlc3RdLmV4cF9lcnJubykpCi0gCQl0c3RfcmVzKFRQQVNTIHwgVFRFUlJOTywgInVzdGF0KDIpIGV4cGVjdGVkIGZhaWx1cmUiKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJlNDdlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gN2JjMTM0NTQ1YjdiZWIwOTcxN2E2MDU0MTUzMGMyMGExYTU3NDBkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI2IEp1bCAyMDE5IDEwOjU1OjI4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjaGVjayBmb3IgUkVTX1VTRV9JTkVUNiBkdXJpbmcgY29uZmlndXJlCi0KLWdsaWJjIDIuMzAgaGFzIHJlbW92ZSBSRVNfVVNFX0lORVQ2IGRlZmluZSB3aGljaCBoYXMgYmVlbiBvbiBpdHMgd2F5IG91dAotc2luY2UgMi4yNiByZWxlYXNlLCB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkZXRlY3QgaXQgYmVmb3JlIHVzaW5nIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU1Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKwotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8ICA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjU1YjVjMTgxLi5lZDdhY2NjYjAxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05MSw2ICs5MSwxOSBAQCBBQ19DSEVDS19GVU5DUyhbIFwKLSAgICAgdm1zcGxpY2UgXAotIF0pCi0gCi0rI2NoZWNrIGRlZmluZXMKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBSRVNfVVNFX0lORVQ2XSkKLStBQ19DT01QSUxFX0lGRUxTRSggW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxyZXNvbHYuaD5dXSwKLSsgIFtbY2hhciBkdW1teVtSRVNfVVNFX0lORVQ2XTtdXSldLAotKyAgWwotKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXSwKLSsgIFsKLSsgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDAsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXQotKykKLSAjIFRvb2xzIGtub2JzCi0gCi0gIyBFeHBlY3QKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLWluZGV4IDljYzE1ZDA4NmIuLmQxY2FlNTQ0MWEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYwotQEAgLTE3LDYgKzE3LDggQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSAjaWZuZGVmIExPR19QRVJST1IKLSAjZGVmaW5lIExPR19QRVJST1IgMAotICNlbmRpZgotQEAgLTUwLDggKzUyLDEyIEBAIHVzYWdlOgotIAkJYXJndisrLCBhcmdjLS07Ci0gCX0KLSAJaWYgKGFyZ2MgPj0gMSAmJiAhc3RyY21wKCphcmd2LCAiLTYiKSkgewotKyNpZiBIQVZFX1JFU19VU0VfSU5FVDYKLSAJCWFmID0gQUZfSU5FVDYsIHNpemUgPSBJTjZBRERSU1o7Ci0gCQlfcmVzLm9wdGlvbnMgfD0gUkVTX1VTRV9JTkVUNjsKLSsjZWxzZQotKwkJYWYgPSBBRl9JTkVULCBzaXplID0gSU5BRERSU1o7Ci0rI2VuZGlmCi0gCQlhcmd2KyssIGFyZ2MtLTsKLSAJfQotIAlpZiAoYXJnYyA+PSAxICYmICFzdHJjbXAoKmFyZ3YsICItZiIpKSB7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmY5ZWQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA4MWU1YmQ1NDQyMzM3YTRhNjQ4YTBkYmJmZjQ3ZWFhYzBkMzUxMjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoyMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrZXJuZWwvY29udHJvbGxlcnM6IExpbmsgd2l0aCBsaWJmdHMgZXhwbGljaXRseSBvbiBtdXNsCi0KLW11c2wgZG9lcyBub3QgaW1wbGVtZW50IGZ0cyBsaWtlIGdsaWJjIGFuZCB0aGVyZWZvcmUgaXQgZGVwZW5kcyBvbgotZXh0ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBmdHMgQVBJcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jICAgICAgICB8IDMgKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9NYWtlZmlsZS5pbmMgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotaW5kZXggNGNhMGI1YS4uMWQ4NWU0ZCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotQEAgLTM2LDYgKzM2LDkgQEAgTUFLRV9ERVBTCQk6PSAkKExJQikKLSBDUFBGTEFHUwkJKz0gLUkkKGFic19zcmNkaXIpLy4uLyQoTElCRElSKQotIAotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8uLi8kKExJQkRJUikKLStpZmVxICgkKExJQkMpLG11c2wpCi0rTERMSUJTCQkJKz0gLWxmdHMKLStlbmRpZgotIAotIElOU1RBTExfVEFSR0VUUwkJPz0gKi5zaAotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotaW5kZXggZGI2YTg0My4uODZkZDJhOCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jCi1AQCAtNDIsNiArNDIsOSBAQCBNQUtFX0RFUFMJCTo9ICQoTElCQ09OVFJPTExFUlMpICQoTElCQ1BVU0VUKQotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8kKExJQkNQVVNFVF9ESVIpIC1MJChhYnNfYnVpbGRkaXIpLyQoTElCQ09OVFJPTExFUlNfRElSKQotIAotIExETElCUwkJCSs9IC1sY3B1X3NldCAtbGNvbnRyb2xsZXJzIC1sbHRwCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0xETElCUwkJCSs9IC1sZnRzCi0rZW5kaWYKLSAKLSBJTlNUQUxMX1RBUkdFVFMJCT89ICouc2gKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmluZGV4IGMwZjY5ZWMuLmRmM2U4ODMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI5Y2U5ZmRhYjNiZDM0ZTY5ZDczYjViODkwNzk1NTU5YzA2NTUzZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFjZTQ3YTZlZDgxMWZkNzhlZDA0ZWEyZjgyZTYzMjFjNmJjYTU3YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE5OjQwOjA4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGlmIF9fR0xJQkNfUFJFUkVRIGlzIGRlZmluZWQgYmVmb3JlIHVzaW5nIGl0CkBAIC0xMCwxNiArMTAsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCi1pbmRleCBkZDI4OWNmLi43NmFhOTY5IDEwMDY0NAoraW5kZXggMjllMThmMjdkLi4wNzQ0NGE0NmYgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiBAQCAtMzgsNiArMzgsNyBAQAotIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY29ubl9hZGRyOworIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmNvbm5fYWRkciwgKmFjY2VwdF9hZGRyOwogIHN0YXRpYyBpbnQgbGlzdGVuaW5nX2ZkOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKQEAgLTM0LDI1ICszNSwyMSBAQAogIAogIHN0YXRpYyBpbnQgY3JlYXRlX2xpc3RlbmluZ19zb2NrZXQodm9pZCkKICB7Ci1AQCAtMTE1LDYgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIHNpemVvZihjb25uX2FkZHIpKTsKLSAJYWRkcmxlbiA9IHNpemVvZihjbGFkZHIpOworQEAgLTExNCwxMiArMTE2LDE3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKKyAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWNvbm5fYWRkciwgc2l6ZW9mKCpjb25uX2FkZHIpKTsKKyAJYWRkcmxlbiA9IHNpemVvZigqYWNjZXB0X2FkZHIpOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKICAjaWYgIShfX0dMSUJDX1BSRVJFUSgyLCAxMCkpCi0gCVRFU1QoYWNjZXB0NF8wMShsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xhZGRyLCAmYWRkcmxlbiwKKyAJVEVTVChhY2NlcHQ0XzAxKGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWFjY2VwdF9hZGRyLCAmYWRkcmxlbiwKICAJCQkJdGNhc2UtPmNsb2V4ZWMgfCB0Y2FzZS0+bm9uYmxvY2spKTsKLUBAIC0xMjIsNiArMTI1LDEwIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAorICNlbHNlCisgCVRFU1QoYWNjZXB0NChsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKilhY2NlcHRfYWRkciwgJmFkZHJsZW4sCiAgCQkJCXRjYXNlLT5jbG9leGVjIHwgdGNhc2UtPm5vbmJsb2NrKSk7Ci0gI2VuZGlmCisrI2VuZGlmCiArI2Vsc2UKICsJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAogKwkJCQl0Y2FzZS0+Y2xvZXhlYyB8IHRjYXNlLT5ub25ibG9jaykpOwotKyNlbmRpZgorICNlbmRpZgogIAlpZiAoVFNUX1JFVCA9PSAtMSkgewogIAkJaWYgKFRTVF9FUlIgPT0gRU5PU1lTKQotIAkJCXRzdF9icmsoVENPTkYsICJzeXNjYWxsIF9fTlJfYWNjZXB0NCBub3Qgc3VwcG9ydGVkIik7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA0ZWRmYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDYwMDU0Njg2ZTJjMWE0YmVkZjFkNTA3YWY5N2ViYmI3ZmY0OTFlNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEp1bCAyMDE5IDE1OjIzOjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJ0X3Rnc2lncXVldWVpbmZvOiBkaXNhYmxlIHRlc3Qgb24gbXVzbAotCi1GaXggYnVpbGQgZXJyb3Igd2l0aCBtdXNsOgotcnRfdGdzaWdxdWV1ZWluZm8wMS5jOiBJbiBmdW5jdGlvbiAnc2lndXNyMV9oYW5kbGVyJzoKLXJ0X3Rnc2lncXVldWVpbmZvMDEuYzo0MjoyMjogZXJyb3I6ICdzaWdpbmZvX3QnIHtha2EgJ3N0cnVjdCA8YW5vbnltb3VzPid9IGhhcyBubyBtZW1iZXIgbmFtZWQgJ19zaWZpZWxkcyc7IGRpZCB5b3UgbWVhbiAnX19zaV9maWVsZHMnPwotICAgNDIgfCAgc2lndmFsX3JjdiA9IHVpbmZvLT5fc2lmaWVsZHMuX3J0LlNJX1NJR1ZBTC5zaXZhbF9wdHI7Ci0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBfX3NpX2ZpZWxkcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCBkMWJlY2QwLi4xZjNmZjM0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTMxLDcgKzMxLDcgQEAgZW5kaWYKLSBpZmVxICgkKExJQkMpLG11c2wpCi0gRklMVEVSX09VVF9ESVJTCSs9IGNvbmZzdHIgZm10bXNnIGdldGNvbnRleHQgaW9jdGwgbWFsbG9wdCBwcm9maWwgXAotIAkJICAgcnRfc2lnc3VzcGVuZCBzZXRkb21haW5uYW1lIHNldGhvc3RuYW1lIHNpZ3N1c3BlbmQgXAotLQkJICAgdXN0YXQKLSsJCSAgIHVzdGF0IHJ0X3Rnc2lncXVldWVpbmZvCi0gZW5kaWYKLSAKLSBpZmVxICgkKFVDTElCQyksMSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAppbmRleCBiNDYzMjVlLi4zNTAwOTFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaApAQCAtMSwzMyArMSwzNCBAQAotRnJvbSBhYTdhOTE4NWEwMzdhZDU5MDEyYmQ0NjcxM2FjMzQwNDU4ZTk1MjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YjdkYjA5NGQ2ZmM1NjU5MDAxYWU4ZGMxNzA3OGJiNjVkNDZiOWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxMyBNYXkgMjAxNiAxMToxMToyOCAtMDUwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jOiBTZWN1cml0eSBmaXggb24KLSBzdHJpbmcgcHJpbnRmCitTdWJqZWN0OiBbUEFUQ0hdIGFjbDogU2VjdXJpdHkgZml4IG9uIHN0cmluZyBwcmludGYKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAotRml4ZXM6CitGaXhlcyBidWlsZCBlcnJvciB3aGVuIGNvbXBpbGVkIHdpdGggLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHk6CiAKLWFjbDEuYzogSW4gZnVuY3Rpb24gJ3Rlc3RfYWNsX2RlZmF1bHQnOgotYWNsMS5jOjMxNzoyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzCi1bLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gIHByaW50ZihjbWQpOworYWNsMS5jOiBJbiBmdW5jdGlvbiDigJh0ZXN0X2FjbF9kZWZhdWx04oCZOgorYWNsMS5jOjMwNToyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgMzA1IHwgIHByaW50ZihjbWQpOworCitQYXRjaCB0YWtlbiBmcm9tIG9wZW5lbWJlZGRlZC1jb3JlLAorb3JpZ2luYWwgYnVnIHJlcG9ydDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLzk1NDgKIAogW1lPQ1RPICM5NTQ4XQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQogU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1Vwc3RyZWFtLVN0YXR1czogYWNjZXB0ZWQgaW4gNGI3ZGIwOTRkNmZjNTY1OTAwMWFlOGRjMTcwNzhiYjY1ZDQ2YjljOQogLS0tCiAgdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1pbmRleCBiZGYwMTgwLi44OThiN2NhIDEwMDY0NAoraW5kZXggYWFlOTQ4NGU1Li5hZDc3OGNkMzMgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCiArKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1AQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgdGVzdF9hY2xfZGVmYXVsdChjaGFyICpkaXIsIGFjbF90IGFjbCkKK0BAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCB0ZXN0X2FjbF9kZWZhdWx0KGNoYXIgKmRpciwgYWNsX3QgYWNsKQogIAljaGFyICpjbWQgPSBtYWxsb2MoMjU2KTsKICAKICAJc3RyY3B5KGNtZCwgImNobW9kIDc3NzcgIik7CkBAIC0zNyw1ICszOCw1IEBACiAgCXN5c3RlbShjbWQpOwogIAlhY2wyID0gYWNsX2dldF9maWxlKHBhdGgsIEFDTF9UWVBFX0FDQ0VTUyk7CiAtLSAKLTIuNy40CisyLjI1LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmFjMWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYTg3MTVhMTQ0NjMwNWZmZDc2NDA2ZjYzYzdmMTYwYzEzYTViMmU3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTAgT2N0IDIwMTggMjI6MDc6MDUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3Blbl9wb3NpeF90ZXN0c3VpdGUvbW1hcDI0LTI6IFJlbGF4IGNvbmRpdGlvbiBhIGJpdAotCi1NaXBzIHdpbGwgcmV0dXJuIEVJTlZBTCBpbnN0ZWFkIG9mIEVOT01FTSBhcyBleHBlY3RlZAotaWYgdGhlIHJhbmdlIFthZGRyICsgbGVuKSBleGNlZWRzIFRBU0tfU0laRS4KLQotTGludXgga2VybmVsIGNvZGU6IGFyY2gvbWlwcy9tbS9tbWFwLmMKLWlmIChmbGFncyAmIE1BUF9GSVhFRCkgewotICAgIC8qIEV2ZW4gTUFQX0ZJWEVEIG1hcHBpbmdzIG11c3QgcmVzaWRlIHdpdGhpbiBUQVNLX1NJWkUgKi8KLSAgICBpZiAoVEFTS19TSVpFIC0gbGVuIDwgYWRkcikKLSAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0KLVJlbGF4IHRoZSBjb25kaXRpb24gYW5kIGFjY2VwdCBib3RoIEVOT01FTSBhbmQgRUlOVkFMCi1hcyBleHBlY3RlZCBvdXRjb21lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTgtT2N0b2Jlci8wMDk2MjQuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIC4uLi9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jICAgIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1pbmRleCA5Y2Y4M2Q5Li41NTA5MGE2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKLSsrKyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1AQCAtNyw3ICs3LDcgQEAKLSAgKiBzb3VyY2UgdHJlZS4KLSAgKgotICAqIFRoZSBtbWFwKCkgZnVuY3Rpb24gc2hhbGwgZmFpbCBpZjoKLS0gKiBbRU5PTUVNXSBNQVBfRklYRUQgd2FzIHNwZWNpZmllZCwKLSsgKiBbRU5PTUVNIG9yIEVJTlZBTF0gTUFQX0ZJWEVEIHdhcyBzcGVjaWZpZWQsCi0gICogYW5kIHRoZSByYW5nZSBbYWRkcixhZGRyK2xlbikgZXhjZWVkcyB0aGF0IGFsbG93ZWQKLSAgKiBmb3IgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYSBwcm9jZXNzOyBvciwgaWYgTUFQX0ZJWEVEIHdhcyBub3Qgc3BlY2lmaWVkIGFuZAotICAqIHRoZXJlIGlzIGluc3VmZmljaWVudCByb29tIGluIHRoZSBhZGRyZXNzIHNwYWNlIHRvIGVmZmVjdCB0aGUgbWFwcGluZy4KLUBAIC0xNSw3ICsxNSw3IEBACi0gICogVGVzdCBTdGVwOgotICAqIDEuIE1hcCBhIHNoYXJlZCBtZW1vcnkgb2JqZWN0LCB3aXRoIHNpemUgZXhjZWVkaW5nIHRoZSB2YWx1ZSBnZXQgZnJvbQotICAqICAgIHJsaW1fY3VyIG9mIHJlc291cmNlIFJMSU1JVF9BUywgc2V0dGluZyBNQVBfRklYRUQ7Ci0tICogMy4gU2hvdWxkIGdldCBFTk9NRU0uCi0rICogMy4gU2hvdWxkIGdldCBFTk9NRU0gb3IgRUlOVkFMLgotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTkyLDggKzkyLDggQEAgaW50IG1haW4odm9pZCkKLSAJICAgICAgICh1bnNpZ25lZCBsb25nKWxlbik7Ci0gCXBhID0gbW1hcChhZGRyLCBsZW4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9GSVhFRCB8IE1BUF9TSEFSRUQsIGZkLAotIAkJICAwKTsKLS0JaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgZXJybm8gPT0gRU5PTUVNKSB7Ci0tCQlwcmludGYoIkdvdCBFTk9NRU06ICVzXG5UZXN0IFBBU1NFRFxuIiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgKGVycm5vID09IEVOT01FTSB8fCBlcnJubyA9PSBFSU5WQUwpKSB7Ci0rCQlwcmludGYoIkdvdCBFTk9NRU0gb3IgRUlOVkFMOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gCQlleGl0KFBUU19QQVNTKTsKLSAJfQotIAotQEAgLTEwMiw2ICsxMDIsNiBAQCBpbnQgbWFpbih2b2lkKQotIAllbHNlCi0gCQltdW5tYXAocGEsIGxlbik7Ci0gCWNsb3NlKGZkKTsKLS0JcHJpbnRmKCJUZXN0IEZhaWw6IERpZCBub3QgZ2V0IEVOT01FTSBhcyBleHBlY3RlZFxuIik7Ci0rCXByaW50ZigiVGVzdCBGYWlsZWQ6IERpZCBub3QgZ2V0IEVOT01FTSBvciBFSU5WQUwgYXMgZXhwZWN0ZWRcbiIpOwotIAlyZXR1cm4gUFRTX0ZBSUw7Ci0gfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzA0ZTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA3OTQ5MzNiMzgzNTRhMjYxMmNmMmM0NzFmMTE3OThiMzA2ZjM1MzE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIwIE1heSAyMDE5IDIwOjQ3OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNobWN0bDAxOiBkb24ndCB1c2UgaGFyZGNvZGVkIGluZGV4ID09IDAgZm9yIFNITV9TVEFUIHRlc3QKLQotVGVzdCBmYWlscyBvbiBTSE1fU1RBVCB0ZXN0Y2FzZToKLSAgIHNobWN0bDAxICAgIDUgIFRGQUlMICA6ICBzaG1jdGwwMS5jOjE3Mzogc2htY3RsMDEgY2FsbCBmYWlsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubyA9IDIyIDogSW52YWxpZCBhcmd1bWVudAotICAgc2htY3RsKDAsIFNITV9TVEFULCAweDYwMTA2MCkgICAgICAgICAgID0gLUVJTlZBTAotCi1zaW5jZSBmb2xsb3dpbmcgY29tbWl0OgotICAgY29tbWl0IDk5ZGI0NmVhMjkyNzgwY2Q5NzhkNTY5MzJkOTQ0NWIxZThiZGFmZTgKLSAgIEF1dGhvcjogTWFuZnJlZCBTcHJhdWwgPG1hbmZyZWRAY29sb3JmdWxsaWZlLmNvbT4KLSAgIERhdGU6ICAgVHVlIE1heSAxNCAxNTo0NjozNiAyMDE5IC0wNzAwCi0gICAgIGlwYzogZG8gY3ljbGljIGlkIGFsbG9jYXRpb24gZm9yIHRoZSBpcGMgb2JqZWN0LgotCi1Eb24ndCByZWx5IG9uIGluZGV4IDAgYmVpbmcgYWx3YXlzIGF2YWlsYWJsZSwgYnV0IGluc3RlYWQKLXVzZSAobWF4aW11bSkgaW5kZXggcmV0dXJuZWQgYnkgU0hNX0lORk8uCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2RiMGE0M2Q5Mzg4YmUyYzM0N2E4MzA2NzUxYmJlNmJlYzA4NmQwNjJdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkgU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYyB8IDIxICsrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotaW5kZXggMWI0Njk3Ny4uNTJiZjIzYSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL3NobWN0bC9zaG1jdGwwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGljIHZvaWQgZnVuY19pbmZvKGludCByZXQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9TVEFUICovCi0gc3RhdGljIHZvaWQgZnVuY19zc3RhdChpbnQgcmV0KTsKLStzdGF0aWMgdm9pZCBmdW5jX3NzdGF0X3NldHVwKHZvaWQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9MT0NLICovCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpOwotQEAgLTExMCw3ICsxMTEsNyBAQCBzdGF0aWMgc3RydWN0IHRlc3RfY2FzZV90IHsKLSAjZW5kaWYKLSAJeyZzaG1faWRfMSwgSVBDX1NFVCwgJmJ1ZiwgZnVuY19zZXQsIHNldF9zZXR1cH0sCi0gCXsmc2htX2lkXzEsIElQQ19JTkZPLCAoc3RydWN0IHNobWlkX2RzICopICZpbmZvLCBmdW5jX2luZm8sIE5VTEx9LAotLQl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIE5VTEx9LAotKwl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIGZ1bmNfc3N0YXRfc2V0dXB9LAotIAl7JnNobV9pZF8xLCBTSE1fTE9DSywgTlVMTCwgZnVuY19sb2NrLCBOVUxMfSwKLSAJeyZzaG1faWRfMSwgU0hNX1VOTE9DSywgTlVMTCwgZnVuY191bmxvY2ssIE5VTEx9LAotIAl7JnNobV9pZF8xLCBJUENfUk1JRCwgTlVMTCwgZnVuY19ybWlkLCBOVUxMfSwKLUBAIC00MDcsOSArNDA4LDIzIEBAIHN0YXRpYyB2b2lkIGZ1bmNfaW5mbyhpbnQgcmV0KQotIHN0YXRpYyB2b2lkIGZ1bmNfc3N0YXQoaW50IHJldCkKLSB7Ci0gCWlmIChyZXQgPj0gMCkKLS0JCXRzdF9yZXNtKFRQQVNTLCAiZ2V0IGNvcnJlY3Qgc2hhcmVkIG1lbW9yeSBpZCIpOwotKwkJdHN0X3Jlc20oVFBBU1MsICJnZXQgY29ycmVjdCBzaGFyZWQgbWVtb3J5IGlkIGZvciBpbmRleDogJWQiLAotKwkJCXNobV9pbmRleCk7Ci0gCWVsc2UKLS0JCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QiKTsKLSsJCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QsIGluZGV4OiAlZCIsCi0rCQkJc2htX2luZGV4KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZnVuY19zc3RhdF9zZXR1cCh2b2lkKQotK3sKLSsJc3RydWN0IHNobV9pbmZvIHRtcDsKLSsJaW50IHJldDsKLSsKLSsJcmV0ID0gc2htY3RsKHNobV9pZF8xLCBTSE1fSU5GTywgKHZvaWQgKikmdG1wKTsKLSsJaWYgKHJldCA8IDApCi0rCQl0c3RfcmVzbShURkFJTHxURVJSTk8sICJzaG1jdGwoU0hNX0lORk8pIik7Ci0rCWVsc2UKLSsJCXNobV9pbmRleCA9IHJldDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QxODhmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGYyMTBkN2UxOWI3MjEwNDFmMzFiN2YyNThhMTY5Zjg5ZGM4NTAzMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgNCBKdWwgMjAxOSAxNjo0NToyMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBkaXJlY3RfaW8vZGlvdGVzdDQ6IGRyb3AgTUFQX0ZJWEVECi0KLUhvbmd6aGkgcmVwb3J0cyB0aGF0IHRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIG1pcHM2NCB3aXRoIDUuMSs6Ci0gIGRpb3Rlc3Q0IDEwIFRCUk9LIDogZGlvdGVzdDQuYzozNjg6IGNhbid0IG1tYXAgZmlsZTogSW52YWxpZCBhcmd1bWVudAotICBkaW90ZXN0NCAxMSBUQlJPSyA6IGRpb3Rlc3Q0LmM6MzY4OiBSZW1haW5pbmcgY2FzZXMgYnJva2VuCi1JIGNvdWxkIHJlcHJvZHVjZSBpdCBvbiBlbXVsYXRlZCA1a2MtbWFsdGEsIHJ1bm5pbmcgNS4yLjAtcmM3LgotCi1UZXN0IGlzIHRyeWluZyB0byBtYXAgaW50byBhcmVhIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBoZWFwIGFzIE1BUF9TSEFSRUQsCi1idXQgaXQgdXNlZCB3cm9uZyBhbGlnbm1lbnQgKGZpeGVkIGJ5ICdsYXBpL21tYXAuaDogaW5jbHVkZSBjb25maWcuaCcpLgotCi1Vc2FnZSBvZiBNQVBfRklYRUQgc2VlbXMgdW5uZWNlc3NhcnksIHNvIGRyb3AgdGhhdCB0b28gYW5kIGxldCB0aGUga2VybmVsCi1waWNrIGFuIGFkZHJlc3MuCi0KLVJlcG9ydGVkLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZjU0NDRlZWVhYmYyNTJiODg4NGI5NDY1ZDI3N2I2YWY4NTM4MTllM10KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyB8IDggKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvaW8vZGlyZWN0X2lvL2Rpb3Rlc3Q0LmMKLWluZGV4IGU0NjE2ZTQuLmJmMjAwY2QgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi1AQCAtMzUyLDE4ICszNTIsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJdG90YWwrKzsKLSAKLSAJLyogVGVzdC0xMDogcmVhZCwgd3JpdGUgdG8gYSBtbWFwZWQgZmlsZSAqLwotLQlzaG1fYmFzZSA9IChjaGFyICopKCgobG9uZylzYnJrKDApICsgKHNobXN6IC0gMSkpICYgfihzaG1zeiAtIDEpKTsKLS0JaWYgKHNobV9iYXNlID09IE5VTEwpIHsKLS0JCXRzdF9icmttKFRCUk9LLCBjbGVhbnVwLCAic2JyayBmYWlsZWQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JfQotIAlvZmZzZXQgPSA0MDk2OwotIAljb3VudCA9IGJ1ZnNpemU7Ci0gCWlmICgoZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0RJUkVDVCB8IE9fUkRXUikpIDwgMCkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBvcGVuICVzOiAlcyIsCi0gCQkJIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotIAl9Ci0tCXNobV9iYXNlID0gbW1hcChzaG1fYmFzZSwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0tCQkJTUFQX1NIQVJFRCB8IE1BUF9GSVhFRCwgZmQsIDApOwotKwlzaG1fYmFzZSA9IG1tYXAoMCwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0rCQkJTUFQX1NIQVJFRCwgZmQsIDApOwotIAlpZiAoc2htX2Jhc2UgPT0gKGNhZGRyX3QpIC0gMSkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBtbWFwIGZpbGU6ICVzIiwKLSAJCQkgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjYmM4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gNGFjNzQ3YzFmN2ZmOGUyZWMyNTY3ZDY2NzI4MjJlOTVhOWI1NmU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMDM6Mzk6MDYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2V0cmxpbWl0MDM6IGFkanVzdCBhIGJpdCBvZiBjb2RlIHRvIGNvbXBhdGlhYmxlIHdpdGggbWlwczMyCi0KLUVycm9yIGluZm86Ci1nZXRybGltaXQwMy5jOjEwNDogRkFJTDogX19OUl9wcmxpbWl0NjQoMCkgaGFkIHJsaW1fY3VyID0KLWZmZmZmZmZmZmZmZmZmZmYgYnV0IF9fTlJfZ2V0cmxpbWl0KDApIGhhZCBybGltX2N1ciA9IDdmZmZmZmZmCi0KLUFjY29yZGluZyB0byBrZXJuZWwgY29kZTogW2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3Jlc291cmNlLmhdCi1STElNX0lORklOSVRZIGlzIHNldCB0byAweDdmZmZmZmZmVUwgaW5zdGVhZCBvZiBVTE9OR19NQVggb24gbWlwczMyLgotCi0gLyoKLSAqIFN1UyBzYXlzIGxpbWl0cyBoYXZlIHRvIGJlIHVuc2lnbmVkLgotICogV2hpY2ggbWFrZXMgYSB0b24gbW9yZSBzZW5zZSBhbnl3YXksCi0gKiBidXQgd2Uga2VlcCB0aGUgb2xkIHZhbHVlIG9uIE1JUFMzMiwKLSAqIGZvciBjb21wYXRpYmlsaXR5OgotICovCi0gI2lmbmRlZiBfX21pcHM2NAotICMgZGVmaW5lIFJMSU1fSU5GSU5JVFkgICAgICAweDdmZmZmZmZmVUwKLSAjZW5kaWYKLQotQWRkaW5nIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBhYm91dCBtaXBzIHRvIGZpeCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvN2EzYmNhNjNjZDdmMDU5ZDQ5MGI2Mjc0ZjBmZGYzMjQ3YmU5M2ZkZV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMgfCA4ICsrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRybGltaXQvZ2V0cmxpbWl0MDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMKLWluZGV4IGU0ZDU2YzQuLjMxOWJjNDkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi1AQCAtMjYsNiArMjYsNyBAQAotIAotICNpbmNsdWRlICJ0c3RfdGVzdC5oIgotICNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCi0rI2luY2x1ZGUgImxhcGkvYWJpc2l6ZS5oIgotIAotIC8qKgotICAqIExpbnV4IHByb3ZpZGVzIGFuICJvbGQiIGdldHJsaW1pdCBzeXNjYWxsIGhhbmRsZXIgdGhhdCB1c2VzIHNpZ25lZCBsb25nLAotQEAgLTYxLDcgKzYyLDEyIEBAIHN0cnVjdCBybGltaXRfdWxvbmcgewotIAl1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwotIAl1bnNpZ25lZCBsb25nIHJsaW1fbWF4OwotIH07Ci0tY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gVUxPTkdfTUFYOwotKwotKyNpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiBkZWZpbmVkKFRTVF9BQkkzMikKLSsJY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gMHg3ZmZmZmZmZlVMOwotKyNlbHNlCi0rCWNvbnN0IHVuc2lnbmVkIGxvbmcgUkxJTV9JTkZJTklUWV9VTCA9IFVMT05HX01BWDsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGdldHJsaW1pdF91bG9uZyhpbnQgcmVzb3VyY2UsIHN0cnVjdCBybGltaXRfdWxvbmcgKnJsaW0pCi0gewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhYTk2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGludXgtdGVzdC1wcm9qZWN0LmdpdGh1Yi5pby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLQotIyBzaW5jZSBsdHAgY29udGFpbnMgeDg2LTY0IGFzc2VtYmxlciB3aGljaCB1c2VzIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyLAotIyBzZXQgLWZvbWl0LWZyYW1lLXBvaW50ZXIgeDg2LTY0IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24KLSMgaXMgc2V0IHRvIC1PMCBvciBmcmFtZSBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgotIyBlYXJsaWVyIGluIENGTEFHUywgZXRjLgotQ0ZMQUdTX2FwcGVuZF94ODYtNjQgPSAiIC1mb21pdC1mcmFtZS1wb2ludGVyIgotCi1DRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1DRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLVNSQ1JFViA9ICJhYzMzZWY4N2YwYjlkYzU2NTMzMDI2NDM1YmUzZWE4YzY3Y2U4NmQyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtdGVzdF9wcm9jX2tpbGwtaGFuZ2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3ItZ2V0ZGVudHMtZ2V0ZGVudHM2NC1BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jaGVjay1mb3ItUkVTX1VTRV9JTkVUNi1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzdGF0MDItRml4LUVGQVVMVC1pbi0zMmJpdC1jb21wYXRpYmlsaXR5LW1vZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ta3N3YXAwMS5zaC1BZGQtdWRldmFkbS10cmlnZ2VyLWJlZm9yZS1zd2FwLXZlcmlmaWNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgotIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAotCi0gICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KLSAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCi0gICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAotICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKLSAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgotICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKLSAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAotCi0gICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAotICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBhY2wgXAotICAgIGF0IFwKLSAgICBhdHRyIFwKLSAgICBiYXNoIFwKLSAgICBjcGlvIFwKLSAgICBjcm9uaWUgXAotICAgIGN1cmwgXAotICAgIGUyZnNwcm9ncy1ta2UyZnMgXAotICAgIGV4cGVjdCBcCi0gICAgZmlsZSBcCi0gICAgZ2F3ayBcCi0gICAgZ3ppcCBcCi0gICAgaXByb3V0ZTIgXAotICAgIGxkZCBcCi0gICAgbGliYWlvIFwKLSAgICBsb2dyb3RhdGUgXAotICAgIHBlcmwgXAotICAgIHB5dGhvbjMtY29yZSBcCi0gICAgcHJvY3BzIFwKLSAgICBxdW90YSBcCi0gICAgdW56aXAgXAotICAgIHV0aWwtbGludXggXAotICAgIHdoaWNoIFwKLSAgICB0YXIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgotCi0jIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKLUlOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMjAwMTIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saW51eC10ZXN0LXByb2plY3QuZ2l0aHViLmlvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQlM9LWxmdHMgIgorCisjIHNpbmNlIGx0cCBjb250YWlucyB4ODYtNjQgYXNzZW1ibGVyIHdoaWNoIHVzZXMgdGhlIGZyYW1lLXBvaW50ZXIgcmVnaXN0ZXIsCisjIHNldCAtZm9taXQtZnJhbWUtcG9pbnRlciB4ODYtNjQgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbgorIyBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCisjIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX3g4Ni02NCA9ICIgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjQwNzlhYWYyNjRkMGU5ZWFkMDQyYjU5ZDFjNWY0ZTY0MzYyMGQwZDUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5naW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1tb3JlLW11c2wtZXhjbHVzaW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGxzLUNoZWNrLWZvci10aW1lNjQtdW5zYWZlLXN5c2NhbGxzLWJlZm9yZS11c2kucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0LyR7UE59IgorZXhwb3J0IGV4ZWNfcHJlZml4ID0gIi9vcHQvJHtQTn0iCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgorIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9LworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0ke3ByZWZpeH0vdGVzdGNhc2VzIGJ5IG1hbnVhbAorICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9JHtwcmVmaXh9L3Rlc3RjYXNlcworCisgICAgIyBNYWtlZmlsZSB3ZXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbQorICAgIGZpbmQgJHtEfSR7cHJlZml4fSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIC1uIDEgc2VkIC1pIFwKKyAgICAgICAgIC1lICdzQFteIF0qLWZkZWJ1Zy1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAgLWUgJ3NAW14gXSotZm1hY3JvLXByZWZpeC1tYXA9W14gIl0qQEBnJyBcCisgICAgICAgICAtZSAnc0BbXiBdKi0tc3lzcm9vdD1bXiAiXSpAQGcnIAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGZpbGUgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgcXVvdGEgXAorICAgIHVuemlwIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB3aGljaCBcCisgICAgdGFyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8qICR7cHJlZml4fS9ydW50ZXN0LyogJHtwcmVmaXh9L3NjZW5hcmlvX2dyb3Vwcy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvYmluLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAke3ByZWZpeH0vdGVzdHNjcmlwdHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hICR7cHJlZml4fS9saWIvbGlibWVtLmEiCisKKyMgQXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIiR7cHJlZml4fS90ZXN0Y2FzZXMvYmluL25tMDEgJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vbGRkMDEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCisKKyMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAorIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKKyMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0CisjIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQorU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4M2IyMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgotSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZWMwYjIzYzgzMTRhMTY1NGM0ZDA1OWIyYzE4Y2U0M2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjljZDViYjk5NjMwNWQwOGJmZTllMTExNGVkYzMwYjRjOTdiZTgwNzA5M2I4OGFmODAzM2VkMWNmOWJlYjMyNiIKLQotREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKLQotIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKLVVTRV9OTFNfbGliYy1tdXNsID0gIm5vIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLSAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCi1SUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MTQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgorSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiNTkzZjRmMGEyNmFiNGY2NmY1YjgxY2Y2YzBjNzM2NGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmEzZDhhZmM1YzA5YTcyNjVhOGRhYmZhMGU3YzFmNGIzYWI5N2RmOWFiZjFmNjgxMGZhYThmMzAxMDU2Yzc0ZiIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCitSUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg1MjVmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4YWJlYWQ3NzZhNTA2MTA5ZTEyOGFiOTZiY2JiZTU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3MGJlZjc5NGM2ODI2YjNmYjM5NjVkMWEyZWZkYjQ2YzI1Y2IzN2MwNmM3MTU5ODdmODhhNTA5MDZjZDViNmYiCi0KLWluaGVyaXQgbWFucGFnZXMKLQotTUFOX1BLRyA9ICIke1BOfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyBjcnlwdC4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NyeXB0LjNdID0gIiR7bWFuZGlyfS9tYW4zL2NyeXB0LjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wNS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZGFkNWRlYjE1MTE3ZTYwYTZkOWUzYTZiZGMwMzViNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0M2MzM2QyZWVhOWJhOTg5YzE4ZWVmOTAyOThjZjZkNTUyMWZmMDM4ZGViNTFjZGEwZWNkMGZkYzNjZWMyYjdkIgorCitpbmhlcml0IG1hbnBhZ2VzCisKK01BTl9QS0cgPSAiJHtQTn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMgY3J5cHQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcnlwdC4zXSA9ICIke21hbmRpcn0vbWFuMy9jcnlwdC4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjM1NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMGQ2NzdhMDE0YTg3Yjk2OGQ3OWVlYTIzNTNhYzRlMzQyYjBmZDRjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBXZWQsIDExIFNlcCAyMDE5IDIyOjU4OjE4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFRpY2tldCAjMzYyOTogY29uZmlndXJlLmFjOiBkcm9wIGJ1bmRsZWQgZ2V0dGV4dAorCitCdW5kbGVkIGxpYmludGwgZGlkIG5vdCBzdXBwb3J0IGxpbmtpbmcgdG8gaW50ZXJuYWwgc3RhdGljCitsaWJyYXJpZXMgKGxpYm1jIGluIG91ciBjYXNlKTogZGlyZWN0bHkgc3BlY2lmaWVkIHN0YXRpYworbGlicmFyaWVzIGFyZSBub3QgcHVsbGVkIGJ5IGxpYnRvb2wgYW5kIGFyZSBub3QgdXNhYmxlIGZvcgorZHluYW1pYyBsaWJyYXJpZXMgYXMgUElDLXJlbGF0ZWQgZmxhZ3MgYXJlIG5vdCBwYXNzZWQgZm9yCitjb21waWxhdGlvbi4KKworVGhpcyByZW5kZXJzIGJ1bmRsZWQgbGliaW50bCBsaWJyYXJ5IHVudXNhYmxlLgorCitUaGUgY2hhbmdlIGRyb3BzIGxpYmludGwgYnVuZGxpbmcgc3VwcG9ydCBhbmQgYWx3YXlzIHJlbGllcworb24gZXh0ZXJuYWwgbGliaW50bCAob3IgZmFsbHMgYmFjayB0byBkaXNhYmxlZCBOTFMpLgorCitPbiBhIHJlbGF0ZWQgbm90ZSBnZXR0ZXh0LTAuMjAgZHJvcHMgc3VwcG9ydCBmb3IgYnVuZGxpbmcKK29yIGxpYmludGwgYW5kIHRoaXMgY2hhbmdlIHdpbGwgZWFzZSBtaWdyYXRpb24gdG8gbmV3ZXIgdmVyc2lvbi4KKworVGhlIGNoYW5nZSBpcyB0ZXN0ZWQgb24geDg2XzY0LWdlbnRvby1saW51eC1tdXNsOiBtYyBidWlsZHMKK2FuZCBsaW5rcyBhbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5LiBBIGZldyB0ZXN0cyBmYWlsIGZvciBsYWNrCitvZiBOTFMgc3VwcG9ydC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL01pZG5pZ2h0Q29tbWFuZGVyL21jL2NvbW1pdC9mMzBlNmZmMjgzZjRiYzg2MTc3ZTQzNjBkZTk0ZGFkNzk0Njc4Mzk1XQorU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFRyb2ZpbW92aWNoIDxzbHlmb3hAZ2VudG9vLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8IDUgKysrLS0KKyBkb2MvZG94eWdlbi5jZmcgICAgICAgfCAyICstCisgbGliL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQorIG00LmluY2x1ZGUvbWMtaTE4bi5tNCB8IDUgLS0tLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhYzA1YTgzLi5mODZmNmVkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIGNyZWF0ZSBNYWtlZmlsZS5pbi4KKyBBVVRPTUFLRV9PUFRJT05TID0gMS41CisgCistU1VCRElSUyA9IGludGwgcG8gbGliIHNyYyBkb2MgY29udHJpYiBtaXNjCisrU1VCRElSUyA9IHBvIGxpYiBzcmMgZG9jIGNvbnRyaWIgbWlzYworIAorIGlmIEhBVkVfVEVTVFMKKyAgICAgU1VCRElSUyArPSB0ZXN0cworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTE5NDhmNi4uYmJjOWU3MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjcyLDcgKzI3Miw5IEBAIGRubCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgZG5sIEludGVybmF0aW9uYWxpemF0aW9uCisgZG5sICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKy1BTV9HTlVfR0VUVEVYVChbbm8tbGlidG9vbF0sIFtuZWVkLW5nZXR0ZXh0XSkKKytBQ19DSEVDS19GVU5DUyhbc2V0bG9jYWxlXSkKKysKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdLCBbbmVlZC1uZ2V0dGV4dF0pCisgQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbMC4xOC4xXSkKKyAKKyBtY19JMThOCitAQCAtNjgwLDcgKzY4Miw2IEBAIGRvYy9obHAvcGwvTWFrZWZpbGUKKyBkb2MvaGxwL3J1L01ha2VmaWxlCisgZG9jL2hscC9zci9NYWtlZmlsZQorIAorLWludGwvTWFrZWZpbGUKKyBwby9NYWtlZmlsZS5pbgorIF0pCisgCitkaWZmIC0tZ2l0IGEvZG9jL2RveHlnZW4uY2ZnIGIvZG9jL2RveHlnZW4uY2ZnCitpbmRleCAwN2JjOTczLi4xMTE4MDYyIDEwMDY0NAorLS0tIGEvZG9jL2RveHlnZW4uY2ZnCisrKysgYi9kb2MvZG94eWdlbi5jZmcKK0BAIC05MSw3ICs5MSw3IEBAIEZJTEVfUEFUVEVSTlMgICAgICAgICAgPSAqLmMgXAorIFJFQ1VSU0lWRSAgICAgICAgICAgICAgPSBZRVMKKyBFWENMVURFICAgICAgICAgICAgICAgID0KKyBFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KKy1FWENMVURFX1BBVFRFUk5TICAgICAgID0gKi9pbnRsLyogKi90ZXN0cy8qICovLmdpdC8qCisrRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICovdGVzdHMvKiAqLy5naXQvKgorIEVYQ0xVREVfU1lNQk9MUyAgICAgICAgPQorIEVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAkKFNSQ0RJUikKKyBFWEFNUExFX1BBVFRFUk5TICAgICAgID0KK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IGM0NDhlMmQuLjQ1NWY5ZGQgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTc0LDQgKzc0LDQgQEAgZWxzZQorICAgICBsaWJtY19sYV9MSUJBREQgKz0gJChHTElCX0xJQlMpCisgZW5kaWYKKyAKKy1saWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpICQoTElCSUNPTlYpICQoTElCSU5UTCkKKytsaWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpCitkaWZmIC0tZ2l0IGEvbTQuaW5jbHVkZS9tYy1pMThuLm00IGIvbTQuaW5jbHVkZS9tYy1pMThuLm00CitpbmRleCBkZDEwZDAwLi5lYzA4MzI0IDEwMDY0NAorLS0tIGEvbTQuaW5jbHVkZS9tYy1pMThuLm00CisrKysgYi9tNC5pbmNsdWRlL21jLWkxOG4ubTQKK0BAIC04LDExICs4LDYgQEAgZG5sIEBsaWNlbnNlIEdQTAorIGRubCBAY29weXJpZ2h0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIEFDX0RFRlVOKFttY19JMThOXSxbCistCistICAgIGlmIHRlc3QgIngkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0geHllczsgdGhlbgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSVwkKHRvcF9idWlsZGRpcikvaW50bCAtSVwkKHRvcF9zcmNkaXIpL2ludGwiCistICAgIGZpCistCisgICAgIGRubCBVc2VyIHZpc2libGUgc3VwcG9ydCBmb3IgY2hhcnNldCBjb252ZXJzaW9uLgorICAgICBBQ19BUkdfRU5BQkxFKFtjaGFyc2V0XSwKKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jaGFyc2V0XSwgW1N1cHBvcnQgZm9yIGNoYXJzZXQgc2VsZWN0aW9uIGFuZCBjb252ZXJzaW9uIEA8OkB5ZXNAOj5AXSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhiZDczYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzL25vbWFuZGF0ZS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitUaGUgbWFuIHBhZ2UgZGF0ZSBjYW4gdmFyeSBkZXBlbmRpbmcgdXBvbiB0aGUgaG9zdCBwZXJsLCBlLmcuIGluIFJ1c3NpYW4KK3NvbWUgdmVyc2lvbnMgcHJpbnQgJ9C40Y7QvdGPJywgb3RoZXJzICfQmNGO0L3RjCcgb3IgUG9saXNoICdjemVyd2NhJyBvciAnY3plcndpZWMnLgorUmF0aGVyIHRoYW4gZGVwZW5kIHVwb24gcGVybC1uYXRpdmUgdG8gZml4IHRoaXMsIGp1c3QgcmVtb3ZlIHRoZSBkYXRlIGZyb20gCit0aGUgbWFucGFnZXMuCisKK1JQIDIwMjAvMi80CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2ZpY2ljIHJlcHJvZHVjaWJpbGl0eSB3b3JrYXJvdW5kXQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBtYy00LjguMjMvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWMtNC44LjIzLm9yaWcvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCisrKysgbWMtNC44LjIzL2RvYy9tYW4vZGF0ZS1vZi1tYW4taW5jbHVkZS5hbQorQEAgLTEsNSArMSw1IEBACisgU0VEX1BBUkFNRVRFUlMgPSBcCistCS1lICJzLyVEQVRFX09GX01BTl9QQUdFJS8kJHtNQU5fREFURX0vZyIgXAorKwktZSAicy8lREFURV9PRl9NQU5fUEFHRSUvL2ciIFwKKyAJLWUgInMvJURJU1RSX1ZFUlNJT04lL0BESVNUUl9WRVJTSU9OQC9nIiBcCisgCS1lICJzeyVwcmVmaXgle0BwcmVmaXhAe2ciIFwKKyAJLWUgInN7JXN5c2NvbmZkaXIle0BzeXNjb25mZGlyQHtnIiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIKaW5kZXggNzFmNjFiNC4uZWFkMzQ4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMy5iYgpAQCAtNCwxMSArNCwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1vcHRpb24tdG8tY29udHJvbC1jb25maWd1cmUtYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub21hbmRhdGUucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTUyOTI3YWMyOWNmMGU2MWQ3ZDAxOWYyNjFiYjdkODkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM4YzQ1NTI1NDVkY2YzMDY1MzU5YmQ1MDc1M2FiYmIxNTBjMWIyMmVjNWEzNmVhYTAyYzgyODA4MjkzMjY3ZCIKQEAgLTI3LDYgKzMwLDcgQEAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BZVEhPTj0nL3Vzci9iaW4vZW52IHB5dGhvbiciCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9HUkVQPScvdXNyL2Jpbi9lbnYgZ3JlcCciCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAibWNfY3ZfaGF2ZV96aXBpbmZvPXllcyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdAppbmRleCBlNGE5YzJiLi5mYWU4MDcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDQgKzEsNyBAQAogIyEvYmluL3NoCiAKK21rZGlyIC1wIC9tZGFkbS10ZXN0aW5nLWRpcgogIyBtYWtlIHRoZSB0ZXN0IGNvbnRpbnVlIHRvIGV4ZWN1dGUgZXZlbiBvbmUgZmFpbAotLi90ZXN0IC0ta2VlcC1nb2luZworZGlyPS4gLi90ZXN0IC0ta2VlcC1nb2luZyAtLWRpc2FibGUtaW50ZWdyaXR5CisKK3JtIC1yZiAvbWRhZG0tdGVzdGluZy1kaXIvKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCmluZGV4IDY0ZjUxOWUuLjQwYzUyNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKQEAgLTc1LDcgKzc1LDggQEAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwogCWNwICR7U30vdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS8hZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJc2VkIC1lICdzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8qCiAgICAgICAgIHNlZCAtaSAtZSAnL2VjaG8gLW5lICIkX3NjcmlwdC4uLiAiL2QnIFwKICAgICAgICAgICAgICAgIC1lICdzL2VjaG8gInN1Y2NlZWRlZCIvZWNobyAtZSAiUEFTUzogJF9zY3JpcHQiL2cnIFwKICAgICAgICAgICAgICAgIC1lICcvc2F2ZV9sb2cgZmFpbC9OOyAvX2ZhaWw9MS9pXFx0XHRcdGVjaG8gLW5lICJGQUlMOiAkX3NjcmlwdCInIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTE0NGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgotREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1ERVBFTkRTID0gInpsaWIgZ251dGxzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKLQotU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFkZmY0YTk5OTJlMWI0N2FhNTQ2OGI5NzQ1NTAzMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MjVmMTQ3NDMwYzY1YmE4NTI3ZjUyYzRmZTVkNGQzMzU1MmQzYzBmYjZkNzkzYmE3ZGY4MTlhM2IzMDQyZTEiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKLSMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAotQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCi1BTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKLUFMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMzU5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitERVBFTkRTID0gInpsaWIgZ251dGxzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKKworU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjAxNmU0MzJkMTJlMTJkYzVkNzM5NjBlMmJjNjdmMGZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjY2I1M2U0OGYwMjVmN2U2ZjYwMjEwMzE2ZGY2MWNmNjA5N2E0OTE3MjgzNDFjMWUzNzVmYzFhY2M2NDU5ZTUiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKKyMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAorQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCitBTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKK0FMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5YzNiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRml4IHRoZSBidWlsZCBlcnJvciB3aGVuIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5IGlzIHVzZWQ6Ci0KLU1ha2luZyBpbnN0YWxsIGluIHh0ZXN0c21ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvbGlicGFtLzEuMS42LXIyL2J1aWxkL3h0ZXN0cycvdXNyL2Jpbi9pbnN0YWxsIC1jIC1kIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0c2ZvciBmaWxlIGluIHJ1bi14dGVzdHMuc2ggdHN0LXBhbV9kaXNwYXRjaDEucGFtZCB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kIHRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCB0c3QtcGFtX2Rpc3BhdGNoNS5wYW1kIHRzdC1wYW1fY3JhY2tsaWIxLnBhbWQgdHN0LXBhbV9jcmFja2xpYjIucGFtZCB0c3QtcGFtX3VuaXgxLnBhbWQgdHN0LXBhbV91bml4Mi5wYW1kIHRzdC1wYW1fdW5peDMucGFtZCB0c3QtcGFtX3VuaXg0LnBhbWQgdHN0LXBhbV91bml4MS5zaCB0c3QtcGFtX3VuaXgyLnNoIHRzdC1wYW1fdW5peDMuc2ggdHN0LXBhbV91bml4NC5zaCBhY2Nlc3MuY29uZiB0c3QtcGFtX2FjY2VzczEucGFtZCB0c3QtcGFtX2FjY2VzczEuc2ggdHN0LXBhbV9hY2Nlc3MyLnBhbWQgdHN0LXBhbV9hY2Nlc3MyLnNoIHRzdC1wYW1fYWNjZXNzMy5wYW1kIHRzdC1wYW1fYWNjZXNzMy5zaCB0c3QtcGFtX2FjY2VzczQucGFtZCB0c3QtcGFtX2FjY2VzczQuc2ggbGltaXRzLmNvbmYgdHN0LXBhbV9saW1pdHMxLnBhbWQgdHN0LXBhbV9saW1pdHMxLnNoIHRzdC1wYW1fc3VjY2VlZF9pZjEucGFtZCB0c3QtcGFtX3N1Y2NlZWRfaWYxLnNoIGdyb3VwLmNvbmYgdHN0LXBhbV9ncm91cDEucGFtZCB0c3QtcGFtX2dyb3VwMS5zaCB0c3QtcGFtX2F1dGhmYWlsLnBhbWQgdHN0LXBhbV9hdXRoc3VjY2VlZC5wYW1kIHRzdC1wYW1fc3Vic3RhY2sxLnBhbWQgdHN0LXBhbV9zdWJzdGFjazFhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazEuc2ggdHN0LXBhbV9zdWJzdGFjazIucGFtZCB0c3QtcGFtX3N1YnN0YWNrMmEucGFtZCB0c3QtcGFtX3N1YnN0YWNrMi5zaCB0c3QtcGFtX3N1YnN0YWNrMy5wYW1kIHRzdC1wYW1fc3Vic3RhY2szYS5wYW1kIHRzdC1wYW1fc3Vic3RhY2szLnNoIHRzdC1wYW1fc3Vic3RhY2s0LnBhbWQgdHN0LXBhbV9zdWJzdGFjazRhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazQuc2ggdHN0LXBhbV9zdWJzdGFjazUucGFtZCB0c3QtcGFtX3N1YnN0YWNrNWEucGFtZCB0c3QtcGFtX3N1YnN0YWNrNS5zaCB0c3QtcGFtX2Fzc2VtYmxlX2xpbmUxLnBhbWQgdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaCB0c3QtcGFtX3B3aGlzdG9yeTEucGFtZCB0c3QtcGFtX3B3aGlzdG9yeTEuc2ggdHN0LXBhbV90aW1lMS5wYW1kIHRpbWUuY29uZiA7IGRvIFwvdXNyL2Jpbi9pbnN0YWxsIC1jICRmaWxlIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0cyA7IFwJZG9uZQotL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHJ1bi14dGVzdHMuc2gnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0vdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgdHN0LXBhbV9kaXNwYXRjaDEucGFtZCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS91c3IvYmluL2luc3RhbGw6IGNhbm5vdCBzdGF0IGB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUlAgMjAxMy8wMy8yMQotCi1JbmRleDogTGludXgtUEFNLTEuMS42L3h0ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjEuNi5vcmlnL3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTAzLTA4IDEyOjI2OjMwLjM2MDI2NjAwMCArMDAwMAotKysrIExpbnV4LVBBTS0xLjEuNi94dGVzdHMvTWFrZWZpbGUuYW0JMjAxMy0wMy0yMSAxMTozOTo1OC41NTcxNjY2NTAgKzAwMDAKLUBAIC01OSw3ICs1OSw3IEBACi0gaW5zdGFsbF94dGVzdHM6Ci0gCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzCi0gCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCkgOyBkbyBcCi0tCQkkKElOU1RBTEwpICQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCi0rCQkkKElOU1RBTEwpICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXAotIAlkb25lCi0gCWZvciBmaWxlIGluICQoWFRFU1RTKTsgZG8gXAotIAkJJChJTlNUQUxMKSAubGlicy8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IDdlZGY2NmYuLmVhMTQ1ODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKQEAgLTI4LDcgKzI4LDcgQEAKICtpbnN0YWxsX3h0ZXN0czoKICsJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMKICsJZm9yIGZpbGUgaW4gJChFWFRSQV9ESVNUKSA7IGRvIFwKLSsJCSQoSU5TVEFMTCkgJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKKysJCSQoSU5TVEFMTCkgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCiArCWRvbmUKICsJZm9yIGZpbGUgaW4gJChYVEVTVFMpOyBkbyBcCiArCQkkKElOU1RBTEwpIC5saWJzLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMS5iYgppbmRleCAxMTk0OTMzLi5iYzcyYWZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjEuYmIKQEAgLTEsMyArMSw0IEBACitESVNBQkxFX1NUQVRJQyA9ICIiCiBTVU1NQVJZID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMpIgogREVTQ1JJUFRJT04gPSAiTGludXgtUEFNIChQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxlcyBmb3IgTGludXgpLCBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMiCiBIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGludXgtcGFtLyIKQEAgLTIwLDcgKzIxLDYgQEAKICAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIFwKICAgICAgICAgICAgZmlsZTovL3BhbS5kL290aGVyIFwKICAgICAgICAgICAgZmlsZTovL2xpYnBhbS14dGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBcCkBAIC0zNSw4ICszNSw3IEBACiAKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXggZmxleC1uYXRpdmUgY3JhY2tsaWIgbGlieG1sMi1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAotRVhUUkFfT0VDT05GID0gIi0td2l0aC1kYi11bmlxdWVuYW1lPV9wYW0gXAotICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L3NlY3VyaXR5IFwKK0VYVFJBX09FQ09ORiA9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9zZWN1cml0eSBcCiAgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uaXMgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWdlbmVyYXRlLWRvY3UgXApAQCAtNDgsNyArNDcsOSBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0LCIKK1BBQ0tBR0VDT05GSUdbdXNlcmRiXSA9ICItLWVuYWJsZS1kYj1kYiwtLWVuYWJsZS1kYj1ubyxkYiwiCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1ydW50aW1lICR7UE59LXh0ZXN0cyIKIEZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3MDEyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBhMzg3NzExNWYxOTU2OTQ5MDk2ZDc3YWNhNWE3MDNhNDdlZDY4Mzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzozMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaDogSW5jbHVkZSA8ZmNudGwuaD4gZm9yCi0gbG9mZl90Ci0KLVRoaXMgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiB3aXRoIG11c2wgbGliYwotCi1TdWdnZXN0ZWQtYnk6IFRyYXZpcyBUaWxsZXkgPHR0aWxsZXlAZ21haWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBCcmlhbiBDLiBMYW5lIDxiY2xAcmVkaGF0LmNvbT4KLS0tLQotIGxpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaCBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1pbmRleCAyYjU1NzUyLi5hNmVjOGZiIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmgKLSsrKyBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKaW5kZXggNDI4YjE0ZS4uODI5YzBjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCkBAIC0xLDE3ICsxLDE4IEBACi1Gcm9tIDZlODJhZjU0NzE0MzkyZGNkZjc0YThhZWRhYWU3ZGU3ZDBhZjEwODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRkYmVmZDgwZDc0YzNiYWFhZTMyODMzMjQ1OGRiNDQ3ZTE2NjYyNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjcgQXByIDIwMTcgMTY6Mzc6MjQgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gTW92ZSBweXRob24gaGVscGVyIHNjcmlwdHMgKHVzZWQgb25seSBpbiB0ZXN0cykgdG8gUHl0aG9uIDMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgdGVzdHMvZ3B0LWhlYWRlci1tb3ZlIHwgMiArLQotIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dwdC1oZWFkZXItbW92ZSBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQotaW5kZXggMDVjZGM2NS4uM2NiY2I3ZSAxMDA3NTUKK2luZGV4IDNkZGE1Y2IuLmEyYjk1MDggMTAwNzU1CiAtLS0gYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKICsrKyBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQogQEAgLTEsNCArMSw0IEBACkBAIC0yMSw3ICsyMiw3IEBACiAgIyBvcGVuIGltZyBmaWxlLCBzdWJ0cmFjdCAzMyBmcm9tIGFsdGxiYSBhZGRyZXNzLCBhbmQgbW92ZSB0aGUgbGFzdCAzMyBzZWN0b3JzCiAgIyBiYWNrIGJ5IDMzIHNlY3RvcnMKIGRpZmYgLS1naXQgYS90ZXN0cy9tc2Rvcy1vdmVybGFwIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAotaW5kZXggNWJkZGZiMC4uM2RlN2QyZSAxMDA3NTUKK2luZGV4IGQ2YWU4ZDYuLjJjNjc0N2IgMTAwNzU1CiAtLS0gYS90ZXN0cy9tc2Rvcy1vdmVybGFwCiArKysgYi90ZXN0cy9tc2Rvcy1vdmVybGFwCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTMwLDE1ICszMSwzIEBACiAgIiIiCiAgICAgIFdyaXRlIGFuIG92ZXJsYXBwaW5nIHBhcnRpdGlvbiB0byBhIG1zZG9zIGRpc2sKICAKLUBAIC0xNCw3ICsxNCw3IEBAIEJBRF9FTlRSWSA9ICgweDcyLCAweGY1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotIE9GRlNFVCA9IDB4MWI4Ci0gCi0gaWYgbGVuKHN5cy5hcmd2KSA8IDI6Ci0tICAgIHByaW50ICIlczogPGltYWdlIG9yIGRldmljZT4iCi0rICAgIHByaW50KCIlczogPGltYWdlIG9yIGRldmljZT4iKQotICAgICBzeXMuZXhpdCgxKQotIAotIGRhdGEgPSAiIi5qb2luKGNocihjKSBmb3IgYyBpbiBCQURfRU5UUlkpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTFhNGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKLWluZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0Ci0tLS0gYS9saWIvZ251bGliLm1rCi0rKysgYi9saWIvZ251bGliLm1rCi1AQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MTA3NjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi1Gcm9tIDg0MzIyNWFhOWQ1MDc3YmViZGIwOGJiZjk2OTljMDJhZWMwYjgzZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQnJpYW4gQy4gTGFuZSIgPGJjbEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBTZXAgMjAxNyAwODowNDo1OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQ6IFVzZSByZWFkIG9ubHkgd2hlbiBwcm9iaW5nIGRldmljZXMgb24gbGludXgKLQotICgjMTI0NTE0NCkKLQotV2hlbiBhIGRldmljZSBpcyBvcGVuZWQgZm9yIFJXIGNsb3NpbmcgaXQgY2FuIHRyaWdnZXIgb3RoZXIgYWN0aW9ucywKLWxpa2UgdWRldiBzY2FubmluZyBpdCBmb3IgcGFydGl0aW9uIGNoYW5nZXMuIFVzZSByZWFkIG9ubHkgZm9yIHRoZQotaW5pdF8qIG1ldGhvZHMgYW5kIFJXIGZvciBhY3R1YWwgY2hhbmdlcyB0byB0aGUgZGV2aWNlLgotCi1UaGlzIGFkZHMgX2RldmljZV9vcGVuIHdoaWNoIHRha2VzIG1vZGUgZmxhZ3MgYXMgYW4gYXJndW1lbnQgYW5kIHR1cm5zCi1saW51eF9vcGVuIGludG8gYSB3cmFwcGVyIGZvciBpdCB3aXRoIFJXX01PREUuCi0KLV9kZXZpY2Vfb3Blbl9ybyBpcyBhZGRlZCB0byBvcGVuIHRoZSBkZXZpY2Ugd2l0aCBSRF9NT0RFIGFuZCBpbmNyZW1lbnQKLXRoZSBvcGVuX2NvdW50ZXIuIFRoaXMgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotX2RldmljZV9jbG9zZSBpcyBhIHdyYXBwZXIgYXJvdW5kIGxpbnV4X2Nsb3NlIHRoYXQgZGVjcmVtZW50cyB0aGUKLW9wZW5fY291bnRlciBhbmQgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotQWxsIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHNlbGYtY29udGFpbmVkIHdpdGggbm8gZXh0ZXJuYWwgQVBJIGNoYW5nZXMuCi1UaGUgb25seSB2aXNpYmxlIGNoYW5nZSBpbiBiZWhhdmlvciBpcyB0aGF0IHdoZW4gYSBuZXcgUGVkRGV2aWNlIGlzCi1jcmVhdGVkIHRoZSBkZXZpY2UgaXMgb3BlbmVkIGluIFJPX01PREUgaW5zdGVhZCBvZiBSV19NT0RFLgotCi1SZXNvbHZlczogcmhieiMxMjQ1MTQ0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggN2YxMmY1OC4uNGRkZWE1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yOTIsNyArMjkyLDkgQEAgc3RydWN0IGJsa2Rldl9pb2N0bF9wYXJhbSB7Ci0gc3RhdGljIGNoYXIqIF9kZXZpY2VfZ2V0X3BhcnRfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYsIGludCBudW0pOwotIHN0YXRpYyBpbnQgX3BhcnRpdGlvbl9pc19tb3VudGVkX2J5X3BhdGggKGNvbnN0IGNoYXIqIHBhdGgpOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgX2RldmljZV9nZXRfcGFydGl0aW9uX3JhbmdlKFBlZERldmljZSBjb25zdCogZGV2KTsKLS0KLStzdGF0aWMgaW50IF9kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncyk7Ci0rc3RhdGljIGludCBfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KTsKLStzdGF0aWMgaW50IF9kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KTsKLSAKLSBzdGF0aWMgaW50Ci0gX3JlYWRfZmQgKGludCBmZCwgY2hhciAqKmJ1ZikKLUBAIC05MTEsNyArOTEzLDcgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBIRElPX0dFVF9JREVOVElUWSwgJmhkaSkpIHsKLUBAIC05ODAsMTEgKzk4MiwxMSBAQCBpbml0X2lkZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotIAotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xMTE3LDcgKzExMTksNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgY2hhciogdmVuZG9yOwotICAgICAgICAgY2hhciogcHJvZHVjdDsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBTQ1NJX0lPQ1RMX0dFVF9JRExVTiwgJmlkbHVuKSA8IDApIHsKLUBAIC0xMTMxLDcgKzExMzMsNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotICAgICAgICAgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0tICAgICAgICAgICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICAgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgfQotIAotQEAgLTExNTMsMTEgKzExNTUsMTEgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTExNjksNyArMTE3MSw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCi0gCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIGRldi0+c2VjdG9yX3NpemUgPSBQRURfU0VDVE9SX1NJWkVfREVGQVVMVDsKLUBAIC0xMTk2LDcgKzExOTgsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIAotICAgICAgICAgZGV2LT5iaW9zX2dlb20uY3lsaW5kZXJzID0gZGV2LT5sZW5ndGggLyA0IC8gMzI7Ci0gICAgICAgICBkZXYtPmJpb3NfZ2VvbS5oZWFkcyA9IDQ7Ci1AQCAtMTIwNyw3ICsxMjA5LDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTEyMjMsNyArMTIyNSw3IEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqIGFyY2hfc3BlY2lmaWMgPSBMSU5VWF9TUEVDSUZJQyAoZGV2KTsKLUBAIC0xMjYzLDExICsxMjY1LDExIEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gCi0gICAgICAgICBkZXYtPm1vZGVsID0gc3RyZHVwIChtb2RlbF9uYW1lKTsKLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gCi0gZXJyb3JfY2xvc2VfZGV2OgotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gZXJyb3I6Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci1AQCAtMTI4Miw3ICsxMjg0LDcgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKLSAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0tICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKLSsgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotICAgICAgICAgcGVkX2V4Y2VwdGlvbl9mZXRjaF9hbGwgKCk7Ci1AQCAtMTMzMCwxMSArMTMzMiwxMSBAQCBpbml0X2dlbmVyaWMgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQotIAotICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTE2MjEsMTIgKzE2MjMsMjcgQEAgcmV0cnk6Ci0gfQotIAotIHN0YXRpYyBpbnQKLStfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gX2RldmljZV9vcGVuIChkZXYsIFJEX01PREUpOwotKyAgICBpZiAocmMpCi0rICAgICAgICBkZXYtPm9wZW5fY291bnQrKzsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50Ci0gbGludXhfb3BlbiAoUGVkRGV2aWNlKiBkZXYpCi0gewotKyAgICByZXR1cm4gX2RldmljZV9vcGVuIChkZXYsIFJXX01PREUpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rX2RldmljZV9vcGVuIChQZWREZXZpY2UqIGRldiwgaW50IGZsYWdzKQotK3sKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqICBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7Ci0gCi0gcmV0cnk6Ci0tICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgUldfTU9ERSk7Ci0rICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgZmxhZ3MpOwotIAotICAgICAgICAgaWYgKGFyY2hfc3BlY2lmaWMtPmZkID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgIGNoYXIqICAgcndfZXJyb3JfbXNnID0gc3RyZXJyb3IgKGVycm5vKTsKLUBAIC0xNjk1LDYgKzE3MTIsMTUgQEAgbGludXhfcmVmcmVzaF9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICByZXR1cm4gMTsKLSB9Ci0gCi0rc3RhdGljIGludAotK19kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gbGludXhfY2xvc2UgKGRldik7Ci0rICAgIGlmIChkZXYtPm9wZW5fY291bnQgPiAwKQotKyAgICAgICAgZGV2LT5vcGVuX2NvdW50LS07Ci0rICAgIHJldHVybiByYzsKLSt9Ci0rCi0gI2lmIFNJWkVPRl9PRkZfVCA8IDgKLSAKLSBzdGF0aWMgX3N5c2NhbGw1KGludCxfbGxzZWVrLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtZnMtYWRkLXNvdXJjZWRpci1saWItdG8taW5jbHVkZS1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGMyYWIyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBkNjBhOGE4NmY2NTkzNzM4YjUzMjRjY2Q4ZmUzZTZkODRhMWZlN2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIERlYyAyMDE5IDE0OjE4OjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnBhcnRlZC9mczogYWRkICRzb3VyY2VkaXIvbGliIHRvIGluY2x1ZGUgcGF0aHMKKworT3RoZXJ3aXNlLCBnZXRvcHQtcGZ4LWNvcmUuaCB3b24ndCBiZSBmb3VuZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGxpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSBiL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQoraW5kZXggMjg2YmZmNi4uNjVmNDVkMyAxMDA2NDQKKy0tLSBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQorKysrIGIvbGlicGFydGVkL2ZzL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAKKyAjCisgIyBUaGlzIGZpbGUgbWF5IGJlIG1vZGlmaWVkIGFuZC9vciBkaXN0cmlidXRlZCB3aXRob3V0IHJlc3RyaWN0aW9uLgorIAorLXBhcnRlZGluY2x1ZGVkaXIgPSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCisrcGFydGVkaW5jbHVkZWRpciA9IC1JJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2xpYgorIAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjYyZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAwYjcyYjhlYjQxNDM4YjYyZWViOWUzNTQ4YjBiOGYzMDk0YTc4NjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlJpY2hhcmQgVy5NLiBKb25lcyIgPHJqb25lc0ByZWRoYXQuY29tPgotRGF0ZTogU2F0LCAyNCBNYXIgMjAxOCAxNzozNzowMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaW51eDogSW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiBmb3IgbWFqb3IoKSBtYWNyby4KLQotU2luY2UgZ2xpYmMgMi4yNyB0aGlzIGhlYWRlciBpcyByZXF1aXJlZC4KLS0tLQotIGxpYnBhcnRlZC9hcmNoL2xpbnV4LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi1pbmRleCAwZjE4OTA0Li5hMTU4NTRmIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2FyY2gvbGludXguYwotKysrIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4gICAgICAgIC8qIGZvciB1bmFtZSgpICovCi0gI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KLSAjZW5kaWYKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAyLXRlc3RzLXVzZS1za2lwXy1yYXRoZXItdGhhbi1za2lwX3Rlc3RfLXdoaWNoLWlzLXVuZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MjRhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gOWY4NDQ0ODRjZWRiMzllMzAxYjAxNmU5ZGE3ODUyYzFhMGZiNmVlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBEZWMgMjAxOSAxNjoyNzo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogdXNlIHNraXBfIHJhdGhlciB0aGFuIHNraXBfdGVzdF8gKHdoaWNoIGlzIHVuZGVmaW5lZCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL3Q2MDAxLXBzZXAuc2ggICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2ggfCAyICstCisgdGVzdHMvdDYwMDUtZG0tdXVpZC5zaCAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaCAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2ggYi90ZXN0cy90NjAwMS1wc2VwLnNoCitpbmRleCBlMzUwYmQyLi42NzAxNGEwIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDEtcHNlcC5zaAorKysrIGIvdGVzdHMvdDYwMDEtcHNlcC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKyAKKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCisgIyB0aGUgc3lzdGVtCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoIGIvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCitpbmRleCBiNGJlOTc1Li43MjE0ZjYwIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCisrKysgYi90ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2gKK0BAIC0yMSw3ICsyMSw3IEBACisgCisgcmVxdWlyZV9yb290XworIHJlcXVpcmVfdWRldmFkbV9zZXR0bGVfCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgc3M9JHNlY3Rvcl9zaXplXworIG5zPTMwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDA1LWRtLXV1aWQuc2ggYi90ZXN0cy90NjAwNS1kbS11dWlkLnNoCitpbmRleCA0MjY2NzQ3Li40NzkwYThiIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorKysrIGIvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyBzcz0kc2VjdG9yX3NpemVfCisgbnM9MzAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoIGIvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCitpbmRleCBiZjMyMTM1Li5iNjc5YWRiIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCisrKysgYi90ZXN0cy90NjAwNi1kbS01MTJiLXNlY3RvcnMuc2gKK0BAIC0yNSw3ICsyNSw3IEBAIHJlcXVpcmVfc2NzaV9kZWJ1Z19tb2R1bGVfCisgZ3JlcCAnXiNkZWZpbmUgVVNFX0JMS0lEIDEnICIkQ09ORklHX0hFQURFUiIgPiAvZGV2L251bGwgfHwKKyAgIHNraXBfICd0aGlzIHN5c3RlbSBsYWNrcyBhIG5ldy1lbm91Z2ggbGliYmxraWQnCisgCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgIyBEZXZpY2UgbWFwcyBuYW1lcyAtIHNob3VsZCBiZSByYW5kb20gdG8gbm90IGNvbmZsaWN0IHdpdGggZXhpc3Rpbmcgb25lcyBvbgorICMgdGhlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTkwYmUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi1hbV9fdHR5X2NvbG9yc19kdW1teSA9IFwKLSAgbWduPSByZWQ9IGdybj0gbGduPSBibHU9IGJyZz0gc3RkPTsgXAotICBhbV9fY29sb3JfdGVzdHM9bm8KLQotYW1fX3R0eV9jb2xvcnMgPSBcCi0kKGFtX190dHlfY29sb3JzX2R1bW15KTsgXAotdGVzdCAiWCQoQU1fQ09MT1JfVEVTVFMpIiAhPSBYbm8gXAotJiYgdGVzdCAiWCQkVEVSTSIgIT0gWGR1bWIgXAotJiYgeyB0ZXN0ICJYJChBTV9DT0xPUl9URVNUUykiID0gWGFsd2F5cyB8fCB0ZXN0IC10IDEgMj4vZGV2L251bGw7IH0gXAotJiYgeyBcCi0gIGFtX19jb2xvcl90ZXN0cz15ZXM7IFwKLSAgcmVkPScbWzA7MzFtJzsgXAotICBncm49JxtbMDszMm0nOyBcCi0gIGxnbj0nG1sxOzMybSc7IFwKLSAgYmx1PScbWzE7MzRtJzsgXAotICBtZ249JxtbMDszNW0nOyBcCi0gIGJyZz0nG1sxbSc7IFwKLSAgc3RkPScbW20nOyBcCi19Ci0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3JzdF90aXRsZSA9IHsgc2VkICdzLy4qLyAgICYgICAvO2g7cy8uLz0vZztwO3g7cy8gKiQkLy87cDtnJyAmJiBlY2hvOyB9Ci1hbV9fcnN0X3NlY3Rpb24gPSB7IHNlZCAncDtzLy4vPS9nOycgJiYgZWNobzsgfQotYW1fX3NoX2Vfc2V0dXAgPSBjYXNlICQkLSBpbiAqZSopIHNldCArZTs7IGVzYWMKLQotYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MgPSBcCi0gIC0tY29sb3ItdGVzdHMgIiQkYW1fX2NvbG9yX3Rlc3RzIiBcCi0gIC0tZW5hYmxlLWhhcmQtZXJyb3JzICIkJGFtX19lbmFibGVfaGFyZF9lcnJvcnMiIFwKLSAgLS1leHBlY3QtZmFpbHVyZSAiJCRhbV9fZXhwZWN0X2ZhaWx1cmUiCi1hbV9fY2hlY2tfcHJlID0gXAotJChhbV9fc2hfZV9zZXR1cCk7CQkJCQlcCi0kKGFtX192cGF0aF9hZGpfc2V0dXApICQoYW1fX3ZwYXRoX2FkaikJCQlcCi0kKGFtX190dHlfY29sb3JzKTsJCQkJCVwKLXNyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7CQkJXAotYW1fX29kaXI9YGVjaG8gIi4vJEAiIHwgc2VkICdzfC9bXi9dKiQkfHwnYDsJCVwKLXRlc3QgIngkJGFtX19vZGlyIiA9IHguIHx8ICQoTUtESVJfUCkgIiQkYW1fX29kaXIiIHx8IGV4aXQgJCQ/OwlcCi1pZiB0ZXN0IC1mICIuLyQkZiI7IHRoZW4gZGlyPS4vOwkJCVwKLWVsaWYgdGVzdCAtZiAiJCRmIjsgdGhlbiBkaXI9OwkJCQlcCi1lbHNlIGRpcj0iJChzcmNkaXIpLyI7IGZpOwkJCQlcCi10c3Q9JCRkaXIkJGY7IGxvZz0nJEAnOyAJCQkJXAotaWYgdGVzdCAtbiAnJChESVNBQkxFX0hBUkRfRVJST1JTKSc7IHRoZW4JCVwKLSAgYW1fX2VuYWJsZV9oYXJkX2Vycm9ycz1ubzsgCQkJCVwKLWVsc2UJCQkJCQkJXAotICBhbV9fZW5hYmxlX2hhcmRfZXJyb3JzPXllczsgCQkJCVwKLWZpOyAJCQkJCQkJXAotJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChURVNUU19FTlZJUk9OTUVOVCkKLQotYW1fX3NldF9URVNUU19iYXNlcyA9IFwKLSAgYmFzZXM9JyQoVEVTVF9MT0dTKSc7IFwKLSAgYmFzZXM9YGZvciBpIGluICQkYmFzZXM7IGRvIGVjaG8gJCRpOyBkb25lIHwgc2VkICdzL1wubG9nJCQvLydgOyBcCi0gIGJhc2VzPWBlY2hvICQkYmFzZXNgCi0KLVJFQ0hFQ0tfTE9HUyA9ICQoVEVTVF9MT0dTKQotVEVTVF9TVUlURV9MT0cgPSB0ZXN0LXN1aXRlLmxvZwotYW1fX3Rlc3RfbG9nczEgPSAkKFRFU1RTOj0ubG9nKQotYW1fX3Rlc3RfbG9nczIgPSAkKGFtX190ZXN0X2xvZ3MxOi5sb2c9LmxvZykKLVRFU1RfTE9HUyA9ICQoYW1fX3Rlc3RfbG9nczI6LnNoLmxvZz0ubG9nKQotU0hfTE9HX0RSSVZFUiA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi1TSF9MT0dfQ09NUElMRSA9ICQoU0hfTE9HX0NPTVBJTEVSKQotCi1hbV9fc2V0X2IgPSBcCi0gIGNhc2UgJyRAJyBpbiBcCi0gICAgKi8qKSBcCi0gICAgICBjYXNlICckKicgaW4gXAotICAgICAgICAqLyopIGI9JyQqJzs7IFwKLSAgICAgICAgICAqKSBiPWBlY2hvICckQCcgfCBzZWQgJ3MvXC5sb2ckJC8vJ2A7IFwKLSAgICAgICBlc2FjOzsgXAotICAgICopIFwKLSAgICAgIGI9JyQqJzs7IFwKLSAgZXNhYwotCi1NS0RJUl9QID0gL2Jpbi9ta2RpciAtcAotU0hFTEwgPSAvYmluL2Jhc2gKLVZFUlNJT04gPSAzLjEKLVBBQ0tBR0VfU1RSSU5HID0gR05VIHBhcnRlZCAzLjEKLVBBQ0tBR0VfQlVHUkVQT1JUID0gYnVnLXBhcnRlZEBnbnUub3JnCi1hYnNfc3JjZGlyID0gJChQV0QpCi1hYnNfdG9wX2J1aWxkZGlyID0gJChQV0QpLy4uCi1hYnNfdG9wX3NyY2RpciA9ICQoUFdEKS8uLgotc3JjZGlyID0gLgotdG9wX3NyY2RpciA9IC4uCi1zdWJkaXIgPSB0ZXN0cwotU0hfTE9HX0NPTVBJTEVSID0gJChTSEVMTCkKLQotVEVTVFMgPSBcCi0gIGhlbHAtdmVyc2lvbi5zaCBcCi0gIHQwMDAwLWJhc2ljLnNoIFwKLSAgdDAwMDEtdGlueS5zaCBcCi0gIHQwMDEwLXNjcmlwdC1uby1jdHJsLWNoYXJzLnNoIFwKLSAgdDAxMDAtcHJpbnQuc2ggXAotICB0MDEwMS1wcmludC1lbXB0eS5zaCBcCi0gIHQwMjAwLWdwdC5zaCBcCi0gIHQwMjAxLWdwdC5zaCBcCi0gIHQwMjAyLWdwdC1wbWJyLnNoIFwKLSAgdDAyMDMtZ3B0LXRpbnktZGV2aWNlLWFib3J0LnNoIFwKLSAgdDAyMDMtZ3B0LXNob3J0ZW5lZC1kZXZpY2UtcHJpbWFyeS12YWxpZC5zaCBcCi0gIHQwMjA1LWdwdC1saXN0LWNsb2JiZXJzLXBtYnIuc2ggXAotICB0MDIwNi1ncHQtcHJpbnQtd2l0aC1jb3JydXB0LXByaW1hcnktY2xvYmJlcnMtcG1ici5zaCBcCi0gIHQwMjA3LUlFQy1iaW5hcnktbm90YXRpb24uc2ggXAotICB0MDIwOC1ta3BhcnQtZW5kLWluLUlFQy5zaCBcCi0gIHQwMjA5LWdwdC1wbWJyX2Jvb3Quc2ggXAotICB0MDIxMC1ncHQtcmVzaXplZC1wYXJ0aXRpb24tZW50cnktYXJyYXkuc2ggXAotICB0MDIxMS1ncHQtcmV3cml0ZS1oZWFkZXIuc2ggXAotICB0MDIxMi1ncHQtbWFueS1wYXJ0aXRpb25zLnNoIFwKLSAgdDAyMjAtZ3B0LW1zZnRyZXMuc2ggXAotICB0MDI1MC1ncHQuc2ggXAotICB0MDI4MC1ncHQtY29ycnVwdC5zaCBcCi0gIHQwMzAwLWRvcy1vbi1ncHQuc2ggXAotICB0MDQwMC1sb29wLWNsb2JiZXItaW5mbG9vcC5zaCBcCi0gIHQwNTAwLWR1cC1jbG9iYmVyLnNoIFwKLSAgdDA1MDEtZHVwbGljYXRlLnNoIFwKLSAgdDExMDAtYnVzeS1sYWJlbC5zaCBcCi0gIHQxMTAxLWJ1c3ktcGFydGl0aW9uLnNoIFwKLSAgdDE3MDAtcHJvYmUtZnMuc2ggXAotICB0MjIwMC1kb3MtbGFiZWwtcmVjb2cuc2ggXAotICB0MjIwMS1wYzk4LWxhYmVsLXJlY29nLnNoIFwKLSAgdDIzMDAtZG9zLWxhYmVsLWV4dGVuZGVkLWJvb3Rjb2RlLnNoIFwKLSAgdDIzMTAtZG9zLWV4dGVuZGVkLTItc2VjdG9yLW1pbi1vZmZzZXQuc2ggXAotICB0MjQwMC1kb3MtaGZzLXBhcnRpdGlvbi10eXBlLnNoIFwKLSAgdDI1MDAtcHJvYmUtY29ycnVwdC1oZnMuc2ggXAotICB0MzAwMC1yZXNpemUtZnMuc2ggXAotICB0MzIwMC10eXBlLWNoYW5nZS5zaCBcCi0gIHQzMzAwLXBhbG8tcHJlcC5zaCBcCi0gIHQzMzEwLWZsYWdzLnNoIFwKLSAgdDM0MDAtd2hvbGUtZGlzay1GQVQtcGFydGl0aW9uLnNoIFwKLSAgdDQwMDAtc3VuLXJhaWQtdHlwZS5zaCBcCi0gIHQ0MDAxLXN1bi12dG9jLnNoIFwKLSAgdDQxMDAtbXNkb3MtcGFydGl0aW9uLWxpbWl0cy5zaCBcCi0gIHQ0MTAwLWR2aC1wYXJ0aXRpb24tbGltaXRzLnNoIFwKLSAgdDQxMDAtbXNkb3Mtc3RhcnRpbmctc2VjdG9yLnNoIFwKLSAgdDQyMDAtcGFydHByb2JlLnNoIFwKLSAgdDQzMDAtbmlsZnMyLXRpbnkuc2ggXAotICB0NTAwMC10YWdzLnNoIFwKLSAgdDYwMDAtZG0uc2ggXAotICB0NjAwMS1wc2VwLnNoIFwKLSAgdDYxMDAtbWRyYWlkLXBhcnRpdGlvbnMuc2ggXAotICB0NzAwMC1zY3JpcHRpbmcuc2ggXAotICB0ODAwMC1sb29wLnNoIFwKLSAgdDgwMDEtbG9vcC1ibGtwZy5zaCBcCi0gIHQ5MDEwLWJpZy1zZWN0b3Iuc2ggXAotICB0OTAyMC1hbGlnbm1lbnQuc2ggXAotICB0OTAyMS1tYXhpbWEuc2ggXAotICB0OTAyMi1vbmUtdW5pdC1zbmFwLnNoIFwKLSAgdDkwMjMtdmFsdWUtbHQtb25lLnNoIFwKLSAgdDkwMzAtYWxpZ24tY2hlY2suc2ggXAotICB0OTA0MC1tYW55LXBhcnRpdGlvbnMuc2ggXAotICB0OTA0MS11bmRldGVjdGVkLWluLXVzZS0xNnRoLXBhcnRpdGlvbi5zaCBcCi0gIHQ5MDQyLWRvcy1wYXJ0aXRpb24tbGltaXQuc2ggXAotICB0OTA1MC1wYXJ0aXRpb24tdGFibGUtdHlwZXMuc2gKLQotVEVTVFNfRU5WSVJPTk1FTlQgPSBcCi0gIGV4cG9ydAkJCQkJXAotICBhYnNfdG9wX2J1aWxkZGlyPSckKGFic190b3BfYnVpbGRkaXIpJwlcCi0gIGFic190b3Bfc3JjZGlyPSckKGFic190b3Bfc3JjZGlyKScJCVwKLSAgYWJzX3NyY2Rpcj0nJChhYnNfc3JjZGlyKScJCQlcCi0gIGJ1aWx0X3Byb2dyYW1zPXBhcnRlZAkJCQlcCi0gIHNyY2Rpcj0nJChzcmNkaXIpJwkJCQlcCi0gIHRvcF9zcmNkaXI9JyQodG9wX3NyY2RpciknCQkJXAotICBWRVJTSU9OPSQoVkVSU0lPTikJCQkJXAotICA7IDk+JjIKLQotLlNVRkZJWEVTOiAubG9nCi0KLSQoVEVTVF9TVUlURV9MT0cpOiAkKFRFU1RfTE9HUykKLQlAJChhbV9fc2hfZV9zZXR1cCk7ICQoYW1fX3R0eV9jb2xvcnMpOyAkKGFtX19zZXRfVEVTVFNfYmFzZXMpOyBcCi0Jd3M9J1sgCV0nOyBcCi0JcmVzdWx0cz1gZm9yIGIgaW4gJCRiYXNlczsgZG8gZWNobyAkJGIudHJzOyBkb25lYDsgXAotCXRlc3QgLW4gIiQkcmVzdWx0cyIgfHwgcmVzdWx0cz0vZGV2L251bGw7IFwKLQlhbGw9YCAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiIgICAgICAgICAgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXBhc3M9YCBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypQQVNTIiAgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JZmFpbD1gIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKkZBSUwiICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQlza2lwPWAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqU0tJUCIgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXhmYWlsPWBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypYRkFJTCIgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JeHBhc3M9YGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKlhQQVNTIiAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQllcnJvcj1gZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqRVJST1IiICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCWlmIHRlc3QgYGV4cHIgJCRmYWlsICsgJCR4cGFzcyArICQkZXJyb3JgIC1lcSAwOyB0aGVuIFwKLQkgIHN1Y2Nlc3M9dHJ1ZTsgXAotCWVsc2UgXAotCSAgc3VjY2Vzcz1mYWxzZTsgXAotCWZpOyBcCi0JYnI9Jz09PT09PT09PT09PT09PT09PT0nOyBicj0kJGJyJCRiciQkYnIkJGJyOyBcCi0JcmVzdWx0X2NvdW50ICgpIFwKLQl7IFwKLQkgICAgaWYgdGVzdCB4IiQkMSIgPSB4Ii0tbWF5YmUtY29sb3IiOyB0aGVuIFwKLQkgICAgICBtYXliZV9jb2xvcml6ZT15ZXM7IFwKLQkgICAgZWxpZiB0ZXN0IHgiJCQxIiA9IHgiLS1uby1jb2xvciI7IHRoZW4gXAotCSAgICAgIG1heWJlX2NvbG9yaXplPW5vOyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIiRAOiBpbnZhbGlkICdyZXN1bHRfY291bnQnIHVzYWdlIiA+JjI7IGV4aXQgNDsgXAotCSAgICBmaTsgXAotCSAgICBzaGlmdDsgXAotCSAgICBkZXNjPSQkMSBjb3VudD0kJDI7IFwKLQkgICAgaWYgdGVzdCAkJG1heWJlX2NvbG9yaXplID0geWVzICYmIHRlc3QgJCRjb3VudCAtZ3QgMDsgdGhlbiBcCi0JICAgICAgY29sb3Jfc3RhcnQ9JCQzIGNvbG9yX2VuZD0kJHN0ZDsgXAotCSAgICBlbHNlIFwKLQkgICAgICBjb2xvcl9zdGFydD0gY29sb3JfZW5kPTsgXAotCSAgICBmaTsgXAotCSAgICBlY2hvICIkJHtjb2xvcl9zdGFydH0jICQkZGVzYyAkJGNvdW50JCR7Y29sb3JfZW5kfSI7IFwKLQl9OyBcCi0JY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgKCkgXAotCXsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiVE9UQUw6IiAkJGFsbCAgICIkJGJyZyI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIlBBU1M6ICIgJCRwYXNzICAiJCRncm4iOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJTS0lQOiAiICQkc2tpcCAgIiQkYmx1IjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiWEZBSUw6IiAkJHhmYWlsICIkJGxnbiI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIkZBSUw6ICIgJCRmYWlsICAiJCRyZWQiOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJYUEFTUzoiICQkeHBhc3MgIiQkcmVkIjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiRVJST1I6IiAkJGVycm9yICIkJG1nbiI7IFwKLQl9OyBcCi0JewkJCQkJCQkJXAotCSAgZWNobyAiJChQQUNLQUdFX1NUUklORyk6ICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSIgfAlcCi0JICAgICQoYW1fX3JzdF90aXRsZSk7CQkJCQkJXAotCSAgY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgLS1uby1jb2xvcjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGVjaG8gIi4uIGNvbnRlbnRzOjogOmRlcHRoOiAyIjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGZvciBpIGluICQkYmFzZXM7IGRvCQkJCQkJXAotCSAgICBpZiBncmVwICJeJCR3cyo6Y29weS1pbi1nbG9iYWwtbG9nOiQkd3Mqbm8kJHdzKiQkIiAkJGkudHJzIFwKLQkgICAgICAgICA+L2Rldi9udWxsOyB0aGVuIGNvbnRpbnVlOyBcCi0JICAgIGZpOyBcCi0JICAgIGdsb2JfcmVzPWBzZWQgLW4gLWUgInMvJCR3cyokJC8vIiBcCi0JICAgICAgICAgICAgICAgICAgICAgLWUgInMvXiQkd3MqOmdsb2JhbC10ZXN0LXJlc3VsdDokJHdzKi8vcCIgXAotCQkgICAgICAgICQkaS50cnNgOyBcCi0JICAgIHRlc3QgLW4gIiQkZ2xvYl9yZXMiIHx8IGdsb2JfcmVzPVJVTjsgXAotCSAgICBlY2hvICIkJGdsb2JfcmVzOiAkJGkiIHwgJChhbV9fcnN0X3NlY3Rpb24pOyBcCi0JICAgIGlmIHRlc3QgISAtciAkJGkubG9nOyB0aGVuIFwKLQkgICAgICBlY2hvICJmYXRhbDogbWFraW5nICRAOiAkJGkubG9nIGlzIHVucmVhZGFibGUiID4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgICBjYXQgJCRpLmxvZzsgZWNobzsgXAotCSAgZG9uZTsJXAotCX0gPiQoVEVTVF9TVUlURV9MT0cpLnRtcDsJCQkJCVwKLQltdiAkKFRFU1RfU1VJVEVfTE9HKS50bXAgJChURVNUX1NVSVRFX0xPRyk7CQkJXAotCWlmICQkc3VjY2VzczsgdGhlbgkJCQkJCVwKLQkgIGNvbD0iJCRncm4iOwkJCQkJCQlcCi0JIGVsc2UJCQkJCQkJCVwKLQkgIGNvbD0iJCRyZWQiOwkJCQkJCQlcCi0JICB0ZXN0IHgiJCRWRVJCT1NFIiA9IHggfHwgY2F0ICQoVEVTVF9TVUlURV9MT0cpOwkJXAotCWZpOwkJCQkJCQkJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWVjaG8gIiQke2NvbH1UZXN0c3VpdGUgc3VtbWFyeSBmb3IgJChQQUNLQUdFX1NUUklORykkJHtzdGR9IjsJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0IC0tbWF5YmUtY29sb3I7CQkJCVwKLQllY2hvICIkJGNvbCQkYnIkJHN0ZCI7CQkJCQkJXAotCWlmICQkc3VjY2VzczsgdGhlbiA6OyBlbHNlCQkJCQlcCi0JICBlY2hvICIkJHtjb2x9U2VlICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSQke3N0ZH0iOwkJXAotCSAgaWYgdGVzdCAtbiAiJChQQUNLQUdFX0JVR1JFUE9SVCkiOyB0aGVuCQkJXAotCSAgICBlY2hvICIkJHtjb2x9UGxlYXNlIHJlcG9ydCB0byAkKFBBQ0tBR0VfQlVHUkVQT1JUKSQke3N0ZH0iOwlcCi0JICBmaTsJCQkJCQkJCVwKLQkgIGVjaG8gIiQkY29sJCRiciQkc3RkIjsJCQkJCVwKLQlmaTsJCQkJCQkJCVwKLQkkJHN1Y2Nlc3MgfHwgZXhpdCAxCi0KLWNoZWNrLVRFU1RTOgotCUBpZiB0ZXN0ICRAICE9IHJlY2hlY2s7IHRoZW4gXAotCSAgIGxpc3Q9JyQoUkVDSEVDS19MT0dTKSc7IFwKLQkgICB0ZXN0IC16ICIkJGxpc3QiIHx8IHJtIC1mICQkbGlzdDsgXAotCSBmaQotCUB0ZXN0IC16ICIkKFRFU1RfU1VJVEVfTE9HKSIgfHwgcm0gLWYgJChURVNUX1NVSVRFX0xPRykKLQlAd3M9J1sgCV0nOyBcCi0JbG9nX2xpc3Q9JycgdHJzX2xpc3Q9Jyc7ICQoYW1fX3NldF9URVNUU19iYXNlcyk7IFwKLQlmb3IgaSBpbiAkJGJhc2VzOyBkbyBcCi0JICBpZiB0ZXN0IC16ICIkJGxvZ19saXN0IjsgdGhlbiBcCi0JICAgIGxvZ19saXN0PSIkJGkubG9nIjsgXAotCSAgZWxzZSBcCi0JICAgIGxvZ19saXN0PSIkJGxvZ19saXN0ICQkaS5sb2ciOyBcCi0JICBmaTsgXAotCSAgaWYgdGVzdCAteiAiJCR0cnNfbGlzdCI7IHRoZW4gXAotCSAgICB0cnNfbGlzdD0iJCRpLnRycyI7IFwKLQkgIGVsc2UgXAotCSAgICB0cnNfbGlzdD0iJCR0cnNfbGlzdCAkJGkudHJzIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJChURVNUX1NVSVRFX0xPRykgVEVTVF9MT0dTPSIkJGxvZ19saXN0IgotCi0uc2gubG9nOgotCUBwPSckPCc7IFwKLQkkKGFtX19zZXRfYik7IFwKLQkkKGFtX19jaGVja19wcmUpICQoU0hfTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAotCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAotCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpIC0tICQoU0hfTE9HX0NPTVBJTEUpICIkJHRzdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzYzRkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZG1fY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1wYXJ0ZWQ6IGNoYW5nZSBjaGVjayBmb3IgZGV2aWNlLW1hbmFnZXIKLQotT3RoZXIgcHRlc3RzIHVzZSB0aGlzIG1ldGhvZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Zy1wYXJ0ZWRAZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi0KLS0tLSBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLSsrKyBiL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLUBAIC0xOSw3ICsxOSw5IEBACi0gLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi4vcGFydGVkCi0gCi0gcmVxdWlyZV9yb290XwotLShkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwX3Rlc3RfICJObyBkbXNldHVwIGluc3RhbGxlZCIKLSsKLSt0ZXN0ICJ4JEVOQUJMRV9ERVZJQ0VfTUFQUEVSIiA9IHh5ZXMgXAotKyAgfHwgc2tpcF8gIm5vIGRldmljZS1tYXBwZXIgc3VwcG9ydCIKLSAKLSAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCi0gIyB0aGUgc3lzdGVtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjNGQyYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBkYTNmMTI5NzEwOTI5YWJlOWE0MDM5MDFmYTdkMTY4MzU1YjBlOTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jOiBDb21waWxlIHdpdGhvdXQgRU5BQkxFX0RFVklDRV9NQVBQRVIKLQotU2lnbmVkLW9mZi1ieTogQnJpYW4gQy4gTGFuZSA8YmNsQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgMjEgKysrKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggYTE1ODU0Zi4uN2YxMmY1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yMzA1LDYgKzIzMDUsNyBAQCB6YXNwcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotICAgcmV0dXJuIHIgPCAwID8gTlVMTCA6IHJlc3VsdHA7Ci0gfQotIAotKyNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotIHN0YXRpYyBjaGFyICoKLSBkbV9jYW5vbmljYWxfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYpCi0gewotQEAgLTIzMjcsMTQgKzIzMjgsMjEgQEAgZG1fY2Fub25pY2FsX3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2KQotIGVycjoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSBzdGF0aWMgY2hhcioKLSBfZGV2aWNlX2dldF9wYXJ0X3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2LCBpbnQgbnVtKQotIHsKLS0gICAgICAgIGNoYXIgKmRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0tICAgICAgICBzaXplX3QgcGF0aF9sZW4gPSBzdHJsZW4gKGRldnBhdGgpOwotKyAgICAgICAgY2hhciAqZGV2cGF0aDsKLSsgICAgICAgIHNpemVfdCBwYXRoX2xlbjsKLSAgICAgICAgIGNoYXIgKnJlc3VsdDsKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSsgICAgICAgIGRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0rI2Vsc2UKLSsgICAgICAgIGRldnBhdGggPSBkZXYtPnBhdGg7Ci0rI2VuZGlmCi0rICAgICAgICBwYXRoX2xlbiA9IHN0cmxlbiAoZGV2cGF0aCk7Ci0gICAgICAgICAvKiBDaGVjayBmb3IgZGV2ZnMtc3R5bGUgL2Rpc2MgPT4gL3BhcnROIHRyYW5zZm9ybWF0aW9uCi0gICAgICAgICAgICB1bmNvbmRpdGlvbmFsbHk7IHRoZSBzeXN0ZW0gbWlnaHQgYmUgdXNpbmcgdWRldiB3aXRoIGRldmZzIHJ1bGVzLAotICAgICAgICAgICAgYW5kIGlmIG5vdCB0aGUgdGVzdCBpcyBoYXJtbGVzcy4gKi8KLUBAIC0yMzUwLDggKzIzNTgsMTAgQEAgX2RldmljZV9nZXRfcGFydF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldiwgaW50IG51bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJwIiA6ICIiKTsKLSAgICAgICAgICAgICAgICAgcmVzdWx0ID0gemFzcHJpbnRmICgiJXMlcyVkIiwgZGV2cGF0aCwgcCwgbnVtKTsKLSAgICAgICAgIH0KLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkKLSAgICAgICAgICAgICAgICAgZnJlZSAoZGV2cGF0aCk7Ci0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLUBAIC0yOTQ2LDEyICsyOTU2LDE1IEBAIF9kaXNrX3N5bmNfcGFydF90YWJsZSAoUGVkRGlzayogZGlzaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqbGVuZ3RoKTsKLSAKLSAKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkaXNrLT5kZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2RtX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfZG1fcmVtb3ZlX3BhcnRpdGlvbjsKLSAgICAgICAgICAgICAgICAgcmVzaXplX3BhcnRpdGlvbiA9IF9kbV9yZXNpemVfcGFydGl0aW9uOwotICAgICAgICAgICAgICAgICBnZXRfcGFydGl0aW9uX3N0YXJ0X2FuZF9sZW5ndGggPSBfZG1fZ2V0X3BhcnRpdGlvbl9zdGFydF9hbmRfbGVuZ3RoOwotLSAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgIH0gZWxzZQotKyNlbmRpZgotKyAgICAgICAgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2Jsa3BnX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfYmxrcGdfcmVtb3ZlX3BhcnRpdGlvbjsKLSAjaWZkZWYgQkxLUEdfUkVTSVpFX1BBUlRJVElPTgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QKaW5kZXggNjk1YzVlOC4uZjM5YzQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsNSBAQAogIyEvYmluL3NoCiAKLW1ha2UgLUMgdGVzdHMgY2hlY2stVEVTVFMKK2VjaG8gL2Rldi9zZGExID4+IC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QuZC9wYXJ0ZWQtdG1wCittYWtlIC1DIHRlc3RzIHRlc3Qtc3VpdGUubG9nCitybSAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0LmQvcGFydGVkLXRtcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhODE1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzayBwYXJ0aXRpb24gZWRpdGluZy9yZXNpemluZyB1dGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3BhcnRlZC9wYXJ0ZWQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgcmVhZGxpbmUgdXRpbC1saW51eCB2aXJ0dWFsL2xpYmljb252IgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9wYXJ0ZWQvcGFydGVkLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZG9jLW1hbmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsZS1mYWlsdXJlLXdoaWxlLWRpcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYnBhcnRlZF9mc19yZXNpemUtbGluay1hZ2FpbnN0LWxpYnV1aWQtZXhwbGljaXRseS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kbV9jaGVjay5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjQ3YjZhN2IzMTRmOGVkZWI2MTgxNTlmYTk1ZjljYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NThiNTg5YzIyMjk3Y2FjZGY0MzdmM2JhZmY2ZjA0YjMzMzA4NzUyMWFiMjc0ZjdhYjY3N2NiOGM2YmI3OGU0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRldmljZS1tYXBwZXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyB0ZXN0cyBwcmludC1hbGlnbiBwcmludC1tYXggZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQlta2RpciAkdC9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvCi0JY3AgLXIgJHtTfS90ZXN0cyAkdAotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQvdGVzdHMvCi0Jc2VkIC1pICJzfF5WRVJTSU9OLip8VkVSU0lPTiA9ICR7UFZ9fGciICR0L3Rlc3RzL01ha2VmaWxlCi0JZm9yIGkgaW4gcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemU7IFwKLQkgIGRvIGNwICR7Qn0vdGVzdHMvLmxpYnMvJGkgJHQvdGVzdHMvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uMyBtYWtlIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFydHByb2JlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BhcnRwcm9iZV0gPSAiJHtzYmluZGlyfS9wYXJ0cHJvYmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZmQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkRpc2sgcGFydGl0aW9uIGVkaXRpbmcvcmVzaXppbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWQvcGFydGVkLmh0bWwiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHJlYWRsaW5lIHV0aWwtbGludXggdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3BhcnRlZC9wYXJ0ZWQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kb2MtbWFuZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGlicGFydGVkX2ZzX3Jlc2l6ZS1saW5rLWFnYWluc3QtbGlidXVpZC1leHBsaWNpdGx5LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDkwNjU1ZDA1ZjNjNDcxYWE4ZTE1YTI3NTM2ODg5ZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlMmI0YmQ4NzAxODYyNWM1MTU0MjFkNDUyNGY2ZTNiNTUxNzViNDcyMzAyMDU2MzkxYzVmN2VjY2I4M2Q0NCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgdGVzdHMgcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemUgcHJpbnQtZmxhZ3MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJbWtkaXIgJHQvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHQvYnVpbGQtYXV4LworCWNwIC1yICR7U30vdGVzdHMgJHQKKwljcCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLworCXNlZCAtaSAic3xeVkVSU0lPTi4qfFZFUlNJT04gPSAke1BWfXxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xeYWJzX3NyY2RpciA9Lip8YWJzX3NyY2RpciA9IFwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHQvdGVzdHMvTWFrZWZpbGUKKwlmb3IgaSBpbiBwcmludC1hbGlnbiBwcmludC1tYXggcHJpbnQtZmxhZ3MgZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZTsgXAorCSAgZG8gY3AgJHtCfS90ZXN0cy8ubGlicy8kaSAkdC90ZXN0cy87IFwKKwlkb25lCisJc2VkIC1lICdzfCAuLi9wYXJ0ZWR8fCcgLWkgJHQvdGVzdHMvKi5zaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIG1ha2UgZ2F3ayBlMmZzcHJvZ3MtbWtlMmZzIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCisgICAgICAgIGdsaWJjLXV0aWxzIFwKKyAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXJ0cHJvYmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFydHByb2JlXSA9ICIke3NiaW5kaXJ9L3BhcnRwcm9iZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKaW5kZXggMTI3NWNjMC4uZTMyMWNkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKQEAgLTUsNyArNSw3IEBACiBuZXdlciAoaWU6IGFueXRoaW5nIGNvbXByZXNzZWQgd2l0aCBwYnppcDIgY2FuIGJlIGRlY29tcHJlc3NlZCB3aXRoIGJ6aXAyKS4iCiBIT01FUEFHRSA9ICJodHRwOi8vY29tcHJlc3Npb24uY2EvcGJ6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgorTElDRU5TRSA9ICJiemlwMi0xLjAuNiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5OGI4ODMyYzZmODQwY2ZlYmQyMGFiMmJlNmEzNzQzIgogCiBERVBFTkRTID0gImJ6aXAyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0ODE5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gMDgyNWRiOTRmYzkxZmEyMTUwYzBlNjQ5ZTkyY2M4ZGNjNDRmNGIzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IEFwciAyMDE4IDE0OjA5OjQ1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvbmxzLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL25scy5oIGIvaW5jbHVkZS9ubHMuaAotaW5kZXggMTE2NmI3Yi4uZjVhYmUwNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbmxzLmgKLSsrKyBiL2luY2x1ZGUvbmxzLmgKLUBAIC02LDcgKzYsNyBAQAotICNkZWZpbmUgUFJPQ1BTX05HX05MU19ICi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyB0ZXh0ZG9tYWluKCkgbmVlZCBQQUNLQUdFIHN0cmluZyAqLwotLSNpbmNsdWRlICIuLi9jb25maWcuaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyBiaW5kdGV4dGRvbWFpbigpIGFsc28gbmVlZCBMT0NBTEVESVIgc3RyaW5nICovCi0gI2lmbmRlZiBMT0NBTEVESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDBlNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKLXRoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjA3MTdhN2NiNDc0YjNkNmRmZGVlZGZiYWQyZWNjYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGJkNzQ0ZmZjYjNkZTJkNTkxZDJmNmFjZjFhNTRhN2JhMDcwZmRjYzQzMmE4NTU5MzFhNTA1NzE0OWYwNDY1IgotCi1TID0gIiR7V09SS0RJUn0vcHJvY3BzLW5nLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCi0gICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQotICAgICAgICBmaQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKLSAgICAgICAgZmkKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCi0KLWJpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCi1iYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKLWJhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLSMgJ3BzJyBpc24ndCBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgc2VjdXJpdHkgdG9vbCBzbyB3aGl0ZWxpc3QgdGhpcyBDVkUuCi0jIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTQ3MyNjMwotQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTgtMTEyMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgxMGViZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAordGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2NwcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00Y2Y2NmE0OTg0MTIwMDA3Yzk4ODFjYzg3MWNmNDlkYiBcCisgICAgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI1OWM4OGUxOGYyOTAwMGNlYWY3ZTVmOTgxODFiMDdiZTQ0M2NmMTJmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkKKyMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0CisjIGRvZXNuJ3QgYmVsaWV2ZSBwby8gaXMgYSBnZXR0ZXh0IGRpcmVjdG9yeSBhbmQgd29uJ3QgZ2VuZXJhdGUgcG8vTWFrZWZpbGUuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKKyAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAorICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgorICAgICAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKKworYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUgdyIKK2Jhc2VfYmluZGlyX3Byb2dzICs9ICJraWxsIHBpZG9mIHBzIHdhdGNoIgorYmFzZV9zYmluZGlyX3Byb2dzICs9ICJzeXNjdGwiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3BpZG9mXSA9ICIxNTAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKKworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicpLCBwcm9nKSkKK30KKworIyAncHMnIGlzbid0IHN1aXRhYmxlIGZvciB1c2UgYXMgYSBzZWN1cml0eSB0b29sIHNvIHdoaXRlbGlzdCB0aGlzIENWRS4KKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTc1NDczI2MzCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOC0xMTIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwppbmRleCA1OTRhMTBjLi42YWIxMjg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtNyw3ICs3LDcgQEAKIHByb2Nlc3NlcyBpZGVudGlmaWVkIGJ5IG5hbWUuICBUaGUgZnVzZXIgY29tbWFuZCBpZGVudGlmaWVzIHRoZSBQSURzIFwKIG9mIHByb2Nlc3NlcyB0aGF0IGFyZSB1c2luZyBzcGVjaWZpZWQgZmlsZXMgb3IgZmlsZXN5c3RlbXMuIgogU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaW50bCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwiCiBMSUNFTlNFID0gIkdQTHYyIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wc21pc2MvcHNtaXNjLSR7UFZ9LnRhci5neiIKQEAgLTE5LDcgKzE5LDYgQEAKICMgVXBzdHJlYW0gaGFzIGEgY3VzdG9tIGF1dG9nZW4uc2ggd2hpY2ggaW52b2tlcyBwby91cGRhdGUtcG90ZmlsZXMgYXMgdGhleSAKICMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0IAogIyBkb2Vzbid0IGJlbGlldmUgcG8vIGlzIGEgZ2V0dGV4dCBkaXJlY3RvcnkgYW5kIHdvbid0IGdlbmVyYXRlIHBvL01ha2VmaWxlLgotRVhUUkFfQVVUT1JFQ09ORl9yZW1vdmUgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgICggY2QgJHtTfSAmJiBwby91cGRhdGUtcG90ZmlsZXMgKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ1MTMwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZGFjMzc1ZjY0MGZlY2Q0NWU2MjU0YThkODcwZWUzN2VjOGY0MTY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQotIHRoZXJlCi0KLU90aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDQ0MWFlOTQuLjg4Mjk2OWQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC04Niw3ICs4Niw3IEBAIEVYVFJBX0RJU1QgPSBzcmMvc2lnbmFtZXMuYyBSRUFETUUubWQgbWlzYy9naXQtdmVyc2lvbi1nZW4KLSBDTEVBTkZJTEVTID0gc3JjL3NpZ25hbWVzLmgKLSAKLSBzcmMvc2lnbmFtZXMuaDogc3JjL3NpZ25hbWVzLmMgTWFrZWZpbGUgc3JjLyQoYW1fX2RpcnN0YW1wKQotLQkJZXhwb3J0IExDX0FMTD1DIDsgXAotKwkJZXhwb3J0IExDX0FMTD1DIDsgbWtkaXIgLXAgc3JjIDsgXAotIAkJQENQUEAgLWRNICQ8IHxcCi0gCQl0ciAtcyAnXHQgJyAnICcgfCBzb3J0IC1uIC1rIDMgfCBzZWQgXAotIAknczojZGVmaW5lIFNJR1woW0EtWl1bQS1aXSpbMC05XSpcKSBcKFswLTldWzAtOV0qXCkuKiRcOntcIFwyLCJcMSIgfSw6cDtkJyB8IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYgppbmRleCBiM2MzYzdlLi5lNTY5ZjEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4zLmJiCkBAIC00LDcgKzQsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdGxhYi5jb20vcHNtaXNjL3BzbWlzYy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNowqBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3OGJkZTg0OTA0MWU2YzkxNGEyYTUxN2ViZTEyNTViODZkYzk4NzcyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTJmMmNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZGE1MjhkNWQ2MDEzN2YxMzIwMjEwMmI1M2NmMTc4YWJhNDU4NDlhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCA2IE9jdCAyMDE5IDAwOjA1OjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3RlbWQ6IHVzZSBFbnZpcm9ubWVudEZpbGUKKworVXNlIE9FIHNwZWNpZmljIGVudmlyb25tZW50IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMiArKworIHN5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDJkZDk0NzEuLjQ3YTQ2YzAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY5LDUgKzY5LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbbnNzLmggcnBjc3ZjL21vdW50LmhdKQorICMgMiAiZXZhbHMiIG5lZWRlZCB0byBleHBhbmQgdmFyaWFibGUgbmFtZXMKKyBBQ19TVUJTVChbX3NiaW5kaXJdKQorIEFDX0NPTkZJR19DT01NQU5EU19QUkUoW2V2YWwgZXZhbCBfc2JpbmRpcj0kc2JpbmRpcl0pCisrQUNfU1VCU1QoW19zeXNjb25mZGlyXSkKKytBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtldmFsIGV2YWwgX3N5c2NvbmZkaXI9JHNiaW5kaXJdKQorIAorIEFDX09VVFBVVChbTWFrZWZpbGUgc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2VdKQorZGlmZiAtLWdpdCBhL3N5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK2luZGV4IDdiMWM3NGIuLmY0NWVlMWUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JwY2JpbmQuc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK0BAIC0xMSw3ICsxMSw3IEBAIFdhbnRzPXJwY2JpbmQudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1ub3RpZnkKKy0jIGRpc3RybyBjYW4gcHJvdmlkZSBhIGRyb3AtaW4gYWRkaW5nIEVudmlyb25tZW50RmlsZT0tLz8/PyBpZiBuZWVkZWQuCisrRW52aXJvbm1lbnRGaWxlPS1AX3N5c2NvbmZkaXJAL3JwY2JpbmQuY29uZgorIEV4ZWNTdGFydD1AX3NiaW5kaXJAL3JwY2JpbmQgJFJQQ0JJTkRfT1BUSU9OUyAtdyAtZgorIAorIFtJbnN0YWxsXQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYKaW5kZXggMmE0ZGZiYy4uZjQyM2FjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mCkBAIC0xLDMgKzEsMyBAQAogIyBPcHRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHJwY2JpbmQuCiAjCi1SUENCSU5EX09QVFM9IiIKK1JQQ0JJTkRfT1BUSU9OUz0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZGFkZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249UlBDIEJpbmQgU2VydmljZQotUmVxdWlyZXM9cnBjYmluZC5zb2NrZXQKLQotW1NlcnZpY2VdCi1UeXBlPWZvcmtpbmcKLUVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL3JwY2JpbmQuY29uZgotRXhlY1N0YXJ0PUBTQklORElSQC9ycGNiaW5kICRSUENCSU5EX09QVFMKLVN1Y2Nlc3NFeGl0U3RhdHVzPTIKLQotW0luc3RhbGxdCi1BbHNvPXJwY2JpbmQuc29ja2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2M2MxZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPVJQQ2JpbmQgU2VydmVyIEFjdGl2YXRpb24gU29ja2V0Ci0KLVtTb2NrZXRdCi1MaXN0ZW5TdHJlYW09L3Zhci9ydW4vcnBjYmluZC5zb2NrCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9c29ja2V0cy50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYgppbmRleCAxOWQ3NzhiLi5hZmYwMGU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMS4yLjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzEuMi41LmJiCkBAIC0xMyw5ICsxMyw4IEBACiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ycGNiaW5kL3JwY2JpbmQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LmQgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kX2FkZF9vcHRpb25fdG9fZml4X3BvcnRfbnVtYmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZWQ0NmYwOWI5YzBmYTJkNDkwMTVmNjQzMWJjNWVhN2IiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNlMzYwNjgzOTYzYjM1YzE5YzQzZjBlZTJjN2YxOGFhNWI4MWVmNDFjM2ZkYmQxNWZmY2IwMGI4YmZmZGE3YSIKQEAgLTI4LDcgKzI3LDcgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJycGNiaW5kIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTIgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJwY2JpbmQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJycGNiaW5kLnNlcnZpY2UgcnBjYmluZC5zb2NrZXQiCiAKIGluaGVyaXQgdXNlcmFkZAogCkBAIC01MCwxMiArNDksNCBAQAogCQktZSAncywvc2Jpbi8sJHtzYmluZGlyfS8sZycgXAogCQkke1dPUktESVJ9L2luaXQuZCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ycGNiaW5kCiAJY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcnBjYmluZAotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcnBjYmluZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JwY2JpbmQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnBjYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycGNiaW5kLnNlcnZpY2UKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2FhNWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2NyeXB0IFwKLSAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbW9yZS1jb21wYXRpYmlsaXR5LXN0dWZmLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiODk3MWViZDY4ZDA0NmYyODE0ZDEwNDBjYjhlNjY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTc3NTMyOGZhNzgzYmQyYTc4N2Q3MjIwMTRkYmQ5OWM2MDkzZWZmYzExZjMzNzgyNzYwNGMyZWZjNWQyMGMxIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IC0td2l0aC1zeXMtc2NyZWVucmM9JHtzeXNjb25mZGlyfS9zY3JlZW5yYyBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLUQgLW0gNjQ0ICR7U30vZXRjL2V0Y3NjcmVlbnJjICR7RH0vJHtzeXNjb25mZGlyfS9zY3JlZW5yYwotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3MmViNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PWI4ZGM3MTdjOWEzZGJhODQyYWU2YzQ0Y2EwZjczZjUyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBcCisgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1vcmUtY29tcGF0aWJpbGl0eS1zdHVmZi5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDI3NjIxM2QzYWNkMTAzMzljZDM3ODQ4YjhjNGFiMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUxMWIxM2Q4NDg5OTI1ZmRlMjVkZmIwOTM1YmY2ZWQ3MWY5ZWI0N2VmZjIzM2ExODFlMDc4ZmRlNTY1NWFhMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSAtLXdpdGgtc3lzLXNjcmVlbnJjPSR7c3lzY29uZmRpcn0vc2NyZWVucmMgXAorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1EIC1tIDY0NCAke1N9L2V0Yy9ldGNzY3JlZW5yYyAke0R9LyR7c3lzY29uZmRpcn0vc2NyZWVucmMKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmExYTRiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZ251bGliLm1rIGIvbGliL2dudWxpYi5tawotaW5kZXggZTFkNzRkYi4uYzBlOTJkZCAxMDA2NDQKLS0tLSBhL2xpYi9nbnVsaWIubWsKLSsrKyBiL2xpYi9nbnVsaWIubWsKLUBAIC0xODgyLDcgKzE4ODIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzBmNjI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0c3VpdGUgLWsgcnVudGVzdC1URVNUUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjkzOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLXNlZDogYWRkIHB0ZXN0Ci0KLXB0ZXN0IG5lZWRzIGJ1aWxkdGVzdC1URVNUUyBhbmQgcnVudGVzdC1URVNUUyB0YXJnZXRzLgotc2VyaWFsLXRlc3RzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRob3NlIHRhcmdldHMuCi0KLUFuZCBmaXggZm9sbG93aW5nIGVycm9yIGFmdGVyIGFkZCBzZXJpYWwtdGVzdHMuCi0KLVtzbmlwXQotaGVscDJtYW46IGNhbid0IGdldCBgLS1oZWxwJyBpbmZvIGZyb20gLi4vc2VkL3NlZAotbWFrZVsyXTogKioqIFtzZWQuMV0gRXJyb3IgMgotW3NuaXBdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8ICAgIDIgKy0KLSBkb2MvTWFrZWZpbGUuYW0gICAgICAgfCAgICAyICstCi0gdGVzdHN1aXRlL01ha2VmaWxlLmFtIHwgICAgNiArKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWQzM2VjOS4uNGYwYzUzMiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNCw3ICs0LDcgQEAgQUNfQ09ORklHX0FVWF9ESVIoYnVpbGQtYXV4KQotIEFDX0NPTkZJR19TUkNESVIoW3NlZC9zZWQuY10pCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaDpjb25maWdfaC5pbikKLSBBQ19QUkVSRVEoMi42MCkKLS1BTV9JTklUX0FVVE9NQUtFCi0rQU1fSU5JVF9BVVRPTUFLRShbc2VyaWFsLXRlc3RzXSkKLSAKLSBTRURfRkVBVFVSRV9WRVJTSU9OPTQuMi4yCi0gQUNfREVGSU5FX1VOUVVPVEVEKFNFRF9GRUFUVVJFX1ZFUlNJT04sICIkU0VEX0ZFQVRVUkVfVkVSU0lPTiIsCi1kaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCBhZjY5NzVjLi42ZmQ4YzlhIDEwMDY0NAotLS0tIGEvZG9jL01ha2VmaWxlLmFtCi0rKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0yNSw3ICsyNSw3IEBAICQoc3JjZGlyKS9zLXRleGk6IHNlZC1pbi50ZXhpICQoc3JjZGlyKS9ncm91cGlmeS5zZWQKLSAJZmkKLSAJZWNobyBzdGFtcCA+ICQoc3JjZGlyKS9zLXRleGkKLSAKLS1zZWQuMTogJCh0b3Bfc3JjZGlyKS9zZWQvc2VkLmMgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMgJChzcmNkaXIpL3NlZC54Ci0rX3NlZC4xOiAkKHRvcF9zcmNkaXIpL3NlZC9zZWQuYyAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYyAkKHNyY2Rpcikvc2VkLngKLSAJJChIRUxQMk1BTikgLS1uYW1lICJzdHJlYW0gZWRpdG9yIGZvciBmaWx0ZXJpbmcgYW5kIHRyYW5zZm9ybWluZyB0ZXh0IiBcCi0gCSAgLXAgc2VkIC0taW5jbHVkZSAkKHNyY2Rpcikvc2VkLnggLW8gJChzcmNkaXIpL3NlZC4xICQoU0VEKSAKLSAKLWRpZmYgLS1naXQgYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLWluZGV4IGQ4MGU3MmMuLmIwNWYwMWUgMTAwNjQ0Ci0tLS0gYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQotQEAgLTk5LDUgKzk5LDExIEBAIEVYVFJBX0RJU1QgPSBcCi0gIyBhdXRvbWFrZSBtYWtlcyBgY2hlY2snIGRlcGVuZCBvbiAkKFRFU1RTKS4gIERlY2xhcmUKLSAjIGR1bW15IHRhcmdldHMgZm9yICQoVEVTVFMpIHNvIHRoYXQgbWFrZSBkb2VzIG5vdCBjb21wbGFpbi4KLSAKLStpbnN0YWxsLXB0ZXN0OgotKwljZCAkKEJVSUxERElSKTsgdGFyIC1jIC0tZXhjbHVkZT0qLm8gJChURVNURElSKSB8ICggY2QgJChERVNURElSKSAmJiB0YXIgLXhmIC0gKQotKwlmb3IgaSBpbiAkKEVYVFJBX0RJU1QpIHRzdC1yZWdleDIuYzsgZG8gaW5zdGFsbCAkKHNyY2RpcikvJCRpICQoREVTVERJUikvJChURVNURElSKTsgZG9uZQotKwlzZWQgLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvYmFzaC9zaC8nIC1pICQoREVTVERJUikvJChURVNURElSKS9NYWtlZmlsZQotKwlmb3IgaSBpbiBgZ3JlcCAtcmwgIi4uL3NlZC9zZWQiICQoREVTVERJUikvJChURVNURElSKWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJCRpOyBkb25lCi0rCi0gLlBIT05ZOiAkKFNFRFRFU1RTKQotICQoU0VEVEVTVFMpOgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzZDdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNSBAQAorIyEvYmluL3NoCisKK2Nob3duIG5vYm9keSB0ZXN0c3VpdGUKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNDM2YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTc2N2FiM2EwNmQ3NTg0ZjZmZDA0NjlhYmFlYzQ0MTJmIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2VkLWFkZC1wdGVzdC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxMTFkZTRmYWEzYjk4NDhhMDY4NmIyZjI2MGM1MDU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlYTBhOTRkNGI2MDU4OTRmM2UyZDU1NzJlM2Y5NmU0NDEzYmNhZDNhMDg1YWFlNzM2N2MyY2YwNzkwOGIyZmYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLVJSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1ydS1ydSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hY2wgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLS1lbmFibGUtcmVnZXgtdGVzdHMnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaWYgWyAhICR7RH0ke2JpbmRpcn0gLWVmICR7RH0ke2Jhc2VfYmluZGlyfSBdOyB0aGVuCi0JICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKLQkgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLQlmaQotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2VkXSA9ICIke2Jhc2VfYmluZGlyfS9zZWQiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLVRFU1RESVIgPSAidGVzdHN1aXRlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0Jc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2VkJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllM2E2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PWZiM2M3ZTZmYmNhNmY2Njk0Mzg1OTE1M2Q0YmU4ZWZlIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkOTA2ZWRmZGIzMjAyMzA0MDU5MjMzZjUxZjlhNzFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3OWIwY2ZlYTcxYjM3YThlZWVjODQ5MGRiNmM1ZjdhZTc3MTljMzU1ODdmMjFlZGIwNjE3ZjM3MGVlZmY2MzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0CisKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXgsLS13aXRob3V0LXNlbGludXgsbGlic2VsaW51eCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZ2F3ayBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1maWxlLXRlbXAgcGVybC1tb2R1bGUtZmlsZS1zdGF0IgorUlJFQ09NTUVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXJ1LXJ1IGxvY2FsZS1iYXNlLWVuLXVzIGxvY2FsZS1iYXNlLWVsLWdyLmlzby04ODU5LTciCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYWNsIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgorCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisJICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGVzdHN1aXRlL2dldC1tYi1jdXItbWF4IHRlc3RzdWl0ZS90ZXN0LW1icnRvd2MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXJmICR7U30vdGVzdHN1aXRlLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBjcCAtcmYgJHtCfS90ZXN0c3VpdGUvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgIGNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgICAgIGNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgY3AgJHtTfS9pbml0LmNmZyAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgIHNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9iYXNoL3NoLycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgZm9yIGkgaW4gYGdyZXAgLXJsICJzZWQvc2VkIiAke0R9JHtQVEVTVF9QQVRIfWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJGk7IGRvbmUKKworCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOmFic190b3BfYnVpbGRkaXIgPS4qOmFic190b3BfYnVpbGRkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOmFic190b3Bfc3JjZGlyID0uKjphYnNfdG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6YWJzX3NyY2RpciA9Lio6YWJzX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6dG9wX3NyY2RpciA9Lio6dG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKaW5kZXggYWFjMmQ0Mi4uYWIzMTdiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGNmMzQ1NGQ1NjdmNzcyMzMwMjNiZTQ5YTM5YTMzZTlmMDgzNmY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmEyZDk0NTM2NTY2NDEwMDI4MDJkODE2NWU4MGFkYjllNmE3MjlkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogRGF0ZTogVGh1LCAxNCBBcHIgMjAxNiAxMjoyODo1NyArMDIwMAogU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHVzZSBvZiBzeXNsb2cgZm9yIHN5c3Jvb3QKQEAgLTEyLDYgKzEyLDcgQEAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9ncm91cGFkZC5jICB8IDMgKysrCiAgc3JjL2dyb3VwZGVsLmMgIHwgMyArKysKQEAgLTIzLDcgKzI0LDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKLWluZGV4IDYzZTFjNDguLmE1OTZjNDkgMTAwNjQ0CitpbmRleCAyZGQ4ZWVjLi5lOWM0YmI3IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwYWRkLmMKICsrKyBiL3NyYy9ncm91cGFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMzcsNyArMzgsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBkZWwuYyBiL3NyYy9ncm91cGRlbC5jCi1pbmRleCA3MGJlZDAxLi5hYmFiZDgxIDEwMDY0NAoraW5kZXggZjk0MWE4NC4uNWE3MDA1NiAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGRlbC5jCiArKysgYi9zcmMvZ3JvdXBkZWwuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTY1LDcgKzY2LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgI2luY2x1ZGUgPGdycC5oPgogZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKLWluZGV4IDcyZGFmMmMuLjg5NjVmOWQgMTAwNjQ0CitpbmRleCAxZGNhNWZjLi5iYzE0NDM4IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwbW9kLmMKICsrKyBiL3NyYy9ncm91cG1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtNzksNyArODAsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggM2FhZjQ1Yy4uMWFiOTE3NCAxMDA2NDQKK2luZGV4IDRhZjBmN2MuLjFiN2JmMDYgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmFkZC5jCiArKysgYi9zcmMvdXNlcmFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VyZGVsLmMgYi9zcmMvdXNlcmRlbC5jCi1pbmRleCBjOGRlMWQzLi4yNGQzZWE5IDEwMDY0NAoraW5kZXggY2M5NTFlNS4uMTUzZTBiZSAxMDA2NDQKIC0tLSBhL3NyYy91c2VyZGVsLmMKICsrKyBiL3NyYy91c2VyZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC0xMDcsNyArMTA4LDcgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggY2NmYmI5OS4uMjRmYjYwZCAxMDA2NDQKK2luZGV4IDA1Yjk4NzEuLjIxYzZkYTkgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcm1vZC5jCiArKysgYi9zcmMvdXNlcm1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMTIwLDYgKzEyMSwzIEBACiAgI2luY2x1ZGUgPGFzc2VydC5oPgogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTBiYTNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gZmUzNGEyYTBlNDRiYzgwZmYyMTNiZmQxODUwNDZhNWYxMGM5NDk5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExhbWIgPGNocmlzQGNocmlzLWxhbWIuY28udWs+Ci1EYXRlOiBXZWQsIDIgSmFuIDIwMTkgMTg6MDY6MTYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIE1ha2UgdGhlIHNwX2xzdGNoZyBzaGFkb3cgZmllbGQgcmVwcm9kdWNpYmxlIChyZS4gIzcxKQotCi1Gcm9tIDxodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9wdWxsLzcxPjoKLQotYGBgCi1UaGUgdGhpcmQgZmllbGQgaW4gdGhlIC9ldGMvc2hhZG93IGZpbGUgKHNwX2xzdGNoZykgY29udGFpbnMgdGhlIGRhdGUgb2YKLXRoZSBsYXN0IHBhc3N3b3JkIGNoYW5nZSBleHByZXNzZWQgYXMgdGhlIG51bWJlciBvZiBkYXlzIHNpbmNlIEphbiAxLCAxOTcwLgotQXMgdGhpcyBpcyBhIHJlbGF0aXZlIHRpbWUsIGNyZWF0aW5nIGEgdXNlciB0b2RheSB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzg6MDo5OTk5OTo3Ojo6Ci13aGlsc3QgY3JlYXRpbmcgdGhlIHNhbWUgdXNlciB0b21vcnJvdyB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzk6MDo5OTk5OTo3Ojo6Ci1UaGlzIGhhcyBhbiBpbXBhY3QgZm9yIHRoZSBSZXByb2R1Y2libGUgQnVpbGRzWzBdIHByb2plY3Qgd2hlcmUgd2UgYWltIHRvCi1iZSBpbmRlcGVuZGVudCBvZiBhcyBtYW55IGVsZW1lbnRzIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhcyBwb3NzaWJsZSwKLWluY2x1ZGluZyB0aGUgY3VycmVudCBkYXRlLgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW91ciB0byB1c2UgdGhlIFNPVVJDRV9EQVRFX0VQT0NIWzFdCi1lbnZpcm9ubWVudCB2YXJpYWJsZSAoaW5zdGVhZCBvZiBKYW4gMSwgMTk3MCkgaWYgdmFsaWQuCi1gYGAKLQotVGhpcyB1cGRhdGVkIFBSIGFkZHMgc29tZSBtaXNzaW5nIGNhbGxzIHRvIGdldHRpbWUgKCkuIFRoaXMgd2FzIG9yaWdpbmFsbHkKLWZpbGVkIGJ5IEpvaGFubmVzIFNjaGF1ZXIgaW4gRGViaWFuIGFzICM5MTc3NzMgWzJdLgotCi1bMF0gaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy8KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnL3NwZWNzL3NvdXJjZS1kYXRlLWVwb2NoLwotWzJdIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzkxNzc3MwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+Ci0tLS0KLSBsaWJtaXNjL3B3ZDJzcHdkLmMgfCAzICstLQotIHNyYy9wd2NrLmMgICAgICAgICB8IDIgKy0KLSBzcmMvcHdjb252LmMgICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtaXNjL3B3ZDJzcHdkLmMgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLWluZGV4IGMxYjliMjlhYzg3My4uNjc5OWRkNTBkNDkwIDEwMDY0NAotLS0tIGEvbGlibWlzYy9wd2Qyc3B3ZC5jCi0rKysgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLUBAIC00MCw3ICs0MCw2IEBACi0gI2luY2x1ZGUgInByb3RvdHlwZXMuaCIKLSAjaW5jbHVkZSAiZGVmaW5lcy5oIgotICNpbmNsdWRlIDxwd2QuaD4KLS1leHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqKTsKLSAKLSAvKgotICAqIHB3ZF90b19zcHdkIC0gY3JlYXRlIGVudHJpZXMgZm9yIG5ldyBzcHdkIHN0cnVjdHVyZQotQEAgLTY2LDcgKzY1LDcgQEAgc3RydWN0IHNwd2QgKnB3ZF90b19zcHdkIChjb25zdCBzdHJ1Y3QgcGFzc3dkICpwdykKLSAJCSAqLwotIAkJc3Auc3BfbWluID0gMDsKLSAJCXNwLnNwX21heCA9ICgxMDAwMEwgKiBEQVkpIC8gU0NBTEU7Ci0tCQlzcC5zcF9sc3RjaGcgPSAobG9uZykgdGltZSAoKHRpbWVfdCAqKSAwKSAvIFNDQUxFOwotKwkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIGdldHRpbWUgKCkgLyBTQ0FMRTsKLSAJCWlmICgwID09IHNwLnNwX2xzdGNoZykgewotIAkJCS8qIEJldHRlciBkaXNhYmxlIGFnaW5nIHRoYW4gcmVxdWlyaW5nIGEgcGFzc3dvcmQKLSAJCQkgKiBjaGFuZ2UgKi8KLWRpZmYgLS1naXQgYS9zcmMvcHdjay5jIGIvc3JjL3B3Y2suYwotaW5kZXggMGZmYjcxMWVmYjEzLi5mNzAwNzFiMTI1MDAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHdjay5jCi0rKysgYi9zcmMvcHdjay5jCi1AQCAtNjA5LDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3B3X2ZpbGUgKGludCAqZXJyb3JzLCBib29sICpjaGFuZ2VkKQotIAkJCQkJc3Auc3BfaW5hY3QgID0gLTE7Ci0gCQkJCQlzcC5zcF9leHBpcmUgPSAtMTsKLSAJCQkJCXNwLnNwX2ZsYWcgICA9IFNIQURPV19TUF9GTEFHX1VOU0VUOwotLQkJCQkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIHRpbWUgKCh0aW1lX3QgKikgMCkgLyBTQ0FMRTsKLSsJCQkJCXNwLnNwX2xzdGNoZyA9IChsb25nKSBnZXR0aW1lICgpIC8gU0NBTEU7Ci0gCQkJCQlpZiAoMCA9PSBzcC5zcF9sc3RjaGcpIHsKLSAJCQkJCQkvKiBCZXR0ZXIgZGlzYWJsZSBhZ2luZyB0aGFuCi0gCQkJCQkJICogcmVxdWlyaW5nIGEgcGFzc3dvcmQgY2hhbmdlCi1kaWZmIC0tZ2l0IGEvc3JjL3B3Y29udi5jIGIvc3JjL3B3Y29udi5jCi1pbmRleCA5YzY5ZmExMzFkOGUuLmY5MzJmMjY2YzU5YyAxMDA2NDQKLS0tLSBhL3NyYy9wd2NvbnYuYwotKysrIGIvc3JjL3B3Y29udi5jCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJc3BlbnQuc3BfZmxhZyAgID0gU0hBRE9XX1NQX0ZMQUdfVU5TRVQ7Ci0gCQl9Ci0gCQlzcGVudC5zcF9wd2RwID0gcHctPnB3X3Bhc3N3ZDsKLS0JCXNwZW50LnNwX2xzdGNoZyA9IChsb25nKSB0aW1lICgodGltZV90ICopIDApIC8gU0NBTEU7Ci0rCQlzcGVudC5zcF9sc3RjaGcgPSAobG9uZykgZ2V0dGltZSAoKSAvIFNDQUxFOwotIAkJaWYgKDAgPT0gc3BlbnQuc3BfbHN0Y2hnKSB7Ci0gCQkJLyogQmV0dGVyIGRpc2FibGUgYWdpbmcgdGhhbiByZXF1aXJpbmcgYSBwYXNzd29yZAotIAkJCSAqIGNoYW5nZSAqLwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRjYmIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWVycm9yLXdpdGgtZGFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2M1MmE4NGZmODc3NTU5MGU3ZTlkYTljMGQ0NDA4YzIzNDk0MzA1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMTkgMTU6MzY6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY29uZmlndXJlIGVycm9yIHdpdGggZGFzaAotCi1BIGNvbmZpZ3VyZSBlcnJvciBvY2N1cnMgd2hlbiAvYmluL3NoIC0+IGRhc2g6Ci0gIGNoZWNraW5nIGZvciBpc19zZWxpbnV4X2VuYWJsZWQgaW4gLWxzZWxpbnV4Li4uIHllcwotICBjaGVja2luZyBmb3Igc2VtYW5hZ2VfY29ubmVjdCBpbiAtbHNlbWFuYWdlLi4uIHllcwotICBjb25maWd1cmU6IDE2MzIyOiB0ZXN0OiB5ZXN5ZXM6IHVuZXhwZWN0ZWQgb3BlcmF0b3IKLQotVXNlICI9IiBpbnN0ZWFkIG9mICI9PSIgc2luY2UgZGFzaCBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcGVyYXRvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L2NvbW1pdC8zYzUyYTg0ZmY4Nzc1NTkwZTdlOWRhOWMwZDQ0MDhjMjM0OTQzMDVlXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY3NjI1NTYuLjE5MDdhZmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBpZiB0ZXN0ICIkd2l0aF9zZWxpbnV4IiAhPSAibm8iOyB0aGVuCi0gCQkJQUNfTVNHX0VSUk9SKFtsaWJzZW1hbmFnZSBub3QgZm91bmRdKQotIAkJZmkKLSAKLS0JCWlmIHRlc3QgIiRzZWxpbnV4X2xpYiRzZW1hbmFnZV9saWIiID09ICJ5ZXN5ZXMiIDsgdGhlbgotKwkJaWYgdGVzdCAiJHNlbGludXhfbGliJHNlbWFuYWdlX2xpYiIgPSAieWVzeWVzIiA7IHRoZW4KLSAJCQlBQ19ERUZJTkUoV0lUSF9TRUxJTlVYLCAxLAotIAkJCSAgICAgICAgICBbQnVpbGQgc2hhZG93IHdpdGggU0VMaW51eCBzdXBwb3J0XSkKLSAJCQlMSUJTRUxJTlVYPSItbHNlbGludXgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTZmNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VzZXJhZGQuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IDAwYTNjMzAuLjllY2JiNTggMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcmFkZC5jCi0rKysgYi9zcmMvdXNlcmFkZC5jCi1AQCAtMjAyMSw2ICsyMDIxLDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCi0gfQotIAotIC8qCi0rICogbWtkaXJfcCAtIGNyZWF0ZSBkaXJlY3RvcmllcywgaW5jbHVkaW5nIHBhcmVudCBkaXJlY3RvcmllcyB3aGVuIG5lZWRlZAotKyAqCi0rICogc2ltaWxhciB0byBgbWtkaXIgLXAnCi0rICovCi0rdm9pZCBta2Rpcl9wKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSsJaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKLSsJY2hhciBuZXdkaXJbbGVuICsgMV07Ci0rCW1vZGVfdCBtb2RlID0gMDc1NTsKLSsJaW50IGkgPSAwOwotKwotKwlpZiAocGF0aFtpXSA9PSAnXDAnKSB7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJLyogc2tpcCB0aGUgbGVhZGluZyAnLycgKi8KLSsJaSsrOwotKwotKwl3aGlsZShwYXRoW2ldICE9ICdcMCcpIHsKLSsJCWlmIChwYXRoW2ldID09ICcvJykgewotKwkJCXN0cm5jcHkobmV3ZGlyLCBwYXRoLCBpKTsKLSsJCQluZXdkaXJbaV0gPSAnXDAnOwotKwkJCW1rZGlyKG5ld2RpciwgbW9kZSk7Ci0rCQl9Ci0rCQlpKys7Ci0rCX0KLSsJbWtkaXIocGF0aCwgbW9kZSk7Ci0rfQotKwotKy8qCi0gICogY3JlYXRlX2hvbWUgLSBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQotICAqCi0gICoJY3JlYXRlX2hvbWUoKSBjcmVhdGVzIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QKLUBAIC0yMDM4LDM5ICsyMDY3LDM2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQotIAkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJCX0KLSAjZW5kaWYKLS0JCS8qIFhYWCAtIGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIC0tbWFyZWttICovCi0tCQlpZiAobWtkaXIgKHByZWZpeF91c2VyX2hvbWUsIDApICE9IDApIHsKLS0JCQlmcHJpbnRmIChzdGRlcnIsCi0tCQkJICAgICAgICAgXygiJXM6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iKSwKLS0JCQkgICAgICAgICBQcm9nLCBwcmVmaXhfdXNlcl9ob21lKTsKLSsJCW1rZGlyX3AodXNlcl9ob21lKTsKLSsJfQotKwlpZiAoYWNjZXNzIChwcmVmaXhfdXNlcl9ob21lLCBGX09LKSAhPSAwKSB7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLS0JCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0tCQkJICAgICAgICAgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCi0tCQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0rCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotKwkJCSAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAotKwkJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCQkgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0gI2VuZGlmCi0tCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwotLQkJfQotLQkJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7Ci0tCQljaG1vZCAocHJlZml4X3VzZXJfaG9tZSwKLS0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0tCQlob21lX2FkZGVkID0gdHJ1ZTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSsJfQotKwkodm9pZCkgY2hvd24gKHByZWZpeF91c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKLSsJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCi0rCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0rCWhvbWVfYWRkZWQgPSB0cnVlOwotICNpZmRlZiBXSVRIX0FVRElUCi0tCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJICAgICAgICAgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLS0JCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAotLQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7Ci0rCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCi0rCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLSsJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCSAgICAgIFNIQURPV19BVURJVF9TVUNDRVNTKTsKLSAjZW5kaWYKLSAjaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkvKiBSZXNldCBTRUxpbnV4IHRvIGNyZWF0ZSBmaWxlcyB3aXRoIGRlZmF1bHQgY29udGV4dHMgKi8KLS0JCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0tCQkJZnByaW50ZiAoc3RkZXJyLAotLQkJCSAgICAgICAgIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotLQkJCSAgICAgICAgIFByb2cpOwotLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLS0JCX0KLS0jZW5kaWYKLSsJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCi0rCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0rCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotKwkJCSBQcm9nKTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJfQotKyNlbmRpZgotIH0KLSAKLSAvKgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDItQWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzMzJlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKQEAgLTAsMCArMSwzMDEgQEAKK0Zyb20gYTdkOTk1MjI4NDkxYWQ1MjU1YWQ4NmMxZjA0YmEwNzFmNjg4MDg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgMTYgTm92IDIwMTMgMTU6Mjc6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWxsb3cgZm9yIHNldHRpbmcgcGFzc3dvcmQgaW4gY2xlYXIgdGV4dAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8ICA4ICsrKystLS0tCisgc3JjL2dyb3VwYWRkLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvZ3JvdXBtb2QuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIHNyYy91c2VyYWRkLmMgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0tLQorIHNyYy91c2VybW9kLmMgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZjMxZmQ3YS4uNGEzMTdhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTAzLDEwICsxMDMsMTAgQEAgY2hzaF9MREFERCAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUX05PUEFNKQorIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkgJChMSUJFQ09ORikKKyBleHBpcnlfTERBREQgPSAkKExEQUREKSAkKExJQkVDT05GKQorIGdwYXNzd2RfTERBREQgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLWdyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorK2dyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIGdyb3VwZGVsX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIGdyb3VwbWVtc19MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCistZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisrZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpICQoTElCQ1JZUFQpCisgZ3JwY2tfTERBREQgICAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwY29udl9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwdW5jb252X0xEQUREID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorQEAgLTEyNyw5ICsxMjcsOSBAQCBzdV9TT1VSQ0VTICAgICA9IFwKKyAJc3VhdXRoLmMKKyBzdV9MREFERCAgICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQkNSWVBUX05PUEFNKSAkKExJQlNLRVkpICQoTElCTUQpICQoTElCRUNPTkYpCisgc3Vsb2dpbl9MREFERCAgPSAkKExEQUREKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLXVzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHVzZXJkZWxfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkVDT05GKQorLXVzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHZpcHdfTERBREQgICAgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIAorIGluc3RhbGwtYW06IGFsbC1hbQorZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKK2luZGV4IGU5YzRiYjcuLmQ1NzJjMDAgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBhZGQuYworKysrIGIvc3JjL2dyb3VwYWRkLmMKK0BAIC0xMjcsOSArMTI3LDEwIEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlXG4iCisgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgR0lEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKKyAJZXhpdCAoc3RhdHVzKTsKKyB9CitAQCAtMzkxLDEzICszOTIsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJeyJrZXkiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCisgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJeyJzeXN0ZW0iLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKyAKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjpQOiIsCisrCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6UDpyUjpBOiIsCisgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGMpIHsKKyAJCWNhc2UgJ2YnOgorQEAgLTQ0OSwxMiArNDUxLDIwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlwZmxnID0gdHJ1ZTsKKyAJCQlncm91cF9wYXNzd2QgPSBvcHRhcmc7CisgCQkJYnJlYWs7CisrCQljYXNlICdQJzoKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlncm91cF9wYXNzd2QgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOworKwkJCWJyZWFrOworIAkJY2FzZSAncic6CisgCQkJcmZsZyA9IHRydWU7CisgCQkJYnJlYWs7CisgCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQlicmVhazsKKy0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkgUHJvZyk7CisrCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJdXNhZ2UgKEVfVVNBR0UpOworQEAgLTU4OCw3ICs1OTgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgiZ3JvdXBhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKK2luZGV4IGJjMTQ0MzguLjI1Y2NiNDQgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBtb2QuYworKysrIGIvc3JjL2dyb3VwbW9kLmMKK0BAIC0xMzgsOCArMTM4LDkgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byB1c2UgYSBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyAoZW5jcnlwdGVkKVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgY2xlYXIgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOworIAlleGl0IChzdGF0dXMpOworIH0KK0BAIC0zODcsMTEgKzM4OCwxMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl7Im5ldy1uYW1lIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ24nfSwKKyAJCXsibm9uLXVuaXF1ZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJeyJwYXNzd29yZCIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UDpSOkE6IiwKKyAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnZyc6CitAQCAtNDE4LDkgKzQyMCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCXBmbGcgPSB0cnVlOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCWJyZWFrOworLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCSBQcm9nKTsKKysJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKKyAJCQl1c2FnZSAoRV9VU0FHRSk7CitAQCAtNzYxLDcgKzc3MSw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJncm91cG1vZCIpOworICNpZmRlZiBXSVRIX0FVRElUCitkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKK2luZGV4IDFiN2JmMDYuLjQ0ZjA5ZTIgMTAwNjQ0CistLS0gYS9zcmMvdXNlcmFkZC5jCisrKysgYi9zcmMvdXNlcmFkZC5jCitAQCAtODUzLDkgKzg1MywxMCBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjbGVhciBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIGxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIHVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdXNlci1ncm91cCAgICAgICAgICAgICAgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyXG4iKSwgdXNhZ2VvdXQpOworQEAgLTExMzMsOSArMTEzNCwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJuby11c2VyLWdyb3VwIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnTid9LAorIAkJCXsibm9uLXVuaXF1ZSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCQl7InBhc3N3b3JkIiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsic3lzdGVtIiwgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InfSwKKyAJCQl7InJvb3QiLCAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKKyAJCQl7InNoZWxsIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndSd9LAorIAkJCXsidXNlci1ncm91cCIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKK0BAIC0xMTQ2LDkgKzExNDgsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9OworIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCisgI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVWjoiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlVaOiIsCisgI2Vsc2UJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVIiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVIiwKKyAjZW5kaWYJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworIAkJICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQkJc3dpdGNoIChjKSB7CitAQCAtMTMyMCwxMiArMTMyMiwxOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCX0KKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlicmVhazsKKysJCQljYXNlICdQJzogLyogc2V0IGNsZWFyIHRleHQgcGFzc3dvcmQgKi8KKysJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQkJYnJlYWs7CisgCQkJY2FzZSAncic6CisgCQkJCXJmbGcgPSB0cnVlOworIAkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoICAgKCAhVkFMSUQgKG9wdGFyZykgKQorQEAgLTIyNTcsNyArMjI2Niw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKyAKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCitpbmRleCAyMWM2ZGE5Li5jZmZkYjNlIDEwMDY0NAorLS0tIGEvc3JjL3VzZXJtb2QuYworKysrIGIvc3JjL3VzZXJtb2QuYworQEAgLTQzMSw4ICs0MzEsOSBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxvY2F0aW9uICh1c2Ugb25seSB3aXRoIC1kKVxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHVzaW5nIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIG5ldyBsb2dpbiBzaGVsbCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIG5ldyBVSUQgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtVSwgLS11bmxvY2sgICAgICAgICAgICAgICAgICB1bmxvY2sgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMDEwLDggKzEwMTEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJtb3ZlLWhvbWUiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ20nfSwKKyAJCQl7Im5vbi11bmlxdWUiLCAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJCXsicGFzc3dvcmQiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsicm9vdCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAorIAkJCXsic2hlbGwiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKKyAJCQl7InVubG9jayIsICAgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnVSd9LAorQEAgLTEwMjcsNyArMTAyOSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJCX07CisgCQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlA6UjpzOnU6VUE6IgorICNpZmRlZiBFTkFCTEVfU1VCSURTCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgInY6dzpWOlc6IgorICNlbmRpZgkJCQkvKiBFTkFCTEVfU1VCSURTICovCitAQCAtMTEzMCw5ICsxMTMyLDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlwZmxnID0gdHJ1ZTsKKyAJCQkJYnJlYWs7CisrCQkJY2FzZSAnUCc6CisrCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7CisrCQkJCXBmbGcgPSB0cnVlOworKwkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoIVZBTElEIChvcHRhcmcpKSB7CitAQCAtMjEyNyw3ICsyMTM3LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZWIwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgIDggKysrKy0tLS0KLSBzcmMvZ3JvdXBhZGQuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQotIHNyYy9ncm91cG1vZC5jICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCi0gc3JjL3VzZXJhZGQuYyAgIHwgMjEgKysrKysrKysrKysrKysrLS0tLS0tCi0gc3JjL3VzZXJtb2QuYyAgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAzYzk4YThkLi5iODA5M2Q1IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC05MywxMCArOTMsMTAgQEAgY2hncGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGNoc2hfTERBREQgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncGFzc3dkX0xEQUREICA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLS1ncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLStncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncm91cGRlbF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLSBncm91cG1lbXNfTERBREQgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJTRUxJTlVYKQotLWdyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKQotK2dyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGdycGNrX0xEQUREICAgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycGNvbnZfTERBREQgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycHVuY29udl9MREFERCA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLUBAIC0xMTcsOSArMTE3LDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCi0gCXN1YXV0aC5jCi0gc3VfTERBREQgICAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIHN1bG9naW5fTERBREQgID0gJChMREFERCkgJChMSUJDUllQVCkKLS11c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB1c2VyZGVsX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkKLS11c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB2aXB3X0xEQUREICAgICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLSAKLSBpbnN0YWxsLWFtOiBhbGwtYW0KLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCBiNTcwMDZjLi42M2UxYzQ4IDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwYWRkLmMKLSsrKyBiL3NyYy9ncm91cGFkZC5jCi1AQCAtMTIzLDkgKzEyMywxMCBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZVxuIgotIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzICgiXG4iLCB1c2FnZW91dCk7Ci0gCWV4aXQgKHN0YXR1cyk7Ci0gfQotQEAgLTM4NywxMyArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAotIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0gCi0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6UDoiLAotKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6QToiLAotIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjKSB7Ci0gCQljYXNlICdmJzoKLUBAIC00NDUsMTIgKzQ0NywyMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJcGZsZyA9IHRydWU7Ci0gCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotKwkJY2FzZSAnUCc6Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQlicmVhazsKLSAJCWNhc2UgJ3InOgotIAkJCXJmbGcgPSB0cnVlOwotIAkJCWJyZWFrOwotIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJYnJlYWs7Ci0tCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJIFByb2cpOwotKwkJCWV4aXQgKEVfQkFEX0FSRyk7Ci0gCQkJYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCXVzYWdlIChFX1VTQUdFKTsKLUBAIC01ODQsNyArNTk0LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOwotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKLSAKLSAJT1BFTkxPRyAoImdyb3VwYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCi1pbmRleCBiMjkzYjk4Li43MmRhZjJjIDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwbW9kLmMKLSsrKyBiL3NyYy9ncm91cG1vZC5jCi1AQCAtMTM0LDggKzEzNCw5IEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gdXNlIGEgZHVwbGljYXRlIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgKGVuY3J5cHRlZClcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIGNsZWFyIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKLSAJZXhpdCAoc3RhdHVzKTsKLSB9Ci1AQCAtMzgzLDExICszODQsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJeyJuZXctbmFtZSIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICduJ30sCi0gCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOlA6IiwKLSsJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlA6UjpBOiIsCi0gCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7Ci0gCQlzd2l0Y2ggKGMpIHsKLSAJCWNhc2UgJ2cnOgotQEAgLTQxNCw5ICs0MTYsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKLSAJCQlwZmxnID0gdHJ1ZTsKLSAJCQlicmVhazsKLSsJCWNhc2UgJ1AnOgotKwkJCWdyb3VwX3Bhc3N3ZCA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJYnJlYWs7Ci0gCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KLSAJCQlicmVhazsKLS0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkgUHJvZyk7Ci0rCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQlicmVhazsKLSAJCWRlZmF1bHQ6Ci0gCQkJdXNhZ2UgKEVfVVNBR0UpOwotQEAgLTc1Nyw3ICs3NjcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgiZ3JvdXBtb2QiKTsKLSAjaWZkZWYgV0lUSF9BVURJVAotZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBjNzRlNDkxLi43MjE0ZTcyIDEwMDY0NAotLS0tIGEvc3JjL3VzZXJhZGQuYwotKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTgyOSw5ICs4MjksMTAgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCi0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGVcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2xlYXIgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICB1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVzZXItZ3JvdXAgICAgICAgICAgICAgIGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlclxuIiksIHVzYWdlb3V0KTsKLUBAIC0xMTA0LDkgKzExMDUsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKLSAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCi0gCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCi0gCQkJeyJzaGVsbCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKLSAJCQl7InVzZXItZ3JvdXAiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCi1AQCAtMTExNyw5ICsxMTE5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJfTsKLSAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAotICNpZmRlZiBXSVRIX1NFTElOVVgKLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VVo6IiwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVWjoiLAotICNlbHNlCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VSIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VSIsCi0gI2VuZGlmCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJCXN3aXRjaCAoYykgewotQEAgLTEyODUsMTIgKzEyODcsMTkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl9Ci0gCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKLSAJCQkJYnJlYWs7Ci0rCQkJY2FzZSAnUCc6IC8qIHNldCBjbGVhciB0ZXh0IHBhc3N3b3JkICovCi0rCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ3InOgotIAkJCQlyZmxnID0gdHJ1ZTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJCWJyZWFrOwotLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQkJZnByaW50ZiAoc3RkZXJyLAotKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkJIFByb2cpOwotKwkJCQlleGl0IChFX0JBRF9BUkcpOwotIAkJCQlicmVhazsKLSAJCQljYXNlICdzJzoKLSAJCQkJaWYgKCAgICggIVZBTElEIChvcHRhcmcpICkKLUBAIC0yMTQ4LDcgKzIxNTcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0gCi0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1BIiwgYXJnYywgYXJndik7Ci0gCi0gCU9QRU5MT0cgKCJ1c2VyYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggZTU3MTQyNi4uY2NmYmI5OSAxMDA2NDQKLS0tLSBhL3NyYy91c2VybW9kLmMKLSsrKyBiL3NyYy91c2VybW9kLmMKLUBAIC00MjQsOCArNDI0LDkgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsb2NhdGlvbiAodXNlIG9ubHkgd2l0aCAtZClcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB1c2luZyBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBuZXcgbG9naW4gc2hlbGwgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICBuZXcgVUlEIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdW5sb2NrICAgICAgICAgICAgICAgICAgdW5sb2NrIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci1AQCAtMTAwMiw4ICsxMDAzLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibW92ZS1ob21lIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJ30sCi0gCQkJeyJub24tdW5pcXVlIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCQl7InBhc3N3b3JkIiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InJvb3QiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKLSAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCi0gCQkJeyJ1bmxvY2siLCAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKLUBAIC0xMDE5LDcgKzEwMjEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCQl9OwotIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWM6ZDplOmY6ZzpHOmhsOkxtb3A6UDpSOnM6dTpVQToiCi0gI2lmZGVmIEVOQUJMRV9TVUJJRFMKLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICAidjp3OlY6VzoiCi0gI2VuZGlmCQkJCS8qIEVOQUJMRV9TVUJJRFMgKi8KLUBAIC0xMTE5LDkgKzExMjEsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7Ci0gCQkJCXBmbGcgPSB0cnVlOwotIAkJCQlicmVhazsKLSsJCQljYXNlICdQJzoKLSsJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQkJcGZsZyA9IHRydWU7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwotIAkJCQlicmVhazsKLS0JCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJCSBQcm9nKTsKLSsJCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAncyc6Ci0gCQkJCWlmICghVkFMSUQgKG9wdGFyZykpIHsKLUBAIC0yMDk4LDcgKzIxMDgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgidXNlcm1vZCIpOwotICNpZmRlZiBXSVRIX0FVRElUCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCmluZGV4IDRmYTNkMTguLjk4MjUyMTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA2NjUzM2M3YzZmMzQ3ZDI1NzAyMDY3NWExZWQ2ZTBjNTljYmJjM2YwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNyBKdWwgMjAxNCAxNTo1MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52CisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIGNvbW1vbmlvLmM6IGZpeCB1bmV4cGVjdGVkIG9wZW4gZmFpbHVyZSBpbiBjaHJvb3QgZW52aXJvbm1lbnQKQEAgLTEwLDE1ICsxNSwxNiBAQAogdGhlIGNvZGVzLgogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxpYi9jb21tb25pby5jIHwgICAxNiArKysrKysrKysrKystLS0tCisgbGliL2NvbW1vbmlvLmMgfCAxNiArKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvY29tbW9uaW8uYyBiL2xpYi9jb21tb25pby5jCi1pbmRleCBjYzUzNmJmLi41MWNhZmQ5IDEwMDY0NAoraW5kZXggMTZmYTdlNy4uZDZiYzI5NyAxMDA2NDQKIC0tLSBhL2xpYi9jb21tb25pby5jCiArKysgYi9saWIvY29tbW9uaW8uYwotQEAgLTYxMywxMCArNjEzLDE4IEBAIGludCBjb21tb25pb19vcGVuIChzdHJ1Y3QgY29tbW9uaW9fZGIgKmRiLCBpbnQgbW9kZSkKK0BAIC02MzIsMTAgKzYzMiwxOCBAQCBpbnQgY29tbW9uaW9fb3BlbiAoc3RydWN0IGNvbW1vbmlvX2RiICpkYiwgaW50IG1vZGUpCiAgCWRiLT5jdXJzb3IgPSBOVUxMOwogIAlkYi0+Y2hhbmdlZCA9IGZhbHNlOwogIApAQCAtNDEsNiArNDcsMyBAQAogIAlkYi0+ZnAgPSBOVUxMOwogIAlpZiAoZmQgPj0gMCkgewogICNpZmRlZiBXSVRIX1RDQgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoCmluZGV4IDFhZjA0ZDUuLmNjODMzMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaApAQCAtMSwyNiArMSwzNyBAQAorRnJvbSBjYTQ3MmQ2ODY2ZTU0NWFhYTcwYTcwMDIwZTMyMjZmMjM2YThhYWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2hhbiBIYWkgPHNoYW4uaGFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDEzIFNlcCAyMDE2IDEzOjQ1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNoYWRvdzogdXNlIHJlbGF4ZWQgdXNlcm5hbWVzCiAKIFRoZSBncm91cGFkZCBmcm9tIHNoYWRvdyBkb2VzIG5vdCBhbGxvdyB1cHBlciBjYXNlIGdyb3VwIG5hbWVzLCB0aGUKIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIHVwc3RyZWFtIHNoYWRvdy4gQnV0IGRpc3RyaWJ1dGlvbnMgbGlrZQogRGViaWFuL1VidW50dS9DZW50T1MgaGFzIHRoZWlyIG93biB3YXkgdG8gY29wZSB3aXRoIHRoaXMgcHJvYmxlbSwKIHRoaXMgcGF0Y2ggaXMgcGlja2VkIHVwIGZyb20gQ2VudE9TIHJlbGVhc2UgNy4wIHRvIHJlbGF4IHRoZSB1c2VybmFtZXMKIHJlc3RyaWN0aW9ucyB0byBhbGxvdyB0aGUgdXBwZXIgY2FzZSBncm91cCBuYW1lcywgYW5kIHRoZSByZWxheGF0aW9uIGlzCi1QT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YgCitQT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YKIGNoYXJhY3RlcnMgZnJvbSB0aGUgcG9ydGFibGUgZmlsZW5hbWUgY2hhcmFjdGVyIHNldCBbQS1aYS16MC05Ll8tXS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVNpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPiAKK1NpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC11cnBOIGEvbGlibWlzYy9jaGtuYW1lLmMgYi9saWJtaXNjL2Noa25hbWUuYwotaW5kZXggNTA4OTExMi4uZjQwYTBkYSAxMDA2NDQKKy0tLQorIGxpYm1pc2MvY2hrbmFtZS5jICB8IDMwICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIG1hbi9ncm91cGFkZC44LnhtbCB8ICA2IC0tLS0tLQorIG1hbi91c2VyYWRkLjgueG1sICB8ICA4ICstLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm1pc2MvY2hrbmFtZS5jIGIvbGlibWlzYy9jaGtuYW1lLmMKK2luZGV4IDkwZjE4NWMuLjY1NzYyYjQgMTAwNjQ0CiAtLS0gYS9saWJtaXNjL2Noa25hbWUuYwogKysrIGIvbGlibWlzYy9jaGtuYW1lLmMKLUBAIC00OSwyMSArNDksMjggQEAKLSBzdGF0aWMgYm9vbCBpc192YWxpZF9uYW1lIChjb25zdCBjaGFyICpuYW1lKQotIHsKK0BAIC01NSwyMiArNTUsMjggQEAgc3RhdGljIGJvb2wgaXNfdmFsaWRfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKKyAJfQorIAogIAkvKgogLQkgKiBVc2VyL2dyb3VwIG5hbWVzIG11c3QgbWF0Y2ggW2Etel9dW2EtejAtOV8tXSpbJF0KIC0JICovCistCiAtCWlmICgoJ1wwJyA9PSAqbmFtZSkgfHwKIC0JICAgICEoKCgnYScgPD0gKm5hbWUpICYmICgneicgPj0gKm5hbWUpKSB8fCAoJ18nID09ICpuYW1lKSkpIHsKICsgICAgICAgICAqIFVzZXIvZ3JvdXAgbmFtZXMgbXVzdCBtYXRjaCBnbnUgZS1yZWdleDoKQEAgLTU1LDI4ICs2NiwyOCBAQAogIAkJCXJldHVybiBmYWxzZTsKICAJCX0KICAJfQotZGlmZiAtdXJwTiBhL21hbi9ncm91cGFkZC44LnhtbCBiL21hbi9ncm91cGFkZC44LnhtbAotaW5kZXggMjMwZmQwYy4uOTRmNzgwNyAxMDA2NDQKK2RpZmYgLS1naXQgYS9tYW4vZ3JvdXBhZGQuOC54bWwgYi9tYW4vZ3JvdXBhZGQuOC54bWwKK2luZGV4IDFlNThmMDkuLmQ4MDRiNjEgMTAwNjQ0CiAtLS0gYS9tYW4vZ3JvdXBhZGQuOC54bWwKICsrKyBiL21hbi9ncm91cGFkZC44LnhtbAotQEAgLTIyMiwxMiArMjIyLDYgQEAKK0BAIC0yNzIsMTIgKzI3Miw2IEBACisgCiAgICAgPHJlZnNlY3QxIGlkPSdjYXZlYXRzJz4KICAgICAgIDx0aXRsZT5DQVZFQVRTPC90aXRsZT4KLSAgICAgIDxwYXJhPgorLSAgICAgPHBhcmE+CiAtICAgICAgIEdyb3VwbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKIC0gICAgICAgZm9sbG93ZWQgYnkgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBvciBkYXNoZXMuCiAtICAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CiAtICAgICA8L3BhcmE+Ci0tICAgICA8cGFyYT4KKyAgICAgIDxwYXJhPgogICAgICAgICBHcm91cG5hbWVzIG1heSBvbmx5IGJlIHVwIHRvICZHUk9VUF9OQU1FX01BWF9MRU5HVEg7IGNoYXJhY3RlcnMgbG9uZy4KICAgICAgIDwvcGFyYT4KLSAgICAgIDxwYXJhPgotZGlmZiAtdXJwTiBhL21hbi91c2VyYWRkLjgueG1sIGIvbWFuL3VzZXJhZGQuOC54bWwKLWluZGV4IDVkZWM5ODkuLmZlNjIzYjkgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvbWFuL3VzZXJhZGQuOC54bWwgYi9tYW4vdXNlcmFkZC44LnhtbAoraW5kZXggYTE2ZDczMC4uYzBiZDc3NyAxMDA2NDQKIC0tLSBhL21hbi91c2VyYWRkLjgueG1sCiArKysgYi9tYW4vdXNlcmFkZC44LnhtbAotQEAgLTMzNiw3ICszMzYsNyBAQAorQEAgLTM2Niw3ICszNjYsNyBAQAogIAk8L3Rlcm0+CiAgCTxsaXN0aXRlbT4KICAJICA8cGFyYT4KQEAgLTg1LDE2ICs5NiwxNiBAQAogIAkgICAgd2lkZSBzZXR0aW5nIGZyb20gPGZpbGVuYW1lPi9ldGMvbG9naW4uZGVmczwvZmlsZW5hbWU+CiAgCSAgICAoPG9wdGlvbj5DUkVBVEVfSE9NRTwvb3B0aW9uPikgaXMgc2V0IHRvCiAgCSAgICA8cmVwbGFjZWFibGU+eWVzPC9yZXBsYWNlYWJsZT4uCi1AQCAtNjA3LDEyICs2MDcsNiBAQAorQEAgLTY2MCwxMiArNjYwLDYgQEAKKyAgICAgICB0aGUgdXNlciBhY2NvdW50IGNyZWF0aW9uIHJlcXVlc3QuCiAgICAgIDwvcGFyYT4KICAKLSAgICAgPHBhcmE+CistICAgIDxwYXJhPgogLSAgICAgIFVzZXJuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlciBjYXNlIGxldHRlciBvciBhbiB1bmRlcnNjb3JlLAogLSAgICAgIGZvbGxvd2VkIGJ5IGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCB1bmRlcnNjb3Jlcywgb3IgZGFzaGVzLgogLSAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgSW4gcmVndWxhciBleHByZXNzaW9uIHRlcm1zOiBbYS16X11bYS16MC05Xy1dKlskXT8KIC0gICAgPC9wYXJhPgotLSAgICA8cGFyYT4KKyAgICAgPHBhcmE+CiAgICAgICAgVXNlcm5hbWVzIG1heSBvbmx5IGJlIHVwIHRvIDMyIGNoYXJhY3RlcnMgbG9uZy4KICAgICAgPC9wYXJhPgotICAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKaW5kZXggNzcwYzIzOS4uZjg2ZTVlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTExLDggKzExLDYgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9yZWxlYXNlcyIKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaCAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1lcnJvci13aXRoLWRhc2gucGF0Y2ggXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaCBcCiAgICAgICAgICAgICIKQEAgLTI0LDE2ICsyMiwxNSBAQAogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbW1vbmlvLmMtZml4LXVuZXhwZWN0ZWQtb3Blbi1mYWlsdXJlLWluLWNocm9vdC1lbnYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNmZlYjE1NjY1MzM4YWUzZGU0MTRmMmE4OGU0MzRkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjY4Zjk5YmQwODczOTljNGE1ODYwODRkYzNiMDQ2Yjc1ZjU2MDcyMGQ4M2U5MmZkMjNiZjdhODlkZGE0ZDMxIgorU1JDX1VSSVttZDVzdW1dID0gIjNkOTdmMTFlNjZiZmIwYjE0NzAyYjExNWZhOGJlNDgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlZTMwODFmYmJjYmNmZWE1Yzg5MTY0MTllNDZiYzcyNDgwN2JhYjI3MTA3MjEwNGYyM2U3YTI5ZTk2NjhmM2EiCiAKICMgQWRkaXRpb25hbCBQb2xpY3kgZmlsZXMgZm9yIFBBTQogUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BhbS5kL2NoZm4gXApAQCAtNTMsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC1ncm91cC1uYW1lLW1heC1sZW5ndGg9MjQgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdWJvcmRpbmF0ZS1pZHM9eWVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LXNzc2QgXAogICAgICAgICAgICAgICAgICAke05TQ0RPUFR9IgogCiBOU0NET1BUID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjguMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjYuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC44LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhOThmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKLURFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCi1pbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFkNGRlMzhkNmZmMWNjZjM2NDA1NzNlOTY3ZGZiMTM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzMWRlNWViYzQ0YjQ5OTkyYzExNjMzZjEwYWFlOTZkYTA1YTg1YjMyNmFlYmRmZmQ4OGJhOGM0NDVkMjNjZjQiCi0KLURFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKLQotUFJPVklERVMgPSAic3RyZXNzIgotUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKLVJSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKLQotaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ4NmJlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMS4wMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCitpbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE1NThmYzdmYjlkMGE4NTFhZmU2ZGUwOTA4MGI1NDAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZTE5NTQ4Yzg3YWExYTFiOWIyYmUzYjM1OWVjMjYyMWI4OGJjYjE2OTk4Yjc3NTI3NTQ5YTc3MzZmNjU0OTQiCisKK0RFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKKworUFJPVklERVMgPSAic3RyZXNzIgorUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKK1JSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCitSQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwppbmRleCAxNTA3NWJjLi41ZDI3ZDQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKQEAgLTQsMTggKzQsMTggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02Yzc2YjczNjAzYWM3NzYzYWIwNTE2ZWJmYmU2N2I0MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQ2O21kNT00YTE2MmZjMDRiODZiMDNmNTYzMjE4MGZlNjA3NmNkYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE1O21kNT1iNDdmMWY4NWExMmYwNWEwNzQ0Y2Q4YjFiNmY0MWEwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2V0Y3dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDkwNjhhMTliNGY2YjZmMGEwOTU4NjU1YmZlOThiNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2xvYi5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MzE7bWQ1PTFmMmY3NzFjMzVmYjA2NThkNTY3YTc4MjQwMDdlNTZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3NucHJpbnRmLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0zMzttZDU9NjNlNDhlMWI5OTJiY2U3NDlhMTlkZDliMjI1NmU5YTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9zdWRvX3F1ZXVlLmg7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDgyYjEzOGI3MmJhM2U1NjhhMTNhMjVjM2JmMjU0ZGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvaW5ldF9wdG9uLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNzttZDU9Mzk3MGFiMDUxOGFiNzljYmQwYmFmYjY5N2YxMGIzM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvYXJjNHJhbmRvbS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MjA7bWQ1PTE1YmRjODljMWIwMDNmYTRkNzM1M2U2Mjk2ZWJmZDY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb21fdW5pZm9ybS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTMxZTYzMGFjODE0ZDY5MmZkMGFiN2E5NDI2NTliNDZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGVudHJvcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT05ZjFhMjc1ZWNkNDRjYzI2NGEyYTRkNWUwNmE3NTI5MiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9NGQxYjQ0YjE1NzZlZWEwMzZkNzhiOGNjOTYxYWE5M2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00NjttZDU9MDNlMzUzMTc2OTliYTAwYjQ5NjI1MWUwZGZlOWYxMDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNTttZDU9Mzk3ZGQ0NWM3NjgzZTkwYjlmOGJmMjQ2MzhjZjAzYmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTAwNGQ3ZDI4NjZiYTFmNWI0MTE3NDkwNjg0OWQyZTBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PTUwZjhkOTY2Nzc1MGUxOGRlYTRlODRhOTM1YzEyMDA5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dsb2IuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT0yODUyZjY4Njg3NTQ0ZTNlYjhhMGE2MTY2NTUwNmYwZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9zbnByaW50Zi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzM7bWQ1PWI3MGRmNjE3OTk2OWUzOGZjZjY4ZGE5MWI1M2I4MDI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3Vkb19xdWV1ZS5oO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PWFkNTc4ZTk2NjRkMTdhMDEwYjYzZTRiYzA1NzZlZThkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTI3Nzg1YzlmNTgzNTA5M2VkYTQyYWEwODE2YTJkMGI0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb20uYztiZWdpbmxpbmU9MztlbmRsaW5lPTIwO21kNT1jZWQ4NjM2ZWNlZmEyYmE5MDdjZmUzOTBiYzNiZDk2NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9hcmM0cmFuZG9tX3VuaWZvcm0uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT1lMzBjMmI3NzdjZGMwMGNmY2FmN2M0NDVhMTBiMjYyZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nZXRlbnRyb3B5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9YTBmNThiZTNkNjBiNmRjZDg5OGVjNWZlMDg2NmQzNmYgXAogICAgICAgICAgICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCkBAIC0yNiw3ICsyNiw3IEBACiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1ZG9lcnMiCiAKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRpdG9yPS9iaW4vdmkgLS13aXRoLWVudi1lZGl0b3IiCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkaXRvcj0ke2Jhc2VfYmluZGlyfS92aSAtLXdpdGgtZW52LWVkaXRvciIKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1oYXJkZW5pbmcgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTExZTNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLUZyb20gZjc1MmFlNWNlZTE2MzI1MzczMGZmN2NkZjI5M2UzNGE5MWFhNTUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJUb2RkIEMuIE1pbGxlciIgPFRvZGQuTWlsbGVyQHN1ZG8ud3M+Ci1EYXRlOiBUaHUsIDEwIE9jdCAyMDE5IDEwOjA0OjEzIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRyZWF0IGFuIElEIG9mIC0xIGFzIGludmFsaWQgc2luY2UgdGhhdCBtZWFucyAibm8gY2hhbmdlIi4KLSBGaXhlcyBDVkUtMjAxOS0xNDI4Ny4gRm91bmQgYnkgSm9lIFZlbm5peCBmcm9tIEFwcGxlIEluZm9ybWF0aW9uIFNlY3VyaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0L2Y3NTJhZTVjZWUxNjMyNTM3MzBmZjdjZGYyOTNlMzRhOTFhYTU1MjBdCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3N0cnRvaWQuYyB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvdXRpbC9zdHJ0b2lkLmMgYi9saWIvdXRpbC9zdHJ0b2lkLmMKLWluZGV4IDJkZmNlNzUuLjZiMzkxNmIgMTAwNjQ0Ci0tLS0gYS9saWIvdXRpbC9zdHJ0b2lkLmMKLSsrKyBiL2xpYi91dGlsL3N0cnRvaWQuYwotQEAgLTQ5LDYgKzQ5LDI3IEBACi0gI2luY2x1ZGUgInN1ZG9fdXRpbC5oIgotIAotIC8qCi0rICogTWFrZSBzdXJlIHRoYXQgdGhlIElEIGVuZHMgd2l0aCBhIHZhbGlkIHNlcGFyYXRvciBjaGFyLgotKyAqLwotK3N0YXRpYyBib29sCi0rdmFsaWRfc2VwYXJhdG9yKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKmVwLCBjb25zdCBjaGFyICpzZXApCi0rewotKyAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0rICAgIGRlYnVnX2RlY2wodmFsaWRfc2VwYXJhdG9yLCBTVURPX0RFQlVHX1VUSUwpCi0rCi0rICAgIGlmIChlcCAhPSBwKSB7Ci0rCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotKwlpZiAoc2VwID09IE5VTEwpCi0rCSAgICBzZXAgPSAiIjsKLSsJZG8gewotKwkgICAgaWYgKCplcCA9PSAqc2VwKQotKwkJdmFsaWQgPSB0cnVlOwotKwl9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0rICAgIH0KLSsgICAgZGVidWdfcmV0dXJuX2Jvb2wodmFsaWQpOwotK30KLSsKLSsvKgotICAqIFBhcnNlIGEgdWlkL2dpZCBpbiBzdHJpbmcgZm9ybS4KLSAgKiBJZiBzZXAgaXMgbm9uLU5VTEwsIGl0IGNvbnRhaW5zIHZhbGlkIHNlcGFyYXRvciBjaGFyYWN0ZXJzIChlLmcuIGNvbW1hLCBzcGFjZSkKLSAgKiBJZiBlbmRwIGlzIG5vbi1OVUxMIGl0IGlzIHNldCB0byB0aGUgbmV4dCBjaGFyIGFmdGVyIHRoZSBJRC4KLUBAIC02MiwzNiArODMsMzMgQEAgc3Vkb19zdHJ0b2lkX3YxKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnNlcCwgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLSAgICAgbG9uZyBsb25nIGxsdmFsOwotLSAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0gICAgIGRlYnVnX2RlY2woc3Vkb19zdHJ0b2lkLCBTVURPX0RFQlVHX1VUSUwpCi0gCi0gICAgIC8qIHNraXAgbGVhZGluZyBzcGFjZSBzbyB3ZSBjYW4gcGljayB1cCB0aGUgc2lnbiwgaWYgYW55ICovCi0gICAgIHdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKSkKLSAJcCsrOwotLSAgICBpZiAoc2VwID09IE5VTEwpCi0tCXNlcCA9ICIiOwotKwotKyAgICAvKiBXaGlsZSBpZF90IG1heSBiZSA2NC1iaXQgc2lnbmVkLCB1aWRfdCBhbmQgZ2lkX3QgYXJlIDMyLWJpdCB1bnNpZ25lZC4gKi8KLSAgICAgZXJybm8gPSAwOwotICAgICBsbHZhbCA9IHN0cnRvbGwocCwgJmVwLCAxMCk7Ci0tICAgIGlmIChlcCAhPSBwKSB7Ci0tCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQlkbyB7Ci0tCSAgICBpZiAoKmVwID09ICpzZXApCi0tCQl2YWxpZCA9IHRydWU7Ci0tCX0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLSsgICAgaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgbGx2YWwgPT0gTExPTkdfTUFYKSB8fCBsbHZhbCA+IChpZF90KVVJTlRfTUFYKSB7Ci0rCWVycm5vID0gRVJBTkdFOwotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oInZhbHVlIHRvbyBsYXJnZSIpOwotKwlnb3RvIGRvbmU7Ci0gICAgIH0KLS0gICAgaWYgKCF2YWxpZCkgewotKyAgICBpZiAoKGVycm5vID09IEVSQU5HRSAmJiBsbHZhbCA9PSBMTE9OR19NSU4pIHx8IGxsdmFsIDwgSU5UX01JTikgewotKwllcnJubyA9IEVSQU5HRTsKLSAJaWYgKGVycnN0ciAhPSBOVUxMKQotLQkgICAgKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0tCWVycm5vID0gRUlOVkFMOwotKwkgICAgKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJZ290byBkb25lOwotICAgICB9Ci0tICAgIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKLS0JaWYgKGVycnN0ciAhPSBOVUxMKSB7Ci0tCSAgICBpZiAobGx2YWwgPT0gTExPTkdfTUFYKQotLQkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gbGFyZ2UiKTsKLS0JICAgIGVsc2UKLS0JCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIHNtYWxsIik7Ci0tCX0KLSsKLSsgICAgLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKyAgICBpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCBsbHZhbCA9PSAtMSB8fCBsbHZhbCA9PSAoaWRfdClVSU5UX01BWCkgewotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLSsJZXJybm8gPSBFSU5WQUw7Ci0gCWdvdG8gZG9uZTsKLSAgICAgfQotICAgICByZXQgPSAoaWRfdClsbHZhbDsKLUBAIC0xMDgsMzAgKzEyNiwxNSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIHsKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLS0gICAgYm9vbCB2YWxpZCA9IGZhbHNlOwotICAgICBkZWJ1Z19kZWNsKHN1ZG9fc3RydG9pZCwgU1VET19ERUJVR19VVElMKQotIAotICAgICAvKiBza2lwIGxlYWRpbmcgc3BhY2Ugc28gd2UgY2FuIHBpY2sgdXAgdGhlIHNpZ24sIGlmIGFueSAqLwotICAgICB3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0gCXArKzsKLS0gICAgaWYgKHNlcCA9PSBOVUxMKQotLQlzZXAgPSAiIjsKLSsKLSAgICAgZXJybm8gPSAwOwotICAgICBpZiAoKnAgPT0gJy0nKSB7Ci0gCWxvbmcgbHZhbCA9IHN0cnRvbChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0tCSAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tCQkqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLS0JICAgIGVycm5vID0gRUlOVkFMOwotLQkgICAgZ290byBkb25lOwotLQl9Ci0gCWlmICgoZXJybm8gPT0gRVJBTkdFICYmIGx2YWwgPT0gTE9OR19NQVgpIHx8IGx2YWwgPiBJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLUBAIC0xNDQsMjggKzE0NywzMSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIAkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotLQlyZXQgPSAoaWRfdClsdmFsOwotLSAgICB9IGVsc2UgewotLQl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0rCi0rCS8qIERpc2FsbG93IGlkIC0xLCB3aGljaCBtZWFucyAibm8gY2hhbmdlIi4gKi8KLSsJaWYgKCF2YWxpZF9zZXBhcmF0b3IocCwgZXAsIHNlcCkgfHwgbHZhbCA9PSAtMSkgewotIAkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotIAkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0gCSAgICBlcnJubyA9IEVJTlZBTDsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotKwlyZXQgPSAoaWRfdClsdmFsOwotKyAgICB9IGVsc2UgewotKwl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLSAJaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgdWx2YWwgPT0gVUxPTkdfTUFYKSB8fCB1bHZhbCA+IFVJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLSAJCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIGxhcmdlIik7Ci0gCSAgICBnb3RvIGRvbmU7Ci0gCX0KLSsKLSsJLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKwlpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCB1bHZhbCA9PSBVSU5UX01BWCkgewotKwkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotKwkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0rCSAgICBlcnJubyA9IEVJTlZBTDsKLSsJICAgIGdvdG8gZG9uZTsKLSsJfQotIAlyZXQgPSAoaWRfdCl1bHZhbDsKLSAgICAgfQotICAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1M2E4YjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAzOTZiYzU3ZmVmZjNlMzYwMDA3NjM0ZjYyNDQ4YjY0ZTA2MjYzOTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlRvZGQgQy4gTWlsbGVyIiA8VG9kZC5NaWxsZXJAc3Vkby53cz4KLURhdGU6IFRodSwgMTAgT2N0IDIwMTkgMTA6MDQ6MTMgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1ZG9fc3RydG9pZCgpIHRlc3RzIGZvciAtMSBhbmQgcmFuZ2UgZXJyb3JzLiBBbHNvIGFkanVzdAotIHRlc3RzdWRvZXJzL3Rlc3Q1IHdoaWNoIHJlbGllZCB1cG9uIGdpZCAtMSBwYXJzaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0LzM5NmJjNTddCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKystLS0tLS0KLSBwbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sgfCAgMiArLQotIHBsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoICAgICB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgYi9saWIvdXRpbC9yZWdyZXNzL2F0b2Zvby9hdG9mb29fdGVzdC5jCi1pbmRleCAwMzFhN2VkLi5mYjQxYzFhIDEwMDY0NAotLS0tIGEvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotKysrIGIvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjZWxzZQotICMgaW5jbHVkZSAiY29tcGF0L3N0ZGJvb2wuaCIKLSAjZW5kaWYKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSAic3Vkb19jb21wYXQuaCIKLSAjaW5jbHVkZSAic3Vkb191dGlsLmgiCi1AQCAtODAsMTUgKzgxLDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc3RydG9pZF9kYXRhIHsKLSAgICAgaWRfdCBpZDsKLSAgICAgY29uc3QgY2hhciAqc2VwOwotICAgICBjb25zdCBjaGFyICplcDsKLSsgICAgaW50IGVycm51bTsKLSB9IHN0cnRvaWRfZGF0YVtdID0gewotLSAgICB7ICIwLDEiLCAwLCAiLCIsICIsIiB9LAotLSAgICB7ICIxMCIsIDEwLCBOVUxMLCBOVUxMIH0sCi0tICAgIHsgIi0yIiwgLTIsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiMCwxIiwgMCwgIiwiLCAiLCIsIDAgfSwKLSsgICAgeyAiMTAiLCAxMCwgTlVMTCwgTlVMTCwgMCB9LAotKyAgICB7ICItMSIsIDAsIE5VTEwsIE5VTEwsIEVJTlZBTCB9LAotKyAgICB7ICI0Mjk0OTY3Mjk1IiwgMCwgTlVMTCwgTlVMTCwgRUlOVkFMIH0sCi0rICAgIHsgIjQyOTQ5NjcyOTYiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIxNDc0ODM2NDkiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIiLCAtMiwgTlVMTCwgTlVMTCwgMCB9LAotICNpZiBTSVpFT0ZfSURfVCAhPSBTSVpFT0ZfTE9OR19MT05HCi0tICAgIHsgIi0yIiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiLTIiLCAoaWRfdCk0Mjk0OTY3Mjk0VSwgTlVMTCwgTlVMTCwgMCB9LAotICNlbmRpZgotLSAgICB7ICI0Mjk0OTY3Mjk0IiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLS0gICAgeyBOVUxMLCAwLCBOVUxMLCBOVUxMIH0KLSsgICAgeyAiNDI5NDk2NzI5NCIsIChpZF90KTQyOTQ5NjcyOTRVLCBOVUxMLCBOVUxMLCAwIH0sCi0rICAgIHsgTlVMTCwgMCwgTlVMTCwgTlVMTCwgMCB9Ci0gfTsKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTA0LDExICsxMTAsMjMgQEAgdGVzdF9zdHJ0b2lkKGludCAqbnRlc3RzKQotIAkoKm50ZXN0cykrKzsKLSAJZXJyc3RyID0gInNvbWUgZXJyb3IiOwotIAl2YWx1ZSA9IHN1ZG9fc3RydG9pZChkLT5pZHN0ciwgZC0+c2VwLCAmZXAsICZlcnJzdHIpOwotLQlpZiAoZXJyc3RyICE9IE5VTEwpIHsKLS0JICAgIGlmIChkLT5pZCAhPSAoaWRfdCktMSkgewotLQkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlczogJXMiLCBkLT5pZHN0ciwgZXJyc3RyKTsKLSsJaWYgKGQtPmVycm51bSAhPSAwKSB7Ci0rCSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IG1pc3NpbmcgZXJyc3RyIGZvciBlcnJubyAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGQtPmVycm51bSk7Ci0rCQllcnJvcnMrKzsKLSsJICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gMCkgewotKwkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyBzaG91bGQgcmV0dXJuIDAgb24gZXJyb3IiLAotKwkJICAgIGQtPmlkc3RyKTsKLSsJCWVycm9ycysrOwotKwkgICAgfSBlbHNlIGlmIChlcnJubyAhPSBkLT5lcnJudW0pIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IGVycm5vIG1pc21hdGNoLCAlZCAhPSAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGVycm5vLCBkLT5lcnJudW0pOwotIAkJZXJyb3JzKys7Ci0gCSAgICB9Ci0rCX0gZWxzZSBpZiAoZXJyc3RyICE9IE5VTEwpIHsKLSsJICAgIHN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6ICVzIiwgZC0+aWRzdHIsIGVycnN0cik7Ci0rCSAgICBlcnJvcnMrKzsKLSAJfSBlbHNlIGlmICh2YWx1ZSAhPSBkLT5pZCkgewotIAkgICAgc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyAhPSAldSIsIGQtPmlkc3RyLCAodW5zaWduZWQgaW50KWQtPmlkKTsKLSAJICAgIGVycm9ycysrOwotZGlmZiAtLWdpdCBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vayBiL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotaW5kZXggNWUzMTljOS4uY2VjZjcwMCAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotKysrIGIvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUub3V0Lm9rCi1AQCAtNCw3ICs0LDcgQEAgUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci0gCi0gQ29tbWFuZCB1bm1hdGNoZWQKLS10ZXN0c3Vkb2VyczogdGVzdDUuaW5jIHNob3VsZCBiZSBvd25lZCBieSBnaWQgNDI5NDk2NzI5NQotK3Rlc3RzdWRvZXJzOiB0ZXN0NS5pbmMgc2hvdWxkIGJlIG93bmVkIGJ5IGdpZCA0Mjk0OTY3Mjk0Ci0gUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSAKLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUuc2ggYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotaW5kZXggOWU2OTBhNi4uOTRkNTg1YyAxMDA3NTUKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoCi0rKysgYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotQEAgLTI0LDcgKzI0LDcgQEAgRU9GCi0gCi0gIyBUZXN0IGdyb3VwIHdyaXRhYmxlCi0gY2htb2QgNjY0ICRURVNURklMRQotLS4vdGVzdHN1ZG9lcnMgLVUgJE1ZVUlEIC1HIC0xIHJvb3QgaWQgPDxFT0YKLSsuL3Rlc3RzdWRvZXJzIC1VICRNWVVJRCAtRyAtMiByb290IGlkIDw8RU9GCi0gI2luY2x1ZGUgJFRFU1RGSUxFCi0gRU9GCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTExYTFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuc3Vkby53cy9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0Mjg3LTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyODctMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVjMTg0YjEzYjZiNWRlMzJhZjYzMGFmMmZkMDEzZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JlYjY4Yjk0NDcxZWY1NmQ4YTEwMzZkYmNkYzA5YTdiNThhOTQ5YTY4ZmZjZTQ4YjgzZjgzN2RkMzNlMmVjMCIKLQotREVQRU5EUyArPSAiIHZpcnR1YWwvY3J5cHQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKLSAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbwotCQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0td2hlZWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KLQkJCWVjaG8gJ2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV93aGVlbC5zbyB1c2VfdWlkJyA+PiR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQkJCXNlZCAtaSAncy8jIFwoJXdoZWVsIEFMTD0oQUxMKSBBTExcKS9cMS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQkJZmkKLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlIC9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCi0Jcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDg4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCkBAIC0wLDAgKzEsNDggQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5zdWRvLndzL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKKworU1JDX1VSSVttZDVzdW1dID0gImNlMTdmZjZlNzJhNzBmOGQ1ZGFiYmE4YWJmM2NkMmRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYThkOTdhM2NlZTRjODQ0ZTA4ODdlYTdhMWJkODBlYjU0Y2M5OGZkNzc5NjY3NzZjYjFhODA2NTNhZDQ1NGYiCisKK0RFUEVORFMgKz0gIiB2aXJ0dWFsL2NyeXB0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCisgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgIGFjX2N2X3BhdGhfTVZQUk9HPSR7YmFzZV9iaW5kaXJ9L212IFwKKyAgICAgICAgYWNfY3ZfcGF0aF9CU0hFTExQUk9HPSR7YmFzZV9iaW5kaXJ9L3NoIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9TRU5ETUFJTFBST0c9JHtzYmluZGlyfS9zZW5kbWFpbCBcCisgICAgICAgIGFjX2N2X3BhdGhfVklQUk9HPSR7YmFzZV9iaW5kaXJ9L3ZpIFwKKyAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKKyAgICAgICAgICAgICAtLXdpdGgtdmFyZGlyPS92YXIvbGliL3N1ZG8gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhbS13aGVlbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IDsgdGhlbgorCQkJZWNobyAnYXV0aCAgICAgICByZXF1aXJlZCAgICAgcGFtX3doZWVsLnNvIHVzZV91aWQnID4+JHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCQkJc2VkIC1pICdzLyMgXCgld2hlZWwgQUxMPShBTEwpIEFMTFwpL1wxLycgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCQlmaQorCWZpCisKKwljaG1vZCA0MTExICR7RH0ke2JpbmRpcn0vc3VkbworCWNobW9kIDA0NDAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCisJIyBFeHBsaWNpdGx5IHJlbW92ZSB0aGUgL3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTY3OTQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1Gcm9tIGYwYWY1YmNmZDc1MzY5MTY1MmVhYzM1ZWZiY2IyMDhjOTMzMjUzZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAzMSBBdWcgMjAxNSAwNToxMTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLUV4cGxpY2l0bHkgaW5jbHVkZSBmY250bC5oIHNpbmNlIHdpdGggZ2xpYmMgaXMgY29tZXMgaW4gYXMgaW5kaXJlY3QKLWluY2x1ZGUgYnV0IG5vdCB3aXRoIG11c2wKLQotbGludXgvdGltZS5oIGluY2x1c2lvbiBpcyBub3QgcmVxdWlyZWQgb24gbXVzbCBzbyB1c2luZyAhX19HTElCQ19fIGlzCi1ub3QgcmlnaHQgZm9yIG11c2wgaGVyZQotCi13YWl0IHR5cGUgaXMgZ2xpYmMgc3BlY2lmaWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrbG9nZC5jICAgIHwgMTAgKy0tLS0tLS0tLQotIGtzeW1fbW9kLmMgfCAgNSArLS0tLQotIHBpZGZpbGUuYyAgfCAgMSArCi0gc3lzbG9nLmMgICB8ICAzICsrLQotIHN5c2xvZ2QuYyAgfCAgNCArLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2xvZ2QuYyBiL2tsb2dkLmMKLWluZGV4IDZjYzgwZWQuLjkyMTk2NzEgMTAwNjQ0Ci0tLS0gYS9rbG9nZC5jCi0rKysgYi9rbG9nZC5jCi1AQCAtMjYwLDExICsyNjAsOCBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0tI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KLS0jZW5kaWYgLyogX19HTElCQ19fICovCi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0yNzcsMTMgKzI3NCw4IEBACi0gCi0gI2RlZmluZSBfX0xJQlJBUllfXwotICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSMgZGVmaW5lIF9fTlJfa3N5c2xvZyBfX05SX3N5c2xvZwotLV9zeXNjYWxsMyhpbnQsa3N5c2xvZyxpbnQsIHR5cGUsIGNoYXIgKiwgYnVmLCBpbnQsIGxlbik7Ci0tI2Vsc2UKLSAjaW5jbHVkZSA8c3lzL2tsb2cuaD4KLSAjZGVmaW5lIGtzeXNsb2cga2xvZ2N0bAotLSNlbmRpZgotIAotICNkZWZpbmUgTE9HX0JVRkZFUl9TSVpFIDQwOTYKLSAjZGVmaW5lIExPR19MSU5FX0xFTkdUSCAxMDAwCi1kaWZmIC0tZ2l0IGEva3N5bV9tb2QuYyBiL2tzeW1fbW9kLmMKLWluZGV4IDY4Y2Q2YjYuLjZlMjZkYTEgMTAwNjQ0Ci0tLS0gYS9rc3ltX21vZC5jCi0rKysgYi9rc3ltX21vZC5jCi1AQCAtMTEzLDEyICsxMTMsOSBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlICJtb2R1bGUuaCIKLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0tI2VuZGlmIC8qIF9fR0xJQkNfXyAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotZGlmZiAtLWdpdCBhL3BpZGZpbGUuYyBiL3BpZGZpbGUuYwotaW5kZXggZTA5NTlhMC4uNmRhYTJlMCAxMDA2NDQKLS0tLSBhL3BpZGZpbGUuYwotKysrIGIvcGlkZmlsZS5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gCi0gLyogcmVhZF9waWQKLSAgKgotZGlmZiAtLWdpdCBhL3N5c2xvZy5jIGIvc3lzbG9nLmMKLWluZGV4IGJkYjNmZjIuLmVmN2IzNGUgMTAwNjQ0Ci0tLS0gYS9zeXNsb2cuYwotKysrIGIvc3lzbG9nLmMKLUBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0tI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KLSsvLyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4KLSAjaWYgMAotICNpbmNsdWRlICJzeXNsb2cuaCIKLUBAIC03Miw2ICs3Miw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNkZWZpbmUJX1BBVEhfTE9HTkFNRQkiL2Rldi9sb2ciCi0gCi1kaWZmIC0tZ2l0IGEvc3lzbG9nZC5jIGIvc3lzbG9nZC5jCi1pbmRleCBlYTczZWE1Li4xY2EwNTk1IDEwMDY0NAotLS0tIGEvc3lzbG9nZC5jCi0rKysgYi9zeXNsb2dkLmMKLUBAIC04MTgsOSArODE4LDcgQEAgdm9pZCBkb2V4aXQoaW50IHNpZyk7Ci0gdm9pZCBpbml0KCk7Ci0gdm9pZCBjZmxpbmUoY2hhciAqbGluZSwgcmVnaXN0ZXIgc3RydWN0IGZpbGVkICpmKTsKLSBpbnQgZGVjb2RlKGNoYXIgKm5hbWUsIHN0cnVjdCBjb2RlICpjb2RldGFiKTsKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gI2RlZmluZSBkcHJpbnRmIG15ZHByaW50ZgotLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSBzdGF0aWMgdm9pZCBkcHJpbnRmKGNoYXIgKiwgLi4uKTsKLSBzdGF0aWMgdm9pZCBhbGxvY2F0ZV9sb2codm9pZCk7Ci0gdm9pZCBzaWdodXBfaGFuZGxlcigpOwotQEAgLTIwOTQsNyArMjA5Miw3IEBAIHZvaWQgcmVhcGNoaWxkKCkKLSAJKHZvaWQpIHNpZ25hbChTSUdDSExELCByZWFwY2hpbGQpOwkvKiByZXNldCBzaWduYWwgaGFuZGxlciAtQVNQICovCi0gCXdhaXQgKChpbnQgKikwKTsKLSAjZWxzZQotLQl1bmlvbiB3YWl0IHN0YXR1czsKLSsJaW50IHN0YXR1czsKLSAKLSAJd2hpbGUgKHdhaXQzKCZzdGF0dXMsIFdOT0hBTkcsIChzdHJ1Y3QgcnVzYWdlICopIE5VTEwpID4gMCkKLSAJCTsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2JmNmFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBkY2FhNzUzOTFmZjI2N2MzOGU3NzZkNDhjNTc5Y2RiNzM0YjkxYWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMTU6NTI6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG9uZSByYXJlbHkgcmVwcm9kdWNlZCBwYXJhbGxlbCBidWlsZCBwcm9ibGVtCisKK2ZpeCBmb3IgdGhpcyBpc3N1ZToKK2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvaXNzdWVzLzE3CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvY29tbWl0L2I4OGUyMWQxNzcwYTI2MmYwZTVkMGY2Yjg0ZjBhYmQ0YTVkZTU1YjddCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTkzZGJmZC4uMDZiNzA2ZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNTYsMyArNTYsMTMgQEAgbGlic3lzbG9nX2xhX1NPVVJDRVMgID0gc3lzbG9nLmMgc3lzbG9nLmggY29tcGF0LmgKKyBsaWJzeXNsb2dfbGFfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9YT1BFTl9TT1VSQ0U9NjAwCisgbGlic3lzbG9nX2xhX0xERkxBR1MgID0gJChBTV9MREZMQUdTKSAtdmVyc2lvbi1pbmZvIDA6MDowCisgbGlic3lzbG9nX2xhX0xJQkFERCAgID0gJChMVExJQk9CSlMpCisrCisrIyBCb3RoIGxpYnN5c2xvZ19sYSBhbmQgc3lzbG9nZC9sb2dnZXIgcmVxdWlyZXMgb2JqZWN0cyBsaWtlIGxpYi9waWRmaWxlLm8sIGZvcgorKyMgbGlic3lzbG9nX2xhLCB0aGUgb2JqZWN0cyBzaG91bGQgYmUgY29tcGlsZWQgd2l0aCAtZlBJQywgYnV0IGZvcgorKyMgc3lzbG9nZC9sb2dnZXIsIGl0IGRvZXNuJ3QgbmVlZCAtZlBJQywgc28gdGhlcmUgaXMgYSByYWNlIGlzc3VlIHdoZW4gdGhlIHR3bworKyMgZGlmZmVyZW50IGxpYi9waWRmaWxlLm8gYXJlIGNvbXBpbGVkIGF0IHRoZSBzYW1lIHRpbWUsIHdoaWNoIHdvdWxkIGNhdXNlIGVycm9ycyBsaWtlOgorKyMgbGQ6IHN5c2xvZ2Qtc3lzbG9nZC5vOiBpbiBmdW5jdGlvbiBgbWFpbic6CisrIyBzeXNsb2dkLmM6NDE3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3BpZGZpbGUnCisrIworKyMgTWFrZSBMSUJPQkpTIGRlcGVuZCBvbiBMVExJQk9CSlMgdG8gZml4IHRoZSBwcm9ibGVtLgorKyQoTElCT0JKUyk6ICQoTFRMSUJPQkpTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDMxYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBjYjcyYjNlMTcyYzIzOGI0YjVhZTU5MzVkYzZiZTU0ZjUwMzRmY2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTg6MjA6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBwcm9ibGVtcyB0aGF0IGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB1bmRlciBzb21lCi0gY29uZGl0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBubyB1cHN0cmVhbSBdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBrc3ltX21vZC5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2tzeW1fbW9kLmMgYi9rc3ltX21vZC5jCi1pbmRleCA2ZTI2ZGExLi5hM2RhYTdkIDEwMDY0NAotLS0tIGEva3N5bV9tb2QuYwotKysrIGIva3N5bV9tb2QuYwotQEAgLTE4Niw3ICsxODYsNiBAQCBleHRlcm4gaW50IEluaXRNc3ltcygpCi0gCQllbHNlCi0gCQkJU3lzbG9nKExPR19FUlIsICJFcnJvciBsb2FkaW5nIGtlcm5lbCBzeW1ib2xzICIgXAotIAkJCSAgICAgICAiLSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JCWZjbG9zZShrc3ltcyk7Ci0gCQlyZXR1cm4oMCk7Ci0gCX0KLSAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiZGVmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGIyMmYyNDQ3MzJjZDBmNDc1YWYyZjgyZmM3ZWVjZWM0OWY5MDYyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDAwOjAxOjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBNYWtlIHdheSBmb3IgcmVzcGVjdGluZyBmbGFncyBmcm9tIGVudmlyb25tZW50Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgfCA0ICstLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1YWYxNjg5Li5hZjY5OWQyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTcsMTQgKzE3LDEyIEBACi0gIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gIyAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgotIAotLUNDPSBnY2MKLSAjU0tGTEFHUz0gLWcgLURTWVNWIC1XYWxsCi0gI0xERkxBR1M9IC1nCi0tU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCi0rU0tGTEFHUyA9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtRFNZU1YgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKLS1MREZMQUdTPSAtcwotIAotICMgTG9vayB3aGVyZSB5b3VyIGluc3RhbGwgcHJvZ3JhbSBpcy4KLSBJTlNUQUxMID0gL3Vzci9iaW4vaW5zdGFsbAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL2tsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjODg4YzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249S2VybmVsIExvZ2dpbmcgU2VydmljZQotQWZ0ZXI9c3lzbG9nZC5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4va2xvZ2QKLVBJREZpbGU9L3Zhci9ydW4va2xvZ2QucGlkCi1TdGFuZGFyZE91dHB1dD1udWxsCi1SZXN0YXJ0PW9uLWZhaWx1cmUKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjZjODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lza2xvZ2QtMS41LjEub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi1AQCAtMTI3LDggKzEyNyw4IEBAIGNsb2JiZXI6IGNsZWFuCi0gCXJtIC1mIHN5c2xvZ2Qga2xvZ2Qga3N5bSBzeXNsb2dfdHN0IG9vcHNfdGVzdCBUQUdTIHRzeXNsb2dkIHRrbG9nZAotIAotIGluc3RhbGxfZXhlYzogc3lzbG9nZCBrbG9nZAotLQkke0lOU1RBTEx9IC1tIDUwMCAtcyBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0tCSR7SU5TVEFMTH0gLW0gNTAwIC1zIGtsb2dkICR7QklORElSfS9rbG9nZAotKwkke0lOU1RBTEx9IC1tIDUwMCBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0rCSR7SU5TVEFMTH0gLW0gNTAwIGtsb2dkICR7QklORElSfS9rbG9nZAotIAotIGluc3RhbGxfbWFuOgotIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjYzA0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVRoZSBjb21waWxlciBzaG91bGQgbm90IGJlIGdlbmVyYXRpbmcgdmVjdG9yaXplZCBpbnN0cnVjdGlvbnMgb24gdGhpcyB0YXJnZXQuCi1UaGlzIGlzIGEgd29yayBhcm91bmQgdW50aWwgSSBjYW4gZGV0ZXJtaW5lIHdoeSB0aGlzIGlzIG9jY3VyaW5nIG9uIHRoaXMKLXBhcnRpY3VsYXIgcmVjaXBlCi0KLUluZGV4OiBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQotQEAgLTIwLDcgKzIwLDggQEAKLSBDQz0gZ2NjCi0gI1NLRkxBR1M9IC1nIC1EU1lTViAtV2FsbAotICNMREZMQUdTPSAtZwotLVNLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQotK1NLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZSBcCi0rCS1mbm8tdHJlZS12ZWN0b3JpemUKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKaW5kZXggNzM0MjQ4NC4uMmEzNTZhNiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKQEAgLTE4LDkgKzE4LDcgQEAKIFBBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KIAogcGlkZmlsZV9zeXNsb2dkPS92YXIvcnVuL3N5c2xvZ2QucGlkCi1waWRmaWxlX2tsb2dkPS92YXIvcnVuL2tsb2dkLnBpZAotYmlucGF0aF9zeXNsb2dkPS9zYmluL3N5c2xvZ2QKLWJpbnBhdGhfa2xvZ2Q9L3NiaW4va2xvZ2QKK2JpbnBhdGhfc3lzbG9nZD0vdXNyL3NiaW4vc3lzbG9nZAogCiB0ZXN0IC14ICRiaW5wYXRoIHx8IGV4aXQgMAogCkBAIC0xMTIsMjggKzExMCwxNiBAQAogICAgIGNyZWF0ZV94Y29uc29sZQogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfc3lzbG9nZCAtLSAkU1lTTE9HRAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RhcnRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgc3RvcCkKICAgICBsb2dfYmVnaW5fbXNnICJTdG9wcGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICBsb2dfZW5kX21zZyAkPwogICAgIDs7CiAgIHJlbG9hZHxmb3JjZS1yZWxvYWQpCiAgICAgbG9nX2JlZ2luX21zZyAiUmVsb2FkaW5nIHN5c3RlbSBsb2cgZGFlbW9uLi4uIgogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tc2lnbmFsIDEgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QKICAgICBsb2dfZW5kX21zZyAkPwotICAgIGxvZ19iZWdpbl9tc2cgIlJlbG9hZGluZyBrZXJuZWwgbG9nIGRhZW1vbi4uLiIKLSAgICBwaWQ9YGNhdCAkcGlkZmlsZV9rbG9nZCAyPiAvZGV2L251bGxgCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICB3YWl0cGlkICRwaWQKLSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkIC0tbmFtZSBrbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfa2xvZ2QgLS0gJEtMT0dECi0gICAgbG9nX2VuZF9tc2cgJD8KICAgICA7OwogICByZXN0YXJ0KQogICAgIGxvZ19iZWdpbl9tc2cgIlJlc3RhcnRpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCkBAIC0xNDIsMTIgKzEyOCw2IEBACiAgICAgd2FpdHBpZCAkcGlkCiAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9zeXNsb2dkIC0tICRTWVNMT0dECiAgICAgbG9nX2VuZF9tc2cgJD8KLSAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgcGlkPWBjYXQgJHBpZGZpbGVfa2xvZ2QgMj4gL2Rldi9udWxsYAotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCi0gICAgd2FpdHBpZCAkcGlkCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgcmVsb2FkLW9yLXJlc3RhcnQpCiAgICAgaWYgcnVubmluZwpAQCAtMTYwLDggKzE0MCw2IEBACiAgIHN0YXR1cykKICAgICBzdGF0dXMgc3lzbG9nZAogICAgIFJFVFZBTD0kPwotICAgIHN0YXR1cyBrbG9nZAotICAgIHJ2YWw9JD8KICAgICBbICRSRVRWQUwgLWVxIDAgXSAmJiBleGl0ICRydmFsCiAgICAgZXhpdCAkUkVUVkFMCiAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDlkZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0jICAvZXRjL3N5c2xvZy5jb25mCUNvbmZpZ3VyYXRpb24gZmlsZSBmb3Igc3lzbG9nZC4KLSMKLSMgIFBvcnRlZCBmcm9tIGRlYmlhbiBieSBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgotIwotCi0jCi0jIEZpcnN0IHNvbWUgc3RhbmRhcmQgbG9nZmlsZXMuICBMb2cgYnkgZmFjaWxpdHkuCi0jCi0KLWF1dGgsYXV0aHByaXYuKgkJCS92YXIvbG9nL2F1dGgubG9nCi0qLio7YXV0aCxhdXRocHJpdi5ub25lCQktL3Zhci9sb2cvc3lzbG9nCi0jY3Jvbi4qCQkJCS92YXIvbG9nL2Nyb24ubG9nCi1kYWVtb24uKgkJCS0vdmFyL2xvZy9kYWVtb24ubG9nCi1rZXJuLioJCQkJLS92YXIvbG9nL2tlcm4ubG9nCi1scHIuKgkJCQktL3Zhci9sb2cvbHByLmxvZwotbWFpbC4qCQkJCS0vdmFyL2xvZy9tYWlsLmxvZwotdXNlci4qCQkJCS0vdmFyL2xvZy91c2VyLmxvZwotCi0jCi0jIExvZ2dpbmcgZm9yIHRoZSBtYWlsIHN5c3RlbS4gIFNwbGl0IGl0IHVwIHNvIHRoYXQKLSMgaXQgaXMgZWFzeSB0byB3cml0ZSBzY3JpcHRzIHRvIHBhcnNlIHRoZXNlIGZpbGVzLgotIwotbWFpbC5pbmZvCQkJLS92YXIvbG9nL21haWwuaW5mbwotbWFpbC53YXJuCQkJLS92YXIvbG9nL21haWwud2FybgotbWFpbC5lcnIJCQkvdmFyL2xvZy9tYWlsLmVycgotCi0jIExvZ2dpbmcgZm9yIElOTiBuZXdzIHN5c3RlbQotIwotbmV3cy5jcml0CQkJL3Zhci9sb2cvbmV3cy5jcml0Ci1uZXdzLmVycgkJCS92YXIvbG9nL25ld3MuZXJyCi1uZXdzLm5vdGljZQkJCS0vdmFyL2xvZy9uZXdzLm5vdGljZQotCi0jCi0jIFNvbWUgYGNhdGNoLWFsbCcgbG9nZmlsZXMuCi0jCi0qLj1kZWJ1ZztcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotbmV3cy5ub25lO21haWwubm9uZQktL3Zhci9sb2cvZGVidWcKLQotKi49aW5mbzsqLj1ub3RpY2U7Ki49d2FybjtcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotY3JvbixkYWVtb24ubm9uZTtcCi1tYWlsLG5ld3Mubm9uZQkJLS92YXIvbG9nL21lc3NhZ2VzCi0KLSMKLSMgRW1lcmdlbmNpZXMgYXJlIHNlbnQgdG8gZXZlcnlib2R5IGxvZ2dlZCBpbi4KLSMKLSouZW1lcmcJCQkJKgotCi0jCi0jIEkgbGlrZSB0byBoYXZlIG1lc3NhZ2VzIGRpc3BsYXllZCBvbiB0aGUgY29uc29sZSwgYnV0IG9ubHkgb24gYSB2aXJ0dWFsCi0jIGNvbnNvbGUgSSB1c3VhbGx5IGxlYXZlIGlkbGUuCi0jCi0jZGFlbW9uLG1haWwuKjtcCi0jbmV3cy49Y3JpdDtuZXdzLj1lcnI7bmV3cy49bm90aWNlO1wKLSMqLj1kZWJ1ZzsqLj1pbmZvO1wKLSMqLj1ub3RpY2U7Ki49d2FybgkvZGV2L3R0eTgKLQotIyBUaGUgbmFtZWQgcGlwZSAvZGV2L3hjb25zb2xlIGlzIGZvciB0aGUgYHhjb25zb2xlJyB1dGlsaXR5LiAgVG8gdXNlIGl0LAotIyB5b3UgbXVzdCBpbnZva2UgYHhjb25zb2xlJyB3aXRoIHRoZSBgLWZpbGUnIG9wdGlvbjoKLSMKLSMgICAgJCB4Y29uc29sZSAtZmlsZSAvZGV2L3hjb25zb2xlIFsuLi5dCi0jCi0jIE5PVEU6IGFkanVzdCB0aGUgbGlzdCBiZWxvdywgb3IgeW91J2xsIGdvIGNyYXp5IGlmIHlvdSBoYXZlIGEgcmVhc29uYWJseQotIyAgICAgIGJ1c3kgc2l0ZS4uCi0jCi1kYWVtb24uKjttYWlsLio7XAotbmV3cy5lcnI7XAotKi49ZGVidWc7Ki49aW5mbztcCi0qLj1ub3RpY2U7Ki49d2Fybgl8L2Rldi94Y29uc29sZQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYWZmM2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nZC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1TeXN0ZW0gTG9nZ2luZyBTZXJ2aWNlCi1SZXF1aXJlcz1zeXNsb2cuc29ja2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4vc3lzbG9nZAotUElERmlsZT0vdmFyL3J1bi9zeXNsb2dkLnBpZAotU3RhbmRhcmRPdXRwdXQ9bnVsbAotUmVzdGFydD1vbi1mYWlsdXJlCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKLUFsaWFzPXN5c2xvZy5zZXJ2aWNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvdG1wZmlsZXMuc3lza2xvZ2QuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRhZWNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcCAvZGV2L3hjb25zb2xlIDA2NDAgcm9vdCBhZG0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwppbmRleCA3NDkwMjZmLi44ODk5ZGFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCkBAIC0xLDYyICsxLDM4IEBACiBTVU1NQVJZID0gIlN5c3RlbSBMb2cgRGFlbW9ucyIKLURFU0NSSVBUSU9OID0gIlRoZSBzeXNrbG9nZCBwYWNrYWdlIGltcGxlbWVudHMgdHdvIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCwga2xvZ2QiCitERVNDUklQVElPTiA9ICJUaGUgc3lza2xvZ2QgcGFja2FnZSBpbXBsZW1lbnRzIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkLyIKIFNFQ1RJT04gPSAiYmFzZSIKIAotTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCi1MSUNFTlNFX3N5c2xvZ2QgPSAiQlNEIgotTElDRU5TRV9rbG9nZCA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9NzdmZmIyZmVjNDhjNDZkN2NhMGFiYjJkNTgxM2U3ZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTViNGJlNGIyNTQ5MzM4NTI2NzU4ZWY0NzljMDQwOTQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9YTg4MGZlY2JjMDQ1MDNmMDcxYzQ5NGE5YzBkZDRmOTcgXAogICAgICAgICAgICAgICAgICAgICIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKK2luaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kIGF1dG90b29scwogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3N5c2tsb2dkLmdpdDtub2JyYW5jaD0xIFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3lza2xvZ2QgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2tsb2dkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdG1wZmlsZXMuc3lza2xvZ2QuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVNSQ19VUklfYXBwZW5kX2U1MDB2MiA9ICIgZmlsZTovL25vLXZlY3Rvcml6YXRpb24ucGF0Y2giCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbWQ9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSAtLXdpdGhvdXQtbG9nZ2VyIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKKyAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vc3lza2xvZ2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZworfQogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSBrbG9nZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCiBJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgogQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYiCiBSQ09ORkxJQ1RTXyR7UE59ID0gInJzeXNsb2cgYnVzeWJveC1zeXNsb2cgc3lzbG9nLW5nIgogCi1DRkxBR1MgKz0gIi1EU1lTViAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKLQkJCSR7RH0ke21hbmRpcn0vbWFuNSBcCi0JCQkke0R9JHtiYXNlX3NiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnQklORElSPSR7RH0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJCSdNQU5ESVI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3N5c2tsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2tsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQKLQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS90bXBmaWxlcy5zeXNrbG9nZC5jb25mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXNrbG9nZC5jb25mCi0JZmkKLX0KLQogRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZicsICcnLCBkKX0iCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YmNmZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgc3lza2xvZ2QuaW5jCi0KLVNSQ1JFViA9ICI5MzBhMmIxYzBkMTViMTQzMDlhNDlmMTRlM2YzMGU5MDU0NTZhZjRkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZF8yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjZiNGVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHN5c2tsb2dkLmluYworCitTUkNSRVYgPSAiMjRkYWZlOWEyN2FjOTU5ZWJlYjg5YWNkM2ViZDNkNjJjY2E0Yjc1NSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCmluZGV4IDc3Y2M2ZjIuLjhmZDg3YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwpAQCAtMjMsMTAgKzIzLDYgQEAKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RyaXBwaW5nIgogCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3N0YXQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmV4ZWNkaXJ9L3NhCiB9CkBAIC0zNCw2ICszMCw5IEBACiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCiAKKwkjIERvbid0IHZlcnNpb24gdGhlIGRvY3VtZW50YXRpb24KKwltdiAke0R9JHtkb2NkaXJ9LyR7QlB9ICR7RH0ke2RvY2Rpcn0vJHtCUE59CisKIAkjIGRvbid0IGluc3RhbGwgL3Zhci9sb2cvc2Egd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQogCXJtIC1yZiAke0R9L3ZhcgogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUZpeC0yMzItTWVtb3J5LWNvcnJ1cHRpb24tYnVnLWR1ZS10by1JbnRlZ2VyLU92ZXJmbG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjExMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNjAzYWU0ZWQ4Y2Q2NWFiZjA3NzZlZjdmNjgzNTRhNWMyNGEzNDExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlYmFzdGllbiBHT0RBUkQgPHN5c3N0YXRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVHVlLCAxNSBPY3QgMjAxOSAxNDozOTozMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzIzMjogTWVtb3J5IGNvcnJ1cHRpb24gYnVnIGR1ZSB0byBJbnRlZ2VyIE92ZXJmbG93IGluCi0gcmVtYXBfc3RydWN0KCkKLQotVHJ5IHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGEgY29ycnVwdGVkIGJpbmFyeSBkYXRhZmlsZQotd2l0aCBzYWRmLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzc3RhdC9zeXNzdGF0L2NvbW1pdC84M2ZhZDljODk1ZDFhYzEzZjc2YWY1ODgzYjc0NTFiMzMwMmJlZWY1XQotQ1ZFOiBDVkUtMjAxOS0xNjE2NwotCi1TaWduZWQtb2ZmLWJ5OiBTZWJhc3RpZW4gR09EQVJEIDxzeXNzdGF0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2FfY29tbW9uLmMgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2FfY29tbW9uLmMgYi9zYV9jb21tb24uYwotaW5kZXggMzk1YzExYy4uY2ZhOTAwNyAxMDA2NDQKLS0tLSBhL3NhX2NvbW1vbi5jCi0rKysgYi9zYV9jb21tb24uYwotQEAgLTEzMzYsNyArMTMzNiw4IEBAIGludCByZW1hcF9zdHJ1Y3QodW5zaWduZWQgaW50IGd0eXBlc19ucltdLCB1bnNpZ25lZCBpbnQgZnR5cGVzX25yW10sCi0gCS8qIFJlbWFwIFt1bnNpZ25lZF0gaW50IGZpZWxkcyAqLwotIAlkID0gZ3R5cGVzX25yWzFdIC0gZnR5cGVzX25yWzFdOwotIAlpZiAoZCkgewotLQkJaWYgKGZ0eXBlc19uclsxXSAqIFVMX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsxXSkKLSsJCWlmIChndHlwZXNfbnJbMF0gKiBVTExfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMV0gKiBVTF9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMV0pCi0gCQkJLyogT3ZlcmZsb3cgKi8KLSAJCQlyZXR1cm4gLTE7Ci0gCi1AQCAtMTM2NSw3ICsxMzY2LDkgQEAgaW50IHJlbWFwX3N0cnVjdCh1bnNpZ25lZCBpbnQgZ3R5cGVzX25yW10sIHVuc2lnbmVkIGludCBmdHlwZXNfbnJbXSwKLSAJLyogUmVtYXAgcG9zc2libGUgZmllbGRzIChsaWtlIHN0cmluZ3Mgb2YgY2hhcnMpIGZvbGxvd2luZyBpbnQgZmllbGRzICovCi0gCWQgPSBndHlwZXNfbnJbMl0gLSBmdHlwZXNfbnJbMl07Ci0gCWlmIChkKSB7Ci0tCQlpZiAoZnR5cGVzX25yWzJdICogVV9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMl0pCi0rCQlpZiAoZ3R5cGVzX25yWzBdICogVUxMX0FMSUdOTUVOVF9XSURUSCArCi0rCQkgICAgZ3R5cGVzX25yWzFdICogVUxfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMl0gKiBVX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsyXSkKLSAJCQkvKiBPdmVyZmxvdyAqLwotIAkJCXJldHVybiAtMTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYzMjk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNDIzMjVmYWE4OGQ2NGNjZTc5OTk3N2Q2MTFiMjc5MmJlYjE1NDY0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IFNlcCAyMDE1IDA4OjM2OjU5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbmVlZGVkIGhlYWRlcnMgZXhwbGljaXRseQotCi1vbiBnbGliYyB0aGVzZSBoZWFkZXJzIGdldCBwdWxsZWQgaW4gaW5kaXJlY3RseSB2aWEgb3RoZXIgLmggZmlsZXMKLWJ1dCByaWdodCBmaXggaXMgdG8gaW5jbHVkZSB0aGVtIGRpcmVjdGx5IHdoZW4gdXNlZAotCi1maXhlcwotCi1lcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnUEFUSF9NQVgnCi1lcnJvcjogY2FsbGVkIG9iamVjdCB0eXBlICd1bnNpZ25lZCBpbnQnIGlzIG5vdCBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIHBvaW50ZXIKLWRtX21ham9yID0gbWFqb3IoYXV4LnN0X3JkZXYpOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbW1vbi5jICAgIHwgMSArCi0gaW9jb25mLmMgICAgfCAxICsKLSBzYV9jb21tb24uYyB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvY29tbW9uLmMKLSsrKyBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1JbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCi0rKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAiaW9jb25mLmgiCi0gI2luY2x1ZGUgImNvbW1vbi5oIgotSW5kZXg6IHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzc3RhdC0xMS43LjEub3JpZy9zYV9jb21tb24uYwotKysrIHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi1AQCAtMjAsNiArMjAsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDY3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS1jaGVjay1mb3ItY2hrY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMTU5MGNjNjE0YWFmMGZiODFjZDgwNDQxNGQ2YzlkNWE5MjI3MzUyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE2OjE2OjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5pbjogcmVtb3ZlIGNoZWNrIGZvciBjaGtjb25maWcKKworY2hrY29uZmlnIGNhbid0IHdvcmsgb24gY3Jvc3MtcGxhdGZvcm0sIHNvIHNob3VsZCByZW1vdmUgY2hlY2sgZm9yIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBlbWJlZGRlZCBzcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDQ4YjlhMzEuLmNlZGViNDMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTQyLDcgKzQyLDggQEAgQUNfU1VCU1QoVkVSX0pTT04pCisgQUNfU1VCU1QoVkVSX1hNTCkKKyAKKyBBQ19QQVRIX1BST0coUEFUSF9DUCwgY3ApCistQUNfUEFUSF9QUk9HKFBBVEhfQ0hLQ09ORklHLCBjaGtjb25maWcpCisrI0FDX1BBVEhfUFJPRyhQQVRIX0NIS0NPTkZJRywgY2hrY29uZmlnKQorK0FDX1NVQlNUKFBBVEhfQ0hLQ09ORklHKQorIAorICMgQ2hlY2sgZm9yIHN5c3RlbWQKKyBBQ19DSEVDS19QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIHBrZy1jb25maWcpCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI4ODhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwMS1GaXgtMjMyLU1lbW9yeS1jb3JydXB0aW9uLWJ1Zy1kdWUtdG8tSW50ZWdlci1PdmVyZmxvLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4ZTNiYmI5Yzg3M2RkMzcwZjZkMzM2NjRlMzI2NTcwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3NTJmM2M0MDYxNTNhNmZjNDQ2NDk2ZjExMDI4NzI1MDVhY2UzZjA5MzFkOTc1YzFkNjY0YzgxZWMwOWYxMjkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTkwZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlkZmZmNWZhYzI0ZTM1YmQ5MmZiNzg5NmRlYmYyZmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlZGIwZTE5YjUxNGFjNTYwYTA5OGEwMjkzM2E0NzM1Yjg4MTI5NmQ2MTAxNGRiODliZjgwZjA1ZGQ3YTQ3MzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIKaW5kZXggMThmMDliNS4uZWJlNmNiMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMi5iYgpAQCAtMjIsNiArMjIsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAidGFyX2N2X3BhdGhfUlNIPW5vIgorCiAjIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCiAjIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAogIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YzhkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAyNGQxMDkxOWI0YmM1ZTM3YTJkODBiMjc0ZDJjZDJlZTc3YjAzNTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTQ6MjU6NDcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGZnZXRzKCkgZXh0ZXJuIGRlY2xhcmF0aW9uCisKK1RoZXNlIHNvdXJjZXMgYWxyZWFkeSBpbmNsdWRlIDxzdGRpby5oPiB3aGljaCBzaG91bGQgYnJpbmcgdGhlIGNvcnJlY3QKK2RlY2xhcmF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGhvc3RzX2FjY2Vzcy5jIHwgMSAtCisgbWlzYy5jICAgICAgICAgfCAyIC0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaG9zdHNfYWNjZXNzLmMgYi9ob3N0c19hY2Nlc3MuYworaW5kZXggMzI5YjM1ZS4uMDEzM2U1ZSAxMDA2NDQKKy0tLSBhL2hvc3RzX2FjY2Vzcy5jCisrKysgYi9ob3N0c19hY2Nlc3MuYworQEAgLTQ0LDcgKzQ0LDYgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBob3N0c19hY2Nlc3MuYyAxLjIxIDk3LzAyLzEyIDAyOjEzOjIyIjsKKyAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAjZW5kaWYKKyAKKy1leHRlcm4gY2hhciAqZmdldHMoKTsKKyBleHRlcm4gaW50IGVycm5vOworIAorICNpZm5kZWYJSU5BRERSX05PTkUKK2RpZmYgLS1naXQgYS9taXNjLmMgYi9taXNjLmMKK2luZGV4IDc0Y2EzMTkuLjlhNWU3M2EgMTAwNjQ0CistLS0gYS9taXNjLmMKKysrKyBiL21pc2MuYworQEAgLTE4LDggKzE4LDYgQEAgc3RhdGljIGNoYXIgc2Njc2ljW10gPSAiQCgjKSBtaXNjLmMgMS4yIDk2LzAyLzExIDE3OjAxOjI5IjsKKyAKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorLWV4dGVybiBjaGFyICpmZ2V0cygpOworLQorICNpZm5kZWYJSU5BRERSX05PTkUKKyAjZGVmaW5lCUlOQUREUl9OT05FCSgtMSkJCS8qIFhYWCBzaG91bGQgYmUgMHhmZmZmZmZmZiAqLworICNlbmRpZgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCBiZDBjODRjLi5lOTAzYjlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgpAQCAtNDksNiArNDksNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfd2FybmluZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4X3dhcm5pbmdzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC9maWxlcy8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZjAyNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tOiBPbGFmIE1hbmRlbCA8by5tYW5kZWxAbWVubG9zeXN0ZW1zLmNvbT4KLURhdGU6IEZyaSwgMjEgT2N0IDIwMTYgMTM6MDQ6NDQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgY29tcGlsaW5nIG91dC1vZi1zb3VyY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBvZiBbc3ZuOi8vc3ZuLnN2LmdudS5vcmcvdGV4aW5mby90cnVuayByMzYwMl0KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIE1ha2VmaWxlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMzQ0NzQ2My4uYzliNWI1YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTIwOCw3ICsyMDgsNyBAQCBpMThuL2VuLnRobCBpMThuLzogJChwb19kb2N1bWVudF9kaXIpL3BvX2RvY3VtZW50LyQoUEFDS0FHRSlfZG9jdW1lbnQucG90Ci0gCSAgZG9uZTsgXAotIAkgIG1zZ2V4ZWMgLWkgJDwgIiQoc3JjZGlyKS9nZXR0ZXh0X3RvX3NlcGFyYXRlZC5wbCIgfCAiJChzcmNkaXIpL3NlcGFyYXRlZF90b19oYXNoLnBsIiBlbiA+IGkxOG4vZW4udGhsOyBcCi0gCWVsc2UgXAotLQkgIGNwIC1wIGkxOG5fcmVmLyoudGhsIGkxOG47IFwKLSsJICBjcCAtcCAiJChzcmNkaXIpL2kxOG5fcmVmLyIqLnRobCBpMThuOyBcCi0gCWZpCi0gCi0gaTE4bl9yZWY6Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNDI2NGIzNy4uYTEzZjg0ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMjYsNyArMTEyNiw3IEBAIGkxOG4vZW4udGhsIGkxOG4vOiAkKHBvX2RvY3VtZW50X2RpcikvcG9fZG9jdW1lbnQvJChQQUNLQUdFKV9kb2N1bWVudC5wb3QKLSAJICBkb25lOyBcCi0gCSAgbXNnZXhlYyAtaSAkPCAiJChzcmNkaXIpL2dldHRleHRfdG9fc2VwYXJhdGVkLnBsIiB8ICIkKHNyY2Rpcikvc2VwYXJhdGVkX3RvX2hhc2gucGwiIGVuID4gaTE4bi9lbi50aGw7IFwKLSAJZWxzZSBcCi0tCSAgY3AgLXAgaTE4bl9yZWYvKi50aGwgaTE4bjsgXAotKwkgIGNwIC1wICIkKHNyY2RpcikvaTE4bl9yZWYvIioudGhsIGkxOG47IFwKLSAJZmkKLSAKLSBpMThuX3JlZjoKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkMTI1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBzY3JpcHQgdGhhdCBjb252ZXJ0cyBUZXhpbmZvIHRvIEhUTUwiCi1IT01FUEFHRSAgICA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyIKLVNFQ1RJT04gICAgID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFICAgICA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSAgICAgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS90ZXhpMmh0bWwvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjE1YWM4NzZmY2RjOGJlODY1YjE2NTM1ZjQ4MGFhNTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThhOThiMGVlMjBjNDk1YTZhYjg5NDM5OGEwNjVlZjU4MDI3MmRiZDVhMTViMWIxOWU4YmQxYmM4OWQ5ZjlmYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKLQkjIHVwZGF0ZSBwb19kb2N1bWVudC4KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19tZXNzYWdlcy8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJodG1sCi19Ci0KLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS90ZXhpbmZvIgotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgppbmRleCAxMjU0YmM4Li5lYzA0YmZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgpAQCAtOSwxOSArOSwyMSBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQogaW5oZXJpdCBuYXRpdmUKIAorIworIyBUbyBhdm9pZCB0ZXhpbmZvLWR1bW15LW5hdGl2ZSBhbmQgdGV4aW5mby1uYXRpdmUgY29uZmxpY3Rpbmcgd2UgaW5zdGFsbCB0byBiYXNlX2JpbmRpcgorIyB3aGljaCBpcyBsYXRlciBpbiBQQVRIIHRoYW4gYmluZGlyIHdoZXJlIHRleGluZm8tbmF0aXZlIGluc3RhbGxzCisjCiBkb19pbnN0YWxsX25hbWUoKSB7Ci0gICAgRklMRU5BTUU9IiR7RH0ke2JpbmRpcn0vJDEiCisgICAgRklMRU5BTUU9IiR7RH0ke2Jhc2VfYmluZGlyfS8kMSIKICAgICAjIFVzaW5nIGxuIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHJtX3dvcmsKICAgICBjcCAtVCAiJHtTfS90ZW1wbGF0ZS5weSIgIiRGSUxFTkFNRSIKICAgICBjaG1vZCAreCAkRklMRU5BTUUKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBta2RpciAtcCAiJHtEfSR7YmluZGlyfSIKKyAgICBta2RpciAtcCAiJHtEfSR7YmFzZV9iaW5kaXJ9IgogICAgIGZvciBpIGluIG1ha2VpbmZvIHBvZDJ0ZXhpIHRleGkyZHZpIHBkZnRleGkyZHZpIHRleGluZGV4IHRleGkycGRmIFwKICAgICAgICAgICAgICB0eGl4bWwydGV4aSB0ZXhpMmFueSBpbnN0YWxsLWluZm8gZ2luc3RhbGwtaW5mbyBcCiAgICAgICAgICAgICAgdXBkYXRlLWluZm8tZGlyOyBkbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMzhhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliL2dudWxpYi5tayB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRleGluZm8tNS4yL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMi5vcmlnL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLSsrKyB0ZXhpbmZvLTUuMi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKaW5kZXggZjQxODQzOS4uMGQ2YmJhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTg5YjFjNTdkNzZmNWNmNWFjYmIwZDAxODczNzRmN2E3N2JjZTFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjNhODAzZWFkMzY1NjM1MzMyOWE4MDE4NDZhOWEzYmViNzIxMGM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDEzOjQzOjI0IC0wNjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvbnQtZGVwZW5kLW9uLWhlbHAybWFuCkBAIC03LDI5ICs3LDMwIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCiAtLS0KICBkb2MvTWFrZWZpbGUuYW0gfCAgMiArLQogIG1hbi9NYWtlZmlsZS5hbSB8IDEyICsrKysrKy0tLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCAzOWRiODM0Li4xYmIyYTRmCitpbmRleCA3MzI4MzNlLi4wNDFjYjliIDEwMDY0NAogLS0tIGEvZG9jL01ha2VmaWxlLmFtCiArKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0zOCw3ICszOCw3IEBAIHJlZmNhcmRfZmlsZXMgPSByZWZjYXJkL01ha2VmaWxlIHJlZmNhcmQvdHhpY21kY2hlY2sgXAorQEAgLTM3LDcgKzM3LDcgQEAgcmVmY2FyZF9maWxlcyA9IHJlZmNhcmQvTWFrZWZpbGUgcmVmY2FyZC90eGljbWRjaGVjayBcCiAgIyBJbmNsdWRlIG91ciB0ZXhpbmZvLnRleCwgbm90IEF1dG9tYWtlJ3MuCiAgRVhUUkFfRElTVCA9IGVwc2YudGV4IHRleGluZm8udGV4IFwKICAgICAgICAgICAgICAgZmRsLnRleGkgXAogLQkgICAgICQobWFuX01BTlMpICQoVFhJX1hMQVRFKSBcCiArCSAgICAgJChUWElfWExBVEUpIFwKLSAgICAgICAgICAgICAgJChyZWZjYXJkX2ZpbGVzKSB0ZXhpbmZvLXRleC10ZXN0LnRleGkgXAorICAgICAgICAgICAgICAkKHJlZmNhcmRfZmlsZXMpIFwKKyAJICAgICB0ZXhpbmZvLXRleC10ZXN0LnRleGkgdGV4aW5mby10ZXgtdGVzdC5XSURPV3MgXAogICAgICAgICAgICAgICB0ZXhpbmZvLWphLnRleCBzaG9ydC1zYW1wbGUtamEudGV4aQotIAogZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggNmJmY2IzZC4uYTgyMGM5NgoraW5kZXggZDBjZDcyYy4uYTE5ZTUyYSAxMDA2NDQKIC0tLSBhL21hbi9NYWtlZmlsZS5hbQogKysrIGIvbWFuL01ha2VmaWxlLmFtCi1AQCAtMTMsMjQgKzEzLDI0IEBACitAQCAtMTEsMjcgKzExLDI3IEBACiAgIyBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KICAKICAjIFRoZXNlIGFyZSBnZW5lcmF0ZWQgdXNpbmcgaGVscDJtYW4uCkBAIC00NywxMCArNDgsMTMgQEAKIC1tYW5fTUFOUyArPSBpbmZvLjUgdGV4aW5mby41CiArI21hbl9NQU5TICs9IGluZm8uNSB0ZXhpbmZvLjUKICAKLSAjIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHBvZDJtYW4sIGJ1dCBsZXQncyBqdXN0IHJ1biBpdCBieSBoYW5kLgogLW1hbl9NQU5TICs9IHBvZDJ0ZXhpLjEKICsjbWFuX01BTlMgKz0gcG9kMnRleGkuMQogIAorIHBvZDJ0ZXhpLjE6ICQodG9wX3NyY2RpcikvUG9kLVNpbXBsZS1UZXhpbmZvL3BvZDJ0ZXhpLnBsCisgCSQoUE9EMk1BTikgJCh0b3Bfc3JjZGlyKS9Qb2QtU2ltcGxlLVRleGluZm8vcG9kMnRleGkucGwgPiIkQCIKKyAKKyAKICAjIFRoZXNlIGFyZSBqdXN0IC5zbydzIHRvIHRoZSBjb21tb24gcHJvZ3JhbS4KIC1tYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQogKyNtYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQpAQCAtNjAsNiArNjQsMyBAQAogIAogICMgTWFpbnRhaW5lcnMgc2hvdWxkIGJlIGFibGUgdG8gcmVnZW5lcmF0ZS4KICBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQobWFuX01BTlMpCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaAppbmRleCAwYjZlOWZkLi4xNWMwMzBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vbGluay16aXAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2xpbmstemlwLnBhdGNoCkBAIC0xLDE2ICsxLDIzIEBACi1pbnN0YWxsLWluZm8gdXNlcyBzeW1ib2xzIGZyb20gemxpYiBzbyBtdXN0IGxpbmsgYWdhaW5zdCBpdC4KK0Zyb20gYzEwMDIxMzgwMzNmY2NjYjJkMWFiZmM0MWY1YzJlNDZjODM2ZjdhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBMb2NrIDxqb3NoQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjkgSnVsIDIwMTMgMTU6MDI6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5zdGFsbC1pbmZvIHVzZXMgc3ltYm9scyBmcm9tIHpsaWIgc28gbXVzdCBsaW5rIGFnYWluc3QgaXQuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBKb3NodWEgTG9jayA8am9zaEBsaW51eC5pbnRlbC5jb20+CiAKLUluZGV4OiB0ZXhpbmZvLTUuMS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMS5vcmlnL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotKysrIHRleGluZm8tNS4xL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotQEAgLTM0LDQgKzM0LDQgQEAgQU1fQ1BQRkxBR1MgPSAJCQkJCVwKKy0tLQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbSBiL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQoraW5kZXggOWJjZmY3MS4uNjgyNDdmOSAxMDA2NDQKKy0tLSBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQorKysrIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCitAQCAtMzMsNCArMzMsNCBAQCBBTV9DUFBGTEFHUyA9IAkJCQkJXAogICAgLUkkKHRvcF9zcmNkaXIpL2dudWxpYi9saWIJCQlcCiAgICAtSSQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliCQkJXAogICAgLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgotLUxEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKQotK0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKSAtbHoKKy1MREFERCA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hICQoTElCSU5UTCkgJChMSUJUSFJFQUQpCisrTERBREQgPSAkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYi9saWJnbnUuYSAkKExJQklOVEwpICQoTElCVEhSRUFEKSAtbHoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaAppbmRleCBmMjUzNTJjLi5mNzIwOTdlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmZTRmMDA0NTk2MDFlZmUwY2ZhNzVkOTI3NDlhMzIyMzc4MDBhNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZDNiNjZjZjM5ODg1M2M2NjZlNzI0YzNkYmNjMzdkNTNhMjI0MGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTI6Mjc6MTcgLTA2MDAKIFN1YmplY3Q6IFtQQVRDSF0gdGV4aW5mby00LjEyLXpsaWIKQEAgLTcsMTYgKzcsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CisKIC0tLQotIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8IDEyICsrLS0tLS0KLSBpbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8ICAyICstCisgaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4gYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLWluZGV4IDgzN2QwMjAuLmJhOTY1NzkgMTAwNjQ0CitpbmRleCBjOTI0NTA5Li43NDZkZjA1IDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCiArKysgYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLUBAIC0yMTYsNyArMjA4LDcgQEAgYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIgorQEAgLTIxOCw3ICsyMTgsNyBAQCBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSIgIiQoREVTVERJUikkKGJpbmRpcikiCiAgUFJPR1JBTVMgPSAkKGJpbl9QUk9HUkFNUykKICBhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMgPSBpbnN0YWxsLWluZm8uJChPQkpFWFQpCiAgZ2luc3RhbGxfaW5mb19PQkpFQ1RTID0gJChhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMpCkBAIC0yNCwxMiArMjUsMTIgQEAKICtnaW5zdGFsbF9pbmZvX0xEQUREID0gJChMREFERCkgLWx6CiAgYW1fX0RFUEVOREVOQ0lFU18xID0KICBnaW5zdGFsbF9pbmZvX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hIFwKLSAJJChhbV9fREVQRU5ERU5DSUVTXzEpCisgCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLWluZGV4IGU1ODE4OWMuLjg2MTc3ODcgMTAwNjQ0CitpbmRleCAyMWY0ZmUzLi5hN2FiYTgyIDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jCiArKysgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLUBAIC0yMiw2ICsyMiw3IEBACitAQCAtMTksNiArMTksNyBAQAogICNpbmNsdWRlIDxnZXRvcHQuaD4KICAjaW5jbHVkZSA8cmVnZXguaD4KICAjaW5jbHVkZSA8YXJnei5oPgpAQCAtMzcsNyArMzgsNyBAQAogIAogICNkZWZpbmUgVEFCX1dJRFRIIDgKICAKLUBAIC02ODQsMTUgKzY4NSwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKK0BAIC02ODEsMTUgKzY4MiwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKICAgICAKICAgICBSZXR1cm4gZWl0aGVyIHN0ZGluIHJlYWRpbmcgdGhlIGZpbGUsIG9yIGEgbm9uLXN0ZGluIHBpcGUgcmVhZGluZwogICAgIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXByZXNzaW9uIHByb2dyYW0uICAqLwpAQCAtNTYsNyArNTcsNyBAQAogIAogICAgLyogV2UgbGV0IHRoZW0gcGFzcyBOVUxMIGlmIHRoZXkgZG9uJ3Qgd2FudCB0aGlzIGluZm8sIGJ1dCBpdCdzIGVhc2llcgogICAgICAgdG8gYWx3YXlzIGRldGVybWluZSBpdC4gICovCi1AQCAtNzAwLDQ4ICs3MDEsNDggQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAorQEAgLTY5Nyw0OCArNjk4LDQ4IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgb3BlbmVkX2ZpbGVuYW1lID0gJmxvY2FsX29wZW5lZF9maWxlbmFtZTsKICAKICAgICpvcGVuZWRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKQEAgLTExMyw3ICsxMTQsNyBAQAogICAgICB9CiAgI2VuZGlmIC8qIF9fTVNET1NfXyAqLwogICAgaWYgKCFmKQotQEAgLTc1Nyw3ICs3NTgsNyBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCitAQCAtNzU0LDcgKzc1NSw3IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgKCpjcmVhdGVfY2FsbGJhY2spIChmaWxlbmFtZSk7CiAgCiAgICAgICAgICAgIC8qIEFuZCB0cnkgb3BlbmluZyBpdCBhZ2Fpbi4gICovCkBAIC0xMjIsNyArMTIzLDcgQEAKICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQotQEAgLTc2NywyNiArNzY4LDI2IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKK0BAIC03NjQsMjYgKzc2NSwyNiBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCiAgCiAgICAvKiBSZWFkIGZpcnN0IGZldyBieXRlcyBvZiBmaWxlIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpbGVuYW1lLgogICAgICAgSWYgdGhlIGZpbGUgaXMgc2hvcnRlciB0aGFuIHRoaXMgaXQgY2FuJ3QgYmUgdXNhYmxlIGFueXdheS4gICovCkBAIC0xNTgsNyArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICBnb3RvIGRldGVybWluZV9maWxlX3R5cGU7IC8qIHN1Y2Nlc3MgKi8KICAgICAgICAgICAgICB9Ci1AQCAtODU3LDM1ICs4NTgsNDAgQEAgZGV0ZXJtaW5lX2ZpbGVfdHlwZToKK0BAIC04NTQsMzUgKzg1NSw0MCBAQCBkZXRlcm1pbmVfZmlsZV90eXBlOgogICAgICAqY29tcHJlc3Npb25fcHJvZ3JhbSA9IE5VTEw7CiAgCiAgICAvKiBTZWVrIGJhY2sgb3ZlciB0aGUgbWFnaWMgYnl0ZXMuICAqLwpAQCAtMjA2LDcgKzIwNyw3IEBACiAgICAgIH0KICAKICAgIHJldHVybiBmOwotQEAgLTkwNCw3ICs5MTAsOCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTAxLDcgKzkwNyw4IEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKICAgICAgdm9pZCAoKmNyZWF0ZV9jYWxsYmFjaykgKGNoYXIgKiksIGNoYXIgKipvcGVuZWRfZmlsZW5hbWUsCiAgICAgIGNoYXIgKipjb21wcmVzc2lvbl9wcm9ncmFtKQogIHsKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgaW50IGZpbGxlZCA9IDA7CiAgICBpbnQgZGF0YV9zaXplID0gODE5MjsKICAgIGNoYXIgKmRhdGEgPSB4bWFsbG9jIChkYXRhX3NpemUpOwotQEAgLTkxMiwxNCArOTE5LDIwIEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKK0BAIC05MDksMTQgKzkxNiwyMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBJZiB0aGV5IHBhc3NlZCB0aGUgc3BhY2UgZm9yIHRoZSBmaWxlIG5hbWUgdG8gcmV0dXJuLCB1c2UgaXQuICAqLwogICAgZiA9IG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChmaWxlbmFtZSwgY3JlYXRlX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRfZmlsZW5hbWUsCkBAIC0yMzksNyArMjQwLDcgQEAKICAgICAgICBpZiAobnJlYWQgPCAwKQogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKG5yZWFkID09IDApCi1AQCAtOTM4LDggKzk1MSwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTM1LDggKzk0OCwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBXZSBuZWVkIHRvIGNsb3NlIHRoZSBzdHJlYW0sIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyB0aGUgcGlwZSBjcmVhdGVkCiAgICAgICBieSBwb3BlbiBpcyBzaW11bGF0ZWQgYnkgYSB0ZW1wb3JhcnkgZmlsZSB3aGljaCBvbmx5IGdldHMgcmVtb3ZlZAogICAgICAgaW5zaWRlIHBjbG9zZS4gICovCkBAIC0yNTEsNiArMjUyLDMgQEAKICAKICAgICpzaXplcCA9IGZpbGxlZDsKICAgIHJldHVybiBkYXRhOwotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBlYWU3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCi1ERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKLW9ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKLUdOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY29tcHJlc3NfZG9jJywgZCk6Ci0gICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQotICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKLSAgICAgICAgICAgICByZXR1cm4gImd6aXAiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgotICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJ4eiIKLSAgICByZXR1cm4gIiIKLQotUkRFUEVORFNfaW5mbyArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBuY3Vyc2VzLW5hdGl2ZSIKLQotVEFSR0VUX1BBVENIID0gImZpbGU6Ly91c2VfaG9zdF9tYWtlZG9jLnBhdGNoIgotVEFSR0VUX1BBVENIX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90ZXhpbmZvLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLW5hdGl2ZS10b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rLXppcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGU4ZjcxNDk4NzY3OTMwMzBlNTUxOGRkOGQ2ZTk1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzQyNzJlNDA0MmM0NjE4NmRkY2Q2NmJkNWQ5ODBjMGNhMTRmZjczNDQ0NDY4NmNjZjgxMzFmNmVjOGIxNDI3IgotCi10ZXhfdGV4aW5mbyA9ICJ0ZXhtZi90ZXgvdGV4aW5mbyIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vdGV4aTJhbnkiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ251bGliL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHVwZGF0ZXMgcG8vTWFrZWZpbGUuaW4uaW4sIHdlIGFsc28gbmVlZAotCSMgdXBkYXRlIHBvX2RvY3VtZW50LgotCWNwIC1mICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L3BvX2RvY3VtZW50LwotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JaWYgWyAtZCB0b29scyBdO3RoZW4KLQkJb2VfcnVubWFrZSAtQyB0b29scy9nbnVsaWIvbGliCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlpbnN0YWxsIC1wIC1tNjQ0ICR7U30vZG9jL3RleGluZm8udGV4ICR7U30vZG9jL3R4aS0/Py50ZXggJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L3RleGkyYW55ICR7RH0ke2JpbmRpcn0vcG9kMnRleGkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLW0gNzU1IGluZm8vbWFrZWRvYyAke0R9JHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTICs9ICJpbmZvIGluZm8tZG9jIgotCi1GSUxFU19pbmZvID0gIiR7YmluZGlyfS9pbmZvICR7YmluZGlyfS9pbmZva2V5ICR7YmluZGlyfS9pbnN0YWxsLWluZm8iCi1GSUxFU19pbmZvLWRvYyA9ICIke2luZm9kaXJ9L2luZm8uaW5mbyogJHtpbmZvZGlyfS9kaXIgJHtpbmZvZGlyfS9pbmZvLSouaW5mbyogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mby4xKiAke21hbmRpcn0vbWFuNS9pbmZvLjUqIFwKLSAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm9rZXkuMSogJHttYW5kaXJ9L21hbjEvaW5zdGFsbC1pbmZvLjEqIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbWFrZWluZm8gJHtiaW5kaXJ9L3RleGkqICR7YmluZGlyfS9wZGZ0ZXhpMmR2aSAke2JpbmRpcn0vcG9kMnRleGkgJHtkYXRhZGlyfS90ZXhpbmZvIgotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKLUZJTEVTXyR7UE59LWRvYyA9ICIke2luZm9kaXJ9L3RleGluZm8qIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99IFwKLSAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMSAke21hbmRpcn0vbWFuNSIKLQotIyBMaWUgYWJvdXQgcHJvdmlkaW5nIHRoZSBMb2NhbGU6OmdldHRleHRfeHMgbW9kdWxlLiBJdCBpcyBub3QgYWN0dWFsbHkgYnVpbHQsCi0jIGJ1dCB0aGUgY29kZSB3aWxsIHRlc3QgZm9yIGl0IGFuZCBpZiBub3QgZm91bmQgdXNlIExvY2FsZTo6Z2V0dGV4dF9wcCBpbnN0ZWFkLgotIyBIb3dldmVyLCB0aGlzIGNhdXNlcyBhIGZpbGUgZGVwZW5kZW5jeSBvbiBwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykgdG8gYmUKLSMgZ2VuZXJhdGVkLCB3aGljaCBtdXN0IGJlIHNhdGlzZmllZC4KLVJQUk9WSURFU18ke1BOfSArPSAicGVybChMb2NhbGU6OmdldHRleHRfeHMpIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDIxYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpAQCAtMCwwICsxLDkxIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKK0RFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAorb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAorR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworZGVmIGNvbXByZXNzX3BrZyhkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgorCitUQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCitUQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjBjMTc4MmY2OGVmNzM3MzhkNzRiZDFlOWUzMDc5M2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTUyZDA1MDc2YjkwMDMyY2IyNTIzNjczYzUwZTUzMTg1OTM4NzQ2NDgyY2YzY2EwMjEzZTliNGI1MGFjMmQzZSIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L3RleGkyYW55IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKKwkjIHVwZGF0ZSBwb19kb2N1bWVudC4KKwljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWlmIFsgLWQgdG9vbHMgXTt0aGVuCisJCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorfQorCitQQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKKworRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgorRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCisgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCisKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiCmluZGV4IDFlMmQ5YmQuLjFlMmI0NDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90emRhdGEuYmIKQEAgLTYwLDEyICs2MCw4IEBACiAJaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KIAkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKIAlmaQotCQotCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgotCQlleGl0IDAKLQlmaQotCQotCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgorCisJaWYgWyAhIC16ICIke3R6fSIgLWEgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgogCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgogCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKIAkJdHo9IlVuaXZlcnNhbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiCmluZGV4IDc3ODhiNWYuLmQzNzFjNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgpAQCAtMTcsNyArMTcsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKIAotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCmluZGV4IDc5MTc0NmUuLjFjNDQ1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIExaTUEgY29tcHJlc3NlZCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei8iCitIT01FUEFHRSA9ICJodHRwczovL3R1a2Fhbmkub3JnL3h6LyIKIFNFQ1RJT04gPSAiYmFzZSIKIAogIyBUaGUgc291cmNlIGluY2x1ZGVzIGJpdHMgb2YgUEQsIEdQTHYyLCBHUEx2MywgTEdQTHYyLjErLCBidXQgdGhlIG9ubHkgZmlsZQpAQCAtMjIsMTEgKzIyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZ2V0b3B0LmM7ZW5kbGluZT0yMzttZDU9MjA2OWIwZWU3MTA1NzJjMDNiYjMxMTRlNDUzMmNkODQgXAogICAgICAgICAgICAgICAgICAgICAiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly90dWthYW5pLm9yZy94ei94ei0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiNWFjZTMyNjRiZGQwMGM2NWVlZWMyODkxMzQ2ZjY1ZTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjUxMmYzYjcyNmQzYjM3YjZkYzRjODU3MGUxMzdiOTMxMWU3NTUyZThjY2JhYjRkMzlkNDdjZTVmNDE3NzE0NSIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInh6LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiZ2xfY3ZfcG9zaXhfc2hlbGw9L2Jpbi9zaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCiBQQUNLQUdFUyA9KyAibGlibHptYSIKQEAgLTM5LDUgKzQxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgIGx6bWEgbHpjYXQgdW5sem1hIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAtMy4wL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNmNhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaApAQCAtMCwwICsxLDIyIEBACitDbG9zZSB0aGUgY29ycmVjdCBmaWxlIGRlc2NyaXB0b3IKKworaHR0cHM6Ly9idWdzLmFyY2hsaW51eC5vcmcvdGFzay80NzcxMworCitTaWduZWQtb2ZmLWJ5OiBKYXRlIFN1amphdmFuaWNoIDxqYXRlZGV2QGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KKworZGlmZiAtLWdpdCBhL3ppcG5vdGUuYyBiL3ppcG5vdGUuYworaW5kZXggNWUwMmNiNi4uOTk2ZjAxMiAxMDA2NDQKKy0tLSBhL3ppcG5vdGUuYworKysrIGIvemlwbm90ZS5jCitAQCAtNjYxLDcgKzY2MSw3IEBAIGNoYXIgKiphcmd2OyAgICAgICAgICAgIC8qIGNvbW1hbmQgbGluZSB0b2tlbnMgKi8KKyAgICAgaWYgKChyID0gemlwY29weSh6KSkgIT0gWkVfT0spCisgICAgICAgemlwZXJyKHIsICJ3YXMgY29weWluZyBhbiBlbnRyeSIpOworICAgfQorLSAgZmNsb3NlKHgpOworKyAgZmNsb3NlKGluX2ZpbGUpOworIAorICAgLyogV3JpdGUgY2VudHJhbCBkaXJlY3RvcnkgYW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSB3aXRoIG5ldyBjb21tZW50cyAqLworICAgaWYgKChjID0gemZ0ZWxsbyh5KSkgPT0gKHpvZmZfdCktMSkgICAgLyogZ2V0IHN0YXJ0IG9mIGNlbnRyYWwgKi8KKyAgIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgppbmRleCBhMmNkNzcxLi5jMDBhOTMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzEwLXJlbW92ZS1idWlsZC1kYXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViZDU1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9lcGlwaGFueSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIGxpYmRhenpsZSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MGI1MGUxOGQ5OWIxOWY0NGNjOWNkNDE5YzZhNGJhOCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEwN2JjOTk3YWQyY2JmMTRkNTg1NTdiYjBiNjNlOTJkOGMzMzY4MzY4MGM1ZTUwZWE2ZjliNTNiMzZiZWMxZDkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMgJHtkYXRhZGlyfS9tZXRhaW5mbyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGI0YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4zNC40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2VwaXBoYW55IgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIgbGliZGF6emxlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0IG1pbWUteGRnCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE1NTlmMTY0YmI3ZDZjYmVjZWIzNDg2NDgwNzY4MzBiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjBlMTkwZmMwN2VjN2UzMzQ3MmU2MGM3ZTYzM2UwNDAwNGY3ZTI3N2EwZmZjNWU5Y2Q0MTM3MDY4ODFlNTk4ZCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyAke2RhdGFkaXJ9L21ldGFpbmZvIgorUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgppbmRleCBlM2U4OTk5Li45ODUzYjNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogREVQRU5EUyA9ICJndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgbWltZSBtaW1lLXhkZwogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzU4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvbWlzc2luZy10ZXN0LWRhdGEucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBkOGQyMzFjMDFlZjJlNTk4NTZkYThhNWMyNmFjZTk1NWU1ZjI5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjUgTm92IDIwMTkgMTc6MDU6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGluc3RhbGwgY2lyY3VsYXItdGFibGUuZ2lmCisKK1RoaXMgdGVzdCBkYXRhIHdhcyBhZGRlZCBmb3IgdGhlIHBpeGJ1Zi1naWYtY2lyY3VsYXItdGFibGUgdGVzdCAoYWRkZWQgT2N0b2JlcgorMjAxOCBpbiAwYjlkMDA0KSBidXQgYmVjYXVzZSB0aGUgZmlsZSB3YXMgbmV2ZXIgYWN0dWFsbHkgaW5zdGFsbGVkIHRoZSBpbnN0YWxsZWQKK3Rlc3Qgc3VpdGUgbmV2ZXIgcGFzc2VzLgorLS0tCisgdGVzdHMvbWVzb24uYnVpbGQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKK2luZGV4IDUxMTZmYzJiOS4uODBlZDNlOGIyIDEwMDY0NAorLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCitAQCAtOTcsNiArOTcsNyBAQCB0ZXN0X2RhdGEgPSBbCisgICAnYnVnNzc1NjkzLnBpeGRhdGEnLAorICAgJ2J1Zzc3NTIyOS5waXhkYXRhJywKKyAgICdhZXJvLmdpZicsCisrICAnY2lyY3VsYXItdGFibGUuZ2lmJworIF0KKyAKKyBpbnN0YWxsZWRfdGVzdF9iaW5kaXIgPSBqb2luX3BhdGhzKGdka19waXhidWZfbGliZXhlY2RpciwgJ2luc3RhbGxlZC10ZXN0cycsIG1lc29uLnByb2plY3RfbmFtZSgpKQorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTUxMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLURFU0NSSVBUSU9OID0gIlRoZSBHREsgUGl4YnVmIGxpYnJhcnkgcHJvdmlkZXM6IEltYWdlIGxvYWRpbmcgYW5kIHNhdmluZyBcCi1mYWNpbGl0aWVzLCBmYXN0IHNjYWxpbmcgYW5kIGNvbXBvc2l0aW5nIG9mIHBpeGJ1ZnMgYW5kIFNpbXBsZSBhbmltYXRpb24gXAotbG9hZGluZyAoaWUuIGFuaW1hdGVkIEdJRnMpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9HZGtQaXhidWYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nZGstcGl4YnVmL2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2RrLXBpeGJ1Zi1uYXRpdmUgc2hhcmVkLW1pbWUtaW5mbyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1jb3VwbGUtb2YtZGVjaXNpb25zLWFyb3VuZC1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LURvLW5vdC1ydW4tdGVzdHMtd2hlbi1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUJ1aWxkLXRodW1ibmFpbGVyLWFuZC10ZXN0cy1hbHNvLWluLWNyb3NzLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGFyZ2V0LW9ubHktV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNjMWQ3MTJhMTY0M2I5MmZmMDkwNGQ1ODk5NjM5NzFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczZmE2NTFlYzBkODlkNzNkZDMwNzBiMTI5Y2UyMjAzYTY2MTcxZGZjMGJkMmNhYTM1NzBhOWM5M2QyZDA3ODEiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgcGl4YnVmY2FjaGUgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGxpYl9wYWNrYWdlCi0KLUdJUl9NRVNPTl9PUFRJT04gPSAnZ2lyJwotCi1FWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctRGluc3RhbGxlZF90ZXN0cz10cnVlJywgJy1EaW5zdGFsbGVkX3Rlc3RzPWZhbHNlJywgZCl9IgotCi1MSUJWID0gIjIuMTAuMCIKLQotR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKLQotUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLURwbmc9dHJ1ZSwtRHBuZz1mYWxzZSxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi1EanBlZz10cnVlLC1EanBlZz1mYWxzZSxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRHRpZmY9dHJ1ZSwtRHRpZmY9ZmFsc2UsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi1EamFzcGVyPXRydWUsLURqYXNwZXI9ZmFsc2UsamFzcGVyIgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLUR4MTE9dHJ1ZSwtRHgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCi0KLSMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCi1SREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgotCi1GSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgotQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKLQotRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0gICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAotCSR7aW5jbHVkZWRpcn0vKiBcCi0JJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKLSIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgotUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCi0KLSAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCi0KLSAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgcidebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIENvcHkgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQljcCAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi40MC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGRmNTAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpAQCAtMCwwICsxLDEzMiBAQAorU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJUaGUgR0RLIFBpeGJ1ZiBsaWJyYXJ5IHByb3ZpZGVzOiBJbWFnZSBsb2FkaW5nIGFuZCBzYXZpbmcgXAorZmFjaWxpdGllcywgZmFzdCBzY2FsaW5nIGFuZCBjb21wb3NpdGluZyBvZiBwaXhidWZzIGFuZCBTaW1wbGUgYW5pbWF0aW9uIFwKK2xvYWRpbmcgKGllLiBhbmltYXRlZCBHSUZzKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvR2RrUGl4YnVmIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2RrLXBpeGJ1Zi9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtY291cGxlLW9mLWRlY2lzaW9ucy1hcm91bmQtY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Eby1ub3QtcnVuLXRlc3RzLXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1CdWlsZC10aHVtYm5haWxlci1hbmQtdGVzdHMtYWxzby1pbi1jcm9zcy1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlzc2luZy10ZXN0LWRhdGEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10YXJnZXQtb25seS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWViMWViYzI1OGJhOTA1ZjFjODY0NGVmNDlkZTA2NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNTgyNTk1MDk5NTM3Y2E4ZmYzYjk5YzY4MDQzNTBiNGMwNThiYjhhZDY3NDExYmJhYWUwMjRlZTdjZWFkNGU2IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitHSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKKworRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZScsICctRGluc3RhbGxlZF90ZXN0cz1mYWxzZScsIGQpfSIKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKKworUEFDS0FHRUNPTkZJR1twbmddID0gIi1EcG5nPXRydWUsLURwbmc9ZmFsc2UsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGpwZWc9dHJ1ZSwtRGpwZWc9ZmFsc2UsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLUR0aWZmPXRydWUsLUR0aWZmPWZhbHNlLHRpZmYiCitQQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItRGphc3Blcj10cnVlLC1EamFzcGVyPWZhbHNlLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsLUR4MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsIHInXmxpYnBpeGJ1ZmxvYWRlci0oLiopXC5zbyQnLCAnZ2RrLXBpeGJ1Zi1sb2FkZXItJXMnLCAnR0RLIHBpeGJ1ZiBsb2FkZXIgZm9yICVzJykpCisgICAgZC5zZXRWYXIoJ1BJWEJVRl9QQUNLQUdFUycsIHBhY2thZ2VzKQorCisgICAgIyBUaGUgdGVzdCBzdWl0ZSBleGVyY2lzZXMgYWxsIHRoZSBsb2FkZXJzLCBzbyBlbnN1cmUgdGhleSBhcmUgYWxsCisgICAgIyBkZXBlbmRlbmNpZXMgb2YgdGhlIHB0ZXN0IHBhY2thZ2UuCisgICAgZC5hcHBlbmRWYXIoIlJERVBFTkRTXyVzLXB0ZXN0IiAlIGQuZ2V0VmFyKCdQTicpLCAiICIgKyBwYWNrYWdlcykKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBDb3B5IGdkay1waXhidWYtcXVlcnktbG9hZGVycyBpbnRvIGxpYmRpciBzbyBpdCBpcyBhbHdheXMgYXZhaWxhYmxlCisJIyBpbiBtdWx0aWxpYiBidWlsZHMuCisJY3AgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLworCit9CisKKyMgUmVtb3ZlIGEgYmFkIGZ1enppbmcgYXR0ZW1wdCB0aGF0IHNwb3JhZGljYWxseSBmYWlscyB3aXRob3V0IGEgd2F5IHRvIHJlcHJvZHVjZQorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlybSAke0R9LyR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dkay1waXhidWYvcGl4YnVmLXJhbmRvbWx5LW1vZGlmaWVkLnRlc3QKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycworCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggYTA2MmFhNi4uMzcyZjE0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMTksNyArMTksNyBAQAogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuM10sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjZiNjBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxYjg2MGMxN2VmZTA2NTg0OWIwY2JmNDZlODg4MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwYjdlOTFmODI2MzU1MmI2NGQwZjliZWZmMzMxNTAyOTFiMDg2NjE4Y2U0OThjNzFiZjEwMDM1ZTQ4YzdjN2YiCi0KLURFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgotCi1QQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgotRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKLUZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKLUZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgotRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKLSAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTI3MjdiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhZWE0YWQ5YmMwMDJhYWNhZDE1NWVlMDc0OGIzNTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3YzJkOGMyNTkxMjVkNWYzNWVjMDk1MjJiODhjOGZlN2VjZjYyNTIyNGFiMDgxMTIxM2VmMGE5NWQ5MGI5MDgiCisKK0RFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgorCitQQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgorCitSUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorCitGSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgorRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKK0ZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKKyAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgorRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKKyAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5ZjljOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gMDQxN2ExYmIwODc0NWYyYmY1MzEwZDIwYjM0MmMyYjNiOWIyMTJkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBOb3YgMjAxOCAxNToxMDowNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBQb3J0IGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQgdG8gbWVzb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lyL21lc29uLmJ1aWxkICAgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIG1lc29uLmJ1aWxkICAgICAgIHwgIDQgKystCi0gbWVzb25fb3B0aW9ucy50eHQgfCAyMCArKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2lyL21lc29uLmJ1aWxkIGIvZ2lyL21lc29uLmJ1aWxkCi1pbmRleCBjMzEyMTAwLi5hMDI4MDMzIDEwMDY0NAotLS0tIGEvZ2lyL21lc29uLmJ1aWxkCi0rKysgYi9naXIvbWVzb24uYnVpbGQKLUBAIC00MSwxNiArNDEsMjkgQEAgZ2lyX2ZpbGVzID0gWwotIHR5cGVsaWJkaXIgPSBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2xpYmRpcicpLCAnZ2lyZXBvc2l0b3J5LTEuMCcpCi0gaW5zdGFsbF9kYXRhKGdpcl9maWxlcywgaW5zdGFsbF9kaXI6IGdpcmRpcikKLSAKLS1zY2FubmVyX2NvbW1hbmQgPSBbCi0tICBweXRob24sCi0tICBnaXJzY2FubmVyLAotLSAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLS0gICctLW5vLWxpYnRvb2wnLAotLSAgJy0tcXVpZXQnLAotLSAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0tICAnLS1hZGQtaW5jbHVkZS1wYXRoJywgam9pbl9wYXRocyhtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpKSwKLS0gICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpKSwKLS1dCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWhvc3QtZ2knKQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgJ2ctaXItc2Nhbm5lcicsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZWxzZQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgcHl0aG9uLAotKyAgICAgIGdpcnNjYW5uZXIsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZW5kaWYKLSsKLSAKLSBkZXBfdHlwZSA9IGdsaWJfZGVwLnR5cGVfbmFtZSgpCi0gaWYgZGVwX3R5cGUgPT0gJ2ludGVybmFsJwotQEAgLTYzLDYgKzc2LDEyIEBAIGlmIGRlcF90eXBlID09ICdpbnRlcm5hbCcKLSAgICAgICAgICAgICAgICAgICAgICAgJy0tZXh0cmEtbGlicmFyeT1nbGliLTIuMCcsICctLWV4dHJhLWxpYnJhcnk9Z29iamVjdC0yLjAnXQotIGVuZGlmCi0gCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtYmluYXJ5LXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJyldCi0rZW5kaWYKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktbGRkLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtbGRkLXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1sZGQtd3JhcHBlcicpXQotK2VuZGlmCi0gIyBUYWtlIGEgZ2xvYiBhbmQgcHJpbnQgdG8gbmV3bGluZXMKLSBnbG9iYmVyID0gJycnCi0gZnJvbSBnbG9iIGltcG9ydCBnbG9iCi1AQCAtODksOCArMTA4LDggQEAgZ2xpYl9jb21tYW5kID0gc2Nhbm5lcl9jb21tYW5kICsgWwotIAotIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICBnbGliX2NvbW1hbmQgKz0gWyctLWV4dGVybmFsLWxpYnJhcnknLCAnLS1wa2c9Z2xpYi0yLjAnXQotLSAgZ2xpYl9saWJkaXIgPSBnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdsaWJkaXInKQotLSAgZ2xpYl9pbmNkaXIgPSBqb2luX3BhdGhzKGdsaWJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dsaWItMi4wJykKLSsgIGdsaWJfbGliZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgZ2xpYl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnbGliZGlyJykKLSsgIGdsaWJfaW5jZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgam9pbl9wYXRocyhnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnbGliLTIuMCcpCi0gICBnbGliX2xpYmluY2RpciA9IGpvaW5fcGF0aHMoZ2xpYl9saWJkaXIsICdnbGliLTIuMCcsICdpbmNsdWRlJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2luY2RpciwgJ2dvYmplY3QnLCAnZ2xpYi10eXBlcy5oJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2xpYmluY2RpciwgJ2dsaWJjb25maWcuaCcpCi1AQCAtMzQ1LDcgKzM2NCw3IEBAIGlmIGdpb3VuaXhfZGVwLmZvdW5kKCkKLSAgIGRlcF90eXBlID0gZ2lvdW5peF9kZXAudHlwZV9uYW1lKCkKLSAgIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICAgIGdpb19jb21tYW5kICs9IFsnLS1wa2c9Z2lvLXVuaXgtMi4wJ10KLS0gICAgZ2lvdW5peF9pbmNsdWRlZGlyID0gam9pbl9wYXRocyhnaW91bml4X2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnaW8tdW5peC0yLjAnKQotKyAgICBnaW91bml4X2luY2x1ZGVkaXIgPSBnZXRfb3B0aW9uKCdwa2djb25maWctc3lzcm9vdC1wYXRoJykgKyBqb2luX3BhdGhzKGdpb3VuaXhfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dpby11bml4LTIuMCcpCi0gICAgICMgR2V0IHRoZSBpbnN0YWxsZWQgZ2lvLXVuaXggaGVhZGVyIGxpc3QKLSAgICAgcmV0ID0gcnVuX2NvbW1hbmQocHl0aG9uLCAnLWMnLCBnbG9iYmVyLmZvcm1hdChqb2luX3BhdGhzKGdpb3VuaXhfaW5jbHVkZWRpciwgJ2dpbycsICcqLmgnKSkpCi0gICAgIGlmIHJldC5yZXR1cm5jb2RlKCkgIT0gMAotQEAgLTQyOCwxNSArNDQ3LDI0IEBAIGdpcl9maWxlcyArPSBjdXN0b21fdGFyZ2V0KCdnaXItZ2lyZXBvc2l0b3J5JywKLSApCi0gCi0gdHlwZWxpYnMgPSBbXQotK2lmIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJykgIT0gJycKLSsgICAgZ2lyY29tcGlsZXJfY29tbWFuZCA9IFtnZXRfb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicpLCBnaXJjb21waWxlci5mdWxsX3BhdGgoKSwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0rICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0rICAgIF0KLStlbHNlCi0rICAgIGdpcmNvbXBpbGVyX2NvbW1hbmQgPSBbZ2lyY29tcGlsZXIsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJywKLSsgICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAotKyAgICBdCi0rZW5kaWYKLSsKLSBmb3JlYWNoIGdpciA6IGdpcl9maWxlcwotICAgdHlwZWxpYnMgKz0gY3VzdG9tX3RhcmdldCgnZ2VuZXJhdGUtdHlwZWxpYi1AMEAnLmZvcm1hdChnaXIpLnVuZGVyc2NvcmlmeSgpLAotICAgICBpbnB1dDogZ2lyLAotICAgICBvdXRwdXQ6ICdAQkFTRU5BTUVALnR5cGVsaWInLAotICAgICBkZXBlbmRzOiBbZ29iamVjdF9naXIsIF0sCi0tICAgIGNvbW1hbmQ6IFtnaXJjb21waWxlciwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotLSAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0tICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0tICAgIF0sCi0rICAgIGNvbW1hbmQ6IGdpcmNvbXBpbGVyX2NvbW1hbmQsCi0gICAgIGluc3RhbGw6IHRydWUsCi0gICAgIGluc3RhbGxfZGlyOiB0eXBlbGliZGlyLAotICAgKQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGE1ZTgyNWYuLmEyODQ5MGEgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNjgsNyArMTY4LDkgQEAgZW5kaWYKLSBzdWJkaXIoJ2dpcmVwb3NpdG9yeScpCi0gc3ViZGlyKCd0b29scycpCi0gc3ViZGlyKCdnaXNjYW5uZXInKQotLXN1YmRpcignZ2lyJykKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJykgPT0gdHJ1ZQotKyAgICBzdWJkaXIoJ2dpcicpCi0rZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotIHN1YmRpcigndGVzdHMnKQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDQ0NWE2OGEuLmEzMjU1MTEgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yNSwzICsyNSwyMyBAQCBvcHRpb24oJ3B5dGhvbicsIHR5cGU6ICdzdHJpbmcnLCB2YWx1ZTogJ3B5dGhvbjMnLAotIG9wdGlvbignZ2lyX2Rpcl9wcmVmaXgnLCB0eXBlOiAnc3RyaW5nJywKLSAgIGRlc2NyaXB0aW9uOiAnSW50ZXJtZWRpYXRlIHByZWZpeCBmb3IgZ2lyIGluc3RhbGxhdGlvbiB1bmRlciAke3ByZWZpeH0nCi0gKQotKwotK29wdGlvbignZW5hYmxlLWhvc3QtZ2knLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlIDogZmFsc2UsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBnb2JqZWN0IGludHJvc3BlY3Rpb24gdG9vbHMgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicsIHR5cGU6ICdzdHJpbmcnLAotKyAgZGVzY3JpcHRpb246ICdVc2UgYSB3cmFwcGVyIHRvIHJ1biBnaWNvbXBpbGVyIGFuZCBiaW5hcmllcyBwcm9kdWNlZCBieSBnaXNjYW5uZXIgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQotKwotK29wdGlvbignZW5hYmxlLWdpLWxkZC13cmFwcGVyJywgdHlwZTogJ3N0cmluZycsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBhIGxkZCB3cmFwcGVyIGluc3RlYWQgb2Ygc3lzdGVtIGxkZCBjb21tYW5kIGluIGdpc2Nhbm5lciAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZSA6IHRydWUsCi0rICBkZXNjcmlwdGlvbjogJ0J1aWxkIGludHJvc3BlY3Rpb24gZGF0YSAoLmdpciBhbmQgLnR5cGVsaWIgZmlsZXMpIGluIGFkZGl0aW9uIHRvIGxpYnJhcnkgYW5kIHRvb2xzJwotKykKLSsKLStvcHRpb24oJ3BrZ2NvbmZpZy1zeXNyb290LXBhdGgnLCB0eXBlOiAnc3RyaW5nJywKLSsgIGRlc2NyaXB0aW9uOiAnU3BlY2lmeSBhIHN5c3Jvb3QgcGF0aCB0byBwcmVwZW5kIHRvIHBrZ2NvbmZpZyBvdXRwdXQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKaW5kZXggYTE1NDAxYS4uOWQ2ZjVkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2NzM2MjM4NTFmYjcwYzBlNDNjZjc5Y2VmNjdiMzc1MTQzMmViZTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZGZiNDQ0NTBjYTlmZmZjMTU5NzdlOTVlYWRjYjcwNTRhYjYwYTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogU2FzY2hhIFNpbGJlIDx4LXlvMTdAc2Utc2lsYmUuZGU+CiBEYXRlOiBGcmksIDggSnVuIDIwMTggMTM6NTU6MTAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gUmVsb2NhdGUgdGhlIHJlcG9zaXRvcnkgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCkBAIC0yMSw3ICsyMSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCi1pbmRleCBjYTVkYzJiLi43YTRkMTdmIDEwMDY0NAoraW5kZXggYjc5NDhkNi4uMzlhMjU4NiAxMDA2NDQKIC0tLSBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYwogKysrIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCiBAQCAtMjEsNiArMjEsOCBAQApAQCAtNDIsNyArNDIsNyBAQAogIC8qKgogICAqIFNFQ1RJT046Z2lyZXBvc2l0b3J5CiAgICogQHNob3J0X2Rlc2NyaXB0aW9uOiBHT2JqZWN0IEludHJvc3BlY3Rpb24gcmVwb3NpdG9yeSBtYW5hZ2VyCi1AQCAtMjEyLDkgKzIxNiwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCitAQCAtMjE1LDkgKzIxOSwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCiAgICAgICAgICAgIGdfZnJlZSAoY3VzdG9tX2RpcnMpOwogICAgICAgICAgfQogIApAQCAtNjIsNyArNjIsNyBAQAogICAgICAgIHR5cGVsaWJfc2VhcmNoX3BhdGggPSBnX3NsaXN0X3ByZXBlbmQgKHR5cGVsaWJfc2VhcmNoX3BhdGgsIHR5cGVsaWJfZGlyKTsKICAKIGRpZmYgLS1naXQgYS9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKLWluZGV4IDFkN2FlZDYuLjU2MzdmYjUgMTAwNjQ0CitpbmRleCAyMDQ2NTlmLi4zZTYxZDMxIDEwMDY0NAogLS0tIGEvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkCiArKysgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKIEBAIC00NCw3ICs0NCw3IEBAIGdpcmVwb19pbnRlcm5hbHNfbGliID0gc3RhdGljX2xpYnJhcnkoJ2dpcmVwb3NpdG9yeS1pbnRlcm5hbHMnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ5NTUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gNjY1M2MyOGYwYjc2YWFkODZlMjZjNTEyYjAzZWZjZWM2ZDlkOWU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAzIEphbiAyMDE4IDE3OjAyOjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogYWRkIGEgLS1saWItZGlycy1lbnZ2YXIgb3B0aW9uCi0KLUJ5IGRlZmF1bHQgTERfTElCUkFSWV9QQVRIIGlzIHNldCB0byB0aGUgbGlzdCBvZiB0YXJnZXQgbGlicmFyeSBwYXRoczsKLXRoaXMgYnJlYWtzIGRvd24gaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnQsIGFzIHdlIG5lZWQgdG8gcnVuIGEKLW5hdGl2ZSBlbXVsYXRpb24gd3JhcHBlciByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0IGJpbmFyeSBpdHNlbGYuIFRoaXMgcGF0Y2gKLWFsbG93cyBleHBvcnRpbmcgdGhvc2UgcGF0aHMgdG8gYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUKLXdoaWNoIGNhbiBiZSBwaWNrZWQgdXAgYW5kIHVzZWQgYnkgdGhlIHdyYXBwZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9jY29tcGlsZXIucHkgICB8IDQgKystLQotIGdpc2Nhbm5lci9kdW1wZXIucHkgICAgICB8IDMgKystCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5Ci1pbmRleCAzMmM5Mjk2Li4zZmIyNjJiIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL2Njb21waWxlci5weQotKysrIGIvZ2lzY2FubmVyL2Njb21waWxlci5weQotQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAKLSAgICAgICAgICAgICBzZWxmLl9jZmxhZ3Nfbm9fZGVwcmVjYXRpb25fd2FybmluZ3MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAKLS0gICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocyk6Ci0rICAgIGRlZiBnZXRfaW50ZXJuYWxfbGlua19mbGFncyhzZWxmLCBhcmdzLCBsaWJ0b29sLCBsaWJyYXJpZXMsIGV4dHJhX2xpYnJhcmllcywgbGlicGF0aHMsIGxpYl9kaXJzX2VudnZhcik6Ci0gICAgICAgICAjIEFuICJpbnRlcm5hbCIgbGluayBpcyB3aGVyZSB0aGUgbGlicmFyeSB0byBiZSBpbnRyb3NwZWN0ZWQKLSAgICAgICAgICMgaXMgYmVpbmcgYnVpbHQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotIAotQEAgLTE4NCw3ICsxODQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMSUInLCAnUEFUSCddCi0gICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddCi0rICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIJ10gaWYgbm90IGxpYl9kaXJzX2VudnZhciBlbHNlIFtsaWJfZGlyc19lbnZ2YXJdCi0gICAgICAgICAgICAgIyBTZWFyY2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0Ci0gICAgICAgICAgICAgIyAoVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgbm9yIG5lZWRlZCBmb3IgVmlzdWFsIEMrKykKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLUwuJykKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvZHVtcGVyLnB5IGIvZ2lzY2FubmVyL2R1bXBlci5weQotaW5kZXggMmI4NTFhNS4uMTBhN2MzOSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9kdW1wZXIucHkKLSsrKyBiL2dpc2Nhbm5lci9kdW1wZXIucHkKLUBAIC0yNDQsNyArMjQ0LDggQEAgY2xhc3MgRHVtcENvbXBpbGVyKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dHJhX2xpYnJhcmllcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcnlfcGF0aHMpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGliX2RpcnNfZW52dmFyKQotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKHBrZ19jb25maWdfbGlicykKLSAKLSAgICAgICAgIGVsc2U6Ci1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCA5MDEzNTYyLi45YzlmZTEyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjYsNiArMTI2LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWxkZC13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxkZF93cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1saWItZGlycy1lbnZ2YXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGliX2RpcnNfZW52dmFyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB3cml0ZSBhIGxpc3Qgb2YgbGlicmFyeSBkaXJlY3RvcmllcyB0byAoZm9yIHJ1bm5pbmcgdGhlIHRyYW5zaWVudCBiaW5hcnkpLCBpbnN0ZWFkIG9mIHN0YW5kYXJkIExEX0xJQlJBUllfUEFUSCIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5NTFiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMmMzODQxODdjYzIyMTEzYzBjOWIxY2QyMzM5NDgxMThmN2MwODVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNSBNYXIgMjAxOSAxMzoyODo0OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZGlzYWJsZSB0ZXN0cyB3aGVuIGNyb3NzLWNvbXBpbGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9tZXJnZV9yZXF1ZXN0cy82NF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAyNTQ0ZmYzLi40YzE2ZmU1IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY4LDcgKzE2OCw5IEBAIGlmIGdldF9vcHRpb24oJ2VuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnKSA9PSB0cnVlCi0gZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotLXN1YmRpcigndGVzdHMnKQotK2lmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpCi0rICAgIHN1YmRpcigndGVzdHMnKQotK2VuZGlmCi0gCi0gaW5zdGFsbF9kYXRhKCdNYWtlZmlsZS5pbnRyb3NwZWN0aW9uJywgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoZ2V0X29wdGlvbignZGF0YWRpcicpLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCcpKQotIGluc3RhbGxfZGF0YSgnbTQvaW50cm9zcGVjdGlvbi5tNCcsIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2FjbG9jYWwnKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTU0ZGNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDVmOTg1ZmQ4YTI0NzY0Y2NiMzhhZjYzMzVkNDU4NGQ3ZTMzZmMzYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTg6MjY6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgLS11c2UtYmluYXJ5LXdyYXBwZXIgb3B0aW9uCi0KLVdpdGggdGhpcyBvcHRpb24sIGdpc2Nhbm5lciB3aWxsIHVzZSBhIHdyYXBwZXIgZXhlY3V0YWJsZSB0byBydW4KLWJpbmFyaWVzIGl0J3MgcHJvZHVjaW5nLCBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4gVGhpcwotaXMgdXNlZnVsIHdoZW4gYmluYXJpZXMgYXJlIGNyb3NzLWNvbXBpbGVkIGFuZCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5LAotYnV0IHRoZXkgY2FuIGJlIHJ1biB1c2luZyBmb3IgZXhhbXBsZSBRRU1VIGVtdWxhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggYzAwNGZiMS4uMGI2YTJkMiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTIwLDYgKzEyMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0iLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0icHJvZ3JhbSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icHJvZ3JhbSB0byBleGVjdXRlIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1iaW5hcnktd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJ3cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBmb3IgcnVubmluZyBwcm9ncmFtcyAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQotQEAgLTQxNyw2ICs0MjAsMTcgQEAgZGVmIGNyZWF0ZV9iaW5hcnkodHJhbnNmb3JtZXIsIG9wdGlvbnMsIGFyZ3MpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZHVtcF9wYXJzZXIuZ2V0X2Vycm9yX3F1YXJrX2Z1bmN0aW9ucygpKQotIAotICAgICBzaGxpYnMgPSByZXNvbHZlX3NobGlicyhvcHRpb25zLCBiaW5hcnksIG9wdGlvbnMubGlicmFyaWVzKQotKyAgICBpZiBvcHRpb25zLndyYXBwZXI6Ci0rICAgICAgICAjIFRoZSB3cmFwcGVyIG5lZWRzIHRoZSBiaW5hcnkgaXRzZWxmLCBub3QgdGhlIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQsCi0rICAgICAgICAjIHNvIHdlIGNoZWNrIGlmIGxpYnRvb2wgaGFzIHNuZWFrZWQgdGhlIGJpbmFyeSBpbnRvIC5saWJzIHN1YmRpcmVjdG9yeQotKyAgICAgICAgIyBhbmQgYWRqdXN0IHRoZSBwYXRoIGFjY29yZGluZ2x5Ci0rICAgICAgICBpbXBvcnQgb3MucGF0aAotKyAgICAgICAgZGlyX25hbWUsIGJpbmFyeV9uYW1lICA9IG9zLnBhdGguc3BsaXQoYmluYXJ5LmFyZ3NbMF0pCi0rICAgICAgICBsaWJ0b29sX2JpbmFyeSA9IG9zLnBhdGguam9pbihkaXJfbmFtZSwgJy5saWJzJywgYmluYXJ5X25hbWUpCi0rICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaWJ0b29sX2JpbmFyeSk6Ci0rICAgICAgICAgICAgYmluYXJ5LmFyZ3NbMF0gPSBsaWJ0b29sX2JpbmFyeQotKwkjIFRoZW4gcHJlcGVuZCB0aGUgd3JhcHBlciB0byB0aGUgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUKLSsgICAgICAgIGJpbmFyeS5hcmdzID0gW29wdGlvbnMud3JhcHBlcl0gKyBiaW5hcnkuYXJncwotICAgICBnZHVtcF9wYXJzZXIuc2V0X2ludHJvc3BlY3Rpb25fYmluYXJ5KGJpbmFyeSkKLSAgICAgZ2R1bXBfcGFyc2VyLnBhcnNlKCkKLSAgICAgcmV0dXJuIHNobGlicwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTI2NGVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gY2JhNzgwNzg4OGE0YTFmMWQ2MzBkMTZjNTFjODk4NTkyMDkzMzRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAxNjoyODo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tdXNlLWxkZC13cmFwcGVyIG9wdGlvbgotCi1UaGlzIGlzIHVzZWZ1bCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50cyB3aGVyZSBzeXN0ZW0ncyBsZGQKLWNvbW1hbmQgZG9lcyBub3Qgd29yayBvbiBiaW5hcmllcyBidWlsdCBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IGluIG9lLWNvcmVdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSBnaXNjYW5uZXIvc2hsaWJzLnB5ICAgICAgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCAwYjZhMmQyLi45MDEzNTYyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjMsNiArMTIzLDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2hsaWJzLnB5IGIvZ2lzY2FubmVyL3NobGlicy5weQotaW5kZXggMmM2MWYyZi4uZDY3ZGY5NSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zaGxpYnMucHkKLSsrKyBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLUBAIC05Niw3ICs5Niw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6Ci0gICAgICAgICAgICAgYXJncy5leHRlbmQobGlidG9vbCkKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1tb2RlPWV4ZWN1dGUnKQotICAgICAgICAgcGxhdGZvcm1fc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKLS0gICAgICAgIGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKLSsgICAgICAgIGlmIG9wdGlvbnMubGRkX3dyYXBwZXI6Ci0rICAgICAgICAgICAgYXJncy5leHRlbmQoW29wdGlvbnMubGRkX3dyYXBwZXIsIGJpbmFyeS5hcmdzWzBdXSkKLSsgICAgICAgIGVsaWYgcGxhdGZvcm1fc3lzdGVtID09ICdEYXJ3aW4nOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmOGRhNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNzQwZDkxMTUxZmZlNTc2ZTBjMDg1MTNhZjlkN2JjODEzM2ViOWRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDE4OjMwOjM1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgotIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLVRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0cyB0aGUgbG9jYXRpb24gb2Ygc3lzcm9vdCBkaXJlY3RvcnkgaW4gY3Jvc3MtY29tcGlsYXRpb24KLWVudmlyb25tZW50czsgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBwcmVmaXggd2lsbCBiZSBlbXB0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIG00L2ludHJvc3BlY3Rpb24ubTQgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L2ludHJvc3BlY3Rpb24ubTQgYi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCBkODljM2Q5Li5iNTYyMjY2IDEwMDY0NAotLS0tIGEvbTQvaW50cm9zcGVjdGlvbi5tNAotKysrIGIvbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU2LDE0ICs1NiwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTczOWNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotREVTQ1JJUFRJT04gPSAiR09iamVjdCBJbnRyb3NwZWN0aW9uIGlzIGEgcHJvamVjdCBmb3IgcHJvdmlkaW5nIG1hY2hpbmUgXAotcmVhZGFibGUgaW50cm9zcGVjdGlvbiBkYXRhIG9mIHRoZSBBUEkgb2YgQyBsaWJyYXJpZXMuIFRoaXMgaW50cm9zcGVjdGlvbiBcCi1kYXRhIGNhbiBiZSB1c2VkIGluIHNldmVyYWwgZGlmZmVyZW50IHVzZSBjYXNlcywgZm9yIGV4YW1wbGUgYXV0b21hdGljIGNvZGUgXAotZ2VuZXJhdGlvbiBmb3IgYmluZGluZ3MsIEFQSSB2ZXJpZmljYXRpb24gYW5kIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2lzc3VlcyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0MzRlODEyOGE2OGJlZGQ1OWI4MGIyYWMxZWIxYzRhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNzI3OGVhYjM3MDRlNDIyMzRiNjA4MGI4Y2YyNDFmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWVlN2VkMjU3ZmRiYzAwODcwMmJkZmYwZmYzZTc4YTY2MGU3ZTYwMmVmYThmMjExZGM4OWI5ZDFlN2Q5MGEyIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG11bHRpbGliX3NjcmlwdAotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2ctaXItYW5ub3RhdGlvbi10b29sICR7UE59OiR7YmluZGlyfS9nLWlyLXNjYW5uZXIiCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdXRvY29uZi1hcmNoaXZlIgotCi0jIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCi0jIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KLSMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgotIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKLSMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgotREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgotCi0jIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKLWV4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCi1leHBvcnQgQgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi1EZG9jdG9vbD10cnVlLC1EZG9jdG9vbD1mYWxzZSxweXRob24zLW1ha28sIgotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FTUVTT05fY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgLURlbmFibGUtaG9zdC1naT10cnVlIFwKLSAgICAtRGVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAtRGVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKLSAgICAtRHBrZ2NvbmZpZy1zeXNyb290LXBhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT10cnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT1mYWxzZScsIGQpfSBcCi0gICAgJHtAJy1EZ2lyX2Rpcl9wcmVmaXg9JHtsaWJkaXJ9JyBpZiBkLmdldFZhcignTVVMVElMSUJTJykgZWxzZSAnJ30gXAotIgotCi0jIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCi0jIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgotcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgewotICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgotICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeQotICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi1leHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotZy1pci1zY2FubmVyIC0tbGliLWRpcnMtZW52dmFyPUdJUl9FWFRSQV9MSUJTX1BBVEggLS11c2UtYmluYXJ5LXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIC0tdXNlLWxkZC13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfREFUQURJUn0vZ2lyLTEuMCAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0xJQkRJUn0vZ2lyLTEuMCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItY29tcGlsZXIsIHdoaWNoIHJ1bnMgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIGl0IHRocm91Z2ggcWVtdS4KLSAgICAgICAgIyBnLWlyLWNvbXBpbGVyIHdyaXRlcyBvdXQgdGhlIHJhdyBjb250ZW50IG9mIGEgQyBzdHJ1Y3QgdG8gZGlzaywgYW5kIHRoZXJlZm9yZSBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7U1RBR0lOR19CSU5ESVJ9L2ctaXItY29tcGlsZXIgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQsIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBhIGJpbmFyeSBpcyBidWlsdAotICAgICAgICAjIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotcHJlbGluay1ydGxkIC0tcm9vdD0kU1RBR0lOR19ESVJfSE9TVCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKLQotICAgICAgICAjIEFsc28gdHdlYWsgdGhlIHRhcmdldCBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCi0gICAgICAgICMgbmF0aXZlIHZlcnNpb24gb2YgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11Ci0jIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcwotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0Ci0gICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYwotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19Ci0KLSMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgotZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKLQotIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgotCi0jIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQotIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyICR7bGliZGlyfS9naXItKi8qLmdpciIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcGlja2xlIHB5dGhvbjMteG1sIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjY0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmYjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiCkBAIC0wLDAgKzEsMjAyIEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0RFU0NSSVBUSU9OID0gIkdPYmplY3QgSW50cm9zcGVjdGlvbiBpcyBhIHByb2plY3QgZm9yIHByb3ZpZGluZyBtYWNoaW5lIFwKK3JlYWRhYmxlIGludHJvc3BlY3Rpb24gZGF0YSBvZiB0aGUgQVBJIG9mIEMgbGlicmFyaWVzLiBUaGlzIGludHJvc3BlY3Rpb24gXAorZGF0YSBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIGRpZmZlcmVudCB1c2UgY2FzZXMsIGZvciBleGFtcGxlIGF1dG9tYXRpYyBjb2RlIFwKK2dlbmVyYXRpb24gZm9yIGJpbmRpbmdzLCBBUEkgdmVyaWZpY2F0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9pc3N1ZXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDM0ZTgxMjhhNjhiZWRkNTliODBiMmFjMWViMWM0YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjcgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzQxOWRmZDA4NmVmY2Y4Mzc2OGUwNTc5YWI2YWJkMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODBiZWFlNjcyOGMxMzQ1MjE5MjZhZmZmZjliMmU5NzEyNTc0OWIzOGQzODc0NGRjOTAxZjQwMTBlZTNlN2ZhNyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2giCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtdWx0aWxpYl9zY3JpcHQKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9nLWlyLWFubm90YXRpb24tdG9vbCAke1BOfToke2JpbmRpcn0vZy1pci1zY2FubmVyIgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2NvbmYtYXJjaGl2ZSIKKworIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAorIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCisjIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KKyMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCisjIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KK0RFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItRGRvY3Rvb2w9ZW5hYmxlZCwtRGRvY3Rvb2w9ZGlzYWJsZWQscHl0aG9uMy1tYWtvLCIKKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRU1FU09OX2NsYXNzLXRhcmdldCA9ICIgXAorICAgIC1EZ2lfY3Jvc3NfdXNlX2hvc3RfZ2k9dHJ1ZSBcCisgICAgLURnaV9jcm9zc19iaW5hcnlfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCisgICAgLURnaV9jcm9zc19sZGRfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKKyAgICAtRGdpX2Nyb3NzX3BrZ2NvbmZpZ19zeXNyb290X3BhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EYnVpbGRfaW50cm9zcGVjdGlvbl9kYXRhPXRydWUnLCAnLURidWlsZF9pbnRyb3NwZWN0aW9uX2RhdGE9ZmFsc2UnLCBkKX0gXAorICAgICR7QCctRGdpcl9kaXJfcHJlZml4PSR7bGliZGlyfScgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IFwKKyIKKworIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcworIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKK3B5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKKyAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0CisgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KKyAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXFwkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkKKyAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKK2ctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKK30KKworIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQorIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCitnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAorICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKwlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQorCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAorCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0CisJZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWNobW9kIDc1NSAkZGVzdAorfQorCisjIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKK2dpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciAke2xpYmRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXBpY2tsZSBweXRob24zLXhtbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVhNTc4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCi1ERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKLUdTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTc1OWVmNTNmYjJlNTNmYzhkMTkxOTBlNThmMmMzMzIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyODhiMDQyNjBmNzA0MGIwZTAwNGE4ZDU5Yzc3M2NmYjRlMzJkZjRmMWI0YTBmOWQ3MDVjNTFhZmNjYzk1ZWFkIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCitERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKK0dTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjk3ZGI5ZTZiMmFlMDU4ZjhhMGQwYjAyM2UzMmNlYWMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NjRhYjY4MzI4NjUzNjMyNDUzM2E1OGQ0ZTk1ZmM1N2Y4MWFkYWJhN2Q4ODBkZDBlYmJiY2VkNjNlOTYwZWE2IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCBlMWYxZTBkLi41ZDFmNTllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMzcsNyArMzcsNiBAQAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2xpYnRlc3QgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUteGluZXJhbWEgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCiAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIiIsICItLWRpc2FibGUtZ3RrLWRvYyIsIGQpfSBcCiAgICAgICAgICAgICAgICAgICIKIApAQCAtNTQsNiArNTMsOCBAQAogUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LCxsaWJnbCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1iYWNrZW5kLC0tZGlzYWJsZS13YXlsYW5kLWJhY2tlbmQsd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24gdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiB3YXlsYW5kLW5hdGl2ZSIKIFBBQ0tBR0VDT05GSUdbY3Vwc10gPSAiLS1lbmFibGUtY3VwcywtLWRpc2FibGUtY3VwcyxjdXBzIgorUEFDS0FHRUNPTkZJR1tjbG91ZHByaW50XSA9ICItLWVuYWJsZS1jbG91ZHByaW50LC0tZGlzYWJsZS1jbG91ZHByaW50LHJlc3QganNvbi1nbGliIgorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKIAogcHJlcGFyZV9ndGtfc2NyaXB0cygpIHsKICAgICBtdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0zLjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaAppbmRleCBjYzdlZGY3Li44MGRjMmQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2NTc1YWIwZjBlOGMxYmJhMDMzYWQxNjE2NTExZTM3YTJlYzk5NWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCiAKIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2woKSB3aWxsIGVuZCB1cCBjYWxsaW5nIGVwb3h5cwogR0xYIGFwaSB3aGljaCB3aWxsIGV4aXQoKSBpZiBsaWJHTC5zby4xIGlzIG5vdCBwcmVzZW50LiBXZSBkbyBub3QKQEAgLTIyLDEwICsyMiwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3NTdmZDdjLi4wYTQ4ODc1IDEwMDY0NAoraW5kZXggZTlmNTU4My4uYmQ2NTFiYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzUxLDYgKzM1MSwxMiBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorQEAgLTM0Niw2ICszNDYsMTIgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKICAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY2xvdWRwcm92aWRlcnNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgbGliY2xvdWRwcm92aWRlcnMgaW50ZWdyYXRpb25dKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3VkcHJvdmlkZXJzX3NldD15ZXNdKQpAQCAtMzYsOCArMzYsOCBAQAogKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQogK10pCiAgCi0gaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgotICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgorIEFDX0FSR19FTkFCTEUocHJvZmlsZXIsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGVyXSwKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCiBpbmRleCA4MTQ3OWQ4Li4zYzhjNWMwIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKQEAgLTU1LDYgKzU1LDMgQEAKICB9CiAgCiAgZ2ludAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDg1MmRjOWQuLjM5OGM5YmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQxMWI0MWE3ZmYwMjM0ZjM4MzJkNmFhYmRmNDk4ODA3ZDE0NjNjMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY4M2ZjZjE5OTFhZmFkNmQ5YzE1NTQ2YjJjY2Q3NzVkYWQ0ZTMxNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNToxMTozOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBBZGQgLS1kaXNhYmxlLW9wZW5nbCBjb25maWd1cmUgb3B0aW9uCkBAIC0zNywyMCArMzcsMjAgQEAKICBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgICAgICAgICAgfCAgMiArCiAgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQogIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysKLSBndGsvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQorIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKy0KICBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysKICB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tCiAgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKwotIDIxIGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKyAyMSBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM0NzMzYi4uMThhZTY2YyAxMDA2NDQKK2luZGV4IGJkNjUxYmIuLmI0YzA2MWYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1Miw2ICszNTIsMTUgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKK0BAIC0zNDYsNiArMzQ2LDE1IEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCiAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKQEAgLTY2LDIxICs2NiwyMSBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNzAsNyArMTM3OSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzQ1LDcgKzEzNTQsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyBlcG94eSA+PSBlcG94eV9yZXF1aXJlZF92ZXJzaW9uICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKICAKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHREtfREVQLCAkR0RLX1BBQ0tBR0VTICRHREtfUFJJVkFURV9QQUNLQUdFUykKICBHREtfREVQX0xJQlM9IiRHREtfRVhUUkFfTElCUyAkR0RLX0RFUF9MSUJTICRNQVRIX0xJQiIKLUBAIC0xNDA0LDcgKzE0MTMsNyBAQCBmaQorQEAgLTEzNzksNyArMTM4OCw3IEBAIGZpCiAgUEtHX0NIRUNLX01PRFVMRVMoQVRLLCAkQVRLX1BBQ0tBR0VTKQogIAogIEdUS19QQUNLQUdFUz0iYXRrID49IGF0a19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGdkay1waXhidWYtMi4wID49IGdka19waXhidWZfcmVxdWlyZWRfdmVyc2lvbiBnaW8tMi4wID49IGdsaWJfcmVxdWlyZWRfdmVyc2lvbiIKLS1HVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCistR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCiAgaWYgdGVzdCAieCRlbmFibGVfeDExX2JhY2tlbmQiID0geHllcyAtbyAieCRlbmFibGVfd2F5bGFuZF9iYWNrZW5kIiA9IHh5ZXM7IHRoZW4KICAgIEdUS19QUklWQVRFX1BBQ0tBR0VTPSIkR1RLX1BSSVZBVEVfUEFDS0FHRVMgcGFuZ29mdDIiCiAgZmkKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgcmV0dXJuIFRSVUU7CiAgfQogZGlmZiAtLWdpdCBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0gYi9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCi1pbmRleCA2YTZkNzBmLi41Y2RmMzEyIDEwMDY0NAoraW5kZXggYmVjNDNlMy4uMTg5ZThmYyAxMDA2NDQKIC0tLSBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KICsrKyBiL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KIEBAIC05LDEzICs5LDE4IEBAIEFNX0NQUEZMQUdTID0gXApAQCAtMjEwLDcgKzIxMCw3IEBACiAgCiAgICByZXR1cm4gaW5mbzsKIGRpZmYgLS1naXQgYS9nZGsvTWFrZWZpbGUuYW0gYi9nZGsvTWFrZWZpbGUuYW0KLWluZGV4IDY4OWVlNTIuLmQ2YjRlNzAgMTAwNjQ0CitpbmRleCA0NzlkNmExLi43ZWRiZWU4IDEwMDY0NAogLS0tIGEvZ2RrL01ha2VmaWxlLmFtCiArKysgYi9nZGsvTWFrZWZpbGUuYW0KIEBAIC0yNzQsNyArMjc0LDYgQEAgeDExX2ludHJvc3BlY3Rpb25fZmlsZXMgPSAJCVwKQEAgLTI0MywxMCArMjQzLDEwIEBACiAgR2RrWDExXzNfMF9naXJfU0NBTk5FUkZMQUdTID0gCQlcCiAgCS0taWRlbnRpZmllci1wcmVmaXg9R2RrCQlcCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka2Rpc3BsYXkuYyBiL2dkay9nZGtkaXNwbGF5LmMKLWluZGV4IDA2ZDQxODcuLjgzMjcxMWMgMTAwNjQ0CitpbmRleCAyNDBjOTlmLi45ZWI0OWJmIDEwMDY0NAogLS0tIGEvZ2RrL2dka2Rpc3BsYXkuYwogKysrIGIvZ2RrL2dka2Rpc3BsYXkuYwotQEAgLTI0MTYsNyArMjQxNiw5IEBAIGdib29sZWFuCitAQCAtMjQxOSw3ICsyNDE5LDkgQEAgZ2Jvb2xlYW4KICBnZGtfZGlzcGxheV9tYWtlX2dsX2NvbnRleHRfY3VycmVudCAoR2RrRGlzcGxheSAgICpkaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtHTENvbnRleHQgKmNvbnRleHQpCiAgewpAQCAtMzgwLDcgKzM4MCw3IEBACiAgCiAgLyoqCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka3dpbmRvdy5jIGIvZ2RrL2dka3dpbmRvdy5jCi1pbmRleCAxNDE2NDA5Li5lM2I1NjMwIDEwMDY0NAoraW5kZXggNmFlMGY4Ni4uNGU0OGEyYSAxMDA2NDQKIC0tLSBhL2dkay9nZGt3aW5kb3cuYwogKysrIGIvZ2RrL2dka3dpbmRvdy5jCiBAQCAtNDUsNyArNDUsOSBAQApAQCAtMzkzLDcgKzM5Myw3IEBACiAgCiAgLyogZm9yIHRoZSB1c2Ugb2Ygcm91bmQoKSAqLwogICNpbmNsdWRlICJmYWxsYmFjay1jODkuYyIKLUBAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAorQEAgLTI4NDQsNiArMjg0NiwxMyBAQCBnZGtfd2luZG93X2dldF9wYWludF9nbF9jb250ZXh0IChHZGtXaW5kb3cgICp3aW5kb3csCiAgewogICAgR0Vycm9yICppbnRlcm5hbF9lcnJvciA9IE5VTEw7CiAgCkBAIC00MDcsNyArNDA3LDcgQEAKICAgIGlmIChfZ2RrX2dsX2ZsYWdzICYgR0RLX0dMX0RJU0FCTEUpCiAgICAgIHsKICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR0RLX0dMX0VSUk9SLAotQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk3OSw2ICsyOTg4LDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CkBAIC00MTUsNyArNDE1LDcgQEAKICAJICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKGNvbnRleHQpOwogICAgICAgICAgICAvKiBXaXRoIGdsIHdlIGFsd2F5cyBuZWVkIGEgc3VyZmFjZSB0byBjb21iaW5lIHRoZSBnbAogICAgICAgICAgICAgICBkcmF3aW5nIHdpdGggdGhlIG5hdGl2ZSBkcmF3aW5nLiAqLwotQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk5Myw2ICszMDAzLDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgZ2xCbGVuZEZ1bmMgKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7CiAgCiAgICAgICAgICAgIGdsVmlld3BvcnQgKDAsIDAsIHd3LCB3aCk7CkBAIC00MjMsNyArNDIzLDcgQEAKICAgICAgICAgIH0KICAgICAgfQogIAotQEAgLTMwMzQsNiArMzA0NSw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDU2LDYgKzMwNjcsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgCiAgICAgICAgICAgIGdka19nbF9jb250ZXh0X21ha2VfY3VycmVudCAod2luZG93LT5nbF9wYWludF9jb250ZXh0KTsKICAKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgICAgICAgICBpZiAoIWNhaXJvX3JlZ2lvbl9pc19lbXB0eSAob3BhcXVlX3JlZ2lvbikpCiAgICAgICAgICAgICAgZ2RrX2dsX3RleHR1cmVfZnJvbV9zdXJmYWNlICh3aW5kb3ctPmN1cnJlbnRfcGFpbnQuc3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYXF1ZV9yZWdpb24pOwotQEAgLTMwNDQsNiArMzA1Niw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDY2LDYgKzMwNzgsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+Y3VycmVudF9wYWludC5uZWVkX2JsZW5kX3JlZ2lvbik7CiAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAgICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveSAob3BhcXVlX3JlZ2lvbik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9NYWtlZmlsZS5hbSBiL2dkay94MTEvTWFrZWZpbGUuYW0KLWluZGV4IDYyODlmM2EuLmNiYmFjNzkgMTAwNjQ0CitpbmRleCAzMmIxZjI0Li42MzUyMzEzIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9NYWtlZmlsZS5hbQogKysrIGIvZ2RrL3gxMS9NYWtlZmlsZS5hbQogQEAgLTQwLDggKzQwLDYgQEAgbGliZ2RrX3gxMV9sYV9TT1VSQ0VTID0gCVwKQEAgLTQ5NCw3ICs0OTQsNyBAQAogIAlnZGt4MTFrZXlzLmgJCVwKICAJZ2RreDExbW9uaXRvci5oCQlcCiAgCWdka3gxMXByb3BlcnR5LmgJXAotQEAgLTg3LDkgKzEwMiwxNiBAQCBsaWJnZGt4MTFpbmNsdWRlX0hFQURFUlMgPSAJXAorQEAgLTg3LDEwICsxMDIsMTcgQEAgbGliZ2RreDExaW5jbHVkZV9IRUFERVJTID0gCVwKICAJZ2RreDExdmlzdWFsLmgJCVwKICAJZ2RreDExd2luZG93LmgKICAKQEAgLTUwNiwxMyArNTA2LDE0IEBACiAgIyBkb24ndCBzZWVtIHRvIGJlIGNvcnJlY3RseSBleHBhbmRlZCBmb3IgdGhlIGRpc3QgZmlsZXMuCiAgRVhUUkFfRElTVCArPSAJCQlcCiArCWdka3guaAkJCVwKLSAJZ2Rrc2V0dGluZ3MuYworIAlnZGtzZXR0aW5ncy5jCVwKKyAJbWVzb24uYnVpbGQKICAKICtNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IGdka3guaAogKwogIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCi1pbmRleCA1Yjk1MTk2Li45YTJmMmEyIDEwMDY0NAoraW5kZXggODE3OTQ0ZS4uZTdhMjk0NyAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogKysrIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCiBAQCAtMzcsNyArMzcsOSBAQApAQCAtNTIzLDkgKzUyNCw5IEBACiAgI2luY2x1ZGUgImdka2dsY29udGV4dC14MTEuaCIKICsjZW5kaWYKICAjaW5jbHVkZSAiZ2RrLXByaXZhdGUuaCIKKyAjaW5jbHVkZSAiZ2RrcHJvZmlsZXJwcml2YXRlLmgiCiAgCi0gI2luY2x1ZGUgPGdsaWIuaD4KLUBAIC0zMTg0LDcgKzMxODYsOSBAQCBnZGtfeDExX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR2RrWDExRGlzcGxheUNsYXNzICogY2xhc3MpCitAQCAtMzE4OCw3ICszMTkwLDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQogICAgZGlzcGxheV9jbGFzcy0+dGV4dF9wcm9wZXJ0eV90b191dGY4X2xpc3QgPSBfZ2RrX3gxMV9kaXNwbGF5X3RleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0OwogICAgZGlzcGxheV9jbGFzcy0+dXRmOF90b19zdHJpbmdfdGFyZ2V0ID0gX2dka194MTFfZGlzcGxheV91dGY4X3RvX3N0cmluZ190YXJnZXQ7CiAgCkBAIC01MzcsMTAgKzUzOCwxMCBAQAogICAgZGlzcGxheV9jbGFzcy0+Z2V0X2RlZmF1bHRfc2VhdCA9IGdka194MTFfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0OwogIAogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jIGIvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKLWluZGV4IDI3MmNlY2QuLjJiYjM0YWMgMTAwNjQ0CitpbmRleCA4OTM5YWU5Li45MzFiZmY5IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKICsrKyBiL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jCi1AQCAtMTY3NSwzICsxNjc1LDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCitAQCAtMTcyMywzICsxNzIzLDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCiAgewogICAgcmV0dXJuIGdldF9uZXR3bV9jYXJkaW5hbF9wcm9wZXJ0eSAoc2NyZWVuLCAiX05FVF9DVVJSRU5UX0RFU0tUT1AiKTsKICB9CkBAIC01NTAsNyArNTUxLDcgQEAKICt2b2lkIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2wgKEdka1NjcmVlbiAqc2NyZWVuKSB7fQogKyNlbmRpZgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jIGIvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKLWluZGV4IGY5MmExNDYuLjg5ZjkwMGEgMTAwNjQ0CitpbmRleCAxZmU3YjkwLi5kMjNhMzQ3IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKICsrKyBiL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCiBAQCAtMzYsNyArMzYsOSBAQApAQCAtNTYzLDcgKzU2NCw3IEBACiAgI2luY2x1ZGUgImdka3ByaXZhdGUteDExLmgiCiAgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCiAgCi1AQCAtNTgzOSw3ICs1ODQxLDkgQEAgZ2RrX3dpbmRvd19pbXBsX3gxMV9jbGFzc19pbml0IChHZGtXaW5kb3dJbXBsWDExQ2xhc3MgKmtsYXNzKQorQEAgLTU4NjEsNyArNTg2Myw5IEBAIGdka193aW5kb3dfaW1wbF94MTFfY2xhc3NfaW5pdCAoR2RrV2luZG93SW1wbFgxMUNsYXNzICprbGFzcykKICAgIGltcGxfY2xhc3MtPnNldF9vcGFxdWVfcmVnaW9uID0gZ2RrX3gxMV93aW5kb3dfc2V0X29wYXF1ZV9yZWdpb247CiAgICBpbXBsX2NsYXNzLT5zZXRfc2hhZG93X3dpZHRoID0gZ2RrX3gxMV93aW5kb3dfc2V0X3NoYWRvd193aWR0aDsKICAgIGltcGxfY2xhc3MtPnNob3dfd2luZG93X21lbnUgPSBnZGtfeDExX3dpbmRvd19zaG93X3dpbmRvd19tZW51OwpAQCAtNjY3LDMxICs2NjgsMjMgQEAKICsKICsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IGU1NTZlOWQuLmNlOTEyZDcgMTAwNjQ0CitpbmRleCBlYWNhNDczLi45OTM1MmQxIDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDQxLDcgKzE0NDEsNiBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgotIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAotIAkmJiBybSAtZiB4Z2VuLWdwdGJjCi0gCi0tCi0gZ3RrdHlwZWZ1bmNzLmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zcmNkaXIpL2d0ay8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvYTExeS8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvZGVwcmVjYXRlZC8qLmggJCh0b3Bfc3JjZGlyKS9nZGsvKi5oIE1ha2VmaWxlCi0gCSQoQU1fVl9HRU4pIGV4cG9ydCBMQ19BTEw9QyA7IFwKLSAJICAoZWNobyAnI3VuZGVmIEdUS19DT01QSUxBVElPTicgJiYgZWNobyAnI2luY2x1ZGUgPGd0ay9ndGt4Lmg+JykgPiB4Z2VuLWd0ZnNyYy5jICYmIFwKLUBAIC0xNDQ5LDcgKzE0NDgsNyBAQCBndGt0eXBlZnVuY3MuYzogc3RhbXAtZ3RrdHlwZWJ1aWx0aW5zLmggc3RhbXAtZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5oICQodG9wX3NyYworQEAgLTE0NDksNyArMTQ0OSw3IEBAIGd0a3R5cGVmdW5jcy5pbmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zCiAgCSAgJHtDUFB9ICQoREVGUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSB4Z2VuLWd0ZnNyYy5jIHwgXAogIAkgICQoR1JFUCkgLW8gJ1xiZ1t0ZF1rX1thLXpBLVowLTlfXSpfZ2V0X3R5cGVcYicgfCBcCiAgCSAgc29ydCB8IHVuaXEgfCBcCiAtCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyB9JyA+PiB4Z2VuLWd0ZiBcCiArCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyBzL14uKmdka194MTFfZ2wuKiQkLyNpZmRlZiBIQVZFX09QRU5HTFxuJlxuI2VuZGlmLzsgfScgPj4geGdlbi1ndGYgXAogIAkmJiBjcCB4Z2VuLWd0ZiAkQCAmJiBybSAtZiB4Z2VuLWd0ZgotICQoc3JjZGlyKS9ndGt0ZXN0dXRpbHMuYzogZ3RrdHlwZWZ1bmNzLmMKKyAkKHNyY2RpcikvZ3RrdGVzdHV0aWxzLmM6IGd0a3R5cGVmdW5jcy5pbmMKICAKIGRpZmYgLS1naXQgYS9ndGsvZ3RrZ2xhcmVhLmMgYi9ndGsvZ3RrZ2xhcmVhLmMKLWluZGV4IGVhMzgzYzAuLmJiNGViNjQgMTAwNjQ0CitpbmRleCA5YTU2NDQzLi43ZGUwZGIyIDEwMDY0NAogLS0tIGEvZ3RrL2d0a2dsYXJlYS5jCiArKysgYi9ndGsvZ3RrZ2xhcmVhLmMKLUBAIC0yOCw3ICsyOCw5IEBACitAQCAtMjksNyArMjksOSBAQAogICNpbmNsdWRlICJndGtwcml2YXRlLmgiCiAgI2luY2x1ZGUgImd0a3JlbmRlci5oIgogIApAQCAtNzAxLDcgKzY5NCw3IEBACiAgCiAgLyoqCiAgICogU0VDVElPTjpndGtnbGFyZWEKLUBAIC0zNjgsOSArMzcwLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC0zNjksOSArMzcxLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKICBzdGF0aWMgdm9pZAogIGd0a19nbF9hcmVhX3Jlc2l6ZSAoR3RrR0xBcmVhICphcmVhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgewpAQCAtNzE0LDcgKzcwNyw3IEBACiAgLyoKICAgKiBDcmVhdGVzIGFsbCB0aGUgYnVmZmVyIG9iamVjdHMgbmVlZGVkIGZvciByZW5kZXJpbmcgdGhlIHNjZW5lCiAgICovCi1AQCAtNDgyLDYgKzQ4Nyw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC00ODMsNiArNDg4LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogIAogICAgcHJpdi0+bmVlZHNfcmVuZGVyID0gVFJVRTsKICB9CkBAIC03MjIsNyArNzE1LDcgQEAKICAKICAvKioKICAgKiBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVyczoKLUBAIC01MDAsNiArNTA2LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUwMSw2ICs1MDcsNyBAQCBndGtfZ2xfYXJlYV9hbGxvY2F0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgdm9pZAogIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgewpAQCAtNzMwLDcgKzcyMyw3IEBACiAgICBHdGtHTEFyZWFQcml2YXRlICpwcml2ID0gZ3RrX2dsX2FyZWFfZ2V0X2luc3RhbmNlX3ByaXZhdGUgKGFyZWEpOwogIAogICAgZ19yZXR1cm5faWZfZmFpbCAoR1RLX0lTX0dMX0FSRUEgKGFyZWEpKTsKLUBAIC01MzIsMTEgKzUzOSwxMyBAQCBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUzMywxMSArNTQwLDEzIEBAIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUIChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRU5ERVJCVUZGRVJfRVhULCBwcml2LT5kZXB0aF9zdGVuY2lsX2J1ZmZlcik7CiAgICAgIH0KQEAgLTc0NCw3ICs3MzcsNyBAQAogICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKICAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCi1AQCAtNTY4LDYgKzU3Nyw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCitAQCAtNTY5LDYgKzU3OCw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgKDEsICZwcml2LT5mcmFtZV9idWZmZXIpOwogICAgICAgIHByaXYtPmZyYW1lX2J1ZmZlciA9IDA7CiAgICAgIH0KQEAgLTc1Miw3ICs3NDUsNyBAQAogIH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTY3OCw2ICs2ODgsNyBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKK0BAIC02NzksNiArNjg5LDcgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICBHdGtHTEFyZWEgKmFyZWEgPSBHVEtfR0xfQVJFQSAod2lkZ2V0KTsKICAgIEd0a0dMQXJlYVByaXZhdGUgKnByaXYgPSBndGtfZ2xfYXJlYV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoYXJlYSk7CiAgICBnYm9vbGVhbiB1bnVzZWQ7CkBAIC03NjAsNyArNzUzLDcgQEAKICAgIGludCB3LCBoLCBzY2FsZTsKICAgIEdMZW51bSBzdGF0dXM7CiAgCi1AQCAtNjg5LDcgKzcwMCw2IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTY5MCw3ICs3MDEsNiBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodCAod2lkZ2V0KSk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CkBAIC03NjgsNyArNzYxLDcgQEAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCiAgICAgIHJldHVybiBGQUxTRTsKICAKLUBAIC03MzUsNiArNzQ1LDE0IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTczNiw2ICs3NDYsMTQgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICAgIH0KICAKICAgIHJldHVybiBUUlVFOwpAQCAtODMxLDcgKzgyNCw3IEBACiAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgKCkpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggN2M1Y2E5OS4uZTRhNDU0NiAxMDA2NDQKK2luZGV4IGVlMWU4YjUuLmU2YzY1MDIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC04MCw4ICs4MCw2IEBAIG5vaW5zdF9QUk9HUkFNUyA9ICAkKFRFU1RfUFJPR1MpCVwKQEAgLTg2NCwxMCArODU3LDEwIEBACiAgbm9pbnN0X1BST0dSQU1TICs9IHRlc3Rmb3JlaWduCiAgZW5kaWYKIGRpZmYgLS1naXQgYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyBiL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCi1pbmRleCAwYjNhNTE5Li4wN2IwOTZmIDEwMDY0NAoraW5kZXggMjQ1NDBlMy4uZTBmODYzYSAxMDA2NDQKIC0tLSBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCiArKysgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwotQEAgLTExNSw3ICsxMTUsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTE2LDcgKzExNiw5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX0NPUkUgJiYKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX1hJMiAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfRElTUExBWV9NQU5BR0VSICYmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszL3NvcnQtcmVzb3VyY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjg3MzcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApAQCAtMCwwICsxLDE5IEBACitJZiB0aGUgcmVzb3VyY2VzIGZpbGUgaXNuJ3Qgc29ydGVkIGluIHNvbWUgd2F5IHRoZW4gbGliZ2RrLnNvIHdpbGwgZGlmZmVyCitkZXBlbmRpbmcgb24gdGhlIGlub2RlIG9yZGVyIG9mIHRoZSByZXNvdXJjZSBmaWxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ2RrL01ha2VmaWxlLmFtIGIvZ2RrL01ha2VmaWxlLmFtCitpbmRleCBlMjViNTdiYTUwLi4yNmYyZDU3YzZlIDEwMDY0NAorLS0tIGEvZ2RrL01ha2VmaWxlLmFtCisrKysgYi9nZGsvTWFrZWZpbGUuYW0KK0BAIC00NjUsNyArNDY1LDcgQEAgc3RhbXAtZ2MtaDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKyAjIFJlc291cmNlcworICMKKyAKKy1nbHNsX3NvdXJjZXMgOj0gJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKQorK2dsc2xfc291cmNlcyA6PSAkKHNvcnQgJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKSkKKyAKKyBnZGsuZ3Jlc291cmNlLnhtbDogTWFrZWZpbGUuYW0KKyAJJChBTV9WX0dFTikgZWNobyAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4iID4gJEA7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjFmODdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjE0LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NvcnQtcmVzb3VyY2VzLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjJlMzkyMTJmYTBhODQwMTZhMzM5MmE5ZDI5MWZhZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM0ZDY5ZjkzYWI4ODRmZDgwYzZiOTUxMTViZmJjMTJkNTFlY2QwMjkxNzhiNmRhZDM2NzJmZGM1ZmY5MWU4OCIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc5YjE4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVlZGRlMDE4NTYyMzgxMTRkY2Y0ZGYzZWJjOTQyYTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2OTYyZGU5Yjk3NjhmZTljYTc4NWIwZTJmNDJjOGI5ZGIzODY4YTEyZmE5YjM1NmIxNjcyMzhkNzBhYzc5OSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgppbmRleCA1MGQ0ZDk5Ny4uYjUwOGU2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIKQEAgLTM2LDYgKzM2LDE3IEBACiAgICAgICAgIHNlZCAtaSAtZSAncyxeSkhfQ0hFQ0tfWE1MX0NBVEFMT0cuKiwsJyAke1N9L2NvbmZpZ3VyZS5hYwogfQogCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBjb25maWd1cmUgdmFsdWVzIGZvciBweXRob24zIGFuZCBwa2ctY29uZmlnIGVuY29kZWQgaW4gc2NyaXB0cworICAgIGZvciBmbiBpbiAke2JpbmRpcn0vZ3RrZG9jLWRlcHNjYW4gXAorICAgICAgICAke2JpbmRpcn0vZ3RrZG9jLW1raHRtbDIgXAorICAgICAgICAke2RhdGFkaXJ9L2d0ay1kb2MvcHl0aG9uL2d0a2RvYy9jb25maWcucHk7IGRvIAorICAgICAgICBzZWQgLWUgJ3MsJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9L3Vzci9iaW4vcGtnLWNvbmZpZywke2JpbmRpcn0vcGtnLWNvbmZpZywnIFwKKyAgICAgICAgICAgIC1lICdzLCR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMywke2JpbmRpcn0vcHl0aG9uMywnIFwKKyAgICAgICAgICAgIC1pICR7RH0kZm4KKyAgICBkb25lCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NnbWwiCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKIEZJTEVTXyR7UE59LWRvYyA9ICIiCkBAIC00OCwzICs1OSw0IEBACiAgICAgICAgICAgIC1lICJzfEdUS0RPQ19SVU4gPS4qfEdUS0RPQ19SVU4gPSBcJCh0b3BfYnVpbGRkaXIpL2d0a2RvYy1xZW11d3JhcHBlcnwiIFwKICAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS9ndGstZG9jL2RhdGEvZ3RrLWRvYyptYWtlCiB9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYgppbmRleCBhYWQ3ZWZmLi43NGUzNDMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCkBAIC03LDcgKzcsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwOGE0NDY4MDk5MTNmYzliM2M3MThmMGVhZWEwNDI2IgogCi1TUkNfVVJJID0gImh0dHA6Ly9pY29uLXRoZW1lLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSSA9ICJodHRwczovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiODRlZWM4ZDZmODEwMjQwYTA2OWM3MzFmMTg3MGI0NzQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE3NDg0MzUyMjcxZDE4Y2JiY2ZhYzM4NjhlYWI3OThkNjdmZmYxYjg0MDJlNzQwYmFhNmZmNDFkNTg4YTlkOCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmM3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBiZWE1MTU2Y2Q3ZTcxMjI3MTViMjZjNzY5YzM1OTI4MTQxYTFkYTJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxOCBOb3YgMjAxOSAxNDo0NjozNCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbm9uLXJlcHJvZHVjaWJsZSBTUkNESVIKKworUmVtb3ZlcyBTUkNESVIgYXMgdGhlIHByZWZpeCBmb3IgZmluZGluZyB0aGUgdGVzdCBmb250LiBUaGlzIHdvdWxkbid0Cit3b3JrIGFueXdheSwgc2luY2UgdGhhdCBwYXRoIGlzIG5vdCBwcmVzZW50IG9uIHRoZSB0YXJnZXQuCisKK1RoaXMgcGF0Y2ggaXMgc3BlY2lmaWMgdG8gT0UsIHNpbmNlIGl0IGFwcGVhcnMgdGhhdCB0aGlzIGVudGlyZSBtZXRob2QKK29mIHRlc3Rpbmcgd2FzIHJlbW92ZWQgd2hlbiB1cHN0cmVhbSB3YXMgcmUtd3JpdHRlbiBpbiBydXN0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWMsIG5vIGxvbmdlciBwcmVzZW50IHVwc3RyZWFtXQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgcnN2Zy1jYWlyby1kcmF3LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9yc3ZnLWNhaXJvLWRyYXcuYyBiL3JzdmctY2Fpcm8tZHJhdy5jCitpbmRleCBjYWE5MTA0Li5jZmI3ZWQyIDEwMDY0NAorLS0tIGEvcnN2Zy1jYWlyby1kcmF3LmMKKysrKyBiL3JzdmctY2Fpcm8tZHJhdy5jCitAQCAtMzk4LDcgKzM5OCw3IEBAIHNldF9mb250X29wdGlvbnNfZm9yX3Rlc3RpbmcgKFBhbmdvQ29udGV4dCAqY29udGV4dCkKKyBzdGF0aWMgdm9pZAorIGNyZWF0ZV9mb250X2NvbmZpZ19mb3JfdGVzdGluZyAoUnN2Z0NhaXJvUmVuZGVyICpyZW5kZXIpCisgeworLSAgICBjb25zdCBjaGFyICpmb250X3BhdGggPSBTUkNESVIgIi90ZXN0cy9yZXNvdXJjZXMvTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiOworKyAgICBjb25zdCBjaGFyICpmb250X3BhdGggPSAiL3Rlc3RzL3Jlc291cmNlcy9MaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7CisgCisgICAgIGlmIChyZW5kZXItPmZvbnRfY29uZmlnX2Zvcl90ZXN0aW5nICE9IE5VTEwpCisgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCmluZGV4IDdmOTgxMjcuLjZkZDA1MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiCkBAIC0yMCw2ICsyMCw3IEBACiAKIFNSQ19VUkkgKz0gImZpbGU6Ly9ndGstb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUF1dG8tZGV0ZWN0LUJzeW1ib2xpYy1maXhlcy1jb25maWd1cmUtb24tbWFjT1MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW5vbi1yZXByb2R1Y2libGUtU1JDRElSLnBhdGNoIFwKICIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNDk0OWQzMTNiMGM1ZDkxNjFhNWMyNTkxMDRhZjU1NjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGEyYTRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKLURFU0NSSVBUSU9OID0gIkEgR09iamVjdC1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIFNlY3JldCBTZXJ2aWNlIEFQSSBvZiBcCi10aGUgZnJlZWRlc2t0b3Aub3JnIHByb2plY3QsIGEgY3Jvc3MtZGVza3RvcCBlZmZvcnQgdG8gYWNjZXNzIHBhc3N3b3JkcywgXAotdG9rZW5zIGFuZCBvdGhlciB0eXBlcyBvZiBzZWNyZXRzLiBsaWJzZWNyZXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdyYXBwZXIgXAotZm9yIHRoZXNlIG1ldGhvZHMgc28gY29uc3VtZXJzIGRvIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBEQnVzIG1ldGhvZHMuIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNlY3JldC9pc3N1ZXMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcwotCi1ERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWE2NzMxMTljMDA1NzBkNjQzNGY4ZmQzNjM2ZjFlYjgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4NTgzZTEwMTc5NDU2YWUyYzgzMDc1ZDk1NDU1ZjE1NmRjMDhkYjYyNzhiMzJiZjRiZDYxODE5MzM1YTMwZTNhIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOC8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjUxMWFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjIwLjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJsaWJzZWNyZXQgaXMgYSBsaWJyYXJ5IGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIHBhc3N3b3JkcyBhbmQgb3RoZXIgc2VjcmV0cyIKK0RFU0NSSVBUSU9OID0gIkEgR09iamVjdC1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIFNlY3JldCBTZXJ2aWNlIEFQSSBvZiBcCit0aGUgZnJlZWRlc2t0b3Aub3JnIHByb2plY3QsIGEgY3Jvc3MtZGVza3RvcCBlZmZvcnQgdG8gYWNjZXNzIHBhc3N3b3JkcywgXAordG9rZW5zIGFuZCBvdGhlciB0eXBlcyBvZiBzZWNyZXRzLiBsaWJzZWNyZXQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdyYXBwZXIgXAorZm9yIHRoZXNlIG1ldGhvZHMgc28gY29uc3VtZXJzIGRvIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBEQnVzIG1ldGhvZHMuIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNlY3JldC9pc3N1ZXMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yM2MyYTVlMDEwNmI5OWQ3NTIzODk4NjU1OWJiNWZjNiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBtYW5wYWdlcworCitERVBFTkRTICs9ICJnbGliLTIuMCBsaWJnY3J5cHQgZ2V0dGV4dC1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDJkZDY2MGE4ZDUwMjA5OTMxN2JjOGFmOWYzMDMwMmUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1N2Y3M2U5NGVjNjI2M2ExN2EwNzdmYjgwOWNmOGNmNDI0NjM3YTg5N2E3ZjE1YjRlZWM0MmNlNGFlZjUyNDQ3IgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyB2YXBpZ2VuLm00IGJ1bmRsZWQgd2l0aCB0aGUgdGFyYmFsbCBkb2VzIG5vdCB5ZXQgaGF2ZSBvdXIgY3Jvc3MtY29tcGlsYXRpb24gZml4ZXMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHJtIC1mICR7U30vYnVpbGQvbTQvdmFwaWdlbi5tNAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiCmluZGV4IGUzZGUzZjYuLmI3NzJjMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTYuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIKQEAgLTQwLDcgKzQwLDggQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEgeGNiJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ29wZW5nbCcsICcnLCBkKX0iCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ29wZW5nbCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIHRyYWNlIgogCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXg9eWVzIC1lbmFibGUteGxpYiwtLXdpdGgteD1ubyAtLWRpc2FibGUteGxpYiwke1gxMURFUEVORFN9IgogUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLXhjYiwtLWRpc2FibGUteGNiLGxpYnhjYiIKQEAgLTQ5LDYgKzUwLDcgQEAKIFBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCiBQQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbdHJhY2VdID0gIi0tZW5hYmxlLXRyYWNlLC0tZGlzYWJsZS10cmFjZSIKIAogRVhUUkFfT0VDT05GICs9ICIgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1kaXNhYmxlLXNvbWUtZmxvYXRpbmctcG9pbnQnLCAnJywgZCl9IFwKQEAgLTY2LDYgKzY4LDggQEAKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1zcGhpbngqCiAJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLWZkcioKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tc3BoaW54KgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2JpbmRpcn0KKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9L2NhaXJvCiB9CiAKIFBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYwppbmRleCA1ZGM0NWViLi5lMGFjODE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYwpAQCAtMjQsMTEgKzI0LDExIEBACiAjIERpc2FibGUgcHJldHR5IG11Y2ggZXZlcnl0aGluZywgb3ZlcnJpZGUgaW4gcGxhdGZvcm0gc3BlY2lmaWMgc2V0IHVwCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1xdWFydHotYmFja2VuZAlcCiAJICAgICAJIC0tZGlzYWJsZS13aW4zMi1iYWNrZW5kCVwKLQkgICAgIAkgLS1kaXNhYmxlLWdkay1iYWNrZW5kCQlcCiAJICAgICAJIC0tZGlzYWJsZS1jZXgxMDAtYmFja2VuZAlcCiAJICAgICAJIC0tZGlzYWJsZS10c2xpYi1pbnB1dAkJXAogCSAgICAJIgogCitQQUNLQUdFQ09ORklHW2dka10gPSAiLS1lbmFibGUtZ2RrLWJhY2tlbmQsLS1kaXNhYmxlLWdkay1iYWNrZW5kLGd0ayszIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMS1iYWNrZW5kLC0tZGlzYWJsZS14MTEtYmFja2VuZCwke0VERVBFTkRTX1gxMX0iCiBQQUNLQUdFQ09ORklHW2dseF0gPSAiLCwke0VERVBFTkRTX1gxMX0gJHtFREVQRU5EU19HTFh9IgogUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbC1iYWNrZW5kLC0tZGlzYWJsZS1lZ2wtYmFja2VuZCwke0VERVBFTkRTX0VHTH0iCkBAIC0zNyw3ICszNyw3IEBACiBQQUNLQUdFQ09ORklHW3dheWxhbmQtY29tcG9zaXRvcl0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3Isd2F5bGFuZCIKIAogIyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGRpc3Ryb3MgbWlnaHQgd2FudCB0byBvdmVycmlkZQotUEFDS0FHRUNPTkZJRyA/Pz0gImVnbCBcCitQQUNLQUdFQ09ORklHID8/PSAiZWdsIGdkayBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ2x4IHgxMScsICcnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNkNmM1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL211c2wtaW9jdGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0NmMwZmQ2YzgyN2E4Y2I0ZDA0ZTA2N2JmMDRmYWI1NzlhYzQ3MTJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTggSnVuIDIwMTggMTU6MDc6MDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHMvbm91dmVhdS90aHJlYWRlZDogYWRhcHQgaW9jdGwgc2lnbmF0dXJlCi0KLVBPU0lYIHNheXMgaW9jdGwoKSBoYXMgdGhlIHNpZ25hdHVyZSAoaW50LCBpbnQsIC4uLikgYnV0IGdsaWJjIGhhcyBkZWNpZGVkIHRvCi11c2UgKGludCwgdW5zaWduZWQgbG9uZyBpbnQsIC4uLikgaW5zdGVhZC4KLQotVXNlIGEgI2lmZGVmIHRvIGFkYXB0IHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBhcyBhcHByb3ByaWF0ZS4KLS0tLQotIHRlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYwotaW5kZXggMzY2OWJjZDMuLmUxYzI3YzAxIDEwMDY0NAotLS0tIGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCi0rKysgYi90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKLUBAIC0zNiw3ICszNiwxMSBAQCBzdGF0aWMgaW50IGZhaWxlZDsKLSAKLSBzdGF0aWMgaW50IGltcG9ydF9mZDsKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0gaW50IGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCAuLi4pCi0rI2Vsc2UKLStpbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCwgLi4uKQotKyNlbmRpZgotIHsKLSAJdmFfbGlzdCB2YTsKLSAJaW50IHJldDsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1OTQyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC4xMDAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtaW9jdGwucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZjQ3YmM4N2UyODE5OGJhNTI3ZTZiNDRmZmRkNjJmNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc3Y2M4MjgxODZjOWNlZWMzZTU2YWUyMDJiNDNlZTk5ZWI5MzJiNGE4NzI1NTAzOGE4MGU4YTEwNjBkMGE1ZCIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgbWFucGFnZXMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmttcyBpbnRlbCByYWRlb24gYW1kZ3B1IG5vdXZlYXUgdm13Z2Z4IG9tYXAgZnJlZWRyZW5vIHZjNCBldG5hdml2IGluc3RhbGwtdGVzdC1wcm9ncmFtcyIKLVBBQ0tBR0VDT05GSUdbbGlia21zXSA9ICItRGxpYmttcz10cnVlLC1EbGlia21zPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpbnRlbF0gPSAiLURpbnRlbD10cnVlLC1EaW50ZWw9ZmFsc2UsbGlicGNpYWNjZXNzIgotUEFDS0FHRUNPTkZJR1tyYWRlb25dID0gIi1EcmFkZW9uPXRydWUsLURyYWRlb249ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2FtZGdwdV0gPSAiLURhbWRncHU9dHJ1ZSwtRGFtZGdwdT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbm91dmVhdV0gPSAiLURub3V2ZWF1PXRydWUsLURub3V2ZWF1PWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2bXdnZnhdID0gIi1Edm13Z2Z4PXRydWUsLUR2bXdnZng9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW29tYXBdID0gIi1Eb21hcD10cnVlLC1Eb21hcD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZXh5bm9zXSA9ICItRGV4eW5vcz10cnVlLC1EZXh5bm9zPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tmcmVlZHJlbm9dID0gIi1EZnJlZWRyZW5vPXRydWUsLURmcmVlZHJlbm89ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RlZ3JhXSA9ICItRHRlZ3JhPXRydWUsLUR0ZWdyYT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdmM0XSA9ICItRHZjND10cnVlLC1EdmM0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tldG5hdml2XSA9ICItRGV0bmF2aXY9dHJ1ZSwtRGV0bmF2aXY9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ZyZWVkcmVuby1rZ3NsXSA9ICItRGZyZWVkcmVuby1rZ3NsPXRydWUsLURmcmVlZHJlbm8ta2dzbD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EdmFsZ3JpbmQ9dHJ1ZSwtRHZhbGdyaW5kPWZhbHNlLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tpbnN0YWxsLXRlc3QtcHJvZ3JhbXNdID0gIi1EaW5zdGFsbC10ZXN0LXByb2dyYW1zPXRydWUsLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2NhaXJvLXRlc3RzXSA9ICItRGNhaXJvLXRlc3RzPXRydWUsLURjYWlyby10ZXN0cz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLUR1ZGV2PXRydWUsLUR1ZGV2PWZhbHNlLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbi1wYWdlcz10cnVlLC1EbWFuLXBhZ2VzPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCi0gICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1SUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCi1GSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgotRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKLUZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKLUZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgotRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCi1GSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKLUZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qICR7ZGF0YWRpcn0vJHtQTn0vYW1kZ3B1LmlkcyIKLUZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM1NjZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNmE2ZjFiODg5NjMyMTBiM2Q2MmFjZDczMTBhMWNjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGYzMWJhYThlNDk0NzM2MjQ4NjBiZDE2NmNlNjU0ZGMzNDk4NzNmN2E2YzdiMzMwNTk2NDI0OTMxNWM3OGE3IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID8/PSAibGlia21zIGludGVsIHJhZGVvbiBhbWRncHUgbm91dmVhdSB2bXdnZnggb21hcCBmcmVlZHJlbm8gdmM0IGV0bmF2aXYgaW5zdGFsbC10ZXN0LXByb2dyYW1zIgorUEFDS0FHRUNPTkZJR1tsaWJrbXNdID0gIi1EbGlia21zPXRydWUsLURsaWJrbXM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ludGVsXSA9ICItRGludGVsPXRydWUsLURpbnRlbD1mYWxzZSxsaWJwY2lhY2Nlc3MiCitQQUNLQUdFQ09ORklHW3JhZGVvbl0gPSAiLURyYWRlb249dHJ1ZSwtRHJhZGVvbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYW1kZ3B1XSA9ICItRGFtZGdwdT10cnVlLC1EYW1kZ3B1PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tub3V2ZWF1XSA9ICItRG5vdXZlYXU9dHJ1ZSwtRG5vdXZlYXU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLUR2bXdnZng9dHJ1ZSwtRHZtd2dmeD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb21hcF0gPSAiLURvbWFwPXRydWUsLURvbWFwPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tleHlub3NdID0gIi1EZXh5bm9zPXRydWUsLURleHlub3M9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ZyZWVkcmVub10gPSAiLURmcmVlZHJlbm89dHJ1ZSwtRGZyZWVkcmVubz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGVncmFdID0gIi1EdGVncmE9dHJ1ZSwtRHRlZ3JhPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YzRdID0gIi1EdmM0PXRydWUsLUR2YzQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V0bmF2aXZdID0gIi1EZXRuYXZpdj10cnVlLC1EZXRuYXZpdj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vLWtnc2xdID0gIi1EZnJlZWRyZW5vLWtnc2w9dHJ1ZSwtRGZyZWVkcmVuby1rZ3NsPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD10cnVlLC1EdmFsZ3JpbmQ9ZmFsc2UsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2luc3RhbGwtdGVzdC1wcm9ncmFtc10gPSAiLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9dHJ1ZSwtRGluc3RhbGwtdGVzdC1wcm9ncmFtcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY2Fpcm8tdGVzdHNdID0gIi1EY2Fpcm8tdGVzdHM9dHJ1ZSwtRGNhaXJvLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItRHVkZXY9dHJ1ZSwtRHVkZXY9ZmFsc2UsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuLXBhZ2VzPXRydWUsLURtYW4tcGFnZXM9ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKKyAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKK0ZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCitGSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgorRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgorRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCitGSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKK0ZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgorRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLiogJHtkYXRhZGlyfS8ke1BOfS9hbWRncHUuaWRzIgorRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiCmluZGV4IGIxNzlhMGUuLmQxYzA5MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuMTAuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIKQEAgLTI3LDcgKzI3LDcgQEAKIENPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCiBFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIgcGl4bWFwIgogCiBQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgogIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3LzAwMDEtRml4ZWQtY29tcGlsYXRpb24td2l0aC1jdXJyZW50LW1lc2EtdmVyc2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRmM2UyZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUZyb20gN2Y2NWEzNjg2NmY0ZTI0ZGQxNDQ2ZmUxYzlkMjE0MjRmMjhiY2FiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERldmUgPGRldmVlZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE0IE5vdiAyMDE4IDIxOjA3OjI5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGNvbXBpbGF0aW9uIHdpdGggY3VycmVudCBtZXNhIHZlcnNpb25zLgotCi1BcyB5b3UgY2FuIHNlZSBpbgotaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvdHJlZS9pbmNsdWRlL0dML2dsZXh0LmgKLW5vdyB0aGUgZmlsZSB1c2VzIF9fZ2xfZ2xleHRfaF8gaW5zdGVhZCBvZiBfX2dsZXh0X2hfCi1JdCdzIHByZWNpc2VseSBjYXVzZWQgYnkgY29tbWl0IGY3ZDQyZWU3ZDMxOTI1NjYwOGFkNjA3NzhmNjc4N2MxNDBiYWRhZGEKLQotQmFja29wcnQgbm90ZXM6IAotCi0qIFRoZSBvcmlnaW5hbCBwYXRjaCBhZGp1c3RzIGF1dG8vc3JjL2dsZXdfaGVhZC5oIG9ubHkKLSogaW5jbHVkZS9HTC9nbGV3LmggaXMgbm90IHBhcnQgb2YgZ2l0IHJlcG8gYW5kIGdldHMgY3JlYXRlZCBvbiB0YXJiYWxsCi0gIGNyZWF0aW9uCi0KLT0+IHBhdGNoIGluY2x1ZGUvR0wvZ2xldy5oIGVpdGhlciB0byBjYXVzZSB0aGUgZGVzaXJlZCBmaXgKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMV0KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWdlbHMtY29tL2dsZXcvY29tbWl0LzdmNjVhMzY4NjZmNGUyNGRkMTQ0NmZlMWM5ZDIxNDI0ZjI4YmNhYmQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KLS0tLQotIGF1dG8vc3JjL2dsZXdfaGVhZC5oIHwgMyArKy0KLSBpbmNsdWRlL0dML2dsZXcuaCAgICB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvL3NyYy9nbGV3X2hlYWQuaCBiL2F1dG8vc3JjL2dsZXdfaGVhZC5oCi1pbmRleCBjMTljZWZiLi44ZjMxM2Q5IDEwMDY0NAotLS0tIGEvYXV0by9zcmMvZ2xld19oZWFkLmgKLSsrKyBiL2F1dG8vc3JjL2dsZXdfaGVhZC5oCi1AQCAtMTQsNyArMTQsNyBAQAotICNpZiBkZWZpbmVkKF9fUkVHQUxfSF9fKQotICNlcnJvciBSZWdhbC5oIGluY2x1ZGVkIGJlZm9yZSBnbGV3LmgKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pCi0rI2lmIGRlZmluZWQoX19nbGV4dF9oXykgfHwgZGVmaW5lZChfX0dMRVhUX0hfKSB8fCBkZWZpbmVkKF9fZ2xfZ2xleHRfaF8pCi0gI2Vycm9yIGdsZXh0LmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fZ2xfQVRJX2hfKQotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIF9fWF9HTF9ICi0gI2RlZmluZSBfX2dsZXh0X2hfCi0gI2RlZmluZSBfX0dMRVhUX0hfCi0rI2RlZmluZSBfX2dsX2dsZXh0X2hfCi0gI2RlZmluZSBfX2dsX0FUSV9oXwotIAotICNpZiBkZWZpbmVkKF9XSU4zMikKLWRpZmYgLS1naXQgYS9pbmNsdWRlL0dML2dsZXcuaCBiL2luY2x1ZGUvR0wvZ2xldy5oCi1pbmRleCBiNWI2OTg3Li5hOWY5ZTRiIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9HTC9nbGV3LmgKLSsrKyBiL2luY2x1ZGUvR0wvZ2xldy5oCi1AQCAtOTMsNyArOTMsNyBAQAotICNpZiBkZWZpbmVkKF9fUkVHQUxfSF9fKQotICNlcnJvciBSZWdhbC5oIGluY2x1ZGVkIGJlZm9yZSBnbGV3LmgKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pCi0rI2lmIGRlZmluZWQoX19nbGV4dF9oXykgfHwgZGVmaW5lZChfX0dMRVhUX0hfKSB8fCBkZWZpbmVkKF9fZ2xfZ2xleHRfaF8pCi0gI2Vycm9yIGdsZXh0LmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fZ2xfQVRJX2hfKQotQEAgLTEwOSw2ICsxMDksNyBAQAotICNkZWZpbmUgX19YX0dMX0gKLSAjZGVmaW5lIF9fZ2xleHRfaF8KLSAjZGVmaW5lIF9fR0xFWFRfSF8KLSsjZGVmaW5lIF9fZ2xfZ2xleHRfaF8KLSAjZGVmaW5lIF9fZ2xfQVRJX2hfCi0gCi0gI2lmIGRlZmluZWQoX1dJTjMyKQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmY0MzQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJhYjEyMzMxMDMzZGRmYWE1MGRjMzkzNDUzNDM5ODAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkZTkxZTdlNjc2MzAzOWJjMTE5NDAwOTVjZDljN2Y4ODBiYWJhODIxOTZhNzc2NWY3MjdhYzA1YTk5M2M5NSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnb3BlbmdsJywgJ2VnbC1nbGVzMicsIGQpfSIKLQotIyBUaGUgb3BlbmdsIGFuZCBlZ2wtWFhYIG9wdGlvbnMgYXJlIGV4Y2x1c2l2ZSwgZW5hYmxlIG9ubHkgb25lLgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSIKLVBBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKLSMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KLSMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KLUVYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLSAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAotICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKLSAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAotICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIFBLR0RJUj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyciCi0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC5hbGwKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTQ4NDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGUgT3BlbkdMIEV4dGVuc2lvbiBXcmFuZ2xlciBMaWJyYXJ5IChHTEVXKSBpcyBhIGNyb3NzLXBsYXRmb3JtIG9wZW4tc291cmNlIEMvQysrIGV4dGVuc2lvbiBsb2FkaW5nIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dsZXcuc291cmNlZm9yZ2UubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD02NzU4NiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTJhYzI1MTU1OGRlNjg1YzZiOTQ3OGQ4OWJlMzE0OWMyIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2dsZXcvZ2xldy8ke1BWfS9nbGV3LSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1NzkxNjRiY2NhZWYwOWUzNmMwYWY3ZjRmZDVjN2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0ZmM4Mjg5M2NmYjAwMTA5NTc4ZDBhMWEyMzM3ZmI4Y2EzMzViM2NlY2NmOTdiOTdlNWNjN2YwOGU0MzUzZTEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dsZXcvZmlsZXMvZ2xldyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9nbGV3Lyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ29wZW5nbCcsICdlZ2wtZ2xlczInLCBkKX0iCisKKyMgVGhlIG9wZW5nbCBhbmQgZWdsLVhYWCBvcHRpb25zIGFyZSBleGNsdXNpdmUsIGVuYWJsZSBvbmx5IG9uZS4KK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICJTWVNURU09J2xpbnV4JywsdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJnbHUgbGlieGV4dCBsaWJ4aSBsaWJ4bXUsLCxlZ2wtZ2xlczIiCitQQUNLQUdFQ09ORklHW2VnbC1nbGVzMl0gPSAiU1lTVEVNPSdsaW51eC1lZ2wnIEdMRVdfTk9fR0xVPSctREdMRVdfTk9fR0xVJyBMREZMQUdTLkdMPSctbEVHTCAtbEdMRVN2MicsLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIsLCxvcGVuZ2wiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKyMgT3ZlcnJpZGUgU1lTVEVNICh2aWEgUEFDS0FHRUNPTkZJR19DT05GQVJHUykgdG8gYXZvaWQgY2FsbGluZyBjb25maWcuZ3Vlc3MsCisjIHdlJ3JlIGNyb3NzLWNvbXBpbGluZy4gUGFzcyBvdXIgQ0ZMQUdTIHZpYSBQT1BUIGFzIHRoYXQncyB0aGUgb3B0aW1pc2F0aW9uCisjIHZhcmlhYmxlIGFuZCBzYWZlbHkgb3ZlcndyaXR0ZW4uCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCisgICAgICAgICAgICAgICAgQ0M9JyR7Q0N9JyBMRD0nJHtDQ30nIFNUUklQPScnIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTLkVYVFJBPScke0xERkxBR1N9JyBcCisgICAgICAgICAgICAgICAgUE9QVD0nJHtDRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgR0xFV19QUkVGSVg9JyR7cHJlZml4fScgQklORElSPScke2JpbmRpcn0nIFwKKyAgICAgICAgICAgICAgICBMSUJESVI9JyR7bGliZGlyfScgSU5DRElSPScke2luY2x1ZGVkaXJ9L0dMJyBQS0dESVI9JyR7bGliZGlyfS9wa2djb25maWcnIgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwuYWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjg1NGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PTdlYTk3ZGM4M2IwZjU5MDUyZWU4MzdlNjFlZjBlMDhmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJqcGVnLXR1cmJvLWZpeC1wYWNrYWdlX3FhLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmQwN2ZkZGYyNmY5ZGVmN2JhYjAyNzM5ZWI2NTUxMTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDI0NmRlNTAwNTQ0ZDRlZTQwOGVlNTcwNDhhYTRhYWRjNmYxNjVmYzE3ZjE0MWRhODc2NjlmMjBlZDMyNDFiNyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotUEU9ICIxIgotCi0jIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKLVBST1ZJREVTID0gImpwZWciCi1SUFJPVklERVNfJHtQTn0gKz0gImpwZWciCi1SUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi0jIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfU0lNRD1GYWxzZSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgIiIsIGQpfSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNSVBTUEtHU0ZYX0ZQVSIsICItbmYiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgotCi0jIFByb3ZpZGUgYSB3b3JrYXJvdW5kIGlmIEFsdGl2ZWMgdW5pdCBpcyBub3QgcHJlc2VudCBpbiBQUEMKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItRFdJVEhfU0lNRD1GYWxzZSIsIGQpfSIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgotCi1ERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCi1ERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY1ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKLQotREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgotRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKLQotREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCi1GSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0OWZkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9N2VhOTdkYzgzYjBmNTkwNTJlZTgzN2U2MWVmMGUwOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCisiCitERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDFkOWUwYzI4YzI3YmMwZGU5ZjRlMmU4ZmY0OTg1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzM2RkODU0N2VmZDU1NDM2MzllODkwZWZiZjJlZjUyZDVhMjFkZjgxZmFmNDFiYjk0MDY1N2FmOTE2YTIzNDA2IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitQRT0gIjEiCisKKyMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZworUFJPVklERVMgPSAianBlZyIKK1JQUk9WSURFU18ke1BOfSArPSAianBlZyIKK1JSRVBMQUNFU18ke1BOfSArPSAianBlZyIKK1JDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK2V4cG9ydCBOQVNNRU5WID0gIi0tZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9PS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCisKKyMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgorCisjIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0CitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgorCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCisKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKKworUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgorCitERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCitGSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgorCitERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKK0ZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IDgyNzIwMDQuLmExYTI5NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8va21zY3ViZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PThiMzA5ZDRlZTY3YjczMTVmZjczODEyNzBkZDYzMWZiIgogCi1TUkNSRVYgPSAiZjYzMmIyM2E1MjhlZDZiNGUxZmRkZDc3NGRiMDA1YzMwYWI2NTU2OCIKK1NSQ1JFViA9ICI3NmJiNTdkNTM5Y2I0M2QyNjdlNTYxMDI0YzM0ZTAzMWJmMzUxZTA0IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL21lc2Eva21zY3ViZTticmFuY2g9bWFzdGVyO3Byb3RvY29sPWh0dHBzIFwKICAgICBmaWxlOi8vZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2giCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9maWxlcy8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9maWxlcy8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI2Mjk0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDZmMTVjYzI4ZDE3Y2ZkZDg2ZjU5NzRmMDZhZDk3YjhhZmVkZDU2MjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI1IE9jdCAyMDE5IDExOjA5OjM0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc3BhdGNoX2NvbW1vbi5oOiBkZWZpbmUgYWxzbyBFR0xfTk9fWDExCisKK01FU0FfRUdMX05PX1gxMV9IRUFERVJTIHdhcyByZW5hbWVkIHRvIEVHTF9OT19YMTEgaW46CitodHRwczovL2dpdGh1Yi5jb20vbWVzYTNkL21lc2EvY29tbWl0LzYyMDJhMTNiNzFlMThkYzMxYmE3ZTJmNGVhOTE1YjY3ZWFjYzFkZGIKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvZGlzcGF0Y2hfY29tbW9uLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9kaXNwYXRjaF9jb21tb24uaCBiL3NyYy9kaXNwYXRjaF9jb21tb24uaAoraW5kZXggZGNiM2EzNS4uYzIwNjI1MyAxMDA2NDQKKy0tLSBhL3NyYy9kaXNwYXRjaF9jb21tb24uaAorKysrIGIvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCitAQCAtNTIsNiArNTIsNyBAQAorICAqIHNob3VsZCBkbyB0aGUgc2FtZQorICAqLworICMgIGRlZmluZSBNRVNBX0VHTF9OT19YMTFfSEVBREVSUyAxCisrIyAgZGVmaW5lIEVHTF9OT19YMTEgMQorICMgZW5kaWYKKyAjaW5jbHVkZSAiZXBveHkvZWdsLmgiCisgI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWEyYzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBkbG9wZW4oKSwgZGxzeW0oKSwgXAotZ2xYR2V0UHJvY0FkZHJlc3MoKSwgZWdsR2V0UHJvY0FkZHJlc3MoKSwgZXRjLiBmcm9tIHRoZSBhcHAgZGV2ZWxvcGVyLCB3aXRoIFwKLXZlcnkgbGl0dGxlIGtub3dsZWRnZSBuZWVkZWQgb24gdGhlaXIgcGFydC4gVGhleSBnZXQgdG8gcmVhZCBHTCBzcGVjcyBhbmQgXAotd3JpdGUgY29kZSB1c2luZyB1bmRlY29yYXRlZCBmdW5jdGlvbiBuYW1lcyBsaWtlIGdsQ29tcGlsZVNoYWRlcigpLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjg0NWRlOGQyNzgyYjJkMzFjMDFhZThkN2NkNGNiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDI5NThjNTUyODMyMWVkZDUzNDQwMjM1ZDNjNDRlNzFiNWIxZTA5YjkxNzdlOGRhZjY3NzQ1MGI2YzQ0MzNkIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLURlZ2w9eWVzLCAtRGVnbD1ubywgdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURnbHg9eWVzLCAtRGdseD1ubyAtRHgxMT1mYWxzZSwgdmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gZWdsIgotCi1FWFRSQV9PRU1FU09OICs9ICItRHRlc3RzPWZhbHNlIgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJlZ2wgeDExIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiZWdsIHgxMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBkbG9wZW4gd2lsbCBhdHRlbXB0IG9ubHkgR0wgbGlicmFyaWVzIHByb3ZpZGVkIGJ5IGhvc3QKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9Lyouc28KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5ODY3NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS40LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSXQgaGlkZXMgdGhlIGNvbXBsZXhpdHkgb2YgZGxvcGVuKCksIGRsc3ltKCksIFwKK2dsWEdldFByb2NBZGRyZXNzKCksIGVnbEdldFByb2NBZGRyZXNzKCksIGV0Yy4gZnJvbSB0aGUgYXBwIGRldmVsb3Blciwgd2l0aCBcCit2ZXJ5IGxpdHRsZSBrbm93bGVkZ2UgbmVlZGVkIG9uIHRoZWlyIHBhcnQuIFRoZXkgZ2V0IHRvIHJlYWQgR0wgc3BlY3MgYW5kIFwKK3dyaXRlIGNvZGUgdXNpbmcgdW5kZWNvcmF0ZWQgZnVuY3Rpb24gbmFtZXMgbGlrZSBnbENvbXBpbGVTaGFkZXIoKS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNwYXRjaF9jb21tb24uaC1kZWZpbmUtYWxzby1FR0xfTk9fWDExLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjAwZjQ3YWQ0NDczMjFmOWRjNTlmODViYzFjOWQwNDY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiZDJjYzY4MWRmZWZmZGVmNzM5Y2IyOTkxM2Y4YzNjYWE0N2E4OGE0NTFmZDJiYzZlNjA2YzAyOTk3Mjg5ZDIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vIC1EeDExPWZhbHNlLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCB4MTEiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wgeDExIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGRsb3BlbiB3aWxsIGF0dGVtcHQgb25seSBHTCBsaWJyYXJpZXMgcHJvdmlkZWQgYnkgaG9zdAorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLUZpeGVkLWJ1Zy00NTM4LXZhbGlkYXRlLWltYWdlLXNpemUtd2hlbi1sb2FkaW5nLUJNUC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NGRlY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gODUxMzhjMWVjNjczZTA1MjYzYWU2NjZiYWY2MWY3OTM4NGRhZjdlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNhbSBMYW50aW5nYSA8c2xvdWtlbkBsaWJzZGwub3JnPgotRGF0ZTogVHVlLCAzMCBKdWwgMjAxOSAxMTowMDowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBidWcgNDUzOCAtIHZhbGlkYXRlIGltYWdlIHNpemUgd2hlbiBsb2FkaW5nIEJNUCBmaWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9oZy5saWJzZGwub3JnL1NETC9yZXYvZTdiYTY1MGE2NDNhXQotCi1DVkU6IENWRS0yMDE5LTEzNjE2Ci0KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy92aWRlby9TRExfYm1wLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3ZpZGVvL1NETF9ibXAuYyBiL3NyYy92aWRlby9TRExfYm1wLmMKLWluZGV4IDBiNjg5MTguLmEwNmIwYzkgMTAwNjQ0Ci0tLS0gYS9zcmMvdmlkZW8vU0RMX2JtcC5jCi0rKysgYi9zcmMvdmlkZW8vU0RMX2JtcC5jCi1AQCAtMjI2LDYgKzIyNiwxMSBAQCBTRExfTG9hZEJNUF9SVyhTRExfUldvcHMgKiBzcmMsIGludCBmcmVlc3JjKQotICAgICAgICAgICAgIFNETF9SV3NlZWsoc3JjLCAoYmlTaXplIC0gaGVhZGVyU2l6ZSksIFJXX1NFRUtfQ1VSKTsKLSAgICAgICAgIH0KLSAgICAgfQotKyAgICBpZiAoYmlXaWR0aCA8PSAwIHx8IGJpSGVpZ2h0ID09IDApIHsKLSsgICAgICAgIFNETF9TZXRFcnJvcigiQk1QIGZpbGUgd2l0aCBiYWQgZGltZW5zaW9ucyAoJWR4JWQpIiwgYmlXaWR0aCwgYmlIZWlnaHQpOwotKyAgICAgICAgd2FzX2Vycm9yID0gU0RMX1RSVUU7Ci0rICAgICAgICBnb3RvIGRvbmU7Ci0rICAgIH0KLSAgICAgaWYgKGJpSGVpZ2h0IDwgMCkgewotICAgICAgICAgdG9wRG93biA9IFNETF9UUlVFOwotICAgICAgICAgYmlIZWlnaHQgPSAtYmlIZWlnaHQ7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWJ1aWxkLWRpci13aGVuLWJ1aWxkaW5nLXZlcnNpb24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzgzYmQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEFudWogTWl0dGFsIDxhbS5kZXZlbEBnbWFpbC5jb20+Ci0jIERhdGUgMTU3MzYzMTQ2MiAtMTA4MDAKLSMgTm9kZSBJRCAxZmIxODgwZDVlZGZjN2M1YTM3MDg0NmUxM2Y5MGIyNjAyNjM2MjdjCi0jIFBhcmVudCAgMDA3MDAyNTg3ZDVkMzRkNzgxYzJiNjI4YzA1ZTk5MmUwYWM1ZjUyZAotY29uZmlndXJlOiBjaGVjayBmb3IgYnVpbGQgZGlyIHdoZW4gYnVpbGRpbmcgdmVyc2lvbiByZXMgKGZpeCBidWcgIzQ4NTgpCi1GaXhlcyBhIHJhY2Ugd2hlcmUgd2UgdHJ5IHRvIGJ1aWxkIHZlcnNpb24gcmVzIGZpbGUgaW4gYnVpbGQgZGlyZWN0b3J5Ci1iZWZvcmUgaXQgaGFzIGV2ZW4gYmVlbiBjcmVhdGVkLiBQcmV2ZW50cyBlcnJvcnMgbGlrZToKLQotL2Jpbi9iYXNoIC4uL1NETDItMi4wLjEwL2J1aWxkLXNjcmlwdHMvdXBkYXRlcmV2LnNoCi0vYmluL2Jhc2ggLi4vU0RMMi0yLjAuMTAvYnVpbGQtc2NyaXB0cy9ta2luc3RhbGxkaXJzIGJ1aWxkCi1ta2RpciAtcCAtLSBidWlsZAoteDg2XzY0LXBva3lzZGstbWluZ3czMi13aW5kcmVzIC0taW5jbHVkZS1kaXI9L2hvbWUvcG9reWJ1aWxkL3lvY3RvLXdvcmtlci9tZXRhLW1pbmd3L2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIvbmF0aXZlc2RrLWxpYnNkbDIvMi4wLjEwLXIwL3JlY2lwZS1zeXNyb290L29wdC9wb2t5LzMuMC9zeXNyb290cy94ODZfNjQtcG9reXNkay1taW5ndzMyL3Vzci9pbmNsdWRlIC4uL1NETDItMi4wLjEwL3NyYy9tYWluL3dpbmRvd3MvdmVyc2lvbi5yYyBidWlsZC92ZXJzaW9uLm8KLXg4Nl82NC1wb2t5c2RrLW1pbmd3MzItd2luZHJlczogYnVpbGQvdmVyc2lvbi5vOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1NYWtlZmlsZTo2OTI6IHJlY2lwZSBmb3IgdGFyZ2V0ICdidWlsZC92ZXJzaW9uLm8nIGZhaWxlZAotbWFrZTogKioqIFtidWlsZC92ZXJzaW9uLm9dIEVycm9yIDEKLW1ha2U6ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCi10b3VjaCBidWlsZC8uY3JlYXRlZAotV0FSTklORzogZXhpdCBjb2RlIDEgZnJvbSBhIHNoZWxsIGNvbW1hbmQuCi0KLUV4dGVuc2lvbiBvZiBmaXg6Ci1odHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi85OWQ4YjE4YWNmOGEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFtLmRldmVsQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtciAwMDcwMDI1ODdkNWQgLXIgMWZiMTg4MGQ1ZWRmIGNvbmZpZ3VyZQotLS0tIGEvY29uZmlndXJlCVR1ZSBOb3YgMTIgMTc6MjQ6MzcgMjAxOSAtMDUwMAotKysrIGIvY29uZmlndXJlCVdlZCBOb3YgMTMgMTA6NTE6MDIgMjAxOSArMDMwMAotQEAgLTI1NDkzLDcgKzI1NDkzLDcgQEAKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gJFZFUlNJT05fU09VUkNFU2AKLSBWRVJTSU9OX09CSkVDVFM9YGVjaG8gIiRWRVJTSU9OX09CSkVDVFMiIHwgc2VkICdzLFteIF0qL1woW14gXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAiJFZFUlNJT05fREVQRU5EUyIgfCBzZWQgInMsXFwoW14gXSpcXCkvXFwoW14gXSpcXClcXC5yYyxcXFxcCi0tXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjXFxcXAotK1xcJChvYmplY3RzKS9cXDIubzogXFwxL1xcMi5yYyBcXCQob2JqZWN0cykvLmNyZWF0ZWRcXFxcCi0gCVxcJChXSU5EUkVTKSBcXCQ8IFxcJEAsZyJgCi0gCi0gU0RMTUFJTl9PQkpFQ1RTPWBlY2hvICRTRExNQUlOX1NPVVJDRVNgCi1kaWZmIC1yIDAwNzAwMjU4N2Q1ZCAtciAxZmIxODgwZDVlZGYgY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMJVHVlIE5vdiAxMiAxNzoyNDozNyAyMDE5IC0wNTAwCi0rKysgYi9jb25maWd1cmUuYWMJV2VkIE5vdiAxMyAxMDo1MTowMiAyMDE5ICswMzAwCi1AQCAtNDE3Nyw3ICs0MTc3LDcgQEAKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gJFZFUlNJT05fU09VUkNFU2AKLSBWRVJTSU9OX09CSkVDVFM9YGVjaG8gIiRWRVJTSU9OX09CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLnJjLCQob2JqZWN0cykvXDEubyxnJ2AKLSBWRVJTSU9OX0RFUEVORFM9YGVjaG8gIiRWRVJTSU9OX0RFUEVORFMiIHwgc2VkICJzLFxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjIFxcJChvYmplY3RzKS8uY3JlYXRlZFxcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMi1GaXhlZC1idWctNDc5Ny1TREwtZmFpbHMtdG8tY29tcGlsZS13aXRoLU1lc2EtTWFzdGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjViNmEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIFN5bHZhaW4gQmVja2VyIDxzeWx2YWluLmJlY2tlckBnbWFpbC5jb20+Ci0jIERhdGUgMTU3MDg5ODg3NiAtNzIwMAotIyAgICAgIFNhdCBPY3QgMTIgMTg6NDc6NTYgMjAxOSArMDIwMAotIyBOb2RlIElEIDM2OWIwMTAwNmViMmY2ZmQ1NjNmN2MzMTVkMjlhZTNmZTUwM2M0MzIKLSMgUGFyZW50ICA0Y2JhZmZkMDA4M2I4Y2QxNzA3MGRiZDlkNGFiMWNlMGZhOWZjYTJkCi1GaXhlZCBidWcgNDc5NyAtIFNETCBmYWlscyB0byBjb21waWxlIHdpdGggTWVzYSBNYXN0ZXIgKHRoYW5rcyBNaWNoYWVsIE9sYnJpY2ghKQotCi1maXggYnVpbGRpbmcgd2l0aCBNZXNhIDE5LjIKLQotV2l0aCBNZXNhIDE5LjIgYnVpbGRpbmcgZmFpbHMgd2l0aDoKLQotL2luY2x1ZGUvR0xFUy9nbC5oOjYzOjI1OiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdHTHNpemVpcHRyJwotCi1UaGUgc2FtZSB0eXBlIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9TRExfb3BlbmdsLmggZm9yIE9wZW5HTCBhbmQgdGhlIHR3bwotaGVhZGVycyBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGF0IHRoZSBzYW1lIHRpbWUuCi1UaGlzIHdhcyBqdXN0IG5ldmVyIG5vdGljZWQgYmVjYXVzZSB0aGUgc2FtZSBoZWFkZXIgZ3VhcmQgJ19fZ2xfaF8nIHdhcwotdXNlZC4gVGhpcyB3YXMgY2hhbmdlZCBpbiBNZXNhLiBUaGUgcmVzdWx0IGlzIHRoaXMgZXJyb3IuCi0KLUZpeCB0aGlzIHRoZSBzYW1lIHdheSBHTEVTMiBhbHJlYWR5IGhhbmRsZXMgdGhpczogRG9uJ3QgaW5jbHVkZSB0aGUgR0xFUwotaGVhZGVyIHdoZW4gdGhlIE9wZW5HTCBoZWFkZXIgd2FzIGFscmVhZHkgaW5jbHVkZWQuCi0oaHR0cHM6Ly9oZy5saWJzZGwub3JnL1NETC9yZXYvYTYwYjNjMjkyZjBmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi8zNjliMDEwMDZlYjJdCi1TaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci0KLWRpZmYgLS1naXQgYS9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMgYi9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMKLS0tLSBhL3NyYy92aWRlby9TRExfdmlkZW8uYwotKysrIGIvc3JjL3ZpZGVvL1NETF92aWRlby5jCi1AQCAtMzcsOSArMzcsOSBAQAotICNpbmNsdWRlICJTRExfb3BlbmdsLmgiCi0gI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0wgKi8KLSAKLS0jaWYgU0RMX1ZJREVPX09QRU5HTF9FUwotKyNpZiBTRExfVklERU9fT1BFTkdMX0VTICYmICFTRExfVklERU9fT1BFTkdMCi0gI2luY2x1ZGUgIlNETF9vcGVuZ2xlcy5oIgotLSNlbmRpZiAvKiBTRExfVklERU9fT1BFTkdMX0VTICovCi0rI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0xfRVMgJiYgIVNETF9WSURFT19PUEVOR0wgKi8KLSAKLSAvKiBHTCBhbmQgR0xFUzIgaGVhZGVycyBjb25mbGljdCBvbiBMaW51eCAzMiBiaXRzICovCi0gI2lmIFNETF9WSURFT19PUEVOR0xfRVMyICYmICFTRExfVklERU9fT1BFTkdMCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM0YTM1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKLWxpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKLWpveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTUwNGE5NDU0Y2ViODlmZDc1YTI1ODM0NzNiMTE0MDllIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3JlbGVhc2UvU0RMMi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1nZW4tZGVwZW5kcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLWJ1Zy00NTM4LXZhbGlkYXRlLWltYWdlLXNpemUtd2hlbi1sb2FkaW5nLUJNUC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlZC1idWctNDc5Ny1TREwtZmFpbHMtdG8tY29tcGlsZS13aXRoLU1lc2EtTWFzdGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWEyMTE0ZjJhNmYzNDhiZGFiNWJmNTJiOTk0ODExZGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQ2NTZjMTNhMWYwZDAwMjNhZTJmNGE5Y2YwOGVjOTJmZmZiNDY0ZTBmMjQyMzgzMzc3ODQxNTliOGI5MWQ1NyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3NkbDItY29uZmlnIgotCi1DVkVfUFJPRFVDVCA9ICJzaW1wbGVfZGlyZWN0bWVkaWFfbGF5ZXIgc2RsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9zcyAtLWRpc2FibGUtZXNkIC0tZGlzYWJsZS1hcnRzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGlza2F1ZGlvIC0tZGlzYWJsZS1uYXMgLS1kaXNhYmxlLWVzZC1zaGFyZWQgLS1kaXNhYmxlLWVzZHRlc3QgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aWRlby1kdW1teSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNuZGlvIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAieDExIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgPSAiLS1lbmFibGUtYWxzYSAtLWRpc2FibGUtYWxzYXRlc3QsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIsIgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2ttc2RybV0gICAgID0gIi0tZW5hYmxlLXZpZGVvLWttc2RybSwtLWRpc2FibGUtdmlkZW8ta21zZHJtLGxpYmRybSB2aXJ0dWFsL2xpYmdibSIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCi0gICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCi0gICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KLSAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCi0gICAgICAgIGRvbmUKLSAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYzk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEyLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIgorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGlzIGEgY3Jvc3MtcGxhdGZvcm0gbXVsdGltZWRpYSBcCitsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgbG93IGxldmVsIGFjY2VzcyB0byBhdWRpbywga2V5Ym9hcmQsIG1vdXNlLCBcCitqb3lzdGljaywgM0QgaGFyZHdhcmUgdmlhIE9wZW5HTCwgYW5kIDJEIHZpZGVvIGZyYW1lYnVmZmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic2RsLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxpYnNkbC5vcmcvIgorCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0yZDRhZjZhZGI0ZDg5YWFkMGNkZWRiY2MxOGM5YTMyZiIKKworIyBhcm0tbmVvbiBhZGRzIE1JVCBsaWNlbnNlCitMSUNFTlNFX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXJtLW5lb24nLCAnJiBNSVQnLCAnJywgZCl9IgorTElDX0ZJTEVTX0NIS1NVTV9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FybS1uZW9uJywgJ2ZpbGU6Ly9zcmMvdmlkZW8vYXJtL3BpeG1hbi1hcm0tbmVvbi1hc20uaDttZDU9OWE5Y2MxZTUxYWJiZjFkYTU4ZjRkOTUyOGVjOWQ0OWI7YmVnaW5saW5lPTE7ZW5kbGluZT0yNCcsICcnLCBkKX0iCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGlic2RsMiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ODNiNmYyZGY4ZmYwMmIxOWJiNWNlNDkyYjk5YzhmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDkyNjhmNjk1YzAyZWZiYzliOTE0OGE3MGI4NWU1OGNlZmJiZjcwNGFiZDNlOTFiZTY1NGRiN2YxZTJjODYzIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vc2RsMi1jb25maWciCisKK0NWRV9QUk9EVUNUID0gInNpbXBsZV9kaXJlY3RtZWRpYV9sYXllciBzZGwiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc25kaW8gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mY2l0eCAtLWRpc2FibGUtaWJ1cyBcCisgICAgICAgICAgICAgICAgIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgKGRlc2t0b3ApIG9wZW5nbCwgZ2xlczIsIG9yIG5vIEdMCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIngxMSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgZGlyZWN0ZmIgcHVsc2VhdWRpbyB4MTEnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGdsZXMyJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibmVvbiIsImFybS1uZW9uIiwiIixkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1hbHNhdGVzdCwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiwiCitQQUNLQUdFQ09ORklHW2FybS1uZW9uXSAgID0gIi0tZW5hYmxlLWFybS1uZW9uLC0tZGlzYWJsZS1hcm0tbmVvbiIKK1BBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgPSAiLS1lbmFibGUtdmlkZW8tZGlyZWN0ZmIsLS1kaXNhYmxlLXZpZGVvLWRpcmVjdGZiLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2xlcywtLWRpc2FibGUtdmlkZW8tb3BlbmdsZXMsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1trbXNkcm1dICAgICA9ICItLWVuYWJsZS12aWRlby1rbXNkcm0sLS1kaXNhYmxlLXZpZGVvLWttc2RybSxsaWJkcm0gdmlydHVhbC9saWJnYm0iCitQQUNLQUdFQ09ORklHW29wZW5nbF0gICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbCwtLWRpc2FibGUtdmlkZW8tb3BlbmdsLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbdHNsaWJdICAgICAgPSAiLS1lbmFibGUtaW5wdXQtdHNsaWIsLS1kaXNhYmxlLWlucHV0LXRzbGliLHRzbGliIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICA9ICItLWVuYWJsZS12aWRlby13YXlsYW5kLC0tZGlzYWJsZS12aWRlby13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS12aWRlby14MTEsLS1kaXNhYmxlLXZpZGVvLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhyYW5kciBsaWJ4cmVuZGVyIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWluY2x1ZGU9YWNpbmNsdWRlIC0tZXhjbHVkZT1hdXRvaGVhZGVyIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBSZW1vdmUgb2xkIGxpYnRvb2wgbWFjcm9zLgorICAgICAgICBNQUNST1M9ImxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00IgorICAgICAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCisgICAgICAgICAgICAgICBybSAtZiAke1N9L2FjaW5jbHVkZS8kaQorICAgICAgICBkb25lCisgICAgICAgIGV4cG9ydCBTWVNST09UPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCit9CisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlscy8wMDAxLUJ1aWxkLXNmY3NhbXBsZS1vbmx5LXdoZW4tWDExLWJhY2tlbmQtaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWZiNzE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA4ZmMxNGU0YmM4MTg4NWI4MGMzMDcyZTU0OWMyZTZmNTk1MzNkN2VmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IEZyaSwgOCBGZWIgMjAxOSAxMTo0NTo1NSArMDgwMAotU3ViamVjdDogW1BBVENIXSBCdWlsZCBzZmNzYW1wbGUgb25seSB3aGVuIFgxMSBiYWNrZW5kIGlzIGVuYWJsZWQKLQotU2VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvcHVsbC8xNDksIGFuZAotaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3Vlcy8xNTAKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBkMjgxNzVhLi5lMjk0ZTI1IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjQsMTAgKzI0LDExIEBAIEFDTE9DQUxfQU1GTEFHUyA9IC1JIG00ICR7QUNMT0NBTF9GTEFHU30KLSAKLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotLVNVQkRJUlMgPSBjb21tb24gZGVjb2RlIGVuY29kZSB2YWluZm8gdmlkZW9wcm9jZXNzIHZlbmRvci9pbnRlbCB2ZW5kb3IvaW50ZWwvc2Zjc2FtcGxlCi0rU1VCRElSUyA9IGNvbW1vbiBkZWNvZGUgZW5jb2RlIHZhaW5mbyB2aWRlb3Byb2Nlc3MgdmVuZG9yL2ludGVsCi0gCi0gaWYgVVNFX1gxMQotIFNVQkRJUlMgKz0gcHV0c3VyZmFjZQotK1NVQkRJUlMgKz0gdmVuZG9yL2ludGVsL3NmY3NhbXBsZQotIGVsc2UKLSBpZiBVU0VfV0FZTEFORAotIFNVQkRJUlMgKz0gcHV0c3VyZmFjZQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4ZDBjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCi0KLURFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAotYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKLXByb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCi13aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCi1mb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCi1hY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUJ1aWxkLXNmY3NhbXBsZS1vbmx5LXdoZW4tWDExLWJhY2tlbmQtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxZmFkYTI2YzI4NjY1NDg1OWVmZjMzYjI1NjJjYjc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyMzhjOWQ1MTEwZDYwZjkzNTY4MzM5MGI4MzgzZmRhYzM1MDczNDYzODRjZDVmMTE3YTIzYzZkYjFkNzJhMTciCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiMzgwMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNi4wLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCisKK0RFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAorYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKK3Byb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCit3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCitmb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCithY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhLXV0aWxzL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMuZ2l0O2JyYW5jaD12Mi42LWJyYW5jaCIKK1NSQ1JFViA9ICI4ZWExZWJhNDMzZGNiY2ViMGU1ZGNiNTRiOGUzZjk4NDk4N2Y3YTE3IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCisKK0RFUEVORFMgPSAibGlidmEiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRHgxMT10cnVlLCAtRHgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsIC1Ed2F5bGFuZD1mYWxzZSx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlMmUwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAotYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCi1oYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAotYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAotZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCi1zcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCi1NZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCi1saW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCi1tYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKLXZpZGVvIGRlY29kaW5nLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM2ODgyMTJmYjdhODc5NDcwNzBmMzcyOWU5MWZmN2NmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNhYTg5Y2QzNjlhNTA2YWM0ZGJlNWRlN2MwZWY1ZGE0ZjNkMjIwYmY5ODY0MDNmMDJmYTFmNmY3MDJhZjY4NzgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLUVYVFJBX09FQ09ORiA9ICJhY19jdl9wcm9nX1dBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LWdseCAke1BOfS13YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCi0KLUZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCi1GSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0td2F5bGFuZCA9KyAiJHtsaWJkaXJ9L2xpYnZhLXdheWxhbmQqJHtTT0xJQlN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi42LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmNlYTgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi42LjEuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCithbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKK2hhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCitiYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCitkZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKK3NwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKK01lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKK2xpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKK21hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAordmlkZW8gZGVjb2RpbmcuIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImFlZjEzZWI0OGUwMWE0N2QxNDE2ZDk3NDYyYTIyYTExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjNTdlYjY0MmQ4MjhhZjI0MTFhYTM4ZjU1ZGMxMDExMWU4Yzk4OTc2ZGJhYjhmZDYyZTQ4NjI5NDAxZWFlYTUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvcmVsZWFzZXMiCisKK0RFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1Ed2l0aF94MTE9eWVzLCAtRHdpdGhfeDExPW5vLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRHdpdGhfd2F5bGFuZD15ZXMsIC1Ed2l0aF93YXlsYW5kPW5vLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKKworRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tYXRjaGJveC13bS9tYXRjaGJveC13bV8xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCmluZGV4IGI5OTYxYzMuLjY3NWVlNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiCkBAIC0yMSw2ICsyMSw4IEBACiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKK0NGTEFHUyArPSAiLWZjb21tb24iCisKIEZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIFwKICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWF0Y2hib3ggXAogICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYXRjaGJveCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIKaW5kZXggZGRiYmQ5NC4uN2ExMTIyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVudS1jYWNoZS9tZW51LWNhY2hlXzEuMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYgpAQCAtMTYsMyArMTYsNSBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHhkZS9maWxlcy9tZW51LWNhY2hlLzEuMS8iCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTQ4NWZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYmIyZjBiZWE1NTNkNTFkNjU5YTliYzQ2ZjdhZTE4Njg4NTQwNTE1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEphbiAyMDIwIDE1OjIzOjQ3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uIG1pc2RldGVjdHMgNjRiaXQgYXRvbWljcyBvbiBtaXBzL2NsYW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy91dGlsL3VfYXRvbWljLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdXRpbC91X2F0b21pYy5jIGIvc3JjL3V0aWwvdV9hdG9taWMuYworaW5kZXggZTRiZmZhOC4uNThlMWRkZCAxMDA2NDQKKy0tLSBhL3NyYy91dGlsL3VfYXRvbWljLmMKKysrKyBiL3NyYy91dGlsL3VfYXRvbWljLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgICogSU4gVEhFIFNPRlRXQVJFLgorICAqLworIAorLSNpZiBkZWZpbmVkKE1JU1NJTkdfNjRCSVRfQVRPTUlDUykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQUQpCisrI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgZGVmaW5lZChNSVNTSU5HXzY0QklUX0FUT01JQ1MpICYmIGRlZmluZWQoSEFWRV9QVEhSRUFEKQorIAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLmJ1aWxkLWNoZWNrLWZvci1hbGwtbGludXgtaG9zdF9vcy1jb21iaW5hdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaAppbmRleCAxODY5ZTExLi4wODUyNTQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gYjZkOWJjOTdjYjBlOGM1NDBhNDVkYmE1NDQwYjAzNmZiOTQwZmY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLURhdGU6IE1vbiwgMTEgTm92IDIwMTkgMDk6Mzg6MTUgLTA4MDAKK0Zyb20gMGQ5ZWQwMDJlZmYxNzZiOTAyZGEyNjZkODk4MjlhOWIwY2IxMDk0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CitEYXRlOiBUaHUsIDE0IE5vdiAyMDE5IDEzOjA0OjQ5IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBjaGVjayBmb3IgYWxsIGxpbnV4IGhvc3Rfb3MgY29tYmluYXRpb25zCiAKIE1ha2Ugc3VyZSB0aGF0IHdlIGFyZSBhbHNvIGxvb2tpbmcgZm9yIG91ciBob3N0X29zIGNvbWJpbmF0aW9ucyBsaWtlCkBAIC0xMywzMCArMTMsMzAgQEAKIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgogU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CiAKIC0tLQogIG1lc29uLmJ1aWxkIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGQ1ODQxNTIuLmExZjA5OGMgMTAwNjQ0CitpbmRleCA4OThkMDI1Li4wOWUzNzU5IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTE3LDcgKzExNyw3IEBAIHdpdGhfYW55X29wZW5nbCA9IHdpdGhfb3BlbmdsIG9yIHdpdGhfZ2xlczEgb3Igd2l0aF9nbGVzMgorQEAgLTEyNCw3ICsxMjQsNyBAQCB3aXRoX2FueV9vcGVuZ2wgPSB3aXRoX29wZW5nbCBvciB3aXRoX2dsZXMxIG9yIHdpdGhfZ2xlczIKICAjIE9ubHkgYnVpbGQgc2hhcmVkX2dsYXBpIGlmIGF0IGxlYXN0IG9uZSBPcGVuR0wgQVBJIGlzIGVuYWJsZWQKLSB3aXRoX3NoYXJlZF9nbGFwaSA9IGdldF9vcHRpb24oJ3NoYXJlZC1nbGFwaScpIGFuZCB3aXRoX2FueV9vcGVuZ2wKKyB3aXRoX3NoYXJlZF9nbGFwaSA9IHdpdGhfc2hhcmVkX2dsYXBpIGFuZCB3aXRoX2FueV9vcGVuZ2wKICAKIC1zeXN0ZW1faGFzX2ttc19kcm0gPSBbJ29wZW5ic2QnLCAnbmV0YnNkJywgJ2ZyZWVic2QnLCAnZ251L2tmcmVlYnNkJywgJ2RyYWdvbmZseScsICdsaW51eCcsICdzdW5vcyddLmNvbnRhaW5zKGhvc3RfbWFjaGluZS5zeXN0ZW0oKSkKICtzeXN0ZW1faGFzX2ttc19kcm0gPSBbJ29wZW5ic2QnLCAnbmV0YnNkJywgJ2ZyZWVic2QnLCAnZHJhZ29uZmx5J10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKSBvciBob3N0X21hY2hpbmUuc3lzdGVtKCkuc3RhcnRzd2l0aCgnbGludXgnKQogIAogIGRyaV9kcml2ZXJzID0gZ2V0X29wdGlvbignZHJpLWRyaXZlcnMnKQogIGlmIGRyaV9kcml2ZXJzLmNvbnRhaW5zKCdhdXRvJykKLUBAIC04NTYsNyArODU2LDcgQEAgaWYgY2MuY29tcGlsZXMoJ19fdWludDEyOF90IGZvbyh2b2lkKSB7IHJldHVybiAwOyB9JywKK0BAIC04ODQsNyArODg0LDcgQEAgaWYgY2MuY29tcGlsZXMoJ19fdWludDEyOF90IGZvbyh2b2lkKSB7IHJldHVybiAwOyB9JywKICBlbmRpZgogIAogICMgVE9ETzogdGhpcyBpcyB2ZXJ5IGluY29tcGxldGUKLS1pZiBbJ2xpbnV4JywgJ2N5Z3dpbicsICdnbnUnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQorLWlmIFsnbGludXgnLCAnY3lnd2luJywgJ2dudScsICdmcmVlYnNkJywgJ2dudS9rZnJlZWJzZCddLmNvbnRhaW5zKGhvc3RfbWFjaGluZS5zeXN0ZW0oKSkKICtpZiBbJ2N5Z3dpbicsICdnbnUnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKSBvciBob3N0X21hY2hpbmUuc3lzdGVtKCkuc3RhcnRzd2l0aCgnbGludXgnKQogICAgcHJlX2FyZ3MgKz0gJy1EX0dOVV9TT1VSQ0UnCiAgZWxpZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgPT0gJ3N1bm9zJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2gKaW5kZXggMTk5ZWQ1Ny4uY2QzNWExZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoCkBAIC0xLDEzICsxLDEzIEBACi1Gcm9tIGFmNjkyMzU0NGRlMDJkZWQ2NDhhNzM2ZTA3YjliZDhiN2M1MmRiYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDA5OjQ2OjI4IC0wNzAwCitGcm9tIGRmODM1Mzg5Njk5YjMyYmI2NjEwYjM5OTcyNTAyZTMyM2Y4ZTA5ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgorRGF0ZTogVGh1LCAxNCBOb3YgMjAxOSAxMzowODozMSAtMDgwMAogU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogbWFrZSBUTFMgRUxGIG9wdGlvbmFsCiAKIFVTRV9FTEZfVExTIGhhcyByZXBsYWNlZCBHTFhfVVNFX1RMUyBzbyB0aGlzIHBhdGNoIGlzIHRoZSBvcmlnaW5hbCAibWFrZQogVExTIEdMWCBvcHRpb25hbCBhZ2FpbiIgcGF0Y2ggdXBkYXRlZCB0byB0aGUgbGF0ZXN0IG1lc2EuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CiAKIC0tLQogIG1lc29uLmJ1aWxkICAgICAgIHwgMiArLQpAQCAtMTUsMjMgKzE1LDIzIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGExZjA5OGMuLjFlMzFlYjQgMTAwNjQ0CitpbmRleCAwOWUzNzU5Li5hOTU0MTE4IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGlmIHdpdGhfZWdsIGFuZCBub3QgKHdpdGhfcGxhdGZvcm1fZHJtIG9yIHdpdGhfcGxhdGZvcm1fc3VyZmFjZWxlc3Mgb3Igd2l0aF9wbGF0CitAQCAtMzg3LDcgKzM4Nyw3IEBAIGlmIHdpdGhfZWdsIGFuZCBub3QgKHdpdGhfcGxhdGZvcm1fZHJtIG9yIHdpdGhfcGxhdGZvcm1fc3VyZmFjZWxlc3Mgb3Igd2l0aF9wbGF0CiAgZW5kaWYKICAKICAjIEFuZHJvaWQgdXNlcyBlbXV0bHMgZm9yIHZlcnNpb25zIDw9IFAvMjguIEZvciBVU0VfRUxGX1RMUyB3ZSBuZWVkIEVMRiBUTFMuCi0taWYgbm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5CistaWYgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJyBhbmQgKG5vdCB3aXRoX3BsYXRmb3JtX2FuZHJvaWQgb3IgZ2V0X29wdGlvbigncGxhdGZvcm0tc2RrLXZlcnNpb24nKSA+PSAyOSkKICtpZiAobm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5KSBhbmQgZ2V0X29wdGlvbignZWxmLXRscycpCiAgICBwcmVfYXJncyArPSAnLURVU0VfRUxGX1RMUycKICBlbmRpZgogIAogZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IGI3NjhjMTUuLjc2Y2VmMjQgMTAwNjQ0CitpbmRleCA2MjZiYWYzLi42MzdmZjE0IDEwMDY0NAogLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKICsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMzMzLDYgKzMzMywxMiBAQCBvcHRpb24oCitAQCAtMzQxLDYgKzM0MSwxMiBAQCBvcHRpb24oCiAgICB2YWx1ZSA6IHRydWUsCiAgICBkZXNjcmlwdGlvbiA6ICdFbmFibGUgZGlyZWN0IHJlbmRlcmluZyBpbiBHTFggYW5kIEVHTCBmb3IgRFJJJywKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaAppbmRleCBjMjBhMWY3Li5hMDUzNmM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDVhZDY1MTUyMzhiYzA0MmNjY2Y5OTU5YWJhZDQ0ZmRlZTlhZWIwN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlYWEyMWE3OWNlNmQ2ZTkyZjZiZjk4YzI4YjY4ZTNmY2I0ZDc4NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogV2VkLCAxMiBKdW4gMjAxOSAxNDoxODozMSAtMDMwMAogU3ViamVjdDogW1BBVENIXSBBbGxvdyBlbmFibGUgRFJJIHdpdGhvdXQgRFJJIGRyaXZlcnMKQEAgLTE1LDEwICsxNSwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAxZTMxZWI0Li41MTJlZWM2IDEwMDY0NAoraW5kZXggYTk1NDExOC4uNjI4NjRjNiAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTE0Nyw3ICsxNDcsNyBAQCB3aXRoX2RyaV9yMjAwID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3IyMDAnKQorQEAgLTE1NCw3ICsxNTQsNyBAQCB3aXRoX2RyaV9yMjAwID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3IyMDAnKQogIHdpdGhfZHJpX25vdXZlYXUgPSBkcmlfZHJpdmVycy5jb250YWlucygnbm91dmVhdScpCiAgd2l0aF9kcmlfc3dyYXN0ID0gZHJpX2RyaXZlcnMuY29udGFpbnMoJ3N3cmFzdCcpCiAgCkBAIC0yOCwxMCArMjgsMTAgQEAKICBnYWxsaXVtX2RyaXZlcnMgPSBnZXRfb3B0aW9uKCdnYWxsaXVtLWRyaXZlcnMnKQogIGlmIGdhbGxpdW1fZHJpdmVycy5jb250YWlucygnYXV0bycpCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggNzZjZWYyNC4uYThhYmQwNCAxMDA2NDQKK2luZGV4IDYzN2ZmMTQuLjcwMGMzNGMgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0zNCw2ICszNCwxMiBAQCBvcHRpb24oCitAQCAtMzUsNiArMzUsMTIgQEAgb3B0aW9uKAogICAgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCiAgICBkZXNjcmlwdGlvbiA6ICdlbmFibGUgc3VwcG9ydCBmb3IgZHJpMycKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCmluZGV4IGI1NjU4ZDAuLjhkNjE0ZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxYjFjYjZlNWVhMjVlYWE5ODU3MzMyOGI5NTY1NzI4YTA4MjQ1OTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MWNkODgzNmQ3ODVjNzkzODE3NjRlN2RlNTkzMTlmODc5NTlhNWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIERhdGU6IFRodSwgMTQgTm92IDIwMTkgMDk6MDY6MDIgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNhOiBFbmFibGUgYXNtIHVuY29uZGl0aW9uYWxseSwgbm93IHRoYXQKQEAgLTE1LDcgKzE1LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNTEyZWVjNi4uYTJiY2MzYSAxMDA2NDQKK2luZGV4IDYyODY0YzYuLmI1M2JlOGQgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKIEBAIC00OSw2ICs0OSw3IEBAIHdpdGhfdnVsa2FuX2ljZF9kaXIgPSBnZXRfb3B0aW9uKCd2dWxrYW4taWNkLWRpcicpCkBAIC0yNiw3ICsyNiw3IEBACiAgd2l0aF9nbHhfcmVhZF9vbmx5X3RleHQgPSBnZXRfb3B0aW9uKCdnbHgtcmVhZC1vbmx5LXRleHQnKQogIHdpdGhfZ2x4X2RpcmVjdCA9IGdldF9vcHRpb24oJ2dseC1kaXJlY3QnKQogIHdpdGhfb3NtZXNhID0gZ2V0X29wdGlvbignb3NtZXNhJykKLUBAIC05ODUsNDEgKzk4Niw2OCBAQCBlbmRpZgorQEAgLTEwOTMsNDEgKzEwOTQsNjggQEAgZGVwX3dzMl8zMiA9IGNjLmZpbmRfbGlicmFyeSgnd3MyXzMyJywgcmVxdWlyZWQgOiB3aXRoX3BsYXRmb3JtX3dpbmRvd3MpCiAgCiAgIyBUT0RPOiBzaGFyZWQvc3RhdGljPyBJcyB0aGlzIGV2ZW4gd29ydGggZG9pbmc/CiAgCkBAIC0xMjksMTAgKzEyOSwxMCBAQAogIGVuZGlmCiAgCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggYThhYmQwNC4uMGY0YmQ4MCAxMDA2NDQKK2luZGV4IDcwMGMzNGMuLjYyZTg0NzIgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yMzMsNiArMjMzLDEyIEBAIG9wdGlvbigKK0BAIC0yNDEsNiArMjQxLDEyIEBAIG9wdGlvbigKICAgIHZhbHVlIDogZmFsc2UsCiAgICBkZXNjcmlwdGlvbiA6ICdFbmFibGUgR0xWTkQgc3VwcG9ydC4nCiAgKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDFmZWNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzOGEzMTM0NzRlMTI3ZDYxZTc0OTg2NjQyM2U3MDhmYzg2ZWQ5ZWM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBEZWMgMjAxOSAxNDoxNToyOCAtMDgwMAorU3ViamVjdDogW1BBVENIXSB2YzQ6IHVzZSBpbnRtYXhfdCBmb3IgZm9ybWF0dGVkIG91dHB1dCBvZiB0aW1lc3BlYyBtZW1iZXJzCisKKzMyYml0IGFyY2hpdGVjdHVyZXMgd2hpY2ggaGF2ZSA2NGJpdCB0aW1lX3QgZG9lcyBub3QgZml0IHRoZSBhc3N1bXB0aW9uCitvZiB0aW1lX3QgYmVpbmcgc2FtZSBhcyBzeXN0ZW0gbG9uZyBpbnQKKworRml4ZXMKK2Vycm9yOiBmb3JtYXQgc3BlY2lmaWVzIHR5cGUgJ2xvbmcnIGJ1dCB0aGUgYXJndW1lbnQgaGFzIHR5cGUgJ3RpbWVfdCcgKGFrYSAnbG9uZyBsb25nJykgWy1XZXJyb3IsLVdmb3JtYXRdCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnR2X3NlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9tZXJnZV9yZXF1ZXN0cy8yOTY2XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYyB8IDQgKystLQorIHNyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYyB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jCitpbmRleCBiM2U0ZDA1M2NjMC4uYzUxNGJmMDBiZjAgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMKKysrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYworQEAgLTgwLDggKzgwLDggQEAgdjNkX2JvX2R1bXBfc3RhdHMoc3RydWN0IHYzZF9zY3JlZW4gKnNjcmVlbikKKyAKKyAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRpbWU7CisgICAgICAgICAgICAgICAgIGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdGltZSk7CistICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBub3c6ICAgICAgICAgICAgICAgJWxkXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudHZfc2VjKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlamRcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgKGludG1heF90KXRpbWUudHZfc2VjKTsKKyAgICAgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jCitpbmRleCA1ZWMzNjA5MzRjMC4uYmYwNWY2Y2FkZDYgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMKKysrKyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYworQEAgLTEwNyw4ICsxMDcsOCBAQCB2YzRfYm9fZHVtcF9zdGF0cyhzdHJ1Y3QgdmM0X3NjcmVlbiAqc2NyZWVuKQorIAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKKyAgICAgICAgICAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0aW1lKTsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlbGRcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50dl9zZWMpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVqZFxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50bWF4X3QpdGltZS50dl9zZWMpOworICAgICAgICAgfQorIH0KKyAKKy0tIAorMi4yNC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTkuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGIxYzFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG1lc2FfJHtQVn0uYmIKLQotU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKLQotUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuZ2wgZHJpICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc4OTdjZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8yMC4wLjIuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBtZXNhXyR7UFZ9LmJiCisKK1NVTU1BUlkgKz0gIiAoT3BlbkdMIG9ubHksIG5vIEVHTC9HTEVTKSIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL21lc2EiCisKK1MgPSAiJHtXT1JLRElSfS9tZXNhLSR7UFZ9IgorCisjIEF0IGxlYXN0IG9uZSBEUkkgcmVuZGVyaW5nIGVuZ2luZSBpcyByZXF1aXJlZCB0byBidWlsZCBtZXNhLgorIyBXaGVuIG5vIFgxMSBpcyBhdmFpbGFibGUsIHVzZSBvc21lc2EgZm9yIHRoZSByZW5kZXJpbmcgZW5naW5lLgorUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ29zbWVzYScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJ29zbWVzYScsIGQpfSIKKworIyBXaGVuIE5PVCB1c2luZyBYMTEsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgc3dyYXN0IGF2YWlsYWJsZS4KK0RSSURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICcsc3dyYXN0JywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggNTgzODIwNy4uYjdlZjQ5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gIngxMSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PTNhNDk5OWNhZjgyY2M1MDNhYzhiOWUzN2MyMzU3ODJlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PWMxODQzZDkzYzQ2MGJiZjc3OGQ2MDM3Y2UzMjRmOWY3IgogCiBQRSA9ICIyIgogCkBAIC00Niw2ICs0NiwxOSBAQAogCiBNRVNBX0xMVk1fUkVMRUFTRSA/PSAiJHtMTFZNVkVSU0lPTn0iCiAKKyMgc2V0IHRoZSBNRVNBX0JVSUxEX1RZUEUgdG8gZWl0aGVyICdyZWxlYXNlJyAoZGVmYXVsdCkgb3IgJ2RlYnVnJworIyBieSBkZWZhdWx0IHRoZSB1cHN0cmVhbSBtZXNhIHNvdXJjZXMgYnVpbGQgYSBkZWJ1ZyByZWxlYXNlCisjIGhlcmUgd2UgYXNzdW1lIHRoZSB1c2VyIHdpbGwgd2FudCBhIHJlbGVhc2UgYnVpbGQgYnkgZGVmYXVsdAorTUVTQV9CVUlMRF9UWVBFID89ICJyZWxlYXNlIgorZGVmIGNoZWNrX2J1aWxkdHlwZShkKToKKyAgICBfYnVpbGR0eXBlID0gZC5nZXRWYXIoJ01FU0FfQlVJTERfVFlQRScpCisgICAgaWYgX2J1aWxkdHlwZSBub3QgaW4gWydyZWxlYXNlJywgJ2RlYnVnJ106CisgICAgICAgIGJiLmZhdGFsKCJ1bmtub3duIGJ1aWxkIHR5cGUgKCVzKSwgcGxlYXNlIHNldCBNRVNBX0JVSUxEX1RZUEUgdG8gZWl0aGVyICdyZWxlYXNlJyBvciAnZGVidWcnIiAlIF9idWlsZHR5cGUpCisgICAgaWYgX2J1aWxkdHlwZSA9PSAnZGVidWcnOgorICAgICAgICByZXR1cm4gJ2RlYnVnb3B0aW1pemVkJworICAgIHJldHVybiAncGxhaW4nCitNRVNPTl9CVUlMRFRZUEUgPSAiJHtAY2hlY2tfYnVpbGR0eXBlKGQpfSIKKwogRVhUUkFfT0VNRVNPTiA9ICIgXAogICAgIC1Ec2hhcmVkLWdsYXBpPXRydWUgXAogICAgIC1EZ2FsbGl1bS1vcGVuY2w9ZGlzYWJsZWQgXApAQCAtNTQsNyArNjcsNyBAQAogIgogCiBQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgdnVsa2FuJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaSBnYWxsaXVtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnb3BlbmdsIGVnbCBnbGVzIGdibSBkcmkgZ2FsbGl1bSB2aXJnbCcsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEgZHJpMycsICcnLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHZ1bGthbicsICdkcmkzJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgZWxmLXRscyBcCkBAIC0xMTksMTAgKzEzMiwxMSBAQAogR0FMTElVTURSSVZFUlNfTExWTSA9ICJyMzAwLHN2Z2Esbm91dmVhdSR7QCcsJHtHQUxMSVVNRFJJVkVSU19MTFZNMzN9JyBpZiAke0dBTExJVU1EUklWRVJTX0xMVk0zM19FTkFCTEVEfSBlbHNlICcnfSIKIAogUEFDS0FHRUNPTkZJR1tyNjAwXSA9ICIiCitQQUNLQUdFQ09ORklHW3ZpcmdsXSA9ICIiCiAKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3I2MDAnLCAnLHI2MDAnLCAnJywgZCl9IgotR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIix2aXJnbCIKK0dBTExJVU1EUklWRVJTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2aXJnbCcsICcsdmlyZ2wnLCAnJywgZCl9IgogCiBQQUNLQUdFQ09ORklHW2dhbGxpdW1dID0gIi1EZ2FsbGl1bS1kcml2ZXJzPSR7R0FMTElVTURSSVZFUlN9LCAtRGdhbGxpdW0tZHJpdmVycz0nJyIKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bS1sbHZtXSA9ICItRGxsdm09dHJ1ZSAtRHNoYXJlZC1sbHZtPXRydWUsIC1EbGx2bT1mYWxzZSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKQEAgLTE0Nyw2ICsxNjEsNyBAQAogRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCitDRkxBR1NfYXBwZW5kX2FybXY2ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKIAogIyBSZW1vdmUgdGhlIG1lc2EgZGVwZW5kZW5jeSBvbiBtZXNhLWRldiwgYXMgbWVzYSBpcyBlbXB0eQogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTkuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGIzM2RmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlICR7QlBOfS5pbmMKLQotU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVjMDQ3NzMyYjgxNjUxZGRiMzQxNTk3NTI4YjRiMDk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5MDAwYTBmN2RiYmQ4MmUxOTNiODFhOGYxYmYwYzExOGVhYjdjYTk3NWMwMzI5MTgxOTY4NTk2ZTU0OGUzMGYiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIm1lc2EtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi0jYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKLSNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZlZTI4YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8yMC4wLjIuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS12YzQtdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtb3V0cHV0LW9mLXRpbWVzcGVjLW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tbWlzZGV0ZWN0cy02NGJpdC1hdG9taWNzLW9uLW1pcHMtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMWNhNTljZDkyYzM4Y2I4ZTFhNThiNjJiMDFjM2UwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTU0ZjFjYjY2OTU1MDYwNmFhYjhjZWI0NzUxMDVkMTVhZWI4MTRmY2E1YTc3OGNlNzBkMGZkMTBlOThlODZmIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJtZXNhLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgJiYgZGVmaW5lZChFR0xfTk9fWDExKSQvI2VsaWYgZGVmaW5lZChfX3VuaXhfXykgXCZcJiBkZWZpbmVkKEVHTF9OT19YMTEpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAorICAgIGZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhYmY4NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGY4YjMyOTAxOTgxYTA2YThkYjQxNjliODJhNzA0ZGNmN2U4YjY1NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE1OjQzOjU3IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCByZXByb2R1Y2liaWxpdHkKKworQ2hhbmdlcyB0aGUgY29tbWVudCBpbiBwYW5nby1lbnVtLXR5cGVzLmMgdG8gcmVmZXJlbmNlIHRoZSBmaWxlIGJhc2VuYW1lCitpbnN0ZWFkIG9mIHRoZSBmdWxsIHBhdGguIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpcworcmVwcm9kdWNpYmxlIHdoZW4gaXQgaXMgaW5jbHVkZWQgaW4gc291cmNlIHBhY2thZ2VzIG1lYW50IGZvciBkZWJ1Z2dpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3BhbmdvL21lcmdlX3JlcXVlc3RzLzE1OV0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIHBhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSBiL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQoraW5kZXggZDkyMmM2OTEuLjBkNTVlZjc0IDEwMDY0NAorLS0tIGEvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlCisrKysgYi9wYW5nby9wYW5nby1lbnVtLXR5cGVzLmMudGVtcGxhdGUKK0BAIC02LDcgKzYsNyBAQAorIC8qKiogRU5EIGZpbGUtaGVhZGVyICoqKi8KKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCistLyogZW51bWVyYXRpb25zIGZyb20gIkBmaWxlbmFtZUAiICovCisrLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKyAvKioqIEJFR0lOIHZhbHVlLWhlYWRlciAqKiovCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOWViZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1Ta2lwLXRoYWktYnJlYWstdGVzdHMtd2l0aG91dC1saWJ0aGFpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxMmJlYjM5OTI1YjVhNDU3NGE3Y2ZkODYwNzNiNTliY2ViNDlmNzkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dGhpYXMgQ2xhc2VuIDxtY2xhc2VuQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDQgU2VwIDIwMTkgMTU6NTE6MDYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gU2tpcCB0aGFpIGJyZWFrIHRlc3RzIHdpdGhvdXQgbGlidGhhaQotCi1JZiB3ZSBkb24ndCBoYXZlIGxpYnRoYWksIHRoZXNlIHRlc3RzIGZhaWwuCi0KLUNsb3NlczogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3BhbmdvL2lzc3Vlcy80MjAKLS0tLQotIHRlc3RzL21lc29uLmJ1aWxkIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKLWluZGV4IDRjMjJjMTJjLi5jNjE3MzMxZiAxMDA2NDQKLS0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCi0rKysgYi90ZXN0cy9tZXNvbi5idWlsZAotQEAgLTg5LDkgKzg5LDEyIEBAIHRlc3RfYnJlYWtzX2RhdGEgPSBbCi0gICAnYnJlYWtzL29uZScsCi0gICAnYnJlYWtzL3R3bycsCi0gICAnYnJlYWtzL3RocmVlJywKLS0gICdicmVha3MvZm91cicsCi0gXQotIAotK2lmIHRoYWlfZGVwLmZvdW5kKCkKLSsgIHRlc3RfYnJlYWtzX2RhdGEgKz0gWyAnYnJlYWtzL2ZvdXInLCBdCi0rZW5kaWYKLSsKLSB0ZXN0X2l0ZW1zX2RhdGEgPSBbCi0gICAnaXRlbWl6ZS9vbmUnLAotIF0KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEzOGVmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ta2lwLXRoYWktYnJlYWstdGVzdHMtd2l0aG91dC1saWJ0aGFpLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGIwYTMyNDNiYTMzZTAyYWFhNzc1NDEyZjhlNWY0MTIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzZTFlNDFiYTgzODczN2UyMDA2MTFmZjAwMWUzYjMwNGMyY2E0Y2RiYmE2M2QyMDBhMjBkYjBiMGRkYzBmODZjIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enogZnJpYmlkaSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbC10ZXN0cz10cnVlLCAtRGluc3RhbGwtdGVzdHM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RoYWldID0gIiwsbGlidGhhaSIKLQotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwotCi1MRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiY2FudGFyZWxsLWZvbnRzIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLWVuLXVzIgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAotICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVlOGFiYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzc1Y2M1YjgzM2Q5MzRkOThlODMzNDM4MzJlMjBlNWQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2NmE1YjZjYzEzZGI3M2VmZWQ2N2I4ZTkzMzU4NDUwOWY4ZGRiN2IxMGE4YTQwYzM4NTBjYTRhOTg1ZWExYjFmIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enogZnJpYmlkaSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICIsLHZpcnR1YWwvbGlieDExIGxpYnhmdCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbC10ZXN0cz10cnVlLCAtRGluc3RhbGwtdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RoYWldID0gIiwsbGlidGhhaSIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJworCitkb19jb25maWd1cmVfcHJlcGVuZF90b29sY2hhaW4tY2xhbmcoKSB7CisgICAgc2VkIC1pIC1lICIvV2Vycm9yPWltcGxpY2l0LWZhbGx0aHJvdWdoL2QiICR7U30vbWVzb24uYnVpbGQKK30KKworTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImNhbnRhcmVsbC1mb250cyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1lbi11cyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKKyAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgppbmRleCA2OTZkNDM4Li41OGQxMGQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICIwZDFhNDdhNGMxMGQ0ZGQ3MjI1YmQ2NTEwZjgxOTE2ODRiMzEyMzVlIgorU1JDUkVWID0gIjYxMjZjMmQ0ZTQ3NmM3NzcwZDIxNmZmYTE5MzJjMTBlMmE1YTc4MTMiCiAjICh3aGVuIFBWIGdvZXMgYWJvdmUgMS4wIHJlbW92ZSB0aGUgdHJhaWxpbmcgcikKIFBWID0gIjEuMCtnaXRyJHtTUkNQVn0iCiAKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgIGZpCiB9CiAKKyMgRm9yY2libHkgc3RyaXAgYmVjYXVzZSBQaWdsaXQgaXMgKmh1Z2UqCiBPRUNNQUtFX1RBUkdFVF9JTlNUQUxMID0gImluc3RhbGwvc3RyaXAiCiAKIFJERVBFTkRTXyR7UE59ID0gIndhZmZsZSB3YWZmbGUtYmluIHB5dGhvbjMgcHl0aG9uMy1tYWtvIHB5dGhvbjMtanNvbiBcCkBAIC01NSw1ICs1Niw5IEBACiAKIElOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gYWxyZWFkeS1zdHJpcHBlZCIKIAorIyBBcyBub3RoaW5nIGJ1aWxkcyBhZ2FpbnN0IFBpZ2xpdCB3ZSBkb24ndCBuZWVkIHRvIGhhdmUgYW55dGhpbmcgaW4gdGhlCisjIHN5c3Jvb3QsIGVzcGVjaWFsbHkgd2hlbiB0aGlzIGlzIH4yR0Igb2YgdGVzdCBzdWl0ZQorU1lTUk9PVF9ESVJTX3JlbW92ZSA9ICIke2xpYmRpcn0iCisKICMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKIENDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmQxZDUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDYzNzg4YzYzZWQzOWEzY2U5OTk0ZjQzMTVkODk5N2UxYTkzMDBkNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNiBKYW4gMjAyMCAxMjo0NDo0MiArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogdXNlICdweXRob24zJyBkaXJlY3RseSBmb3IgcHl0aG9uCisKK1RoaXMgYXZvaWRzIGEgZGVwZW5kZW5jeSBvbiB0YXJnZXQgcHl0aG9uIChkdWUgdG8gbWVzb24gcHJvYmluZworaXRzIGNvbmZpZ3VyYXRpb24pLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNjgyZDdjOC4uMTlkMmVhZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTYwLDcgKzYwLDcgQEAgZm9yZWFjaCB3IDogd2FybmluZ3MKKyAgICBlbmRpZgorIGVuZGZvcmVhY2gKKyAKKy1wcm9nX3B5dGhvbiA9IGltcG9ydCgncHl0aG9uJykuZmluZF9pbnN0YWxsYXRpb24oJ3B5dGhvbjMnKQorK3Byb2dfcHl0aG9uID0gJ3B5dGhvbjMnCisgCisgbGliZHJtX2RlcCA9IGRlcGVuZGVuY3koJ2xpYmRybScsIHZlcnNpb24gOiAnPj0yLjQuNTAnKQorIHRocmVhZF9kZXAgPSBkZXBlbmRlbmN5KCd0aHJlYWRzJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMGQ4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlZpckdMIHZpcnR1YWwgT3BlbkdMIHJlbmRlcmVyIgotREVTQ1JJUFRJT04gPSAiVmlyZ2lsIGlzIGEgcmVzZWFyY2ggcHJvamVjdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgb2YgXAotY3JlYXRpbmcgYSB2aXJ0dWFsIDNEIEdQVSBmb3IgdXNlIGluc2lkZSBxZW11IHZpcnR1YWwgbWFjaGluZXMsIHRoYXQgYWxsb3dzIFwKLXRoZSBndWVzdCBvcGVyYXRpbmcgc3lzdGVtIHRvIHVzZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBob3N0IEdQVSB0byBcCi1hY2NlbGVyYXRlIDNEIHJlbmRlcmluZy4iCi1IT01FUEFHRSA9ICJodHRwczovL3ZpcmdpbDNkLmdpdGh1Yi5pby8iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzgxYzA4ZWVlZmQ5NDE4ZmNhOGY4ODMwOWE3NmRiMTAiCi0KLURFUEVORFMgPSAibGliZHJtIG1lc2EgbGliZXBveHkiCi1TUkNSRVYgPSAiNDhjYzk2YzlhZWJiOWQwMTY0ODMwYTE1N2VmYzg5MTZmMDhmMDBjMCIKLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvdmlyZ2xyZW5kZXJlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdhbGxpdW0tRXhwYW5kLWxpYmMtY2hlY2stdG8tYmUtcGxhdGZvcm0tT1MtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNDZiODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJWaXJHTCB2aXJ0dWFsIE9wZW5HTCByZW5kZXJlciIKK0RFU0NSSVBUSU9OID0gIlZpcmdpbCBpcyBhIHJlc2VhcmNoIHByb2plY3QgdG8gaW52ZXN0aWdhdGUgdGhlIHBvc3NpYmlsaXR5IG9mIFwKK2NyZWF0aW5nIGEgdmlydHVhbCAzRCBHUFUgZm9yIHVzZSBpbnNpZGUgcWVtdSB2aXJ0dWFsIG1hY2hpbmVzLCB0aGF0IGFsbG93cyBcCit0aGUgZ3Vlc3Qgb3BlcmF0aW5nIHN5c3RlbSB0byB1c2UgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgaG9zdCBHUFUgdG8gXAorYWNjZWxlcmF0ZSAzRCByZW5kZXJpbmcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly92aXJnaWwzZC5naXRodWIuaW8vIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4MWMwOGVlZWZkOTQxOGZjYThmODgzMDlhNzZkYjEwIgorCitERVBFTkRTID0gImxpYmRybSBtZXNhIGxpYmVwb3h5IgorU1JDUkVWID0gIjdkMjA0ZjM5MjdiZTY1ZmIzMzY1ZGNlMDFkYmNkMDRkNDQ3YTQ5ODUiCitTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3ZpcmdscmVuZGVyZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nYWxsaXVtLUV4cGFuZC1saWJjLWNoZWNrLXRvLWJlLXBsYXRmb3JtLU9TLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtdXNlLXB5dGhvbjMtZGlyZWN0bHktZm9yLXB5dGhvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGM1YmZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gNThmNTc2ZDZmMjQwYjA4OTU3YTQwMjk2MGNkZjA2Yzc0MjAxYWM3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMjI6MTY6MTUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIEFTU0lNUF9MSUJfSU5TVEFMTF9ESVIgdG8gc2VhcmNoIGxpYnJhcnkKKworVXNlIEFTU0lNUF9MSUJfSU5TVEFMTF9ESVIgcmF0aGVyIHRoYW4gaGFyZGNvZGVkIC9saWIgdG8gc2VhcmNoIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBhc3NpbXBUYXJnZXRzLXJlbGVhc2UuY21ha2UuaW4gfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbiBiL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbgoraW5kZXggZjNkYjhmMS4uYjhhMDY2YSAxMDA2NDQKKy0tLSBhL2Fzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbgorKysrIGIvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCitAQCAtNDIsMTEgKzQyLDExIEBAIGlmKE1TVkMpCisgICAgICMgSW1wb3J0IHRhcmdldCAiYXNzaW1wOjphc3NpbXAiIGZvciBjb25maWd1cmF0aW9uICJSZWxlYXNlIgorICAgICBzZXRfcHJvcGVydHkoVEFSR0VUIGFzc2ltcDo6YXNzaW1wIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9DT05GSUdVUkFUSU9OUyBSRUxFQVNFKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0lNUExJQl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtpbXBvcnRMaWJyYXJ5TmFtZX0iCisrICAgICAgSU1QT1JURURfSU1QTElCX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke2ltcG9ydExpYnJhcnlOYW1lfSIKKyAgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9iaW4vJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke2ltcG9ydExpYnJhcnlOYW1lfSIpCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtpbXBvcnRMaWJyYXJ5TmFtZX0iKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vYmluLyR7c2hhcmVkTGlicmFyeU5hbWV9IiApCisgICBlbHNlKCkKKyAgICAgc2V0KHN0YXRpY0xpYnJhcnlOYW1lICJhc3NpbXAke0FTU0lNUF9MSUJSQVJZX1NVRkZJWH1AQ01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYQCIpCitAQCAtNTQsMTAgKzU0LDEwIEBAIGlmKE1TVkMpCisgICAgICMgSW1wb3J0IHRhcmdldCAiYXNzaW1wOjphc3NpbXAiIGZvciBjb25maWd1cmF0aW9uICJSZWxlYXNlIgorICAgICBzZXRfcHJvcGVydHkoVEFSR0VUIGFzc2ltcDo6YXNzaW1wIEFQUEVORCBQUk9QRVJUWSBJTVBPUlRFRF9DT05GSUdVUkFUSU9OUyBSRUxFQVNFKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIpCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iKQorICAgZW5kaWYoKQorIAorIGVsc2UoKQorQEAgLTcwLDE3ICs3MCwxNyBAQCBlbHNlKCkKKyAgICAgZW5kaWYoKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworICAgICAgIElNUE9SVEVEX1NPTkFNRV9SRUxFQVNFICIke3NoYXJlZExpYnJhcnlOYW1lfSIKKy0gICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisrICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c2hhcmVkTGlicmFyeU5hbWV9IgorICAgICApCisgICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfVEFSR0VUUyBhc3NpbXA6OmFzc2ltcCApCistICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9saWIvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iICkKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3NoYXJlZExpYnJhcnlOYW1lfSIgKQorICAgZWxzZSgpCisgICAgIHNldChzdGF0aWNMaWJyYXJ5TmFtZSAibGliYXNzaW1wJHtBU1NJTVBfTElCUkFSWV9TVUZGSVh9QENNQUtFX1NUQVRJQ19MSUJSQVJZX1NVRkZJWEAiKQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoYXNzaW1wOjphc3NpbXAgUFJPUEVSVElFUworLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3N0YXRpY0xpYnJhcnlOYW1lfSIgKQorKyAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c3RhdGljTGlicmFyeU5hbWV9IiApCisgICBlbmRpZigpCisgZW5kaWYoKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2ExNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2gKQEAgLTAsMCArMSwxNjY0IEBACitGcm9tIDdmYzIyMGIyMzUwZDc4OTQyZmIzOTM1Y2FkMGIxNTY0NDE4ZWJlOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaW0gS3VsbGluZyA8a2ltLmt1bGxpbmdAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDIwOjMwOjQwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNsb3NlcyBodHRwczovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC9pc3N1ZXMvMjczMzogdXBkYXRlCisgb2YgemxpcCB0byBmaXggZ2NjIGJ1aWxkIGZvciB2OS4yLjAgMzIgYml0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wL2NvbW1pdC9mNzg0NDZiMTRhZmY0NmRiMmVmMjdkMDYyYTI3NWI2YTAxZmQ2OGIxXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb250cmliL3ppcC8uZ2l0aWdub3JlICAgICAgICAgIHwgICAyICsKKyBjb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dCAgICAgIHwgIDgzICsrKysrLQorIGNvbnRyaWIvemlwL1JFQURNRS5tZCAgICAgICAgICAgfCAgMTIgKy0KKyBjb250cmliL3ppcC9hcHB2ZXlvci55bWwgICAgICAgIHwgICAyICstCisgY29udHJpYi96aXAvc3JjL21pbml6LmggICAgICAgICB8IDQ1NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIGNvbnRyaWIvemlwL3NyYy96aXAuYyAgICAgICAgICAgfCAgNjIgKysrLS0KKyBjb250cmliL3ppcC9zcmMvemlwLmggICAgICAgICAgIHwgNDU3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dCB8ICAyNyArLQorIGNvbnRyaWIvemlwL3Rlc3QvdGVzdC5jICAgICAgICAgfCAgMzggKystCisgY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMgICB8ICAyNSArLQorIDEwIGZpbGVzIGNoYW5nZWQsIDgyMSBpbnNlcnRpb25zKCspLCAzNDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC8uZ2l0aWdub3JlIGIvY29udHJpYi96aXAvLmdpdGlnbm9yZQoraW5kZXggYTc5MDRhMWUuLjQ5YjJjYjJmIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvLmdpdGlnbm9yZQorKysrIGIvY29udHJpYi96aXAvLmdpdGlnbm9yZQorQEAgLTEsNiArMSw3IEBACisgL2J1aWxkLworIC90ZXN0L2J1aWxkLworIC94Y29kZXByb2ovCisrLnZzY29kZS8KKyAKKyAjIE9iamVjdCBmaWxlcworICoubworQEAgLTU0LDMgKzU1LDQgQEAgemlwLmRpci8KKyB0ZXN0L3Rlc3QuZXhlLnZjeHByb2ouZmlsdGVycworIHRlc3QvdGVzdC5leGUudmN4cHJvagorIHRlc3QvdGVzdC5leGUuZGlyLworKworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0IGIvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI0NmRiYjFkLi43NzkxNmQyZSAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0CisrKysgYi9jb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dAorQEAgLTEsMTAgKzEsMTQgQEAKKy1jbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44KQorLXByb2plY3QoemlwKQorLWVuYWJsZV9sYW5ndWFnZShDKQorK2NtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjApCisrCisrcHJvamVjdCh6aXAKKysgIExBTkdVQUdFUyBDCisrICBWRVJTSU9OICIwLjEuMTUiKQorIHNldChDTUFLRV9NT0RVTEVfUEFUSCAiJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlIiAke0NNQUtFX01PRFVMRV9QQVRIfSkKKyAKKytvcHRpb24oQ01BS0VfRElTQUJMRV9URVNUSU5HICJEaXNhYmxlIHRlc3QgY3JlYXRpb24iIE9GRikKKysKKyBpZiAoTVNWQykKKy0gICMgVXNlIHNlY3VyZSBmdW5jdGlvbnMgYnkgZGVmYXVhbHQgYW5kIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0ICJkZXByZWNhdGVkIiBmdW5jdGlvbnMKKysgICMgVXNlIHNlY3VyZSBmdW5jdGlvbnMgYnkgZGVmYXVsdCBhbmQgc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgImRlcHJlY2F0ZWQiIGZ1bmN0aW9ucworICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTPTEiKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9TRUNVUkVfQ1BQX09WRVJMT0FEX1NUQU5EQVJEX05BTUVTX0NPVU5UPTEiKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL0QgX0NSVF9OT05TVERDX05PX1dBUk5JTkdTPTEgL0QgX0NSVF9TRUNVUkVfTk9fV0FSTklOR1M9MSIpCitAQCAtMTIsMjggKzE2LDgwIEBAIGVsc2VpZiAoIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJHTlUiIE9SCisgICAgICAgICAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIiBPUgorICAgICAgICAgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJBcHBsZUNsYW5nIikKKyAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1zdGQ9Yzk5IC1XYWxsIC1XZXh0cmEgLVdlcnJvciAtcGVkYW50aWMiKQorKyAgaWYoRU5BQkxFX0NPVkVSQUdFKQorKyAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZyAtTzAgLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlIikKKysgICAgc2V0KENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiR7Q01BS0VfRVhFX0xJTktFUl9GTEFHU30gLS1jb3ZlcmFnZSIpCisrICBlbmRpZigpCisgZW5kaWYgKE1TVkMpCisgCisgIyB6aXAKKyBzZXQoU1JDIHNyYy9taW5pei5oIHNyYy96aXAuaCBzcmMvemlwLmMpCisgYWRkX2xpYnJhcnkoJHtQUk9KRUNUX05BTUV9ICR7U1JDfSkKKy10YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke1BST0pFQ1RfTkFNRX0gSU5URVJGQUNFIHNyYykKKyt0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke1BST0pFQ1RfTkFNRX0gUFVCTElDCisrICAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vc3JjPgorKyAgJDxJTlNUQUxMX0lOVEVSRkFDRTppbmNsdWRlPgorKykKKyAKKyAjIHRlc3QKKyBpZiAoTk9UIENNQUtFX0RJU0FCTEVfVEVTVElORykKKyAgIGVuYWJsZV90ZXN0aW5nKCkKKyAgIGFkZF9zdWJkaXJlY3RvcnkodGVzdCkKKyAgIGZpbmRfcGFja2FnZShTYW5pdGl6ZXJzKQorLSAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9IHRlc3QuZXhlKQorLSAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9IHRlc3RfbWluaXouZXhlKQorKyAgYWRkX3Nhbml0aXplcnMoJHtQUk9KRUNUX05BTUV9ICR7dGVzdF9vdXR9ICR7dGVzdF9taW5pel9vdXR9KQorIGVuZGlmKCkKKyAKKysjIyMjCisrIyBJbnN0YWxsYXRpb24gKGh0dHBzOi8vZ2l0aHViLmNvbS9mb3JleGFtcGxlL3BhY2thZ2UtZXhhbXBsZSkgeworKworK3NldChDT05GSUdfSU5TVEFMTF9ESVIgImxpYi9jbWFrZS8ke1BST0pFQ1RfTkFNRX0iKQorK3NldChJTkNMVURFX0lOU1RBTExfRElSICJpbmNsdWRlIikKKysKKytzZXQoR0VORVJBVEVEX0RJUiAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2dlbmVyYXRlZCIpCisrCisrIyBDb25maWd1cmF0aW9uCisrc2V0KFZFUlNJT05fQ09ORklHICIke0dFTkVSQVRFRF9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZ1ZlcnNpb24uY21ha2UiKQorK3NldChQUk9KRUNUX0NPTkZJRyAiJHtHRU5FUkFURURfRElSfS8ke1BST0pFQ1RfTkFNRX1Db25maWcuY21ha2UiKQorK3NldChUQVJHRVRTX0VYUE9SVF9OQU1FICIke1BST0pFQ1RfTkFNRX1UYXJnZXRzIikKKytzZXQoTkFNRVNQQUNFICIke1BST0pFQ1RfTkFNRX06OiIpCisrCisrIyBJbmNsdWRlIG1vZHVsZSB3aXRoIGZ1Y3Rpb24gJ3dyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlJworK2luY2x1ZGUoQ01ha2VQYWNrYWdlQ29uZmlnSGVscGVycykKKysKKysjIE5vdGU6IFBST0pFQ1RfVkVSU0lPTiBpcyB1c2VkIGFzIGEgVkVSU0lPTgorK3dyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlKAorKyAgICAiJHtWRVJTSU9OX0NPTkZJR30iIENPTVBBVElCSUxJVFkgU2FtZU1ham9yVmVyc2lvbgorKykKKysKKysjIFVzZSB2YXJpYWJsZXM6CisrIyAgICogVEFSR0VUU19FWFBPUlRfTkFNRQorKyMgICAqIFBST0pFQ1RfTkFNRQorK2NvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19maWxlKAorKyAgICAiY21ha2UvQ29uZmlnLmNtYWtlLmluIgorKyAgICAiJHtQUk9KRUNUX0NPTkZJR30iCisrICAgIElOU1RBTExfREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisraW5zdGFsbCgKKysgICAgRklMRVMgIiR7UFJPSkVDVF9DT05GSUd9IiAiJHtWRVJTSU9OX0NPTkZJR30iCisrICAgIERFU1RJTkFUSU9OICIke0NPTkZJR19JTlNUQUxMX0RJUn0iCisrKQorKworK2luc3RhbGwoCisrICAgIEVYUE9SVCAiJHtUQVJHRVRTX0VYUE9SVF9OQU1FfSIKKysgICAgTkFNRVNQQUNFICIke05BTUVTUEFDRX0iCisrICAgIERFU1RJTkFUSU9OICIke0NPTkZJR19JTlNUQUxMX0RJUn0iCisrKQorKworKyMgfQorKworIGluc3RhbGwoVEFSR0VUUyAke1BST0pFQ1RfTkFNRX0KKysgICAgICAgIEVYUE9SVCAke1RBUkdFVFNfRVhQT1JUX05BTUV9CisgICAgICAgICBSVU5USU1FIERFU1RJTkFUSU9OIGJpbgorICAgICAgICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIKKyAgICAgICAgIExJQlJBUlkgREVTVElOQVRJT04gbGliCistICAgICAgICBDT01QT05FTlQgbGlicmFyeSkKKy1pbnN0YWxsKEZJTEVTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvemlwLmggREVTVElOQVRJT04gaW5jbHVkZSkKKysgICAgICAgIElOQ0xVREVTIERFU1RJTkFUSU9OICR7SU5DTFVERV9JTlNUQUxMX0RJUn0KKyspCisraW5zdGFsbChGSUxFUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vc3JjL3ppcC5oIERFU1RJTkFUSU9OICR7SU5DTFVERV9JTlNUQUxMX0RJUn0vemlwKQorIAorICMgdW5pbnN0YWxsIHRhcmdldCAoaHR0cHM6Ly9naXRsYWIua2l0d2FyZS5jb20vY21ha2UvY29tbXVuaXR5L3dpa2lzL0ZBUSNjYW4taS1kby1tYWtlLXVuaW5zdGFsbC13aXRoLWNtYWtlKQorIGlmKE5PVCBUQVJHRVQgdW5pbnN0YWxsKQorQEAgLTQ1LDMgKzEwMSwxMiBAQCBpZihOT1QgVEFSR0VUIHVuaW5zdGFsbCkKKyAgICAgYWRkX2N1c3RvbV90YXJnZXQodW5pbnN0YWxsCisgICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLVAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2NtYWtlL2NtYWtlX3VuaW5zdGFsbC5jbWFrZSkKKyBlbmRpZigpCisrCisrZmluZF9wYWNrYWdlKERveHlnZW4pCisraWYoRE9YWUdFTl9GT1VORCkKKysgICAgY29uZmlndXJlX2ZpbGUoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L0RveHlmaWxlLmluICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9Eb3h5ZmlsZSBAT05MWSkKKysgICAgYWRkX2N1c3RvbV90YXJnZXQoZG9jCisrICAgICAgICAke0RPWFlHRU5fRVhFQ1VUQUJMRX0gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L0RveHlmaWxlCisrICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0KKysgICAgICAgIENPTU1FTlQgIkdlbmVyYXRpbmcgQVBJIGRvY3VtZW50YXRpb24gd2l0aCBEb3h5Z2VuIiBWRVJCQVRJTSkKKytlbmRpZigpCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvUkVBRE1FLm1kIGIvY29udHJpYi96aXAvUkVBRE1FLm1kCitpbmRleCBkNWZiOGNkMi4uMTRlYjlhMzQgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9SRUFETUUubWQKKysrKyBiL2NvbnRyaWIvemlwL1JFQURNRS5tZAorQEAgLTcxLDcgKzcxLDcgQEAgaW50IGFyZyA9IDI7CisgemlwX2V4dHJhY3QoImZvby56aXAiLCAiL3RtcCIsIG9uX2V4dHJhY3RfZW50cnksICZhcmcpOworIGBgYAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5LgorKyogRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeS4KKyBgYGBjCisgdm9pZCAqYnVmID0gTlVMTDsKKyBzaXplX3QgYnVmc2l6ZTsKK0BAIC04OSw3ICs4OSw3IEBAIHppcF9jbG9zZSh6aXApOworIGZyZWUoYnVmKTsKKyBgYGAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeSAobm8gaW50ZXJuYWwgYWxsb2NhdGlvbikuCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IChubyBpbnRlcm5hbCBhbGxvY2F0aW9uKS4KKyBgYGBjCisgdW5zaWduZWQgY2hhciAqYnVmOworIHNpemVfdCBidWZzaXplOworQEAgLTExMCw3ICsxMTAsNyBAQCB6aXBfY2xvc2UoemlwKTsKKyBmcmVlKGJ1Zik7CisgYGBgCisgCistKiAgIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgdXNpbmcgY2FsbGJhY2suCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IHVzaW5nIGNhbGxiYWNrLgorIGBgYGMKKyBzdHJ1Y3QgYnVmZmVyX3QgeworICAgICBjaGFyICpkYXRhOworQEAgLTE0NCw3ICsxNDQsNyBAQCBmcmVlKGJ1Zi5kYXRhKTsKKyBgYGAKKyAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIGEgZmlsZS4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBhIGZpbGUuCisgYGBgYworIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oImZvby56aXAiLCAwLCAncicpOworIHsKK0BAIC0xNTcsNyArMTU3LDcgQEAgc3RydWN0IHppcF90ICp6aXAgPSB6aXBfb3BlbigiZm9vLnppcCIsIDAsICdyJyk7CisgemlwX2Nsb3NlKHppcCk7CisgYGBgCisgCistKiAgIExpc3Qgb2YgYWxsIHppcCBlbnRyaWVzCisrKiBMaXN0IG9mIGFsbCB6aXAgZW50cmllcworIGBgYGMKKyBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKCJmb28uemlwIiwgMCwgJ3InKTsKKyBpbnQgaSwgbiA9IHppcF90b3RhbF9lbnRyaWVzKHppcCk7CitAQCAtMTc0LDcgKzE3NCw3IEBAIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKyB6aXBfY2xvc2UoemlwKTsKKyBgYGAKKyAKKy0jIyBCaW5kaW5ncworKyMgQmluZGluZ3MKKyBDb21waWxlIHppcCBsaWJyYXJ5IGFzIGEgZHluYW1pYyBsaWJyYXJ5LgorIGBgYHNoZWxsCisgJCBta2RpciBidWlsZAorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbCBiL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbAoraW5kZXggMGJlNjM3M2MuLmVhMTdmNWRlIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvYXBwdmV5b3IueW1sCisrKysgYi9jb250cmliL3ppcC9hcHB2ZXlvci55bWwKK0BAIC0xLDQgKzEsNCBAQAorLXZlcnNpb246IHppcC0wLjEuOS57YnVpbGR9CisrdmVyc2lvbjogemlwLTAuMS4xNS57YnVpbGR9CisgYnVpbGRfc2NyaXB0OgorIC0gY21kOiA+LQorICAgICBjZCBjOlxwcm9qZWN0c1x6aXAKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9zcmMvbWluaXouaCBiL2NvbnRyaWIvemlwL3NyYy9taW5pei5oCitpbmRleCAyYzI3YTk0ZC4uYzRmY2ZiODMgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9zcmMvbWluaXouaAorKysrIGIvY29udHJpYi96aXAvc3JjL21pbml6LmgKK0BAIC0yMjEsNiArMjIxLDcgQEAKKyAjaWZuZGVmIE1JTklaX0hFQURFUl9JTkNMVURFRAorICNkZWZpbmUgTUlOSVpfSEVBREVSX0lOQ0xVREVECisgCisrI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKyAvLyBEZWZpbmVzIHRvIGNvbXBsZXRlbHkgZGlzYWJsZSBzcGVjaWZpYyBwb3J0aW9ucyBvZiBtaW5pei5jOgorQEAgLTI4NCw3ICsyODUsOCBAQAorIC8qIFNldCBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgb25seSBpZiBub3Qgc2V0ICovCisgI2lmICFkZWZpbmVkKE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUykKKyAjaWYgTUlOSVpfWDg2X09SX1g2NF9DUFUKKy0vKiBTZXQgTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTIHRvIDEgb24gQ1BVJ3MgdGhhdCBwZXJtaXQgZWZmaWNpZW50IGludGVnZXIgbG9hZHMgYW5kIHN0b3JlcyBmcm9tIHVuYWxpZ25lZCBhZGRyZXNzZXMuICovCisrLyogU2V0IE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyB0byAxIG9uIENQVSdzIHRoYXQgcGVybWl0IGVmZmljaWVudAorKyAqIGludGVnZXIgbG9hZHMgYW5kIHN0b3JlcyBmcm9tIHVuYWxpZ25lZCBhZGRyZXNzZXMuICovCisgI2RlZmluZSBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgMQorICNkZWZpbmUgTUlOSVpfVU5BTElHTkVEX1VTRV9NRU1DUFkKKyAjZWxzZQorQEAgLTM1NCw2ICszNTYsNDQgQEAgZW51bSB7CisgICBNWl9GSVhFRCA9IDQKKyB9OworIAorKy8qIG1pbml6IGVycm9yIGNvZGVzLiBCZSBzdXJlIHRvIHVwZGF0ZSBtel96aXBfZ2V0X2Vycm9yX3N0cmluZygpIGlmIHlvdSBhZGQgb3IKKysgKiBtb2RpZnkgdGhpcyBlbnVtLiAqLworK3R5cGVkZWYgZW51bSB7CisrICBNWl9aSVBfTk9fRVJST1IgPSAwLAorKyAgTVpfWklQX1VOREVGSU5FRF9FUlJPUiwKKysgIE1aX1pJUF9UT09fTUFOWV9GSUxFUywKKysgIE1aX1pJUF9GSUxFX1RPT19MQVJHRSwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9NRVRIT0QsCisrICBNWl9aSVBfVU5TVVBQT1JURURfRU5DUllQVElPTiwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9GRUFUVVJFLAorKyAgTVpfWklQX0ZBSUxFRF9GSU5ESU5HX0NFTlRSQUxfRElSLAorKyAgTVpfWklQX05PVF9BTl9BUkNISVZFLAorKyAgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0ssCisrICBNWl9aSVBfREVDT01QUkVTU0lPTl9GQUlMRUQsCisrICBNWl9aSVBfQ09NUFJFU1NJT05fRkFJTEVELAorKyAgTVpfWklQX1VORVhQRUNURURfREVDT01QUkVTU0VEX1NJWkUsCisrICBNWl9aSVBfQ1JDX0NIRUNLX0ZBSUxFRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9DRElSX1NJWkUsCisrICBNWl9aSVBfQUxMT0NfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfT1BFTl9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9DUkVBVEVfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfV1JJVEVfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9DTE9TRV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9TRUVLX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX1NUQVRfRkFJTEVELAorKyAgTVpfWklQX0lOVkFMSURfUEFSQU1FVEVSLAorKyAgTVpfWklQX0lOVkFMSURfRklMRU5BTUUsCisrICBNWl9aSVBfQlVGX1RPT19TTUFMTCwKKysgIE1aX1pJUF9JTlRFUk5BTF9FUlJPUiwKKysgIE1aX1pJUF9GSUxFX05PVF9GT1VORCwKKysgIE1aX1pJUF9BUkNISVZFX1RPT19MQVJHRSwKKysgIE1aX1pJUF9WQUxJREFUSU9OX0ZBSUxFRCwKKysgIE1aX1pJUF9XUklURV9DQUxMQkFDS19GQUlMRUQsCisrICBNWl9aSVBfVE9UQUxfRVJST1JTCisrfSBtel96aXBfZXJyb3I7CisrCisgLy8gTWV0aG9kCisgI2RlZmluZSBNWl9ERUZMQVRFRCA4CisgCitAQCAtNjk2LDYgKzczNiw3IEBAIHR5cGVkZWYgc2l6ZV90ICgqbXpfZmlsZV9yZWFkX2Z1bmMpKHZvaWQgKnBPcGFxdWUsIG16X3VpbnQ2NCBmaWxlX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwQnVmLCBzaXplX3Qgbik7CisgdHlwZWRlZiBzaXplX3QgKCptel9maWxlX3dyaXRlX2Z1bmMpKHZvaWQgKnBPcGFxdWUsIG16X3VpbnQ2NCBmaWxlX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcEJ1Ziwgc2l6ZV90IG4pOworK3R5cGVkZWYgbXpfYm9vbCAoKm16X2ZpbGVfbmVlZHNfa2VlcGFsaXZlKSh2b2lkICpwT3BhcXVlKTsKKyAKKyBzdHJ1Y3QgbXpfemlwX2ludGVybmFsX3N0YXRlX3RhZzsKKyB0eXBlZGVmIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnIG16X3ppcF9pbnRlcm5hbF9zdGF0ZTsKK0BAIC03MDcsMTMgKzc0OCwyNyBAQCB0eXBlZGVmIGVudW0geworICAgTVpfWklQX01PREVfV1JJVElOR19IQVNfQkVFTl9GSU5BTElaRUQgPSAzCisgfSBtel96aXBfbW9kZTsKKyAKKy10eXBlZGVmIHN0cnVjdCBtel96aXBfYXJjaGl2ZV90YWcgeworK3R5cGVkZWYgZW51bSB7CisrICBNWl9aSVBfVFlQRV9JTlZBTElEID0gMCwKKysgIE1aX1pJUF9UWVBFX1VTRVIsCisrICBNWl9aSVBfVFlQRV9NRU1PUlksCisrICBNWl9aSVBfVFlQRV9IRUFQLAorKyAgTVpfWklQX1RZUEVfRklMRSwKKysgIE1aX1pJUF9UWVBFX0NGSUxFLAorKyAgTVpfWklQX1RPVEFMX1RZUEVTCisrfSBtel96aXBfdHlwZTsKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisgICBtel91aW50NjQgbV9hcmNoaXZlX3NpemU7CisgICBtel91aW50NjQgbV9jZW50cmFsX2RpcmVjdG9yeV9maWxlX29mczsKKy0gIG16X3VpbnQgbV90b3RhbF9maWxlczsKKysKKysgIC8qIFdlIG9ubHkgc3VwcG9ydCB1cCB0byBVSU5UMzJfTUFYIGZpbGVzIGluIHppcDY0IG1vZGUuICovCisrICBtel91aW50MzIgbV90b3RhbF9maWxlczsKKyAgIG16X3ppcF9tb2RlIG1femlwX21vZGU7CisrICBtel96aXBfdHlwZSBtX3ppcF90eXBlOworKyAgbXpfemlwX2Vycm9yIG1fbGFzdF9lcnJvcjsKKyAKKy0gIG16X3VpbnQgbV9maWxlX29mZnNldF9hbGlnbm1lbnQ7CisrICBtel91aW50NjQgbV9maWxlX29mZnNldF9hbGlnbm1lbnQ7CisgCisgICBtel9hbGxvY19mdW5jIG1fcEFsbG9jOworICAgbXpfZnJlZV9mdW5jIG1fcEZyZWU7CitAQCAtNzIyLDYgKzc3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IG16X3ppcF9hcmNoaXZlX3RhZyB7CisgCisgICBtel9maWxlX3JlYWRfZnVuYyBtX3BSZWFkOworICAgbXpfZmlsZV93cml0ZV9mdW5jIG1fcFdyaXRlOworKyAgbXpfZmlsZV9uZWVkc19rZWVwYWxpdmUgbV9wTmVlZHNfa2VlcGFsaXZlOworICAgdm9pZCAqbV9wSU9fb3BhcXVlOworIAorICAgbXpfemlwX2ludGVybmFsX3N0YXRlICptX3BTdGF0ZTsKK0BAIC0xMjYzLDYgKzEzMTksOSBAQCBtel91aW50IHRkZWZsX2NyZWF0ZV9jb21wX2ZsYWdzX2Zyb21femlwX3BhcmFtcyhpbnQgbGV2ZWwsIGludCB3aW5kb3dfYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3kpOworICNlbmRpZiAvLyAjaWZuZGVmIE1JTklaX05PX1pMSUJfQVBJUworIAorKyNkZWZpbmUgTVpfVUlOVDE2X01BWCAoMHhGRkZGVSkKKysjZGVmaW5lIE1aX1VJTlQzMl9NQVggKDB4RkZGRkZGRkZVKQorKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKK0BAIC0xMzExLDYgKzEzNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIG16X3ZhbGlkYXRlX3VpbnQ2NFtzaXplb2YobXpfdWludDY0KSA9PSA4ID8gMSA6IC0xXTsKKyAgICAoKG16X3VpbnQzMikoKChjb25zdCBtel91aW50OCAqKShwKSlbM10pIDw8IDI0VSkpCisgI2VuZGlmCisgCisrI2RlZmluZSBNWl9SRUFEX0xFNjQocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIocCkpIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIoKGNvbnN0IG16X3VpbnQ4ICopKHApICsgc2l6ZW9mKG16X3VpbnQzMikpKSAgICAgICBcCisrICAgIDw8IDMyVSkpCisrCisgI2lmZGVmIF9NU0NfVkVSCisgI2RlZmluZSBNWl9GT1JDRUlOTElORSBfX2ZvcmNlaW5saW5lCisgI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKK0BAIC00MTYwLDYgKzQyMjQsMTcgQEAgZW51bSB7CisgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFID0gMzAsCisgICBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSA0NiwKKyAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSAyMiwKKysKKysgIC8qIFpJUDY0IGFyY2hpdmUgaWRlbnRpZmllciBhbmQgcmVjb3JkIHNpemVzICovCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRyA9IDB4MDYwNjRiNTAsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSUcgPSAweDA3MDY0YjUwLAorKyAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFID0gNTYsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFID0gMjAsCisrICBNWl9aSVA2NF9FWFRFTkRFRF9JTkZPUk1BVElPTl9GSUVMRF9IRUFERVJfSUQgPSAweDAwMDEsCisrICBNWl9aSVBfREFUQV9ERVNDUklQVE9SX0lEID0gMHgwODA3NGI1MCwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBURVJfU0laRTY0ID0gMjQsCisrICBNWl9aSVBfREFUQV9ERVNDUklQVEVSX1NJWkUzMiA9IDE2LAorKworICAgLy8gQ2VudHJhbCBkaXJlY3RvcnkgaGVhZGVyIHJlY29yZCBvZmZzZXRzCisgICBNWl9aSVBfQ0RIX1NJR19PRlMgPSAwLAorICAgTVpfWklQX0NESF9WRVJTSU9OX01BREVfQllfT0ZTID0gNCwKK0BAIC00MTk5LDYgKzQyNzQsMzEgQEAgZW51bSB7CisgICBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTID0gMTIsCisgICBNWl9aSVBfRUNESF9DRElSX09GU19PRlMgPSAxNiwKKyAgIE1aX1pJUF9FQ0RIX0NPTU1FTlRfU0laRV9PRlMgPSAyMCwKKysKKysgIC8qIFpJUDY0IEVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBsb2NhdG9yIG9mZnNldHMgKi8KKysgIE1aX1pJUDY0X0VDRExfU0lHX09GUyA9IDAsICAgICAgICAgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RMX05VTV9ESVNLX0NESVJfT0ZTID0gNCwgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNETF9SRUxfT0ZTX1RPX1pJUDY0X0VDRFJfT0ZTID0gOCwgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDRExfVE9UQUxfTlVNQkVSX09GX0RJU0tTX09GUyA9IDE2LCAvKiA0IGJ5dGVzICovCisrCisrICAvKiBaSVA2NCBFbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgaGVhZGVyIG9mZnNldHMgKi8KKysgIE1aX1pJUDY0X0VDREhfU0lHX09GUyA9IDAsICAgICAgICAgICAgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX1NJWkVfT0ZfUkVDT1JEX09GUyA9IDQsICAgICAgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9WRVJTSU9OX01BREVfQllfT0ZTID0gMTIsICAgICAgICAgIC8qIDIgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfVkVSU0lPTl9ORUVERURfT0ZTID0gMTQsICAgICAgICAgICAvKiAyIGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTID0gMTYsICAgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9OVU1fRElTS19DRElSX09GUyA9IDIwLCAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUyA9IDI0LCAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMgPSAzMiwgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX1NJWkVfT0ZTID0gNDAsICAgICAgICAgICAgICAgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9PRlNfT0ZTID0gNDgsICAgICAgICAgICAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVBfVkVSU0lPTl9NQURFX0JZX0RPU19GSUxFU1lTVEVNX0lEID0gMCwKKysgIE1aX1pJUF9ET1NfRElSX0FUVFJJQlVURV9CSVRGTEFHID0gMHgxMCwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfSVNfRU5DUllQVEVEID0gMSwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfQ09NUFJFU1NFRF9QQVRDSF9GTEFHID0gMzIsCisrICBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX1VTRVNfU1RST05HX0VOQ1JZUFRJT04gPSA2NCwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfTE9DQUxfRElSX0lTX01BU0tFRCA9IDgxOTIsCisrICBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX1VURjggPSAxIDw8IDExCisgfTsKKyAKKyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtNDIxMSw3ICs0MzExLDI0IEBAIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnIHsKKyAgIG16X3ppcF9hcnJheSBtX2NlbnRyYWxfZGlyOworICAgbXpfemlwX2FycmF5IG1fY2VudHJhbF9kaXJfb2Zmc2V0czsKKyAgIG16X3ppcF9hcnJheSBtX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzOworKworKyAgLyogVGhlIGZsYWdzIHBhc3NlZCBpbiB3aGVuIHRoZSBhcmNoaXZlIGlzIGluaXRpYWxseSBvcGVuZWQuICovCisrICB1aW50MzJfdCBtX2luaXRfZmxhZ3M7CisrCisrICAvKiBNWl9UUlVFIGlmIHRoZSBhcmNoaXZlIGhhcyBhIHppcDY0IGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBoZWFkZXJzLCBldGMuCisrICAgKi8KKysgIG16X2Jvb2wgbV96aXA2NDsKKysKKysgIC8qIE1aX1RSVUUgaWYgd2UgZm91bmQgemlwNjQgZXh0ZW5kZWQgaW5mbyBpbiB0aGUgY2VudHJhbCBkaXJlY3RvcnkgKG1femlwNjQKKysgICAqIHdpbGwgYWxzbyBiZSBzbGFtbWVkIHRvIHRydWUgdG9vLCBldmVuIGlmIHdlIGRpZG4ndCBmaW5kIGEgemlwNjQgZW5kIG9mCisrICAgKiBjZW50cmFsIGRpciBoZWFkZXIsIGV0Yy4pICovCisrICBtel9ib29sIG1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzOworKworKyAgLyogVGhlc2UgZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBmaWxlLCBGSUxFLCBtZW1vcnksIGFuZCBtZW1vcnkvaGVhcCByZWFkL3dyaXRlCisrICAgKiBoZWxwZXJzLiAqLworICAgTVpfRklMRSAqbV9wRmlsZTsKKysgIG16X3VpbnQ2NCBtX2ZpbGVfYXJjaGl2ZV9zdGFydF9vZnM7CisrCisgICB2b2lkICptX3BNZW07CisgICBzaXplX3QgbV9tZW1fc2l6ZTsKKyAgIHNpemVfdCBtX21lbV9jYXBhY2l0eTsKK0BAIC00MzYzLDYgKzQ0ODAsMTMgQEAgc3RhdGljIG16X2Jvb2wgbXpfemlwX3NldF9maWxlX3RpbWVzKGNvbnN0IGNoYXIgKnBGaWxlbmFtZSwgdGltZV90IGFjY2Vzc190aW1lLAorICNlbmRpZiAvKiAjaWZuZGVmIE1JTklaX05PX1NURElPICovCisgI2VuZGlmIC8qICNpZm5kZWYgTUlOSVpfTk9fVElNRSAqLworIAorK3N0YXRpYyBNWl9GT1JDRUlOTElORSBtel9ib29sIG16X3ppcF9zZXRfZXJyb3IobXpfemlwX2FyY2hpdmUgKnBaaXAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel96aXBfZXJyb3IgZXJyX251bSkgeworKyAgaWYgKHBaaXApCisrICAgIHBaaXAtPm1fbGFzdF9lcnJvciA9IGVycl9udW07CisrICByZXR1cm4gTVpfRkFMU0U7CisrfQorKworIHN0YXRpYyBtel9ib29sIG16X3ppcF9yZWFkZXJfaW5pdF9pbnRlcm5hbChtel96aXBfYXJjaGl2ZSAqcFppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIGZsYWdzKSB7CisgICAodm9pZClmbGFnczsKK0BAIC00NDgwLDEyNyArNDYwNCwzNDYgQEAgbXpfemlwX3JlYWRlcl9zb3J0X2NlbnRyYWxfZGlyX29mZnNldHNfYnlfZmlsZW5hbWUobXpfemlwX2FyY2hpdmUgKnBaaXApIHsKKyAgIH0KKyB9CisgCistc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9yZWFkX2NlbnRyYWxfZGlyKG16X3ppcF9hcmNoaXZlICpwWmlwLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgZmxhZ3MpIHsKKy0gIG16X3VpbnQgY2Rpcl9zaXplLCBudW1fdGhpc19kaXNrLCBjZGlyX2Rpc2tfaW5kZXg7CistICBtel91aW50NjQgY2Rpcl9vZnM7Cisrc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9sb2NhdGVfaGVhZGVyX3NpZyhtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQzMiByZWNvcmRfc2lnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIHJlY29yZF9zaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfaW50NjQgKnBPZnMpIHsKKyAgIG16X2ludDY0IGN1cl9maWxlX29mczsKKy0gIGNvbnN0IG16X3VpbnQ4ICpwOworICAgbXpfdWludDMyIGJ1Zl91MzJbNDA5NiAvIHNpemVvZihtel91aW50MzIpXTsKKyAgIG16X3VpbnQ4ICpwQnVmID0gKG16X3VpbnQ4ICopYnVmX3UzMjsKKy0gIG16X2Jvb2wgc29ydF9jZW50cmFsX2RpciA9CistICAgICAgKChmbGFncyAmIE1aX1pJUF9GTEFHX0RPX05PVF9TT1JUX0NFTlRSQUxfRElSRUNUT1JZKSA9PSAwKTsKKy0gIC8vIEJhc2ljIHNhbml0eSBjaGVja3MgLSByZWplY3QgZmlsZXMgd2hpY2ggYXJlIHRvbyBzbWFsbCwgYW5kIGNoZWNrIHRoZSBmaXJzdAorLSAgLy8gNCBieXRlcyBvZiB0aGUgZmlsZSB0byBtYWtlIHN1cmUgYSBsb2NhbCBoZWFkZXIgaXMgdGhlcmUuCistICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKworKyAgLyogQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsICovCisrICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCByZWNvcmRfc2l6ZSkKKyAgICAgcmV0dXJuIE1aX0ZBTFNFOworLSAgLy8gRmluZCB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZCBieSBzY2FubmluZyB0aGUgZmlsZSBmcm9tIHRoZSBlbmQKKy0gIC8vIHRvd2FyZHMgdGhlIGJlZ2lubmluZy4KKysKKysgIC8qIEZpbmQgdGhlIHJlY29yZCBieSBzY2FubmluZyB0aGUgZmlsZSBmcm9tIHRoZSBlbmQgdG93YXJkcyB0aGUgYmVnaW5uaW5nLiAqLworICAgY3VyX2ZpbGVfb2ZzID0KKyAgICAgICBNWl9NQVgoKG16X2ludDY0KXBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gKG16X2ludDY0KXNpemVvZihidWZfdTMyKSwgMCk7CisgICBmb3IgKDs7KSB7CisgICAgIGludCBpLAorICAgICAgICAgbiA9IChpbnQpTVpfTUlOKHNpemVvZihidWZfdTMyKSwgcFppcC0+bV9hcmNoaXZlX3NpemUgLSBjdXJfZmlsZV9vZnMpOworKworICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGN1cl9maWxlX29mcywgcEJ1ZiwgbikgIT0gKG16X3VpbnQpbikKKyAgICAgICByZXR1cm4gTVpfRkFMU0U7CistICAgIGZvciAoaSA9IG4gLSA0OyBpID49IDA7IC0taSkKKy0gICAgICBpZiAoTVpfUkVBRF9MRTMyKHBCdWYgKyBpKSA9PSBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpCistICAgICAgICBicmVhazsKKysKKysgICAgZm9yIChpID0gbiAtIDQ7IGkgPj0gMDsgLS1pKSB7CisrICAgICAgbXpfdWludCBzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBpKTsKKysgICAgICBpZiAocyA9PSByZWNvcmRfc2lnKSB7CisrICAgICAgICBpZiAoKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gKGN1cl9maWxlX29mcyArIGkpKSA+PSByZWNvcmRfc2l6ZSkKKysgICAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgICB9CisrCisgICAgIGlmIChpID49IDApIHsKKyAgICAgICBjdXJfZmlsZV9vZnMgKz0gaTsKKyAgICAgICBicmVhazsKKyAgICAgfQorKworKyAgICAvKiBHaXZlIHVwIGlmIHdlJ3ZlIHNlYXJjaGVkIHRoZSBlbnRpcmUgZmlsZSwgb3Igd2UndmUgZ29uZSBiYWNrICJ0b28gZmFyIgorKyAgICAgKiAofjY0a2IpICovCisgICAgIGlmICgoIWN1cl9maWxlX29mcykgfHwgKChwWmlwLT5tX2FyY2hpdmVfc2l6ZSAtIGN1cl9maWxlX29mcykgPj0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKDB4RkZGRiArIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1aX1VJTlQxNl9NQVggKyByZWNvcmRfc2l6ZSkpKQorICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysKKyAgICAgY3VyX2ZpbGVfb2ZzID0gTVpfTUFYKGN1cl9maWxlX29mcyAtIChzaXplb2YoYnVmX3UzMikgLSAzKSwgMCk7CisgICB9CistICAvLyBSZWFkIGFuZCB2ZXJpZnkgdGhlIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSByZWNvcmQuCisrCisrICAqcE9mcyA9IGN1cl9maWxlX29mczsKKysgIHJldHVybiBNWl9UUlVFOworK30KKysKKytzdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX3JlYWRfY2VudHJhbF9kaXIobXpfemlwX2FyY2hpdmUgKnBaaXAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQgZmxhZ3MpIHsKKysgIG16X3VpbnQgY2Rpcl9zaXplID0gMCwgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9IDAsIG51bV90aGlzX2Rpc2sgPSAwLAorKyAgICAgICAgICBjZGlyX2Rpc2tfaW5kZXggPSAwOworKyAgbXpfdWludDY0IGNkaXJfb2ZzID0gMDsKKysgIG16X2ludDY0IGN1cl9maWxlX29mcyA9IDA7CisrICBjb25zdCBtel91aW50OCAqcDsKKysKKysgIG16X3VpbnQzMiBidWZfdTMyWzQwOTYgLyBzaXplb2YobXpfdWludDMyKV07CisrICBtel91aW50OCAqcEJ1ZiA9IChtel91aW50OCAqKWJ1Zl91MzI7CisrICBtel9ib29sIHNvcnRfY2VudHJhbF9kaXIgPQorKyAgICAgICgoZmxhZ3MgJiBNWl9aSVBfRkxBR19ET19OT1RfU09SVF9DRU5UUkFMX0RJUkVDVE9SWSkgPT0gMCk7CisrICBtel91aW50MzIgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX2xvY2F0b3JfdTMyCisrICAgICAgWyhNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFICsgc2l6ZW9mKG16X3VpbnQzMikgLSAxKSAvCisrICAgICAgIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwWmlwNjRfbG9jYXRvciA9IChtel91aW50OCAqKXppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9sb2NhdG9yX3UzMjsKKysKKysgIG16X3VpbnQzMiB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfaGVhZGVyX3UzMgorKyAgICAgIFsoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgc2l6ZW9mKG16X3VpbnQzMikgLSAxKSAvCisrICAgICAgIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyID0KKysgICAgICAobXpfdWludDggKil6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfaGVhZGVyX3UzMjsKKysKKysgIG16X3VpbnQ2NCB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID0gMDsKKysKKysgIC8qIEJhc2ljIHNhbml0eSBjaGVja3MgLSByZWplY3QgZmlsZXMgd2hpY2ggYXJlIHRvbyBzbWFsbCwgYW5kIGNoZWNrIHRoZSBmaXJzdAorKyAgICogNCBieXRlcyBvZiB0aGUgZmlsZSB0byBtYWtlIHN1cmUgYSBsb2NhbCBoZWFkZXIgaXMgdGhlcmUuICovCisrICBpZiAocFppcC0+bV9hcmNoaXZlX3NpemUgPCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgaWYgKCFtel96aXBfcmVhZGVyX2xvY2F0ZV9oZWFkZXJfc2lnKAorKyAgICAgICAgICBwWmlwLCBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcsCisrICAgICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUsICZjdXJfZmlsZV9vZnMpKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRkFJTEVEX0ZJTkRJTkdfQ0VOVFJBTF9ESVIpOworKworKyAgLyogUmVhZCBhbmQgdmVyaWZ5IHRoZSBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgcmVjb3JkLiAqLworICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCBjdXJfZmlsZV9vZnMsIHBCdWYsCisgICAgICAgICAgICAgICAgICAgICBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSAhPQorICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKy0gIGlmICgoTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9TSUdfT0ZTKSAhPQorLSAgICAgICBNWl9aSVBfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpIHx8CistICAgICAgKChwWmlwLT5tX3RvdGFsX2ZpbGVzID0KKy0gICAgICAgICAgICBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpKSAhPQorLSAgICAgICBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfTlVNX0VOVFJJRVNfT05fRElTS19PRlMpKSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCk7CisrCisrICBpZiAoTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9TSUdfT0ZTKSAhPQorKyAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX05PVF9BTl9BUkNISVZFKTsKKysKKysgIGlmIChjdXJfZmlsZV9vZnMgPj0gKE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgKworKyAgICAgICAgICAgICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSkgeworKyAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgIGN1cl9maWxlX29mcyAtIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUsCisrICAgICAgICAgICAgICAgICAgICAgIHBaaXA2NF9sb2NhdG9yLAorKyAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFKSA9PQorKyAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSkgeworKyAgICAgIGlmIChNWl9SRUFEX0xFMzIocFppcDY0X2xvY2F0b3IgKyBNWl9aSVA2NF9FQ0RMX1NJR19PRlMpID09CisrICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJRykgeworKyAgICAgICAgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcyA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgICAgICBwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfUkVMX09GU19UT19aSVA2NF9FQ0RSX09GUyk7CisrICAgICAgICBpZiAoemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcyA+CisrICAgICAgICAgICAgKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX05PVF9BTl9BUkNISVZFKTsKKysKKysgICAgICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwgemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX29mcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpID09CisrICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKSB7CisrICAgICAgICAgIGlmIChNWl9SRUFEX0xFMzIocFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArIE1aX1pJUDY0X0VDREhfU0lHX09GUykgPT0KKysgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHKSB7CisrICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjQgPSBNWl9UUlVFOworKyAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgfQorKyAgICB9CisrICB9CisgCisrICBwWmlwLT5tX3RvdGFsX2ZpbGVzID0gTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1RPVEFMX0VOVFJJRVNfT0ZTKTsKKysgIGNkaXJfZW50cmllc19vbl90aGlzX2Rpc2sgPQorKyAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUyk7CisgICBudW1fdGhpc19kaXNrID0gTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9OVU1fVEhJU19ESVNLX09GUyk7CisgICBjZGlyX2Rpc2tfaW5kZXggPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTKTsKKysgIGNkaXJfc2l6ZSA9IE1aX1JFQURfTEUzMihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9TSVpFX09GUyk7CisrICBjZGlyX29mcyA9IE1aX1JFQURfTEUzMihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9PRlNfT0ZTKTsKKysKKysgIGlmIChwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NCkgeworKyAgICBtel91aW50MzIgemlwNjRfdG90YWxfbnVtX29mX2Rpc2tzID0KKysgICAgICAgIE1aX1JFQURfTEUzMihwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfVE9UQUxfTlVNQkVSX09GX0RJU0tTX09GUyk7CisrICAgIG16X3VpbnQ2NCB6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXMgPSBNWl9SRUFEX0xFNjQoCisrICAgICAgICBwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX1RPVEFMX0VOVFJJRVNfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2sgPSBNWl9SRUFEX0xFNjQoCisrICAgICAgICBwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X3NpemVfb2ZfZW5kX29mX2NlbnRyYWxfZGlyX3JlY29yZCA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX1NJWkVfT0ZfUkVDT1JEX09GUyk7CisrICAgIG16X3VpbnQ2NCB6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5ID0KKysgICAgICAgIE1aX1JFQURfTEU2NChwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX1NJWkVfT0ZTKTsKKysKKysgICAgaWYgKHppcDY0X3NpemVfb2ZfZW5kX29mX2NlbnRyYWxfZGlyX3JlY29yZCA8CisrICAgICAgICAoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFIC0gMTIpKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKworKyAgICBpZiAoemlwNjRfdG90YWxfbnVtX29mX2Rpc2tzICE9IDFVKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0spOworKworKyAgICAvKiBDaGVjayBmb3IgbWluaXoncyBwcmFjdGljYWwgbGltaXRzICovCisrICAgIGlmICh6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXMgPiBNWl9VSU5UMzJfTUFYKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9UT09fTUFOWV9GSUxFUyk7CisrCisrICAgIHBaaXAtPm1fdG90YWxfZmlsZXMgPSAobXpfdWludDMyKXppcDY0X2NkaXJfdG90YWxfZW50cmllczsKKysKKysgICAgaWYgKHppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2sgPiBNWl9VSU5UMzJfTUFYKQorKyAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9UT09fTUFOWV9GSUxFUyk7CisrCisrICAgIGNkaXJfZW50cmllc19vbl90aGlzX2Rpc2sgPQorKyAgICAgICAgKG16X3VpbnQzMil6aXA2NF9jZGlyX3RvdGFsX2VudHJpZXNfb25fdGhpc19kaXNrOworKworKyAgICAvKiBDaGVjayBmb3IgbWluaXoncyBjdXJyZW50IHByYWN0aWNhbCBsaW1pdHMgKHNvcnJ5LCB0aGlzIHNob3VsZCBiZSBlbm91Z2gKKysgICAgICogZm9yIG1pbGxpb25zIG9mIGZpbGVzKSAqLworKyAgICBpZiAoemlwNjRfc2l6ZV9vZl9jZW50cmFsX2RpcmVjdG9yeSA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX0NESVJfU0laRSk7CisrCisrICAgIGNkaXJfc2l6ZSA9IChtel91aW50MzIpemlwNjRfc2l6ZV9vZl9jZW50cmFsX2RpcmVjdG9yeTsKKysKKysgICAgbnVtX3RoaXNfZGlzayA9IE1aX1JFQURfTEUzMihwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTKTsKKysKKysgICAgY2Rpcl9kaXNrX2luZGV4ID0gTVpfUkVBRF9MRTMyKHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfWklQNjRfRUNESF9OVU1fRElTS19DRElSX09GUyk7CisrCisrICAgIGNkaXJfb2ZzID0KKysgICAgICAgIE1aX1JFQURfTEU2NChwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9DRElSX09GU19PRlMpOworKyAgfQorKworKyAgaWYgKHBaaXAtPm1fdG90YWxfZmlsZXMgIT0gY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzaykKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisgICBpZiAoKChudW1fdGhpc19kaXNrIHwgY2Rpcl9kaXNrX2luZGV4KSAhPSAwKSAmJgorICAgICAgICgobnVtX3RoaXNfZGlzayAhPSAxKSB8fCAoY2Rpcl9kaXNrX2luZGV4ICE9IDEpKSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKyAKKy0gIGlmICgoY2Rpcl9zaXplID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTKSkgPAorLSAgICAgIHBaaXAtPm1fdG90YWxfZmlsZXMgKiBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKysgIGlmIChjZGlyX3NpemUgPCBwWmlwLT5tX3RvdGFsX2ZpbGVzICogTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKyAKKy0gIGNkaXJfb2ZzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX09GU19PRlMpOworICAgaWYgKChjZGlyX29mcyArIChtel91aW50NjQpY2Rpcl9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworIAorICAgcFppcC0+bV9jZW50cmFsX2RpcmVjdG9yeV9maWxlX29mcyA9IGNkaXJfb2ZzOworIAorICAgaWYgKHBaaXAtPm1fdG90YWxfZmlsZXMpIHsKKyAgICAgbXpfdWludCBpLCBuOworLQorLSAgICAvLyBSZWFkIHRoZSBlbnRpcmUgY2VudHJhbCBkaXJlY3RvcnkgaW50byBhIGhlYXAgYmxvY2ssIGFuZCBhbGxvY2F0ZSBhbm90aGVyCistICAgIC8vIGhlYXAgYmxvY2sgdG8gaG9sZCB0aGUgdW5zb3J0ZWQgY2VudHJhbCBkaXIgZmlsZSByZWNvcmQgb2Zmc2V0cywgYW5kCistICAgIC8vIGFub3RoZXIgdG8gaG9sZCB0aGUgc29ydGVkIGluZGljZXMuCisrICAgIC8qIFJlYWQgdGhlIGVudGlyZSBjZW50cmFsIGRpcmVjdG9yeSBpbnRvIGEgaGVhcCBibG9jaywgYW5kIGFsbG9jYXRlIGFub3RoZXIKKysgICAgICogaGVhcCBibG9jayB0byBob2xkIHRoZSB1bnNvcnRlZCBjZW50cmFsIGRpciBmaWxlIHJlY29yZCBvZmZzZXRzLCBhbmQKKysgICAgICogcG9zc2libHkgYW5vdGhlciB0byBob2xkIHRoZSBzb3J0ZWQgaW5kaWNlcy4gKi8KKyAgICAgaWYgKCghbXpfemlwX2FycmF5X3Jlc2l6ZShwWmlwLCAmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXIsIGNkaXJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9GQUxTRSkpIHx8CisgICAgICAgICAoIW16X3ppcF9hcnJheV9yZXNpemUocFppcCwgJnBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyX29mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV90b3RhbF9maWxlcywgTVpfRkFMU0UpKSkKKy0gICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisgCisgICAgIGlmIChzb3J0X2NlbnRyYWxfZGlyKSB7CisgICAgICAgaWYgKCFtel96aXBfYXJyYXlfcmVzaXplKHBaaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwWmlwLT5tX3BTdGF0ZS0+bV9zb3J0ZWRfY2VudHJhbF9kaXJfb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV90b3RhbF9maWxlcywgTVpfRkFMU0UpKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisgICAgIH0KKyAKKyAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCBjZGlyX29mcywKKyAgICAgICAgICAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXIubV9wLAorICAgICAgICAgICAgICAgICAgICAgICBjZGlyX3NpemUpICE9IGNkaXJfc2l6ZSkKKy0gICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQpOworIAorLSAgICAvLyBOb3cgY3JlYXRlIGFuIGluZGV4IGludG8gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGZpbGUgcmVjb3JkcywgZG8gc29tZQorLSAgICAvLyBiYXNpYyBzYW5pdHkgY2hlY2tpbmcgb24gZWFjaCByZWNvcmQsIGFuZCBjaGVjayBmb3IgemlwNjQgZW50cmllcyAod2hpY2gKKy0gICAgLy8gYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKS4KKysgICAgLyogTm93IGNyZWF0ZSBhbiBpbmRleCBpbnRvIHRoZSBjZW50cmFsIGRpcmVjdG9yeSBmaWxlIHJlY29yZHMsIGRvIHNvbWUKKysgICAgICogYmFzaWMgc2FuaXR5IGNoZWNraW5nIG9uIGVhY2ggcmVjb3JkICovCisgICAgIHAgPSAoY29uc3QgbXpfdWludDggKilwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3A7CisgICAgIGZvciAobiA9IGNkaXJfc2l6ZSwgaSA9IDA7IGkgPCBwWmlwLT5tX3RvdGFsX2ZpbGVzOyArK2kpIHsKKy0gICAgICBtel91aW50IHRvdGFsX2hlYWRlcl9zaXplLCBjb21wX3NpemUsIGRlY29tcF9zaXplLCBkaXNrX2luZGV4OworKyAgICAgIG16X3VpbnQgdG90YWxfaGVhZGVyX3NpemUsIGRpc2tfaW5kZXgsIGJpdF9mbGFncywgZmlsZW5hbWVfc2l6ZSwKKysgICAgICAgICAgZXh0X2RhdGFfc2l6ZTsKKysgICAgICBtel91aW50NjQgY29tcF9zaXplLCBkZWNvbXBfc2l6ZSwgbG9jYWxfaGVhZGVyX29mczsKKysKKyAgICAgICBpZiAoKG4gPCBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpIHx8CisgICAgICAgICAgIChNWl9SRUFEX0xFMzIocCkgIT0gTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrCisgICAgICAgTVpfWklQX0FSUkFZX0VMRU1FTlQoJnBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyX29mZnNldHMsIG16X3VpbnQzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKSA9CisgICAgICAgICAgIChtel91aW50MzIpKHAgLSAoY29uc3QgbXpfdWludDggKilwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3ApOworKworICAgICAgIGlmIChzb3J0X2NlbnRyYWxfZGlyKQorICAgICAgICAgTVpfWklQX0FSUkFZX0VMRU1FTlQoJnBaaXAtPm1fcFN0YXRlLT5tX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyLCBpKSA9IGk7CisrCisgICAgICAgY29tcF9zaXplID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0NPTVBSRVNTRURfU0laRV9PRlMpOworICAgICAgIGRlY29tcF9zaXplID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0RFQ09NUFJFU1NFRF9TSVpFX09GUyk7CistICAgICAgaWYgKCgoIU1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9NRVRIT0RfT0ZTKSkgJiYKKy0gICAgICAgICAgIChkZWNvbXBfc2l6ZSAhPSBjb21wX3NpemUpKSB8fAorLSAgICAgICAgICAoZGVjb21wX3NpemUgJiYgIWNvbXBfc2l6ZSkgfHwgKGRlY29tcF9zaXplID09IDB4RkZGRkZGRkYpIHx8CistICAgICAgICAgIChjb21wX3NpemUgPT0gMHhGRkZGRkZGRikpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgbG9jYWxfaGVhZGVyX29mcyA9IE1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9MT0NBTF9IRUFERVJfT0ZTKTsKKysgICAgICBmaWxlbmFtZV9zaXplID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0ZJTEVOQU1FX0xFTl9PRlMpOworKyAgICAgIGV4dF9kYXRhX3NpemUgPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRVhUUkFfTEVOX09GUyk7CisrCisrICAgICAgaWYgKCghcFppcC0+bV9wU3RhdGUtPm1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzKSAmJgorKyAgICAgICAgICAoZXh0X2RhdGFfc2l6ZSkgJiYKKysgICAgICAgICAgKE1aX01BWChNWl9NQVgoY29tcF9zaXplLCBkZWNvbXBfc2l6ZSksIGxvY2FsX2hlYWRlcl9vZnMpID09CisrICAgICAgICAgICBNWl9VSU5UMzJfTUFYKSkgeworKyAgICAgICAgLyogQXR0ZW1wdCB0byBmaW5kIHppcDY0IGV4dGVuZGVkIGluZm9ybWF0aW9uIGZpZWxkIGluIHRoZSBlbnRyeSdzIGV4dHJhCisrICAgICAgICAgKiBkYXRhICovCisrICAgICAgICBtel91aW50MzIgZXh0cmFfc2l6ZV9yZW1haW5pbmcgPSBleHRfZGF0YV9zaXplOworKworKyAgICAgICAgaWYgKGV4dHJhX3NpemVfcmVtYWluaW5nKSB7CisrICAgICAgICAgIGNvbnN0IG16X3VpbnQ4ICpwRXh0cmFfZGF0YTsKKysgICAgICAgICAgdm9pZCAqYnVmID0gTlVMTDsKKysKKysgICAgICAgICAgaWYgKE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSArIGZpbGVuYW1lX3NpemUgKyBleHRfZGF0YV9zaXplID4KKysgICAgICAgICAgICAgIG4pIHsKKysgICAgICAgICAgICBidWYgPSBNWl9NQUxMT0MoZXh0X2RhdGFfc2l6ZSk7CisrICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQorKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0FMTE9DX0ZBSUxFRCk7CisrCisrICAgICAgICAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkaXJfb2ZzICsgTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWVfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGV4dF9kYXRhX3NpemUpICE9IGV4dF9kYXRhX3NpemUpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GSUxFX1JFQURfRkFJTEVEKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgPSAobXpfdWludDggKilidWY7CisrICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgPSBwICsgTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgZmlsZW5hbWVfc2l6ZTsKKysgICAgICAgICAgfQorKworKyAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgbXpfdWludDMyIGZpZWxkX2lkOworKyAgICAgICAgICAgIG16X3VpbnQzMiBmaWVsZF9kYXRhX3NpemU7CisrCisrICAgICAgICAgICAgaWYgKGV4dHJhX3NpemVfcmVtYWluaW5nIDwgKHNpemVvZihtel91aW50MTYpICogMikpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBmaWVsZF9pZCA9IE1aX1JFQURfTEUxNihwRXh0cmFfZGF0YSk7CisrICAgICAgICAgICAgZmllbGRfZGF0YV9zaXplID0gTVpfUkVBRF9MRTE2KHBFeHRyYV9kYXRhICsgc2l6ZW9mKG16X3VpbnQxNikpOworKworKyAgICAgICAgICAgIGlmICgoZmllbGRfZGF0YV9zaXplICsgc2l6ZW9mKG16X3VpbnQxNikgKiAyKSA+CisrICAgICAgICAgICAgICAgIGV4dHJhX3NpemVfcmVtYWluaW5nKSB7CisrICAgICAgICAgICAgICBNWl9GUkVFKGJ1Zik7CisrICAgICAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZpZWxkX2lkID09IE1aX1pJUDY0X0VYVEVOREVEX0lORk9STUFUSU9OX0ZJRUxEX0hFQURFUl9JRCkgeworKyAgICAgICAgICAgICAgLyogT2ssIHRoZSBhcmNoaXZlIGRpZG4ndCBoYXZlIGFueSB6aXA2NCBoZWFkZXJzIGJ1dCBpdCB1c2VzIGEKKysgICAgICAgICAgICAgICAqIHppcDY0IGV4dGVuZGVkIGluZm9ybWF0aW9uIGZpZWxkIHNvIG1hcmsgaXQgYXMgemlwNjQgYW55d2F5CisrICAgICAgICAgICAgICAgKiAodGhpcyBjYW4gb2NjdXIgd2l0aCBpbmZvemlwJ3MgemlwIHV0aWwgd2hlbiBpdCByZWFkcworKyAgICAgICAgICAgICAgICogY29tcHJlc3NlcyBmaWxlcyBmcm9tIHN0ZGluKS4gKi8KKysgICAgICAgICAgICAgIHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0ID0gTVpfVFJVRTsKKysgICAgICAgICAgICAgIHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0X2hhc19leHRlbmRlZF9pbmZvX2ZpZWxkcyA9IE1aX1RSVUU7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgcEV4dHJhX2RhdGEgKz0gc2l6ZW9mKG16X3VpbnQxNikgKiAyICsgZmllbGRfZGF0YV9zaXplOworKyAgICAgICAgICAgIGV4dHJhX3NpemVfcmVtYWluaW5nID0KKysgICAgICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcgLSBzaXplb2YobXpfdWludDE2KSAqIDIgLSBmaWVsZF9kYXRhX3NpemU7CisrICAgICAgICAgIH0gd2hpbGUgKGV4dHJhX3NpemVfcmVtYWluaW5nKTsKKysKKysgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgfQorKyAgICAgIH0KKysKKysgICAgICAvKiBJJ3ZlIHNlZW4gYXJjaGl2ZXMgdGhhdCBhcmVuJ3QgbWFya2VkIGFzIHppcDY0IHRoYXQgdXNlcyB6aXA2NCBleHQKKysgICAgICAgKiBkYXRhLCBhcmdoICovCisrICAgICAgaWYgKChjb21wX3NpemUgIT0gTVpfVUlOVDMyX01BWCkgJiYgKGRlY29tcF9zaXplICE9IE1aX1VJTlQzMl9NQVgpKSB7CisrICAgICAgICBpZiAoKCghTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX01FVEhPRF9PRlMpKSAmJgorKyAgICAgICAgICAgICAoZGVjb21wX3NpemUgIT0gY29tcF9zaXplKSkgfHwKKysgICAgICAgICAgICAoZGVjb21wX3NpemUgJiYgIWNvbXBfc2l6ZSkpCisrICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgIH0KKysKKyAgICAgICBkaXNrX2luZGV4ID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0RJU0tfU1RBUlRfT0ZTKTsKKy0gICAgICBpZiAoKGRpc2tfaW5kZXggIT0gbnVtX3RoaXNfZGlzaykgJiYgKGRpc2tfaW5kZXggIT0gMSkpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CistICAgICAgaWYgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMihwICsgTVpfWklQX0NESF9MT0NBTF9IRUFERVJfT0ZTKSArCistICAgICAgICAgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICsgY29tcF9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorLSAgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgICAgIGlmICgoZGlza19pbmRleCA9PSBNWl9VSU5UMTZfTUFYKSB8fAorKyAgICAgICAgICAoKGRpc2tfaW5kZXggIT0gbnVtX3RoaXNfZGlzaykgJiYgKGRpc2tfaW5kZXggIT0gMSkpKQorKyAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisrICAgICAgaWYgKGNvbXBfc2l6ZSAhPSBNWl9VSU5UMzJfTUFYKSB7CisrICAgICAgICBpZiAoKChtel91aW50NjQpTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpICsKKysgICAgICAgICAgICAgTVpfWklQX0xPQ0FMX0RJUl9IRUFERVJfU0laRSArIGNvbXBfc2l6ZSkgPiBwWmlwLT5tX2FyY2hpdmVfc2l6ZSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgfQorKworKyAgICAgIGJpdF9mbGFncyA9IE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9CSVRfRkxBR19PRlMpOworKyAgICAgIGlmIChiaXRfZmxhZ3MgJiBNWl9aSVBfR0VORVJBTF9QVVJQT1NFX0JJVF9GTEFHX0xPQ0FMX0RJUl9JU19NQVNLRUQpCisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfRU5DUllQVElPTik7CisrCisgICAgICAgaWYgKCh0b3RhbF9oZWFkZXJfc2l6ZSA9IE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9GSUxFTkFNRV9MRU5fT0ZTKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9FWFRSQV9MRU5fT0ZTKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9DT01NRU5UX0xFTl9PRlMpKSA+CisgICAgICAgICAgIG4pCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysKKyAgICAgICBuIC09IHRvdGFsX2hlYWRlcl9zaXplOworICAgICAgIHAgKz0gdG90YWxfaGVhZGVyX3NpemU7CisgICAgIH0KK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9zcmMvemlwLmMgYi9jb250cmliL3ppcC9zcmMvemlwLmMKK2luZGV4IGZmM2E4ZmUxLi4xYWJjZmQ4ZiAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3NyYy96aXAuYworKysrIGIvY29udHJpYi96aXAvc3JjL3ppcC5jCitAQCAtMjQsNyArMjQsNiBAQAorICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgJiYgICBcCisgICAgKFApWzFdID09ICc6JykKKyAjZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAoSEFTX0RFVklDRShQKSA/IDIgOiAwKQorLSNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKKyAKKyAjZWxzZQorIAorQEAgLTQ4LDcgKzQ3LDcgQEAgaW50IHN5bWxpbmsoY29uc3QgY2hhciAqdGFyZ2V0LCBjb25zdCBjaGFyICpsaW5rcGF0aCk7IC8vIG5lZWRlZCBvbiBMaW51eAorICNlbmRpZgorIAorICNpZm5kZWYgSVNTTEFTSAorLSNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKKysjZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCisgI2VuZGlmCisgCisgI2RlZmluZSBDTEVBTlVQKHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC03OCwyNiArNzcsMzQgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmJhc2VfbmFtZShjb25zdCBjaGFyICpuYW1lKSB7CisgICByZXR1cm4gYmFzZTsKKyB9CisgCistc3RhdGljIGludCBta3BhdGgoY29uc3QgY2hhciAqcGF0aCkgeworLSAgY2hhciBjb25zdCAqcDsKKytzdGF0aWMgaW50IG1rcGF0aChjaGFyICpwYXRoKSB7CisrICBjaGFyICpwOworICAgY2hhciBucGF0aFtNQVhfUEFUSCArIDFdOworICAgaW50IGxlbiA9IDA7CisgICBpbnQgaGFzX2RldmljZSA9IEhBU19ERVZJQ0UocGF0aCk7CisgCisgICBtZW1zZXQobnBhdGgsIDAsIE1BWF9QQVRIICsgMSk7CistCistI2lmZGVmIF9XSU4zMgorLSAgLy8gb25seSBvbiB3aW5kb3dzIGZpeCB0aGUgcGF0aAorLSAgbnBhdGhbMF0gPSBwYXRoWzBdOworLSAgbnBhdGhbMV0gPSBwYXRoWzFdOworLSAgbGVuID0gMjsKKy0jZW5kaWYgLy8gX1dJTjMyCistICAgIAorKyAgaWYgKGhhc19kZXZpY2UpIHsKKysgICAgLy8gb25seSBvbiB3aW5kb3dzCisrICAgIG5wYXRoWzBdID0gcGF0aFswXTsKKysgICAgbnBhdGhbMV0gPSBwYXRoWzFdOworKyAgICBsZW4gPSAyOworKyAgfQorICAgZm9yIChwID0gcGF0aCArIGxlbjsgKnAgJiYgbGVuIDwgTUFYX1BBVEg7IHArKykgeworICAgICBpZiAoSVNTTEFTSCgqcCkgJiYgKCghaGFzX2RldmljZSAmJiBsZW4gPiAwKSB8fCAoaGFzX2RldmljZSAmJiBsZW4gPiAyKSkpIHsKKy0gICAgICBpZiAoTUtESVIobnBhdGgpID09IC0xKQorLSAgICAgICAgaWYgKGVycm5vICE9IEVFWElTVCkKKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCAgICAgICAgICAgICAgXAorKyAgICBkZWZpbmVkKF9fTUlOR1czMl9fKQorKyNlbHNlCisrICAgICAgaWYgKCdcXCcgPT0gKnApIHsKKysgICAgICAgICpwID0gJy8nOworKyAgICAgIH0KKysjZW5kaWYKKysKKysgICAgICBpZiAoTUtESVIobnBhdGgpID09IC0xKSB7CisrICAgICAgICBpZiAoZXJybm8gIT0gRUVYSVNUKSB7CisgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysgICAgICB9CisgICAgIH0KKyAgICAgbnBhdGhbbGVuKytdID0gKnA7CisgICB9CitAQCAtMjc5LDcgKzI4NiwxNCBAQCBpbnQgemlwX2VudHJ5X29wZW4oc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmVudHJ5bmFtZSkgeworICAgemlwLT5lbnRyeS5oZWFkZXJfb2Zmc2V0ID0gemlwLT5hcmNoaXZlLm1fYXJjaGl2ZV9zaXplOworICAgbWVtc2V0KHppcC0+ZW50cnkuaGVhZGVyLCAwLCBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICogc2l6ZW9mKG16X3VpbnQ4KSk7CisgICB6aXAtPmVudHJ5Lm1ldGhvZCA9IDA7CisrCisrICAvLyBVTklYIG9yIEFQUExFCisrI2lmIE1aX1BMQVRGT1JNID09IDMgfHwgTVpfUExBVEZPUk0gPT0gMTkKKysgIC8vIHJlZ3VsYXIgZmlsZSB3aXRoIHJ3LXItLXItLSBwZXJzbWlzc2lvbnMKKysgIHppcC0+ZW50cnkuZXh0ZXJuYWxfYXR0ciA9IChtel91aW50MzIpKDAxMDA2NDQpIDw8IDE2OworKyNlbHNlCisgICB6aXAtPmVudHJ5LmV4dGVybmFsX2F0dHIgPSAwOworKyNlbmRpZgorIAorICAgbnVtX2FsaWdubWVudF9wYWRkaW5nX2J5dGVzID0KKyAgICAgICBtel96aXBfd3JpdGVyX2NvbXB1dGVfcGFkZGluZ19uZWVkZWRfZm9yX2ZpbGVfYWxpZ25tZW50KHB6aXApOworQEAgLTY2MCw3ICs2NzQsNyBAQCBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkgeworICAgfQorIAorICAgaWYgKCFtel96aXBfcmVhZGVyX2V4dHJhY3RfdG9fbWVtX25vX2FsbG9jKHB6aXAsIChtel91aW50KXppcC0+ZW50cnkuaW5kZXgsCistICBidWYsIGJ1ZnNpemUsIDAsIE5VTEwsICAwKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmc2l6ZSwgMCwgTlVMTCwgMCkpIHsKKyAgICAgcmV0dXJuIC0xOworICAgfQorIAorQEAgLTY3MCwxMCArNjg0LDcgQEAgc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpIHsKKyBpbnQgemlwX2VudHJ5X2ZyZWFkKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkgeworICAgbXpfemlwX2FyY2hpdmUgKnB6aXAgPSBOVUxMOworICAgbXpfdWludCBpZHg7CistI2lmIGRlZmluZWQoX01TQ19WRVIpCistI2Vsc2UKKyAgIG16X3VpbnQzMiB4YXR0ciA9IDA7CistI2VuZGlmCisgICBtel96aXBfYXJjaGl2ZV9maWxlX3N0YXQgaW5mbzsKKyAKKyAgIGlmICghemlwKSB7CitAQCAtODc1LDEyICs4ODYsMTkgQEAgaW50IHppcF9leHRyYWN0KGNvbnN0IGNoYXIgKnppcG5hbWUsIGNvbnN0IGNoYXIgKmRpciwKKyAgICAgICBnb3RvIG91dDsKKyAgICAgfQorIAorLSAgICBpZiAoKCgoaW5mby5tX3ZlcnNpb25fbWFkZV9ieSA+PiA4KSA9PSAzKSB8fCAoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0gMTkpKSAvLyBpZiB6aXAgaXMgcHJvZHVjZWQgb24gVW5peCBvciBtYWNPUyAoMyBhbmQgMTkgZnJvbSBzZWN0aW9uIDQuNC4yLjIgb2YgemlwIHN0YW5kYXJkKQorLSAgICAgICAgJiYgaW5mby5tX2V4dGVybmFsX2F0dHIgJiAoMHgyMCA8PCAyNCkpIHsgLy8gYW5kIGhhcyBzeW0gbGluayBhdHRyaWJ1dGUgKDB4ODAgaXMgZmlsZSwgMHg0MCBpcyBkaXJlY3RvcnkpCisrICAgIGlmICgoKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09IDMpIHx8CisrICAgICAgICAgKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09CisrICAgICAgICAgIDE5KSkgLy8gaWYgemlwIGlzIHByb2R1Y2VkIG9uIFVuaXggb3IgbWFjT1MgKDMgYW5kIDE5IGZyb20KKysgICAgICAgICAgICAgICAvLyBzZWN0aW9uIDQuNC4yLjIgb2YgemlwIHN0YW5kYXJkKQorKyAgICAgICAgJiYgaW5mby5tX2V4dGVybmFsX2F0dHIgJgorKyAgICAgICAgICAgICAgICgweDIwIDw8IDI0KSkgeyAvLyBhbmQgaGFzIHN5bSBsaW5rIGF0dHJpYnV0ZSAoMHg4MCBpcyBmaWxlLCAweDQwCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGRpcmVjdG9yeSkKKyAjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCAgICAgICAgICAgICAgXAorICAgICBkZWZpbmVkKF9fTUlOR1czMl9fKQorLSNlbHNlICAgICAgCistICAgICAgaWYgKGluZm8ubV91bmNvbXBfc2l6ZSA+IE1BWF9QQVRIIHx8ICFtel96aXBfcmVhZGVyX2V4dHJhY3RfdG9fbWVtX25vX2FsbG9jKCZ6aXBfYXJjaGl2ZSwgaSwgc3ltbGlua190bywgTUFYX1BBVEgsIDAsIE5VTEwsIDApKSB7CisrI2Vsc2UKKysgICAgICBpZiAoaW5mby5tX3VuY29tcF9zaXplID4gTUFYX1BBVEggfHwKKysgICAgICAgICAgIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MoJnppcF9hcmNoaXZlLCBpLCBzeW1saW5rX3RvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCwgMCwgTlVMTCwgMCkpIHsKKyAgICAgICAgIGdvdG8gb3V0OworICAgICAgIH0KKyAgICAgICBzeW1saW5rX3RvW2luZm8ubV91bmNvbXBfc2l6ZV0gPSAnXDAnOworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy96aXAuaCBiL2NvbnRyaWIvemlwL3NyYy96aXAuaAoraW5kZXggNWYzOWRmNTAuLmE0OGQ2NGQ2IDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvc3JjL3ppcC5oCisrKysgYi9jb250cmliL3ppcC9zcmMvemlwLmgKK0BAIC0yMCwyNDEgKzIwLDI0MCBAQCBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKyAjaWYgIWRlZmluZWQoX1NTSVpFX1RfREVGSU5FRCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfREVGSU5FRF8pICYmICAgICAgICAgICAgICAgXAorLSAgICAhZGVmaW5lZChfU1NJWkVfVCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfKSAmJiAhZGVmaW5lZChfX3NzaXplX3RfZGVmaW5lZCkKKy0jZGVmaW5lIF9TU0laRV9UCisrICAgICFkZWZpbmVkKF9fREVGSU5FRF9zc2l6ZV90KSAmJiAhZGVmaW5lZChfX3NzaXplX3RfZGVmaW5lZCkgJiYgICAgICAgICAgICAgIFwKKysgICAgIWRlZmluZWQoX1NTSVpFX1QpICYmICFkZWZpbmVkKF9TU0laRV9UXykKKysKKyAvLyA2NC1iaXQgV2luZG93cyBpcyB0aGUgb25seSBtYWluc3RyZWFtIHBsYXRmb3JtCisgLy8gd2hlcmUgc2l6ZW9mKGxvbmcpICE9IHNpemVvZih2b2lkKikKKyAjaWZkZWYgX1dJTjY0CistdHlwZWRlZiBsb25nIGxvbmcgIHNzaXplX3Q7ICAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisrdHlwZWRlZiBsb25nIGxvbmcgc3NpemVfdDsgLyogYnl0ZSBjb3VudCBvciBlcnJvciAqLworICNlbHNlCistdHlwZWRlZiBsb25nICBzc2l6ZV90OyAgLyogYnl0ZSBjb3VudCBvciBlcnJvciAqLworK3R5cGVkZWYgbG9uZyBzc2l6ZV90OyAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisgI2VuZGlmCisrCisrI2RlZmluZSBfU1NJWkVfVF9ERUZJTkVECisrI2RlZmluZSBfU1NJWkVfVF9ERUZJTkVEXworKyNkZWZpbmUgX19ERUZJTkVEX3NzaXplX3QKKysjZGVmaW5lIF9fc3NpemVfdF9kZWZpbmVkCisrI2RlZmluZSBfU1NJWkVfVAorKyNkZWZpbmUgX1NTSVpFX1RfCisrCisgI2VuZGlmCisgCisgI2lmbmRlZiBNQVhfUEFUSAorICNkZWZpbmUgTUFYX1BBVEggMzI3NjcgLyogIyBjaGFycyBpbiBhIHBhdGggbmFtZSBpbmNsdWRpbmcgTlVMTCAqLworICNlbmRpZgorIAorKy8qKgorKyAqIEBtYWlucGFnZQorKyAqCisrICogRG9jdW1lbmF0aW9uIGZvciBAcmVmIHppcC4KKysgKi8KKysKKysvKioKKysgKiBAYWRkdG9ncm91cCB6aXAKKysgKiBAeworKyAqLworKworKy8qKgorKyAqIERlZmF1bHQgemlwIGNvbXByZXNzaW9uIGxldmVsLgorKyAqLworKworICNkZWZpbmUgWklQX0RFRkFVTFRfQ09NUFJFU1NJT05fTEVWRUwgNgorIAorLS8qCistICBUaGlzIGRhdGEgc3RydWN0dXJlIGlzIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeSB0byByZXByZXNlbnQgemlwIGFyY2hpdmUKKy0gIC0gZm9yd2FyZCBkZWNsYXJhdGlvbi4KKy0qLworKy8qKgorKyAqIEBzdHJ1Y3QgemlwX3QKKysgKgorKyAqIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IHRvIHJlcHJlc2VudCB6aXAgYXJjaGl2ZSAtCisrICogZm9yd2FyZCBkZWNsYXJhdGlvbi4KKysgKi8KKyBzdHJ1Y3QgemlwX3Q7CisgCistLyoKKy0gIE9wZW5zIHppcCBhcmNoaXZlIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGUuCistCistICBBcmdzOgorLSAgICB6aXBuYW1lOiB6aXAgYXJjaGl2ZSBmaWxlIG5hbWUuCistICAgIGxldmVsOiBjb21wcmVzc2lvbiBsZXZlbCAoMC05IGFyZSB0aGUgc3RhbmRhcmQgemxpYi1zdHlsZSBsZXZlbHMpLgorLSAgICBtb2RlOiBmaWxlIGFjY2VzcyBtb2RlLgorLSAgICAgICAgJ3InOiBvcGVucyBhIGZpbGUgZm9yIHJlYWRpbmcvZXh0cmFjdGluZyAodGhlIGZpbGUgbXVzdCBleGlzdHMpLgorLSAgICAgICAgJ3cnOiBjcmVhdGVzIGFuIGVtcHR5IGZpbGUgZm9yIHdyaXRpbmcuCistICAgICAgICAnYSc6IGFwcGVuZHMgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSB6aXAgYXJjaGl2ZSBoYW5kbGVyIG9yIE5VTEwgb24gZXJyb3IKKy0qLworKy8qKgorKyAqIE9wZW5zIHppcCBhcmNoaXZlIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGUuCisrICoKKysgKiBAcGFyYW0gemlwbmFtZSB6aXAgYXJjaGl2ZSBmaWxlIG5hbWUuCisrICogQHBhcmFtIGxldmVsIGNvbXByZXNzaW9uIGxldmVsICgwLTkgYXJlIHRoZSBzdGFuZGFyZCB6bGliLXN0eWxlIGxldmVscykuCisrICogQHBhcmFtIG1vZGUgZmlsZSBhY2Nlc3MgbW9kZS4KKysgKiAgICAgICAgLSAncic6IG9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy9leHRyYWN0aW5nICh0aGUgZmlsZSBtdXN0IGV4aXN0cykuCisrICogICAgICAgIC0gJ3cnOiBjcmVhdGVzIGFuIGVtcHR5IGZpbGUgZm9yIHdyaXRpbmcuCisrICogICAgICAgIC0gJ2EnOiBhcHBlbmRzIHRvIGFuIGV4aXN0aW5nIGFyY2hpdmUuCisrICoKKysgKiBAcmV0dXJuIHRoZSB6aXAgYXJjaGl2ZSBoYW5kbGVyIG9yIE5VTEwgb24gZXJyb3IKKysgKi8KKyBleHRlcm4gc3RydWN0IHppcF90ICp6aXBfb3Blbihjb25zdCBjaGFyICp6aXBuYW1lLCBpbnQgbGV2ZWwsIGNoYXIgbW9kZSk7CisgCistLyoKKy0gIENsb3NlcyB0aGUgemlwIGFyY2hpdmUsIHJlbGVhc2VzIHJlc291cmNlcyAtIGFsd2F5cyBmaW5hbGl6ZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0qLworKy8qKgorKyAqIENsb3NlcyB0aGUgemlwIGFyY2hpdmUsIHJlbGVhc2VzIHJlc291cmNlcyAtIGFsd2F5cyBmaW5hbGl6ZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKi8KKyBleHRlcm4gdm9pZCB6aXBfY2xvc2Uoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBPcGVucyBhbiBlbnRyeSBieSBuYW1lIGluIHRoZSB6aXAgYXJjaGl2ZS4KKy0gIEZvciB6aXAgYXJjaGl2ZSBvcGVuZWQgaW4gJ3cnIG9yICdhJyBtb2RlIHRoZSBmdW5jdGlvbiB3aWxsIGFwcGVuZAorLSAgYSBuZXcgZW50cnkuIEluIHJlYWRvbmx5IG1vZGUgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGxvY2F0ZSB0aGUgZW50cnkKKy0gIGluIGdsb2JhbCBkaWN0aW9uYXJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBlbnRyeW5hbWU6IGFuIGVudHJ5IG5hbWUgaW4gbG9jYWwgZGljdGlvbmFyeS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogT3BlbnMgYW4gZW50cnkgYnkgbmFtZSBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBGb3IgemlwIGFyY2hpdmUgb3BlbmVkIGluICd3JyBvciAnYScgbW9kZSB0aGUgZnVuY3Rpb24gd2lsbCBhcHBlbmQKKysgKiBhIG5ldyBlbnRyeS4gSW4gcmVhZG9ubHkgbW9kZSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gbG9jYXRlIHRoZSBlbnRyeQorKyAqIGluIGdsb2JhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBlbnRyeW5hbWUgYW4gZW50cnkgbmFtZSBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9vcGVuKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCBjaGFyICplbnRyeW5hbWUpOworIAorLS8qCistICBPcGVucyBhIG5ldyBlbnRyeSBieSBpbmRleCBpbiB0aGUgemlwIGFyY2hpdmUuCistICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgaWYgemlwIGFyY2hpdmUgd2FzIG9wZW5lZCBpbiAncicgKHJlYWRvbmx5KSBtb2RlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBpbmRleDogaW5kZXggaW4gbG9jYWwgZGljdGlvbmFyeS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogT3BlbnMgYSBuZXcgZW50cnkgYnkgaW5kZXggaW4gdGhlIHppcCBhcmNoaXZlLgorKyAqCisrICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHZhbGlkIGlmIHppcCBhcmNoaXZlIHdhcyBvcGVuZWQgaW4gJ3InIChyZWFkb25seSkgbW9kZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gaW5kZXggaW5kZXggaW4gbG9jYWwgZGljdGlvbmFyeS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfb3BlbmJ5aW5kZXgoc3RydWN0IHppcF90ICp6aXAsIGludCBpbmRleCk7CisgCistLyoKKy0gIENsb3NlcyBhIHppcCBlbnRyeSwgZmx1c2hlcyBidWZmZXIgYW5kIHJlbGVhc2VzIHJlc291cmNlcy4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogQ2xvc2VzIGEgemlwIGVudHJ5LCBmbHVzaGVzIGJ1ZmZlciBhbmQgcmVsZWFzZXMgcmVzb3VyY2VzLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9jbG9zZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYSBsb2NhbCBuYW1lIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0gIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiB1c2VyJ3MgZW50cnkgbmFtZSBhbmQgbG9jYWwgZW50cnkgbmFtZQorLSAgaXMgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aC4KKy0gIEZvbGxvd2luZyAuWklQIEZpbGUgRm9ybWF0IFNwZWNpZmljYXRpb24gLSB0aGUgcGF0aCBzdG9yZWQgTVVTVCBub3QgY29udGFpbgorLSAgYSBkcml2ZSBvciBkZXZpY2UgbGV0dGVyLCBvciBhIGxlYWRpbmcgc2xhc2guCistICBBbGwgc2xhc2hlcyBNVVNUIGJlIGZvcndhcmQgc2xhc2hlcyAnLycgYXMgb3Bwb3NlZCB0byBiYWNrd2FyZHMgc2xhc2hlcyAnXCcKKy0gIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQW1pZ2EgYW5kIFVOSVggZmlsZSBzeXN0ZW1zIGV0Yy4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHppcCBlbnRyeSBuYW1lLCBvciBOVUxMIG9uIGVycm9yLgorLSovCisrLyoqCisrICogUmV0dXJucyBhIGxvY2FsIG5hbWUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIncyBlbnRyeSBuYW1lIGFuZCBsb2NhbCBlbnRyeSBuYW1lCisrICogaXMgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aC4KKysgKiBGb2xsb3dpbmcgLlpJUCBGaWxlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIC0gdGhlIHBhdGggc3RvcmVkIE1VU1Qgbm90IGNvbnRhaW4KKysgKiBhIGRyaXZlIG9yIGRldmljZSBsZXR0ZXIsIG9yIGEgbGVhZGluZyBzbGFzaC4KKysgKiBBbGwgc2xhc2hlcyBNVVNUIGJlIGZvcndhcmQgc2xhc2hlcyAnLycgYXMgb3Bwb3NlZCB0byBiYWNrd2FyZHMgc2xhc2hlcyAnXCcKKysgKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEFtaWdhIGFuZCBVTklYIGZpbGUgc3lzdGVtcyBldGMuCisrICoKKysgKiBAcGFyYW0gemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCB6aXAgZW50cnkgbmFtZSwgb3IgTlVMTCBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gY29uc3QgY2hhciAqemlwX2VudHJ5X25hbWUoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBSZXR1cm5zIGFuIGluZGV4IG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBpbmRleCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBSZXR1cm5zIGFuIGluZGV4IG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIGluZGV4IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9pbmRleChzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIERldGVybWluZXMgaWYgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGlzIGEgZGlyZWN0b3J5IGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMSAodHJ1ZSksIDAgKGZhbHNlKSwgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB6aXAgZW50cnkgaXMgYSBkaXJlY3RvcnkgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDEgKHRydWUpLCAwIChmYWxzZSksIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbgorKyAqICAgICAgICAgZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfaXNkaXIoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBSZXR1cm5zIGFuIHVuY29tcHJlc3NlZCBzaXplIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSB1bmNvbXByZXNzZWQgc2l6ZSBpbiBieXRlcy4KKy0qLworKy8qKgorKyAqIFJldHVybnMgYW4gdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgdW5jb21wcmVzc2VkIHNpemUgaW4gYnl0ZXMuCisrICovCisgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyB6aXBfZW50cnlfc2l6ZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgQ1JDLTMyIGNoZWNrc3VtIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSBDUkMtMzIgY2hlY2tzdW0uCistKi8KKysvKioKKysgKiBSZXR1cm5zIENSQy0zMiBjaGVja3N1bSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSBDUkMtMzIgY2hlY2tzdW0uCisrICovCisgZXh0ZXJuIHVuc2lnbmVkIGludCB6aXBfZW50cnlfY3JjMzIoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBDb21wcmVzc2VzIGFuIGlucHV0IGJ1ZmZlciBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IGlucHV0IGJ1ZmZlci4KKy0gICAgYnVmc2l6ZTogaW5wdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogQ29tcHJlc3NlcyBhbiBpbnB1dCBidWZmZXIgZm9yIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIGlucHV0IGJ1ZmZlci4KKysgKiBAcGFyYW0gYnVmc2l6ZSBpbnB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV93cml0ZShzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSk7CisgCistLyoKKy0gIENvbXByZXNzZXMgYSBmaWxlIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGZpbGVuYW1lOiBpbnB1dCBmaWxlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDb21wcmVzc2VzIGEgZmlsZSBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBmaWxlbmFtZSBpbnB1dCBmaWxlLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9md3JpdGUoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGJ1ZmZlci4KKy0gIFRoZSBmdW5jdGlvbiBhbGxvY2F0ZXMgc3VmZmljaWVudCBtZW1vcnkgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgYnVmOiBvdXRwdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBvdXRwdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIE5vdGU6CistICAgIC0gcmVtZW1iZXIgdG8gcmVsZWFzZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBhIG91dHB1dCBidWZmZXIuCistICAgIC0gZm9yIGxhcmdlIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKy0KKy0gIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBvbiBzdWNjZXNzLgorLSAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBidWZmZXIuCisrICoKKysgKiBUaGUgZnVuY3Rpb24gYWxsb2NhdGVzIHN1ZmZpY2llbnQgbWVtb3J5IGZvciBhIG91dHB1dCBidWZmZXIuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGJ1ZiBvdXRwdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQG5vdGUgcmVtZW1iZXIgdG8gcmVsZWFzZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBhIG91dHB1dCBidWZmZXIuCisrICogICAgICAgZm9yIGxhcmdlIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCisrICogICAgICAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gc3NpemVfdCB6aXBfZW50cnlfcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqKmJ1Ziwgc2l6ZV90ICpidWZzaXplKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gYSBtZW1vcnkgYnVmZmVyIHVzaW5nIG5vIG1lbW9yeQorLSAgYWxsb2NhdGlvbi4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgYnVmOiBwcmVhbGxvY2F0ZWQgb3V0cHV0IGJ1ZmZlci4KKy0gICAgYnVmc2l6ZTogb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCistCistICBOb3RlOgorLSAgICAtIGVuc3VyZSBzdXBwbGllZCBvdXRwdXQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKy0gICAgLSB6aXBfZW50cnlfc2l6ZSBmdW5jdGlvbiAocmV0dXJucyB1bmNvbXByZXNzZWQgc2l6ZSBmb3IgdGhlIGN1cnJlbnQgZW50cnkpCistICAgICAgY2FuIGJlIGhhbmR5IHRvIGVzdGltYXRlIGhvdyBiaWcgYnVmZmVyIGlzIG5lZWRlZC4KKy0gICAgLSBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCistICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yIChlLmcuIGJ1ZnNpemUgaXMgbm90IGxhcmdlIGVub3VnaCkuCistKi8KKy1leHRlcm4gc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpOworLQorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBvdXRwdXQgZmlsZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgZmlsZW5hbWU6IG91dHB1dCBmaWxlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBhIG1lbW9yeSBidWZmZXIgdXNpbmcgbm8gbWVtb3J5CisrICogYWxsb2NhdGlvbi4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIHByZWFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorKyAqCisrICogQG5vdGUgZW5zdXJlIHN1cHBsaWVkIG91dHB1dCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorKyAqICAgICAgIHppcF9lbnRyeV9zaXplIGZ1bmN0aW9uIChyZXR1cm5zIHVuY29tcHJlc3NlZCBzaXplIGZvciB0aGUgY3VycmVudAorKyAqICAgICAgIGVudHJ5KSBjYW4gYmUgaGFuZHkgdG8gZXN0aW1hdGUgaG93IGJpZyBidWZmZXIgaXMgbmVlZGVkLiBmb3IgbGFyZ2UKKysgKiBlbnRyaWVzLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgemlwX2VudHJ5X2V4dHJhY3QgZnVuY3Rpb24uCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgcmVhZCBvbiBzdWNjZXNzLgorKyAqICAgICAgICAgT3RoZXJ3aXNlIGEgLTEgb24gZXJyb3IgKGUuZy4gYnVmc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoKS4KKysgKi8KKytleHRlcm4gc3NpemVfdCB6aXBfZW50cnlfbm9hbGxvY3JlYWQoc3RydWN0IHppcF90ICp6aXAsIHZvaWQgKmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZnNpemUpOworKworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBmaWxlLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBmaWxlbmFtZSBvdXRwdXQgZmlsZS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZW50cnlfZnJlYWQoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IHVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gKG9uX2V4dHJhY3QpLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBvbl9leHRyYWN0OiBjYWxsYmFjayBmdW5jdGlvbi4KKy0gICAgYXJnOiBvcGFxdWUgcG9pbnRlciAob3B0aW9uYWwgYXJndW1lbnQsCistICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHlvdSBjYW4gcGFzcyB0byB0aGUgb25fZXh0cmFjdCBjYWxsYmFjaykKKy0KKy0gICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysvKioKKysgKiBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvbiAob25fZXh0cmFjdCkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIG9uX2V4dHJhY3QgY2FsbGJhY2sgZnVuY3Rpb24uCisrICogQHBhcmFtIGFyZyBvcGFxdWUgcG9pbnRlciAob3B0aW9uYWwgYXJndW1lbnQsIHdoaWNoIHlvdSBjYW4gcGFzcyB0byB0aGUKKysgKiAgICAgICAgb25fZXh0cmFjdCBjYWxsYmFjaykKKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisgICovCisgZXh0ZXJuIGludAorIHppcF9lbnRyeV9leHRyYWN0KHN0cnVjdCB6aXBfdCAqemlwLAorQEAgLTI2Miw1MyArMjYxLDQ5IEBAIHppcF9lbnRyeV9leHRyYWN0KHN0cnVjdCB6aXBfdCAqemlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSwKKyAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworIAorLS8qCistICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsIGVudHJpZXMgKGZpbGVzIGFuZCBkaXJlY3RvcmllcykgaW4gdGhlIHppcCBhcmNoaXZlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBlbnRyaWVzIG9uIHN1Y2Nlc3MsCistICAgIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBhbGwgZW50cmllcyAoZmlsZXMgYW5kIGRpcmVjdG9yaWVzKSBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIHRoZSBudW1iZXIgb2YgZW50cmllcyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIKKysgKiAgICAgICAgICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX3RvdGFsX2VudHJpZXMoc3RydWN0IHppcF90ICp6aXApOworIAorLS8qCistICBDcmVhdGVzIGEgbmV3IGFyY2hpdmUgYW5kIHB1dHMgZmlsZXMgaW50byBhIHNpbmdsZSB6aXAgYXJjaGl2ZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcG5hbWU6IHppcCBhcmNoaXZlIGZpbGUuCistICAgIGZpbGVuYW1lczogaW5wdXQgZmlsZXMuCistICAgIGxlbjogbnVtYmVyIG9mIGlucHV0IGZpbGVzLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDcmVhdGVzIGEgbmV3IGFyY2hpdmUgYW5kIHB1dHMgZmlsZXMgaW50byBhIHNpbmdsZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUuCisrICogQHBhcmFtIGZpbGVuYW1lcyBpbnB1dCBmaWxlcy4KKysgKiBAcGFyYW0gbGVuOiBudW1iZXIgb2YgaW5wdXQgZmlsZXMuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2NyZWF0ZShjb25zdCBjaGFyICp6aXBuYW1lLCBjb25zdCBjaGFyICpmaWxlbmFtZXNbXSwgc2l6ZV90IGxlbik7CisgCistLyoKKy0gIEV4dHJhY3RzIGEgemlwIGFyY2hpdmUgZmlsZSBpbnRvIGRpcmVjdG9yeS4KKy0KKy0gIElmIG9uX2V4dHJhY3RfZW50cnkgaXMgbm90IE5VTEwsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBhZnRlcgorLSAgc3VjY2Vzc2Z1bGx5IGV4dHJhY3RlZCBlYWNoIHppcCBlbnRyeS4KKy0gIFJldHVybmluZyBhIG5lZ2F0aXZlIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwgY2F1c2UgYWJvcnQgYW5kIHJldHVybiBhbgorLSAgZXJyb3IuIFRoZSBsYXN0IGFyZ3VtZW50ICh2b2lkICphcmcpIGlzIG9wdGlvbmFsLCB3aGljaCB5b3UgY2FuIHVzZSB0byBwYXNzCistICBkYXRhIHRvIHRoZSBvbl9leHRyYWN0X2VudHJ5IGNhbGxiYWNrLgorLQorLSAgQXJnczoKKy0gICAgemlwbmFtZTogemlwIGFyY2hpdmUgZmlsZS4KKy0gICAgZGlyOiBvdXRwdXQgZGlyZWN0b3J5LgorLSAgICBvbl9leHRyYWN0X2VudHJ5OiBvbiBleHRyYWN0IGNhbGxiYWNrLgorLSAgICBhcmc6IG9wYXF1ZSBwb2ludGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBFeHRyYWN0cyBhIHppcCBhcmNoaXZlIGZpbGUgaW50byBkaXJlY3RvcnkuCisrICoKKysgKiBJZiBvbl9leHRyYWN0X2VudHJ5IGlzIG5vdCBOVUxMLCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKKysgKiBzdWNjZXNzZnVsbHkgZXh0cmFjdGVkIGVhY2ggemlwIGVudHJ5LgorKyAqIFJldHVybmluZyBhIG5lZ2F0aXZlIHZhbHVlIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwgY2F1c2UgYWJvcnQgYW5kIHJldHVybiBhbgorKyAqIGVycm9yLiBUaGUgbGFzdCBhcmd1bWVudCAodm9pZCAqYXJnKSBpcyBvcHRpb25hbCwgd2hpY2ggeW91IGNhbiB1c2UgdG8gcGFzcworKyAqIGRhdGEgdG8gdGhlIG9uX2V4dHJhY3RfZW50cnkgY2FsbGJhY2suCisrICoKKysgKiBAcGFyYW0gemlwbmFtZSB6aXAgYXJjaGl2ZSBmaWxlLgorKyAqIEBwYXJhbSBkaXIgb3V0cHV0IGRpcmVjdG9yeS4KKysgKiBAcGFyYW0gb25fZXh0cmFjdF9lbnRyeSBvbiBleHRyYWN0IGNhbGxiYWNrLgorKyAqIEBwYXJhbSBhcmcgb3BhcXVlIHBvaW50ZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2V4dHJhY3QoY29uc3QgY2hhciAqemlwbmFtZSwgY29uc3QgY2hhciAqZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqb25fZXh0cmFjdF9lbnRyeSkoY29uc3QgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworIAorKy8qKiBAfSAqLworKworICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0IGIvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAoraW5kZXggOWIyYThkYjEuLmNjMDYwYjAwIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAorKysrIGIvY29udHJpYi96aXAvdGVzdC9DTWFrZUxpc3RzLnR4dAorQEAgLTEsMTkgKzEsMTYgQEAKKyBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44KQorIAorLWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkdOVSIgT1IgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJDbGFuZyIgT1IgIiR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJBcHBsZUNsYW5nIikKKy0gIGlmKEVOQUJMRV9DT1ZFUkFHRSkKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWcgIikKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLU8wIikKKy0gICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLWZwcm9maWxlLWFyY3MiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnRlc3QtY292ZXJhZ2UiKQorLSAgICBzZXQoQ01BS0VfRVhFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtLWNvdmVyYWdlIikKKy0gIGVuZGlmKCkKKy1lbmRpZiAoKQorLQorICMgdGVzdAorLWluY2x1ZGVfZGlyZWN0b3JpZXMoLi4vc3JjKQorLWFkZF9leGVjdXRhYmxlKHRlc3QuZXhlIHRlc3QuYyAuLi9zcmMvemlwLmMpCistYWRkX2V4ZWN1dGFibGUodGVzdF9taW5pei5leGUgdGVzdF9taW5pei5jKQorK3NldCh0ZXN0X291dCB0ZXN0Lm91dCkKKytzZXQodGVzdF9taW5pel9vdXQgdGVzdF9taW5pei5vdXQpCisrCisrYWRkX2V4ZWN1dGFibGUoJHt0ZXN0X291dH0gdGVzdC5jKQorK3RhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3Rfb3V0fSB6aXApCisrYWRkX2V4ZWN1dGFibGUoJHt0ZXN0X21pbml6X291dH0gdGVzdF9taW5pei5jKQorK3RhcmdldF9saW5rX2xpYnJhcmllcygke3Rlc3RfbWluaXpfb3V0fSB6aXApCisrCisrYWRkX3Rlc3QoTkFNRSAke3Rlc3Rfb3V0fSBDT01NQU5EICR7dGVzdF9vdXR9KQorK2FkZF90ZXN0KE5BTUUgJHt0ZXN0X21pbml6X291dH0gQ09NTUFORCAke3Rlc3RfbWluaXpfb3V0fSkKKyAKKy1hZGRfdGVzdChOQU1FIHRlc3QgQ09NTUFORCB0ZXN0LmV4ZSkKKy1hZGRfdGVzdChOQU1FIHRlc3RfbWluaXogQ09NTUFORCB0ZXN0X21pbml6LmV4ZSkKKytzZXQodGVzdF9vdXQgJHt0ZXN0X291dH0gUEFSRU5UX1NDT1BFKQorK3NldCh0ZXN0X21pbml6X291dCAke3Rlc3RfbWluaXpfb3V0fSBQQVJFTlRfU0NPUEUpCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvdGVzdC90ZXN0LmMgYi9jb250cmliL3ppcC90ZXN0L3Rlc3QuYworaW5kZXggNDU0NDMwNTMuLmE5YjJkZGFiIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC90ZXN0LmMKKysrKyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdC5jCitAQCAtMjksNiArMjksOCBAQAorICNkZWZpbmUgWEZJTEUgIjcudHh0XDAiCisgI2RlZmluZSBYTU9ERSAwMTAwNzc3CisgCisrI2RlZmluZSBVTklYTU9ERSAwMTAwNjQ0CisrCisgI2RlZmluZSBVTlVTRUQoeCkgKHZvaWQpeAorIAorIHN0YXRpYyBpbnQgdG90YWxfZW50cmllcyA9IDA7CitAQCAtMTAyLDcgKzEwNCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RfcmVhZCh2b2lkKSB7CisgICBhc3NlcnQoMCA9PSB6aXBfZW50cnlfY2xvc2UoemlwKSk7CisgICBmcmVlKGJ1Zik7CisgICBidWYgPSBOVUxMOworLSAgCisrICBidWZzaXplID0gMDsKKysKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9vcGVuKHppcCwgInRlc3QvdGVzdC0yLnR4dCIpKTsKKyAgIGFzc2VydChzdHJsZW4oVEVTVERBVEEyKSA9PSB6aXBfZW50cnlfc2l6ZSh6aXApKTsKKyAgIGFzc2VydChDUkMzMkRBVEEyID09IHppcF9lbnRyeV9jcmMzMih6aXApKTsKK0BAIC0xMzEsNyArMTM0LDggQEAgc3RhdGljIHZvaWQgdGVzdF9yZWFkKHZvaWQpIHsKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKyAgIGZyZWUoYnVmKTsKKyAgIGJ1ZiA9IE5VTEw7CistICAKKysgIGJ1ZnNpemUgPSAwOworKworICAgYnVmdG1wID0gc3RybGVuKFRFU1REQVRBMSk7CisgICBidWYgPSBjYWxsb2MoYnVmdG1wLCBzaXplb2YoY2hhcikpOworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCAidGVzdC90ZXN0LTEudHh0IikpOworQEAgLTQzMyw2ICs0MzcsMzUgQEAgc3RhdGljIHZvaWQgdGVzdF9tdGltZSh2b2lkKSB7CisgICByZW1vdmUoWklQTkFNRSk7CisgfQorIAorK3N0YXRpYyB2b2lkIHRlc3RfdW5peF9wZXJtaXNzaW9ucyh2b2lkKSB7CisrI2lmIGRlZmluZWQoX1dJTjY0KSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pCisrI2Vsc2UKKysgIC8vIFVOSVggb3IgQVBQTEUKKysgIHN0cnVjdCBNWl9GSUxFX1NUQVRfU1RSVUNUIGZpbGVfc3RhdHM7CisrCisrICByZW1vdmUoWklQTkFNRSk7CisrCisrICBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKFpJUE5BTUUsIFpJUF9ERUZBVUxUX0NPTVBSRVNTSU9OX0xFVkVMLCAndycpOworKyAgYXNzZXJ0KHppcCAhPSBOVUxMKTsKKysKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV9vcGVuKHppcCwgUkZJTEUpKTsKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV93cml0ZSh6aXAsIFRFU1REQVRBMSwgc3RybGVuKFRFU1REQVRBMSkpKTsKKysgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKysKKysgIHppcF9jbG9zZSh6aXApOworKworKyAgcmVtb3ZlKFJGSUxFKTsKKysKKysgIGFzc2VydCgwID09IHppcF9leHRyYWN0KFpJUE5BTUUsICIuIiwgTlVMTCwgTlVMTCkpOworKworKyAgYXNzZXJ0KDAgPT0gTVpfRklMRV9TVEFUKFJGSUxFLCAmZmlsZV9zdGF0cykpOworKyAgYXNzZXJ0KFVOSVhNT0RFID09IGZpbGVfc3RhdHMuc3RfbW9kZSk7CisrCisrICByZW1vdmUoUkZJTEUpOworKyAgcmVtb3ZlKFpJUE5BTUUpOworKyNlbmRpZgorK30KKysKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICBVTlVTRUQoYXJnYyk7CisgICBVTlVTRUQoYXJndik7CitAQCAtNDUzLDYgKzQ4Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIHRlc3Rfd3JpdGVfcGVybWlzc2lvbnMoKTsKKyAgIHRlc3RfZXhlX3Blcm1pc3Npb25zKCk7CisgICB0ZXN0X210aW1lKCk7CisrICB0ZXN0X3VuaXhfcGVybWlzc2lvbnMoKTsKKyAKKyAgIHJlbW92ZShaSVBOQU1FKTsKKyAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jIGIvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMKK2luZGV4IGViYzA1NjRkLi5iYWJjYWVjZCAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jCisrKysgYi9jb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYworQEAgLTIzLDE2ICsyMywzOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICB1aW50IHN0ZXAgPSAwOworICAgaW50IGNtcF9zdGF0dXM7CisgICB1TG9uZyBzcmNfbGVuID0gKHVMb25nKXN0cmxlbihzX3BTdHIpOworLSAgdUxvbmcgY21wX2xlbiA9IGNvbXByZXNzQm91bmQoc3JjX2xlbik7CisgICB1TG9uZyB1bmNvbXBfbGVuID0gc3JjX2xlbjsKKysgIHVMb25nIGNtcF9sZW47CisgICB1aW50OCAqcENtcCwgKnBVbmNvbXA7CisrICBzaXplX3Qgc3o7CisgICB1aW50IHRvdGFsX3N1Y2NlZWRlZCA9IDA7CisgICAodm9pZClhcmdjLCAodm9pZClhcmd2OworIAorICAgcHJpbnRmKCJtaW5pei5jIHZlcnNpb246ICVzXG4iLCBNWl9WRVJTSU9OKTsKKyAKKyAgIGRvIHsKKysgICAgcENtcCA9ICh1aW50OCAqKXRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwKHNfcFN0ciwgc3JjX2xlbiwgJmNtcF9sZW4sIDApOworKyAgICBpZiAoIXBDbXApIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwIGZhaWxlZFxuIik7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKyAgICBpZiAoc3JjX2xlbiA8PSBjbXBfbGVuKSB7CisrICAgICAgcHJpbnRmKCJ0ZGVmbF9jb21wcmVzc19tZW1fdG9faGVhcCBmYWlsZWQ6IGZyb20gJXUgdG8gJXUgYnl0ZXNcbiIsCisrICAgICAgICAgICAgIChtel91aW50MzIpdW5jb21wX2xlbiwgKG16X3VpbnQzMiljbXBfbGVuKTsKKysgICAgICBmcmVlKHBDbXApOworKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisrICAgIH0KKysKKysgICAgc3ogPSB0ZGVmbF9jb21wcmVzc19tZW1fdG9fbWVtKHBDbXAsIGNtcF9sZW4sIHNfcFN0ciwgc3JjX2xlbiwgMCk7CisrICAgIGlmIChzeiAhPSBjbXBfbGVuKSB7CisrICAgICAgcHJpbnRmKCJ0ZGVmbF9jb21wcmVzc19tZW1fdG9fbWVtIGZhaWxlZDogZXhwZWN0ZWQgJXUsIGdvdCAldVxuIiwKKysgICAgICAgICAgICAgKG16X3VpbnQzMiljbXBfbGVuLCAobXpfdWludDMyKXN6KTsKKysgICAgICBmcmVlKHBDbXApOworKyAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisrICAgIH0KKysKKyAgICAgLy8gQWxsb2NhdGUgYnVmZmVycyB0byBob2xkIGNvbXByZXNzZWQgYW5kIHVuY29tcHJlc3NlZCBkYXRhLgorKyAgICBmcmVlKHBDbXApOworKyAgICBjbXBfbGVuID0gY29tcHJlc3NCb3VuZChzcmNfbGVuKTsKKyAgICAgcENtcCA9IChtel91aW50OCAqKW1hbGxvYygoc2l6ZV90KWNtcF9sZW4pOworICAgICBwVW5jb21wID0gKG16X3VpbnQ4ICopbWFsbG9jKChzaXplX3Qpc3JjX2xlbik7CisgICAgIGlmICgoIXBDbXApIHx8ICghcFVuY29tcCkpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTRjYmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAotICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKLQotREVQRU5EUyA9ICJ6bGliIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVNSQ1JFViA9ICI4MDc5OWJkYmY5MGNlNjI2NDc1NjM1ODE1ZWUxODUzNzcxOGEwNWIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURBU1NJTVBfQlVJTERfQVNTSU1QX1RPT0xTPU9GRiAtREFTU0lNUF9CVUlMRF9URVNUUz1PRkYgLURBU1NJTVBfTElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF81LjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YThjNjJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF81LjAuMS5iYgpAQCAtMCwwICsxLDIzIEBACitERVNDUklQVElPTiA9ICJPcGVuIEFzc2V0IEltcG9ydCBMaWJyYXJ5IGlzIGEgcG9ydGFibGUgT3BlbiBTb3VyY2UgbGlicmFyeSB0byBpbXBvcnQgXAorICAgICAgICAgICAgICAgdmFyaW91cyB3ZWxsLWtub3duIDNEIG1vZGVsIGZvcm1hdHMgaW4gYSB1bmlmb3JtIG1hbm5lci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFzc2ltcC5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMTE5ZWRlZjA5MTZiMGJkNTExY2IzYzczMTA3NjI3MSIKKworREVQRU5EUyA9ICJ6bGliIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC5naXQ7YnJhbmNoPWFzc2ltcF81LjBfcmVsZWFzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNsb3Nlcy1odHRwcy1naXRodWIuY29tLWFzc2ltcC1hc3NpbXAtaXNzdWVzLTI3MzMtdXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQVNTSU1QX0xJQl9JTlNUQUxMX0RJUi10by1zZWFyY2gtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjhmMGM2YjA0YjIyNTdhNTIwYWFhYjM4NDIxYjJlMDkwMjA0YjY5ZGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKaW5kZXggOTNiY2ZiZi4uNzYyNDA2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDBhMjcxNDRkNDNiNzAxMjFmNTdmNjAzNjUxNGQwNjljYTlkMmI5NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDBjYmY5Yzk4MzFmNzczZTBkYTY2MjA5YmU5YTZmZjI4ZDU3YzIzMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCAzMCBKdWwgMjAxOCAxNzoyMzoyOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBkZW1vcyB3aXRoIHF1ZXN0aW9uYWJseSBsaWNlbnNlZCBkYXRhCkBAIC0zMywxNiArMzMsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorCiAtLS0KICBleGFtcGxlcy9DTWFrZUxpc3RzLnR4dCB8IDE0IC0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAotaW5kZXggOGVlZTNhNC4uNjk4ZDNiMyAxMDA2NDQKK2luZGV4IGUwNzkxOGMuLjA4YjZlMjMgMTAwNjQ0CiAtLS0gYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAogKysrIGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKLUBAIC00NywxOCArNDcsMTIgQEAgc2V0KEVYQU1QTEVTCi0gCWNvbXB1dGVzaGFkZXIKK0BAIC01NSwxOCArNTUsMTIgQEAgc2V0KEVYQU1QTEVTCisgCWNvbmRpdGlvbmFscmVuZGVyCiAgCWNvbnNlcnZhdGl2ZXJhc3RlcgogIAlkZWJ1Z21hcmtlcgogLQlkZWZlcnJlZApAQCAtNTcsMTAgKzU4LDEwIEBACiAtCWhkcgogLQlpbWd1aQogLQlpbmRpcmVjdGRyYXcKKyAJaW5saW5ldW5pZm9ybWJsb2NrcwogIAlpbnB1dGF0dGFjaG1lbnRzCiAgCWluc3RhbmNpbmcKLSAJbWVzaAotQEAgLTcwLDggKzY0LDYgQEAgc2V0KEVYQU1QTEVTCitAQCAtODMsMjMgKzc3LDE2IEBAIHNldChFWEFNUExFUwogIAlwYXJhbGxheG1hcHBpbmcKICAJcGFydGljbGVmaXJlCiAgCXBicmJhc2ljCkBAIC02OSw5ICs3MCw4IEBACiAgCXBpcGVsaW5lcwogIAlwaXBlbGluZXN0YXRpc3RpY3MKICAJcHVzaGNvbnN0YW50cwotQEAgLTc5LDE1ICs3MSwxMCBAQCBzZXQoRVhBTVBMRVMKKyAJcHVzaGRlc2NyaXB0b3JzCiAgCXJhZGlhbGJsdXIKLSAJcmF5dHJhY2luZwogIAlyZW5kZXJoZWFkbGVzcwogLQlzY2VuZXJlbmRlcmluZwogIAlzY3JlZW5zaG90CkBAIC04NSw3ICs4NSw3IEBACiAgCXN0ZW5jaWxidWZmZXIKICAJc3VicGFzc2VzCiAgCXRlcnJhaW50ZXNzZWxsYXRpb24KLUBAIC0xMDEsNyArODgsNiBAQCBzZXQoRVhBTVBMRVMKK0BAIC0xMTMsNyArMTAwLDYgQEAgc2V0KEVYQU1QTEVTCiAgCXRleHR1cmVzcGFyc2VyZXNpZGVuY3kKICAJdHJpYW5nbGUKICAJdmlld3BvcnRhcnJheQpAQCAtOTMsNiArOTMsMyBAQAogICkKICAKICBidWlsZEV4YW1wbGVzKCkKLS0tIAotMi40LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgppbmRleCA3NGRjMmFkLi5jOTRlNzY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYgpAQCAtNSwyMyArNSwyMyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGNmNDczNzIzZmFhYmYxN2JhYTliNWYyMjA3NTk5ZDAgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXhhbXBsZXMvdHJpYW5nbGUvdHJpYW5nbGUuY3BwO2VuZGxpbmU9MTI7bWQ1PWJjY2QxYmY5Y2FkZDllMTAwODZjZjc4NzIxNTdlNGZhIgogCi1TUkNSRVZfZ2xtID0gIjAxZjlhYjViNmQyMWU1MDYyYWMwZjZlMGYyMDVjN2ZhMmNhOWQ3NjkiCi1TUkNSRVZfZ2xpID0gIjhlNDMwMzBiM2UxMmJiNThhNDY2M2Q4NWFkYzVjNzUyZjg5MDk5YzAiCitTUkNSRVZfZ2xtID0gIjFhZDU1YzUwMTYzMzliODNiN2VlYzk4YzMxMDA3ZTBhZWU1N2QyYmYiCitTUkNSRVZfZ2xpID0gIjdkYTVmNTA5MzEyMjVlOTgxOWEyNmQ1Y2IzMjNjNWY0MmRhNTBiY2QiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi5naXQgXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbG07ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvZ2xtO25hbWU9Z2xtIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xpO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2dsaTtuYW1lPWdsaSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggXAotIgorICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi1TUkNSRVYgPSAiYWUwYjU5YzZlMmU4NjMwYTJhZTI2ZjRhMGI3YTcyY2JlNzU0Nzk0OCIKK1NSQ1JFViA9ICI2ZDYzZGMzMmMzMjBhNDliZTBhNTZjMzY1MTUxYzhmMmYxNzZiYzU5IgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gJ3Z1bGthbicKIAogaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotREVQRU5EUyA9ICJ2dWxrYW4tbG9hZGVyIGFzc2ltcCIKK0RFUEVORFMgPSAidnVsa2FuLWxvYWRlciBhc3NpbXAgd2F5bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1uYXRpdmUiCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICAjIFJlbW92ZSBhc3NldHMgdGhhdCBoYXZlIHVuY2VydGFpbiBsaWNlbnNlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0YzE5ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVnVsa2FuIEhlYWRlciBmaWxlcyBhbmQgQVBJIHJlZ2lzdHJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tSGVhZGVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tSGVhZGVycy5naXQ7YnJhbmNoPXNkay0ke1BWfSIKLQotU1JDUkVWID0gIjA5N2ExMDQ1MDk4MjEzOTE5ZmQ1NjQ0MmY1MmM3MTZmYzc4ZWViMjciCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdnVsa2FuIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjMjlhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTI2LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJWdWxrYW4gSGVhZGVyIGZpbGVzIGFuZCBBUEkgcmVnaXN0cnkiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCisKK1NSQ1JFViA9ICI1YmM0NTllMjkyMTMwNGMzMjU2OGI3M2VkYWFjOGQ2ZGY1Zjk4Yjg0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3Z1bGthbiIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTM5YzVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgotREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKLXRoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAotcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCi10aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlciIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdkYmVmZWQyMzI0Mjc2MGFhMzQ3NWVlNDI4MDFjNWFjIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotU1JDUkVWID0gImVjYjBiMWU2OWZiMmY0ZDNjYWUyNjJlNmRhMjRjMTcwY2U2MmFlMTMiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCi0KLWluaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi0KLURFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIgotCi1FWFRSQV9PRUNNQUtFID0gIlwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAotICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgICIKLQotIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGLCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEyNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNGNmODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKK0RFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCit0aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKK3Byb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAordGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXIiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZGJlZmVkMjMyNDI3NjBhYTM0NzVlZTQyODAxYzVhYyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlci5naXQ7YnJhbmNoPXNkay0xLjEuMTI2IgorU1JDUkVWID0gIjRhZGFkNGZmNzA1ZmE3NmY5ZWRiMmQzN2NiNTdlNTkzZGVjYjYwZWQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0RFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIgorCitFWFRSQV9PRUNNQUtFID0gIlwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAorICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCisgICAgICAgICAgICAgICAgIC1EQVNTRU1CTEVSX1dPUktTPUZBTFNFIFwKKyAgICAgICAgICAgICAgICAgIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzFiYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi10b29sc18xLjEuMTA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJWdWxrYW4gVXRpbGl0aWVzIGFuZCBUb29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Ub29scy5naXQ7YnJhbmNoPXNkay0ke1BWfSIKLVNSQ1JFViA9ICIzY2NkN2Y2ZWJhZTNlMTkxOWFkZjgzNzcxOGMwNGZlYjZjMmFjYzYxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMgdnVsa2FuLWxvYWRlciIKLQotRVhUUkFfT0VDTUFLRSA9ICJcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9DVUJFPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKLSAgICAgICAgICAgICAgICAgIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDYxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlZ1bGthbiBVdGlsaXRpZXMgYW5kIFRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCitTUkNSRVYgPSAiMDk2OTVkZmM1ZGJlNTRmODY5YWVhZmY4ZGI5M2JiN2JiNmEyMjBlMCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK0RFUEVORFMgKz0gInZ1bGthbi1oZWFkZXJzIHZ1bGthbi1sb2FkZXIiCisKK0VYVFJBX09FQ01BS0UgPSAiXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfQ1VCRT1PRkYgXAorICAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcHl0aG9uMyBcCisgICAgICAgICAgICAgICAgICIKKworIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGLCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS42LjAuYmIKaW5kZXggNTJjYjFkZi4uYTYyMDI5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiCkBAIC0xMSw2ICsxMSw4IEBACiAKIGluaGVyaXQgbWVzb24gZmVhdHVyZXNfY2hlY2sgbGliX3BhY2thZ2UgYmFzaC1jb21wbGV0aW9uCiAKK0RFUEVORFNfYXBwZW5kID0gIiBweXRob24zIgorCiAjIFRoaXMgc2hvdWxkIGJlIG92ZXJyaWRkZW4gcGVyLW1hY2hpbmUgdG8gcmVmbGVjdCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBHTAogIyBzdGFjay4KIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbHggeDExLWVnbCcsICcnLCBkKX0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1NTQwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorVGhpcyBmaW5kcyBvdXIgb3V0ZXIgZ2l0IHRyZWUgYW5kIHRoYXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBicmVha3MKK2RldGVybWluaXNtIG9mIHRoaXMgcmVjaXBlLiBEaXNhYmxlIGl0LgorCitSUCAyMDIwLzIvNgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogbGliaW5wdXQtMS4xNC4zL21lc29uLmJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliaW5wdXQtMS4xNC4zLm9yaWcvbWVzb24uYnVpbGQKKysrKyBsaWJpbnB1dC0xLjE0LjMvbWVzb24uYnVpbGQKK0BAIC0zODcsNyArMzg3LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorIAlsaWJyYXJpZXMgOiBsaWJfbGliaW5wdXQKKyApCisgCistZ2l0X3ZlcnNpb25faCA9IHZjc190YWcoY29tbWFuZCA6IFsnZ2l0JywgJ2Rlc2NyaWJlJ10sCisrZ2l0X3ZlcnNpb25faCA9IHZjc190YWcoY29tbWFuZCA6IFsnZmFsc2UnXSwKKyAJCQlmYWxsYmFjayA6ICd1bmtub3duJywKKyAJCQlpbnB1dCA6ICdzcmMvbGliaW5wdXQtZ2l0LXZlcnNpb24uaC5pbicsCisgCQkJb3V0cHV0IDonbGliaW5wdXQtZ2l0LXZlcnNpb24uaCcpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDZhOGQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1ERVNDUklQVElPTiA9ICJsaWJpbnB1dCBpcyBhIGxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBcCi1jb21wb3NpdG9ycyBhbmQgdG8gcHJvdmlkZSBhIGdlbmVyaWMgWC5PcmcgaW5wdXQgZHJpdmVyLiBJdCBwcm92aWRlcyBcCi1kZXZpY2UgZGV0ZWN0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGlucHV0IGRldmljZSBldmVudCBwcm9jZXNzaW5nIGFuZCBcCi1hYnN0cmFjdGlvbiBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGN1c3RvbSBpbnB1dCBjb2RlIGNvbXBvc2l0b3JzIG5lZWQgdG8gXAotcHJvdmlkZSB0aGUgY29tbW9uIHNldCBvZiBmdW5jdGlvbmFsaXR5IHRoYXQgdXNlcnMgZXhwZWN0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmMmVhOWViZmYzYTJjNmQ0NThmYWY1ODQ5MmVmYjYzIgotCi1ERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDUyZmFhNjRlYjZkMmU2NDllNTgyY2MwZmNmNmUzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZmViM2EwNTg5NzA5Y2MxMDMyODkzYmZhZjRjNDkxNTBkNTM2MGJkOTc4MmJlYzg4OGY5ZTRkZDkwNDRjNWI3IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKLQotVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRGRvY3VtZW50YXRpb249ZmFsc2UgXAotICAgICAgICAgICAgICAgICAgLUR0ZXN0cz1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRHpzaGNvbXBsZXRpb25kaXI9bm8iCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwNTMyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNS4yLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorREVTQ1JJUFRJT04gPSAibGliaW5wdXQgaXMgYSBsaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgXAorY29tcG9zaXRvcnMgYW5kIHRvIHByb3ZpZGUgYSBnZW5lcmljIFguT3JnIGlucHV0IGRyaXZlci4gSXQgcHJvdmlkZXMgXAorZGV2aWNlIGRldGVjdGlvbiwgZGV2aWNlIGhhbmRsaW5nLCBpbnB1dCBkZXZpY2UgZXZlbnQgcHJvY2Vzc2luZyBhbmQgXAorYWJzdHJhY3Rpb24gc28gbWluaW1pemUgdGhlIGFtb3VudCBvZiBjdXN0b20gaW5wdXQgY29kZSBjb21wb3NpdG9ycyBuZWVkIHRvIFwKK3Byb3ZpZGUgdGhlIGNvbW1vbiBzZXQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0IHVzZXJzIGV4cGVjdC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZjJlYTllYmZmM2EyYzZkNDU4ZmFmNTg0OTJlZmI2MyIKKworREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWI2YmQyOTA3YWQzM2Q1Mzk1NGQ3MGRmYjg4MWE2NDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTcxYzNmYmZiNjI0Zjk1YzkxMWFkZWIyODAzYzM3MmU0ZTM2NDdkMWI5OGYyNzhmNjYwMDUxZjgzNDU5Nzc0NyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliaW5wdXQtKD9QPHB2ZXI+XGQrXC5cZCtcLig/ITlcZCspXGQrKSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwtRGxpYndhY29tPWZhbHNlLGxpYndhY29tIgorUEFDS0FHRUNPTkZJR1tndWldID0gIi1EZGVidWctZ3VpPXRydWUsLURkZWJ1Zy1ndWk9ZmFsc2UsY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRU1FU09OICs9ICItRHVkZXYtZGlyPSR7VURFVkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURkb2N1bWVudGF0aW9uPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAgIC1EdGVzdHM9ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLUR6c2hjb21wbGV0aW9uZGlyPW5vIgorCisjIHBhY2thZ2UgbmFtZSBjaGFuZ2VkIGluIDEuOC4xIHVwZ3JhZGU6IG1ha2Ugc3VyZSBwYWNrYWdlIHVwZ3JhZGVzIHdvcmsKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliaW5wdXQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2QwZWJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpdG91Y2ggUHJvdG9jb2wgVHJhbnNsYXRpb24gTGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibXRkZXYgaXMgYSBsaWJyYXJ5IHdoaWNoIHRyYW5zZm9ybXMgYWxsIHZhcmlhbnRzIG9mIGtlcm5lbCBcCi1tdWx0aXRvdWNoIGV2ZW50cyB0byB0aGUgc2xvdHRlZCB0eXBlIEIgcHJvdG9jb2wuIFRoZSBldmVudHMgcHV0IGludG8gbXRkZXYgbWF5IFwKLWJlIGZyb20gYW55IE1UIGRldmljZSwgc3BlY2lmaWNhbGx5IHR5cGUgQSB3aXRob3V0IGNvbnRhY3QgdHJhY2tpbmcsIHR5cGUgQSB3aXRoIFwKLWNvbnRhY3QgdHJhY2tpbmcsIG9yIHR5cGUgQiB3aXRoIGNvbnRhY3QgdHJhY2tpbmciCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlL210ZGV2LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTZiZDAyNjhiYjBmY2Q2YjI3Njk4NjE2Y2VlZTVkNiIKLQotU1JDX1VSSSA9ICJodHRwOi8vYml0bWF0aC5vcmcvY29kZS8ke0JQTn0vJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MmM5NjEwYjYwMDJmNzFkMTY0MmRjMWExY2NhNWVjMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Njc3ZDU3MDhhNzk0ODg0MGRlNzM0ZDhiNDY3NWQ1OTgwZDQ1NjExNzFjNWE4ZTg5ZTU0YWRmN2ExM2ViYTdmIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMWNiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL210ZGV2XzEuMS42LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiTXVsdGl0b3VjaCBQcm90b2NvbCBUcmFuc2xhdGlvbiBMaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJtdGRldiBpcyBhIGxpYnJhcnkgd2hpY2ggdHJhbnNmb3JtcyBhbGwgdmFyaWFudHMgb2Yga2VybmVsIFwKK211bHRpdG91Y2ggZXZlbnRzIHRvIHRoZSBzbG90dGVkIHR5cGUgQiBwcm90b2NvbC4gVGhlIGV2ZW50cyBwdXQgaW50byBtdGRldiBtYXkgXAorYmUgZnJvbSBhbnkgTVQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdHlwZSBBIHdpdGhvdXQgY29udGFjdCB0cmFja2luZywgdHlwZSBBIHdpdGggXAorY29udGFjdCB0cmFja2luZywgb3IgdHlwZSBCIHdpdGggY29udGFjdCB0cmFja2luZyIKKworSE9NRVBBR0UgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvbXRkZXYvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNmJkMDI2OGJiMGZjZDZiMjc2OTg2MTZjZWVlNWQ2IgorCitTUkNfVVJJID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlLyR7QlBOfS8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImJmOGVmMjQ4MmU4NGEwMGI1ZGI4ZmJkM2NlMDBlMjQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE1ZDdiMjhkYThhYzcxZDhiYzhjOTI4N2MyMDQ1ZmQxNzQyNjdiYzc0MGJlYzEwY2ZkYTMzMmRjMTIwNGUwZTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJlYzY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgotREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAotYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAotY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAotcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCi13YXlsYW5kLXByb3RvY29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFmMzhmMjJkOGUyMzNjMmYyZTAwZGRjOGRjYzk0Njk0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNzNiN2U3NjYxNzYzZGMwOWQ3ZDkxMDc2Nzg0MDAxMDFlY2ZmMmI1YjFlNTMxNjc0YWJmYTgxZTA0ODc0YjMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59IgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjc4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCithdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCitjb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCitwcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKK3dheWxhbmQtcHJvdG9jb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYjA4MzY1MzNhM2YyZGM2NTg1YjFkYWUwMDM0MTE1N2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc4MmI3YTFhODYzZDgyZDdjOTI0Nzg0OTdkMTNjNzU4ZjUyZTdkYTRmMTk3YWExNjQ0M2Y3M2RlNzdlNGRlNyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1idWlsZC1GaXgtc3RybmR1cC1kZXRlY3Rpb24tb24tTWluR1cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1idWlsZC1GaXgtc3RybmR1cC1kZXRlY3Rpb24tb24tTWluR1cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0NTgzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGU2NzgzYzk5ZjA1MWM2ZDgyNTJkYjVmMzg4ZDgwNWNlZjBlMTYzNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIwIEZlYiAyMDIwIDE1OjIwOjQ1IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBGaXggc3RybmR1cCBkZXRlY3Rpb24gb24gTWluR1cKKworR0NDIGFuZCBtZXNvbiBjb25zcGlyZSB0b2dldGhlciB0byBpbmNvcnJlY3RseSBkZXRlY3QgdGhhdCBzdHJuZHVwKCkKK2V4aXN0cyBvbiBNaW5HVyBhcyBfX2J1aWx0aW5fc3RybmR1cCwgd2hlbiBubyBzdWNoIGZ1bmN0aW9uIGV4aXN0cy4gQXMgYQord29yayBhcm91bmQsIG1lc29uIHdpbGwgc2tpcCBsb29raW5nIGZvciBfX2J1aWx0aW4gZnVuY3Rpb25zIGlmIGFuCisnI2luY2x1ZGUnIGlzIGluIHRoZSBwcmVmaXgsIHNvIGFkZCAnI2luY2x1ZGUgPHN0cmluZy5oPicgd2hlbiBsb29raW5nCitmb3Igc3RybmR1cCgpLgorCitTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy8zNjcyCisKK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvd2F5bGFuZC93YXlsYW5kL21lcmdlX3JlcXVlc3RzLzYzXQorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAyNmIwODRmLi5jMDVkMDE5IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzYsMTEgKzM2LDExIEBAIGhhdmVfZnVuY3MgPSBbCisgCSdwb3NpeF9mYWxsb2NhdGUnLAorIAkncHJjdGwnLAorIAknbWVtZmRfY3JlYXRlJywKKy0JJ3N0cm5kdXAnLAorIF0KKyBmb3JlYWNoIGY6IGhhdmVfZnVuY3MKKyAJY29uZmlnX2guc2V0KCdIQVZFXycgKyBmLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksIGNjLmhhc19mdW5jdGlvbihmKSkKKyBlbmRmb3JlYWNoCisrY29uZmlnX2guc2V0KCdIQVZFX1NUUk5EVVAnLCBjYy5oYXNfZnVuY3Rpb24oJ3N0cm5kdXAnLCBwcmVmaXg6JyNpbmNsdWRlIDxzdHJpbmcuaD4nKSkKKyAKKyBpZiBnZXRfb3B0aW9uKCdsaWJyYXJpZXMnKQorIAlmZmlfZGVwID0gZGVwZW5kZW5jeSgnbGliZmZpJykKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1tZXNvbi10ZXN0cy1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtb24tcHJvdG9jb2wtaGVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZGUwZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1tZXNvbi10ZXN0cy1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtb24tcHJvdG9jb2wtaGVhLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGIyYzc0ZjZhM2RiZTBhZWUyNDEzODAwODM3MzE0MTM2OTQ3YTQ5ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYW4gQmVpY2ggPGpiZWljaEBGcmVlQlNELm9yZz4KK0RhdGU6IFNhdCwgMTUgRmViIDIwMjAgMDI6MDM6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24vdGVzdHM6IGFkZCBtaXNzaW5nIGRlcGVuZGVuY2llcyBvbiBwcm90b2NvbCBoZWFkZXJzCisKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9jb25uZWN0aW9uLXRlc3QuYzo0MzoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy90ZXN0LWNvbXBvc2l0b3IuaDozMDoKKy4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOjEwOiBmYXRhbCBlcnJvcjogJ3dheWxhbmQtY2xpZW50LXByb3RvY29sLmgnIGZpbGUgbm90IGZvdW5kCisgI2luY2x1ZGUgIndheWxhbmQtY2xpZW50LXByb3RvY29sLmgiCisgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvZGlzcGxheS10ZXN0LmM6NDU6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL3dheWxhbmQtc2VydmVyLmg6MTA0Ogorc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6NDQ1NDoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIC8qIGNvbW1lbnQKKyAgICAgICAgLyoqCisgICAgICAgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9jcHAtY29tcGlsZS10ZXN0LmNwcDoyOgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy93YXlsYW5kLXNlcnZlci1wcm90b2NvbC5oOjg6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL3dheWxhbmQtc2VydmVyLmg6MTA0Ogorc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6MzoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZQorICNpZm5kZWYgV0FZTEFORF9TRVJWRVJfUFJPVE9DT0xfSAorICBeCisuLi90ZXN0cy9oZWFkZXJzLXByb3RvY29sLXRlc3QuYzozMzoyOiBlcnJvcjogaW5jbHVkaW5nIHdheWxhbmQtc2VydmVyLXByb3RvY29sLmggZGlkIG5vdCBpbmNsdWRlIHdheWxhbmQtc2VydmVyLmghCisgI2Vycm9yIGluY2x1ZGluZyB3YXlsYW5kLXNlcnZlci1wcm90b2NvbC5oIGRpZCBub3QgaW5jbHVkZSB3YXlsYW5kLXNlcnZlci5oIQorICBeCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvaGVhZGVycy1wcm90b2NvbC10ZXN0LmM6MjY6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6ODoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1jbGllbnQuaDo0MDoKK3NyYy93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjEzNTg6MjogZXJyb3I6IHVudGVybWluYXRlZCBjb25kaXRpb25hbCBkaXJlY3RpdmUKKyAjaWZuZGVmIFdMX1NITV9GT1JNQVRfRU5VTQorICBeCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vdGVzdHMvcHJvdG9jb2wtbG9nZ2VyLXRlc3QuYzozNDoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1jbGllbnQuaDo0MDoKK3NyYy93YXlsYW5kLWNsaWVudC1wcm90b2NvbC5oOjI2MTM6MTogZXJyb3I6IHVudGVybWluYXRlZCAvKiBjb21tZW50CisvKioKK14KKy4uL3Rlc3RzL3Jlc291cmNlcy10ZXN0LmM6NDk6MzY6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICd3bF9zZWF0X2ludGVyZmFjZScKKyAgICAgICAgcmVzID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX3NlYXRfaW50ZXJmYWNlLCA0LCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvbWVzb24uYnVpbGQgfCAyNiArKysrKysrKysrKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAoraW5kZXggYzI4YTJhMy4uZjFhZjdiNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKysgYi90ZXN0cy9tZXNvbi5idWlsZAorQEAgLTY5LDcgKzY5LDcgQEAgdGVzdCgKKyAJZXhlY3V0YWJsZSgKKyAJCSdjcHAtY29tcGlsZS10ZXN0JywKKyAJCSdjcHAtY29tcGlsZS10ZXN0LmNwcCcsCistCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJaW5jbHVkZV9kaXJlY3Rvcmllczogc3JjX2luYworIAkpCisgKQorQEAgLTkxLDE3ICs5MSwyNSBAQCB0ZXN0cyA9IHsKKyAJJ2FycmF5LXRlc3QnOiBbXSwKKyAJJ2NsaWVudC10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdkaXNwbGF5LXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJCXRlc3RzX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJdGVzdHNfY2xpZW50X3Byb3RvY29sX2MsCisgCQl0ZXN0c19wcm90b2NvbF9jLAorIAldLAorLQknY29ubmVjdGlvbi10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisrCSdjb25uZWN0aW9uLXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKysJXSwKKyAJJ2V2ZW50LWxvb3AtdGVzdCc6IFsgd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCBdLAorIAknZml4ZWQtdGVzdCc6IFtdLAorIAknaW50ZXJmYWNlLXRlc3QnOiBbIHdheWxhbmRfY2xpZW50X3Byb3RvY29sX2ggXSwKKyAJJ2xpc3QtdGVzdCc6IFtdLAorIAknbWFwLXRlc3QnOiBbXSwKKy0JJ3Nhbml0eS10ZXN0JyA6IFsgd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCBdLAorKwknc2FuaXR5LXRlc3QnIDogWworKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisrCV0sCisgCSdzb2NrZXQtdGVzdCc6IFsKKyAJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorQEAgLTExNiw3ICsxMjQsNyBAQCB0ZXN0cyA9IHsKKyAJCWZpbGVzKCcuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuYycpLAorIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJXSwKKy0JJ3Jlc291cmNlcy10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2ggXSwKKysJJ3Jlc291cmNlcy10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdtZXNzYWdlLXRlc3QnOiBbCisgCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKK0BAIC0xMjYsMTQgKzEzNCwxNiBAQCB0ZXN0cyA9IHsKKyAJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCV0sCisgCSdwcm90b2NvbC1sb2dnZXItdGVzdCc6IFsKKy0JCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCwKKy0JCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2NvcmVfaCwKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAldLAorIAknaGVhZGVycy10ZXN0JzogWworKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCQknaGVhZGVycy1wcm90b2NvbC10ZXN0LmMnLAorLQkJJ2hlYWRlcnMtcHJvdG9jb2wtY29yZS10ZXN0LmMnLAorLQkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorIAkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfY29yZV9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorKwkJJ2hlYWRlcnMtcHJvdG9jb2wtY29yZS10ZXN0LmMnLAorIAldLAorIAknb3Mtd3JhcHBlcnMtdGVzdCc6IFtdLAorIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ0MzU4Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMS1zY2FubmVyLUFkZC1jb25maWd1cmUtY2hlY2stZm9yLXN0cm5kdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDNjOGI0NDY3YTFjYTIyOWU3MmZiNTIyMzc4N2VkNDAwYTE5YzY1YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI1IE9jdCAyMDE5IDIxOjAzOjIzIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNjYW5uZXI6IEFkZCBjb25maWd1cmUgY2hlY2sgZm9yIHN0cm5kdXAKLQotU29tZSBwbGF0Zm9ybXMgbWF5IG5vdCBoYXZlIHN0cm5kdXAoKSAoZS5nLiBNaW5HVyksIHNvIHByb3ZpZGUgYQotZXF1aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIG5vdCBmb3VuZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbNGExZjM0OGMyMDE1N2RiN2JkN2M3NTlmZGViMjNmYmU4NzI5YzU3MV0KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgfCAgMiArLQotIHNyYy9zY2FubmVyLmMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4ZDU2ZjJiLi4xYzk5ZTIxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02Myw3ICs2Myw3IEBAIGZpCi0gQUNfU1VCU1QoR0NDX0NGTEFHUykKLSAKLSBBQ19DSEVDS19IRUFERVJTKFtzeXMvcHJjdGwuaF0pCi0tQUNfQ0hFQ0tfRlVOQ1MoW2FjY2VwdDQgbWtvc3RlbXAgcG9zaXhfZmFsbG9jYXRlIHByY3RsXSkKLStBQ19DSEVDS19GVU5DUyhbYWNjZXB0NCBta29zdGVtcCBwb3NpeF9mYWxsb2NhdGUgcHJjdGwgc3RybmR1cF0pCi0gCi0gQUNfQVJHX0VOQUJMRShbbGlicmFyaWVzXSwKLSAJICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlicmFyaWVzXSwKLWRpZmYgLS1naXQgYS9zcmMvc2Nhbm5lci5jIGIvc3JjL3NjYW5uZXIuYwotaW5kZXggYTk0YmU1ZC4uMjcwMDRiYyAxMDA2NDQKLS0tLSBhL3NyYy9zY2FubmVyLmMKLSsrKyBiL3NyYy9zY2FubmVyLmMKLUBAIC05MTYsNiArOTE2LDE3IEBAIHZlcmlmeV9hcmd1bWVudHMoc3RydWN0IHBhcnNlX2NvbnRleHQgKmN0eCwKLSAKLSB9Ci0gCi0rI2lmbmRlZiBIQVZFX1NUUk5EVVAKLStjaGFyICoKLStzdHJuZHVwKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzaXplKQotK3sKLSsJY2hhciAqciA9IG1hbGxvYyhzaXplICsgMSk7Ci0rCXN0cm5jcHkociwgcywgc2l6ZSk7Ci0rCXJbc2l6ZV0gPSAnXDAnOwotKwlyZXR1cm4gcjsKLSt9Ci0rI2VuZGlmCi0rCi0gc3RhdGljIHZvaWQKLSBlbmRfZWxlbWVudCh2b2lkICpkYXRhLCBjb25zdCBYTUxfQ2hhciAqbmFtZSkKLSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTk5NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIGNiYjI4NjM1YTEwNzlkNjhlNjJkYmFhMWUyMTc5MWEyMGRiYmJhZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTcgRmViIDIwMjAgMjE6NDY6MTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlIHRoZSBwYXRoIHRvIHdheWxhbmQtc2Nhbm5lcgorCitUaGlzIHJlc3VsdHMgaW4gaG9zdCBjb250YW1pbmF0aW9uIGR1cmluZyBidWlsZHMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL21lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21lc29uLmJ1aWxkIGIvc3JjL21lc29uLmJ1aWxkCitpbmRleCAyOTRhZWUwLi43ZTQxMGZhIDEwMDY0NAorLS0tIGEvc3JjL21lc29uLmJ1aWxkCisrKysgYi9zcmMvbWVzb24uYnVpbGQKK0BAIC00OSw3ICs0OSw3IEBAIHBrZ2NvbmZpZy5nZW5lcmF0ZSgKKyAJCSdkYXRhcm9vdGRpcj0nICsgam9pbl9wYXRocygnJHtwcmVmaXh9JywgZ2V0X29wdGlvbignZGF0YWRpcicpKSwKKyAJCSdwa2dkYXRhZGlyPScgKyBqb2luX3BhdGhzKCcke2RhdGFyb290ZGlyfScsIG1lc29uLnByb2plY3RfbmFtZSgpKSwKKyAJCSdiaW5kaXI9JyArIGpvaW5fcGF0aHMoJyR7cHJlZml4fScsIGdldF9vcHRpb24oJ2JpbmRpcicpKSwKKy0JCSd3YXlsYW5kX3NjYW5uZXI9JHtiaW5kaXJ9L3dheWxhbmQtc2Nhbm5lcicKKysJCSd3YXlsYW5kX3NjYW5uZXI9d2F5bGFuZC1zY2FubmVyJworIAldLAorIAlmaWxlYmFzZTogJ3dheWxhbmQtc2Nhbm5lcicKKyApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Nb3ZlLXdsX3ByaXZfc2lnbmFsLXRvLXdheWxhbmQtc2VydmVyLXByaXZhdGUuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDViODc1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLUZyb20gZTc0NmYzYmY3YzhiYjJmNWRjZjllOTNlZGZmYzIzYjU2ZWZmMTJkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNSBOb3YgMjAxOSAwOTowOTo1MCAtMDYwMAotU3ViamVjdDogW1BBVENIXSBNb3ZlIHdsX3ByaXZfc2lnbmFsIHRvIHdheWxhbmQtc2VydmVyLXByaXZhdGUuaAotCi1JbmNsdWRpbmcgd2F5bGFuZC1zZXJ2ZXItY29yZS5oIGluIHdheWxhbmQtcHJpdmF0ZS5oIGlzIHByb2JsZW1hdGljCi1iZWNhdXNlIHdheWxhbmQtcHJpdmF0ZS5oIGlzIGluY2x1ZGVkIGJ5IHdheWxhbmQtc2Nhbm5lciB3aGljaCBzaG91bGQgYmUKLWFibGUgdG8gYnVpbGQgYWdhaW5zdCBub24tUE9TSVggcGxhdGZvcm1zIChlLmcuIE1pbkdXKS4gVGhlIG9ubHkgcmVhc29uCi10aGF0IHdheWxhbmQtc2VydmVyLWNvcmUuaCB3YXMgaW5jbHVkZWQgaW4gd2F5bGFuZC1wcml2YXRlLmggd2FzIGZvciB0aGUKLXdsX3ByaXZhdGVfc2lnbmFsIGRlZmluaXRpb25zLCBzbyBtb3ZlIHRob3NlIHRvIGEKLXdheWxhbmQtc2VydmVyLXByaXZhdGUuaCBmaWxlIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGJ5IGJvdGgKLXdheWxhbmQtc2VydmVyLmMgYW5kIHRoZSB0ZXN0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbZTdkODhmMzVlYjg5Y2YwY2M3N2NiZGRkODM0Y2FjYzYzNjgzYTljY10KLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgfCAgMyArLQotIHNyYy93YXlsYW5kLXByaXZhdGUuaCAgICAgICAgfCAyMiArLS0tLS0tLS0tLS0tLS0KLSBzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL3dheWxhbmQtc2VydmVyLmMgICAgICAgICB8ICAxICsKLSB0ZXN0cy9uZXdzaWduYWwtdGVzdC5jICAgICAgIHwgIDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBmNDdkMDU1Li4wMjZkOTgxIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTYsNyArNTYsOCBAQCBsaWJ3YXlsYW5kX3ByaXZhdGVfbGFfU09VUkNFUyA9CQkJXAotIAlzcmMvY29ubmVjdGlvbi5jCQkJXAotIAlzcmMvd2F5bGFuZC1vcy5jCQkJXAotIAlzcmMvd2F5bGFuZC1vcy5oCQkJXAotLQlzcmMvd2F5bGFuZC1wcml2YXRlLmgKLSsJc3JjL3dheWxhbmQtcHJpdmF0ZS5oCQkJXAotKwlzcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0gCi0gaW5jbHVkZV9IRUFERVJTID0JCQkJXAotIAlzcmMvd2F5bGFuZC11dGlsLmgJCQlcCi1kaWZmIC0tZ2l0IGEvc3JjL3dheWxhbmQtcHJpdmF0ZS5oIGIvc3JjL3dheWxhbmQtcHJpdmF0ZS5oCi1pbmRleCAyOTUxNmVjLi5kYzdkMTJmIDEwMDY0NAotLS0tIGEvc3JjL3dheWxhbmQtcHJpdmF0ZS5oCi0rKysgYi9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLUBAIC0zMSwxMSArMzEsMTEgQEAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5oPgotIAotICNkZWZpbmUgV0xfSElERV9ERVBSRUNBVEVEIDEKLSAKLSAjaW5jbHVkZSAid2F5bGFuZC11dGlsLmgiCi0tI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLWNvcmUuaCIKLSAKLSAvKiBJbnZhbGlkIG1lbW9yeSBhZGRyZXNzICovCi0gI2RlZmluZSBXTF9BUlJBWV9QT0lTT05fUFRSICh2b2lkICopIDQKLUBAIC0yMzYsMjYgKzIzNiw2IEBAIHphbGxvYyhzaXplX3QgcykKLSAJcmV0dXJuIGNhbGxvYygxLCBzKTsKLSB9Ci0gCi0tc3RydWN0IHdsX3ByaXZfc2lnbmFsIHsKLS0Jc3RydWN0IHdsX2xpc3QgbGlzdGVuZXJfbGlzdDsKLS0Jc3RydWN0IHdsX2xpc3QgZW1pdF9saXN0OwotLX07Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2luaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwpOwotLQotLXZvaWQKLS13bF9wcml2X3NpZ25hbF9hZGQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIpOwotLQotLXN0cnVjdCB3bF9saXN0ZW5lciAqCi0td2xfcHJpdl9zaWduYWxfZ2V0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB3bF9ub3RpZnlfZnVuY190IG5vdGlmeSk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotLQotLXZvaWQKLS13bF9wcml2X3NpZ25hbF9maW5hbF9lbWl0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB2b2lkICpkYXRhKTsKLS0KLSB2b2lkCi0gd2xfY29ubmVjdGlvbl9jbG9zZV9mZHNfaW4oc3RydWN0IHdsX2Nvbm5lY3Rpb24gKmNvbm5lY3Rpb24sIGludCBtYXgpOwotIAotZGlmZiAtLWdpdCBhL3NyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmggYi9zcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjNmYTQ1OAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3dheWxhbmQtc2VydmVyLXByaXZhdGUuaAotQEAgLTAsMCArMSw1MyBAQAotKy8qCi0rICogQ29weXJpZ2h0IMKpIDIwMDgtMjAxMSBLcmlzdGlhbiBIw7hnc2JlcmcKLSsgKiBDb3B5cmlnaHQgwqkgMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotKyAqIENvcHlyaWdodCDCqSAyMDEzIEphc29uIEVrc3RyYW5kCi0rICoKLSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSsgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSsgKiAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0rICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotKyAqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCi0rICogbmV4dCBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKLSsgKiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSsgKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotKyAqIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCi0rICogQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOCi0rICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KLSsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0rICogU09GVFdBUkUuCi0rICovCi0rCi0rI2lmbmRlZiBXQVlMQU5EX1NFUlZFUl9QUklWQVRFX0gKLSsjZGVmaW5lIFdBWUxBTkRfU0VSVkVSX1BSSVZBVEVfSAotKwotKyNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci1jb3JlLmgiCi0rCi0rc3RydWN0IHdsX3ByaXZfc2lnbmFsIHsKLSsJc3RydWN0IHdsX2xpc3QgbGlzdGVuZXJfbGlzdDsKLSsJc3RydWN0IHdsX2xpc3QgZW1pdF9saXN0OwotK307Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2luaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwpOwotKwotK3ZvaWQKLSt3bF9wcml2X3NpZ25hbF9hZGQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIpOwotKwotK3N0cnVjdCB3bF9saXN0ZW5lciAqCi0rd2xfcHJpdl9zaWduYWxfZ2V0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB3bF9ub3RpZnlfZnVuY190IG5vdGlmeSk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotKwotK3ZvaWQKLSt3bF9wcml2X3NpZ25hbF9maW5hbF9lbWl0KHN0cnVjdCB3bF9wcml2X3NpZ25hbCAqc2lnbmFsLCB2b2lkICpkYXRhKTsKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvd2F5bGFuZC1zZXJ2ZXIuYyBiL3NyYy93YXlsYW5kLXNlcnZlci5jCi1pbmRleCAxOWY2YTc2Li5kNmYwMjA2IDEwMDY0NAotLS0tIGEvc3JjL3dheWxhbmQtc2VydmVyLmMKLSsrKyBiL3NyYy93YXlsYW5kLXNlcnZlci5jCi1AQCAtNDUsNiArNDUsNyBAQAotIAotICNpbmNsdWRlICJ3YXlsYW5kLXV0aWwuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1wcml2YXRlLmgiCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLXByaXZhdGUuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXIuaCIKLSAjaW5jbHVkZSAid2F5bGFuZC1vcy5oIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL25ld3NpZ25hbC10ZXN0LmMgYi90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi1pbmRleCA0N2M0MjliLi5mM2E3YmQ5IDEwMDY0NAotLS0tIGEvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYwotKysrIGIvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gCi0gI2luY2x1ZGUgInRlc3QtcnVubmVyLmgiCi0tI2luY2x1ZGUgIndheWxhbmQtcHJpdmF0ZS5oIgotKyNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci1wcml2YXRlLmgiCi0gCi0gc3RhdGljIHZvaWQKLSBzaWduYWxfbm90aWZ5KHN0cnVjdCB3bF9saXN0ZW5lciAqbGlzdGVuZXIsIHZvaWQgKmRhdGEpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItbWVzb24uYnVpbGQtZmluZC10aGUtbmF0aXZlLXdheWxhbmQtc2Nhbm5lci1kaXJlY3RseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTgwMzdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItbWVzb24uYnVpbGQtZmluZC10aGUtbmF0aXZlLXdheWxhbmQtc2Nhbm5lci1kaXJlY3RseS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDI1ODJkMjY1M2JhODA5MTdkN2JjNDcwODhlMWE1ZjQ5NTMwZmRkYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMjAgMTY6Mjk6NTMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGZpbmQgdGhlIG5hdGl2ZSB3YXlsYW5kLXNjYW5uZXIgZGlyZWN0bHkgaW4gUEFUSAorCitPdGhlcndpc2UsIG1lc29uIGF0dGVtcHRzIHRvIHVzZSB0aGUgdGFyZ2V0IHBrZy1jb25maWcgYW5kIGZhaWxzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL21lc29uLmJ1aWxkIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDNlOGM5YmYuLjI5NGFlZTAgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9tZXNvbi5idWlsZAorQEAgLTU1LDggKzU1LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorICkKKyAKKyBpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpCistCXNjYW5uZXJfZGVwID0gZGVwZW5kZW5jeSgnd2F5bGFuZC1zY2FubmVyJywgbmF0aXZlOiB0cnVlLCB2ZXJzaW9uOiAnPj0xLjE0LjAnKQorLQl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gZmluZF9wcm9ncmFtKHNjYW5uZXJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ3dheWxhbmRfc2Nhbm5lcicpKQorKwl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gZmluZF9wcm9ncmFtKCd3YXlsYW5kLXNjYW5uZXInKQorIGVsc2UKKyAJd2F5bGFuZF9zY2FubmVyX2Zvcl9idWlsZCA9IHdheWxhbmRfc2Nhbm5lcgorIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvZml4cGF0aGlucGNmaWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDM1MjZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRml4IHdheWxhbmQtY2xpZW50IGFuZCB3YXlsYW5kLXNjYW5uZXIgcGMgZmlsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEZhYmllbiBMYWhvdWRlcmUgPGZhYmllbi5sYWhvdWRlcmVAY29sbGFib3JhLmNvLnVrPgotCi1JbmRleDogd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtY2xpZW50LnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLSsrKyB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLUBAIC0xLDcgKzEsNyBAQAotIHByZWZpeD1AcHJlZml4QAotIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLSBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACi0tcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACi0rcGtnZGF0YWRpcj0ke3BjX3N5c3Jvb3RkaXJ9QGRhdGFkaXJAL0BQQUNLQUdFQAotIGxpYmRpcj1AbGliZGlyQAotIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0gCi1JbmRleDogd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdheWxhbmQtMS4xNC4wLm9yaWcvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLXNjYW5uZXIucGMuaW4KLUBAIC0yLDcgKzIsNyBAQCBwcmVmaXg9QHByZWZpeEAKLSBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0gZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAotIHBrZ2RhdGFkaXI9QGRhdGFkaXJAL0BQQUNLQUdFQAotLXdheWxhbmRfc2Nhbm5lcj1AYmluZGlyQC93YXlsYW5kLXNjYW5uZXIKLSt3YXlsYW5kX3NjYW5uZXI9d2F5bGFuZC1zY2FubmVyCi0gCi0gTmFtZTogV2F5bGFuZCBTY2FubmVyCi0gRGVzY3JpcHRpb246IFdheWxhbmQgc2Nhbm5lcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U4ZDlkZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9ydW4tcHRlc3QKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKK2V4cG9ydCBXQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyCitleHBvcnQgVEVTVF9EQVRBX0RJUj10ZXN0cy9kYXRhCitleHBvcnQgVEVTVF9PVVRQVVRfRElSPXRlc3RzL291dHB1dAorZXhwb3J0IFNFRD1zZWQKK2V4cG9ydCBXQVlMQU5EX0VHTF9MSUI9L3Vzci9saWIvbGlid2F5bGFuZC1lZ2wuc28uMQorZXhwb3J0IE5NPW5tCisKK2ZvciBpIGluIGBscyB0ZXN0cy8qLXRlc3QgdGVzdHMvd2F5bGFuZC1lZ2wtc3ltYm9scy1jaGVjayB0ZXN0cy9zY2FubmVyLXRlc3Quc2hgOyBkbworICAgICRpCisgICAgaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgICAgICAgIGVjaG8gIlBBU1M6ICRpIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRkFJTDogJGkiCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjVhOGY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKLWFzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKLWEgc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAotaW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCi1iZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAotZGlzcGxheSBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCi0KLURFUEVORFMgPSAiZXhwYXQgbGlieG1sMiBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLQkgICBmaWxlOi8vZml4cGF0aGlucGNmaWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImQ5MWY5NzBhZWExMWZkNTQ5ZWFlMDIzZDA2ZjkxYWYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyYWExMWI4YWM2ZTIyZjQ3NzczMDJjOTI1MWU4ZmVjNzY1NWRjMjJmOWQ5NGVlNjc2YzZiMjc2Zjk1ZjkxYTQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS13aXRoLWhvc3Qtc2Nhbm5lciIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKLQotIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0Ci0jIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCi0gICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCi0gICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLX0KLQotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0Jcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGJlM2FhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTguMC5iYgpAQCAtMCwwICsxLDYyIEBACitTVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKK2FzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKK2Egc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAoraW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCitiZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAorZGlzcGxheSBzZXJ2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCisKK0RFUEVORFMgPSAiZXhwYXQgbGliZmZpIHdheWxhbmQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LWhhcmRjb2RlLXRoZS1wYXRoLXRvLXdheWxhbmQtc2Nhbm5lci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjMzMTc2OTdiNmUzZmYyZTFhYzhjNWJhM2VkNTdiNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY3NWE3OWYwOTEwMjA4MTdhOThmZDA0ODRlNzIwOGM4NzYyMjQyMjY2OTY3ZjU1YTY3Nzc2OTM2YzJlMjk0ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gImR0ZC12YWxpZGF0aW9uIgorUEFDS0FHRUNPTkZJR1tkdGQtdmFsaWRhdGlvbl0gPSAiLURkdGRfdmFsaWRhdGlvbj10cnVlLC1EZHRkX3ZhbGlkYXRpb249ZmFsc2UsbGlieG1sMiwsIgorCitFWFRSQV9PRU1FU09OID0gIi1EZG9jdW1lbnRhdGlvbj1mYWxzZSIKK0VYVFJBX09FTUVTT05fY2xhc3MtbmF0aXZlID0gIi1EZG9jdW1lbnRhdGlvbj1mYWxzZSAtRGxpYnJhcmllcz1mYWxzZSIKKworIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0CisjIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCisgICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCisgICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhCisgICAgY3AgLXJmICR7Qn0vdGVzdHMvKi10ZXN0ICR7Qn0vdGVzdHMvKi1jaGVja2VyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7Qn0vdGVzdHMvKi1jaGVja2VyICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7U30vdGVzdHMvc2Nhbm5lci10ZXN0LnNoICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvZGF0YS8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvCisgICAgY3AgLXJmICR7U30vZWdsL3dheWxhbmQtZWdsLXN5bWJvbHMtY2hlY2sgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00CisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmludXRpbHMgc2VkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQuYmIKaW5kZXggZTNlNzM5ZS4uNDBhYTc2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiCkBAIC01LDYgKzUsNyBAQAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZW52IFwKICAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5pbmkgXAogICAgICAgICAgICBmaWxlOi8vd2VzdG9uQC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzcxLXdlc3Rvbi1kcm0ucnVsZXMgXApAQCAtMTUsNiArMTYsNyBAQAogZG9faW5zdGFsbCgpIHsKIAlpbnN0YWxsIC1EbTc1NSAke1dPUktESVJ9L2luaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93ZXN0b24KIAlpbnN0YWxsIC1EIC1wIC1tMDY0NCAke1dPUktESVJ9L3dlc3Rvbi5pbmkgJHtEfSR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pCisJaW5zdGFsbCAtRG02NDQgJHtXT1JLRElSfS93ZXN0b24uZW52ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCiAKIAkjIEluc3RhbGwgV2VzdG9uIHN5c3RlbWQgc2VydmljZSBhbmQgYWNjb21wYW55aW5nIHVkZXYgcnVsZQogCWluc3RhbGwgLUQgLXAgLW0wNjQ0ICR7V09SS0RJUn0vd2VzdG9uQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZQpAQCAtMzAsNiArMzIsMTQgQEAKIAlzZWQgLWkgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7YmluZGlyfS93ZXN0b24tc3RhcnQKIH0KIAorZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsX3FlbXV4ODYoKSB7CisgICAgICAgIGVjaG8gIldFU1RPTl9ESVNBQkxFX0FUT01JQz1ZIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3dlc3RvbgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4Ni02NCgpIHsKKyAgICAgICAgZWNobyAiV0VTVE9OX0RJU0FCTEVfQVRPTUlDPVkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCit9CisKIGluaGVyaXQgdXBkYXRlLXJjLmQgZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAogCiAjIHJkZXBlbmRzIG9uIHdlc3RvbiB3aGljaCBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCkBAIC00MCw5ICs1MCw5IEBACiBJTklUU0NSSVBUX05BTUUgPSAid2VzdG9uIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOSA1IDIgLiBzdG9wIDIwIDAgMSA2IC4iCiAKLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZSIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3dlc3RvbkAuc2VydmljZSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uIgogCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pIgorQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uIgogCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2VzdG9uQCVpLnNlcnZpY2UiCiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXVhbGwvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZWJkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXVhbGwvd2VzdG9uLmluaQpAQCAtMCwwICsxLDIgQEAKK1tjb3JlXQorYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYtNjQvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCmluZGV4IDE3ZWJkN2YuLmU2OWRlMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pCkBAIC0xLDIgKzAsMCBAQAotW2NvcmVdCi1iYWNrZW5kPWZiZGV2LWJhY2tlbmQuc28KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKaW5kZXggMTdlYmQ3Zi4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkKQEAgLTEsMiArMCwwIEBACi1bY29yZV0KLWJhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uZW52IGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uZW52Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaQppbmRleCAxZWVjZjQ4Li4xZTZkZmY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pCkBAIC0xLDkgKzEsMTAgQEAKICMgY29uZmlndXJhdGlvbiBmaWxlIGZvciBXZXN0b24KIAotI1tjb3JlXQorW2NvcmVdCiAjbW9kdWxlcz14d2F5bGFuZC5zbyxjbXMtY29sb3JkLnNvCiAjc2hlbGw9ZGVza3RvcC1zaGVsbC5zbwogI2dibS1mb3JtYXQ9eHJnYjIxMDEwMTAKK3JlcXVpcmUtaW5wdXQ9ZmFsc2UKIAogI1tzaGVsbF0KICNiYWNrZ3JvdW5kLWltYWdlPS91c3Ivc2hhcmUvYmFja2dyb3VuZHMvZ25vbWUvQXF1YS5qcGcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uQC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKaW5kZXggOWVjZjJhYi4uMzllMTkzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UKQEAgLTEsMzcgKzEsMTUgQEAKIFtVbml0XQotRGVzY3JpcHRpb249V2VzdG9uIFdheWxhbmQgQ29tcG9zaXRvciAob24gdHR5NykKK0Rlc2NyaXB0aW9uPVdlc3RvbiBXYXlsYW5kIENvbXBvc2l0b3IKIFJlcXVpcmVzTW91bnRzRm9yPS9ydW4KLUNvbmZsaWN0cz1nZXR0eUB0dHk3LnNlcnZpY2UgcGx5bW91dGgtcXVpdC5zZXJ2aWNlCi1BZnRlcj1zeXN0ZW1kLXVzZXItc2Vzc2lvbnMuc2VydmljZSBnZXR0eUB0dHk3LnNlcnZpY2UgcGx5bW91dGgtcXVpdC13YWl0LnNlcnZpY2UKK0NvbmZsaWN0cz1wbHltb3V0aC1xdWl0LnNlcnZpY2UKK0FmdGVyPXN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlIHBseW1vdXRoLXF1aXQtd2FpdC5zZXJ2aWNlCiAKIFtTZXJ2aWNlXQogVXNlcj0laQotUGVybWlzc2lvbnNTdGFydE9ubHk9dHJ1ZQotCi0jIExvZyB1cyBpbiB2aWEgUEFNIHNvIHdlIGdldCBvdXIgWERHICYgY28uIGVudmlyb25tZW50IGFuZAotIyBhcmUgdHJlYXRlZCBhcyBsb2dnZWQgaW4gc28gd2UgY2FuIHVzZSB0aGUgdHR5OgogUEFNTmFtZT1sb2dpbgotCi0jIEdyYWIgdHR5NwotVXRtcElkZW50aWZpZXI9dHR5NwotVFRZUGF0aD0vZGV2L3R0eTcKLVRUWVJlc2V0PXllcwotVFRZVkhhbmd1cD15ZXMKLVRUWVZURGlzYWxsb2NhdGU9eWVzCi0KLSMgc3RkZXJyIHRvIGpvdXJuYWwgc28gb3VyIGxvZ2dpbmcgZG9lc24ndCBnZXQgdGhyb3duIGludG8gL2Rldi9udWxsCi1TdGFuZGFyZE91dHB1dD10dHkKLVN0YW5kYXJkSW5wdXQ9dHR5Ci1TdGFuZGFyZEVycm9yPWpvdXJuYWwKLQogRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvd2VzdG9uCi0KLSMgV2VzdG9uIGRvZXMgbm90IHN1Y2Nlc3NmdWxseSBjaGFuZ2UgVlQsIG5vciBkb2VzIHN5c3RlbWQgcGxhY2UgdXMgb24KLSMgdGhlIFZUIGl0IGp1c3QgYWN0aXZhdGVkIGZvciB1cy4gU3dpdGNoIG1hbnVhbGx5OgotRXhlY1N0YXJ0UHJlPS91c3IvYmluL2NodnQgNwotRXhlY1N0YXJ0PS91c3IvYmluL3dlc3RvbiAtLWxvZz0ke1hER19SVU5USU1FX0RJUn0vd2VzdG9uLmxvZyAkT1BUQVJHUwotCitTdGFuZGFyZEVycm9yPWpvdXJuYWwKK1Blcm1pc3Npb25zU3RhcnRPbmx5PXRydWUKIElnbm9yZVNJR1BJUEU9bm8KIAotI1tJbnN0YWxsXQotI0FsaWFzPW11bHRpLXVzZXIudGFyZ2V0LndhbnRzL3dlc3Rvbi5zZXJ2aWNlCitFeGVjU3RhcnQ9L3Vzci9iaW4vd2VzdG9uLXN0YXJ0IC12IC1lIC0tICRPUFRBUkdTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKaW5kZXggZTUwODQ1Yi4uNjJiODY0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjgyYjdkNzlhN2I4MWVjOGUzODc2MDM4MTEwNGIyNGFkNTQ5ZThjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWYyZDcxOTk4ZWI3NzA2OGNiYWVlMmQ0NjhjYmIyOTZhNDJkNTczOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KIERhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTU6NTM6MzAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gd2VzdG9uLWxhdW5jaDogUHJvdmlkZSBhIGRlZmF1bHQgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgcmVxdWlyZQpAQCAtMTYsNiArMTYsNyBAQAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IERlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAdG9yYWRleC5jb20+CisKIC0tLQogIGxpYndlc3Rvbi9tZXNvbi5idWlsZCAgICAgfCAxNiArKysrKysrKysrKystLS0tCiAgbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwpAQCAtMjMsMTAgKzI0LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL21lc29uLmJ1aWxkIGIvbGlid2VzdG9uL21lc29uLmJ1aWxkCi1pbmRleCBkOGQzZmMwLi4zMjY2ODNmIDEwMDY0NAoraW5kZXggMDhkMjNlYy4uY2I5ZmQzZiAxMDA2NDQKIC0tLSBhL2xpYndlc3Rvbi9tZXNvbi5idWlsZAogKysrIGIvbGlid2VzdG9uL21lc29uLmJ1aWxkCi1AQCAtMTk5LDE2ICsxOTksMjQgQEAgZGVwX3ZlcnRleF9jbGlwcGluZyA9IGRlY2xhcmVfZGVwZW5kZW5jeSgKK0BAIC0yMTYsMTYgKzIxNiwyNCBAQCBkZXBfdmVydGV4X2NsaXBwaW5nID0gZGVjbGFyZV9kZXBlbmRlbmN5KAogICkKICAKICBpZiBnZXRfb3B0aW9uKCd3ZXN0b24tbGF1bmNoJykKQEAgLTUyLDExICs1MywxMSBAQAogIAkJJ3dlc3Rvbi1sYXVuY2guYycsCiAtCQlkZXBlbmRlbmNpZXM6IFtkZXBfcGFtLCBzeXN0ZW1kX2RlcCwgZGVwX2xpYmRybV0sCiArCQlkZXBlbmRlbmNpZXM6IGRlcHNfd2VzdG9uX2xhdW5jaCwKLSAJCWluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uJyksCisgCQlpbmNsdWRlX2RpcmVjdG9yaWVzOiBjb21tb25faW5jLAogIAkJaW5zdGFsbDogdHJ1ZQogIAkpCiBkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLWluZGV4IDQ5NjJiZDYuLmZjNTMxYzUgMTAwNjQ0CitpbmRleCA4YTcxMWI0Li41NGM1NjdhIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwogQEAgLTUxLDcgKzUxLDkgQEAKQEAgLTExMiw3ICsxMTMsNyBAQAogIAogIAlpZiAoaW9jdGwod2wtPnR0eSwgS0RTS0JNVVRFLCAwKSAmJgogIAkgICAgaW9jdGwod2wtPnR0eSwgS0RTS0JNT0RFLCB3bC0+a2JfbW9kZSkpCi1AQCAtNjYwLDYgKzY2OCw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02NjYsNiArNjc0LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAlzZXRlbnYoIkhPTUUiLCB3bC0+cHctPnB3X2RpciwgMSk7CiAgCXNldGVudigiU0hFTEwiLCB3bC0+cHctPnB3X3NoZWxsLCAxKTsKICAKQEAgLTEyMCw3ICsxMjEsNyBAQAogIAllbnYgPSBwYW1fZ2V0ZW52bGlzdCh3bC0+cGgpOwogIAlpZiAoZW52KSB7CiAgCQlmb3IgKGkgPSAwOyBlbnZbaV07ICsraSkgewotQEAgLTY2OCw2ICs2NzcsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCitAQCAtNjc0LDYgKzY4Myw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKICAJCX0KICAJCWZyZWUoZW52KTsKICAJfQpAQCAtMTI4LDcgKzEyOSw3IEBACiAgCiAgCS8qCiAgCSAqIFdlIG9wZW4gYSBuZXcgc2Vzc2lvbiwgc28gaXQgbWFrZXMgc2Vuc2UKLUBAIC03MzksOCArNzQ5LDEwIEBAIHN0YXRpYyB2b2lkCitAQCAtNzQ1LDggKzc1NSwxMCBAQCBzdGF0aWMgdm9pZAogIGhlbHAoY29uc3QgY2hhciAqbmFtZSkKICB7CiAgCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFthcmdzLi4uXSBbLS0gW3dlc3RvbiBhcmdzLi5dXVxuIiwgbmFtZSk7CkBAIC0xMzksNyArMTQwLDcgQEAKICAJZnByaW50ZihzdGRlcnIsICIgIC10LCAtLXR0eSAgICAgICBTdGFydCBzZXNzaW9uIG9uIGFsdGVybmF0aXZlIHR0eSxcbiIKICAJCQkiICAgICAgICAgICAgICAgICAgZS5nLiAtdCAvZGV2L3R0eTQsIHJlcXVpcmVzIC11IG9wdGlvbi5cbiIpOwogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyYm9zZSAgIEJlIHZlcmJvc2VcbiIpOwotQEAgLTc1NCw3ICs3NjYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNzYwLDcgKzc3Miw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaW50IGksIGM7CiAgCWNoYXIgKnR0eSA9IE5VTEw7CiAgCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewpAQCAtMTQ5LDcgKzE1MCw3IEBACiAgCQl7ICJ0dHkiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd0JyB9LAogIAkJeyAidmVyYm9zZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndicgfSwKICAJCXsgImhlbHAiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2gnIH0sCi1AQCAtNzY2LDExICs3ODAsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTc3MiwxMSArNzg2LDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgInU6dDp2aCIsIG9wdHMsICZpKSkgIT0gLTEpIHsKICAJCXN3aXRjaCAoYykgewogIAkJY2FzZSAndSc6CkBAIC0xNjYsNyArMTY3LDcgQEAKICAJCQlicmVhazsKICAJCWNhc2UgJ3QnOgogIAkJCXR0eSA9IG9wdGFyZzsKLUBAIC04MjIsOCArODQxLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC04MjgsOCArODQ3LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaWYgKHNldHVwX3R0eSgmd2wsIHR0eSkgPCAwKQogIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogIApAQCAtMTc4LDcgKzE3OSw3IEBACiAgCWlmIChzZXR1cF9sYXVuY2hlcl9zb2NrZXQoJndsKSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggZDViZjFkNS4uMjU0ZWIyYiAxMDA2NDQKK2luZGV4IGM4NjJlY2MuLjczZWYyYzMgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKIEBAIC03Myw2ICs3MywxMyBAQCBvcHRpb24oCkBAIC0xOTUsNiArMTk2LDMgQEAKICAJJ3h3YXlsYW5kJywKICAJdHlwZTogJ2Jvb2xlYW4nLAogIAl2YWx1ZTogdHJ1ZSwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNy4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY1NDhkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi1TVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCi1ERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI3O21kNT02YzUzYmJiZDk5MjczZjRmN2M0YWZmYTg1NWMzM2MwYSIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCi0gICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYmZkYTQ4M2JjMjUwMWQwODMxYWYzZjMzYzcwNzg1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMDBhNmQyMDdiNmE0NWY5NWY0NDAxYzYwNDc3MmEzMDdjMzc2N2U1ZTJiZWVjZjNkODc5MTEwYzQzOTA5YTY0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1c2VyYWRkIGZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLURFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCi1ERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgotCi1XRVNUT05fTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6MV0pfSIKLQotRVhUUkFfT0VNRVNPTiArPSAiLURiYWNrZW5kLWRlZmF1bHQ9YXV0byAtRGJhY2tlbmQtcmRwPWZhbHNlIC1EcGlwZXdpcmU9ZmFsc2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAna21zIGZiZGV2IHdheWxhbmQgZWdsJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kIHgxMScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCAnJywgJ2hlYWRsZXNzJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKLSMKLSMgQ29tcG9zaXRvciBjaG9pY2VzCi0jCi0jIFdlc3RvbiBvbiBLTVMKLVBBQ0tBR0VDT05GSUdba21zXSA9ICItRGJhY2tlbmQtZHJtPXRydWUsLURiYWNrZW5kLWRybT1mYWxzZSxkcm0gdWRldiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvbGliZ2JtIG10ZGV2IgotIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURiYWNrZW5kLXdheWxhbmQ9dHJ1ZSwtRGJhY2tlbmQtd2F5bGFuZD1mYWxzZSx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotIyBXZXN0b24gb24gWDExCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURiYWNrZW5kLXgxMT10cnVlLC1EYmFja2VuZC14MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgotIyBIZWFkbGVzcyBXZXN0b24KLVBBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi1EYmFja2VuZC1oZWFkbGVzcz10cnVlLC1EYmFja2VuZC1oZWFkbGVzcz1mYWxzZSIKLSMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCi1QQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItRGJhY2tlbmQtZmJkZXY9dHJ1ZSwtRGJhY2tlbmQtZmJkZXY9ZmFsc2UsdWRldiBtdGRldiIKLSMgd2VzdG9uLWxhdW5jaAotUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi1Ed2VzdG9uLWxhdW5jaD10cnVlLC1Ed2VzdG9uLWxhdW5jaD1mYWxzZSxkcm0iCi0jIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9dHJ1ZSwtRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9ZmFsc2UsbGlidmEiCi0jIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLURyZW5kZXJlci1nbD10cnVlLC1EcmVuZGVyZXItZ2w9ZmFsc2UsdmlydHVhbC9lZ2wiCi0jIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1sY21zPWZhbHNlLGxjbXMiCi0jIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItRGltYWdlLXdlYnA9dHJ1ZSwtRGltYWdlLXdlYnA9ZmFsc2UsbGlid2VicCIKLSMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlIC1EbGF1bmNoZXItbG9naW5kPXRydWUsLURzeXN0ZW1kPWZhbHNlIC1EbGF1bmNoZXItbG9naW5kPWZhbHNlLHN5c3RlbWQgZGJ1cyIKLSMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQotUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLUR4d2F5bGFuZD10cnVlLC1EeHdheWxhbmQ9ZmFsc2UiCi0jIGNvbG9yZCBDTVMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPWZhbHNlLGNvbG9yZCIKLSMgQ2xpZW50cyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi1Ec2ltcGxlLWNsaWVudHM9YWxsIC1EZGVtby1jbGllbnRzPXRydWUsLURzaW1wbGUtY2xpZW50cz0gLURkZW1vLWNsaWVudHM9ZmFsc2UiCi0jIFZpcnR1YWwgcmVtb3RlIG91dHB1dCB3aXRoIEdTdHJlYW1lciBvbiBEUk0gYmFja2VuZAotUEFDS0FHRUNPTkZJR1tyZW1vdGluZ10gPSAiLURyZW1vdGluZz10cnVlLC1EcmVtb3Rpbmc9ZmFsc2UsZ3N0cmVhbWVyLTEuMCIKLSMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KLQlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5sYQotCi0JIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsYXVuY2gnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJY2htb2QgdStzICR7RH0ke2JpbmRpcn0vd2VzdG9uLWxhdW5jaAotCWZpCi19Ci0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGxpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSAke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28gJHtkYXRhZGlyfSIKLQotRklMRVNfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5zbyIKLVNVTU1BUllfbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ID0gIkhlbHBlciBsaWJyYXJ5IGZvciBpbXBsZW1lbnRpbmcgJ3dheWxhbmQgd2luZG93IG1hbmFnZXJzJy4iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qIgotCi1GSUxFU18ke1BOfS14d2F5bGFuZCA9ICIke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059L3h3YXlsYW5kLnNvIgotUkRFUEVORFNfJHtQTn0teHdheWxhbmQgKz0gInhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInhrZXlib2FyZC1jb25maWciCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ3ZXN0b24taW5pdCBsaWJlcmF0aW9uLWZvbnRzIgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICJ3YXlsYW5kLXByb3RvY29scyIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHdlc3Rvbi1sYXVuY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl84LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZTllMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl84LjAuMC5iYgpAQCAtMCwwICsxLDExMiBAQAorU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorREVTQ1JJUFRJT04gPSAiV2VzdG9uIGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OWVlOWU2NmJiMGY5NWQzMzg2YTdhY2FlNzgwYjcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYndlc3Rvbi9jb21wb3NpdG9yLmM7ZW5kbGluZT0yNzttZDU9NmM1M2JiYmQ5OTI3M2Y0ZjdjNGFmZmE4NTVjMzNjMGEiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5wbmcgXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmRlc2t0b3AgXAorICAgICAgICAgICBmaWxlOi8veHdheWxhbmQud2VzdG9uLXN0YXJ0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTNlNDgxMGQ4NTJkZjA2MDFkMDFmZDk4NmE1YjIyYjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzUxOGI0OWIyZWFhMWMzMDkxZjI0NjcxYmRjYzEyNGZkNDlmYzhmMWFmNTExNjE5MjdhZmE0MzI5YzAyNzg0OCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXNlcmFkZCBmZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgorREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKKworV0VTVE9OX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjFdKX0iCisKK0VYVFJBX09FTUVTT04gKz0gIi1EYmFja2VuZC1kZWZhdWx0PWF1dG8gLURiYWNrZW5kLXJkcD1mYWxzZSAtRHBpcGV3aXJlPWZhbHNlIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCBjbGllbnRzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCAnJywgJ2hlYWRsZXNzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBsYXVuY2giCisjCisjIENvbXBvc2l0b3IgY2hvaWNlcworIworIyBXZXN0b24gb24gS01TCitQQUNLQUdFQ09ORklHW2ttc10gPSAiLURiYWNrZW5kLWRybT10cnVlLC1EYmFja2VuZC1kcm09ZmFsc2UsZHJtIHVkZXYgdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2xpYmdibSBtdGRldiIKKyMgV2VzdG9uIG9uIFdheWxhbmQgKG5lc3RlZCBXZXN0b24pCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EYmFja2VuZC13YXlsYW5kPXRydWUsLURiYWNrZW5kLXdheWxhbmQ9ZmFsc2UsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiIKKyMgV2VzdG9uIG9uIFgxMQorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EYmFja2VuZC14MTE9dHJ1ZSwtRGJhY2tlbmQteDExPWZhbHNlLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItRGJhY2tlbmQtaGVhZGxlc3M9dHJ1ZSwtRGJhY2tlbmQtaGVhZGxlc3M9ZmFsc2UiCisjIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgorUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLURiYWNrZW5kLWZiZGV2PXRydWUsLURiYWNrZW5kLWZiZGV2PWZhbHNlLHVkZXYgbXRkZXYiCisjIHdlc3Rvbi1sYXVuY2gKK1BBQ0tBR0VDT05GSUdbbGF1bmNoXSA9ICItRHdlc3Rvbi1sYXVuY2g9dHJ1ZSwtRHdlc3Rvbi1sYXVuY2g9ZmFsc2UsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLURiYWNrZW5kLWRybS1zY3JlZW5jYXN0LXZhYXBpPXRydWUsLURiYWNrZW5kLWRybS1zY3JlZW5jYXN0LXZhYXBpPWZhbHNlLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EcmVuZGVyZXItZ2w9dHJ1ZSwtRHJlbmRlcmVyLWdsPWZhbHNlLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLURjb2xvci1tYW5hZ2VtZW50LWxjbXM9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz1mYWxzZSxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLURpbWFnZS13ZWJwPXRydWUsLURpbWFnZS13ZWJwPWZhbHNlLGxpYndlYnAiCisjIFdlc3RvbiB3aXRoIHN5c3RlbWQtbG9naW4gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSAtRGxhdW5jaGVyLWxvZ2luZD10cnVlLC1Ec3lzdGVtZD1mYWxzZSAtRGxhdW5jaGVyLWxvZ2luZD1mYWxzZSxzeXN0ZW1kIGRidXMiCisjIFdlc3RvbiB3aXRoIFh3YXlsYW5kIHN1cHBvcnQgKHJlcXVpcmVzIFgxMSBhbmQgV2F5bGFuZCkKK1BBQ0tBR0VDT05GSUdbeHdheWxhbmRdID0gIi1EeHdheWxhbmQ9dHJ1ZSwtRHh3YXlsYW5kPWZhbHNlIgorIyBjb2xvcmQgQ01TIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbY29sb3JkXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPXRydWUsLURjb2xvci1tYW5hZ2VtZW50LWNvbG9yZD1mYWxzZSxjb2xvcmQiCisjIENsaWVudHMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjbGllbnRzXSA9ICItRHNpbXBsZS1jbGllbnRzPWFsbCAtRGRlbW8tY2xpZW50cz10cnVlLC1Ec2ltcGxlLWNsaWVudHM9IC1EZGVtby1jbGllbnRzPWZhbHNlIgorIyBWaXJ0dWFsIHJlbW90ZSBvdXRwdXQgd2l0aCBHU3RyZWFtZXIgb24gRFJNIGJhY2tlbmQKK1BBQ0tBR0VDT05GSUdbcmVtb3RpbmddID0gIi1EcmVtb3Rpbmc9dHJ1ZSwtRHJlbW90aW5nPWZhbHNlLGdzdHJlYW1lci0xLjAiCisjIFdlc3RvbiB3aXRoIFBBTSBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCisJcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059LyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGF1bmNoJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWNobW9kIHUrcyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2gKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWJleGVjX3dlc3Rvbi5zbyIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93ZXN0b24gJHtiaW5kaXJ9L3dlc3Rvbi10ZXJtaW5hbCAke2JpbmRpcn0vd2VzdG9uLWluZm8gJHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2ggJHtiaW5kaXJ9L3djYXAtZGVjb2RlICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvKiAke2RhdGFkaXJ9IgorCitGSUxFU19saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLnNvIgorU1VNTUFSWV9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCisKK0ZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0veHdheWxhbmQuc28iCitSREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgorCitSREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIndlc3Rvbi1pbml0IGxpYmVyYXRpb24tZm9udHMiCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvY2FwYWJpbGl0eS5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FiNzQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQvY2FwYWJpbGl0eS5jb25mCkBAIC0wLDAgKzEsMiBAQAorY2FwX3N5c19hZG1pbglAVVNFUkAKK25vbmUJKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC94c2VydmVyLW5vZG0gYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQppbmRleCA2YzU0ODU1Li4xMTZiYjI3IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbQpAQCAtMzgsNiArMzgsMTQgQEAKICAgICAgICAgICAgaWYgWyAtZSAvZGV2L2hpZHJhdzAgXTsgdGhlbgogICAgICAgICAgICAgICAgY2htb2QgbytydyAvZGV2L2hpZHJhdyoKICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgWG9yZyBoYXMgdGhlIGNhcF9zeXNfYWRtaW4gY2FwYWJpbGl0eSB3aGljaCBpcworICAgICAgICAgICAjIG5lZWRlZCBmb3Igc2V0dGluZyB0aGUgZHJtIG1hc3RlcgorICAgICAgICAgICBpZiAhIGdyZXAgLXEgIl5hdXRoLipwYW1fY2FwXC5zbyIgL2V0Yy9wYW0uZC9zdTsgdGhlbgorICAgICAgICAgICAgICAgZWNobyAiYXV0aAlvcHRpb25hbAlwYW1fY2FwLnNvIiA+Pi9ldGMvcGFtLmQvc3UKKyAgICAgICAgICAgZmkKKyAgICAgICAgICAgaWYgISAvdXNyL3NiaW4vZ2V0Y2FwICRYU0VSVkVSIHwgIGdyZXAgLXEgY2FwX3N5c19hZG1pbjsgdGhlbgorICAgICAgICAgICAgICAgL3Vzci9zYmluL3NldGNhcCBjYXBfc3lzX2FkbWluK2VpcCAkWFNFUlZFUgorICAgICAgICAgICBmaQogICAgICAgIGZpCiAKICAgICAgICAjIFVzaW5nIHN1IHJhdGhlciB0aGFuIHN1ZG8gYXMgbGF0ZXN0IDEuOC4xIGNhdXNlIGZhaWx1cmUgW1lPQ1RPICMxMjExXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdF8zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgppbmRleCAzODVmZWE1Li5jMjk5NWY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYgpAQCAtMTAsNiArMTAsNyBAQAogICAgICAgICAgICBmaWxlOi8vZ3BsdjItbGljZW5zZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uc2VydmljZS5pbiBcCiAgICAgICAgICAgIGZpbGU6Ly94c2VydmVyLW5vZG0uY29uZi5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9jYXBhYmlsaXR5LmNvbmYgXAogIgogCiBTID0gIiR7V09SS0RJUn0iCkBAIC0xOSw3ICsyMCw3IEBACiAKIGluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZCBmZWF0dXJlc19jaGVjawogCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSAke0BvZS51dGlscy5jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3BhbScsICcnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJibGFuayIKICMgZHBtcyBhbmQgc2NyZWVuIHNhdmVyIHdpbGwgYmUgb24gb25seSBpZiAnYmxhbmsnIGlzIGluIFBBQ0tBR0VDT05GSUcKQEAgLTQwLDYgKzQxLDggQEAKICAgICBpZiBbICIke1JPT1RMRVNTX1h9IiA9ICIxIiBdIDsgdGhlbgogICAgICAgICBYVVNFUl9IT01FPSIvaG9tZS94dXNlciIKICAgICAgICAgWFVTRVI9Inh1c2VyIgorICAgICAgICBpbnN0YWxsIC1EIGNhcGFiaWxpdHkuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zZWN1cml0eS9jYXBhYmlsaXR5LmNvbmYKKyAgICAgICAgc2VkIC1pICJzOkBVU0VSQDoke1hVU0VSfToiICR7RH0ke3N5c2NvbmZkaXJ9L3NlY3VyaXR5L2NhcGFiaWxpdHkuY29uZgogICAgIGVsc2UKICAgICAgICAgWFVTRVJfSE9NRT0ke1JPT1RfSE9NRX0KICAgICAgICAgWFVTRVI9InJvb3QiCkBAIC02MCw3ICs2Myw3IEBACiAgICAgZmkKIH0KIAotUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50JywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gInhpbml0ICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAneHVzZXItYWNjb3VudCBsaWJjYXAgbGliY2FwLWJpbicsICcnLCBkKX0iCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ4c2VydmVyLW5vZG0iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5IDUgLiBzdG9wIDIwIDAgMSAyIDMgNiAuIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDUzZTI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udGRpcl8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2YgWCBmb250IGZpbGVzIGluIGEgZGlyZWN0b3J5IgotCi1ERVNDUklQVElPTiA9ICJGb3IgZWFjaCBkaXJlY3RvcnkgYXJndW1lbnQsIG1rZm9udGRpciByZWFkcyBhbGwgb2YgdGhlIFwKLWZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gVGhlIGZvbnQgbmFtZXMgYW5kIHJlbGF0ZWQgZGF0YSBhcmUgd3JpdHRlbiBcCi1vdXQgdG8gdGhlIGZpbGVzIFwiZm9udHMuZGlyXCIsIFwiZm9udHMuc2NhbGVcIiwgYW5kIFwiZm9udHMuYWxpYXNcIi4gIFwKLVRoZSBYIHNlcnZlciBhbmQgZm9udCBzZXJ2ZXIgdXNlIHRoZXNlIGZpbGVzIHRvIGZpbmQgdGhlIGF2YWlsYWJsZSBmb250IFwKLWZpbGVzLiIKLQotUEUgPSAiMSIKLVBSID0gIiR7SU5DX1BSfS4wIgotCi1SREVQRU5EU18ke1BOfSArPSAibWtmb250c2NhbGUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgKz0gIm1rZm9udHNjYWxlLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI0ZmNmMmI5MGNhZGJmYzE1MDA5YjllMTI0ZGMzYTNmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMThjNDI5MTQ4Yzk2YzIwNzllZGRhOTIyYTJiNjc2MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZkNTJhNDgyZGYxMzA0ODRlNTFmZDA2NmQxYjZlZGE3YzJjMDJkZGJjOTFmZTZlMmJlMWI5YzRlNzMwNjUzMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNmJlYzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY3JlYXRlIGFuIGluZGV4IG9mIHNjYWxhYmxlIGZvbnQgZmlsZXMgZm9yIFgiCi0KLURFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250c2NhbGUgcmVhZHMgYWxsIG9mIHRoZSBcCi1zY2FsYWJsZSBmb250IGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEZvciBldmVyeSBmb250IGZpbGUgZm91bmQsIGFuIFgxMSBcCi1mb250IG5hbWUgKFhMRkQpIGlzIGdlbmVyYXRlZCwgYW5kIGlzIHdyaXR0ZW4gdG9nZXRoZXIgd2l0aCB0aGUgZmlsZSBcCi1uYW1lIHRvIGEgZmlsZSBmb250cy5zY2FsZSBpbiB0aGUgZGlyZWN0b3J5LiAgVGhlIHJlc3VsdGluZyBmb250cy5zY2FsZSBcCi1pcyB1c2VkIGJ5IHRoZSBta2ZvbnRkaXIgcHJvZ3JhbS4iCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MtbmF0aXZlIHpsaWIgbGliZm9udGVuYyBmcmVldHlwZSB4b3JncHJvdG8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTBkMTI5ZDA1MzA1MTc2ZDFhNzkwZTBhYzFhY2I3ZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk4N2M0MzhlNzlmNWRkYjg0YTljNTcyNmExNjEwODE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlOThkZjY5ZWU1ZjQ1NDJkNzExZTE0MGUxZDkzZTJjM2YyNzc1NDA3Y2NiYjc4NDkxMTBkNTJiOTE3ODJhNmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NjdlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjIuMS5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY3JlYXRlIGFuIGluZGV4IG9mIHNjYWxhYmxlIGZvbnQgZmlsZXMgZm9yIFgiCisKK0RFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250c2NhbGUgcmVhZHMgYWxsIG9mIHRoZSBcCitzY2FsYWJsZSBmb250IGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEZvciBldmVyeSBmb250IGZpbGUgZm91bmQsIGFuIFgxMSBcCitmb250IG5hbWUgKFhMRkQpIGlzIGdlbmVyYXRlZCwgYW5kIGlzIHdyaXR0ZW4gdG9nZXRoZXIgd2l0aCB0aGUgZmlsZSBcCituYW1lIHRvIGEgZmlsZSBmb250cy5zY2FsZSBpbiB0aGUgZGlyZWN0b3J5LiAgVGhlIHJlc3VsdGluZyBmb250cy5zY2FsZSBcCitpcyB1c2VkIGJ5IHRoZSBta2ZvbnRkaXIgcHJvZ3JhbS4iCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MtbmF0aXZlIHpsaWIgbGliZm9udGVuYyBmcmVldHlwZSB4b3JncHJvdG8iCisKK1BST1ZJREVTICs9ICJta2ZvbnRkaXIiCitSUFJPVklERVNfJHtQTn0gKz0gIm1rZm9udGRpciIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk5YjFlMTI2OWFiYTUxNzkxMzliOWU0MzgwZmMwOTM0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjE1OTQwZGUxNThiMWEzZDhiM2Y4YjQ0MmM2MDZlMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2EwNDk1ZWI5NzRhMTc5ZGQ3NDJiZmE2MTk5ZDU2MWJkYTFjOGRhNGEwYzVhNjY3ZjIxZmQ4MmFhYWI2YmFjNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4xLmJiCmluZGV4IDMzYzBjOGEuLmM0ZDQ0M2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYgpAQCAtMTMsNiArMTMsMTAgQEAKIAogUEUgPSAiMSIKIAoraW5oZXJpdCBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0veDExcGVyZmNvbXAiCisKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CiAgICAgc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyAke0R9JHtiaW5kaXJ9L3gxMXBlcmZjb21wCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdC8wMDAxLU1ha2UtbWFucGFnZS1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdC8wMDAxLU1ha2UtbWFucGFnZS1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ5OTA1NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGQ2NDJlNjBkODk2M2YxYjkwNTY5Y2QwYWI1YzI5YWMyYzliZmU5MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMjoyODoxNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2UgbXVsdGlsaWIgaWRlbnRpY2FsCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgbWFuL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlLmFtIGIvbWFuL01ha2VmaWxlLmFtCitpbmRleCA5YzY1NjlmLi42MDhlOTMzIDEwMDY0NAorLS0tIGEvbWFuL01ha2VmaWxlLmFtCisrKysgYi9tYW4vTWFrZWZpbGUuYW0KK0BAIC0xMiw3ICsxMiw3IEBAIE1BTl9TVUJTVFMrPQktZSAnc3xfX1hTRVJWRVJOQU1FX198JChYU0VSVkVSTkFNRSl8ZycgXAorIAkJLWUgJ3N8X19YQ09ORklHRklMRU1BTl9ffCQoWENPTkZJR0ZJTEVNQU4pfGcnIFwKKyAJCS1lICdzfF9feGluaXRkaXJfX3wkKFhJTklURElSKXxnJyBcCisgCQktZSAnc3xfX2JpbmRpcl9ffCQoYmluZGlyKXxnJyBcCistCQktZSAnc3xfX2xpYmRpcl9ffCQobGliZGlyKXxnJyBcCisrCQktZSAnc3xfX2xpYmRpcl9ffCQocHJlZml4KS9saWIqfGcnIFwKKyAJCS1lICdzfF9fY29uZmlnZGlyX198JChYSU5JVERJUil8ZycKKyAKKyAKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKaW5kZXggNTYyNmViYi4uYzllMjhkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIKQEAgLTEyLDYgKzEyLDggQEAKIAogUEUgPSAiMSIKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gIjZkNTA2YWIyZWZjMTdhMDhlODc3Nzg2NTRlMDk5ZDM3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlOWI4ZjYxN2I2OGE3MGY2Y2FmODdkYTAxZmNmMGViZDJiNzU2OTBjZGNiYTljOTIxZDBlZjU0ZmE1NGFiYjkiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWY4ZWFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCi0KLURFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKLVhLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoteGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCi1iZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKLQotREVQRU5EUyArPSAibGlieGtiZmlsZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMjYxMGRmMTlkZjJhZjM3OTdmMmMxMzBlZTJiY2U5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGQ4YmNiOWJlN2U4NWJkNzI5NGFiZTI2MWI4YzdiMDUzOWQyZmM5M2U0MWI4MGZiOGJkMDEzNzY3Y2U4NDI0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhNzljOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjMuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNvbXBpbGUgWEtCIGtleWJvYXJkIGRlc2NyaXB0aW9uIgorCitERVNDUklQVElPTiA9ICJUaGUgeGtiY29tcCBrZXltYXAgY29tcGlsZXIgY29udmVydHMgYSBkZXNjcmlwdGlvbiBvZiBhbiBcCitYS0Iga2V5bWFwIGludG8gb25lIG9mIHNldmVyYWwgb3V0cHV0IGZvcm1hdHMuIFRoZSBtb3N0IGNvbW1vbiB1c2UgZm9yIFwKK3hrYmNvbXAgaXMgdG8gY3JlYXRlIGEgY29tcGlsZWQga2V5bWFwIGZpbGUgKC54a20gZXh0ZW5zaW9uKSB3aGljaCBjYW4gXAorYmUgcmVhZCBkaXJlY3RseSBieSBYS0ItY2FwYWJsZSBYIHNlcnZlcnMgb3IgdXRpbGl0aWVzLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDg0MzZlNGY0NDc2OTY0ZTJlMmRkN2U3ZTQxZTA3NmEiCisKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zZWxlY3RpdmUtd2Vycm9yIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmU0NzUxZDk5MzczZjg1ZDQ1OWFiNGRmZjI4ODkzZjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYyNDJjMTY5ZmMxMWNhZjYwMWNhYzQ2ZDc4MWQ0Njc3NDhjNmEzMzBlMTViMzZkY2U0NjUyMGI4YWM4ZDQzNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzLzY0Yml0X3RpbWVfdF9zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiN2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzLzY0Yml0X3RpbWVfdF9zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK1RoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nIHRpbWUgZmllbGQgb2YgaW5wdXRfZXZlbnQgc3RydWN0dXJlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUKK29uIDMyYml0IGFyY2hlcyBzdXBwb3J0aW5nIDY0Yml0IHRpbWVfdCBzdHJ1Y3RzLCBQYXRjaCBtYWtlcyBpdCBjb21wYXRpYmxlIHdpdGggbmV3CithbmQga2VlcHMgb2xkIGlucHV0LmggaW1wbGVtZW50YXRpb24gZnVuY3Rpb25hbCBhcyB3ZWxsLgorCitTZWUgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL1kyMDM4UHJvb2ZuZXNzRGVzaWduCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvc3JjL2V2ZW50Y29tbS5jCisrKysgYi9zcmMvZXZlbnRjb21tLmMKK0BAIC01NzUsMTAgKzU3NSwxMiBAQCBTeW5hcHRpY3NSZWFkRXZlbnQoSW5wdXRJbmZvUHRyIHBJbmZvLCBzCisgICAgICAgICBldi0+dHlwZSA9IEVWX1NZTjsKKyAgICAgICAgIGV2LT5jb2RlID0gU1lOX1JFUE9SVDsKKyAgICAgICAgIGV2LT52YWx1ZSA9IDA7CistICAgICAgICBldi0+dGltZSA9IGxhc3RfZXZlbnRfdGltZTsKKy0gICAgfSBlbHNlIGlmIChldi0+dHlwZSA9PSBFVl9TWU4pCistICAgICAgICBsYXN0X2V2ZW50X3RpbWUgPSBldi0+dGltZTsKKy0KKysJZXYtPmlucHV0X2V2ZW50X3NlYyA9IGxhc3RfZXZlbnRfdGltZS50dl9zZWM7CisrCWV2LT5pbnB1dF9ldmVudF91c2VjID0gbGFzdF9ldmVudF90aW1lLnR2X3VzZWM7CisrICAgIH0gZWxzZSBpZiAoZXYtPnR5cGUgPT0gRVZfU1lOKSB7CisrICAgICAgICBsYXN0X2V2ZW50X3RpbWUudHZfc2VjID0gZXYtPmlucHV0X2V2ZW50X3NlYzsKKysgICAgICAgIGxhc3RfZXZlbnRfdGltZS50dl91c2VjID0gZXYtPmlucHV0X2V2ZW50X3VzZWM7CisrICAgIH0KKyAgICAgcmV0dXJuIFRSVUU7CisgfQorIAorQEAgLTcyNSw3ICs3MjcsNyBAQCBFdmVudFJlYWRId1N0YXRlKElucHV0SW5mb1B0ciBwSW5mbywKKyAgICAgICAgICAgICBjYXNlIFNZTl9SRVBPUlQ6CisgICAgICAgICAgICAgICAgIGh3LT5udW1GaW5nZXJzID0gY291bnRfZmluZ2VycyhwSW5mbywgY29tbSk7CisgICAgICAgICAgICAgICAgIGlmIChwcm90b19kYXRhLT5oYXZlX21vbm90b25pY19jbG9jaykKKy0gICAgICAgICAgICAgICAgICAgIGh3LT5taWxsaXMgPSAxMDAwICogZXYudGltZS50dl9zZWMgKyBldi50aW1lLnR2X3VzZWMgLyAxMDAwOworKyAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IDEwMDAgKiBldi5pbnB1dF9ldmVudF9zZWMgKyBldi5pbnB1dF9ldmVudF91c2VjIC8gMTAwMDsKKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IEdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgICAgICBTeW5hcHRpY3NDb3B5SHdTdGF0ZShod1JldCwgaHcpOworLS0tIGEvc3JjL2V2ZW50Y29tbS5oCisrKysgYi9zcmMvZXZlbnRjb21tLmgKK0BAIC0zNCw2ICszNCwxMSBAQAorICNpbmNsdWRlIDx4Zjg2WGlucHV0Lmg+CisgI2luY2x1ZGUgInN5bnByb3RvLmgiCisgCisrI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKKysjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKKysjZW5kaWYKKysKKyAvKiBmb3IgYXV0by1kZXY6ICovCisgI2RlZmluZSBERVZfSU5QVVRfRVZFTlQgIi9kZXYvaW5wdXQiCisgI2RlZmluZSBFVkVOVF9ERVZfTkFNRSAiZXZlbnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljc18xLjkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCmluZGV4IGRjMzE4OTAuLjM4ODM1MGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiCkBAIC0xMCw2ICsxMCw4IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1YWFjZDM1MzVhNzQxODI0OTU1YzVlYjhmMDYxMzk4IgogCitTUkNfVVJJICs9ICJmaWxlOi8vNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2giCisKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZmI3OWQzYzk3NTE1MWY5YmJmMzBiNzI3YzI2MGNiOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWY4MzUyNmVmZjFjNzZlOGI5ZTE1NTNiMzQyNDVjMjAzZDAyOTAyOGQ4MDQ0ZGQ5ZGNmNzFlZWYxMDAxNTc2IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtU3luYy1pOTE1X3BjaWlkcy11cHRvLTg3MTdjNmI3NDE0Zi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmM2IxYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAwMDEtU3luYy1pOTE1X3BjaWlkcy11cHRvLTg3MTdjNmI3NDE0Zi5wYXRjaApAQCAtMCwwICsxLDUwNSBAQAorRnJvbSAwNTkwOWZlYTkzZjI5YjJiNmUxZDU1NGRkNjQyMDE1NTFiZDdhMDIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNyBBcHIgMjAyMCAxNjoxMTo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBTeW5jIGk5MTVfcGNpaWRzIHVwdG8gODcxN2M2Yjc0MTRmCisKK0ltcG9ydCB0aGUga2VybmVsJ3MgaTkxNV9wY2lpZHMuaCwgdXAgdG86CisKK2NvbW1pdCA4NzE3YzZiNzQxNGZmYjg5MDY3MjI3NmRjY2MyODRjMjMwNzhhYzBlCitBdXRob3I6IExlZSBTaGF3biBDIDxzaGF3bi5jLmxlZUBpbnRlbC5jb20+CitEYXRlOiAgIFR1ZSBEZWMgMTAgMjM6MDQ6MTUgMjAxOSArMDgwMAorCisgICAgZHJtL2k5MTUvY21sOiBTZXBhcmF0ZSBVIHNlcmllcyBwY2kgaWQgZnJvbSBvcmlnaWFubCBsaXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMTQ5NDY0NS9dCisKK1NpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9pOTE1X3BjaWlkcy5oICB8IDI2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBzcmMvaW50ZWxfbW9kdWxlLmMgfCAgIDIgKy0KKyB0ZXN0L2RyaTMtdGVzdC5jICAgfCAgIDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pOTE1X3BjaWlkcy5oIGIvc3JjL2k5MTVfcGNpaWRzLmgKK2luZGV4IGZkOTY1ZmZiYjkyZS4uMWQyYzEyMjE5ZjQ0IDEwMDY0NAorLS0tIGEvc3JjL2k5MTVfcGNpaWRzLmgKKysrKyBiL3NyYy9pOTE1X3BjaWlkcy5oCitAQCAtMTA4LDggKzEwOCwxMCBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MmU0MiwgaW5mbyksIC8qIEI0M19HICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDJlOTIsIGluZm8pCS8qIEI0M19HLjEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX1BJTkVWSUVXX0lEUyhpbmZvKQkJCVwKKy0JSU5URUxfVkdBX0RFVklDRSgweGEwMDEsIGluZm8pLAkJCVwKKysjZGVmaW5lIElOVEVMX1BJTkVWSUVXX0dfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweGEwMDEsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9QSU5FVklFV19NX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHhhMDExLCBpbmZvKQorIAorICNkZWZpbmUgSU5URUxfSVJPTkxBS0VfRF9JRFMoaW5mbykgXAorQEAgLTE2Niw3ICsxNjgsMTggQEAKKyAjZGVmaW5lIElOVEVMX0lWQl9RX0lEUyhpbmZvKSBcCisgCUlOVEVMX1FVQU5UQV9WR0FfREVWSUNFKGluZm8pIC8qIFF1YW50YSB0cmFuc2NvZGUgKi8KKyAKKysjZGVmaW5lIElOVEVMX0hTV19VTFRfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTAyLCBpbmZvKSwgLyogVUxUIEdUMSBkZXNrdG9wICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEEsIGluZm8pLCAvKiBVTFQgR1QxIHNlcnZlciAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBCLCBpbmZvKSwgLyogVUxUIEdUMSByZXNlcnZlZCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTA2LCBpbmZvKSAgLyogVUxUIEdUMSBtb2JpbGUgKi8KKysKKysjZGVmaW5lIElOVEVMX0hTV19VTFhfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBFLCBpbmZvKSAvKiBVTFggR1QxIG1vYmlsZSAqLworKworICNkZWZpbmUgSU5URUxfSFNXX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9IU1dfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfSFNXX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDAyLCBpbmZvKSwgLyogR1QxIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQwYSwgaW5mbyksIC8qIEdUMSBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQwQiwgaW5mbyksIC8qIEdUMSByZXNlcnZlZCAqLyBcCitAQCAtMTc1LDIwICsxODgsMjYgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEEsIGluZm8pLCAvKiBTRFYgR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzBCLCBpbmZvKSwgLyogU0RWIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzBFLCBpbmZvKSwgLyogU0RWIEdUMSByZXNlcnZlZCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTAyLCBpbmZvKSwgLyogVUxUIEdUMSBkZXNrdG9wICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEEsIGluZm8pLCAvKiBVTFQgR1QxIHNlcnZlciAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTBCLCBpbmZvKSwgLyogVUxUIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDAyLCBpbmZvKSwgLyogQ1JXIEdUMSBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEEsIGluZm8pLCAvKiBDUlcgR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDBCLCBpbmZvKSwgLyogQ1JXIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDBFLCBpbmZvKSwgLyogQ1JXIEdUMSByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDA2LCBpbmZvKSwgLyogR1QxIG1vYmlsZSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzA2LCBpbmZvKSwgLyogU0RWIEdUMSBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwNiwgaW5mbyksIC8qIFVMVCBHVDEgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEUsIGluZm8pLCAvKiBVTFggR1QxIG1vYmlsZSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDA2LCBpbmZvKSAgLyogQ1JXIEdUMSBtb2JpbGUgKi8KKyAKKysjZGVmaW5lIElOVEVMX0hTV19VTFRfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTEyLCBpbmZvKSwgLyogVUxUIEdUMiBkZXNrdG9wICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUEsIGluZm8pLCAvKiBVTFQgR1QyIHNlcnZlciAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFCLCBpbmZvKSwgLyogVUxUIEdUMiByZXNlcnZlZCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTE2LCBpbmZvKSAgLyogVUxUIEdUMiBtb2JpbGUgKi8KKysKKysjZGVmaW5lIElOVEVMX0hTV19VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFFLCBpbmZvKSAvKiBVTFggR1QyIG1vYmlsZSAqLyBcCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9IU1dfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MTIsIGluZm8pLCAvKiBHVDIgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDFhLCBpbmZvKSwgLyogR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDFCLCBpbmZvKSwgLyogR1QyIHJlc2VydmVkICovIFwKK0BAIC0xOTcsOSArMjE2LDYgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUEsIGluZm8pLCAvKiBTRFYgR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzFCLCBpbmZvKSwgLyogU0RWIEdUMiByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzFFLCBpbmZvKSwgLyogU0RWIEdUMiByZXNlcnZlZCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTEyLCBpbmZvKSwgLyogVUxUIEdUMiBkZXNrdG9wICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMUEsIGluZm8pLCAvKiBVTFQgR1QyIHNlcnZlciAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFCLCBpbmZvKSwgLyogVUxUIEdUMiByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDEyLCBpbmZvKSwgLyogQ1JXIEdUMiBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMUEsIGluZm8pLCAvKiBDUlcgR1QyIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDFCLCBpbmZvKSwgLyogQ1JXIEdUMiByZXNlcnZlZCAqLyBcCitAQCAtMjA3LDExICsyMjMsMTcgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MTYsIGluZm8pLCAvKiBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MjYsIGluZm8pLCAvKiBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMTYsIGluZm8pLCAvKiBTRFYgR1QyIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTE2LCBpbmZvKSwgLyogVUxUIEdUMiBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEExRSwgaW5mbyksIC8qIFVMWCBHVDIgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMTYsIGluZm8pICAvKiBDUlcgR1QyIG1vYmlsZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMjIsIGluZm8pLCAvKiBVTFQgR1QzIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQSwgaW5mbyksIC8qIFVMVCBHVDMgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMkIsIGluZm8pLCAvKiBVTFQgR1QzIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMjYsIGluZm8pLCAvKiBVTFQgR1QzIG1vYmlsZSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJFLCBpbmZvKSAgLyogVUxUIEdUMyByZXNlcnZlZCAqLworKworICNkZWZpbmUgSU5URUxfSFNXX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9IU1dfVUxUX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MjIsIGluZm8pLCAvKiBHVDMgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDJhLCBpbmZvKSwgLyogR1QzIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDJCLCBpbmZvKSwgLyogR1QzIHJlc2VydmVkICovIFwKK0BAIC0yMjAsMTYgKzI0MiwxMSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyQSwgaW5mbyksIC8qIFNEViBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMkIsIGluZm8pLCAvKiBTRFYgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMkUsIGluZm8pLCAvKiBTRFYgR1QzIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMjIsIGluZm8pLCAvKiBVTFQgR1QzIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQSwgaW5mbyksIC8qIFVMVCBHVDMgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMkIsIGluZm8pLCAvKiBVTFQgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMjIsIGluZm8pLCAvKiBDUlcgR1QzIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyQSwgaW5mbyksIC8qIENSVyBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMkIsIGluZm8pLCAvKiBDUlcgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMkUsIGluZm8pLCAvKiBDUlcgR1QzIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMjYsIGluZm8pLCAvKiBTRFYgR1QzIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTI2LCBpbmZvKSwgLyogVUxUIEdUMyBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyRSwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyNiwgaW5mbykgIC8qIENSVyBHVDMgbW9iaWxlICovCisgCisgI2RlZmluZSBJTlRFTF9IU1dfSURTKGluZm8pIFwKK0BAIC0yNDUsMzUgKzI2Miw1OSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDE1NywgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDAxNTUsIGluZm8pCisgCistI2RlZmluZSBJTlRFTF9CRFdfR1QxX0lEUyhpbmZvKSAgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYwMiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDFfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MDYsIGluZm8pLCAvKiBHVDEgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MEIsIGluZm8pLCAvKiBHVDEgSXJpcyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBFLCBpbmZvKSwgLyogR1QxIFVMWCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBCLCBpbmZvKSAgLyogR1QxIElyaXMgKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19VTFhfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjBFLCBpbmZvKSAvKiBHVDEgVUxYICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MDIsIGluZm8pLCAvKiBHVDEgVUxUICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MEEsIGluZm8pLCAvKiBHVDEgU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MEQsIGluZm8pICAvKiBHVDEgV29ya3N0YXRpb24gKi8KKyAKKy0jZGVmaW5lIElOVEVMX0JEV19HVDJfSURTKGluZm8pICBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjEyLCBpbmZvKSwgLyogR1QyIEhhbG8gKi8JXAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MTYsIGluZm8pLCAvKiBHVDIgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MUIsIGluZm8pLCAvKiBHVDIgVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MUUsIGluZm8pLCAvKiBHVDIgVUxYICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MUIsIGluZm8pICAvKiBHVDIgVUxUICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRSwgaW5mbykgLyogR1QyIFVMWCAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9CRFdfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjEyLCBpbmZvKSwgLyogR1QyIEhhbG8gKi8JXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQSwgaW5mbyksIC8qIEdUMiBTZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRCwgaW5mbykgIC8qIEdUMiBXb3Jrc3RhdGlvbiAqLworIAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MjYsIGluZm8pLCAvKiBVTFQgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQiwgaW5mbykgIC8qIElyaXMgKi8gXAorKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MkUsIGluZm8pICAvKiBVTFggKi8KKysKKyAjZGVmaW5lIElOVEVMX0JEV19HVDNfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9HVDNfSURTKGluZm8pLCBcCisrCUlOVEVMX0JEV19VTFhfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYyMiwgaW5mbyksIC8qIFVMVCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjI2LCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MkIsIGluZm8pLCAvKiBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MkUsIGluZm8pLCAgLyogVUxYICovXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQSwgaW5mbyksIC8qIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJELCBpbmZvKSAgLyogV29ya3N0YXRpb24gKi8KKyAKKysjZGVmaW5lIElOVEVMX0JEV19VTFRfUlNWRF9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYzNiwgaW5mbyksIC8qIFVMVCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNCLCBpbmZvKSAgLyogSXJpcyAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNFLCBpbmZvKSAvKiBVTFggKi8KKysKKyAjZGVmaW5lIElOVEVMX0JEV19SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfUlNWRF9JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9SU1ZEX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYzMiwgaW5mbyksIC8qIFVMVCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjM2LCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2M0IsIGluZm8pLCAvKiBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2M0UsIGluZm8pLCAvKiBVTFggKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYzQSwgaW5mbyksIC8qIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNELCBpbmZvKSAgLyogV29ya3N0YXRpb24gKi8KKyAKK0BAIC0yODksMjUgKzMzMCw0MCBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MjJiMiwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDIyYjMsIGluZm8pCisgCisrI2RlZmluZSBJTlRFTF9TS0xfVUxUX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkwNiwgaW5mbykgLyogVUxUIEdUMSAqLworKworKyNkZWZpbmUgSU5URUxfU0tMX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE5MEUsIGluZm8pIC8qIFVMWCBHVDEgKi8KKysKKyAjZGVmaW5lIElOVEVMX1NLTF9HVDFfSURTKGluZm8pCVwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MDYsIGluZm8pLCAvKiBVTFQgR1QxICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MEUsIGluZm8pLCAvKiBVTFggR1QxICovIFwKKysJSU5URUxfU0tMX1VMVF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX1NLTF9VTFhfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwMiwgaW5mbyksIC8qIERUICBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwQiwgaW5mbyksIC8qIEhhbG8gR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MEEsIGluZm8pIC8qIFNSViBHVDEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX1NLTF9HVDJfSURTKGluZm8pCVwKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTE2LCBpbmZvKSwgLyogVUxUIEdUMiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIxLCBpbmZvKSwgLyogVUxUIEdUMkYgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRSwgaW5mbyksIC8qIFVMWCBHVDIgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkyMSwgaW5mbykgIC8qIFVMVCBHVDJGICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfVUxYX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRSwgaW5mbykgLyogVUxYIEdUMiAqLworKworKyNkZWZpbmUgSU5URUxfU0tMX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9TS0xfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfU0tMX1VMWF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTEyLCBpbmZvKSwgLyogRFQgIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkxQSwgaW5mbyksIC8qIFNSViBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkxRCwgaW5mbykgIC8qIFdLUyBHVDIgKi8KKyAKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI2LCBpbmZvKSAvKiBVTFQgR1QzICovCisrCisgI2RlZmluZSBJTlRFTF9TS0xfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1NLTF9VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyMywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkyNiwgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyNywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyQiwgaW5mbyksIC8qIEhhbG8gR1QzICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MkQsIGluZm8pICAvKiBTUlYgR1QzICovCitAQCAtMzM2LDQ1ICszOTIsOTEgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDMxODQsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzMTg1LCBpbmZvKQorIAorLSNkZWZpbmUgSU5URUxfS0JMX0dUMV9JRFMoaW5mbykJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkxMywgaW5mbyksIC8qIFVMVCBHVDEuNSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE1LCBpbmZvKSwgLyogVUxYIEdUMS41ICovIFwKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QxX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTA2LCBpbmZvKSwgLyogVUxUIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEzLCBpbmZvKSAgLyogVUxUIEdUMS41ICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfVUxYX0dUMV9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwRSwgaW5mbyksIC8qIFVMWCBHVDEgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NTkxNSwgaW5mbykgIC8qIFVMWCBHVDEuNSAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX0dUMV9JRFMoaW5mbykJXAorKwlJTlRFTF9LQkxfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfS0JMX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTAyLCBpbmZvKSwgLyogRFQgIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTA4LCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwQiwgaW5mbyksIC8qIEhhbG8gR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MEEsIGluZm8pIC8qIFNSViBHVDEgKi8KKyAKKy0jZGVmaW5lIElOVEVMX0tCTF9HVDJfSURTKGluZm8pCVwKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE2LCBpbmZvKSwgLyogVUxUIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIxLCBpbmZvKSAgLyogVUxUIEdUMkYgKi8KKysKKysjZGVmaW5lIElOVEVMX0tCTF9VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFFLCBpbmZvKSAgLyogVUxYIEdUMiAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9LQkxfVUxUX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfS0JMX1VMWF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE3LCBpbmZvKSwgLyogTW9iaWxlIEdUMiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIxLCBpbmZvKSwgLyogVUxUIEdUMkYgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkxRSwgaW5mbyksIC8qIFVMWCBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxMiwgaW5mbyksIC8qIERUICBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQiwgaW5mbyksIC8qIEhhbG8gR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MUEsIGluZm8pLCAvKiBTUlYgR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MUQsIGluZm8pIC8qIFdLUyBHVDIgKi8KKyAKKysjZGVmaW5lIElOVEVMX0tCTF9VTFRfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI2LCBpbmZvKSAvKiBVTFQgR1QzICovCisrCisgI2RlZmluZSBJTlRFTF9LQkxfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX0tCTF9VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkyMywgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NTkyNiwgaW5mbyksIC8qIFVMVCBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkyNywgaW5mbykgLyogVUxUIEdUMyAqLworIAorICNkZWZpbmUgSU5URUxfS0JMX0dUNF9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkzQiwgaW5mbykgLyogSGFsbyBHVDQgKi8KKyAKKyAvKiBBTUwvS0JMIFkgR1QyICovCistI2RlZmluZSBJTlRFTF9BTUxfR1QyX0lEUyhpbmZvKSBcCisrI2RlZmluZSBJTlRFTF9BTUxfS0JMX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQywgaW5mbyksICAvKiBVTFggR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDg3QzAsIGluZm8pIC8qIFVMWCBHVDIgKi8KKyAKKysvKiBBTUwvQ0ZMIFkgR1QyICovCisrI2RlZmluZSBJTlRFTF9BTUxfQ0ZMX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4ODdDQSwgaW5mbykKKysKKysvKiBDTUwgR1QxICovCisrI2RlZmluZSBJTlRFTF9DTUxfR1QxX0lEUyhpbmZvKQlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkE1LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBOCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkEyLCBpbmZvKQorKworKyNkZWZpbmUgSU5URUxfQ01MX1VfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QjIxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBQSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQUMsIGluZm8pCisrCisrLyogQ01MIEdUMiAqLworKyNkZWZpbmUgSU5URUxfQ01MX0dUMl9JRFMoaW5mbykJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDNSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzgsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkM0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDMiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzYsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkU2LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJGNiwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX0NNTF9VX0dUMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUI0MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQ0EsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkNDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfS0JMX0lEUyhpbmZvKSBcCisgCUlOVEVMX0tCTF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX0tCTF9HVDRfSURTKGluZm8pLCBcCistCUlOVEVMX0FNTF9HVDJfSURTKGluZm8pCisrCUlOVEVMX0FNTF9LQkxfR1QyX0lEUyhpbmZvKQorIAorIC8qIENGTCBTICovCisgI2RlZmluZSBJTlRFTF9DRkxfU19HVDFfSURTKGluZm8pIFwKK0BAIC0zOTAsNiArNDkyLDkgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDNFOUEsIGluZm8pICAvKiBTUlYgR1QyICovCisgCisgLyogQ0ZMIEggKi8KKysjZGVmaW5lIElOVEVMX0NGTF9IX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QywgaW5mbykKKysKKyAjZGVmaW5lIElOVEVMX0NGTF9IX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QiwgaW5mbyksIC8qIEhhbG8gR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDNFOTQsIGluZm8pICAvKiBIYWxvIEdUMiAqLworQEAgLTQwNywzMCArNTEyLDQzIEBACisgCisgLyogV0hML0NGTCBVIEdUMSAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QxX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUExLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTQsIGluZm8pCisgCisgLyogV0hML0NGTCBVIEdUMiAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QyX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEwLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTMsIGluZm8pCisgCisgLyogV0hML0NGTCBVIEdUMyAqLworICNkZWZpbmUgSU5URUxfV0hMX1VfR1QzX0lEUyhpbmZvKSBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEyLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTQsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEyLCBpbmZvKQorIAorICNkZWZpbmUgSU5URUxfQ0ZMX0lEUyhpbmZvKQkgICBcCisgCUlOVEVMX0NGTF9TX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX1NfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9DRkxfSF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX0NGTF9IX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX1VfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfVV9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1dITF9VX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfV0hMX1VfR1QyX0lEUyhpbmZvKSwgXAorLQlJTlRFTF9XSExfVV9HVDNfSURTKGluZm8pCisrCUlOVEVMX1dITF9VX0dUM19JRFMoaW5mbyksIFwKKysJSU5URUxfQU1MX0NGTF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NNTF9VX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX1VfR1QyX0lEUyhpbmZvKQorIAorIC8qIENOTCAqLworKyNkZWZpbmUgSU5URUxfQ05MX1BPUlRfRl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE1NCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNUMsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQ0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QywgaW5mbykKKysKKyAjZGVmaW5lIElOVEVMX0NOTF9JRFMoaW5mbykgXAorKwlJTlRFTF9DTkxfUE9SVF9GX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1MSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNTksIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQxLCBpbmZvKSwgXAorQEAgLTQ0MCwyMiArNTU4LDQ3IEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQyLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNTAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQwLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE1NCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNUMsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTQ0LCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE0QywgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNDAsIGluZm8pCisgCisgLyogSUNMICovCistI2RlZmluZSBJTlRFTF9JQ0xfMTFfSURTKGluZm8pIFwKKysjZGVmaW5lIElOVEVMX0lDTF9QT1JUX0ZfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNTAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTUxLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1QywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNUQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU5LCBpbmZvKSwJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1OCwgaW5mbyksCVwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNTIsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVBLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1QiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTcsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU2LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE3MSwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNzAsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTcwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTQsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9JQ0xfMTFfSURTKGluZm8pIFwKKysJSU5URUxfSUNMX1BPUlRfRl9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVELCBpbmZvKQorKworKy8qIEVITC9KU0wgKi8KKysjZGVmaW5lIElOVEVMX0VITF9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDUwMCwgaW5mbyksCVwKKysJSU5URUxfVkdBX0RFVklDRSgweDQ1NzEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTUxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDU0MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDRFNzEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0RTYxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NEU1MSwgaW5mbykKKysKKysvKiBUR0wgKi8KKysjZGVmaW5lIElOVEVMX1RHTF8xMl9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE0OSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNDAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTU5LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE2MCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNjgsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTcwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE3OCwgaW5mbykKKyAKKyAjZW5kaWYgLyogX0k5MTVfUENJSURTX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvaW50ZWxfbW9kdWxlLmMgYi9zcmMvaW50ZWxfbW9kdWxlLmMKK2luZGV4IGE3MWMyZTQwYjc3NC4uZTBiOTRjMTkwMjU0IDEwMDY0NAorLS0tIGEvc3JjL2ludGVsX21vZHVsZS5jCisrKysgYi9zcmMvaW50ZWxfbW9kdWxlLmMKK0BAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfaWRfbWF0Y2ggaW50ZWxfZGV2aWNlX21hdGNoW10gPSB7CisgCUlOVEVMX0k5NDVHTV9JRFMoJmludGVsX2k5NDVfaW5mbyksCisgCisgCUlOVEVMX0czM19JRFMoJmludGVsX2czM19pbmZvKSwKKy0JSU5URUxfUElORVZJRVdfSURTKCZpbnRlbF9nMzNfaW5mbyksCisrCUlOVEVMX1BJTkVWSUVXX0dfSURTKCZpbnRlbF9nMzNfaW5mbyksCisgCisgCUlOVEVMX0k5NjVHX0lEUygmaW50ZWxfaTk2NV9pbmZvKSwKKyAJSU5URUxfSTk2NUdNX0lEUygmaW50ZWxfaTk2NV9pbmZvKSwKK2RpZmYgLS1naXQgYS90ZXN0L2RyaTMtdGVzdC5jIGIvdGVzdC9kcmkzLXRlc3QuYworaW5kZXggNzhlMTA1YThiNjRhLi41MjY1YTMwY2VhMWIgMTAwNjQ0CistLS0gYS90ZXN0L2RyaTMtdGVzdC5jCisrKysgYi90ZXN0L2RyaTMtdGVzdC5jCitAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9pZF9tYXRjaCBpZHNbXSA9IHsKKyAJSU5URUxfSTk0NUdNX0lEUygwMzEpLAorIAorIAlJTlRFTF9HMzNfSURTKDAzMyksCistCUlOVEVMX1BJTkVWSUVXX0lEUygwMzMpLAorKwlJTlRFTF9QSU5FVklFV19HX0lEUygwMzMpLAorIAorIAlJTlRFTF9JOTY1R19JRFMoMDQwKSwKKyAJSU5URUxfSTk2NUdNX0lEUygwNDApLAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDFfRml4LWJ1aWxkLW9uLWk2ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyOTE2ZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gYTQxNGQ0ZTI0NDYxZGExY2I0Y2VmOGVlOTEwYmM1N2JhYjM2MGNlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA2IE1hciAyMDE4IDEyOjA3OjQ2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiBpNjg2Ci0KLVByZXN1bWFibHkgdGhpcyBvbmx5IG1hdHRlcnMgZm9yIGk2ODYgYmVjYXVzZSBhbWQ2NCBpbXBsaWVzIHNzZTIsIGJ1dDoKLQotQlVJTERTVERFUlI6IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBnZW40X3ZlcnRleC5jOjM0OgotQlVJTERTVERFUlI6IGdlbjRfdmVydGV4LmM6IEluIGZ1bmN0aW9uICdlbWl0X3ZlcnRleCc6Ci1CVUlMRFNUREVSUjogc25hX3JlbmRlcl9pbmxpbmUuaDo0MDoyNjogZXJyb3I6IGlubGluaW5nIGZhaWxlZCBpbiBjYWxsIHRvIGFsd2F5c19pbmxpbmUgJ3ZlcnRleF9lbWl0XzJzJzogdGFyZ2V0IHNwZWNpZmljIG9wdGlvbiBtaXNtYXRjaAotQlVJTERTVERFUlI6ICBzdGF0aWMgZm9yY2VfaW5saW5lIHZvaWQgdmVydGV4X2VtaXRfMnMoc3RydWN0IHNuYSAqc25hLCBpbnQxNl90IHgsIGludDE2X3QgeSkKLUJVSUxEU1RERVJSOiAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzozMDg6MjU6IG5vdGU6IGNhbGxlZCBmcm9tIGhlcmUKLUJVSUxEU1RERVJSOiAgI2RlZmluZSBPVVRfVkVSVEVYKHgseSkgdmVydGV4X2VtaXRfMnMoc25hLCB4LHkpIC8qIFhYWCBhc3NlcnQoIXRvb19sYXJnZSh4LCB5KSk7ICovCi1CVUlMRFNUREVSUjogICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotQlVJTERTVERFUlI6IGdlbjRfdmVydGV4LmM6MzYwOjI6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnT1VUX1ZFUlRFWCcKLUJVSUxEU1RERVJSOiAgIE9VVF9WRVJURVgoZHN0WCwgZHN0WSk7Ci1CVUlMRFNUREVSUjogICBefn5+fn5+fn5+Ci0KLVRoZSBidWcgaGVyZSBhcHBlYXJzIHRvIGJlIHRoYXQgZW1pdF92ZXJ0ZXgoKSBpcyBkZWNsYXJlZCAnc3NlMicgYnV0Ci12ZXJ0ZXhfZW1pdF8ycyBpcyBtZXJlbHkgYWx3YXlzX2lubGluZS4gZ2NjOCBkZWNpZGVzIHRoYXQgc2luY2UgeW91IHNhaWQKLWFsd2F5c19pbmxpbmUgeW91IG5lZWQgdG8gaGF2ZSBleHBsaWNpdGx5IGNsb25lZCBpdCBmb3IgZXZlcnkKLXBlcm11dGF0aW9uIG9mIHRhcmdldHMuIE1lcmVseSBzYXlpbmcgaW5saW5lIHNlZW1zIHRvIGRvIHRoZSBqb2Igb2YKLWNsb25pbmcgdmVydGV4X2VtaXRfMnMgYXMgbXVjaCBhcyBuZWNlc3NhcnkuCi0KLVNvIHRvIHJlaXRlcmF0ZTogaWYgeW91IHNheSBhbHdheXMtaW5saW5lLCBpdCB3b24ndCwgYnV0IGlmIHlvdSBqdXN0IHNheQotbWF5YmUgaW5saW5lLCBpdCB3aWxsLiBUaGFua3MgZ2NjLCB0aGF0J3MgaGVscGZ1bC4KLQotLSBhamF4Ci0KLVBhdGNoIHRha2VuIGZyb20gRmVkb3JhLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0KLS0tLQotIHNyYy9zbmEvY29tcGlsZXIuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zbmEvY29tcGlsZXIuaCBiL3NyYy9zbmEvY29tcGlsZXIuaAotaW5kZXggM2MxNzZhMTYuLmJjNDQ3YzdhIDEwMDY0NAotLS0tIGEvc3JjL3NuYS9jb21waWxlci5oCi0rKysgYi9zcmMvc25hL2NvbXBpbGVyLmgKLUBAIC0zMiw3ICszMiw3IEBACi0gI2RlZmluZSBsaWtlbHkoZXhwcikgKF9fYnVpbHRpbl9leHBlY3QgKCEhKGV4cHIpLCAxKSkKLSAjZGVmaW5lIHVubGlrZWx5KGV4cHIpIChfX2J1aWx0aW5fZXhwZWN0ICghIShleHByKSwgMCkpCi0gI2RlZmluZSBub2lubGluZSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0tI2RlZmluZSBmb3JjZV9pbmxpbmUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQotKyNkZWZpbmUgZm9yY2VfaW5saW5lIGlubGluZQotICNkZWZpbmUgZmFzdGNhbGwgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpCi0gI2RlZmluZSBtdXN0X2NoZWNrIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0gI2RlZmluZSBjb25zdGFudCBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCi0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCmluZGV4IGJmOTAwOWIuLjdhYjIyMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC05LDE0ICs5LDEzIEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3MzBhZDU4ZDExYzdiYmFkOWE3MDY2ZDY5Zjc4MDhlIgogCi1TUkNSRVYgPSAiMzNlZTBjM2IyMWVhMjc5ZTA4ZDA4NjNmY2IyZTg3NGYwOTc0YjAwZSIKK1NSQ1JFViA9ICJmNjZkMzk1NDRiYjgzMzkxMzBjOTZkMjgyYTgwZjg3Y2ExNjA2Y2FmIgogUFYgPSAiMi45OS45MTcrZ2l0JHtTUkNQVn0iCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvZHJpdmVyL3hmODYtdmlkZW8taW50ZWwgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX3FlbXV4ODYgPSAiZmlsZTovLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoIFwKKyIKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwppbmRleCA1NGYwNGIxLi5lMzBmMDQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKQEAgLTEzLDcgKzEzLDkgQEAKIAogRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0veG9yZy9tb2R1bGVzL2RyaXZlcnMvKi5zbyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCitYT1JHQlVJTERDTEFTUyA/Pz0gImF1dG90b29scyIKK2luaGVyaXQgJHtYT1JHQlVJTERDTEFTU30gcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL3hzZXJ2ZXIKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2ZpbGVzL2xpYngxMS13aGl0ZXNwYWNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5NzE0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2ZpbGVzL2xpYngxMS13aGl0ZXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy9saWIvbGlieDExL21lcmdlX3JlcXVlc3RzLzMzXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBiNDE0NjljNWYwOGIxZjMzNjU2NjdmZjNjNDMwYjEwNGM5YjhlMjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTc6MTE6MjMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCBsaWJYMTFdIGNwcHJ1bGVzLmluOiBzcXVhc2ggd2hpdGVzcGFjZSBpbiBnZW5lcmF0ZWQgZmlsZXMKKworQ1BQIGlzIHVzZWQgdG8gZ2VuZXJhdGUgZmlsZXMsIGJ1dCBhcyBjcHAgcmVhZHMgZmlsZXMgZnJvbSB0aGUgYnVpbGQgaG9zdCB0aGUKK291dHB1dCBoYXMgYSBudW1iZXIgb2YgYmxhbmsgbGluZXMgYXQgdGhlIGJlZ2lubmluZyB3aGljaCB2YXJpZXMgZGVwZW5kaW5nIG9uCit3aGF0IEdDQyBhbmQgZnJpZW5kcyBpcyB1c2VkLgorCitQYXRoYWxvZ2ljYWwgZXhhbXBsZToKKworICQgY3BwIC11bmRlZiAtdHJhZGl0aW9uYWwgL2Rldi9udWxsCisgIyAxICIvZGV2L251bGwiCisgIyAxICI8YnVpbHQtaW4+IgorICMgMSAiPGNvbW1hbmQtbGluZT4iCisgIyAzMSAiPGNvbW1hbmQtbGluZT4iCisgIyAxICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMSAzIDQKKworICMgMTcgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAzIDQKKworIFsgNDAgYmxhbmsgbGluZSBdCisKKyAjIDMyICI8Y29tbWFuZC1saW5lPiIgMgorICMgMSAiL2Rldi9udWxsIgorCitTbyBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnQgb2Ygc3RkYy1wcmVkZWYuaCBhbmQgd2hhdCBvdGhlciBoZWFkZXJzIENQUCB3aWxsCitsb2FkLCB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gdGhlIGdlbmVyYXRlcyBmaWxlcyB2YXJpZXMuIFRoaXMgY2FuIHJlc3VsdCBpbgorZGlmZmVyZW5jZXMgaW4gcmVwcm9kdWNpYmxlIGVudmlyb25tZW50cywgYW5kIGZpbGUgY29uZmxpY3RzIGluIG11bHRpbGliCitlbnZpcm9ubWVudHMuCisKK0FzIHdoaXRlc3BhY2UgaXMgaXJyZWxldmFudCB0byB0aGVzZSBtYWNoaW5lLXJlYWRhYmxlIGZpbGVzLCBleHRlbmQgdGhlIHNlZCB0bworanVzdCBkZWxldGUgYmxhbmsgbGluZXMuCistLS0KKyBjcHBydWxlcy5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY3BwcnVsZXMuaW4gYi9jcHBydWxlcy5pbgoraW5kZXggMDNkNjcwMWUuLmNlNmIzYzk4IDEwMDY0NAorLS0tIGEvY3BwcnVsZXMuaW4KKysrKyBiL2NwcHJ1bGVzLmluCitAQCAtMjMsNyArMjMsOCBAQCBDUFBfU0VEX01BR0lDID0gJChTRUQpIC1lICcvXlwjICAqWzAtOV1bMC05XSogICouKiQkL2QnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXlsJIF0qWENPTU1bXmEtekEtWjAtOV9dL3MvWENPTU0vXCMvJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtZSAnL15bCSBdKlhIQVNIL3MvWEhBU0gvXCMvJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtZSAncyxYMTFfTE9DQUxFREFUQURJUiwkKFgxMV9MT0NBTEVEQVRBRElSKSxnJyBcCistICAgICAgICAgICAgICAgICAgICAgICAtZSAnL1xAXEAkJC9zL1xAXEAkJC9cXC8nCisrICAgICAgICAgICAgICAgICAgICAgICAtZSAnL1xAXEAkJC9zL1xAXEAkJC9cXC8nIFwKKysgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXiQkL2QnCisgCisgLnByZToKKyAJQCQoTUtESVJfUCkgJChARCkKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtY29tcG9zZS1kYXRhXzEuNi44LmJiCmluZGV4IGNhYmI4NGUuLjNkOTdhZDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYgpAQCAtMTQsNyArMTQsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gImM1ZmE1YTg2YTIwZTM1OTFiZWQ2YzA0NjQ5OGQ0YjhmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyODlhODQ1YzE4OWUyNTFlMGU4ODRjYzBmOTI2OWJiZTk3YzIzOGRmMzc0MWU4NTRlYzRjMTdjMjFlNDczZDUiCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURyb3AteDExLWRlcGVuZGVuY2llcy5wYXRjaCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURyb3AteDExLWRlcGVuZGVuY2llcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGlieDExLXdoaXRlc3BhY2UucGF0Y2giCiAKIFhPUkdfUE4gPSAibGliWDExIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIKaW5kZXggOGMyYTU3Yy4uZmY2MGE0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi45LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYgpAQCAtMTEsNyArMTEsOCBAQAogUEUgPSAiMSIKIAogU1JDX1VSSSArPSAiZmlsZTovL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2giCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbGlieDExLXdoaXRlc3BhY2UucGF0Y2giCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1NWFkYmZiNmQ0MzcwZWNhYzVlNzA1OThjNGU3ZWVkMiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2M3ZThkMDAwZDYxOTNmYTVhZjU4MGQ1MGQ2ODkzODBiODI4NzA1MjI3MGY1YmIyNmE1ZmI2YjU4YjJiZWQxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkOWMzNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjEwLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJHZW5lcmljIFhLQiBrZXltYXAgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gImxpYnhrYmNvbW1vbiBpcyBhIGtleW1hcCBjb21waWxlciBhbmQgc3VwcG9ydCBsaWJyYXJ5IHdoaWNoIFwKK3Byb2Nlc3NlcyBhIHJlZHVjZWQgc3Vic2V0IG9mIGtleW1hcHMgYXMgZGVmaW5lZCBieSB0aGUgWEtCIHNwZWNpZmljYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54a2Jjb21tb24ub3JnIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTUyNWVkOTgwOWUxZjhhMDdjZjRiY2U4YjA5ZThiODciCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkOWFkM2E0NmIzMTcxMzhiNWU3MmE5MWNmMTA1NDUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YzM2MzBjZGMzOGZiNDczNGNkNTdmYTM0OWU5MjI0NGY1YWUzODYyODEzZTUzM2NlZGJkODY3MjFhMGI2ZjIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy8iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnCisKK0VYVFJBX09FTUVTT04gPSAiLURlbmFibGUtZG9jcz1mYWxzZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURlbmFibGUteDExPXRydWUsLURlbmFibGUteDExPWZhbHNlLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURlbmFibGUtd2F5bGFuZD10cnVlLC1EZW5hYmxlLXdheWxhbmQ9ZmFsc2Usd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scywiCisKKyMgRml4IGEgZm9sbG93aW5nIHJ1bnRpbWUgZXJyb3I6CisjIHhrYmNvbW1vbjogRVJST1I6IGNvdWxkbid0IGZpbmQgYSBDb21wb3NlIGZpbGUgZm9yIGxvY2FsZSAiQyIKK1JERVBFTkRTXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYngxMS1sb2NhbGUnLCAnbGlieDExLWNvbXBvc2UtZGF0YScsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYwOGZkNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2M0NDA5MDU4ZGZkMjAzZjY0MWE1NjMzNThlMDE4N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBkZGNmZjkzMmI3ZmQzNTI3NTJkNTFhNWM0ZjA0ZjNkMDQwMzIzMGE1ODRkZjlhMmUwZDVlZDg3YzQ4NmM4YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKLQotIyBGaXggYSBmb2xsb3dpbmcgcnVudGltZSBlcnJvcjoKLSMgeGtiY29tbW9uOiBFUlJPUjogY291bGRuJ3QgZmluZCBhIENvbXBvc2UgZmlsZSBmb3IgbG9jYWxlICJDIgotUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieDExLWxvY2FsZScsICdsaWJ4MTEtY29tcG9zZS1kYXRhJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZDgyOWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi0jIGxpYnhwbSByZXF1aXJlcyB4Z2V0dGV4dCB0byBidWlsZAotaW5oZXJpdCBnZXR0ZXh0Ci0KLVNVTU1BUlkgPSAiWHBtOiBYIFBpeG1hcCBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWHBtIHByb3ZpZGVzIHN1cHBvcnQgYW5kIGNvbW1vbiBvcGVyYXRpb24gZm9yIHRoZSBYUE0gXAotcGl4bWFwIGZvcm1hdCwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBpbiBsZWdhY3kgWCBhcHBsaWNhdGlvbnMuICBYUE0gaXMgXAotYW4gZXh0ZW5zaW9uIG9mIHRoZSBtb25vY2hyb21lIFhCTSBiaXRtYXAgc3BlY2lmaWNpZWQgaW4gdGhlIFggXAotcHJvdG9jb2wuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZjQyNzBiMDEyZWNkNGFiMWExNjRmNWY0ZWQ2Y2Y3IgotREVQRU5EUyArPSAibGlieGV4dCBsaWJzbSBsaWJ4dCBnZXR0ZXh0LW5hdGl2ZSIKLVBFID0gIjEiCi0KLVhPUkdfUE4gPSAibGliWHBtIgotCi1QQUNLQUdFUyA9KyAic3hwbSBjeHBtIgotRklMRVNfY3hwbSA9ICIke2JpbmRpcn0vY3hwbSIKLUZJTEVTX3N4cG0gPSAiJHtiaW5kaXJ9L3N4cG0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMGY0NjI3NjcyZWRiMmJkMDZhNzQ5ZjExYWE5NzMwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDZhNmRlM2RhNDhkZThkMWJiNzM4YWI2YmU0YWQ2N2Y3Y2IwOTg2YzM5YmQzZjdkNTFkZDI0Zjc4NTRiZGVjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYThlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEzLmJiCkBAIC0wLDAgKzEsMjcgQEAKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCisjIGxpYnhwbSByZXF1aXJlcyB4Z2V0dGV4dCB0byBidWlsZAoraW5oZXJpdCBnZXR0ZXh0CisKK1NVTU1BUlkgPSAiWHBtOiBYIFBpeG1hcCBleHRlbnNpb24gbGlicmFyeSIKKworREVTQ1JJUFRJT04gPSAibGliWHBtIHByb3ZpZGVzIHN1cHBvcnQgYW5kIGNvbW1vbiBvcGVyYXRpb24gZm9yIHRoZSBYUE0gXAorcGl4bWFwIGZvcm1hdCwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBpbiBsZWdhY3kgWCBhcHBsaWNhdGlvbnMuICBYUE0gaXMgXAorYW4gZXh0ZW5zaW9uIG9mIHRoZSBtb25vY2hyb21lIFhCTSBiaXRtYXAgc3BlY2lmaWNpZWQgaW4gdGhlIFggXAorcHJvdG9jb2wuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZjQyNzBiMDEyZWNkNGFiMWExNjRmNWY0ZWQ2Y2Y3IgorREVQRU5EUyArPSAibGlieGV4dCBsaWJzbSBsaWJ4dCBnZXR0ZXh0LW5hdGl2ZSIKK1BFID0gIjEiCisKK1hPUkdfUE4gPSAibGliWHBtIgorCitQQUNLQUdFUyA9KyAic3hwbSBjeHBtIgorRklMRVNfY3hwbSA9ICIke2JpbmRpcn0vY3hwbSIKK0ZJTEVTX3N4cG0gPSAiJHtiaW5kaXJ9L3N4cG0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZjBlY2Y4ZDEwM2Q1MjhjZmM4MDNhYTQ3NTEzN2FmYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2QxZGE1NzU4OGI2Y2I3MTQ1MGVmZjIyNzNlZjZiNjU3NTM3YTlhYzRkMDJkMDAxNDIyODg0NWI5MzVhYzI1IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4zLmJiCmluZGV4IDg1YTQ4ZTQuLmNjNDU2OTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgpAQCAtMTEsNiArMTEsOCBAQAogCiBERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSIKIAorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc2hhcmVkLW1lbW9yeS1kaXI9L2Rldi9zaG0iCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogU1JDX1VSSVttZDVzdW1dID0gIjQyZGRhODAxNjk0M2RjMTJhZmYyYzAzYTAzNmUwOTM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbi8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2gKaW5kZXggNzgyYzFkYi4uMjNjYmY1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoCkBAIC03LDcgKzcsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9waXhtYW4vcGl4bWFuL21lcmdlX3JlcXVlc3RzLzI0XQogCiAgdGVzdC91dGlscy5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zOC40LmJiCmluZGV4IDgyYzJlNzMuLjIyZTE5YmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYgpAQCAtMSw0MCArMSwzNiBAQAogU1VNTUFSWSA9ICJQaXhtYW46IFBpeGVsIE1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotCiBERVNDUklQVElPTiA9ICJQaXhtYW4gcHJvdmlkZXMgYSBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgcGl4ZWwgcmVnaW9ucyBcCiAtLSBhIHNldCBvZiBZLVggYmFuZGVkIHJlY3RhbmdsZXMsIGltYWdlIGNvbXBvc2l0aW5nIHVzaW5nIHRoZSBcCiBQb3J0ZXIvRHVmZiBtb2RlbCBhbmQgaW1wbGljaXQgbWFzayBnZW5lcmF0aW9uIGZvciBnZW9tZXRyaWMgcHJpbWl0aXZlcyBcCiBpbmNsdWRpbmcgdHJhcGV6b2lkcywgdHJpYW5nbGVzLCBhbmQgcmVjdGFuZ2xlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBpeG1hbi5vcmciCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJ6bGliIgogCi1yZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQVJNLXFlbXUtcmVsYXRlZC13b3JrYXJvdW5kcy1pbi1jcHUtZmVhdHVyZXMtZGV0ZWN0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMjY3YTdhZjI5MGY5M2Y2NDNhMWJjNzQ0OTBkOWZkZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGE2NmQ2ZmQ2ZTQwYWVlNzBmN2JkMDJlNGY4Zjc2ZmMzZjAwNmVjODc5ZDM0NmJhZTZhNzIzMDI1Y2ZiZGRlNyIKIAogIyBzZWUgaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3JlbGVhc2VzLyAtIG9ubHkgZXZlbiBtaW5vciB2ZXJzaW9ucyBhcmUgc3RhYmxlCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaXhtYW4tKD9QPHB2ZXI+XGQrXC4oXGQqWzAyNDY4XSkrKFwuXGQrKSspIgogCitQRSA9ICIxIgorCiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIFBEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwOTZjNzY5YWUwY2JiNWZjYjk0ZWM0NjhiZTExYjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGl4bWFuL3BpeG1hbi1tYXRyaXguYztlbmRsaW5lPTIxO21kNT00YTAxOGRmZjNlNGUyNTMwMjcyNGM4OGZmOTVjMjQ1NiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLWFybS1uZW9uLWFzbS5oO2VuZGxpbmU9MjQ7bWQ1PTlhOWNjMWU1MWFiYmYxZGE1OGY0ZDk1MjhlYzlkNDliIFwKICAgICAgICAgICAgICAgICAgICAiCi1ERVBFTkRTICs9ICJ6bGliIGxpYnBuZyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworIyBUaGVzZSBhcmUgZm9yIHRoZSB0ZXN0cyBhbmQgZGVtb3MsIHdoaWNoIHdlIGRvbid0IGluc3RhbGwKK0VYVFJBX09FTUVTT04gPSAiLURndGs9ZGlzYWJsZWQgLURsaWJwbmc9ZGlzYWJsZWQiCisjIGxkOiBwaXhtYW4vbGlicGl4bWFuLW1teC5hKHBpeG1hbi1tbXguYy5vKToKKyMgbGlua2luZyBtaXBzOmxvb25nc29uXzJmIG1vZHVsZSB3aXRoIHByZXZpb3VzIG1pcHM6aXNhNjQgbW9kdWxlcyAKK0VYVFJBX09FTUVTT04gKz0gIi1EbG9vbmdzb24tbW1pPWRpc2FibGVkIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBFID0gIjEiCi0KLUlXTU1YVCA9ICItLWRpc2FibGUtYXJtLWl3bW14dCIKLUxPT05HU09OX01NSSA9ICItLWRpc2FibGUtbG9vbmdzb24tbW1pIgotIyBJZiB0YXJnZXQgc3VwcG9ydHMgbmVvbiB0aGVuIGRpc2FibGUgdGhlICdzaW1kJyAoaWUgVkZQdjIpIGZhbGxiYWNrLCBvdGhlcndpc2UgZGlzYWJsZSBuZW9uLgotTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZGlzYWJsZS1hcm0tc2ltZCIsICItLWRpc2FibGUtYXJtLW5lb24iICxkKX0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrICR7SVdNTVhUfSAke0xPT05HU09OX01NSX0gJHtORU9OfSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWd0ayIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWd0ayIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQVJNLXFlbXUtcmVsYXRlZC13b3JrYXJvdW5kcy1pbi1jcHUtZmVhdHVyZXMtZGV0ZWN0aS5wYXRjaCBcCi0JICAgIGZpbGU6Ly8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTZhMzUwYThhNDAxMTZkZGY2NzYzMmExZDI2MjM3MTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRhYmI3ZmEyNTQxYWYyNGQ5YzNiMzRiZjc1ZDZhYzYwY2M5NGFjNDQxMDA2MWJiYjI5NWI2NmEyOTIyMTU1MCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIxNTZhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgotCi1ERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCi1XaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKLWZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAotV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAotc3lzdGVtcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzE2NzUzZTM1ZDM5MDZkMDQyYzc0MjMwNjEyZWFiOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkwZGFlYzhmZWE2MzUyNmMwNzYyMGM5MGU2ZjNmMTBhYWUzNGU5NGI2ZGI2ZTMwOTA2MTczNDgwNzIxOTAxZiIKLQotU0VDVElPTiA9ICJ4MTEvbGlicyIKLURFUEVORFMgPSAidXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCi0gICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzZDY5NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIktleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggV2luZG93IgorCitERVNDUklQVElPTiA9ICJUaGUgbm9uLWFyY2gga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBcCitXaW5kb3cuICBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHRoZSBjb25zaXN0ZW50LCB3ZWxsLXN0cnVjdHVyZWQsIFwKK2ZyZXF1ZW50bHkgcmVsZWFzZWQgb3BlbiBzb3VyY2Ugb2YgWCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGEgZm9yIFggXAorV2luZG93IFN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuICBUaGUgcHJvamVjdCBpcyB0YXJnZXRlZCB0byBYS0ItYmFzZWQgXAorc3lzdGVtcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9YS2V5Ym9hcmRDb25maWciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhrZXlib2FyZC1jb25maWciCisKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU3ZjIxY2E3ZGI5NzVjNjM0NjdkMmU3NjI0YTEyZjkiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9kYXRhL3hrZXlib2FyZC1jb25maWcvJHtCUE59LSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNWE5NjhhYjc3ODQ2ZmY4NWEwNDI0MjQxMGIyYTYxZGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjlhZGIyNWIwZmM2NGU0MDc1ZjhlYzBlYWI4ZDg2OTg5MjQxOWY0NzRmOTFmYjY5ZGIxNzEzZGUyMDYyYmRjZSIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgbGlieHNsdC1uYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgteGtiLXJ1bGVzLXN5bWxpbms9eG9yZyAtLWRpc2FibGUtcnVudGltZS1kZXBzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveGtiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL2NvbXBpbGVkCisgICAgY2QgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9ydWxlcyAmJiBsbiAtc2YgYmFzZSB4b3JnCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmctcHJvdG8tY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTQxN2M5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJYIHByb3RvY29sIGhlYWRlcnM6ICR7WE9SR19QTn0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lngub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD14b3JnIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJNSVQtWCIKLQotWE9SR19QTiA9ICIke0JQTn0iCi0KLVNSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9wcm90by8ke1hPUkdfUE59LSR7UFZ9LnRhci5iejIiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1hPUkdfUE59LSR7UFZ9IgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZm9wIgotCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0td2l0aG91dC1mb3AgLS13aXRob3V0LXhtbHRvIC0td2l0aC14bWx0byIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi0jICR7UE59IGlzIGVtcHR5IHNvIHdlIG5lZWQgdG8gdHdlYWsgLWRldiBhbmQgLWRiZyBwYWNrYWdlIGRlcGVuZGVuY2llcwotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhY2JlODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAxOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYIFdpbmRvdyBTeXN0ZW0gdW5pZmllZCBwcm90b2NvbCBkZWZpbml0aW9ucyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBoZWFkZXJzIGFuZCBzcGVjaWZpY2F0aW9uIGRvY3VtZW50cyBkZWZpbmluZyBcCi10aGUgY29yZSBwcm90b2NvbCBhbmQgKG1hbnkpIGV4dGVuc2lvbnMgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy14MTFwcm90bzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMDJkY2FmZjQ4YjQxNDFiOTQ5YWM5OWRmYzM0NGQ4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NmVjZDAxNTZjNTYxZDQxZThhYTg3Y2U3OTM0MDkxMGNkZjM4MzczYjc1OWU3MzdmY2JiYTVkZjUwOGU3YjhlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxYmM5MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYgpAQCAtMCwwICsxLDI3IEBACisKK1NVTU1BUlkgPSAiWCBXaW5kb3cgU3lzdGVtIHVuaWZpZWQgcHJvdG9jb2wgZGVmaW5pdGlvbnMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGhlYWRlcnMgYW5kIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGRlZmluaW5nIFwKK3RoZSBjb3JlIHByb3RvY29sIGFuZCAobWFueSkgZXh0ZW5zaW9ucyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhvcmciCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIk1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcteDExcHJvdG87bWQ1PWI5ZTA1MTEwN2Q1NjI4OTY2NzM5YTBiMmU5YjMyNjc2IgorCitTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvcHJvdG8vJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjlmNGZhNzhmNTNiNTJiM2VmZGM3MWViZDk1MDZiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGExNTNmMTM5MDM1YTM3NmMwNzU4NDVkZDA1ODA0OTE3NzIxMmRhOTRkN2E5NzA3Y2Y5NDY4MzY3YjY5OWQyIgorCitpbmhlcml0IG1lc29uCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xlZ2FjeV0gPSAiLURsZWdhY3k9dHJ1ZSwtRGxlZ2FjeT1mYWxzZSIKKworIyBEYXRhZGlyIG9ubHkgdXNlZCB0byBpbnN0YWxsIHBjIGZpbGVzLCAkZGF0YWRpci9wa2djb25maWcKK2RhdGFkaXI9IiR7bGliZGlyfSIKKyMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDNjNjRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzL3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotU2VjdGlvbiAiRmlsZXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIERyaXZlciAgICAgICAgImZiZGV2IgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotICAgIElkZW50aWZpZXIgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBPcHRpb24gICAgICAgICJEUE1TIgotICAgICMgMTAyNHg2MDAgNTkuODUgSHogKENWVCkgaHN5bmM6IDM3LjM1IGtIejsgcGNsazogNDkuMDAgTUh6Ci0gICAgTW9kZWxpbmUgIjEwMjR4NjAwXzYwLjAwIiAgIDQ5LjAwICAxMDI0IDEwNzIgMTE2OCAxMzEyICA2MDAgNjAzIDYxMyA2MjQgLWhzeW5jICt2c3luYwotICAgICMgNjQweDQ4MCBAIDYwSHogKEluZHVzdHJ5IHN0YW5kYXJkKSBoc3luYzogMzEuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAyNS4yICA2NDAgIDY1NiAgNzUyICA4MDAgICAgNDgwICA0OTAgIDQ5MiAgNTI1IC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3Mkh6IChWRVNBKSBoc3luYzogMzcuOWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY2NCAgNzA0ICA4MzIgICAgNDgwICA0ODkgIDQ5MSAgNTIwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3NUh6IChWRVNBKSBoc3luYzogMzcuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY1NiAgNzIwICA4NDAgICAgNDgwICA0ODEgIDQ4NCAgNTAwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA4NUh6IChWRVNBKSBoc3luYzogNDMuM2tIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzNi4wICA2NDAgIDY5NiAgNzUyICA4MzIgICAgNDgwICA0ODEgIDQ4NCAgNTA5IC1oc3luYyAtdnN5bmMKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIERldmljZSAgICAgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgTW9uaXRvciAgICAgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBEZWZhdWx0RGVwdGggIDE2Ci0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzNjQveG9yZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjk0ZGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLVNlY3Rpb24gIkZpbGVzIgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJEZXZpY2UiCi0gICAgSWRlbnRpZmllciAgICAiR3JhcGhpY3MgQ29udHJvbGxlciIKLSAgICBEcml2ZXIgICAgICAgICJmYmRldiIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiTW9uaXRvciIKLSAgICBJZGVudGlmaWVyICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgT3B0aW9uICAgICAgICAiRFBNUyIKLSAgICAjIDEwMjR4NjAwIDU5Ljg1IEh6IChDVlQpIGhzeW5jOiAzNy4zNSBrSHo7IHBjbGs6IDQ5LjAwIE1IegotICAgIE1vZGVsaW5lICIxMDI0eDYwMF82MC4wMCIgICA0OS4wMCAgMTAyNCAxMDcyIDExNjggMTMxMiAgNjAwIDYwMyA2MTMgNjI0IC1oc3luYyArdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA2MEh6IChJbmR1c3RyeSBzdGFuZGFyZCkgaHN5bmM6IDMxLjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMjUuMiAgNjQwICA2NTYgIDc1MiAgODAwICAgIDQ4MCAgNDkwICA0OTIgIDUyNSAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzJIeiAoVkVTQSkgaHN5bmM6IDM3LjlrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NjQgIDcwNCAgODMyICAgIDQ4MCAgNDg5ICA0OTEgIDUyMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNzVIeiAoVkVTQSkgaHN5bmM6IDM3LjVrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzEuNSAgNjQwICA2NTYgIDcyMCAgODQwICAgIDQ4MCAgNDgxICA0ODQgIDUwMCAtaHN5bmMgLXZzeW5jCi0gICAgIyA2NDB4NDgwIEAgODVIeiAoVkVTQSkgaHN5bmM6IDQzLjNrSHoKLSAgICBNb2RlTGluZSAiNjQweDQ4MCIgICAgMzYuMCAgNjQwICA2OTYgIDc1MiAgODMyICAgIDQ4MCAgNDgxICA0ODQgIDUwOSAtaHN5bmMgLXZzeW5jCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIlNjcmVlbiIKLSAgICBJZGVudGlmaWVyICAgICJEZWZhdWx0IFNjcmVlbiIKLSAgICBEZXZpY2UgICAgICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIE1vbml0b3IgICAgICAgICJHZW5lcmljIE1vbml0b3IiCi0gICAgRGVmYXVsdERlcHRoICAgIDE2Ci0gICAgU3ViU2VjdGlvbiAiRGlzcGxheSIKLSAgICAgICAgTW9kZXMgICAgICI2NDB4NDgwIgotICAgIEVuZFN1YlNlY3Rpb24KLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2VydmVyTGF5b3V0IgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgTGF5b3V0IgotICAgIFNjcmVlbiAgICAgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIE9wdGlvbiAgICAgICAgICJBbGxvd0VtcHR5SW5wdXQiICJubyIKLUVuZFNlY3Rpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKaW5kZXggYTBhZTY1Yy4uYjRmMDc2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKQEAgLTExNyw2ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9L2V0Yy9YMTEgXAogICAgICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXI9L3ZhciBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC14a2Itb3V0cHV0PS92YXIvbGliL3hrYiBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1vcy1uYW1lPUxpbnV4IFwKICIKIAogT1BFTkdMX1BLR0NPTkZJR1MgPSAiZHJpIGdseCBnbGFtb3IgZHJpMyB4c2htZmVuY2UiCkBAIC0xNTEsNiArMTUyLDcgQEAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAkjIEl0cyBhc3N1bWVkIGJhc2UtZmlsZXMgY3JlYXRlcyB0aGlzIGZvciB1cwogCXJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8KKyAgICAgICAgc2VkIC1pIC1lICdzLCR7bGliZGlyfS94b3JnL21vZHVsZXMsJHtwcmVmaXh9L2xpYioveG9yZy9tb2R1bGVzLCcgJHtEfSR7bWFuZGlyfS9tYW41L3hvcmcuY29uZi41CiB9CiAKICMgQWRkIHJ1bnRpbWUgcHJvdmlkZXMgZm9yIHRoZSBBQkkgdmVyc2lvbnMgb2YgdGhlIHZpZGVvIGFuZCBpbnB1dCBzdWJzeXN0ZW1zLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbXBpbGVyLmgtRG8tbm90LWluY2x1ZGUtc3lzLWlvLmgtb24tQVJNLXdpdGgtZ2xpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE5YTRmMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMmJhOTUxMDcyMWI3YTc2Y2I3ZmU1MDc0NDlmYTBhYzk5N2E0Y2NlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE9saXZpZXIgRm91cmRhbiA8b2ZvdXJkYW5AcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMSBKdWwgMjAxOSAxMzoyMDozOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb21waWxlci5oOiBEbyBub3QgaW5jbHVkZSBzeXMvaW8uaCBvbiBBUk0gd2l0aCBnbGliYwotCi08c3lzL2lvLmg+IG9uIEFSTSBoYXNuJ3Qgd29ya2VkIGZvciBhIGxvbmcsIGxvbmcgdGltZSwgc28gaXQgd2FzIHJlbW92ZWQKLWl0IGZyb20gZ2xpYmMgdXBzdHJlYW0uCi0KLVJlbW92ZSB0aGUgaW5jbHVkZSB0byBhdm9pZCBhIGNvbXBpbGF0aW9uIGZhaWx1cmUgb24gQVJNIHdpdGggZ2xpYmMuCi0KLVNpZ25lZC1vZmYtYnk6IE9saXZpZXIgRm91cmRhbiA8b2ZvdXJkYW5AcmVkaGF0LmNvbT4KLUNsb3NlczogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9pc3N1ZXMvODQwCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2NvbW1pdC9mZTRjZDBlN2Y1YzU4ZmE5NGRiMzYzMjZhYWRjMWJkNGU2ZDczZWJhXQotLS0tCi0gaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaCB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvY29tbW9uL2NvbXBpbGVyLmggYi9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi1pbmRleCA3MTQ0YzZhLi4yYjIwMDhiIDEwMDY0NAotLS0tIGEvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaAotKysrIGIvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaAotQEAgLTc1OCwzNiArNzU4LDYgQEAgaW5sKHVuc2lnbmVkIHNob3J0IHBvcnQpCi0gICAgIHJldHVybiB4Zjg2UmVhZE1taW8zMkxlKCh2b2lkICopIGlvQmFzZSwgcG9ydCk7Ci0gfQotIAotLSNlbGlmIGRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi0tCi0tLyogZm9yIExpbnV4IG9uIEFSTSwgd2UgdXNlIHRoZSBMSUJDIGlueC9vdXR4IHJvdXRpbmVzICovCi0tLyogbm90ZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBzZXR1cCB2aWEgImlvcGVybSIgbmVlZHMgdG8gYmUgZG9uZSAqLwotLS8qICAqYmVmb3JlKiBhbnkgaW54L291dHggaXMgZG9uZS4gKi8KLS0KLS0jaW5jbHVkZSA8c3lzL2lvLmg+Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dGIodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgY2hhciB2YWwpCi0tewotLSAgICBvdXRiKHZhbCwgcG9ydCk7Ci0tfQotLQotLXN0YXRpYyBfX2lubGluZV9fIHZvaWQKLS14Zl9vdXR3KHVuc2lnbmVkIHNob3J0IHBvcnQsIHVuc2lnbmVkIHNob3J0IHZhbCkKLS17Ci0tICAgIG91dHcodmFsLCBwb3J0KTsKLS19Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dGwodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgaW50IHZhbCkKLS17Ci0tICAgIG91dGwodmFsLCBwb3J0KTsKLS19Ci0tCi0tI2RlZmluZSBvdXRiIHhmX291dGIKLS0jZGVmaW5lIG91dHcgeGZfb3V0dwotLSNkZWZpbmUgb3V0bCB4Zl9vdXRsCi0tCi0gI2VsaWYgZGVmaW5lZChfX25kczMyX18pCi0gCi0gLyoKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOGU0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gODQzMzg0NDQxNzljYWI3ZWRlMTI1MmExMWI2NmUzYjhmNjU3ZTZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDIwOjM2OjQ1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGRybW1vZGVfZGlzcGxheS5jOiBhZGQgbWlzc2luZyBtaS5oIGluY2x1ZGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGh3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcm1tb2RlX2Rpc3BsYXkuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jIGIvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jCitpbmRleCBlMThjYzM3Li4zNDQ1Y2NlIDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jCisrKysgYi9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKK0BAIC00Niw2ICs0Niw3IEBACisgI2luY2x1ZGUgInhmODZDcnRjLmgiCisgI2luY2x1ZGUgImRybW1vZGVfZGlzcGxheS5oIgorICNpbmNsdWRlICJwcmVzZW50LmgiCisrI2luY2x1ZGUgIm1pLmgiCisgCisgI2luY2x1ZGUgPGN1cnNvcnN0ci5oPgorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RlNmQyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC14dGVzdC1Jbml0aWFsaXplLWFycmF5LXdpdGgtYnJhY2VzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbXBpbGVyLmgtRG8tbm90LWluY2x1ZGUtc3lzLWlvLmgtb24tQVJNLXdpdGgtZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3Nka3N5bXMtbm8tYnVpbGQtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzlmYzdlMjFlMTEyODZkYmVkZDIyYzAwZGY2NTIxMzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTgxZDgyNDNmMzdlNzVhMDNkNGY4YzU1Zjk2ZDBiYzI1ODAyYmU2ZWM0NWMzYmZhNWNiNjE0YzZkMDFiYWM5ZCIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjdmYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjguYmIKQEAgLTAsMCArMSwzNCBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC14dGVzdC1Jbml0aWFsaXplLWFycmF5LXdpdGgtYnJhY2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Nka3N5bXMtbm8tYnVpbGQtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRybW1vZGVfZGlzcGxheS5jLWFkZC1taXNzaW5nLW1pLmgtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzcwYWVjNjAwMTE2NDQ0YTk1M2ZmNjMyZjUxZjgzOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMTdiNjQ2YmVlNGJhMGZiNzg1MGMxY2M1NWIxOGUzZTg1MTNlZDVjMDJiZGYzOGRhN2UxMDdmODRlMmQwMTQ2IgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjBjMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaApAQCAtMCwwICsxLDE5NyBAQAorRnJvbSA3MGQ1Y2EyZDVmM2Q2Yjk3YzExYzY0MWI3ZTBjNTgzNjk4MzIxOWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXJpYyBTYW5kZWVuIDxzYW5kZWVuQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDI4IE1hciAyMDE4IDE1OjI2OjM2IC0wNTAwCitTdWJqZWN0OiBbb2UtY29yZV1bUEFUQ0ggMS8xXSBtYWtlIGJ0dCBzY3JpcHRzIHB5dGhvbjMtcmVhZHkKKworTWFueSBkaXN0cmlidXRpb25zIGFyZSBtb3ZpbmcgdG8gcHl0aG9uMyBieSBkZWZhdWx0LiAgSGVyZSdzCithbiBhdHRlbXB0IHRvIG1ha2UgdGhlIHB5dGhvbiBzY3JpcHRzIGluIGJsa3RyYWNlIHB5dGhvbjMtcmVhZHkuCisKK01vc3Qgb2YgdGhpcyB3YXMgZG9uZSB3aXRoIGF1dG9tYXRlZCB0b29scy4gIEkgaGFuZCBmaXhlZCBzb21lCitzcGFjZS12cyB0YWIgaXNzdWVzLCBhbmQgY2FzdCBhbiBhcnJheSBpbmRleCB0byBpbnRlZ2VyLiAgSXQKK3Bhc3NlcyBydWRpbWVudGFyeSB0ZXN0aW5nIHdoZW4gcnVuIHVuZGVyIHB5dGhvbjIuNyBhcyB3ZWxsCithcyBweXRob24zLgorCitUaGlzIGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgc2hlYmFuZ3MsIGl0IGxlYXZlcyB0aGVtIGJvdGgKK2ludm9raW5nIHdoYXRldmVyICJlbnYgcHl0aG9uIiBjb3VnaHMgdXAgb24gdGhlIHN5c3RlbS4KKworU2lnbmVkLW9mZi1ieTogRXJpYyBTYW5kZWVuIDxzYW5kZWVuQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwuZGs+CisKK1VuY2hhbmdlZCBleGNlcHQgdG8gbW9kaWZ5IHNoZWJhbmdzIHRvIHVzZSBweXRob24zIHNpbmNlCitvZS1jb3JlIGRvZXMgbm90IHN1cHBvcnQgcHl0aG9uMiBhbnltb3JlLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdCBjb21taXQgNzBkNWNhMmQ1Li4uXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGJ0dC9ibm9fcGxvdC5weSB8IDI4ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBidHQvYnR0X3Bsb3QucHkgfCAyMiArKysrKysrKysrKysrLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKKworLS0tIGdpdC5vcmlnL2J0dC9ibm9fcGxvdC5weQorKysrIGdpdC9idHQvYm5vX3Bsb3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIGJ0dCBibGtubyBwbG90dGluZyBpbnRlcmZhY2UKKyAjCitAQCAtMzgsNiArMzgsOCBAQCBhdXRvbWF0aWNhbGx5IHB1c2ggdGhlIGtleXMgdW5kZXIgdGhlIGdyCisgVG8gZXhpdCB0aGUgcGxvdHRlciwgZW50ZXIgJ3F1aXQnIG9yIF5EIGF0IHRoZSAnZ251cGxvdD4gJyBwcm9tcHQuCisgIiIiCisgCisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgaW1wb3J0IGdldG9wdCwgZ2xvYiwgb3MsIHN5cywgdGVtcGZpbGUKKyAKKyB2ZXJib3NlCT0gMAorQEAgLTYwLDE0ICs2MiwxNCBAQCBkZWYgcGFyc2VfYXJncyhpbl9hcmdzKToKKyAKKyAJdHJ5OgorIAkJKG9wdHMsIGFyZ3MpID0gZ2V0b3B0LmdldG9wdChpbl9hcmdzLCBzX29wdHMsIGxfb3B0cykKKy0JZXhjZXB0IGdldG9wdC5lcnJvciwgbXNnOgorLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBtc2cKKy0JCXByaW50ID4+c3lzLnN0ZGVyciwgX19kb2NfXworKwlleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKKysJCXByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorKwkJcHJpbnQoX19kb2NfXywgZmlsZT1zeXMuc3RkZXJyKQorIAkJc3lzLmV4aXQoMSkKKyAKKyAJZm9yIChvLCBhKSBpbiBvcHRzOgorIAkJaWYgbyBpbiAoJy1oJywgJy0taGVscCcpOgorLQkJCXByaW50IF9fZG9jX18KKysJCQlwcmludChfX2RvY19fKQorIAkJCXN5cy5leGl0KDApCisgCQllbGlmIG8gaW4gKCctdicsICctLXZlcmJvc2UnKToKKyAJCQl2ZXJib3NlICs9IDEKK0BAIC04NCwxMCArODYsMTAgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJKGJub3MsIGtleXNfYmVsb3cpID0gcGFyc2VfYXJncyhzeXMuYXJndlsxOl0pCisgCisgCWlmIHZlcmJvc2U6CistCQlwcmludCAnVXNpbmcgZmlsZXM6JywKKy0JCWZvciBibm8gaW4gYm5vczogcHJpbnQgYm5vLAorLQkJaWYga2V5c19iZWxvdzoJcHJpbnQgJ1xuS2V5cyBhcmUgdG8gYmUgcGxhY2VkIGJlbG93IGdyYXBoJworLQkJZWxzZToJCXByaW50ICcnCisrCQlwcmludCgnVXNpbmcgZmlsZXM6JywgZW5kPScgJykKKysJCWZvciBibm8gaW4gYm5vczogcHJpbnQoYm5vLCBlbmQ9JyAnKQorKwkJaWYga2V5c19iZWxvdzoJcHJpbnQoJ1xuS2V5cyBhcmUgdG8gYmUgcGxhY2VkIGJlbG93IGdyYXBoJykKKysJCWVsc2U6CQlwcmludCgnJykKKyAKKyAJdG1wZGlyID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAJb3MubWtkaXIodG1wZGlyKQorQEAgLTk5LDcgKzEwMSw3IEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgCQlmbyA9IG9wZW4odCwgJ3cnKQorIAkJZm9yIGxpbmUgaW4gb3BlbihmLCAncicpOgorIAkJCWZsZCA9IGxpbmUuc3BsaXQoTm9uZSkKKy0JCQlwcmludCA+PmZvLCBmbGRbMF0sIGZsZFsxXSwgaW50KGZsZFsyXSktaW50KGZsZFsxXSkKKysJCQlwcmludChmbGRbMF0sIGZsZFsxXSwgaW50KGZsZFsyXSktaW50KGZsZFsxXSksIGZpbGU9Zm8pCisgCQlmby5jbG9zZSgpCisgCisgCQl0ID0gdFt0LnJmaW5kKCcvJykrMTpdCitAQCAtMTA3LDE2ICsxMDksMTYgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJCWVsc2U6ICAgICAgICAgICAgICAgIHBsb3RfY21kID0gIiVzLCclcyciICUgKHBsb3RfY21kLCB0KQorIAorIAlmbyA9IG9wZW4oJyVzL3Bsb3QuY21kcycgJSB0bXBkaXIsICd3JykKKy0JcHJpbnQgPj5mbywgY21kcworLQlpZiBsZW4oYm5vcykgPiAxMCBvciBrZXlzX2JlbG93OiBwcmludCA+PmZvLCAnc2V0IGtleSBiZWxvdycKKy0JcHJpbnQgPj5mbywgcGxvdF9jbWQKKysJcHJpbnQoY21kcywgZmlsZT1mbykKKysJaWYgbGVuKGJub3MpID4gMTAgb3Iga2V5c19iZWxvdzogcHJpbnQoJ3NldCBrZXkgYmVsb3cnLCBmaWxlPWZvKQorKwlwcmludChwbG90X2NtZCwgZmlsZT1mbykKKyAJZm8uY2xvc2UoKQorIAorIAlwaWQgPSBvcy5mb3JrKCkKKyAJaWYgcGlkID09IDA6CisgCQljbWQgPSAnZ251cGxvdCAlcy9wbG90LmNtZHMgLScgJSB0bXBkaXIKKyAKKy0JCWlmIHZlcmJvc2U6IHByaW50ICdFeGVjdXRpbmcgJXMnICUgY21kCisrCQlpZiB2ZXJib3NlOiBwcmludCgnRXhlY3V0aW5nICVzJyAlIGNtZCkKKyAKKyAJCW9zLmNoZGlyKHRtcGRpcikKKyAJCW9zLnN5c3RlbShjbWQpCistLS0gZ2l0Lm9yaWcvYnR0L2J0dF9wbG90LnB5CisrKysgZ2l0L2J0dC9idHRfcGxvdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIworICMgYnR0X3Bsb3QucHk6IEdlbmVyYXRlIG1hdHBsb3RsaWIgcGxvdHMgZm9yIEJUVCBnZW5lcmF0ZSBkYXRhIGZpbGVzCisgIworQEAgLTU1LDYgKzU1LDEwIEBAIEFyZ3VtZW50czoKKyAgIGJ1dCB0aGUgLW8gKC0tb3V0cHV0KSBhbmQgLVQgKC0tdGl0bGUpIG9wdGlvbnMgd2lsbCBiZSBpZ25vcmVkLgorICIiIgorIAorK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorK2ltcG9ydCBzaXgKKytmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgcmFuZ2UKKyBfX2F1dGhvcl9fID0gJ0FsYW4gRC4gQnJ1bmVsbGUgPGFsYW4uYnJ1bmVsbGVAaHAuY29tPicKKyAKKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAQCAtODIsNyArODYsNyBAQCBnZXRfYmFzZSAJPSBsYW1iZGEgZmlsZTogZmlsZVtmaWxlLmZpbmQoCisgZGVmIGZhdGFsKG1zZyk6CisgCSIiIkdlbmVyYXRlIGZhdGFsIGVycm9yIG1lc3NhZ2UgYW5kIGV4aXQiIiIKKyAKKy0JcHJpbnQgPj5zeXMuc3RkZXJyLCAnRkFUQUw6ICVzJyAlIG1zZworKwlwcmludCgnRkFUQUw6ICVzJyAlIG1zZywgZmlsZT1zeXMuc3RkZXJyKQorIAlzeXMuZXhpdCgxKQorIAorICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC0xNjMsNyArMTY3LDcgQEAgZGVmIGdldF9kYXRhKGZpbGVzKToKKyAJCWlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlKToKKyAJCQlmYXRhbCgnJXMgbm90IGZvdW5kJyAlIGZpbGUpCisgCQllbGlmIHZlcmJvc2U6CistCQkJcHJpbnQgJ1Byb2Nlc3NpbmcgJXMnICUgZmlsZQorKwkJCXByaW50KCdQcm9jZXNzaW5nICVzJyAlIGZpbGUpCisgCisgCQl4cyA9IFtdCisgCQl5cyA9IFtdCitAQCAtMjE0LDggKzIxOCw4IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgorIAorIAl0cnk6CisgCQkob3B0cywgYXJncykgPSBnZXRvcHQuZ2V0b3B0KGFyZ3NbMTpdLCBzX29wdHMsIGxfb3B0cykKKy0JZXhjZXB0IGdldG9wdC5lcnJvciwgbXNnOgorLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBtc2cKKysJZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CisrCQlwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAJCWZhdGFsKF9fZG9jX18pCisgCisgCWZvciAobywgYSkgaW4gb3B0czoKK0BAIC0yOTMsMTUgKzI5NywxNSBAQCBkZWYgZ2VuZXJhdGVfb3V0cHV0KHR5cGUsIGRiKToKKyAJZGVmIGNvbG9yKGlkeCwgc3R5bGUpOgorIAkJIiIiUmV0dXJucyBhIGNvbG9yL3N5bWJvbCB0eXBlIGJhc2VkIHVwb24gdGhlIGluZGV4IHBhc3NlZC4iIiIKKyAKKy0gICAgICAgICAgICAgICAgY29sb3JzID0gWyAnYicsICdnJywgJ3InLCAnYycsICdtJywgJ3knLCAnaycgXQorKwkJY29sb3JzID0gWyAnYicsICdnJywgJ3InLCAnYycsICdtJywgJ3knLCAnaycgXQorIAkJbF9zdHlsZXMgPSBbICctJywgJzonLCAnLS0nLCAnLS4nIF0KKyAJCW1fc3R5bGVzID0gWyAnbycsICcrJywgJy4nLCAnLCcsICdzJywgJ3YnLCAneCcsICc8JywgJz4nIF0KKyAKKyAJCWNvbG9yID0gY29sb3JzW2lkeCAlIGxlbihjb2xvcnMpXQorIAkJaWYgc3R5bGUgPT0gJ2xpbmUnOgorLQkJCXN0eWxlID0gbF9zdHlsZXNbKGlkeCAvIGxlbihsX3N0eWxlcykpICUgbGVuKGxfc3R5bGVzKV0KKysJCQlzdHlsZSA9IGxfc3R5bGVzW2ludCgoaWR4IC8gbGVuKGxfc3R5bGVzKSkgJSBsZW4obF9zdHlsZXMpKV0KKyAJCWVsaWYgc3R5bGUgPT0gJ21hcmtlcic6CistCQkJc3R5bGUgPSBtX3N0eWxlc1soaWR4IC8gbGVuKG1fc3R5bGVzKSkgJSBsZW4obV9zdHlsZXMpXQorKwkJCXN0eWxlID0gbV9zdHlsZXNbaW50KChpZHggLyBsZW4obV9zdHlsZXMpKSAlIGxlbihtX3N0eWxlcykpXQorIAorIAkJcmV0dXJuICclcyVzJyAlIChjb2xvciwgc3R5bGUpCisgCitAQCAtMzE0LDcgKzMxOCw3IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAkJb2ZpbGUgPSAnJXMucG5nJyAlIHR5cGUKKyAKKyAJaWYgdmVyYm9zZToKKy0JCXByaW50ICdHZW5lcmF0aW5nIHBsb3QgaW50byAlcycgJSBvZmlsZQorKwkJcHJpbnQoJ0dlbmVyYXRpbmcgcGxvdCBpbnRvICVzJyAlIG9maWxlKQorIAorIAlmaWcgPSBwbHQuZmlndXJlKGZpZ3NpemU9cGxvdF9zaXplKQorIAlheCA9IGZpZy5hZGRfc3VicGxvdCgxMTEpCitAQCAtMzI5LDcgKzMzMyw3IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAkJbGVnZW5kcyA9IE5vbmUKKyAKKyAJa2V5cyA9IFtdCistCWZvciBmaWxlIGluIGRiLml0ZXJrZXlzKCk6CisrCWZvciBmaWxlIGluIHNpeC5pdGVya2V5cyhkYik6CisgCQlpZiBub3QgZmlsZSBpbiBbJ21pbl94JywgJ21heF94JywgJ21pbl95JywgJ21heF95J106CisgCQkJa2V5cy5hcHBlbmQoZmlsZSkKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDI2MDVmZjkuLjY5MDMwNTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Jsa3RyYWNlLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwNjg5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21ha2UtYnR0LXNjcmlwdHMtcHl0aG9uMy1yZWFkeS5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKaW5kZXggOWQ4YmE0NC4uZjk5ZjhiYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwpAQCAtNCw5ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDUkVWID0gImZkOGIxNWVmMWM4Mzk4YTY5YTM3OTMyZWU0OGM3NGFiNDAzMjlhMjkiCitTUkNSRVYgPSAiYTg3MDUzYmVlNTY4MDg3OGMyOTViN2QyM2NmMGQ3MDY1NTc2YWMyYiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGVjODcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1GaXgtbW9kdWxlLWxvYWRpbmctd2l0aC1MaW51eC12NS4wLXJjNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4L2NvbW1pdC9mOTcxZTBjXQotCi1CYWNrcG9ydCBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCBtb2R1bGUgY3J5cHRvZGV2IGxvYWRpbmcgZXJyb3IuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIGY5NzFlMGNkNGEwZWJlNTlmYjJlOGUxNzI0MDM5OWJmNjkwMWIwOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiRGVyYWxkIEQuIFdvb2RzIiA8d29vZHMudGVjaG5pY2FsQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTAgRmViIDIwMTkgMTM6MjI6MTkgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IG1vZHVsZSBsb2FkaW5nIHdpdGggTGludXggdjUuMC1yYzUKLQotVGhpcyBjb21taXQgZml4ZXMgdGhpcyBtb2R1bGUgbG9hZCBlcnJvcjoKLVsuLi5dCi1bICAgMjkuMTEyMDkxXSBjcnlwdG9kZXY6IGxvYWRpbmcgb3V0LW9mLXRyZWUgbW9kdWxlIHRhaW50cyBrZXJuZWwuCi1bICAgMjkuMTI4OTA2XSBjcnlwdG9kZXY6IFVua25vd24gc3ltYm9sIGNyeXB0b19naXZjaXBoZXJfdHlwZSAoZXJyIC0yKQotWyAgIDI5LjE4ODg0Ml0gY3J5cHRvZGV2OiBVbmtub3duIHN5bWJvbCBjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUgKGVyciAtMikKLW1vZHByb2JlOiBjYW4ndCBsb2FkIG1vZHVsZSBjcnlwdG9kZXYgKGV4dHJhL2NyeXB0b2Rldi5rbyk6IHVua25vd24gc3ltYm9sIGluIG1vZHVsZSwgb3IgdW5rbm93biBwYXJhbWV0ZXIKLVsuLi5dCi0KLVVwc3RyZWFtIExpbnV4IHN1cHBvcnQgZm9yIHVudXNlZCBHSVZDSVBIRVIsIGFuZCBvdGhlcnMsIHdhcyBkcm9wcGVkIGhlcmU6Ci0KLWM3OWI0MTFlYWE3MiAoY3J5cHRvOiBza2NpcGhlciAtIHJlbW92ZSByZW1uYW50cyBvZiBpbnRlcm5hbCBJViBnZW5lcmF0b3JzKQotCi1TaWduZWQtb2ZmLWJ5OiBEZXJhbGQgRC4gV29vZHMgPHdvb2RzLnRlY2huaWNhbEBnbWFpbC5jb20+Ci0tLS0KLSBjcnlwdGxpYi5jIHwgOSArKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY3J5cHRsaWIuYyBiL2NyeXB0bGliLmMKLWluZGV4IDZlNjY2OTguLjRhODcwMzcgMTAwNjQ0Ci0tLS0gYS9jcnlwdGxpYi5jCi0rKysgYi9jcnlwdGxpYi5jCi1AQCAtMzgsNyArMzgsOSBAQAotICNpbmNsdWRlICJjcnlwdG9kZXZfaW50LmgiCi0gI2luY2x1ZGUgImNpcGhlcmFwaS5oIgotIAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNSwgMCwgMCkpCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBjcnlwdG9fdHlwZSBjcnlwdG9fZ2l2Y2lwaGVyX3R5cGU7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQgY3J5cHRvZGV2X2NvbXBsZXRlKHN0cnVjdCBjcnlwdG9fYXN5bmNfcmVxdWVzdCAqcmVxLCBpbnQgZXJyKQotIHsKLUBAIC0xNTcsOCArMTU5LDExIEBAIGludCBjcnlwdG9kZXZfY2lwaGVyX2luaXQoc3RydWN0IGNpcGhlcl9kYXRhICpvdXQsIGNvbnN0IGNoYXIgKmFsZ19uYW1lLAotIAotICNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApKQotIAkJdGZtID0gY3J5cHRvX3NrY2lwaGVyX3RmbShvdXQtPmFzeW5jLnMpOwotLQkJaWYgKCh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19hYmxrY2lwaGVyX3R5cGUpIHx8Ci0tCQkgICAgKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2dpdmNpcGhlcl90eXBlKSkgewotKwkJaWYgKCh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19hYmxrY2lwaGVyX3R5cGUpCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig1LCAwLCAwKSkKLSsJCSAgICB8fCAodGZtLT5fX2NydF9hbGctPmNyYV90eXBlID09ICZjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUpCi0rI2VuZGlmCi0rCQkJCQkJCSkgewotIAkJCXN0cnVjdCBhYmxrY2lwaGVyX2FsZyAqYWxnOwotIAotIAkJCWFsZyA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2FibGtjaXBoZXI7Ci0tLSAKLTIuMjAuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKaW5kZXggOGNhNzE5My4uNGYxYWY3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgpAQCAtMSwyNCArMSwyNyBAQAogU1VNTUFSWSA9ICJUb29scyBmb3IgbWFuYWdpbmcgWW9jdG8gUHJvamVjdCBzdHlsZSBicmFuY2hlZCBrZXJuZWxzIgogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dpdC90b29scy9rZ2l0O2JlZ2lubGluZT01O2VuZGxpbmU9OTttZDU9OWMzMGU5NzFkNDM1ZTI0OTYyNDI3OGMzZTM0M2U1MDEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90b29scy9rZ2l0O2JlZ2lubGluZT01O2VuZGxpbmU9OTttZDU9OWMzMGU5NzFkNDM1ZTI0OTYyNDI3OGMzZTM0M2U1MDEiCiAKIERFUEVORFMgPSAiZ2l0LW5hdGl2ZSIKIAotU1JDUkVWID0gImJiNmRmMGVmMjM2NTY4OWNkM2RmNmY3NmE4ODM4Y2RkYWUwZDkzNDMiCitTUkNSRVYgPSAiYzY2ODMzZTFjYWFjMjUyNzlhNTA1MmZjZWIxMzIxM2Y1ZTRmNzlmOSIKIFBSID0gInIxMiIKIFBWID0gIjAuMitnaXQke1NSQ1BWfSIKIAogaW5oZXJpdCBuYXRpdmUKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtdG9vbHMuZ2l0IgotUyA9ICIke1dPUktESVJ9IgorUyA9ICIke1dPUktESVJ9L2dpdCIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAorZG9fY29uZmlndXJlKCkgeworCToKK30KKwogZG9fY29tcGlsZSgpIHsgCiAJOgogfQogCiBkb19pbnN0YWxsKCkgewotCWNkICR7U30vZ2l0Ci0JbWFrZSBERVNURElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAorCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9JHtiaW5kaXJ9IGluc3RhbGwKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxNjA4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZDI5NGM1MDM5NzUzYTM2NTA2OTQ5YmE1ZGM3ODJhNGMwYjMwN2I3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNzoyMTowOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBrZXhlYzogdW4tYnJlYWsgdGhlIGJ1aWxkIG9uIDMyIGJpdCB4ODYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGtleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSAgICB8IDEgKworIGtleGVjL2FyY2gvaTM4Ni9rZXhlYy14ODYuaCB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUgYi9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUKK2luZGV4IDEwNWNlZmQuLjI1ZGY1N2EgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUKKysrKyBiL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQorQEAgLTExLDYgKzExLDcgQEAgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1iZW9ib290LXg4Ni5jCisgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1uYmkuYworIGkzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYveDg2LWxpbnV4LXNldHVwLmMKKyBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2NyYXNoZHVtcC14ODYuYworK2kzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYva2V4ZWMtbWIyLXg4Ni5jCisgCisgZGlzdCArPSBrZXhlYy9hcmNoL2kzODYvTWFrZWZpbGUgJChpMzg2X0tFWEVDX1NSQ1MpCQkJXAorIAlrZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5oCQkJCQlcCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oCitpbmRleCAxYjU4YzNiLi5kNmIxMGMwIDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oCisrKysgYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKK0BAIC01Niw5ICs1NiwxMyBAQCBzdHJ1Y3QgYXJjaF9vcHRpb25zX3QgeworIH07CisgCisgaW50IG11bHRpYm9vdF94ODZfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOworK2ludCBtdWx0aWJvb3QyX3g4Nl9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbik7CisgaW50IG11bHRpYm9vdF94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAorIAlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7CisraW50IG11bHRpYm9vdDJfeDg2X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKKysJc3RydWN0IGtleGVjX2luZm8gKmluZm8pOworIHZvaWQgbXVsdGlib290X3g4Nl91c2FnZSh2b2lkKTsKKyt2b2lkIG11bHRpYm9vdDJfeDg2X3VzYWdlKHZvaWQpOworIAorIGludCBlbGZfeDg2X3Byb2JlKGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuKTsKKyBpbnQgZWxmX3g4Nl9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNmNzQzNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotCi1TVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgotREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKLUFVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKLURFUEVORFMgPSAiemxpYiB4eiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9rZHVtcCBcCi0gICAgZmlsZTovL2tkdW1wLmNvbmYgXAotICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vMDAwMS1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC14ODZfNjQtQWRkLXN1cHBvcnQtdG8tYnVpbGQta2V4ZWMtdG9vbHMtd2l0aC14MzItQUJJLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDYta2V4ZWMtYXJtLXVuZGVmaW5lLV9fTlJfa2V4ZWNfZmlsZV9sb2FkLWZvci1hcm0ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDUyNDU4ZjBhMzVjMmEzYjBkMjMwMmNhYTMzMThlOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTEzYzhkZWU5MThlNTg1NWE0YmE2MGQ2MDkzNzEzOTA5NzgxNDRiNGM4ZDE1ZDY0NDZjYTAwNTdiN2JjNWU1OCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1leHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCi0gICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQotICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAotCi0gICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCi0gICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCi0gICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCi0gICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCi0gICAgICAgICAgICBybSAtZiAkZGVwCi0gICAgICAgIGZpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCi0gICAgICAgIGZpCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1GSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCi0iCi0KLUZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAia2R1bXAiCi1TWVNURU1EX1NFUlZJQ0Vfa2R1bXAgPSAia2R1bXAuc2VydmljZSIKLQotU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJwotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxYjM2NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMjAuYmIKQEAgLTAsMCArMSw4OSBAQAorCitTVU1NQVJZID0gIktleGVjIGZhc3QgcmVib290IHRvb2xzIgorREVTQ1JJUFRJT04gPSAiS2V4ZWMgaXMgYSBmYXN0IHJlYm9vdCBmZWF0dXJlIHRoYXQgbGV0cyB5b3UgcmVib290IHRvIGEgbmV3IExpbnV4IGtlcm5lbCIKK0FVVEhPUiA9ICJFcmljIEJpZWRlcm1hbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvIgorU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMva2V4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1hZjEwZjZhZTRhODcxNTk2NWU2NDhhYTY4N2FkM2UwOSIKK0RFUEVORFMgPSAiemxpYiB4eiIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8va2R1bXAgXAorICAgICAgICAgICBmaWxlOi8va2R1bXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcG93ZXJwYy1jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcHVyZ2F0b3J5LVBhc3Mtci1kaXJlY3RseS10by1saW5rZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1rZXhlYy1BUk0tRml4LWFkZF9idWZmZXJfcGh5c192aXJ0LWFsaWduLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQteDg2XzY0LUFkZC1zdXBwb3J0LXRvLWJ1aWxkLWtleGVjLXRvb2xzLXdpdGgteDMyLUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYta2V4ZWMtYXJtLXVuZGVmaW5lLV9fTlJfa2V4ZWNfZmlsZV9sb2FkLWZvci1hcm0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1rZXhlYy11bi1icmVhay10aGUtYnVpbGQtb24tMzItYml0LXg4Ni5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ2NzI0YjY3ZjMyNTAxYzVkM2U3NzgxNjEzNDdjYWQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiMTZkNzk4MThlMGM5ZGUzYmIzZTMzZWRlNTY3N2MzNGExZDI4YzY0NjM3OWM3YWI0NGUwZmFhM2ViNTdhMTYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworZXhwb3J0IExERkxBR1MgPSAiLUwke1NUQUdJTkdfTElCRElSfSIKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXpsaWI9eWVzIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgIyBSZW1vdmUgdGhlIHByZXBhY2thZ2VkIGNvbmZpZy5oIGZyb20gdGhlIHNvdXJjZSB0cmVlIGFzIGl0IG92ZXJyaWRlcworICAgICMgdGhlIHNhbWUgZmlsZSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIGFuZCBwbGFjZWQgaW4gdGhlIGJ1aWxkIHRyZWUKKyAgICBybSAtZiAke1N9L2luY2x1ZGUvY29uZmlnLmgKKworICAgICMgUmVtb3ZlIHRoZSAnKi5kJyBmaWxlIHRvIG1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCisgICAgZm9yIGRlcCBpbiBgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgJyouZCdgOyBkbworICAgICAgICBkZXBfbm9fZD0iYGVjaG8gJGRlcCB8IHNlZCAncyMuZCQjIydgIgorICAgICAgICAjIFJlbW92ZSBmaWxlLmQgd2hlbiB0aGVyZSBpcyBhIGZpbGUubworICAgICAgICBpZiBbIC1mICIkZGVwX25vX2QubyIgXTsgdGhlbgorICAgICAgICAgICAgcm0gLWYgJGRlcAorICAgICAgICBmaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZworCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcAorICAgICAgICBmaQorCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgICAgICAgICAgc2VkIC1pIC1lICdzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgZmkKK30KKworUEFDS0FHRVMgPSsgImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtleGVjIGtkdW1wIHZtY29yZS1kbWVzZyIKKworRklMRVNfa2V4ZWMgPSAiJHtzYmluZGlyfS9rZXhlYyIKK0ZJTEVTX2tkdW1wID0gIiR7c2JpbmRpcn0va2R1bXAgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjb25maWcva2R1bXAuY29uZiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9rZHVtcCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlciBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UgXAorIgorCitGSUxFU192bWNvcmUtZG1lc2cgPSAiJHtzYmluZGlyfS92bWNvcmUtZG1lc2ciCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAia2R1bXAiCitJTklUU0NSSVBUX05BTUVfa2R1bXAgPSAia2R1bXAiCitJTklUU0NSSVBUX1BBUkFNU19rZHVtcCA9ICJzdGFydCA1NiAyIDMgNCA1IC4gc3RvcCA1NiAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gImtkdW1wIgorU1lTVEVNRF9TRVJWSUNFX2tkdW1wID0gImtkdW1wLnNlcnZpY2UiCisKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgzMDAwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAxOTA4MTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NDMgKzAsMCBAQAotU1VNTUFSWSA9ICJGaXJtd2FyZSBmaWxlcyBmb3IgdXNlIHdpdGggTGludXgga2VybmVsIgotU0VDVElPTiA9ICJrZXJuZWwiCi0KLUxJQ0VOU0UgPSAiXAotICAgIEZpcm13YXJlLUFiaWxpcyBcCi0gICAgJiBGaXJtd2FyZS1hZHNwX3NzdCBcCi0gICAgJiBGaXJtd2FyZS1hZ2VyZSBcCi0gICAgJiBGaXJtd2FyZS1hbWRncHUgXAotICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKLSAgICAmIEZpcm13YXJlLWFtbG9naWNfdmRlYyBcCi0gICAgJiBGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWF0bWVsIFwKLSAgICAmIEZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHggXAotICAgICYgRmlybXdhcmUtY2EwMTMyIFwKLSAgICAmIEZpcm13YXJlLWNhdml1bSBcCi0gICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWN3MTIwMCBcCi0gICAgJiBGaXJtd2FyZS1jeXByZXNzIFwKLSAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAotICAgICYgRmlybXdhcmUtZTEwMCBcCi0gICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAotICAgICYgRmlybXdhcmUtZ283MDA3IFwKLSAgICAmIEZpcm13YXJlLUdQTHYyIFwKLSAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaTI0MDBtIFwKLSAgICAmIEZpcm13YXJlLWk5MTUgXAotICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWl0OTEzeCBcCi0gICAgJiBGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKLSAgICAmIEZpcm13YXJlLWthd2V0aCBcCi0gICAgJiBGaXJtd2FyZS1NYXJ2ZWxsIFwKLSAgICAmIEZpcm13YXJlLW1veGEgXAotICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtbmV0cm9ub21lIFwKLSAgICAmIEZpcm13YXJlLW52aWRpYSBcCi0gICAgJiBGaXJtd2FyZS1PTFBDIFwKLSAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCi0gICAgJiBGaXJtd2FyZS1waGFuZncgXAotICAgICYgRmlybXdhcmUtcWF0IFwKLSAgICAmIEZpcm13YXJlLXFjb20gXAotICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCi0gICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKLSAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayBcCi0gICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayBcCi0gICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAotICAgICYgRmlybXdhcmUtcmFkZW9uIFwKLSAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtc2lhbm8gXAotICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAotICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAotICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtdmlhX3Z0NjY1NiBcCi0gICAgJiBGaXJtd2FyZS13bDEyNTEgXAotICAgICYgRmlybXdhcmUteGM0MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMCBcCi0gICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKLSAgICAmIFdIRU5DRSBcCi0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuQWJpbGlzO21kNT1iNWVlM2Y0MTA3ODBlNTY3MTFhZDQ4ZWFkYzIyYjhiYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFkc3Bfc3N0O21kNT02MTVjNDViOTFhNWE0YTlmZTA0NmQ2YWI5YTJkZjcyOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFnZXJlO21kNT1hZjAxMzNkZTZiNGE5YjI1MjJkZWZkNWYxODhhZmQzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9YWI1MTVlZjY0OTVhYjVjNWEzYjA4YWIyZGI2MmRmMTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWQtdWNvZGU7bWQ1PTNjNTM5OWRjOTE0OGQ3ZjBlMWY0MWUzNGI2OWNmMTRmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1sb2dpY192ZGVjO21kNT1kYzQ0ZjU5YmY2NGE4MTY0M2U1MDBhZDNmMzlhNDY4YSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmF0aGVyb3NfZmlybXdhcmU7bWQ1PTMwYTE0Yzc4MjNiZWVkYWM5ZmEzOWM2NGZkZDAxYTEzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYXRtZWw7bWQ1PWFhNzRhYzBjNjA1OTVkZWU0ZDRlMjM5MTA3ZWE3N2EzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eDttZDU9MzE2MGMxNGRmNzIyODg5MWI4NjgwNjBlMTk1MWRmYmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYTAxMzI7bWQ1PTIwOWIzM2U2NmVlNWJlMDQ2MWYxM2QzMWRhMzkyMTk4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2FkZW5jZTttZDU9MDA5ZjQ2ODE2ZjY5NTZjZmI3NWVkZTEzZDNlMWNlZTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYXZpdW07bWQ1PWMzN2FhZmZiMWViZTU5MzliMjU4MGQwNzNhOTVkYWVhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZTttZDU9ODE5YWE4YzNmYTQ1M2YxYjI1OGVkOGQxNjhhOWQ5MDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jdzEyMDA7bWQ1PWYwZjc3MDg2NGU3YTg0NDRhNWM1YWE5ZDEyYTNhN2VkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3lwcmVzczttZDU9NDhjZDk0MzZjNzYzYmY4NzM5NjFmOWVkN2I1YzE0N2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5kaWIwNzAwO21kNT1mNzQxMTgyNWM4YTU1NWExYTNlNWVhYjljYTc3MzQzMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmUxMDA7bWQ1PWVjMGY4NDEzNjc2NmRmMTU5YTNhZTZkMDJhY2RmNWE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZW5lX2Zpcm13YXJlO21kNT1lZDY3ZjBmNjJmOGY3OTgxMzBjMjk2NzIwYjdkMzkyMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmZ3X3NzdF8wZjI4O21kNT02MzUzOTMxYzk4OGFkNTI4MThhZTczM2FjNjFjZDI5MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmdvNzAwNzttZDU9YzBiYjlmNmFhYWJhNTViMDUyOWVlOWIzMGFhNjZiZWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMLTI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaGZpMV9maXJtd2FyZTttZDU9NWU3YjZlNTg2Y2U3MzM5ZDEyNjg5ZTQ5OTMxYWQ0NDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pMjQwMG07bWQ1PTE0YjkwMTk2OWUyM2M0MTg4MTMyN2MwZDllNGI3ZDM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaTkxNTttZDU9MmIwYjJlMGQyMDk4NGFmZmQ0NDkwYmEyY2JhMDI1NzAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pYnRfZmlybXdhcmU7bWQ1PWZkYmVlMWRkZmUwZmI3YWIwYjJmY2Q2YjQ1NGEzNjZiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuSW50Y1NTVDI7bWQ1PTllN2Q4YmVhNzc2MTJkN2NjN2Q5ZTliNTRiNjIzMDYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXQ5MTN4O21kNT0xZmJmNzI3YmZiNmE5NDk4MTBjNGRiZmE3ZTZjZTRmOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmU7bWQ1PTNmZDg0MjkxMWVhOTNjMjljZDMyNjc5YWEyM2UxYzg4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uua2F3ZXRoO21kNT1iMWQ4NzZlNTYyZjRiM2I4ZDM5MWFkODM5NWRmZTAzZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk1hcnZlbGw7bWQ1PTI4YjZlZDhiZDA0YmExMDVhZjZlNGRjZDZlOTk3NzcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubWVkaWF0ZWs7bWQ1PTdjMTk3NmI2MzIxN2Q3NmNlNDdkMGExMWQ4YTc5Y2YyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubW94YTttZDU9MTA4NjYxNDc2N2Q4Y2NmNzQ0YTkyMzI4OWQzZDQyNjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZTttZDU9NDJlMzJmYjg5ZjZiOTU5Y2EyMjJlMjVhYzhkZjhmZWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5OZXRyb25vbWU7bWQ1PTRhZGQwOGYyNTc3MDg2ZDQ0NDQ3OTk2NTAzY2RkZjVmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubnZpZGlhO21kNT00NDI4YTkyMmVkM2JhMmNlZWM5NWYwNzZhNDg4Y2UwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk9MUEM7bWQ1PTViOTE3ZjlkOGMwNjE5OTFiZTRmNmY1ZjEwODcxOWNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucGhhbmZ3O21kNT05NTRkY2VjMGUwNTFmOTQwOTgxMmI1NjFlYTc0M2JmYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFhdF9maXJtd2FyZTttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTEyODA7bWQ1PWQ2ODk1NzMyZTYyMmQ5NTA2MDkwOTMyMjNhMmM0ZjVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMnh4eDttZDU9NTA1ODU1ZTkyMWI3NWYxYmU0YTQzN2FkOWI3OWRmZjAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrO21kNT1jYjQyYjY4NmVlNWY1Y2I4OTAyNzVlNDMyMWRiNjBhOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnI4YTc3OXhfdXNiMzttZDU9NGMxNjcxNjU2MTUzMDI1ZDcwNzYxMDVhNWRhN2U0OTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5yYWRlb247bWQ1PTY4ZWMyOGJhY2IzNjEzMjAwYmNhNDRmNDA0YzY5YjE2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZTttZDU9NzI4ZjFhODVmZDUzZmQ2N2ZhOGQ3YWZiMDgwYmM0MzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0O21kNT1hYjJjMjY5Mjc3YzQ1NDc2ZmI0NDk2NzM5MTFhMmRmZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0O21kNT0wMGQwNmNmZDNlZGRkNWEyNjk4OTQ4ZWFkMmFkNTRhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnNkbWFfZmlybXdhcmU7bWQ1PTUxZThjMTllY2MyMjcwZjRiOGVhMzAzNDFhZDYzY2U5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uuc2lhbm87bWQ1PTQ1NTZjMWJmODMwMDY3ZjEyY2ExNTFhZDk1M2VjMmE1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGRhNzcwNi1maXJtd2FyZS50eHQ7bWQ1PTgzNTk5N2NmNWUzYzEzMWQwZGRkZDY5NWM3ZDkxMDNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5O21kNT1jNWUwMmJlNjMzZjE0OTljMTA5ZDE2NTI1MTRkODVlYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnRpLWtleXN0b25lO21kNT0zYTg2MzM1ZDMyODY0YjBiZWY5OTZiZWUyNmNjMGYyYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlO21kNT00ZWQ3ZWE2YjUwN2NjYzU4M2I5ZDU5NDQxNzcxNDExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnZpYV92dDY2NTY7bWQ1PWU0MTU5Njk0Y2JhNDJkNDM3N2E5MTJlNzhhNmU4NTBmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uud2wxMjUxO21kNT1hZDNmODE5MjJiYjllMTk3MDE0YmIxODcyODlkM2I1YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNDAwMDttZDU9MGZmNTFkMmRjNDlmY2UwNDgxNGM5MTU1MDgxMDkyZjAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vV0hFTkNFO21kNT0zN2EwMWUzNzkyMTlkMWUwNmRiY2NmYTkwYThmYzBhZCBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQotIyBzbyB0aGF0IHRoZSBsaWNlbnNlIGZpbGVzIHdpbGwgYmUgY29waWVkIGZyb20gZmV0Y2hlZCBzb3VyY2UKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1BYmlsaXNdID0gIkxJQ0VOQ0UuQWJpbGlzIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFkc3Bfc3N0XSA9ICJMSUNFTkNFLmFkc3Bfc3N0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFnZXJlXSA9ICJMSUNFTkNFLmFnZXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtZGdwdV0gPSAiTElDRU5TRS5hbWRncHUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kLXVjb2RlXSA9ICJMSUNFTlNFLmFtZC11Y29kZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWxvZ2ljX3ZkZWNdID0gIkxJQ0VOU0UuYW1sb2dpY192ZGVjIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aGVyb3NfZmlybXdhcmVdID0gIkxJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hdG1lbF0gPSAiTElDRU5TRS5hdG1lbCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XSA9ICJMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2EwMTMyXSA9ICJMSUNFTkNFLmNhMDEzMiIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYWRlbmNlXSA9ICJMSUNFTkNFLmNhZGVuY2UiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2F2aXVtXSA9ICJMSUNFTkNFLmNhdml1bSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlXSA9ICJMSUNFTkNFLmNoZWxzaW9fZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3cxMjAwXSA9ICJMSUNFTkNFLmN3MTIwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jeXByZXNzXSA9ICJMSUNFTkNFLmN5cHJlc3MiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZGliMDcwMF0gPSAiTElDRU5TRS5kaWIwNzAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWUxMDBdID0gIkxJQ0VOQ0UuZTEwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1lbmVfZmlybXdhcmVdID0gIkxJQ0VOQ0UuZW5lX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWZ3X3NzdF8wZjI4XSA9ICJMSUNFTkNFLmZ3X3NzdF8wZjI4IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWdvNzAwN10gPSAiTElDRU5DRS5nbzcwMDciCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtR1BMdjJdID0gIkdQTC0yIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWhmaTFfZmlybXdhcmVdID0gIkxJQ0VOU0UuaGZpMV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pMjQwMG1dID0gIkxJQ0VOQ0UuaTI0MDBtIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWk5MTVdID0gIkxJQ0VOU0UuaTkxNSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pYnRfZmlybXdhcmVdID0gIkxJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUludGNTU1QyXSA9ICJMSUNFTkNFLkludGNTU1QyIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWl0OTEzeF0gPSAiTElDRU5DRS5pdDkxM3giCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZV0gPSAiTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWthd2V0aF0gPSAiTElDRU5DRS5rYXdldGgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtTWFydmVsbF0gPSAiTElDRU5DRS5NYXJ2ZWxsIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1lZGlhdGVrXSA9ICJMSUNFTkNFLm1lZGlhdGVrIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1veGFdID0gIkxJQ0VOQ0UubW94YSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZV0gPSAiTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1uZXRyb25vbWVdID0gIkxJQ0VOQ0UuTmV0cm9ub21lIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW52aWRpYV0gPSAiTElDRU5DRS5udmlkaWEiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtT0xQQ10gPSAiTElDRU5DRS5PTFBDIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcjhhNzc5eF91c2IzXSA9ICJMSUNFTkNFLnI4YTc3OXhfdXNiMyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWRlb25dID0gIkxJQ0VOU0UucmFkZW9uIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWxpbmstZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rLWZpcm13YXJlLnR4dCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXNpYW5vXSA9ICJMSUNFTkNFLnNpYW5vIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlXSA9ICJMSUNFTlNFLnNkbWFfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZV0gPSAiTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10aS1jb25uZWN0aXZpdHldID0gIkxJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWtleXN0b25lXSA9ICJMSUNFTkNFLnRpLWtleXN0b25lIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlXSA9ICJMSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXZpYV92dDY2NTZdID0gIkxJQ0VOQ0UudmlhX3Z0NjY1NiIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS13bDEyNTFdID0gIkxJQ0VOQ0Uud2wxMjUxIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNDAwMF0gPSAiTElDRU5DRS54YzQwMDAiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM1MDAwXSA9ICJMSUNFTkNFLnhjNTAwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCi1OT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCi0KLVBFID0gIjEiCi0KLVNSQ1JFViA9ICIwN2I5MjViNDUwYmZiNGNmM2UxNDFjNjEyZWM1YjEwNDY1OGNkMDIwIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCi0KLVVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWRvX2NvbXBpbGUoKSB7Ci0JOgotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLwotCWNwIC1yICogJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCi0KLQkjIEF2b2lkIE1ha2VmaWxlIHRvIGJlIGRlcGxveWVkCi0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTWFrZWZpbGUKLQotCSMgUmVtb3ZlIHVuYnVpbGQgZmlybXdhcmUgd2hpY2ggbmVlZHMgY21ha2UgYW5kIGJhc2gKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jYXJsOTE3MGZ3IC1yZgotCi0JIyBSZW1vdmUgcG9pbnRsZXNzIGJhc2ggc2NyaXB0Ci0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY29uZmlndXJlCi0KLQkjIFJlbW92ZSBweXRob24gc2NyaXB0IHVzZWQgdG8gY2hlY2sgdGhlIFdIRU5DRSBmaWxlCi0Jcm0gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2hlY2tfd2hlbmNlLnB5Ci0KLQkjIExpYmVydGFzIHNkODY4NgotCWxuIC1zZiBsaWJlcnRhcy9zZDg2ODZfdjkuYmluICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4Ni5iaW4KLQlsbiAtc2YgbGliZXJ0YXMvc2Q4Njg2X3Y5X2hlbHBlci5iaW4gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2X2hlbHBlci5iaW4KLQotCSMgZml4dXAgd2wxMnh4IGxvY2F0aW9uLCBhZnRlciAyLjYuMzcgdGhlIGtlcm5lbCBzZWFyY2hlcyBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgaXQKLQkoIGNkICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIDsgbG4gLXNmIHRpLWNvbm5lY3Rpdml0eS8qIC4gKQotfQotCi0KLVBBQ0tBR0VTID0rICIke1BOfS1yYWxpbmstbGljZW5zZSAke1BOfS1yYWxpbmsgXAotICAgICAgICAgICAgICR7UE59LW10NzYwMXUtbGljZW5zZSAke1BOfS1tdDc2MDF1IFwKLSAgICAgICAgICAgICAke1BOfS1yYWRlb24tbGljZW5zZSAke1BOfS1yYWRlb24gXAotICAgICAgICAgICAgICR7UE59LW1hcnZlbGwtbGljZW5zZSAke1BOfS1wY2llODg5NyAke1BOfS1wY2llODk5NyBcCi0gICAgICAgICAgICAgJHtQTn0tc2Q4Njg2ICR7UE59LXNkODY4OCAke1BOfS1zZDg3ODcgJHtQTn0tc2Q4Nzk3ICR7UE59LXNkODgwMSAke1BOfS1zZDg4ODcgJHtQTn0tc2Q4ODk3IFwKLSAgICAgICAgICAgICAke1BOfS11c2I4OTk3IFwKLSAgICAgICAgICAgICAke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiAke1BOfS13bDEyeHggJHtQTn0td2wxOHh4IFwKLSAgICAgICAgICAgICAke1BOfS12dDY2NTYtbGljZW5zZSAke1BOfS12dDY2NTYgXAotICAgICAgICAgICAgICR7UE59LXJ0bC1saWNlbnNlICR7UE59LXJ0bDgxODggJHtQTn0tcnRsODE5MmN1ICR7UE59LXJ0bDgxOTJjZSAke1BOfS1ydGw4MTkyc3UgJHtQTn0tcnRsODcyMyAke1BOfS1ydGw4ODIxIFwKLSAgICAgICAgICAgICAke1BOfS1ydGw4MTY4IFwKLSAgICAgICAgICAgICAke1BOfS1jeXByZXNzLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWJyb2FkY29tLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWJjbS0wYmI0LTAzMDYgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMTQzIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzIzNmIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjUgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjQyYSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyOSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyOS1mdWxsbWFjIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzMwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM0IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM0MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzNSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzNjIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzkgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzQzMGEwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzQ1NSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1MGMyIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU0IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU2IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU2LXBjaWUgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTY5IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU3MCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1OCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM2MDIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNjZiIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzY2YyBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM3MSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM3MyBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDN4eCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDN4eC1oZHIgXAotICAgICAgICAgICAgICR7UE59LWF0aGVyb3MtbGljZW5zZSAke1BOfS1hcjkxNzAgJHtQTn0tYXRoNmsgJHtQTn0tYXRoOWsgXAotICAgICAgICAgICAgICR7UE59LWdwbHYyLWxpY2Vuc2UgJHtQTn0tY2FybDkxNzAgXAotICAgICAgICAgICAgICR7UE59LWFyM2stbGljZW5zZSAke1BOfS1hcjNrICR7UE59LWF0aDEway1saWNlbnNlICR7UE59LWF0aDEwayAke1BOfS1xY2EgXAotICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAke1BOfS1pbXgtc2RtYS1saWNlbnNlICR7UE59LWlteC1zZG1hLWlteDZxICR7UE59LWlteC1zZG1hLWlteDdkIFwKLSAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1saWNlbnNlICR7UE59LWl3bHdpZmkgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMTM1LTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC03ICR7UE59LWl3bHdpZmktMzE2MC04ICR7UE59LWl3bHdpZmktMzE2MC05IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTAgJHtQTn0taXdsd2lmaS0zMTYwLTEyICR7UE59LWl3bHdpZmktMzE2MC0xMyBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTE2ICR7UE59LWl3bHdpZmktMzE2MC0xNyBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwLTQgJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjAwMGcyYi01ICR7UE59LWl3bHdpZmktNjAwMGcyYi02IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwNTAtNCAke1BOfS1pd2x3aWZpLTYwNTAtNSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MDAwYyAke1BOfS1pd2x3aWZpLTgyNjUgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktOTAwMCBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKLSAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAotICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCi0gICAgICAgICAgICAgJHtQTn0taWJ0LTE3IFwKLSAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCi0gICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCi0gICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKLSAgICAgICAgICAgICAke1BOfS1saXF1aWRpbyBcCi0gICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKLSAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAotICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCi0gICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAotICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAotICAgICAgICAgICAgICIKLQotIyBGb3IgYXRoZXJvcwotTElDRU5TRV8ke1BOfS1hcjkxNzAgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoNmsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoOWsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIkZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWF0aGVyb3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKLUZJTEVTXyR7UE59LWFyOTE3MCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTE3MCouZncgXAotIgotRklMRVNfJHtQTn0tYXRoNmsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg2ayBcCi0iCi1GSUxFU18ke1BOfS1hdGg5ayA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTI3MS5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI3MDEwKi5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzkyNzEuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2h0Y183MDEwLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg5a19odGMvaHRjXzcwMTAtMS40LjAuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfOTI3MS0xLjQuMC5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWFyOTE3MCArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoNmsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWF0aDlrICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCi0KLSMgRm9yIGNhcmw5MTcwCi1MSUNFTlNFXyR7UE59LWNhcmw5MTcwID0gIkZpcm13YXJlLUdQTHYyIgotTElDRU5TRV8ke1BOfS1ncGx2Mi1saWNlbnNlID0gIkZpcm13YXJlLUdQTHYyIgotCi1GSUxFU18ke1BOfS1ncGx2Mi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvR1BMLTIiCi1GSUxFU18ke1BOfS1jYXJsOTE3MCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwKi5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWNhcmw5MTcwICs9ICIke1BOfS1ncGx2Mi1saWNlbnNlIgotCi0jIEZvciBRdWFsQ29tbUF0aG9zCi1MSUNFTlNFXyR7UE59LWFyM2sgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgotTElDRU5TRV8ke1BOfS1hcjNrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgotTElDRU5TRV8ke1BOfS1hdGgxMGsgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi1MSUNFTlNFXyR7UE59LWF0aDEway1saWNlbnNlID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIgotTElDRU5TRV8ke1BOfS1xY2EgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi0KLUZJTEVTXyR7UE59LWFyM2stbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCi1GSUxFU18ke1BOfS1hcjNrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXIzayBcCi0iCi0KLUZJTEVTXyR7UE59LWF0aDEway1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrIgotRklMRVNfJHtQTn0tYXRoMTBrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoMTBrIFwKLSIKLQotRklMRVNfJHtQTn0tcWNhID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNhIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tYXIzayArPSAiJHtQTn0tYXIzay1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoMTBrICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjYSArPSAiJHtQTn0tYXRoMTBrLWxpY2Vuc2UiCi0KLSMgRm9yIHJhbGluawotTElDRU5TRV8ke1BOfS1yYWxpbmsgPSAiRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIgotTElDRU5TRV8ke1BOfS1yYWxpbmstbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LXJhbGluay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgotRklMRVNfJHtQTn0tcmFsaW5rID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnQqLmJpbiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXJhbGluayArPSAiJHtQTn0tcmFsaW5rLWxpY2Vuc2UiCi0KLSMgRm9yIG1lZGlhdGVrIE1UNzYwMVUKLUxJQ0VOU0VfJHtQTn0tbXQ3NjAxdSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tbXQ3NjAxdS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotRklMRVNfJHtQTn0tbXQ3NjAxdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL210NzYwMXUuYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tbXQ3NjAxdSArPSAiJHtQTn0tbXQ3NjAxdS1saWNlbnNlIgotCi0jIEZvciByYWRlb24KLUxJQ0VOU0VfJHtQTn0tcmFkZW9uID0gIkZpcm13YXJlLXJhZGVvbiIKLUxJQ0VOU0VfJHtQTn0tcmFkZW9uLWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFkZW9uIgotCi1GSUxFU18ke1BOfS1yYWRlb24tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucmFkZW9uIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcmFkZW9uIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcmFkZW9uICs9ICIke1BOfS1yYWRlb24tbGljZW5zZSIKLQotIyBGb3IgbWFydmVsbAotTElDRU5TRV8ke1BOfS1wY2llODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1wY2llODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg2ODYgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4Njg4ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODc4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg3OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4ODAxID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODg4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg4OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tdXNiODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKLQotRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgotRklMRVNfJHtQTn0tcGNpZTg4OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4ODk3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tcGNpZTg5OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4OTk3X3dsYW5fdjQuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWV1YXJ0ODk5N19jb21ib192NC5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVzYjg5OTdfY29tYm9fdjQuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODY4NiA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpYmVydGFzL3NkODY4Nl92OSogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4NiogXAotIgotRklMRVNfJHtQTn0tc2Q4Njg4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg4KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg2ODgqIFwKLSIKLUZJTEVTXyR7UE59LXNkODc4NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4Nzg3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4Nzk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg4MDEgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODgwMV91YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODg4NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODg3X3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4ODk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS11c2I4OTk3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC91c2J1c2I4OTk3X2NvbWJvX3Y0LmJpbiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXNkODY4NiArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4Njg4ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg3ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODc5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4ODAxICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg4ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODg5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tdXNiODk5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotCi0jIEZvciBuZXRyb25vbWUKLUxJQ0VOU0VfJHtQTn0tbmV0cm9ub21lID0gIkZpcm13YXJlLW5ldHJvbm9tZSIKLQotRklMRVNfJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk5ldHJvbm9tZSBcCi0iCi1GSUxFU18ke1BOfS1uZXRyb25vbWUgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDgxKi5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk2Ki5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk3Ki5uZmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk5Ki5uZmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tbmV0cm9ub21lICs9ICIke1BOfS1uZXRyb25vbWUtbGljZW5zZSIKLQotIyBGb3IgcnRsCi1MSUNFTlNFXyR7UE59LXJ0bDgxODggPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE5MmN1ID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxOTJjZSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4MTkyc3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODcyMyA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4ODIxID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bC1saWNlbnNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxNjggPSAiV0hFTkNFIgotCi1GSUxFU18ke1BOfS1ydGwtbGljZW5zZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQgXAotIgotRklMRVNfJHtQTn0tcnRsODE4OCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE4OCouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJjdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmN1ZncqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTkyY2UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDgxOTJjZncqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTkyc3UgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MTJ1LmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4NzIzID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4NzIzKi5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODgyMSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODgyMSouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxNjggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGxfbmljL3J0bDgxNjgqLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcnRsODE4OCArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTkyY2UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODE5MmN1ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxOTJzdSA9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDg3MjMgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODgyMSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTY4ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKLQotIyBGb3IgdGktY29ubmVjdGl2aXR5Ci1MSUNFTlNFXyR7UE59LXdsY29tbW9uID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0td2wxMnh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0td2wxOHh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKLUxJQ0VOU0VfJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotCi1GSUxFU18ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgotRklMRVNfJHtQTn0td2xjb21tb24gPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9USSogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS9USSogXAotIgotRklMRVNfJHtQTn0td2wxMnh4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvd2wxMiogXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyKiBcCi0iCi1GSUxFU18ke1BOfS13bDE4eHggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS93bDE4KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTgqIFwKLSIKLQotUkRFUEVORFNfJHtQTn0td2wxMnh4ID0gIiR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uIgotUkRFUEVORFNfJHtQTn0td2wxOHh4ID0gIiR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uIgotCi0jIEZvciB2dDY2NTYKLUxJQ0VOU0VfJHtQTn0tdnQ2NjU2ID0gIkZpcm13YXJlLXZpYV92dDY2NTYiCi1MSUNFTlNFXyR7UE59LXZ0NjY1Ni1saWNlbnNlID0gIkZpcm13YXJlLXZpYV92dDY2NTYiCi0KLUZJTEVTXyR7UE59LXZ0NjY1Ni1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS52aWFfdnQ2NjU2IgotRklMRVNfJHtQTn0tdnQ2NjU2ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdm50d3VzYi5mdyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXZ0NjY1NiA9ICIke1BOfS12dDY2NTYtbGljZW5zZSIKLQotIyBGb3IgYnJvYWRjb20KLQotIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvIC1lICIgICAgICAgICAgICAgXCR7UE59LSRwa2cgXFwiOyBkb25lICB8IHNvcnQgLXUKLQotTElDRU5TRV8ke1BOfS1icm9hZGNvbS1saWNlbnNlID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1GSUxFU18ke1BOfS1icm9hZGNvbS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5icm9hZGNvbV9iY200M3h4IgotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gIiRpIC0gJHBrZyI7IGVjaG8gLWUgIkZJTEVTX1wke1BOfS0kcGtnID0gXCJcJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLyRpXCIiOyBkb25lIHwgZ3JlcCBeRklMRVMKLQotRklMRVNfJHtQTn0tYmNtNDN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eC0wLmZ3IgotRklMRVNfJHtQTn0tYmNtNDN4eC1oZHIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzeHhfaGRyLTAuZnciCi1GSUxFU18ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzMjktZnVsbG1hYy00LmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjM2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzIzNmIuYmluIgotRklMRVNfJHtQTn0tYmNtNDMyOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI5LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzMwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzMzQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMzUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMzkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzOS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiMC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiNC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQxYjUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDFiNS1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzMjQyYSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MmEuYmluIgotRklMRVNfJHtQTn0tYmNtNDMxNDMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMxNDMuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMxNDMtc2Rpby5iaW4gXAotIgotRklMRVNfJHtQTn0tYmNtNDM0MzBhMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQzMGEwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNDU1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDU1LXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNTBjMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzUwYzItcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzUwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTAtcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtc2Rpby5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU2OSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2OS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzU3MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU3MC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1OC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNjAyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjAyLXBjaWUuYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5hcC5iaW4gXAotIgotRklMRVNfJHtQTn0tYmNtNDM2NmIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2NmItcGNpZS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzY2YyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yy1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNzEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3MS1wY2llLmJpbiIKLQotIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvIC1lICJMSUNFTlNFX1wke1BOfS0kcGtnID0gXCJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XCJcblJERVBFTkRTX1wke1BOfS0kcGtnICs9IFwiXCR7UE59LWJyb2FkY29tLWxpY2Vuc2VcIiI7IGRvbmUKLSMgQ3VycmVudGx5IDFzdCBvbmUgYW5kIGxhc3QgNiBoYXZlIGN5cHJlc3MgTElDRU5TRQotCi1MSUNFTlNFXyR7UE59LWJjbTQzeHggPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzeHggKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzeHgtaGRyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200M3h4LWhkciArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMyOS1mdWxsbWFjID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI5LWZ1bGxtYWMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjM2YiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMyMzZiICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzMwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzMwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM0ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM0ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzM5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWIwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWIwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWI0ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWI0ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MWI1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzI0MWI1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI0MmEgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQyYSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMxNDMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMTQzICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQzMGEwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzQzMGEwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQ1NSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM0NTUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTBjMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1MGMyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzUwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzUwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU2ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2OSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1NjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTcwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU3MCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1OCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM1OCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM2MDIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNjAyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzY2YiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM2NmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNjZjID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzY2YyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM3MSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM3MSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLQotIyBGb3IgYnJvYWRjb20gY3lwcmVzcwotCi1MSUNFTlNFXyR7UE59LWN5cHJlc3MtbGljZW5zZSA9ICJGaXJtd2FyZS1jeXByZXNzIgotRklMRVNfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5jeXByZXNzIgotCi1GSUxFU18ke1BOfS1iY20tMGJiNC0wMzA2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ00tMGJiNC0wMzA2LmhjZCIKLUZJTEVTXyR7UE59LWJjbTQzMzQwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzQwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzMzYyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzYyLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNDMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwLXNkaW8uKiIKLUZJTEVTXyR7UE59LWJjbTQzNTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NC1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTYtcGNpZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2LXBjaWUuKiIKLUZJTEVTXyR7UE59LWJjbTQzNzMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My1zZGlvLmJpbiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzMuYmluIFwKLSIKLQotTElDRU5TRV8ke1BOfS1iY20tMGJiNC0wMzA2ID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY20tMGJiNC0wMzA2ICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzQwID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzM0MCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzM2MiA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDMzNjIgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM0MzAgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNDMwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTQgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTQgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1Ni1wY2llID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzU2LXBjaWUgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM3MyA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM3MyArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotCi0jIEZvciBCcm9hZGNvbSBibngyLW1pcHMKLSMKLSMgd2hpY2ggaXMgYSBzZXBhcmF0ZSBjYXNlIHRvIHRoZSBvdGhlciBCcm9hZGNvbSBmaXJtd2FyZXMgc2luY2UgaXRzCi0jIGxpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBzaGFyZWQgV0hFTkNFIGZpbGUuCi0KLUxJQ0VOU0VfJHtQTn0tYm54Mi1taXBzID0gIldIRU5DRSIKLUxJQ0VOU0VfJHtQTn0td2hlbmNlLWxpY2Vuc2UgPSAiV0hFTkNFIgotCi1GSUxFU18ke1BOfS1ibngyLW1pcHMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ibngyL2JueDItbWlwcy0wOS02LjIuMWIuZnciCi1GSUxFU18ke1BOfS13aGVuY2UtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL1dIRU5DRSIKLQotUkRFUEVORFNfJHtQTn0tYm54Mi1taXBzICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKLQotIyBGb3IgaW14LXNkbWEKLUxJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14NnEgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlteC1zZG1hLWlteDdkICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1saWNlbnNlICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lteC9zZG1hL3NkbWEtaW14NnEuYmluIgotCi1SUFJPVklERVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi1SUkVQTEFDRVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi1SQ09ORkxJQ1RTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1pbXg3ZCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lteC9zZG1hL3NkbWEtaW14N2QuYmluIgotCi1GSUxFU18ke1BOfS1pbXgtc2RtYS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5zZG1hX2Zpcm13YXJlIgotCi1SREVQRU5EU18ke1BOfS1pbXgtc2RtYS1pbXg2cSArPSAiJHtQTn0taW14LXNkbWEtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDdkICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgotCi0jIEZvciBpd2x3aWZpCi1MSUNFTlNFXyR7UE59LWl3bHdpZmkgICAgICAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWl3bHdpZmktbGljZW5zZSAgID0gIkZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUiCi0KLQotRklMRVNfJHtQTn0taXdsd2lmaS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgotRklMRVNfJHtQTn0taXdsd2lmaS0xMzUtNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMTM1LTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC03LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC05ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTkudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTAudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTIudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTMudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtMTcudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDAtNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMC00LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNS51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJhLTYudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmItNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTQudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwNTAtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjA1MC01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS03MjYwICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjAtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNzI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1LSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjVELSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgwMDBDLSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTgyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODI2NS0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS05MDAwICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTkwMDAtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktbWlzYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0qLnVjb2RlIgotCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTEzNS02ICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtNyAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtOCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtOSAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTIgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTMgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTYgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTMxNjAtMTcgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDAtNCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwNTAtNCAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTYwNTAtNSAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjAgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjUgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICIke1BOfS1pd2x3aWZpLWxpY2Vuc2UiCi0KLSMgLWl3bHdpZmktbWlzYyBpcyBhICJjYXRjaCBhbGwiIHBhY2thZ2UgdGhhdCBpbmNsdWRlcyBhbGwgdGhlIGl3bHdpZmkKLSMgZmlybXdhcmVzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IGluY2x1ZGVkIGluIG90aGVyIC1pd2x3aWZpLSBwYWNrYWdlcy4KLSMgLWl3bHdpZmkgaXMgYSB2aXJ0dWFsIHBhY2thZ2UgdGhhdCBkZXBlbmRzIHVwb24gYWxsIGl3bHdpZmkgcGFja2FnZXMuCi0jIFRoZXNlIGFyZSBkaXN0aW5jdCBpbiBvcmRlciB0byBhbGxvdyB0aGUgLW1pc2MgZmlybXdhcmVzIHRvIGJlIGluc3RhbGxlZAotIyB3aXRob3V0IHB1bGxpbmcgaW4gZXZlcnkgb3RoZXIgaXdsd2lmaSBwYWNrYWdlLgotQUxMT1dfRU1QVFlfJHtQTn0taXdsd2lmaSA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0taXdsd2lmaS1taXNjID0gIjEiCi0KLSMgSGFuZGxlIHBhY2thZ2UgdXBkYXRpbmcgZm9yIHRoZSBuZXdseSBtZXJnZWQgaXdsd2lmaSBncm91cGluZ3MKLVJQUk9WSURFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi1SUkVQTEFDRVNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgotUkNPTkZMSUNUU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi0KLVJQUk9WSURFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi1SUkVQTEFDRVNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgotUkNPTkZMSUNUU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi0KLSMgRm9yIGlidAotTElDRU5TRV8ke1BOfS1pYnQtbGljZW5zZSA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC1ody0zNy03ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTggPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtMTEtNSAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC0xMi0xNiAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LTE3ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LW1pc2MgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgotRklMRVNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuNyouYnNlcSIKLUZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCi1GSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKLUZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCi1GSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCi1GSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgotCi1SREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC1ody0zNy44ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pYnQtMTItMTYgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC0xNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC1taXNjICAgID0gIiR7UE59LWlidC1saWNlbnNlIgotCi1BTExPV19FTVBUWV8ke1BOfS1pYnQ9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0taWJ0LW1pc2MgPSAiMSIKLQotTElDRU5TRV8ke1BOfS1pOTE1ICAgICAgID0gIkZpcm13YXJlLWk5MTUiCi1MSUNFTlNFXyR7UE59LWk5MTUtbGljZW5zZSA9ICJGaXJtd2FyZS1pOTE1IgotRklMRVNfJHtQTn0taTkxNS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5pOTE1IgotRklMRVNfJHtQTn0taTkxNSAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaTkxNSIKLVJERVBFTkRTXyR7UE59LWk5MTUgICAgICA9ICIke1BOfS1pOTE1LWxpY2Vuc2UiCi0KLUZJTEVTXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYWRzcF9zc3QiCi1MSUNFTlNFXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCi1MSUNFTlNFXyR7UE59LWFkc3Atc3N0LWxpY2Vuc2UgICAgPSAiRmlybXdhcmUtYWRzcF9zc3QiCi1GSUxFU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9kc3BfZncqIgotUkRFUEVORFNfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgID0gIiR7UE59LWFkc3Atc3N0LWxpY2Vuc2UiCi0KLSMgRm9yIFFBVAotTElDRU5TRV8ke1BOfS1xYXQgICAgICAgICA9ICJGaXJtd2FyZS1xYXQiCi1MSUNFTlNFXyR7UE59LXFhdC1saWNlbnNlID0gIkZpcm13YXJlLXFhdCIKLUZJTEVTXyR7UE59LXFhdC1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnFhdF9maXJtd2FyZSIKLUZJTEVTXyR7UE59LXFhdCAgICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xYXQqLmJpbiIKLVJERVBFTkRTXyR7UE59LXFhdCAgICAgICAgPSAiJHtQTn0tcWF0LWxpY2Vuc2UiCi0KLSMgRm9yIFFDT00gVlBVL0dQVQotTElDRU5TRV8ke1BOfS1xY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtcWNvbSIKLUZJTEVTXyR7UE59LXFjb20tbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5xY29tICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9OT1RJQ0UudHh0IgotRklMRVNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTEuOC8qIgotRklMRVNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTQuMi8qIgotRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTMwMF8qLmZ3ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYTMwMF8qLmZ3IgotRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTUzMCouKiIKLVJERVBFTkRTXyR7UE59LXFjb20tdmVudXMtMS44ID0gIiR7UE59LXFjb20tbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjb20tdmVudXMtNC4yID0gIiR7UE59LXFjb20tbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXFjb20tYWRyZW5vLWEzeHggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCi0KLUZJTEVTXyR7UE59LWxpcXVpZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGlxdWlkaW8iCi0KLSMgRm9yIG90aGVyIGZpcm13YXJlcwotIyBNYXliZSBzcGxpdCBvdXQgdG8gc2VwYXJhdGUgcGFja2FnZXMgd2hlbiBuZWVkZWQuCi1MSUNFTlNFXyR7UE59ID0gIlwKLSAgICBGaXJtd2FyZS1BYmlsaXMgXAotICAgICYgRmlybXdhcmUtYWdlcmUgXAotICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKLSAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCi0gICAgJiBGaXJtd2FyZS1hdG1lbCBcCi0gICAgJiBGaXJtd2FyZS1jYTAxMzIgXAotICAgICYgRmlybXdhcmUtY2F2aXVtIFwKLSAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtY3cxMjAwIFwKLSAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAotICAgICYgRmlybXdhcmUtZTEwMCBcCi0gICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAotICAgICYgRmlybXdhcmUtZ283MDA3IFwKLSAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaTI0MDBtIFwKLSAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pdDkxM3ggXAotICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAotICAgICYgRmlybXdhcmUta2F3ZXRoIFwKLSAgICAmIEZpcm13YXJlLW1veGEgXAotICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtbnZpZGlhIFwKLSAgICAmIEZpcm13YXJlLU9MUEMgXAotICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKLSAgICAmIEZpcm13YXJlLXBoYW5mdyBcCi0gICAgJiBGaXJtd2FyZS1xYXQgXAotICAgICYgRmlybXdhcmUtcWNvbSBcCi0gICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKLSAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAotICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKLSAgICAmIEZpcm13YXJlLXJhZGVvbiBcCi0gICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1zaWFubyBcCi0gICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCi0gICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCi0gICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS13bDEyNTEgXAotICAgICYgRmlybXdhcmUteGM0MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMCBcCi0gICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKLSAgICAmIFdIRU5DRSBcCi0iCi0KLUZJTEVTXyR7UE59LWxpY2Vuc2UgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU4qIgotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvKiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIE1ha2UgbGludXgtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgotIyBNYWtlIGxpbnV4LWZpcm13YXJlLWl3bHdpZmkgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGl3bHdpZmkgcGFja2FnZXMuCi0jIE1ha2UgbGludXgtZmlybXdhcmUtaWJ0IGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpYnQgcGFja2FnZXMuCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgZmlybXdhcmVfcGtncyA9IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlJywgJyAnICsgJyAnLmpvaW4oZmlybXdhcmVfcGtncykpCi0KLSAgICBpd2x3aWZpX3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWl3bHdpZmktJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCi0gICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWl3bHdpZmknLCAnICcgKyAnICcuam9pbihpd2x3aWZpX3BrZ3MpKQotCi0gICAgaWJ0X3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWlidC0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaWJ0JywgJyAnICsgJyAnLmpvaW4oaWJ0X3BrZ3MpKQotfQotCi0jIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJhbiBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQotIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCi1JTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMjAwMTIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMjAwMTIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNzM0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIKQEAgLTAsMCArMSw5MzYgQEAKK1NVTU1BUlkgPSAiRmlybXdhcmUgZmlsZXMgZm9yIHVzZSB3aXRoIExpbnV4IGtlcm5lbCIKK1NFQ1RJT04gPSAia2VybmVsIgorCitMSUNFTlNFID0gIlwKKyAgICBGaXJtd2FyZS1BYmlsaXMgXAorICAgICYgRmlybXdhcmUtYWRzcF9zc3QgXAorICAgICYgRmlybXdhcmUtYWdlcmUgXAorICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKKyAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCisgICAgJiBGaXJtd2FyZS1hbWxvZ2ljX3ZkZWMgXAorICAgICYgRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1hdG1lbCBcCisgICAgJiBGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IFwKKyAgICAmIEZpcm13YXJlLWNhMDEzMiBcCisgICAgJiBGaXJtd2FyZS1jYXZpdW0gXAorICAgICYgRmlybXdhcmUtY2hlbHNpb19maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1jdzEyMDAgXAorICAgICYgRmlybXdhcmUtY3lwcmVzcyBcCisgICAgJiBGaXJtd2FyZS1kaWIwNzAwIFwKKyAgICAmIEZpcm13YXJlLWUxMDAgXAorICAgICYgRmlybXdhcmUtZW5lX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWZ3X3NzdF8wZjI4IFwKKyAgICAmIEZpcm13YXJlLWdvNzAwNyBcCisgICAgJiBGaXJtd2FyZS1HUEx2MiBcCisgICAgJiBGaXJtd2FyZS1oZmkxX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWkyNDAwbSBcCisgICAgJiBGaXJtd2FyZS1pOTE1IFwKKyAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pdDkxM3ggXAorICAgICYgRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1JbnRjU1NUMiBcCisgICAgJiBGaXJtd2FyZS1rYXdldGggXAorICAgICYgRmlybXdhcmUtTWFydmVsbCBcCisgICAgJiBGaXJtd2FyZS1tb3hhIFwKKyAgICAmIEZpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLW5ldHJvbm9tZSBcCisgICAgJiBGaXJtd2FyZS1udmlkaWEgXAorICAgICYgRmlybXdhcmUtT0xQQyBcCisgICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAorICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKKyAgICAmIEZpcm13YXJlLXFhdCBcCisgICAgJiBGaXJtd2FyZS1xY29tIFwKKyAgICAmIEZpcm13YXJlLXFsYTEyODAgXAorICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCisgICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2sgXAorICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsgXAorICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKKyAgICAmIEZpcm13YXJlLXJhZGVvbiBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXNpYW5vIFwKKyAgICAmIEZpcm13YXJlLXRkYTc3MDYtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IFwKKyAgICAmIEZpcm13YXJlLXRpLWtleXN0b25lIFwKKyAgICAmIEZpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXZpYV92dDY2NTYgXAorICAgICYgRmlybXdhcmUtd2wxMjUxIFwKKyAgICAmIEZpcm13YXJlLXhjNDAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDAgXAorICAgICYgRmlybXdhcmUteGM1MDAwYyBcCisgICAgJiBXSEVOQ0UgXAorIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFLkFiaWxpczttZDU9YjVlZTNmNDEwNzgwZTU2NzExYWQ0OGVhZGMyMmI4YmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hZHNwX3NzdDttZDU9NjE1YzQ1YjkxYTVhNGE5ZmUwNDZkNmFiOWEyZGY3MjggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hZ2VyZTttZDU9YWYwMTMzZGU2YjRhOWIyNTIyZGVmZDVmMTg4YWZkMzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWRncHU7bWQ1PWQzNTc1MjRmNTA5OWUyYTNkYjNjMTgzODkyMWM1OTNmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1kLXVjb2RlO21kNT0zYzUzOTlkYzkxNDhkN2YwZTFmNDFlMzRiNjljZjE0ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtbG9naWNfdmRlYzttZDU9ZGM0NGY1OWJmNjRhODE2NDNlNTAwYWQzZjM5YTQ2OGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlO21kNT0zMGExNGM3ODIzYmVlZGFjOWZhMzljNjRmZGQwMWExMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmF0bWVsO21kNT1hYTc0YWMwYzYwNTk1ZGVlNGQ0ZTIzOTEwN2VhNzdhMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHg7bWQ1PTMxNjBjMTRkZjcyMjg4OTFiODY4MDYwZTE5NTFkZmJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2EwMTMyO21kNT0yMDliMzNlNjZlZTViZTA0NjFmMTNkMzFkYTM5MjE5OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhZGVuY2U7bWQ1PTAwOWY0NjgxNmY2OTU2Y2ZiNzVlZGUxM2QzZTFjZWUwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2F2aXVtO21kNT1jMzdhYWZmYjFlYmU1OTM5YjI1ODBkMDczYTk1ZGFlYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNoZWxzaW9fZmlybXdhcmU7bWQ1PTgxOWFhOGMzZmE0NTNmMWIyNThlZDhkMTY4YTlkOTAzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3cxMjAwO21kNT1mMGY3NzA4NjRlN2E4NDQ0YTVjNWFhOWQxMmEzYTdlZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmN5cHJlc3M7bWQ1PTQ4Y2Q5NDM2Yzc2M2JmODczOTYxZjllZDdiNWMxNDdiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuZGliMDcwMDttZDU9Zjc0MTE4MjVjOGE1NTVhMWEzZTVlYWI5Y2E3NzM0MzEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5lMTAwO21kNT1lYzBmODQxMzY3NjZkZjE1OWEzYWU2ZDAyYWNkZjVhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmVuZV9maXJtd2FyZTttZDU9ZWQ2N2YwZjYyZjhmNzk4MTMwYzI5NjcyMGI3ZDM5MjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5md19zc3RfMGYyODttZDU9NjM1MzkzMWM5ODhhZDUyODE4YWU3MzNhYzYxY2QyOTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5nbzcwMDc7bWQ1PWMwYmI5ZjZhYWFiYTU1YjA1MjllZTliMzBhYTY2YmViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTC0yO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmhmaTFfZmlybXdhcmU7bWQ1PTVlN2I2ZTU4NmNlNzMzOWQxMjY4OWU0OTkzMWFkNDQ0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaTI0MDBtO21kNT0xNGI5MDE5NjllMjNjNDE4ODEzMjdjMGQ5ZTRiN2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmk5MTU7bWQ1PTJiMGIyZTBkMjA5ODRhZmZkNDQ5MGJhMmNiYTAyNTcwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlO21kNT1mZGJlZTFkZGZlMGZiN2FiMGIyZmNkNmI0NTRhMzY2YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmljZTttZDU9NzQyYWI0ODUwZjI2NzA3OTI5NDBlNmQxNWM5NzRiMmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5JbnRjU1NUMjttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pdDkxM3g7bWQ1PTFmYmY3MjdiZmI2YTk0OTgxMGM0ZGJmYTdlNmNlNGY4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZTttZDU9M2ZkODQyOTExZWE5M2MyOWNkMzI2NzlhYTIzZTFjODggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5rYXdldGg7bWQ1PWIxZDg3NmU1NjJmNGIzYjhkMzkxYWQ4Mzk1ZGZlMDNmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9MjhiNmVkOGJkMDRiYTEwNWFmNmU0ZGNkNmU5OTc3NzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tZWRpYXRlazttZDU9N2MxOTc2YjYzMjE3ZDc2Y2U0N2QwYTExZDhhNzljZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlO21kNT00MmUzMmZiODlmNmI5NTljYTIyMmUyNWFjOGRmOGZlZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTlhQO21kNT01OGJiOGJhNjMyY2Q3MjliOWJhNjE4M2JjNmFlZDM2ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk9MUEM7bWQ1PTViOTE3ZjlkOGMwNjE5OTFiZTRmNmY1ZjEwODcxOWNkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uub3Blbi1hdGg5ay1odGMtZmlybXdhcmU7bWQ1PTFiMzNjOWY0ZDE3YmM0ZDQ1N2JkYjIzNzI3MDQ2ODM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucGhhbmZ3O21kNT05NTRkY2VjMGUwNTFmOTQwOTgxMmI1NjFlYTc0M2JmYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFhdF9maXJtd2FyZTttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5xY29tO21kNT0xNjRlMzM2MmE1MzhlYjExZDNhYzUxZThlMTM0Mjk0YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnFsYTEyODA7bWQ1PWQ2ODk1NzMyZTYyMmQ5NTA2MDkwOTMyMjNhMmM0ZjVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMnh4eDttZDU9NTA1ODU1ZTkyMWI3NWYxYmU0YTQzN2FkOWI3OWRmZjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzazttZDU9YjVmZTI0NGZiMmI1MzIzMTFkZTE0NzJhM2JjMDZkYTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrO21kNT1jYjQyYjY4NmVlNWY1Y2I4OTAyNzVlNDMyMWRiNjBhOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnI4YTc3OXhfdXNiMzttZDU9NGMxNjcxNjU2MTUzMDI1ZDcwNzYxMDVhNWRhN2U0OTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5yYWRlb247bWQ1PTY4ZWMyOGJhY2IzNjEzMjAwYmNhNDRmNDA0YzY5YjE2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZTttZDU9NzI4ZjFhODVmZDUzZmQ2N2ZhOGQ3YWZiMDgwYmM0MzUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0O21kNT1hYjJjMjY5Mjc3YzQ1NDc2ZmI0NDk2NzM5MTFhMmRmZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0O21kNT0wMGQwNmNmZDNlZGRkNWEyNjk4OTQ4ZWFkMmFkNTRhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnNkbWFfZmlybXdhcmU7bWQ1PTUxZThjMTllY2MyMjcwZjRiOGVhMzAzNDFhZDYzY2U5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uuc2lhbm87bWQ1PTQ1NTZjMWJmODMwMDY3ZjEyY2ExNTFhZDk1M2VjMmE1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGRhNzcwNi1maXJtd2FyZS50eHQ7bWQ1PTgzNTk5N2NmNWUzYzEzMWQwZGRkZDY5NWM3ZDkxMDNlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5O21kNT1jNWUwMmJlNjMzZjE0OTljMTA5ZDE2NTI1MTRkODVlYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnRpLWtleXN0b25lO21kNT0zYTg2MzM1ZDMyODY0YjBiZWY5OTZiZWUyNmNjMGYyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlO21kNT00ZWQ3ZWE2YjUwN2NjYzU4M2I5ZDU5NDQxNzcxNDExOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnZpYV92dDY2NTY7bWQ1PWU0MTU5Njk0Y2JhNDJkNDM3N2E5MTJlNzhhNmU4NTBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0Uud2wxMjUxO21kNT1hZDNmODE5MjJiYjllMTk3MDE0YmIxODcyODlkM2I1YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNDAwMDttZDU9MGZmNTFkMmRjNDlmY2UwNDgxNGM5MTU1MDgxMDkyZjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM1MDAwYzttZDU9MTJiMDJlZmEzMDQ5ZGI2NWQ1MjRhZWI0MThkZDg3Y2EgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vV0hFTkNFO21kNT1jMjdkMGMwNmNkNWQzNzZkOGFiNTU4NjBlNjViYTRlNCBcCisgICAgICAgICAgICAgICAgICAgICIKKworIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQorIyBzbyB0aGF0IHRoZSBsaWNlbnNlIGZpbGVzIHdpbGwgYmUgY29waWVkIGZyb20gZmV0Y2hlZCBzb3VyY2UKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1BYmlsaXNdID0gIkxJQ0VOQ0UuQWJpbGlzIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFkc3Bfc3N0XSA9ICJMSUNFTkNFLmFkc3Bfc3N0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFnZXJlXSA9ICJMSUNFTkNFLmFnZXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtZGdwdV0gPSAiTElDRU5TRS5hbWRncHUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kLXVjb2RlXSA9ICJMSUNFTlNFLmFtZC11Y29kZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWxvZ2ljX3ZkZWNdID0gIkxJQ0VOU0UuYW1sb2dpY192ZGVjIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aGVyb3NfZmlybXdhcmVdID0gIkxJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hdG1lbF0gPSAiTElDRU5TRS5hdG1lbCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4XSA9ICJMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2EwMTMyXSA9ICJMSUNFTkNFLmNhMDEzMiIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYWRlbmNlXSA9ICJMSUNFTkNFLmNhZGVuY2UiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2F2aXVtXSA9ICJMSUNFTkNFLmNhdml1bSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlXSA9ICJMSUNFTkNFLmNoZWxzaW9fZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3cxMjAwXSA9ICJMSUNFTkNFLmN3MTIwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jeXByZXNzXSA9ICJMSUNFTkNFLmN5cHJlc3MiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZGliMDcwMF0gPSAiTElDRU5TRS5kaWIwNzAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWUxMDBdID0gIkxJQ0VOQ0UuZTEwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1lbmVfZmlybXdhcmVdID0gIkxJQ0VOQ0UuZW5lX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWZ3X3NzdF8wZjI4XSA9ICJMSUNFTkNFLmZ3X3NzdF8wZjI4IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWdvNzAwN10gPSAiTElDRU5DRS5nbzcwMDciCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtR1BMdjJdID0gIkdQTC0yIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWhmaTFfZmlybXdhcmVdID0gIkxJQ0VOU0UuaGZpMV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pMjQwMG1dID0gIkxJQ0VOQ0UuaTI0MDBtIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWk5MTVdID0gIkxJQ0VOU0UuaTkxNSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pYnRfZmlybXdhcmVdID0gIkxJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUludGNTU1QyXSA9ICJMSUNFTkNFLkludGNTU1QyIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWl0OTEzeF0gPSAiTElDRU5DRS5pdDkxM3giCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZV0gPSAiTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWthd2V0aF0gPSAiTElDRU5DRS5rYXdldGgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtTWFydmVsbF0gPSAiTElDRU5DRS5NYXJ2ZWxsIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1lZGlhdGVrXSA9ICJMSUNFTkNFLm1lZGlhdGVrIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW1veGFdID0gIkxJQ0VOQ0UubW94YSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZV0gPSAiTElDRU5DRS5teXJpMTBnZV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1uZXRyb25vbWVdID0gIkxJQ0VOQ0UuTmV0cm9ub21lIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW52aWRpYV0gPSAiTElDRU5DRS5udmlkaWEiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtT0xQQ10gPSAiTElDRU5DRS5PTFBDIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0aDlrLWh0Y10gPSAiTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1waGFuZnddID0gIkxJQ0VOQ0UucGhhbmZ3IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFhdF0gPSAiTElDRU5DRS5xYXRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWNvbV0gPSAiTElDRU5TRS5xY29tIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTEyODBdID0gIkxJQ0VOQ0UucWxhMTI4MCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xbGEyeHh4XSA9ICJMSUNFTkNFLnFsYTJ4eHgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrXSA9ICJMSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcjhhNzc5eF91c2IzXSA9ICJMSUNFTkNFLnI4YTc3OXhfdXNiMyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWRlb25dID0gIkxJQ0VOU0UucmFkZW9uIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yYWxpbmstZmlybXdhcmVdID0gIkxJQ0VOQ0UucmFsaW5rLWZpcm13YXJlLnR4dCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLnJ0bHdpZmlfZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXNpYW5vXSA9ICJMSUNFTkNFLnNpYW5vIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlXSA9ICJMSUNFTlNFLnNkbWFfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZV0gPSAiTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10aS1jb25uZWN0aXZpdHldID0gIkxJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWtleXN0b25lXSA9ICJMSUNFTkNFLnRpLWtleXN0b25lIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlXSA9ICJMSUNFTkNFLnVlYWdsZS1hdG00LWZpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXZpYV92dDY2NTZdID0gIkxJQ0VOQ0UudmlhX3Z0NjY1NiIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS13bDEyNTFdID0gIkxJQ0VOQ0Uud2wxMjUxIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNDAwMF0gPSAiTElDRU5DRS54YzQwMDAiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM1MDAwXSA9ICJMSUNFTkNFLnhjNTAwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCitOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9rZXJuZWwvZmlybXdhcmUvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImFjMjkxYjIxZjM2NmFlMmEzNzE5M2VjOGYxNGMzOWQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMGU4MTFiMzczNmE3MmI4NzRhYzI3ZTEwNjYyZjVlNTQwOWIxY2FkZjhhYWI3YmE4OGU4ZjhiYzgwODM5ODYiCisKK2luaGVyaXQgYWxsYXJjaAorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19jb21waWxlKCkgeworCToKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnRklSTVdBUkVESVI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZScgaW5zdGFsbAorICAgICAgICBjcCBHUEwtMiBMSUNFTltDU11FLiogV0hFTkNFICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLworfQorCisKK1BBQ0tBR0VTID0rICIke1BOfS1yYWxpbmstbGljZW5zZSAke1BOfS1yYWxpbmsgXAorICAgICAgICAgICAgICR7UE59LW10NzYwMXUtbGljZW5zZSAke1BOfS1tdDc2MDF1IFwKKyAgICAgICAgICAgICAke1BOfS1yYWRlb24tbGljZW5zZSAke1BOfS1yYWRlb24gXAorICAgICAgICAgICAgICR7UE59LW1hcnZlbGwtbGljZW5zZSAke1BOfS1wY2llODg5NyAke1BOfS1wY2llODk5NyBcCisgICAgICAgICAgICAgJHtQTn0tc2Q4Njg2ICR7UE59LXNkODY4OCAke1BOfS1zZDg3ODcgJHtQTn0tc2Q4Nzk3ICR7UE59LXNkODgwMSAke1BOfS1zZDg4ODcgJHtQTn0tc2Q4ODk3IFwKKyAgICAgICAgICAgICAke1BOfS11c2I4OTk3IFwKKyAgICAgICAgICAgICAke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiAke1BOfS13bDEyeHggJHtQTn0td2wxOHh4IFwKKyAgICAgICAgICAgICAke1BOfS12dDY2NTYtbGljZW5zZSAke1BOfS12dDY2NTYgXAorICAgICAgICAgICAgICR7UE59LXJ0bC1saWNlbnNlICR7UE59LXJ0bDgxODggJHtQTn0tcnRsODE5MmN1ICR7UE59LXJ0bDgxOTJjZSAke1BOfS1ydGw4MTkyc3UgJHtQTn0tcnRsODcyMyAke1BOfS1ydGw4ODIxIFwKKyAgICAgICAgICAgICAke1BOfS1ydGw4MTY4IFwKKyAgICAgICAgICAgICAke1BOfS1jeXByZXNzLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWJyb2FkY29tLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWJjbS0wYmI0LTAzMDYgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMTQzIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzIzNmIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQxYjUgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjQyYSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyOSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyOS1mdWxsbWFjIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzMwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM0IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM0MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzNSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzNjIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzkgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzQzMGEwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzQ1NSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1MGMyIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU0IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU2IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU2LXBjaWUgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTY5IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU3MCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1OCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM2MDIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNjZiIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzY2YyBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM3MSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM3MyBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDN4eCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDN4eC1oZHIgXAorICAgICAgICAgICAgICR7UE59LWF0aGVyb3MtbGljZW5zZSAke1BOfS1hcjkxNzAgJHtQTn0tYXRoNmsgJHtQTn0tYXRoOWsgXAorICAgICAgICAgICAgICR7UE59LWdwbHYyLWxpY2Vuc2UgJHtQTn0tY2FybDkxNzAgXAorICAgICAgICAgICAgICR7UE59LWFyM2stbGljZW5zZSAke1BOfS1hcjNrICR7UE59LWF0aDEway1saWNlbnNlICR7UE59LWF0aDEwayAke1BOfS1xY2EgXAorICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAke1BOfS1pbXgtc2RtYS1saWNlbnNlICR7UE59LWlteC1zZG1hLWlteDZxICR7UE59LWlteC1zZG1hLWlteDdkIFwKKyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1saWNlbnNlICR7UE59LWl3bHdpZmkgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMTM1LTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC03ICR7UE59LWl3bHdpZmktMzE2MC04ICR7UE59LWl3bHdpZmktMzE2MC05IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTAgJHtQTn0taXdsd2lmaS0zMTYwLTEyICR7UE59LWl3bHdpZmktMzE2MC0xMyBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTE2ICR7UE59LWl3bHdpZmktMzE2MC0xNyBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwLTQgJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjAwMGcyYi01ICR7UE59LWl3bHdpZmktNjAwMGcyYi02IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwNTAtNCAke1BOfS1pd2x3aWZpLTYwNTAtNSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MDAwYyAke1BOfS1pd2x3aWZpLTgyNjUgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktOTAwMCBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS1taXNjIFwKKyAgICAgICAgICAgICAke1BOfS1pYnQtbGljZW5zZSAke1BOfS1pYnQgJHtQTn0taWJ0LW1pc2MgXAorICAgICAgICAgICAgICR7UE59LWlidC0xMS01ICR7UE59LWlidC0xMi0xNiAke1BOfS1pYnQtaHctMzctNyAke1BOfS1pYnQtaHctMzctOCBcCisgICAgICAgICAgICAgJHtQTn0taWJ0LTE3IFwKKyAgICAgICAgICAgICAke1BOfS1pOTE1LWxpY2Vuc2UgJHtQTn0taTkxNSBcCisgICAgICAgICAgICAgJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAke1BOfS1hZHNwLXNzdCBcCisgICAgICAgICAgICAgJHtQTn0tYm54Mi1taXBzIFwKKyAgICAgICAgICAgICAke1BOfS1saXF1aWRpbyBcCisgICAgICAgICAgICAgJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgJHtQTn0tbmV0cm9ub21lIFwKKyAgICAgICAgICAgICAke1BOfS1xYXQgJHtQTn0tcWF0LWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LXFjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS12ZW51cy0xLjggJHtQTn0tcWNvbS12ZW51cy00LjIgXAorICAgICAgICAgICAgICR7UE59LXFjb20tYWRyZW5vLWEzeHggJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1zZG04NDUtYXVkaW8gJHtQTn0tcWNvbS1zZG04NDUtY29tcHV0ZSAke1BOfS1xY29tLXNkbTg0NS1tb2RlbSBcCisgICAgICAgICAgICAgJHtQTn0td2hlbmNlLWxpY2Vuc2UgXAorICAgICAgICAgICAgICR7UE59LWxpY2Vuc2UgXAorICAgICAgICAgICAgICIKKworIyBGb3IgYXRoZXJvcworTElDRU5TRV8ke1BOfS1hcjkxNzAgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoNmsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoOWsgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIkZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWF0aGVyb3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWFyOTE3MCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTE3MCouZncgXAorIgorRklMRVNfJHtQTn0tYXRoNmsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg2ayBcCisiCitGSUxFU18ke1BOfS1hdGg5ayA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2FyOTI3MS5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI3MDEwKi5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzkyNzEuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2h0Y183MDEwLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGg5a19odGMvaHRjXzcwMTAtMS40LjAuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfOTI3MS0xLjQuMC5mdyBcCisiCisKK1JERVBFTkRTXyR7UE59LWFyOTE3MCArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoNmsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWF0aDlrICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCisKKyMgRm9yIGNhcmw5MTcwCitMSUNFTlNFXyR7UE59LWNhcmw5MTcwID0gIkZpcm13YXJlLUdQTHYyIgorTElDRU5TRV8ke1BOfS1ncGx2Mi1saWNlbnNlID0gIkZpcm13YXJlLUdQTHYyIgorCitGSUxFU18ke1BOfS1ncGx2Mi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvR1BMLTIiCitGSUxFU18ke1BOfS1jYXJsOTE3MCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwKi5mdyBcCisiCisKK1JERVBFTkRTXyR7UE59LWNhcmw5MTcwICs9ICIke1BOfS1ncGx2Mi1saWNlbnNlIgorCisjIEZvciBRdWFsQ29tbUF0aG9zCitMSUNFTlNFXyR7UE59LWFyM2sgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgorTElDRU5TRV8ke1BOfS1hcjNrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIgorTElDRU5TRV8ke1BOfS1hdGgxMGsgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCitMSUNFTlNFXyR7UE59LWF0aDEway1saWNlbnNlID0gIkZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIgorTElDRU5TRV8ke1BOfS1xY2EgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCisKK0ZJTEVTXyR7UE59LWFyM2stbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCitGSUxFU18ke1BOfS1hcjNrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXIzayBcCisiCisKK0ZJTEVTXyR7UE59LWF0aDEway1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXRoMTBrIgorRklMRVNfJHtQTn0tYXRoMTBrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoMTBrIFwKKyIKKworRklMRVNfJHtQTn0tcWNhID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNhIFwKKyIKKworUkRFUEVORFNfJHtQTn0tYXIzayArPSAiJHtQTn0tYXIzay1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoMTBrICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjYSArPSAiJHtQTn0tYXRoMTBrLWxpY2Vuc2UiCisKKyMgRm9yIHJhbGluaworTElDRU5TRV8ke1BOfS1yYWxpbmsgPSAiRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIgorTElDRU5TRV8ke1BOfS1yYWxpbmstbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LXJhbGluay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgorRklMRVNfJHtQTn0tcmFsaW5rID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnQqLmJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59LXJhbGluayArPSAiJHtQTn0tcmFsaW5rLWxpY2Vuc2UiCisKKyMgRm9yIG1lZGlhdGVrIE1UNzYwMVUKK0xJQ0VOU0VfJHtQTn0tbXQ3NjAxdSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSIKKworRklMRVNfJHtQTn0tbXQ3NjAxdS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorRklMRVNfJHtQTn0tbXQ3NjAxdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL210NzYwMXUuYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tbXQ3NjAxdSArPSAiJHtQTn0tbXQ3NjAxdS1saWNlbnNlIgorCisjIEZvciByYWRlb24KK0xJQ0VOU0VfJHtQTn0tcmFkZW9uID0gIkZpcm13YXJlLXJhZGVvbiIKK0xJQ0VOU0VfJHtQTn0tcmFkZW9uLWxpY2Vuc2UgPSAiRmlybXdhcmUtcmFkZW9uIgorCitGSUxFU18ke1BOfS1yYWRlb24tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucmFkZW9uIgorRklMRVNfJHtQTn0tcmFkZW9uID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcmFkZW9uIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcmFkZW9uICs9ICIke1BOfS1yYWRlb24tbGljZW5zZSIKKworIyBGb3IgbWFydmVsbAorTElDRU5TRV8ke1BOfS1wY2llODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1wY2llODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg2ODYgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4Njg4ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODc4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg3OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4ODAxID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODg4NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg4OTcgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tdXNiODk5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiRmlybXdhcmUtTWFydmVsbCIKKworRklMRVNfJHtQTn0tbWFydmVsbC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5NYXJ2ZWxsIgorRklMRVNfJHtQTn0tcGNpZTg4OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4ODk3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tcGNpZTg5OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWU4OTk3X3dsYW5fdjQuYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3BjaWV1YXJ0ODk5N19jb21ib192NC5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVzYjg5OTdfY29tYm9fdjQuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODY4NiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpYmVydGFzL3NkODY4Nl92OSogXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3NkODY4NiogXAorIgorRklMRVNfJHtQTn0tc2Q4Njg4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg4KiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg2ODgqIFwKKyIKK0ZJTEVTXyR7UE59LXNkODc4NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4Nzg3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4Nzk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg4MDEgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODgwMV91YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODg4NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODg3X3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4ODk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS11c2I4OTk3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC91c2J1c2I4OTk3X2NvbWJvX3Y0LmJpbiBcCisiCisKK1JERVBFTkRTXyR7UE59LXNkODY4NiArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4Njg4ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg3ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODc5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4ODAxICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg4ODcgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODg5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tdXNiODk5NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorCisjIEZvciBuZXRyb25vbWUKK0xJQ0VOU0VfJHtQTn0tbmV0cm9ub21lID0gIkZpcm13YXJlLW5ldHJvbm9tZSIKKworRklMRVNfJHtQTn0tbmV0cm9ub21lLWxpY2Vuc2UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk5ldHJvbm9tZSBcCisiCitGSUxFU18ke1BOfS1uZXRyb25vbWUgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDgxKi5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk2Ki5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk3Ki5uZmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9uZXRyb25vbWUvbmljX0FNREEwMDk5Ki5uZmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tbmV0cm9ub21lICs9ICIke1BOfS1uZXRyb25vbWUtbGljZW5zZSIKKworIyBGb3IgcnRsCitMSUNFTlNFXyR7UE59LXJ0bDgxODggPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE5MmN1ID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxOTJjZSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4MTkyc3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODcyMyA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4ODIxID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bC1saWNlbnNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxNjggPSAiV0hFTkNFIgorCitGSUxFU18ke1BOfS1ydGwtbGljZW5zZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQgXAorIgorRklMRVNfJHtQTn0tcnRsODE4OCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE4OCouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJjdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmN1ZncqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4MTkyY2UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDgxOTJjZncqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4MTkyc3UgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MTJ1LmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4NzIzID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4NzIzKi5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODgyMSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODgyMSouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxNjggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGxfbmljL3J0bDgxNjgqLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcnRsODE4OCArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTkyY2UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODE5MmN1ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxOTJzdSA9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDg3MjMgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODgyMSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTY4ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKKworIyBGb3IgdGktY29ubmVjdGl2aXR5CitMSUNFTlNFXyR7UE59LXdsY29tbW9uID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0td2wxMnh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0td2wxOHh4ID0gIkZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSIKK0xJQ0VOU0VfJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorCitGSUxFU18ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudGktY29ubmVjdGl2aXR5IgorIyB3bDE4eHggb3B0aW9uYWxseSBuZWVkcyB3bDEyNzEtbnZzLmJpbiAod2hpY2ggaXRzZWxmIGlzIGEgc3ltbGluayB0bworIyB3bDEyN3gtbnZzLmJpbikgLSBzZWUgbGludXgvZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NkaW8uYworIyBhbmQgZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3NwaS5jLgorIyBXaGlsZSB0aGV5J3JlIG9wdGlvbmFsIGFuZCBhY3R1YWxseSBvbmx5IHVzZWQgdG8gb3ZlcnJpZGUgdGhlIE1BQworIyBhZGRyZXNzIG9uIHdsMTh4eCwgZHJpdmVyIGxvYWRpbmcgd2lsbCBkZWxheSAoYnkgdWRldiB0aW1vdXQgLSA2MHMpCisjIGlmIG5vdCB0aGVyZS4gU28gbGV0J3MgbWFrZSBpdCBhdmFpbGFibGUgYWx3YXlzLiBCZWNhdXNlIGl0J3MgYQorIyBzeW1saW5rLCBib3RoIG5lZWQgdG8gZ28gdG8gd2xjb21tb24uCitGSUxFU18ke1BOfS13bGNvbW1vbiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS9USSogXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyN3gtbnZzLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTI3MS1udnMuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXdsMTJ4eCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDEyKiBcCisiCitGSUxFU18ke1BOfS13bDE4eHggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxOCogXAorIgorCitSREVQRU5EU18ke1BOfS13bDEyeHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCitSREVQRU5EU18ke1BOfS13bDE4eHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCisKKyMgRm9yIHZ0NjY1NgorTElDRU5TRV8ke1BOfS12dDY2NTYgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKK0xJQ0VOU0VfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKKworRklMRVNfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnZpYV92dDY2NTYiCitGSUxFU18ke1BOfS12dDY2NTYgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS92bnR3dXNiLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tdnQ2NjU2ID0gIiR7UE59LXZ0NjY1Ni1saWNlbnNlIgorCisjIEZvciBicm9hZGNvbQorCisjIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIiAgICAgICAgICAgICBcJHtQTn0tJHBrZyBcXCI7IGRvbmUgIHwgc29ydCAtdQorCitMSUNFTlNFXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK0ZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAiJGkgLSAkcGtnIjsgZWNobyAtZSAiRklMRVNfXCR7UE59LSRwa2cgPSBcIlwke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vJGlcIiI7IGRvbmUgfCBncmVwIF5GSUxFUworCitGSUxFU18ke1BOfS1iY200M3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4LTAuZnciCitGSUxFU18ke1BOfS1iY200M3h4LWhkciA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eF9oZHItMC5mdyIKK0ZJTEVTXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDMyOS1mdWxsbWFjLTQuYmluIgorRklMRVNfJHtQTn0tYmNtNDMyMzZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjM2Yi5iaW4iCitGSUxFU18ke1BOfS1iY200MzI5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjktc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDMzNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMzNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM1LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMzOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM5LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWIwLXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDFiNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI1LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDMyNDJhID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQyYS5iaW4iCitGSUxFU18ke1BOfS1iY200MzE0MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My1zZGlvLmJpbiBcCisiCitGSUxFU18ke1BOfS1iY200MzQzMGEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwYTAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM1MGMyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTBjMi1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MC1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1zZGlvLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTY5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTY5LmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNTcwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTcwLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1OCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU4LXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM2MDIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmFwLmJpbiBcCisiCitGSUxFU18ke1BOfS1iY200MzY2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yi1wY2llLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzNjZjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZjLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM3MSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzcxLXBjaWUuYmluIgorCisjIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIkxJQ0VOU0VfXCR7UE59LSRwa2cgPSBcIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhcIlxuUkRFUEVORFNfXCR7UE59LSRwa2cgKz0gXCJcJHtQTn0tYnJvYWRjb20tbGljZW5zZVwiIjsgZG9uZQorIyBDdXJyZW50bHkgMXN0IG9uZSBhbmQgbGFzdCA2IGhhdmUgY3lwcmVzcyBMSUNFTlNFCisKK0xJQ0VOU0VfJHtQTn0tYmNtNDN4eCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDN4eCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDN4eC1oZHIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzeHgtaGRyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjktZnVsbG1hYyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyMzZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzIzNmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQxYjUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjQxYjUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjQyYSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDJhICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzE0MyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMxNDMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwYTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNDMwYTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDU1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1MGMyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzUwYzIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTYgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTYgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTY5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzU2OSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTcwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzU4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzYwMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM2MDIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNjZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzY2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM2NmMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNjZjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzcxID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzcxICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorCisjIEZvciBicm9hZGNvbSBjeXByZXNzCisKK0xJQ0VOU0VfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIkZpcm13YXJlLWN5cHJlc3MiCitGSUxFU18ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MiCisKK0ZJTEVTXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTS0wYmI0LTAzMDYuaGNkIgorRklMRVNfJHtQTn0tYmNtNDMzNDAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNDAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDMzNjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNjItc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby4qIgorRklMRVNfJHtQTn0tYmNtNDM1NCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU0LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDM1Ni1wY2llID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtcGNpZS4qIgorRklMRVNfJHtQTn0tYmNtNDM3MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLXNkaW8uYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My5iaW4gXAorIgorCitMSUNFTlNFXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbS0wYmI0LTAzMDYgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNDAgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzQwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMzYyID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzM2MiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzQzMCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM0MzAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU2LXBjaWUgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTYtcGNpZSArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzczID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzczICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCisKKyMgRm9yIEJyb2FkY29tIGJueDItbWlwcworIworIyB3aGljaCBpcyBhIHNlcGFyYXRlIGNhc2UgdG8gdGhlIG90aGVyIEJyb2FkY29tIGZpcm13YXJlcyBzaW5jZSBpdHMKKyMgbGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIHNoYXJlZCBXSEVOQ0UgZmlsZS4KKworTElDRU5TRV8ke1BOfS1ibngyLW1pcHMgPSAiV0hFTkNFIgorTElDRU5TRV8ke1BOfS13aGVuY2UtbGljZW5zZSA9ICJXSEVOQ0UiCisKK0ZJTEVTXyR7UE59LWJueDItbWlwcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JueDIvYm54Mi1taXBzLTA5LTYuMi4xYi5mdyIKK0ZJTEVTXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvV0hFTkNFIgorCitSREVQRU5EU18ke1BOfS1ibngyLW1pcHMgKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIEZvciBpbXgtc2RtYQorTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg2cSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14N2QgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg2cS5iaW4iCisKK1JQUk9WSURFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKK1JSRVBMQUNFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKK1JDT05GTElDVFNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWlteDdkID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg3ZC5iaW4iCisKK0ZJTEVTXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnNkbWFfZmlybXdhcmUiCisKK1JERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDZxICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14N2QgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCisKKyMgRm9yIGl3bHdpZmkKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaSAgICAgICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taXdsd2lmaS1saWNlbnNlICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKKworCitGSUxFU18ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTEzNS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0xMzUtNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTcudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC04LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwLTQudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS01LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2MC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCisKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKKworIyAtaXdsd2lmaS1taXNjIGlzIGEgImNhdGNoIGFsbCIgcGFja2FnZSB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaXdsd2lmaQorIyBmaXJtd2FyZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gb3RoZXIgLWl3bHdpZmktIHBhY2thZ2VzLgorIyAtaXdsd2lmaSBpcyBhIHZpcnR1YWwgcGFja2FnZSB0aGF0IGRlcGVuZHMgdXBvbiBhbGwgaXdsd2lmaSBwYWNrYWdlcy4KKyMgVGhlc2UgYXJlIGRpc3RpbmN0IGluIG9yZGVyIHRvIGFsbG93IHRoZSAtbWlzYyBmaXJtd2FyZXMgdG8gYmUgaW5zdGFsbGVkCisjIHdpdGhvdXQgcHVsbGluZyBpbiBldmVyeSBvdGhlciBpd2x3aWZpIHBhY2thZ2UuCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpLW1pc2MgPSAiMSIKKworIyBIYW5kbGUgcGFja2FnZSB1cGRhdGluZyBmb3IgdGhlIG5ld2x5IG1lcmdlZCBpd2x3aWZpIGdyb3VwaW5ncworUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKK1JSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCitSQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKKworUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKK1JSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCitSQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKKworIyBGb3IgaWJ0CitMSUNFTlNFXyR7UE59LWlidC1saWNlbnNlID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtaHctMzctOCA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC0xMS01ICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTEyLTE2ICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtMTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtbWlzYyAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCisKK0ZJTEVTXyR7UE59LWlidC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pYnRfZmlybXdhcmUiCitGSUxFU18ke1BOfS1pYnQtaHctMzctNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy43Ki5ic2VxIgorRklMRVNfJHtQTn0taWJ0LWh3LTM3LTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuOCouYnNlcSIKK0ZJTEVTXyR7UE59LWlidC0xMS01ICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuZGRjIgorRklMRVNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LmRkYyIKK0ZJTEVTXyR7UE59LWlidC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLmRkYyIKK0ZJTEVTXyR7UE59LWlidC1taXNjICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaWJ0LSoiCisKK1JERVBFTkRTXyR7UE59LWlidC1ody0zNy03ID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LjggPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LTE3ID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCisKK0FMTE9XX0VNUFRZXyR7UE59LWlidD0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1pYnQtbWlzYyA9ICIxIgorCitMSUNFTlNFXyR7UE59LWk5MTUgICAgICAgPSAiRmlybXdhcmUtaTkxNSIKK0xJQ0VOU0VfJHtQTn0taTkxNS1saWNlbnNlID0gIkZpcm13YXJlLWk5MTUiCitGSUxFU18ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLmk5MTUiCitGSUxFU18ke1BOfS1pOTE1ICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pOTE1IgorUkRFUEVORFNfJHtQTn0taTkxNSAgICAgID0gIiR7UE59LWk5MTUtbGljZW5zZSIKKworRklMRVNfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hZHNwX3NzdCIKK0xJQ0VOU0VfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKK0xJQ0VOU0VfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKK0ZJTEVTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2RzcF9mdyoiCitSREVQRU5EU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgPSAiJHtQTn0tYWRzcC1zc3QtbGljZW5zZSIKKworIyBGb3IgUUFUCitMSUNFTlNFXyR7UE59LXFhdCAgICAgICAgID0gIkZpcm13YXJlLXFhdCIKK0xJQ0VOU0VfJHtQTn0tcWF0LWxpY2Vuc2UgPSAiRmlybXdhcmUtcWF0IgorRklMRVNfJHtQTn0tcWF0LWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucWF0X2Zpcm13YXJlIgorRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgorUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKKworIyBGb3IgUUNPTSBWUFUvR1BVIGFuZCBTRE04NDUKK0xJQ0VOU0VfJHtQTn0tcWNvbS1saWNlbnNlID0gIkZpcm13YXJlLXFjb20iCitGSUxFU18ke1BOfS1xY29tLWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UucWNvbSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vTk9USUNFLnR4dCIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtMS44ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy0xLjgvKiIKK0ZJTEVTXyR7UE59LXFjb20tdmVudXMtNC4yID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS92ZW51cy00LjIvKiIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWEzeHggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2EzMDBfKi5mdyAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2EzMDBfKi5mdyIKK0ZJTEVTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL2E1MzAqLioiCitGSUxFU18ke1BOfS1xY29tLXNkbTg0NS1hdWRpbyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vc2RtODQ1L2Fkc3AqLioiCitGSUxFU18ke1BOfS1xY29tLXNkbTg0NS1jb21wdXRlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvY2RzcCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LW1vZGVtID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvbWJhLm1ibiAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vc2RtODQ1L21vZGVtKi4qIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tc2RtODQ1LWF1ZGlvID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tc2RtODQ1LWNvbXB1dGUgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtbW9kZW0gPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorCitGSUxFU18ke1BOfS1saXF1aWRpbyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2xpcXVpZGlvIgorCisjIEZvciBvdGhlciBmaXJtd2FyZXMKKyMgTWF5YmUgc3BsaXQgb3V0IHRvIHNlcGFyYXRlIHBhY2thZ2VzIHdoZW4gbmVlZGVkLgorTElDRU5TRV8ke1BOfSA9ICJcCisgICAgRmlybXdhcmUtQWJpbGlzIFwKKyAgICAmIEZpcm13YXJlLWFnZXJlIFwKKyAgICAmIEZpcm13YXJlLWFtZGdwdSBcCisgICAgJiBGaXJtd2FyZS1hbWQtdWNvZGUgXAorICAgICYgRmlybXdhcmUtYXRtZWwgXAorICAgICYgRmlybXdhcmUtY2EwMTMyIFwKKyAgICAmIEZpcm13YXJlLWNhdml1bSBcCisgICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWN3MTIwMCBcCisgICAgJiBGaXJtd2FyZS1kaWIwNzAwIFwKKyAgICAmIEZpcm13YXJlLWUxMDAgXAorICAgICYgRmlybXdhcmUtZW5lX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWZ3X3NzdF8wZjI4IFwKKyAgICAmIEZpcm13YXJlLWdvNzAwNyBcCisgICAgJiBGaXJtd2FyZS1oZmkxX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWkyNDAwbSBcCisgICAgJiBGaXJtd2FyZS1pYnRfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaXQ5MTN4IFwKKyAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKKyAgICAmIEZpcm13YXJlLWthd2V0aCBcCisgICAgJiBGaXJtd2FyZS1tb3hhIFwKKyAgICAmIEZpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLW52aWRpYSBcCisgICAgJiBGaXJtd2FyZS1PTFBDIFwKKyAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCisgICAgJiBGaXJtd2FyZS1waGFuZncgXAorICAgICYgRmlybXdhcmUtcWF0IFwKKyAgICAmIEZpcm13YXJlLXFjb20gXAorICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCisgICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKKyAgICAmIEZpcm13YXJlLXI4YTc3OXhfdXNiMyBcCisgICAgJiBGaXJtd2FyZS1yYWRlb24gXAorICAgICYgRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtc2lhbm8gXAorICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAorICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAorICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtd2wxMjUxIFwKKyAgICAmIEZpcm13YXJlLXhjNDAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDAgXAorICAgICYgRmlybXdhcmUteGM1MDAwYyBcCisgICAgJiBXSEVOQ0UgXAorIgorCitGSUxFU18ke1BOfS1saWNlbnNlICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOKiIKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlLyoiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS13aGVuY2UtbGljZW5zZSIKKworIyBNYWtlIGxpbnV4LWZpcm13YXJlIGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBwYWNrYWdlcy4KKyMgTWFrZSBsaW51eC1maXJtd2FyZS1pd2x3aWZpIGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpd2x3aWZpIHBhY2thZ2VzLgorIyBNYWtlIGxpbnV4LWZpcm13YXJlLWlidCBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgaWJ0IHBhY2thZ2VzLgorcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGZpcm13YXJlX3BrZ3MgPSBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZScsICcgJyArICcgJy5qb2luKGZpcm13YXJlX3BrZ3MpKQorCisgICAgaXdsd2lmaV9wa2dzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmZpbmQoJy1pd2x3aWZpLScpICE9IC0xLCBmaXJtd2FyZV9wa2dzKQorICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZS1pd2x3aWZpJywgJyAnICsgJyAnLmpvaW4oaXdsd2lmaV9wa2dzKSkKKworICAgIGlidF9wa2dzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmZpbmQoJy1pYnQtJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWlidCcsICcgJyArICcgJy5qb2luKGlidF9wa2dzKSkKK30KKworIyBGaXJtd2FyZSBmaWxlcyBhcmUgZ2VuZXJhbGx5IG5vdCByYW4gb24gdGhlIENQVSwgc28gdGhleSBjYW4gYmUKKyMgYWxsYXJjaCBkZXNwaXRlIGJlaW5nIGFyY2hpdGVjdHVyZSBzcGVjaWZpYworSU5TQU5FX1NLSVAgPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCA3ZjgzOGY2Li40NDgxYWE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCkBAIC05MSw0ICs5MSw0IEBACiBSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUgYmlzb24tbmF0aXZlIgorREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUgYmlzb24tbmF0aXZlIHJzeW5jLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGIyNDQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDg5NzczNjE2NmZkNzA5OTA2YTVmZGYxNmViMjNmOGZkZGZmNzcwYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMSBNYXIgMjAxOCAxODozMTowMSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBpZl9ldGhlcjogbW92ZSBtdXNsYyBldGhoZHIgcHJvdGVjdGlvbiB0byB1YXBpIGZpbGUKLQotU2lnbmVkLW9mZi1ieTogQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGluY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi1pbmRleCAxNTNjOWMyLi43YjY5YjczIDEwMDY0NAotLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLSsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oCi1AQCAtMTQ5LDYgKzE0OSwxMiBAQAotICAqCVRoaXMgaXMgYW4gRXRoZXJuZXQgZnJhbWUgaGVhZGVyLgotICAqLwotIAotKyNpZmRlZiBfTkVUSU5FVF9JRl9FVEhFUl9IIC8qIG11c2wgKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDAKLSsjZWxzZSAvKiBnbGliYyB1c2VzIF9fTkVUSU5FVF9JRl9FVEhFUl9ILCBhbmQgaW5jbHVkZXMgdGhlIGtlcm5lbCBoZWFkZXIuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAxCi0rI2VuZGlmCi0rCi0gLyogYWxsb3cgbGliY3MgbGlrZSBtdXNsIHRvIGRlYWN0aXZhdGUgdGhpcywgZ2xpYmMgZG9lcyBub3QgaW1wbGVtZW50IHRoaXMuICovCi0gI2lmbmRlZiBfX1VBUElfREVGX0VUSEhEUgotICNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIJCTEKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoCmluZGV4IDc4ZWJkMzEuLjU0NTI4YjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEta2J1aWxkLWluc3RhbGxfaGVhZGVycy5zaC1TdHJpcC1fVUFQSS1mcm9tLWlmLWRlZmluZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2gKQEAgLTI0LDE4ICsyNCwxNSBAQAogIHNjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLWRpZmYgLS1naXQgYS9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaCBiL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi1pbmRleCA1OTNmODg3OWM2NDEuLmZlMWQzZmMwZDMzYSAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi0rKysgYi9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAotQEAgLTM4LDYgKzM4LDcgQEAgZG8KLSAJCS1lICdzLyhefFteYS16QS1aMC05XSlfX3BhY2tlZChbXmEtekEtWjAtOV9dfCQpL1wxX19hdHRyaWJ1dGVfXygocGFja2VkKSlcMi9nJyBcCi0gCQktZSAncy8oXnxbWzpzcGFjZTpdKF0pKGlubGluZXxhc218dm9sYXRpbGUpKFtbOnNwYWNlOl0oXXwkKS9cMV9fXDJfX1wzL2cnIFwKLSAJCS1lICdzQCMoaWZuZGVmfGRlZmluZXxlbmRpZltbOnNwYWNlOl1dKi9bKl0pW1s6c3BhY2U6XV0qX1VBUElAI1wxIEAnIFwKLSsJCS1lICc6MTtzLygjKGlmfGVsaWYpKC4qW15BLVphLXowLTlfXSlkZWZpbmVkXChbWzpzcGFjZTpdXSopX1VBUEkvXDEvO3QxJyBcCi0gCQkiJFNSQ0RJUi8kaSIgPiAiJE9VVERJUi8kRklMRS5zZWQiIHx8IGV4aXQgMQotIAlzY3JpcHRzL3VuaWZkZWYgLVVfX0tFUk5FTF9fIC1EX19FWFBPUlRFRF9IRUFERVJTX18gIiRPVVRESVIvJEZJTEUuc2VkIiBcCi0gCQk+ICIkT1VURElSLyRGSUxFIgotLS0gCi0yLjUuMAotCitJbmRleDogbGludXgtNS40L3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGludXgtNS40Lm9yaWcvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKKysrKyBsaW51eC01LjQvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKK0BAIC0zNiw2ICszNiw3IEBACisgCXMvKF58W15hLXpBLVowLTldKV9fcGFja2VkKFteYS16QS1aMC05X118JCkvXDFfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKVwyL2cKKyAJcy8oXnxbWzpzcGFjZTpdKF0pKGlubGluZXxhc218dm9sYXRpbGUpKFtbOnNwYWNlOl0oXXwkKS9cMV9fXDJfX1wzL2cKKyAJc0AjKGlmbmRlZnxkZWZpbmV8ZW5kaWZbWzpzcGFjZTpdXSovWypdKVtbOnNwYWNlOl1dKl9VQVBJQCNcMSBACisrICAgICAgICA6MTtzLygjKGlmfGVsaWYpKC4qW15BLVphLXowLTlfXSlkZWZpbmVkXChbWzpzcGFjZTpdXSopX1VBUEkvXDEvO3QxCisgJyAkSU5GSUxFID4gJFRNUEZJTEUgfHwgZXhpdCAxCisgCisgc2NyaXB0cy91bmlmZGVmIC1VX19LRVJORUxfXyAtRF9fRVhQT1JURURfSEVBREVSU19fICRUTVBGSUxFID4gJE9VVEZJTEUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiN2UxZGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDc1YmE0YTU0NzI4MmY5MWQ2NTM4NzJhNGJiYTVmNWVhZTIzNGVhNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiByb2ZsMHIgPHJldG55Z0BnbXgubmV0PgotRGF0ZTogV2VkLCAyMiBKYW4gMjAxNCAwMDo1Nzo0OCArMDEwMAotU3ViamVjdDogW1BBVENIIDIvM10gbGliYy1jb21wYXQuaDogcHJldmVudCByZWRlZmluaXRpb24gb2Ygc3RydWN0IGV0aGhkcgotCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggICAgfCA0ICsrKy0KLSBpbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaCB8IDYgKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaW51eC00LjE1Lm9yaWcvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzgzNzA3MzEgLTA1MDAKLSsrKyBsaW51eC00LjE1L2luY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oCTIwMTgtMDItMDUgMTc6NDA6NDIuMzM0MzcwNjAzIC0wNTAwCi1AQCAtNTEsNiArNTEsMTIgQEAKLSAKLSAjaWZuZGVmIF9fS0VSTkVMX18gLyogd2UncmUgdXNlZCBmcm9tIHVzZXJzcGFjZSAqLwotIAotKyNpZmRlZiBfTkVUSU5FVF9JRl9FVEhFUl9IIC8qIG11c2wgKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDAKLSsjZWxzZSAvKiBnbGliYyB1c2VzIF9fTkVUSU5FVF9JRl9FVEhFUl9ILCBhbmQgaW5jbHVkZXMgdGhlIGtlcm5lbCBoZWFkZXIuICovCi0rI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUiAxCi0rI2VuZGlmCi0rCi0gLyogQ29vcmRpbmF0ZSB3aXRoIGxpYmMgbmV0L2lmLmggaGVhZGVyLiAqLwotICNpZiBkZWZpbmVkKF9ORVRfSUZfSCkKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxOGRmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBcCi0gICAiCi0KLVNSQ19VUklfYXBwZW5kID0gIlwKLSAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLVVzZS1maXhlZC1pbnB1dC1hbmQtb3V0cHV0LWZpbGVzLWluc3RlYWQtb2YtLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRkZjk5NGRlMDBkN2IxODM5NTg4NmRkOWIzMGI5MjYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0YWQ2NmY2NzJlMWE4MzFiNTc0ZjVlNzA0ZThhMDVmMWU2MTgwYTgyNDVkNGJkZDgxMTIwOGE2Y2IwYWMxZTciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExMjEwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBcCisgICAiCisKK1NSQ19VUklfYXBwZW5kID0gIlwKKyAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLVVzZS1maXhlZC1pbnB1dC1hbmQtb3V0cHV0LWZpbGVzLWluc3RlYWQtb2YtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImNlOWIyZDk3NGQyNzQwOGE2MWM1M2EzMGQzZjk4ZmI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmMzM4OTgwYjE2NzBiY2EyODdmOTk5NGI3NDQxYzIzNjE5MDc2MzU4NzkxNjljNjRhZTc4MzY0ZWZjNWY0OTEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCmluZGV4IGI2OGQ5NDUuLjU5NDBjYzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCkBAIC03OCw3ICs3OCw3IEBACiAJICAgIGNwIE1vZHVsZS5tYXJrZXJzICRrZXJuZWxkaXIvYnVpbGQKIAlmaQogCi0JY3AgLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkCiAKIAkjIFRoaXMgc2NyaXB0cyBjb3B5IGJsb3cgdXAgUUEsIHNvIGZvciBub3csIHdlIHJlcXVpcmUgYSBtb3JlCiAJIyBjb21wbGV4ICdtYWtlIHNjcmlwdHMnIHRvIHJlc3RvcmUgdGhlc2UsIHZlcnN1cyBjb3B5aW5nIHRoZW0KQEAgLTEyOCwxMSArMTI4LDEyIEBACiAKIAkgICAgIyBleHRyYSBmaWxlcywganVzdCBpbiBjYXNlCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9vYmp0b29sLyogJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJfZXJyb3Jfci5jICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9saWIvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi8qICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9saWIvc3ViY21kLyogJGtlcm5lbGRpci9idWlsZC8KIAogCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS8qICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCB0b29scy9hcmNoLyR7QVJDSH0vIC10eXBlIGYpICRrZXJuZWxkaXIvYnVpbGQvCiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gImFybTY0IiBdOyB0aGVuCkBAIC0xNDYsNyArMTQ3LDcgQEAKICAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL25vdGUuUyAka2VybmVsZGlyL2J1aWxkLwogICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2VuX3Zkc29fb2Zmc2V0cy5zaCAka2VybmVsZGlyL2J1aWxkLwogCi0gICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL21vZHVsZS5sZHMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCWZpCiAKIAlpZiBbICIke0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCkBAIC0xODUsMTkgKzE4NiwyMSBAQAogCWNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlL3Rvb2xzL2JlX2J5dGVzaGlmdC5oICRrZXJuZWxkaXIvYnVpbGQvCiAKIAkjIHJlcXVpcmVkIGZvciBnZW5lcmF0ZSBtaXNzaW5nIHN5c2NhbGxzIHByZXBhcmUgcGhhc2UKLQljcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgJGtlcm5lbGRpci9idWlsZAorCWNwIC1hIC0tcGFyZW50cyAkKGZpbmQgYXJjaC94ODYgLXR5cGUgZiAtbmFtZSAic3lzY2FsbF8zMi50YmwiKSAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL2FybSAtdHlwZSBmIC1uYW1lICIqLnRibCIpICRrZXJuZWxkaXIvYnVpbGQgMj4vZGV2L251bGwgfHwgOgogCiAJaWYgWyAiJHtBUkNIfSIgPSAieDg2IiBdOyB0aGVuCiAJICAgICMgZmlsZXMgZm9yICdtYWtlIHByZXBhcmUnIHRvIHN1Y2NlZWQgd2l0aCBrZXJuZWwtZGV2ZWwKLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsdGJsLnNoICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsaGRyLnNoICRrZXJuZWxkaXIvYnVpbGQvCi0JICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxfMzIudGJsIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsdGJsLnNoIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsaGRyLnNoIikgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsXzY0LnRibCIpICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfMzIuYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzXzY0LmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfY29tbW9uLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5oICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9nZW4taW5zbi1hdHRyLXg4Ni5hd2sgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3B1cmdhdG9yeS5jICRrZXJuZWxkaXIvYnVpbGQvCiAKIAkgICAgIyA0LjE4ICsgaGF2ZSB1bmlmaWVkIHRoZSBwdXJnYXRvcnkgZmlsZXMsIHNvIHdlIGlnbm9yZSBhbnkgZXJyb3JzIGlmCkBAIC0yMTMsNiArMjE2LDEwIEBACiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L3N0cmluZy5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvYm9vdC9jdHlwZS5oICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgIyBvYmp0b29sIHJlcXVpcmVzIHRoZXNlIGZpbGVzCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9saWIvaW5hdC5jICRrZXJuZWxkaXIvYnVpbGQvIDI+L2Rldi9udWxsIHx8IDoKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2xpYi9pbnNuLmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgogCWZpCiAKIAlpZiBbICIke0FSQ0h9IiA9ICJtaXBzIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgppbmRleCAxNjNmMjgwLi4wNmE5MTA4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKQEAgLTMwLDExICszMCwxMSBAQAogU1JDUkVWX21hY2hpbmUgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIFNSQ1JFVl9tZXRhID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjUuMy1yYysiCitMSU5VWF9WRVJTSU9OID89ICI1LjYtcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJjNTM4ZWQ1YmQ5YTdmYzkzOTgwODZhZWRjZDdlNDYiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgogREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCkBAIC00OCw3ICs0OCw3IEBACiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKIAogS0VSTkVMX1ZFUlNJT05fU0FOSVRZX1NLSVAgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZWRiNjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xOS9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiMGU0YTc5ZTYwOGU5MjgzMDY5M2U1MTFhM2RkMjgyY2U3YzNiM2Y0MSIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xOS43OCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMzMzMWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY1LjIvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCi0jIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZwotIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgotIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gIjU1ZTNlZTM4N2IwNzNkOGQ2MDllODg5OTg1OTU2MTM0MGQ4YjY5MTEiCi1TUkNSRVZfbWV0YSA/PSAiYmQwNzYyY2QxMzhmMTYyNGI1YTVmODY2OWNmYTNhYzJiNzFjYjg3YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTc0ZWMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCit9CisKK1NSQ1JFVl9tYWNoaW5lID89ICI3OTAzN2FlNThlNmIwZGZkMGM2M2Q0YTBlMTMxZjFiZDVlZmU3ZTUzIgorU1JDUkVWX21ldGEgPz0gImJlZTU1NGU1OTVlNDljOTYzOTAwZDFjNzhjMDFhYjJkMDQxMzgyZTciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNC4yNyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11cHBjfHFlbXVtaXBzKSIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2ODJhZWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE5L3N0YW5kYXJkL3RpbnkvYmFzZSIKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY0LjE5L3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xOS43OCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJiZTUwMDAxODA4ZjAwZWZlZTUzOGMyYTNlN2MwYTVhMmEyZGY2NWRhIgotU1JDUkVWX21hY2hpbmUgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWV0YSA/PSAiYWQ2ZjhiMzU3NzIwY2E4MTY3YTA5MDcxM2I3NzQ2MjMwY2Y0YjMxNCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE5O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MjM5ZDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC90aW55L2Jhc2UiCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCi0KLUxJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCi1LQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjUwMWQ2ODA1MzU5MDNhY2MwMDgwOGMzNmYyY2MwN2YyZGM3MjVhZGMiCi1TUkNSRVZfbWFjaGluZSA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9GRUFUVVJFUyA9ICIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNWU2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIKQEAgLTAsMCArMSwzMiBAQAorS0JSQU5DSCA/PSAidjUuNC9zdGFuZGFyZC90aW55L2Jhc2UiCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS40L3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCitLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjVjMmQzNWVlYjRiZTBlOGJhZTRjZjVlZTA3MzNlNDFmZjEyNjJmZjMiCitTUkNSRVZfbWFjaGluZSA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tZXRhID89ICJiZWU1NTRlNTk1ZTQ5Yzk2MzkwMGQxYzc4YzAxYWIyZDA0MTM4MmU3IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybXY1IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9GRUFUVVJFUyA9ICIiCisKK0tFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKaW5kZXggZjE5MTk0Ni4uOTFkZjljMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCkBAIC0zOSwyMiArMzksNiBAQAogIyBhbmQgaXQgY2FuIGJlIHNwZWNpZmljIHRvIHRoZSBtYWNoaW5lIG9yIHNoYXJlZAogIyBLTUFDSElORSA9ICJVTkRFRklORUQiCiAKLSMgVGhlIGRpc3RybyBvciBsb2NhbC5jb25mIHNob3VsZCBzZXQgdGhpcywgYnV0IGlmIG5vYm9keSBjYXJlcy4uLgotTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKLQotIyBLTUVUQSA/PSAiIgotS0JSQU5DSCA/PSAibWFzdGVyIgotS01BQ0hJTkUgPz0gIiR7TUFDSElORX0iCi1TUkNSRVZfRk9STUFUID89ICJtZXRhX21hY2hpbmUiIAotCi0jIExFVkVMUzoKLSMgICAwOiBubyByZXBvcnRpbmcKLSMgICAxOiByZXBvcnQgb3B0aW9ucyB0aGF0IGFyZSBzcGVjaWZpZWQsIGJ1dCBub3QgaW4gdGhlIGZpbmFsIGNvbmZpZwotIyAgIDI6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIG5vdCBoYXJkd2FyZSByZWxhdGVkLCBidXQgc2V0IGJ5IGEgQlNQCi1LQ09ORl9BVURJVF9MRVZFTCA/PSAiMSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA/PSAiMCIKLUtNRVRBX0FVRElUID89ICJ5ZXMiCi0KIExJTlVYX1ZFUlNJT05fRVhURU5TSU9OID8/PSAiLXlvY3RvLSR7TElOVVhfS0VSTkVMX1RZUEV9IgogCiAjIFBpY2sgdXAgc2hhcmVkIGZ1bmN0aW9ucwpAQCAtNjksMTAgKzUzLDUgQEAKIAlmaQogfQogCi0jIGV4dHJhIHRhc2tzCi1hZGR0YXNrIGtlcm5lbF92ZXJzaW9uX3Nhbml0eV9jaGVjayBhZnRlciBkb19rZXJuZWxfbWV0YWRhdGEgZG9fa2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19jb21waWxlCi1hZGR0YXNrIHZhbGlkYXRlX2JyYW5jaGVzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb19rZXJuZWxfY2hlY2tvdXQKLWFkZHRhc2sga2VybmVsX2NvbmZpZ2NoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQotCiAjIGVuYWJsZSBrZXJuZWwtc2FtcGxlIGZvciBvZXFhL3J1bnRpbWUvY2FzZXMncyBrc2FtcGxlLnB5IHRlc3QKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGZlYXR1cmVzL2tlcm5lbC1zYW1wbGUva2VybmVsLXNhbXBsZS5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGNiMjBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotS0JSQU5DSCA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTkvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjQuMTkvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjQuMTkvc3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJ2NC4xOS9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjQuMTkvc3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjdmZGU1MWFiY2FmMzg5MTkzY2U1ZDg3ZWJmYjhlOGZiNjZhOTI3MWEiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiOGFjNjhkNDJiZWIyNGIyNzVhYzBkMmE1NGEwYTIyOTE5NzBlNWRkZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImVhMmNiODczMTMwNmY3MzRiZjAyMjc1NzVlMDRjYWZhYzdkZmFkZTAiCi1TUkNSRVZfbWFjaGluZSA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE5O2Rlc3RzdWZmaXg9JHtLTUVUQX0gXAotICAgICAgICAgICIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY3NWY2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4yL3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgotS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjIvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjIvc3RhbmRhcmQvcWVtdXBwYyIKLUtCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuMi9zdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiZmNiZTUxZGZhMGE3NjNhMDdlNGNkNjYyMDRkNmMwYmEwNTQ2NjNjZSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI5Y2FkN2JiOGJjZDM2ODZmNTgwYTMzNjM4NDdlZTljOWU4NjkyOGIxIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJkYzJiZTFhNTQ2ZTkzNzM3NDU5MGNlMzg1OGI3MTc0ODlkZWQyYzIxIgotU1JDUkVWX21hY2hpbmUgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWV0YSA/PSAiYmQwNzYyY2QxMzhmMTYyNGI1YTVmODY2OWNmYTNhYzJiNzFjYjg3YiIKLQotIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjIga2VybmVsCi0jIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLUxJTlVYX1ZFUlNJT04gPz0gIjUuMi4yMCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlOTMzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmIKQEAgLTAsMCArMSw1NCBAQAorS0JSQU5DSCA/PSAidjUuNC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NS40L3N0YW5kYXJkL2FybS12ZXJzYXRpbGUtOTI2ZWpzIgorS0JSQU5DSF9xZW11YXJtNjQgPz0gInY1LjQvc3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAidjUuNC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY1LjQvc3RhbmRhcmQvcWVtdXBwYyIKK0tCUkFOQ0hfcWVtdXJpc2N2NjQgID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX3FlbXV4ODYtNjQgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjUuNC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiYWI4NDkyNDhiNDU0MDNjN2Q2ZjFmYjhlOGY1Nzg0MGNjMjg4MDYxOCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI5NjdhMTcwOGNiYmZlMWI1MjRkYzI4ZjA0ZmE1ZTBkNzlhMjcwYmY1IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVyaXNjdjY0ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJkM2U4NTBkYTgzMDI0MWM0MjRkNTU3YTZhMDcyNTI3ZTA5ZTc4NGFiIgorU1JDUkVWX21hY2hpbmUgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWV0YSA/PSAiYmVlNTU0ZTU5NWU0OWM5NjM5MDBkMWM3OGMwMWFiMmQwNDEzODJlNyIKKworIyByZW1hcCBxZW11YXJtIHRvIHFlbXVhcm1hMTUgZm9yIHRoZSA1LjQga2VybmVsCisjIEtNQUNISU5FX3FlbXVhcm0gPz0gInFlbXVhcm1hMTUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuNDtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNC4yNyIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicHRlc3QiLCAiIGZlYXR1cmVzL3Njc2kvc2NzaS1kZWJ1Zy5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0YjdjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2gKKyMgdXNlIHRhcmdldD1yZWNoZWNrIGlmIHlvdSB3YW50IHRvIHJlY2hlY2sgZmFpbGluZyB0ZXN0cworWyAiJHRhcmdldCIgPSAiIiBdICYmIHRhcmdldD1jaGVjaworCisjIFdpdGhvdXQgLS1pZ25vcmUtZXhpdCwgdGhlIHRhcCBoYXJuZXNzIGNhdXNlcyBhbnkgRkFJTHMgd2l0aGluIGEKKyMgdGVzdCBwbGFuIHRvIHJhaXNlIEVSUk9SczsgdGhpcyBpcyBqdXN0IG5vaXNlLgorbWFrZWFyZ3M9IkxPR19EUklWRVJfRkxBR1M9LS1pZ25vcmUtZXhpdCB0b3Bfc3JjZGlyPSRQV0QgdG9wX2J1aWxkZGlyPSRQV0QiCisKK2V4ZWMgbWFrZSAtQyB0ZXN0cyAtayAtcyAkbWFrZWFyZ3MgJHRhcmdldCAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDAxYjE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtTWFrZS1tYW5wYWdlcy1tdWx0aWxpYi1pZGVudGljYWwucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1Njk4NjE5MGU0YjBjMTA5NDVjZTZhYWE3Y2ExMGQ2YmQ4YTI2YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMjE6MTA6MzUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBtYW5wYWdlcyBtdWx0aWxpYiBpZGVudGljYWwKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGRvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbiB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4gYi9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4KK2luZGV4IGFkMTE4M2YxLi5lMTFjNzAzMSAxMDA2NDQKKy0tLSBhL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbgorKysrIGIvZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluCitAQCAtMSw3ICsxLDcgQEAKKyBbYXR0cmlidXRlc10KKyAjIGRlZmF1bHQgdmFsdWVzCistc3lzdGVtX3BsdWdpbl9wYXRoPSJATElCRElSQC9iYWJlbHRyYWNlMi9wbHVnaW5zIgorLXN5c3RlbV9wbHVnaW5fcHJvdmlkZXJfcGF0aD0iQExJQkRJUkAvYmFiZWx0cmFjZTIvcGx1Z2luLXByb3ZpZGVycyIKKytzeXN0ZW1fcGx1Z2luX3BhdGg9IkBwcmVmaXhAL2xpYiovYmFiZWx0cmFjZTIvcGx1Z2lucyIKKytzeXN0ZW1fcGx1Z2luX3Byb3ZpZGVyX3BhdGg9IkBwcmVmaXhAL2xpYiovYmFiZWx0cmFjZTIvcGx1Z2luLXByb3ZpZGVycyIKKyBiYWJlbHRyYWNlX3ZlcnNpb249IkBQQUNLQUdFX1ZFUlNJT05AIgorIGVuYWJsZV9kZWJ1Z19pbmZvPSJARU5BQkxFX0RFQlVHX0lORk9fVkFMQCIKKyBkZWZyZHBvcnQ9NTM0NAorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NmIzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA0MmRhZTY5MmI5MDU3ZDAzY2U5YTA2NTFmMDYxNDcyZTlkZDkwMTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTEgTWFyIDIwMjAgMDg6NDQ6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnMuYzogaW5pdGlhbGl6ZSB0aGUgb3RoZXJfZW50cnkgdmFyaWFibGUKKworSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBvdGhlcl9lbnRyeSB0byBmaXggdGhlIGJlbG93IGVycm9yOgorfCAuLi8uLi8uLi8uLi8uLi9naXQvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jOiBJbiBmdW5jdGlvbiAnZHNfaW5kZXhfaW5zZXJ0X2RzX2luZGV4X2VudHJ5X3NvcnRlZCc6Cit8IC4uLy4uLy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmM6NzAyOjU6IGVycm9yOiAnb3RoZXJfZW50cnknIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgIDcwMiB8ICAgICFkc19pbmRleF9lbnRyaWVzX2VxdWFsKGVudHJ5LCBvdGhlcl9lbnRyeSkpIHsKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubHR0bmcub3JnL3BpcGVybWFpbC9sdHRuZy1kZXYvMjAyMC1NYXJjaC8wMjk1NDkuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYyBiL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYworaW5kZXggZTg3NTIzYTMuLmE2YjUzMTVmIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jCisrKysgYi9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmMKK0BAIC02ODAsNyArNjgwLDcgQEAgdm9pZCBkc19pbmRleF9pbnNlcnRfZHNfaW5kZXhfZW50cnlfc29ydGVkKAorIAlzdHJ1Y3QgY3RmX2ZzX2RzX2luZGV4X2VudHJ5ICplbnRyeSkKKyB7CisgCWd1aW50IGk7CistCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKm90aGVyX2VudHJ5OworKwlzdHJ1Y3QgY3RmX2ZzX2RzX2luZGV4X2VudHJ5ICpvdGhlcl9lbnRyeSA9IE5VTEw7CisgCisgCS8qIEZpbmQgdGhlIHNwb3Qgd2hlcmUgdG8gaW5zZXJ0IHRoaXMgaW5kZXggZW50cnkuICovCisgCWZvciAoaSA9IDA7IGkgPCBpbmRleC0+ZW50cmllcy0+bGVuOyBpKyspIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDVkZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNTgyNzEzY2M5YTAxMzQ4MWVlZWYyNTMxOTVkNjQ0MDIwZjYzN2VjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK01lc3NhZ2UtSWQ6IDw1ODI3MTNjYzlhMDEzNDgxZWVlZjI1MzE5NWQ2NDQwMjBmNjM3ZWM0LjE1ODM0MDM2MjIuZ2l0LndhbGxpbnV4QGdtYWlsLmNvbT4KK0Zyb206IEFuZGVycyBXYWxsaW4gPHdhbGxpbnV4QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNSBNYXIgMjAyMCAxMToyMDowNCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHJ1biB0ZXN0IGFwcGxpY2F0aW9ucyBmcm9tIC5saWJzCisKK0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWMgY2hhbmdlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kZXJzIFdhbGxpbiA8d2FsbGludXhAZ21haWwuY29tPgorLS0tCisgdGVzdHMvbGliL3Rlc3RfcGx1Z2luIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvbGliL3Rlc3RfcGx1Z2luIGIvdGVzdHMvbGliL3Rlc3RfcGx1Z2luCitpbmRleCA2NTJjOTBjYy4uMWY4MTdjNTAgMTAwNzU1CistLS0gYS90ZXN0cy9saWIvdGVzdF9wbHVnaW4KKysrKyBiL3Rlc3RzL2xpYi90ZXN0X3BsdWdpbgorQEAgLTI2LDQgKzI2LDQgQEAgZmkKKyAjIHNoZWxsY2hlY2sgc291cmNlPS4uL3V0aWxzL3V0aWxzLnNoCisgc291cmNlICIkVVRJTFNTSCIKKyAKKy0iJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3BsdWdpbiIgIiR7QlRfVEVTVFNfQlVJTERESVJ9L2xpYi90ZXN0LXBsdWdpbi1wbHVnaW5zLy5saWJzIgorKyIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvcGx1Z2luIiAiJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3Rlc3QtcGx1Z2luLXBsdWdpbnMiCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MmZlMjIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyL3J1bi1wdGVzdApAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIyB1c2UgdGFyZ2V0PXJlY2hlY2sgaWYgeW91IHdhbnQgdG8gcmVjaGVjayBmYWlsaW5nIHRlc3RzCitbICIkdGFyZ2V0IiA9ICIiIF0gJiYgdGFyZ2V0PWNoZWNrCisKKyMgV2l0aG91dCAtLWlnbm9yZS1leGl0LCB0aGUgdGFwIGhhcm5lc3MgY2F1c2VzIGFueSBGQUlMcyB3aXRoaW4gYQorIyB0ZXN0IHBsYW4gdG8gcmFpc2UgRVJST1JzOyB0aGlzIGlzIGp1c3Qgbm9pc2UuCittYWtlYXJncz0iTE9HX0RSSVZFUl9GTEFHUz0tLWlnbm9yZS1leGl0IGFic190b3Bfc3JjZGlyPSRQV0QgYWJzX3RvcF9idWlsZGRpcj0kUFdEIEdSRVA9Z3JlcCBTRUQ9c2VkIFBZVEhPTj1weXRob24zIgorCitleGVjIG1ha2UgLUMgdGVzdHMgLWsgLXMgJG1ha2VhcmdzICR0YXJnZXQgMj4vZGV2L251bGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMl8yLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMl8yLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzkxYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiCkBAIC0wLDAgKzEsOTQgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZTIgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCitERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYWJlbHRyYWNlLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIgJiBMR1BMdjIuMSAmIEJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2YTQ1OGMxM2YxODM4NWI3YmM1MDY5YTZkN2IxNzZlIgorCitERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbnV4Zm91bmRhdGlvbi5vcmcvZGlhbW9uL2JhYmVsdHJhY2UuZ2l0O2JyYW5jaD1zdGFibGUtMi4wIFwKKwkgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKwkgICBmaWxlOi8vMDAwMS10ZXN0cy1kby1ub3QtcnVuLXRlc3QtYXBwbGljYXRpb25zLWZyb20tLmxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZzLmMtaW5pdGlhbGl6ZS1vdGhlcl9lbnRyeS5wYXRjaCBcCisJICAiCitTUkNSRVYgPSAiMzMwMDNjMzUyZWQ1NmFhNDllMGIzZGYyNzJiYmFiNmZhYzM2Y2FlOCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4yKFwuXGQrKSspJCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm1hbnBhZ2VzIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9iYWJlbHRyYWNlMi9wbHVnaW5zLyouYSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFiZWx0cmFjZTIvcGx1Z2lucy8qLnNvIgorCitBU05FRURFRCA9ICIiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2sgcHl0aG9uMyIKKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisgICAgbWFrZSAtQyB0ZXN0cyBhbGwKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMiCisKKyAgICAjIENvcHkgcmVxdWlyZWQgZmlsZXMgZnJvbSBzb3VyY2UgZGlyZWN0b3J5CisgICAgZm9yIGQgaW4gJChmaW5kICIke1N9L3Rlc3RzIiAtdHlwZSBkIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJZmluZCAiJHtTfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnB5IFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICouZXhwZWN0IFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworICAgIGRvbmUKKyAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvIgorICAgIGNwIC1hICR7U30vdGVzdHMvZGF0YS9jdGYtdHJhY2VzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGF0YS9jdGYtdHJhY2VzLworCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBpbnN0YWxsIC1EICIke0J9L3Rlc3RzL01ha2VmaWxlIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvIgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorCSAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisJICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCisJZG9uZQorICAgIGRvbmUKKworICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgc2VkIC1pIFwKKwkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyBcCisJIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwkgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisJIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorCSB7fSArCisKKyAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgorICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3NyYy9jbGkvIgorICAgIGxuIC1zICIke2JpbmRpcn0vYmFiZWx0cmFjZTIiICR7RH0ke1BURVNUX1BBVEh9L3NyYy9jbGkvCisKKyAgICAjIFJlbW92ZSBhcmNoaXRlY2h0dXJlIHNwZWNpZmljIHRlc3RmaWxlcworICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL3BsdWdpbnMvZmx0Lmx0dG5nLXV0aWxzLmRlYnVnLWluZm8vKgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlZjZkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuNSIKLVNSQ1JFViA9ICJkNDAxNGFlZWY0Yjg5YTRhYWFiMWFmNDJkN2IwZDE0M2Q2MmRhMGZmIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCi0KLUFTTkVFREVEID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyNDkyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS44LmJiCkBAIC0wLDAgKzEsOTggQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsdHJhY2Uub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorTElDRU5TRSA9ICJNSVQgJiBHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZiYTE1ZGQ3NmEyNDhlMWRkNTI2YmNhMGUyMTI1ZmEiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGludXhmb3VuZGF0aW9uLm9yZy9kaWFtb24vYmFiZWx0cmFjZS5naXQ7YnJhbmNoPXN0YWJsZS0xLjUgXAorCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgIgorU1JDUkVWID0gIjA1NGE1NGFlMTBiMDFhMjcxYWZjNGYxOTQ5NmMwNDFiMTBmYjQxNGMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+MShcLlxkKykrKSQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK0FTTkVFREVEID0gIiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayIKKworYWRkdGFzayBkb19wYXRjaF9wdGVzdF9wYXRoIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKK2RvX3BhdGNoX3B0ZXN0X3BhdGggKCkgeworICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBhYnNfdG9wX3NyY2RpciAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBhYnNfdG9wX3NyY2RpclxAOiR7UFRFU1RfUEFUSH06JyAke2Z9CisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIGFic190b3BfYnVpbGRkaXIgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAYWJzX3RvcF9idWlsZGRpclxAOiR7UFRFU1RfUEFUSH06JyAke2Z9CisgICAgZG9uZQorICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBHUkVQICR7U30vdGVzdHMpOyBkbworCXNlZCAtaSAnczpcQEdSRVBcQDpncmVwOicgJHtmfQorICAgIGRvbmUKKworICAgIGZvciBmIGluICQoZ3JlcCAtbCAtciBTRUQgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAU0VEXEA6c2VkOicgJHtmfQorICAgIGRvbmUKK30KKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisgICAgbWFrZSAtQyB0ZXN0cyBhbGwKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgIyBDb3B5IHJlcXVpcmVkIGZpbGVzIGZyb20gc291cmNlIGRpcmVjdG9yeQorICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlcjsgZG8KKwlpbnN0YWxsIC1EICIke1N9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCisgICAgZG9uZQorICAgIGluc3RhbGwgLWQgIiRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY3RmLXRyYWNlcy8iCisgICAgY3AgLWEgJHtTfS90ZXN0cy9jdGYtdHJhY2VzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY3RmLXRyYWNlcy8KKworICAgICMgQ29weSB0aGUgdGVzdHMgZGlyZWN0b3J5IHRyZWUgYW5kIHRoZSBleGVjdXRhYmxlcyBhbmQKKyAgICAjIE1ha2VmaWxlcyBmb3VuZCB3aXRoaW4uCisgICAgaW5zdGFsbCAtRCAiJHtCfS90ZXN0cy9NYWtlZmlsZSIgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyIKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisJaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKworCXRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKwkgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgorCWZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICouc2ggXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisgICAgZG9uZQorCisgICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbworCSAgICBjcCAke0J9L3Rlc3RzLyRkLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2BkaXJuYW1lICRkYC8kZgorCWRvbmUKKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1EICR7Qn0vZm9ybWF0cy9jdGYvbWV0YWRhdGEvLmxpYnMvY3RmLXBhcnNlci10ZXN0IFwKKwkgICAgJHtEfSR7UFRFU1RfUEFUSH0vZm9ybWF0cy9jdGYvbWV0YWRhdGEvY3RmLXBhcnNlci10ZXN0CisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJIHNlZCAtaSBcCisJIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgXAorCSAtZSAnLyQoY2hlY2tfU0NSSVBUUykvcy9eLyMvJyBcCisJIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKwkgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisJIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKwkgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorCSB7fSArCisKKyAgICAjIFJlbW92ZSBwYXRoIHRvIGJhYmVsdHJhY2UuCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yICJeQkFCRUxUUkFDRV9CSU4iICR7RH0ke1BURVNUX1BBVEh9KTsgZG8KKwlzZWQgLWkgJ3M6XkJBQkVMVFJBQ0VfQklOLio6QkFCRUxUUkFDRV9CSU49L3Vzci9iaW4vYmFiZWx0cmFjZTonICR7Zn0KKyAgICBkb25lCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yICJeQlRCSU4iICR7RH0ke1BURVNUX1BBVEh9KTsgZG8KKwlzZWQgLWkgJ3M6XkJUQklOLio6QlRCSU49L3Vzci9iaW4vYmFiZWx0cmFjZTonICR7Zn0KKyAgICBkb25lCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg5YTNiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU0VDVElPTiA9ICJkZXZlbCIKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgotREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NjEzZDFmOGE5NTg3YmQ3YjM2NjE5MTgzMDM2NGIzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IG1vZHVsZQotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybXxyaXNjdikuKi1saW51eCcKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzYxOGZiNjQ2NTE0ZGZjMWJmOTEwY2ZkN2NkYTQyNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y5MWUzOWIyZThlNDZkOGJiYmEyYjRjOGMxNjE0ZjFmYjM4MDYxMWNkMWExZmNjYzFkMTg1OWJlMjYxMTJmMSIKLQotZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCi0KLUVYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKLQlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKLX0KLQotcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKLSAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJkZXZ1cHN0cmVhbTp0YXJnZXQiCi1MSUNfRklMRVNfQ0hLU1VNX2NsYXNzLWRldnVwc3RyZWFtID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDYxM2QxZjhhOTU4N2JkN2IzNjYxOTE4MzAzNjRiMyIKLURFRkFVTFRfUFJFRkVSRU5DRV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICItMSIKLVNSQ19VUklfY2xhc3MtZGV2dXBzdHJlYW0gPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy1tb2R1bGVzO2JyYW5jaD1zdGFibGUtMi4xMCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiNjI0YWNhNWQ3NTA3ZmJkMTFlYTRhMWE0NzRjM2FhMTAzMWJkOWEzMSIKLVBWX2NsYXNzLWRldnVwc3RyZWFtID0gIjIuMTAuMTArZ2l0JHtTUkNQVn0iCi1TX2NsYXNzLWRldnVwc3RyZWFtID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWX0ZPUk1BVCA/PSAibHR0bmdfZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZmYwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIKQEAgLTAsMCArMSw0MyBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgorREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNmODgyZDQzMWRjMGYzMmYxZjQ0YzA3MDdhYTQxMTI4IgorCitpbmhlcml0IG1vZHVsZQorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybXxyaXNjdikuKi1saW51eCcKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmUzYmM4Y2ZiMjY0ZmExM2YzNzQ2MThiNDZmMTcwZTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE0MjI0MDgxM2I4ZmQxZDAwMTgzNWNkNmY1ZWM2ODdmN2Q3ZjNiMjYwNzBkNGUyMTYwNGMzNWE1MWE2NDQxZCIKKworZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKKwlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKK30KKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKKyAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJkZXZ1cHN0cmVhbTp0YXJnZXQiCitMSUNfRklMRVNfQ0hLU1VNX2NsYXNzLWRldnVwc3RyZWFtID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zZjg4MmQ0MzFkYzBmMzJmMWY0NGMwNzA3YWE0MTEyOCIKK0RFRkFVTFRfUFJFRkVSRU5DRV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICItMSIKK1NSQ19VUklfY2xhc3MtZGV2dXBzdHJlYW0gPSAiZ2l0Oi8vZ2l0Lmx0dG5nLm9yZy9sdHRuZy1tb2R1bGVzO2JyYW5jaD1zdGFibGUtMi4xMSBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMTdjNDEzOTUzNjAzZjA2M2YyYTlkNmMzNzg4YmVjOTE0Y2U2Zjk1NSIKK1BWX2NsYXNzLWRldnVwc3RyZWFtID0gIjIuMTEuMitnaXQke1NSQ1BWfSIKK1NfY2xhc3MtZGV2dXBzdHJlYW0gPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVZfRk9STUFUID89ICJsdHRuZ19naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1Ta2lwLXdoZW4tdGVzdGFwcC1pcy1ub3QtcHJlc2VudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzlmN2U0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEwICswLDAgQEAKLUZyb20gOTVjMjdlNmFjY2VhZWRhNTVjNzI5YjllOTJlNTk0MzIyYWRlZjEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLURhdGU6IFdlZCwgMyBBcHIgMjAxOSAxNjozMToxOCAtMDQwMAotU3ViamVjdDogW1BBVENIIGx0dG5nLXRvb2xzXSBTa2lwIHdoZW4gdGVzdGFwcCBpcyBub3QgcHJlc2VudAotCi1XZSBleHBlY3QgbHR0bmctdXN0IGRvIGJlIHByZXNlbnQsIHRoaXMgaXMgYSB3cm9uZyBhc3N1bXB0aW9ucy4KLQotVGhpcyBpcyBhIHF1aWNrIGZpeC4gVGhlIHJlYWwgZml4IGlzIHRvIGVpdGhlciBkZXRlY3QgYXQgcnVudGltZQotbHR0bmctdXN0IHN1cHBvcnQgb3IgYXQgYnVpbGQgdGltZSAoSEFWRV9MSUJMVFROR19VU1RfQ1RMKS4KLQotVGhpcyBwcmV2ZW50IGhhbmcgZm9yIG1ha2UgY2hlY2sgZG9uZSBvbiBhIGJ1aWxkIGNvbmZpZ3VyZWQgd2l0aAotLS13aXRob3V0LWx0dG5nLXVzdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0gCi1SZWFzb246IFRoaXMgcGF0Y2ggaXMgaW5hcHByb3ByaWF0ZSBmb3IgdXBzdHJlYW0gZm9yIDIuMTAgc3RhYmxlIHJlbGVhc2UgCi1zaW5jZSB3ZSBkbyBub3QgYmFja3BvcnQgInN1cGVyZmljaWFsIiBmaXggdG8gdGhlIHRlc3Qgc3VpdGUuIFdlIGRvIAotYmFja3BvcnQgd2hlbiBhIHRlc3QgaXMgYnJva2VuLiBUaGUgZmFjdCB0aGF0IG9uIC0td2l0aG91dC1sdHRuZy11c3QgCi1oYW5nIGlzIG5vdCBhICJicm9rZW4iIHRlc3QgcGVyLXNlZS4gU3RpbGwsIGEgdmFyaWF0aW9uIG9mIHRoaXMgZml4IHdpbGwgCi1iZSB1cHN0cmVhbWVkIGluIG91ciBtYXN0ZXIgYnJhbmNoIGFuZCBwb3NzaWJseSAyLjExLiBUaGUgdXBzdHJlYW1lZCAKLXZlcnNpb24gd2lsbCBzcGxpdCB0aGUgdGVzdCBpbiBrZXJuZWwvdXN0IHRlc3QgYW5kIHNraXAgdGhlbSBhdCB0aGUgCi1idWlsZCBzeXN0ZW0gbGV2ZWwuIFRoaXMgcGF0Y2ggaXMgbW9yZSBzdWNjaW5jdC4KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9jcmFzaC90ZXN0X2NyYXNoICAgICAgIHwgIDQgKysKLSAuLi4vcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24gfCAgNCArKwotIC4uLi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIgICAgICAgICB8IDIxICsrKystLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rICB8IDI5ICsrKysrLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtICAgICAgIHwgIDIgLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCAgICB8ICA0ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0ICAgICAgICAgIHwgIDQgKysKLSAuLi4vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgICAgICAgfCAgNCArKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbWkvdGVzdF9taSAgICAgICAgICAgICB8ICA0ICsrCi0gLi4uL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgIHwgMTggKysrLS0KLSAuLi4vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdCAgfCAgNCArKwotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0ICB8ICAyICstCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0IHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZCAgfCAgNyArKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCAgICB8ICA4ICsrKwotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZSAgICB8ICA3ICsrCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QgIHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfbG9uZyAgfCAgMiArLQotIC4uLi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nICAgICAgICB8ICAyICstCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QgICAgIHwgIDIgKy0KLSAuLi4vc3RyZWFtaW5nL3Rlc3RfaGlnaF90aHJvdWdocHV0X2xpbWl0cyAgICAgfCAgMiArLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0ICAgICB8ICAyICstCi0gLi4uL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQgICAgIHwgIDIgKy0KLSAuLi4vdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplICAgICAgfCAgMiArLQotIC4uLi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkICAgICAgICB8IDY3ICsrKysrKysrKystLS0tLS0tLS0KLSAyNSBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2ggYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLWluZGV4IDhjNjJjNTEzZC4uM2NiZTk3Njg4IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9jcmFzaC90ZXN0X2NyYXNoCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLUBAIC0zNSw2ICszNSwxMCBAQCBOVU1fVEVTVFM9NzcKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIEdsb2JhbCBkZWNsYXJhdGlvbiBmb3Igc2ltcGxpZmljYXRpb24KLSBMVFROR19DUkFTSD0kVEVTVERJUi8uLi9zcmMvYmluL2x0dG5nLWNyYXNoLyRDUkFTSF9CSU4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi1pbmRleCA5NDljZDQxZGYuLjQyZTRkNzJmYiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbgotQEAgLTMwLDYgKzMwLDEwIEBAIE5VTV9URVNUUz0xNDkKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBmdW5jdGlvbiBlbmFibGVfdXN0X2x0dG5nX2FsbF9ldmVudF9leGNsdXNpb24oKQotIHsKLSAJc2Vzc19uYW1lPSIkMSIKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlciBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi1pbmRleCAxNjNiMzIxODIuLjFlOGRhNjMwYiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlcgotQEAgLTQxOCwxMiArNDE4LDE4IEBAIGlzc3VlXzM1Nl9maWx0ZXIrPSJpbnRmaWVsZCA+IDQgJiYgaW50ZmllbGQgPiA1ICYmICIKLSBpc3N1ZV8zNTZfZmlsdGVyKz0iaW50ZmllbGQgPiA2ICYmIGludGZpZWxkID4gNyAmJiAiCi0gaXNzdWVfMzU2X2ZpbHRlcis9ImludGZpZWxkID4gOCB8fCBpbnRmaWVsZCA+IDAiCi0gCi0rQklOX05BTUU9Imdlbi11c3QtZXZlbnRzIgotKwotK3NraXBfdXN0PTEKLStpZiBbICEgLXggIiRDVVJESVIvJEJJTl9OQU1FIiBdOyB0aGVuCi0rCXNraXBfdXN0PTAKLSsJc2tpcCAwICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIiAkTlVNX1VTVF9URVNUUwotK2ZpCi0rCi0gc3RhcnRfbHR0bmdfc2Vzc2lvbmQKLSAKLSAjIyMgVVNUIFRFU1RTCi0gCi0tQklOX05BTUU9Imdlbi11c3QtZXZlbnRzIgotLQotIEtJUktfS1JBVVNTX1RFU1RTPSgKLSAJIyB0aGUgdGVzdHMgYmVsb3cgd2VyZSB3cml0dGVuIGJ5IEtpcmsgS3JhdXNzIGluIHRoaXMgYXJ0aWNsZToKLSAJIyBodHRwOi8vd3d3LmRyZG9iYnMuY29tL2FyY2hpdGVjdHVyZS1hbmQtZGVzaWduL21hdGNoaW5nLXdpbGRjYXJkcy1hbi1lbXBpcmljYWwtd2F5LXRvLXQvMjQwMTY5MTIzCi1AQCAtODk3LDkgKzkwMyw2IEBAIFVTVF9TVFJfRklMVEVSUz0oCi0gCUVORAotICkKLSAKLS1pZiBbICEgLXggIiRDVVJESVIvJEJJTl9OQU1FIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotLWZpCi0gCi0gSUZTPSIkT0xESUZTIgotIAotQEAgLTkxMCw2ICs5MTMsMTAgQEAgaT0wCi0gd2hpbGUgdHJ1ZTsgZG8KLSAJdmFsaWRhdG9yPSIke1VTVF9GSUxURVJTWyRpXX0iCi0gCi0rCWlmIFsgJHNraXBfdXN0IC1lcSAwIF07IHRoZW4KLSsJCWJyZWFrCi0rCWZpCi0rCi0gCWlmIFsgIiR2YWxpZGF0b3IiID0gRU5EIF07IHRoZW4KLSAJCWJyZWFrCi0gCWZpCi1AQCAtOTI5LDYgKzkzNiwxMCBAQCBpPTAKLSB3aGlsZSB0cnVlOyBkbwotIAl2YWxpZGF0b3I9IiR7VVNUX1NUUl9GSUxURVJTWyRpXX0iCi0gCi0rCWlmIFsgJHNraXBfdXN0IC1lcSAwIF07IHRoZW4KLSsJCWJyZWFrCi0rCWZpCi0rCi0gCWlmIFsgIiR2YWxpZGF0b3IiID0gRU5EIF07IHRoZW4KLSAJCWJyZWFrCi0gCWZpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotaW5kZXggZTgxZDZlZDI0Li44NDliN2U3MWYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sKLUBAIC0yNyw2ICsyNyw5IEBAIENIQU5ORUxfTkFNRT0idGVzdGNoYW4iCi0gSEVBTFRIX0NIRUNLX0JJTj0iaGVhbHRoX2NoZWNrIgotIE5VTV9URVNUUz0xNwotIFNMRUVQX1RJTUU9MzAKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi1AQCAtNzYsMTUgKzc5LDE5IEBAIGZ1bmN0aW9uIHRlc3RfdGhyZWFkX29rCi0gCSRDVVJESVIvJEhFQUxUSF9DSEVDS19CSU4gPiAke1NURE9VVF9QQVRIfSAyPiAke1NUREVSUl9QQVRIfQotIAlyZXBvcnRfZXJyb3JzCi0gCi0tCWRpYWcgIldpdGggVVNUIGNvbnN1bWVyIGRhZW1vbnMiCi0tCWNyZWF0ZV9sdHRuZ19zZXNzaW9uX25vX291dHB1dCAkU0VTU0lPTl9OQU1FCi0tCWVuYWJsZV91c3RfbHR0bmdfZXZlbnRfb2sgJFNFU1NJT05fTkFNRSAkVVNUX0VWRU5UX05BTUUgJENIQU5ORUxfTkFNRQotLQlzdGFydF9sdHRuZ190cmFjaW5nX29rICRTRVNTSU9OX05BTUUKLS0JZGVzdHJveV9sdHRuZ19zZXNzaW9uX29rICRTRVNTSU9OX05BTUUKLSsJc2tpcCAkc2tpcF91c3QgIlVzdCBkb2VzIG5vdCBzZWVtcyB0byBiZSBzdXBwb3J0ZWQiICI1IiB8fAotKwl7Ci0rCQlkaWFnICJXaXRoIFVTVCBjb25zdW1lciBkYWVtb25zIgotKwkJY3JlYXRlX2x0dG5nX3Nlc3Npb25fbm9fb3V0cHV0ICRTRVNTSU9OX05BTUUKLSsJCWVuYWJsZV91c3RfbHR0bmdfZXZlbnRfb2sgJFNFU1NJT05fTkFNRSAkVVNUX0VWRU5UX05BTUUgJENIQU5ORUxfTkFNRQotKwkJc3RhcnRfbHR0bmdfdHJhY2luZ19vayAkU0VTU0lPTl9OQU1FCi0rCQlkZXN0cm95X2x0dG5nX3Nlc3Npb25fb2sgJFNFU1NJT05fTkFNRQotIAotLQkjIENoZWNrIGhlYWx0aCBzdGF0dXMKLS0JJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0tCXJlcG9ydF9lcnJvcnMKLSsKLSsJCSMgQ2hlY2sgaGVhbHRoIHN0YXR1cwotKwkJJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0rCQlyZXBvcnRfZXJyb3JzCi0rCX0KLSAKLSAJc2tpcCAkaXNyb290ICJSb290IGFjY2VzcyBpcyBuZWVkZWQuIFNraXBwaW5nIGtlcm5lbCBjb25zdW1lciBoZWFsdGggY2hlY2sgdGVzdC4iICI1IiB8fAotIAl7Ci1AQCAtMTQxLDYgKzE0OCwxMiBAQCBlbHNlCi0gCWlzcm9vdD0wCi0gZmkKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlza2lwX3VzdD0wCi0rZWxzZQotKwlza2lwX3VzdD0xCi0rZmkKLSsKLSB0ZXN0X3RocmVhZF9vawotIAotIHJtIC1yZiAke0hFQUxUSF9QQVRIfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotaW5kZXggNDYxODZkMzgzLi5kYjc0ZGU4ZDUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotQEAgLTE2LDkgKzE2LDcgQEAgTElWRT0kKHRvcF9idWlsZGRpcikvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9zZXNzaW9uLiQoT0JKRVhUKSBcCi0gbm9pbnN0X1BST0dSQU1TID0gbGl2ZV90ZXN0Ci0gRVhUUkFfRElTVCA9IHRlc3Rfa2VybmVsIHRlc3RfbHR0bmdfa2VybmVsCi0gCi0taWYgSEFWRV9MSUJMVFROR19VU1RfQ1RMCi0gRVhUUkFfRElTVCArPSB0ZXN0X3VzdCB0ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgdGVzdF9sdHRuZ191c3QKLS1lbmRpZgotIAotIGxpdmVfdGVzdF9TT1VSQ0VTID0gbGl2ZV90ZXN0LmMKLSBsaXZlX3Rlc3RfTERBREQgPSAkKExJQlRBUCkgJChMSUJDT01NT04pICQoTElCUkVMQVlEKSAkKExJQlNFU1NJT05EX0NPTU0pIFwKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLWluZGV4IDA2MDE3ZDAxZC4uYmU5YjNkN2Y3IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLUBAIC0zOCw2ICszOCwxMCBAQCBOVU1fVEVTVFM9MTIKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci1pbmRleCAwMzg0YTcwNmYuLmFkZDUyMWJmYyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci1AQCAtMzYsNiArMzYsMTAgQEAgRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gZWNobyAiJFRFU1RfREVTQyIKLSAKLSBmdW5jdGlvbiBzZXR1cF9saXZlX3RyYWNpbmcoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3RfdHJhY2VmaWxlX2NvdW50Ci1pbmRleCA2ZGEzNjhmYzYuLjEwNTA0ZjhjNiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLUBAIC0zNiw2ICszNiwxMCBAQCBESVI9JChyZWFkbGluayAtZiAkVEVTVERJUikKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBlY2hvICIkVEVTVF9ERVNDIgotIAotIGZ1bmN0aW9uIHNldHVwX2xpdmVfdHJhY2luZygpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi1pbmRleCA0OGRkYTdkYTYuLjJjYzMwYjI5YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbWkvdGVzdF9taQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi1AQCAtNjEsNiArNjEsMTAgQEAgTlVNX1RFU1RTPTIyOAotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICNPdmVyd3JpdGUgdGhlIGx0dG5nX2JpbiB0byBnZXQgbWkgb3V0cHV0Ci0gTFRUTkdfQklOPSJsdHRuZyAtLW1pIHhtbCIKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLWluZGV4IDBhMDVlYTZhMC4uMjliMGY2MmZhIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLUBAIC01Miw2ICs1MiwxMSBAQCBwbGFuX3Rlc3RzICROVU1fVEVTVFMKLSAKLSBwcmludF90ZXN0X2Jhbm5lciAiJFRFU1RfREVTQyIKLSAKLStza2lwX3VzdD0xCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJc2tpcF91c3Q9MAotK2ZpCi0rCi0gYXBwX3BpZHM9KCkKLSAKLSBmdW5jdGlvbiBrZXJuZWxfZXZlbnRfZ2VuZXJhdG9yX3Rvb2dsZV9zdGF0ZQotQEAgLTQ2OCwxMCArNDczLDE1IEBAIGZ1bmN0aW9uIHRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbiAoKQotIH0KLSAKLSAKLS1URVNUUz0oCi0tCXRlc3RfbXVsdGlfYXBwX3VzdAotLQl0ZXN0X29uX3JlZ2lzdGVyX2V2YWx1YXRpb25fdXN0Ci0tKQotK1RFU1RTPSgpCi0raWYgWyAkc2tpcF91c3QgLWVxICIxIiBdOyB0aGVuCi0rCVRFU1RTKz0oCi0rCQl0ZXN0X211bHRpX2FwcF91c3QKLSsJCXRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbl91c3QKLSsJKQotK2Vsc2UKLSsJc2tpcCAwICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVEVTVF9VU1QKLStmaQotIAotIGlmIFsgIiQoaWQgLXUpIiA9PSAiMCIgXTsgdGhlbgotIAlURVNUUys9KAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotaW5kZXggODk0MWU0NzZkLi5lYjJlMTVjYWQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl91c3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotQEAgLTQ2LDYgKzQ2LDEwIEBAIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGZ1bmN0aW9uIHVzdF9ldmVudF9nZW5lcmF0b3JfdG9vZ2xlX3N0YXRlCi0gewotIAl1c3RfZXZlbnRfZ2VuZXJhdG9yX3N1c3BlbmRlZD0kKCh1c3RfZXZlbnRfZ2VuZXJhdG9yX3N1c3BlbmRlZD09MCkpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tbWV0YWRhdGEvdGVzdF91c3QKLWluZGV4IGI3ZjFhZjFkOC4uMzEyYzhhNDBkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTMzCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gbHR0bmdfY3JlYXRlX3Nlc3Npb25fdXJpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotaW5kZXggNDg2YjlhNTYwLi44ZDQ1NWIyNmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QKLUBAIC0zNCw3ICszNCw3IEBAIE5VTV9URVNUUz0xMQotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIHRlc3RfdXN0X2xvY2FsICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfYXV0b2xvYWQKLWluZGV4IDdlZTVlOTkwNi4uZWMzNzZjZmIzIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotQEAgLTIxLDYgKzIxLDkgQEAgQ1VSRElSPSQoZGlybmFtZSAkMCkvCi0gQ09ORklHX0RJUj0iJHtDVVJESVJ9L2NvbmZpZ3VyYXRpb24iCi0gVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotIGV4cG9ydCBMVFROR19TRVNTSU9OX0NPTkZJR19YU0RfUEFUSD0kKHJlYWRsaW5rIC1tICR7VEVTVERJUn0uLi9zcmMvY29tbW9uL2NvbmZpZy8pCi0rVEVTVEFQUF9QQVRIPSIkVEVTVERJUi91dGlscy90ZXN0YXBwIgotK1RFU1RBUFBfTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rVEVTVEFQUF9CSU49IiRURVNUQVBQX1BBVEgvJFRFU1RBUFBfTkFNRS8kVEVTVEFQUF9OQU1FIgotIAotIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotQEAgLTI4LDYgKzMxLDEwIEBAIE5VTV9URVNUUz05Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotaW5kZXggNWUzOGI0NmI2Li5iNmZkZDgxOTIgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2xvYWQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotQEAgLTIwLDYgKzIwLDEwIEBAIFRFU1RfREVTQz0iTG9hZCBzZXNzaW9uKHMpIgotIENVUkRJUj0kKGRpcm5hbWUgJDApLwotIENPTkZJR19ESVI9IiR7Q1VSRElSfS9jb25maWd1cmF0aW9uIgotIFRFU1RESVI9JENVUkRJUi8uLi8uLi8uLi8KLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0rCi0gZXhwb3J0IExUVE5HX1NFU1NJT05fQ09ORklHX1hTRF9QQVRIPSQocmVhZGxpbmsgLW0gJHtURVNURElSfS4uL3NyYy9jb21tb24vY29uZmlnLykKLSAKLSBTRVNTSU9OX05BTUU9ImxvYWQtNDIiCi1AQCAtMzEsNiArMzUsMTAgQEAgTlVNX1RFU1RTPTY3Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotaW5kZXggYzVmNmIxMzQxLi5jZmFmNjdiN2EgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X3NhdmUKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotQEAgLTIzLDYgKzIzLDkgQEAgVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotIFNFU1NJT05fTkFNRT0ic2F2ZS00MiIKLSBDSEFOTkVMX05BTUU9ImNoYW4tc2F2ZSIKLSBFVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0rVEVTVEFQUF9QQVRIPSIkVEVTVERJUi91dGlscy90ZXN0YXBwIgotK1RFU1RBUFBfTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rVEVTVEFQUF9CSU49IiRURVNUQVBQX1BBVEgvJFRFU1RBUFBfTkFNRS8kVEVTVEFQUF9OQU1FIgotIAotIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotQEAgLTMwLDYgKzMzLDEwIEBAIE5VTV9URVNUUz00MQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gIyBNVVNUIHNldCBURVNURElSIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucwotIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9mYXN0Ci1pbmRleCBlZGI0MzVjNTIuLjVhNjhlYzU2ZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLUBAIC0yMyw3ICsyMyw3IEBAIFRFU1RfQklOPSJ1c3RfdGVzdCIKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRDVVJESVIvJFRFU1RfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotIGZpCi0gCi0gLi8kQ1VSRElSLyRURVNUX0JJTiAkTlJfU05BUFNIT1QKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfbG9uZwotaW5kZXggOWUxYTBjMjYyLi5hZmEwMTlmNmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi1AQCAtMjMsNyArMjMsNyBAQCBURVNUX0JJTj0idXN0X3Rlc3QiCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkQ1VSRElSLyRURVNUX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIHRlc3QgZm91bmQ6ICRURVNUX0JJTiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIHRlc3QgZm91bmQ6ICRURVNUX0JJTiIKLSBmaQotIAotIC4vJENVUkRJUi8kVEVTVF9CSU4gJE5SX1NOQVBTSE9UCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi1pbmRleCA5M2IwOTU3ZjMuLjY5MjkxYWI0ZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X3N0cmVhbWluZwotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi1AQCAtMzcsNyArMzcsNyBAQCBOVU1fVEVTVFM9NzUKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBzbmFwc2hvdF9hZGRfb3V0cHV0ICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotaW5kZXggNzU1Y2VmOWUwLi45MmY5ZjZjZmYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdXN0X3Rlc3QKLUBAIC0zNCw3ICszNCw3IEBAIFRSQUNFX1BBVEg9JChta3RlbXAgLWQpCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gIyBOZWVkIHRoZSBudW1iZXIgb2Ygc25hcHNob3QgdG8gZG8uCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi1pbmRleCAzMmMzZjFmMmIuLmY1NDE3ODkyMyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfaGlnaF90aHJvdWdocHV0X2xpbWl0cwotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi1AQCAtMzgsNyArMzgsNyBAQCBOVU1fVEVTVFM9MTA0Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gc2V0X2J3X2xpbWl0Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotaW5kZXggYTVkNWI1ZTkyLi5lMWRkOThlZTcgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QKLUBAIC0zNCw3ICszNCw3IEBAIE5VTV9URVNUUz0xNgotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIGx0dG5nX2NyZWF0ZV9zZXNzaW9uX3VyaQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotaW5kZXggNmFkYTg1ODBmLi43NTUzYzdkMWYgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotQEAgLTMzLDcgKzMzLDcgQEAgUEFHRV9TSVpFPSQoZ2V0Y29uZiBQQUdFX1NJWkUpCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gZW5hYmxlX2x0dG5nX2NoYW5uZWxfY291bnRfbGltaXQgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZSBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi1pbmRleCAzZGRkYmU2MTMuLjEwODk0ODdmZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZQotQEAgLTMzLDcgKzMzLDcgQEAgTlVNX1RFU1RTPTY2Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gZW5hYmxlX2x0dG5nX2NoYW5uZWxfc2l6ZV9saW1pdCAoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotaW5kZXggNjFlYTY3YTcyLi45MjFhMjMwMWQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3dpbGRjYXJkL3Rlc3RfZXZlbnRfd2lsZGNhcmQKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotQEAgLTk3LDQyICs5Nyw0NyBAQCBwcmludF90ZXN0X2Jhbm5lciAiJFRFU1RfREVTQyIKLSAKLSBzdGFydF9sdHRuZ19zZXNzaW9uZAotIAotLWRpYWcgIlRlc3QgVVNUIHdpbGRjYXJkIgotLQotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgbmV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlza2lwX3VzdD0wCi0rZWxzZQotKwlza2lwX3VzdD0xCi0gZmkKLSAKLS1FVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0rc2tpcCAkc2tpcF91c3QgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVVNUX1RFU1RTIHx8Ci0rewotKwlkaWFnICJUZXN0IFVTVCB3aWxkY2FyZCIKLSAKLS0jIG5vbi1tYXRjaGluZwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwOmFiYyonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKmFiYycKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqeionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqXConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnXCoqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyo6KnRwdGUqcycKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICd0cCoqdHBUZXN0JwotKwlFVkVOVF9OQU1FPSJ0cDp0cHRlc3QiCi0gCi0tIyBtYXRjaGluZwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwdGVzdConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKioqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKip0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGUqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cConCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZXN0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyo6KnRwdGUqdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0KnAqOip0KmUqcyp0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0KnAqOip0KmUqcyp0KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHAqKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0ZXN0JwotKwkjIG5vbi1tYXRjaGluZwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICd0cDphYmMqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqYWJjJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqeionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnXCoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqOip0cHRlKnMnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwKip0cFRlc3QnCi0rCi0rCSMgbWF0Y2hpbmcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHAqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cDp0cHRlc3QqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKioqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKnRwdGVzdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGUqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlKnQnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3QqcCo6KnQqZSpzKnQnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0KnAqOip0KmUqcyp0KicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHAqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0ZXN0JwotK30KLSAKLSBpZiBbICIkKGlkIC11KSIgPT0gIjAiIF07IHRoZW4KLSAJaXNyb290PTEKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1jaGVjay1mb3ItZ2V0dGlkLUFQSS1kdXJpbmctY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDk0Y2VlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDY5YzYyZjVmM2NjNDI0YjdkZDBjOGU0MDk3NzQzYjM5YTljNDgzMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNyBKdWwgMjAxOSAwODo0ODoxMyAtMDcwMAotU3ViamVjdDogW2x0dG5nLXRvb2xzXVtQQVRDSF0gY2hlY2sgZm9yIGdldHRpZCBBUEkgZHVyaW5nIGNvbmZpZ3VyZQotCi1BZGQgc3VwcG9ydCBmb3IgZ2V0dGlkKCkgcHJvdmlkZWQgYnkgZ2xpYmMgMi4zMCsKLQotU2luY2UgdmVyc2lvbiAyLjMwIGdsaWJjIHByb3ZpZGVzIGdldHRpZCBhbmQgaXQgY2F1c2VzIGNvbmZsaWN0cyB3aXRoCi1sb2NhbGx5IGRlZmluZWQgZ2V0dGlkKCkuIFVzZSB0aGUgbG9jYWwgZGVmaW5pdGlvbiBvZgotZ2V0dGlkIG9ubHkgaWYgc3lzdGVtIGdldHRpZCBpcyBub3QgYXZhaWxhYmxlLgotCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1ibG9iX3BsYWluO2Y9TkVXUztoYj1IRUFEPFBhc3RlPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICB8IDIgKy0KLSBzcmMvY29tbW9uL2NvbXBhdC90aWQuaCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDdiOTlmNWMuLmU0YmQ4MmMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE5MCw3ICsxOTAsNyBAQCBBQ19DSEVDS19IRUFERVJTKFsgXAotICMgQmFzaWMgZnVuY3Rpb25zIGNoZWNrCi0gQUNfQ0hFQ0tfRlVOQ1MoWyBcCi0gCWF0ZXhpdCBiemVybyBjbG9ja19nZXR0aW1lIGR1cDIgZmRhdGFzeW5jIGZscyBmdHJ1bmNhdGUgXAotLQlnZXRob3N0YnluYW1lIGdldGhvc3RuYW1lIGdldHBhZ2VzaXplIGxvY2FsdGltZV9yIG1lbWNociBtZW1zZXQgXAotKwlnZXRob3N0YnluYW1lIGdldGhvc3RuYW1lIGdldHBhZ2VzaXplIGdldHRpZCBsb2NhbHRpbWVfciBtZW1jaHIgbWVtc2V0IFwKLSAJbWtkaXIgbXVubWFwIHB1dGVudiByZWFscGF0aCBybWRpciBzb2NrZXQgc3RyY2hyIHN0cmNzcG4gc3RyZHVwIFwKLSAJc3RybmNhc2VjbXAgc3RybmR1cCBzdHJubGVuIHN0cnBicmsgc3RycmNociBzdHJzdHIgc3RydG9sIHN0cnRvdWwgXAotIAlzdHJ0b3VsbCBkaXJmZCBnZXRob3N0YnluYW1lMiBnZXRpcG5vZGVieW5hbWUgZXBvbGxfY3JlYXRlMSBcCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb21wYXQvdGlkLmggYi9zcmMvY29tbW9uL2NvbXBhdC90aWQuaAotaW5kZXggNDBmNTYyZi4uYWEwN2E4NSAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi0rKysgYi9zcmMvY29tbW9uL2NvbXBhdC90aWQuaAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaWZuZGVmIExUVE5HX1RJRF9ICi0gI2RlZmluZSBMVFROR19USURfSAotIAotKyNpZiAhSEFWRV9HRVRUSUQKLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHN5c2NhbGwuaD4KLSAjZW5kaWYKLUBAIC00Nyw1ICs0OCw1IEBAIHN0YXRpYyBpbmxpbmUgcGlkX3QgZ2V0dGlkKHZvaWQpCi0gCXJldHVybiBnZXRwaWQoKTsKLSB9Ci0gI2VuZGlmCi0tCi0rI2VuZGlmIC8qIEhBVkVfR0VUVElEICovCi0gI2VuZGlmIC8qIExUVE5HX1RJRF9IICovCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMDhiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGFiMjM4YzIxM2ZhYzE5MDk3MmY1NWU3M2NmM2UwYmIxYzc4NDZlYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMTY6NTI6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBzdHJpcCBhIGhlbHBlciBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvTWFrZWZpbGUuYW0gYi90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCitpbmRleCAwM2Y1ZDVhLi5kMTJjMzQzIDEwMDY0NAorLS0tIGEvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbQorQEAgLTEyLDcgKzEyLDcgQEAgdXNlcnNwYWNlX3Byb2JlX2VsZl9iaW5hcnlfTERBREQgPSBsaWJmb28ubGEKKyBsaWJmb28uc3RyaXA6IGxpYmZvby5sYQorIAkkKE9CSkNPUFkpIC0tc3RyaXAtYWxsIC5saWJzL2xpYmZvby5zbworIAorLWFsbC1sb2NhbDogbGliZm9vLnN0cmlwCisrYWxsLWxvY2FsOgorIAlAaWYgWyB4IiQoc3JjZGlyKSIgIT0geCIkKGJ1aWxkZGlyKSIgXTsgdGhlbiBcCisgCQlmb3Igc2NyaXB0IGluICQoRVhUUkFfRElTVCk7IGRvIFwKKyAJCQljcCAtZiAkKHNyY2RpcikvJCRzY3JpcHQgJChidWlsZGRpcik7IFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmMxNGVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYzY5YjY4ZTVjMDNmMWQyNjAwMjVmYjFkZDlhYjczNDVlMzFlMTVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNCBKYW4gMjAyMCAxODowMzoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9yZWdyZXNzaW9uOiBkaXNhYmxlIHRoZSB0b29scy9saXZlIHRlc3RzCisKK1RoZXkgaGF2ZSBiZWVuIGZvdW5kIHRvIHNwb3JhZGljYWxseSBmYWlsOyB0aGUgaXNzdWUgaGFzIGJlZW4KK3JlcG9ydGVkIHVwc3RyZWFtIGFuZCB0aGV5IHdpbGwgd29yayB0byBpbnZlc3RpZ2F0ZSBhbmQgZml4OgoraHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9pc3N1ZXMvMTIxNworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIHdvcmtpbmcgb24gYSByZWFsIGZpeF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbSB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbSBiL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KK2luZGV4IDczZWI5ZjcuLmI5MmJkYmQgMTAwNjQ0CistLS0gYS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtCitAQCAtOSwxNCArOSwxMCBAQCBURVNUUyA9IHRvb2xzL2ZpbHRlcmluZy90ZXN0X2ludmFsaWRfZmlsdGVyIFwKKyAJdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyIFwKKyAJdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0IFwKKyAJdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rIFwKKy0JdG9vbHMvbGl2ZS90ZXN0X3VzdCBcCistCXRvb2xzL2xpdmUvdGVzdF91c3RfdHJhY2VmaWxlX2NvdW50IFwKKy0JdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCBcCisgCXRvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfY291bnQgXAorIAl0b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUgXAorIAl0b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24gXAorIAl0b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCBcCistCXRvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgXAorIAl0b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlIFwKKyAJdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZCBcCisgCXRvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg0YTA3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMi1GaXgtY2hlY2stZm9yLWx0dG5nLW1vZHVsZXMtcHJlc2VuY2UtYmVmb3JlLXRlc3RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIDU4ZTRkY2NlNDhiNDhiNjhiNjViZmZjMGNkNTFkOWUyNmI0NGM3NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBSYWpvdHRlIDxqb25hdGhhbi5yYWpvdHRlLWp1bGllbkBlZmZpY2lvcy5jb20+Ci1EYXRlOiBXZWQsIDIyIE1heSAyMDE5IDE2OjQ0OjU0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeDogY2hlY2sgZm9yIGx0dG5nIG1vZHVsZXMgcHJlc2VuY2UgYmVmb3JlIHRlc3RpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMubHR0bmcub3JnL3BpcGVybWFpbC9sdHRuZy1kZXYvMjAxOS1NYXkvMDI4OTg3Lmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLS0tLQotIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi1pbmRleCAyOWIwZjYyLi5hNmJhZjY1IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLUBAIC00ODQsNiArNDg0LDcgQEAgZWxzZQotIGZpCi0gCi0gaWYgWyAiJChpZCAtdSkiID09ICIwIiBdOyB0aGVuCi0rCXZhbGlkYXRlX2x0dG5nX21vZHVsZXNfcHJlc2VudAotIAlURVNUUys9KAotIAl0ZXN0X211bHRpX2FwcF9rZXJuZWwKLSAJdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uX2tlcm5lbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjEwLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhNmQxOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IENvbnRyb2wiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggdHJhY2UgdG9vbGtpdCBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIFwKLXRvIGV4dHJhY3QgcHJvZ3JhbSBleGVjdXRpb24gZGV0YWlscyBmcm9tIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIFwKLWFuZCBpbnRlcnByZXQgdGhlbS4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZDdmYzQ0OTZhYWNmMzdkOTBkZjkwYjkwYjBjYWMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTBmMGQ3MTUwMGU2YTU3ZmQyNGQ4MjVmMzMyNDJiOWNhIgotCi1ERVBFTkRTID0gImxpYnVyY3UgcG9wdCBsaWJ4bWwyIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGJhc2ggZ2F3ayBiYWJlbHRyYWNlIHByb2NwcyBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBjb3JldXRpbHMgdXRpbC1saW51eCBrbW9kIGx0dG5nLW1vZHVsZXMgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbXVzbC11dGlscyIKLSMgYmFiZWxzdGF0cy5wbCB3YW50cyBnZXRvcHQtbG9uZwotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWdldG9wdC1sb25nIgotCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKLSIKLVBBQ0tBR0VDT05GSUcgPz89ICJsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLWJpbmRpbmdzICR7UFlUSE9OX09QVElPTn0sLHB5dGhvbjMgc3dpZy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2x0dG5nLXVzdF0gPSAiLS13aXRoLWx0dG5nLXVzdCwgLS13aXRob3V0LWx0dG5nLXVzdCwgbHR0bmctdXN0IgotUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItLXdpdGgta21vZCwgLS13aXRob3V0LWttb2QsIGttb2QiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9hcmMgPSAibHR0bmctdXN0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtY2hlY2stZm9yLWx0dG5nLW1vZHVsZXMtcHJlc2VuY2UtYmVmb3JlLXRlc3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jaGVjay1mb3ItZ2V0dGlkLUFQSS1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc4MDRkMTBlNGNhZGUzODFlMjQxNjAxZjYwNDczNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ3MWViZTAwYzVkOTg1Yzc0ZjMwZTk3YjYxNGU5MDk1NzNjYmQ5Mjc2Yzg1ZTA1ZDk1NTdhMGI4MTdhMTMxMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibHR0bmctc2Vzc2lvbmQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8qICR7ZGF0YWRpcn0veG1sL2x0dG5nIFwKLSAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCi0KLSMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAotIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgotIyBQeXRob24gbW9kdWxlIG5lZWRzIHRvIGtlZXAgX2x0dG5nLnNvCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJleGVjIGRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJleGVjIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvY29uZmlndXJhdGlvbi9sb2FkLTQyKi5sdHRuZyA7IGRvCi0gICAgICAgIGluc3RhbGwgLUQgIiR7Qn0vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKLSAgICBkb25lCi0KLSAgICBmb3IgZiBpbiBjb25maWcvdGFwLWRyaXZlci5zaCBjb25maWcvdGVzdC1kcml2ZXIgc3JjL2NvbW1vbi9jb25maWcvc2Vzc2lvbi54c2Qgc3JjL2NvbW1vbi9taS1sdHRuZy0zLjAueHNkOyBkbwotICAgICAgICBpbnN0YWxsIC1EICIke1N9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCi0gICAgZG9uZQotCi0gICAgIyBQcmV2ZW50ICdtYWtlIGNoZWNrJyBmcm9tIHJlY3Vyc2luZyBpbnRvIG5vbi10ZXN0IHN1YmRpcmVjdG9yaWVzLgotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IC4qIVNVQkRJUlMgPSB0ZXN0cyEnICIke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSIKLQotICAgICMgV2UgZG9uJ3QgbmVlZCB0aGVzZQotICAgIHNlZCAtaSAtZSAnL2Rpc3Rfbm9pbnN0X1NDUklQVFMgPSAvLC9eJC9kJyAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCi0KLSAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3V0aWxzCi0gICAgc2VkIC1pIC1lICdzIWFtX19hcHBlbmRfMSA9IC4gdXRpbHMhYW1fX2FwcGVuZF8xID0gLiAhJyBcCi0gICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKLQotICAgICMgQ29weSB0aGUgdGVzdHMgZGlyZWN0b3J5IHRyZWUgYW5kIHRoZSBleGVjdXRhYmxlcyBhbmQKLSAgICAjIE1ha2VmaWxlcyBmb3VuZCB3aXRoaW4uCi0gICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1ub3QgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKLSAgICAgICAgZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiBcCi0gICAgICAgICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKwotICAgICAgICAjIFRha2UgYWxsIC5weSBzY3JpcHRzIGZvciB0ZXN0cyB1c2luZyB0aGUgcHl0aG9uIGJpbmRpbmdzLgotICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtdHlwZSBmIC1uYW1lICIqLnB5IiBcCi0gICAgICAgICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKwotICAgICAgICB0ZXN0IC1yICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIiAmJiBcCi0gICAgICAgICAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCi0gICAgZG9uZQotCi0gICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgZm9yIGYgaW4gJChmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIC1wcmludGYgJyVQICcpIDsgZG8KLSAgICAgICAgICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCi0gICAgICAgICAgICBjYXNlICRmIGluCi0gICAgICAgICAgICAgICAgKi5zbykKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8KLSAgICAgICAgICAgICAgICAgICAgbG4gLXMgIC4uLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLyRmCi0gICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFueSBycGF0aC9ydW5wYXRoIHRvIHBhc3MgUUEgY2hlY2suCi0gICAgICAgICAgICAgICAgICAgIGNocnBhdGggLS1kZWxldGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKLSAgICAgICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgIGVzYWMKLSAgICAgICAgZG9uZQotICAgIGRvbmUKLQotICAgICMKLSAgICAjIFVzZSB0aGUgdmVyc2lvbmVkIGxpYnMgb2YgbGlibHR0bmctdXN0LWRsLgotICAgICMKLSAgICB1c3RkbD0iJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi91c3QvdXN0LWRsL3Rlc3RfdXN0LWRsLnB5IgotICAgIGlmIFsgLWUgJHVzdGRsIF07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzITpsaWJsdHRuZy11c3QtZGwuc28hOmxpYmx0dG5nLXVzdC1kbC5zby4wIScgJHVzdGRsCi0gICAgZmkKLQotICAgIGluc3RhbGwgJHtCfS90ZXN0cy91bml0L2luaV9jb25maWcvc2FtcGxlLmluaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L2luaV9jb25maWcvCi0KLSAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKLSAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKLSAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCi0KLSAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKLSAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKLSAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCi0gICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKLSAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKLSAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAotICAgICAgICB7fSArCi0KLSAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0gICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCi0KLSAgICAjCi0gICAgIyBOZWVkIHRvIHN0b3AgZ2VuZXJhdGVkIGJpbmFyaWVzIGZyb20gcmVidWlsZGluZyBieSByZW1vdmluZyB0aGVpciBzb3VyY2UgZGVwZW5kZW5jaWVzCi0gICAgIwotICAgIHNlZCAtZSAncyNcKF50ZXN0LipPQkpFQ1RTLj1cKSNkaXNhYmxlXDEjZycgXAotICAgICAgICAtZSAncyNcKF50ZXN0LipERVBFTkRFTkNJRVMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKlNPVVJDRVMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKkxEQURELj1cKSNkaXNhYmxlXDEjZycgXAotICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L01ha2VmaWxlCi0KLSAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgotICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgbHR0bmctY3Jhc2g7IGRvCi0gICAgICAgIGV4ZWRpcj0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9IgotICAgICAgICBpbnN0YWxsIC1kICIkZXhlZGlyIgotICAgICAgICBjYXNlICIkcHJvZyIgaW4KLSAgICAgICAgICAgIGx0dG5nLWNvbnN1bWVyZCkKLSAgICAgICAgICAgICAgICBsbiAtcyAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICAgIGxuIC1zICIke2JpbmRpcn0vJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmExOWVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTEuMi5iYgpAQCAtMCwwICsxLDE2NiBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBDb250cm9sIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IHRyYWNlIHRvb2xraXQgaXMgYSBzdWl0ZSBvZiB0b29scyBkZXNpZ25lZCBcCit0byBleHRyYWN0IHByb2dyYW0gZXhlY3V0aW9uIGRldGFpbHMgZnJvbSB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSBcCithbmQgaW50ZXJwcmV0IHRoZW0uIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWQ3ZmM0NDk2YWFjZjM3ZDkwZGY5MGI5MGIwY2FjMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKKworREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBiYXNoIGdhd2sgYmFiZWx0cmFjZSBwcm9jcHMgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgY29yZXV0aWxzIHV0aWwtbGludXgga21vZCBsdHRuZy1tb2R1bGVzIHNlZCBweXRob24zLWNvcmUiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1tdXNsID0gIiBtdXNsLXV0aWxzIgorIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rbW9kLCAtLXdpdGhvdXQta21vZCwga21vZCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FyYyA9ICJsdHRuZy11c3QiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1kby1ub3Qtc3RyaXAtYS1oZWxwZXItbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vbHR0bmctc2Vzc2lvbmQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLXJlZ3Jlc3Npb24tZGlzYWJsZS10aGUtdG9vbHMtbGl2ZS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4ZWQ3OGY3ZmE0MjM1NDc3ZWE1NzdlNDhiM2NkMjQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzNjQ3NzMwNWIyNWY2NWM1ZGQyMmRiOTE2MTI4N2QzMGEzMDljZTg2OGI2MTgwODU3YjFmZDFmYjVlNmE1NmIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImx0dG5nLXNlc3Npb25kLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvKiAke2RhdGFkaXJ9L3htbC9sdHRuZyBcCisgICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgorCisjIFNpbmNlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAke2xpYmRpcn0vbHR0bmcvbGliZXhlYyB3ZSBtYXRjaCAKKyMgdGhlIGxpYmV4ZWMgaW5zYW5lIHRlc3Qgc28gc2tpcCBpdC4KKyMgUHl0aG9uIG1vZHVsZSBuZWVkcyB0byBrZWVwIF9sdHRuZy5zbworSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKKworUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmZvby5zbyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGZvciBmIGluIE1ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3V0aWxzL3V0aWxzLnNoIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL2xvYWQtNDIqLmx0dG5nIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL2NvbmZpZ3VyYXRpb24vbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF9oZWFsdGguc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9tZXRhZGF0YS91dGlscy5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JvdGF0aW9uL3JvdGF0ZV91dGlscy5zaDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciBzcmMvY29tbW9uL2NvbmZpZy9zZXNzaW9uLnhzZCBzcmMvY29tbW9uL21pLWx0dG5nLTMuMC54c2Q7IGRvCisgICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisKKyAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgorCisgICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCisgICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKKworICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKKyAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgICMgVGFrZSBhbGwgLnB5IHNjcmlwdHMgZm9yIHRlc3RzIHVzaW5nIHRoZSBweXRob24gYmluZGluZ3MuCisgICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC10eXBlIGYgLW5hbWUgIioucHkiIFwKKyAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisgICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKKyAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworICAgICAgICBmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbworICAgICAgICAgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKKyAgICAgICAgICAgIGNhc2UgJGYgaW4KKyAgICAgICAgICAgICAgICAqLnNvKQorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLworICAgICAgICAgICAgICAgICAgICBsbiAtcyAgLi4vJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKKyAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgYW55IHJwYXRoL3J1bnBhdGggdG8gcGFzcyBRQSBjaGVjay4KKyAgICAgICAgICAgICAgICAgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgZXNhYworICAgICAgICBkb25lCisgICAgZG9uZQorCisgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5CisKKyAgICAjCisgICAgIyBVc2UgdGhlIHZlcnNpb25lZCBsaWJzIG9mIGxpYmx0dG5nLXVzdC1kbC4KKyAgICAjCisgICAgdXN0ZGw9IiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vdXN0L3VzdC1kbC90ZXN0X3VzdC1kbC5weSIKKyAgICBpZiBbIC1lICR1c3RkbCBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncyE6bGlibHR0bmctdXN0LWRsLnNvITpsaWJsdHRuZy11c3QtZGwuc28uMCEnICR1c3RkbAorICAgIGZpCisKKyAgICBpbnN0YWxsICR7Qn0vdGVzdHMvdW5pdC9pbmlfY29uZmlnL3NhbXBsZS5pbmkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdW5pdC9pbmlfY29uZmlnLworCisgICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzCisgICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gdG9vbHMgIVNVQkRJUlMgPSAhJyBcCisgICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlIgorCisgICAgIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSBNYWtlZmlsZXMgZHVyaW5nIHRlc3QgcnVucywgYW5kCisgICAgIyBzaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICBzZWQgLWkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyAtZSAnLyU6ICUuaW4vLC9eJC9kJyBcCisgICAgICAgIC1lICcvZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXFwvZCcgXAorICAgICAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyBcCisgICAgICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyBcCisgICAgICAgIC1lICdzL15hbGwtYW06LiovYWxsLWFtOi8nIFwKKyAgICAgICAge30gKworCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorICAgICAgICB0b3VjaCAtciAiJHtCfS9NYWtlZmlsZSIge30gKworCisgICAgIworICAgICMgTmVlZCB0byBzdG9wIGdlbmVyYXRlZCBiaW5hcmllcyBmcm9tIHJlYnVpbGRpbmcgYnkgcmVtb3ZpbmcgdGhlaXIgc291cmNlIGRlcGVuZGVuY2llcworICAgICMKKyAgICBzZWQgLWUgJ3MjXChedGVzdC4qT0JKRUNUUy49XCkjZGlzYWJsZVwxI2cnIFwKKyAgICAgICAgLWUgJ3MjXChedGVzdC4qREVQRU5ERU5DSUVTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipTT1VSQ0VTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipMREFERC49XCkjZGlzYWJsZVwxI2cnIFwKKyAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdW5pdC9NYWtlZmlsZQorCisgICAgIyBTdWJzdGl0dXRlIGxpbmtzIHRvIGluc3RhbGxlZCBiaW5hcmllcy4KKyAgICBmb3IgcHJvZyBpbiBsdHRuZyBsdHRuZy1yZWxheWQgbHR0bmctc2Vzc2lvbmQgbHR0bmctY29uc3VtZXJkIGx0dG5nLWNyYXNoOyBkbworICAgICAgICBleGVkaXI9IiR7RH0ke1BURVNUX1BBVEh9L3NyYy9iaW4vJHtwcm9nfSIKKyAgICAgICAgaW5zdGFsbCAtZCAiJGV4ZWRpciIKKyAgICAgICAgY2FzZSAiJHByb2ciIGluCisgICAgICAgICAgICBsdHRuZy1jb25zdW1lcmQpCisgICAgICAgICAgICAgICAgbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBsbiAtcyAiJHtiaW5kaXJ9LyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdC9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZmODUyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLURvbid0IGJ1aWxkIHRoZSBkb2MgZXhhbXBsZXMgLSB3ZSBkb24ndCBuZWVkIHRoZW0gYW5kIGluIGZhY3QgdGhleQotbmV2ZXIgc3VjY2Vzc2Z1bGx5IGJ1aWx0IGluIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2YgdGhlIGx0dG5nLXVzdAotcmVjaXBlIGFueXdheS4KLQotU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KLQotSW5kZXg6IGx0dG5nLXVzdC0yLjkuMS9kb2MvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsdHRuZy11c3QtMi45LjEub3JpZy9kb2MvTWFrZWZpbGUuYW0KLSsrKyBsdHRuZy11c3QtMi45LjEvZG9jL01ha2VmaWxlLmFtCi1AQCAtMSwzICsxLDMgQEAKLS1TVUJESVJTID0gLiBtYW4gZXhhbXBsZXMKLStTVUJESVJTID0gLiBtYW4KLSAKLSBkaXN0X2RvY19EQVRBID0gamF2YS1hZ2VudC50eHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYWFkMzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCi1ERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgotCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgbWFucGFnZXMgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImxpYnVyY3UgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59LWJpbiA9ICJweXRob24zLWNvcmUiCi0KLSMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGFmdGVyIHJlbmFtZQotUlBST1ZJREVTXyR7UE59ID0gImx0dG5nMi11c3QiCi1SUkVQTEFDRVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJDT05GTElDVFNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLQotUEUgPSAiMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy11c3QvbHR0bmctdXN0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLWx0dG5ndXN0LU1ha2VmaWxlLmFtLUFkZC1pbnN0YWxsLWxpYi10by1zZXR1cC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjBjODZhOWZhN2RjZmQwMjA1ZmI0MjU4NGEzMTBiMWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDZmOWVkOWIyMTk4ODU1YjFjN2ZjYmYxNWZlNTcyOTdlZTI1OTQwOWZmYTFiM2JhZDg3MzIxNDEyZDk4YmMzNSIKLQotQ1ZFX1BST0RVQ1QgPSAidXN0IgotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjMtYWdlbnRdID0gIi0tZW5hYmxlLXB5dGhvbi1hZ2VudCAke1BZVEhPTl9PUFRJT059LCAtLWRpc2FibGUtcHl0aG9uLWFnZW50LCBweXRob24zLCBweXRob24zIgotCi1GSUxFU18ke1BOfSArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0Ci0gICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZDBkZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTEuMS5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgVXNlcnNwYWNlIFRyYWNlciAyLngiCitERVNDUklQVElPTiA9ICJUaGUgTFRUbmcgVVNUIDIueCBwYWNrYWdlIGNvbnRhaW5zIHRoZSB1c2Vyc3BhY2UgdHJhY2VyIGxpYnJhcnkgdG8gdHJhY2UgdXNlcnNwYWNlIGNvZGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXN0IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2x0dG5nLXVzdCIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5NjNlYjM2NmI3ODEyNTJiMGJmMGZkZjE2MjRkOWU5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3NucHJpbnRmLmM7ZW5kbGluZT0zMjttZDU9ZDNkNTQ0OTU5ZDhhMzc4MmIyZTA3NDUxYmUwYTkwM2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvdmFyaW91cy5oO2VuZGxpbmU9MzE7bWQ1PTg5ZjI1MDliNmI0NjgyYzRmYzk1MjU1ZWVjNGFiZTQ0IgorCitQWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgbWFucGFnZXMgcHl0aG9uM25hdGl2ZQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW51bWEiCisKK0RFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCitSUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgorCitQRSA9ICIyIgorCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1sdHRuZ3VzdC1NYWtlZmlsZS5hbS1BZGQtaW5zdGFsbC1saWItdG8tc2V0dXAucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZGUwNGE4ZmYxZjBhNGVmZmEwOWE0MjYyMGVjNDA4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmJhYjk2M2Q2MDc0MWZmZDRkOGRkMGEyNDZmNmNmMTY4Y2RmZTNiMjM4NTc5OGJkOTA1NTBmNWYwYmJhODY5IgorCitDVkVfUFJPRFVDVCA9ICJ1c3QiCisKK1BBQ0tBR0VDT05GSUdbZXhhbXBsZXNdID0gIi0tZW5hYmxlLWV4YW1wbGVzLCAtLWRpc2FibGUtZXhhbXBsZXMsIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tweXRob24zLWFnZW50XSA9ICItLWVuYWJsZS1weXRob24tYWdlbnQgJHtQWVRIT05fT1BUSU9OfSwgLS1kaXNhYmxlLXB5dGhvbi1hZ2VudCwgcHl0aG9uMywgcHl0aG9uMyIKKworRklMRVNfJHtQTn0gKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAorICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2x0dG5nLWdlbi10cAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKaW5kZXggMDcwZDVlYy4uZDMzMWQxYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC01Miw3ICs1Miw3IEBACiAja2VybmVsIDMuMSsgc3VwcG9ydHMgV0VSUk9SIHRvIGRpc2FibGUgd2FybmluZ3MgYXMgZXJyb3JzCiBleHBvcnQgV0VSUk9SID0gIjAiCiAKLWRvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCitkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUGVybCBiaW5kaW5nCiBpbmNsdWRlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdwZXJmLXBlcmwuaW5jJywgJycsIGQpfQpAQCAtNzMsNiArNzMsOCBAQAogICAgIENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgQVJDSD0ke0FSQ0h9IFwKICAgICBDQz0iJHtDQ30iIFwKKyAgICBDQ0xEPSIke0NDfSIgXAorICAgIExEU0hBUkVEPSIke0NDfSAtc2hhcmVkIiBcCiAgICAgQVI9IiR7QVJ9IiBcCiAgICAgTEQ9IiR7TER9IiBcCiAgICAgRVhUUkFfQ0ZMQUdTPSItbGR3IiBcCkBAIC0xNDUsNiArMTQ3LDcgQEAKICAgICBzcmNfZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfS0VSTkVMX0RJUiIpCiAgICAgZGVzdF9kaXIgPSBkLmdldFZhcigiUyIpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RfZGlyKQorICAgIGJiLnV0aWxzLnBydW5lZGlyKGRlc3RfZGlyKQogICAgIGZvciBzIGluIHNvdXJjZXM6CiAgICAgICAgIHNyYyA9IG9lLnBhdGguam9pbihzcmNfZGlyLCBzKQogICAgICAgICBkZXN0ID0gb2UucGF0aC5qb2luKGRlc3RfZGlyLCBzKQpAQCAtMTYxLDcgKzE2NCw3IEBACiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgIyBJZiBidWlsZGluZyBhIG11bHRsaWIgYmFzZWQgcGVyZiwgdGhlIGluY29ycmVjdCBsaWJyYXJ5IHBhdGggd2lsbCBiZQogICAgICMgZGV0ZWN0ZWQgYnkgcGVyZiwgc2luY2UgaXQgdHJpZ2dlcnMgdmlhOiBpZmVxICgkKEFSQ0gpLHg4Nl82NCkuIEluIGEgMzIgYml0Ci0gICAgIyBidWlsZCwgd2l0aCBhIDY0IGJpdCBtdWx0aWxpYiwgdGhlIGFyY2ggd29uJ3QgbWF0Y2ggYW5kIHRoZSBkZXRlY3Rpb24gb2YgYSAKKyAgICAjIGJ1aWxkLCB3aXRoIGEgNjQgYml0IG11bHRpbGliLCB0aGUgYXJjaCB3b24ndCBtYXRjaCBhbmQgdGhlIGRldGVjdGlvbiBvZiBhCiAgICAgIyA2NCBiaXQgYnVpbGQgKGFuZCBsaWJyYXJ5KSBhcmUgbm90IGV4ZWN0ZWQuIFRvIGVuc3VyZSB0aGF0IGxpYnJhcmllcyBhcmUKICAgICAjIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBsb2NhdGlvbiwgd2UgY2FuIHVzZSB0aGUgd2VhayBhc3NpZ25tZW50IGluIHRoZQogICAgICMgY29uZmlnL01ha2VmaWxlLgpAQCAtMjM3LDExICsyNDAsOCBAQAogICAgIGZpCiAKICAgICAjIHVzZSAvdXNyL2Jpbi9lbnYgaW5zdGVhZCBvZiB2ZXJzaW9uIHNwZWNpZmljIHB5dGhvbgotICAgIGZvciBzIGluIGBmaW5kICR7U30vdG9vbHMvcGVyZi8gLW5hbWUgJyoucHknYCBzY3JpcHRzL2JwZl9oZWxwZXJzX2RvYy5weTsgZG8KLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL2VudiBweXRob24yLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCi0gICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24zLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCi0gICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24sL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKKyAgICBmb3IgcyBpbiBgZmluZCAke1N9L3Rvb2xzL3BlcmYvIC1uYW1lICcqLnB5J2AgYGZpbmQgJHtTfS9zY3JpcHRzLyAtbmFtZSAnYnBmX2hlbHBlcnNfZG9jLnB5J2A7IGRvCisgICAgICAgIHNlZCAtaSAtZSAicywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCIgJHtzfQogICAgIGRvbmUKIAogICAgICMgdW5pc3RkLmggY2FuIGJlIG91dCBvZiBzeW5jIGJldHdlZW4gbGliYy1oZWFkZXJzIGFuZCB0aGUgY2FwdHVyZWQgdmVyc2lvbiBpbiB0aGUgcGVyZiBzb3VyY2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKaW5kZXggNWJlOGQyMy4uN2I3YjM5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIKQEAgLTEsMTIgKzEsMTIgQEAKIFNVTU1BUlkgPSAiUG93ZXIgdXNhZ2UgdG9vbCIKIERFU0NSSVBUSU9OID0gIkxpbnV4IHRvb2wgdG8gZGlhZ25vc2UgaXNzdWVzIHdpdGggcG93ZXIgY29uc3VtcHRpb24gYW5kIHBvd2VyIG1hbmFnZW1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cDovLzAxLm9yZy9wb3dlcnRvcC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5sZXNzd2F0dHMub3JnLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL3Bvd2VydG9wLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hcHAuZGV2emluZy5jb20vcG93ZXJ0b3BidWdzL2J1Z3ppbGxhIgogREVQRU5EUyA9ICJuY3Vyc2VzIGxpYm5sIHBjaXV0aWxzIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIgogCi1TUkNfVVJJID0gImh0dHA6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vMDEub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG93bmxvYWRzL3Bvd2VydG9wLXYke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLXdha2V1cF94eHguaC1pbmNsdWRlLWxpbWl0cy5oLnBhdGNoIFwKICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU1MWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gZDMzMmI0ODAyNTdhYTk4YjYzZDM5YzNjOTQ4OTZhMTExNTM2ZjkzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxODozODoyNiArMDMwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRG8gbm90IGJ1aWxkIGFueXRoaW5nIGluIGhlbHAvIGFzIGl0IHJlcXVpcmVzIGl0c3Rvb2wuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBtZXNvbi5idWlsZCB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAzOTg2MjczLi5hZTJmNjVlIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY0LDcgKzE2NCw2IEBAIHN1YmRpcigndG9vbHMnKQotIHN1YmRpcigndGVzdHMnKQotIAotIHN1YmRpcignZGF0YScpCi0tc3ViZGlyKCdoZWxwJykKLSBzdWJkaXIoJ3BvJykKLSAKLSBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbi9wb3N0X2luc3RhbGwuc2gnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1ZGRhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotT24gdWNsaWJjIGVsZi5oIGRvZXMgbm90IGhhdmUgR05VIGV4dGVudGlvbnMgYnV0IHdlIG5lZWQgdGhpcyBkZWZpbmUKLXNvIHdlIGRlZmluZSBpdCBsb2NhbGx5IGlmIGl0cyBub3QgZ2V0dGluZyBpdCBmcm9tIGVsZi5oCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ2l0L2VsZnBhcnNlci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvbGliL3V0aWwvZWxmcGFyc2VyLmgJMjAxMS0wNy0xNiAxODo1Nzo0MS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBnaXQvbGliL3V0aWwvZWxmcGFyc2VyLmgJMjAxMS0wNy0xNiAyMDoyODo1NC43MzM4Mjk4OTUgLTA3MDAKLUBAIC0xNyw2ICsxNywxMCBAQAotICAqLwotICNpbmNsdWRlIDxnbGliLmg+Ci0gCi0rI2lmbmRlZiBOVF9HTlVfQlVJTERfSUQKLSsjZGVmaW5lIE5UX0dOVV9CVUlMRF9JRCAzCi0rI2VuZGlmCi0rCi0gdHlwZWRlZiBzdHJ1Y3QgRWxmU3ltIEVsZlN5bTsKLSB0eXBlZGVmIHN0cnVjdCBFbGZQYXJzZXIgRWxmUGFyc2VyOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjMyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyOTMzOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLXdpZGUgUGVyZm9ybWFuY2UgUHJvZmlsZXIgZm9yIExpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNwcm9mLmNvbSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NwLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9NDBlNTU1NzdlZjEyMmM4OGZlMjAwNTJhY2RhNjQ4NzUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdzZXR0aW5ncwotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZDFmYTlhZDIxNjQxOWQ3MjI3NzBjYTM2NzEzYWQzYWYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYzIyYTY5ZTQ2ODcwMWM1ZWM5MDM2ZTk2MGM2MjczYWZhMWVkNmE4OWRmMWY4ODlmZWQ0OTQxN2FkZDU1NTRkIgotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzNESVNUUk9GRUFUVVJFU30nLCAnZ3RrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRGVuYWJsZV9ndGs9dHJ1ZSwtRGVuYWJsZV9ndGs9ZmFsc2UsZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3N5c3Byb2ZkXSA9ICItRHdpdGhfc3lzcHJvZmQ9YnVuZGxlZCwtRHdpdGhfc3lzcHJvZmQ9bm9uZSxwb2xraXQiCi0KLVNPTElCUyA9ICIuc28iCi1GSUxFU19TT0xJQlNERVYgPSAiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzcHJvZmQnLCAnc3lzcHJvZjIuc2VydmljZScsICcnLCBkKX0iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggYWJiMmIzNy4uMTE2ZTgzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCkBAIC0xLDcgKzEsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjU3YzlhY2E5ZjFmZjMyYTZhZGQxMGUwMmVjZDMzYjczMTRmYWQ0OTkiCi1QViA9ICI0LjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiMDQ0YTA2NDA5ODVlZjAwN2MwYjJmYjZlYWY2NjBkOWQ1MTgwMGNkYSIKK1BWID0gIjQuMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1sZXQtY29uZmlndXJlLXdyaXRlLWEtcHl0aG9uLWxvY2F0aW9uLWludG8tdGgucGF0Y2ggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDY1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2gKQEAgLTAsMCArMSw3MTA0IEBACitGcm9tIGFlNTY0NjY1ZWMyNjFjZjEwNGRlNDk5YjFjZGRhMzU2NDA3MGZjNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE1OjQ2OjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhbHNhL3NvdW5kLyouaCBmb3IgZXh0ZXJuYWwgcHJvZ3JhbXMKKworVGhlIHJlY2VudCB1cGRhdGUgb2Ygc291bmQvKi5oIHRvIHN5bmMgd2l0aCB0aGUgbGF0ZXN0IExpbnVzIHVhcGkKK2ZpbGVzIGJyb2tlIHRoZSBidWlsZCBvZiBhbHNhLXRvb2xzIHByb2dyYW1zLiAgVGhlc2UgZmlsZXMgdXNlZCB0byBiZQorYSBtb2RpZmllZCB2ZXJzaW9uIG9mIExpbnV4IHNvdW5kLyogaGVhZGVyIGZpbGVzLCBzbyB0aGF0IHRoZXkgY291bGQKK2JlIGJ1aWx0IHdpdGhvdXQgTGludXggaGVhZGVycy4gIFRoZSBzcGVjaWFsIHByZWZpeCBsaWtlIF9fdXNlciBhbmQKK290aGVyIHRoaW5ncyB3ZXJlIHdvcmtlZCBhcm91bmQgdGhlcmUuCisKK1dlIG1heSBkbyB0aGF0IGFnYWluLCBidXQgYSBiZXR0ZXIgYXBwcm9hY2ggaXMgdG8gZml4IHRob3NlIHRoaW5ncyBpbgorTGludXgga2VybmVsIHVhcGkgc2lkZSwgd2hpbGUgd2Uga2VlcCB0aGUgbWluaW1hbCB3b3JrYXJvdW5kIGluCithbHNhLWxpYiBzdWNoIGFzIHRoZSBfX3UxNiBhbmQgY28gdHlwZSBkZWZpbml0aW9ucy4KKworVGhpcyBwYXRjaCBpcyBzdWNoIGFuIGF0dGVtcHQsIG5hbWVseToKKy0gS2VlcCB0aGUgb3JpZ2luYWwgJExJTlVYL3VhcGkvc291bmQvKi5oIGluIGluY2x1ZGUvc291bmQvdWFwaQorICBkaXJlY3RvcnkKKy0gVGhlICJmaXhlcyIgYXJlIGFwcGxpZWQgdG8gc29tZSB1YXBpIGhlYWRlcnMsIHNvIHRoYXQgdGhleSBkb24ndAorICBjb250YWluIExpbnV4LXNwZWNpZmljIHByZWZpeCBhbmQgdXNlIG9mIG9wYXF1ZSBzdHJ1Y3QgbGlrZQorICBzbmRfY3RsX2VsZW1faWQKKy0gVGhlIHVhcGkgaGVhZGVycyBhcmUgaW5jbHVkZWQgaW5kaXJlY3RseSBmcm9tIGluY2x1ZGUvc291bmQvKi5oCistIFNvbWUgaGVhZGVycyBoYXZlIGluY2x1c2lvbiBvZiB0eXBlX2NvbXBhdC5oIGZvciB0aGUgTGludXggdmFyaWFibGUKKyAgdHlwZXMgYW5kIHByZWZpeGVzCistIHR5cGVfY29tcGF0LmggdHJpZXMgdG8gdXNlIDxsaW51eC90eXBlcy5oPiB3aGVuIF9fbGludXhfXyBpcworICBkZWZpbmVkLCBpbnN0ZWFkIG9mIHRoZSBvd24gY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMKKworVGhlIGxhc3QgdHlwZSBtaWdodCBuZWVkIGEgYml0IG1vcmUgYWRqdXN0bWVudCBkZXBlbmRpbmcgb24gdGhlCitjb21waWxlciwgYnV0IGl0IGNhbiBiZSBmaXhlZCBsb2NhbGx5IHdpdGhvdXQgZGlzdHVyYmluZyBlbHNlLgorCitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCisgaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbSAgICAgICAgIHwgICAgNiArLQorIGluY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oICAgICAgICB8ICA2MTMgKy0tLS0tLS0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2Fzb2MuaCAgICAgICAgICAgICAgfCAgNjM0ICstLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvdW5kLmggICAgICAgICAgICB8IDEwMzkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oICAgICAgICAgfCAgMTM2ICstLS0KKyBpbmNsdWRlL3NvdW5kL2VtdTEwazEuaCAgICAgICAgICAgfCAgMzgzICstLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9oZHNwLmggICAgICAgICAgICAgIHwgIDExMyArLS0tCisgaW5jbHVkZS9zb3VuZC9oZHNwbS5oICAgICAgICAgICAgIHwgIDIzNCArLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oICAgICAgICAgIHwgIDEyNCArLS0tCisgaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaCAgICAgIHwgICAyMiArLQorIGluY2x1ZGUvc291bmQvdGx2LmggICAgICAgICAgICAgICB8ICAxMTggKy0tLQorIGluY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaCAgICAgICB8ICAgMTMgKworIGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbSAgICB8ICAgIDYgKworIGluY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmggICB8ICA2MTIgKysrKysrKysrKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oICAgICAgICAgfCAgNjMzICsrKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaCAgICAgICB8IDEwMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaCAgICB8ICAxMzUgKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmggICAgICB8ICAzOTUgKysrKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oICAgICAgICAgfCAgMTA5ICsrKworIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oICAgICAgICB8ICAyMzAgKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9zYjE2X2NzcC5oICAgICB8ICAxMjMgKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaCB8ICAgMjEgKworIGluY2x1ZGUvc291bmQvdWFwaS90bHYuaCAgICAgICAgICB8ICAxMTcgKysrKworIHNyYy90b3BvbG9neS90cGxnX2xvY2FsLmggICAgICAgICB8ICAgIDMgKy0KKyAyNSBmaWxlcyBjaGFuZ2VkLCAzNDUyIGluc2VydGlvbnMoKyksIDM0MDggZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvYXNlcXVlbmNlci5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS90bHYuaAorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxMTllZjYwMC4uODg2Zjg3YmMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTcwNyw3ICs3MDcsOCBAQCBpZiB0ZXN0ICEgLUwgIiRzcmNkaXIiL2luY2x1ZGUvYWxzYSA7IHRoZW4KKyBmaQorIAorIEFDX09VVFBVVChNYWtlZmlsZSBkb2MvTWFrZWZpbGUgZG9jL3BpY3R1cmVzL01ha2VmaWxlIGRvYy9kb3h5Z2VuLmNmZyBcCistCSAgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL01ha2VmaWxlIHNyYy9WZXJzaW9ucyBzcmMvTWFrZWZpbGUgXAorKwkgIGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9zb3VuZC9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUgXAorKwkgIHNyYy9WZXJzaW9ucyBzcmMvTWFrZWZpbGUgXAorICAgICAgICAgICBzcmMvY29udHJvbC9NYWtlZmlsZSBzcmMvbWl4ZXIvTWFrZWZpbGUgXAorIAkgIHNyYy9wY20vTWFrZWZpbGUgc3JjL3BjbS9zY29wZXMvTWFrZWZpbGUgXAorIAkgIHNyYy9yYXdtaWRpL01ha2VmaWxlIHNyYy90aW1lci9NYWtlZmlsZSBcCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbSBiL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KK2luZGV4IDk5YzQyMjExLi5jY2M3ZDI3MyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KKysrKyBiL2luY2x1ZGUvc291bmQvTWFrZWZpbGUuYW0KK0BAIC0xLDcgKzEsOSBAQAorK1NVQkRJUlMgPSB1YXBpCisrCisgYWxzYXNvdW5kaW5jbHVkZWRpciA9ICR7aW5jbHVkZWRpcn0vYWxzYS9zb3VuZAorIAorIGFsc2Fzb3VuZGluY2x1ZGVfSEVBREVSUyA9IGFzb3VuZF9mbS5oIGhkc3AuaCBoZHNwbS5oIHNiMTZfY3NwLmggXAorLQkJCSAgIHNzY2FwZV9pb2N0bC5oIGVtdTEwazEuaCB0eXBlX2NvbXBhdC5oIFwKKy0JCQkgICBhc29jLmggdGx2LmgKKysJCQkgICBzc2NhcGVfaW9jdGwuaCBlbXUxMGsxLmggIGFzb2MuaCB0bHYuaCBcCisrCQkJICAgdHlwZV9jb21wYXQuaAorIAorIG5vaW5zdF9IRUFERVJTID0gYXNvdW5kLmggYXNlcXVlbmNlci5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmggYi9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaAoraW5kZXggYTc1ZTE0ZWQuLmU1MzlhNzdlIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCitAQCAtMSw2MTIgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBNYWluIGhlYWRlciBmaWxlIGZvciB0aGUgQUxTQSBzZXF1ZW5jZXIKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk4LTE5OTkgYnkgRnJhbmsgdmFuIGRlIFBvbCA8ZnZkcG9sQGNvaWwuZGVtb24ubmw+CistICogICAgICAgICAgICAoYykgMTk5OC0xOTk5IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorLSNkZWZpbmUgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorLQorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKiogdmVyc2lvbiBvZiB0aGUgc2VxdWVuY2VyICovCistI2RlZmluZSBTTkRSVl9TRVFfVkVSU0lPTiBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDIpCistCistLyoqCistICogZGVmaW5pdGlvbiBvZiBzZXF1ZW5jZXIgZXZlbnQgdHlwZXMKKy0gKi8KKy0KKy0vKiogc3lzdGVtIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfcmVzdWx0CistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTVEVNCQkwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTVUxUCQkxCistCistLyoqIG5vdGUgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfbm90ZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEUJCTUKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT04JCTYKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT0ZGCQk3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZUFJFU1MJOAorLQkKKy0vKiogY29udHJvbCBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTExFUgkxMAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BHTUNIQU5HRQkxMQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NIQU5QUkVTUwkxMgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BJVENIQkVORAkxMwkvKio8IGZyb20gLTgxOTIgdG8gODE5MSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0wxNAkxNAkvKio8IDE0IGJpdCBjb250cm9sbGVyIHZhbHVlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9OUkVHUEFSQU0JMTUJLyoqPCAxNCBiaXQgTlJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVHUEFSQU0JMTYJLyoqPCAxNCBiaXQgUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKy0KKy0vKiogc3luY2hyb25pc2F0aW9uIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdQT1MJCTIwCS8qIFNvbmcgUG9zaXRpb24gUG9pbnRlciB3aXRoIExTQiBhbmQgTVNCIHZhbHVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdTRUwJCTIxCS8qIFNvbmcgU2VsZWN0IHdpdGggc29uZyBJRCBudW1iZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RRlJBTUUJCTIyCS8qIG1pZGkgdGltZSBjb2RlIHF1YXJ0ZXIgZnJhbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USU1FU0lHTgkyMwkvKiBTTUYgVGltZSBTaWduYXR1cmUgZXZlbnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlTSUdOCQkyNAkvKiBTTUYgS2V5IFNpZ25hdHVyZSBldmVudCAqLworLQkgICAgICAgIAorLS8qKiB0aW1lciBtZXNzYWdlcworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbAorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUQVJUCQkzMAkvKiBtaWRpIFJlYWwgVGltZSBTdGFydCBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVElOVUUJMzEJLyogbWlkaSBSZWFsIFRpbWUgQ29udGludWUgbWVzc2FnZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUT1AJCTMyCS8qIG1pZGkgUmVhbCBUaW1lIFN0b3AgbWVzc2FnZSAqLwkKKy0jZGVmaW5lCVNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElDSwkzMwkvKiBzZXQgdGljayBxdWV1ZSBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USU1FCTM0CS8qIHNldCByZWFsdGltZSBxdWV1ZSBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RFTVBPCQkzNQkvKiAoU01GKSBUZW1wbyBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMT0NLCQkzNgkvKiBtaWRpIFJlYWwgVGltZSBDbG9jayBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElDSwkJMzcJLyogbWlkaSBSZWFsIFRpbWUgVGljayBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUVVFVUVfU0tFVwkzOAkvKiBza2V3IHF1ZXVlIHRlbXBvICovCistCistLyoqIG90aGVycworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IG5vbmUKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9UVU5FX1JFUVVFU1QJNDAJLyogdHVuZSByZXF1ZXN0ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTRVQJCTQxCS8qIHJlc2V0IHRvIHBvd2VyLW9uIHN0YXRlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VOU0lORwkJNDIJLyogImFjdGl2ZSBzZW5zaW5nIiBldmVudCAqLworLQorLS8qKiBlY2hvIGJhY2ssIGtlcm5lbCBwcml2YXRlIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gYW55IHR5cGUKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9FQ0hPCQk1MAkvKiBlY2hvIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfT1NTCQk1MQkvKiBPU1MgcmF3IGV2ZW50ICovCistCistLyoqIHN5c3RlbSBzdGF0dXMgbWVzc2FnZXMgKGJyb2FkY2FzdCBmb3Igc3Vic2NyaWJlcnMpCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9hZGRyCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX1NUQVJUCTYwCS8qIG5ldyBjbGllbnQgaGFzIGNvbm5lY3RlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9FWElUCTYxCS8qIGNsaWVudCBoYXMgbGVmdCB0aGUgc3lzdGVtICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0NIQU5HRQk2MgkvKiBjbGllbnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NUQVJUCTYzCS8qIG5ldyBwb3J0IHdhcyBjcmVhdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9FWElUCTY0CS8qIHBvcnQgd2FzIGRlbGV0ZWQgZnJvbSBzeXN0ZW0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0NIQU5HRQk2NQkvKiBwb3J0IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCistCistLyoqIHBvcnQgY29ubmVjdGlvbiBjaGFuZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9jb25uZWN0CistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVUJTQ1JJQkVECTY2CS8qIHBvcnRzIGNvbm5lY3RlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfVU5TVUJTQ1JJQkVEIDY3CS8qIHBvcnRzIGRpc2Nvbm5lY3RlZCAqLworLQorLS8qIDcwLTg5OiAgc3ludGhlc2l6ZXIgZXZlbnRzIC0gb2Jzb2xldGVkICovCistCistLyoqIHVzZXItZGVmaW5lZCBldmVudHMgd2l0aCBmaXhlZCBsZW5ndGgKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBhbnkKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IwCQk5MAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjEJCTkxCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMgkJOTIKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IzCQk5MworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjQJCTk0CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNQkJOTUKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I2CQk5NgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjcJCTk3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOAkJOTgKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I5CQk5OQorLQorLS8qIDEwMC0xMTg6IGluc3RydW1lbnQgbGF5ZXIgLSBvYnNvbGV0ZWQgKi8KKy0vKiAxMTktMTI5OiByZXNlcnZlZCAqLworLQorLS8qIDEzMC0xMzk6IHZhcmlhYmxlIGxlbmd0aCBldmVudHMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X2V4dAorLSAqIChTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFIG11c3QgYmUgc2V0KQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU0VYCQkxMzAJLyogc3lzdGVtIGV4Y2x1c2l2ZSBkYXRhICh2YXJpYWJsZSBsZW5ndGgpICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQk9VTkNFCQkxMzEJLyogZXJyb3IgZXZlbnQgKi8KKy0vKiAxMzItMTM0OiByZXNlcnZlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIwCTEzNQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIxCTEzNgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIyCTEzNworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIzCTEzOAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVI0CTEzOQorLQorLS8qIDE1MC0xNTE6IGtlcm5lbCBldmVudHMgd2l0aCBxdW90ZSAtIERPIE5PVCB1c2UgaW4gdXNlciBjbGllbnRzICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX0VSUk9SCTE1MAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9RVU9URQkxNTEJLyogb2Jzb2xldGUgKi8KKy0KKy0vKiAxNTItMTkxOiByZXNlcnZlZCAqLworLQorLS8qIDE5Mi0yNTQ6IGhhcmR3YXJlIHNwZWNpZmljIGV2ZW50cyAqLworLQorLS8qIDI1NTogc3BlY2lhbCBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTkUJCTI1NQorLQorLQorLXR5cGVkZWYgdW5zaWduZWQgY2hhciBzbmRfc2VxX2V2ZW50X3R5cGVfdDsKKy0KKy0vKiogZXZlbnQgYWRkcmVzcyAqLworLXN0cnVjdCBzbmRfc2VxX2FkZHIgeworLQl1bnNpZ25lZCBjaGFyIGNsaWVudDsJLyoqPCBDbGllbnQgbnVtYmVyOiAgICAgICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBjbGllbnRzICovCistCXVuc2lnbmVkIGNoYXIgcG9ydDsJLyoqPCBQb3J0IHdpdGhpbiBjbGllbnQ6ICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBwb3J0cyAqLworLX07CistCistLyoqIHBvcnQgY29ubmVjdGlvbiAqLworLXN0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgeworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OworLX07CistCistCistI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19VTktOT1dOCTI1MwkvKiB1bmtub3duIHNvdXJjZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfU1VCU0NSSUJFUlMJMjU0CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHN1YnNjcmliZWQgcG9ydHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX0JST0FEQ0FTVAkyNTUJLyogc2VuZCBldmVudCB0byBhbGwgcXVldWVzL2NsaWVudHMvcG9ydHMvY2hhbm5lbHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9ESVJFQ1QJCTI1MwkvKiBkaXJlY3QgZGlzcGF0Y2ggKi8KKy0KKy0JLyogZXZlbnQgbW9kZSBmbGFnIC0gTk9URTogb25seSA4IGJpdHMgYXZhaWxhYmxlISAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfVElDSwkoMDw8MCkgLyogdGltZXN0YW1wIGluIGNsb2NrIHRpY2tzICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9SRUFMCSgxPDwwKSAvKiB0aW1lc3RhbXAgaW4gcmVhbCB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9NQVNLCSgxPDwwKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9BQlMJCSgwPDwxKQkvKiBhYnNvbHV0ZSB0aW1lc3RhbXAgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfUkVMCQkoMTw8MSkJLyogcmVsYXRpdmUgdG8gY3VycmVudCB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX01BU0sJKDE8PDEpCistCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX0ZJWEVECSgwPDwyKQkvKiBmaXhlZCBldmVudCBzaXplICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFCSgxPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUlVTUgkoMjw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAtIHVzZXIgbWVtb3J5IHNwYWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX01BU0sJKDM8PDIpCistCistI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTk9STUFMCSgwPDw0KQkvKiBub3JtYWwgcHJpb3JpdHkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9ISUdICQkoMTw8NCkJLyogZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZCBiZWZvcmUgb3RoZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTUFTSwkJKDE8PDQpCistCistCistCS8qIG5vdGUgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIHsKKy0JdW5zaWduZWQgY2hhciBjaGFubmVsOworLQl1bnNpZ25lZCBjaGFyIG5vdGU7CistCXVuc2lnbmVkIGNoYXIgdmVsb2NpdHk7CistCXVuc2lnbmVkIGNoYXIgb2ZmX3ZlbG9jaXR5OwkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworLQl1bnNpZ25lZCBpbnQgZHVyYXRpb247CQkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworLX07CistCistCS8qIGNvbnRyb2xsZXIgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIHsKKy0JdW5zaWduZWQgY2hhciBjaGFubmVsOworLQl1bnNpZ25lZCBjaGFyIHVudXNlZDEsIHVudXNlZDIsIHVudXNlZDM7CS8qIHBhZCAqLworLQl1bnNpZ25lZCBpbnQgcGFyYW07CistCXNpZ25lZCBpbnQgdmFsdWU7CistfTsKKy0KKy0JLyogZ2VuZXJpYyBzZXQgb2YgYnl0ZXMgKDEyeDggYml0KSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggeworLQl1bnNpZ25lZCBjaGFyIGRbMTJdOwkvKiA4IGJpdCB2YWx1ZSAqLworLX07CistCistCS8qIGdlbmVyaWMgc2V0IG9mIGludGVnZXJzICgzeDMyIGJpdCkgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiB7CistCXVuc2lnbmVkIGludCBkWzNdOwkvKiAzMiBiaXQgdmFsdWUgKi8KKy19OworLQorLQkvKiBleHRlcm5hbCBzdG9yZWQgZGF0YSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X2V4dCB7CistCXVuc2lnbmVkIGludCBsZW47CS8qIGxlbmd0aCBvZiBkYXRhICovCistCXZvaWQgKnB0cjsJCS8qIHBvaW50ZXIgdG8gZGF0YSAobm90ZTogbWF5YmUgNjQtYml0KSAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zZXFfcmVzdWx0IHsKKy0JaW50IGV2ZW50OwkJLyogcHJvY2Vzc2VkIGV2ZW50IHR5cGUgKi8KKy0JaW50IHJlc3VsdDsKKy19OworLQorLQorLXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB7CistCXVuc2lnbmVkIGludCB0dl9zZWM7CS8qIHNlY29uZHMgKi8KKy0JdW5zaWduZWQgaW50IHR2X25zZWM7CS8qIG5hbm9zZWNvbmRzICovCistfTsKKy0KKy10eXBlZGVmIHVuc2lnbmVkIGludCBzbmRfc2VxX3RpY2tfdGltZV90OwkvKiBtaWRpIHRpY2tzICovCistCistdW5pb24gc25kX3NlcV90aW1lc3RhbXAgeworLQlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CistCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOworLX07CistCistc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyB7CistCXVuc2lnbmVkIGludCB2YWx1ZTsKKy0JdW5zaWduZWQgaW50IGJhc2U7CistfTsKKy0KKy0JLyogcXVldWUgdGltZXIgY29udHJvbCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgeworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJCS8qIGFmZmVjdGVkIHF1ZXVlICovCistCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJCS8qIHJlc2VydmVkICovCistCXVuaW9uIHsKKy0JCXNpZ25lZCBpbnQgdmFsdWU7CQkvKiBhZmZlY3RlZCB2YWx1ZSAoZS5nLiB0ZW1wbykgKi8KKy0JCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHRpbWUgKi8KKy0JCXVuc2lnbmVkIGludCBwb3NpdGlvbjsJCS8qIHN5bmMgcG9zaXRpb24gKi8KKy0JCXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgc2tldzsKKy0JCXVuc2lnbmVkIGludCBkMzJbMl07CistCQl1bnNpZ25lZCBjaGFyIGQ4WzhdOworLQl9IHBhcmFtOworLX07CistCistCS8qIHF1b3RlZCBldmVudCAtIGluc2lkZSB0aGUga2VybmVsIG9ubHkgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgb3JpZ2luOwkJLyogb3JpZ2luYWwgc2VuZGVyICovCistCXVuc2lnbmVkIHNob3J0IHZhbHVlOwkJLyogb3B0aW9uYWwgZGF0YSAqLworLQlzdHJ1Y3Qgc25kX3NlcV9ldmVudCAqZXZlbnQ7CQkvKiBxdW90ZWQgZXZlbnQgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLQkvKiBzZXF1ZW5jZXIgZXZlbnQgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldmVudCB7CistCXNuZF9zZXFfZXZlbnRfdHlwZV90IHR5cGU7CS8qIGV2ZW50IHR5cGUgKi8KKy0JdW5zaWduZWQgY2hhciBmbGFnczsJCS8qIGV2ZW50IGZsYWdzICovCistCWNoYXIgdGFnOworLQkKKy0JdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIHNjaGVkdWxlIHF1ZXVlICovCistCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHNjaGVkdWxlIHRpbWUgKi8KKy0KKy0KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBzb3VyY2U7CS8qIHNvdXJjZSBhZGRyZXNzICovCistCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworLQorLQl1bmlvbiB7CQkJCS8qIGV2ZW50IGRhdGEuLi4gKi8KKy0JCXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgbm90ZTsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgY29udHJvbDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggcmF3ODsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHJhdzMyOworLQkJc3RydWN0IHNuZF9zZXFfZXZfZXh0IGV4dDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgcXVldWU7CistCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworLQkJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOworLQkJc3RydWN0IHNuZF9zZXFfY29ubmVjdCBjb25uZWN0OworLQkJc3RydWN0IHNuZF9zZXFfcmVzdWx0IHJlc3VsdDsKKy0JCXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHF1b3RlOworLQl9IGRhdGE7CistfTsKKy0KKy0KKy0vKgorLSAqIGJvdW5jZSBldmVudCAtIHN0b3JlZCBhcyB2YXJpYWJsZSBzaXplIGRhdGEKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9ldmVudF9ib3VuY2UgeworLQlpbnQgZXJyOworLQlzdHJ1Y3Qgc25kX3NlcV9ldmVudCBldmVudDsKKy0JLyogZXh0ZXJuYWwgZGF0YSBmb2xsb3dzIGhlcmUuICovCistfTsKKy0KKy0KKy0JLyogc3lzdGVtIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8geworLQlpbnQgcXVldWVzOwkJCS8qIG1heGltdW0gcXVldWVzIGNvdW50ICovCistCWludCBjbGllbnRzOwkJCS8qIG1heGltdW0gY2xpZW50cyBjb3VudCAqLworLQlpbnQgcG9ydHM7CQkJLyogbWF4aW11bSBwb3J0cyBwZXIgY2xpZW50ICovCistCWludCBjaGFubmVsczsJCQkvKiBtYXhpbXVtIGNoYW5uZWxzIHBlciBwb3J0ICovCistCWludCBjdXJfY2xpZW50czsJCS8qIGN1cnJlbnQgY2xpZW50cyAqLworLQlpbnQgY3VyX3F1ZXVlczsJCQkvKiBjdXJyZW50IHF1ZXVlcyAqLworLQljaGFyIHJlc2VydmVkWzI0XTsKKy19OworLQorLQorLQkvKiBzeXN0ZW0gcnVubmluZyBpbmZvcm1hdGlvbiAqLworLXN0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbyB7CistCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkJLyogY2xpZW50IGlkICovCistCXVuc2lnbmVkIGNoYXIgYmlnX2VuZGlhbjsJLyogMSA9IGJpZy1lbmRpYW4gKi8KKy0JdW5zaWduZWQgY2hhciBjcHVfbW9kZTsJCS8qIDQgPSAzMmJpdCwgOCA9IDY0Yml0ICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMl07CistfTsKKy0KKy0KKy0JLyoga25vd24gY2xpZW50IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfU1lTVEVNCQkwCistCS8qIGludGVybmFsIGNsaWVudCBudW1iZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX0RVTU1ZCQkxNAkvKiBtaWRpIHRocm91Z2ggKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfT1NTCQkxNQkvKiBvc3Mgc2VxdWVuY2VyIGVtdWxhdG9yICovCistCistCistCS8qIGNsaWVudCB0eXBlcyAqLworLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfc2VxX2NsaWVudF90eXBlX3Q7CistI2RlZmluZQlOT19DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMCkKKy0jZGVmaW5lCVVTRVJfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDEpCistI2RlZmluZQlLRVJORUxfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDIpCistICAgICAgICAgICAgICAgICAgICAgICAgCistCS8qIGV2ZW50IGZpbHRlciBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CUk9BRENBU1QJKDE8PDApCS8qIGFjY2VwdCBicm9hZGNhc3QgbWVzc2FnZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfTVVMVElDQVNUCSgxPDwxKQkvKiBhY2NlcHQgbXVsdGljYXN0IG1lc3NhZ2VzICovCistI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JPVU5DRQkJKDE8PDIpCS8qIGFjY2VwdCBib3VuY2UgZXZlbnQgaW4gZXJyb3IgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfVVNFX0VWRU5UCSgxPDwzMSkJLyogdXNlIGV2ZW50IGZpbHRlciAqLworLQorLXN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvIHsKKy0JaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKy0Jc25kX3NlcV9jbGllbnRfdHlwZV90IHR5cGU7CS8qIGNsaWVudCB0eXBlICovCistCWNoYXIgbmFtZVs2NF07CQkJLyogY2xpZW50IG5hbWUgKi8KKy0JdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGZpbHRlciBmbGFncyAqLworLQl1bnNpZ25lZCBjaGFyIG11bHRpY2FzdF9maWx0ZXJbOF07IC8qIG11bHRpY2FzdCBmaWx0ZXIgYml0bWFwICovCistCXVuc2lnbmVkIGNoYXIgZXZlbnRfZmlsdGVyWzMyXTsJLyogZXZlbnQgZmlsdGVyIGJpdG1hcCAqLworLQlpbnQgbnVtX3BvcnRzOwkJCS8qIFJPOiBudW1iZXIgb2YgcG9ydHMgKi8KKy0JaW50IGV2ZW50X2xvc3Q7CQkJLyogbnVtYmVyIG9mIGxvc3QgZXZlbnRzICovCistCWludCBjYXJkOwkJCS8qIFJPOiBjYXJkIG51bWJlcltrZXJuZWxdICovCistCWludCBwaWQ7CQkJLyogUk86IHBpZFt1c2VyXSAqLworLQljaGFyIHJlc2VydmVkWzU2XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0vKiBjbGllbnQgcG9vbCBzaXplICovCistc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wgeworLQlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworLQlpbnQgb3V0cHV0X3Bvb2w7CQkvKiBvdXRnb2luZyAod3JpdGUpIHBvb2wgc2l6ZSAqLworLQlpbnQgaW5wdXRfcG9vbDsJCQkvKiBpbmNvbWluZyAocmVhZCkgcG9vbCBzaXplICovCistCWludCBvdXRwdXRfcm9vbTsJCS8qIG1pbmltdW0gZnJlZSBwb29sIHNpemUgZm9yIHNlbGVjdC9ibG9ja2luZyBtb2RlICovCistCWludCBvdXRwdXRfZnJlZTsJCS8qIHVudXNlZCBzaXplICovCistCWludCBpbnB1dF9mcmVlOwkJCS8qIHVudXNlZCBzaXplICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOworLX07CistCistCistLyogUmVtb3ZlIGV2ZW50cyBieSBzcGVjaWZpZWQgY3JpdGVyaWEgKi8KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSU5QVVQJCSgxPDwwKQkvKiBGbHVzaCBpbnB1dCBxdWV1ZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfT1VUUFVUCQkoMTw8MSkJLyogRmx1c2ggb3V0cHV0IHF1ZXVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUCQkoMTw8MikJLyogUmVzdHJpY3QgYnkgZGVzdGluYXRpb24gcTpjbGllbnQ6cG9ydCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUX0NIQU5ORUwJKDE8PDMpCS8qIFJlc3RyaWN0IGJ5IGNoYW5uZWwgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9CRUZPUkUJKDE8PDQpCS8qIFJlc3RyaWN0IHRvIGJlZm9yZSB0aW1lICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQUZURVIJKDE8PDUpCS8qIFJlc3RyaWN0IHRvIHRpbWUgb3IgYWZ0ZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9USUNLCSgxPDw2KQkvKiBUaW1lIGlzIGluIHRpY2tzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0VWRU5UX1RZUEUJKDE8PDcpCS8qIFJlc3RyaWN0IHRvIGV2ZW50IHR5cGUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSUdOT1JFX09GRiAJKDE8PDgpCS8qIERvIG5vdCBmbHVzaCBvZmYgZXZlbnRzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RBR19NQVRDSCAJKDE8PDkpCS8qIFJlc3RyaWN0IHRvIGV2ZW50cyB3aXRoIGdpdmVuIHRhZyAqLworLQorLXN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMgeworLQl1bnNpZ25lZCBpbnQgIHJlbW92ZV9tb2RlOwkvKiBGbGFncyB0aGF0IGRldGVybWluZSB3aGF0IGdldHMgcmVtb3ZlZCAqLworLQorLQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworLQorLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBRdWV1ZSBmb3IgUkVNT1ZFX0RFU1QgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBBZGRyZXNzIGZvciBSRU1PVkVfREVTVCAqLworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CS8qIENoYW5uZWwgZm9yIFJFTU9WRV9ERVNUICovCistCistCWludCAgdHlwZTsJLyogRm9yIFJFTU9WRV9FVkVOVF9UWVBFICovCistCWNoYXIgIHRhZzsJLyogVGFnIGZvciBSRU1PVkVfVEFHICovCistCistCWludCAgcmVzZXJ2ZWRbMTBdOwkvKiBUbyBhbGxvdyBmb3IgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCistCistfTsKKy0KKy0KKy0JLyoga25vd24gcG9ydCBudW1iZXJzICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fVElNRVIJMAorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX0FOTk9VTkNFCTEKKy0KKy0JLyogcG9ydCBjYXBhYmlsaXRpZXMgKDMyIGJpdHMpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRAkJKDE8PDApCS8qIHJlYWRhYmxlIGZyb20gdGhpcyBwb3J0ICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEUJKDE8PDEpCS8qIHdyaXRhYmxlIHRvIHRoaXMgcG9ydCAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfUkVBRAkoMTw8MikKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1dSSVRFCSgxPDwzKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX0RVUExFWAkoMTw8NCkKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1JFQUQJKDE8PDUpCS8qIGFsbG93IHJlYWQgc3Vic2NyaXB0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURQkoMTw8NikJLyogYWxsb3cgd3JpdGUgc3Vic2NyaXB0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfTk9fRVhQT1JUCSgxPDw3KQkvKiByb3V0aW5nIG5vdCBhbGxvd2VkICovCistCistCS8qIHBvcnQgdHlwZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TUEVDSUZJQwkoMTw8MCkJLyogaGFyZHdhcmUgc3BlY2lmaWMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDICgxPDwxKQkvKiBnZW5lcmljIE1JREkgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00JKDE8PDIpCS8qIEdlbmVyYWwgTUlESSBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dTCSgxPDwzKQkvKiBHUyBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHCSgxPDw0KQkvKiBYRyBjb21wYXRpYmxlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX01UMzIJKDE8PDUpCS8qIE1ULTMyIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00yCSgxPDw2KQkvKiBHZW5lcmFsIE1JREkgMiBjb21wYXRpYmxlIGRldmljZSAqLworLQorLS8qIG90aGVyIHN0YW5kYXJkcy4uLiovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRICSgxPDwxMCkJLyogU3ludGggZGV2aWNlIChubyBNSURJIGNvbXBhdGlibGUgLSBkaXJlY3Qgd2F2ZXRhYmxlKSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9ESVJFQ1RfU0FNUExFICgxPDwxMSkJLyogU2FtcGxpbmcgZGV2aWNlIChzdXBwb3J0IHNhbXBsZSBkb3dubG9hZCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU0FNUExFCSgxPDwxMikJLyogU2FtcGxpbmcgZGV2aWNlIChzYW1wbGUgY2FuIGJlIGRvd25sb2FkZWQgYXQgYW55IHRpbWUpICovCistLyouLi4qLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRQkoMTw8MTYpCS8qIGRyaXZlciBmb3IgYSBoYXJkd2FyZSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUJKDE8PDE3KQkvKiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUgkoMTw8MTgpCS8qIGdlbmVyYXRlcyBzb3VuZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUCSgxPDwxOSkJLyogY29ubmVjdHMgdG8gb3RoZXIgZGV2aWNlKHMpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0FQUExJQ0FUSU9OCSgxPDwyMCkJLyogYXBwbGljYXRpb24gKHNlcXVlbmNlci9lZGl0b3IpICovCistCistLyogbWlzYy4gY29uZGl0aW9uaW5nIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfR0lWRU5fUE9SVAkoMTw8MCkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FU1RBTVAJKDE8PDEpCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRV9SRUFMCSgxPDwyKQorLQorLXN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbyB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogY2xpZW50L3BvcnQgbnVtYmVycyAqLworLQljaGFyIG5hbWVbNjRdOwkJCS8qIHBvcnQgbmFtZSAqLworLQorLQl1bnNpZ25lZCBpbnQgY2FwYWJpbGl0eTsJLyogcG9ydCBjYXBhYmlsaXR5IGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHR5cGU7CQkvKiBwb3J0IHR5cGUgYml0cyAqLworLQlpbnQgbWlkaV9jaGFubmVsczsJCS8qIGNoYW5uZWxzIHBlciBNSURJIHBvcnQgKi8KKy0JaW50IG1pZGlfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBNSURJIHBvcnQgKi8KKy0JaW50IHN5bnRoX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgU1lOVEggcG9ydCAqLworLQorLQlpbnQgcmVhZF91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3Igb3V0cHV0IChmcm9tIHRoaXMgcG9ydCkgKi8KKy0JaW50IHdyaXRlX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBpbnB1dCAodG8gdGhpcyBwb3J0KSAqLworLQorLQl2b2lkICprZXJuZWw7CQkJLyogcmVzZXJ2ZWQgZm9yIGtlcm5lbCB1c2UgKG11c3QgYmUgTlVMTCkgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYy4gY29uZGl0aW9uaW5nICovCistCXVuc2lnbmVkIGNoYXIgdGltZV9xdWV1ZTsJLyogcXVldWUgIyBmb3IgdGltZXN0YW1waW5nICovCistCWNoYXIgcmVzZXJ2ZWRbNTldOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLS8qIHF1ZXVlIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRkxHX1NZTkMJKDE8PDApCS8qIHN5bmMgZW5hYmxlZCAqLworLQorLS8qIHF1ZXVlIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbyB7CistCWludCBxdWV1ZTsJCS8qIHF1ZXVlIGlkICovCistCistCS8qCistCSAqICBzZWN1cml0eSBzZXR0aW5ncywgb25seSBvd25lciBvZiB0aGlzIHF1ZXVlIGNhbiBzdGFydC9zdG9wIHRpbWVyCistCSAqICBldGMuIGlmIHRoZSBxdWV1ZSBpcyBsb2NrZWQgZm9yIG90aGVyIGNsaWVudHMKKy0JICovCistCWludCBvd25lcjsJCS8qIGNsaWVudCBpZCBmb3Igb3duZXIgb2YgdGhlIHF1ZXVlICovCistCXVuc2lnbmVkIGxvY2tlZDoxOwkvKiB0aW1pbmcgcXVldWUgbG9ja2VkIGZvciBvdGhlciBxdWV1ZXMgKi8KKy0JY2hhciBuYW1lWzY0XTsJCS8qIG5hbWUgb2YgdGhpcyBxdWV1ZSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIGZsYWdzICovCistCWNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworLQorLX07CistCistLyogcXVldWUgaW5mby9zdGF0dXMgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMgeworLQlpbnQgcXVldWU7CQkJLyogcXVldWUgaWQgKi8KKy0JaW50IGV2ZW50czsJCQkvKiByZWFkLW9ubHkgLSBxdWV1ZSBzaXplICovCistCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsJLyogY3VycmVudCB0aWNrICovCistCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOwkvKiBjdXJyZW50IHRpbWUgKi8KKy0JaW50IHJ1bm5pbmc7CQkJLyogcnVubmluZyBzdGF0ZSBvZiBxdWV1ZSAqLworLQlpbnQgZmxhZ3M7CQkJLyogdmFyaW91cyBmbGFncyAqLworLQljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCistfTsKKy0KKy0KKy0vKiBxdWV1ZSB0ZW1wbyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvIHsKKy0JaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQl1bnNpZ25lZCBpbnQgdGVtcG87CQkvKiBjdXJyZW50IHRlbXBvLCB1cy90aWNrICovCistCWludCBwcHE7CQkJLyogdGltZSByZXNvbHV0aW9uLCB0aWNrcy9xdWFydGVyICovCistCXVuc2lnbmVkIGludCBza2V3X3ZhbHVlOwkvKiBxdWV1ZSBza2V3ICovCistCXVuc2lnbmVkIGludCBza2V3X2Jhc2U7CQkvKiBxdWV1ZSBza2V3IGJhc2UgKi8KKy0JY2hhciByZXNlcnZlZFsyNF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworLX07CistCistCistLyogc2VxdWVuY2VyIHRpbWVyIHNvdXJjZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9BTFNBCQkwCS8qIEFMU0EgdGltZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX0NMT0NLCTEJLyogTWlkaSBDbG9jayAoQ0xPQ0sgZXZlbnQpICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9USUNLCTIJLyogTWlkaSBUaW1lciBUaWNrIChUSUNLIGV2ZW50KSAqLworLQorLS8qIHF1ZXVlIHRpbWVyIGluZm8gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lciB7CistCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKy0JaW50IHR5cGU7CQkJLyogc291cmNlIHRpbWVyIHR5cGUgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBBTFNBJ3MgdGltZXIgSUQgKi8KKy0JCQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogcmVzb2x1dGlvbiBpbiBIeiAqLworLQkJfSBhbHNhOworLQl9IHU7CistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQgeworLQlpbnQgcXVldWU7CQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKy0JaW50IGNsaWVudDsJCS8qIHNlcXVlbmNlciBjbGllbnQgKi8KKy0JaW50IHVzZWQ7CQkvKiBxdWV1ZSBpcyB1c2VkIHdpdGggdGhpcyBjbGllbnQKKy0JCQkJICAgKG11c3QgYmUgc2V0IGZvciBhY2NlcHRpbmcgZXZlbnRzKSAqLworLQkvKiBwZXIgY2xpZW50IHdhdGVybWFya3MgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfRVhDTFVTSVZFCSgxPDwwKQkvKiBleGNsdXNpdmUgY29ubmVjdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FU1RBTVAJKDE8PDEpCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVfUkVBTAkoMTw8MikKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOwkvKiBzZW5kZXIgYWRkcmVzcyAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKy0JdW5zaWduZWQgaW50IHZvaWNlczsJCS8qIG51bWJlciBvZiB2b2ljZXMgdG8gYmUgYWxsb2NhdGVkICgwID0gZG9uJ3QgY2FyZSkgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbW9kZXMgKi8KKy0JdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIGlucHV0IHRpbWUtc3RhbXAgcXVldWUgKG9wdGlvbmFsKSAqLworLQl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCS8qIHJlc2VydmVkICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOworLX07CistCistLyogdHlwZSBvZiBxdWVyeSBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1JFQUQJMAorLSNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfV1JJVEUJMQorLQorLXN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMgeworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHJvb3Q7CS8qIGNsaWVudC9wb3J0IGlkIHRvIGJlIHNlYXJjaGVkICovCistCWludCB0eXBlOwkJLyogUkVBRCBvciBXUklURSAqLworLQlpbnQgaW5kZXg7CQkvKiAwLi5OLTEgKi8KKy0JaW50IG51bV9zdWJzOwkJLyogUi9POiBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyBvbiB0aGlzIHBvcnQgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBSL086IHJlc3VsdCAqLworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBSL086IHJlc3VsdCAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIFIvTzogcmVzdWx0ICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistCistLyoKKy0gKiAgSU9DVEwgY29tbWFuZHMKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9QVkVSU0lPTglfSU9SICgnUycsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DTElFTlRfSUQJX0lPUiAoJ1MnLCAweDAxLCBpbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1lTVEVNX0lORk8JX0lPV1IoJ1MnLCAweDAyLCBzdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SVU5OSU5HX01PREUJX0lPV1IoJ1MnLCAweDAzLCBzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9JTkZPCV9JT1dSKCdTJywgMHgxMCwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9JTkZPCV9JT1cgKCdTJywgMHgxMSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1BPUlQJX0lPV1IoJ1MnLCAweDIwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1BPUlQJX0lPVyAoJ1MnLCAweDIxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1BPUlRfSU5GTwlfSU9XUignUycsIDB4MjIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUE9SVF9JTkZPCV9JT1cgKCdTJywgMHgyMywgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NVQlNDUklCRV9QT1JUCV9JT1cgKCdTJywgMHgzMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfVU5TVUJTQ1JJQkVfUE9SVCBfSU9XICgnUycsIDB4MzEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9RVUVVRQlfSU9XUignUycsIDB4MzIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1FVRVVFCV9JT1cgKCdTJywgMHgzMywgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzQsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9OQU1FRF9RVUVVRQlfSU9XUignUycsIDB4MzYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1NUQVRVUyBfSU9XUignUycsIDB4NDAsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVEVNUE8JX0lPV1IoJ1MnLCAweDQxLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVEVNUE8JX0lPVyAoJ1MnLCAweDQyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVElNRVIJX0lPV1IoJ1MnLCAweDQ1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVElNRVIJX0lPVyAoJ1MnLCAweDQ2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfQ0xJRU5UCV9JT1dSKCdTJywgMHg0OSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9DTElFTlQJX0lPVyAoJ1MnLCAweDRhLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9QT09MCV9JT1dSKCdTJywgMHg0Yiwgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9QT09MCV9JT1cgKCdTJywgMHg0Yywgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUkVNT1ZFX0VWRU5UUwlfSU9XICgnUycsIDB4NGUsIHN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfU1VCUwlfSU9XUignUycsIDB4NGYsIHN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1NVQlNDUklQVElPTglfSU9XUignUycsIDB4NTAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfQ0xJRU5UCV9JT1dSKCdTJywgMHg1MSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9QT1JUCV9JT1dSKCdTJywgMHg1Miwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9hc2VxdWVuY2VyLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc29jLmggYi9pbmNsdWRlL3NvdW5kL2Fzb2MuaAoraW5kZXggYTc0Y2EyMzIuLjE4NWJiYTgxIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc29jLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvYy5oCitAQCAtMSw2MzMgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogdWFwaS9zb3VuZC9hc29jLmggLS0gQUxTQSBTb0MgRmlybXdhcmUgQ29udHJvbHMgYW5kIERBUE0KKy0gKgorLSAqIENvcHlyaWdodCAoQykgMjAxMiBUZXhhcyBJbnN0cnVtZW50cyBJbmMuCistICogQ29weXJpZ2h0IChDKSAyMDE1IEludGVsIENvcnBvcmF0aW9uLgorLSAqCistICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorLSAqCistICogU2ltcGxlIGZpbGUgQVBJIHRvIGxvYWQgRlcgdGhhdCBpbmNsdWRlcyBtaXhlcnMsIGNvZWZmaWNpZW50cywgREFQTSBncmFwaHMsCistICogYWxnb3JpdGhtcywgZXF1YWxpc2VycywgREFJcywgd2lkZ2V0cyBldGMuCistKi8KKy0KKy0jaWZuZGVmIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICistI2RlZmluZSBfX0xJTlVYX1VBUElfU05EX0FTT0NfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHRvcG9sb2d5IGtjb250cm9sIGNhbiByZXByZXNlbnQuCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUFYX0NIQU4JCTgKKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIFBDTSBmb3JtYXRzIGNhcGFiaWxpdHkKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfRk9STUFUUwkxNgorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgUENNIHN0cmVhbSBjb25maWdzCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVggIDgKKy0KKy0vKgorLSAqIE1heGltdW0gbnVtYmVyIG9mIHBoeXNpY2FsIGxpbmsncyBoYXJkd2FyZSBjb25maWdzCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWAk4CistCistLyogaW5kaXZpZHVhbCBrY29udHJvbCBpbmZvIHR5cGVzIC0gY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1cJCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1dfU1gJMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19YUl9TWAkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0VOVU0JCTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfQllURVMJCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTV9WQUxVRQk2CistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1JBTkdFCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1NUUk9CRQkJOAorLQorLQorLS8qIGluZGl2aWR1YWwgd2lkZ2V0IGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1ZPTFNXCQk2NAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fRE9VQkxFCTY1CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WSVJUCQk2NgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fVkFMVUUJNjcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9QSU4JCTY4CistCistLyogREFQTSB3aWRnZXQgdHlwZXMgLSBhZGQgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0lOUFVUCQkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9PVVRQVVQJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTVVYCQkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NSVhFUgkJMworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUEdBCQk0CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9PVVRfRFJWCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FEQwkJNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFDCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TV0lUQ0gJOAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUFJFCQk5CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QT1NUCQkxMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQUlGX0lOCTExCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfT1VUCTEyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfSU4JMTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9PVVQJMTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9MSU5LCTE1CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9CVUZGRVIJMTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NDSEVEVUxFUgkxNworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fRUZGRUNUCTE4CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TSUdHRU4JMTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NSQwkJMjAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FTUkMJCTIxCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FTkNPREVSCTIyCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9ERUNPREVSCTIzCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9MQVNUCQlTTkRfU09DX1RQTEdfREFQTV9ERUNPREVSCistCistLyogSGVhZGVyIG1hZ2ljIG51bWJlciBhbmQgc3RyaW5nIHNpemVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUFHSUMJCTB4NDE1MzZGNDMgLyogQVNvQyAqLworLQorLS8qIHN0cmluZyBzaXplcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX05VTV9URVhUUwkJMTYKKy0KKy0vKiBBQkkgdmVyc2lvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OCTB4NQkvKiBjdXJyZW50IHZlcnNpb24gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19BQklfVkVSU0lPTl9NSU4JMHg0CS8qIG9sZGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCAqLworLQorLS8qIE1heCBzaXplIG9mIFRMViBkYXRhICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVExWX1NJWkUJCTMyCistCistLyoKKy0gKiBGaWxlIGFuZCBCbG9jayBoZWFkZXIgZGF0YSB0eXBlcy4KKy0gKiBBZGQgbmV3IGdlbmVyaWMgYW5kIHZlbmRvciB0eXBlcyB0byBlbmQgb2YgbGlzdC4KKy0gKiBHZW5lcmljIHR5cGVzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjb3JlIHdoaWxzdCB2ZW5kb3JzIHR5cGVzIGFyZSBwYXNzZWQKKy0gKiB0byB0aGUgY29tcG9uZW50IGRyaXZlcnMgZm9yIGhhbmRsaW5nLgorLSAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUlYRVIJCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JZVEVTCQkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9FTlVNCQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQVBNX0dSQVBICTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fV0lER0VUCTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBSV9MSU5LCTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1BDTQkJNworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUFOSUZFU1QJOAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQ09ERUNfTElOSwk5CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9CQUNLRU5EX0xJTksJMTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1BEQVRBCQkxMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJCQkxMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfTUFYCQlTTkRfU09DX1RQTEdfVFlQRV9EQUkKKy0KKy0vKiB2ZW5kb3IgYmxvY2sgSURzIC0gcGxlYXNlIGFkZCBuZXcgdmVuZG9yIHR5cGVzIHRvIGVuZCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0ZXCTEwMDAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9DT05GSUcJMTAwMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPRUZGCTEwMDIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFVkVORE9SX0NPREVDCTEwMDMKKy0KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fUExBWUJBQ0sJMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9DQVBUVVJFCTEKKy0KKy0vKiB2ZW5kb3IgdHVwbGUgdHlwZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1VVSUQJMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU1RSSU5HCTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX0JPT0wJMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQllURQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9XT1JECTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1NIT1JUCTUKKy0KKy0vKiBEQUkgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19SQVRFUyAgICAgICAgICgxIDw8IDApCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfQ0hBTk5FTFMgICAgICAoMSA8PCAxKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1NBTVBMRUJJVFMgICAgKDEgPDwgMikKKy0KKy0vKiBEQUkgY2xvY2sgZ2F0aW5nICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX1VOREVGSU5FRAkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX0dBVEVECTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfQ09OVAkJMgorLQorLS8qIERBSSBtY2xrX2RpcmVjdGlvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ08gICAgICAgICAgICAwIC8qIGZvciBjb2RlYywgbWNsayBpcyBvdXRwdXQgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQ0xLX0NJICAgICAgICAgICAgMSAvKiBmb3IgY29kZWMsIG1jbGsgaXMgaW5wdXQgKi8KKy0KKy0vKiBEQUkgcGh5c2ljYWwgUENNIGRhdGEgZm9ybWF0cy4KKy0gKiBBZGQgbmV3IGZvcm1hdHMgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9JMlMgICAgICAgICAgMSAvKiBJMlMgbW9kZSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX1JJR0hUX0ogICAgICAyIC8qIFJpZ2h0IEp1c3RpZmllZCBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTEVGVF9KICAgICAgIDMgLyogTGVmdCBKdXN0aWZpZWQgbW9kZSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0RTUF9BICAgICAgICA0IC8qIEwgZGF0YSBNU0IgYWZ0ZXIgRlJNIExSQyAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0RTUF9CICAgICAgICA1IC8qIEwgZGF0YSBNU0IgZHVyaW5nIEZSTSBMUkMgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9BQzk3ICAgICAgICAgNiAvKiBBQzk3ICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUERNICAgICAgICAgIDcgLyogUHVsc2UgZGVuc2l0eSBtb2R1bGF0aW9uICovCistCistLyogbGVmdCBhbmQgcmlnaHQganVzdGlmaWVkIGFsc28ga25vd24gYXMgTVNCIGFuZCBMU0IgcmVzcGVjdGl2ZWx5ICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTVNCICAgICAgICAgIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0oKKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX1JJR0hUX0oKKy0KKy0vKiBEQUkgbGluayBmbGFncyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfVk9JQ0VfV0FLRVVQICAgICAgICAgICAgKDEgPDwgMykKKy0KKy0vKiBEQUkgdG9wb2xvZ3kgQkNMSyBwYXJhbWV0ZXIKKy0gKiBGb3IgdGhlIGJhY2t3YXJkcyBjYXBhYmlsaXR5LCBieSBkZWZhdWx0IGNvZGVjIGlzIGJjbGsgbWFzdGVyCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfQkNMS19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgYmNsayBtYXN0ZXIgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NTICAgICAgICAgMSAvKiBjb2RlYyBpcyBiY2xrIHNsYXZlICovCistCistLyogREFJIHRvcG9sb2d5IEZTWU5DIHBhcmFtZXRlcgorLSAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgZnN5bmMgbWFzdGVyCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ00gICAgICAgICAwIC8qIGNvZGVjIGlzIGZzeW5jIG1hc3RlciAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0ZTWU5DX0NTICAgICAgICAgMSAvKiBjb2RlYyBpcyBmc3luYyBzbGF2ZSAqLworLQorLS8qCistICogQmxvY2sgSGVhZGVyLgorLSAqIFRoaXMgaGVhZGVyIHByZWNlZGVzIGFsbCBvYmplY3QgYW5kIG9iamVjdCBhcnJheXMgYmVsb3cuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgeworLQlfX2xlMzIgbWFnaWM7CQkvKiBtYWdpYyBudW1iZXIgKi8KKy0JX19sZTMyIGFiaTsJCS8qIEFCSSB2ZXJzaW9uICovCistCV9fbGUzMiB2ZXJzaW9uOwkJLyogb3B0aW9uYWwgdmVuZG9yIHNwZWNpZmljIHZlcnNpb24gZGV0YWlscyAqLworLQlfX2xlMzIgdHlwZTsJCS8qIFNORF9TT0NfVFBMR19UWVBFXyAqLworLQlfX2xlMzIgc2l6ZTsJCS8qIHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIHZlbmRvcl90eXBlOwkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdHlwZSBpbmZvICovCistCV9fbGUzMiBwYXlsb2FkX3NpemU7CS8qIGRhdGEgYnl0ZXMsIGV4Y2x1ZGluZyB0aGlzIGhlYWRlciAqLworLQlfX2xlMzIgaW5kZXg7CQkvKiBpZGVudGlmaWVyIGZvciBibG9jayAqLworLQlfX2xlMzIgY291bnQ7CQkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYmxvY2sgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3IgdXVpZCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3V1aWRfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JY2hhciB1dWlkWzE2XTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3IgYSBib29sL2J5dGUvc2hvcnQvd29yZCB2YWx1ZSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3ZhbHVlX2VsZW0geworLQlfX2xlMzIgdG9rZW47CistCV9fbGUzMiB2YWx1ZTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qIHZlbmRvciB0dXBsZSBmb3Igc3RyaW5nICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0geworLQlfX2xlMzIgdG9rZW47CistCWNoYXIgc3RyaW5nW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IHsKKy0JX19sZTMyIHNpemU7CS8qIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGFycmF5LCBpbmNsdWRpbmcgYWxsIGVsZW1lbnRzICovCistCV9fbGUzMiB0eXBlOwkvKiBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV8gKi8KKy0JX19sZTMyIG51bV9lbGVtczsJLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFycmF5ICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3V1aWRfZWxlbSB1dWlkWzBdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB2YWx1ZVswXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3N0cmluZ19lbGVtIHN0cmluZ1swXTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogUHJpdmF0ZSBkYXRhLgorLSAqIEFsbCB0b3BvbG9neSBvYmplY3RzIG1heSBoYXZlIHByaXZhdGUgZGF0YSB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgb3IKKy0gKiBmaXJtd2FyZS4gQ29yZSB3aWxsIGlnbm9yZSB0aGlzIGRhdGEuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHByaXZhdGUgZGF0YSAqLworLQl1bmlvbiB7CistCQljaGFyIGRhdGFbMF07CistCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9hcnJheSBhcnJheVswXTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogS2NvbnRyb2wgVExWIGRhdGEuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSB7CistCV9fbGUzMiBtaW47CistCV9fbGUzMiBzdGVwOworLQlfX2xlMzIgbXV0ZTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX3RsdiB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdHlwZTsJLyogU05EUlZfQ1RMX1RMVlRfKiwgdHlwZSBvZiBUTFYgKi8KKy0JdW5pb24geworLQkJX19sZTMyIGRhdGFbU05EX1NPQ19UUExHX1RMVl9TSVpFXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdGx2X2Ric2NhbGUgc2NhbGU7CistCX07CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEtjb250cm9sIGNoYW5uZWwgZGF0YQorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgcmVnOworLQlfX2xlMzIgc2hpZnQ7CistCV9fbGUzMiBpZDsJLyogSUQgbWFwcyB0byBMZWZ0LCBSaWdodCwgTEZFIGV0YyAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBHZW5lcmljbCBPcGVyYXRpb25zIElEcywgZm9yIGJpbmRpbmcgS2NvbnRyb2wgb3IgQnl0ZXMgZXh0IG9wcworLSAqIEtjb250cm9sIG9wcyBuZWVkIGdldC9wdXQvaW5mby4KKy0gKiBCeXRlcyBleHQgb3BzIG5lZWQgZ2V0L3B1dC4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyB7CistCV9fbGUzMiBnZXQ7CistCV9fbGUzMiBwdXQ7CistCV9fbGUzMiBpbmZvOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBrY29udHJvbCBoZWFkZXIKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgeworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIHR5cGU7CistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBhY2Nlc3M7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIG9wczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHRsdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogU3RyZWFtIENhcGFiaWxpdGllcworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGU2NCBmb3JtYXRzOwkvKiBzdXBwb3J0ZWQgZm9ybWF0cyBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGVzOwkJLyogc3VwcG9ydGVkIHJhdGVzIFNORFJWX1BDTV9SQVRFXyogKi8KKy0JX19sZTMyIHJhdGVfbWluOwkvKiBtaW4gcmF0ZSAqLworLQlfX2xlMzIgcmF0ZV9tYXg7CS8qIG1heCByYXRlICovCistCV9fbGUzMiBjaGFubmVsc19taW47CS8qIG1pbiBjaGFubmVscyAqLworLQlfX2xlMzIgY2hhbm5lbHNfbWF4OwkvKiBtYXggY2hhbm5lbHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWluOwkvKiBtaW4gbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWF4OwkvKiBtYXggbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21pbjsJLyogbWluIHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBwZXJpb2Rfc2l6ZV9tYXg7CS8qIG1heCBwZXJpb2Qgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWluOwkvKiBtaW4gYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIGJ1ZmZlcl9zaXplX21heDsJLyogbWF4IGJ1ZmZlciBzaXplIGJ5dGVzICovCistCV9fbGUzMiBzaWdfYml0czsgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIG9mIGNvbnRlbnQgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogRkUgb3IgQkUgU3RyZWFtIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIGJ5IFNXL0ZXCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0geworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIE5hbWUgb2YgdGhlIHN0cmVhbSAqLworLQlfX2xlNjQgZm9ybWF0OwkJLyogU05EUlZfUENNX0ZNVEJJVF8qICovCistCV9fbGUzMiByYXRlOwkJLyogU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcGVyaW9kX2J5dGVzOwkvKiBzaXplIG9mIHBlcmlvZCBpbiBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX2J5dGVzOwkvKiBzaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworLQlfX2xlMzIgY2hhbm5lbHM7CS8qIGNoYW5uZWxzICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyBhIHBoeXNpY2FsIGxpbmsncyBydW50aW1lIHN1cHBvcnRlZCBoYXJkd2FyZSBjb25maWcsCistICogaS5lLiBoYXJkd2FyZSBhdWRpbyBmb3JtYXRzLgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOwkJLyogdW5pcXVlIElEIC0gLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBmbXQ7CQkvKiBTTkRfU09DX0RBSV9GT1JNQVRfIGZvcm1hdCB2YWx1ZSAqLworLQlfX3U4IGNsb2NrX2dhdGVkOwkvKiBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFXyB2YWx1ZSAqLworLQlfX3U4IGludmVydF9iY2xrOwkvKiAxIGZvciBpbnZlcnRlZCBCQ0xLLCAwIGZvciBub3JtYWwgKi8KKy0JX191OCBpbnZlcnRfZnN5bmM7CS8qIDEgZm9yIGludmVydGVkIGZyYW1lIGNsb2NrLCAwIGZvciBub3JtYWwgKi8KKy0JX191OCBiY2xrX21hc3RlcjsJLyogU05EX1NPQ19UUExHX0JDTEtfIHZhbHVlICovCistCV9fdTggZnN5bmNfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfRlNZTkNfIHZhbHVlICovCistCV9fdTggbWNsa19kaXJlY3Rpb247ICAgIC8qIFNORF9TT0NfVFBMR19NQ0xLXyB2YWx1ZSAqLworLQlfX2xlMTYgcmVzZXJ2ZWQ7CS8qIGZvciAzMmJpdCBhbGlnbm1lbnQgKi8KKy0JX19sZTMyIG1jbGtfcmF0ZTsJLyogTUNMSyBvciBTWVNDTEsgZnJlcWVuY3kgaW4gSHogKi8KKy0JX19sZTMyIGJjbGtfcmF0ZTsJLyogQkNMSyBmcmVxZW5jeSBpbiBIeiAqLworLQlfX2xlMzIgZnN5bmNfcmF0ZTsJLyogZnJhbWUgY2xvY2sgaW4gSHogKi8KKy0JX19sZTMyIHRkbV9zbG90czsJLyogbnVtYmVyIG9mIFRETSBzbG90cyBpbiB1c2UgKi8KKy0JX19sZTMyIHRkbV9zbG90X3dpZHRoOwkvKiB3aWR0aCBpbiBiaXRzIGZvciBlYWNoIHNsb3QgKi8KKy0JX19sZTMyIHR4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFR4IHNsb3RzICovCistCV9fbGUzMiByeF9zbG90czsJLyogYml0IG1hc2sgZm9yIGFjdGl2ZSBSeCBzbG90cyAqLworLQlfX2xlMzIgdHhfY2hhbm5lbHM7CS8qIG51bWJlciBvZiBUeCBjaGFubmVscyAqLworLQlfX2xlMzIgdHhfY2hhbm1hcFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOyAvKiBhcnJheSBvZiBzbG90IG51bWJlciAqLworLQlfX2xlMzIgcnhfY2hhbm5lbHM7CS8qIG51bWJlciBvZiBSeCBjaGFubmVscyAqLworLQlfX2xlMzIgcnhfY2hhbm1hcFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOyAvKiBhcnJheSBvZiBzbG90IG51bWJlciAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBNYW5pZmVzdC4gTGlzdCB0b3RhbHMgZm9yIGVhY2ggcGF5bG9hZCB0eXBlLiBOb3QgdXNlZCBpbiBwYXJzaW5nLCBidXQgd2lsbAorLSAqIGJlIHBhc3NlZCB0byB0aGUgY29tcG9uZW50IGRyaXZlciBiZWZvcmUgYW55IG90aGVyIG9iamVjdHMgaW4gb3JkZXIgZm9yIGFueQorLSAqIGdsb2JhbCBjb21wb25lbnQgcmVzb3VyY2UgYWxsb2NhdGlvbnMuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBtYW5pZmVzdCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3QgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworLQlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCistCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCistCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9lbGVtczsJLyogbnVtYmVyIG9mIHBoeXNpY2FsIERBSSBlbGVtZW50cyAqLworLQlfX2xlMzIgcmVzZXJ2ZWRbMjBdOwkvKiByZXNlcnZlZCBmb3IgbmV3IEFCSSBlbGVtZW50IHR5cGVzICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBNaXhlciBrY29udHJvbC4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1peGVyIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBtaW47CistCV9fbGUzMiBtYXg7CistCV9fbGUzMiBwbGF0Zm9ybV9tYXg7CistCV9fbGUzMiBpbnZlcnQ7CistCV9fbGUzMiBudW1fY2hhbm5lbHM7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCBjaGFubmVsW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07CistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBFbnVtZXJhdGVkIGtjb250cm9sCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBlbnVtIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCAgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgeworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIG51bV9jaGFubmVsczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKy0JX19sZTMyIGl0ZW1zOworLQlfX2xlMzIgbWFzazsKKy0JX19sZTMyIGNvdW50OworLQljaGFyIHRleHRzW1NORF9TT0NfVFBMR19OVU1fVEVYVFNdW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIHZhbHVlc1tTTkRfU09DX1RQTEdfTlVNX1RFWFRTICogU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4gLyA0XTsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEJ5dGVzIGtjb250cm9sCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBieXRlcyBrY29udHJvbCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHwgIE4gfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfYnl0ZXNfY29udHJvbCB7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgbWF4OworLQlfX2xlMzIgbWFzazsKKy0JX19sZTMyIGJhc2U7CistCV9fbGUzMiBudW1fcmVnczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgZXh0X29wczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIERBUE0gR3JhcGggRWxlbWVudAorLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgREFQTSBncmFwaCBlbGVtZW50cyA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX2dyYXBoX2VsZW0gfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB7CistCWNoYXIgc2lua1tTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgY29udHJvbFtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgc291cmNlW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogREFQTSBXaWRnZXQuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIHdpZGdldCA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCAgICAgfCAgTiAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgICBzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCAgfCAwfDEgfAorLSAqIHwgICBzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgfCAwfE4gfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqCistICogT3B0aW9uYWwgZW51bSBvciBtaXhlciBjb250cm9sIGNhbiBiZSBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIGVhY2ggd2lkZ2V0CistICogaW4gdGhlIGJsb2NrLgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV93aWRnZXQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsJCS8qIFNORF9TT0NfREFQTV9DVEwgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBzbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCistCV9fbGUzMiByZWc7CQkvKiBuZWdhdGl2ZSByZWcgPSBubyBkaXJlY3QgZGFwbSAqLworLQlfX2xlMzIgc2hpZnQ7CQkvKiBiaXRzIHRvIHNoaWZ0ICovCistCV9fbGUzMiBtYXNrOwkJLyogbm9uLXNoaWZ0ZWQgbWFzayAqLworLQlfX2xlMzIgc3Vic2VxOwkJLyogc29ydCB3aXRoaW4gd2lkZ2V0IHR5cGUgKi8KKy0JX19sZTMyIGludmVydDsJCS8qIGludmVydCB0aGUgcG93ZXIgYml0ICovCistCV9fbGUzMiBpZ25vcmVfc3VzcGVuZDsJLyoga2VwdCBlbmFibGVkIG92ZXIgc3VzcGVuZCAqLworLQlfX2xlMTYgZXZlbnRfZmxhZ3M7CistCV9fbGUxNiBldmVudF90eXBlOworLQlfX2xlMzIgbnVtX2tjb250cm9sczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistCS8qCistCSAqIGtjb250cm9scyB0aGF0IHJlbGF0ZSB0byB0aGlzIHdpZGdldAorLQkgKiBmb2xsb3cgaGVyZSBhZnRlciB3aWRnZXQgcHJpdmF0ZSBkYXRhCistCSAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistCistLyoKKy0gKiBEZXNjcmliZXMgU1cvRlcgc3BlY2lmaWMgZmVhdHVyZXMgb2YgUENNIChGRSBEQUkgJiBEQUkgbGluaykuCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBQQ00gOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfcGNtICAgICAgICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfcGNtIHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKy0JX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCistCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworLQlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworLQlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyB0aGUgcGh5c2ljYWwgbGluayBydW50aW1lIHN1cHBvcnRlZCBjb25maWdzIG9yIHBhcmFtcworLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgcGh5c2ljYWwgbGluayBjb25maWcgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWcgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWcgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgaWQ7ICAgICAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCistCWNoYXIgc3RyZWFtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBzdHJlYW0gbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIHN1cHBvcnRlZCBjb25maWdzIHBsYXliYWNrIGFuZCBjYXB0cnVyZSAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7ICAgICAvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2h3X2NvbmZpZyBod19jb25maWdbU05EX1NPQ19UUExHX0hXX0NPTkZJR19NQVhdOyAvKiBodyBjb25maWdzICovCistCV9fbGUzMiBudW1faHdfY29uZmlnczsgICAgICAgICAvKiBudW1iZXIgb2YgaHcgY29uZmlncyAqLworLQlfX2xlMzIgZGVmYXVsdF9od19jb25maWdfaWQ7ICAgLyogZGVmYXVsdCBodyBjb25maWcgSUQgZm9yIGluaXQgKi8KKy0JX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKy0JX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0xOS19GTEdCSVRfKiBmbGFnIHZhbHVlICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBEZXNjcmliZXMgU1cvRlcgc3BlY2lmaWMgZmVhdHVyZXMgb2YgcGh5c2ljYWwgREFJLgorLSAqIEl0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBiYWNrZW5kIERBSXMgZm9yIERQQ00uCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBEQUkgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSAgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFpICAgICAgICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFpIHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBkYWlfaWQ7ICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOyAgICAgICAgLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworLQlfX2xlMzIgY2FwdHVyZTsgICAgICAgICAvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCistCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCistCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19EQUlfRkxHQklUXyogKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE9sZCB2ZXJzaW9uIG9mIEFCSSBzdHJ1Y3RzLCBzdXBwb3J0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCistICovCistCistLyogTWFuaWZlc3QgdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0X3Y0IHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgY29udHJvbF9lbGVtczsJLyogbnVtYmVyIG9mIGNvbnRyb2wgZWxlbWVudHMgKi8KKy0JX19sZTMyIHdpZGdldF9lbGVtczsJLyogbnVtYmVyIG9mIHdpZGdldCBlbGVtZW50cyAqLworLQlfX2xlMzIgZ3JhcGhfZWxlbXM7CS8qIG51bWJlciBvZiBncmFwaCBlbGVtZW50cyAqLworLQlfX2xlMzIgcGNtX2VsZW1zOwkvKiBudW1iZXIgb2YgUENNIGVsZW1lbnRzICovCistCV9fbGUzMiBkYWlfbGlua19lbGVtczsJLyogbnVtYmVyIG9mIERBSSBsaW5rIGVsZW1lbnRzICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworLX0gX19wYWNrZWQ7CistCistLyogU3RyZWFtIENhcGFiaWxpdGllcyB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGU2NCBmb3JtYXRzOwkvKiBzdXBwb3J0ZWQgZm9ybWF0cyBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGVzOwkJLyogc3VwcG9ydGVkIHJhdGVzIFNORFJWX1BDTV9SQVRFXyogKi8KKy0JX19sZTMyIHJhdGVfbWluOwkvKiBtaW4gcmF0ZSAqLworLQlfX2xlMzIgcmF0ZV9tYXg7CS8qIG1heCByYXRlICovCistCV9fbGUzMiBjaGFubmVsc19taW47CS8qIG1pbiBjaGFubmVscyAqLworLQlfX2xlMzIgY2hhbm5lbHNfbWF4OwkvKiBtYXggY2hhbm5lbHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWluOwkvKiBtaW4gbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZHNfbWF4OwkvKiBtYXggbnVtYmVyIG9mIHBlcmlvZHMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21pbjsJLyogbWluIHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBwZXJpb2Rfc2l6ZV9tYXg7CS8qIG1heCBwZXJpb2Qgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWluOwkvKiBtaW4gYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIGJ1ZmZlcl9zaXplX21heDsJLyogbWF4IGJ1ZmZlciBzaXplIGJ5dGVzICovCistfSBfX3BhY2tlZDsKKy0KKy0vKiBQQ00gdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3BjbV92NCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBwY21fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQlfX2xlMzIgcGNtX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCB3aXRoIERBSSBsaW5rICovCistCV9fbGUzMiBkYWlfaWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCistCV9fbGUzMiBwbGF5YmFjazsJLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworLQlfX2xlMzIgY2FwdHVyZTsJCS8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworLQlfX2xlMzIgY29tcHJlc3M7CS8qIDEgPSBjb21wcmVzc2VkOyAwID0gUENNICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBmb3IgREFJIGxpbmsgKi8KKy0JX19sZTMyIG51bV9zdHJlYW1zOwkvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzX3Y0IGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKy19IF9fcGFja2VkOworLQorLS8qIFBoeXNpY2FsIGxpbmsgY29uZmlnIHY0ICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZ192NCB7CistCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIHN1cHBvcnRlZCBjb25maWdzIHBsYXliYWNrIGFuZCBjYXB0cnVyZSAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7ICAgICAvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworLX0gX19wYWNrZWQ7CistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9hc29jLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaCBiL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKK2luZGV4IGRmMTE1M2NlLi4zYmU0ZDg1MCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvdW5kLmgKK0BAIC0xLDEwMzggKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBIC0gRHJpdmVyCistICogIENvcHlyaWdodCAoYykgMTk5NC0yMDAzIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnJhbW8gQmFnbmFyYSA8YWJyYW1vQGFsc2EtcHJvamVjdC5vcmc+CistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLQorLSNpZm5kZWYgX1VBUElfX1NPVU5EX0FTT1VORF9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKy0KKy0jaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKy0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKy0jZW5kaWYKKy0KKy0jaWZuZGVmIF9fS0VSTkVMX18KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHRpbWUuaD4KKy0jZW5kaWYKKy0KKy0vKgorLSAqICBwcm90b2NvbCB2ZXJzaW9uCistICovCistCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKG1ham9yLCBtaW5vciwgc3VibWlub3IpICgoKG1ham9yKTw8MTYpfCgobWlub3IpPDw4KXwoc3VibWlub3IpKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUFKT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjE2KSYweGZmZmYpCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSU5PUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+OCkmMHhmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX01JQ1JPKHZlcnNpb24pICgodmVyc2lvbikmMHhmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX0lOQ09NUEFUSUJMRShrdmVyc2lvbiwgdXZlcnNpb24pIFwKKy0JKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgfHwgXAorLQkgKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSA9PSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgJiYgXAorLQkgICBTTkRSVl9QUk9UT0NPTF9NSU5PUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUlOT1IodXZlcnNpb24pKSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlCQkJCQkgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistc3RydWN0IHNuZF9hZXNfaWVjOTU4IHsKKy0JdW5zaWduZWQgY2hhciBzdGF0dXNbMjRdOwkvKiBBRVMvSUVDOTU4IGNoYW5uZWwgc3RhdHVzIGJpdHMgKi8KKy0JdW5zaWduZWQgY2hhciBzdWJjb2RlWzE0N107CS8qIEFFUy9JRUM5NTggc3ViY29kZSBiaXRzICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogbm90aGluZyAqLworLQl1bnNpZ25lZCBjaGFyIGRpZ19zdWJmcmFtZVs0XTsJLyogQUVTL0lFQzk1OCBzdWJmcmFtZSBiaXRzICovCistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIENFQS04NjEgQXVkaW8gSW5mb0ZyYW1lLiBVc2VkIGluIEhETUkgYW5kIERpc3BsYXlQb3J0CQkgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistc3RydWN0IHNuZF9jZWFfODYxX2F1ZF9pZiB7CistCXVuc2lnbmVkIGNoYXIgZGIxX2N0X2NjOyAvKiBjb2RpbmcgdHlwZSBhbmQgY2hhbm5lbCBjb3VudCAqLworLQl1bnNpZ25lZCBjaGFyIGRiMl9zZl9zczsgLyogc2FtcGxlIGZyZXF1ZW5jeSBhbmQgc2l6ZSAqLworLQl1bnNpZ25lZCBjaGFyIGRiMzsgLyogbm90IHVzZWQsIGFsbCB6ZXJvcyAqLworLQl1bnNpZ25lZCBjaGFyIGRiNF9jYTsgLyogY2hhbm5lbCBhbGxvY2F0aW9uIGNvZGUgKi8KKy0JdW5zaWduZWQgY2hhciBkYjVfZG1pbmhfbHN2OyAvKiBkb3dubWl4IGluaGliaXQgJiBsZXZlbC1zaGl0IHZhbHVlcyAqLworLX07CistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGhhcmR3YXJlIGRlcGVuZGVudCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9odz8gICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX0hXREVQX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKy0KKy1lbnVtIHsKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMMiA9IDAsCistCVNORFJWX0hXREVQX0lGQUNFX09QTDMsCistCVNORFJWX0hXREVQX0lGQUNFX09QTDQsCistCVNORFJWX0hXREVQX0lGQUNFX1NCMTZDU1AsCS8qIENyZWF0aXZlIFNpZ25hbCBQcm9jZXNzb3IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRU1VMTBLMSwJLyogRlg4MDEwIHByb2Nlc3NvciBpbiBFTVUxMEsxIGNoaXAgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfWVNTMjI1LAkvKiBZYW1haGEgRlggcHJvY2Vzc29yICovCistCVNORFJWX0hXREVQX0lGQUNFX0lDUzIxMTUsCS8qIFdhdmV0YWJsZSBzeW50aCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9TU0NBUEUsCS8qIEVuc29uaXEgU291bmRTY2FwZSBJU0EgY2FyZCAoTUM2OEVDMDAwKSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9WWCwJCS8qIERpZ2lncmFtIFZYIGNhcmRzICovCistCVNORFJWX0hXREVQX0lGQUNFX01JWEFSVCwJLyogRGlnaWdyYW0gbWlYYXJ0IGNhcmRzICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggdXNiICovCistCVNORFJWX0hXREVQX0lGQUNFX0VNVVhfV0FWRVRBQkxFLCAvKiBFbXVYIHdhdmV0YWJsZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9CTFVFVE9PVEgsCS8qIEJsdWV0b290aCBhdWRpbyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWV9QQ00sCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCByYXd1c2IgcGNtICovCistCVNORFJWX0hXREVQX0lGQUNFX1BDWEhSLAkvKiBEaWdpZ3JhbSBQQ1hIUiAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9TQl9SQywJLyogU0IgRXh0aWd5L0F1ZGlneTJOWCByZW1vdGUgY29udHJvbCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9IREEsCQkvKiBIRC1hdWRpbyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9VU0JfU1RSRUFNLAkvKiBkaXJlY3QgYWNjZXNzIHRvIHVzYiBzdHJlYW0gKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRElDRSwJLyogVEMgRElDRSBGaXJlV2lyZSBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRVdPUktTLAkvKiBFY2hvIEF1ZGlvIEZpcmV3b3JrcyBiYXNlZCBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfQkVCT0IsCS8qIEJyaWRnZUNvIEJlQm9CIGJhc2VkIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19PWEZXLAkvKiBPeGZvcmQgT1hGVzk3MC85NzEgYmFzZWQgZGV2aWNlICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJR0kwMFgsCS8qIERpZ2lkZXNpZ24gRGlnaSAwMDIvMDAzIGZhbWlseSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19UQVNDQU0sCS8qIFRBU0NBTSBGaXJlV2lyZSBzZXJpZXMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTElORTYsCS8qIExpbmU2IFVTQiBwcm9jZXNzb3JzICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX01PVFUsCS8qIE1PVFUgRmlyZVdpcmUgc2VyaWVzICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFLAkvKiBSTUUgRmlyZWZhY2Ugc2VyaWVzICovCistCistCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTEFTVCA9IFNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogV1I6IGRldmljZSBudW1iZXIgKi8KKy0JaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogaHdkZXAgbmFtZSAqLworLQlpbnQgaWZhY2U7CQkJLyogaHdkZXAgaW50ZXJmYWNlICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCistfTsKKy0KKy0vKiBnZW5lcmljIERTUCBsb2FkZXIgKi8KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMgeworLQl1bnNpZ25lZCBpbnQgdmVyc2lvbjsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyB2ZXJzaW9uICovCistCXVuc2lnbmVkIGNoYXIgaWRbMzJdOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIElEIHN0cmluZyAqLworLQl1bnNpZ25lZCBpbnQgbnVtX2RzcHM7CQkvKiBSOiBudW1iZXIgb2YgRFNQIGltYWdlcyB0byB0cmFuc2ZlciAqLworLQl1bnNpZ25lZCBpbnQgZHNwX2xvYWRlZDsJLyogUjogYml0IGZsYWdzIGluZGljYXRpbmcgdGhlIGxvYWRlZCBEU1BzICovCistCXVuc2lnbmVkIGludCBjaGlwX3JlYWR5OwkvKiBSOiAxID0gaW5pdGlhbGl6YXRpb24gZmluaXNoZWQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSB7CistCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIFc6IERTUCBpbmRleCAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbNjRdOwkJLyogVzogSUQgKGUuZy4gZmlsZSBuYW1lKSAqLworLQl1bnNpZ25lZCBjaGFyIF9fdXNlciAqaW1hZ2U7CS8qIFc6IGJpbmFyeSBpbWFnZSAqLworLQlzaXplX3QgbGVuZ3RoOwkJCS8qIFc6IHNpemUgb2YgaW1hZ2UgaW4gYnl0ZXMgKi8KKy0JdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogVzogZHJpdmVyLXNwZWNpZmljIGRhdGEgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9JTkZPCQlfSU9SICgnSCcsIDB4MDEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9TVEFUVVMJX0lPUignSCcsIDB4MDIsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9MT0FECV9JT1coJ0gnLCAweDAzLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICBEaWdpdGFsIEF1ZGlvIChQQ00pIGludGVyZmFjZSAtIC9kZXYvc25kL3BjbT8/ICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistI2RlZmluZSBTTkRSVl9QQ01fVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAxNCkKKy0KKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgc25kX3BjbV91ZnJhbWVzX3Q7CistdHlwZWRlZiBzaWduZWQgbG9uZyBzbmRfcGNtX3NmcmFtZXNfdDsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX0NMQVNTX0dFTkVSSUMgPSAwLAkvKiBzdGFuZGFyZCBtb25vIG9yIHN0ZXJlbyBkZXZpY2UgKi8KKy0JU05EUlZfUENNX0NMQVNTX01VTFRJLAkJLyogbXVsdGljaGFubmVsIGRldmljZSAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTU9ERU0sCQkvKiBzb2Z0d2FyZSBtb2RlbSBjbGFzcyAqLworLQlTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAkvKiBkaWdpdGl6ZXIgY2xhc3MgKi8KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1NVQkNMQVNTX0dFTkVSSUNfTUlYID0gMCwgLyogbW9ubyBvciBzdGVyZW8gc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKy0JU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwJLyogbXVsdGljaGFubmVsIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCistCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKy0JU05EUlZfUENNX1NVQkNMQVNTX0xBU1QgPSBTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAorLX07CistCistZW51bSB7CistCVNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0sgPSAwLAorLQlTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCistCVNORFJWX1BDTV9TVFJFQU1fTEFTVCA9IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKy19OworLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2FjY2Vzc190OworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0lOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAwKSAvKiBpbnRlcmxlYXZlZCBtbWFwICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDEpIC8qIG5vbmludGVybGVhdmVkIG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9DT01QTEVYCQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMikgLyogY29tcGxleCBtbWFwICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVECQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMykgLyogcmVhZGkvd3JpdGVpICovCistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSA0KSAvKiByZWFkbi93cml0ZW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTEFTVAkJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2Zvcm1hdF90OworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA2KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA3KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA4KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA5KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMykKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE0KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE1KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTYpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNykgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTgpIC8qIElFQy05NTggc3ViZnJhbWUsIExpdHRsZSBFbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOSkgLyogSUVDLTk1OCBzdWJmcmFtZSwgQmlnIEVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NVV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfQV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSU1BX0FEUENNCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMikKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVBFRwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HU00JCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNSkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI2KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjcpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyOCkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLS8qIGdhcCBpbiB0aGUgbnVtYmVyaW5nIGZvciBhIGZ1dHVyZSBzdGFuZGFyZCBsaW5lYXIgZm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1NQRUNJQUwJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMxKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzMpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM0KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzYpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM3KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzkpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQwKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDIpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NCkgLyogOCBzYW1wbGVzIGluIDMgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDUpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NikgLyogOCBTYW1wbGVzIGluIDUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDcpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTgJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OCkgLyogRFNELCAxLWJ5dGUgc2FtcGxlcyBEU0QgKHg4KSAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGxpdHRsZSBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTApIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBsaXR0bGUgZW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUxKSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgYmlnIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MikgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGJpZyBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTEFTVAkJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZJUlNUCQlTTkRSVl9QQ01fRk9STUFUX1M4CistCistI2lmZGVmIFNORFJWX0xJVFRMRV9FTkRJQU4KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQorLSNlbmRpZgorLSNpZmRlZiBTTkRSVl9CSUdfRU5ESUFOCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUKKy0jZW5kaWYKKy0KKy10eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdWJmb3JtYXRfdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECQkoKF9fZm9yY2Ugc25kX3BjbV9zdWJmb3JtYXRfdCkgMCkKKy0jZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfTEFTVAlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAorLQorLSNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUAkJMHgwMDAwMDAwMQkvKiBoYXJkd2FyZSBzdXBwb3J0cyBtbWFwICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElECTB4MDAwMDAwMDIJLyogcGVyaW9kIGRhdGEgYXJlIHZhbGlkIGR1cmluZyB0cmFuc2ZlciAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fRE9VQkxFCQkweDAwMDAwMDA0CS8qIERvdWJsZSBidWZmZXJpbmcgbmVlZGVkIGZvciBQQ00gc3RhcnQvc3RvcCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQkFUQ0gJCTB4MDAwMDAwMTAJLyogZG91YmxlIGJ1ZmZlcmluZyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19BUFBMUFRSCTB4MDAwMDAwMjAJLyogbmVlZCB0aGUgZXhwbGljaXQgc3luYyBvZiBhcHBsX3B0ciB1cGRhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVECTB4MDAwMDAxMDAJLyogY2hhbm5lbHMgYXJlIGludGVybGVhdmVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRAkweDAwMDAwMjAwCS8qIGNoYW5uZWxzIGFyZSBub3QgaW50ZXJsZWF2ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0NPTVBMRVgJCTB4MDAwMDA0MDAJLyogY29tcGxleCBmcmFtZSBvcmdhbml6YXRpb24gKG1tYXAgb25seSkgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSCTB4MDAwMTAwMDAJLyogaGFyZHdhcmUgdHJhbnNmZXIgYmxvY2sgb2Ygc2FtcGxlcyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fT1ZFUlJBTkdFCTB4MDAwMjAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9uICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19SRVNVTUUJCTB4MDAwNDAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgc3RyZWFtIHJlc3VtZSBhZnRlciBzdXNwZW5kICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19QQVVTRQkJMHgwMDA4MDAwMAkvKiBwYXVzZSBpb2N0bCBpcyBzdXBwb3J0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBTEZfRFVQTEVYCTB4MDAxMDAwMDAJLyogb25seSBoYWxmIGR1cGxleCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSk9JTlRfRFVQTEVYCTB4MDAyMDAwMDAJLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgc3RyZWFtIGFyZSBzb21ld2hhdCBjb3JyZWxhdGVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUCTB4MDA0MDAwMDAJLyogcGNtIHN1cHBvcnQgc29tZSBraW5kIG9mIHN5bmMgZ28gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PX1BFUklPRF9XQUtFVVAJMHgwMDgwMDAwMAkvKiBwZXJpb2Qgd2FrZXVwIGNhbiBiZSBkaXNhYmxlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX1dBTExfQ0xPQ0sgICAweDAxMDAwMDAwICAgICAgLyogKERlcHJlY2F0ZWQpaGFzIGF1ZGlvIHdhbGwgY2xvY2sgZm9yIGF1ZGlvL3N5c3RlbSB0aW1lIHN5bmMgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FUSU1FICAgICAgICAgICAgICAweDAxMDAwMDAwICAvKiByZXBvcnQgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCByZXNldCBvbiBzdGFydHVwICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BQlNPTFVURV9BVElNRSAgICAgMHgwMjAwMDAwMCAgLyogcmVwb3J0IGFic29sdXRlIGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0VTVElNQVRFRF9BVElNRSAgICAweDA0MDAwMDAwICAvKiByZXBvcnQgZXN0aW1hdGVkIGxpbmsgYXVkaW8gdGltZSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfU1lOQ0hST05JWkVEX0FUSU1FIDB4MDgwMDAwMDAgIC8qIHJlcG9ydCBzeW5jaHJvbml6ZWQgYXVkaW8vc3lzdGVtIHRpbWUgKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RSQUlOX1RSSUdHRVIJMHg0MDAwMDAwMAkJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSB0cmlnZ2VyIGluIGRyYWluICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19GSUZPX0lOX0ZSQU1FUwkweDgwMDAwMDAwCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gRklGTyBzaXplIGlzIGluIGZyYW1lcyAqLworLQorLQorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N0YXRlX3Q7CistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfT1BFTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMCkgLyogc3RyZWFtIGlzIG9wZW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TRVRVUAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMSkgLyogc3RyZWFtIGhhcyBhIHNldHVwICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUFJFUEFSRUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMikgLyogc3RyZWFtIGlzIHJlYWR5IHRvIHN0YXJ0ICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUlVOTklORwkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMykgLyogc3RyZWFtIGlzIHJ1bm5pbmcgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9YUlVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA0KSAvKiBzdHJlYW0gcmVhY2hlZCBhbiB4cnVuICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRFJBSU5JTkcJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNSkgLyogc3RyZWFtIGlzIGRyYWluaW5nICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUEFVU0VECQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA2KSAvKiBzdHJlYW0gaXMgcGF1c2VkICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU1VTUEVOREVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDcpIC8qIGhhcmR3YXJlIGlzIHN1c3BlbmRlZCAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA4KSAvKiBoYXJkd2FyZSBpcyBkaXNjb25uZWN0ZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9MQVNUCQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECistCistZW51bSB7CistCVNORFJWX1BDTV9NTUFQX09GRlNFVF9EQVRBID0gMHgwMDAwMDAwMCwKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX1NUQVRVUyA9IDB4ODAwMDAwMDAsCistCVNORFJWX1BDTV9NTUFQX09GRlNFVF9DT05UUk9MID0gMHg4MTAwMDAwMCwKKy19OworLQorLXVuaW9uIHNuZF9wY21fc3luY19pZCB7CistCXVuc2lnbmVkIGNoYXIgaWRbMTZdOworLQl1bnNpZ25lZCBzaG9ydCBpZDE2WzhdOworLQl1bnNpZ25lZCBpbnQgaWQzMls0XTsKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKy0JaW50IHN0cmVhbTsJCQkvKiBSTy9XUiAoY29udHJvbCk6IHN0cmVhbSBkaXJlY3Rpb24gKi8KKy0JaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiB0aGlzIGRldmljZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBzdWJkZXZpY2UgbmFtZSAqLworLQlpbnQgZGV2X2NsYXNzOwkJCS8qIFNORFJWX1BDTV9DTEFTU18qICovCistCWludCBkZXZfc3ViY2xhc3M7CQkvKiBTTkRSVl9QQ01fU1VCQ0xBU1NfKiAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CistCXVuaW9uIHNuZF9wY21fc3luY19pZCBzeW5jOwkvKiBoYXJkd2FyZSBzeW5jaHJvbml6YXRpb24gSUQgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUuLi4gKi8KKy19OworLQorLXR5cGVkZWYgaW50IHNuZF9wY21faHdfcGFyYW1fdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MJMAkvKiBBY2Nlc3MgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVAkxCS8qIEZvcm1hdCAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAkyCS8qIFN1YmZvcm1hdCAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCistCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMJOAkvKiBCaXRzIHBlciBzYW1wbGUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GUkFNRV9CSVRTCTkJLyogQml0cyBwZXIgZnJhbWUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUwkxMAkvKiBDaGFubmVscyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUJCTExCS8qIEFwcHJveCByYXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1RJTUUJMTIJLyogQXBwcm94IGRpc3RhbmNlIGJldHdlZW4KKy0JCQkJCQkgKiBpbnRlcnJ1cHRzIGluIHVzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1NJWkUJMTMJLyogQXBwcm94IGZyYW1lcyBiZXR3ZWVuCistCQkJCQkJICogaW50ZXJydXB0cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUwkxNAkvKiBBcHByb3ggYnl0ZXMgYmV0d2VlbgorLQkJCQkJCSAqIGludGVycnVwdHMKKy0JCQkJCQkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTCTE1CS8qIEFwcHJveCBpbnRlcnJ1cHRzIHBlcgorLQkJCQkJCSAqIGJ1ZmZlcgorLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9USU1FCTE2CS8qIEFwcHJveCBkdXJhdGlvbiBvZiBidWZmZXIKKy0JCQkJCQkgKiBpbiB1cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFCTE3CS8qIFNpemUgb2YgYnVmZmVyIGluIGZyYW1lcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUwkxOAkvKiBTaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQkxOQkvKiBBcHByb3ggdGljayBkdXJhdGlvbiBpbiB1cyAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQorLQorLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT1JFU0FNUExFCSgxPDwwKQkvKiBhdm9pZCByYXRlIHJlc2FtcGxpbmcgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfRVhQT1JUX0JVRkZFUgkoMTw8MSkJLyogZXhwb3J0IGJ1ZmZlciAqLworLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT19QRVJJT0RfV0FLRVVQCSgxPDwyKQkvKiBkaXNhYmxlIHBlcmlvZCB3YWtldXBzICovCistCistc3RydWN0IHNuZF9pbnRlcnZhbCB7CistCXVuc2lnbmVkIGludCBtaW4sIG1heDsKKy0JdW5zaWduZWQgaW50IG9wZW5taW46MSwKKy0JCSAgICAgb3Blbm1heDoxLAorLQkJICAgICBpbnRlZ2VyOjEsCistCQkgICAgIGVtcHR5OjE7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX01BU0tfTUFYCTI1NgorLQorLXN0cnVjdCBzbmRfbWFzayB7CistCV9fdTMyIGJpdHNbKFNORFJWX01BU0tfTUFYKzMxKS8zMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgeworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CistCXN0cnVjdCBzbmRfbWFzayBtYXNrc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLIC0KKy0JCQkgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sgKyAxXTsKKy0Jc3RydWN0IHNuZF9tYXNrIG1yZXNbNV07CS8qIHJlc2VydmVkIG1hc2tzICovCistCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaW50ZXJ2YWxzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMIC0KKy0JCQkJICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwgKyAxXTsKKy0Jc3RydWN0IHNuZF9pbnRlcnZhbCBpcmVzWzldOwkvKiByZXNlcnZlZCBpbnRlcnZhbHMgKi8KKy0JdW5zaWduZWQgaW50IHJtYXNrOwkJLyogVzogcmVxdWVzdGVkIG1hc2tzICovCistCXVuc2lnbmVkIGludCBjbWFzazsJCS8qIFI6IGNoYW5nZWQgbWFza3MgKi8KKy0JdW5zaWduZWQgaW50IGluZm87CQkvKiBSOiBJbmZvIGZsYWdzIGZvciByZXR1cm5lZCBzZXR1cCAqLworLQl1bnNpZ25lZCBpbnQgbXNiaXRzOwkJLyogUjogdXNlZCBtb3N0IHNpZ25pZmljYW50IGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHJhdGVfbnVtOwkJLyogUjogcmF0ZSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgaW50IHJhdGVfZGVuOwkJLyogUjogcmF0ZSBkZW5vbWluYXRvciAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBmaWZvX3NpemU7CS8qIFI6IGNoaXAgRklGTyBzaXplIGluIGZyYW1lcyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworLX07CistCistZW51bSB7CistCVNORFJWX1BDTV9UU1RBTVBfTk9ORSA9IDAsCistCVNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorLQlTTkRSVl9QQ01fVFNUQU1QX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcyB7CistCWludCB0c3RhbXBfbW9kZTsJCQkvKiB0aW1lc3RhbXAgbW9kZSAqLworLQl1bnNpZ25lZCBpbnQgcGVyaW9kX3N0ZXA7CistCXVuc2lnbmVkIGludCBzbGVlcF9taW47CQkJLyogbWluIHRpY2tzIHRvIHNsZWVwICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJCS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIHdha2V1cCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCB4ZmVyX2FsaWduOwkJLyogb2Jzb2xldGU6IHhmZXIgc2l6ZSBuZWVkIHRvIGJlIGEgbXVsdGlwbGUgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc3RhcnRfdGhyZXNob2xkOwkvKiBtaW4gaHdfYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RhcnQgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc3RvcF90aHJlc2hvbGQ7CS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdG9wICovCistCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2VfdGhyZXNob2xkOwkvKiBtaW4gZGlzdGFuY2UgZnJvbSBub2lzZSBmb3Igc2lsZW5jZSBmaWxsaW5nICovCistCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2Vfc2l6ZTsJCS8qIHNpbGVuY2UgYmxvY2sgc2l6ZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBib3VuZGFyeTsJCS8qIHBvaW50ZXJzIHdyYXAgcG9pbnQgKi8KKy0JdW5zaWduZWQgaW50IHByb3RvOwkJCS8qIHByb3RvY29sIHZlcnNpb24gKi8KKy0JdW5zaWduZWQgaW50IHRzdGFtcF90eXBlOwkJLyogdGltZXN0YW1wIHR5cGUgKHJlcS4gcHJvdG8gPj0gMi4wLjEyKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzU2XTsJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbyB7CistCXVuc2lnbmVkIGludCBjaGFubmVsOworLQlfX2tlcm5lbF9vZmZfdCBvZmZzZXQ7CQkvKiBtbWFwIG9mZnNldCAqLworLQl1bnNpZ25lZCBpbnQgZmlyc3Q7CQkvKiBvZmZzZXQgdG8gZmlyc3Qgc2FtcGxlIGluIGJpdHMgKi8KKy0JdW5zaWduZWQgaW50IHN0ZXA7CQkvKiBzYW1wbGVzIGRpc3RhbmNlIGluIGJpdHMgKi8KKy19OworLQorLWVudW0geworLQkvKgorLQkgKiAgZmlyc3QgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwKKy0JICogIG1hcHMgdG8gd2FsbGNsb2NrL2xpbmsgdGltZSBmb3IgSERBdWRpbyBwbGF5YmFjayBhbmQgREVGQVVMVC9ETUEgdGltZSBmb3IgZXZlcnl0aGluZyBlbHNlCistCSAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfQ09NUEFUID0gMCwKKy0KKy0JLyogdGltZXN0YW1wIGRlZmluaXRpb25zICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9ERUZBVUxUID0gMSwgICAgICAgICAgIC8qIERNQSB0aW1lLCByZXBvcnRlZCBhcyBwZXIgaHdfcHRyICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LID0gMiwJICAgICAgICAgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCByZXNldCBvbiBzdGFydHVwICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0FCU09MVVRFID0gMywJICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfRVNUSU1BVEVEID0gNCwgICAgLyogbGluayB0aW1lIGVzdGltYXRlZCBpbmRpcmVjdGx5ICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRCA9IDUsIC8qIGxpbmsgdGltZSBzeW5jaHJvbml6ZWQgd2l0aCBzeXN0ZW0gdGltZSAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRAorLX07CistCistc3RydWN0IHNuZF9wY21fc3RhdHVzIHsKKy0Jc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogc3RyZWFtIHN0YXRlICovCistCXN0cnVjdCB0aW1lc3BlYyB0cmlnZ2VyX3RzdGFtcDsJLyogdGltZSB3aGVuIHN0cmVhbSB3YXMgc3RhcnRlZC9zdG9wcGVkL3BhdXNlZCAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogcmVmZXJlbmNlIHRpbWVzdGFtcCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogYXBwbCBwdHIgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBodyBwdHIgKi8KKy0Jc25kX3BjbV9zZnJhbWVzX3QgZGVsYXk7CS8qIGN1cnJlbnQgZGVsYXkgaW4gZnJhbWVzICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsOwkvKiBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9tYXg7CS8qIG1heCBmcmFtZXMgYXZhaWxhYmxlIG9uIGh3IHNpbmNlIGxhc3Qgc3RhdHVzICovCistCXNuZF9wY21fdWZyYW1lc190IG92ZXJyYW5nZTsJLyogY291bnQgb2YgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9ucyBmcm9tIGxhc3Qgc3RhdHVzICovCistCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKy0JX191MzIgYXVkaW9fdHN0YW1wX2RhdGE7CSAvKiBuZWVkZWQgZm9yIDY0LWJpdCBhbGlnbm1lbnQsIHVzZWQgZm9yIGNvbmZpZ3MvcmVwb3J0IHRvL2Zyb20gdXNlcnNwYWNlICovCistCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIHNhbXBsZSBjb3VudGVyLCB3YWxsIGNsb2NrLCBQSEMgb3Igb24tZGVtYW5kIHN5bmMnZWQgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGRyaXZlcl90c3RhbXA7CS8qIHVzZWZ1bCBpbiBjYXNlIHJlZmVyZW5jZSBzeXN0ZW0gdHN0YW1wIGlzIHJlcG9ydGVkIHdpdGggZGVsYXkgKi8KKy0JX191MzIgYXVkaW9fdHN0YW1wX2FjY3VyYWN5OwkvKiBpbiBucyB1bml0cywgb25seSB2YWxpZCBpZiBpbmRpY2F0ZWQgaW4gYXVkaW9fdHN0YW1wX2RhdGEgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Mi0yKnNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsgLyogbXVzdCBiZSBmaWxsZWQgd2l0aCB6ZXJvICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyB7CistCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIFJPOiBzdGF0ZSAtIFNORFJWX1BDTV9TVEFURV9YWFhYICovCistCWludCBwYWQxOwkJCS8qIE5lZWRlZCBmb3IgNjQgYml0IGFsaWdubWVudCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIFJPOiBodyBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCistCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIFJPOiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCistCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIGZyb20gc2FtcGxlIGNvdW50ZXIgb3Igd2FsbCBjbG9jayAqLworLX07CistCistc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIHsKKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIFJXOiBhcHBsIHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJLyogUlc6IG1pbiBhdmFpbGFibGUgZnJhbWVzIGZvciB3YWtldXAgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0hXU1lOQwkoMTw8MCkJLyogZXhlY3V0ZSBod3N5bmMgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BUFBMCQkoMTw8MSkJLyogZ2V0IGFwcGxfcHRyIGZyb20gZHJpdmVyIChyL3cgb3ApICovCistI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVZBSUxfTUlOCSgxPDwyKQkvKiBnZXQgYXZhaWxfbWluIGZyb20gZHJpdmVyICovCistCistc3RydWN0IHNuZF9wY21fc3luY19wdHIgeworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHN0YXR1czsKKy0JCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworLQl9IHM7CistCXVuaW9uIHsKKy0JCXN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCBjb250cm9sOworLQkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CistCX0gYzsKKy19OworLQorLXN0cnVjdCBzbmRfeGZlcmkgeworLQlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CistCXZvaWQgX191c2VyICpidWY7CistCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKy19OworLQorLXN0cnVjdCBzbmRfeGZlcm4geworLQlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CistCXZvaWQgX191c2VyICogX191c2VyICpidWZzOworLQlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX0dFVFRJTUVPRkRBWSA9IDAsCS8qIGdldHRpbWVvZmRheSBlcXVpdmFsZW50ICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUMsCS8qIHBvc2l4X2Nsb2NrX21vbm90b25pYyBlcXVpdmFsZW50ICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLCAgICAvKiBtb25vdG9uaWNfcmF3IChubyBOVFApICovCistCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsCistfTsKKy0KKy0vKiBjaGFubmVsIHBvc2l0aW9ucyAqLworLWVudW0geworLQlTTkRSVl9DSE1BUF9VTktOT1dOID0gMCwKKy0JU05EUlZfQ0hNQVBfTkEsCQkvKiBOL0EsIHNpbGVudCAqLworLQlTTkRSVl9DSE1BUF9NT05PLAkvKiBtb25vIHN0cmVhbSAqLworLQkvKiB0aGlzIGZvbGxvd3MgdGhlIGFsc2EtbGliIG1peGVyIGNoYW5uZWwgdmFsdWUgKyAzICovCistCVNORFJWX0NITUFQX0ZMLAkJLyogZnJvbnQgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9GUiwJCS8qIGZyb250IHJpZ2h0ICovCistCVNORFJWX0NITUFQX1JMLAkJLyogcmVhciBsZWZ0ICovCistCVNORFJWX0NITUFQX1JSLAkJLyogcmVhciByaWdodCAqLworLQlTTkRSVl9DSE1BUF9GQywJCS8qIGZyb250IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9MRkUsCS8qIExGRSAqLworLQlTTkRSVl9DSE1BUF9TTCwJCS8qIHNpZGUgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9TUiwJCS8qIHNpZGUgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfUkMsCQkvKiByZWFyIGNlbnRlciAqLworLQkvKiBuZXcgZGVmaW5pdGlvbnMgKi8KKy0JU05EUlZfQ0hNQVBfRkxDLAkvKiBmcm9udCBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9GUkMsCS8qIGZyb250IHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9STEMsCS8qIHJlYXIgbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfUlJDLAkvKiByZWFyIHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9GTFcsCS8qIGZyb250IGxlZnQgd2lkZSAqLworLQlTTkRSVl9DSE1BUF9GUlcsCS8qIGZyb250IHJpZ2h0IHdpZGUgKi8KKy0JU05EUlZfQ0hNQVBfRkxILAkvKiBmcm9udCBsZWZ0IGhpZ2ggKi8KKy0JU05EUlZfQ0hNQVBfRkNILAkvKiBmcm9udCBjZW50ZXIgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9GUkgsCS8qIGZyb250IHJpZ2h0IGhpZ2ggKi8KKy0JU05EUlZfQ0hNQVBfVEMsCQkvKiB0b3AgY2VudGVyICovCistCVNORFJWX0NITUFQX1RGTCwJLyogdG9wIGZyb250IGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfVEZSLAkvKiB0b3AgZnJvbnQgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfVEZDLAkvKiB0b3AgZnJvbnQgY2VudGVyICovCistCVNORFJWX0NITUFQX1RSTCwJLyogdG9wIHJlYXIgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9UUlIsCS8qIHRvcCByZWFyIHJpZ2h0ICovCistCVNORFJWX0NITUFQX1RSQywJLyogdG9wIHJlYXIgY2VudGVyICovCistCS8qIG5ldyBkZWZpbml0aW9ucyBmb3IgVUFDMiAqLworLQlTTkRSVl9DSE1BUF9URkxDLAkvKiB0b3AgZnJvbnQgbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVEZSQywJLyogdG9wIGZyb250IHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9UU0wsCS8qIHRvcCBzaWRlIGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfVFNSLAkvKiB0b3Agc2lkZSByaWdodCAqLworLQlTTkRSVl9DSE1BUF9MTEZFLAkvKiBsZWZ0IExGRSAqLworLQlTTkRSVl9DSE1BUF9STEZFLAkvKiByaWdodCBMRkUgKi8KKy0JU05EUlZfQ0hNQVBfQkMsCQkvKiBib3R0b20gY2VudGVyICovCistCVNORFJWX0NITUFQX0JMQywJLyogYm90dG9tIGxlZnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0JSQywJLyogYm90dG9tIHJpZ2h0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9MQVNUID0gU05EUlZfQ0hNQVBfQlJDLAorLX07CistCistI2RlZmluZSBTTkRSVl9DSE1BUF9QT1NJVElPTl9NQVNLCTB4ZmZmZgorLSNkZWZpbmUgU05EUlZfQ0hNQVBfUEhBU0VfSU5WRVJTRQkoMHgwMSA8PCAxNikKKy0jZGVmaW5lIFNORFJWX0NITUFQX0RSSVZFUl9TUEVDCQkoMHgwMiA8PCAxNikKKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QVkVSU0lPTglfSU9SKCdBJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0lORk8JCV9JT1IoJ0EnLCAweDAxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RTVEFNUAkJX0lPVygnQScsIDB4MDIsIGludCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UVFNUQU1QCQlfSU9XKCdBJywgMHgwMywgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VTRVJfUFZFUlNJT04JX0lPVygnQScsIDB4MDQsIGludCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19SRUZJTkUJX0lPV1IoJ0EnLCAweDEwLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUEFSQU1TCV9JT1dSKCdBJywgMHgxMSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX0ZSRUUJCV9JTygnQScsIDB4MTIpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1dfUEFSQU1TCV9JT1dSKCdBJywgMHgxMywgc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVUwkJX0lPUignQScsIDB4MjAsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9ERUxBWQkJX0lPUignQScsIDB4MjEsIHNuZF9wY21fc2ZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXU1lOQwkJX0lPKCdBJywgMHgyMikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TWU5DX1BUUglfSU9XUignQScsIDB4MjMsIHN0cnVjdCBzbmRfcGNtX3N5bmNfcHRyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVU19FWFQJX0lPV1IoJ0EnLCAweDI0LCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfQ0hBTk5FTF9JTkZPCV9JT1IoJ0EnLCAweDMyLCBzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFJFUEFSRQkJX0lPKCdBJywgMHg0MCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNFVAkJX0lPKCdBJywgMHg0MSkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFSVAkJX0lPKCdBJywgMHg0MikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUk9QCQlfSU8oJ0EnLCAweDQzKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RSQUlOCQlfSU8oJ0EnLCAweDQ0KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BBVVNFCQlfSU9XKCdBJywgMHg0NSwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFV0lORAkJX0lPVygnQScsIDB4NDYsIHNuZF9wY21fdWZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU1VNRQkJX0lPKCdBJywgMHg0NykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9YUlVOCQlfSU8oJ0EnLCAweDQ4KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0ZPUldBUkQJCV9JT1coJ0EnLCAweDQ5LCBzbmRfcGNtX3VmcmFtZXNfdCkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURUlfRlJBTUVTCV9JT1coJ0EnLCAweDUwLCBzdHJ1Y3Qgc25kX3hmZXJpKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQURJX0ZSQU1FUwlfSU9SKCdBJywgMHg1MSwgc3RydWN0IHNuZF94ZmVyaSkKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURU5fRlJBTUVTCV9JT1coJ0EnLCAweDUyLCBzdHJ1Y3Qgc25kX3hmZXJuKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQUROX0ZSQU1FUwlfSU9SKCdBJywgMHg1Mywgc3RydWN0IHNuZF94ZmVybikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9MSU5LCQlfSU9XKCdBJywgMHg2MCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VOTElOSwkJX0lPKCdBJywgMHg2MSkKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIHYxLjAgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistCistLyoKKy0gKiAgUmF3IE1JREkgc2VjdGlvbiAtIC9kZXYvc25kL21pZGk/PworLSAqLworLQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDApCistCistZW51bSB7CistCVNORFJWX1JBV01JRElfU1RSRUFNX09VVFBVVCA9IDAsCistCVNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorLQlTTkRSVl9SQVdNSURJX1NUUkVBTV9MQVNUID0gU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19PVVRQVVQJCTB4MDAwMDAwMDEKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19JTlBVVAkJMHgwMDAwMDAwMgorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0RVUExFWAkJMHgwMDAwMDAwNAorLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCistCWludCBzdHJlYW07CQkJLyogV1I6IHN0cmVhbSAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBTTkRSVl9SQVdNSURJX0lORk9fWFhYWCAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIGRldmljZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBuYW1lIG9mIGFjdGl2ZSBvciBzZWxlY3RlZCBzdWJkZXZpY2UgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CistCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMgeworLQlpbnQgc3RyZWFtOworLQlzaXplX3QgYnVmZmVyX3NpemU7CQkvKiBxdWV1ZSBzaXplIGluIGJ5dGVzICovCistCXNpemVfdCBhdmFpbF9taW47CQkvKiBtaW5pbXVtIGF2YWlsIGJ5dGVzIGZvciB3YWtldXAgKi8KKy0JdW5zaWduZWQgaW50IG5vX2FjdGl2ZV9zZW5zaW5nOiAxOyAvKiBkbyBub3Qgc2VuZCBhY3RpdmUgc2Vuc2luZyBieXRlIGluIGNsb3NlKCkgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzIHsKKy0JaW50IHN0cmVhbTsKKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworLQlzaXplX3QgYXZhaWw7CQkJLyogYXZhaWxhYmxlIGJ5dGVzICovCistCXNpemVfdCB4cnVuczsJCQkvKiBjb3VudCBvZiBvdmVycnVucyBzaW5jZSBsYXN0IHN0YXR1cyAoaW4gYnl0ZXMpICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1cnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0lORk8JX0lPUignVycsIDB4MDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QQVJBTVMJX0lPV1IoJ1cnLCAweDEwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9TVEFUVVMJX0lPV1IoJ1cnLCAweDIwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUk9QCV9JT1coJ1cnLCAweDMwLCBpbnQpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RSQUlOCV9JT1coJ1cnLCAweDMxLCBpbnQpCistCistLyoKKy0gKiAgVGltZXIgc2VjdGlvbiAtIC9kZXYvc25kL3RpbWVyCistICovCistCistI2RlZmluZSBTTkRSVl9USU1FUl9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDYpCistCistZW51bSB7CistCVNORFJWX1RJTUVSX0NMQVNTX05PTkUgPSAtMSwKKy0JU05EUlZfVElNRVJfQ0xBU1NfU0xBVkUgPSAwLAorLQlTTkRSVl9USU1FUl9DTEFTU19HTE9CQUwsCistCVNORFJWX1RJTUVSX0NMQVNTX0NBUkQsCistCVNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKy0JU05EUlZfVElNRVJfQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKy19OworLQorLS8qIHNsYXZlIHRpbWVyIGNsYXNzZXMgKi8KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfU0NMQVNTX05PTkUgPSAwLAorLQlTTkRSVl9USU1FUl9TQ0xBU1NfQVBQTElDQVRJT04sCistCVNORFJWX1RJTUVSX1NDTEFTU19TRVFVRU5DRVIsCQkvKiBhbGlhcyAqLworLQlTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwJLyogYWxpYXMgKi8KKy0JU05EUlZfVElNRVJfU0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwKKy19OworLQorLS8qIGdsb2JhbCB0aW1lcnMgKGRldmljZSBtZW1iZXIpICovCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfU1lTVEVNCTAKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9SVEMJCTEJLyogdW51c2VkICovCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFBFVAkJMgorLSNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hSVElNRVIJMworLQorLS8qIGluZm8gZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0ZMR19TTEFWRQkJKDE8PDApCS8qIGNhbm5vdCBiZSBjb250cm9sbGVkICovCistCistc3RydWN0IHNuZF90aW1lcl9pZCB7CistCWludCBkZXZfY2xhc3M7CistCWludCBkZXZfc2NsYXNzOworLQlpbnQgY2FyZDsKKy0JaW50IGRldmljZTsKKy0JaW50IHN1YmRldmljZTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfZ2luZm8geworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9taW47CS8qIG1pbmltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21heDsJLyogbWF4aW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBpbnQgY2xpZW50czsJCS8qIGFjdGl2ZSB0aW1lciBjbGllbnRzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zIHsKKy0Jc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworLQl1bnNpZ25lZCBsb25nIHBlcmlvZF9udW07CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgbG9uZyBwZXJpb2RfZGVuOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbnVtOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9kZW47CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfc2VsZWN0IHsKKy0Jc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogYmluZCB0byB0aW1lciBJRCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfaW5mbyB7CistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdG9yICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCistCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0FVVE8JCSgxPDwwKQkvKiBhdXRvIHN0YXJ0LCBvdGhlcndpc2Ugb25lLXNob3QgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VYQ0xVU0lWRQkoMTw8MSkJLyogZXhjbHVzaXZlIHVzZSwgcHJlY2lzZSBzdGFydC9zdG9wL3BhdXNlL2NvbnRpbnVlICovCistI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FQVJMWV9FVkVOVAkoMTw8MikJLyogd3JpdGUgZWFybHkgZXZlbnQgdG8gdGhlIHBvbGwgcXVldWUgKi8KKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcyB7CistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIGZsYWdzIC0gU05EUlZfVElNRVJfUFNGTEdfKiAqLworLQl1bnNpZ25lZCBpbnQgdGlja3M7CQkvKiByZXF1ZXN0ZWQgcmVzb2x1dGlvbiBpbiB0aWNrcyAqLworLQl1bnNpZ25lZCBpbnQgcXVldWVfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiBxdWV1ZSAoMzItMTAyNCkgKi8KKy0JdW5zaWduZWQgaW50IHJlc2VydmVkMDsJCS8qIHJlc2VydmVkLCB3YXM6IGZhaWx1cmUgbG9jYXRpb25zICovCistCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBldmVudCBmaWx0ZXIgKGJpdG1hc2sgb2YgU05EUlZfVElNRVJfRVZFTlRfKikgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2MF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cyB7CistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgLSBsYXN0IHVwZGF0ZSAqLworLQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBpbnQgbG9zdDsJCS8qIGNvdW50ZXIgb2YgbWFzdGVyIHRpY2sgbG9zdCAqLworLQl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsJCS8qIGNvdW50IG9mIHJlYWQgcXVldWUgb3ZlcnJ1bnMgKi8KKy0JdW5zaWduZWQgaW50IHF1ZXVlOwkJLyogdXNlZCBxdWV1ZSBzaXplICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QVkVSU0lPTglfSU9SKCdUJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfTkVYVF9ERVZJQ0UJX0lPV1IoJ1QnLCAweDAxLCBzdHJ1Y3Qgc25kX3RpbWVyX2lkKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfVFJFQUQJCV9JT1coJ1QnLCAweDAyLCBpbnQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HSU5GTwkJX0lPV1IoJ1QnLCAweDAzLCBzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1BBUkFNUwlfSU9XKCdUJywgMHgwNCwgc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1NUQVRVUwlfSU9XUignVCcsIDB4MDUsIHN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NFTEVDVAlfSU9XKCdUJywgMHgxMCwgc3RydWN0IHNuZF90aW1lcl9zZWxlY3QpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9JTkZPCQlfSU9SKCdUJywgMHgxMSwgc3RydWN0IHNuZF90aW1lcl9pbmZvKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFSQU1TCV9JT1coJ1QnLCAweDEyLCBzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcykKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVRVUwlfSU9SKCdUJywgMHgxNCwgc3RydWN0IHNuZF90aW1lcl9zdGF0dXMpCistLyogVGhlIGZvbGxvd2luZyBmb3VyIGlvY3RscyBhcmUgY2hhbmdlZCBzaW5jZSAxLjAuOSBkdWUgdG8gY29uZmxpY3Rpb24gKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVJUCQlfSU8oJ1QnLCAweGEwKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RPUAkJX0lPKCdUJywgMHhhMSkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0NPTlRJTlVFCV9JTygnVCcsIDB4YTIpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVVTRQkJX0lPKCdUJywgMHhhMykKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3JlYWQgeworLQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsKKy0JdW5zaWduZWQgaW50IHRpY2tzOworLX07CistCistZW51bSB7CistCVNORFJWX1RJTUVSX0VWRU5UX1JFU09MVVRJT04gPSAwLAkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCVNORFJWX1RJTUVSX0VWRU5UX1RJQ0ssCQkJLyogdmFsID0gdGlja3MgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1RBUlQsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCVNORFJWX1RJTUVSX0VWRU5UX1NUT1AsCQkJLyogdmFsID0gMCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfUEFVU0UsCQkvKiB2YWwgPSAwICovCistCVNORFJWX1RJTUVSX0VWRU5UX0VBUkxZLAkJLyogdmFsID0gMCwgZWFybHkgZXZlbnQgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCwJCS8qIHZhbCA9IDAgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworLQkvKiBtYXN0ZXIgdGltZXIgZXZlbnRzIGZvciBzbGF2ZSB0aW1lciBpbnN0YW5jZXMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfTVNUQVJUID0gU05EUlZfVElNRVJfRVZFTlRfU1RBUlQgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVNUT1AgPSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01DT05USU5VRSA9IFNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01QQVVTRSA9IFNORFJWX1RJTUVSX0VWRU5UX1BBVVNFICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01TVVNQRU5EID0gU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCArIDEwLAorLQlTTkRSVl9USU1FUl9FVkVOVF9NUkVTVU1FID0gU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FICsgMTAsCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkIHsKKy0JaW50IGV2ZW50OworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworLQl1bnNpZ25lZCBpbnQgdmFsOworLX07CistCistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICBTZWN0aW9uIGZvciBkcml2ZXIgY29udHJvbCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9jb250cm9sPyAgICAgICAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDcpCistCistc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvIHsKKy0JaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKy0JaW50IHBhZDsJCQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgdHlwZSkgKi8KKy0JdW5zaWduZWQgY2hhciBpZFsxNl07CQkvKiBJRCBvZiBjYXJkICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgZHJpdmVyWzE2XTsJLyogRHJpdmVyIG5hbWUgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzMyXTsJCS8qIFNob3J0IG5hbWUgb2Ygc291bmRjYXJkICovCistCXVuc2lnbmVkIGNoYXIgbG9uZ25hbWVbODBdOwkvKiBuYW1lICsgaW5mbyB0ZXh0IGFib3V0IHNvdW5kY2FyZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkX1sxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyBJRCBvZiBtaXhlcikgKi8KKy0JdW5zaWduZWQgY2hhciBtaXhlcm5hbWVbODBdOwkvKiB2aXN1YWwgbWl4ZXIgaWRlbnRpZmljYXRpb24gKi8KKy0JdW5zaWduZWQgY2hhciBjb21wb25lbnRzWzEyOF07CS8qIGNhcmQgY29tcG9uZW50cyAvIGZpbmUgaWRlbnRpZmljYXRpb24sIGRlbGltaXRlZCB3aXRoIG9uZSBzcGFjZSAoQUM5NyBldGMuLikgKi8KKy19OworLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1fdHlwZV90OworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9OT05FCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAwKSAvKiBpbnZhbGlkICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU4JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDEpIC8qIGJvb2xlYW4gdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAyKSAvKiBpbnRlZ2VyIHR5cGUgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfRU5VTUVSQVRFRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMykgLyogZW51bWVyYXRlZCB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVTCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA0KSAvKiBieXRlIGFycmF5ICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lFQzk1OAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNSkgLyogSUVDOTU4IChTL1BESUYpIHNldHVwICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNikgLyogNjQtYml0IGludGVnZXIgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9MQVNUCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV9pZmFjZV90OworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfQ0FSRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDApIC8qIGdsb2JhbCBjb250cm9sICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9IV0RFUAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDEpIC8qIGhhcmR3YXJlIGRlcGVuZGVudCBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMikgLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDMpIC8qIFBDTSBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1JBV01JREkJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA0KSAvKiBSYXdNaWRpIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfVElNRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA1KSAvKiB0aW1lciBkZXZpY2UgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDYpIC8qIHNlcXVlbmNlciBjbGllbnQgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0xBU1QJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCistCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRAkJKDE8PDApCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUJCSgxPDwxKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURQkJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURSkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19WT0xBVElMRQkJKDE8PDIpCS8qIGNvbnRyb2wgdmFsdWUgbWF5IGJlIGNoYW5nZWQgd2l0aG91dCBhIG5vdGlmaWNhdGlvbiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RJTUVTVEFNUAkJKDE8PDMpCS8qIHdoZW4gd2FzIGNvbnRyb2wgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFECQkoMTw8NCkJLyogVExWIHJlYWQgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUJCSgxPDw1KQkvKiBUTFYgd3JpdGUgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRFdSSVRFCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURSkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ09NTUFORAkoMTw8NikJLyogVExWIGNvbW1hbmQgaXMgcG9zc2libGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19JTkFDVElWRQkJKDE8PDgpCS8qIGNvbnRyb2wgZG9lcyBhY3R1YWxseSBub3RoaW5nLCBidXQgbWF5IGJlIHVwZGF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19MT0NLCQkoMTw8OSkJLyogd3JpdGUgbG9jayAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX09XTkVSCQkoMTw8MTApCS8qIHdyaXRlIGxvY2sgb3duZXIgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FMTEJBQ0sJKDE8PDI4KQkvKiBrZXJuZWwgdXNlIGEgVExWIGNhbGxiYWNrICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVVNFUgkJKDE8PDI5KSAvKiB1c2VyIHNwYWNlIGVsZW1lbnQgKi8KKy0vKiBiaXRzIDMwIGFuZCAzMSBhcmUgb2Jzb2xldGVkIChmb3IgaW5kaXJlY3QgYWNjZXNzKSAqLworLQorLS8qIGZvciBmdXJ0aGVyIGRldGFpbHMgc2VlIHRoZSBBQ1BJIGFuZCBQQ0kgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2F0aW9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDAJCTB4MDAwMAkvKiBmdWxsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDEJCTB4MDEwMAkvKiBwYXJ0aWFsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDIJCTB4MDIwMAkvKiBwYXJ0aWFsIE9uICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDMJCTB4MDMwMAkvKiBPZmYgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2hvdAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDApCS8qIE9mZiwgd2l0aCBwb3dlciAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzY29sZAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDEpCS8qIE9mZiwgd2l0aG91dCBwb3dlciAqLworLQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4JNDQKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIHsKKy0JdW5zaWduZWQgaW50IG51bWlkOwkJLyogbnVtZXJpYyBpZGVudGlmaWVyLCB6ZXJvID0gaW52YWxpZCAqLworLQlzbmRfY3RsX2VsZW1faWZhY2VfdCBpZmFjZTsJLyogaW50ZXJmYWNlIGlkZW50aWZpZXIgKi8KKy0JdW5zaWduZWQgaW50IGRldmljZTsJCS8qIGRldmljZS9jbGllbnQgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBzdWJkZXZpY2UgKHN1YnN0cmVhbSkgbnVtYmVyICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CQkvKiBBU0NJSSBuYW1lIG9mIGl0ZW0gKi8KKy0JdW5zaWduZWQgaW50IGluZGV4OwkJLyogaW5kZXggb2YgaXRlbSAqLworLX07CistCistc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0IHsKKy0JdW5zaWduZWQgaW50IG9mZnNldDsJCS8qIFc6IGZpcnN0IGVsZW1lbnQgSUQgdG8gZ2V0ICovCistCXVuc2lnbmVkIGludCBzcGFjZTsJCS8qIFc6IGNvdW50IG9mIGVsZW1lbnQgSURzIHRvIGdldCAqLworLQl1bnNpZ25lZCBpbnQgdXNlZDsJCS8qIFI6IGNvdW50IG9mIGVsZW1lbnQgSURzIHNldCAqLworLQl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBSOiBjb3VudCBvZiBhbGwgZWxlbWVudHMgKi8KKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKnBpZHM7IC8qIFI6IElEcyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUwXTsKKy19OworLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyB7CistCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKy0Jc25kX2N0bF9lbGVtX3R5cGVfdCB0eXBlOwkvKiBSOiB2YWx1ZSB0eXBlIC0gU05EUlZfQ1RMX0VMRU1fVFlQRV8qICovCistCXVuc2lnbmVkIGludCBhY2Nlc3M7CQkvKiBSOiB2YWx1ZSBhY2Nlc3MgKGJpdG1hc2spIC0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTXyogKi8KKy0JdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgdmFsdWVzICovCistCV9fa2VybmVsX3BpZF90IG93bmVyOwkJLyogb3duZXIncyBQSUQgb2YgdGhpcyBjb250cm9sICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCB7CistCQkJbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCistCQkJbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCistCQkJbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKy0JCX0gaW50ZWdlcjsKKy0JCXN0cnVjdCB7CistCQkJbG9uZyBsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKy0JCQlsb25nIGxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworLQkJCWxvbmcgbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKy0JCX0gaW50ZWdlcjY0OworLQkJc3RydWN0IHsKKy0JCQl1bnNpZ25lZCBpbnQgaXRlbXM7CS8qIFI6IG51bWJlciBvZiBpdGVtcyAqLworLQkJCXVuc2lnbmVkIGludCBpdGVtOwkvKiBXOiBpdGVtIG51bWJlciAqLworLQkJCWNoYXIgbmFtZVs2NF07CQkvKiBSOiB2YWx1ZSBuYW1lICovCistCQkJX191NjQgbmFtZXNfcHRyOwkvKiBXOiBuYW1lcyBsaXN0IChFTEVNX0FERCBvbmx5KSAqLworLQkJCXVuc2lnbmVkIGludCBuYW1lc19sZW5ndGg7CistCQl9IGVudW1lcmF0ZWQ7CistCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOF07CistCX0gdmFsdWU7CistCXVuaW9uIHsKKy0JCXVuc2lnbmVkIHNob3J0IGRbNF07CQkvKiBkaW1lbnNpb25zICovCistCQl1bnNpZ25lZCBzaG9ydCAqZF9wdHI7CQkvKiBpbmRpcmVjdCAtIG9ic29sZXRlZCAqLworLQl9IGRpbWVuOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0LTQqc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworLQl1bnNpZ25lZCBpbnQgaW5kaXJlY3Q6IDE7CS8qIFc6IGluZGlyZWN0IGFjY2VzcyAtIG9ic29sZXRlZCAqLworLQl1bmlvbiB7CistCQl1bmlvbiB7CistCQkJbG9uZyB2YWx1ZVsxMjhdOworLQkJCWxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGludGVnZXI7CistCQl1bmlvbiB7CistCQkJbG9uZyBsb25nIHZhbHVlWzY0XTsKKy0JCQlsb25nIGxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGludGVnZXI2NDsKKy0JCXVuaW9uIHsKKy0JCQl1bnNpZ25lZCBpbnQgaXRlbVsxMjhdOworLQkJCXVuc2lnbmVkIGludCAqaXRlbV9wdHI7CS8qIG9ic29sZXRlZCAqLworLQkJfSBlbnVtZXJhdGVkOworLQkJdW5pb24geworLQkJCXVuc2lnbmVkIGNoYXIgZGF0YVs1MTJdOworLQkJCXVuc2lnbmVkIGNoYXIgKmRhdGFfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gYnl0ZXM7CistCQlzdHJ1Y3Qgc25kX2Flc19pZWM5NTggaWVjOTU4OworLQl9IHZhbHVlOwkJLyogUk8gKi8KKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjgtc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOworLX07CistCistc3RydWN0IHNuZF9jdGxfdGx2IHsKKy0JdW5zaWduZWQgaW50IG51bWlkOwkvKiBjb250cm9sIGVsZW1lbnQgbnVtZXJpYyBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBpbnQgbGVuZ3RoOwkvKiBpbiBieXRlcyBhbGlnbmVkIHRvIDQgKi8KKy0JdW5zaWduZWQgaW50IHRsdlswXTsJLyogZmlyc3QgVExWICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QVkVSU0lPTglfSU9SKCdVJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0NBUkRfSU5GTwlfSU9SKCdVJywgMHgwMSwgc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTElTVAlfSU9XUignVScsIDB4MTAsIHN0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0lORk8JX0lPV1IoJ1UnLCAweDExLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRUFECV9JT1dSKCdVJywgMHgxMiwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1dSSVRFCV9JT1dSKCdVJywgMHgxMywgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xPQ0sJX0lPVygnVScsIDB4MTQsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9VTkxPQ0sJX0lPVygnVScsIDB4MTUsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfU1VCU0NSSUJFX0VWRU5UUyBfSU9XUignVScsIDB4MTYsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0FERAlfSU9XUignVScsIDB4MTcsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFUExBQ0UJX0lPV1IoJ1UnLCAweDE4LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRU1PVkUJX0lPV1IoJ1UnLCAweDE5LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9SRUFECV9JT1dSKCdVJywgMHgxYSwgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9XUklURQlfSU9XUignVScsIDB4MWIsIHN0cnVjdCBzbmRfY3RsX3RsdikKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfQ09NTUFORAlfSU9XUignVScsIDB4MWMsIHN0cnVjdCBzbmRfY3RsX3RsdikKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4MjAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9JTkZPCV9JT1IoJ1UnLCAweDIxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX05FWFRfREVWSUNFCV9JT1IoJ1UnLCAweDMwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX0lORk8JX0lPV1IoJ1UnLCAweDMxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDMyLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4NDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX0lORk8JX0lPV1IoJ1UnLCAweDQxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4NDIsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUgkJX0lPV1IoJ1UnLCAweGQwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVJfU1RBVEUJX0lPUignVScsIDB4ZDEsIGludCkKKy0KKy0vKgorLSAqICBSZWFkIGludGVyZmFjZS4KKy0gKi8KKy0KKy1lbnVtIHNuZHJ2X2N0bF9ldmVudF90eXBlIHsKKy0JU05EUlZfQ1RMX0VWRU5UX0VMRU0gPSAwLAorLQlTTkRSVl9DVExfRVZFTlRfTEFTVCA9IFNORFJWX0NUTF9FVkVOVF9FTEVNLAorLX07CistCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRQkoMTw8MCkJLyogZWxlbWVudCB2YWx1ZSB3YXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfSU5GTwkoMTw8MSkJLyogZWxlbWVudCBpbmZvIHdhcyBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19BREQJKDE8PDIpCS8qIGVsZW1lbnQgd2FzIGFkZGVkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19UTFYJKDE8PDMpCS8qIGVsZW1lbnQgVExWIHRyZWUgd2FzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1JFTU9WRQkofjBVKQkvKiBlbGVtZW50IHdhcyByZW1vdmVkICovCistCistc3RydWN0IHNuZF9jdGxfZXZlbnQgeworLQlpbnQgdHlwZTsJLyogZXZlbnQgdHlwZSAtIFNORFJWX0NUTF9FVkVOVF8qICovCistCXVuaW9uIHsKKy0JCXN0cnVjdCB7CistCQkJdW5zaWduZWQgaW50IG1hc2s7CistCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKy0JCX0gZWxlbTsKKy0JCXVuc2lnbmVkIGNoYXIgZGF0YThbNjBdOworLQl9IGRhdGE7CistfTsKKy0KKy0vKgorLSAqICBDb250cm9sIG5hbWVzCistICovCistCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9OT05FCQkJCSIiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9QTEFZQkFDSwkJCQkiUGxheWJhY2sgIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfQ0FQVFVSRQkJCQkiQ2FwdHVyZSAiCistCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTk9ORQkJCSIiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfU1dJVENICQkJIlN3aXRjaCIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9WT0xVTUUJCQkiVm9sdW1lIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0RFRkFVTFQJCQkiRGVmYXVsdCIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9NQVNLCQkJIk1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfQ09OX01BU0sJCQkiQ29uIE1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUFJPX01BU0sJCQkiUHJvIE1hc2siCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUENNX1NUUkVBTQkJIlBDTSBTdHJlYW0iCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NTgoZXhwbCxkaXJlY3Rpb24sd2hhdCkJIklFQzk1OCAiIGV4cGwgU05EUlZfQ1RMX05BTUVfIyNkaXJlY3Rpb24gU05EUlZfQ1RMX05BTUVfSUVDOTU4XyMjd2hhdAorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNPVU5EX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb3VuZC5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmggYi9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCitpbmRleCA4NDcxZjQwNC4uM2U1ZGE0ZDAgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2Fzb3VuZF9mbS5oCitAQCAtMSwxMzUgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0jaWZuZGVmIF9fU09VTkRfQVNPVU5EX0ZNX0gKKy0jZGVmaW5lIF9fU09VTkRfQVNPVU5EX0ZNX0gKKy0KKy0vKgorLSAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBCistICoKKy0gKiAgSW50ZXJmYWNlIGZpbGUgYmV0d2VlbiBBTFNBIGRyaXZlciAmIHVzZXIgc3BhY2UKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk0LTk4IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgNEZyb250IFRlY2hub2xvZ2llcworLSAqCistICogIERpcmVjdCBGTSBjb250cm9sCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMgkweDAwCistI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDMJMHgwMQorLQorLXN0cnVjdCBzbmRfZG1fZm1faW5mbyB7CistCXVuc2lnbmVkIGNoYXIgZm1fbW9kZTsJCS8qIE9QTCBtb2RlLCBzZWUgU05EUlZfRE1fRk1fTU9ERV9YWFggKi8KKy0JdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgZmxhZyAqLworLX07CistCistLyoKKy0gKiAgRGF0YSBzdHJ1Y3R1cmUgY29tcG9zaW5nIGFuIEZNICJub3RlIiBvciBzb3VuZCBldmVudC4KKy0gKi8KKy0KKy1zdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlIHsKKy0JdW5zaWduZWQgY2hhciBvcDsJCS8qIG9wZXJhdG9yIGNlbGwgKDAgb3IgMSkgKi8KKy0JdW5zaWduZWQgY2hhciB2b2ljZTsJCS8qIEZNIHZvaWNlICgwIHRvIDE3KSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGFtOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gKi8KKy0JdW5zaWduZWQgY2hhciB2aWJyYXRvOwkJLyogdmlicmF0byBlZmZlY3QgKi8KKy0JdW5zaWduZWQgY2hhciBkb19zdXN0YWluOwkvKiBzdXN0YWluIHBoYXNlICovCistCXVuc2lnbmVkIGNoYXIga2JkX3NjYWxlOwkvKiBrZXlib2FyZCBzY2FsaW5nICovCistCXVuc2lnbmVkIGNoYXIgaGFybW9uaWM7CQkvKiA0IGJpdHM6IGhhcm1vbmljIGFuZCBtdWx0aXBsaWVyICovCistCXVuc2lnbmVkIGNoYXIgc2NhbGVfbGV2ZWw7CS8qIDIgYml0czogZGVjcmVhc2Ugb3V0cHV0IGZyZXEgcmlzZXMgKi8KKy0JdW5zaWduZWQgY2hhciB2b2x1bWU7CQkvKiA2IGJpdHM6IHZvbHVtZSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGF0dGFjazsJCS8qIDQgYml0czogYXR0YWNrIHJhdGUgKi8KKy0JdW5zaWduZWQgY2hhciBkZWNheTsJCS8qIDQgYml0czogZGVjYXkgcmF0ZSAqLworLQl1bnNpZ25lZCBjaGFyIHN1c3RhaW47CQkvKiA0IGJpdHM6IHN1c3RhaW4gbGV2ZWwgKi8KKy0JdW5zaWduZWQgY2hhciByZWxlYXNlOwkJLyogNCBiaXRzOiByZWxlYXNlIHJhdGUgKi8KKy0KKy0JdW5zaWduZWQgY2hhciBmZWVkYmFjazsJCS8qIDMgYml0czogZmVlZGJhY2sgZm9yIG9wMCAqLworLQl1bnNpZ25lZCBjaGFyIGNvbm5lY3Rpb247CS8qIDAgZm9yIHNlcmlhbCwgMSBmb3IgcGFyYWxsZWwgKi8KKy0JdW5zaWduZWQgY2hhciBsZWZ0OwkJLyogc3RlcmVvIGxlZnQgKi8KKy0JdW5zaWduZWQgY2hhciByaWdodDsJCS8qIHN0ZXJlbyByaWdodCAqLworLQl1bnNpZ25lZCBjaGFyIHdhdmVmb3JtOwkJLyogMyBiaXRzOiB3YXZlZm9ybSBzaGFwZSAqLworLX07CistCistLyoKKy0gKiAgVGhpcyBkZXNjcmliZXMgYW4gRk0gbm90ZSBieSBpdHMgdm9pY2UsIG9jdGF2ZSwgZnJlcXVlbmN5IG51bWJlciAoMTBiaXQpCistICogIGFuZCBrZXkgb24vb2ZmLgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fbm90ZSB7CistCXVuc2lnbmVkIGNoYXIgdm9pY2U7CS8qIDAtMTcgdm9pY2UgY2hhbm5lbCAqLworLQl1bnNpZ25lZCBjaGFyIG9jdGF2ZTsJLyogMyBiaXRzOiB3aGF0IG9jdGF2ZSB0byBwbGF5ICovCistCXVuc2lnbmVkIGludCBmbnVtOwkvKiAxMCBiaXRzOiBmcmVxdWVuY3kgbnVtYmVyICovCistCXVuc2lnbmVkIGNoYXIga2V5X29uOwkvKiBzZXQgZm9yIGFjdGl2ZSwgY2xlYXIgZm9yIHNpbGVudCAqLworLX07CistCistLyoKKy0gKiAgRk0gcGFyYW1ldGVycyB0aGF0IGFwcGx5IGdsb2JhbGx5IHRvIGFsbCB2b2ljZXMsIGFuZCB0aHVzIGFyZSBub3QgIm5vdGVzIgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zIHsKKy0JdW5zaWduZWQgY2hhciBhbV9kZXB0aDsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uIGRlcHRoICgxPWhpKSAqLworLQl1bnNpZ25lZCBjaGFyIHZpYl9kZXB0aDsJLyogdmlicmF0byBkZXB0aCAoMT1oaSkgKi8KKy0JdW5zaWduZWQgY2hhciBrYmRfc3BsaXQ7CS8qIGtleWJvYXJkIHNwbGl0ICovCistCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIHNlbGVjdCAqLworLQorLQkvKiBUaGlzIGJsb2NrIGlzIHRoZSBwZXJjdXNzaW9uIGluc3RydW1lbnQgZGF0YSAqLworLQl1bnNpZ25lZCBjaGFyIGJhc3M7CistCXVuc2lnbmVkIGNoYXIgc25hcmU7CistCXVuc2lnbmVkIGNoYXIgdG9tdG9tOworLQl1bnNpZ25lZCBjaGFyIGN5bWJhbDsKKy0JdW5zaWduZWQgY2hhciBoaWhhdDsKKy19OworLQorLS8qCistICogIEZNIG1vZGUgaW9jdGwgc2V0dGluZ3MKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDIwLCBzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8pCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9SRVNFVAkJX0lPICgnSCcsIDB4MjEpCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9QTEFZX05PVEUJX0lPVygnSCcsIDB4MjIsIHN0cnVjdCBzbmRfZG1fZm1fbm90ZSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9WT0lDRQlfSU9XKCdIJywgMHgyMywgc3RydWN0IHNuZF9kbV9mbV92b2ljZSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9QQVJBTVMJX0lPVygnSCcsIDB4MjQsIHN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX01PREUJX0lPVygnSCcsIDB4MjUsIGludCkKKy0vKiBmb3IgT1BMMyBvbmx5ICovCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfQ09OTkVDVElPTglfSU9XKCdIJywgMHgyNiwgaW50KQorLS8qIFNCSSBwYXRjaCBtYW5hZ2VtZW50ICovCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9DTEVBUl9QQVRDSEVTCV9JTyAoJ0gnLCAweDQwKQorLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1JFU0VUCQkweDIwCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUExBWV9OT1RFCQkweDIxCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1ZPSUNFCQkweDIyCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1BBUkFNUwkweDIzCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX01PREUJCTB4MjQKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfT1BMCQkweDI1CistCistLyoKKy0gKiBQYXRjaCBSZWNvcmQgLSBmaXhlZCBzaXplIGZvciB3cml0ZQorLSAqLworLQorLSNkZWZpbmUgRk1fS0VZX1NCSQkiU0JJXDAzMiIKKy0jZGVmaW5lIEZNX0tFWV8yT1AJIjJPUFwwMzIiCistI2RlZmluZSBGTV9LRVlfNE9QCSI0T1BcMDMyIgorLQorLXN0cnVjdCBzYmlfcGF0Y2ggeworLQl1bnNpZ25lZCBjaGFyIHByb2c7CistCXVuc2lnbmVkIGNoYXIgYmFuazsKKy0JY2hhciBrZXlbNF07CistCWNoYXIgbmFtZVsyNV07CistCWNoYXIgZXh0ZW5zaW9uWzddOworLQl1bnNpZ25lZCBjaGFyIGRhdGFbMzJdOworLX07CistCistI2VuZGlmIC8qIF9fU09VTkRfQVNPVU5EX0ZNX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKK2luZGV4IDA0MmM1YTZmLi5mMDZlY2VlNSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAorQEAgLTEsMzgxICsxLDIgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBDb3B5cmlnaHQgKGMpIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorLSAqCQkgICAgIENyZWF0aXZlIExhYnMsIEluYy4KKy0gKiAgRGVmaW5pdGlvbnMgZm9yIEVNVTEwSzEgKFNCIExpdmUhKSBjaGlwcworLSAqCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0jaWZuZGVmIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKy0KKy0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CistCistLyoKKy0gKiAtLS0tIEZYODAxMCAtLS0tCistICovCistCistI2RlZmluZSBFTVUxMEsxX0NBUkRfQ1JFQVRJVkUJCQkweDAwMDAwMDAwCistI2RlZmluZSBFTVUxMEsxX0NBUkRfRU1VQVBTCQkJMHgwMDAwMDAwMQorLQorLSNkZWZpbmUgRU1VMTBLMV9GWDgwMTBfUENNX0NPVU5UCQk4CistCistLyoKKy0gKiBGb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBjb3BpZWQgZnJvbSBsaW51eC90eXBlcy5oIHRvIHN1cHBvcnQgY29tcGlsaW5nCistICogdGhpcyBoZWFkZXIgZmlsZSBpbiB1c2Vyc3BhY2Ugc2luY2UgdGhleSBhcmUgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yCistICogdWFwaSBoZWFkZXJzLgorLSAqLworLSNkZWZpbmUgX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKG5hbWUsYml0cykgXAorLQl1bnNpZ25lZCBsb25nIG5hbWVbKGJpdHMpIC8gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpXQorLQorLS8qIGluc3RydWN0aW9uIHNldCAqLworLSNkZWZpbmUgaU1BQzAJIDB4MDAJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDMQkgMHgwMQkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUMyCSAweDAyCS8qIFIgPSBBICsgKFggKiBZID4+IDMxKSAgIDsgd3JhcGFyb3VuZCAqLworLSNkZWZpbmUgaU1BQzMJIDB4MDMJLyogUiA9IEEgKyAoLVggKiBZID4+IDMxKSAgOyB3cmFwYXJvdW5kICovCistI2RlZmluZSBpTUFDSU5UMCAweDA0CS8qIFIgPSBBICsgWCAqIFkJICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDSU5UMSAweDA1CS8qIFIgPSBBICsgWCAqIFkJICAgOyB3cmFwYXJvdW5kICgzMS1iaXQpICovCistI2RlZmluZSBpQUNDMwkgMHgwNgkvKiBSID0gQSArIFggKyBZCSAgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaU1BQ01WICAgMHgwNwkvKiBSID0gQSwgYWNjICs9IFggKiBZID4+IDMxICovCistI2RlZmluZSBpQU5EWE9SICAweDA4CS8qIFIgPSAoQSAmIFgpIF4gWSAqLworLSNkZWZpbmUgaVRTVE5FRyAgMHgwOQkvKiBSID0gKEEgPj0gWSkgPyBYIDogflggKi8KKy0jZGVmaW5lIGlMSU1JVEdFIDB4MGEJLyogUiA9IChBID49IFkpID8gWCA6IFkgKi8KKy0jZGVmaW5lIGlMSU1JVExUIDB4MGIJLyogUiA9IChBIDwgWSkgPyBYIDogWSAqLworLSNkZWZpbmUgaUxPRwkgMHgwYwkvKiBSID0gbGluZWFyX2RhdGEsIEEgKGxvZ19kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworLSNkZWZpbmUgaUVYUAkgMHgwZAkvKiBSID0gbG9nX2RhdGEsIEEgKGxpbmVhcl9kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworLSNkZWZpbmUgaUlOVEVSUCAgMHgwZQkvKiBSID0gQSArIChYICogKFkgLSBBKSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaVNLSVAgICAgMHgwZgkvKiBSID0gQSAoY2NfcmVnKSwgWCAoY291bnQpLCBZIChjY190ZXN0KSAqLworLQorLS8qIEdQUnMgKi8KKy0jZGVmaW5lIEZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKy0jZGVmaW5lIEVYVElOKHgpCSgweDEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKy0jZGVmaW5lIEVYVE9VVCh4KQkoMHgyMCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIG91dHMgLT4gRlhXQyBsb3cgMTYgYml0cyAqLworLSNkZWZpbmUgRlhCVVMyKHgpCSgweDMwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgY29waWVzIG9mIGZ4IGJ1c2VzIGZvciBjYXB0dXJlIC0+IEZYV0MgaGlnaCAxNiBiaXRzICovCistCQkJCQkvKiBOQjogMHgzMSBhbmQgMHgzMiBhcmUgc2hhcmVkIHdpdGggQ2VudGVyL0xGRSBvbiBTQiBsaXZlIDUuMSAqLworLQorLSNkZWZpbmUgQ18wMDAwMDAwMAkweDQwCistI2RlZmluZSBDXzAwMDAwMDAxCTB4NDEKKy0jZGVmaW5lIENfMDAwMDAwMDIJMHg0MgorLSNkZWZpbmUgQ18wMDAwMDAwMwkweDQzCistI2RlZmluZSBDXzAwMDAwMDA0CTB4NDQKKy0jZGVmaW5lIENfMDAwMDAwMDgJMHg0NQorLSNkZWZpbmUgQ18wMDAwMDAxMAkweDQ2CistI2RlZmluZSBDXzAwMDAwMDIwCTB4NDcKKy0jZGVmaW5lIENfMDAwMDAxMDAJMHg0OAorLSNkZWZpbmUgQ18wMDAxMDAwMAkweDQ5CistI2RlZmluZSBDXzAwMDgwMDAwCTB4NGEKKy0jZGVmaW5lIENfMTAwMDAwMDAJMHg0YgorLSNkZWZpbmUgQ18yMDAwMDAwMAkweDRjCistI2RlZmluZSBDXzQwMDAwMDAwCTB4NGQKKy0jZGVmaW5lIENfODAwMDAwMDAJMHg0ZQorLSNkZWZpbmUgQ183ZmZmZmZmZgkweDRmCistI2RlZmluZSBDX2ZmZmZmZmZmCTB4NTAKKy0jZGVmaW5lIENfZmZmZmZmZmUJMHg1MQorLSNkZWZpbmUgQ19jMDAwMDAwMAkweDUyCistI2RlZmluZSBDXzRmMWJiY2RjCTB4NTMKKy0jZGVmaW5lIENfNWE3ZWY5ZGIJMHg1NAorLSNkZWZpbmUgQ18wMDEwMDAwMAkweDU1CQkvKiA/PyAqLworLSNkZWZpbmUgR1BSX0FDQ1UJMHg1NgkJLyogQUNDVU0sIGFjY3VtdWxhdG9yICovCistI2RlZmluZSBHUFJfQ09ORAkweDU3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworLSNkZWZpbmUgR1BSX05PSVNFMAkweDU4CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEdQUl9OT0lTRTEJMHg1OQkJLyogbm9pc2Ugc291cmNlICovCistI2RlZmluZSBHUFJfSVJRCQkweDVhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEdQUl9EQkFDCTB4NWIJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgKi8KKy0jZGVmaW5lIEdQUih4KQkJKEZYR1BSRUdCQVNFICsgKHgpKSAvKiBmcmVlIEdQUnM6IHggPSAweDAwIC0gMHhmZiAqLworLSNkZWZpbmUgSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCistI2RlZmluZSBFVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKy0jZGVmaW5lIElUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHg3ZiAqLworLSNkZWZpbmUgRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHg4MCArICh4KSkgLyogeCA9IDB4MDAgLSAweDFmICovCistCistI2RlZmluZSBBX0lUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworLSNkZWZpbmUgQV9FVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKy0jZGVmaW5lIEFfSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCistI2RlZmluZSBBX0VUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworLSNkZWZpbmUgQV9JVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKy0jZGVmaW5lIEFfRVRSQU1fQ1RMKHgpCShBX1RBTktNRU1DVExSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCistCistI2RlZmluZSBBX0ZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgRlggYnVzZXMgKi8KKy0jZGVmaW5lIEFfRVhUSU4oeCkJKDB4NDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwaHlzaWNhbCBpbnMgKi8KKy0jZGVmaW5lIEFfUDE2VklOKHgpCSgweDUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcDE2diBpbnMgKEEyIG9ubHkpICJFTVUzMiBpbnB1dHMiICovCistI2RlZmluZSBBX0VYVE9VVCh4KQkoMHg2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIHBoeXNpY2FsIG91dHMgLT4gQV9GWFdDMSAweDc5LTdmIHVua25vd24gICAqLworLSNkZWZpbmUgQV9GWEJVUzIoeCkJKDB4ODAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgxZiBleHRyYSBvdXRzIHVzZWQgZm9yIEVGWCBjYXB0dXJlIC0+IEFfRlhXQzIgKi8KKy0jZGVmaW5lIEFfRU1VMzJPVVRIKHgpCSgweGEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xMCAtIF8xRiIgLSA/Pz8gKi8KKy0jZGVmaW5lIEFfRU1VMzJPVVRMKHgpCSgweGIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xIC0gX0YiIC0gPz8/ICovCistI2RlZmluZSBBM19FTVUzMklOKHgpCSgweDE2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDNmICJFTVUzMl9JTl8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworLSNkZWZpbmUgQTNfRU1VMzJPVVQoeCkJKDB4MUUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworLSNkZWZpbmUgQV9HUFIoeCkJKEFfRlhHUFJFR0JBU0UgKyAoeCkpCistCistLyogY2NfcmVnIGNvbnN0YW50cyAqLworLSNkZWZpbmUgQ0NfUkVHX05PUk1BTElaRUQgQ18wMDAwMDAwMQorLSNkZWZpbmUgQ0NfUkVHX0JPUlJPVwlDXzAwMDAwMDAyCistI2RlZmluZSBDQ19SRUdfTUlOVVMJQ18wMDAwMDAwNAorLSNkZWZpbmUgQ0NfUkVHX1pFUk8JQ18wMDAwMDAwOAorLSNkZWZpbmUgQ0NfUkVHX1NBVFVSQVRFCUNfMDAwMDAwMTAKKy0jZGVmaW5lIENDX1JFR19OT05aRVJPCUNfMDAwMDAxMDAKKy0KKy0vKiBGWCBidXNlcyAqLworLSNkZWZpbmUgRlhCVVNfUENNX0xFRlQJCTB4MDAKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVAkJMHgwMQorLSNkZWZpbmUgRlhCVVNfUENNX0xFRlRfUkVBUgkweDAyCistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfUkVBUgkweDAzCistI2RlZmluZSBGWEJVU19NSURJX0xFRlQJCTB4MDQKKy0jZGVmaW5lIEZYQlVTX01JRElfUklHSFQJMHgwNQorLSNkZWZpbmUgRlhCVVNfUENNX0NFTlRFUgkweDA2CistI2RlZmluZSBGWEJVU19QQ01fTEZFCQkweDA3CistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9GUk9OVAkweDA4CistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfRlJPTlQJMHgwOQorLSNkZWZpbmUgRlhCVVNfTUlESV9SRVZFUkIJMHgwYworLSNkZWZpbmUgRlhCVVNfTUlESV9DSE9SVVMJMHgwZAorLSNkZWZpbmUgRlhCVVNfUENNX0xFRlRfU0lERQkweDBlCistI2RlZmluZSBGWEJVU19QQ01fUklHSFRfU0lERQkweDBmCistI2RlZmluZSBGWEJVU19QVF9MRUZUCQkweDE0CistI2RlZmluZSBGWEJVU19QVF9SSUdIVAkJMHgxNQorLQorLS8qIElucHV0cyAqLworLSNkZWZpbmUgRVhUSU5fQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fQUM5N19SCSAgIDB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX1NQRElGX0NEX0wgICAweDAyCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9TUERJRl9DRF9SICAgMHgwMwkvKiBpbnRlcm5hbCBTL1BESUYgQ0QgLSBvbmJvYXJkIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX1pPT01fTAkgICAweDA0CS8qIFpvb20gVmlkZW8gSTJTIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fWk9PTV9SCSAgIDB4MDUJLyogWm9vbSBWaWRlbyBJMlMgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fVE9TTElOS19MCSAgIDB4MDYJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fVE9TTElOS19SICAgIDB4MDcJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUxX0wJICAgMHgwOAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAxIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fTElORTFfUgkgICAweDA5CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fQ09BWF9TUERJRl9MIDB4MGEJLyogTGl2ZURyaXZlIC0gQ29heGlhbCBTL1BESUYgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX1IgMHgwYiAvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9MSU5FMl9MCSAgIDB4MGMJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMiAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUyX1IJICAgMHgwZAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gcmlnaHQgKi8KKy0KKy0vKiBPdXRwdXRzICovCistI2RlZmluZSBFWFRPVVRfQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgcGxheWJhY2sgY2hhbm5lbCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9UT1NMSU5LX0wgICAweDAyCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9UT1NMSU5LX1IgICAweDAzCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfQUM5N19DRU5URVIgMHgwNAkvKiBTQiBMaXZlIDUuMSAtIGNlbnRlciAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfTEZFCSAgIDB4MDUgLyogU0IgTGl2ZSA1LjEgLSBMRkUgKi8KKy0jZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfTCAweDA2CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfUiAweDA3CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfUkVBUl9MCSAgIDB4MDgJLyogUmVhciBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX1JFQVJfUgkgICAweDA5CS8qIFJlYXIgY2hhbm5lbCAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfQURDX0NBUF9MICAgMHgwYQkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSBsZWZ0ICovCistI2RlZmluZSBFWFRPVVRfQURDX0NBUF9SICAgMHgwYgkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSByaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX01JQ19DQVAJICAgMHgwYwkvKiBNSUMgQ2FwdHVyZSBidWZmZXIgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfTCAweDBkCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBMZWZ0ICovCistI2RlZmluZSBFWFRPVVRfQUM5N19SRUFSX1IgMHgwZQkvKiBTQiBMaXZlIDUuMSAoYykgMjAwMyAtIFJlYXIgUmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQ0VOVEVSCSAgIDB4MTEgLyogQW5hbG9nIENlbnRlciAqLworLSNkZWZpbmUgRVhUT1VUX0FMRkUJICAgMHgxMiAvKiBBbmFsb2cgTEZFICovCistCistLyogQXVkaWd5IElucHV0cyAqLworLSNkZWZpbmUgQV9FWFRJTl9BQzk3X0wJCTB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9BQzk3X1IJCTB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fU1BESUZfQ0RfTAkweDAyCS8qIGRpZ2l0YWwgQ0QgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9SCTB4MDMJLyogZGlnaXRhbCBDRCBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9MICAgICAweDA0ICAgIC8qIGF1ZGlneSBkcml2ZSBPcHRpY2FsIFNQRElGIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9PUFRfU1BESUZfUiAgICAgMHgwNSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovIAorLSNkZWZpbmUgQV9FWFRJTl9MSU5FMl9MCQkweDA4CS8qIGF1ZGlneSBkcml2ZSBsaW5lMi9taWMyIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9MSU5FMl9SCQkweDA5CS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQURDX0wJCTB4MGEgICAgLyogUGhpbGlwcyBBREMgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FEQ19SCQkweDBiICAgIC8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQVVYMl9MCQkweDBjCS8qIGF1ZGlneSBkcml2ZSBhdXgyIC0gbGVmdCAqLworLSNkZWZpbmUgQV9FWFRJTl9BVVgyX1IJCTB4MGQJLyogICAgICAgICAgICAgICAgICAgLSByaWdodCAqLworLQorLS8qIEF1ZGlnaXkgT3V0cHV0cyAqLworLSNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfTAkweDAwCS8qIGRpZ2l0YWwgZnJvbnQgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfUgkweDAxCS8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0NFTlRFUgkJMHgwMgkvKiBkaWdpdGFsIGZyb250IGNlbnRlciAqLworLSNkZWZpbmUgQV9FWFRPVVRfTEZFCQkweDAzCS8qIGRpZ2l0YWwgZnJvbnQgbGZlICovCistI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfTAkweDA0CS8qIGhlYWRwaG9uZSBhdWRpZ3kgZHJpdmUgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfSEVBRFBIT05FX1IJMHgwNQkvKiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovCistI2RlZmluZSBBX0VYVE9VVF9SRUFSX0wJCTB4MDYJLyogZGlnaXRhbCByZWFyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX1JFQVJfUgkJMHgwNwkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9MCTB4MDgJLyogYW5hbG9nIGZyb250IGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9SCTB4MDkJLyogICAgICAgICAgICAgIHJpZ2h0ICovCistI2RlZmluZSBBX0VYVE9VVF9BQ0VOVEVSCTB4MGEJLyogYW5hbG9nIGNlbnRlciAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUxGRQkJMHgwYgkvKiBhbmFsb2cgTEZFICovCistI2RlZmluZSBBX0VYVE9VVF9BU0lERV9MCTB4MGMJLyogYW5hbG9nIHNpZGUgbGVmdCAgLSBBdWRpZ3kgMiBaUyAqLworLSNkZWZpbmUgQV9FWFRPVVRfQVNJREVfUgkweDBkCS8qICAgICAgICAgICAgIHJpZ2h0IC0gQXVkaWd5IDIgWlMgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FSRUFSX0wJMHgwZQkvKiBhbmFsb2cgcmVhciBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9BUkVBUl9SCTB4MGYJLyogICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FDOTdfTAkJMHgxMAkvKiBBQzk3IGxlZnQgKGZyb250KSAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUM5N19SCQkweDExCS8qICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfTAkweDE2CS8qIEFEQyBjYXB0dXJlIGJ1ZmZlciBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9BRENfQ0FQX1IJMHgxNwkvKiAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX01JQ19DQVAJMHgxOAkvKiBNaWMgY2FwdHVyZSBidWZmZXIgKi8KKy0KKy0vKiBBdWRpZ3kgY29uc3RhbnRzICovCistI2RlZmluZSBBX0NfMDAwMDAwMDAJMHhjMAorLSNkZWZpbmUgQV9DXzAwMDAwMDAxCTB4YzEKKy0jZGVmaW5lIEFfQ18wMDAwMDAwMgkweGMyCistI2RlZmluZSBBX0NfMDAwMDAwMDMJMHhjMworLSNkZWZpbmUgQV9DXzAwMDAwMDA0CTB4YzQKKy0jZGVmaW5lIEFfQ18wMDAwMDAwOAkweGM1CistI2RlZmluZSBBX0NfMDAwMDAwMTAJMHhjNgorLSNkZWZpbmUgQV9DXzAwMDAwMDIwCTB4YzcKKy0jZGVmaW5lIEFfQ18wMDAwMDEwMAkweGM4CistI2RlZmluZSBBX0NfMDAwMTAwMDAJMHhjOQorLSNkZWZpbmUgQV9DXzAwMDAwODAwCTB4Y2EKKy0jZGVmaW5lIEFfQ18xMDAwMDAwMAkweGNiCistI2RlZmluZSBBX0NfMjAwMDAwMDAJMHhjYworLSNkZWZpbmUgQV9DXzQwMDAwMDAwCTB4Y2QKKy0jZGVmaW5lIEFfQ184MDAwMDAwMAkweGNlCistI2RlZmluZSBBX0NfN2ZmZmZmZmYJMHhjZgorLSNkZWZpbmUgQV9DX2ZmZmZmZmZmCTB4ZDAKKy0jZGVmaW5lIEFfQ19mZmZmZmZmZQkweGQxCistI2RlZmluZSBBX0NfYzAwMDAwMDAJMHhkMgorLSNkZWZpbmUgQV9DXzRmMWJiY2RjCTB4ZDMKKy0jZGVmaW5lIEFfQ181YTdlZjlkYgkweGQ0CistI2RlZmluZSBBX0NfMDAxMDAwMDAJMHhkNQorLSNkZWZpbmUgQV9HUFJfQUNDVQkweGQ2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKy0jZGVmaW5lIEFfR1BSX0NPTkQJMHhkNwkJLyogQ0NSLCBjb25kaXRpb24gcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEFfR1BSX05PSVNFMAkweGQ4CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEFfR1BSX05PSVNFMQkweGQ5CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEFfR1BSX0lSUQkweGRhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEFfR1BSX0RCQUMJMHhkYgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAtIGludGVybmFsICovCistI2RlZmluZSBBX0dQUl9EQkFDRQkweGRlCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gZXh0ZXJuYWwgKi8KKy0KKy0vKiBkZWZpbml0aW9ucyBmb3IgZGVidWcgcmVnaXN0ZXIgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1pDCQkJMHg4MDAwMDAwMAkvKiB6ZXJvIHRyYW0gY291bnRlciAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0FUVVJBVElPTl9PQ0NVUkVECTB4MDIwMDAwMDAJLyogc2F0dXJhdGlvbiBjb250cm9sICovCistI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX0FERFIJMHgwMWZmMDAwMAkvKiBzYXR1cmF0aW9uIGFkZHJlc3MgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQCQkweDAwMDA4MDAwCS8qIHNpbmdsZSBzdGVwIG1vZGUgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NURVAJCTB4MDAwMDQwMDAJLyogc3RhcnQgc2luZ2xlIHN0ZXAgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX0NPTkRJVElPTl9DT0RFCTB4MDAwMDNlMDAJLyogY29uZGl0aW9uIGNvZGUgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQX0FERFIJMHgwMDAwMDFmZgkvKiBzaW5nbGUgc3RlcCBhZGRyZXNzICovCistCistLyogdGFuayBtZW1vcnkgYWRkcmVzcyBsaW5lICovCistI2lmbmRlZiBfX0tFUk5FTF9fCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19BRERSX01BU0sgMHgwMDBmZmZmZgkvKiAyMCBiaXQgdGFuayBhZGRyZXNzIGZpZWxkCQkJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0NMRUFSCSAweDAwODAwMDAwCS8qIENsZWFyIHRhbmsgbWVtb3J5CQkJCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19BTElHTgkgMHgwMDQwMDAwMAkvKiBBbGlnbiByZWFkIG9yIHdyaXRlIHJlbGF0aXZlIHRvIHRhbmsgYWNjZXNzCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19XUklURQkgMHgwMDIwMDAwMAkvKiBXcml0ZSB0byB0YW5rIG1lbW9yeQkJCQkqLworLSNkZWZpbmUgVEFOS01FTUFERFJSRUdfUkVBRAkgMHgwMDEwMDAwMAkvKiBSZWFkIGZyb20gdGFuayBtZW1vcnkJCQkqLworLSNlbmRpZgorLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyB7CistCXVuc2lnbmVkIGludCBpbnRlcm5hbF90cmFtX3NpemU7CS8qIGluIHNhbXBsZXMgKi8KKy0JdW5zaWduZWQgaW50IGV4dGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworLQljaGFyIGZ4YnVzX25hbWVzWzE2XVszMl07CQkvKiBuYW1lcyBvZiBGWEJVU2VzICovCistCWNoYXIgZXh0aW5fbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIGV4dGVybmFsIGlucHV0cyAqLworLQljaGFyIGV4dG91dF9uYW1lc1szMl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgb3V0cHV0cyAqLworLQl1bnNpZ25lZCBpbnQgZ3ByX2NvbnRyb2xzOwkJLyogY291bnQgb2YgR1BSIGNvbnRyb2xzICovCistfTsKKy0KKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX05PTkUJCTAKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RBQkxFMTAwCTEKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX0JBU1MJCTIKKy0jZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RSRUJMRQkJMworLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fT05PRkYJCTQKKy0KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJCS8qIGZ1bGwgY29udHJvbCBJRCBkZWZpbml0aW9uICovCistCXVuc2lnbmVkIGludCB2Y291bnQ7CQkvKiB2aXNpYmxlIGNvdW50ICovCistCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIEdQUiAoMS4uMTYpICovCistCXVuc2lnbmVkIHNob3J0IGdwclszMl07CQkvKiBHUFIgbnVtYmVyKHMpICovCistCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CQkvKiBpbml0aWFsIHZhbHVlcyAqLworLQl1bnNpZ25lZCBpbnQgbWluOwkJLyogbWluaW11bSByYW5nZSAqLworLQl1bnNpZ25lZCBpbnQgbWF4OwkJLyogbWF4aW11bSByYW5nZSAqLworLQl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CS8qIHRyYW5zbGF0aW9uIHR5cGUgKEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OKikgKi8KKy0JY29uc3QgdW5zaWduZWQgaW50ICp0bHY7CistfTsKKy0KKy0vKiBvbGQgQUJJIHdpdGhvdXQgVExWIHN1cHBvcnQgKi8KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfb2xkX2dwciB7CistCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CistCXVuc2lnbmVkIGludCB2Y291bnQ7CistCXVuc2lnbmVkIGludCBjb3VudDsKKy0JdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsKKy0JdW5zaWduZWQgaW50IHZhbHVlWzMyXTsKKy0JdW5zaWduZWQgaW50IG1pbjsKKy0JdW5zaWduZWQgaW50IG1heDsKKy0JdW5zaWduZWQgaW50IHRyYW5zbGF0aW9uOworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIHsKKy0JY2hhciBuYW1lWzEyOF07CistCistCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChncHJfdmFsaWQsIDB4MjAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKy0JX191MzIgX191c2VyICpncHJfbWFwOwkJLyogaW5pdGlhbGl6ZXJzICovCistCistCXVuc2lnbmVkIGludCBncHJfYWRkX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBhZGQvcmVwbGFjZSAqLworLQlzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIF9fdXNlciAqZ3ByX2FkZF9jb250cm9sczsgLyogR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCistCistCXVuc2lnbmVkIGludCBncHJfZGVsX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKmdwcl9kZWxfY29udHJvbHM7IC8qIElEcyBvZiBHUFIgY29udHJvbHMgdG8gcmVtb3ZlICovCistCistCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gbGlzdCAqLworLQl1bnNpZ25lZCBpbnQgZ3ByX2xpc3RfY29udHJvbF90b3RhbDsgLyogdG90YWwgY291bnQgb2YgR1BSIGNvbnRyb2xzICovCistCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgX191c2VyICpncHJfbGlzdF9jb250cm9sczsgLyogbGlzdGVkIEdQUiBjb250cm9scyAqLworLQorLQlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAodHJhbV92YWxpZCwgMHgxMDApOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKnRyYW1fZGF0YV9tYXA7CSAgLyogZGF0YSBpbml0aWFsaXplcnMgKi8KKy0JX191MzIgX191c2VyICp0cmFtX2FkZHJfbWFwOwkgIC8qIG1hcCBpbml0aWFsaXplcnMgKi8KKy0KKy0JX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKGNvZGVfdmFsaWQsIDEwMjQpOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluc3RydWN0aW9ucyAqLworLQlfX3UzMiBfX3VzZXIgKmNvZGU7CQkgIC8qIG9uZSBpbnN0cnVjdGlvbiAtIDY0IGJpdHMgKi8KKy19OworLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSB7CistCXVuc2lnbmVkIGludCBhZGRyZXNzOwkJLyogMzEuYml0ID09IDEgLT4gZXh0ZXJuYWwgVFJBTSAqLworLQl1bnNpZ25lZCBpbnQgc2l6ZTsJCS8qIHNpemUgaW4gc2FtcGxlcyAoNCBieXRlcykgKi8KKy0JdW5zaWduZWQgaW50ICpzYW1wbGVzOwkJLyogcG9pbnRlciB0byBzYW1wbGVzICgyMC1iaXQpICovCistCQkJCQkvKiBOVUxMLT5jbGVhciBtZW1vcnkgKi8KKy19OworLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyB7CistCXVuc2lnbmVkIGludCBzdWJzdHJlYW07CQkvKiBzdWJzdHJlYW0gbnVtYmVyICovCistCXVuc2lnbmVkIGludCByZXMxOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgaW50IGNoYW5uZWxzOwkJLyogMTYtYml0IGNoYW5uZWxzIGNvdW50LCB6ZXJvID0gcmVtb3ZlIHRoaXMgc3Vic3RyZWFtICovCistCXVuc2lnbmVkIGludCB0cmFtX3N0YXJ0OwkvKiByaW5nIGJ1ZmZlciBwb3NpdGlvbiBpbiBUUkFNIChpbiBzYW1wbGVzKSAqLworLQl1bnNpZ25lZCBpbnQgYnVmZmVyX3NpemU7CS8qIGNvdW50IG9mIGJ1ZmZlcmVkIHNhbXBsZXMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3NpemU7CQkvKiBHUFIgY29udGFpbmluZyBzaXplIG9mIHJpbmdidWZmZXIgaW4gc2FtcGxlcyAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3B0cjsJCS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgcG9pbnRlciBpbiB0aGUgcmluZyBidWZmZXIgKGhvc3QgPSByZXNldCwgRlg4MDEwKSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGNvdW50IG9mIHNhbXBsZXMgYmV0d2VlbiB0d28gaW50ZXJydXB0cyAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3RtcGNvdW50OwkvKiBHUFIgY29udGFpbmluZyBjdXJyZW50IGNvdW50IG9mIHNhbXBsZXMgdG8gaW50ZXJydXB0IChob3N0ID0gc2V0LCBGWDgwMTApICovCistCXVuc2lnbmVkIHNob3J0IGdwcl90cmlnZ2VyOwkvKiBHUFIgY29udGFpbmluZyB0cmlnZ2VyIChhY3RpdmF0ZSkgaW5mb3JtYXRpb24gKGhvc3QpICovCistCXVuc2lnbmVkIHNob3J0IGdwcl9ydW5uaW5nOwkvKiBHUFIgY29udGFpbmluZyBpbmZvIGlmIFBDTSBpcyBydW5uaW5nIChGWDgwMTApICovCistCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5zaWduZWQgY2hhciBldHJhbVszMl07CS8qIGV4dGVybmFsIFRSQU0gYWRkcmVzcyAmIGRhdGEgKG9uZSBwZXIgY2hhbm5lbCkgKi8KKy0JdW5zaWduZWQgaW50IHJlczI7CQkvKiByZXNlcnZlZCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKy0KKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfSU5GTwlfSU9SICgnSCcsIDB4MTAsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09ERV9QT0tFCV9JT1cgKCdIJywgMHgxMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BFRUsJX0lPV1IoJ0gnLCAweDEyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fU0VUVVAJX0lPVyAoJ0gnLCAweDIwLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fUE9LRQlfSU9XICgnSCcsIDB4MjEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QRUVLCV9JT1dSKCdIJywgMHgyMiwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUE9LRQlfSU9XICgnSCcsIDB4MzAsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUENNX1BFRUsJX0lPV1IoJ0gnLCAweDMxLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdIJywgMHg0MCwgaW50KQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TVE9QCV9JTyAgKCdIJywgMHg4MCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09OVElOVUUJX0lPICAoJ0gnLCAweDgxKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9aRVJPX1RSQU1fQ09VTlRFUiBfSU8gKCdIJywgMHg4MikKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU0lOR0xFX1NURVAJX0lPVyAoJ0gnLCAweDgzLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0RCR19SRUFECV9JT1IgKCdIJywgMHg4NCwgaW50KQorLQorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKy0KKy0jZW5kaWYgLyogX1VBUElfX1NPVU5EX0VNVTEwSzFfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9lbXUxMGsxLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL2hkc3AuaAoraW5kZXggNWRjMGMzZGIuLjc4ZmI3NDViIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitAQCAtMSwxMTEgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9IRFNQX0gKKy0jZGVmaW5lIF9fU09VTkRfSERTUF9ICistCistLyoKKy0gKiAgIENvcHlyaWdodCAoQykgMjAwMyBUaG9tYXMgQ2hhcmJvbm5lbCAodGhvbWFzQHVuZGF0YS5vcmcpCistICogICAgCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorLSAqLworLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLSNkZWZpbmUgSERTUF9NQVRSSVhfTUlYRVJfU0laRSAyMDQ4CistCistZW51bSBIRFNQX0lPX1R5cGUgeworLQlEaWdpZmFjZSwKKy0JTXVsdGlmYWNlLAorLQlIOTY1MiwKKy0JSDk2MzIsCistCVJQTSwKKy0JVW5kZWZpbmVkLAorLX07CistCistc3RydWN0IGhkc3BfcGVha19ybXMgeworLQlfX3UzMiBpbnB1dF9wZWFrc1syNl07CistCV9fdTMyIHBsYXliYWNrX3BlYWtzWzI2XTsKKy0JX191MzIgb3V0cHV0X3BlYWtzWzI4XTsKKy0JX191NjQgaW5wdXRfcm1zWzI2XTsKKy0JX191NjQgcGxheWJhY2tfcm1zWzI2XTsKKy0JLyogVGhlc2UgYXJlIG9ubHkgdXNlZCBmb3IgSDk2eHggY2FyZHMgKi8KKy0JX191NjQgb3V0cHV0X3Jtc1syNl07CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX1BFQUtfUk1TIF9JT1IoJ0gnLCAweDQwLCBzdHJ1Y3QgaGRzcF9wZWFrX3JtcykKKy0KKy1zdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyB7CistCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBjaGFyIGFkYXRzeW5jX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgYWRhdF9zeW5jX2NoZWNrWzNdOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX2luOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX291dDsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9wcm9mZXNzaW9uYWw7CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfZW1waGFzaXM7CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfbm9uYXVkaW87CistCXVuc2lnbmVkIGludCBzcGRpZl9zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgaW50IHN5c3RlbV9zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgaW50IGF1dG9zeW5jX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBjaGFyIHN5c3RlbV9jbG9ja19tb2RlOworLQl1bnNpZ25lZCBjaGFyIGNsb2NrX3NvdXJjZTsKKy0JdW5zaWduZWQgY2hhciBhdXRvc3luY19yZWY7CistCXVuc2lnbmVkIGNoYXIgbGluZV9vdXQ7CistCXVuc2lnbmVkIGNoYXIgcGFzc3RocnU7IAorLQl1bnNpZ25lZCBjaGFyIGRhX2dhaW47CistCXVuc2lnbmVkIGNoYXIgYWRfZ2FpbjsKKy0JdW5zaWduZWQgY2hhciBwaG9uZV9nYWluOworLQl1bnNpZ25lZCBjaGFyIHhscl9icmVha291dF9jYWJsZTsKKy0JdW5zaWduZWQgY2hhciBhbmFsb2dfZXh0ZW5zaW9uX2JvYXJkOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9DT05GSUdfSU5GTyBfSU9SKCdIJywgMHg0MSwgc3RydWN0IGhkc3BfY29uZmlnX2luZm8pCistCistc3RydWN0IGhkc3BfZmlybXdhcmUgeworLQl2b2lkIF9fdXNlciAqZmlybXdhcmVfZGF0YTsJLyogMjQ0MTMgeCA0IGJ5dGVzICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfVVBMT0FEX0ZJUk1XQVJFIF9JT1coJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcF9maXJtd2FyZSkKKy0KKy1zdHJ1Y3QgaGRzcF92ZXJzaW9uIHsKKy0JZW51bSBIRFNQX0lPX1R5cGUgaW9fdHlwZTsKKy0JdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9WRVJTSU9OIF9JT1IoJ0gnLCAweDQzLCBzdHJ1Y3QgaGRzcF92ZXJzaW9uKQorLQorLXN0cnVjdCBoZHNwX21peGVyIHsKKy0JdW5zaWduZWQgc2hvcnQgbWF0cml4W0hEU1BfTUFUUklYX01JWEVSX1NJWkVdOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9NSVhFUiBfSU9SKCdIJywgMHg0NCwgc3RydWN0IGhkc3BfbWl4ZXIpCistCistc3RydWN0IGhkc3BfOTYzMl9hZWIgeworLQlpbnQgYWViaTsKKy0JaW50IGFlYm87CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUXzk2MzJfQUVCIF9JT1IoJ0gnLCAweDQ1LCBzdHJ1Y3QgaGRzcF85NjMyX2FlYikKKy0KKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBlbnVtIEhEU1BfSU9fVHlwZSBIRFNQX0lPX1R5cGU7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9wZWFrX3JtcyBoZHNwX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyBoZHNwX2NvbmZpZ19pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9maXJtd2FyZSBoZHNwX2Zpcm13YXJlX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF92ZXJzaW9uIGhkc3BfdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfbWl4ZXIgaGRzcF9taXhlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfOTYzMl9hZWIgaGRzcF85NjMyX2FlYl90OworLQorLSNlbmRpZiAvKiBfX1NPVU5EX0hEU1BfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9oZHNwLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitpbmRleCBhMzhmM2Y3OS4uYWY2ZDE5ZWQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaAorQEAgLTEsMjMyICsxLDIgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0jaWZuZGVmIF9fU09VTkRfSERTUE1fSAorLSNkZWZpbmUgX19TT1VORF9IRFNQTV9ICistLyoKKy0gKiAgIENvcHlyaWdodCAoQykgMjAwMyBXaW5mcmllZCBSaXRzY2ggKElFTSkKKy0gKiAgIGJhc2VkIG9uIGhkc3AuaCBmcm9tIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorLSAqLworLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLQorLS8qIE1heGltdW0gY2hhbm5lbHMgaXMgNjQgZXZlbiBvbiA1Nk1vZGUgeW91IGhhdmUgNjRwbGF5YmFja3MgdG8gbWF0cml4ICovCistI2RlZmluZSBIRFNQTV9NQVhfQ0hBTk5FTFMgICAgICA2NAorLQorLWVudW0gaGRzcG1faW9fdHlwZSB7CistCU1BREksCistCU1BRElmYWNlLAorLQlBSU8sCistCUFFUzMyLAorLQlSYXlEQVQKKy19OworLQorLWVudW0gaGRzcG1fc3BlZWQgeworLQlzcywKKy0JZHMsCistCXFzCistfTsKKy0KKy0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBJT0NUTCBQZWFrL1JNUyBNZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy0KKy1zdHJ1Y3QgaGRzcG1fcGVha19ybXMgeworLQlfX3UzMiBpbnB1dF9wZWFrc1s2NF07CistCV9fdTMyIHBsYXliYWNrX3BlYWtzWzY0XTsKKy0JX191MzIgb3V0cHV0X3BlYWtzWzY0XTsKKy0KKy0JX191NjQgaW5wdXRfcm1zWzY0XTsKKy0JX191NjQgcGxheWJhY2tfcm1zWzY0XTsKKy0JX191NjQgb3V0cHV0X3Jtc1s2NF07CistCistCV9fdTggc3BlZWQ7IC8qIGVudW0ge3NzLCBkcywgcXN9ICovCistCWludCBzdGF0dXMyOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfUEVBS19STVMgXAorLQlfSU9SKCdIJywgMHg0Miwgc3RydWN0IGhkc3BtX3BlYWtfcm1zKQorLQorLS8qIC0tLS0tLS0tLS0tLSBDT05GSUcgYmxvY2sgSU9DVEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLQorLXN0cnVjdCBoZHNwbV9jb25maWcgeworLQl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CistCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgbWFkaV9zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CistCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworLQl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciBsaW5lX291dDsKKy0JdW5zaWduZWQgaW50IHBhc3N0aHJ1OworLQl1bnNpZ25lZCBpbnQgYW5hbG9nX291dDsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0NPTkZJRyBcCistCV9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcG1fY29uZmlnKQorLQorLS8qCistICogSWYgdGhlcmUncyBhIFRDTyAoVGltZUNvZGUgT3B0aW9uKSBib2FyZCBpbnN0YWxsZWQsCistICogdGhlcmUgYXJlIGZ1cnRoZXIgb3B0aW9ucyBhbmQgc3RhdHVzIGRhdGEgYXZhaWxhYmxlLgorLSAqIFRoZSBoZHNwbV9sdGMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBjdXJyZW50IFNNUFRFCistICogdGltZWNvZGUgYW5kIHNvbWUgc3RhdHVzIGluZm9ybWF0aW9uIGFuZCBjYW4gYmUKKy0gKiBvYnRhaW5lZCB2aWEgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBvciBpbiB0aGUKKy0gKiBoZHNwbV9zdGF0dXMgc3RydWN0LgorLSAqLworLQorLWVudW0gaGRzcG1fbHRjX2Zvcm1hdCB7CistCWZvcm1hdF9pbnZhbGlkLAorLQlmcHNfMjQsCistCWZwc18yNSwKKy0JZnBzXzI5OTcsCistCWZwc18zMAorLX07CistCistZW51bSBoZHNwbV9sdGNfZnJhbWUgeworLQlmcmFtZV9pbnZhbGlkLAorLQlkcm9wX2ZyYW1lLAorLQlmdWxsX2ZyYW1lCistfTsKKy0KKy1lbnVtIGhkc3BtX2x0Y19pbnB1dF9mb3JtYXQgeworLQludHNjLAorLQlwYWwsCistCW5vX3ZpZGVvCistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fbHRjIHsKKy0JdW5zaWduZWQgaW50IGx0YzsKKy0KKy0JZW51bSBoZHNwbV9sdGNfZm9ybWF0IGZvcm1hdDsKKy0JZW51bSBoZHNwbV9sdGNfZnJhbWUgZnJhbWU7CistCWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCBpbnB1dF9mb3JtYXQ7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9MVEMgX0lPUignSCcsIDB4NDYsIHN0cnVjdCBoZHNwbV9sdGMpCistCistLyoKKy0gKiBUaGUgc3RhdHVzIGRhdGEgcmVmbGVjdHMgdGhlIGRldmljZSdzIGN1cnJlbnQgc3RhdGUKKy0gKiBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBjYXJkJ3MgY29uZmlndXJhdGlvbiBhbmQKKy0gKiBjb25uZWN0aW9uIHN0YXR1cy4KKy0gKi8KKy0KKy1lbnVtIGhkc3BtX3N5bmMgeworLQloZHNwbV9zeW5jX25vX2xvY2sgPSAwLAorLQloZHNwbV9zeW5jX2xvY2sgPSAxLAorLQloZHNwbV9zeW5jX3N5bmMgPSAyCistfTsKKy0KKy1lbnVtIGhkc3BtX21hZGlfaW5wdXQgeworLQloZHNwbV9pbnB1dF9vcHRpY2FsID0gMCwKKy0JaGRzcG1faW5wdXRfY29heCA9IDEKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9jaGFubmVsX2Zvcm1hdCB7CistCWhkc3BtX2Zvcm1hdF9jaF82NCA9IDAsCistCWhkc3BtX2Zvcm1hdF9jaF81NiA9IDEKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgeworLQloZHNwbV9mcmFtZV80OCA9IDAsCistCWhkc3BtX2ZyYW1lXzk2ID0gMQorLX07CistCistZW51bSBoZHNwbV9zeW5jc291cmNlIHsKKy0Jc3luY3NvdXJjZV93YyA9IDAsCistCXN5bmNzb3VyY2VfbWFkaSA9IDEsCistCXN5bmNzb3VyY2VfdGNvID0gMiwKKy0Jc3luY3NvdXJjZV9zeW5jID0gMywKKy0Jc3luY3NvdXJjZV9ub25lID0gNAorLX07CistCistc3RydWN0IGhkc3BtX3N0YXR1cyB7CistCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKy0JZW51bSBoZHNwbV9zeW5jc291cmNlIGF1dG9zeW5jX3NvdXJjZTsKKy0KKy0JX191NjQgY2FyZF9jbG9jazsKKy0JX191MzIgbWFzdGVyX3BlcmlvZDsKKy0KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlfX3U4IHN5bmNfd2M7IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY19tYWRpOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKy0JCQlfX3U4IHN5bmNfdGNvOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKy0JCQlfX3U4IHN5bmNfaW47IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggbWFkaV9pbnB1dDsgLyogZW51bSBoZHNwbV9tYWRpX2lucHV0ICovCistCQkJX191OCBjaGFubmVsX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0ICovCistCQkJX191OCBmcmFtZV9mb3JtYXQ7IC8qIGVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgKi8KKy0JCX0gbWFkaTsKKy0JfSBjYXJkX3NwZWNpZmljOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfU1RBVFVTIFwKKy0JX0lPUignSCcsIDB4NDcsIHN0cnVjdCBoZHNwbV9zdGF0dXMpCistCistLyoKKy0gKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmQgYW5kIGl0cyBhZGQtb25zLgorLSAqLworLQorLSNkZWZpbmUgSERTUE1fQURET05fVENPIDEKKy0KKy1zdHJ1Y3QgaGRzcG1fdmVyc2lvbiB7CistCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKy0JY2hhciBjYXJkbmFtZVsyMF07CistCXVuc2lnbmVkIGludCBzZXJpYWw7CistCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKy0JaW50IGFkZG9uczsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDgsIHN0cnVjdCBoZHNwbV92ZXJzaW9uKQorLQorLS8qIC0tLS0tLS0tLS0tLS0gZ2V0IE1hdHJpeCBNaXhlciBJT0NUTCAtLS0tLS0tLS0tLS0tLS0gKi8KKy0KKy0vKiBNQURJIG1peGVyOiA2NGlucHV0cys2NHBsYXliYWNrIGluIDY0b3V0cHV0cyA9IDgxOTIgPT4gKjRCeXRlID0KKy0gKiAzMjc2OCBCeXRlcworLSAqLworLQorLS8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW51b3VzIG1lbW9yeSBibG9jayAqLworLS8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKKy0gKiB0aGVtCistICovCistLyogZWFjaCBvZiA2NCBvdXRwdXRzIGhhcyA2NCBpbmZhZGVyIGFuZCA2NCBvdXRmYWRlcjoKKy0gICBJbnMgdG8gT3V0cyBtaXhlcltvdXRdLmluW2luXSwgT3V0c3RyZWFtcyB0byBPdXRzIG1peGVyW291dF0ucGJbcGJdICovCistCistI2RlZmluZSBIRFNQTV9NSVhFUl9DSEFOTkVMUyBIRFNQTV9NQVhfQ0hBTk5FTFMKKy0KKy1zdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHsKKy0JdW5zaWduZWQgaW50IGluW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKy0JdW5zaWduZWQgaW50IHBiW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKy19OworLQorLXN0cnVjdCBoZHNwbV9taXhlciB7CistCXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgY2hbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLX07CistCistc3RydWN0IGhkc3BtX21peGVyX2lvY3RsIHsKKy0Jc3RydWN0IGhkc3BtX21peGVyICptaXhlcjsKKy19OworLQorLS8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCistCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CistCistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3BtLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitpbmRleCBlNjQ4NTE0OC4uMjQxMjFmY2IgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorQEAgLTEsMTIzICsxIEBACistLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistLyoKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk5IGJ5IFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorLSAqCistICogIFNCMTZBU1AvQVdFMzIgQ1NQIGNvbnRyb2wKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCistICoKKy0gKi8KKy0jaWZuZGVmIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSAorLQorLQorLS8qIENTUCBtb2RlcyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfTk9ORQkJMHgwMAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1JFQUQJMHgwMQkvKiBSZWNvcmQgZnJvbSBEU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX0RTUF9XUklURQkweDAyCS8qIFBsYXkgdG8gRFNQICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9RU09VTkQJCTB4MDQJLyogUVNvdW5kICovCistCistLyogQ1NQIGxvYWQgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0ZST01VU0VSCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0lOSVRCTE9DSwkweDAyCistCistLyogQ1NQIHNhbXBsZSB3aWR0aCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NBTVBMRV84QklUCQkweDAxCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzE2QklUCQkweDAyCistCistLyogQ1NQIGNoYW5uZWxzICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9OTwkJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVEVSRU8JCTB4MDIKKy0KKy0vKiBDU1AgcmF0ZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzgwMDAJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzExMDI1CQkweDAyCistI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV8yMjA1MAkJMHgwNAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfNDQxMDAJCTB4MDgKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFX0FMTAkJMHgwZgorLQorLS8qIENTUCBydW5uaW5nIHN0YXRlICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfSURMRQkJMHgwMAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0xPQURFRAkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1JVTk5JTkcJCTB4MDIKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9QQVVTRUQJCTB4MDQKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9BVVRPCQkweDA4CistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUVNPVU5ECQkweDEwCistCistLyogbWF4aW11bSBRU291bmQgdmFsdWUgKDE4MCBkZWdyZWVzIHJpZ2h0KSAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1FTT1VORF9NQVhfUklHSFQJMHgyMAorLQorLS8qIG1heGltdW0gbWljcm9jb2RlIFJJRkYgZmlsZSBzaXplICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTUFYX01JQ1JPQ09ERV9GSUxFX1NJWkUJMHgzMDAwCistCistLyogbWljcm9jb2RlIGhlYWRlciAqLworLXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciB7CistCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCistCXVuc2lnbmVkIHNob3J0IGZ1bmNfcmVxOwkvKiByZXF1ZXN0ZWQgZnVuY3Rpb24gKi8KKy19OworLQorLS8qIG1pY3JvY29kZSB0byBiZSBsb2FkZWQgKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgeworLQlzdHJ1Y3Qgc25kX3NiX2NzcF9tY19oZWFkZXIgaW5mbzsKKy0JdW5zaWduZWQgY2hhciBkYXRhW1NORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRV07CistfTsKKy0KKy0vKiBzdGFydCBDU1Agd2l0aCBzYW1wbGVfd2lkdGggaW4gbW9uby9zdGVyZW8gKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCB7CistCWludCBzYW1wbGVfd2lkdGg7CS8qIHNhbXBsZSB3aWR0aCwgbG9vayBhYm92ZSAqLworLQlpbnQgY2hhbm5lbHM7CQkvKiBjaGFubmVscywgbG9vayBhYm92ZSAqLworLX07CistCistLyogQ1NQIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zYl9jc3BfaW5mbyB7CistCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCistCXVuc2lnbmVkIHNob3J0IGZ1bmNfbnI7CQkvKiBmdW5jdGlvbiBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IGFjY19mb3JtYXQ7CS8qIGFjY2VwdGVkIFBDTSBmb3JtYXRzICovCistCXVuc2lnbmVkIHNob3J0IGFjY19jaGFubmVsczsJLyogYWNjZXB0ZWQgY2hhbm5lbHMgKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX3dpZHRoOwkvKiBhY2NlcHRlZCBzYW1wbGUgd2lkdGggKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX3JhdGVzOwkvKiBhY2NlcHRlZCBzYW1wbGUgcmF0ZXMgKi8KKy0JdW5zaWduZWQgc2hvcnQgY3NwX21vZGU7CS8qIENTUCBtb2RlLCBzZWUgYWJvdmUgKi8KKy0JdW5zaWduZWQgc2hvcnQgcnVuX2NoYW5uZWxzOwkvKiBjdXJyZW50IGNoYW5uZWxzICAqLworLQl1bnNpZ25lZCBzaG9ydCBydW5fd2lkdGg7CS8qIGN1cnJlbnQgc2FtcGxlIHdpZHRoICovCistCXVuc2lnbmVkIHNob3J0IHZlcnNpb247CQkvKiB2ZXJzaW9uIGlkOiAweDEwIC0gMHgxZiAqLworLQl1bnNpZ25lZCBzaG9ydCBzdGF0ZTsJCS8qIHN0YXRlIGJpdHMgKi8KKy19OworLQorLS8qIEhXREVQIGNvbnRyb2xzICovCistLyogZ2V0IENTUCBpbmZvcm1hdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvKQorLS8qIGxvYWQgbWljcm9jb2RlIHRvIENTUCAqLworLS8qIE5PVEU6IHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBvdmVyZmxvd3MgdGhlIG1heCBzaXplICgxMyBiaXRzKQorLSAqIGRlZmluZWQgZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcyBsaWtlIE1JUFMsIGFuZCBpdCBsZWFkcyB0byBidWlsZCBlcnJvcnMuCistICogKHg4NiBhbmQgY28gaGF2ZSAxNC1iaXQgc2l6ZSwgdGh1cyBpdCdzIHZhbGlkLCB0aG91Z2guKQorLSAqIEFzIGEgd29ya2Fyb3VuZCBmb3Igc2tpcHBpbmcgdGhlIHNpemUtbGltaXQgY2hlY2ssIGhlcmUgd2UgZG9uJ3QgdXNlIHRoZQorLSAqIG5vcm1hbCBfSU9XKCkgbWFjcm8gYnV0IF9JT0MoKSB3aXRoIHRoZSBtYW51YWwgYXJndW1lbnQuCistICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfTE9BRF9DT0RFCVwKKy0JX0lPQyhfSU9DX1dSSVRFLCAnSCcsIDB4MTEsIHNpemVvZihzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUpKQorLS8qIHVubG9hZCBtaWNyb2NvZGUgZnJvbSBDU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9VTkxPQURfQ09ERQlfSU8oJ0gnLCAweDEyKQorLS8qIHN0YXJ0IENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUQVJUCQlfSU9XKCdIJywgMHgxMywgc3RydWN0IHNuZF9zYl9jc3Bfc3RhcnQpCistLyogc3RvcCBDU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9TVE9QCQlfSU8oJ0gnLCAweDE0KQorLS8qIHBhdXNlIENTUCBhbmQgRE1BIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUEFVU0UJCV9JTygnSCcsIDB4MTUpCistLyogcmVzdGFydCBDU1AgYW5kIERNQSB0cmFuc2ZlciAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1JFU1RBUlQJX0lPKCdIJywgMHgxNikKKy0KKy0KKy0jZW5kaWYgLyogX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NiMTZfY3NwLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaCBiL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKK2luZGV4IGM2NjUzZWJmLi4yM2I0OGQzMyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKKysrKyBiL2luY2x1ZGUvc291bmQvc3NjYXBlX2lvY3RsLmgKK0BAIC0xLDIxICsxIEBACistI2lmbmRlZiBTU0NBUEVfSU9DVExfSAorLSNkZWZpbmUgU1NDQVBFX0lPQ1RMX0gKKy0KKy0KKy1zdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaworLXsKKy0gIHVuc2lnbmVkIGNoYXIgY29kZVsyNTZdOworLSAgdW5zaWduZWQgdmVyc2lvbjsKKy19OworLQorLSNkZWZpbmUgU1NDQVBFX01JQ1JPQ09ERV9TSVpFICA2NTUzNgorLQorLXN0cnVjdCBzc2NhcGVfbWljcm9jb2RlCisteworLSAgdW5zaWduZWQgY2hhciAqY29kZTsKKy19OworLQorLSNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX0JPT1RCICBfSU9XUignUCcsIDEwMCwgc3RydWN0IHNzY2FwZV9ib290YmxvY2spCistI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfTUNPREUgIF9JT1cgKCdQJywgMTAxLCBzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZSkKKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oPgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdGx2LmggYi9pbmNsdWRlL3NvdW5kL3Rsdi5oCitpbmRleCA3ZDZkNjVmNi4uZTQzNWE1ZmMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3Rsdi5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3Rsdi5oCitAQCAtMSwxMTcgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKi8KKy0KKy0jaWZuZGVmIF9fVUFQSV9TT1VORF9UTFZfSAorLSNkZWZpbmUgX19VQVBJX1NPVU5EX1RMVl9ICistCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9DT05UQUlORVIgMAkvKiBvbmUgbGV2ZWwgZG93biAtIGdyb3VwIG9mIFRMVnMgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFCTEgICAgICAgLyogZEIgc2NhbGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiAyCS8qIGxpbmVhciB2b2x1bWUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFIDMJLyogZEIgcmFuZ2UgY29udGFpbmVyICovCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVggNAkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFIDUJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4IHdpdGggbXV0ZSAqLworLQorLS8qCistICogY2hhbm5lbC1tYXBwaW5nIFRMViBpdGVtcworLSAqICBUTFYgbGVuZ3RoIG11c3QgbWF0Y2ggd2l0aCBudW1fY2hhbm5lbHMKKy0gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX0ZJWEVECTB4MTAxCS8qIGZpeGVkIGNoYW5uZWwgcG9zaXRpb24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1ZBUgkweDEwMgkvKiBjaGFubmVscyBmcmVlbHkgc3dhcHBhYmxlICovCistI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9QQUlSRUQJMHgxMDMJLyogcGFpci13aXNlIHN3YXBwYWJsZSAqLworLQorLS8qCistICogVExWIHN0cnVjdHVyZSBpcyByaWdodCBiZWhpbmQgdGhlIHN0cnVjdCBzbmRfY3RsX3RsdjoKKy0gKiAgIHVuc2lnbmVkIGludCB0eXBlICAJLSBzZWUgU05EUlZfQ1RMX1RMVlRfKgorLSAqICAgdW5zaWduZWQgaW50IGxlbmd0aAorLSAqICAgLi4uLiBkYXRhIGFsaWduZWQgdG8gc2l6ZW9mKHVuc2lnbmVkIGludCksIHVzZQorLSAqICAgICAgICBibG9ja19sZW5ndGggPSAobGVuZ3RoICsgKHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpICYKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgfihzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAuLi4uCistICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9JVEVNKHR5cGUsIC4uLikgXAorLQkodHlwZSksIFNORFJWX0NUTF9UTFZEX0xFTkdUSChfX1ZBX0FSR1NfXyksIF9fVkFfQVJHU19fCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9MRU5HVEgoLi4uKSBcCistCSgodW5zaWduZWQgaW50KXNpemVvZigoY29uc3QgdW5zaWduZWQgaW50W10pIHsgX19WQV9BUkdTX18gfSkpCistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgVExWIGRhdGEgaXRlbXMgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX1RZUEUJCTAKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0xFTgkJMQorLQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oLi4uKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSLCBfX1ZBX0FSR1NfXykKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfQ09OVEFJTkVSKG5hbWUsIC4uLikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTShfX1ZBX0FSR1NfXykgXAorLQl9CistCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLCTB4ZmZmZgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURQkweDEwMDAwCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFLCBcCistCQkJICAgIChtaW4pLCBcCistCQkJICAgICgoc3RlcCkgJiBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLKSB8IFwKKy0JCQkgICAgICgobXV0ZSkgPyBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFIDogMCkpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1NDQUxFKG5hbWUsIG1pbiwgc3RlcCwgbXV0ZSkgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorLQl9CistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtdXRlIGFuZCBzdGVwIGl0ZW1zIGluIGRCIHNjYWxlIHR5cGUgVExWICovCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NSU4JCTIKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01VVEVfQU5EX1NURVAJMworLQorLS8qIGRCIHNjYWxlIHNwZWNpZmllZCB3aXRoIG1pbi9tYXggdmFsdWVzIGluc3RlYWQgb2Ygc3RlcCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVgsIChtaW5fZEIpLCAobWF4X2RCKSkKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVgobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKy0JdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorLQkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVhfTVVURShuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCistCX0KKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1taW5tYXggdHlwZXMgb2YgVExWLiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01JTgkyCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUFYCTMKKy0KKy0vKiBsaW5lYXIgdm9sdW1lIGJldHdlZW4gbWluX2RCIGFuZCBtYXhfZEIgKC4wMWRCIHVuaXQpICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9MSU5FQVIobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKy0JdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorLQkJU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLQorLS8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLWxpbmVhciB0eXBlIG9mIFRMVi4gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NSU4JMgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01BWAkzCistCistLyogZEIgcmFuZ2UgY29udGFpbmVyOgorLSAqIEl0ZW1zIGluIGRCIHJhbmdlIGNvbnRhaW5lciBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgdmFsdWVzIGFuZCBieSB0aGVpcgorLSAqIGRCIHZhbHVlcy4gVGhpcyBpbXBsaWVzIHRoYXQgbGFyZ2VyIHZhbHVlcyBtdXN0IGNvcnJlc3BvbmQgd2l0aCBsYXJnZXIKKy0gKiBkQiB2YWx1ZXMgKHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgZm9yIGFsbCBvdGhlciBtaXhlciBjb250cm9scykuCistICovCistLyogRWFjaCBpdGVtIGlzOiA8bWluPiA8bWF4PiA8VExWPiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTSguLi4pIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9SQU5HRSwgX19WQV9BUkdTX18pCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1JBTkdFKG5hbWUsIC4uLikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKF9fVkFfQVJHU19fKSBcCistCX0KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0dBSU5fTVVURQktOTk5OTk5OQorLQorLSNlbmRpZgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvdGx2Lmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oIGIvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oCitpbmRleCBlOTczZmYzMS4uZDQ3OTBjMWYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmgKKysrKyBiL2luY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaAorQEAgLTMsNiArMyw5IEBACisgCisgI2lmbmRlZiBET0NfSElEREVOCisgI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpZmRlZiBfX2xpbnV4X18KKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjZWxzZQorIHR5cGVkZWYgdWludDhfdCBfX3U4OworIHR5cGVkZWYgdWludDE2X3QgX191MTY7CisgdHlwZWRlZiB1aW50MzJfdCBfX3UzMjsKK0BAIC0zNyw2ICs0MCwxNiBAQCB0eXBlZGVmIGludDMyX3QgX19zMzI7CisgI2RlZmluZSBfX2JlMzIgX191MzIKKyAjZGVmaW5lIF9fYmUxNiBfX3UxNgorICNkZWZpbmUgX19iZTggIF9fdTgKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fdXNlcgorKyNkZWZpbmUgX191c2VyCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX3BhY2tlZAorKyNkZWZpbmUgX19wYWNrZWQgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCisrI2VuZGlmCisrCisgI2VuZGlmIC8qIERPQ19ISURERU4gKi8KKyAKKyAjZW5kaWYgLyogX19UWVBFX0NPTVBBVF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjk5MTk3MTA4CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0KK0BAIC0wLDAgKzEsNiBAQAorK2Fsc2Fzb3VuZHVhcGlpbmNsdWRlZGlyID0gJHtpbmNsdWRlZGlyfS9hbHNhL3NvdW5kL3VhcGkKKysKKythbHNhc291bmR1YXBpaW5jbHVkZV9IRUFERVJTID0gYXNvdW5kX2ZtLmggaGRzcC5oIGhkc3BtLmggc2IxNl9jc3AuaCBcCisrCQkJICAgc3NjYXBlX2lvY3RsLmggZW11MTBrMS5oIGFzb2MuaCB0bHYuaAorKworK25vaW5zdF9IRUFERVJTID0gYXNvdW5kLmggYXNlcXVlbmNlci5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYTc1ZTE0ZWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKK0BAIC0wLDAgKzEsNjEyIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgTWFpbiBoZWFkZXIgZmlsZSBmb3IgdGhlIEFMU0Egc2VxdWVuY2VyCisrICogIENvcHlyaWdodCAoYykgMTk5OC0xOTk5IGJ5IEZyYW5rIHZhbiBkZSBQb2wgPGZ2ZHBvbEBjb2lsLmRlbW9uLm5sPgorKyAqICAgICAgICAgICAgKGMpIDE5OTgtMTk5OSBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0gKKysKKysjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisrCisrLyoqIHZlcnNpb24gb2YgdGhlIHNlcXVlbmNlciAqLworKyNkZWZpbmUgU05EUlZfU0VRX1ZFUlNJT04gU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAyKQorKworKy8qKgorKyAqIGRlZmluaXRpb24gb2Ygc2VxdWVuY2VyIGV2ZW50IHR5cGVzCisrICovCisrCisrLyoqIHN5c3RlbSBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX3Jlc3VsdAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU1RFTQkJMAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFU1VMVAkJMQorKworKy8qKiBub3RlIG1lc3NhZ2VzIChjaGFubmVsIHNwZWNpZmljKQorKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X25vdGUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFCQk1CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URU9OCQk2CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URU9GRgkJNworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFWVBSRVNTCTgKKysJCisrLyoqIGNvbnRyb2wgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0xMRVIJMTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QR01DSEFOR0UJMTEKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DSEFOUFJFU1MJMTIKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QSVRDSEJFTkQJMTMJLyoqPCBmcm9tIC04MTkyIHRvIDgxOTEgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05UUk9MMTQJMTQJLyoqPCAxNCBiaXQgY29udHJvbGxlciB2YWx1ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTlJFR1BBUkFNCTE1CS8qKjwgMTQgYml0IE5SUE4gYWRkcmVzcyArIDE0IGJpdCB1bnNpZ25lZCB2YWx1ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFR1BBUkFNCTE2CS8qKjwgMTQgYml0IFJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCisrCisrLyoqIHN5bmNocm9uaXNhdGlvbiBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X2N0cmwKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TT05HUE9TCQkyMAkvKiBTb25nIFBvc2l0aW9uIFBvaW50ZXIgd2l0aCBMU0IgYW5kIE1TQiB2YWx1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TT05HU0VMCQkyMQkvKiBTb25nIFNlbGVjdCB3aXRoIHNvbmcgSUQgbnVtYmVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUUZSQU1FCQkyMgkvKiBtaWRpIHRpbWUgY29kZSBxdWFydGVyIGZyYW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElNRVNJR04JMjMJLyogU01GIFRpbWUgU2lnbmF0dXJlIGV2ZW50ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZU0lHTgkJMjQJLyogU01GIEtleSBTaWduYXR1cmUgZXZlbnQgKi8KKysJICAgICAgICAKKysvKiogdGltZXIgbWVzc2FnZXMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TVEFSVAkJMzAJLyogbWlkaSBSZWFsIFRpbWUgU3RhcnQgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRJTlVFCTMxCS8qIG1pZGkgUmVhbCBUaW1lIENvbnRpbnVlIG1lc3NhZ2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TVE9QCQkzMgkvKiBtaWRpIFJlYWwgVGltZSBTdG9wIG1lc3NhZ2UgKi8JCisrI2RlZmluZQlTTkRSVl9TRVFfRVZFTlRfU0VUUE9TX1RJQ0sJMzMJLyogc2V0IHRpY2sgcXVldWUgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElNRQkzNAkvKiBzZXQgcmVhbHRpbWUgcXVldWUgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9URU1QTwkJMzUJLyogKFNNRikgVGVtcG8gZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTE9DSwkJMzYJLyogbWlkaSBSZWFsIFRpbWUgQ2xvY2sgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RJQ0sJCTM3CS8qIG1pZGkgUmVhbCBUaW1lIFRpY2sgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1FVRVVFX1NLRVcJMzgJLyogc2tldyBxdWV1ZSB0ZW1wbyAqLworKworKy8qKiBvdGhlcnMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBub25lCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVFVORV9SRVFVRVNUCTQwCS8qIHR1bmUgcmVxdWVzdCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1JFU0VUCQk0MQkvKiByZXNldCB0byBwb3dlci1vbiBzdGF0ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFTlNJTkcJCTQyCS8qICJhY3RpdmUgc2Vuc2luZyIgZXZlbnQgKi8KKysKKysvKiogZWNobyBiYWNrLCBrZXJuZWwgcHJpdmF0ZSBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IGFueSB0eXBlCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfRUNITwkJNTAJLyogZWNobyBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX09TUwkJNTEJLyogT1NTIHJhdyBldmVudCAqLworKworKy8qKiBzeXN0ZW0gc3RhdHVzIG1lc3NhZ2VzIChicm9hZGNhc3QgZm9yIHN1YnNjcmliZXJzKQorKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfYWRkcgorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9TVEFSVAk2MAkvKiBuZXcgY2xpZW50IGhhcyBjb25uZWN0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfRVhJVAk2MQkvKiBjbGllbnQgaGFzIGxlZnQgdGhlIHN5c3RlbSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9DSEFOR0UJNjIJLyogY2xpZW50IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVEFSVAk2MwkvKiBuZXcgcG9ydCB3YXMgY3JlYXRlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfRVhJVAk2NAkvKiBwb3J0IHdhcyBkZWxldGVkIGZyb20gc3lzdGVtICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9DSEFOR0UJNjUJLyogcG9ydCBzdGF0dXMvaW5mbyBoYXMgY2hhbmdlZCAqLworKworKy8qKiBwb3J0IGNvbm5lY3Rpb24gY2hhbmdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfY29ubmVjdAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfU1VCU0NSSUJFRAk2NgkvKiBwb3J0cyBjb25uZWN0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1VOU1VCU0NSSUJFRCA2NwkvKiBwb3J0cyBkaXNjb25uZWN0ZWQgKi8KKysKKysvKiA3MC04OTogIHN5bnRoZXNpemVyIGV2ZW50cyAtIG9ic29sZXRlZCAqLworKworKy8qKiB1c2VyLWRlZmluZWQgZXZlbnRzIHdpdGggZml4ZWQgbGVuZ3RoCisrICogZXZlbnQgZGF0YSB0eXBlID0gYW55CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMAkJOTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IxCQk5MQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjIJCTkyCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMwkJOTMKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I0CQk5NAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjUJCTk1CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNgkJOTYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I3CQk5NworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjgJCTk4CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOQkJOTkKKysKKysvKiAxMDAtMTE4OiBpbnN0cnVtZW50IGxheWVyIC0gb2Jzb2xldGVkICovCisrLyogMTE5LTEyOTogcmVzZXJ2ZWQgKi8KKysKKysvKiAxMzAtMTM5OiB2YXJpYWJsZSBsZW5ndGggZXZlbnRzCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9ldl9leHQKKysgKiAoU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJJQUJMRSBtdXN0IGJlIHNldCkKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TWVNFWAkJMTMwCS8qIHN5c3RlbSBleGNsdXNpdmUgZGF0YSAodmFyaWFibGUgbGVuZ3RoKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0JPVU5DRQkJMTMxCS8qIGVycm9yIGV2ZW50ICovCisrLyogMTMyLTEzNDogcmVzZXJ2ZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMAkxMzUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMQkxMzYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMgkxMzcKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSMwkxMzgKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1JfVkFSNAkxMzkKKysKKysvKiAxNTAtMTUxOiBrZXJuZWwgZXZlbnRzIHdpdGggcXVvdGUgLSBETyBOT1QgdXNlIGluIHVzZXIgY2xpZW50cyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9FUlJPUgkxNTAKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVJORUxfUVVPVEUJMTUxCS8qIG9ic29sZXRlICovCisrCisrLyogMTUyLTE5MTogcmVzZXJ2ZWQgKi8KKysKKysvKiAxOTItMjU0OiBoYXJkd2FyZSBzcGVjaWZpYyBldmVudHMgKi8KKysKKysvKiAyNTU6IHNwZWNpYWwgZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT05FCQkyNTUKKysKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGNoYXIgc25kX3NlcV9ldmVudF90eXBlX3Q7CisrCisrLyoqIGV2ZW50IGFkZHJlc3MgKi8KKytzdHJ1Y3Qgc25kX3NlcV9hZGRyIHsKKysJdW5zaWduZWQgY2hhciBjbGllbnQ7CS8qKjwgQ2xpZW50IG51bWJlcjogICAgICAgICAwLi4yNTUsIDI1NSA9IGJyb2FkY2FzdCB0byBhbGwgY2xpZW50cyAqLworKwl1bnNpZ25lZCBjaGFyIHBvcnQ7CS8qKjwgUG9ydCB3aXRoaW4gY2xpZW50OiAgICAwLi4yNTUsIDI1NSA9IGJyb2FkY2FzdCB0byBhbGwgcG9ydHMgKi8KKyt9OworKworKy8qKiBwb3J0IGNvbm5lY3Rpb24gKi8KKytzdHJ1Y3Qgc25kX3NlcV9jb25uZWN0IHsKKysJc3RydWN0IHNuZF9zZXFfYWRkciBzZW5kZXI7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsKKyt9OworKworKworKyNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfVU5LTk9XTgkyNTMJLyogdW5rbm93biBzb3VyY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX1NVQlNDUklCRVJTCTI1NAkvKiBzZW5kIGV2ZW50IHRvIGFsbCBzdWJzY3JpYmVkIHBvcnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19CUk9BRENBU1QJMjU1CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHF1ZXVlcy9jbGllbnRzL3BvcnRzL2NoYW5uZWxzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRElSRUNUCQkyNTMJLyogZGlyZWN0IGRpc3BhdGNoICovCisrCisrCS8qIGV2ZW50IG1vZGUgZmxhZyAtIE5PVEU6IG9ubHkgOCBiaXRzIGF2YWlsYWJsZSEgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX1RJQ0sJKDA8PDApIC8qIHRpbWVzdGFtcCBpbiBjbG9jayB0aWNrcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfUkVBTAkoMTw8MCkgLyogdGltZXN0YW1wIGluIHJlYWwgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfTUFTSwkoMTw8MCkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfQUJTCQkoMDw8MSkJLyogYWJzb2x1dGUgdGltZXN0YW1wICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX1JFTAkJKDE8PDEpCS8qIHJlbGF0aXZlIHRvIGN1cnJlbnQgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9NQVNLCSgxPDwxKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9GSVhFRAkoMDw8MikJLyogZml4ZWQgZXZlbnQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJJQUJMRQkoMTw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9WQVJVU1IJKDI8PDIpCS8qIHZhcmlhYmxlIGV2ZW50IHNpemUgLSB1c2VyIG1lbW9yeSBzcGFjZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0xFTkdUSF9NQVNLCSgzPDwyKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX05PUk1BTAkoMDw8NCkJLyogbm9ybWFsIHByaW9yaXR5ICovCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfSElHSAkJKDE8PDQpCS8qIGV2ZW50IHNob3VsZCBiZSBwcm9jZXNzZWQgYmVmb3JlIG90aGVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX01BU0sJCSgxPDw0KQorKworKworKwkvKiBub3RlIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZfbm90ZSB7CisrCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsKKysJdW5zaWduZWQgY2hhciBub3RlOworKwl1bnNpZ25lZCBjaGFyIHZlbG9jaXR5OworKwl1bnNpZ25lZCBjaGFyIG9mZl92ZWxvY2l0eTsJLyogb25seSBmb3IgU05EUlZfU0VRX0VWRU5UX05PVEUgKi8KKysJdW5zaWduZWQgaW50IGR1cmF0aW9uOwkJLyogb25seSBmb3IgU05EUlZfU0VRX0VWRU5UX05PVEUgKi8KKyt9OworKworKwkvKiBjb250cm9sbGVyIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZfY3RybCB7CisrCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsKKysJdW5zaWduZWQgY2hhciB1bnVzZWQxLCB1bnVzZWQyLCB1bnVzZWQzOwkvKiBwYWQgKi8KKysJdW5zaWduZWQgaW50IHBhcmFtOworKwlzaWduZWQgaW50IHZhbHVlOworK307CisrCisrCS8qIGdlbmVyaWMgc2V0IG9mIGJ5dGVzICgxMng4IGJpdCkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9yYXc4IHsKKysJdW5zaWduZWQgY2hhciBkWzEyXTsJLyogOCBiaXQgdmFsdWUgKi8KKyt9OworKworKwkvKiBnZW5lcmljIHNldCBvZiBpbnRlZ2VycyAoM3gzMiBiaXQpICovCisrc3RydWN0IHNuZF9zZXFfZXZfcmF3MzIgeworKwl1bnNpZ25lZCBpbnQgZFszXTsJLyogMzIgYml0IHZhbHVlICovCisrfTsKKysKKysJLyogZXh0ZXJuYWwgc3RvcmVkIGRhdGEgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9leHQgeworKwl1bnNpZ25lZCBpbnQgbGVuOwkvKiBsZW5ndGggb2YgZGF0YSAqLworKwl2b2lkICpwdHI7CQkvKiBwb2ludGVyIHRvIGRhdGEgKG5vdGU6IG1heWJlIDY0LWJpdCkgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworK3N0cnVjdCBzbmRfc2VxX3Jlc3VsdCB7CisrCWludCBldmVudDsJCS8qIHByb2Nlc3NlZCBldmVudCB0eXBlICovCisrCWludCByZXN1bHQ7CisrfTsKKysKKysKKytzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgeworKwl1bnNpZ25lZCBpbnQgdHZfc2VjOwkvKiBzZWNvbmRzICovCisrCXVuc2lnbmVkIGludCB0dl9uc2VjOwkvKiBuYW5vc2Vjb25kcyAqLworK307CisrCisrdHlwZWRlZiB1bnNpZ25lZCBpbnQgc25kX3NlcV90aWNrX3RpbWVfdDsJLyogbWlkaSB0aWNrcyAqLworKworK3VuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHsKKysJc25kX3NlcV90aWNrX3RpbWVfdCB0aWNrOworKwlzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgdGltZTsKKyt9OworKworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgeworKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisrCXVuc2lnbmVkIGludCBiYXNlOworK307CisrCisrCS8qIHF1ZXVlIHRpbWVyIGNvbnRyb2wgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sIHsKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCQkvKiBhZmZlY3RlZCBxdWV1ZSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCQkvKiByZXNlcnZlZCAqLworKwl1bmlvbiB7CisrCQlzaWduZWQgaW50IHZhbHVlOwkJLyogYWZmZWN0ZWQgdmFsdWUgKGUuZy4gdGVtcG8pICovCisrCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOwkvKiB0aW1lICovCisrCQl1bnNpZ25lZCBpbnQgcG9zaXRpb247CQkvKiBzeW5jIHBvc2l0aW9uICovCisrCQlzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9za2V3IHNrZXc7CisrCQl1bnNpZ25lZCBpbnQgZDMyWzJdOworKwkJdW5zaWduZWQgY2hhciBkOFs4XTsKKysJfSBwYXJhbTsKKyt9OworKworKwkvKiBxdW90ZWQgZXZlbnQgLSBpbnNpZGUgdGhlIGtlcm5lbCBvbmx5ICovCisrc3RydWN0IHNuZF9zZXFfZXZfcXVvdGUgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIG9yaWdpbjsJCS8qIG9yaWdpbmFsIHNlbmRlciAqLworKwl1bnNpZ25lZCBzaG9ydCB2YWx1ZTsJCS8qIG9wdGlvbmFsIGRhdGEgKi8KKysJc3RydWN0IHNuZF9zZXFfZXZlbnQgKmV2ZW50OwkJLyogcXVvdGVkIGV2ZW50ICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysKKysJLyogc2VxdWVuY2VyIGV2ZW50ICovCisrc3RydWN0IHNuZF9zZXFfZXZlbnQgeworKwlzbmRfc2VxX2V2ZW50X3R5cGVfdCB0eXBlOwkvKiBldmVudCB0eXBlICovCisrCXVuc2lnbmVkIGNoYXIgZmxhZ3M7CQkvKiBldmVudCBmbGFncyAqLworKwljaGFyIHRhZzsKKysJCisrCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkvKiBzY2hlZHVsZSBxdWV1ZSAqLworKwl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOwkvKiBzY2hlZHVsZSB0aW1lICovCisrCisrCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgc291cmNlOwkvKiBzb3VyY2UgYWRkcmVzcyAqLworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKysKKysJdW5pb24gewkJCQkvKiBldmVudCBkYXRhLi4uICovCisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIG5vdGU7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIGNvbnRyb2w7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9yYXc4IHJhdzg7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiByYXczMjsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X2V4dCBleHQ7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sIHF1ZXVlOworKwkJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsKKysJCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsKKysJCXN0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgY29ubmVjdDsKKysJCXN0cnVjdCBzbmRfc2VxX3Jlc3VsdCByZXN1bHQ7CisrCQlzdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSBxdW90ZTsKKysJfSBkYXRhOworK307CisrCisrCisrLyoKKysgKiBib3VuY2UgZXZlbnQgLSBzdG9yZWQgYXMgdmFyaWFibGUgc2l6ZSBkYXRhCisrICovCisrc3RydWN0IHNuZF9zZXFfZXZlbnRfYm91bmNlIHsKKysJaW50IGVycjsKKysJc3RydWN0IHNuZF9zZXFfZXZlbnQgZXZlbnQ7CisrCS8qIGV4dGVybmFsIGRhdGEgZm9sbG93cyBoZXJlLiAqLworK307CisrCisrCisrCS8qIHN5c3RlbSBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3N5c3RlbV9pbmZvIHsKKysJaW50IHF1ZXVlczsJCQkvKiBtYXhpbXVtIHF1ZXVlcyBjb3VudCAqLworKwlpbnQgY2xpZW50czsJCQkvKiBtYXhpbXVtIGNsaWVudHMgY291bnQgKi8KKysJaW50IHBvcnRzOwkJCS8qIG1heGltdW0gcG9ydHMgcGVyIGNsaWVudCAqLworKwlpbnQgY2hhbm5lbHM7CQkJLyogbWF4aW11bSBjaGFubmVscyBwZXIgcG9ydCAqLworKwlpbnQgY3VyX2NsaWVudHM7CQkvKiBjdXJyZW50IGNsaWVudHMgKi8KKysJaW50IGN1cl9xdWV1ZXM7CQkJLyogY3VycmVudCBxdWV1ZXMgKi8KKysJY2hhciByZXNlcnZlZFsyNF07CisrfTsKKysKKysKKysJLyogc3lzdGVtIHJ1bm5pbmcgaW5mb3JtYXRpb24gKi8KKytzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8geworKwl1bnNpZ25lZCBjaGFyIGNsaWVudDsJCS8qIGNsaWVudCBpZCAqLworKwl1bnNpZ25lZCBjaGFyIGJpZ19lbmRpYW47CS8qIDEgPSBiaWctZW5kaWFuICovCisrCXVuc2lnbmVkIGNoYXIgY3B1X21vZGU7CQkvKiA0ID0gMzJiaXQsIDggPSA2NGJpdCAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTJdOworK307CisrCisrCisrCS8qIGtub3duIGNsaWVudCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX1NZU1RFTQkJMAorKwkvKiBpbnRlcm5hbCBjbGllbnQgbnVtYmVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9EVU1NWQkJMTQJLyogbWlkaSB0aHJvdWdoICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX09TUwkJMTUJLyogb3NzIHNlcXVlbmNlciBlbXVsYXRvciAqLworKworKworKwkvKiBjbGllbnQgdHlwZXMgKi8KKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3NlcV9jbGllbnRfdHlwZV90OworKyNkZWZpbmUJTk9fQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDApCisrI2RlZmluZQlVU0VSX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAxKQorKyNkZWZpbmUJS0VSTkVMX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAyKQorKyAgICAgICAgICAgICAgICAgICAgICAgIAorKwkvKiBldmVudCBmaWx0ZXIgZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfQlJPQURDQVNUCSgxPDwwKQkvKiBhY2NlcHQgYnJvYWRjYXN0IG1lc3NhZ2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX01VTFRJQ0FTVAkoMTw8MSkJLyogYWNjZXB0IG11bHRpY2FzdCBtZXNzYWdlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CT1VOQ0UJCSgxPDwyKQkvKiBhY2NlcHQgYm91bmNlIGV2ZW50IGluIGVycm9yICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX1VTRV9FVkVOVAkoMTw8MzEpCS8qIHVzZSBldmVudCBmaWx0ZXIgKi8KKysKKytzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbyB7CisrCWludCBjbGllbnQ7CQkJLyogY2xpZW50IG51bWJlciB0byBpbnF1aXJlICovCisrCXNuZF9zZXFfY2xpZW50X3R5cGVfdCB0eXBlOwkvKiBjbGllbnQgdHlwZSAqLworKwljaGFyIG5hbWVbNjRdOwkJCS8qIGNsaWVudCBuYW1lICovCisrCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBmaWx0ZXIgZmxhZ3MgKi8KKysJdW5zaWduZWQgY2hhciBtdWx0aWNhc3RfZmlsdGVyWzhdOyAvKiBtdWx0aWNhc3QgZmlsdGVyIGJpdG1hcCAqLworKwl1bnNpZ25lZCBjaGFyIGV2ZW50X2ZpbHRlclszMl07CS8qIGV2ZW50IGZpbHRlciBiaXRtYXAgKi8KKysJaW50IG51bV9wb3J0czsJCQkvKiBSTzogbnVtYmVyIG9mIHBvcnRzICovCisrCWludCBldmVudF9sb3N0OwkJCS8qIG51bWJlciBvZiBsb3N0IGV2ZW50cyAqLworKwlpbnQgY2FyZDsJCQkvKiBSTzogY2FyZCBudW1iZXJba2VybmVsXSAqLworKwlpbnQgcGlkOwkJCS8qIFJPOiBwaWRbdXNlcl0gKi8KKysJY2hhciByZXNlcnZlZFs1Nl07CQkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrLyogY2xpZW50IHBvb2wgc2l6ZSAqLworK3N0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sIHsKKysJaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKysJaW50IG91dHB1dF9wb29sOwkJLyogb3V0Z29pbmcgKHdyaXRlKSBwb29sIHNpemUgKi8KKysJaW50IGlucHV0X3Bvb2w7CQkJLyogaW5jb21pbmcgKHJlYWQpIHBvb2wgc2l6ZSAqLworKwlpbnQgb3V0cHV0X3Jvb207CQkvKiBtaW5pbXVtIGZyZWUgcG9vbCBzaXplIGZvciBzZWxlY3QvYmxvY2tpbmcgbW9kZSAqLworKwlpbnQgb3V0cHV0X2ZyZWU7CQkvKiB1bnVzZWQgc2l6ZSAqLworKwlpbnQgaW5wdXRfZnJlZTsJCQkvKiB1bnVzZWQgc2l6ZSAqLworKwljaGFyIHJlc2VydmVkWzY0XTsKKyt9OworKworKworKy8qIFJlbW92ZSBldmVudHMgYnkgc3BlY2lmaWVkIGNyaXRlcmlhICovCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0lOUFVUCQkoMTw8MCkJLyogRmx1c2ggaW5wdXQgcXVldWVzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX09VVFBVVAkJKDE8PDEpCS8qIEZsdXNoIG91dHB1dCBxdWV1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfREVTVAkJKDE8PDIpCS8qIFJlc3RyaWN0IGJ5IGRlc3RpbmF0aW9uIHE6Y2xpZW50OnBvcnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfREVTVF9DSEFOTkVMCSgxPDwzKQkvKiBSZXN0cmljdCBieSBjaGFubmVsICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQkVGT1JFCSgxPDw0KQkvKiBSZXN0cmljdCB0byBiZWZvcmUgdGltZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX0FGVEVSCSgxPDw1KQkvKiBSZXN0cmljdCB0byB0aW1lIG9yIGFmdGVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfVElDSwkoMTw8NikJLyogVGltZSBpcyBpbiB0aWNrcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9FVkVOVF9UWVBFCSgxPDw3KQkvKiBSZXN0cmljdCB0byBldmVudCB0eXBlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0lHTk9SRV9PRkYgCSgxPDw4KQkvKiBEbyBub3QgZmx1c2ggb2ZmIGV2ZW50cyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9UQUdfTUFUQ0ggCSgxPDw5KQkvKiBSZXN0cmljdCB0byBldmVudHMgd2l0aCBnaXZlbiB0YWcgKi8KKysKKytzdHJ1Y3Qgc25kX3NlcV9yZW1vdmVfZXZlbnRzIHsKKysJdW5zaWduZWQgaW50ICByZW1vdmVfbW9kZTsJLyogRmxhZ3MgdGhhdCBkZXRlcm1pbmUgd2hhdCBnZXRzIHJlbW92ZWQgKi8KKysKKysJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsKKysKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJLyogUXVldWUgZm9yIFJFTU9WRV9ERVNUICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogQWRkcmVzcyBmb3IgUkVNT1ZFX0RFU1QgKi8KKysJdW5zaWduZWQgY2hhciBjaGFubmVsOwkvKiBDaGFubmVsIGZvciBSRU1PVkVfREVTVCAqLworKworKwlpbnQgIHR5cGU7CS8qIEZvciBSRU1PVkVfRVZFTlRfVFlQRSAqLworKwljaGFyICB0YWc7CS8qIFRhZyBmb3IgUkVNT1ZFX1RBRyAqLworKworKwlpbnQgIHJlc2VydmVkWzEwXTsJLyogVG8gYWxsb3cgZm9yIGZ1dHVyZSBiaW5hcnkgY29tcGF0aWJpbGl0eSAqLworKworK307CisrCisrCisrCS8qIGtub3duIHBvcnQgbnVtYmVycyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX1RJTUVSCTAKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NZU1RFTV9BTk5PVU5DRQkxCisrCisrCS8qIHBvcnQgY2FwYWJpbGl0aWVzICgzMiBiaXRzKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1JFQUQJCSgxPDwwKQkvKiByZWFkYWJsZSBmcm9tIHRoaXMgcG9ydCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1dSSVRFCSgxPDwxKQkvKiB3cml0YWJsZSB0byB0aGlzIHBvcnQgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1JFQUQJKDE8PDIpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1lOQ19XUklURQkoMTw8MykKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9EVVBMRVgJKDE8PDQpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19SRUFECSgxPDw1KQkvKiBhbGxvdyByZWFkIHN1YnNjcmlwdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfV1JJVEUJKDE8PDYpCS8qIGFsbG93IHdyaXRlIHN1YnNjcmlwdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX05PX0VYUE9SVAkoMTw8NykJLyogcm91dGluZyBub3QgYWxsb3dlZCAqLworKworKwkvKiBwb3J0IHR5cGUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1BFQ0lGSUMJKDE8PDApCS8qIGhhcmR3YXJlIHNwZWNpZmljICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR0VORVJJQyAoMTw8MSkJLyogZ2VuZXJpYyBNSURJIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNCSgxPDwyKQkvKiBHZW5lcmFsIE1JREkgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HUwkoMTw8MykJLyogR1MgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9YRwkoMTw8NCkJLyogWEcgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9NVDMyCSgxPDw1KQkvKiBNVC0zMiBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dNMgkoMTw8NikJLyogR2VuZXJhbCBNSURJIDIgY29tcGF0aWJsZSBkZXZpY2UgKi8KKysKKysvKiBvdGhlciBzdGFuZGFyZHMuLi4qLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USAkoMTw8MTApCS8qIFN5bnRoIGRldmljZSAobm8gTUlESSBjb21wYXRpYmxlIC0gZGlyZWN0IHdhdmV0YWJsZSkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfRElSRUNUX1NBTVBMRSAoMTw8MTEpCS8qIFNhbXBsaW5nIGRldmljZSAoc3VwcG9ydCBzYW1wbGUgZG93bmxvYWQpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NBTVBMRQkoMTw8MTIpCS8qIFNhbXBsaW5nIGRldmljZSAoc2FtcGxlIGNhbiBiZSBkb3dubG9hZGVkIGF0IGFueSB0aW1lKSAqLworKy8qLi4uKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfSEFSRFdBUkUJKDE8PDE2KQkvKiBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NPRlRXQVJFCSgxPDwxNykJLyogaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEhFU0laRVIJKDE8PDE4KQkvKiBnZW5lcmF0ZXMgc291bmQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfUE9SVAkoMTw8MTkpCS8qIGNvbm5lY3RzIHRvIG90aGVyIGRldmljZShzKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9BUFBMSUNBVElPTgkoMTw8MjApCS8qIGFwcGxpY2F0aW9uIChzZXF1ZW5jZXIvZWRpdG9yKSAqLworKworKy8qIG1pc2MuIGNvbmRpdGlvbmluZyBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX0dJVkVOX1BPUlQJKDE8PDApCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRVNUQU1QCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX1RJTUVfUkVBTAkoMTw8MikKKysKKytzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8geworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CS8qIGNsaWVudC9wb3J0IG51bWJlcnMgKi8KKysJY2hhciBuYW1lWzY0XTsJCQkvKiBwb3J0IG5hbWUgKi8KKysKKysJdW5zaWduZWQgaW50IGNhcGFiaWxpdHk7CS8qIHBvcnQgY2FwYWJpbGl0eSBiaXRzICovCisrCXVuc2lnbmVkIGludCB0eXBlOwkJLyogcG9ydCB0eXBlIGJpdHMgKi8KKysJaW50IG1pZGlfY2hhbm5lbHM7CQkvKiBjaGFubmVscyBwZXIgTUlESSBwb3J0ICovCisrCWludCBtaWRpX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgTUlESSBwb3J0ICovCisrCWludCBzeW50aF92b2ljZXM7CQkvKiB2b2ljZXMgcGVyIFNZTlRIIHBvcnQgKi8KKysKKysJaW50IHJlYWRfdXNlOwkJCS8qIFIvTzogc3Vic2NyaWJlcnMgZm9yIG91dHB1dCAoZnJvbSB0aGlzIHBvcnQpICovCisrCWludCB3cml0ZV91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3IgaW5wdXQgKHRvIHRoaXMgcG9ydCkgKi8KKysKKysJdm9pZCAqa2VybmVsOwkJCS8qIHJlc2VydmVkIGZvciBrZXJuZWwgdXNlIChtdXN0IGJlIE5VTEwpICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1pc2MuIGNvbmRpdGlvbmluZyAqLworKwl1bnNpZ25lZCBjaGFyIHRpbWVfcXVldWU7CS8qIHF1ZXVlICMgZm9yIHRpbWVzdGFtcGluZyAqLworKwljaGFyIHJlc2VydmVkWzU5XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysvKiBxdWV1ZSBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1FVRVVFX0ZMR19TWU5DCSgxPDwwKQkvKiBzeW5jIGVuYWJsZWQgKi8KKysKKysvKiBxdWV1ZSBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8geworKwlpbnQgcXVldWU7CQkvKiBxdWV1ZSBpZCAqLworKworKwkvKgorKwkgKiAgc2VjdXJpdHkgc2V0dGluZ3MsIG9ubHkgb3duZXIgb2YgdGhpcyBxdWV1ZSBjYW4gc3RhcnQvc3RvcCB0aW1lcgorKwkgKiAgZXRjLiBpZiB0aGUgcXVldWUgaXMgbG9ja2VkIGZvciBvdGhlciBjbGllbnRzCisrCSAqLworKwlpbnQgb3duZXI7CQkvKiBjbGllbnQgaWQgZm9yIG93bmVyIG9mIHRoZSBxdWV1ZSAqLworKwl1bnNpZ25lZCBsb2NrZWQ6MTsJLyogdGltaW5nIHF1ZXVlIGxvY2tlZCBmb3Igb3RoZXIgcXVldWVzICovCisrCWNoYXIgbmFtZVs2NF07CQkvKiBuYW1lIG9mIHRoaXMgcXVldWUgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkvKiBmbGFncyAqLworKwljaGFyIHJlc2VydmVkWzYwXTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKysKKyt9OworKworKy8qIHF1ZXVlIGluZm8vc3RhdHVzICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfc3RhdHVzIHsKKysJaW50IHF1ZXVlOwkJCS8qIHF1ZXVlIGlkICovCisrCWludCBldmVudHM7CQkJLyogcmVhZC1vbmx5IC0gcXVldWUgc2l6ZSAqLworKwlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CS8qIGN1cnJlbnQgdGljayAqLworKwlzdHJ1Y3Qgc25kX3NlcV9yZWFsX3RpbWUgdGltZTsJLyogY3VycmVudCB0aW1lICovCisrCWludCBydW5uaW5nOwkJCS8qIHJ1bm5pbmcgc3RhdGUgb2YgcXVldWUgKi8KKysJaW50IGZsYWdzOwkJCS8qIHZhcmlvdXMgZmxhZ3MgKi8KKysJY2hhciByZXNlcnZlZFs2NF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworK307CisrCisrCisrLyogcXVldWUgdGVtcG8gKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbyB7CisrCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJdW5zaWduZWQgaW50IHRlbXBvOwkJLyogY3VycmVudCB0ZW1wbywgdXMvdGljayAqLworKwlpbnQgcHBxOwkJCS8qIHRpbWUgcmVzb2x1dGlvbiwgdGlja3MvcXVhcnRlciAqLworKwl1bnNpZ25lZCBpbnQgc2tld192YWx1ZTsJLyogcXVldWUgc2tldyAqLworKwl1bnNpZ25lZCBpbnQgc2tld19iYXNlOwkJLyogcXVldWUgc2tldyBiYXNlICovCisrCWNoYXIgcmVzZXJ2ZWRbMjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgKi8KKyt9OworKworKworKy8qIHNlcXVlbmNlciB0aW1lciBzb3VyY2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfQUxTQQkJMAkvKiBBTFNBIHRpbWVyICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9DTE9DSwkxCS8qIE1pZGkgQ2xvY2sgKENMT0NLIGV2ZW50KSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX01JRElfVElDSwkyCS8qIE1pZGkgVGltZXIgVGljayAoVElDSyBldmVudCkgKi8KKysKKysvKiBxdWV1ZSB0aW1lciBpbmZvICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIgeworKwlpbnQgcXVldWU7CQkJLyogc2VxdWVuY2VyIHF1ZXVlICovCisrCWludCB0eXBlOwkJCS8qIHNvdXJjZSB0aW1lciB0eXBlICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogQUxTQSdzIHRpbWVyIElEICovCisrCQkJdW5zaWduZWQgaW50IHJlc29sdXRpb247CS8qIHJlc29sdXRpb24gaW4gSHogKi8KKysJCX0gYWxzYTsKKysJfSB1OworKwljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50IHsKKysJaW50IHF1ZXVlOwkJLyogc2VxdWVuY2VyIHF1ZXVlICovCisrCWludCBjbGllbnQ7CQkvKiBzZXF1ZW5jZXIgY2xpZW50ICovCisrCWludCB1c2VkOwkJLyogcXVldWUgaXMgdXNlZCB3aXRoIHRoaXMgY2xpZW50CisrCQkJCSAgIChtdXN0IGJlIHNldCBmb3IgYWNjZXB0aW5nIGV2ZW50cykgKi8KKysJLyogcGVyIGNsaWVudCB3YXRlcm1hcmtzICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX0VYQ0xVU0lWRQkoMTw8MCkJLyogZXhjbHVzaXZlIGNvbm5lY3Rpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfVElNRVNUQU1QCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FX1JFQUwJKDE8PDIpCisrCisrc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsJLyogc2VuZGVyIGFkZHJlc3MgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCisrCXVuc2lnbmVkIGludCB2b2ljZXM7CQkvKiBudW1iZXIgb2Ygdm9pY2VzIHRvIGJlIGFsbG9jYXRlZCAoMCA9IGRvbid0IGNhcmUpICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIG1vZGVzICovCisrCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkvKiBpbnB1dCB0aW1lLXN0YW1wIHF1ZXVlIChvcHRpb25hbCkgKi8KKysJdW5zaWduZWQgY2hhciBwYWRbM107CQkvKiByZXNlcnZlZCAqLworKwljaGFyIHJlc2VydmVkWzY0XTsKKyt9OworKworKy8qIHR5cGUgb2YgcXVlcnkgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFUllfU1VCU19SRUFECTAKKysjZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1dSSVRFCTEKKysKKytzdHJ1Y3Qgc25kX3NlcV9xdWVyeV9zdWJzIHsKKysJc3RydWN0IHNuZF9zZXFfYWRkciByb290OwkvKiBjbGllbnQvcG9ydCBpZCB0byBiZSBzZWFyY2hlZCAqLworKwlpbnQgdHlwZTsJCS8qIFJFQUQgb3IgV1JJVEUgKi8KKysJaW50IGluZGV4OwkJLyogMC4uTi0xICovCisrCWludCBudW1fc3ViczsJCS8qIFIvTzogbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgb24gdGhpcyBwb3J0ICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogUi9POiByZXN1bHQgKi8KKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJLyogUi9POiByZXN1bHQgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkvKiBSL086IHJlc3VsdCAqLworKwljaGFyIHJlc2VydmVkWzY0XTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKworKy8qCisrICogIElPQ1RMIGNvbW1hbmRzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ1MnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ0xJRU5UX0lECV9JT1IgKCdTJywgMHgwMSwgaW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NZU1RFTV9JTkZPCV9JT1dSKCdTJywgMHgwMiwgc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUlVOTklOR19NT0RFCV9JT1dSKCdTJywgMHgwMywgc3RydWN0IHNuZF9zZXFfcnVubmluZ19pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9DTElFTlRfSU5GTwlfSU9XUignUycsIDB4MTAsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9DTElFTlRfSU5GTwlfSU9XICgnUycsIDB4MTEsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9QT1JUCV9JT1dSKCdTJywgMHgyMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0RFTEVURV9QT1JUCV9JT1cgKCdTJywgMHgyMSwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9QT1JUX0lORk8JX0lPV1IoJ1MnLCAweDIyLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1BPUlRfSU5GTwlfSU9XICgnUycsIDB4MjMsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TVUJTQ1JJQkVfUE9SVAlfSU9XICgnUycsIDB4MzAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1VOU1VCU0NSSUJFX1BPUlQgX0lPVyAoJ1MnLCAweDMxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DUkVBVEVfUVVFVUUJX0lPV1IoJ1MnLCAweDMyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0RFTEVURV9RVUVVRQlfSU9XICgnUycsIDB4MzMsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM0LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9JTkZPCV9JT1dSKCdTJywgMHgzNSwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfTkFNRURfUVVFVUUJX0lPV1IoJ1MnLCAweDM2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9TVEFUVVMgX0lPV1IoJ1MnLCAweDQwLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1RFTVBPCV9JT1dSKCdTJywgMHg0MSwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX1RFTVBPCV9JT1cgKCdTJywgMHg0Miwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1RJTUVSCV9JT1dSKCdTJywgMHg0NSwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX1RJTUVSCV9JT1cgKCdTJywgMHg0Niwgc3RydWN0IHNuZF9zZXFfcXVldWVfdGltZXIpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX0NMSUVOVAlfSU9XUignUycsIDB4NDksIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfQ0xJRU5UCV9JT1cgKCdTJywgMHg0YSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9DTElFTlRfUE9PTAlfSU9XUignUycsIDB4NGIsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9DTElFTlRfUE9PTAlfSU9XICgnUycsIDB4NGMsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9wb29sKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1JFTU9WRV9FVkVOVFMJX0lPVyAoJ1MnLCAweDRlLCBzdHJ1Y3Qgc25kX3NlcV9yZW1vdmVfZXZlbnRzKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX1NVQlMJX0lPV1IoJ1MnLCAweDRmLCBzdHJ1Y3Qgc25kX3NlcV9xdWVyeV9zdWJzKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9TVUJTQ1JJUFRJT04JX0lPV1IoJ1MnLCAweDUwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9ORVhUX0NMSUVOVAlfSU9XUignUycsIDB4NTEsIHN0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfUE9SVAlfSU9XUignUycsIDB4NTIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmE3NGNhMjMyCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvYy5oCitAQCAtMCwwICsxLDYzMyBAQAorKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiB1YXBpL3NvdW5kL2Fzb2MuaCAtLSBBTFNBIFNvQyBGaXJtd2FyZSBDb250cm9scyBhbmQgREFQTQorKyAqCisrICogQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIEluc3RydW1lbnRzIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisrICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisrICoKKysgKiBTaW1wbGUgZmlsZSBBUEkgdG8gbG9hZCBGVyB0aGF0IGluY2x1ZGVzIG1peGVycywgY29lZmZpY2llbnRzLCBEQVBNIGdyYXBocywKKysgKiBhbGdvcml0aG1zLCBlcXVhbGlzZXJzLCBEQUlzLCB3aWRnZXRzIGV0Yy4KKysqLworKworKyNpZm5kZWYgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKysjZGVmaW5lIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICisrCisrI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisrI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgdG9wb2xvZ3kga2NvbnRyb2wgY2FuIHJlcHJlc2VudC4KKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfQ0hBTgkJOAorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgUENNIGZvcm1hdHMgY2FwYWJpbGl0eQorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9GT1JNQVRTCTE2CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gc3RyZWFtIGNvbmZpZ3MKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWCAgOAorKworKy8qCisrICogTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgbGluaydzIGhhcmR3YXJlIGNvbmZpZ3MKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19IV19DT05GSUdfTUFYCTgKKysKKysvKiBpbmRpdmlkdWFsIGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTVwkJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19TWAkyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1hSX1NYCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTQkJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9CWVRFUwkJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNX1ZBTFVFCTYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfUkFOR0UJCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfU1RST0JFCQk4CisrCisrCisrLyogaW5kaXZpZHVhbCB3aWRnZXQga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfVk9MU1cJCTY0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9ET1VCTEUJNjUKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZJUlQJCTY2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WQUxVRQk2NworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1BJTgkJNjgKKysKKysvKiBEQVBNIHdpZGdldCB0eXBlcyAtIGFkZCBuZXcgaXRlbXMgdG8gdGhlIGVuZCAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fSU5QVVQJCTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVFBVVAkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NVVgJCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01JWEVSCQkzCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QR0EJCTQKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVF9EUlYJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQURDCQk2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUMJCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NXSVRDSAk4CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QUkUJCTkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BPU1QJCTEwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfSU4JMTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9PVVQJMTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9JTgkxMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX09VVAkxNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0xJTksJMTUKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0JVRkZFUgkxNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0NIRURVTEVSCTE3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FRkZFQ1QJMTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NJR0dFTgkxOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1JDCQkyMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQVNSQwkJMjEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VOQ09ERVIJMjIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIJMjMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0xBU1QJCVNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIKKysKKysvKiBIZWFkZXIgbWFnaWMgbnVtYmVyIGFuZCBzdHJpbmcgc2l6ZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQUdJQwkJMHg0MTUzNkY0MyAvKiBBU29DICovCisrCisrLyogc3RyaW5nIHNpemVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTlVNX1RFWFRTCQkxNgorKworKy8qIEFCSSB2ZXJzaW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT04JMHg1CS8qIGN1cnJlbnQgdmVyc2lvbiAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OX01JTgkweDQJLyogb2xkZXN0IHZlcnNpb24gc3VwcG9ydGVkICovCisrCisrLyogTWF4IHNpemUgb2YgVExWIGRhdGEgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UTFZfU0laRQkJMzIKKysKKysvKgorKyAqIEZpbGUgYW5kIEJsb2NrIGhlYWRlciBkYXRhIHR5cGVzLgorKyAqIEFkZCBuZXcgZ2VuZXJpYyBhbmQgdmVuZG9yIHR5cGVzIHRvIGVuZCBvZiBsaXN0LgorKyAqIEdlbmVyaWMgdHlwZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGNvcmUgd2hpbHN0IHZlbmRvcnMgdHlwZXMgYXJlIHBhc3NlZAorKyAqIHRvIHRoZSBjb21wb25lbnQgZHJpdmVycyBmb3IgaGFuZGxpbmcuCisrICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NSVhFUgkJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQllURVMJCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0VOVU0JCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fR1JBUEgJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9XSURHRVQJNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJX0xJTksJNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUENNCQk3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQU5JRkVTVAk4CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9DT0RFQ19MSU5LCTkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JBQ0tFTkRfTElOSwkxMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUERBVEEJCTExCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUkJCTEyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQVgJCVNORF9TT0NfVFBMR19UWVBFX0RBSQorKworKy8qIHZlbmRvciBibG9jayBJRHMgLSBwbGVhc2UgYWRkIG5ldyB2ZW5kb3IgdHlwZXMgdG8gZW5kICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfRlcJMTAwMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPTkZJRwkxMDAxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09FRkYJMTAwMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVWRU5ET1JfQ09ERUMJMTAwMworKworKyNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9QTEFZQkFDSwkwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NBUFRVUkUJMQorKworKy8qIHZlbmRvciB0dXBsZSB0eXBlcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfVVVJRAkwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TVFJJTkcJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQk9PTAkyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CWVRFCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1dPUkQJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU0hPUlQJNQorKworKy8qIERBSSBmbGFncyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorKworKy8qIERBSSBjbG9jayBnYXRpbmcgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfVU5ERUZJTkVECTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfR0FURUQJMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9DT05UCQkyCisrCisrLyogREFJIG1jbGtfZGlyZWN0aW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DTyAgICAgICAgICAgIDAgLyogZm9yIGNvZGVjLCBtY2xrIGlzIG91dHB1dCAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ0kgICAgICAgICAgICAxIC8qIGZvciBjb2RlYywgbWNsayBpcyBpbnB1dCAqLworKworKy8qIERBSSBwaHlzaWNhbCBQQ00gZGF0YSBmb3JtYXRzLgorKyAqIEFkZCBuZXcgZm9ybWF0cyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0kyUyAgICAgICAgICAxIC8qIEkyUyBtb2RlICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSiAgICAgIDIgLyogUmlnaHQgSnVzdGlmaWVkIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0ogICAgICAgMyAvKiBMZWZ0IEp1c3RpZmllZCBtb2RlICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0EgICAgICAgIDQgLyogTCBkYXRhIE1TQiBhZnRlciBGUk0gTFJDICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0IgICAgICAgIDUgLyogTCBkYXRhIE1TQiBkdXJpbmcgRlJNIExSQyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0FDOTcgICAgICAgICA2IC8qIEFDOTcgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9QRE0gICAgICAgICAgNyAvKiBQdWxzZSBkZW5zaXR5IG1vZHVsYXRpb24gKi8KKysKKysvKiBsZWZ0IGFuZCByaWdodCBqdXN0aWZpZWQgYWxzbyBrbm93biBhcyBNU0IgYW5kIExTQiByZXNwZWN0aXZlbHkgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9NU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSgorKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xTQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSgorKworKy8qIERBSSBsaW5rIGZsYWdzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9WT0lDRV9XQUtFVVAgICAgICAgICAgICAoMSA8PCAzKQorKworKy8qIERBSSB0b3BvbG9neSBCQ0xLIHBhcmFtZXRlcgorKyAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgYmNsayBtYXN0ZXIKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBiY2xrIG1hc3RlciAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGJjbGsgc2xhdmUgKi8KKysKKysvKiBEQUkgdG9wb2xvZ3kgRlNZTkMgcGFyYW1ldGVyCisrICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBmc3luYyBtYXN0ZXIKKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGZzeW5jIHNsYXZlICovCisrCisrLyoKKysgKiBCbG9jayBIZWFkZXIuCisrICogVGhpcyBoZWFkZXIgcHJlY2VkZXMgYWxsIG9iamVjdCBhbmQgb2JqZWN0IGFycmF5cyBiZWxvdy4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciB7CisrCV9fbGUzMiBtYWdpYzsJCS8qIG1hZ2ljIG51bWJlciAqLworKwlfX2xlMzIgYWJpOwkJLyogQUJJIHZlcnNpb24gKi8KKysJX19sZTMyIHZlcnNpb247CQkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdmVyc2lvbiBkZXRhaWxzICovCisrCV9fbGUzMiB0eXBlOwkJLyogU05EX1NPQ19UUExHX1RZUEVfICovCisrCV9fbGUzMiBzaXplOwkJLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgdmVuZG9yX3R5cGU7CS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB0eXBlIGluZm8gKi8KKysJX19sZTMyIHBheWxvYWRfc2l6ZTsJLyogZGF0YSBieXRlcywgZXhjbHVkaW5nIHRoaXMgaGVhZGVyICovCisrCV9fbGUzMiBpbmRleDsJCS8qIGlkZW50aWZpZXIgZm9yIGJsb2NrICovCisrCV9fbGUzMiBjb3VudDsJCS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBibG9jayAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciB1dWlkICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwljaGFyIHV1aWRbMTZdOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciBhIGJvb2wvYnl0ZS9zaG9ydC93b3JkIHZhbHVlICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB7CisrCV9fbGUzMiB0b2tlbjsKKysJX19sZTMyIHZhbHVlOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyogdmVuZG9yIHR1cGxlIGZvciBzdHJpbmcgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSB7CisrCV9fbGUzMiB0b2tlbjsKKysJY2hhciBzdHJpbmdbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgeworKwlfX2xlMzIgc2l6ZTsJLyogc2l6ZSBpbiBieXRlcyBvZiB0aGUgYXJyYXksIGluY2x1ZGluZyBhbGwgZWxlbWVudHMgKi8KKysJX19sZTMyIHR5cGU7CS8qIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFXyAqLworKwlfX2xlMzIgbnVtX2VsZW1zOwkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXkgKi8KKysJdW5pb24geworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHV1aWRbMF07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHZhbHVlWzBdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0gc3RyaW5nWzBdOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBQcml2YXRlIGRhdGEuCisrICogQWxsIHRvcG9sb2d5IG9iamVjdHMgbWF5IGhhdmUgcHJpdmF0ZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGRyaXZlciBvcgorKyAqIGZpcm13YXJlLiBDb3JlIHdpbGwgaWdub3JlIHRoaXMgZGF0YS4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgcHJpdmF0ZSBkYXRhICovCisrCXVuaW9uIHsKKysJCWNoYXIgZGF0YVswXTsKKysJCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IGFycmF5WzBdOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBLY29udHJvbCBUTFYgZGF0YS4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHsKKysJX19sZTMyIG1pbjsKKysJX19sZTMyIHN0ZXA7CisrCV9fbGUzMiBtdXRlOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB0eXBlOwkvKiBTTkRSVl9DVExfVExWVF8qLCB0eXBlIG9mIFRMViAqLworKwl1bmlvbiB7CisrCQlfX2xlMzIgZGF0YVtTTkRfU09DX1RQTEdfVExWX1NJWkVdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSBzY2FsZTsKKysJfTsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogS2NvbnRyb2wgY2hhbm5lbCBkYXRhCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiByZWc7CisrCV9fbGUzMiBzaGlmdDsKKysJX19sZTMyIGlkOwkvKiBJRCBtYXBzIHRvIExlZnQsIFJpZ2h0LCBMRkUgZXRjICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEdlbmVyaWNsIE9wZXJhdGlvbnMgSURzLCBmb3IgYmluZGluZyBLY29udHJvbCBvciBCeXRlcyBleHQgb3BzCisrICogS2NvbnRyb2wgb3BzIG5lZWQgZ2V0L3B1dC9pbmZvLgorKyAqIEJ5dGVzIGV4dCBvcHMgbmVlZCBnZXQvcHV0LgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIHsKKysJX19sZTMyIGdldDsKKysJX19sZTMyIHB1dDsKKysJX19sZTMyIGluZm87CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIGtjb250cm9sIGhlYWRlcgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciB7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgdHlwZTsKKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIGFjY2VzczsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgb3BzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgdGx2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBTdHJlYW0gQ2FwYWJpbGl0aWVzCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworKwlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCisrCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKysJX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCisrCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworKwlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHNpZ19iaXRzOyAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgb2YgY29udGVudCAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBGRSBvciBCRSBTdHJlYW0gY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgYnkgU1cvRlcKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogTmFtZSBvZiB0aGUgc3RyZWFtICovCisrCV9fbGU2NCBmb3JtYXQ7CQkvKiBTTkRSVl9QQ01fRk1UQklUXyogKi8KKysJX19sZTMyIHJhdGU7CQkvKiBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiBwZXJpb2RfYnl0ZXM7CS8qIHNpemUgb2YgcGVyaW9kIGluIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfYnl0ZXM7CS8qIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCisrCV9fbGUzMiBjaGFubmVsczsJLyogY2hhbm5lbHMgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIGEgcGh5c2ljYWwgbGluaydzIHJ1bnRpbWUgc3VwcG9ydGVkIGhhcmR3YXJlIGNvbmZpZywKKysgKiBpLmUuIGhhcmR3YXJlIGF1ZGlvIGZvcm1hdHMuCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7CQkvKiB1bmlxdWUgSUQgLSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIGZtdDsJCS8qIFNORF9TT0NfREFJX0ZPUk1BVF8gZm9ybWF0IHZhbHVlICovCisrCV9fdTggY2xvY2tfZ2F0ZWQ7CS8qIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfIHZhbHVlICovCisrCV9fdTggaW52ZXJ0X2JjbGs7CS8qIDEgZm9yIGludmVydGVkIEJDTEssIDAgZm9yIG5vcm1hbCAqLworKwlfX3U4IGludmVydF9mc3luYzsJLyogMSBmb3IgaW52ZXJ0ZWQgZnJhbWUgY2xvY2ssIDAgZm9yIG5vcm1hbCAqLworKwlfX3U4IGJjbGtfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfQkNMS18gdmFsdWUgKi8KKysJX191OCBmc3luY19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19GU1lOQ18gdmFsdWUgKi8KKysJX191OCBtY2xrX2RpcmVjdGlvbjsgICAgLyogU05EX1NPQ19UUExHX01DTEtfIHZhbHVlICovCisrCV9fbGUxNiByZXNlcnZlZDsJLyogZm9yIDMyYml0IGFsaWdubWVudCAqLworKwlfX2xlMzIgbWNsa19yYXRlOwkvKiBNQ0xLIG9yIFNZU0NMSyBmcmVxZW5jeSBpbiBIeiAqLworKwlfX2xlMzIgYmNsa19yYXRlOwkvKiBCQ0xLIGZyZXFlbmN5IGluIEh6ICovCisrCV9fbGUzMiBmc3luY19yYXRlOwkvKiBmcmFtZSBjbG9jayBpbiBIeiAqLworKwlfX2xlMzIgdGRtX3Nsb3RzOwkvKiBudW1iZXIgb2YgVERNIHNsb3RzIGluIHVzZSAqLworKwlfX2xlMzIgdGRtX3Nsb3Rfd2lkdGg7CS8qIHdpZHRoIGluIGJpdHMgZm9yIGVhY2ggc2xvdCAqLworKwlfX2xlMzIgdHhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgVHggc2xvdHMgKi8KKysJX19sZTMyIHJ4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFJ4IHNsb3RzICovCisrCV9fbGUzMiB0eF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFR4IGNoYW5uZWxzICovCisrCV9fbGUzMiB0eF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCisrCV9fbGUzMiByeF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFJ4IGNoYW5uZWxzICovCisrCV9fbGUzMiByeF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIE1hbmlmZXN0LiBMaXN0IHRvdGFscyBmb3IgZWFjaCBwYXlsb2FkIHR5cGUuIE5vdCB1c2VkIGluIHBhcnNpbmcsIGJ1dCB3aWxsCisrICogYmUgcGFzc2VkIHRvIHRoZSBjb21wb25lbnQgZHJpdmVyIGJlZm9yZSBhbnkgb3RoZXIgb2JqZWN0cyBpbiBvcmRlciBmb3IgYW55CisrICogZ2xvYmFsIGNvbXBvbmVudCByZXNvdXJjZSBhbGxvY2F0aW9ucy4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1hbmlmZXN0IDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0ICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCisrCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKysJX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKysJX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2VsZW1zOwkvKiBudW1iZXIgb2YgcGh5c2ljYWwgREFJIGVsZW1lbnRzICovCisrCV9fbGUzMiByZXNlcnZlZFsyMF07CS8qIHJlc2VydmVkIGZvciBuZXcgQUJJIGVsZW1lbnQgdHlwZXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIE1peGVyIGtjb250cm9sLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWl4ZXIga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgeworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIG1pbjsKKysJX19sZTMyIG1heDsKKysJX19sZTMyIHBsYXRmb3JtX21heDsKKysJX19sZTMyIGludmVydDsKKysJX19sZTMyIG51bV9jaGFubmVsczsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEVudW1lcmF0ZWQga2NvbnRyb2wKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGVudW0ga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCB7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgbnVtX2NoYW5uZWxzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworKwlfX2xlMzIgaXRlbXM7CisrCV9fbGUzMiBtYXNrOworKwlfX2xlMzIgY291bnQ7CisrCWNoYXIgdGV4dHNbU05EX1NPQ19UUExHX05VTV9URVhUU11bU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgdmFsdWVzW1NORF9TT0NfVFBMR19OVU1fVEVYVFMgKiBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTiAvIDRdOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogQnl0ZXMga2NvbnRyb2wKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGJ5dGVzIGtjb250cm9sIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgfCAgTiB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBtYXg7CisrCV9fbGUzMiBtYXNrOworKwlfX2xlMzIgYmFzZTsKKysJX19sZTMyIG51bV9yZWdzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBleHRfb3BzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogREFQTSBHcmFwaCBFbGVtZW50CisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIGdyYXBoIGVsZW1lbnRzIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHsKKysJY2hhciBzaW5rW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBjb250cm9sW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBzb3VyY2VbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBEQVBNIFdpZGdldC4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gd2lkZ2V0IDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0ICAgICB8ICBOICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8IDB8MSB8CisrICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8IDB8TiB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICoKKysgKiBPcHRpb25hbCBlbnVtIG9yIG1peGVyIGNvbnRyb2wgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgZWFjaCB3aWRnZXQKKysgKiBpbiB0aGUgYmxvY2suCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOwkJLyogU05EX1NPQ19EQVBNX0NUTCAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIHNuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysKKysJX19sZTMyIHJlZzsJCS8qIG5lZ2F0aXZlIHJlZyA9IG5vIGRpcmVjdCBkYXBtICovCisrCV9fbGUzMiBzaGlmdDsJCS8qIGJpdHMgdG8gc2hpZnQgKi8KKysJX19sZTMyIG1hc2s7CQkvKiBub24tc2hpZnRlZCBtYXNrICovCisrCV9fbGUzMiBzdWJzZXE7CQkvKiBzb3J0IHdpdGhpbiB3aWRnZXQgdHlwZSAqLworKwlfX2xlMzIgaW52ZXJ0OwkJLyogaW52ZXJ0IHRoZSBwb3dlciBiaXQgKi8KKysJX19sZTMyIGlnbm9yZV9zdXNwZW5kOwkvKiBrZXB0IGVuYWJsZWQgb3ZlciBzdXNwZW5kICovCisrCV9fbGUxNiBldmVudF9mbGFnczsKKysJX19sZTE2IGV2ZW50X3R5cGU7CisrCV9fbGUzMiBudW1fa2NvbnRyb2xzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKysJLyoKKysJICoga2NvbnRyb2xzIHRoYXQgcmVsYXRlIHRvIHRoaXMgd2lkZ2V0CisrCSAqIGZvbGxvdyBoZXJlIGFmdGVyIHdpZGdldCBwcml2YXRlIGRhdGEKKysJICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysKKysvKgorKyAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBQQ00gKEZFIERBSSAmIERBSSBsaW5rKS4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIFBDTSA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19wY20gICAgICAgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19wY20geworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworKwlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKysJX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCisrCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCisrCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIHRoZSBwaHlzaWNhbCBsaW5rIHJ1bnRpbWUgc3VwcG9ydGVkIGNvbmZpZ3Mgb3IgcGFyYW1zCisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBsaW5rIGNvbmZpZyA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJY2hhciBzdHJlYW1fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIHN0cmVhbSBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIGh3X2NvbmZpZ1tTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWF07IC8qIGh3IGNvbmZpZ3MgKi8KKysJX19sZTMyIG51bV9od19jb25maWdzOyAgICAgICAgIC8qIG51bWJlciBvZiBodyBjb25maWdzICovCisrCV9fbGUzMiBkZWZhdWx0X2h3X2NvbmZpZ19pZDsgICAvKiBkZWZhdWx0IGh3IGNvbmZpZyBJRCBmb3IgaW5pdCAqLworKwlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworKwlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBwaHlzaWNhbCBEQUkuCisrICogSXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGJhY2tlbmQgREFJcyBmb3IgRFBDTS4KKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIERBSSA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgICAgICAgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIGRhaV9pZDsgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7ICAgICAgICAvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCisrCV9fbGUzMiBjYXB0dXJlOyAgICAgICAgIC8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKysJX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKysJX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfKiAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogT2xkIHZlcnNpb24gb2YgQUJJIHN0cnVjdHMsIHN1cHBvcnRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKysgKi8KKysKKysvKiBNYW5pZmVzdCB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3RfdjQgeworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworKwlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCisrCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCisrCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKysJX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CisrfSBfX3BhY2tlZDsKKysKKysvKiBTdHJlYW0gQ2FwYWJpbGl0aWVzIHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworKwlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCisrCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKysJX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCisrCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworKwlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKyt9IF9fcGFja2VkOworKworKy8qIFBDTSB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfcGNtX3Y0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKysJX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKysJX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCisrCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCisrCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworKwlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworK30gX19wYWNrZWQ7CisrCisrLyogUGh5c2ljYWwgbGluayBjb25maWcgdjQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnX3Y0IHsKKysJX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCisrfSBfX3BhY2tlZDsKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uZGYxMTUzY2UKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaAorQEAgLTAsMCArMSwxMDM4IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIC0gQUxTQSAtIERyaXZlcgorKyAqICBDb3B5cmlnaHQgKGMpIDE5OTQtMjAwMyBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJyYW1vIEJhZ25hcmEgPGFicmFtb0BhbHNhLXByb2plY3Qub3JnPgorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysKKysjaWZuZGVmIF9VQVBJX19TT1VORF9BU09VTkRfSAorKyNkZWZpbmUgX1VBUElfX1NPVU5EX0FTT1VORF9ICisrCisrI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pCisrI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2VuZGlmCisrCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisrI2VuZGlmCisrCisrLyoKKysgKiAgcHJvdG9jb2wgdmVyc2lvbgorKyAqLworKworKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfVkVSU0lPTihtYWpvciwgbWlub3IsIHN1Ym1pbm9yKSAoKChtYWpvcik8PDE2KXwoKG1pbm9yKTw8OCl8KHN1Ym1pbm9yKSkKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX01BSk9SKHZlcnNpb24pICgoKHZlcnNpb24pPj4xNikmMHhmZmZmKQorKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUlOT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjgpJjB4ZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSUNSTyh2ZXJzaW9uKSAoKHZlcnNpb24pJjB4ZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9JTkNPTVBBVElCTEUoa3ZlcnNpb24sIHV2ZXJzaW9uKSBcCisrCShTTkRSVl9QUk9UT0NPTF9NQUpPUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUFKT1IodXZlcnNpb24pIHx8IFwKKysJIChTTkRSVl9QUk9UT0NPTF9NQUpPUihrdmVyc2lvbikgPT0gU05EUlZfUFJPVE9DT0xfTUFKT1IodXZlcnNpb24pICYmIFwKKysJICAgU05EUlZfUFJPVE9DT0xfTUlOT1Ioa3ZlcnNpb24pICE9IFNORFJWX1BST1RPQ09MX01JTk9SKHV2ZXJzaW9uKSkpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBEaWdpdGFsIGF1ZGlvIGludGVyZmFjZQkJCQkJICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0cnVjdCBzbmRfYWVzX2llYzk1OCB7CisrCXVuc2lnbmVkIGNoYXIgc3RhdHVzWzI0XTsJLyogQUVTL0lFQzk1OCBjaGFubmVsIHN0YXR1cyBiaXRzICovCisrCXVuc2lnbmVkIGNoYXIgc3ViY29kZVsxNDddOwkvKiBBRVMvSUVDOTU4IHN1YmNvZGUgYml0cyAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIG5vdGhpbmcgKi8KKysJdW5zaWduZWQgY2hhciBkaWdfc3ViZnJhbWVbNF07CS8qIEFFUy9JRUM5NTggc3ViZnJhbWUgYml0cyAqLworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBDRUEtODYxIEF1ZGlvIEluZm9GcmFtZS4gVXNlZCBpbiBIRE1JIGFuZCBEaXNwbGF5UG9ydAkJICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK3N0cnVjdCBzbmRfY2VhXzg2MV9hdWRfaWYgeworKwl1bnNpZ25lZCBjaGFyIGRiMV9jdF9jYzsgLyogY29kaW5nIHR5cGUgYW5kIGNoYW5uZWwgY291bnQgKi8KKysJdW5zaWduZWQgY2hhciBkYjJfc2Zfc3M7IC8qIHNhbXBsZSBmcmVxdWVuY3kgYW5kIHNpemUgKi8KKysJdW5zaWduZWQgY2hhciBkYjM7IC8qIG5vdCB1c2VkLCBhbGwgemVyb3MgKi8KKysJdW5zaWduZWQgY2hhciBkYjRfY2E7IC8qIGNoYW5uZWwgYWxsb2NhdGlvbiBjb2RlICovCisrCXVuc2lnbmVkIGNoYXIgZGI1X2RtaW5oX2xzdjsgLyogZG93bm1peCBpbmhpYml0ICYgbGV2ZWwtc2hpdCB2YWx1ZXMgKi8KKyt9OworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgIFNlY3Rpb24gZm9yIGRyaXZlciBoYXJkd2FyZSBkZXBlbmRlbnQgaW50ZXJmYWNlIC0gL2Rldi9zbmQvaHc/ICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9IV0RFUF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDEpCisrCisrZW51bSB7CisrCVNORFJWX0hXREVQX0lGQUNFX09QTDIgPSAwLAorKwlTTkRSVl9IV0RFUF9JRkFDRV9PUEwzLAorKwlTTkRSVl9IV0RFUF9JRkFDRV9PUEw0LAorKwlTTkRSVl9IV0RFUF9JRkFDRV9TQjE2Q1NQLAkvKiBDcmVhdGl2ZSBTaWduYWwgUHJvY2Vzc29yICovCisrCVNORFJWX0hXREVQX0lGQUNFX0VNVTEwSzEsCS8qIEZYODAxMCBwcm9jZXNzb3IgaW4gRU1VMTBLMSBjaGlwICovCisrCVNORFJWX0hXREVQX0lGQUNFX1lTUzIyNSwJLyogWWFtYWhhIEZYIHByb2Nlc3NvciAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9JQ1MyMTE1LAkvKiBXYXZldGFibGUgc3ludGggKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfU1NDQVBFLAkvKiBFbnNvbmlxIFNvdW5kU2NhcGUgSVNBIGNhcmQgKE1DNjhFQzAwMCkgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVlgsCQkvKiBEaWdpZ3JhbSBWWCBjYXJkcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9NSVhBUlQsCS8qIERpZ2lncmFtIG1pWGFydCBjYXJkcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWSwJLyogVGFzY2FtIFVTMTIyLCBVUzIyNCAmIFVTNDI4IHVzYiAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9FTVVYX1dBVkVUQUJMRSwgLyogRW11WCB3YXZldGFibGUgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfQkxVRVRPT1RILAkvKiBCbHVldG9vdGggYXVkaW8gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVVNYMllfUENNLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggcmF3dXNiIHBjbSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9QQ1hIUiwJLyogRGlnaWdyYW0gUENYSFIgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfU0JfUkMsCS8qIFNCIEV4dGlneS9BdWRpZ3kyTlggcmVtb3RlIGNvbnRyb2wgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfSERBLAkJLyogSEQtYXVkaW8gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfVVNCX1NUUkVBTSwJLyogZGlyZWN0IGFjY2VzcyB0byB1c2Igc3RyZWFtICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJQ0UsCS8qIFRDIERJQ0UgRmlyZVdpcmUgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVXT1JLUywJLyogRWNobyBBdWRpbyBGaXJld29ya3MgYmFzZWQgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0JFQk9CLAkvKiBCcmlkZ2VDbyBCZUJvQiBiYXNlZCBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfT1hGVywJLyogT3hmb3JkIE9YRlc5NzAvOTcxIGJhc2VkIGRldmljZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19ESUdJMDBYLAkvKiBEaWdpZGVzaWduIERpZ2kgMDAyLzAwMyBmYW1pbHkgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfVEFTQ0FNLAkvKiBUQVNDQU0gRmlyZVdpcmUgc2VyaWVzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0xJTkU2LAkvKiBMaW5lNiBVU0IgcHJvY2Vzc29ycyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19NT1RVLAkvKiBNT1RVIEZpcmVXaXJlIHNlcmllcyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFRkFDRSwJLyogUk1FIEZpcmVmYWNlIHNlcmllcyAqLworKworKwkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCisrCVNORFJWX0hXREVQX0lGQUNFX0xBU1QgPSBTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFRkFDRQorK307CisrCisrc3RydWN0IHNuZF9od2RlcF9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFdSOiBkZXZpY2UgbnVtYmVyICovCisrCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIGh3ZGVwIG5hbWUgKi8KKysJaW50IGlmYWNlOwkJCS8qIGh3ZGVwIGludGVyZmFjZSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworK307CisrCisrLyogZ2VuZXJpYyBEU1AgbG9hZGVyICovCisrc3RydWN0IHNuZF9od2RlcF9kc3Bfc3RhdHVzIHsKKysJdW5zaWduZWQgaW50IHZlcnNpb247CQkvKiBSOiBkcml2ZXItc3BlY2lmaWMgdmVyc2lvbiAqLworKwl1bnNpZ25lZCBjaGFyIGlkWzMyXTsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyBJRCBzdHJpbmcgKi8KKysJdW5zaWduZWQgaW50IG51bV9kc3BzOwkJLyogUjogbnVtYmVyIG9mIERTUCBpbWFnZXMgdG8gdHJhbnNmZXIgKi8KKysJdW5zaWduZWQgaW50IGRzcF9sb2FkZWQ7CS8qIFI6IGJpdCBmbGFncyBpbmRpY2F0aW5nIHRoZSBsb2FkZWQgRFNQcyAqLworKwl1bnNpZ25lZCBpbnQgY2hpcF9yZWFkeTsJLyogUjogMSA9IGluaXRpYWxpemF0aW9uIGZpbmlzaGVkICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrc3RydWN0IHNuZF9od2RlcF9kc3BfaW1hZ2UgeworKwl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBXOiBEU1AgaW5kZXggKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzY0XTsJCS8qIFc6IElEIChlLmcuIGZpbGUgbmFtZSkgKi8KKysJdW5zaWduZWQgY2hhciBfX3VzZXIgKmltYWdlOwkvKiBXOiBiaW5hcnkgaW1hZ2UgKi8KKysJc2l6ZV90IGxlbmd0aDsJCQkvKiBXOiBzaXplIG9mIGltYWdlIGluIGJ5dGVzICovCisrCXVuc2lnbmVkIGxvbmcgZHJpdmVyX2RhdGE7CS8qIFc6IGRyaXZlci1zcGVjaWZpYyBkYXRhICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdIJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfSU5GTwkJX0lPUiAoJ0gnLCAweDAxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9EU1BfU1RBVFVTCV9JT1IoJ0gnLCAweDAyLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9EU1BfTE9BRAlfSU9XKCdIJywgMHgwMywgc3RydWN0IHNuZF9od2RlcF9kc3BfaW1hZ2UpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgRGlnaXRhbCBBdWRpbyAoUENNKSBpbnRlcmZhY2UgLSAvZGV2L3NuZC9wY20/PyAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNkZWZpbmUgU05EUlZfUENNX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgMTQpCisrCisrdHlwZWRlZiB1bnNpZ25lZCBsb25nIHNuZF9wY21fdWZyYW1lc190OworK3R5cGVkZWYgc2lnbmVkIGxvbmcgc25kX3BjbV9zZnJhbWVzX3Q7CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9DTEFTU19HRU5FUklDID0gMCwJLyogc3RhbmRhcmQgbW9ubyBvciBzdGVyZW8gZGV2aWNlICovCisrCVNORFJWX1BDTV9DTEFTU19NVUxUSSwJCS8qIG11bHRpY2hhbm5lbCBkZXZpY2UgKi8KKysJU05EUlZfUENNX0NMQVNTX01PREVNLAkJLyogc29mdHdhcmUgbW9kZW0gY2xhc3MgKi8KKysJU05EUlZfUENNX0NMQVNTX0RJR0lUSVpFUiwJLyogZGlnaXRpemVyIGNsYXNzICovCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfUENNX0NMQVNTX0xBU1QgPSBTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAorK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9TVUJDTEFTU19HRU5FUklDX01JWCA9IDAsIC8qIG1vbm8gb3Igc3RlcmVvIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCisrCVNORFJWX1BDTV9TVUJDTEFTU19NVUxUSV9NSVgsCS8qIG11bHRpY2hhbm5lbCBzdWJkZXZpY2VzIGFyZSBtaXhlZCB0b2dldGhlciAqLworKwkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCisrCVNORFJWX1BDTV9TVUJDTEFTU19MQVNUID0gU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwKKyt9OworKworK2VudW0geworKwlTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLID0gMCwKKysJU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFLAorKwlTTkRSVl9QQ01fU1RSRUFNX0xBU1QgPSBTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCisrfTsKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9hY2Nlc3NfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMCkgLyogaW50ZXJsZWF2ZWQgbW1hcCAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAxKSAvKiBub25pbnRlcmxlYXZlZCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfQ09NUExFWAkJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDIpIC8qIGNvbXBsZXggbW1hcCAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19SV19JTlRFUkxFQVZFRAkJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDMpIC8qIHJlYWRpL3dyaXRlaSAqLworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgNCkgLyogcmVhZG4vd3JpdGVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX0xBU1QJCVNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9mb3JtYXRfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1U4CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0KQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNikgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNykgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgOCkgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgOSkgLyogbG93IHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTMpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNCkgLyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNSkgLyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE2KSAvKiA4LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDY0LWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTcpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUgKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE4KSAvKiBJRUMtOTU4IHN1YmZyYW1lLCBMaXR0bGUgRW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTkpIC8qIElFQy05NTggc3ViZnJhbWUsIEJpZyBFbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVVfTEFXCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjApCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0FfTEFXCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lNQV9BRFBDTQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjIpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX01QRUcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfR1NNCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjQpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjUpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNikgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI3KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjgpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysvKiBnYXAgaW4gdGhlIG51bWJlcmluZyBmb3IgYSBmdXR1cmUgc3RhbmRhcmQgbGluZWFyIGZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TUEVDSUFMCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzIpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzUpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM2KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzgpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM5KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE4XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDEpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQyKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDQpIC8qIDggc2FtcGxlcyBpbiAzIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfMjRfMUIJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ1KSAvKiAxIHNhbXBsZSBpbiAxIGJ5dGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDYpIC8qIDggU2FtcGxlcyBpbiA1IGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfNDBfMUIJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ3KSAvKiAxIHNhbXBsZSBpbiAxIGJ5dGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1U4CQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDgpIC8qIERTRCwgMS1ieXRlIHNhbXBsZXMgRFNEICh4OCkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDkpIC8qIERTRCwgMi1ieXRlIHNhbXBsZXMgRFNEICh4MTYpLCBsaXR0bGUgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUwKSAvKiBEU0QsIDQtYnl0ZSBzYW1wbGVzIERTRCAoeDMyKSwgbGl0dGxlIGVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGJpZyBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTIpIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBiaWcgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0xBU1QJCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GSVJTVAkJU05EUlZfUENNX0ZPUk1BVF9TOAorKworKyNpZmRlZiBTTkRSVl9MSVRUTEVfRU5ESUFOCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfTEUKKysjZW5kaWYKKysjaWZkZWYgU05EUlZfQklHX0VORElBTgorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTYJCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNgkJU05EUlZfUENNX0ZPUk1BVF9VMTZfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0CQlTTkRSVl9QQ01fRk9STUFUX1MyNF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjQJCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMgkJU05EUlZfUENNX0ZPUk1BVF9TMzJfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyCQlTTkRSVl9QQ01fRk9STUFUX1UzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVAkJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0CVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUUgU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwCQlTTkRSVl9QQ01fRk9STUFUX1MyMF9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjAJCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCisrI2VuZGlmCisrCisrdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fc3ViZm9ybWF0X3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAkJKChfX2ZvcmNlIHNuZF9wY21fc3ViZm9ybWF0X3QpIDApCisrI2RlZmluZQlTTkRSVl9QQ01fU1VCRk9STUFUX0xBU1QJU05EUlZfUENNX1NVQkZPUk1BVF9TVEQKKysKKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX01NQVAJCTB4MDAwMDAwMDEJLyogaGFyZHdhcmUgc3VwcG9ydHMgbW1hcCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRAkweDAwMDAwMDAyCS8qIHBlcmlvZCBkYXRhIGFyZSB2YWxpZCBkdXJpbmcgdHJhbnNmZXIgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RPVUJMRQkJMHgwMDAwMDAwNAkvKiBEb3VibGUgYnVmZmVyaW5nIG5lZWRlZCBmb3IgUENNIHN0YXJ0L3N0b3AgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JBVENICQkweDAwMDAwMDEwCS8qIGRvdWJsZSBidWZmZXJpbmcgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX1NZTkNfQVBQTFBUUgkweDAwMDAwMDIwCS8qIG5lZWQgdGhlIGV4cGxpY2l0IHN5bmMgb2YgYXBwbF9wdHIgdXBkYXRlICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRAkweDAwMDAwMTAwCS8qIGNoYW5uZWxzIGFyZSBpbnRlcmxlYXZlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTk9OSU5URVJMRUFWRUQJMHgwMDAwMDIwMAkvKiBjaGFubmVscyBhcmUgbm90IGludGVybGVhdmVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19DT01QTEVYCQkweDAwMDAwNDAwCS8qIGNvbXBsZXggZnJhbWUgb3JnYW5pemF0aW9uIChtbWFwIG9ubHkpICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19CTE9DS19UUkFOU0ZFUgkweDAwMDEwMDAwCS8qIGhhcmR3YXJlIHRyYW5zZmVyIGJsb2NrIG9mIHNhbXBsZXMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX09WRVJSQU5HRQkweDAwMDIwMDAwCS8qIGhhcmR3YXJlIHN1cHBvcnRzIEFEQyAoY2FwdHVyZSkgb3ZlcnJhbmdlIGRldGVjdGlvbiAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fUkVTVU1FCQkweDAwMDQwMDAwCS8qIGhhcmR3YXJlIHN1cHBvcnRzIHN0cmVhbSByZXN1bWUgYWZ0ZXIgc3VzcGVuZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fUEFVU0UJCTB4MDAwODAwMDAJLyogcGF1c2UgaW9jdGwgaXMgc3VwcG9ydGVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQUxGX0RVUExFWAkweDAwMTAwMDAwCS8qIG9ubHkgaGFsZiBkdXBsZXggKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0pPSU5UX0RVUExFWAkweDAwMjAwMDAwCS8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIHN0cmVhbSBhcmUgc29tZXdoYXQgY29ycmVsYXRlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19TVEFSVAkweDAwNDAwMDAwCS8qIHBjbSBzdXBwb3J0IHNvbWUga2luZCBvZiBzeW5jIGdvICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT19QRVJJT0RfV0FLRVVQCTB4MDA4MDAwMDAJLyogcGVyaW9kIHdha2V1cCBjYW4gYmUgZGlzYWJsZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19XQUxMX0NMT0NLICAgMHgwMTAwMDAwMCAgICAgIC8qIChEZXByZWNhdGVkKWhhcyBhdWRpbyB3YWxsIGNsb2NrIGZvciBhdWRpby9zeXN0ZW0gdGltZSBzeW5jICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BVElNRSAgICAgICAgICAgICAgMHgwMTAwMDAwMCAgLyogcmVwb3J0IGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgcmVzZXQgb24gc3RhcnR1cCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfQUJTT0xVVEVfQVRJTUUgICAgIDB4MDIwMDAwMDAgIC8qIHJlcG9ydCBhYnNvbHV0ZSBoYXJkd2FyZSBsaW5rIGF1ZGlvIHRpbWUsIG5vdCByZXNldCBvbiBzdGFydHVwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19FU1RJTUFURURfQVRJTUUgICAgMHgwNDAwMDAwMCAgLyogcmVwb3J0IGVzdGltYXRlZCBsaW5rIGF1ZGlvIHRpbWUgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX1NZTkNIUk9OSVpFRF9BVElNRSAweDA4MDAwMDAwICAvKiByZXBvcnQgc3luY2hyb25pemVkIGF1ZGlvL3N5c3RlbSB0aW1lICovCisrCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19EUkFJTl9UUklHR0VSCTB4NDAwMDAwMDAJCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gdHJpZ2dlciBpbiBkcmFpbiAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fRklGT19JTl9GUkFNRVMJMHg4MDAwMDAwMAkvKiBpbnRlcm5hbCBrZXJuZWwgZmxhZyAtIEZJRk8gc2l6ZSBpcyBpbiBmcmFtZXMgKi8KKysKKysKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdGF0ZV90OworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX09QRU4JCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDApIC8qIHN0cmVhbSBpcyBvcGVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU0VUVVAJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDEpIC8qIHN0cmVhbSBoYXMgYSBzZXR1cCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1BSRVBBUkVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDIpIC8qIHN0cmVhbSBpcyByZWFkeSB0byBzdGFydCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1JVTk5JTkcJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDMpIC8qIHN0cmVhbSBpcyBydW5uaW5nICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfWFJVTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNCkgLyogc3RyZWFtIHJlYWNoZWQgYW4geHJ1biAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RSQUlOSU5HCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDUpIC8qIHN0cmVhbSBpcyBkcmFpbmluZyAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1BBVVNFRAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNikgLyogc3RyZWFtIGlzIHBhdXNlZCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1NVU1BFTkRFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA3KSAvKiBoYXJkd2FyZSBpcyBzdXNwZW5kZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9ESVNDT05ORUNURUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgOCkgLyogaGFyZHdhcmUgaXMgZGlzY29ubmVjdGVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfTEFTVAkJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAorKworK2VudW0geworKwlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfREFUQSA9IDB4MDAwMDAwMDAsCisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9TVEFUVVMgPSAweDgwMDAwMDAwLAorKwlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfQ09OVFJPTCA9IDB4ODEwMDAwMDAsCisrfTsKKysKKyt1bmlvbiBzbmRfcGNtX3N5bmNfaWQgeworKwl1bnNpZ25lZCBjaGFyIGlkWzE2XTsKKysJdW5zaWduZWQgc2hvcnQgaWQxNls4XTsKKysJdW5zaWduZWQgaW50IGlkMzJbNF07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCisrCWludCBzdHJlYW07CQkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdHJlYW0gZGlyZWN0aW9uICovCisrCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIG5hbWUgb2YgdGhpcyBkZXZpY2UgKi8KKysJdW5zaWduZWQgY2hhciBzdWJuYW1lWzMyXTsJLyogc3ViZGV2aWNlIG5hbWUgKi8KKysJaW50IGRldl9jbGFzczsJCQkvKiBTTkRSVl9QQ01fQ0xBU1NfKiAqLworKwlpbnQgZGV2X3N1YmNsYXNzOwkJLyogU05EUlZfUENNX1NVQkNMQVNTXyogKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworKwl1bmlvbiBzbmRfcGNtX3N5bmNfaWQgc3luYzsJLyogaGFyZHdhcmUgc3luY2hyb25pemF0aW9uIElEICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlLi4uICovCisrfTsKKysKKyt0eXBlZGVmIGludCBzbmRfcGNtX2h3X3BhcmFtX3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTCTAJLyogQWNjZXNzIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQJMQkvKiBGb3JtYXQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQJMgkvKiBTdWJmb3JtYXQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9NQVNLCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9MQVNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAorKworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NBTVBMRV9CSVRTCTgJLyogQml0cyBwZXIgc2FtcGxlICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRlJBTUVfQklUUwk5CS8qIEJpdHMgcGVyIGZyYW1lICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMJMTAJLyogQ2hhbm5lbHMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9SQVRFCQkxMQkvKiBBcHByb3ggcmF0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9USU1FCTEyCS8qIEFwcHJveCBkaXN0YW5jZSBiZXR3ZWVuCisrCQkJCQkJICogaW50ZXJydXB0cyBpbiB1cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9TSVpFCTEzCS8qIEFwcHJveCBmcmFtZXMgYmV0d2VlbgorKwkJCQkJCSAqIGludGVycnVwdHMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfQllURVMJMTQJLyogQXBwcm94IGJ5dGVzIGJldHdlZW4KKysJCQkJCQkgKiBpbnRlcnJ1cHRzCisrCQkJCQkJICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EUwkxNQkvKiBBcHByb3ggaW50ZXJydXB0cyBwZXIKKysJCQkJCQkgKiBidWZmZXIKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfVElNRQkxNgkvKiBBcHByb3ggZHVyYXRpb24gb2YgYnVmZmVyCisrCQkJCQkJICogaW4gdXMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfU0laRQkxNwkvKiBTaXplIG9mIGJ1ZmZlciBpbiBmcmFtZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfQllURVMJMTgJLyogU2l6ZSBvZiBidWZmZXIgaW4gYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9USUNLX1RJTUUJMTkJLyogQXBwcm94IHRpY2sgZHVyYXRpb24gaW4gdXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9JTlRFUlZBTAlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9USUNLX1RJTUUKKysKKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfTk9SRVNBTVBMRQkoMTw8MCkJLyogYXZvaWQgcmF0ZSByZXNhbXBsaW5nICovCisrI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX0VYUE9SVF9CVUZGRVIJKDE8PDEpCS8qIGV4cG9ydCBidWZmZXIgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfTk9fUEVSSU9EX1dBS0VVUAkoMTw8MikJLyogZGlzYWJsZSBwZXJpb2Qgd2FrZXVwcyAqLworKworK3N0cnVjdCBzbmRfaW50ZXJ2YWwgeworKwl1bnNpZ25lZCBpbnQgbWluLCBtYXg7CisrCXVuc2lnbmVkIGludCBvcGVubWluOjEsCisrCQkgICAgIG9wZW5tYXg6MSwKKysJCSAgICAgaW50ZWdlcjoxLAorKwkJICAgICBlbXB0eToxOworK307CisrCisrI2RlZmluZSBTTkRSVl9NQVNLX01BWAkyNTYKKysKKytzdHJ1Y3Qgc25kX21hc2sgeworKwlfX3UzMiBiaXRzWyhTTkRSVl9NQVNLX01BWCszMSkvMzJdOworK307CisrCisrc3RydWN0IHNuZF9wY21faHdfcGFyYW1zIHsKKysJdW5zaWduZWQgaW50IGZsYWdzOworKwlzdHJ1Y3Qgc25kX21hc2sgbWFza3NbU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSyAtCisrCQkJICAgICAgIFNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9NQVNLICsgMV07CisrCXN0cnVjdCBzbmRfbWFzayBtcmVzWzVdOwkvKiByZXNlcnZlZCBtYXNrcyAqLworKwlzdHJ1Y3Qgc25kX2ludGVydmFsIGludGVydmFsc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9JTlRFUlZBTCAtCisrCQkJCSAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMICsgMV07CisrCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaXJlc1s5XTsJLyogcmVzZXJ2ZWQgaW50ZXJ2YWxzICovCisrCXVuc2lnbmVkIGludCBybWFzazsJCS8qIFc6IHJlcXVlc3RlZCBtYXNrcyAqLworKwl1bnNpZ25lZCBpbnQgY21hc2s7CQkvKiBSOiBjaGFuZ2VkIG1hc2tzICovCisrCXVuc2lnbmVkIGludCBpbmZvOwkJLyogUjogSW5mbyBmbGFncyBmb3IgcmV0dXJuZWQgc2V0dXAgKi8KKysJdW5zaWduZWQgaW50IG1zYml0czsJCS8qIFI6IHVzZWQgbW9zdCBzaWduaWZpY2FudCBiaXRzICovCisrCXVuc2lnbmVkIGludCByYXRlX251bTsJCS8qIFI6IHJhdGUgbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGludCByYXRlX2RlbjsJCS8qIFI6IHJhdGUgZGVub21pbmF0b3IgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgZmlmb19zaXplOwkvKiBSOiBjaGlwIEZJRk8gc2l6ZSBpbiBmcmFtZXMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKyt9OworKworK2VudW0geworKwlTTkRSVl9QQ01fVFNUQU1QX05PTkUgPSAwLAorKwlTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKysJU05EUlZfUENNX1RTVEFNUF9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9FTkFCTEUsCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9zd19wYXJhbXMgeworKwlpbnQgdHN0YW1wX21vZGU7CQkJLyogdGltZXN0YW1wIG1vZGUgKi8KKysJdW5zaWduZWQgaW50IHBlcmlvZF9zdGVwOworKwl1bnNpZ25lZCBpbnQgc2xlZXBfbWluOwkJCS8qIG1pbiB0aWNrcyB0byBzbGVlcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9taW47CQkvKiBtaW4gYXZhaWwgZnJhbWVzIGZvciB3YWtldXAgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgeGZlcl9hbGlnbjsJCS8qIG9ic29sZXRlOiB4ZmVyIHNpemUgbmVlZCB0byBiZSBhIG11bHRpcGxlICovCisrCXNuZF9wY21fdWZyYW1lc190IHN0YXJ0X3RocmVzaG9sZDsJLyogbWluIGh3X2F2YWlsIGZyYW1lcyBmb3IgYXV0b21hdGljIHN0YXJ0ICovCisrCXNuZF9wY21fdWZyYW1lc190IHN0b3BfdGhyZXNob2xkOwkvKiBtaW4gYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RvcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBzaWxlbmNlX3RocmVzaG9sZDsJLyogbWluIGRpc3RhbmNlIGZyb20gbm9pc2UgZm9yIHNpbGVuY2UgZmlsbGluZyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBzaWxlbmNlX3NpemU7CQkvKiBzaWxlbmNlIGJsb2NrIHNpemUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYm91bmRhcnk7CQkvKiBwb2ludGVycyB3cmFwIHBvaW50ICovCisrCXVuc2lnbmVkIGludCBwcm90bzsJCQkvKiBwcm90b2NvbCB2ZXJzaW9uICovCisrCXVuc2lnbmVkIGludCB0c3RhbXBfdHlwZTsJCS8qIHRpbWVzdGFtcCB0eXBlIChyZXEuIHByb3RvID49IDIuMC4xMikgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Nl07CQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8geworKwl1bnNpZ25lZCBpbnQgY2hhbm5lbDsKKysJX19rZXJuZWxfb2ZmX3Qgb2Zmc2V0OwkJLyogbW1hcCBvZmZzZXQgKi8KKysJdW5zaWduZWQgaW50IGZpcnN0OwkJLyogb2Zmc2V0IHRvIGZpcnN0IHNhbXBsZSBpbiBiaXRzICovCisrCXVuc2lnbmVkIGludCBzdGVwOwkJLyogc2FtcGxlcyBkaXN0YW5jZSBpbiBiaXRzICovCisrfTsKKysKKytlbnVtIHsKKysJLyoKKysJICogIGZpcnN0IGRlZmluaXRpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHksCisrCSAqICBtYXBzIHRvIHdhbGxjbG9jay9saW5rIHRpbWUgZm9yIEhEQXVkaW8gcGxheWJhY2sgYW5kIERFRkFVTFQvRE1BIHRpbWUgZm9yIGV2ZXJ5dGhpbmcgZWxzZQorKwkgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0NPTVBBVCA9IDAsCisrCisrCS8qIHRpbWVzdGFtcCBkZWZpbml0aW9ucyAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfREVGQVVMVCA9IDEsICAgICAgICAgICAvKiBETUEgdGltZSwgcmVwb3J0ZWQgYXMgcGVyIGh3X3B0ciAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOSyA9IDIsCSAgICAgICAgICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgcmVzZXQgb24gc3RhcnR1cCAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19BQlNPTFVURSA9IDMsCSAgIC8qIGxpbmsgdGltZSByZXBvcnRlZCBieSBzYW1wbGUgb3Igd2FsbGNsb2NrIGNvdW50ZXIsIG5vdCByZXNldCBvbiBzdGFydHVwICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0VTVElNQVRFRCA9IDQsICAgIC8qIGxpbmsgdGltZSBlc3RpbWF0ZWQgaW5kaXJlY3RseSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19TWU5DSFJPTklaRUQgPSA1LCAvKiBsaW5rIHRpbWUgc3luY2hyb25pemVkIHdpdGggc3lzdGVtIHRpbWUgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xBU1QgPSBTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19TWU5DSFJPTklaRUQKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX3N0YXR1cyB7CisrCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIHN0cmVhbSBzdGF0ZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHJpZ2dlcl90c3RhbXA7CS8qIHRpbWUgd2hlbiBzdHJlYW0gd2FzIHN0YXJ0ZWQvc3RvcHBlZC9wYXVzZWQgKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIHJlZmVyZW5jZSB0aW1lc3RhbXAgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIGFwcGwgcHRyICovCisrCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cjsJLyogaHcgcHRyICovCisrCXNuZF9wY21fc2ZyYW1lc190IGRlbGF5OwkvKiBjdXJyZW50IGRlbGF5IGluIGZyYW1lcyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbDsJLyogbnVtYmVyIG9mIGZyYW1lcyBhdmFpbGFibGUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWF4OwkvKiBtYXggZnJhbWVzIGF2YWlsYWJsZSBvbiBodyBzaW5jZSBsYXN0IHN0YXR1cyAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBvdmVycmFuZ2U7CS8qIGNvdW50IG9mIEFEQyAoY2FwdHVyZSkgb3ZlcnJhbmdlIGRldGVjdGlvbnMgZnJvbSBsYXN0IHN0YXR1cyAqLworKwlzbmRfcGNtX3N0YXRlX3Qgc3VzcGVuZGVkX3N0YXRlOyAvKiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCisrCV9fdTMyIGF1ZGlvX3RzdGFtcF9kYXRhOwkgLyogbmVlZGVkIGZvciA2NC1iaXQgYWxpZ25tZW50LCB1c2VkIGZvciBjb25maWdzL3JlcG9ydCB0by9mcm9tIHVzZXJzcGFjZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgYXVkaW9fdHN0YW1wOwkvKiBzYW1wbGUgY291bnRlciwgd2FsbCBjbG9jaywgUEhDIG9yIG9uLWRlbWFuZCBzeW5jJ2VkICovCisrCXN0cnVjdCB0aW1lc3BlYyBkcml2ZXJfdHN0YW1wOwkvKiB1c2VmdWwgaW4gY2FzZSByZWZlcmVuY2Ugc3lzdGVtIHRzdGFtcCBpcyByZXBvcnRlZCB3aXRoIGRlbGF5ICovCisrCV9fdTMyIGF1ZGlvX3RzdGFtcF9hY2N1cmFjeTsJLyogaW4gbnMgdW5pdHMsIG9ubHkgdmFsaWQgaWYgaW5kaWNhdGVkIGluIGF1ZGlvX3RzdGFtcF9kYXRhICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTItMipzaXplb2Yoc3RydWN0IHRpbWVzcGVjKV07IC8qIG11c3QgYmUgZmlsbGVkIHdpdGggemVybyAqLworK307CisrCisrc3RydWN0IHNuZF9wY21fbW1hcF9zdGF0dXMgeworKwlzbmRfcGNtX3N0YXRlX3Qgc3RhdGU7CQkvKiBSTzogc3RhdGUgLSBTTkRSVl9QQ01fU1RBVEVfWFhYWCAqLworKwlpbnQgcGFkMTsJCQkvKiBOZWVkZWQgZm9yIDY0IGJpdCBhbGlnbm1lbnQgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBSTzogaHcgcHRyICgwLi4uYm91bmRhcnktMSkgKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworKwlzbmRfcGNtX3N0YXRlX3Qgc3VzcGVuZGVkX3N0YXRlOyAvKiBSTzogc3VzcGVuZGVkIHN0cmVhbSBzdGF0ZSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgYXVkaW9fdHN0YW1wOwkvKiBmcm9tIHNhbXBsZSBjb3VudGVyIG9yIHdhbGwgY2xvY2sgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCB7CisrCXNuZF9wY21fdWZyYW1lc190IGFwcGxfcHRyOwkvKiBSVzogYXBwbCBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9taW47CS8qIFJXOiBtaW4gYXZhaWxhYmxlIGZyYW1lcyBmb3Igd2FrZXVwICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9IV1NZTkMJKDE8PDApCS8qIGV4ZWN1dGUgaHdzeW5jICovCisrI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVBQTAkJKDE8PDEpCS8qIGdldCBhcHBsX3B0ciBmcm9tIGRyaXZlciAoci93IG9wKSAqLworKyNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0FWQUlMX01JTgkoMTw8MikJLyogZ2V0IGF2YWlsX21pbiBmcm9tIGRyaXZlciAqLworKworK3N0cnVjdCBzbmRfcGNtX3N5bmNfcHRyIHsKKysJdW5zaWduZWQgaW50IGZsYWdzOworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyBzdGF0dXM7CisrCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsKKysJfSBzOworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3BjbV9tbWFwX2NvbnRyb2wgY29udHJvbDsKKysJCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworKwl9IGM7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3hmZXJpIHsKKysJc25kX3BjbV9zZnJhbWVzX3QgcmVzdWx0OworKwl2b2lkIF9fdXNlciAqYnVmOworKwlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3hmZXJuIHsKKysJc25kX3BjbV9zZnJhbWVzX3QgcmVzdWx0OworKwl2b2lkIF9fdXNlciAqIF9fdXNlciAqYnVmczsKKysJc25kX3BjbV91ZnJhbWVzX3QgZnJhbWVzOworK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9HRVRUSU1FT0ZEQVkgPSAwLAkvKiBnZXR0aW1lb2ZkYXkgZXF1aXZhbGVudCAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDLAkvKiBwb3NpeF9jbG9ja19tb25vdG9uaWMgZXF1aXZhbGVudCAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDX1JBVywgICAgLyogbW9ub3RvbmljX3JhdyAobm8gTlRQKSAqLworKwlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLAorK307CisrCisrLyogY2hhbm5lbCBwb3NpdGlvbnMgKi8KKytlbnVtIHsKKysJU05EUlZfQ0hNQVBfVU5LTk9XTiA9IDAsCisrCVNORFJWX0NITUFQX05BLAkJLyogTi9BLCBzaWxlbnQgKi8KKysJU05EUlZfQ0hNQVBfTU9OTywJLyogbW9ubyBzdHJlYW0gKi8KKysJLyogdGhpcyBmb2xsb3dzIHRoZSBhbHNhLWxpYiBtaXhlciBjaGFubmVsIHZhbHVlICsgMyAqLworKwlTTkRSVl9DSE1BUF9GTCwJCS8qIGZyb250IGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfRlIsCQkvKiBmcm9udCByaWdodCAqLworKwlTTkRSVl9DSE1BUF9STCwJCS8qIHJlYXIgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9SUiwJCS8qIHJlYXIgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfRkMsCQkvKiBmcm9udCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfTEZFLAkvKiBMRkUgKi8KKysJU05EUlZfQ0hNQVBfU0wsCQkvKiBzaWRlIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfU1IsCQkvKiBzaWRlIHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1JDLAkJLyogcmVhciBjZW50ZXIgKi8KKysJLyogbmV3IGRlZmluaXRpb25zICovCisrCVNORFJWX0NITUFQX0ZMQywJLyogZnJvbnQgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfRlJDLAkvKiBmcm9udCByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfUkxDLAkvKiByZWFyIGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1JSQywJLyogcmVhciByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfRkxXLAkvKiBmcm9udCBsZWZ0IHdpZGUgKi8KKysJU05EUlZfQ0hNQVBfRlJXLAkvKiBmcm9udCByaWdodCB3aWRlICovCisrCVNORFJWX0NITUFQX0ZMSCwJLyogZnJvbnQgbGVmdCBoaWdoICovCisrCVNORFJWX0NITUFQX0ZDSCwJLyogZnJvbnQgY2VudGVyIGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfRlJILAkvKiBmcm9udCByaWdodCBoaWdoICovCisrCVNORFJWX0NITUFQX1RDLAkJLyogdG9wIGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9URkwsCS8qIHRvcCBmcm9udCBsZWZ0ICovCisrCVNORFJWX0NITUFQX1RGUiwJLyogdG9wIGZyb250IHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1RGQywJLyogdG9wIGZyb250IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9UUkwsCS8qIHRvcCByZWFyIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVFJSLAkvKiB0b3AgcmVhciByaWdodCAqLworKwlTTkRSVl9DSE1BUF9UUkMsCS8qIHRvcCByZWFyIGNlbnRlciAqLworKwkvKiBuZXcgZGVmaW5pdGlvbnMgZm9yIFVBQzIgKi8KKysJU05EUlZfQ0hNQVBfVEZMQywJLyogdG9wIGZyb250IGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RGUkMsCS8qIHRvcCBmcm9udCByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfVFNMLAkvKiB0b3Agc2lkZSBsZWZ0ICovCisrCVNORFJWX0NITUFQX1RTUiwJLyogdG9wIHNpZGUgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfTExGRSwJLyogbGVmdCBMRkUgKi8KKysJU05EUlZfQ0hNQVBfUkxGRSwJLyogcmlnaHQgTEZFICovCisrCVNORFJWX0NITUFQX0JDLAkJLyogYm90dG9tIGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9CTEMsCS8qIGJvdHRvbSBsZWZ0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9CUkMsCS8qIGJvdHRvbSByaWdodCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfTEFTVCA9IFNORFJWX0NITUFQX0JSQywKKyt9OworKworKyNkZWZpbmUgU05EUlZfQ0hNQVBfUE9TSVRJT05fTUFTSwkweGZmZmYKKysjZGVmaW5lIFNORFJWX0NITUFQX1BIQVNFX0lOVkVSU0UJKDB4MDEgPDwgMTYpCisrI2RlZmluZSBTTkRSVl9DSE1BUF9EUklWRVJfU1BFQwkJKDB4MDIgPDwgMTYpCisrCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFZFUlNJT04JX0lPUignQScsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9JTkZPCQlfSU9SKCdBJywgMHgwMSwgc3RydWN0IHNuZF9wY21faW5mbykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UU1RBTVAJCV9JT1coJ0EnLCAweDAyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVFRTVEFNUAkJX0lPVygnQScsIDB4MDMsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9VU0VSX1BWRVJTSU9OCV9JT1coJ0EnLCAweDA0LCBpbnQpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUkVGSU5FCV9JT1dSKCdBJywgMHgxMCwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX1BBUkFNUwlfSU9XUignQScsIDB4MTEsIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19GUkVFCQlfSU8oJ0EnLCAweDEyKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NXX1BBUkFNUwlfSU9XUignQScsIDB4MTMsIHN0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFUVVMJCV9JT1IoJ0EnLCAweDIwLCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfREVMQVkJCV9JT1IoJ0EnLCAweDIxLCBzbmRfcGNtX3NmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV1NZTkMJCV9JTygnQScsIDB4MjIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1lOQ19QVFIJX0lPV1IoJ0EnLCAweDIzLCBzdHJ1Y3Qgc25kX3BjbV9zeW5jX3B0cikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFUVVNfRVhUCV9JT1dSKCdBJywgMHgyNCwgc3RydWN0IHNuZF9wY21fc3RhdHVzKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0NIQU5ORUxfSU5GTwlfSU9SKCdBJywgMHgzMiwgc3RydWN0IHNuZF9wY21fY2hhbm5lbF9pbmZvKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BSRVBBUkUJCV9JTygnQScsIDB4NDApCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVTRVQJCV9JTygnQScsIDB4NDEpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBUlQJCV9JTygnQScsIDB4NDIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRFJPUAkJX0lPKCdBJywgMHg0MykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUkFJTgkJX0lPKCdBJywgMHg0NCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QQVVTRQkJX0lPVygnQScsIDB4NDUsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVdJTkQJCV9JT1coJ0EnLCAweDQ2LCBzbmRfcGNtX3VmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNVTUUJCV9JTygnQScsIDB4NDcpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfWFJVTgkJX0lPKCdBJywgMHg0OCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9GT1JXQVJECQlfSU9XKCdBJywgMHg0OSwgc25kX3BjbV91ZnJhbWVzX3QpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfV1JJVEVJX0ZSQU1FUwlfSU9XKCdBJywgMHg1MCwgc3RydWN0IHNuZF94ZmVyaSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRUFESV9GUkFNRVMJX0lPUignQScsIDB4NTEsIHN0cnVjdCBzbmRfeGZlcmkpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfV1JJVEVOX0ZSQU1FUwlfSU9XKCdBJywgMHg1Miwgc3RydWN0IHNuZF94ZmVybikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRUFETl9GUkFNRVMJX0lPUignQScsIDB4NTMsIHN0cnVjdCBzbmRfeGZlcm4pCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfTElOSwkJX0lPVygnQScsIDB4NjAsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9VTkxJTksJCV9JTygnQScsIDB4NjEpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlESSB2MS4wIGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKy8qCisrICogIFJhdyBNSURJIHNlY3Rpb24gLSAvZGV2L3NuZC9taWRpPz8KKysgKi8KKysKKysjZGVmaW5lIFNORFJWX1JBV01JRElfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAwKQorKworK2VudW0geworKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9PVVRQVVQgPSAwLAorKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCwKKysJU05EUlZfUkFXTUlESV9TVFJFQU1fTEFTVCA9IFNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorK307CisrCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fT1VUUFVUCQkweDAwMDAwMDAxCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fSU5QVVQJCTB4MDAwMDAwMDIKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19EVVBMRVgJCTB4MDAwMDAwMDQKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbyB7CisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IGRldmljZSBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogc3ViZGV2aWNlIG51bWJlciAqLworKwlpbnQgc3RyZWFtOwkJCS8qIFdSOiBzdHJlYW0gKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogU05EUlZfUkFXTUlESV9JTkZPX1hYWFggKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiBkZXZpY2UgKi8KKysJdW5zaWduZWQgY2hhciBzdWJuYW1lWzMyXTsJLyogbmFtZSBvZiBhY3RpdmUgb3Igc2VsZWN0ZWQgc3ViZGV2aWNlICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2NvdW50OworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19hdmFpbDsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zIHsKKysJaW50IHN0cmVhbTsKKysJc2l6ZV90IGJ1ZmZlcl9zaXplOwkJLyogcXVldWUgc2l6ZSBpbiBieXRlcyAqLworKwlzaXplX3QgYXZhaWxfbWluOwkJLyogbWluaW11bSBhdmFpbCBieXRlcyBmb3Igd2FrZXVwICovCisrCXVuc2lnbmVkIGludCBub19hY3RpdmVfc2Vuc2luZzogMTsgLyogZG8gbm90IHNlbmQgYWN0aXZlIHNlbnNpbmcgYnl0ZSBpbiBjbG9zZSgpICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrc3RydWN0IHNuZF9yYXdtaWRpX3N0YXR1cyB7CisrCWludCBzdHJlYW07CisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgKi8KKysJc2l6ZV90IGF2YWlsOwkJCS8qIGF2YWlsYWJsZSBieXRlcyAqLworKwlzaXplX3QgeHJ1bnM7CQkJLyogY291bnQgb2Ygb3ZlcnJ1bnMgc2luY2UgbGFzdCBzdGF0dXMgKGluIGJ5dGVzKSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QVkVSU0lPTglfSU9SKCdXJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9JTkZPCV9JT1IoJ1cnLCAweDAxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfUEFSQU1TCV9JT1dSKCdXJywgMHgxMCwgc3RydWN0IHNuZF9yYXdtaWRpX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfU1RBVFVTCV9JT1dSKCdXJywgMHgyMCwgc3RydWN0IHNuZF9yYXdtaWRpX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfRFJPUAlfSU9XKCdXJywgMHgzMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUkFJTglfSU9XKCdXJywgMHgzMSwgaW50KQorKworKy8qCisrICogIFRpbWVyIHNlY3Rpb24gLSAvZGV2L3NuZC90aW1lcgorKyAqLworKworKyNkZWZpbmUgU05EUlZfVElNRVJfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCA2KQorKworK2VudW0geworKwlTTkRSVl9USU1FUl9DTEFTU19OT05FID0gLTEsCisrCVNORFJWX1RJTUVSX0NMQVNTX1NMQVZFID0gMCwKKysJU05EUlZfVElNRVJfQ0xBU1NfR0xPQkFMLAorKwlTTkRSVl9USU1FUl9DTEFTU19DQVJELAorKwlTTkRSVl9USU1FUl9DTEFTU19QQ00sCisrCVNORFJWX1RJTUVSX0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9DTEFTU19QQ00sCisrfTsKKysKKysvKiBzbGF2ZSB0aW1lciBjbGFzc2VzICovCisrZW51bSB7CisrCVNORFJWX1RJTUVSX1NDTEFTU19OT05FID0gMCwKKysJU05EUlZfVElNRVJfU0NMQVNTX0FQUExJQ0FUSU9OLAorKwlTTkRSVl9USU1FUl9TQ0xBU1NfU0VRVUVOQ0VSLAkJLyogYWxpYXMgKi8KKysJU05EUlZfVElNRVJfU0NMQVNTX09TU19TRVFVRU5DRVIsCS8qIGFsaWFzICovCisrCVNORFJWX1RJTUVSX1NDTEFTU19MQVNUID0gU05EUlZfVElNRVJfU0NMQVNTX09TU19TRVFVRU5DRVIsCisrfTsKKysKKysvKiBnbG9iYWwgdGltZXJzIChkZXZpY2UgbWVtYmVyKSAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX1NZU1RFTQkwCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfUlRDCQkxCS8qIHVudXNlZCAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hQRVQJCTIKKysjZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9IUlRJTUVSCTMKKysKKysvKiBpbmZvIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9GTEdfU0xBVkUJCSgxPDwwKQkvKiBjYW5ub3QgYmUgY29udHJvbGxlZCAqLworKworK3N0cnVjdCBzbmRfdGltZXJfaWQgeworKwlpbnQgZGV2X2NsYXNzOworKwlpbnQgZGV2X3NjbGFzczsKKysJaW50IGNhcmQ7CisrCWludCBkZXZpY2U7CisrCWludCBzdWJkZXZpY2U7CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiB0aW1lciBmbGFncyAtIFNORFJWX1RJTUVSX0ZMR18qICovCisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogdGltZXIgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIHRpbWVyIG5hbWUgKi8KKysJdW5zaWduZWQgbG9uZyByZXNlcnZlZDA7CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogYXZlcmFnZSBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbWluOwkvKiBtaW5pbWFsIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9tYXg7CS8qIG1heGltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgaW50IGNsaWVudHM7CQkvKiBhY3RpdmUgdGltZXIgY2xpZW50cyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfZ3BhcmFtcyB7CisrCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKysJdW5zaWduZWQgbG9uZyBwZXJpb2RfbnVtOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGxvbmcgcGVyaW9kX2RlbjsJLyogcmVxdWVzdGVkIHByZWNpc2UgcGVyaW9kIGR1cmF0aW9uIChpbiBzZWNvbmRzKSAtIGRlbm9taW5hdG9yICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9nc3RhdHVzIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX251bTsJLyogcHJlY2lzZSBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIChpbiBzZWNvbmRzKSAtIG51bWVyYXRvciAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fZGVuOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3NlbGVjdCB7CisrCXN0cnVjdCBzbmRfdGltZXJfaWQgaWQ7CS8qIGJpbmQgdG8gdGltZXIgSUQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CS8qIHJlc2VydmVkICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2luZm8geworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiB0aW1lciBmbGFncyAtIFNORFJWX1RJTUVSX0ZMR18qICovCisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogdGltZXIgaWRlbnRpZmljYXRvciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19BVVRPCQkoMTw8MCkJLyogYXV0byBzdGFydCwgb3RoZXJ3aXNlIG9uZS1zaG90ICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FWENMVVNJVkUJKDE8PDEpCS8qIGV4Y2x1c2l2ZSB1c2UsIHByZWNpc2Ugc3RhcnQvc3RvcC9wYXVzZS9jb250aW51ZSAqLworKyNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfRUFSTFlfRVZFTlQJKDE8PDIpCS8qIHdyaXRlIGVhcmx5IGV2ZW50IHRvIHRoZSBwb2xsIHF1ZXVlICovCisrCisrc3RydWN0IHNuZF90aW1lcl9wYXJhbXMgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBmbGFncyAtIFNORFJWX1RJTUVSX1BTRkxHXyogKi8KKysJdW5zaWduZWQgaW50IHRpY2tzOwkJLyogcmVxdWVzdGVkIHJlc29sdXRpb24gaW4gdGlja3MgKi8KKysJdW5zaWduZWQgaW50IHF1ZXVlX3NpemU7CS8qIHRvdGFsIHNpemUgb2YgcXVldWUgKDMyLTEwMjQpICovCisrCXVuc2lnbmVkIGludCByZXNlcnZlZDA7CQkvKiByZXNlcnZlZCwgd2FzOiBmYWlsdXJlIGxvY2F0aW9ucyAqLworKwl1bnNpZ25lZCBpbnQgZmlsdGVyOwkJLyogZXZlbnQgZmlsdGVyIChiaXRtYXNrIG9mIFNORFJWX1RJTUVSX0VWRU5UXyopICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9zdGF0dXMgeworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wIC0gbGFzdCB1cGRhdGUgKi8KKysJdW5zaWduZWQgaW50IHJlc29sdXRpb247CS8qIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgaW50IGxvc3Q7CQkvKiBjb3VudGVyIG9mIG1hc3RlciB0aWNrIGxvc3QgKi8KKysJdW5zaWduZWQgaW50IG92ZXJydW47CQkvKiBjb3VudCBvZiByZWFkIHF1ZXVlIG92ZXJydW5zICovCisrCXVuc2lnbmVkIGludCBxdWV1ZTsJCS8qIHVzZWQgcXVldWUgc2l6ZSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUFZFUlNJT04JX0lPUignVCcsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX05FWFRfREVWSUNFCV9JT1dSKCdUJywgMHgwMSwgc3RydWN0IHNuZF90aW1lcl9pZCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1RSRUFECQlfSU9XKCdUJywgMHgwMiwgaW50KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR0lORk8JCV9JT1dSKCdUJywgMHgwMywgc3RydWN0IHNuZF90aW1lcl9naW5mbykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dQQVJBTVMJX0lPVygnVCcsIDB4MDQsIHN0cnVjdCBzbmRfdGltZXJfZ3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dTVEFUVVMJX0lPV1IoJ1QnLCAweDA1LCBzdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TRUxFQ1QJX0lPVygnVCcsIDB4MTAsIHN0cnVjdCBzbmRfdGltZXJfc2VsZWN0KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfSU5GTwkJX0lPUignVCcsIDB4MTEsIHN0cnVjdCBzbmRfdGltZXJfaW5mbykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BBUkFNUwlfSU9XKCdUJywgMHgxMiwgc3RydWN0IHNuZF90aW1lcl9wYXJhbXMpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVEFUVVMJX0lPUignVCcsIDB4MTQsIHN0cnVjdCBzbmRfdGltZXJfc3RhdHVzKQorKy8qIFRoZSBmb2xsb3dpbmcgZm91ciBpb2N0bHMgYXJlIGNoYW5nZWQgc2luY2UgMS4wLjkgZHVlIHRvIGNvbmZsaWN0aW9uICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVEFSVAkJX0lPKCdUJywgMHhhMCkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUT1AJCV9JTygnVCcsIDB4YTEpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9DT05USU5VRQlfSU8oJ1QnLCAweGEyKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFVU0UJCV9JTygnVCcsIDB4YTMpCisrCisrc3RydWN0IHNuZF90aW1lcl9yZWFkIHsKKysJdW5zaWduZWQgaW50IHJlc29sdXRpb247CisrCXVuc2lnbmVkIGludCB0aWNrczsKKyt9OworKworK2VudW0geworKwlTTkRSVl9USU1FUl9FVkVOVF9SRVNPTFVUSU9OID0gMCwJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9USUNLLAkJCS8qIHZhbCA9IHRpY2tzICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NUQVJULAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9TVE9QLAkJCS8qIHZhbCA9IDAgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfQ09OVElOVUUsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1BBVVNFLAkJLyogdmFsID0gMCAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9FQVJMWSwJCS8qIHZhbCA9IDAsIGVhcmx5IGV2ZW50ICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NVU1BFTkQsCQkvKiB2YWwgPSAwICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1JFU1VNRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKysJLyogbWFzdGVyIHRpbWVyIGV2ZW50cyBmb3Igc2xhdmUgdGltZXIgaW5zdGFuY2VzICovCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVEFSVCA9IFNORFJWX1RJTUVSX0VWRU5UX1NUQVJUICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVE9QID0gU05EUlZfVElNRVJfRVZFTlRfU1RPUCArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NQ09OVElOVUUgPSBTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NUEFVU0UgPSBTTkRSVl9USU1FUl9FVkVOVF9QQVVTRSArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NU1VTUEVORCA9IFNORFJWX1RJTUVSX0VWRU5UX1NVU1BFTkQgKyAxMCwKKysJU05EUlZfVElNRVJfRVZFTlRfTVJFU1VNRSA9IFNORFJWX1RJTUVSX0VWRU5UX1JFU1VNRSArIDEwLAorK307CisrCisrc3RydWN0IHNuZF90aW1lcl90cmVhZCB7CisrCWludCBldmVudDsKKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKysJdW5zaWduZWQgaW50IHZhbDsKKyt9OworKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGNvbnRyb2wgaW50ZXJmYWNlIC0gL2Rldi9zbmQvY29udHJvbD8gICAgICAgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9DVExfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCA3KQorKworK3N0cnVjdCBzbmRfY3RsX2NhcmRfaW5mbyB7CisrCWludCBjYXJkOwkJCS8qIGNhcmQgbnVtYmVyICovCisrCWludCBwYWQ7CQkJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAod2FzIHR5cGUpICovCisrCXVuc2lnbmVkIGNoYXIgaWRbMTZdOwkJLyogSUQgb2YgY2FyZCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIGRyaXZlclsxNl07CS8qIERyaXZlciBuYW1lICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVszMl07CQkvKiBTaG9ydCBuYW1lIG9mIHNvdW5kY2FyZCAqLworKwl1bnNpZ25lZCBjaGFyIGxvbmduYW1lWzgwXTsJLyogbmFtZSArIGluZm8gdGV4dCBhYm91dCBzb3VuZGNhcmQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZF9bMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgSUQgb2YgbWl4ZXIpICovCisrCXVuc2lnbmVkIGNoYXIgbWl4ZXJuYW1lWzgwXTsJLyogdmlzdWFsIG1peGVyIGlkZW50aWZpY2F0aW9uICovCisrCXVuc2lnbmVkIGNoYXIgY29tcG9uZW50c1sxMjhdOwkvKiBjYXJkIGNvbXBvbmVudHMgLyBmaW5lIGlkZW50aWZpY2F0aW9uLCBkZWxpbWl0ZWQgd2l0aCBvbmUgc3BhY2UgKEFDOTcgZXRjLi4pICovCisrfTsKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX2N0bF9lbGVtX3R5cGVfdDsKKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfTk9ORQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMCkgLyogaW52YWxpZCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9CT09MRUFOCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAxKSAvKiBib29sZWFuIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMikgLyogaW50ZWdlciB0eXBlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0VOVU1FUkFURUQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDMpIC8qIGVudW1lcmF0ZWQgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9CWVRFUwkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNCkgLyogYnl0ZSBhcnJheSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JRUM5NTgJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDUpIC8qIElFQzk1OCAoUy9QRElGKSBzZXR1cCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSNjQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDYpIC8qIDY0LWJpdCBpbnRlZ2VyIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfTEFTVAlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAorKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1faWZhY2VfdDsKKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0NBUkQJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAwKSAvKiBnbG9iYWwgY29udHJvbCAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfSFdERVAJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAxKSAvKiBoYXJkd2FyZSBkZXBlbmRlbnQgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9NSVhFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDIpIC8qIHZpcnR1YWwgbWl4ZXIgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9QQ00JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAzKSAvKiBQQ00gZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9SQVdNSURJCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNCkgLyogUmF3TWlkaSBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1RJTUVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNSkgLyogdGltZXIgZGV2aWNlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9TRVFVRU5DRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA2KSAvKiBzZXF1ZW5jZXIgY2xpZW50ICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9MQVNUCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgorKworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUQJCSgxPDwwKQorKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1dSSVRFCQkoMTw8MSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUJCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRHxTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUpCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVk9MQVRJTEUJCSgxPDwyKQkvKiBjb250cm9sIHZhbHVlIG1heSBiZSBjaGFuZ2VkIHdpdGhvdXQgYSBub3RpZmljYXRpb24gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19USU1FU1RBTVAJCSgxPDwzKQkvKiB3aGVuIHdhcyBjb250cm9sIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRAkJKDE8PDQpCS8qIFRMViByZWFkIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1dSSVRFCQkoMTw8NSkJLyogVExWIHdyaXRlIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQURXUklURQkoU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUpCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NPTU1BTkQJKDE8PDYpCS8qIFRMViBjb21tYW5kIGlzIHBvc3NpYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfSU5BQ1RJVkUJCSgxPDw4KQkvKiBjb250cm9sIGRvZXMgYWN0dWFsbHkgbm90aGluZywgYnV0IG1heSBiZSB1cGRhdGVkICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfTE9DSwkJKDE8PDkpCS8qIHdyaXRlIGxvY2sgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19PV05FUgkJKDE8PDEwKQkvKiB3cml0ZSBsb2NrIG93bmVyICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX0NBTExCQUNLCSgxPDwyOCkJLyoga2VybmVsIHVzZSBhIFRMViBjYWxsYmFjayAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1VTRVIJCSgxPDwyOSkgLyogdXNlciBzcGFjZSBlbGVtZW50ICovCisrLyogYml0cyAzMCBhbmQgMzEgYXJlIG9ic29sZXRlZCAoZm9yIGluZGlyZWN0IGFjY2VzcykgKi8KKysKKysvKiBmb3IgZnVydGhlciBkZXRhaWxzIHNlZSB0aGUgQUNQSSBhbmQgUENJIHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWNhdGlvbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QwCQkweDAwMDAJLyogZnVsbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QxCQkweDAxMDAJLyogcGFydGlhbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QyCQkweDAyMDAJLyogcGFydGlhbCBPbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzCQkweDAzMDAJLyogT2ZmICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDNob3QJCShTTkRSVl9DVExfUE9XRVJfRDN8MHgwMDAwKQkvKiBPZmYsIHdpdGggcG93ZXIgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2NvbGQJCShTTkRSVl9DVExfUE9XRVJfRDN8MHgwMDAxKQkvKiBPZmYsIHdpdGhvdXQgcG93ZXIgKi8KKysKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOCTQ0CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV9pZCB7CisrCXVuc2lnbmVkIGludCBudW1pZDsJCS8qIG51bWVyaWMgaWRlbnRpZmllciwgemVybyA9IGludmFsaWQgKi8KKysJc25kX2N0bF9lbGVtX2lmYWNlX3QgaWZhY2U7CS8qIGludGVyZmFjZSBpZGVudGlmaWVyICovCisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBkZXZpY2UvY2xpZW50IG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogc3ViZGV2aWNlIChzdWJzdHJlYW0pIG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOwkJLyogQVNDSUkgbmFtZSBvZiBpdGVtICovCisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIGluZGV4IG9mIGl0ZW0gKi8KKyt9OworKworK3N0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCB7CisrCXVuc2lnbmVkIGludCBvZmZzZXQ7CQkvKiBXOiBmaXJzdCBlbGVtZW50IElEIHRvIGdldCAqLworKwl1bnNpZ25lZCBpbnQgc3BhY2U7CQkvKiBXOiBjb3VudCBvZiBlbGVtZW50IElEcyB0byBnZXQgKi8KKysJdW5zaWduZWQgaW50IHVzZWQ7CQkvKiBSOiBjb3VudCBvZiBlbGVtZW50IElEcyBzZXQgKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogUjogY291bnQgb2YgYWxsIGVsZW1lbnRzICovCisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgX191c2VyICpwaWRzOyAvKiBSOiBJRHMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1MF07CisrfTsKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8geworKwlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkvKiBXOiBlbGVtZW50IElEICovCisrCXNuZF9jdGxfZWxlbV90eXBlX3QgdHlwZTsJLyogUjogdmFsdWUgdHlwZSAtIFNORFJWX0NUTF9FTEVNX1RZUEVfKiAqLworKwl1bnNpZ25lZCBpbnQgYWNjZXNzOwkJLyogUjogdmFsdWUgYWNjZXNzIChiaXRtYXNrKSAtIFNORFJWX0NUTF9FTEVNX0FDQ0VTU18qICovCisrCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIHZhbHVlcyAqLworKwlfX2tlcm5lbF9waWRfdCBvd25lcjsJCS8qIG93bmVyJ3MgUElEIG9mIHRoaXMgY29udHJvbCAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCWxvbmcgbWluOwkJLyogUjogbWluaW11bSB2YWx1ZSAqLworKwkJCWxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworKwkJCWxvbmcgc3RlcDsJCS8qIFI6IHN0ZXAgKDAgdmFyaWFibGUpICovCisrCQl9IGludGVnZXI7CisrCQlzdHJ1Y3QgeworKwkJCWxvbmcgbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCisrCQkJbG9uZyBsb25nIG1heDsJCS8qIFI6IG1heGltdW0gdmFsdWUgKi8KKysJCQlsb25nIGxvbmcgc3RlcDsJCS8qIFI6IHN0ZXAgKDAgdmFyaWFibGUpICovCisrCQl9IGludGVnZXI2NDsKKysJCXN0cnVjdCB7CisrCQkJdW5zaWduZWQgaW50IGl0ZW1zOwkvKiBSOiBudW1iZXIgb2YgaXRlbXMgKi8KKysJCQl1bnNpZ25lZCBpbnQgaXRlbTsJLyogVzogaXRlbSBudW1iZXIgKi8KKysJCQljaGFyIG5hbWVbNjRdOwkJLyogUjogdmFsdWUgbmFtZSAqLworKwkJCV9fdTY0IG5hbWVzX3B0cjsJLyogVzogbmFtZXMgbGlzdCAoRUxFTV9BREQgb25seSkgKi8KKysJCQl1bnNpZ25lZCBpbnQgbmFtZXNfbGVuZ3RoOworKwkJfSBlbnVtZXJhdGVkOworKwkJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjhdOworKwl9IHZhbHVlOworKwl1bmlvbiB7CisrCQl1bnNpZ25lZCBzaG9ydCBkWzRdOwkJLyogZGltZW5zaW9ucyAqLworKwkJdW5zaWduZWQgc2hvcnQgKmRfcHRyOwkJLyogaW5kaXJlY3QgLSBvYnNvbGV0ZWQgKi8KKysJfSBkaW1lbjsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NC00KnNpemVvZih1bnNpZ25lZCBzaG9ydCldOworK307CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSB7CisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKysJdW5zaWduZWQgaW50IGluZGlyZWN0OiAxOwkvKiBXOiBpbmRpcmVjdCBhY2Nlc3MgLSBvYnNvbGV0ZWQgKi8KKysJdW5pb24geworKwkJdW5pb24geworKwkJCWxvbmcgdmFsdWVbMTI4XTsKKysJCQlsb25nICp2YWx1ZV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBpbnRlZ2VyOworKwkJdW5pb24geworKwkJCWxvbmcgbG9uZyB2YWx1ZVs2NF07CisrCQkJbG9uZyBsb25nICp2YWx1ZV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBpbnRlZ2VyNjQ7CisrCQl1bmlvbiB7CisrCQkJdW5zaWduZWQgaW50IGl0ZW1bMTI4XTsKKysJCQl1bnNpZ25lZCBpbnQgKml0ZW1fcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKysJCX0gZW51bWVyYXRlZDsKKysJCXVuaW9uIHsKKysJCQl1bnNpZ25lZCBjaGFyIGRhdGFbNTEyXTsKKysJCQl1bnNpZ25lZCBjaGFyICpkYXRhX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGJ5dGVzOworKwkJc3RydWN0IHNuZF9hZXNfaWVjOTU4IGllYzk1ODsKKysJfSB2YWx1ZTsJCS8qIFJPICovCisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTI4LXNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsKKyt9OworKworK3N0cnVjdCBzbmRfY3RsX3RsdiB7CisrCXVuc2lnbmVkIGludCBudW1pZDsJLyogY29udHJvbCBlbGVtZW50IG51bWVyaWMgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgaW50IGxlbmd0aDsJLyogaW4gYnl0ZXMgYWxpZ25lZCB0byA0ICovCisrCXVuc2lnbmVkIGludCB0bHZbMF07CS8qIGZpcnN0IFRMViAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUFZFUlNJT04JX0lPUignVScsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9DQVJEX0lORk8JX0lPUignVScsIDB4MDEsIHN0cnVjdCBzbmRfY3RsX2NhcmRfaW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xJU1QJX0lPV1IoJ1UnLCAweDEwLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2xpc3QpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9JTkZPCV9JT1dSKCdVJywgMHgxMSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVBRAlfSU9XUignVScsIDB4MTIsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9XUklURQlfSU9XUignVScsIDB4MTMsIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9MT0NLCV9JT1coJ1UnLCAweDE0LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fVU5MT0NLCV9JT1coJ1UnLCAweDE1LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1NVQlNDUklCRV9FVkVOVFMgX0lPV1IoJ1UnLCAweDE2LCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9BREQJX0lPV1IoJ1UnLCAweDE3LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRVBMQUNFCV9JT1dSKCdVJywgMHgxOCwgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVNT1ZFCV9JT1dSKCdVJywgMHgxOSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfUkVBRAlfSU9XUignVScsIDB4MWEsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfV1JJVEUJX0lPV1IoJ1UnLCAweDFiLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX0NPTU1BTkQJX0lPV1IoJ1UnLCAweDFjLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfSFdERVBfTkVYVF9ERVZJQ0UgX0lPV1IoJ1UnLCAweDIwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfSFdERVBfSU5GTwlfSU9SKCdVJywgMHgyMSwgc3RydWN0IHNuZF9od2RlcF9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9ORVhUX0RFVklDRQlfSU9SKCdVJywgMHgzMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9JTkZPCV9JT1dSKCdVJywgMHgzMSwgc3RydWN0IHNuZF9wY21faW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fUFJFRkVSX1NVQkRFVklDRSBfSU9XKCdVJywgMHgzMiwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfTkVYVF9ERVZJQ0UgX0lPV1IoJ1UnLCAweDQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9JTkZPCV9JT1dSKCdVJywgMHg0MSwgc3RydWN0IHNuZF9yYXdtaWRpX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDQyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVIJCV9JT1dSKCdVJywgMHhkMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BPV0VSX1NUQVRFCV9JT1IoJ1UnLCAweGQxLCBpbnQpCisrCisrLyoKKysgKiAgUmVhZCBpbnRlcmZhY2UuCisrICovCisrCisrZW51bSBzbmRydl9jdGxfZXZlbnRfdHlwZSB7CisrCVNORFJWX0NUTF9FVkVOVF9FTEVNID0gMCwKKysJU05EUlZfQ1RMX0VWRU5UX0xBU1QgPSBTTkRSVl9DVExfRVZFTlRfRUxFTSwKKyt9OworKworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUJKDE8PDApCS8qIGVsZW1lbnQgdmFsdWUgd2FzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX0lORk8JKDE8PDEpCS8qIGVsZW1lbnQgaW5mbyB3YXMgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfQURECSgxPDwyKQkvKiBlbGVtZW50IHdhcyBhZGRlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfVExWCSgxPDwzKQkvKiBlbGVtZW50IFRMViB0cmVlIHdhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19SRU1PVkUJKH4wVSkJLyogZWxlbWVudCB3YXMgcmVtb3ZlZCAqLworKworK3N0cnVjdCBzbmRfY3RsX2V2ZW50IHsKKysJaW50IHR5cGU7CS8qIGV2ZW50IHR5cGUgLSBTTkRSVl9DVExfRVZFTlRfKiAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCXVuc2lnbmVkIGludCBtYXNrOworKwkJCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CisrCQl9IGVsZW07CisrCQl1bnNpZ25lZCBjaGFyIGRhdGE4WzYwXTsKKysJfSBkYXRhOworK307CisrCisrLyoKKysgKiAgQ29udHJvbCBuYW1lcworKyAqLworKworKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfTk9ORQkJCQkiIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfUExBWUJBQ0sJCQkJIlBsYXliYWNrICIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0NBUFRVUkUJCQkJIkNhcHR1cmUgIgorKworKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X05PTkUJCQkiIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1NXSVRDSAkJCSJTd2l0Y2giCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfVk9MVU1FCQkJIlZvbHVtZSIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9ERUZBVUxUCQkJIkRlZmF1bHQiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTUFTSwkJCSJNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0NPTl9NQVNLCQkJIkNvbiBNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1BST19NQVNLCQkJIlBybyBNYXNrIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1BDTV9TVFJFQU0JCSJQQ00gU3RyZWFtIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4KGV4cGwsZGlyZWN0aW9uLHdoYXQpCSJJRUM5NTggIiBleHBsIFNORFJWX0NUTF9OQU1FXyMjZGlyZWN0aW9uIFNORFJWX0NUTF9OQU1FX0lFQzk1OF8jI3doYXQKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX0FTT1VORF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjg0NzFmNDA0CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmgKK0BAIC0wLDAgKzEsMTM1IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrI2lmbmRlZiBfX1NPVU5EX0FTT1VORF9GTV9ICisrI2RlZmluZSBfX1NPVU5EX0FTT1VORF9GTV9ICisrCisrLyoKKysgKiAgQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlIC0gQUxTQQorKyAqCisrICogIEludGVyZmFjZSBmaWxlIGJldHdlZW4gQUxTQSBkcml2ZXIgJiB1c2VyIHNwYWNlCisrICogIENvcHlyaWdodCAoYykgMTk5NC05OCBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIDRGcm9udCBUZWNobm9sb2dpZXMKKysgKgorKyAqICBEaXJlY3QgRk0gY29udHJvbAorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorKyAqCisrICovCisrCisrI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDIJMHgwMAorKyNkZWZpbmUgU05EUlZfRE1fRk1fTU9ERV9PUEwzCTB4MDEKKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8geworKwl1bnNpZ25lZCBjaGFyIGZtX21vZGU7CQkvKiBPUEwgbW9kZSwgc2VlIFNORFJWX0RNX0ZNX01PREVfWFhYICovCisrCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIGZsYWcgKi8KKyt9OworKworKy8qCisrICogIERhdGEgc3RydWN0dXJlIGNvbXBvc2luZyBhbiBGTSAibm90ZSIgb3Igc291bmQgZXZlbnQuCisrICovCisrCisrc3RydWN0IHNuZF9kbV9mbV92b2ljZSB7CisrCXVuc2lnbmVkIGNoYXIgb3A7CQkvKiBvcGVyYXRvciBjZWxsICgwIG9yIDEpICovCisrCXVuc2lnbmVkIGNoYXIgdm9pY2U7CQkvKiBGTSB2b2ljZSAoMCB0byAxNykgKi8KKysKKysJdW5zaWduZWQgY2hhciBhbTsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uICovCisrCXVuc2lnbmVkIGNoYXIgdmlicmF0bzsJCS8qIHZpYnJhdG8gZWZmZWN0ICovCisrCXVuc2lnbmVkIGNoYXIgZG9fc3VzdGFpbjsJLyogc3VzdGFpbiBwaGFzZSAqLworKwl1bnNpZ25lZCBjaGFyIGtiZF9zY2FsZTsJLyoga2V5Ym9hcmQgc2NhbGluZyAqLworKwl1bnNpZ25lZCBjaGFyIGhhcm1vbmljOwkJLyogNCBiaXRzOiBoYXJtb25pYyBhbmQgbXVsdGlwbGllciAqLworKwl1bnNpZ25lZCBjaGFyIHNjYWxlX2xldmVsOwkvKiAyIGJpdHM6IGRlY3JlYXNlIG91dHB1dCBmcmVxIHJpc2VzICovCisrCXVuc2lnbmVkIGNoYXIgdm9sdW1lOwkJLyogNiBiaXRzOiB2b2x1bWUgKi8KKysKKysJdW5zaWduZWQgY2hhciBhdHRhY2s7CQkvKiA0IGJpdHM6IGF0dGFjayByYXRlICovCisrCXVuc2lnbmVkIGNoYXIgZGVjYXk7CQkvKiA0IGJpdHM6IGRlY2F5IHJhdGUgKi8KKysJdW5zaWduZWQgY2hhciBzdXN0YWluOwkJLyogNCBiaXRzOiBzdXN0YWluIGxldmVsICovCisrCXVuc2lnbmVkIGNoYXIgcmVsZWFzZTsJCS8qIDQgYml0czogcmVsZWFzZSByYXRlICovCisrCisrCXVuc2lnbmVkIGNoYXIgZmVlZGJhY2s7CQkvKiAzIGJpdHM6IGZlZWRiYWNrIGZvciBvcDAgKi8KKysJdW5zaWduZWQgY2hhciBjb25uZWN0aW9uOwkvKiAwIGZvciBzZXJpYWwsIDEgZm9yIHBhcmFsbGVsICovCisrCXVuc2lnbmVkIGNoYXIgbGVmdDsJCS8qIHN0ZXJlbyBsZWZ0ICovCisrCXVuc2lnbmVkIGNoYXIgcmlnaHQ7CQkvKiBzdGVyZW8gcmlnaHQgKi8KKysJdW5zaWduZWQgY2hhciB3YXZlZm9ybTsJCS8qIDMgYml0czogd2F2ZWZvcm0gc2hhcGUgKi8KKyt9OworKworKy8qCisrICogIFRoaXMgZGVzY3JpYmVzIGFuIEZNIG5vdGUgYnkgaXRzIHZvaWNlLCBvY3RhdmUsIGZyZXF1ZW5jeSBudW1iZXIgKDEwYml0KQorKyAqICBhbmQga2V5IG9uL29mZi4KKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX25vdGUgeworKwl1bnNpZ25lZCBjaGFyIHZvaWNlOwkvKiAwLTE3IHZvaWNlIGNoYW5uZWwgKi8KKysJdW5zaWduZWQgY2hhciBvY3RhdmU7CS8qIDMgYml0czogd2hhdCBvY3RhdmUgdG8gcGxheSAqLworKwl1bnNpZ25lZCBpbnQgZm51bTsJLyogMTAgYml0czogZnJlcXVlbmN5IG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIGtleV9vbjsJLyogc2V0IGZvciBhY3RpdmUsIGNsZWFyIGZvciBzaWxlbnQgKi8KKyt9OworKworKy8qCisrICogIEZNIHBhcmFtZXRlcnMgdGhhdCBhcHBseSBnbG9iYWxseSB0byBhbGwgdm9pY2VzLCBhbmQgdGh1cyBhcmUgbm90ICJub3RlcyIKKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX3BhcmFtcyB7CisrCXVuc2lnbmVkIGNoYXIgYW1fZGVwdGg7CQkvKiBhbXBsaXR1ZGUgbW9kdWxhdGlvbiBkZXB0aCAoMT1oaSkgKi8KKysJdW5zaWduZWQgY2hhciB2aWJfZGVwdGg7CS8qIHZpYnJhdG8gZGVwdGggKDE9aGkpICovCisrCXVuc2lnbmVkIGNoYXIga2JkX3NwbGl0OwkvKiBrZXlib2FyZCBzcGxpdCAqLworKwl1bnNpZ25lZCBjaGFyIHJoeXRobTsJCS8qIHBlcmN1c3Npb24gbW9kZSBzZWxlY3QgKi8KKysKKysJLyogVGhpcyBibG9jayBpcyB0aGUgcGVyY3Vzc2lvbiBpbnN0cnVtZW50IGRhdGEgKi8KKysJdW5zaWduZWQgY2hhciBiYXNzOworKwl1bnNpZ25lZCBjaGFyIHNuYXJlOworKwl1bnNpZ25lZCBjaGFyIHRvbXRvbTsKKysJdW5zaWduZWQgY2hhciBjeW1iYWw7CisrCXVuc2lnbmVkIGNoYXIgaGloYXQ7CisrfTsKKysKKysvKgorKyAqICBGTSBtb2RlIGlvY3RsIHNldHRpbmdzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9JTkZPCQlfSU9SKCdIJywgMHgyMCwgc3RydWN0IHNuZF9kbV9mbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfUkVTRVQJCV9JTyAoJ0gnLCAweDIxKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfUExBWV9OT1RFCV9JT1coJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2RtX2ZtX25vdGUpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfVk9JQ0UJX0lPVygnSCcsIDB4MjMsIHN0cnVjdCBzbmRfZG1fZm1fdm9pY2UpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfUEFSQU1TCV9JT1coJ0gnLCAweDI0LCBzdHJ1Y3Qgc25kX2RtX2ZtX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9NT0RFCV9JT1coJ0gnLCAweDI1LCBpbnQpCisrLyogZm9yIE9QTDMgb25seSAqLworKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX0NPTk5FQ1RJT04JX0lPVygnSCcsIDB4MjYsIGludCkKKysvKiBTQkkgcGF0Y2ggbWFuYWdlbWVudCAqLworKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfQ0xFQVJfUEFUQ0hFUwlfSU8gKCdIJywgMHg0MCkKKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9SRVNFVAkJMHgyMAorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1BMQVlfTk9URQkJMHgyMQorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9WT0lDRQkJMHgyMgorKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9QQVJBTVMJMHgyMworKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9NT0RFCQkweDI0CisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX09QTAkJMHgyNQorKworKy8qCisrICogUGF0Y2ggUmVjb3JkIC0gZml4ZWQgc2l6ZSBmb3Igd3JpdGUKKysgKi8KKysKKysjZGVmaW5lIEZNX0tFWV9TQkkJIlNCSVwwMzIiCisrI2RlZmluZSBGTV9LRVlfMk9QCSIyT1BcMDMyIgorKyNkZWZpbmUgRk1fS0VZXzRPUAkiNE9QXDAzMiIKKysKKytzdHJ1Y3Qgc2JpX3BhdGNoIHsKKysJdW5zaWduZWQgY2hhciBwcm9nOworKwl1bnNpZ25lZCBjaGFyIGJhbms7CisrCWNoYXIga2V5WzRdOworKwljaGFyIG5hbWVbMjVdOworKwljaGFyIGV4dGVuc2lvbls3XTsKKysJdW5zaWduZWQgY2hhciBkYXRhWzMyXTsKKyt9OworKworKyNlbmRpZiAvKiBfX1NPVU5EX0FTT1VORF9GTV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYzExNTBlNGQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKK0BAIC0wLDAgKzEsMzk1IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQ29weXJpZ2h0IChjKSBieSBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PiwKKysgKgkJICAgICBDcmVhdGl2ZSBMYWJzLCBJbmMuCisrICogIERlZmluaXRpb25zIGZvciBFTVUxMEsxIChTQiBMaXZlISkgY2hpcHMKKysgKgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorKyAqCisrICovCisrI2lmbmRlZiBfVUFQSV9fU09VTkRfRU1VMTBLMV9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfRU1VMTBLMV9ICisrCisrLyoKKysgKiAtLS0tIEZYODAxMCAtLS0tCisrICovCisrCisrI2RlZmluZSBFTVUxMEsxX0NBUkRfQ1JFQVRJVkUJCQkweDAwMDAwMDAwCisrI2RlZmluZSBFTVUxMEsxX0NBUkRfRU1VQVBTCQkJMHgwMDAwMDAwMQorKworKyNkZWZpbmUgRU1VMTBLMV9GWDgwMTBfUENNX0NPVU5UCQk4CisrCisrLyoKKysgKiBGb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBjb3BpZWQgZnJvbSBsaW51eC90eXBlcy5oIHRvIHN1cHBvcnQgY29tcGlsaW5nCisrICogdGhpcyBoZWFkZXIgZmlsZSBpbiB1c2Vyc3BhY2Ugc2luY2UgdGhleSBhcmUgbm90IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yCisrICogdWFwaSBoZWFkZXJzLgorKyAqLworKyNkZWZpbmUgX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKG5hbWUsYml0cykgXAorKwl1bnNpZ25lZCBsb25nIG5hbWVbKGJpdHMpIC8gKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpXQorKworKy8qIGluc3RydWN0aW9uIHNldCAqLworKyNkZWZpbmUgaU1BQzAJIDB4MDAJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDMQkgMHgwMQkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUMyCSAweDAyCS8qIFIgPSBBICsgKFggKiBZID4+IDMxKSAgIDsgd3JhcGFyb3VuZCAqLworKyNkZWZpbmUgaU1BQzMJIDB4MDMJLyogUiA9IEEgKyAoLVggKiBZID4+IDMxKSAgOyB3cmFwYXJvdW5kICovCisrI2RlZmluZSBpTUFDSU5UMCAweDA0CS8qIFIgPSBBICsgWCAqIFkJICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDSU5UMSAweDA1CS8qIFIgPSBBICsgWCAqIFkJICAgOyB3cmFwYXJvdW5kICgzMS1iaXQpICovCisrI2RlZmluZSBpQUNDMwkgMHgwNgkvKiBSID0gQSArIFggKyBZCSAgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaU1BQ01WICAgMHgwNwkvKiBSID0gQSwgYWNjICs9IFggKiBZID4+IDMxICovCisrI2RlZmluZSBpQU5EWE9SICAweDA4CS8qIFIgPSAoQSAmIFgpIF4gWSAqLworKyNkZWZpbmUgaVRTVE5FRyAgMHgwOQkvKiBSID0gKEEgPj0gWSkgPyBYIDogflggKi8KKysjZGVmaW5lIGlMSU1JVEdFIDB4MGEJLyogUiA9IChBID49IFkpID8gWCA6IFkgKi8KKysjZGVmaW5lIGlMSU1JVExUIDB4MGIJLyogUiA9IChBIDwgWSkgPyBYIDogWSAqLworKyNkZWZpbmUgaUxPRwkgMHgwYwkvKiBSID0gbGluZWFyX2RhdGEsIEEgKGxvZ19kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworKyNkZWZpbmUgaUVYUAkgMHgwZAkvKiBSID0gbG9nX2RhdGEsIEEgKGxpbmVhcl9kYXRhKSwgWCAobWF4X2V4cCksIFkgKGZvcm1hdF93b3JkKSAqLworKyNkZWZpbmUgaUlOVEVSUCAgMHgwZQkvKiBSID0gQSArIChYICogKFkgLSBBKSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaVNLSVAgICAgMHgwZgkvKiBSID0gQSAoY2NfcmVnKSwgWCAoY291bnQpLCBZIChjY190ZXN0KSAqLworKworKy8qIEdQUnMgKi8KKysjZGVmaW5lIEZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKysjZGVmaW5lIEVYVElOKHgpCSgweDEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgKi8KKysjZGVmaW5lIEVYVE9VVCh4KQkoMHgyMCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIG91dHMgLT4gRlhXQyBsb3cgMTYgYml0cyAqLworKyNkZWZpbmUgRlhCVVMyKHgpCSgweDMwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgY29waWVzIG9mIGZ4IGJ1c2VzIGZvciBjYXB0dXJlIC0+IEZYV0MgaGlnaCAxNiBiaXRzICovCisrCQkJCQkvKiBOQjogMHgzMSBhbmQgMHgzMiBhcmUgc2hhcmVkIHdpdGggQ2VudGVyL0xGRSBvbiBTQiBsaXZlIDUuMSAqLworKworKyNkZWZpbmUgQ18wMDAwMDAwMAkweDQwCisrI2RlZmluZSBDXzAwMDAwMDAxCTB4NDEKKysjZGVmaW5lIENfMDAwMDAwMDIJMHg0MgorKyNkZWZpbmUgQ18wMDAwMDAwMwkweDQzCisrI2RlZmluZSBDXzAwMDAwMDA0CTB4NDQKKysjZGVmaW5lIENfMDAwMDAwMDgJMHg0NQorKyNkZWZpbmUgQ18wMDAwMDAxMAkweDQ2CisrI2RlZmluZSBDXzAwMDAwMDIwCTB4NDcKKysjZGVmaW5lIENfMDAwMDAxMDAJMHg0OAorKyNkZWZpbmUgQ18wMDAxMDAwMAkweDQ5CisrI2RlZmluZSBDXzAwMDgwMDAwCTB4NGEKKysjZGVmaW5lIENfMTAwMDAwMDAJMHg0YgorKyNkZWZpbmUgQ18yMDAwMDAwMAkweDRjCisrI2RlZmluZSBDXzQwMDAwMDAwCTB4NGQKKysjZGVmaW5lIENfODAwMDAwMDAJMHg0ZQorKyNkZWZpbmUgQ183ZmZmZmZmZgkweDRmCisrI2RlZmluZSBDX2ZmZmZmZmZmCTB4NTAKKysjZGVmaW5lIENfZmZmZmZmZmUJMHg1MQorKyNkZWZpbmUgQ19jMDAwMDAwMAkweDUyCisrI2RlZmluZSBDXzRmMWJiY2RjCTB4NTMKKysjZGVmaW5lIENfNWE3ZWY5ZGIJMHg1NAorKyNkZWZpbmUgQ18wMDEwMDAwMAkweDU1CQkvKiA/PyAqLworKyNkZWZpbmUgR1BSX0FDQ1UJMHg1NgkJLyogQUNDVU0sIGFjY3VtdWxhdG9yICovCisrI2RlZmluZSBHUFJfQ09ORAkweDU3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworKyNkZWZpbmUgR1BSX05PSVNFMAkweDU4CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEdQUl9OT0lTRTEJMHg1OQkJLyogbm9pc2Ugc291cmNlICovCisrI2RlZmluZSBHUFJfSVJRCQkweDVhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEdQUl9EQkFDCTB4NWIJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgKi8KKysjZGVmaW5lIEdQUih4KQkJKEZYR1BSRUdCQVNFICsgKHgpKSAvKiBmcmVlIEdQUnM6IHggPSAweDAwIC0gMHhmZiAqLworKyNkZWZpbmUgSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCisrI2RlZmluZSBFVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKysjZGVmaW5lIElUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHg3ZiAqLworKyNkZWZpbmUgRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHg4MCArICh4KSkgLyogeCA9IDB4MDAgLSAweDFmICovCisrCisrI2RlZmluZSBBX0lUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworKyNkZWZpbmUgQV9FVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKysjZGVmaW5lIEFfSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCisrI2RlZmluZSBBX0VUUkFNX0FERFIoeCkJKFRBTktNRU1BRERSUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworKyNkZWZpbmUgQV9JVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKysjZGVmaW5lIEFfRVRSQU1fQ1RMKHgpCShBX1RBTktNRU1DVExSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCisrCisrI2RlZmluZSBBX0ZYQlVTKHgpCSgweDAwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgRlggYnVzZXMgKi8KKysjZGVmaW5lIEFfRVhUSU4oeCkJKDB4NDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwaHlzaWNhbCBpbnMgKi8KKysjZGVmaW5lIEFfUDE2VklOKHgpCSgweDUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcDE2diBpbnMgKEEyIG9ubHkpICJFTVUzMiBpbnB1dHMiICovCisrI2RlZmluZSBBX0VYVE9VVCh4KQkoMHg2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIHBoeXNpY2FsIG91dHMgLT4gQV9GWFdDMSAweDc5LTdmIHVua25vd24gICAqLworKyNkZWZpbmUgQV9GWEJVUzIoeCkJKDB4ODAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgxZiBleHRyYSBvdXRzIHVzZWQgZm9yIEVGWCBjYXB0dXJlIC0+IEFfRlhXQzIgKi8KKysjZGVmaW5lIEFfRU1VMzJPVVRIKHgpCSgweGEwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xMCAtIF8xRiIgLSA/Pz8gKi8KKysjZGVmaW5lIEFfRU1VMzJPVVRMKHgpCSgweGIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8xIC0gX0YiIC0gPz8/ICovCisrI2RlZmluZSBBM19FTVUzMklOKHgpCSgweDE2MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDNmICJFTVUzMl9JTl8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworKyNkZWZpbmUgQTNfRU1VMzJPVVQoeCkJKDB4MUUwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgIkVNVTMyX09VVF8wMCAtIF8zRiIgLSBPbmx5IHdoZW4gLmRldmljZSA9IDB4MDAwOCAqLworKyNkZWZpbmUgQV9HUFIoeCkJKEFfRlhHUFJFR0JBU0UgKyAoeCkpCisrCisrLyogY2NfcmVnIGNvbnN0YW50cyAqLworKyNkZWZpbmUgQ0NfUkVHX05PUk1BTElaRUQgQ18wMDAwMDAwMQorKyNkZWZpbmUgQ0NfUkVHX0JPUlJPVwlDXzAwMDAwMDAyCisrI2RlZmluZSBDQ19SRUdfTUlOVVMJQ18wMDAwMDAwNAorKyNkZWZpbmUgQ0NfUkVHX1pFUk8JQ18wMDAwMDAwOAorKyNkZWZpbmUgQ0NfUkVHX1NBVFVSQVRFCUNfMDAwMDAwMTAKKysjZGVmaW5lIENDX1JFR19OT05aRVJPCUNfMDAwMDAxMDAKKysKKysvKiBGWCBidXNlcyAqLworKyNkZWZpbmUgRlhCVVNfUENNX0xFRlQJCTB4MDAKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVAkJMHgwMQorKyNkZWZpbmUgRlhCVVNfUENNX0xFRlRfUkVBUgkweDAyCisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfUkVBUgkweDAzCisrI2RlZmluZSBGWEJVU19NSURJX0xFRlQJCTB4MDQKKysjZGVmaW5lIEZYQlVTX01JRElfUklHSFQJMHgwNQorKyNkZWZpbmUgRlhCVVNfUENNX0NFTlRFUgkweDA2CisrI2RlZmluZSBGWEJVU19QQ01fTEZFCQkweDA3CisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9GUk9OVAkweDA4CisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfRlJPTlQJMHgwOQorKyNkZWZpbmUgRlhCVVNfTUlESV9SRVZFUkIJMHgwYworKyNkZWZpbmUgRlhCVVNfTUlESV9DSE9SVVMJMHgwZAorKyNkZWZpbmUgRlhCVVNfUENNX0xFRlRfU0lERQkweDBlCisrI2RlZmluZSBGWEJVU19QQ01fUklHSFRfU0lERQkweDBmCisrI2RlZmluZSBGWEJVU19QVF9MRUZUCQkweDE0CisrI2RlZmluZSBGWEJVU19QVF9SSUdIVAkJMHgxNQorKworKy8qIElucHV0cyAqLworKyNkZWZpbmUgRVhUSU5fQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fQUM5N19SCSAgIDB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX1NQRElGX0NEX0wgICAweDAyCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9TUERJRl9DRF9SICAgMHgwMwkvKiBpbnRlcm5hbCBTL1BESUYgQ0QgLSBvbmJvYXJkIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX1pPT01fTAkgICAweDA0CS8qIFpvb20gVmlkZW8gSTJTIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fWk9PTV9SCSAgIDB4MDUJLyogWm9vbSBWaWRlbyBJMlMgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fVE9TTElOS19MCSAgIDB4MDYJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fVE9TTElOS19SICAgIDB4MDcJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUxX0wJICAgMHgwOAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAxIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fTElORTFfUgkgICAweDA5CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fQ09BWF9TUERJRl9MIDB4MGEJLyogTGl2ZURyaXZlIC0gQ29heGlhbCBTL1BESUYgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX1IgMHgwYiAvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9MSU5FMl9MCSAgIDB4MGMJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMiAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUyX1IJICAgMHgwZAkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gcmlnaHQgKi8KKysKKysvKiBPdXRwdXRzICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19MCSAgIDB4MDAJLyogQUMnOTcgcGxheWJhY2sgY2hhbm5lbCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9UT1NMSU5LX0wgICAweDAyCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9UT1NMSU5LX1IgICAweDAzCS8qIExpdmVEcml2ZSAtIFRPU0xpbmsgT3B0aWNhbCAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19DRU5URVIgMHgwNAkvKiBTQiBMaXZlIDUuMSAtIGNlbnRlciAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfTEZFCSAgIDB4MDUgLyogU0IgTGl2ZSA1LjEgLSBMRkUgKi8KKysjZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfTCAweDA2CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9IRUFEUEhPTkVfUiAweDA3CS8qIExpdmVEcml2ZSAtIEhlYWRwaG9uZSAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfUkVBUl9MCSAgIDB4MDgJLyogUmVhciBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX1JFQVJfUgkgICAweDA5CS8qIFJlYXIgY2hhbm5lbCAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfQURDX0NBUF9MICAgMHgwYQkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfQURDX0NBUF9SICAgMHgwYgkvKiBBREMgQ2FwdHVyZSBidWZmZXIgLSByaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX01JQ19DQVAJICAgMHgwYwkvKiBNSUMgQ2FwdHVyZSBidWZmZXIgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfTCAweDBkCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBMZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19SRUFSX1IgMHgwZQkvKiBTQiBMaXZlIDUuMSAoYykgMjAwMyAtIFJlYXIgUmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQ0VOVEVSCSAgIDB4MTEgLyogQW5hbG9nIENlbnRlciAqLworKyNkZWZpbmUgRVhUT1VUX0FMRkUJICAgMHgxMiAvKiBBbmFsb2cgTEZFICovCisrCisrLyogQXVkaWd5IElucHV0cyAqLworKyNkZWZpbmUgQV9FWFRJTl9BQzk3X0wJCTB4MDAJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9BQzk3X1IJCTB4MDEJLyogQUMnOTcgY2FwdHVyZSBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fU1BESUZfQ0RfTAkweDAyCS8qIGRpZ2l0YWwgQ0QgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9SCTB4MDMJLyogZGlnaXRhbCBDRCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9MICAgICAweDA0ICAgIC8qIGF1ZGlneSBkcml2ZSBPcHRpY2FsIFNQRElGIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9PUFRfU1BESUZfUiAgICAgMHgwNSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovIAorKyNkZWZpbmUgQV9FWFRJTl9MSU5FMl9MCQkweDA4CS8qIGF1ZGlneSBkcml2ZSBsaW5lMi9taWMyIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9MSU5FMl9SCQkweDA5CS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQURDX0wJCTB4MGEgICAgLyogUGhpbGlwcyBBREMgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FEQ19SCQkweDBiICAgIC8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQVVYMl9MCQkweDBjCS8qIGF1ZGlneSBkcml2ZSBhdXgyIC0gbGVmdCAqLworKyNkZWZpbmUgQV9FWFRJTl9BVVgyX1IJCTB4MGQJLyogICAgICAgICAgICAgICAgICAgLSByaWdodCAqLworKworKy8qIEF1ZGlnaXkgT3V0cHV0cyAqLworKyNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfTAkweDAwCS8qIGRpZ2l0YWwgZnJvbnQgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfRlJPTlRfUgkweDAxCS8qICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0NFTlRFUgkJMHgwMgkvKiBkaWdpdGFsIGZyb250IGNlbnRlciAqLworKyNkZWZpbmUgQV9FWFRPVVRfTEZFCQkweDAzCS8qIGRpZ2l0YWwgZnJvbnQgbGZlICovCisrI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfTAkweDA0CS8qIGhlYWRwaG9uZSBhdWRpZ3kgZHJpdmUgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfSEVBRFBIT05FX1IJMHgwNQkvKiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ICovCisrI2RlZmluZSBBX0VYVE9VVF9SRUFSX0wJCTB4MDYJLyogZGlnaXRhbCByZWFyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX1JFQVJfUgkJMHgwNwkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9MCTB4MDgJLyogYW5hbG9nIGZyb250IGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FGUk9OVF9SCTB4MDkJLyogICAgICAgICAgICAgIHJpZ2h0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BQ0VOVEVSCTB4MGEJLyogYW5hbG9nIGNlbnRlciAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUxGRQkJMHgwYgkvKiBhbmFsb2cgTEZFICovCisrI2RlZmluZSBBX0VYVE9VVF9BU0lERV9MCTB4MGMJLyogYW5hbG9nIHNpZGUgbGVmdCAgLSBBdWRpZ3kgMiBaUyAqLworKyNkZWZpbmUgQV9FWFRPVVRfQVNJREVfUgkweDBkCS8qICAgICAgICAgICAgIHJpZ2h0IC0gQXVkaWd5IDIgWlMgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FSRUFSX0wJMHgwZQkvKiBhbmFsb2cgcmVhciBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BUkVBUl9SCTB4MGYJLyogICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FDOTdfTAkJMHgxMAkvKiBBQzk3IGxlZnQgKGZyb250KSAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUM5N19SCQkweDExCS8qICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfTAkweDE2CS8qIEFEQyBjYXB0dXJlIGJ1ZmZlciBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9BRENfQ0FQX1IJMHgxNwkvKiAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX01JQ19DQVAJMHgxOAkvKiBNaWMgY2FwdHVyZSBidWZmZXIgKi8KKysKKysvKiBBdWRpZ3kgY29uc3RhbnRzICovCisrI2RlZmluZSBBX0NfMDAwMDAwMDAJMHhjMAorKyNkZWZpbmUgQV9DXzAwMDAwMDAxCTB4YzEKKysjZGVmaW5lIEFfQ18wMDAwMDAwMgkweGMyCisrI2RlZmluZSBBX0NfMDAwMDAwMDMJMHhjMworKyNkZWZpbmUgQV9DXzAwMDAwMDA0CTB4YzQKKysjZGVmaW5lIEFfQ18wMDAwMDAwOAkweGM1CisrI2RlZmluZSBBX0NfMDAwMDAwMTAJMHhjNgorKyNkZWZpbmUgQV9DXzAwMDAwMDIwCTB4YzcKKysjZGVmaW5lIEFfQ18wMDAwMDEwMAkweGM4CisrI2RlZmluZSBBX0NfMDAwMTAwMDAJMHhjOQorKyNkZWZpbmUgQV9DXzAwMDAwODAwCTB4Y2EKKysjZGVmaW5lIEFfQ18xMDAwMDAwMAkweGNiCisrI2RlZmluZSBBX0NfMjAwMDAwMDAJMHhjYworKyNkZWZpbmUgQV9DXzQwMDAwMDAwCTB4Y2QKKysjZGVmaW5lIEFfQ184MDAwMDAwMAkweGNlCisrI2RlZmluZSBBX0NfN2ZmZmZmZmYJMHhjZgorKyNkZWZpbmUgQV9DX2ZmZmZmZmZmCTB4ZDAKKysjZGVmaW5lIEFfQ19mZmZmZmZmZQkweGQxCisrI2RlZmluZSBBX0NfYzAwMDAwMDAJMHhkMgorKyNkZWZpbmUgQV9DXzRmMWJiY2RjCTB4ZDMKKysjZGVmaW5lIEFfQ181YTdlZjlkYgkweGQ0CisrI2RlZmluZSBBX0NfMDAxMDAwMDAJMHhkNQorKyNkZWZpbmUgQV9HUFJfQUNDVQkweGQ2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKysjZGVmaW5lIEFfR1BSX0NPTkQJMHhkNwkJLyogQ0NSLCBjb25kaXRpb24gcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEFfR1BSX05PSVNFMAkweGQ4CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEFfR1BSX05PSVNFMQkweGQ5CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEFfR1BSX0lSUQkweGRhCQkvKiBJUlEgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEFfR1BSX0RCQUMJMHhkYgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAtIGludGVybmFsICovCisrI2RlZmluZSBBX0dQUl9EQkFDRQkweGRlCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gZXh0ZXJuYWwgKi8KKysKKysvKiBkZWZpbml0aW9ucyBmb3IgZGVidWcgcmVnaXN0ZXIgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1pDCQkJMHg4MDAwMDAwMAkvKiB6ZXJvIHRyYW0gY291bnRlciAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0FUVVJBVElPTl9PQ0NVUkVECTB4MDIwMDAwMDAJLyogc2F0dXJhdGlvbiBjb250cm9sICovCisrI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX0FERFIJMHgwMWZmMDAwMAkvKiBzYXR1cmF0aW9uIGFkZHJlc3MgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQCQkweDAwMDA4MDAwCS8qIHNpbmdsZSBzdGVwIG1vZGUgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NURVAJCTB4MDAwMDQwMDAJLyogc3RhcnQgc2luZ2xlIHN0ZXAgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX0NPTkRJVElPTl9DT0RFCTB4MDAwMDNlMDAJLyogY29uZGl0aW9uIGNvZGUgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NJTkdMRV9TVEVQX0FERFIJMHgwMDAwMDFmZgkvKiBzaW5nbGUgc3RlcCBhZGRyZXNzICovCisrCisrLyogdGFuayBtZW1vcnkgYWRkcmVzcyBsaW5lICovCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19BRERSX01BU0sgMHgwMDBmZmZmZgkvKiAyMCBiaXQgdGFuayBhZGRyZXNzIGZpZWxkCQkJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0NMRUFSCSAweDAwODAwMDAwCS8qIENsZWFyIHRhbmsgbWVtb3J5CQkJCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19BTElHTgkgMHgwMDQwMDAwMAkvKiBBbGlnbiByZWFkIG9yIHdyaXRlIHJlbGF0aXZlIHRvIHRhbmsgYWNjZXNzCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19XUklURQkgMHgwMDIwMDAwMAkvKiBXcml0ZSB0byB0YW5rIG1lbW9yeQkJCQkqLworKyNkZWZpbmUgVEFOS01FTUFERFJSRUdfUkVBRAkgMHgwMDEwMDAwMAkvKiBSZWFkIGZyb20gdGFuayBtZW1vcnkJCQkqLworKyNlbmRpZgorKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyB7CisrCXVuc2lnbmVkIGludCBpbnRlcm5hbF90cmFtX3NpemU7CS8qIGluIHNhbXBsZXMgKi8KKysJdW5zaWduZWQgaW50IGV4dGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworKwljaGFyIGZ4YnVzX25hbWVzWzE2XVszMl07CQkvKiBuYW1lcyBvZiBGWEJVU2VzICovCisrCWNoYXIgZXh0aW5fbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIGV4dGVybmFsIGlucHV0cyAqLworKwljaGFyIGV4dG91dF9uYW1lc1szMl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgb3V0cHV0cyAqLworKwl1bnNpZ25lZCBpbnQgZ3ByX2NvbnRyb2xzOwkJLyogY291bnQgb2YgR1BSIGNvbnRyb2xzICovCisrfTsKKysKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX05PTkUJCTAKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RBQkxFMTAwCTEKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX0JBU1MJCTIKKysjZGVmaW5lIEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OX1RSRUJMRQkJMworKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fT05PRkYJCTQKKysKKytlbnVtIGVtdTEwazFfY3RsX2VsZW1faWZhY2UgeworKwlFTVUxMEsxX0NUTF9FTEVNX0lGQUNFX01JWEVSID0gMiwJLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKysJRU1VMTBLMV9DVExfRUxFTV9JRkFDRV9QQ00gPSAzLAkJLyogUENNIGRldmljZSAqLworK307CisrCisrc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgeworKwl1bnNpZ25lZCBpbnQgcGFkOwkJLyogZG9uJ3QgdXNlICovCisrCWludCBpZmFjZTsJCQkvKiBpbnRlcmZhY2UgaWRlbnRpZmllciAqLworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogZGV2aWNlL2NsaWVudCBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIHN1YmRldmljZSAoc3Vic3RyZWFtKSBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzQ0XTsJCS8qIEFTQ0lJIG5hbWUgb2YgaXRlbSAqLworKwl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBpbmRleCBvZiBpdGVtICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIHsKKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgaWQ7CS8qIGZ1bGwgY29udHJvbCBJRCBkZWZpbml0aW9uICovCisrCXVuc2lnbmVkIGludCB2Y291bnQ7CQkvKiB2aXNpYmxlIGNvdW50ICovCisrCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIGNvdW50IG9mIEdQUiAoMS4uMTYpICovCisrCXVuc2lnbmVkIHNob3J0IGdwclszMl07CQkvKiBHUFIgbnVtYmVyKHMpICovCisrCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CQkvKiBpbml0aWFsIHZhbHVlcyAqLworKwl1bnNpZ25lZCBpbnQgbWluOwkJLyogbWluaW11bSByYW5nZSAqLworKwl1bnNpZ25lZCBpbnQgbWF4OwkJLyogbWF4aW11bSByYW5nZSAqLworKwl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CS8qIHRyYW5zbGF0aW9uIHR5cGUgKEVNVTEwSzFfR1BSX1RSQU5TTEFUSU9OKikgKi8KKysJY29uc3QgdW5zaWduZWQgaW50ICp0bHY7CisrfTsKKysKKysvKiBvbGQgQUJJIHdpdGhvdXQgVExWIHN1cHBvcnQgKi8KKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfb2xkX2dwciB7CisrCXN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGlkOworKwl1bnNpZ25lZCBpbnQgdmNvdW50OworKwl1bnNpZ25lZCBpbnQgY291bnQ7CisrCXVuc2lnbmVkIHNob3J0IGdwclszMl07CisrCXVuc2lnbmVkIGludCB2YWx1ZVszMl07CisrCXVuc2lnbmVkIGludCBtaW47CisrCXVuc2lnbmVkIGludCBtYXg7CisrCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsKKyt9OworKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSB7CisrCWNoYXIgbmFtZVsxMjhdOworKworKwlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoZ3ByX3ZhbGlkLCAweDIwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICpncHJfbWFwOwkJCS8qIGluaXRpYWxpemVycyAqLworKworKwl1bnNpZ25lZCBpbnQgZ3ByX2FkZF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKysJc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciAqZ3ByX2FkZF9jb250cm9sczsgLyogR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCisrCisrCXVuc2lnbmVkIGludCBncHJfZGVsX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgKmdwcl9kZWxfY29udHJvbHM7IC8qIElEcyBvZiBHUFIgY29udHJvbHMgdG8gcmVtb3ZlICovCisrCisrCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX2NvdW50OyAvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgdG8gbGlzdCAqLworKwl1bnNpZ25lZCBpbnQgZ3ByX2xpc3RfY29udHJvbF90b3RhbDsgLyogdG90YWwgY291bnQgb2YgR1BSIGNvbnRyb2xzICovCisrCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgKmdwcl9saXN0X2NvbnRyb2xzOyAvKiBsaXN0ZWQgR1BSIGNvbnRyb2xzICovCisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUCh0cmFtX3ZhbGlkLCAweDEwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICp0cmFtX2RhdGFfbWFwOwkJICAvKiBkYXRhIGluaXRpYWxpemVycyAqLworKwlfX3UzMiAqdHJhbV9hZGRyX21hcDsJCSAgLyogbWFwIGluaXRpYWxpemVycyAqLworKworKwlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoY29kZV92YWxpZCwgMTAyNCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5zdHJ1Y3Rpb25zICovCisrCV9fdTMyICpjb2RlOwkJCSAgLyogb25lIGluc3RydWN0aW9uIC0gNjQgYml0cyAqLworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIHsKKysJdW5zaWduZWQgaW50IGFkZHJlc3M7CQkvKiAzMS5iaXQgPT0gMSAtPiBleHRlcm5hbCBUUkFNICovCisrCXVuc2lnbmVkIGludCBzaXplOwkJLyogc2l6ZSBpbiBzYW1wbGVzICg0IGJ5dGVzKSAqLworKwl1bnNpZ25lZCBpbnQgKnNhbXBsZXM7CQkvKiBwb2ludGVyIHRvIHNhbXBsZXMgKDIwLWJpdCkgKi8KKysJCQkJCS8qIE5VTEwtPmNsZWFyIG1lbW9yeSAqLworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKysJdW5zaWduZWQgaW50IHN1YnN0cmVhbTsJCS8qIHN1YnN0cmVhbSBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IHJlczE7CQkvKiByZXNlcnZlZCAqLworKwl1bnNpZ25lZCBpbnQgY2hhbm5lbHM7CQkvKiAxNi1iaXQgY2hhbm5lbHMgY291bnQsIHplcm8gPSByZW1vdmUgdGhpcyBzdWJzdHJlYW0gKi8KKysJdW5zaWduZWQgaW50IHRyYW1fc3RhcnQ7CS8qIHJpbmcgYnVmZmVyIHBvc2l0aW9uIGluIFRSQU0gKGluIHNhbXBsZXMpICovCisrCXVuc2lnbmVkIGludCBidWZmZXJfc2l6ZTsJLyogY291bnQgb2YgYnVmZmVyZWQgc2FtcGxlcyAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfc2l6ZTsJCS8qIEdQUiBjb250YWluaW5nIHNpemUgb2YgcmluZ2J1ZmZlciBpbiBzYW1wbGVzIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfcHRyOwkJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBwb2ludGVyIGluIHRoZSByaW5nIGJ1ZmZlciAoaG9zdCA9IHJlc2V0LCBGWDgwMTApICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9jb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY291bnQgb2Ygc2FtcGxlcyBiZXR3ZWVuIHR3byBpbnRlcnJ1cHRzIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfdG1wY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgY291bnQgb2Ygc2FtcGxlcyB0byBpbnRlcnJ1cHQgKGhvc3QgPSBzZXQsIEZYODAxMCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX3RyaWdnZXI7CS8qIEdQUiBjb250YWluaW5nIHRyaWdnZXIgKGFjdGl2YXRlKSBpbmZvcm1hdGlvbiAoaG9zdCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX3J1bm5pbmc7CS8qIEdQUiBjb250YWluaW5nIGluZm8gaWYgUENNIGlzIHJ1bm5pbmcgKEZYODAxMCkgKi8KKysJdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworKwl1bnNpZ25lZCBjaGFyIGV0cmFtWzMyXTsJLyogZXh0ZXJuYWwgVFJBTSBhZGRyZXNzICYgZGF0YSAob25lIHBlciBjaGFubmVsKSAqLworKwl1bnNpZ25lZCBpbnQgcmVzMjsJCS8qIHJlc2VydmVkICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorKworKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9JTkZPCV9JT1IgKCdIJywgMHgxMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BPS0UJX0lPVyAoJ0gnLCAweDExLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUEVFSwlfSU9XUignSCcsIDB4MTIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9TRVRVUAlfSU9XICgnSCcsIDB4MjAsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QT0tFCV9JT1cgKCdIJywgMHgyMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BFRUsJX0lPV1IoJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QT0tFCV9JT1cgKCdIJywgMHgzMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUEVFSwlfSU9XUignSCcsIDB4MzEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NUT1AJX0lPICAoJ0gnLCAweDgwKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT05USU5VRQlfSU8gICgnSCcsIDB4ODEpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1pFUk9fVFJBTV9DT1VOVEVSIF9JTyAoJ0gnLCAweDgyKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCisrCisrI2lmbmRlZiBfX0tFUk5FTF9fCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworK3R5cGVkZWYgc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgZW11MTBrMV9jdGxfZWxlbV9pZF90OworKyNlbmRpZgorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uODhjOTJhM2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK0BAIC0wLDAgKzEsMTA5IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrI2lmbmRlZiBfX1NPVU5EX0hEU1BfSAorKyNkZWZpbmUgX19TT1VORF9IRFNQX0gKKysKKysvKgorKyAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKysgKiAgICAKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisrICovCisrCisrI2RlZmluZSBIRFNQX01BVFJJWF9NSVhFUl9TSVpFIDIwNDgKKysKKytlbnVtIEhEU1BfSU9fVHlwZSB7CisrCURpZ2lmYWNlLAorKwlNdWx0aWZhY2UsCisrCUg5NjUyLAorKwlIOTYzMiwKKysJUlBNLAorKwlVbmRlZmluZWQsCisrfTsKKysKKytzdHJ1Y3QgaGRzcF9wZWFrX3JtcyB7CisrCV9fdTMyIGlucHV0X3BlYWtzWzI2XTsKKysJX191MzIgcGxheWJhY2tfcGVha3NbMjZdOworKwlfX3UzMiBvdXRwdXRfcGVha3NbMjhdOworKwlfX3U2NCBpbnB1dF9ybXNbMjZdOworKwlfX3U2NCBwbGF5YmFja19ybXNbMjZdOworKwkvKiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciBIOTZ4eCBjYXJkcyAqLworKwlfX3U2NCBvdXRwdXRfcm1zWzI2XTsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfUEVBS19STVMgX0lPUignSCcsIDB4NDAsIHN0cnVjdCBoZHNwX3BlYWtfcm1zKQorKworK3N0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIHsKKysJdW5zaWduZWQgY2hhciBwcmVmX3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIHdvcmRjbG9ja19zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgYWRhdHN5bmNfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBhZGF0X3N5bmNfY2hlY2tbM107CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfaW47CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfb3V0OworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX3Byb2Zlc3Npb25hbDsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9lbXBoYXNpczsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9ub25hdWRpbzsKKysJdW5zaWduZWQgaW50IHNwZGlmX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CisrCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworKwl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciBsaW5lX291dDsKKysJdW5zaWduZWQgY2hhciBwYXNzdGhydTsgCisrCXVuc2lnbmVkIGNoYXIgZGFfZ2FpbjsKKysJdW5zaWduZWQgY2hhciBhZF9nYWluOworKwl1bnNpZ25lZCBjaGFyIHBob25lX2dhaW47CisrCXVuc2lnbmVkIGNoYXIgeGxyX2JyZWFrb3V0X2NhYmxlOworKwl1bnNpZ25lZCBjaGFyIGFuYWxvZ19leHRlbnNpb25fYm9hcmQ7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX0NPTkZJR19JTkZPIF9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbykKKysKKytzdHJ1Y3QgaGRzcF9maXJtd2FyZSB7CisrCXZvaWQgKmZpcm13YXJlX2RhdGE7CS8qIDI0NDEzIHggNCBieXRlcyAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX1VQTE9BRF9GSVJNV0FSRSBfSU9XKCdIJywgMHg0Miwgc3RydWN0IGhkc3BfZmlybXdhcmUpCisrCisrc3RydWN0IGhkc3BfdmVyc2lvbiB7CisrCWVudW0gSERTUF9JT19UeXBlIGlvX3R5cGU7CisrCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0Mywgc3RydWN0IGhkc3BfdmVyc2lvbikKKysKKytzdHJ1Y3QgaGRzcF9taXhlciB7CisrCXVuc2lnbmVkIHNob3J0IG1hdHJpeFtIRFNQX01BVFJJWF9NSVhFUl9TSVpFXTsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwX21peGVyKQorKworK3N0cnVjdCBoZHNwXzk2MzJfYWViIHsKKysJaW50IGFlYmk7CisrCWludCBhZWJvOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF85NjMyX0FFQiBfSU9SKCdIJywgMHg0NSwgc3RydWN0IGhkc3BfOTYzMl9hZWIpCisrCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworK3R5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKysKKysjZW5kaWYgLyogX19TT1VORF9IRFNQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjJkOTFmOTBlCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorQEAgLTAsMCArMSwyMzAgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfSERTUE1fSAorKyNkZWZpbmUgX19TT1VORF9IRFNQTV9ICisrLyoKKysgKiAgIENvcHlyaWdodCAoQykgMjAwMyBXaW5mcmllZCBSaXRzY2ggKElFTSkKKysgKiAgIGJhc2VkIG9uIGhkc3AuaCBmcm9tIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKysgKgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqCisrICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorKyAqLworKworKy8qIE1heGltdW0gY2hhbm5lbHMgaXMgNjQgZXZlbiBvbiA1Nk1vZGUgeW91IGhhdmUgNjRwbGF5YmFja3MgdG8gbWF0cml4ICovCisrI2RlZmluZSBIRFNQTV9NQVhfQ0hBTk5FTFMgICAgICA2NAorKworK2VudW0gaGRzcG1faW9fdHlwZSB7CisrCU1BREksCisrCU1BRElmYWNlLAorKwlBSU8sCisrCUFFUzMyLAorKwlSYXlEQVQKKyt9OworKworK2VudW0gaGRzcG1fc3BlZWQgeworKwlzcywKKysJZHMsCisrCXFzCisrfTsKKysKKysvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBJT0NUTCBQZWFrL1JNUyBNZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKysKKytzdHJ1Y3QgaGRzcG1fcGVha19ybXMgeworKwlfX3UzMiBpbnB1dF9wZWFrc1s2NF07CisrCV9fdTMyIHBsYXliYWNrX3BlYWtzWzY0XTsKKysJX191MzIgb3V0cHV0X3BlYWtzWzY0XTsKKysKKysJX191NjQgaW5wdXRfcm1zWzY0XTsKKysJX191NjQgcGxheWJhY2tfcm1zWzY0XTsKKysJX191NjQgb3V0cHV0X3Jtc1s2NF07CisrCisrCV9fdTggc3BlZWQ7IC8qIGVudW0ge3NzLCBkcywgcXN9ICovCisrCWludCBzdGF0dXMyOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfUEVBS19STVMgXAorKwlfSU9SKCdIJywgMHg0Miwgc3RydWN0IGhkc3BtX3BlYWtfcm1zKQorKworKy8qIC0tLS0tLS0tLS0tLSBDT05GSUcgYmxvY2sgSU9DVEwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworKworK3N0cnVjdCBoZHNwbV9jb25maWcgeworKwl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CisrCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgbWFkaV9zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworKwl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CisrCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworKwl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciBsaW5lX291dDsKKysJdW5zaWduZWQgaW50IHBhc3N0aHJ1OworKwl1bnNpZ25lZCBpbnQgYW5hbG9nX291dDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0NPTkZJRyBcCisrCV9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcG1fY29uZmlnKQorKworKy8qCisrICogSWYgdGhlcmUncyBhIFRDTyAoVGltZUNvZGUgT3B0aW9uKSBib2FyZCBpbnN0YWxsZWQsCisrICogdGhlcmUgYXJlIGZ1cnRoZXIgb3B0aW9ucyBhbmQgc3RhdHVzIGRhdGEgYXZhaWxhYmxlLgorKyAqIFRoZSBoZHNwbV9sdGMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBjdXJyZW50IFNNUFRFCisrICogdGltZWNvZGUgYW5kIHNvbWUgc3RhdHVzIGluZm9ybWF0aW9uIGFuZCBjYW4gYmUKKysgKiBvYnRhaW5lZCB2aWEgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBvciBpbiB0aGUKKysgKiBoZHNwbV9zdGF0dXMgc3RydWN0LgorKyAqLworKworK2VudW0gaGRzcG1fbHRjX2Zvcm1hdCB7CisrCWZvcm1hdF9pbnZhbGlkLAorKwlmcHNfMjQsCisrCWZwc18yNSwKKysJZnBzXzI5OTcsCisrCWZwc18zMAorK307CisrCisrZW51bSBoZHNwbV9sdGNfZnJhbWUgeworKwlmcmFtZV9pbnZhbGlkLAorKwlkcm9wX2ZyYW1lLAorKwlmdWxsX2ZyYW1lCisrfTsKKysKKytlbnVtIGhkc3BtX2x0Y19pbnB1dF9mb3JtYXQgeworKwludHNjLAorKwlwYWwsCisrCW5vX3ZpZGVvCisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fbHRjIHsKKysJdW5zaWduZWQgaW50IGx0YzsKKysKKysJZW51bSBoZHNwbV9sdGNfZm9ybWF0IGZvcm1hdDsKKysJZW51bSBoZHNwbV9sdGNfZnJhbWUgZnJhbWU7CisrCWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCBpbnB1dF9mb3JtYXQ7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9MVEMgX0lPUignSCcsIDB4NDYsIHN0cnVjdCBoZHNwbV9sdGMpCisrCisrLyoKKysgKiBUaGUgc3RhdHVzIGRhdGEgcmVmbGVjdHMgdGhlIGRldmljZSdzIGN1cnJlbnQgc3RhdGUKKysgKiBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBjYXJkJ3MgY29uZmlndXJhdGlvbiBhbmQKKysgKiBjb25uZWN0aW9uIHN0YXR1cy4KKysgKi8KKysKKytlbnVtIGhkc3BtX3N5bmMgeworKwloZHNwbV9zeW5jX25vX2xvY2sgPSAwLAorKwloZHNwbV9zeW5jX2xvY2sgPSAxLAorKwloZHNwbV9zeW5jX3N5bmMgPSAyCisrfTsKKysKKytlbnVtIGhkc3BtX21hZGlfaW5wdXQgeworKwloZHNwbV9pbnB1dF9vcHRpY2FsID0gMCwKKysJaGRzcG1faW5wdXRfY29heCA9IDEKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9jaGFubmVsX2Zvcm1hdCB7CisrCWhkc3BtX2Zvcm1hdF9jaF82NCA9IDAsCisrCWhkc3BtX2Zvcm1hdF9jaF81NiA9IDEKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgeworKwloZHNwbV9mcmFtZV80OCA9IDAsCisrCWhkc3BtX2ZyYW1lXzk2ID0gMQorK307CisrCisrZW51bSBoZHNwbV9zeW5jc291cmNlIHsKKysJc3luY3NvdXJjZV93YyA9IDAsCisrCXN5bmNzb3VyY2VfbWFkaSA9IDEsCisrCXN5bmNzb3VyY2VfdGNvID0gMiwKKysJc3luY3NvdXJjZV9zeW5jID0gMywKKysJc3luY3NvdXJjZV9ub25lID0gNAorK307CisrCisrc3RydWN0IGhkc3BtX3N0YXR1cyB7CisrCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKysJZW51bSBoZHNwbV9zeW5jc291cmNlIGF1dG9zeW5jX3NvdXJjZTsKKysKKysJX191NjQgY2FyZF9jbG9jazsKKysJX191MzIgbWFzdGVyX3BlcmlvZDsKKysKKysJdW5pb24geworKwkJc3RydWN0IHsKKysJCQlfX3U4IHN5bmNfd2M7IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY19tYWRpOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKysJCQlfX3U4IHN5bmNfdGNvOyAvKiBlbnVtIGhkc3BtX3N5bmMgKi8KKysJCQlfX3U4IHN5bmNfaW47IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggbWFkaV9pbnB1dDsgLyogZW51bSBoZHNwbV9tYWRpX2lucHV0ICovCisrCQkJX191OCBjaGFubmVsX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0ICovCisrCQkJX191OCBmcmFtZV9mb3JtYXQ7IC8qIGVudW0gaGRzcG1fbWFkaV9mcmFtZV9mb3JtYXQgKi8KKysJCX0gbWFkaTsKKysJfSBjYXJkX3NwZWNpZmljOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfU1RBVFVTIFwKKysJX0lPUignSCcsIDB4NDcsIHN0cnVjdCBoZHNwbV9zdGF0dXMpCisrCisrLyoKKysgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmQgYW5kIGl0cyBhZGQtb25zLgorKyAqLworKworKyNkZWZpbmUgSERTUE1fQURET05fVENPIDEKKysKKytzdHJ1Y3QgaGRzcG1fdmVyc2lvbiB7CisrCV9fdTggY2FyZF90eXBlOyAvKiBlbnVtIGhkc3BtX2lvX3R5cGUgKi8KKysJY2hhciBjYXJkbmFtZVsyMF07CisrCXVuc2lnbmVkIGludCBzZXJpYWw7CisrCXVuc2lnbmVkIHNob3J0IGZpcm13YXJlX3JldjsKKysJaW50IGFkZG9uczsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDgsIHN0cnVjdCBoZHNwbV92ZXJzaW9uKQorKworKy8qIC0tLS0tLS0tLS0tLS0gZ2V0IE1hdHJpeCBNaXhlciBJT0NUTCAtLS0tLS0tLS0tLS0tLS0gKi8KKysKKysvKiBNQURJIG1peGVyOiA2NGlucHV0cys2NHBsYXliYWNrIGluIDY0b3V0cHV0cyA9IDgxOTIgPT4gKjRCeXRlID0KKysgKiAzMjc2OCBCeXRlcworKyAqLworKworKy8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW51b3VzIG1lbW9yeSBibG9jayAqLworKy8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKKysgKiB0aGVtCisrICovCisrLyogZWFjaCBvZiA2NCBvdXRwdXRzIGhhcyA2NCBpbmZhZGVyIGFuZCA2NCBvdXRmYWRlcjoKKysgICBJbnMgdG8gT3V0cyBtaXhlcltvdXRdLmluW2luXSwgT3V0c3RyZWFtcyB0byBPdXRzIG1peGVyW291dF0ucGJbcGJdICovCisrCisrI2RlZmluZSBIRFNQTV9NSVhFUl9DSEFOTkVMUyBIRFNQTV9NQVhfQ0hBTk5FTFMKKysKKytzdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHsKKysJdW5zaWduZWQgaW50IGluW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKysJdW5zaWduZWQgaW50IHBiW0hEU1BNX01JWEVSX0NIQU5ORUxTXTsKKyt9OworKworK3N0cnVjdCBoZHNwbV9taXhlciB7CisrCXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgY2hbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworK307CisrCisrc3RydWN0IGhkc3BtX21peGVyX2lvY3RsIHsKKysJc3RydWN0IGhkc3BtX21peGVyICptaXhlcjsKKyt9OworKworKy8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCisrCisrLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CisrCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5lNjQ4NTE0OAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmgKK0BAIC0wLDAgKzEsMTIzIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk5IGJ5IFVyb3MgQml6amFrIDx1cm9zQGtzcy1sb2thLnNpPgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorKyAqCisrICogIFNCMTZBU1AvQVdFMzIgQ1NQIGNvbnRyb2wKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgCisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSAorKworKworKy8qIENTUCBtb2RlcyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfTk9ORQkJMHgwMAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1JFQUQJMHgwMQkvKiBSZWNvcmQgZnJvbSBEU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX0RTUF9XUklURQkweDAyCS8qIFBsYXkgdG8gRFNQICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9RU09VTkQJCTB4MDQJLyogUVNvdW5kICovCisrCisrLyogQ1NQIGxvYWQgZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0ZST01VU0VSCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9MT0FEX0lOSVRCTE9DSwkweDAyCisrCisrLyogQ1NQIHNhbXBsZSB3aWR0aCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NBTVBMRV84QklUCQkweDAxCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzE2QklUCQkweDAyCisrCisrLyogQ1NQIGNoYW5uZWxzICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9OTwkJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVEVSRU8JCTB4MDIKKysKKysvKiBDU1AgcmF0ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzgwMDAJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzExMDI1CQkweDAyCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV8yMjA1MAkJMHgwNAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfNDQxMDAJCTB4MDgKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFX0FMTAkJMHgwZgorKworKy8qIENTUCBydW5uaW5nIHN0YXRlICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfSURMRQkJMHgwMAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0xPQURFRAkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1JVTk5JTkcJCTB4MDIKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9QQVVTRUQJCTB4MDQKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9BVVRPCQkweDA4CisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUVNPVU5ECQkweDEwCisrCisrLyogbWF4aW11bSBRU291bmQgdmFsdWUgKDE4MCBkZWdyZWVzIHJpZ2h0KSAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1FTT1VORF9NQVhfUklHSFQJMHgyMAorKworKy8qIG1heGltdW0gbWljcm9jb2RlIFJJRkYgZmlsZSBzaXplICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTUFYX01JQ1JPQ09ERV9GSUxFX1NJWkUJMHgzMDAwCisrCisrLyogbWljcm9jb2RlIGhlYWRlciAqLworK3N0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciB7CisrCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCisrCXVuc2lnbmVkIHNob3J0IGZ1bmNfcmVxOwkvKiByZXF1ZXN0ZWQgZnVuY3Rpb24gKi8KKyt9OworKworKy8qIG1pY3JvY29kZSB0byBiZSBsb2FkZWQgKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgeworKwlzdHJ1Y3Qgc25kX3NiX2NzcF9tY19oZWFkZXIgaW5mbzsKKysJdW5zaWduZWQgY2hhciBkYXRhW1NORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRV07CisrfTsKKysKKysvKiBzdGFydCBDU1Agd2l0aCBzYW1wbGVfd2lkdGggaW4gbW9uby9zdGVyZW8gKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCB7CisrCWludCBzYW1wbGVfd2lkdGg7CS8qIHNhbXBsZSB3aWR0aCwgbG9vayBhYm92ZSAqLworKwlpbnQgY2hhbm5lbHM7CQkvKiBjaGFubmVscywgbG9vayBhYm92ZSAqLworK307CisrCisrLyogQ1NQIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zYl9jc3BfaW5mbyB7CisrCWNoYXIgY29kZWNfbmFtZVsxNl07CQkvKiBpZCBuYW1lIG9mIGNvZGVjICovCisrCXVuc2lnbmVkIHNob3J0IGZ1bmNfbnI7CQkvKiBmdW5jdGlvbiBudW1iZXIgKi8KKysJdW5zaWduZWQgaW50IGFjY19mb3JtYXQ7CS8qIGFjY2VwdGVkIFBDTSBmb3JtYXRzICovCisrCXVuc2lnbmVkIHNob3J0IGFjY19jaGFubmVsczsJLyogYWNjZXB0ZWQgY2hhbm5lbHMgKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX3dpZHRoOwkvKiBhY2NlcHRlZCBzYW1wbGUgd2lkdGggKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX3JhdGVzOwkvKiBhY2NlcHRlZCBzYW1wbGUgcmF0ZXMgKi8KKysJdW5zaWduZWQgc2hvcnQgY3NwX21vZGU7CS8qIENTUCBtb2RlLCBzZWUgYWJvdmUgKi8KKysJdW5zaWduZWQgc2hvcnQgcnVuX2NoYW5uZWxzOwkvKiBjdXJyZW50IGNoYW5uZWxzICAqLworKwl1bnNpZ25lZCBzaG9ydCBydW5fd2lkdGg7CS8qIGN1cnJlbnQgc2FtcGxlIHdpZHRoICovCisrCXVuc2lnbmVkIHNob3J0IHZlcnNpb247CQkvKiB2ZXJzaW9uIGlkOiAweDEwIC0gMHgxZiAqLworKwl1bnNpZ25lZCBzaG9ydCBzdGF0ZTsJCS8qIHN0YXRlIGJpdHMgKi8KKyt9OworKworKy8qIEhXREVQIGNvbnRyb2xzICovCisrLyogZ2V0IENTUCBpbmZvcm1hdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvKQorKy8qIGxvYWQgbWljcm9jb2RlIHRvIENTUCAqLworKy8qIE5PVEU6IHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBvdmVyZmxvd3MgdGhlIG1heCBzaXplICgxMyBiaXRzKQorKyAqIGRlZmluZWQgZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcyBsaWtlIE1JUFMsIGFuZCBpdCBsZWFkcyB0byBidWlsZCBlcnJvcnMuCisrICogKHg4NiBhbmQgY28gaGF2ZSAxNC1iaXQgc2l6ZSwgdGh1cyBpdCdzIHZhbGlkLCB0aG91Z2guKQorKyAqIEFzIGEgd29ya2Fyb3VuZCBmb3Igc2tpcHBpbmcgdGhlIHNpemUtbGltaXQgY2hlY2ssIGhlcmUgd2UgZG9uJ3QgdXNlIHRoZQorKyAqIG5vcm1hbCBfSU9XKCkgbWFjcm8gYnV0IF9JT0MoKSB3aXRoIHRoZSBtYW51YWwgYXJndW1lbnQuCisrICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfTE9BRF9DT0RFCVwKKysJX0lPQyhfSU9DX1dSSVRFLCAnSCcsIDB4MTEsIHNpemVvZihzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUpKQorKy8qIHVubG9hZCBtaWNyb2NvZGUgZnJvbSBDU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9VTkxPQURfQ09ERQlfSU8oJ0gnLCAweDEyKQorKy8qIHN0YXJ0IENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUQVJUCQlfSU9XKCdIJywgMHgxMywgc3RydWN0IHNuZF9zYl9jc3Bfc3RhcnQpCisrLyogc3RvcCBDU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9TVE9QCQlfSU8oJ0gnLCAweDE0KQorKy8qIHBhdXNlIENTUCBhbmQgRE1BIHRyYW5zZmVyICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUEFVU0UJCV9JTygnSCcsIDB4MTUpCisrLyogcmVzdGFydCBDU1AgYW5kIERNQSB0cmFuc2ZlciAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1JFU1RBUlQJX0lPKCdIJywgMHgxNikKKysKKysKKysjZW5kaWYgLyogX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYzY2NTNlYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaAorQEAgLTAsMCArMSwyMSBAQAorKyNpZm5kZWYgU1NDQVBFX0lPQ1RMX0gKKysjZGVmaW5lIFNTQ0FQRV9JT0NUTF9ICisrCisrCisrc3RydWN0IHNzY2FwZV9ib290YmxvY2sKKyt7CisrICB1bnNpZ25lZCBjaGFyIGNvZGVbMjU2XTsKKysgIHVuc2lnbmVkIHZlcnNpb247CisrfTsKKysKKysjZGVmaW5lIFNTQ0FQRV9NSUNST0NPREVfU0laRSAgNjU1MzYKKysKKytzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZQorK3sKKysgIHVuc2lnbmVkIGNoYXIgKmNvZGU7CisrfTsKKysKKysjZGVmaW5lIFNORF9TU0NBUEVfTE9BRF9CT09UQiAgX0lPV1IoJ1AnLCAxMDAsIHN0cnVjdCBzc2NhcGVfYm9vdGJsb2NrKQorKyNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX01DT0RFICBfSU9XICgnUCcsIDEwMSwgc3RydWN0IHNzY2FwZV9taWNyb2NvZGUpCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjdkNmQ2NWY2CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmgKK0BAIC0wLDAgKzEsMTE3IEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisrLyoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICovCisrCisrI2lmbmRlZiBfX1VBUElfU09VTkRfVExWX0gKKysjZGVmaW5lIF9fVUFQSV9TT1VORF9UTFZfSAorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSIDAJLyogb25lIGxldmVsIGRvd24gLSBncm91cCBvZiBUTFZzICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9TQ0FMRQkxICAgICAgIC8qIGRCIHNjYWxlICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9MSU5FQVIgMgkvKiBsaW5lYXIgdm9sdW1lICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9SQU5HRSAzCS8qIGRCIHJhbmdlIGNvbnRhaW5lciAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYIDQJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4ICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSA1CS8qIGRCIHNjYWxlIHdpdGggbWluL21heCB3aXRoIG11dGUgKi8KKysKKysvKgorKyAqIGNoYW5uZWwtbWFwcGluZyBUTFYgaXRlbXMKKysgKiAgVExWIGxlbmd0aCBtdXN0IG1hdGNoIHdpdGggbnVtX2NoYW5uZWxzCisrICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9GSVhFRAkweDEwMQkvKiBmaXhlZCBjaGFubmVsIHBvc2l0aW9uICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9WQVIJMHgxMDIJLyogY2hhbm5lbHMgZnJlZWx5IHN3YXBwYWJsZSAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfUEFJUkVECTB4MTAzCS8qIHBhaXItd2lzZSBzd2FwcGFibGUgKi8KKysKKysvKgorKyAqIFRMViBzdHJ1Y3R1cmUgaXMgcmlnaHQgYmVoaW5kIHRoZSBzdHJ1Y3Qgc25kX2N0bF90bHY6CisrICogICB1bnNpZ25lZCBpbnQgdHlwZSAgCS0gc2VlIFNORFJWX0NUTF9UTFZUXyoKKysgKiAgIHVuc2lnbmVkIGludCBsZW5ndGgKKysgKiAgIC4uLi4gZGF0YSBhbGlnbmVkIHRvIHNpemVvZih1bnNpZ25lZCBpbnQpLCB1c2UKKysgKiAgICAgICAgYmxvY2tfbGVuZ3RoID0gKGxlbmd0aCArIChzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAmCisrICogICAgICAgICAgICAgICAgICAgICAgIH4oc2l6ZW9mKHVuc2lnbmVkIGludCkgLSAxKSkgLi4uLgorKyAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfSVRFTSh0eXBlLCAuLi4pIFwKKysJKHR5cGUpLCBTTkRSVl9DVExfVExWRF9MRU5HVEgoX19WQV9BUkdTX18pLCBfX1ZBX0FSR1NfXworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfTEVOR1RIKC4uLikgXAorKwkoKHVuc2lnbmVkIGludClzaXplb2YoKGNvbnN0IHVuc2lnbmVkIGludFtdKSB7IF9fVkFfQVJHU19fIH0pKQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIFRMViBkYXRhIGl0ZW1zICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19UWVBFCQkwCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19MRU4JCTEKKysKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0NPTlRBSU5FUl9JVEVNKC4uLikgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0NPTlRBSU5FUiwgX19WQV9BUkdTX18pCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0NPTlRBSU5FUihuYW1lLCAuLi4pIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oX19WQV9BUkdTX18pIFwKKysJfQorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTUFTSwkweGZmZmYKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01VVEUJMHgxMDAwMAorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfSVRFTShtaW4sIHN0ZXAsIG11dGUpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9TQ0FMRSwgXAorKwkJCSAgICAobWluKSwgXAorKwkJCSAgICAoKHN0ZXApICYgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTUFTSykgfCBcCisrCQkJICAgICAoKG11dGUpID8gU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURSA6IDApKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9TQ0FMRShuYW1lLCBtaW4sIHN0ZXAsIG11dGUpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfSVRFTShtaW4sIHN0ZXAsIG11dGUpIFwKKysJfQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbXV0ZSBhbmQgc3RlcCBpdGVtcyBpbiBkQiBzY2FsZSB0eXBlIFRMViAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfU0NBTEVfTUlOCQkyCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NVVRFX0FORF9TVEVQCTMKKysKKysvKiBkQiBzY2FsZSBzcGVjaWZpZWQgd2l0aCBtaW4vbWF4IHZhbHVlcyBpbnN0ZWFkIG9mIHN0ZXAgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYLCAobWluX2RCKSwgKG1heF9kQikpCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYX01VVEUsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTUlOTUFYKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCisrCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKysJCVNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTUlOTUFYX01VVEUobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX01VVEVfSVRFTShtaW5fZEIsIG1heF9kQikgXAorKwl9CisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtYXggaXRlbXMgaW4gZGItbWlubWF4IHR5cGVzIG9mIFRMVi4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX01JTk1BWF9NSU4JMgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01BWAkzCisrCisrLyogbGluZWFyIHZvbHVtZSBiZXR3ZWVuIG1pbl9kQiBhbmQgbWF4X2RCICguMDFkQiB1bml0KSAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9MSU5FQVIsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfTElORUFSKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCisrCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKysJCVNORFJWX0NUTF9UTFZEX0RCX0xJTkVBUl9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysKKysvKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1saW5lYXIgdHlwZSBvZiBUTFYuICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9MSU5FQVJfTUlOCTIKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NQVgJMworKworKy8qIGRCIHJhbmdlIGNvbnRhaW5lcjoKKysgKiBJdGVtcyBpbiBkQiByYW5nZSBjb250YWluZXIgbXVzdCBiZSBvcmRlcmVkIGJ5IHRoZWlyIHZhbHVlcyBhbmQgYnkgdGhlaXIKKysgKiBkQiB2YWx1ZXMuIFRoaXMgaW1wbGllcyB0aGF0IGxhcmdlciB2YWx1ZXMgbXVzdCBjb3JyZXNwb25kIHdpdGggbGFyZ2VyCisrICogZEIgdmFsdWVzICh3aGljaCBpcyBhbHNvIHJlcXVpcmVkIGZvciBhbGwgb3RoZXIgbWl4ZXIgY29udHJvbHMpLgorKyAqLworKy8qIEVhY2ggaXRlbSBpczogPG1pbj4gPG1heD4gPFRMVj4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1JBTkdFX0lURU0oLi4uKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfUkFOR0UsIF9fVkFfQVJHU19fKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9SQU5HRShuYW1lLCAuLi4pIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTShfX1ZBX0FSR1NfXykgXAorKwl9CisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9HQUlOX01VVEUJLTk5OTk5OTkKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oIGIvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAoraW5kZXggMTFlZmNlNmQuLjEwMTQ5MWE0IDEwMDY0NAorLS0tIGEvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAorKysrIGIvc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaAorQEAgLTE4LDggKzE4LDcgQEAKKyAjaW5jbHVkZSAibGlzdC5oIgorICNpbmNsdWRlICJ0b3BvbG9neS5oIgorIAorLSNkZWZpbmUgX19wYWNrZWQgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCistCisrI2luY2x1ZGUgPHNvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorICNpbmNsdWRlIDxzb3VuZC9hc29jLmg+CisgI2luY2x1ZGUgPHNvdW5kL3Rsdi5oPgorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRiNDkzNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSAwMWNkOGNiNmQ1OTRkN2ExMmM2N2QyMWQ2ODllYmUwZTM0NzQ2OWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAwOToyNjoxMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsaWJ0b29sIGZpeAorCitUaGlzIGNvZGUgd2FzIGFkZGVkIGluIGNvbW1pdCA3NWQzOTNhNTYzZWZiNTc4Yzc5MzY0YTI3NzA4N2M2MzI2MjY3ZjUyCit3aXRob3V0IGV4cGxhaW5pbmcgd2h5LiBJIGFzc3VtZSBpdCB3YXMgYSBtaXN0YWtlLCBzaW5jZSBpdCBsb29rcyBsaWtlCit0aGUgbGlidG9vbCBwcm9ibGVtIHNob3VsZCBoYXZlIGdvbmUgYXdheSBhIGxvbmcgdGltZSBhZ28uIFRoZSByZWZlcmVuY2VkCit3aWtpIHBhZ2UgaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSBzYXlzOgorCisgICAgU2luY2UgbGlidG9vbCAxLjUuMiAocmVsZWFzZWQgMjAwNC0wMS0yNSksIG9uIExpbnV4IGxpYnRvb2wgbm8KKyAgICBsb25nZXIgc2V0cyBSUEFUSCBmb3IgYW55IGRpcmVjdG9yaWVzIGluIHRoZSBkeW5hbWljIGxpbmtlciBzZWFyY2gKKyAgICBwYXRoLCBzbyB0aGlzIHNob3VsZCBubyBsb25nZXIgYmUgYW4gaXNzdWUgdW5sZXNzIHVwc3RyZWFtIHVzZWQgYQorICAgIHJlYWxseSBvbGQgdmVyc2lvbiBvZiBsaWJ0b29sIHdoZW4gY3JlYXRpbmcgdGhlaXIgZGlzdHJpYnV0aW9uCisgICAgdGFyYmFsbC4KKworVGhpcyBjb2RlIGNhdXNlZCBwcm9ibGVtcyBpbiBPcGVuRW1iZWRkZWQsIHdoZXJlIHRoZSBsaWJ0b29sIHNjcmlwdCBpcworbmFtZWQgIng4Nl82NC1vZS1saW51eC1saWJ0b29sIiBvciBzaW1pbGFyIHJhdGhlciB0aGFuIGp1c3QgImxpYnRvb2wiLAorc28gdGhlIHNlZCBjb21tYW5kIGZhaWxlZCB3aXRoIGEgZmlsZSBub3QgZm91bmQgZXJyb3IuIFJhdGhlciB0aGFuCithZGFwdGluZyB0aGUgY29kZSB0byBPcGVuRW1iZWRkZWQncyBwZWN1bGlhcml0aWVzLCBpdCBzZWVtcyBiZXN0IHRvIGp1c3QKK3JlbW92ZSB0aGUgdW5uZWNlc3NhcnkgY29kZSBhbHRvZ2V0aGVyLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2Fsc2EtcHJvamVjdC9hbHNhLWxpYi9wdWxsLzE5XQorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDExOWVmNjAwLi4yMmE0YTg4NSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzY0LDE0ICs3NjQsMyBAQCB0ZXN0ICIkYnVpbGRfc2VxIiA9ICJ5ZXMiICYmIGVjaG8gIiNpbmNsdWRlIDxhbHNhL3NlcS5oPiIgPj4gaW5jbHVkZS9hc291bmRsaWIuaAorIHRlc3QgIiRidWlsZF9zZXEiID0gInllcyIgJiYgZWNobyAiI2luY2x1ZGUgPGFsc2Evc2VxbWlkLmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgdGVzdCAiJGJ1aWxkX3NlcSIgPSAieWVzIiAmJiBlY2hvICIjaW5jbHVkZSA8YWxzYS9zZXFfbWlkaV9ldmVudC5oPiIgPj4gaW5jbHVkZS9hc291bmRsaWIuaAorIGNhdCAiJHNyY2RpciIvaW5jbHVkZS9hc291bmRsaWItdGFpbC5oID4+IGluY2x1ZGUvYXNvdW5kbGliLmgKKy0KKy1kbmwgVGFrZW4gZnJvbSBodHRwczovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlCistY2FzZSAkaG9zdCBpbgorLSAgICotKi1saW51eC1nbnUpCistICAgQUNfTVNHX1JFU1VMVChbRml4aW5nIGxpYnRvb2wgZm9yIC1ycGF0aCBwcm9ibGVtcy5dKQorLSAgIHNlZCA8IGxpYnRvb2wgPiBsaWJ0b29sLTIgXAorLSAgICAgJ3MvXmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMuKiQnLydoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIgLURfX0xJQlRPT0xfSVNfQV9GT09MX18gIi8nCistICAgbXYgbGlidG9vbC0yIGxpYnRvb2wKKy0gICBjaG1vZCA3NTUgbGlidG9vbAorLSA7OworLWVzYWMKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNWEyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDU5NzkyZjQ2N2IzOGQ2YTRjNGRmZmRiMzA1MjhmN2ZiMDNkMjNkOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE3OjEyOjM3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHVhcGk6IE1vdmUgdHlwZWRlZnMgZnJvbSB1YXBpIHRvIHNvdW5kLyoKKworRm9yIGtlZXBpbmcgdWFwaS8qLmggY2xlYW5lci4KKworU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIGluY2x1ZGUvc291bmQvZW11MTBrMS5oICAgICAgfCAgOSArKysrKysrKysKKyBpbmNsdWRlL3NvdW5kL2hkc3AuaCAgICAgICAgIHwgMTAgKysrKysrKysrKworIGluY2x1ZGUvc291bmQvaGRzcG0uaCAgICAgICAgfCAgOCArKysrKysrKworIGluY2x1ZGUvc291bmQvc2IxNl9jc3AuaCAgICAgfCAgNCArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCB8IDEwIC0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oICAgIHwgIDkgLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggICB8ICA4IC0tLS0tLS0tCisgNyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKK2luZGV4IGYwNmVjZWU1Li4wODMyZjk1YiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAorQEAgLTEsMiArMSwxMSBAQAorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9lbXUxMGsxLmg+CisrI2lmbmRlZiBfX2VtdTEwazFfdHlwZV9kZWZpbmVkCisrI2RlZmluZSBfX2VtdTEwazFfdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8gZW11MTBrMV9meDgwMTBfaW5mb190OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBlbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwcl90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIGVtdTEwazFfZng4MDEwX2NvZGVfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSBlbXUxMGsxX2Z4ODAxMF90cmFtX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgZW11MTBrMV9meDgwMTBfcGNtX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBlbXUxMGsxX2N0bF9lbGVtX2lkX3Q7CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL2hkc3AuaAoraW5kZXggNzhmYjc0NWIuLmU4ZjkzMTU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitAQCAtMSwyICsxLDEyIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3AuaD4KKysjaWZuZGVmIF9faGRzcF90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9faGRzcF90eXBlX2RlZmluZWQKKyt0eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitpbmRleCBhZjZkMTllZC4uZDkwOTVkOWYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaAorQEAgLTEsMiArMSwxMCBAQAorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3R5cGVfY29tcGF0Lmg+CisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9oZHNwbS5oPgorKyNpZm5kZWYgX19oZHNwbV90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9faGRzcG1fdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK2luZGV4IDI0MTIxZmNiLi5mZDAyYmM1NiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitAQCAtMSArMSw1IEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS9zYjE2X2NzcC5oPgorKyNpZm5kZWYgX19zYjE2X2NzcF90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9fc2IxNl9jc3BfdHlwZV9kZWZpbmVkCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX3NiX2NzcF9taWNyb2NvZGUgc25kX3NiX2NzcF9taWNyb2NvZGVfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAoraW5kZXggYzExNTBlNGQuLjZiY2Q3NmY2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorQEAgLTM4MiwxNCArMzgyLDQgQEAgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKyAjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU0lOR0xFX1NURVAJX0lPVyAoJ0gnLCAweDgzLCBpbnQpCisgI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0RCR19SRUFECV9JT1IgKCdIJywgMHg4NCwgaW50KQorIAorLSNpZm5kZWYgX19LRVJORUxfXworLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKy10eXBlZGVmIHN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGVtdTEwazFfY3RsX2VsZW1faWRfdDsKKy0jZW5kaWYKKy0KKyAjZW5kaWYgLyogX1VBUElfX1NPVU5EX0VNVTEwSzFfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCitpbmRleCA4OGM5MmEzZi4uN2FjMmQzZjIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oCitAQCAtOTcsMTMgKzk3LDQgQEAgc3RydWN0IGhkc3BfOTYzMl9hZWIgeworIAorICNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfOTYzMl9BRUIgX0lPUignSCcsIDB4NDUsIHN0cnVjdCBoZHNwXzk2MzJfYWViKQorIAorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CistCisgI2VuZGlmIC8qIF9fU09VTkRfSERTUF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAoraW5kZXggMmQ5MWY5MGUuLjNmYmZkOWRjIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitAQCAtMjE5LDEyICsyMTksNCBAQCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworIC8qIHVzZSBpbmRpcmVjdCBhY2Nlc3MgZHVlIHRvIHRoZSBsaW1pdCBvZiBpb2N0bCBiaXQgc2l6ZSAqLworICNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwpCisgCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3BlYWtfcm1zIGhkc3BtX3BlYWtfcm1zX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY29uZmlnX2luZm8gaGRzcG1fY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV92ZXJzaW9uIGhkc3BtX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgc25kX2hkc3BtX2NoYW5uZWxmYWRlcl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX21peGVyIGhkc3BtX21peGVyX3Q7CistCistCisgI2VuZGlmCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZGNkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDRiNmZlMzcyYzY4ZDFmZjUwZTdjMTYxY2ZmYWRlYjI5ODczNGY0OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBwYXVsaHNpYSA8cGF1bGhzaWFAY2hyb21pdW0ub3JnPgorRGF0ZTogU2F0LCAzMCBOb3YgMjAxOSAwMzozNTozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNV0gdWNtOiBVc2Ugc3RybmNtcCB0byBhdm9pZCBhY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5CisKK0lmIHRoZSBsZW5ndGggb2YgdGhlIGlkZW50aWZpZXIgaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHByZWZpeCwKK2FjY2Vzcy1vdXQtb2YtYm91bmRhcnkgd2lsbCBvY2N1ciBpbiBtZW1jbXAoKS4KKworU2lnbmVkLW9mZi1ieTogcGF1bGhzaWEgPHBhdWxoc2lhQGNocm9taXVtLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy91Y20vbWFpbi5jIHwgOCArKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdWNtL21haW4uYyBiL3NyYy91Y20vbWFpbi5jCitpbmRleCBiMGI2ZmZiMy4uMjUyZTUwZDkgMTAwNjQ0CistLS0gYS9zcmMvdWNtL21haW4uYworKysrIGIvc3JjL3VjbS9tYWluLmMKK0BAIC02MSwxMSArNjEsMTMgQEAgc3RhdGljIGludCBjaGVja19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKmlkZW50aWZpZXIsIGNvbnN0IGNoYXIgKnByZWZpeCkKKyB7CisgCWludCBsZW47CisgCistCWlmIChzdHJjbXAoaWRlbnRpZmllciwgcHJlZml4KSA9PSAwKQorLQkJcmV0dXJuIDE7CisgCWxlbiA9IHN0cmxlbihwcmVmaXgpOworLQlpZiAobWVtY21wKGlkZW50aWZpZXIsIHByZWZpeCwgbGVuKSA9PSAwICYmIGlkZW50aWZpZXJbbGVuXSA9PSAnLycpCisrCWlmIChzdHJuY21wKGlkZW50aWZpZXIsIHByZWZpeCwgbGVuKSAhPSAwKQorKwkJcmV0dXJuIDA7CisrCisrCWlmIChpZGVudGlmaWVyW2xlbl0gPT0gMCB8fCBpZGVudGlmaWVyW2xlbl0gPT0gJy8nKQorIAkJcmV0dXJuIDE7CisrCisgCXJldHVybiAwOworIH0KKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTczZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNThmOWRjOWJkMTJhNTFlZmExMmRiYzY3ZTIwMGY0ZDg1Y2QzZGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBGcmksIDI5IE5vdiAyMDE5IDIyOjI4OjI2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSB1Y206IHJldHVybiBhbHdheXMgYXQgbGVhc3QgTlVMTCBpZiBubyBsaXN0IGlzIGF2YWlsYWJsZQorIGluIHNuZF91c2VfY2FzZV9nZXRfbGlzdCgpCisKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy91Y20vbWFpbi5jIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdWNtL21haW4uYyBiL3NyYy91Y20vbWFpbi5jCitpbmRleCAyNTJlNTBkOS4uYjgwZGI2NWYgMTAwNjQ0CistLS0gYS9zcmMvdWNtL21haW4uYworKysrIGIvc3JjL3VjbS9tYWluLmMKK0BAIC0xMTYwLDggKzExNjAsMTAgQEAgc3RhdGljIGludCBnZXRfc3VwY29uX2RldmljZV9saXN0KHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyLAorIAorIAltb2RpZmllciA9IGZpbmRfbW9kaWZpZXIodWNfbWdyLCB2ZXJiLCBuYW1lLCAwKTsKKyAJaWYgKG1vZGlmaWVyKSB7CistCQlpZiAobW9kaWZpZXItPmRldl9saXN0LnR5cGUgIT0gdHlwZSkKKysJCWlmIChtb2RpZmllci0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKSB7CisrCQkJKmxpc3QgPSBOVUxMOworIAkJCXJldHVybiAwOworKwkJfQorIAkJcmV0dXJuIGdldF9saXN0KCZtb2RpZmllci0+ZGV2X2xpc3QubGlzdCwgbGlzdCwKKyAJCQkJc3RydWN0IGRldl9saXN0X25vZGUsIGxpc3QsCisgCQkJCW5hbWUpOworQEAgLTExNjksOCArMTE3MSwxMCBAQCBzdGF0aWMgaW50IGdldF9zdXBjb25fZGV2aWNlX2xpc3Qoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCWRldmljZSA9IGZpbmRfZGV2aWNlKHVjX21nciwgdmVyYiwgbmFtZSwgMCk7CisgCWlmIChkZXZpY2UpIHsKKy0JCWlmIChkZXZpY2UtPmRldl9saXN0LnR5cGUgIT0gdHlwZSkKKysJCWlmIChkZXZpY2UtPmRldl9saXN0LnR5cGUgIT0gdHlwZSkgeworKwkJCSpsaXN0ID0gTlVMTDsKKyAJCQlyZXR1cm4gMDsKKysJCX0KKyAJCXJldHVybiBnZXRfbGlzdCgmZGV2aWNlLT5kZXZfbGlzdC5saXN0LCBsaXN0LAorIAkJCQlzdHJ1Y3QgZGV2X2xpc3Rfbm9kZSwgbGlzdCwKKyAJCQkJbmFtZSk7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmY4YjJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDEwZjM0MDFjZTM1NmE2NzVlMjQ0MDk5MzQ1N2VlN2M4YzdlOWZjZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorRGF0ZTogU3VuLCAxIERlYyAyMDE5IDE0OjI2OjQwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBuYW1laGludDogY29ycmVjdCB0aGUgQGFyZ3MgY2hlY2sKKworQnVnTGluazogaHR0cHM6Ly9naXRodWIuY29tL2Fsc2EtcHJvamVjdC9hbHNhLXBsdWdpbnMvaXNzdWVzLzMKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9jb250cm9sL25hbWVoaW50LmMgfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb250cm9sL25hbWVoaW50LmMgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitpbmRleCA4MDhkZjZiNS4uNDkyN2VmOTcgMTAwNjQ0CistLS0gYS9zcmMvY29udHJvbC9uYW1laGludC5jCisrKysgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitAQCAtMzQ4LDYgKzM0OCwxMiBAQCBzdGF0aWMgaW50IHRyeV9jb25maWcoc25kX2NvbmZpZ190ICpjb25maWcsCisgCQlnb3RvIF9fY2xlYW51cDsKKyAJaWYgKHNuZF9jb25maWdfc2VhcmNoKHJlcywgIkBhcmdzIiwgJmNmZykgPj0gMCkgeworIAkJc25kX2NvbmZpZ19mb3JfZWFjaChpLCBuZXh0LCBjZmcpIHsKKysJCQkvKiBza2lwIHRoZSBhcmd1bWVudCBsaXN0ICovCisrCQkJc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cik7CisrCQkJd2hpbGUgKCpzdHIgJiYgKnN0ciA+PSAnMCcgJiYgKnN0ciA8PSAnOScpIHN0cisrOworKwkJCWlmICgqc3RyID09ICdcMCcpCisrCQkJCWNvbnRpbnVlOworKwkJCS8qIHRoZSBhcmd1bWVudCBkZWZpbml0aW9uIG11c3QgaGF2ZSB0aGUgZGVmYXVsdCAqLworIAkJCWlmIChzbmRfY29uZmlnX3NlYXJjaChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLAorIAkJCQkJICAgICAgImRlZmF1bHQiLCBOVUxMKSA8IDApIHsKKyAJCQkJZXJyID0gLUVJTlZBTDsKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNC1uYW1laGludC1pbXByb3ZlLXRoZS1wcmV2aW91cy1wYXRjaC1jaGVjay10aGUtcmV0dXJuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTkyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNC1uYW1laGludC1pbXByb3ZlLXRoZS1wcmV2aW91cy1wYXRjaC1jaGVjay10aGUtcmV0dXJuLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMWZhNjY2NGQ1ZjBjYzdkMjFlZGNlYmE2Njk1YTRjMjg1NDNjMmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBTdW4sIDEgRGVjIDIwMTkgMTQ6MzA6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIG5hbWVoaW50OiBpbXByb3ZlIHRoZSBwcmV2aW91cyBwYXRjaCAoY2hlY2sgdGhlIHJldHVybmVkCisgdmFsdWUpCisKK1NpZ25lZC1vZmYtYnk6IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KKy0tLQorIHNyYy9jb250cm9sL25hbWVoaW50LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb250cm9sL25hbWVoaW50LmMgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitpbmRleCA0OTI3ZWY5Ny4uNjBjNDhhZTMgMTAwNjQ0CistLS0gYS9zcmMvY29udHJvbC9uYW1laGludC5jCisrKysgYi9zcmMvY29udHJvbC9uYW1laGludC5jCitAQCAtMzQ5LDcgKzM0OSw4IEBAIHN0YXRpYyBpbnQgdHJ5X2NvbmZpZyhzbmRfY29uZmlnX3QgKmNvbmZpZywKKyAJaWYgKHNuZF9jb25maWdfc2VhcmNoKHJlcywgIkBhcmdzIiwgJmNmZykgPj0gMCkgeworIAkJc25kX2NvbmZpZ19mb3JfZWFjaChpLCBuZXh0LCBjZmcpIHsKKyAJCQkvKiBza2lwIHRoZSBhcmd1bWVudCBsaXN0ICovCistCQkJc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cik7CisrCQkJaWYgKHNuZF9jb25maWdfZ2V0X2lkKHNuZF9jb25maWdfaXRlcmF0b3JfZW50cnkoaSksICZzdHIpIDwgMCkKKysJCQkJY29udGludWU7CisgCQkJd2hpbGUgKCpzdHIgJiYgKnN0ciA+PSAnMCcgJiYgKnN0ciA8PSAnOScpIHN0cisrOworIAkJCWlmICgqc3RyID09ICdcMCcpCisgCQkJCWNvbnRpbnVlOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjMGE0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSA5NzZmOGY2MjIzOGYwZDgzNzU4NGFkYzdjMzEwMzViZGIyOWI2ZDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMyBEZWMgMjAxOSAxODoyNzozOSArMDEwMAorU3ViamVjdDogW1BBVENIIDUvNV0gdWNtOiBEbyBub3QgZmFpbCB0byBwYXJzZSBjb25maWdzIG9uIGNhcmRzIHdpdGggYW4gZW1wdHkKKyBDYXJkQ29tcG9uZW50cyBsaXN0cworCitTaW5jZSB0aGUgVUNNIHByb2ZpbGVzIGZvciBhbGwgQmF5LSBhbmQgQ2hlcnJ5LVRyYWlsIFNTVCBjYXJkcyBoYXZlIGJlZW4KK21vdmVkIG92ZXIgdG8gVUNNMiwgcGFyc2luZyB0aGVtIGZhaWxzIHdpdGg6CisKK0FMU0EgbGliIHVjbV9zdWJzLmM6MjIwOih1Y19tZ3JfZ2V0X3N1YnN0aXR1dGVkX3ZhbHVlKSB2YXJpYWJsZSAnJHtDYXJkQ29tcG9uZW50c30nIGlzIG5vdCBkZWZpbmVkIGluIHRoaXMgY29udGV4dCEKKworVGhpcyBjb21wbGV0ZWx5IGJyZWFrcyBhdWRpbyBzdXBwb3J0IG9uIGFsbCBCYXktIGFuZCBDaGVycnktVHJhaWwgZGV2aWNlcy4KKworVGhpcyBpcyBjYXVzZWQgYnkgdGhlc2Ugbm9uLVNPRiBBU29DIHVzaW5nIGNhcmRzIGhhdmluZyBhbiBlbXB0eQorQ2FyZENvbXBvbmVudHMgbGlzdC4gV2hpY2ggaW4gaXRzZWxmIGlzIGZpbmUsIGJ1dCBpcyByZWplY3RlZCBieQordGhlIHVjbV9zdWJzLmMgY29kZS4gVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgdWNtX3N1YnMgY29kZSB0byBhY2NlcHQKK2FuIGVtcHR5IHN0cmluZyBhcyBhIHZhbGlkIHZhbHVlIGZvciBDYXJkQ29tcG9uZW50cyByZXN0b3JpbmcgYXVkaW8KK2Z1bmN0aW9uYWxpdHkgb24gdGhlc2UgYm9hcmRzLgorCitTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS91Y21fc3Vicy5jIHwgMjAgKysrKysrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vdWNtX3N1YnMuYyBiL3NyYy91Y20vdWNtX3N1YnMuYworaW5kZXggMDBhZmE5ZTMuLjkwZTM5NWYwIDEwMDY0NAorLS0tIGEvc3JjL3VjbS91Y21fc3Vicy5jCisrKysgYi9zcmMvdWNtL3VjbV9zdWJzLmMKK0BAIC0yNSw2ICsyNSw3IEBACisgICovCisgCisgI2luY2x1ZGUgInVjbV9sb2NhbC5oIgorKyNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorQEAgLTE0NSwxMCArMTQ2LDExIEBAIHN0YXRpYyBjaGFyICpydmFsX3N5c2ZzKHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyIEFUVFJJQlVURV9VTlVTRUQsIGNvbnN0IGNoYXIKKyAJcmV0dXJuIHN0cmR1cChwYXRoKTsKKyB9CisgCistI2RlZmluZSBNQVRDSF9WQVJJQUJMRShuYW1lLCBpZCwgZmNuKQkJCQkJXAorKyNkZWZpbmUgTUFUQ0hfVkFSSUFCTEUobmFtZSwgaWQsIGZjbiwgZW1wdHlfb2spCQkJCVwKKyAJaWYgKHN0cm5jbXAoKG5hbWUpLCAoaWQpLCBzaXplb2YoaWQpIC0gMSkgPT0gMCkgeyAJCVwKKyAJCXJ2YWwgPSBmY24odWNfbWdyKTsJCQkJCVwKKyAJCWlkc2l6ZSA9IHNpemVvZihpZCkgLSAxOwkJCQlcCisrCQlhbGxvd19lbXB0eSA9IChlbXB0eV9vayk7CQkJCVwKKyAJCWdvdG8gX19ydmFsOwkJCQkJCVwKKyAJfQorIAorQEAgLTE4OSwxMiArMTkxLDE0IEBAIGludCB1Y19tZ3JfZ2V0X3N1YnN0aXR1dGVkX3ZhbHVlKHNuZF91c2VfY2FzZV9tZ3JfdCAqdWNfbWdyLAorIAorIAl3aGlsZSAoKnZhbHVlKSB7CisgCQlpZiAoKnZhbHVlID09ICckJyAmJiAqKHZhbHVlKzEpID09ICd7JykgeworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDb25mTmFtZX0iLCBydmFsX2NvbmZfbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRJZH0iLCBydmFsX2NhcmRfaWQpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkRHJpdmVyfSIsIHJ2YWxfY2FyZF9kcml2ZXIpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTmFtZX0iLCBydmFsX2NhcmRfbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRMb25nTmFtZX0iLCBydmFsX2NhcmRfbG9uZ25hbWUpOworLQkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkQ29tcG9uZW50c30iLCBydmFsX2NhcmRfY29tcG9uZW50cyk7CisrCQkJYm9vbCBhbGxvd19lbXB0eSA9IGZhbHNlOworKworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDb25mTmFtZX0iLCBydmFsX2NvbmZfbmFtZSwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkSWR9IiwgcnZhbF9jYXJkX2lkLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmREcml2ZXJ9IiwgcnZhbF9jYXJkX2RyaXZlciwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTmFtZX0iLCBydmFsX2NhcmRfbmFtZSwgZmFsc2UpOworKwkJCU1BVENIX1ZBUklBQkxFKHZhbHVlLCAiJHtDYXJkTG9uZ05hbWV9IiwgcnZhbF9jYXJkX2xvbmduYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRDb21wb25lbnRzfSIsIHJ2YWxfY2FyZF9jb21wb25lbnRzLCB0cnVlKTsKKyAJCQlNQVRDSF9WQVJJQUJMRTIodmFsdWUsICIke2VudjoiLCBydmFsX2Vudik7CisgCQkJTUFUQ0hfVkFSSUFCTEUyKHZhbHVlLCAiJHtzeXM6IiwgcnZhbF9zeXNmcyk7CisgCQkJZXJyID0gLUVJTlZBTDsKK0BAIC0yMDgsNyArMjEyLDcgQEAgaW50IHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCQkJfQorIAkJCWdvdG8gX19lcnJvcjsKKyBfX3J2YWw6CistCQkJaWYgKHJ2YWwgPT0gTlVMTCB8fCBydmFsWzBdID09ICdcMCcpIHsKKysJCQlpZiAocnZhbCA9PSBOVUxMIHx8ICghYWxsb3dfZW1wdHkgJiYgcnZhbFswXSA9PSAnXDAnKSkgeworIAkJCQlmcmVlKHJ2YWwpOworIAkJCQlzdHJuY3B5KHIsIHZhbHVlLCBpZHNpemUpOworIAkJCQlyW2lkc2l6ZV0gPSAnXDAnOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzYzZWU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7bWQ1PWRkMWJjN2Y0NDg3MjY5MDIyNGQ4OWMxYTk4MDZlNDk1O2JlZ2lubGluZT0xO2VuZGxpbmU9MjYgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTZkNDI5ZGJkY2ZhYTBmMDM0ZDkwN2ZhNmRjMzczNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg4MzczYWVmNTM5NjY4MmYzYTQxMWE2ZDA2NGFlMGFkMTk2YjljOTYyNjlkMGJiOTEyZmJkZWVjOTRiOTk0YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0td2l0aC1zb2Z0ZmxvYXQnLCAnJywgZCl9IFwKLSAgICAtLWRpc2FibGUtcHl0aG9uIFwKLSIKLQotUEFDS0FHRVMgPSsgImFsc2Etc2VydmVyIGFsc2EtY29uZiBhbHNhLWRvYyIKLQotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiIKLQotIyB1cGdyYWRlIHBhdGgKLVJQUk9WSURFU18ke1BOfSA9ICJsaWJhc291bmQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliYXNvdW5kIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJhc291bmQiCi0KLVJQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi0KLVJQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjIuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiYzYxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjIuMS4yLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQUxTQSBzb3VuZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc29ja2V0LmM7bWQ1PTI4NTY3NWI0NWU4M2Y1NzFjNmE5NTdmZTRhYjc5YzkzO2JlZ2lubGluZT05O2VuZGxpbmU9MjQgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLWFuLXVubmVjZXNzYXJ5LWxpYnRvb2wtZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdWNtLVVzZS1zdHJuY21wLXRvLWF2b2lkLWFjY2Vzcy1vdXQtb2YtYm91bmRhcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11Y20tcmV0dXJuLWFsd2F5cy1hdC1sZWFzdC1OVUxMLWlmLW5vLWxpc3QtaXMtYXZhaWxhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmFtZWhpbnQtY29ycmVjdC10aGUtYXJncy1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS11Y20tRG8tbm90LWZhaWwtdG8tcGFyc2UtY29uZmlncy1vbi1jYXJkcy13aXRoLWFuLWVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWFsc2Etc291bmQtLmgtZm9yLWV4dGVybmFsLXByb2dyYW1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdWFwaS1Nb3ZlLXR5cGVkZWZzLWZyb20tdWFwaS10by1zb3VuZC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MmRkZDM2OTg0NjliZWVjMTQ3ZTRmNGE2NzEzNGVhMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NThlMjYwZTM2NzNmMWY2ZmY2YjJkMmMwZGYzZmMyZTQ2OWJlYTViMjk1NzE2M2NlOTZjZTE3ZjIzZTg3OTQzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS13aXRoLXNvZnRmbG9hdCcsICcnLCBkKX0gXAorICAgIC0tZGlzYWJsZS1weXRob24gXAorIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGxpYmF0b3BvbG9neSIKKworRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKK0ZJTEVTX2xpYmF0b3BvbG9neSA9ICIke2xpYmRpcn0vbGliYXRvcG9sb2d5LnNvLioiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJhbHNhLWNvbmYgYWxzYS11Y20tY29uZiIKK1JERVBFTkRTX2xpYmF0b3BvbG9neV9jbGFzcy10YXJnZXQgPSAiYWxzYS10b3BvbG9neS1jb25mIgorCisjIHVwZ3JhZGUgcGF0aAorUlBST1ZJREVTXyR7UE59ID0gImxpYmFzb3VuZCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJhc291bmQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmFzb3VuZCIKKworUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKKworUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NGZjNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLSMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCi0jCi0jIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCi0jIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KLSMKLSMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50Ci0jIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKLSMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzcgXAotICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAotICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImUwY2FmZmJkODQ5YzUxZWQ4MTc1MTM3OGY1NmNiNTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2MTc3MjMwM2RhNTIxYWJiYmYxZDkxZjYzYjQ3MGM0NzkxMzkyZDU3MjhmMjE5MmE0MmQ3MTI5MjA3OGY5MDciCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FhZl0gPSAiLS1lbmFibGUtYWFmLC0tZGlzYWJsZS1hYWYsYXZ0cCIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLS1lbmFibGUtbGliYXYsLS1kaXNhYmxlLWxpYmF2LGxpYmF2IgotUEFDS0FHRUNPTkZJR1ttYWVtby1wbHVnaW5dID0gIi0tZW5hYmxlLW1hZW1vLXBsdWdpbiwtLWRpc2FibGUtbWFlbW8tcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttYWVtby1yZXNvdXJjZS1tYW5hZ2VyXSA9ICItLWVuYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLC0tZGlzYWJsZS1tYWVtby1yZXNvdXJjZS1tYW5hZ2VyLGRidXMiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlYXVkaW8sLS1kaXNhYmxlLXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtc2FtcGxlcmF0ZSwtLWRpc2FibGUtc2FtcGxlcmF0ZSxsaWJzYW1wbGVyYXRlMCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhkc3BdID0gIi0td2l0aC1zcGVleD1saWIsLS13aXRoLXNwZWV4PW5vLHNwZWV4ZHNwIgotCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICdhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mJywgJycsIGQpfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGliYXNvdW5kLW1vZHVsZS0uKiIKLQotIyBUaGUgYWxzYS1wbHVnaW5zIHBhY2thZ2UgZG9lc24ndCBpdHNlbGYgY29udGFpbiBhbnl0aGluZywgaXQganVzdCBkZXBlbmRzIG9uCi0jIGFsbCBidWlsdCBwbHVnaW5zLgotRklMRVNfJHtQTn0gPSAiIgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gJHtEfSR7bGliZGlyfS9hbHNhLWxpYi8qLmxhCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLiBVcHN0cmVhbSBpbnN0YWxscyB0aGUgZmlsZSB1bmRlcgotCQkjIC9ldGMsIGJ1dCB3ZSBtb3ZlIGl0IHVuZGVyIC91c3Ivc2hhcmUgYW5kIGFkZCBhIHN5bWxpbmsgdW5kZXIKLQkJIyAvZXRjIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgotCQkjIGZpbGVzLgotCQltdiAke0R9JHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQkJbG4gLXMgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCByJ15saWJhc291bmRfbW9kdWxlXyguKilcLnNvJCcsICdsaWJhc291bmQtbW9kdWxlLSVzJywgJ0Fsc2EgcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpKQotICAgIGQuc2V0VmFyKCJSREVQRU5EU19hbHNhLXBsdWdpbnMiLCBwYWNrYWdlcykKLX0KLQotIyBNYW55IHBsdWdpbnMgaGF2ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSAocGx1cyBhIHN5bWxpbmsgaW4gL2V0YykgYXNzb2NpYXRlZAotIyB3aXRoIHRoZW0uIFdlIHB1dCB0aGUgcGx1Z2luIGFuZCBpdCdzIGNvbmZpZ3VyYXRpb24gdXN1YWxseSBpbiB0aGUgc2FtZQotIyBwYWNrYWdlLCBidXQgdGhhdCdzIHByb2JsZW1hdGljIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyByZWxhdGVkIHRvCi0jIG11bHRpcGxlIHBsdWdpbnMsIGFzIGlzIHRoZSBjYXNlIHdpdGggdGhlIHB1bHNlLCBvc3MgYW5kIG1hZW1vIHBsdWdpbnMuIEluCi0jIGNhc2Ugb2YgdGhlIHB1bHNlIHBsdWdpbnMsIHdlIGhhdmUgYSBzZXBhcmF0ZSBhbHNhLXBsdWdpbnMtcHVsc2VhdWRpby1jb25mCi0jIHBhY2thZ2UgdGhhdCBkZXBlbmRzIG9uIGFsbCB0aGUgcHVsc2UgcGx1Z2lucywgd2hpY2ggZW5zdXJlcyB0aGF0IGFsbCBwbHVnaW5zCi0jIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBhcmUgaW5zdGFsbGVkLiBUaGUgb3NzIGFuZCBtYWVtbwotIyBjb25maWd1cmF0aW9uIGZpbGVzLCBvbiB0aGUgb3RoZXIgaGFuZCwgYXJlIGluIHRoZSByZXNwZWN0aXZlIHBjbSBwbHVnaW4KLSMgcGFja2FnZXMuIFRoZXJlZm9yZSBpdCdzIHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB3aXRob3V0Ci0jIHRoZSBjdGwgcGx1Z2luIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSByZWZlcmVuY2VzLiBUaGlzIGlzIHVubGlrZWx5IHRvCi0jIGNhdXNlIGJpZyBwcm9ibGVtcywgYnV0IHNvbWUga2luZCBvZiBpbXByb3ZlbWVudCB0byB0aGUgcGFja2FnaW5nIGNvdWxkCi0jIHByb2JhYmx5IGJlIGRvbmUgaGVyZSAoYXQgbGVhc3QgaXQgd291bGQgYmUgZ29vZCB0byBoYW5kbGUgdGhlIGRpZmZlcmVudAotIyBwbHVnaW5zIGluIGEgY29uc2lzdGVudCB3YXkpLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLWN0bC1hcmNhbS1hdiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLWFyY2FtLWF2LWN0bC5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tYTUyICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC1hNTItZW5jb2Rlci5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC1hNTItZW5jb2Rlci5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tYWxzYS1kc3AgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk4LW1hZW1vLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk4LW1hZW1vLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1qYWNrICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1qYWNrLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLWphY2suY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLW9zcyArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtb3NzLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLW9zcy5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tc3BlZXggKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXNwZWV4LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXNwZWV4LmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS11cG1peCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdXBtaXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdXBtaXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVzYi1zdHJlYW0gKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk4LXVzYi1zdHJlYW0uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdmRvd25taXggKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXZkb3dubWl4LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXZkb3dubWl4LmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtcmF0ZS1sYXYuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtcmF0ZS1sYXYuY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1zYW1wbGVyYXRlLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1zcGVleHJhdGUuY29uZiBcCi0iCi0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfbGF2cmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4MmUxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4yLjEuYmIKQEAgLTAsMCArMSwxNzMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNWIxMWNkM2VjOTJlNWY5MTkwZWMzNzg1NjViNTI5ZTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ5NGRlN2FkNDE3MzRiODYwNGE2NTI1MjEyMDBiYjY1NTRmY2YwYzJjMDBmZGJkMzAyYjE3MTBkNzY1NDhkYSIKKworREVQRU5EUyArPSAiYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICAgICBzYW1wbGVyYXRlIFwKKyAgICAgICAgc3BlZXhkc3AgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWFmXSA9ICItLWVuYWJsZS1hYWYsLS1kaXNhYmxlLWFhZixhdnRwIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLWVuYWJsZS1saWJhdiwtLWRpc2FibGUtbGliYXYsbGliYXYiCitQQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgorUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgorCisjIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KKyMgYWxsIGJ1aWx0IHBsdWdpbnMuCitGSUxFU18ke1BOfSA9ICIiCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMuIFVwc3RyZWFtIGluc3RhbGxzIHRoZSBmaWxlIHVuZGVyCisJCSMgL2V0YywgYnV0IHdlIG1vdmUgaXQgdW5kZXIgL3Vzci9zaGFyZSBhbmQgYWRkIGEgc3ltbGluayB1bmRlcgorCQkjIC9ldGMgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCisJCSMgZmlsZXMuCisJCW12ICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCQlsbiAtcyAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsIHInXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCisgICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQorfQorCisjIE1hbnkgcGx1Z2lucyBoYXZlIGEgY29uZmlndXJhdGlvbiBmaWxlIChwbHVzIGEgc3ltbGluayBpbiAvZXRjKSBhc3NvY2lhdGVkCisjIHdpdGggdGhlbS4gV2UgcHV0IHRoZSBwbHVnaW4gYW5kIGl0J3MgY29uZmlndXJhdGlvbiB1c3VhbGx5IGluIHRoZSBzYW1lCisjIHBhY2thZ2UsIGJ1dCB0aGF0J3MgcHJvYmxlbWF0aWMgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHJlbGF0ZWQgdG8KKyMgbXVsdGlwbGUgcGx1Z2lucywgYXMgaXMgdGhlIGNhc2Ugd2l0aCB0aGUgcHVsc2UsIG9zcyBhbmQgbWFlbW8gcGx1Z2lucy4gSW4KKyMgY2FzZSBvZiB0aGUgcHVsc2UgcGx1Z2lucywgd2UgaGF2ZSBhIHNlcGFyYXRlIGFsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYKKyMgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gYWxsIHRoZSBwdWxzZSBwbHVnaW5zLCB3aGljaCBlbnN1cmVzIHRoYXQgYWxsIHBsdWdpbnMKKyMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiByZWZlcmVuY2VzIGFyZSBpbnN0YWxsZWQuIFRoZSBvc3MgYW5kIG1hZW1vCisjIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgaW4gdGhlIHJlc3BlY3RpdmUgcGNtIHBsdWdpbgorIyBwYWNrYWdlcy4gVGhlcmVmb3JlIGl0J3MgcG9zc2libGUgdG8gaW5zdGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHdpdGhvdXQKKyMgdGhlIGN0bCBwbHVnaW4gdGhhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJlZmVyZW5jZXMuIFRoaXMgaXMgdW5saWtlbHkgdG8KKyMgY2F1c2UgYmlnIHByb2JsZW1zLCBidXQgc29tZSBraW5kIG9mIGltcHJvdmVtZW50IHRvIHRoZSBwYWNrYWdpbmcgY291bGQKKyMgcHJvYmFibHkgYmUgZG9uZSBoZXJlIChhdCBsZWFzdCBpdCB3b3VsZCBiZSBnb29kIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50CisjIHBsdWdpbnMgaW4gYSBjb25zaXN0ZW50IHdheSkuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtY3RsLWFyY2FtLWF2ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hNTIgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hbHNhLWRzcCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtbWFlbW8uY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtbWFlbW8uY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWphY2sgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWphY2suY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtamFjay5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tb3NzICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1vc3MuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtb3NzLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1zcGVleCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtc3BlZXguY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtc3BlZXguY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVwbWl4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC11cG1peC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC11cG1peC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXNiLXN0cmVhbSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS12ZG93bm1peCArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdmRvd25taXguY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdmRvd25taXguY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKKyIKKworIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCisjIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6CisjCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCisjCisjIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bworIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKKyMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgorIyB0aGUgc3ltbGlua3MpLgorIworIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgorIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQorIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKKworIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKKyMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KKyMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCisjIFB1bHNlQXVkaW8gcGx1Z2luLgorRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAorIgorCitSREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9wb2xvZ3ktY29uZl8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGQxZjMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9wb2xvZ3ktY29uZl8xLjIuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkFMU0EgdG9wb2xvZ3kgY29uZmlndXJhdGlvbiBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnL3dpa2kvQnVnX1RyYWNraW5nIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGQ3NGQ3NGRiOTc0MTY5NzkwMzM3MmFkMDAxZDNiNCIKKworIyBUaGUgdGFyYmFsbCBkb2Vzbid0IGhhdmUgYW55IHRvcGxldmVsIGRpcmVjdG9yeS4gVGhlIHN1YmRpciBvcHRpb24gdGVsbHMKKyMgQml0YmFrZSB0byB1bnBhY2sgdGhlIGFyY2hpdmUgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL2xpYi8ke0JQfS50YXIuYnoyO3N1YmRpcj0ke0JQfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZmRmNWZmZjNmMWUwNjAzNDU2ZTcxOWY2MDMzZTkyMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNTRhNDNmNDAzMWM5OGJlZjEzNDlhYzcyMmQ4M2IyNjAzZWY0MzlmODFhMWFiMWViYTg4MTRjMjgyNDNhOWIyIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdG9wb2xvZ3kgJHtEfS91c3Ivc2hhcmUvYWxzYQorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKKworRklMRVNfJHtQTn0gPSAiKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11Y20tY29uZl8xLjIuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OWQxZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11Y20tY29uZl8xLjIuMS4yLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZy93aWtpL0J1Z19UcmFja2luZyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjBkNzRkNzRkYjk3NDE2OTc5MDMzNzJhZDAwMWQzYjQiCisKKyMgVGhlIHRhcmJhbGwgZG9lc24ndCBoYXZlIGFueSB0b3BsZXZlbCBkaXJlY3RvcnkuIFRoZSBzdWJkaXIgb3B0aW9uIHRlbGxzCisjIEJpdGJha2UgdG8gdW5wYWNrIHRoZSBhcmNoaXZlIHRvIHRoZSBjb3JyZWN0IHBsYWNlLgorU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MjtzdWJkaXI9JHtCUH0iCitTUkNfVVJJW21kNXN1bV0gPSAiYjdmYTQzY2ZkNzlkZjk3ODE4NGE2MzMzNzY2ZDJhNTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWE4YTg2ODc1ZjRjZjQzMGQ0OWE2NjJhMDRhNmQ2YzYwNmM1YzlkNjdlNTRjYjk0NGM0ZDc3YjI0NTU0MDYyZiIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS91c3Ivc2hhcmUvYWxzYQorICAgICAgICBjcCAtciAke1N9L3VjbSAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdWNtMiAke0R9L3Vzci9zaGFyZS9hbHNhCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorCitGSUxFU18ke1BOfSA9ICIqIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjkuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4yLjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYjVjOGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNlN2Y3YjY3Mzk0ODdmYjcyYzY4OWQ0NjUyMWY5NTgiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgotCi0jIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KLSMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgotIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKLSMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3Ci0jIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgotUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgotCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLSMgYWxzYS11dGlscyBzcGVjaWZpZWQgaW4gU1JDX1VSSSBkdWUgdG8gYWxzYS11dGlscy1zY3JpcHRzIHJlY2lwZQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWVkMjFjM2UyOTZjMDYwNDZjYzk4NmU3MzJmNjI1ZjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRkZjJjYmRkYjRiZDFhNGEyYTY0OTJhMDljMjU4OThiMDhjM2FkNjQ4OTNjMzY1NWJlMTQxOTRjZjBhMjEzYSIKLQotIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAotIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAotIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgotIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKLQotIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscwotIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgotCi1BTFNBX1VUSUxTX1BLR1MgPSAiXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAotICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgotRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQgJHtiaW5kaXJ9L2F4ZmVyIgotRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgotRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgotRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCi1GSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKLUZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCi1GSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgotRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20gKi91ZGV2L3J1bGVzLmQvODktYWxzYS11Y20ucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JIyBJZiB1ZGV2IGlzIGRpc2FibGVkLCB3ZSB0b2xkIGNvbmZpZ3VyZSB0byBpbnN0YWxsIHRoZSBydWxlcwotCSMgaW4gL3Vud2FudGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZW0gbm93LiBJZiB1ZGV2IGlzIGVuYWJsZWQsCi0JIyB0aGVuIC91bndhbnRlZCB3b24ndCBleGlzdCBhbmQgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgotCXJtIC1yZiAke0R9L3Vud2FudGVkCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDRhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjIuMS5iYgpAQCAtMCwwICsxLDEwNSBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xODttZDU9OTZjYzA2YTRjZWJlNWViNzk3NTY4OGZmYjBlNjU2NDIiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKKyMgYWxzYS11dGlscyBzcGVjaWZpZWQgaW4gU1JDX1VSSSBkdWUgdG8gYWxzYS11dGlscy1zY3JpcHRzIHJlY2lwZQorU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYzQ2MjhiYWU3NjMyOTM3ZWFjMmRlNGNmMmEzZGU4MmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIxMTBiYTcxZWY0MWQzMDA5ZGIxYmM0ZGNhZTBjZjc5ZWZiOTljYjU0MjZmYTE5ZDAzMTI0NzA1NjBhMmMwZCIKKworIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAorIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAorIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgorIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKKworIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscworIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgorCitBTFNBX1VUSUxTX1BLR1MgPSAiXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAorICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKKworRklMRVNfJHtQTn0gPSAiIgorQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgorRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgorRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQgJHtiaW5kaXJ9L2F4ZmVyIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC85MC1hbHNhLXJlc3RvcmUucnVsZXMgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgorRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCitGSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20gKi91ZGV2L3J1bGVzLmQvODktYWxzYS11Y20ucnVsZXMgKi8qL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyIKKworU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCitTVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKK1NVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKKworUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCisJIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKKwlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKKworCSMgSWYgdWRldiBpcyBkaXNhYmxlZCwgd2UgdG9sZCBjb25maWd1cmUgdG8gaW5zdGFsbCB0aGUgcnVsZXMKKwkjIGluIC91bndhbnRlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGVtIG5vdy4gSWYgdWRldiBpcyBlbmFibGVkLAorCSMgdGhlbiAvdW53YW50ZWQgd29uJ3QgZXhpc3QgYW5kIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4KKwlybSAtcmYgJHtEfS91bndhbnRlZAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWMxOGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi1TVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCi1ERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAotICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKLSAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2N2RhOTA0Y2Y5ZmRkZWViMTBhMTMwOGZjMGRjMzlkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZWM3Yzg3ZTliNjBkMTc0NTA5ZTI2M2FjNDAxMWI1MjIzODVmZDA3NzUyOTJlMTY3MGVjYzExODBjOWJiNmQ0IgotCi0jIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3Ci1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQotIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCi1QUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKLQotREVQRU5EUyA9ICJuYXNtLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICAgICAgICBhbHNhIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IHpsaWIgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2IHhjYicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21meF0gPSAiLS1lbmFibGUtbGlibWZ4LC0tZGlzYWJsZS1saWJtZngsaW50ZWwtbWVkaWFzZGsiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEgbGlib2dnIgotUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgotUEFDS0FHRUNPTkZJR1t4Y2JdID0gIi0tZW5hYmxlLWxpYnhjYiwtLWRpc2FibGUtbGlieGNiLGxpYnhjYiIKLVBBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCi1VU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKLQotZGVmIGNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KLSAgICByZXR1cm4gJ2dlbmVyaWMnCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAotICAgIC0tZW5hYmxlLXBpYyBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCi0gICAgXAotICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAotICAgIFwKLSAgICAtLWxkPSIke0NDTER9IiBcCi0gICAgLS1jYz0iJHtDQ30iIFwKLSAgICAtLWN4eD0iJHtDWFh9IiBcCi0gICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKLSAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKLSAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKLSAgICAtLWV4dHJhLWNmbGFncz0iJHtDRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke0xERkxBR1N9IiBcCi0gICAgLS1zeXNyb290PSIke1NUQUdJTkdfRElSX1RBUkdFVH0iIFwKLSAgICAke0VYVFJBX0ZGQ09ORn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1zaGxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2ZmbXBlZyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0FWQUlMVFVORVMnLCAnbWlwczMycjInLCAnJywgJy0tZGlzYWJsZS1taXBzZHNwIC0tZGlzYWJsZS1taXBzZHNwcjInLCBkKX0gXAotICAgIC0tY3B1PSR7QGNwdShkKX0gXAotICAgIC0tcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0jIGdvbGQgY3Jhc2hlcyBvbiB4ODYsIGFub3RoZXIgc29sdXRpb24gaXMgdG8gLS1kaXNhYmxlLWFzbSBidXQgdGhhdHMgbW9yZSBoYWNreQotIyBsZC5nb2xkOiBpbnRlcm5hbCBlcnJvciBpbiByZWxvY2F0ZV9zZWN0aW9uLCBhdCAuLi8uLi9nb2xkL2kzODYuY2M6MzY4NAotCi1MREZMQUdTX2FwcGVuZF94ODYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJyAtZnVzZS1sZD1iZmQgJywgJycsIGQpfSIKLQotRVhUUkFfT0VNQUtFID0gIlY9MSIKLQotZG9fY29uZmlndXJlKCkgewotICAgICR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1QQUNLQUdFUyA9KyAibGliYXZjb2RlYyBcCi0gICAgICAgICAgICAgbGliYXZkZXZpY2UgXAotICAgICAgICAgICAgIGxpYmF2ZmlsdGVyIFwKLSAgICAgICAgICAgICBsaWJhdmZvcm1hdCBcCi0gICAgICAgICAgICAgbGliYXZyZXNhbXBsZSBcCi0gICAgICAgICAgICAgbGliYXZ1dGlsIFwKLSAgICAgICAgICAgICBsaWJwb3N0cHJvYyBcCi0gICAgICAgICAgICAgbGlic3dyZXNhbXBsZSBcCi0gICAgICAgICAgICAgbGlic3dzY2FsZSIKLQotRklMRVNfbGliYXZjb2RlYyA9ICIke2xpYmRpcn0vbGliYXZjb2RlYyR7U09MSUJTfSIKLUZJTEVTX2xpYmF2ZGV2aWNlID0gIiR7bGliZGlyfS9saWJhdmRldmljZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2ZmlsdGVyID0gIiR7bGliZGlyfS9saWJhdmZpbHRlciR7U09MSUJTfSIKLUZJTEVTX2xpYmF2Zm9ybWF0ID0gIiR7bGliZGlyfS9saWJhdmZvcm1hdCR7U09MSUJTfSIKLUZJTEVTX2xpYmF2cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYmF2cmVzYW1wbGUke1NPTElCU30iCi1GSUxFU19saWJhdnV0aWwgPSAiJHtsaWJkaXJ9L2xpYmF2dXRpbCR7U09MSUJTfSIKLUZJTEVTX2xpYnBvc3Rwcm9jID0gIiR7bGliZGlyfS9saWJwb3N0cHJvYyR7U09MSUJTfSIKLUZJTEVTX2xpYnN3cmVzYW1wbGUgPSAiJHtsaWJkaXJ9L2xpYnN3cmVzYW1wbGUke1NPTElCU30iCi1GSUxFU19saWJzd3NjYWxlID0gIiR7bGliZGlyfS9saWJzd3NjYWxlJHtTT0xJQlN9IgotCi0jIGZmbXBlZyBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmNvZGVjID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZGV2aWNlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2ZmlsdGVyID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Zm9ybWF0ID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2dXRpbCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnJlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3c2NhbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJwb3N0cHJvYyA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YjA2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIKQEAgLTAsMCArMSwxNjAgQEAKK1NVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKK0RFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCisgICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAorICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKK0xJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjM0ODk1NmZjMmZhYTU3YTJmNzliYmI4NGRlZDlmYmMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiNzU0MjU1YWIwZWUyZWE1ZjY2Zjg4NTBlMWJkNmFkNWNhYzFjZDg1NWQwYTJmNDk5MGZiOGM2NjhiMGQyOWMiCisKKyMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCisjIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKK1BST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgorCitERVBFTkRTID0gIm5hc20tbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIGF2cmVzYW1wbGUgXAorICAgICAgICAgICAgICAgICAgIGFsc2EgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgemxpYiBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYgeGNiJywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmZGstYWFjXSA9ICItLWVuYWJsZS1saWJmZGstYWFjIC0tZW5hYmxlLW5vbmZyZWUsLS1kaXNhYmxlLWxpYmZkay1hYWMsZmRrLWFhYyIKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKK1BBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCitQQUNLQUdFQ09ORklHW21meF0gPSAiLS1lbmFibGUtbGlibWZ4LC0tZGlzYWJsZS1saWJtZngsaW50ZWwtbWVkaWFzZGsiCitQQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEgbGlib2dnIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgorUEFDS0FHRUNPTkZJR1t4MjY1XSA9ICItLWVuYWJsZS1saWJ4MjY1LC0tZGlzYWJsZS1saWJ4MjY1LHgyNjUiCitQQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUtbGlieGNiLC0tZGlzYWJsZS1saWJ4Y2IsbGlieGNiIgorUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKKworIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKK1VTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgorCitkZWYgY3B1KGQpOgorICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6CisgICAgICAgICAgICByZXR1cm4gYXJnWzY6XQorICAgIHJldHVybiAnZ2VuZXJpYycKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCisgICAgLS1lbmFibGUtcGljIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKKyAgICBcCisgICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCisgICAgXAorICAgIC0tbGQ9IiR7Q0NMRH0iIFwKKyAgICAtLWNjPSIke0NDfSIgXAorICAgIC0tY3h4PSIke0NYWH0iIFwKKyAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAorICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAorICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAorICAgIC0tZXh0cmEtY2ZsYWdzPSIke0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKKyAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKyMgZ29sZCBjcmFzaGVzIG9uIHg4NiwgYW5vdGhlciBzb2x1dGlvbiBpcyB0byAtLWRpc2FibGUtYXNtIGJ1dCB0aGF0cyBtb3JlIGhhY2t5CisjIGxkLmdvbGQ6IGludGVybmFsIGVycm9yIGluIHJlbG9jYXRlX3NlY3Rpb24sIGF0IC4uLy4uL2dvbGQvaTM4Ni5jYzozNjg0CisKK0xERkxBR1NfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitFWFRSQV9PRU1BS0UgPSAiVj0xIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK1BBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKKyAgICAgICAgICAgICBsaWJhdmRldmljZSBcCisgICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAorICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKKyAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJhdnV0aWwgXAorICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKKyAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJzd3NjYWxlIgorCitGSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgorRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgorRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgorRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgorRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgorRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgorRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCisKKyMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCmluZGV4IGZlYTJiZTEuLmNiNjY5MmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgIgogCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIC0tZW5hYmxlLWFsdGl2ZWMiLCAiIC0tZGlzYWJsZS1hbHRpdmVjIiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJ2c3giLCAiIC0tZW5hYmxlLXZzeCIsICIgLS1kaXNhYmxlLXZzeCIsIGQpfSIKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29yZTIiLCAiIC0tZW5hYmxlLXNzZSIsICIiLCBkKX0iCiBFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcmVpNyIsICIgLS1lbmFibGUtc3NlIiwgIiIsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjdmMTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMmIwNDM2ZjlhMDc3NzNmYWU4Yzc0ZGY5MDJkNzAyNGU4YmZjMzUxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNCBOb3YgMjAxNSAxNjo0NjoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBpbnRyb3NwZWN0aW9uLm00OiBwcmVmaXggcGtnY29uZmlnIHBhdGhzIHdpdGgKLSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0KLVdlIGNhbid0IHVzZSBvdXIgdHdlYWtlZCBpbnRyb3NwZWN0aW9uLm00IGZyb20gZ29iamVjdC1pbnRyb3NwZWN0aW9uIHRhcmJhbGwKLWJlY2F1c2UgZ3N0cmVhbWVyIGFsc28gZGVmaW5lcyBJTlRST1NQRUNUSU9OX0lOSVQgaW4gaXRzIGludHJvc3BlY3Rpb24ubTQsIHdoaWNoCi1pcyBsYXRlciBzdXBwbGllZCB0byBnLWlyLXNjYW5uZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBjb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgYi9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAotaW5kZXggMTYyYmU1Ny4uOTMzZjk3OSAxMDA2NDQKLS0tLSBhL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci0rKysgYi9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU0LDE0ICs1NCwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICAgICBJTlRST1NQRUNUSU9OX0lOSVQ9ImV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOyBnc3RfaW5pdChOVUxMLE5VTEwpOyIKLSAgICAgZmkKLSAgICAgQUNfU1VCU1QoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAyZDg2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gZDYxNDE0YmMxN2NmMmRmMDE5NTEwYzI5MDgwNDhjNGNhYmY1Y2YwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDA5OjI3OjAxICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFkZCB0YXJnZXRzIGZvciB0ZXN0IGluc3RhbGxhdGlvbgotCi1UYXJnZXRzIHRvIG1ha2Ugc3VyZSB0ZXN0cyBjYW4gYmUgaW5zdGFsbGVkIGFuZCB0aGVuIHJ1biBvbgotdGhlIHRhcmdldC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtzcGVjaWZpYyB0byBvZSBzZXR1cF0KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gfCAyNyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KLWluZGV4IDEzYjkxNmQuLmE2Njc4NmQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0KLUBAIC04LDExICs4LDcgQEAgUkVHSVNUUllfRU5WSVJPTk1FTlQgPSBcCi0gCUdTVF9SRUdJU1RSWT0kKENIRUNLX1JFR0lTVFJZKQotIAotIEFNX1RFU1RTX0VOVklST05NRU5UICs9IFwKLS0gICAgICAgIEdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9IiQoU1RBVEVfSUdOT1JFX0VMRU1FTlRTKSIJXAotLSAgICAgICAgJChSRUdJU1RSWV9FTlZJUk9OTUVOVCkJCQkJCVwKLS0gICAgICAgIEdTVF9QTFVHSU5fU0NBTk5FUl8xXzA9JCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyIFwKLS0gICAgICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPQkJCQkJXAotLSAgICAgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0kKHRvcF9idWlsZGRpcikvcGx1Z2lucwotKyAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIgotIAotIHBsdWdpbmRpciA9ICQobGliZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKLSAKLUBAIC0xNzgsNiArMTc0LDIzIEBAIG5vaW5zdF9QUk9HUkFNUyA9Ci0gCi0gVEVTVFMgPSAkKGNoZWNrX1BST0dSQU1TKQotIAotK2luc3RhbGwtcHRlc3Q6ICQoVEVTVFMpCi0rCUAkKElOU1RBTEwpIC1kICQoREVTVERJUikKLSsJQGZvciBkaXIgaW4gYGZpbmQgLW1heGRlcHRoIDEgLXR5cGUgZGA7IGRvIFwKLSsJCWlmIFsgLXggJCRkaXIvLmxpYnMgXTsgdGhlbiBcCi0rCQkJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpLyQkZGlyOyBcCi0rCQkJJChJTlNUQUxMX1BST0dSQU0pICQkZGlyLy5saWJzLyogJChERVNURElSKS8kJGRpci87IFwKLSsJCWZpIFwKLSsJZG9uZQotKwotK3J1bnRlc3RzOgotKwlAZm9yIGIgaW4gJChURVNUUyk7IGRvIFwKLSsJCWlmIFsgLXggJCRiIF07IHRoZW4gXAotKwkJCSQoQU1fVEVTVFNfRU5WSVJPTk1FTlQpICQoU0hFTEwpIHRlc3QtZHJpdmVyIC0tdGVzdC1uYW1lICIkJGIiIFwKLSsJCQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzICQkYjsgXAotKwkJZmkgXAotKwlkb25lCi0rCi0gbm9pbnN0X0hFQURFUlMgPSBcCi0gCWdzdC9jYXBzbGlzdC5oIFwKLSAJZ3N0L3N0cnVjdF9hcm0uaCBcCi1AQCAtMjIxLDkgKzIzNCw5IEBAIGdzdF9nc3RwcmludGZfTERBREQgPSBcCi0gCSQoTERBREQpCi0gCi0gZWxlbWVudHNfZmRzcmNfQ0ZMQUdTPSQoR1NUX09CSl9DRkxBR1MpICQoQU1fQ0ZMQUdTKSBcCi0tCS1EVEVTVEZJTEU9XCIkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hY1wiCi0rCS1EVEVTVEZJTEU9XCJNYWtlZmlsZVwiCi0gZWxlbWVudHNfZmlsZXNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKLS0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKLSsJLURURVNURklMRT1cIk1ha2VmaWxlXCIKLSAKLSBsaWJzX2NvbnRyb2xsZXJfTERBREQgPSBcCi0gCSQodG9wX2J1aWxkZGlyKS9saWJzL2dzdC9jb250cm9sbGVyL2xpYmdzdGNvbnRyb2xsZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvZ3RrLWRvYy10d2Vha3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2Yzc4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNzAxOGNhMWM0YmYyNmM4MzE3ZTdmY2QyZTdlNGU2NDgxOTVmNDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIwIERlYyAyMDE3IDEzOjAzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lcjogdXNlIGEgcGF0Y2ggaW5zdGVhZCBvZiBzZWQgdG8gZml4IGd0ay1kb2MKLQotUGF0Y2ggdGhlIGd0ay1kb2MgbWFrZWZpbGVzIHNvIHRoYXQgdGhlIHFlbXUgd3JhcHBlciBpcyB1c2VkIHRvIHJ1biB0cmFuc2llbnQKLWJpbmFyaWVzIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4KLQotQWxzbyBzdWJzdGl0dXRlIGEgYm9ndXMgcGx1Z2luIHNjYW5uZXIsIGFzIHRyeWluZyB0byBydW4gdGhlIHJlYWwgb25lIGlzIGNhdXNpbmcKLWlzc3VlcyBkdXJpbmcgYnVpbGQgb24geDg2XzY0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLQotIGNvbW1vbi9ndGstZG9jLm1hayB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29tbW9uL2d0ay1kb2MubWFrIGIvY29tbW9uL2d0ay1kb2MubWFrCi1pbmRleCAzZjgzNDkxLi5lNWNiMGQxIDEwMDY0NAotLS0tIGEvY29tbW9uL2d0ay1kb2MubWFrCi0rKysgYi9jb21tb24vZ3RrLWRvYy5tYWsKLUBAIC02LDExICs2LDExIEBACi0gaWYgR1RLX0RPQ19VU0VfTElCVE9PTAotIEdUS0RPQ19DQyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLSBHVEtET0NfTEQgPSAkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpICQoR1RLRE9DX0RFUFNfTElCUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykKLS1HVEtET0NfUlVOID0gJChMSUJUT09MKSAtLW1vZGU9ZXhlY3V0ZQotK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCi0gZWxzZQotIEdUS0RPQ19DQyA9ICQoQ0MpICQoSU5DTFVERVMpICQoR1RLRE9DX0RFUFNfQ0ZMQUdTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi0gR1RLRE9DX0xEID0gJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQotLUdUS0RPQ19SVU4gPQotK0dUS0RPQ19SVU4gPSAkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyCi0gZW5kaWYKLSAKLSAjIFdlIHNldCBHUEFUSCBoZXJlOyB0aGlzIGdpdmVzIHVzIHNlbWFudGljcyBmb3IgR05VIG1ha2UKLUBAIC0xMDEsNiArMTAxLDcgQEAgc2Nhbi1idWlsZC5zdGFtcDogJChIRklMRV9HTE9CKSAkKENGSUxFX0dMT0IpCi0gCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAotIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKLSAJICAgICQoR1RLRE9DX0VYVFJBX0VOVklST05NRU5UKQkJCQkJXAotKwkgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0iJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2hlbHBlcnMvZ3N0LXBsdWdpbi1zY2FubmVyLWR1bW15IiBcCi0gCSAgICBDQz0iJChHVEtET0NfQ0MpIiBMRD0iJChHVEtET0NfTEQpIiBSVU49IiQoR1RLRE9DX1JVTikiCVwKLSAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKLSAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDczZDBiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1tYWtlIC1rIHJ1bnRlc3RzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzgxZTk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICIgc3BsaXRfZ3N0cmVhbWVyMTBfcGFja2FnZXMgIgotUEFDS0FHRVNQTElURlVOQ1NfYXBwZW5kID0gIiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAiCi0KLXB5dGhvbiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAoKSB7Ci0gICAgZ3N0X2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0nKQotICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCi0gICAgZ2xpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInKQotCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnZ3N0cmVhbWVyICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuc28kJywgZC5leHBhbmQoJyR7UE59LSVzJyksICdHU3RyZWFtZXIgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIrJy9naXJlcG9zaXRvcnktMS4wJywgcidHc3QoLiopLTEuMFwudHlwZWxpYiQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtdHlwZWxpYicpLCAnR1N0cmVhbWVyIHR5cGVsaWIgZmlsZSBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz0nJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLmxhJCcsIGQuZXhwYW5kKCcke1BOfS0lcy1kZXYnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzIChkZXZlbG9wbWVudCBmaWxlcyknLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuYSQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtc3RhdGljZGV2JyksICdHU3RyZWFtZXIgcGx1Z2luIGZvciAlcyAoc3RhdGljIGRldmVsb3BtZW50IGZpbGVzKScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCi19Ci0KLXB5dGhvbiBzZXRfbWV0YXBrZ19yZGVwZW5kcyAoKSB7Ci0gICAgaW1wb3J0IG9zCi0gICAgaW1wb3J0IG9lLnV0aWxzCi0KLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgbWV0YXBrZyA9ICBwbiArICctbWV0YScKLSAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKLSAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQotICAgIGJsYWNrbGlzdCA9IFsgcG4sIHBuICsgJy1tZXRhJyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKLSAgICBmb3IgcGtnIGluIG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgotICAgICAgICBpZiBwa2cgbm90IGluIGJsYWNrbGlzdCBhbmQgcGtnIG5vdCBpbiBtZXRhcGtnX3JkZXBlbmRzOgotICAgICAgICAgICAgIyBTZWUgaWYgdGhlIHBhY2thZ2UgaXMgZW1wdHkgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgaXRzIFBLR0RFU1Qgc3ViZGlyZWN0b3J5LiAKLSAgICAgICAgICAgICMgSWYgdGhpcyBzdWJkaXJlY3RvcnkgaXMgZW1wdHksIHRoZW4gdGhlIHBhY2thZ2UgaXMuCi0gICAgICAgICAgICAjIEVtcHR5IHBhY2thZ2VzIGRvIG5vdCBnZXQgYWRkZWQgdG8gdGhlIG1ldGEgcGFja2FnZSdzIFJERVBFTkRTCi0gICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGlyKToKLSAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBvcy5saXN0ZGlyKHBrZ2Rpcikgb3IgW10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyX2NvbnRlbnRzID0gW10KLSAgICAgICAgICAgIGlzX2VtcHR5ID0gbGVuKGRpcl9jb250ZW50cykgPT0gMAotICAgICAgICAgICAgaWYgbm90IGlzX2VtcHR5OgotICAgICAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgcG4gKyAnIG1ldGEgcGFja2FnZScpCi19Ci0KLSMgZWFjaCBwbHVnaW4tZGV2IGRlcGVuZHMgb24gUE4tZGV2LCBwbHVnaW4tc3RhdGljZGV2IG9uIFBOLXN0YXRpY2RldgotIyBzbyB3ZSBuZWVkIHRoZW0gZXZlbiB3aGVuIGVtcHR5IChsaWtlIGluIGdzdC1wbHVnaW5zLWdvb2QgY2FzZSkKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tYXBwcyAke1BOfS1tZXRhICR7UE59LWdsaWIiCi0KLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9IgotRklMRVNfJHtQTn0tZ2xpYiA9ICIke2RhdGFkaXJ9L2dsaWItMi4wIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtQTn0tbWV0YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGUvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDYwMmVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OTNlNzVmNDcxN2Y3MThhZDIwNGM1NTRkNTc3YjE2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjA3OWI5YjJhMTI3NjA0Yjk4ZTI5NzAzN2RjODg0N2VmNTBmNGNlMmI1MDhhYTJkZjBjYWM1Yjc3NTYyODk5IgotCi1ERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKLQotaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6Ci0jIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6Ci0jIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ5MmZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMi5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkdzdHJlYW1lciB2YWxpZGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJBIFRvb2wgdG8gdGVzdCBHU3RyZWFtZXIgY29tcG9uZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9nc3QtdmFsaWRhdGUvMS4xMi4zLmh0bWwiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ODhmNDJjNTJkNjJlOGM1ZTUwNmRmOTExNTUzZmIyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODYxY2NiOTMyNjIwMGU3NGQ5ODAwN2UzMTZiMzg3ZDQ4ZGQ0OWYwNzJlMGI3OGNiOWQzMzAzZmRlY2ZlZWNhIgorCitERVBFTkRTID0gImpzb24tZ2xpYiBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJnaXQiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvKiAke2xpYmRpcn0vZ3N0LXZhbGlkYXRlLWxhdW5jaGVyLyogJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiIKKworaW5oZXJpdCBwa2djb25maWcgZ2V0dGV4dCBhdXRvdG9vbHMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKyMgV2l0aCBndGstZG9jIGVuYWJsZWQgdGhpcyByZWNpcGUgZmFpbHMgdG8gYnVpbGQsIHNvIGZvcmNpYmx5IGRpc2FibGUgaXQ6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS9nc3QtdmFsaWRhdGUtc2NhbjogbGluZSAxMTc6CisjIFdPUktESVIvYnVpbGQvZG9jcy92YWxpZGF0ZS8ubGlicy9sdC1nc3QtdmFsaWRhdGUtc2NhbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorR1RLRE9DX0VOQUJMRUQgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE1NzFhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA1NGJiYTIyOGVhNTJkMDFmZDg0OTQxZDk3YmUyM2MwM2Y5ODYyYjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotRGF0ZTogU2F0LCA2IEFwciAyMDEzIDAxOjIyOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgeWFzbSBmb3IgbGliYXYgd2hlbiAtLWRpc2FibGUteWFzbQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFNoYW5lIFdhbmcgPHNoYW5lLndhbmdAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMmVkZTg4Li5lZjNjMDUwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNTUsNiArMzU1LDEyIEBAIGVsc2UKLSAgICAgZW1ibGliYXZfY29uZmlndXJlX2FyZ3M9IiRlbWJsaWJhdl9jb25maWd1cmVfYXJncyAtLWVuYWJsZS1ncGwiCi0gICBmaQotCi0rICBBQ19BUkdfRU5BQkxFKHlhc20sCi0rICAgICAgICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS15YXNtXSwgW2Rpc2FibGUgdXNlIG9mIHlhc20gYXNzZW1ibGVyXSldKQotKyAgaWYgdGVzdCAieCRlbmFibGVfeWFzbSIgPSAieG5vIjsgdGhlbgotKyAgICBlbWJsaWJhdl9jb25maWd1cmVfYXJncz0iJGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzIC0tZGlzYWJsZS15YXNtIgotKyAgZmkKLSsKLSAgICMgaWYgd2UgYXJlIGNyb3NzLWNvbXBpbGluZywgdGVsbCBsaWJhdiBzbwotICAgY2FzZSAkaG9zdCBpbgotICAgICAgICphbmRyb2lkKikKLS0tIAotMS44LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4MjcxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gYWFjNTkwMmQzYzljYjM1Yzc3MWU3NjBkMGU0ODc2MjJhYTJlMTE2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIwIEFwciAyMDE3IDEwOjM4OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogY2hlY2sgZm9yIGFybXY3dmUgdmFyaWFudAotCi1PRSBwYXNzZXMgLW1jcHUgYW5kIC1tYXJjaCB2aWEgY21kbGluZSBhbmQgaWYKLXBhY2thZ2UgdHJpZXMgdG8gZGV0ZWN0IG9uZSBvZiBpdCBvd24gdGhlbiBpdAotc2hvdWxkIGJlIGNvbXBhdGlibGUgb3RoZXJ3aXNlLCBuZXdlciBnY2M3KyB3aWxsCi1lcnJvciBvdXQKLQotQ2hlY2sgZm9yIHJlbGV2YW50IHByZXByb2Nlc3NvciBtYWNybyB0byBkZXRlcm1pbmUKLWFybXY3dmUgYXJjaGl0ZWN0dXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZSBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLWluZGV4IDRhNWU0NzcuLjcyNzgxOGUgMTAwNzU1Ci0tLS0gYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi0rKysgYi9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi1AQCAtNDc0NSw2ICs0NzQ1LDcgQEAgZWxpZiBlbmFibGVkIGFybTsgdGhlbgotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2S1o7ICAgICAgdGhlbiBlY2hvIGFybXY2emsKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlpLOyAgICAgIHRoZW4gZWNobyBhcm12NnprCi0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZUMjsgICAgICB0aGVuIGVjaG8gYXJtdjZ0MgotKyAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCBFWFRfSURJVjsgdGhlbiBlY2hvIGFybXY3dmUKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNzsgICAgICAgIHRoZW4gZWNobyBhcm12NwotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3QSAgN19BOyAgdGhlbiBlY2hvIGFybXY3LWEKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggN1M7ICAgICAgIHRoZW4gZWNobyBhcm12Ny1hCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIwYzA3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBjMTcwMGY4NjdmODc2ZWUzM2MxMzBhOGUyOGI2ODhlMmIxZDg5NjYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMTEgQXByIDIwMTggMTc6MTQ6NTUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBob3N0IGNvbnRhbWluYXRpb24KLQotUmVtb3ZlIHJlZmVyZW5jZSB0byBob3N0ICQobGliZGlyKSBmcm9tIC5sYSBmaWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcy1jb21waWxlIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbQotaW5kZXggNmNkYzA0OC4uYTE5ZDI1NSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi1AQCAtNDksNyArNDksNyBAQCBlY2hvICIgIEdFTiAgICAgICQxLmxhIiAmJiBcCi0gIGVjaG8gImxpYnJhcnlfbmFtZXM9JyciICYmIFwKLSAgZWNobyAib2xkX2xpYnJhcnk9JyQxLmEnIiAmJiBcCi0gIGVjaG8gImluaGVyaXRlZF9saW5rZXJfZmxhZ3M9JyciICYmIFwKLS0gZWNobyAiZGVwZW5kZW5jeV9saWJzPScgLUwkKGxpYmRpcikgJChpZiAkMiwkKGZvcmVhY2ggZGVwLCQyLCQoYWJzX2J1aWxkZGlyKS8kKGRlcCkubGEpKSAkKGNhbGwgZmluZF9saWJyYXJ5X2xhLCQzICQoTElCTSksJChMREZMQUdTKSkgJyIgJiYgXAotKyBlY2hvICJkZXBlbmRlbmN5X2xpYnM9JyAtTCAkKGlmICQyLCQoZm9yZWFjaCBkZXAsJDIsJChhYnNfYnVpbGRkaXIpLyQoZGVwKS5sYSkpICQoY2FsbCBmaW5kX2xpYnJhcnlfbGEsJDMgJChMSUJNKSwkKExERkxBR1MpKSAnIiAmJiBcCi0gIGVjaG8gIndlYWtfbGlicmFyeV9uYW1lcz0nJyIgJiYgIFwKLSAgZWNobyAiY3VycmVudD0iICYmIFwKLSAgZWNobyAiYWdlPSIgJiYgXAotQEAgLTU4LDcgKzU4LDcgQEAgZWNobyAiICBHRU4gICAgICAkMS5sYSIgJiYgXAotICBlY2hvICJzaG91bGRub3RsaW5rPW5vIiAmJiBcCi0gIGVjaG8gImRsb3Blbj0nJyIgJiYgXAotICBlY2hvICJkbHByZW9wZW49JyciICYmIFwKLS0gZWNobyAibGliZGlyPSckKGxpYmRpciknIikgPiAkMS5sYQotKyBlY2hvICJsaWJkaXI9JyciKSA+ICQxLmxhCi0gZW5kZWYKLSAKLSBsaWJhdnV0aWwubGE6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZDA0MmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotSXQgd2lsbCBhZGQgLW1pcHM2NHI2IGFuZCAtbWlwczY0cjIgdG8gY21kbGluZSB3aGljaCB3aWxsCi1jYXVzZSBjb25mbGljdHMKLQotaW4gT0Ugd2UgdXNlciBtaXBzMzJyMiBhbmQgbWlwczY0cjIgZm9yIG1pcHMgYXJjaCB2ZXJzaW9ucwotc28gdGhlcmUgaXMgbm8gYmVuZWZpdCBvZiBkZXRlY3RpbmcgaXQgYXV0b21hdGljYWxseSBieQotcG9raW5nIGF0IHRvb2xzIGVzcGVjaWFsbHkgaW4gY3Jvc3MgZW52Ci0KLUZpeGVzIGVycm9ycyBsaWtlCi0KLWxpbmtpbmcgLW1uYW49MjAwOCBtb2R1bGUgd2l0aCBwcmV2aW91cyAtbW5hbj1sZWdhY3kgbW9kdWxlcwotZmFpbGVkIHRvIG1lcmdlIHRhcmdldCBzcGVjaWZpYyBkYXRhIG9mIGZpbGUKLQotLUtoZW0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLUluZGV4OiBnc3QtbGliYXYtMS4xMC4xL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtbGliYXYtMS4xMC4xLm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotKysrIGdzdC1saWJhdi0xLjEwLjEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotQEAgLTU2NTAsMTIgKzU2NTAsOSBAQCBlbGlmIGVuYWJsZWQgbWlwczsgdGhlbgotIAotICAgICAjIEVuYWJsZSBtaW5pbXVtIElTQSBiYXNlZCBvbiBzZWxlY3RlZCBvcHRpb25zCi0gICAgIGlmIGVuYWJsZWQgbWlwczY0OyB0aGVuCi0tICAgICAgICBlbmFibGVkIG1pcHM2NHI2ICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczY0cjYgJyJkbHNhICQwLCAkMCwgJDAsIDEiJyAnLW1pcHM2NHI2JwotICAgICAgICAgZW5hYmxlZCBtaXBzNjRyMiAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHM2NHIyICciZGV4dCAkMCwgJDAsIDAsIDEiJyAnLW1pcHM2NHIyJwotICAgICAgICAgZGlzYWJsZWQgbWlwczY0cjYgJiYgZGlzYWJsZWQgbWlwczY0cjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzNjRyMSAnImRhZGRpICQwLCAkMCwgMCInICctbWlwczY0JwotICAgICBlbHNlCi0tICAgICAgICBlbmFibGVkIG1pcHMzMnI2ICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjYgJyJhdWkgJDAsICQwLCAwIicgJy1taXBzMzJyNicKLS0gICAgICAgIGVuYWJsZWQgbWlwczMycjUgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyNSAnImVyZXRuYyInICctbWlwczMycjUnCi0gICAgICAgICBlbmFibGVkIG1pcHMzMnIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjIgJyJleHQgJDAsICQwLCAwLCAxIicgJy1taXBzMzJyMicKLSAgICAgICAgIGRpc2FibGVkIG1pcHMzMnI2ICYmIGRpc2FibGVkIG1pcHMzMnI1ICYmIGRpc2FibGVkIG1pcHMzMnIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczMycjEgJyJhZGRpICQwLCAkMCwgMCInICctbWlwczMyJwotICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Yjg1MzU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLURlc2NyaXB0aW9uOiBXb3JrYXJvdW5kIHRvIGJ1aWxkIGxpYmF2IGZvciBpNTg2IHdpdGggZ2NjIDQuOS4yIGJ5IGF2b2lkaW5nIG1lbXNldAotQXV0aG9yOiBCZXJuaGFyZCDcYmVsYWNrZXIgPGJlcm5oYXJkdUB2ci13ZWIuZGU+Ci0KLS0tLQotQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgzMDgyCi1MYXN0LVVwZGF0ZTogMjAxNS0wNC0yOAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0gZ3N0LWxpYmF2LTEuNC41Lm9yaWcvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9jYWJhYy5jCi0rKysgZ3N0LWxpYmF2LTEuNC41L2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL2gyNjRfY2FiYWMuYwotQEAgLTIwNTcsNyArMjA1NywxMSBAQCBkZWNvZGVfaW50cmFfbWI6Ci0gICAgICAgICAvLyBJbiBkZWJsb2NraW5nLCB0aGUgcXVhbnRpemVyIGlzIDAKLSAgICAgICAgIGgtPmN1cl9waWMucXNjYWxlX3RhYmxlW21iX3h5XSA9IDA7Ci0gICAgICAgICAvLyBBbGwgY29lZmZzIGFyZSBwcmVzZW50Ci0tICAgICAgICBtZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOwotKyAgICAgICAgLyptZW1zZXQoaC0+bm9uX3plcm9fY291bnRbbWJfeHldLCAxNiwgNDgpOyovCi0rICAgICAgICAgICAgLyogYXZvaWRpbmcgdGhpcyBtZW1zZXQgYmVjYXVzZSBpdCBsZWFkcyBhdCBsZWFzdCB3aXRoIGdjYzQuOS4yIHRvIGVycm9yOiAnYXNtJyBvcGVyYW5kIGhhcyBpbXBvc3NpYmxlIGNvbnN0cmFpbnRzICovCi0rICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ4OyBpKyspIHsKLSsgICAgICAgICAgICAoICh1bnNpZ25lZCBjaGFyKikoaC0+bm9uX3plcm9fY291bnRbbWJfeHldKSApIFtpXSA9IDE2OwotKyAgICAgICAgfQotICAgICAgICAgaC0+Y3VyX3BpYy5tYl90eXBlW21iX3h5XSA9IG1iX3R5cGU7Ci0gICAgICAgICBzbC0+bGFzdF9xc2NhbGVfZGlmZiA9IDA7Ci0gICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDk1NWZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1TVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGliYXYtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ODAyM2Y0YzcxYmJkNzExMDYxZTM1MGZjZDc2YzA5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGE1NzQ4YWU5YTRhN2JlOTY5NjUxMjE4MmVhOWZmYTZlZmUwYmU5Yjc5NzY5MTY1NDhlOWQ0MzgxY2E2MWM0IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIHpsaWIgYnppcDIgeHoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi0jIENBVVRJT046IFVzaW5nIHRoZSBzeXN0ZW0gbGliYXYgaXMgbm90IHJlY29tbWVuZGVkLiBTaW5jZSB0aGUgbGliYXYgQVBJIGlzIGNoYW5naW5nIGFsbCB0aGUgdGltZSwKLSMgY29tcGlsYXRpb24gZXJyb3JzIChhbmQgb3RoZXIsIG1vcmUgc3VidGxlIGJ1Z3MpIGNhbiBoYXBwZW4uIEl0IGlzIHVzdWFsbHkgYmV0dGVyIHRvIHJlbHkgb24gdGhlCi0jIGxpYmF2IGNvcHkgaW5jbHVkZWQgaW4gdGhlIGdzdC1saWJhdiBwYWNrYWdlLgotUEFDS0FHRUNPTkZJRyA/Pz0gIm9yYyB5YXNtIgotCi1QQUNLQUdFQ09ORklHW2dwbF0gPSAiLS1lbmFibGUtZ3BsLC0tZGlzYWJsZS1ncGwsIgotUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLS13aXRoLXN5c3RlbS1saWJhdiwsbGliYXYiCi1QQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIgotUEFDS0FHRUNPTkZJR1t5YXNtXSA9ICItLWVuYWJsZS15YXNtLC0tZGlzYWJsZS15YXNtLG5hc20tbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kIgotCi1HU1RSRUFNRVJfMV8wX0RFQlVHID89ICItLWRpc2FibGUtZGVidWciCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRSA9ICItLXdpdGgtbGliYXYtZXh0cmEtY29uZmlndXJlIgotCi1MSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSRyA9ICItLXRhcmdldC1vcz1saW51eCBcCi0gIC0tY2M9JyR7Q0N9JyAtLWFzPScke0NDfScgLS1sZD0nJHtDQ30nIC0tbm09JyR7Tk19JyAtLWFyPScke0FSfScgXAotICAtLXJhbmxpYj0nJHtSQU5MSUJ9JyBcCi0gICR7R1NUUkVBTUVSXzFfMF9ERUJVR30gXAotICAtLWNyb3NzLXByZWZpeD0nJHtIT1NUX1BSRUZJWH0nIgotCi0jIERpc2FibGUgYXNzZW1ibHkgb3B0aW1pemF0aW9ucyBmb3IgWDMyLCBhcyB0aGlzIGxpYmF2IGxhY2tzIHRoZSBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHX3JlbW92ZV9saW51eC1nbnV4MzIgPSAieWFzbSIKLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT04gPSBcCi0nJHtMSUJBVl9FWFRSQV9DT05GSUdVUkV9PSIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHfSInCi0KLUVYVFJBX09FQ09ORiA9ICIke0xJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT059IgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ5My8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgZmZtcGVnL2xpYmF2IGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJ0ZXh0cmVsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkZWZjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJMaWJhdi1iYXNlZCBHU3RyZWFtZXIgMS54IHBsdWdpbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrICYgKCAoR1BMdjIrICYgTEdQTHYyLjErKSB8IChHUEx2MysgJiBMR1BMdjMrKSApIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWFjZWJkMDEzNmVkZTNhOWJkMzY3MmVlYjMzODgwNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcyNGY2MTI3MDBjMTVhOTMzYzczNTZmYmVhYmIwYmI5NTcxZmI1NTM4ZjhiMWI1NGQ0ZDJkOTQxODhkZWVmMiIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBmZm1wZWciCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCitkZWxldGVfdW51c2VkX2xpYmF2X2NvcHkoKSB7CisgICAgICAgICMgV2hlbiBidWlsZGluZyB3aXRoIG1lc29uLCB0aGUgaW50ZXJuYWwgbGliYXYgY29weSBpcyBub3QgdXNlZC4KKyAgICAgICAgIyBJdCBpcyBvbmx5IHByZXNlbnQgZm9yIGxlZ2FjeSBhdXRvdG9vbHMgYmFzZWQgYnVpbGRzLiBJbiBmdXR1cmUKKyAgICAgICAgIyBHU3RyZWFtZXIgdmVyc2lvbnMsIHRoZSBhdXRvdG9vbHMgc2NyaXB0cyB3aWxsIGJlIGdvbmUsIGFuZCBzbworICAgICAgICAjIHdpbGwgdGhpcyBpbnRlcm5hbCBjb3B5LiBVbnRpbCB0aGVuLCBpdCB3aWxsIGJlIHByZXNlbnQuIEluIG9yZGVyCisgICAgICAgICMgdG8gbWFrZSBzdXJlIHRoaXMgY29weSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIC1zcmMgcGFja2FnZSwganVzdAorICAgICAgICAjIG1hbnVhbGx5IGRlbGV0ZSB0aGUgY29weS4KKyAgICAgICAgcm0gLXJmICIke1N9L2dzdC1saWJzL2V4dC9saWJhdi8iCit9CisKK2RvX3VucGFja1twb3N0ZnVuY3NdICs9ICIgZGVsZXRlX3VudXNlZF9saWJhdl9jb3B5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IyZjcwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVNVTU1BUlkgPSAiT3Blbk1BWCBJTCBwbHVnaW5zIGZvciBHU3RyZWFtZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODk3NzJlN2EyNzdmZDBhYmZjMjUwZWFmOGU0ZTljZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JmNTQxMjFhMmNiYTU3NWQ0NjA4MzNlODEzMjI2NTc4MTI1MmNlMzJjZjViOGY5ZmE4NzUzZTQyYWIyNGJiMiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLUdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCi1HU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS12YWxncmluZCAtLXdpdGgtb214LXRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQotICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106Ci0gICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIwotICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKLSAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcwotICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQotICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKLSAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYwotICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQotfQotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKLSAgICAjIGlmIHRoZXNlIGV4aXN0Ci0Jcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotc2V0X29teF9jb3JlX25hbWUoKSB7Ci0Jc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCi19Ci1kb19pbnN0YWxsW3Bvc3RmdW5jc10gKz0gIiBzZXRfb214X2NvcmVfbmFtZSAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gImxpYm9teGlsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWJkYmQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE2LjIuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKK0hPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MzYyNzg2ZDJiNmNjZTM0ZGUwOGM4NmI3ODQ3Zjc4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWVkNDExYTJlYmE3NTYxMGQ3MjMzMWVlYjE0ZmYwNWUyZGYyOGY0ZmQwNWNiNjkyMjVhODhiZWM2ZDI3NDM5IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgdmlydHVhbC9saWJvbXhpbCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCitHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgorCitFWFRSQV9PRU1FU09OICs9ICItRHRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQorICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106CisgICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIworICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKKyAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcworICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQorICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKKyAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYworICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQorfQorCitzZXRfb214X2NvcmVfbmFtZSgpIHsKKwlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKK30KK2RvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKKworVklSVFVBTC1SVU5USU1FX2xpYm9teGlsID89ICJsaWJvbXhpbCIKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2xpYm9teGlsfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjE4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gOTdhNGQwY2Q3ZGU4Y2ZiZjk4M2FjYzdlMzdiYTJmOGZiNzNjM2UxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9UaW0tUGhpbGlwcD0yME09QzM9QkNsbGVyPz0gPHRpbUBjZW50cmljdWxhci5jb20+CitEYXRlOiBGcmksIDE4IE9jdCAyMDE5IDAwOjM5OjEyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYKKyBpbnRyb3NwZWN0aW9uIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworU2VlIGdzdHJlYW1lci9nc3RyZWFtZXIjNDU0IGFuZCBnc3RyZWFtZXIvZ3N0cmVhbWVyIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbOTdhNGQwY2Q3ZGU4Y2ZiZjk4M2FjYzdlMzdiYTJmOGZiNzNjM2UxOV0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggNjdhZWViNGQwLi43YjMzMTRiZDkgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC00MTEsNyArNDExLDcgQEAgcHl0aG9uMyA9IGltcG9ydCgncHl0aG9uJykuZmluZF9pbnN0YWxsYXRpb24oKQorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lzdHJ5LnJlZycpICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAiIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1ODYxYjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIGY1OWM1MjY5ZjkyZDU5YTUyOTZjYmZlZWI2ODJkNDIwOTVjZDg4YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTggU2VwIDIwMTQgMDI6MjQ6MDcgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkOiBhbGxvdyB0byBkaXNhYmxlIGxpYnNzaDIKLQotbGlic3NoMiBpcyBhdXRvbWF0aWNhbGx5IGxpbmtlZCB0byBpZiBwcmVzZW50LCB0aGlzIHVuZGV0ZXJtaW5lZAotZGVwZW5kZW5jeSBtYXkgY2F1c2UgYnVpbGQgZXJyb3JzIGxpa2U6Ci0KLSAgLi4uL3g4Nl82NC1wb2t5LWxpbnV4LzQuOS4wL2xkOiBjYW5ub3QgZmluZCAtbHNzaDIKLQotbGlic3NoMiBpc24ndCBhbiBvZS1jb3JlIHJlY2lwZSwgc28gYWxsb3cgdG8gZGlzYWJsZSBpdCBmcm9tCi1jb25maWd1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgMjMgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEyLjMvY29uZmlndXJlLmFjCi1AQCAtMTIwMiw2ICsxMjAyLDE1IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKENIUk9NQVBSSU5ULCBbY2hyb20KLSBdKQotIAotIGRubCAqKiogQ3VybCAqKioKLStBQ19BUkdfRU5BQkxFKFtsaWJzc2gyXSwKLSsgICAgIFsgIC0tZW5hYmxlLWxpYnNzaDIJCWVuYWJsZSBMSUJTU0gyIHN1cHBvcnQgQDw6QGRlZmF1bHQ9YXV0b0A6PkBdLAotKyAgICAgW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSsgICAgICAgeWVzKSAgTkVFRF9TU0gyPXllcyA7OwotKyAgICAgICBubykgICBORUVEX1NTSDI9bm8gOzsKLSsgICAgICAgYXV0bykgTkVFRF9TU0gyPWF1dG8gOzsKLSsgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1saWJzc2gyXSkgOzsKLSsgICAgIGVzYWNdLFtORUVEX1NTSDI9YXV0b10pCi0rCi0gdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQ1VSTCwgdHJ1ZSkKLSBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dLCBjdXJsLCBbCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhDVVJMLCBsaWJjdXJsID49IDcuMzUuMCwgWwotQEAgLTEyMjQsMTIgKzEyMzMsMTQgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ1VSTCwgW0N1cmwgcGx1Z2luXQotICAgXSkKLSAgIEFDX1NVQlNUKENVUkxfQ0ZMQUdTKQotICAgQUNfU1VCU1QoQ1VSTF9MSUJTKQotLSAgUEtHX0NIRUNLX01PRFVMRVMoU1NIMiwgbGlic3NoMiA+PSAxLjQuMywgWwotLSAgICBIQVZFX1NTSDI9InllcyIKLS0gICAgQUNfREVGSU5FKEhBVkVfU1NIMiwgMSwgW0RlZmluZSBpZiBsaWJzc2gyIGlzIGF2YWlsYWJsZV0pCi0tICBdLCBbCi0tICAgIEhBVkVfU1NIMj0ibm8iCi0tICBdKQotKyAgaWYgdGVzdCAieCRORUVEX1NTSDIiICE9ICJ4bm8iOyB0aGVuCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFNTSDIsIGxpYnNzaDIgPj0gMS40LjMsIFsKLSsgICAgICBIQVZFX1NTSDI9InllcyIKLSsgICAgICBBQ19ERUZJTkUoSEFWRV9TU0gyLCAxLCBbRGVmaW5lIGlmIGxpYnNzaDIgaXMgYXZhaWxhYmxlXSkKLSsgICAgXSwgWwotKyAgICAgIEhBVkVfU1NIMj0ibm8iCi0rICAgIF0pCi0rICBmaQotICAgQU1fQ09ORElUSU9OQUwoVVNFX1NTSDIsIHRlc3QgIngkSEFWRV9TU0gyIiA9ICJ4eWVzIikKLSAgIEFDX1NVQlNUKFNTSDJfQ0ZMQUdTKQotICAgQUNfU1VCU1QoU1NIMl9MSUJTKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjY1OTFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBmNDFjYWFlMTRiNjE4YWI4MTVlZGUzYzQwOGU3NDgyYjAwMzE2ZTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxMDoyMjozNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBvcGVuY3Y6IHJlc29sdmUgbWlzc2luZyBvcGVuY3YgZGF0YSBkaXIgaW4geW9jdG8gYnVpbGQKKworV2hlbiBZb2N0byBidWlsZCBpcyBwZXJmb3JtZWQsIG9wZW5jdiBzZWFyY2hlcyBmb3IgZGF0YSBkaXIgdXNpbmcgc2ltcGxlCisndGVzdCcgY29tbWFuZCwgdGhpcyBmYWlscyBiZWNhdXNlIHBrZy1jb25maWcgcHJvdmlkZXMgYW4gYWJzb2x1dGUKK3BhdGggb24gdGhlIHRhcmdldCB3aGljaCBuZWVkcyB0byBiZSBwcmVwZW5kZWQgYnkgUEtHX0NPTkZJR19TWVNST09UX0RJUgoraW4gb3JkZXIgZm9yIHRoZSAndGVzdCcgdXRpbGl0eSB0byBwaWNrIHVwIHRoZSBhYnNvbHV0ZSBwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBleHQvb3BlbmN2L21lc29uLmJ1aWxkIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQgYi9leHQvb3BlbmN2L21lc29uLmJ1aWxkCitpbmRleCBmMzhiNTVkZmUuLmEyNjQwMzQ4MiAxMDA2NDQKKy0tLSBhL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKKysrKyBiL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKK0BAIC03OCwyMCArNzgsMjEgQEAgZWxzZQorIGVuZGlmCisgCisgaWYgb3BlbmN2X2ZvdW5kCisrICBwa2djb25mX3N5c3Jvb3QgPSBydW5fY29tbWFuZChweXRob24zLCAnLWMnLCAnaW1wb3J0IG9zOyBwcmludChvcy5lbnZpcm9uLmdldCgiUEtHX0NPTkZJR19TWVNST09UX0RJUiIpKScpLnN0ZG91dCgpLnN0cmlwKCkKKyAgIG9wZW5jdl9wcmVmaXggPSBvcGVuY3ZfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ3ByZWZpeCcpCisgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gWyctRE9QRU5DVl9QUkVGSVg9IicgKyBvcGVuY3ZfcHJlZml4ICsgJyInXQorIAorICAgIyBDaGVjayB0aGUgZGF0YSBkaXIgdXNlZCBieSBvcGVuY3YgZm9yIGl0cyB4bWwgZGF0YSBmaWxlcworICAgIyBVc2UgcHJlZml4IGZyb20gcGtnLWNvbmZpZyB0byBiZSBjb21wYXRpYmxlIHdpdGggY3Jvc3MtY29tcGlsYXRpb24KKy0gIHIgPSBydW5fY29tbWFuZCgndGVzdCcsICctZCcsIG9wZW5jdl9wcmVmaXggKyAnL3NoYXJlL29wZW5jdicpCisrICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3YnKQorICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gJy1ET1BFTkNWX1BBVEhfTkFNRT0ib3BlbmN2IicKKyAgIGVsc2UKKy0gICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvT3BlbkNWJykKKysgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgcGtnY29uZl9zeXNyb290ICsgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvT3BlbkNWJykKKyAgICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICAgIGdzdG9wZW5jdl9jYXJncyArPSAnLURPUEVOQ1ZfUEFUSF9OQU1FPSJPcGVuQ1YiJworICAgICBlbHNlCistICAgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2NCcpCisrICAgICAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgcGtnY29uZl9zeXNyb290ICsgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2NCcpCisgICAgICAgaWYgci5yZXR1cm5jb2RlKCkgPT0gMAorICAgICAgICAgZ3N0b3BlbmN2X2NhcmdzICs9ICctRE9QRU5DVl9QQVRIX05BTUU9Im9wZW5jdjQiJworICAgICAgIGVsc2UKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzMxYmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCi0gICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNGQ0ZDMwZWNjNjdkNWNiYzc3YzA0NzViY2VhMTIxMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NjQ4MWM5NTMzOWI4OTg1YWYxM2JhYzE5YjE4YmM4ZGE3MTE4YzJhN2Q5NDQwZWQ3MGU3ZGNkNzk5YzJhZGI1IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1pbmhlcml0IGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsJywgJycsIGQpfSBcCi0gICAgYnoyIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSB0dG1sIHV2Y2gyNjQgd2VicCBcCi0iCi0KLSMgdGhlIGdsIHBhY2thZ2Vjb25maWcgZW5hYmxlcyBPcGVuR0wgZWxlbWVudHMgdGhhdCBoYXZlbid0IGJlZW4gcG9ydGVkCi0jIHRvIC1iYXNlIHlldC4gVGhleSBkZXBlbmQgb24gdGhlIGdzdGdsIGxpYnJhcnkgaW4gLWJhc2UsIHNvIHdlIGRvCi0jIG5vdCBhZGQgR0wgZGVwZW5kZW5jaWVzIGhlcmUsIHNpbmNlIHRoZXNlIGFyZSB0YWtlbiBjYXJlIG9mIGluIC1iYXNlLgotCi1QQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLS1lbmFibGUtYXNzcmVuZGVyLC0tZGlzYWJsZS1hc3NyZW5kZXIsbGliYXNzIgotUEFDS0FHRUNPTkZJR1tibHVlel0gICAgICAgICAgID0gIi0tZW5hYmxlLWJsdWV6LC0tZGlzYWJsZS1ibHVleixibHVlejUiCi1QQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2N1cmxdICAgICAgICAgICAgPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tkYXNoXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWRhc2gsLS1kaXNhYmxlLWRhc2gsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbZGMxMzk0XSAgICAgICAgICA9ICItLWVuYWJsZS1kYzEzOTQsLS1kaXNhYmxlLWRjMTM5NCxsaWJkYzEzOTQiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgICAgICAgPSAiLS1lbmFibGUtZGlyZWN0ZmIsLS1kaXNhYmxlLWRpcmVjdGZiLGRpcmVjdGZiIgotUEFDS0FHRUNPTkZJR1tkdGxzXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWR0bHMsLS1kaXNhYmxlLWR0bHMsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZmFhY10gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFjLC0tZGlzYWJsZS1mYWFjLGZhYWMiCi1QQUNLQUdFQ09ORklHW2ZhYWRdICAgICAgICAgICAgPSAiLS1lbmFibGUtZmFhZCwtLWRpc2FibGUtZmFhZCxmYWFkMiIKLVBBQ0tBR0VDT05GSUdbZmxpdGVdICAgICAgICAgICA9ICItLWVuYWJsZS1mbGl0ZSwtLWRpc2FibGUtZmxpdGUsZmxpdGUtYWxzYSIKLVBBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItLWVuYWJsZS1mbHVpZHN5bnRoLC0tZGlzYWJsZS1mbHVpZHN5bnRoLGZsdWlkc3ludGgiCi1QQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW5ldHRsZSwtLWRpc2FibGUtaGxzLG5ldHRsZSIKLVBBQ0tBR0VDT05GSUdbZ2xdICAgICAgICAgICAgICA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsIgotUEFDS0FHRUNPTkZJR1trbXNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWttcywtLWRpc2FibGUta21zLGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbbGliZGUyNjVdICAgICAgICA9ICItLWVuYWJsZS1saWJkZTI2NSwtLWRpc2FibGUtbGliZGUyNjUsbGliZGUyNjUiCi1QQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLS1lbmFibGUtbGlibW1zLC0tZGlzYWJsZS1saWJtbXMsbGlibW1zIgotUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi0tZW5hYmxlLWxpYnNzaDIsLS1kaXNhYmxlLWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbGNtczJdICAgICAgICAgICA9ICItLWVuYWJsZS1sY21zMiwtLWRpc2FibGUtbGNtczIsbGNtcyIKLVBBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItLWVuYWJsZS1tb2RwbHVnLC0tZGlzYWJsZS1tb2RwbHVnLGxpYm1vZHBsdWciCi1QQUNLQUdFQ09ORklHW21zZGtdICAgICAgICAgICAgPSAiLS1lbmFibGUtbXNkaywtLWRpc2FibGUtbXNkayxpbnRlbC1tZWRpYXNkayIKLVBBQ0tBR0VDT05GSUdbbmVvbl0gICAgICAgICAgICA9ICItLWVuYWJsZS1uZW9uLC0tZGlzYWJsZS1uZW9uLG5lb24iCi1QQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmFsLC0tZGlzYWJsZS1vcGVuYWwsb3BlbmFsLXNvZnQiCi1QQUNLQUdFQ09ORklHW29wZW5jdl0gICAgICAgICAgPSAiLS1lbmFibGUtb3BlbmN2LC0tZGlzYWJsZS1vcGVuY3Ysb3BlbmN2IgotUEFDS0FHRUNPTkZJR1tvcGVuaDI2NF0gICAgICAgID0gIi0tZW5hYmxlLW9wZW5oMjY0LC0tZGlzYWJsZS1vcGVuaDI2NCxvcGVuaDI2NCIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItLWVuYWJsZS1vcGVuanBlZywtLWRpc2FibGUtb3BlbmpwZWcsb3BlbmpwZWciCi1QQUNLQUdFQ09ORklHW29wZW5tcHRdICAgICAgICAgPSAiLS1lbmFibGUtb3Blbm1wdCwtLWRpc2FibGUtb3Blbm1wdCxsaWJvcGVubXB0IgotIyB0aGUgb3B1cyBlbmNvZGVyL2RlY29kZXIgZWxlbWVudHMgYXJlIG5vdyBpbiB0aGUgLWJhc2UgcGFja2FnZSwKLSMgYnV0IHRoZSBvcHVzIHBhcnNlciByZW1haW5zIGluIC1iYWQKLVBBQ0tBR0VDT05GSUdbb3B1c3BhcnNlXSAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLS1lbmFibGUtcmVzaW5kdmQsLS1kaXNhYmxlLXJlc2luZHZkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgotUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJzdmcsLS1kaXNhYmxlLXJzdmcsbGlicnN2ZyIKLVBBQ0tBR0VDT05GSUdbcnRtcF0gICAgICAgICAgICA9ICItLWVuYWJsZS1ydG1wLC0tZGlzYWJsZS1ydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLXNiYywtLWRpc2FibGUtc2JjLHNiYyIKLVBBQ0tBR0VDT05GSUdbc2N0cF0gICAgICAgICAgICA9ICItLWVuYWJsZS1zY3RwLC0tZGlzYWJsZS1zY3RwLHVzcnNjdHAiCi1QQUNLQUdFQ09ORklHW3Ntb290aHN0cmVhbWluZ10gPSAiLS1lbmFibGUtc21vb3Roc3RyZWFtaW5nLC0tZGlzYWJsZS1zbW9vdGhzdHJlYW1pbmcsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbc25kZmlsZV0gICAgICAgICA9ICItLWVuYWJsZS1zbmRmaWxlLC0tZGlzYWJsZS1zbmRmaWxlLGxpYnNuZGZpbGUxIgotUEFDS0FHRUNPTkZJR1tzcnRwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXNydHAsLS1kaXNhYmxlLXNydHAsbGlic3J0cCIKLVBBQ0tBR0VDT05GSUdbdGlueWFsc2FdICAgICAgICA9ICItLWVuYWJsZS10aW55YWxzYSwtLWRpc2FibGUtdGlueWFsc2EsdGlueWFsc2EiCi1QQUNLQUdFQ09ORklHW3R0bWxdICAgICAgICAgICAgPSAiLS1lbmFibGUtdHRtbCwtLWRpc2FibGUtdHRtbCxsaWJ4bWwyIHBhbmdvIGNhaXJvIgotUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi0tZW5hYmxlLXV2Y2gyNjQsLS1kaXNhYmxlLXV2Y2gyNjQsbGlidXNiMSBsaWJndWRldiIKLVBBQ0tBR0VDT05GSUdbdm9hYWNlbmNdICAgICAgICA9ICItLWVuYWJsZS12b2FhY2VuYywtLWRpc2FibGUtdm9hYWNlbmMsdm8tYWFjZW5jIgotUEFDS0FHRUNPTkZJR1t2b2FtcndiZW5jXSAgICAgID0gIi0tZW5hYmxlLXZvYW1yd2JlbmMsLS1kaXNhYmxlLXZvYW1yd2JlbmMsdm8tYW1yd2JlbmMiCi1QQUNLQUdFQ09ORklHW3Z1bGthbl0gICAgICAgICAgPSAiLS1lbmFibGUtdnVsa2FuLC0tZGlzYWJsZS12dWxrYW4sdnVsa2FuLWxvYWRlciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgotUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKLVBBQ0tBR0VDT05GSUdbd2VicnRjXSAgICAgICAgICA9ICItLWVuYWJsZS13ZWJydGMsLS1kaXNhYmxlLXdlYnJ0YyxsaWJuaWNlIgotUEFDS0FHRUNPTkZJR1t3ZWJydGNkc3BdICAgICAgID0gIi0tZW5hYmxlLXdlYnJ0Y2RzcCwtLWRpc2FibGUtd2VicnRjZHNwLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgotCi0jIHRoZXNlIHBsdWdpbnMgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGxpYnJhcnkgaW4gT0UtY29yZSBvciBtZXRhLW9wZW5lbWJlZGRlZDoKLSMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhcHBsZV9tZWRpYSBpcWEKLSMgICBhbmRyb2lkX21lZGlhIGF2YyBiczJiIGNocm9tYXByaW50IGR0cyBmZGthYWMgZ21lIGdzbSBrYXRlIGxhZHNwYQotIyAgIGx2MiBtcGVnMmVuYyBtcGxleCBtdXNlcGFjayBudmVuYyBvZmEgb3BlbnNsZXMgc291bmR0b3VjaAotIyAgIHNwYW5kc3AgdGVsZXRleHRkZWMgdmRwYXUgd2FzYXBpIHdwZSB4MjY1IHpiYXIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLWRlY2tsaW5rIFwKLSAgICAtLWVuYWJsZS1kdmIgXAotICAgIC0tZW5hYmxlLWZiZGV2IFwKLSAgICAtLWVuYWJsZS1pcGNwaXBlbGluZSBcCi0gICAgLS1lbmFibGUtbmV0c2ltIFwKLSAgICAtLWVuYWJsZS1zaG0gXAotICAgIC0tZGlzYWJsZS1hbmRyb2lkX21lZGlhIFwKLSAgICAtLWRpc2FibGUtYW9tIFwKLSAgICAtLWRpc2FibGUtYXBwbGVfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hdmMgXAotICAgIC0tZGlzYWJsZS1iczJiIFwKLSAgICAtLWRpc2FibGUtY2hyb21hcHJpbnQgXAotICAgIC0tZGlzYWJsZS1kaXJlY3QzZCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtZHRzIFwKLSAgICAtLWRpc2FibGUtZmRrX2FhYyBcCi0gICAgLS1kaXNhYmxlLWdtZSBcCi0gICAgLS1kaXNhYmxlLWdzbSBcCi0gICAgLS1kaXNhYmxlLWlxYSBcCi0gICAgLS1kaXNhYmxlLWthdGUgXAotICAgIC0tZGlzYWJsZS1sYWRzcGEgXAotICAgIC0tZGlzYWJsZS1sdjIgXAotICAgIC0tZGlzYWJsZS1tcGVnMmVuYyBcCi0gICAgLS1kaXNhYmxlLW1wbGV4IFwKLSAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAotICAgIC0tZGlzYWJsZS1udmVuYyBcCi0gICAgLS1kaXNhYmxlLW9mYSBcCi0gICAgLS1kaXNhYmxlLW9wZW5leHIgXAotICAgIC0tZGlzYWJsZS1vcGVubmkyIFwKLSAgICAtLWRpc2FibGUtb3BlbnNsZXMgXAotICAgIC0tZGlzYWJsZS1zb3VuZHRvdWNoIFwKLSAgICAtLWRpc2FibGUtc3BhbmRzcCBcCi0gICAgLS1kaXNhYmxlLXNydCBcCi0gICAgLS1kaXNhYmxlLXRlbGV0ZXh0ZGVjIFwKLSAgICAtLWRpc2FibGUtdmRwYXUgXAotICAgIC0tZGlzYWJsZS13YXNhcGkgXAotICAgIC0tZGlzYWJsZS13aWxkbWlkaSBcCi0gICAgLS1kaXNhYmxlLXdpbmtzIFwKLSAgICAtLWRpc2FibGUtd2luc2NyZWVuY2FwIFwKLSAgICAtLWRpc2FibGUtd3BlIFwKLSAgICAtLWRpc2FibGUteDI2NSBcCi0gICAgLS1kaXNhYmxlLXpiYXIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS1kaXNhYmxlLXlhZGlmIiwgIiIsIGQpfSBcCi0iCi0KLWV4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCi1GSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKLUZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMjI3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMTQ3IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKKyAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVuY3YtcmVzb2x2ZS1taXNzaW5nLW9wZW5jdi1kYXRhLWRpci1pbi15b2N0by1idWlsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjY2M3NDA0MjMwYWZkZGVjNzIzYmJkYjYzYzg5ZmVlYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWNiN2FhMjM4OTU2OWE1MzQzNjYxYWFlNDczZjBhOTQwYTkwYjg3MjAwMTgyNGJjNDdmYTgwNzJhMDQxZTc0IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitpbmhlcml0IGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2RpcmVjdGZiIHZ1bGthbicsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdnbCcsICcnLCBkKX0gXAorICAgIGJ6MiBjbG9zZWRjYXB0aW9uIGN1cmwgZGFzaCBkdGxzIGhscyByc3ZnIHNiYyBzbW9vdGhzdHJlYW1pbmcgc25kZmlsZSBcCisgICAgdHRtbCB1dmNoMjY0IHdlYnAgXAorIgorCitQQUNLQUdFQ09ORklHW2Fzc3JlbmRlcl0gICAgICAgPSAiLURhc3NyZW5kZXI9ZW5hYmxlZCwtRGFzc3JlbmRlcj1kaXNhYmxlZCxsaWJhc3MiCitQQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLURibHVlej1lbmFibGVkLC1EYmx1ZXo9ZGlzYWJsZWQsYmx1ZXo1IgorUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICAgICAgID0gIi1EYnoyPWVuYWJsZWQsLURiejI9ZGlzYWJsZWQsYnppcDIiCitQQUNLQUdFQ09ORklHW2Nsb3NlZGNhcHRpb25dICAgPSAiLURjbG9zZWRjYXB0aW9uPWVuYWJsZWQsLURjbG9zZWRjYXB0aW9uPWRpc2FibGVkLHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1tjdXJsXSAgICAgICAgICAgID0gIi1EY3VybD1lbmFibGVkLC1EY3VybD1kaXNhYmxlZCxjdXJsIgorUEFDS0FHRUNPTkZJR1tkYXNoXSAgICAgICAgICAgID0gIi1EZGFzaD1lbmFibGVkLC1EZGFzaD1kaXNhYmxlZCxsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi1EZGMxMzk0PWVuYWJsZWQsLURkYzEzOTQ9ZGlzYWJsZWQsbGliZGMxMzk0IgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICAgICAgID0gIi1EZGlyZWN0ZmI9ZW5hYmxlZCwtRGRpcmVjdGZiPWRpc2FibGVkLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1tkdGxzXSAgICAgICAgICAgID0gIi1EZHRscz1lbmFibGVkLC1EZHRscz1kaXNhYmxlZCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi1EZmFhYz1lbmFibGVkLC1EZmFhYz1kaXNhYmxlZCxmYWFjIgorUEFDS0FHRUNPTkZJR1tmYWFkXSAgICAgICAgICAgID0gIi1EZmFhZD1lbmFibGVkLC1EZmFhZD1kaXNhYmxlZCxmYWFkMiIKK1BBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItRGZsdWlkc3ludGg9ZW5hYmxlZCwtRGZsdWlkc3ludGg9ZGlzYWJsZWQsZmx1aWRzeW50aCIKK1BBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItRGhscz1lbmFibGVkIC1EaGxzLWNyeXB0bz1uZXR0bGUsLURobHM9ZGlzYWJsZWQsbmV0dGxlIgorIyB0aGUgZ2wgcGFja2FnZWNvbmZpZyBlbmFibGVzIE9wZW5HTCBlbGVtZW50cyB0aGF0IGhhdmVuJ3QgYmVlbiBwb3J0ZWQKKyMgdG8gLWJhc2UgeWV0LiBUaGV5IGRlcGVuZCBvbiB0aGUgZ3N0Z2wgbGlicmFyeSBpbiAtYmFzZSwgc28gd2UgZG8KKyMgbm90IGFkZCBHTCBkZXBlbmRlbmNpZXMgaGVyZSwgc2luY2UgdGhlc2UgYXJlIHRha2VuIGNhcmUgb2YgaW4gLWJhc2UuCitQQUNLQUdFQ09ORklHW2dsXSAgICAgICAgICAgICAgPSAiLURnbD1lbmFibGVkLC1EZ2w9ZGlzYWJsZWQsIgorUEFDS0FHRUNPTkZJR1trbXNdICAgICAgICAgICAgID0gIi1Ea21zPWVuYWJsZWQsLURrbXM9ZGlzYWJsZWQsbGliZHJtIgorUEFDS0FHRUNPTkZJR1tsaWJkZTI2NV0gICAgICAgID0gIi1EbGliZGUyNjU9ZW5hYmxlZCwtRGxpYmRlMjY1PWRpc2FibGVkLGxpYmRlMjY1IgorUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi1EbGlibW1zPWVuYWJsZWQsLURsaWJtbXM9ZGlzYWJsZWQsbGlibW1zIgorUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi1EY3VybC1zc2gyPWVuYWJsZWQsLURjdXJsLXNzaDI9ZGlzYWJsZWQsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbGNtczJdICAgICAgICAgICA9ICItRGNvbG9ybWFuYWdlbWVudD1lbmFibGVkLC1EY29sb3JtYW5hZ2VtZW50PWRpc2FibGVkLGxjbXMiCitQQUNLQUdFQ09ORklHW21vZHBsdWddICAgICAgICAgPSAiLURtb2RwbHVnPWVuYWJsZWQsLURtb2RwbHVnPWRpc2FibGVkLGxpYm1vZHBsdWciCitQQUNLQUdFQ09ORklHW21zZGtdICAgICAgICAgICAgPSAiLURtc2RrPWVuYWJsZWQsLURtc2RrPWRpc2FibGVkLGludGVsLW1lZGlhc2RrIgorUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi1EbmVvbj1lbmFibGVkLC1EbmVvbj1kaXNhYmxlZCxuZW9uIgorUEFDS0FHRUNPTkZJR1tvcGVuYWxdICAgICAgICAgID0gIi1Eb3BlbmFsPWVuYWJsZWQsLURvcGVuYWw9ZGlzYWJsZWQsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW29wZW5jdl0gICAgICAgICAgPSAiLURvcGVuY3Y9ZW5hYmxlZCwtRG9wZW5jdj1kaXNhYmxlZCxvcGVuY3YiCitQQUNLQUdFQ09ORklHW29wZW5oMjY0XSAgICAgICAgPSAiLURvcGVuaDI2ND1lbmFibGVkLC1Eb3BlbmgyNjQ9ZGlzYWJsZWQsb3BlbmgyNjQiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSAgICAgICAgPSAiLURvcGVuanBlZz1lbmFibGVkLC1Eb3BlbmpwZWc9ZGlzYWJsZWQsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW29wZW5tcHRdICAgICAgICAgPSAiLURvcGVubXB0PWVuYWJsZWQsLURvcGVubXB0PWRpc2FibGVkLGxpYm9wZW5tcHQiCisjIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAorIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAorUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi1Eb3B1cz1lbmFibGVkLC1Eb3B1cz1kaXNhYmxlZCxsaWJvcHVzIgorUEFDS0FHRUNPTkZJR1tyZXNpbmR2ZF0gICAgICAgID0gIi1EcmVzaW5kdmQ9ZW5hYmxlZCwtRHJlc2luZHZkPWRpc2FibGVkLGxpYmR2ZHJlYWQgbGliZHZkbmF2IgorUEFDS0FHRUNPTkZJR1tyc3ZnXSAgICAgICAgICAgID0gIi1EcnN2Zz1lbmFibGVkLC1EcnN2Zz1kaXNhYmxlZCxsaWJyc3ZnIgorUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi1EcnRtcD1lbmFibGVkLC1EcnRtcD1kaXNhYmxlZCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbc2JjXSAgICAgICAgICAgICA9ICItRHNiYz1lbmFibGVkLC1Ec2JjPWRpc2FibGVkLHNiYyIKK1BBQ0tBR0VDT05GSUdbc2N0cF0gICAgICAgICAgICA9ICItRHNjdHA9ZW5hYmxlZCwtRHNjdHA9ZGlzYWJsZWQsdXNyc2N0cCIKK1BBQ0tBR0VDT05GSUdbc21vb3Roc3RyZWFtaW5nXSA9ICItRHNtb290aHN0cmVhbWluZz1lbmFibGVkLC1Ec21vb3Roc3RyZWFtaW5nPWRpc2FibGVkLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3NuZGZpbGVdICAgICAgICAgPSAiLURzbmRmaWxlPWVuYWJsZWQsLURzbmRmaWxlPWRpc2FibGVkLGxpYnNuZGZpbGUxIgorUEFDS0FHRUNPTkZJR1tzcnRwXSAgICAgICAgICAgID0gIi1Ec3J0cD1lbmFibGVkLC1Ec3J0cD1kaXNhYmxlZCxsaWJzcnRwIgorUEFDS0FHRUNPTkZJR1t0aW55YWxzYV0gICAgICAgID0gIi1EdGlueWFsc2E9ZW5hYmxlZCwtRHRpbnlhbHNhPWRpc2FibGVkLHRpbnlhbHNhIgorUEFDS0FHRUNPTkZJR1t0dG1sXSAgICAgICAgICAgID0gIi1EdHRtbD1lbmFibGVkLC1EdHRtbD1kaXNhYmxlZCxsaWJ4bWwyIHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi1EdXZjaDI2ND1lbmFibGVkLC1EdXZjaDI2ND1kaXNhYmxlZCxsaWJ1c2IxIGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi1Edm9hYWNlbmM9ZW5hYmxlZCwtRHZvYWFjZW5jPWRpc2FibGVkLHZvLWFhY2VuYyIKK1BBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItRHZvYW1yd2JlbmM9ZW5hYmxlZCwtRHZvYW1yd2JlbmM9ZGlzYWJsZWQsdm8tYW1yd2JlbmMiCitQQUNLQUdFQ09ORklHW3Z1bGthbl0gICAgICAgICAgPSAiLUR2dWxrYW49ZW5hYmxlZCwtRHZ1bGthbj1kaXNhYmxlZCx2dWxrYW4tbG9hZGVyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi1Ed2F5bGFuZD1lbmFibGVkLC1Ed2F5bGFuZD1kaXNhYmxlZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbd2VicF0gICAgICAgICAgICA9ICItRHdlYnA9ZW5hYmxlZCwtRHdlYnA9ZGlzYWJsZWQsbGlid2VicCIKK1BBQ0tBR0VDT05GSUdbd2VicnRjXSAgICAgICAgICA9ICItRHdlYnJ0Yz1lbmFibGVkLC1Ed2VicnRjPWRpc2FibGVkLGxpYm5pY2UiCitQQUNLQUdFQ09ORklHW3dlYnJ0Y2RzcF0gICAgICAgPSAiLUR3ZWJydGNkc3A9ZW5hYmxlZCwtRHdlYnJ0Y2RzcD1kaXNhYmxlZCx3ZWJydGMtYXVkaW8tcHJvY2Vzc2luZyIKK1BBQ0tBR0VDT05GSUdbemJhcl0gICAgICAgICAgICA9ICItRHpiYXI9ZW5hYmxlZCwtRHpiYXI9ZGlzYWJsZWQsemJhciIKKworIyB0aGVzZSBwbHVnaW5zIGN1cnJlbnRseSBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgorIyAgIGFvbSBhbmRyb2lkbWVkaWEgYXBwbGVtZWRpYSBiczJiIGNocm9tYXByaW50IGQzZHZpZGVvc2luaworIyAgIGRpcmVjdHNvdW5kIGR0cyBmZGthYWMgZ21lIGdzbSBpcSBrYXRlIGxhZHNwYSBsdjIgbXBlZzJlbmMKKyMgICBtcGxleCBtdXNlcGFjayBudmRlYyBudmVuYyBvZmEgb3BlbmV4ciBvcGVubmkyIG9wZW5zbGVzCisjICAgc291bmR0b3VjaCBzcGFuZHNwIHNydCB0ZWxldGV4dCB2ZHBhdSB3YXNhcGkgd2lsZG1pZGkgd2lua3MKKyMgICB3aW5zY3JlZW5jYXAgd3BlIHgyNjUKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGRlY2tsaW5rPWVuYWJsZWQgXAorICAgIC1EZHZiPWVuYWJsZWQgXAorICAgIC1EZmJkZXY9ZW5hYmxlZCBcCisgICAgLURpcGNwaXBlbGluZT1lbmFibGVkIFwKKyAgICAtRG5ldHNpbT1lbmFibGVkIFwKKyAgICAtRHNobT1lbmFibGVkIFwKKyAgICAtRGFvbT1kaXNhYmxlZCBcCisgICAgLURhbmRyb2lkbWVkaWE9ZGlzYWJsZWQgXAorICAgIC1EYXBwbGVtZWRpYT1kaXNhYmxlZCBcCisgICAgLURiczJiPWRpc2FibGVkIFwKKyAgICAtRGNocm9tYXByaW50PWRpc2FibGVkIFwKKyAgICAtRGQzZHZpZGVvc2luaz1kaXNhYmxlZCBcCisgICAgLURkaXJlY3Rzb3VuZD1kaXNhYmxlZCBcCisgICAgLURkdHM9ZGlzYWJsZWQgXAorICAgIC1EZmRrYWFjPWRpc2FibGVkIFwKKyAgICAtRGZsaXRlPWRpc2FibGVkIFwKKyAgICAtRGdtZT1kaXNhYmxlZCBcCisgICAgLURnc209ZGlzYWJsZWQgXAorICAgIC1EaXFhPWRpc2FibGVkIFwKKyAgICAtRGthdGU9ZGlzYWJsZWQgXAorICAgIC1EbGFkc3BhPWRpc2FibGVkIFwKKyAgICAtRGx2Mj1kaXNhYmxlZCBcCisgICAgLURtcGVnMmVuYz1kaXNhYmxlZCBcCisgICAgLURtcGxleD1kaXNhYmxlZCBcCisgICAgLURtdXNlcGFjaz1kaXNhYmxlZCBcCisgICAgLURudmRlYz1kaXNhYmxlZCBcCisgICAgLURudmVuYz1kaXNhYmxlZCBcCisgICAgLURvZmE9ZGlzYWJsZWQgXAorICAgIC1Eb3BlbmV4cj1kaXNhYmxlZCBcCisgICAgLURvcGVubmkyPWRpc2FibGVkIFwKKyAgICAtRG9wZW5zbGVzPWRpc2FibGVkIFwKKyAgICAtRHNvdW5kdG91Y2g9ZGlzYWJsZWQgXAorICAgIC1Ec3BhbmRzcD1kaXNhYmxlZCBcCisgICAgLURzcnQ9ZGlzYWJsZWQgXAorICAgIC1EdGVsZXRleHQ9ZGlzYWJsZWQgXAorICAgIC1EdmRwYXU9ZGlzYWJsZWQgXAorICAgIC1Ed2FzYXBpPWRpc2FibGVkIFwKKyAgICAtRHdpbGRtaWRpPWRpc2FibGVkIFwKKyAgICAtRHdpbmtzPWRpc2FibGVkIFwKKyAgICAtRHdpbnNjcmVlbmNhcD1kaXNhYmxlZCBcCisgICAgLUR3cGU9ZGlzYWJsZWQgXAorICAgIC1EeDI2NT1kaXNhYmxlZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItRHlhZGlmPWRpc2FibGVkIiwgIiIsIGQpfSBcCisiCisKK2V4cG9ydCBPUEVOQ1ZfUFJFRklYID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKK0ZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvMS4wL29wZW5jdioiCitGSUxFU18ke1BOfS12b2FtcndiZW5jICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTFkYzE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDYxYTY3MmU3OWM4Y2IxYWVlZWRhNGM5Njg5OTdjNTc3YWM3M2E4ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTIgTWF5IDIwMTcgMTY6NDc6MTIgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyLWdsLnBjLmluOiBkb24ndCBhcHBlbmQgR0xfQ0ZMQUdTIHRvIENGTEFHUwotCi1EZXBlbmRlbmNpZXMnIGluY2x1ZGUgZGlyZWN0b3JpZXMgc2hvdWxkIG5vdCBiZSBhZGRlZCBpbiB0aGlzIHdheTsKLWl0IGNhdXNlcyBwcm9ibGVtcyB3aGVuIGNyb3NzLWNvbXBpbGluZyBpbiBzeXNyb290IGVudmlyb25tZW50cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBwa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLWluZGV4IGRjNjcyYTkuLjhjMjkwYmEgMTAwNjQ0Ci0tLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi0rKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi1AQCAtMTMsNCArMTMsNCBAQCBWZXJzaW9uOiBAVkVSU0lPTkAKLSBSZXF1aXJlczogZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotIAotIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLS1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhYjQ3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMzA2NzJiYTdkMTM0NTUzZTU5OTM1ZGRjODc1MTA0YWRiYTI2ZjI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9UaW0tUGhpbGlwcD0yME09QzM9QkNsbGVyPz0gPHRpbUBjZW50cmljdWxhci5jb20+CitEYXRlOiBUaHUsIDE3IE9jdCAyMDE5IDIwOjA2OjI0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBidWlsZCBnaXIgZXZlbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBpZiBpbnRyb3NwZWN0aW9uCisgd2FzIGVuYWJsZWQgZXhwbGljaXRseQorCitUaGlzIGNhbiBiZSBtYWRlIHRvIHdvcmsgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4KK2Nyb3NzLWNvbXBpbGluZywgc28gZGVmYXVsdCB0byBub3QgYnVpbGRpbmcgZy1pIHN0dWZmCit3aGVuIGNyb3NzLWNvbXBpbGluZywgYnV0IGFsbG93IGl0IGlmIGludHJvc3BlY3Rpb24gd2FzCitlbmFibGVkIGV4cGxpY2l0bHkgdmlhIC1EaW50cm9zcGVjdGlvbj1lbmFibGVkLgorCitTZWUgZ3N0cmVhbWVyL2dzdHJlYW1lciM0NTQgYW5kIGdzdHJlYW1lci9nc3RyZWFtZXIjMzgxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFszMDY3MmJhN2QxMzQ1NTNlNTk5MzVkZGM4NzUxMDRhZGJhMjZmMjVjXQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAyNjRkODRjOWUuLmM4MTQ3YzIyNCAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTM3Miw3ICszNzIsNyBAQCBlbmRpZgorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV9ESVNBQkxFIiwgInllcyIsIFRSVUUpOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZXzEuMCIsICJAMEAiLCBUUlVFKTsnLmZvcm1hdChtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpICsgJy9naXJfZW1wdHlfcmVnaXN0cnkucmVnJykgKyBcCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGNiZmI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLUZyb20gOTYwMWZjMGNkNjc1MWExYWZmZGM4NzE3MjE3Yjk1OTMxZGIzMWQ3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA1IEFwciAyMDE4IDEwOjI2OjI1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBwcmVmaXggY2FsbHMgdG8gcGtnLWNvbmZpZyB3aXRoCi0gUEtHX0NPTkZJR19TWVNST09UX0RJUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSBnc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSAgICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbSAgICB8IDEyICsrKysrKy0tLS0tLQotIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCi0gZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gICAgICAgfCAgNCArKy0tCi0gZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSAgICAgICAgfCAgNCArKy0tCi0gZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbSAgICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSAgICAgIHwgIDggKysrKy0tLS0KLSAxMSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IDFlY2M5NTAuLmQ2NDE3YWMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLUBAIC0zOSw3ICszOSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACi0gCQktLWMtaW5jbHVkZSAiZ3N0L2FsbG9jYXRvcnMvYWxsb2NhdG9ycy5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tbGlidG9vbD0iJHtMSUJUT09MfSIgXAotQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotaW5kZXggNWJmZDYwNi4uNjQ0MTY3NCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC01MSw4ICs1MSw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L2FwcC9hcHAuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLWluZGV4IDdmYjY1ZjIuLjUzNzlmNzkgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTE3NiwxMiArMTc2LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkJLS1jLWluY2x1ZGUgImdzdC9hdWRpby9hdWRpby5oIiBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tbGlicmFyeS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tbGlicmFyeS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTIxMCw4ICsyMTAsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotaW5kZXggMzI3NmQ3Zi4uMGNkZmUyNiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1AQCAtMjA5LDkgKzIwOSw5IEBAIEdzdEdMLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ACi0gCQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0gCQkkKEdMX0NGTEFHUykgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0yNDEsOCArMjQxLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDM1YTZlNDQuLjQ5ZDY4OTQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLUBAIC04OCwxNCArODgsMTQgQEAgR3N0UGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwYnV0aWxzLUBHU1RfQVAKLSAJCS0tYy1pbmNsdWRlICJnc3QvcGJ1dGlscy9wYnV0aWxzLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi0gCQktLWxpYnJhcnk9bGliZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLUBAIC0xMjgsOCArMTI4LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggZTY2ZWY0Zi4uYzhjNTg4YSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotQEAgLTQzLDggKzQzLDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQotICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXAotLSMJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLSMJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTc1LDggKzc1LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKQotICMJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL3RhZyBcCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKLS0jCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0jCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsjCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAjCi0gI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotaW5kZXggNzdlYmVlYi4uOWFlZTc4OCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02Niw4ICs2Niw4IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3J0cC9ydHAuaCIgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC05NCw4ICs5NCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IGRiOWQwZmQuLjc5MDI3Y2IgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC03MSw4ICs3MSw4IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1HaW8tMi4wIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1pbmRleCA2ZTA1Y2M3Li5jN2NmNTE0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTMxLDcgKzMxLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0td2Fybi1hbGwgXAotIAkJLS1jLWluY2x1ZGUgImdzdC9zZHAvc2RwLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWxpYnRvb2w9IiR7TElCVE9PTH0iIFwKLUBAIC01NSw3ICs1NSw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLWluZGV4IGM4NjUxNWIuLjM2M2U2ZDIgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtNjEsOCArNjEsOCBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTwotIAkJLS1jLWluY2x1ZGUgImdzdC90YWcvdGFnLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtODksOCArODksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCi0gCi0gQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLWluZGV4IDBmODQ1NWYuLjhjOTk1NWMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotQEAgLTEyNCw4ICsxMjQsOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQotIAkJLS1jLWluY2x1ZGUgImdzdC92aWRlby92aWRlby5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTUyLDggKzE1Miw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1tZXNvbi1BZGQtdmFyaWFibGVzLWZvci1naXItZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E4NTc0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1tZXNvbi1BZGQtdmFyaWFibGVzLWZvci1naXItZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwyMzUgQEAKK0Zyb20gNjg1NzMxZTk4OWRjMDc0YTRiMGQ0OGI2YzgwNjJlMjczOGYwOTcxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+CitEYXRlOiBNb24sIDIyIE9jdCAyMDE4IDExOjQ0OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgdmFyaWFibGVzIGZvciBnaXIgZmlsZXMKKworQW5kIGZsYXR0ZW4gbGlzdCBvZiBzb3VyY2VzIGZvciBkZXBlbmRlbmNpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbNjg1NzMxZTk4OWRjMDc0YTRiMGQ0OGI2YzgwNjJlMjczOGYwOTcxOV0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9hcHAvbWVzb24uYnVpbGQgICAgICAgIHwgNiArKysrLS0KKyBnc3QtbGlicy9nc3QvYXVkaW8vbWVzb24uYnVpbGQgICAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZCAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkICAgICAgICB8IDYgKysrKy0tCisgZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQgICAgICAgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZCAgICAgICAgfCA2ICsrKystLQorIGdzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQgICAgICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZCAgICAgIHwgNSArKystLQorIDkgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCitpbmRleCAzNjRiYWVlYmYuLjU2ZjE1NmRjMyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9tZXNvbi5idWlsZAorQEAgLTIyLDcgKzIyLDcgQEAgZ3N0YWxsb2NhdG9ycyA9IGxpYnJhcnkoJ2dzdGFsbG9jYXRvcnMtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgID0gW10KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgnIF0KKy0gIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhbGxvY2F0b3JzLAorKyAgYWxsb2NhdG9yc19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0YWxsb2NhdG9ycywKKyAgICAgc291cmNlcyA6IGdzdF9hbGxvY2F0b3JzX3NvdXJjZXMgKyBnc3RfYWxsb2NhdG9yc19oZWFkZXJzLAorICAgICBuYW1lc3BhY2UgOiAnR3N0QWxsb2NhdG9ycycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTMzLDcgKzMzLDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBbZ3N0X2RlcF0KKy0gICldCisrICApCisrICBhbGxvY2F0b3JzX2dlbl9zb3VyY2VzICs9IGFsbG9jYXRvcnNfZ2lyCisgZW5kaWYKKyAKKyBhbGxvY2F0b3JzX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGdzdGFsbG9jYXRvcnMsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hcHAvbWVzb24uYnVpbGQKK2luZGV4IDgxZGQwZjQyYy4uN2E5MGY1ZTEwIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAorQEAgLTMyLDcgKzMyLDcgQEAgZ3N0YXBwID0gbGlicmFyeSgnZ3N0YXBwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYXBwL2FwcC5oJyBdCistICBhcHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhcHAsCisrICBhcHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFwcCwKKyAgICAgc291cmNlcyA6IGFwcF9zb3VyY2VzICsgYXBwX2hlYWRlcnMgKyBbZ3N0YXBwX2NdICsgW2dzdGFwcF9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdEFwcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTQzLDcgKzQzLDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBbZ3N0X2RlcCwgZ3N0X2Jhc2VfZGVwXQorLSAgKV0KKysgICkKKysKKysgIGFwcF9nZW5fc291cmNlcyArPSBhcHBfZ2lyCisgZW5kaWYKKyAKKyBhcHBfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0YXBwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAoraW5kZXggMGU0ZWZhYjJlLi4yYTQ0OWQ0YmYgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAorQEAgLTE1Myw3ICsxNTMsNyBAQCBnc3RhdWRpbyA9IGxpYnJhcnkoJ2dzdGF1ZGlvLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvYXVkaW8vYXVkaW8uaCcgXQorLSAgYXVkaW9fZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RhdWRpbywKKysgIGF1ZGlvX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RhdWRpbywKKyAgICAgc291cmNlcyA6IGF1ZGlvX3NyYyArIGF1ZGlvX2hlYWRlcnMgKyBbZ3N0YXVkaW9fY10gKyBbZ3N0YXVkaW9faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RBdWRpbycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTE2NCw3ICsxNjQsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdGF1ZGlvX2RlcHMKKy0gICldCisrICApCisrICBhdWRpb19nZW5fc291cmNlcyArPSBbYXVkaW9fZ2lyXQorIGVuZGlmCisgCisgYXVkaW9fZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdGF1ZGlvLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKK2luZGV4IDJmYWY2MjYyMi4uMGU5NjcyMmZkIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkCitAQCAtNjMsNyArNjMsNyBAQCBwYnV0aWxzID0gbGlicmFyeSgnZ3N0cGJ1dGlscy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgcGJ1dGlsc19nZW5fc291cmNlcyA9IFtnc3RwYnV0aWxzX2gsIGdzdF9wYnV0aWxzX3ZlcnNpb25faF0KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvcGJ1dGlscy9wYnV0aWxzLmgnIF0KKy0gIHBidXRpbHNfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihwYnV0aWxzLAorKyAgcGJ1dGlsc19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIocGJ1dGlscywKKyAgICAgc291cmNlcyA6IHBidXRpbHNfc291cmNlcyArIHBidXRpbHNfaGVhZGVycyArIFtnc3RwYnV0aWxzX2gsIGdzdF9wYnV0aWxzX3ZlcnNpb25faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RQYnV0aWxzJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNzQsNyArNzQsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHBidXRpbHNfZGVwcworLSAgKV0KKysgICkKKysgIHBidXRpbHNfZ2VuX3NvdXJjZXMgKz0gW3BidXRpbHNfZ2lyXQorIGVuZGlmCisgCisgcGJ1dGlsc19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogcGJ1dGlscywKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3J0cC9tZXNvbi5idWlsZAoraW5kZXggZjQ3ZWM2NTkyLi43ZWE2NjU4ZDUgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCitAQCAtNDksNyArNDksNyBAQCBnc3RfcnRwID0gbGlicmFyeSgnZ3N0cnRwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBydHBfZ2VuX3NvdXJjZXMgPSBbZ3N0cnRwX2VudW1faF0KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvcnRwL3J0cC5oJyBdCistICBydHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RfcnRwLAorKyAgcnRwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RfcnRwLAorICAgICBzb3VyY2VzIDogcnRwX3NvdXJjZXMgKyBydHBfaGVhZGVycyArIFtnc3RydHBfZW51bV9jXSArIFtnc3RydHBfZW51bV9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFJ0cCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTYwLDcgKzYwLDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3RydHBfZGVwcworLSAgKV0KKysgICkKKysKKysgIHJ0cF9nZW5fc291cmNlcyArPSBbcnRwX2dpcl0KKyBlbmRpZgorIAorIAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKK2luZGV4IDI3ZTMwOWQ1YS4uMzYzMmFkY2ViIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9ydHNwL21lc29uLmJ1aWxkCitAQCAtNTQsNyArNTQsNyBAQCBnc3RfcnRzcCA9IGxpYnJhcnkoJ2dzdHJ0c3AtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIHJ0c3BfZ2VuX3NvdXJjZXMgPSBbZ3N0cnRzcF9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9ydHNwL3J0c3AuaCcgXQorLSAgcnRzcF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHNwLAorKyAgcnRzcF9naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0X3J0c3AsCisgICAgIHNvdXJjZXMgOiBydHNwX3NvdXJjZXMgKyBydHNwX2hlYWRlcnMgKyBbZ3N0cnRzcF9jXSArIFtnc3RydHNwX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0UnRzcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTY1LDcgKzY1LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3RydHNwX2RlcHMgKyBbc2RwX2RlcF0KKy0gICldCisrICApCisrICBydHNwX2dlbl9zb3VyY2VzICs9IFtydHNwX2dpcl0KKyBlbmRpZgorIAorIHJ0c3BfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdF9ydHNwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3Qvc2RwL21lc29uLmJ1aWxkCitpbmRleCA2MmMxOGI3MzIuLjI0Y2RiNTI5MyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKK0BAIC0yMyw3ICsyMyw3IEBAIGdzdHNkcCA9IGxpYnJhcnkoJ2dzdHNkcC1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgc2RwX2dlbl9zb3VyY2VzICA9IFtdCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3NkcC9zZHAuaCcgXQorLSAgc2RwX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0c2RwLAorKyAgc2RwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RzZHAsCisgICAgIHNvdXJjZXMgOiBnc3Rfc2RwX3NvdXJjZXMgKyBnc3Rfc2RwX2hlYWRlcnMsCisgICAgIG5hbWVzcGFjZSA6ICdHc3RTZHAnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0zNCw3ICszNCw5IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogcnRzcF9kZXBzCistICApXQorKyAgKQorKworKyAgc2RwX2dlbl9zb3VyY2VzICs9IFtzZHBfZ2lyXQorIGVuZGlmCisgCisgc2RwX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGdzdHNkcCwKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3RhZy9tZXNvbi5idWlsZAoraW5kZXggMjdlNjZmZDYzLi41ZWMzNzM5MmEgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCitAQCAtOTMsNyArOTMsNyBAQCBnc3R0YWcgPSBsaWJyYXJ5KCdnc3R0YWctQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC90YWcvdGFnLmgnIF0KKy0gIHRhZ19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHRhZywKKysgIHRhZ19naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0dGFnLAorICAgICBzb3VyY2VzIDogdGFnX3NvdXJjZXMgKyB0YWdfaGVhZGVycyArIFtnc3R0YWdfaF0gKyBbZ3N0dGFnX2NdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0VGFnJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMTA0LDcgKzEwNCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogdGFnX2RlcHMKKy0gICldCisrICApCisrICB0YWdfZ2VuX3NvdXJjZXMgKz0gW3RhZ19naXJdCisgZW5kaWYKKyAKKyB0YWdfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0dGFnLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAoraW5kZXggNWIzNWUxOTQzLi5iZjc3YWExNTcgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAorQEAgLTEzOCw3ICsxMzgsNyBAQCBnc3R2aWRlbyA9IGxpYnJhcnkoJ2dzdHZpZGVvLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyAKKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3QvdmlkZW8vdmlkZW8uaCcgXQorLSAgdmlkZW9fZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3R2aWRlbywKKysgIHZpZGVvX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3R2aWRlbywKKyAgICAgc291cmNlcyA6IHZpZGVvX3NvdXJjZXMgKyB2aWRlb19oZWFkZXJzICsgW2dzdHZpZGVvX2NdICsgW2dzdHZpZGVvX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0VmlkZW8nLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0xNDksNyArMTQ5LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBnc3R2aWRlb19kZXBzCistICApXQorKyAgKQorKyAgdmlkZW9fZ2VuX3NvdXJjZXMgKz0gW3ZpZGVvX2dpcl0KKyBlbmRpZgorIAorIHZpZGVvX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGggOiBnc3R2aWRlbywKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZmZkYjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGI5NzY1ZWZiMTY5NmUzZTJlNzlmMjk1NWY3NTliZTE5OWZlMzQ4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTc6Mjk6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmlmZjogYWRkIG1pc3NpbmcgaW5jbHVkZSBkaXJlY3RvcmllcyB3aGVuIGNhbGxpbmcKLSBpbnRyb3NwZWN0aW9uIHNjYW5uZXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBtYWlsbGlzdF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBnc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCBjOGM1ODhhLi5jMDk2NDUzIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDEsNiArNDEsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKLSAjCQktLXdhcm4tYWxsIFwKLSAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCi0rIyAgICAgICAgICAgICAgIC1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0rIyAgICAgICAgICAgICAgIC1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3YTBkNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIDUzYjU4Njg0OTFjZjk5ZWU3OTcxOTIzOTVkYmZlYjY5ZGYyM2VkZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTc6MzA6MTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcnRzcDogZHJvcCBpbmNvcnJlY3QgcmVmZXJlbmNlIHRvIGdzdHJlYW1lci1zZHAgaW4KLSBNYWtlZmlsZS5hbQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLWluZGV4IDc5MDI3Y2IuLjI5ODdlMjMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC04Miw3ICs4Miw2IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCi0gCQktLXBrZyBnaW8tMi4wIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tCQktLXBrZyBnc3RyZWFtZXItc2RwLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItcnRzcC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAotIAkJLS1vdXRwdXQgJEAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmN2MyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gOTg2NmY1MWU1ZTA5MTNmMWU0NTNlYjU3NDYxOGJmNzQzMmYzOGNiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDExIEFwciAyMDE4IDEwOjQ2OjMzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCAtbHZjaG9zdGlmIHRvIGxpbmsgd2hlbiB1c2luZyAtbEVHTCBvbiBycGkKLQotVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGxpYkVHTCBmcm9tIHVzZXJsYW5kIHVzZXMgc3lib2xzCi1mcm9tIHRoaXMgbGlicmFyeS4KLQotbGliL2xpYkVHTC5zby4xLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0gIDE1NTI6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotCi1UaGVzZSBzeW1ib2xzIGFyZSBwcm92aWRlZCBieSBsaWJ2Y2hvc3RpZiBhcyBzZWVuIGJlbG93Ci0KLWxpYi9saWJ2Y2hvc3RpZi5zbwotICAgMjUyOiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLSAgIDgwOTogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0KLVdpdGggdGhpcyBleHBsaWNpdCBsaW5rLCBwbHVnaW5zIGZhaWwgZHVyaW5nIHJ1bnRpbWUKLQotKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9teC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCi0oZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b3BlbmdsLnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIG00L2dzdC1nbC5tNCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL200L2dzdC1nbC5tNCBiL200L2dzdC1nbC5tNAotaW5kZXggMWU5NzI0MC4uYWI3Nzc0YyAxMDA2NDQKLS0tLSBhL200L2dzdC1nbC5tNAotKysrIGIvbTQvZ3N0LWdsLm00Ci1AQCAtMjc1LDcgKzI3NSw3IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0w9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfR0xFUzI9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMX1JQST15ZXMKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y29zIC1sdmNoaXFfYXJtIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjaG9zdGlmIC1sdmNvcyAtbHZjaGlxX2FybSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0NGTEFHUz0iIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX0VHTF9SUEksIFsxXSwgW1VzZSBSUGkgcGxhdGZvcm1dKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzOTUwYjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gN2ZmYTZlM2QwMGUxZDhhMDYwZjNmNGMyYmI5YTcyNjkxYWYwNWQ3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEphbiAyMDE2IDEzOjAwOjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UgZ2lvX3VuaXhfMl8wIGRlcGVuZGVuY3kgY29uZmlndXJhYmxlCi0KLVByaW9yIHRvIDEuNy4xLCBnc3QtcGx1Z2lucy1iYXNlIGFjY2VwdGVkIGEgY29uZmlndXJlIG9wdGlvbiB0bwotZGlzYWJsZSBnaW9fdW5peF8yXzAsIGhvd2V2ZXIgaXQgd2FzIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHVzaW5nCi1BR19HU1RfQ0hFQ0tfRkVBVFVSRS4gVGhhdCB3YXMgZml4ZWQgaW4gMS43LjEgYnkgbWFraW5nIHRoZQotZGVwZW5kZW5jeSB1bmNvbmRpdGlvbmFsLgotCi0gIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFzZS9jb21taXQvP2lkPWFhZGVmZWZiYTg4YWZlNGFjYmU2NDQ1NDY1MGYyNGU3Y2U3YzhkNzAKLQotVG8gbWFrZSBidWlsZHMgZGV0ZXJtaW5pc3RpYywgcmUtaW5zdGF0ZSBzdXBwb3J0IGZvcgotLS1kaXNhYmxlLWdpb191bml4XzJfMCwgYnV0IGltcGxlbWVudCBpdCB1c2luZyB0aGUgQUNfQVJHX0VOQUJMRQotaW5zdGVhZCBvZiBBR19HU1RfQ0hFQ0tfRkVBVFVSRS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMTI4MDdiYy4uMzVhMGJmMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODA2LDkgKzgwNiwxNiBAQCBBTV9DT05ESVRJT05BTChIQVZFX1BORywgdGVzdCAieCRIQVZFX1BORyIgPSAieHllcyIpCi0gQU1fQ09ORElUSU9OQUwoSEFWRV9KUEVHLCB0ZXN0ICJ4JEhBVkVfSlBFRyIgPSAieHllcyIpCi0gCi0gZG5sICoqKiBnaW8tdW5peC0yLjAgZm9yIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy90Y3AuYyAqKioKLStBQ19BUkdfRU5BQkxFKFtnaW9fdW5peF8yXzBdLAotKyAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtZ2lvX3VuaXhfMl8wXSxbZGlzYWJsZSB1c2Ugb2YgZ2lvX3VuaXhfMl8wXSldLAotKyAgW10sCi0rICBbZW5hYmxlX2dpb191bml4XzJfMD15ZXNdKQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9naW9fdW5peF8yXzB9IiAhPSAieG5vIjsgdGhlbgotIFBLR19DSEVDS19NT0RVTEVTKEdJT19VTklYXzJfMCwgZ2lvLXVuaXgtMi4wID49IDIuMjQsCi0gICAgIEhBVkVfR0lPX1VOSVhfMl8wPSJ5ZXMiLAotICAgICBIQVZFX0dJT19VTklYXzJfMD0ibm8iKQotK2ZpCi0gQU1fQ09ORElUSU9OQUwoVVNFX0dJT19VTklYXzJfMCwgdGVzdCAieCRIQVZFX0dJT19VTklYXzJfMCIgPSAieHllcyIpCi0gCi0gZG5sICoqKiBmaW5hbGl6ZSBDRkxBR1MsIExERkxBR1MsIExJQlMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTlmYmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXZpdi1mYi1NYWtlLXN1cmUtY29uZmlnLmgtaXMtaW5jbHVkZWQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImI1ZWIwNjUxYmFiNzBiZjE3MTRmMTAzYmRkNjZjZTQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjM2NjNDg5OTMzZDA1OTcwODdjOWJjNmJhMjUxYzkzNjkzZDY0NTU0YmNjNTYzNTM5YTA4NGZhMmQ1ZmNiMmIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgotCi1ERVBFTkRTICs9ICJpc28tY29kZXMgdXRpbC1saW51eCIKLQotaW5oZXJpdCBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1QQUNLQUdFU19EWU5BTUlDID0rICJebGliZ3N0LioiCi0KLSMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKLVBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsZXMyIGVnbCcsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EgeDExJywgZCl9IFwKLSAgICBnaW8tdW5peC0yLjAganBlZyBvZ2cgcGFuZ28gcG5nIHRoZW9yYSB2b3JiaXMgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZWdsJywgJycsIGQpfSBcCi0iCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKLVgxMUVOQUJMRU9QVFMgPSAiLS1lbmFibGUteCAtLWVuYWJsZS14dmlkZW8gLS1lbmFibGUteHNobSIKLVgxMURJU0FCTEVPUFRTID0gIi0tZGlzYWJsZS14IC0tZGlzYWJsZS14dmlkZW8gLS1kaXNhYmxlLXhzaG0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi0tZW5hYmxlLWNkcGFyYW5vaWEsLS1kaXNhYmxlLWNkcGFyYW5vaWEsY2RwYXJhbm9pYSIKLVBBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbZ2JtXSAgICAgICAgICA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL2xpYmdibSBsaWJndWRldiBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2dpby11bml4LTIuMF0gPSAiLS1lbmFibGUtZ2lvX3VuaXhfMl8wLC0tZGlzYWJsZS1naW9fdW5peF8yXzAsZ2xpYi0yLjAiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgICAgPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW2l2b3JiaXNdICAgICAgPSAiLS1lbmFibGUtaXZvcmJpcywtLWRpc2FibGUtaXZvcmJpcyx0cmVtb3IiCi1QQUNLQUdFQ09ORklHW2pwZWddICAgICAgICAgPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi0tZW5hYmxlLW9nZywtLWRpc2FibGUtb2dnLGxpYm9nZyIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKLVBBQ0tBR0VDT05GSUdbb3B1c10gICAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgotUEFDS0FHRUNPTkZJR1twbmddICAgICAgICAgID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSAgICAgICA9ICItLWVuYWJsZS10aGVvcmEsLS1kaXNhYmxlLXRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLS1lbmFibGUtbGlidmlzdWFsLC0tZGlzYWJsZS1saWJ2aXN1YWwsbGlidmlzdWFsIgotUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgICA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0ke0xJQlZ9L2luY2x1ZGUvZ3N0L2dsL2dzdGdsY29uZmlnLmgiCi1GSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QtbGlicy9nc3QvdGFnLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3J0cC8ubGliczoke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTYzYjZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjIuYmIKQEAgLTAsMCArMSw5OSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDUtdml2LWZiLU1ha2Utc3VyZS1jb25maWcuaC1pcy1pbmNsdWRlZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiM2ZkYjMyODIzNTM1Nzk5YTc0OGMxZmMxNGY5NzhlMmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjEzZTczZTJmZTc0YTQxNjY1NTJmOTU3N2MzZGNiMjRiZWQwNzcwMjFiOWM3ZmE2MDBkOTEwZWM2OTg3ODE2YSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCisKK0RFUEVORFMgKz0gImlzby1jb2RlcyB1dGlsLWxpbnV4IHpsaWIiCisKK2luaGVyaXQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKKworUEFDS0FHRVNfRFlOQU1JQyA9KyAiXmxpYmdzdC4qIgorCisjIG9wZW5nbCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKKyMgYW5kIEJTUCBsYXllcnMgdG8gY2hvb3NlIE9wZW5HTCBBUElzL3BsYXRmb3Jtcy93aW5kb3cgc3lzdGVtcworUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAorICAgIGpwZWcgb2dnIHBhbmdvIHBuZyB0aGVvcmEgdm9yYmlzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyIKKworT1BFTkdMX0FQSVMgPSAnb3BlbmdsIGdsZXMyJworT1BFTkdMX1BMQVRGT1JNUyA9ICdlZ2wnCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4diIKK1gxMUVOQUJMRU9QVFMgPSAiLUR4MTE9ZW5hYmxlZCAtRHh2aWRlbz1lbmFibGVkIC1EeHNobT1lbmFibGVkIgorWDExRElTQUJMRU9QVFMgPSAiLUR4MTE9ZGlzYWJsZWQgLUR4dmlkZW89ZGlzYWJsZWQgLUR4c2htPWRpc2FibGVkIgorCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgICAgPSAiLURhbHNhPWVuYWJsZWQsLURhbHNhPWRpc2FibGVkLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tjZHBhcmFub2lhXSAgID0gIi1EY2RwYXJhbm9pYT1lbmFibGVkLC1EY2RwYXJhbm9pYT1kaXNhYmxlZCxjZHBhcmFub2lhIgorUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICAgID0gIi1EZ2wtanBlZz1lbmFibGVkLC1EZ2wtanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi1Eb2dnPWVuYWJsZWQsLURvZ2c9ZGlzYWJsZWQsbGlib2dnIgorUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi1Eb3B1cz1lbmFibGVkLC1Eb3B1cz1kaXNhYmxlZCxsaWJvcHVzIgorUEFDS0FHRUNPTkZJR1twYW5nb10gICAgICAgID0gIi1EcGFuZ289ZW5hYmxlZCwtRHBhbmdvPWRpc2FibGVkLHBhbmdvIgorUEFDS0FHRUNPTkZJR1twbmddICAgICAgICAgID0gIi1EZ2wtcG5nPWVuYWJsZWQsLURnbC1wbmc9ZGlzYWJsZWQsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi1EdGhlb3JhPWVuYWJsZWQsLUR0aGVvcmE9ZGlzYWJsZWQsbGlidGhlb3JhIgorUEFDS0FHRUNPTkZJR1t0cmVtb3JdICAgICAgID0gIi1EdHJlbW9yPWVuYWJsZWQsLUR0cmVtb3I9ZGlzYWJsZWQsdHJlbW9yIgorUEFDS0FHRUNPTkZJR1t2aXN1YWxdICAgICAgID0gIi1EbGlidmlzdWFsPWVuYWJsZWQsLURsaWJ2aXN1YWw9ZGlzYWJsZWQsbGlidmlzdWFsIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgID0gIi1Edm9yYmlzPWVuYWJsZWQsLUR2b3JiaXM9ZGlzYWJsZWQsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKKworIyBPcGVuR0wgQVBJIHBhY2thZ2Vjb25maWdzCitQQUNLQUdFQ09ORklHW29wZW5nbF0gICAgICAgPSAiLCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKK1BBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICA9ICIsLHZpcnR1YWwvbGliZ2xlczIiCisKKyMgT3BlbkdMIHBsYXRmb3JtIHBhY2thZ2Vjb25maWdzCitQQUNLQUdFQ09ORklHW2VnbF0gICAgICAgICAgPSAiLCx2aXJ0dWFsL2VnbCIKKworIyBPcGVuR0wgd2luZG93IHN5c3RlbXMgKGV4Y2VwdCBmb3IgWDExKQorUEFDS0FHRUNPTkZJR1tnYm1dICAgICAgICAgID0gIiwsdmlydHVhbC9saWJnYm0gbGliZ3VkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgID0gIiwsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2Rpc3BtYW54XSAgICAgPSAiLCx2aXJ0dWFsL2xpYm9teGlsIgorCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnIHgxMScsICcnLCBkKX0iCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYm0nLCAnIGdibScsICcnLCBkKX0iCitPUEVOR0xfV0lOU1lTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd3YXlsYW5kJywgJyB3YXlsYW5kJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Rpc3BtYW54JywgJyBkaXNwbWFueCcsICcnLCBkKX0iCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURnbC1ncmFwaGVuZT1kaXNhYmxlZCBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX2FwaScsIGQuZ2V0VmFyKCdPUEVOR0xfQVBJUycpLCBkKX0gXAorICAgICR7QGdldF9vcGVuZ2xfY21kbGluZV9saXN0KCdnbF9wbGF0Zm9ybScsIGQuZ2V0VmFyKCdPUEVOR0xfUExBVEZPUk1TJyksIGQpfSBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX3dpbnN5cycsIGQuZ2V0VmFyKCdPUEVOR0xfV0lOU1lTJyksIGQpfSBcCisiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKK0dUS0RPQ19NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR1RLRE9DX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9pbmNsdWRlL2dzdC9nbC9nc3RnbGNvbmZpZy5oIgorRklMRVNfJHtNTFBSRUZJWH1saWJnc3R0YWctMS4wICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhc2UvMS4wL2xpY2Vuc2UtdHJhbnNsYXRpb25zLmRpY3QiCisKK2RlZiBnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdChzd2l0Y2hfbmFtZSwgb3B0aW9ucywgZCk6CisgICAgc2VsZWN0ZWRfb3B0aW9ucyA9IFtdCisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9ucy5zcGxpdCgpOgorICAgICAgICAgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCBvcHRpb24sIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgICAgICAgICBzZWxlY3RlZF9vcHRpb25zICs9IFtvcHRpb25dCisgICAgaWYgc2VsZWN0ZWRfb3B0aW9uczoKKyAgICAgICAgcmV0dXJuICctRCcgKyBzd2l0Y2hfbmFtZSArICc9JyArICcsJy5qb2luKHNlbGVjdGVkX29wdGlvbnMpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE5NmUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYwpAQCAtMCwwICsxLDUwIEBACisjIFRoaXMgLmluYyBmaWxlIGNvbnRhaW5zIHRoZSBjb21tb24gc2V0dXAgZm9yIHRoZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy0qCisjIHBsdWdpbiBzZXQgcmVjaXBlcy4KKworIyBTVU1NQVJZIGlzIHNldCBpbiB0aGUgYWN0dWFsIC5iYiByZWNpcGVzCitIT01FUEFHRSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnbGliLTIuMC1uYXRpdmUiCisKK2luaGVyaXQgZ2V0dGV4dCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYworCisjIE9yYyBlbmFibGVzIHJ1bnRpbWUgSklUIGNvbXBpbGF0aW9uIG9mIGRhdGEgcHJvY2Vzc2luZyByb3V0aW5lcyBmcm9tIE9yYworIyBieXRlY29kZSB0byBTSU1EIGluc3RydWN0aW9ucyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIChjdXJyZW50bHkgU1NFLCBNTVgsCisjIE1JUFMsIEFsdGl2ZWMgYW5kIE5FT04gYXJlIHN1cHBvcnRlZCkuCisjIFRoaXMgdmFsdWUgaXMgdXNlZCBpbiB0aGUgUEFDS0FHRUNPTkZJRyB2YWx1ZXMgZm9yIGVhY2ggcGx1Z2luIHNldCByZWNpcGUuCisjIEJ5IG1vZGlmeWluZyBpdCwgT3JjIGNhbiBiZSBlbmFibGVkL2Rpc2FibGVkIGluIGFsbCBvZiB0aGVzZSByZWNpcGVzIGF0IG9uY2UuCitHU1RSRUFNRVJfT1JDID89ICJvcmMiCisjIHdvcmthcm91bmQgdG8gZGlzYWJsZSBvcmMgb24gbWlwcyB0byBmaXggdGhlIGJ1aWxkIGZhaWx1cmUKKyMge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorIyB7c3RhbmRhcmQgaW5wdXR9OjQ2NTg3OiBFcnJvcjogYnJhbmNoIG91dCBvZiByYW5nZQorR1NUUkVBTUVSX09SQ19taXBzID0gIiIKK1BBQ0tBR0VDT05GSUdbb3JjXSA9ICItRG9yYz1lbmFibGVkLC1Eb3JjPWRpc2FibGVkLG9yYyBvcmMtbmF0aXZlIgorCisjIFRPRE86IHB1dCB0aGlzIGluIGEgZ2V0dGV4dC5iYmNsYXNzIHBhdGNoICh3aXRoIHZhcmlhYmxlcyB0byBhbGxvdyBmb3IKKyMgY29uZmlndXJpbmcgdGhlIG9wdGlvbiBuYW1lIGFuZCB0aGUgZW5hYmxlZC9kaXNhYmxlZCB2YWx1ZXMpLgorZGVmIGdldHRleHRfb2VtZXNvbihkKToKKyAgICBpZiBkLmdldFZhcignVVNFX05MUycpID09ICdubyc6CisgICAgICAgIHJldHVybiAnLURubHM9ZGlzYWJsZWQnCisgICAgIyBSZW1vdmUgdGhlIE5MUyBiaXRzIGlmIFVTRV9OTFMgaXMgbm8gb3IgSU5ISUJJVF9ERUZBVUxUX0RFUFMgaXMgc2V0CisgICAgaWYgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJykgYW5kIG5vdCBvZS51dGlscy5pbmhlcml0cyhkLCAnY3Jvc3MtY2FuYWRpYW4nKToKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICByZXR1cm4gJy1EbmxzPWVuYWJsZWQnCisKKyMgTm90IGFsbCBwbHVnaW4gc2V0cyBjb250YWluIGV4YW1wbGVzLCBzbyB0aGUgLURleGFtcGxlcworIyBvcHRpb24gbmVlZHMgdG8gYmUgYWRkZWQgY29uZGl0aW9uYWxseS4KK0dTVF9QTFVHSU5fU0VUX0hBU19FWEFNUExFUyA/PSAiMSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTJywgJzEnLCAnLURleGFtcGxlcz1kaXNhYmxlZCcsICcnLCBkKX0gXAorICAgICR7QGdldHRleHRfb2VtZXNvbihkKX0gXAorIgorCitHSVJfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKKyMgRHluYW1pY2FsbHkgZ2VuZXJhdGUgcGFja2FnZXMgZm9yIGFsbCBlbmFibGVkIHBsdWdpbnMKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXFtbGdsLWVuc3VyZS1RdC1kZWZpbmVzLUdMc3luYy10by1maXgtY29tcGlsZS1vbi1zb20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzY4NDg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXFtbGdsLWVuc3VyZS1RdC1kZWZpbmVzLUdMc3luYy10by1maXgtY29tcGlsZS1vbi1zb20ucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSAzZTBkNTU3NzQ0NGIzMjU3OWJkZjViNjlkNzIwYTMyMjMyMmZmN2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlsaWFuIFdvbGZmIDxtaWxpYW4ud29sZmZAa2RhYi5jb20+CitEYXRlOiBUdWUsIDI2IE5vdiAyMDE5IDE1OjA4OjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHFtbGdsOiBlbnN1cmUgUXQgZGVmaW5lcyBHTHN5bmMgdG8gZml4IGNvbXBpbGUgb24gc29tZSBwbGF0Zm9ybXMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQnkgZXhwbGljdGx5IGluY2x1ZGluZyBRdEd1aS9xb3BlbmdsLmggd2UgZm9yY2UgdGhlIGNvZGUgcGF0aCB0aGF0CitkZWZpbmVzIEdMc3luYyBpbiB0aGUgUXQtc3BlY2lmaWMgd2F5LiBXaXRob3V0IHRoYXQsIHNvbWUgcGxhdGZvcm1zCitmYWlsZWQgdG8gY29tcGlsZSB0aGUgcW1sZ2wgcGx1Z2luLCBzaW5jZSBuZWl0aGVyIFF0IG5vciBnc3RyZWFtZXIKK2RlZmluZWQgR0xzeW5jIHRoZW4sIGxlYWRpbmcgdG8gZS5nLjoKKworYGBgCittYWtlWzRdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy8uLi4vZ3N0LXBsdWdpbnMtZ29vZC0xLjE2LjEvZXh0L3F0JworICBDWFggICAgICBsaWJnc3RxbWxnbF9sYS1xdGl0ZW0ubG8KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBnc3RxdGdsLmg6MzIsCisgICAgICAgICAgICAgICAgIGZyb20gcXRpdGVtLmg6MjcsCisgICAgICAgICAgICAgICAgIGZyb20gcXRpdGVtLmNjOjI4OgorLy4uLi91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wLworZ3N0L2dsL2dzdGdsZnVuY3MuaDo5MzoxNzogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlIOKAmCrigJkgdG9rZW4KKyAgIHJldCAoR1NUR0xBUEkgKm5hbWUpIGFyZ3M7CisgICAgICAgICAgICAgICAgIF4KKy8uLi4vdXNyL2luY2x1ZGUvZ3N0cmVhbWVyLTEuMC8KK2dzdC9nbC9nbHByb3RvdHlwZXMvc3luYy5oOjI3OjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybwor4oCYR1NUX0dMX0VYVF9GVU5DVElPTuKAmQorIEdTVF9HTF9FWFRfRlVOQ1RJT04gKEdMc3luYywgRmVuY2VTeW5jLAorIF5+fn5+fn5+fn5+fn5+fn5+fn4KK2BgYAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtZ29vZC9jb21taXQvM2UwZDU1Nzc0NDRiMzI1NzliZGY1YjY5ZDcyMGEzMjIzMjJmZjdiY10KKy0tLQorIGV4dC9xdC9nc3RxdGdsLmggfCAxOCArKysrKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworLS0tIGEvZXh0L3F0L2dzdHF0Z2wuaAorKysrIGIvZXh0L3F0L2dzdHF0Z2wuaAorQEAgLTIyLDE0ICsyMiw3IEBACisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpLWNvbmZpZy5oPgorICNlbmRpZgorIAorLS8qIHF0IHVzZXMgdGhlIHNhbWUgdHJpY2sgYXMgdXMgdG8gdHlwZWRlZiBHTHN5bmMgb24gR0xFUzIgYnV0IHRvIGEgZGlmZmVyZW50CistICogdHlwZSB3aGljaCBjb25mdXNlcyB0aGUgcHJlcHJvY2Vzc29yLiBJbnN0ZWFkIG9mIHRyeWluZyB0byByZWNvbmNpbGUgdGhlCistICogdHdvLCB3ZSBpbnN0ZWFkIHVzZSB0aGUgR0xzeW5jIGRlZmluaXRpb24gZnJvbSBRdCBmcm9tIGFib3ZlLCBhbmQgZW5zdXJlCistICogdGhhdCB3ZSBkb24ndCB0eXBlZGVmIEdMc3luYyBpbiBnc3RnbGZ1bmNzLmggKi8KKyAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29uZmlnLmg+CistI3VuZGVmIEdTVF9HTF9IQVZFX0dMU1lOQworLSNkZWZpbmUgR1NUX0dMX0hBVkVfR0xTWU5DIDEKKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKyAKKyAvKiBUaGUgZ2xleHQuaCBndWFyZCB3YXMgcmVuYW1lZCBpbiAyMDE4LCBidXQgc29tZSBzb2Z0d2FyZSB3aGljaAorICAqIGluY2x1ZGVzIHRoZWlyIG93biBjb3B5IG9mIHRoZSBHTCBoZWFkZXJzIChzdWNoIGFzIHF0KSBtaWdodCBoYXZlCitAQCAtNDYsNiArMzksMTcgQEAKKyAjZW5kaWYKKyAjZW5kaWYKKyAKKysvKiBwdWxscyBpbiBHTHN5bmMsIHNlZSBiZWxvdyAqLworKyNpbmNsdWRlIDxRdEd1aS9xb3BlbmdsLmg+CisrCisrLyogcXQgdXNlcyB0aGUgc2FtZSB0cmljayBhcyB1cyB0byB0eXBlZGVmIEdMc3luYyBvbiBHTEVTMiBidXQgdG8gYSBkaWZmZXJlbnQKKysgKiB0eXBlIHdoaWNoIGNvbmZ1c2VzIHRoZSBwcmVwcm9jZXNzb3IuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlY29uY2lsZSB0aGUKKysgKiB0d28sIHdlIGluc3RlYWQgdXNlIHRoZSBHTHN5bmMgZGVmaW5pdGlvbiBmcm9tIFF0IGZyb20gYWJvdmUsIGFuZCBlbnN1cmUKKysgKiB0aGF0IHdlIGRvbid0IHR5cGVkZWYgR0xzeW5jIGluIGdzdGdsZnVuY3MuaCAqLworKyN1bmRlZiBHU1RfR0xfSEFWRV9HTFNZTkMKKysjZGVmaW5lIEdTVF9HTF9IQVZFX0dMU1lOQyAxCisrI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrCisgI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xDb250ZXh0PgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMRnVuY3Rpb25zPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDQyMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSBkMDgyMzRhNjU5YmVjMWZkNWM5ODRmZWRlZmJlYjgxOTJhZjA3ODM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMzEgTWFyIDIwMjAgMjE6MjM6MjggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcXQ6IGluY2x1ZGUgZXh0L3F0L2dzdHF0Z2wuaCBpbnN0ZWFkIG9mIGdzdC9nbC9nc3RnbGZ1bmNzLmgKKworZ3N0L2dsL2dzdGdsZnVuY3MuaCBpcyBpbmNsdWRlZCB2aWEgZXh0L3F0L2dzdHF0Z2wuaCB3aGljaCBoYXMgbG9naWMgdG8KK3ByZWZlciBxdCBoZWFkZXJzIGRlZmluaXRpb25zIGZvciBHTHN5bmMKKworVGhpcyBoZWxwcyBpbiBmaXhpbmcgYnVpbGQgZXJyb3JzIGxpa2UgYmVsb3cKKworL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9RdEd1aS9xb3BlbmdsZXMyZXh0Lmg6MjQ6MjY6IGVycm9yOiBjb25mbGljdGluZyBkZWNsYXJhdGlvbiAndHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMqIEdMc3luYycKKyAgIDI0IHwgdHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMgKkdMc3luYzsKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQteW9lLWxpbnV4LWdudWVhYmkvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8xLjE2LjItcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvZ3N0cmVhbWVyLTEuMC9nc3QvZ2wvZ3N0Z2xmdW5jcy5oOjg0LAorICAgICAgICAgICAgICAgICBmcm9tIC4uL2dzdC1wbHVnaW5zLWdvb2QtMS4xNi4yL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjOjMwOgorL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wL2dzdC9nbC9nbHByb3RvdHlwZXMvZ3N0Z2xfY29tcGF0Lmg6NDA6MTg6IG5vdGU6IHByZXZpb3VzIGRlY2xhcmF0aW9uIGFzICd0eXBlZGVmIHZvaWQqIEdMc3luYworJworICAgNDAgfCB0eXBlZGVmIGdwb2ludGVyIEdMc3luYzsKKyAgICAgIHwgICAgICAgICAgICAgICAgICBefn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MgfCAyICstCisgZXh0L3F0L3F0d2luZG93LmNjICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCitpbmRleCAyYjMxNGUwLi4xMmIxNWRkIDEwMDY0NAorLS0tIGEvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKKysrKyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCitAQCAtMjcsNyArMjcsNyBAQAorIAorICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyAjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CistI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrI2luY2x1ZGUgPGV4dC9xdC9nc3RxdGdsLmg+CisgI2luY2x1ZGUgImdzdHFzZ3RleHR1cmUuaCIKKyAKKyAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfcXNnX3RleHR1cmVfZGVidWcKK2RpZmYgLS1naXQgYS9leHQvcXQvcXR3aW5kb3cuY2MgYi9leHQvcXQvcXR3aW5kb3cuY2MKK2luZGV4IDYyZDI2YjYuLmJmNjhlYmIgMTAwNjQ0CistLS0gYS9leHQvcXQvcXR3aW5kb3cuY2MKKysrKyBiL2V4dC9xdC9xdHdpbmRvdy5jYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKyAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CistI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZ1bmNzLmg+CisrI2luY2x1ZGUgPGV4dC9xdC9nc3RxdGdsLmg+CisgI2luY2x1ZGUgInF0d2luZG93LmgiCisgI2luY2x1ZGUgImdzdHFzZ3RleHR1cmUuaCIKKyAjaW5jbHVkZSAiZ3N0cXRnbHV0aWxpdHkuaCIKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYTdiODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTU5ODdlZTc2MzI1Njg0MGExMWJkOGVhMDk4ZjJiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmJhYmU2OTAxOGZjZWM3MDdkZjBiNzExNTAxNjg3NzYwNDBjZGU2YzFhMjZiYjVhODJhMTM2NzU1ZmE4ZjFmIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJjYXAiCi1SUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCi1SUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgYnoyIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxhbWUgbGlicG5nIG1wZzEyMyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIHpsaWIgXAotIgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCi0KLVBBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyIKLVBBQ0tBR0VDT05GSUdbZHYxMzk0XSAgICAgPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgotUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItLWVuYWJsZS1mbGFjLC0tZGlzYWJsZS1mbGFjLGZsYWMiCi1QQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi0tZW5hYmxlLWdka19waXhidWYsLS1kaXNhYmxlLWdka19waXhidWYsZ2RrLXBpeGJ1ZiIKLVBBQ0tBR0VDT05GSUdbZ3RrXSAgICAgICAgPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLVBBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLS13aXRoLWd1ZGV2LC0td2l0aG91dC1ndWRldixsaWJndWRldiIKLVBBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW2xhbWVdICAgICAgID0gIi0tZW5hYmxlLWxhbWUsLS1kaXNhYmxlLWxhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLS1lbmFibGUtbGlicG5nLC0tZGlzYWJsZS1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tsaWJ2NGwyXSAgICA9ICItLXdpdGgtbGlidjRsMiwtLXdpdGhvdXQtbGlidjRsMix2NGwtdXRpbHMiCi1QQUNLQUdFQ09ORklHW21wZzEyM10gICAgID0gIi0tZW5hYmxlLW1wZzEyMywtLWRpc2FibGUtbXBnMTIzLG1wZzEyMyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi0tZW5hYmxlLXNvdXAsLS1kaXNhYmxlLXNvdXAsbGlic291cC0yLjQiCi1QQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGFnbGliXSAgICAgPSAiLS1lbmFibGUtdGFnbGliLC0tZGlzYWJsZS10YWdsaWIsdGFnbGliIgotUEFDS0FHRUNPTkZJR1t2NGwyXSAgICAgICA9ICItLWVuYWJsZS1nc3RfdjRsMiAtLWVuYWJsZS12NGwyLXByb2JlLC0tZGlzYWJsZS1nc3RfdjRsMiIKLVBBQ0tBR0VDT05GSUdbdnB4XSAgICAgICAgPSAiLS1lbmFibGUtdnB4LC0tZGlzYWJsZS12cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSAgICA9ICItLWVuYWJsZS13YXZwYWNrLC0tZGlzYWJsZS13YXZwYWNrLHdhdnBhY2siCi1QQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXgsLS1kaXNhYmxlLXgsJHtYMTFERVBFTkRTfSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgotCi0jIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgotIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgotIyBUaGlzIGlzIGJldHRlciBkb25lIGluIGEgc2VwYXJhdGUgcXQ1IGxheWVyICh3aGljaCB0aGVuIHNob3VsZCBhZGQgYSAicXQ1IiBwYWNrYWdlY29uZmlnCi0jIGluIGEgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBiYmFwcGVuZCkuCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS1vc3MgXAotICAgIC0tZGlzYWJsZS1hYWxpYiBcCi0gICAgLS1kaXNhYmxlLWFhbGlidGVzdCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKLSAgICAtLWRpc2FibGUtbGliY2FjYSBcCi0gICAgLS1kaXNhYmxlLWxpYmR2IFwKLSAgICAtLWRpc2FibGUtb3NzNCBcCi0gICAgLS1kaXNhYmxlLW9zeF9hdWRpbyBcCi0gICAgLS1kaXNhYmxlLW9zeF92aWRlbyBcCi0gICAgLS1kaXNhYmxlLXF0IFwKLSAgICAtLWRpc2FibGUtc2hvdXQyIFwKLSAgICAtLWRpc2FibGUtdHdvbGFtZSBcCi0gICAgLS1kaXNhYmxlLXdhdmVmb3JtIFwKLSIKLQotRklMRVNfJHtQTn0tZXF1YWxpemVyICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy8qLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdjOTQyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xNi4yLmJiCkBAIC0wLDAgKzEsNzAgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1xdC1pbmNsdWRlLWV4dC1xdC1nc3RxdGdsLmgtaW5zdGVhZC1vZi1nc3QtZ2wtZ3N0Z2xmLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJkMDI1ZjhmMTQ5NzRmOTRiNzVhYzY5YTlkMWI5YzkzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwYmIzYmFmZGEyNWMwYjczOWM4ZmMzNmU0ODM4MGZjY2Y2MWM0ZDNmODM3NDdlOTdhYzNmOWIwMTcxYjEzMTkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmNhcCB6bGliIgorUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgorUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgYnoyIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxhbWUgbGlicG5nIG1wZzEyMyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIFwKKyIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIgorWDExRU5BQkxFT1BUUyA9ICItRHhpbWFnZXNyYz1lbmFibGVkIC1EeGltYWdlc3JjLXhzaG09ZW5hYmxlZCAtRHhpbWFnZXNyYy14Zml4ZXM9ZW5hYmxlZCAtRHhpbWFnZXNyYy14ZGFtYWdlPWVuYWJsZWQiCitYMTFESVNBQkxFT1BUUyA9ICItRHhpbWFnZXNyYz1kaXNhYmxlZCAtRHhpbWFnZXNyYy14c2htPWRpc2FibGVkIC1EeGltYWdlc3JjLXhmaXhlcz1kaXNhYmxlZCAtRHhpbWFnZXNyYy14ZGFtYWdlPWRpc2FibGVkIgorCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgID0gIi1EYnoyPWVuYWJsZWQsLURiejI9ZGlzYWJsZWQsYnppcDIiCitQQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi1EY2Fpcm89ZW5hYmxlZCwtRGNhaXJvPWRpc2FibGVkLGNhaXJvIgorUEFDS0FHRUNPTkZJR1tkdjEzOTRdICAgICA9ICItRGR2MTM5ND1lbmFibGVkLC1EZHYxMzk0PWRpc2FibGVkLGxpYmllYzYxODgzIGxpYmF2YzEzOTQgbGlicmF3MTM5NCIKK1BBQ0tBR0VDT05GSUdbZmxhY10gICAgICAgPSAiLURmbGFjPWVuYWJsZWQsLURmbGFjPWRpc2FibGVkLGZsYWMiCitQQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi1EZ2RrLXBpeGJ1Zj1lbmFibGVkLC1EZ2RrLXBpeGJ1Zj1kaXNhYmxlZCxnZGstcGl4YnVmIgorUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICA9ICItRGd0azM9ZW5hYmxlZCwtRGd0azM9ZGlzYWJsZWQsZ3RrKzMiCitQQUNLQUdFQ09ORklHW2d1ZGV2XSAgICAgID0gIi1EdjRsMi1ndWRldj1lbmFibGVkLC1EdjRsMi1ndWRldj1kaXNhYmxlZCxsaWJndWRldiIKK1BBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLURqYWNrPWVuYWJsZWQsLURqYWNrPWRpc2FibGVkLGphY2siCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi1EanBlZz1lbmFibGVkLC1EanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1tsYW1lXSAgICAgICA9ICItRGxhbWU9ZW5hYmxlZCwtRGxhbWU9ZGlzYWJsZWQsbGFtZSIKK1BBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLURwbmc9ZW5hYmxlZCwtRHBuZz1kaXNhYmxlZCxsaWJwbmciCitQQUNLQUdFQ09ORklHW2xpYnY0bDJdICAgID0gIi1EdjRsMi1saWJ2NGwyPWVuYWJsZWQsLUR2NGwyLWxpYnY0bDI9ZGlzYWJsZWQsdjRsLXV0aWxzIgorUEFDS0FHRUNPTkZJR1ttcGcxMjNdICAgICA9ICItRG1wZzEyMz1lbmFibGVkLC1EbXBnMTIzPWRpc2FibGVkLG1wZzEyMyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLURwdWxzZT1lbmFibGVkLC1EcHVsc2U9ZGlzYWJsZWQscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSAgICAgICAgPSAiLURxdDU9ZW5hYmxlZCwtRHF0NT1kaXNhYmxlZCxxdGJhc2UgcXRkZWNsYXJhdGl2ZSBxdGJhc2UtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tzb3VwXSAgICAgICA9ICItRHNvdXA9ZW5hYmxlZCwtRHNvdXA9ZGlzYWJsZWQsbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi1Ec3BlZXg9ZW5hYmxlZCwtRHNwZWV4PWRpc2FibGVkLHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItRHRhZ2xpYj1lbmFibGVkLC1EdGFnbGliPWRpc2FibGVkLHRhZ2xpYiIKK1BBQ0tBR0VDT05GSUdbdjRsMl0gICAgICAgPSAiLUR2NGwyPWVuYWJsZWQgLUR2NGwyLXByb2JlPXRydWUsLUR2NGwyPWRpc2FibGVkIC1EdjRsMi1wcm9iZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdnB4XSAgICAgICAgPSAiLUR2cHg9ZW5hYmxlZCwtRHZweD1kaXNhYmxlZCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi1Ed2F2cGFjaz1lbmFibGVkLC1Ed2F2cGFjaz1kaXNhYmxlZCx3YXZwYWNrIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICIke1gxMUVOQUJMRU9QVFN9LCR7WDExRElTQUJMRU9QVFN9LCR7WDExREVQRU5EU30iCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURhYWxpYj1kaXNhYmxlZCBcCisgICAgLURkaXJlY3Rzb3VuZD1kaXNhYmxlZCBcCisgICAgLURkdj1kaXNhYmxlZCBcCisgICAgLURsaWJjYWNhPWRpc2FibGVkIFwKKyAgICAtRG9zcz1lbmFibGVkIFwKKyAgICAtRG9zczQ9ZGlzYWJsZWQgXAorICAgIC1Eb3N4YXVkaW89ZGlzYWJsZWQgXAorICAgIC1Eb3N4dmlkZW89ZGlzYWJsZWQgXAorICAgIC1Ec2hvdXQyPWRpc2FibGVkIFwKKyAgICAtRHR3b2xhbWU9ZGlzYWJsZWQgXAorICAgIC1Ed2F2ZWZvcm09ZGlzYWJsZWQgXAorIgorCitGSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXBhY2thZ2luZy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3YTFiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXBhY2thZ2luZy5pbmMKQEAgLTAsMCArMSw3MCBAQAorIyBUaGlzIC5pbmMgZmlsZSBjb250YWlucyBmdW5jdGlvbmFsaXR5IGZvciBhdXRvbWF0aWNhbGx5IHNwbGl0dGluZworIyBidWlsdCBwbHVnaW5zIGludG8gaW5kaXZpZHVhbCBwYWNrYWdlcyBmb3IgZWFjaCBwbHVnaW4uIEEgLW1ldGEKKyMgcGFja2FnZSBpcyBhbHNvIHNldCB1cCB0aGF0IGhhcyBubyBmaWxlcyBvZiBpdHMgb3duLCBidXQgY29udGFpbnMKKyMgdGhlIG5hbWVzIG9mIGFsbCBwbHVnaW4gcGFja2FnZXMgaW4gaXRzIFJERVBFTkRTIGxpc3QuCisjCisjIFRoaXMgaXMgbWFpbmx5IHVzZWQgYnkgdGhlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLSogcGx1Z2luIHNldCByZWNpcGVzLAorIyBidXQgY2FuIGJlIHVzZWQgaW4gYW55IHJlY2lwZSB0aGF0IHByb2R1Y2VzIEdTdHJlYW1lciBwbHVnaW5zLgorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gIiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAiCitQQUNLQUdFU1BMSVRGVU5DU19hcHBlbmQgPSAiIHNldF9nc3RyZWFtZXIxMF9tZXRhcGtnX3JkZXBlbmRzICIKKworcHl0aG9uIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICgpIHsKKyAgICBnc3RfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9nc3RyZWFtZXItMS4wJykKKyAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwbHVnaW5fcG9zdGluc3QnKQorICAgIGdsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKKworICAgICMgR1N0cmVhbWVyIGxpYnJhcmllcworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIsIHInXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ0dTdHJlYW1lciAxLjAgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisgICAgIyBHU3RyZWFtZXIgcGx1Z2luIHNoYXJlZCBvYmplY3RzCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tJXMnKSwgJ0dTdHJlYW1lciAxLjAgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQorICAgICMgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBHU3RyZWFtZXIgcGx1Z2lucworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdsaWJkaXIrJy9naXJlcG9zaXRvcnktMS4wJywgcidHc3QoLiopLTEuMFwudHlwZWxpYiQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtdHlwZWxpYicpLCAnR1N0cmVhbWVyIDEuMCB0eXBlbGliIGZpbGUgZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgIyBTdGF0aWMgR1N0cmVhbWVyIGxpYnJhcmllcyBmb3IgZGV2ZWxvcG1lbnQKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLmEkJywgZC5leHBhbmQoJyR7UE59LSVzLXN0YXRpY2RldicpLCAnR1N0cmVhbWVyIDEuMCBwbHVnaW4gZm9yICVzIChzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMpJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKK30KKworcHl0aG9uIHNldF9nc3RyZWFtZXIxMF9tZXRhcGtnX3JkZXBlbmRzICgpIHsKKyAgICBpbXBvcnQgb3MKKyAgICBpbXBvcnQgb2UudXRpbHMKKworICAgICMgR28gdGhyb3VnaCBhbGwgZ2VuZXJhdGVkIHBhY2thZ2VzIChleGNsdWRpbmcgdGhlIG1haW4gcGFja2FnZSBhbmQKKyAgICAjIHRoZSAtbWV0YSBwYWNrYWdlIGl0c2VsZikgYW5kIGFkZCB0aGVtIHRvIHRoZSAtbWV0YSBwYWNrYWdlIGFzIFJERVBFTkRTLgorCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIG1ldGFwa2cgPSAgcG4gKyAnLW1ldGEnCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKKyAgICBibGFja2xpc3QgPSBbIHBuLCBwbiArICctbWV0YScgXQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbXQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCisgICAgZm9yIHBrZyBpbiBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKToKKyAgICAgICAgaWYgcGtnIG5vdCBpbiBibGFja2xpc3QgYW5kIHBrZyBub3QgaW4gbWV0YXBrZ19yZGVwZW5kczoKKyAgICAgICAgICAgICMgU2VlIGlmIHRoZSBwYWNrYWdlIGlzIGVtcHR5IGJ5IGxvb2tpbmcgYXQgdGhlIGNvbnRlbnRzIG9mIGl0cyBQS0dERVNUIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICMgSWYgdGhpcyBzdWJkaXJlY3RvcnkgaXMgZW1wdHksIHRoZW4gdGhlIHBhY2thZ2UgaXMuCisgICAgICAgICAgICAjIEVtcHR5IHBhY2thZ2VzIGRvIG5vdCBnZXQgYWRkZWQgdG8gdGhlIG1ldGEgcGFja2FnZSdzIFJERVBFTkRTCisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGVzdCwgcGtnKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGlyKToKKyAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBvcy5saXN0ZGlyKHBrZ2Rpcikgb3IgW10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyX2NvbnRlbnRzID0gW10KKyAgICAgICAgICAgIGlzX2VtcHR5ID0gbGVuKGRpcl9jb250ZW50cykgPT0gMAorICAgICAgICAgICAgaWYgbm90IGlzX2VtcHR5OgorICAgICAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgcG4gKyAnIG1ldGEgcGFja2FnZScpCit9CisKKyMgZWFjaCBwbHVnaW4tZGV2IGRlcGVuZHMgb24gUE4tZGV2LCBwbHVnaW4tc3RhdGljZGV2IG9uIFBOLXN0YXRpY2RldgorIyBzbyB3ZSBuZWVkIHRoZW0gZXZlbiB3aGVuIGVtcHR5IChsaWtlIGluIGdzdC1wbHVnaW5zLWdvb2QgY2FzZSkKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1kZXYgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXN0YXRpY2RldiA9ICIxIgorCitQQUNLQUdFUyArPSAiJHtQTn0tYXBwcyAke1BOfS1tZXRhICR7UE59LWdsaWIiCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9IgorRklMRVNfJHtQTn0tZ2xpYiA9ICIke2RhdGFkaXJ9L2dsaWItMi4wIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtQTn0tbWV0YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYWIzMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotU1JDX1VSSSA9ICIgXAotICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjY2ODc5NTkwM2NiNDk3MWZiYTlhYTg5YWJkZWE4MzY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZjkxM2IyY2E1MTk1YWMzYjUzYjVlM2FkZTJkYzdjNDVkMjI1ODUwNzU1MmRkYzg1MGM1ZmE0MjU5NjhhMWQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotCi1pbmhlcml0IGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgYTUyZGVjIG1wZWcyZGVjIFwKLSIKLQotUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLS1lbmFibGUtYTUyZGVjLC0tZGlzYWJsZS1hNTJkZWMsbGliYTUyIgotUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLS1lbmFibGUtYW1ybmIsLS1kaXNhYmxlLWFtcm5iLG9wZW5jb3JlLWFtciIKLVBBQ0tBR0VDT05GSUdbYW1yd2JdICAgID0gIi0tZW5hYmxlLWFtcndiLC0tZGlzYWJsZS1hbXJ3YixvcGVuY29yZS1hbXIiCi1QQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCi1QQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCi1QQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCi1QQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtc2lkcGxheSBcCi0iCi0KLUZJTEVTXyR7UE59LWFtcm5iICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RBbXJuYkVuYy5wcnMiCi1GSUxFU18ke1BOfS14MjY0ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RYMjY0RW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUxMDgwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMzkgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMDI4M2ZmNWVmMWUzNGQ0NjJkZGU3NzA0MmUzMjliZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NTAwNDE1Yjg2NWU4YjYyNzc1ZDQ3NDJjYmI5ZjM3MTQ2YTUwY2FlY2ZjMGU3YTZmYzAxNjBkM2M1NjBmYmNhIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTID0gIjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgIGE1MmRlYyBtcGVnMmRlYyBcCisiCisKK1BBQ0tBR0VDT05GSUdbYTUyZGVjXSAgID0gIi1EYTUyZGVjPWVuYWJsZWQsLURhNTJkZWM9ZGlzYWJsZWQsbGliYTUyIgorUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLURhbXJuYj1lbmFibGVkLC1EYW1ybmI9ZGlzYWJsZWQsb3BlbmNvcmUtYW1yIgorUEFDS0FHRUNPTkZJR1thbXJ3Yl0gICAgPSAiLURhbXJ3YmRlYz1lbmFibGVkLC1EYW1yd2JkZWM9ZGlzYWJsZWQsb3BlbmNvcmUtYW1yIgorUEFDS0FHRUNPTkZJR1tjZGlvXSAgICAgPSAiLURjZGlvPWVuYWJsZWQsLURjZGlvPWRpc2FibGVkLGxpYmNkaW8iCitQQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItRGR2ZHJlYWQ9ZW5hYmxlZCwtRGR2ZHJlYWQ9ZGlzYWJsZWQsbGliZHZkcmVhZCIKK1BBQ0tBR0VDT05GSUdbbXBlZzJkZWNdID0gIi1EbXBlZzJkZWM9ZW5hYmxlZCwtRG1wZWcyZGVjPWRpc2FibGVkLG1wZWcyZGVjIgorUEFDS0FHRUNPTkZJR1t4MjY0XSAgICAgPSAiLUR4MjY0PWVuYWJsZWQsLUR4MjY0PWRpc2FibGVkLHgyNjQiCisKK0VYVFJBX09FTUVTT04gKz0gIiBcCisgICAgLURzaWRwbGF5PWRpc2FibGVkIFwKKyIKKworRklMRVNfJHtQTn0tYW1ybmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEFtcm5iRW5jLnBycyIKK0ZJTEVTXyR7UE59LXgyNjQgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFgyNjRFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzI0YjA1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiUGx1Z2lucyBmb3IgdGhlIEdTdHJlYW1lciBtdWx0aW1lZGlhIGZyYW1ld29yayAxLngiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKLQotU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCi0KLWFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKLQotTElCViA9ICIxLjAiCi1yZXF1aXJlIGdzdC1wbHVnaW5zLXBhY2thZ2UuaW5jCi0KLSMgT3JjIGVuYWJsZXMgcnVudGltZSBKSVQgY29tcGlsYXRpb24gb2YgZGF0YSBwcm9jZXNzaW5nIHJvdXRpbmVzIGZyb20gT3JjCi0jIGJ5dGVjb2RlIHRvIFNJTUQgaW5zdHJ1Y3Rpb25zIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGN1cnJlbnRseSBTU0UsIE1NWCwKLSMgTUlQUywgQWx0aXZlYyBhbmQgTkVPTiBhcmUgc3VwcG9ydGVkKS4KLQotR1NUUkVBTUVSX09SQyA/PSAib3JjIgotCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWciCi1QQUNLQUdFQ09ORklHW29yY10gPSAiLS1lbmFibGUtb3JjLC0tZGlzYWJsZS1vcmMsb3JjIG9yYy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLWV4cG9ydCBPUkNDID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyfS9vcmNjIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotIgotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0JIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLQlybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCi0Jcm0gLWYgIiR7U30vY29tbW9uL200L2d0ay1kb2MubTQiCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXiR7UE59LS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wdGVzdC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5ODA2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wdGVzdC5pbmMKQEAgLTAsMCArMSwyMyBAQAoraW5oZXJpdCBwdGVzdC1nbm9tZQorCitURVNUX0ZJTEVTX1BBVEggPSAiJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ3N0cmVhbWVyLTEuMC90ZXN0LWZpbGVzIgorUlVOX1BURVNUX0ZJTEUgPSAiJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0IgorCitFWFRSQV9PRU1FU09OICs9ICItRHRlc3QtZmlsZXMtcGF0aD0ke1RFU1RfRklMRVNfUEFUSH0iCisKK0dTVF9URVNUX1NVSVRFX05BTUUgPz0gImdzdHJlYW1lci0xLjAiCisKKyMgVXNpbmcgZG9faW5zdGFsbF9wdGVzdF9iYXNlIGluc3RlYWQgb2YgZG9faW5zdGFsbF9wdGVzdCwgc2luY2UKKyMgdGhlIGRlZmF1bHQgZG9faW5zdGFsbF9wdGVzdF9iYXNlIGlzIGhhcmRjb2RlZCB0byBleHBlY3QgTWFrZWZpbGVzLgorZG9faW5zdGFsbF9wdGVzdF9iYXNlKCkgeworICAgICMgR2VuZXJhdGUgcnVuLXB0ZXN0IGZpbGUKKyAgICBlY2hvICIjIS91c3IvYmluL2VudiBzaCIgPiAiJHtSVU5fUFRFU1RfRklMRX0iCisgICAgZWNobyAiZ25vbWUtZGVza3RvcC10ZXN0aW5nLXJ1bm5lciAke0dTVF9URVNUX1NVSVRFX05BTUV9IiA+PiAiJHtSVU5fUFRFU1RfRklMRX0iCisgICAgY2htb2QgMDc1NSAiJHtSVU5fUFRFU1RfRklMRX0iCisKKyAgICAjIEluc3RhbGwgYWRkaXRpb25hbCBmaWxlcyByZXF1aXJlZCBieSB0ZXN0cworICAgIGlmIFsgLWQgIiR7U30vdGVzdHMvZmlsZXMiIF0gOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgIiR7RH0vJHtURVNUX0ZJTEVTX1BBVEh9IgorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgIiR7U30vdGVzdHMvZmlsZXMiLyogIiR7RH0vJHtURVNUX0ZJTEVTX1BBVEh9IgorICAgIGZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUzMTA4YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDYxY2ZkMWI0OWRjODJiYWYxNGJiMzZkODhiNmM1YmU3YjhjM2QyM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBEZWMgMjAxOSAxODoxNjo0MSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZml4IGJ1aWxkcyB3aXRoIHB5dGhvbiAzLjgKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi9tZXJnZV9yZXF1ZXN0cy8xNF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAxZGE4MWQ1Li4zZTBkYjM4IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMjQsNyArMjQsNyBAQCBweWdvYmplY3RfZGVwID0gZGVwZW5kZW5jeSgncHlnb2JqZWN0LTMuMCcsIGZhbGxiYWNrOiBbJ3B5Z29iamVjdCcsICdweWdvYmplY3RfZAorIAorIHB5bW9kID0gaW1wb3J0KCdweXRob24nKQorIHB5dGhvbiA9IHB5bW9kLmZpbmRfaW5zdGFsbGF0aW9uKGdldF9vcHRpb24oJ3B5dGhvbicpKQorLXB5dGhvbl9kZXAgPSBweXRob24uZGVwZW5kZW5jeShyZXF1aXJlZCA6IHRydWUpCisrcHl0aG9uX2RlcCA9IGRlcGVuZGVuY3koJ3B5dGhvbjMtZW1iZWQnLCByZXF1aXJlZCA6IHRydWUpCisgCisgcHl0aG9uX2FiaV9mbGFncyA9IHB5dGhvbi5nZXRfdmFyaWFibGUoJ0FCSUZMQUdTJywgJycpCisgcHlsaWJfbG9jID0gZ2V0X29wdGlvbignbGlicHl0aG9uLWRpcicpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzIyZjAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIEdTdHJlYW1lciAxLjAiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1weXRob24vIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OTk2NDVmYmQxNzkwYzU4NDVjMDJhMzk5OGRjY2MxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDY5Yzg5NTUxMjZmNDFiOGNlMGJmNjg5YjcwMjlmMTgyY2QzMDVmNDIyYjNhOGRmMzViNzgwYmQ4MzQ3NDg5IgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKLVJERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCi0KLVBOUkVBTCA9ICJnc3QtcHl0aG9uIgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbGlicHl0aG9uLWRpcj0ke2xpYmRpcn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0gICAgIyBOb3RlIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGZpbmQgbGluZSBpcyB0YWtlbiBmcm9tIHRoZSBEZWJpYW4gcGFja2FnaW5nIGZvcgotICAgICMgZ3N0LXB5dGhvbjEuMC4KLSAgICBmaW5kICIke0R9IiBcCi0gICAgICAgIC1uYW1lICcqLnB5YycgLW8gXAotICAgICAgICAtbmFtZSAnKi5weW8nIC1vIFwKLSAgICAgICAgLW5hbWUgJyoubGEnIC1vIFwKLSAgICAgICAgLW5hbWUgJ2xpYmdzdHB5dGhvbnBsdWdpbionIFwKLSAgICAgICAgLWRlbGV0ZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTAyNGViOWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmFjNzA5NzY3MzM0ZDhkMGE3MWNiNGUwMTZmNmFiZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjA4ZGYzMTQ4ZDczZDlmNDE2ZDAxNjU2NDczNzU4NWQ4ZWE3NjNkOTEyMDE3MzJkNDRiNWZlNjg4YzYyODhhOCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCitSREVQRU5EU18ke1BOfSArPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorCitQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTYyYTUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDk1Y2U5NTNlMzRjZDBlOWY1ZDQyY2U3OTAwYTk1NzJlN2JjOGNhNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogRnJpLCAxOCBPY3QgMjAxOSAwMDo0MjoxMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworU2VlIGdzdHJlYW1lci9nc3RyZWFtZXIjNDU0IGFuZCBnc3RyZWFtZXIvZ3N0cmVhbWVyIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbOTVjZTk1M2UzNGNkMGU5ZjVkNDJjZTc5MDBhOTU3MmU3YmM4Y2E0N10KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggZTFlM2IxZC4uM2Y0NWYwZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE3Myw3ICsxNzMsNyBAQCBlbmRpZgorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lzdHJ5LnJlZycpICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAiIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTMwMmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBvbiB0b3Agb2YgR1N0cmVhbWVyIGZvciBidWlsZGluZyBhbiBSVFNQIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXJ0c3Atc2VydmVyLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLVBOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODBkNmE0MmU4NTZjMzJmY2VmYTUwOGFkNTcxMjllMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGFiYWNhZDJmODZmNjBkNjM3ODFkMmIyNDQ0M2M1NjY4NzMzZThiMDg2NjRiYmVmOTQxMjQ5MDZkNzAwMTQ0IgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgotCi0jIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKLUxJQlYgPSAiMS4wIgotcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCi0gICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzNjODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IG9uIHRvcCBvZiBHU3RyZWFtZXIgZm9yIGJ1aWxkaW5nIGFuIFJUU1Agc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcnRzcC1zZXJ2ZXIvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworUE5SRUFMID0gImdzdC1ydHNwLXNlcnZlciIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhOTk4NzI1ODIwYzc3MWJhNDViZTZlMThiZmRmNzNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDdhMjgzN2IzYjA0ODIwY2U2ODI2NGE0OTA5ZjcwYzIyMWI4NWRiZmYwY2VkZTc5MjZlOWNkYmIxZGMyNmUiCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRHRlc3RzPWRpc2FibGVkIFwKKyIKKworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHSVJfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCisjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Yjg5ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNTQwM2E4OWU2YTdhYzcyYTIzZTAyMjEwNzVjMGMxOWI1Zjg1YTAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDE4IDA5OjA5OjI1IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdC92YWFwaS9NYWtlZmlsZS5hbTogQWRkIEVHTF9DRkxBR1MgdG8gbGliZ3N0dmFhcGkgQ0ZMQUdTCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1XZSBuZWVkIHRoaXMgdG8gcGFzcyBjb3JyZWN0bHkgRUdMIENGTEFHUyB3aGVuIGJ1aWxkaW5nIHdpdGggRUdMIHN1cHBvcnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIGIvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCi1pbmRleCBiMjk5YWM5OC4uZDZjYWI3MWYgMTAwNjQ0Ci0tLS0gYS9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQotQEAgLTI0LDYgKzI0LDEwIEBAIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1nbHgubGEKLSBlbmRpZgotIAotIGlmIFVTRV9FR0wKLStsaWJnc3R2YWFwaV9DRkxBR1MgKz0gXAotKwkkKEVHTF9DRkxBR1MpCVwKLSsJJChOVUxMKQotKwotIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1lZ2wubGEKLSBlbmRpZgotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzIxMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiVkEtQVBJIHN1cHBvcnQgdG8gR1N0cmVhbWVyIgotREVTQ1JJUFRJT04gPSAiZ3N0cmVhbWVyLXZhYXBpIGNvbnNpc3RzIG9mIGEgY29sbGVjdGlvbiBvZiBWQS1BUEkgXAotYmFzZWQgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIGFuZCBoZWxwZXIgbGlicmFyaWVzOiBgdmFhcGlkZWNvZGUnLCBcCi1gdmFhcGljb252ZXJ0JywgYW5kIGB2YWFwaXNpbmsnLiIKLQotUkVBTFBOID0gImdzdHJlYW1lci12YWFwaSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1JFQUxQTn0vJHtSRUFMUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNWIwOGY3Njc3NzM1OWQ4N2IwYjRhNTYxZGIwNWYxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjU3MGY2ZjFlNzhjYjM2NGZiZTNjNGZiODc1MTgyNGVlOWRiMGM5NDJiYTYxYjYyMzgwYjliNWFiYjc2MDNhIgotCi1TID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgotREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi0jIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKLSMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAotIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCi0jIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5hIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVkZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKK0RFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKK2Jhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAorYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCisKK1JFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxM2Y3Y2I2YTY0YmRlMjRlNjdmNTYzMzc3NDg3ZGNjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTFkZTdiMGFiNjRhODVkZDA4NzVjOTkwNzIxZTdiZTk1NTE4ZjYwZTJhOTEwNmJlY2ExNjIwMDRlZDdjNjAxIgorCitTID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgorREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EZXhhbXBsZXM9ZGlzYWJsZWQgXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworIyBPcGVuR0wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCisjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIGdseCwgZWdsLCBvciBubyBHTC4gQnkgZGVmYXVsdCwKKyMgdHJ5IGRldGVjdGluZyBYMTEgZmlyc3QsIGFuZCBpZiBmb3VuZCAod2l0aCBPcGVuR0wpLCB1c2UgR0xYLAorIyBvdGhlcndpc2UgdHJ5IHRvIGNoZWNrIGlmIEVHTCBjYW4gYmUgdXNlZC4KK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICdnbHgnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgICAgICdvcGVuZ2wnLCAnZWdsJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgZCksIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRybSBlbmNvZGVycyBcCisgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbZHJtXSA9ICItRHdpdGhfZHJtPXllcywtRHdpdGhfZHJtPW5vLHVkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1Ed2l0aF9lZ2w9eWVzLC1Ed2l0aF9lZ2w9bm8sdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2VuY29kZXJzXSA9ICItRHdpdGhfZW5jb2RlcnM9eWVzLC1Ed2l0aF9lbmNvZGVycz1ubyIKK1BBQ0tBR0VDT05GSUdbZ2x4XSA9ICItRHdpdGhfZ2x4PXllcywtRHdpdGhfZ2x4PW5vLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2l0aF93YXlsYW5kPXllcywtRHdpdGhfd2F5bGFuZD1ubyx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1Ed2l0aF94MTE9eWVzLC1Ed2l0aF94MTE9bm8sdmlydHVhbC9saWJ4MTEgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouYSIKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMi1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ3MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDM1ZGI0YTI0MzNmYmRmODYxMmNmOThiNWFhYjViMTRhZWI1MzcyZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVGh1LCAxNyBPY3QgMjAxOSAxMjoxMzozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworRml4ZXMgIzQ1NCBhbmQgIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMzVkYjRhMjQzM2ZiZGY4NjEyY2Y5OGI1YWFiNWIxNGFlYjUzNzJmOF0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggOTBkOThkOGViLi5hNDdlN2YzNGUgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC00NjYsNyArNDY2LDcgQEAgcnRfbGliID0gY2MuZmluZF9saWJyYXJ5KCdydCcsIHJlcXVpcmVkIDogZmFsc2UpCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorIAorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyAKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDMtbWVzb24tQWRkLXZhbGdyaW5kLWZlYXR1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MzM0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gZjZjNzk3M2MwM2Q5YmE3ZGFiNjBjNDk2ZTc2OGM1ZTZjNGVlODI0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBTdW4sIDIwIE9jdCAyMDE5IDEwOjM2OjQ0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgdmFsZ3JpbmQgZmVhdHVyZQorCitUaGlzIGFsbG93cyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuIFNpbmNlIFZhbGdyaW5kIGlzCithbiBleHRlcm5hbCBkZXBlbmRlbmN5LCBzdWNoIGEgZmVhdHVyZSBpcyBuZWVkZWQgYnkgYnVpbGQgZW52aXJvbmVtbnRzCitzdWNoIGFzIFlvY3RvIHRvIG1ha2Ugc3VyZSBidWlsZHMgYXJlIGRldGVybWluaXN0aWMuIFRoZXNlIGNoYW5nZXMgYWxzbworYWRkIG1vcmUgVmFsZ3JpbmQgc3BlY2lmaWMgY29uZmlndXJlIGxvZyBvdXRwdXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQorIG1lc29uX29wdGlvbnMudHh0IHwgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjU1ZWNjNS4uNDc1MTc2MSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE5OSw3ICsxOTksNiBAQCBjaGVja19oZWFkZXJzID0gWworICAgJ3N5cy93YWl0LmgnLAorICAgJ3Vjb250ZXh0LmgnLAorICAgJ3VuaXN0ZC5oJywKKy0gICd2YWxncmluZC92YWxncmluZC5oJywKKyAgICdzeXMvcmVzb3VyY2UuaCcsCisgXQorIAorQEAgLTIxNCw2ICsyMTMsMjggQEAgZm9yZWFjaCBoIDogY2hlY2tfaGVhZGVycworICAgZW5kaWYKKyBlbmRmb3JlYWNoCisgCisrdmFsZ3JpbmRfb3B0aW9uID0gZ2V0X29wdGlvbigndmFsZ3JpbmQnKQorK2lmIHZhbGdyaW5kX29wdGlvbi5kaXNhYmxlZCgpCisrICBtZXNzYWdlKCdWYWxncmluZCBzdXBwb3J0IG5vdCByZXF1ZXN0ZWQ7IGRpc2FibGVkLicpCisrZWxzZQorKyAgdmFsZ3JpbmRfaGVhZGVyID0gJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnCisrICBoYXNfdmFsZ3JpbmRfaGVhZGVyID0gY2MuaGFzX2hlYWRlcih2YWxncmluZF9oZWFkZXIpCisrICBpZiBoYXNfdmFsZ3JpbmRfaGVhZGVyCisrICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBhbmQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIGZvdW5kLiBFbmFibGVkIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZGVmaW5lID0gJ0hBVkVfJyArIHZhbGdyaW5kX2hlYWRlci51bmRlcnNjb3JpZnkoKS50b191cHBlcigpCisrICAgIGNkYXRhLnNldChkZWZpbmUsIDEpCisrICBlbHNlCisrICAgIGlmIHZhbGdyaW5kX29wdGlvbi5lbmFibGVkKCkKKysgICAgICBlcnJvcignVmFsZ3JpbmQgc3VwcG9ydCByZXF1ZXN0ZWQgYW5kIHNldCBhcyByZXF1aXJlZCwgYnV0IGhlYWRlciAnICsgXAorKyAgICAgICAgdmFsZ3JpbmRfaGVhZGVyICsgJyBub3QgZm91bmQuJykKKysgICAgZWxzZQorKyAgICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBidXQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIG5vdCBmb3VuZC4gRGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZW5kaWYKKysgIGVuZGlmCisrZW5kaWYKKysKKyBpZiBjYy5oYXNfbWVtYmVyKCdzdHJ1Y3QgdG0nLCAndG1fZ210b2ZmJywgcHJlZml4IDogJyNpbmNsdWRlIDx0aW1lLmg+JykKKyAgIGNkYXRhLnNldCgnSEFWRV9UTV9HTVRPRkYnLCAxKQorIGVuZGlmCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggZTdmZjdiYS4uOGFmZGUzOSAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTE5LDYgKzE5LDcgQEAgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAKKyAjIEZlYXR1cmUgb3B0aW9ucworIG9wdGlvbignY2hlY2snLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnQnVpbGQgdW5pdCB0ZXN0IGxpYnJhcmllcycpCisrb3B0aW9uKCd2YWxncmluZCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydCcpCisgb3B0aW9uKCdsaWJ1bndpbmQnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnVXNlIGxpYnVud2luZCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzJykKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmM0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNTcgQEAKK0Zyb20gYjg0MzQwMDI4NDc1MTk2ODg2Mjc1MWRmZTkzODUzZjE1MTU1MWM2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBGcmksIDI1IE9jdCAyMDE5IDAwOjA2OjI2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgb3B0aW9uIGZvciBpbnN0YWxsZWQgdGVzdHMKKworVGhpcyBhZGRzIGFuIG9wdGlvbiBmb3IgcHJvZHVjaW5nIGluc3RhbGxlZCB2ZXJzaW9ucyBvZiB0aGUgdW5pdCB0ZXN0cy4KK1RoZXNlIHZlcnNpb25zIGRvbid0IG5lZWQgbWVzb24gdG8gcnVuIChvbmx5IGEgc21hbGwgc2hlbGwgc2NyaXB0KS4gVGhpcworbWFrZXMgaXQgZWFzaWVyIHRvIHJ1biBjcm9zcyBjb21waWxlZCB0ZXN0cyBvbiBhIHRhcmdldCBtYWNoaW5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weSAgICAgfCAxOCArKysrKysKKyBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5IHwgMjUgKysrKysrKysKKyBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKworIHRlc3RzL2NoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrLQorIHRlc3RzL2ZpbGVzL3Rlc3RmaWxlICAgICAgICAgICAgICAgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ZpbGVzL3Rlc3RmaWxlCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42OWU4YTBmCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK0BAIC0wLDAgKzEsMTggQEAKKytpbXBvcnQgc3lzCisraW1wb3J0IG9zCisraW1wb3J0IGFyZ3BhcnNlCisrCisrZGVmIHdyaXRlX3RlbXBsYXRlKGZpbGVuYW1lLCBkYXRhKToKKysgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAndycpIGFzIGY6CisrICAgICAgICBmLndyaXRlKGRhdGEpCisrCisrZGVmIGJ1aWxkX3RlbXBsYXRlKHRlc3RkaXIsIHRlc3RuYW1lKToKKysgICAgcmV0dXJuICJbVGVzdF1cblR5cGU9c2Vzc2lvblxuRXhlYz17fVxuIi5mb3JtYXQob3MucGF0aC5qb2luKHRlc3RkaXIsIHRlc3RuYW1lKSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weSBiL2J1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3Qtc2hzY3JpcHQucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41ZGE4NmZiCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CitAQCAtMCwwICsxLDI1IEBACisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9ydCBhcmdwYXJzZQorKworK2RlZiB3cml0ZV90ZW1wbGF0ZShmaWxlbmFtZSwgZGF0YSk6CisrICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmOgorKyAgICAgICAgZi53cml0ZShkYXRhKQorKworK2RlZiBidWlsZF90ZW1wbGF0ZSh0ZXN0ZGlyLCB0ZXN0bmFtZSk6CisrICAgIHJldHVybiAnJy5qb2luKFsKKysgICAgICAgICIjIS91c3IvYmluL2VudiBzaFxuIiwKKysgICAgICAgICJleHBvcnQgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0nJ1xuIiwKKysgICAgICAgICJleHBvcnQgQ0tfREVGQVVMVF9USU1FT1VUPTIwXG4iLAorKyAgICAgICAgImV4cG9ydCBHU1RfUExVR0lOX0xPQURJTkdfV0hJVEVMSVNUPSdnc3RyZWFtZXInXG4iLAorKyAgICAgICAgInt9XG4iLmZvcm1hdChvcy5wYXRoLmpvaW4odGVzdGRpciwgdGVzdG5hbWUpKSwKKysgICAgXSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCisrb3MuY2htb2QoYXJncy5vdXRwdXQsIDBvNzU1KQorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IDhhZmRlMzkuLjg4ODRkY2MgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0xNiw2ICsxNiw4IEBAIG9wdGlvbigncG9pc29uaW5nJywgdHlwZSA6ICdib29sZWFuJywgdmFsdWUgOiBmYWxzZSwgZGVzY3JpcHRpb24gOiAnRW5hYmxlIHBvaXNvCisgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAgICAgICAgY2hvaWNlcyA6IFsnMScsICcyJywgJzQnLCAnOCcsICcxNicsICczMicsICc2NCcsICcxMjgnLCAnMjU2JywgJzUxMicsICcxMDI0JywgJzIwNDgnLCAnNDA5NicsICc4MTkyJywgJ21hbGxvYycsICdwYWdlc2l6ZSddLAorICAgICAgICB2YWx1ZTogJ21hbGxvYycpCisrb3B0aW9uKCdpbnN0YWxsZWQtdGVzdHMnLCB0eXBlIDogJ2Jvb2xlYW4nLCB2YWx1ZSA6IGZhbHNlLCBkZXNjcmlwdGlvbiA6ICdlbmFibGUgaW5zdGFsbGVkIHRlc3RzJykKKytvcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcsIHR5cGUgOiAnc3RyaW5nJywgZGVzY3JpcHRpb24gOiAnUGF0aCB3aGVyZSB0byBmaW5kIHRlc3QgZmlsZXMnKQorIAorICMgRmVhdHVyZSBvcHRpb25zCisgb3B0aW9uKCdjaGVjaycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdCdWlsZCB1bml0IHRlc3QgbGlicmFyaWVzJykKK2RpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9tZXNvbi5idWlsZCBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitpbmRleCAwNGRhODNmLi4yZGI3Zjc2IDEwMDY0NAorLS0tIGEvdGVzdHMvY2hlY2svbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitAQCAtMTE4LDExICsxMTgsMTcgQEAgaWYgYWRkX2xhbmd1YWdlcygnY3BwJywgcmVxdWlyZWQgOiBmYWxzZSkKKyAgIF0KKyBlbmRpZgorIAorK3Rlc3RfZmlsZXNfcGF0aCA9IGdldF9vcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcpCisraWYgdGVzdF9maWxlc19wYXRoID09ICcnCisrICB0ZXN0X2ZpbGVzX3BhdGggPSBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSArICcvLi4vZmlsZXMnCisrZW5kaWYKKyttZXNzYWdlKCdVc2luZyBwYXRoICJAMEAiIGFzIHRoZSBwYXRoIHRvIHJlYWQgdGVzdCBmaWxlcyBmcm9tJy5mb3JtYXQodGVzdF9maWxlc19wYXRoKSkKKysKKyB0ZXN0X2RlZmluZXMgPSBbCisgICAnLVVHX0RJU0FCTEVfQVNTRVJUJywKKyAgICctVUdfRElTQUJMRV9DQVNUX0NIRUNLUycsCisgICAnLURHU1RfQ0hFQ0tfVEVTVF9FTlZJUk9OTUVOVF9CRUFDT049IkdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFMiJywKKy0gICctRFRFU1RGSUxFPSInICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkgKyAnL21lc29uLmJ1aWxkIicsCisrICAnLURURVNURklMRT0iQDBAIicuZm9ybWF0KHRlc3RfZmlsZXNfcGF0aCArICcvdGVzdGZpbGUnKSwKKyAgICctREdTVF9VU0VfVU5TVEFCTEVfQVBJJywKKyAgICctREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorIF0KK0BAIC0xMzcsNiArMTQzLDE0IEBAIGVuZGlmCisgZ2xpYl9kZXBzID0gW2dpb19kZXAsIGdvYmplY3RfZGVwLCBnbW9kdWxlX2RlcCwgZ2xpYl9kZXBdCisgZ3N0X2RlcHMgPSBbZ3N0X2RlcCwgZ3N0X2Jhc2VfZGVwLCBnc3RfY2hlY2tfZGVwLCBnc3RfbmV0X2RlcCwgZ3N0X2NvbnRyb2xsZXJfZGVwXQorIAorK2luc3RhbGxlZF90ZXN0c19kYXRhZGlyID0gam9pbl9wYXRocyhwcmVmaXgsIGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2luc3RhbGxlZC10ZXN0cycsICdnc3RyZWFtZXItMS4wJykKKytpbnN0YWxsZWRfdGVzdHNfZXhlY2RpciA9IGpvaW5fcGF0aHMocHJlZml4LCBsaWJleGVjZGlyLCAnaW5zdGFsbGVkLXRlc3RzJywgJ2dzdHJlYW1lci0xLjAnKQorK2luc3RhbGxlZF90ZXN0c19lbmFibGVkID0gZ2V0X29wdGlvbignaW5zdGFsbGVkLXRlc3RzJykKKysKKytweXRob24gPSBpbXBvcnQoJ3B5dGhvbicpLmZpbmRfaW5zdGFsbGF0aW9uKCkKKytnZW5faW5zdGFsbGVkX3Rlc3RfZGVzYyA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHknKQorK2dlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5JykKKysKKyBmb3JlYWNoIHQgOiBjb3JlX3Rlc3RzCisgICBmbmFtZSA9IHRbMF0KKyAgIHRlc3RfbmFtZSA9IGZuYW1lLnNwbGl0KCcuJylbMF0udW5kZXJzY29yaWZ5KCkKK0BAIC0xNTAsOCArMTY0LDM4IEBAIGZvcmVhY2ggdCA6IGNvcmVfdGVzdHMKKyAgICAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgOiBbY29uZmlnaW5jXSwKKyAgICAgICAgIGxpbmtfd2l0aCA6IGxpbmtfd2l0aF9saWJzLAorICAgICAgICAgZGVwZW5kZW5jaWVzIDogdGVzdF9kZXBzICsgZ2xpYl9kZXBzICsgZ3N0X2RlcHMsCisrICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIsCisrICAgICAgICBpbnN0YWxsOiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorICAgICApCisgCisrICAgIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCisrICAgICAgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQgPSB0ZXN0X25hbWUgKyAnLnNoJworKyAgICAgIHNoc2NyaXB0ID0gY3VzdG9tX3RhcmdldCAodGVzdF9uYW1lICsgJ19zaHNjcmlwdCcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdC1leGVjZGlyPUAwQCcuZm9ybWF0KGluc3RhbGxlZF90ZXN0c19leGVjZGlyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQodGVzdF9uYW1lKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsOiB0cnVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXI6IGluc3RhbGxlZF90ZXN0c19leGVjZGlyKQorKworKyAgICAgIGluc3RhbGxlZF90ZXN0X2Rlc2MgPSB0ZXN0X25hbWUgKyAnLnRlc3QnCisrICAgICAgZGF0YSA9IGN1c3RvbV90YXJnZXQodGVzdF9uYW1lICsgJ19kZXNjJywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2luc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0LWV4ZWNkaXI9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3RfZGVzYykpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbDogdHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2RhdGFkaXIpCisrICAgIGVuZGlmCisrCisgICAgIGVudiA9IGVudmlyb25tZW50KCkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9QQVRIXzFfMCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzAnLCAnJykKK2RpZmYgLS1naXQgYS90ZXN0cy9maWxlcy90ZXN0ZmlsZSBiL3Rlc3RzL2ZpbGVzL3Rlc3RmaWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODk5NTRlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZmlsZXMvdGVzdGZpbGUKK0BAIC0wLDAgKzEsODAgQEAKKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvY2FwZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2EzZDVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitDdXJyZW50bHkgZ3N0cmVhbWVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHNldGNhcCBpcyBmb3VuZCBvbiB0aGUgaG9zdAorc3lzdGVtLiBUdXJuIHRoaXMgaW50byBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gbWFrZSBidWlsZHMgZGV0ZXJpbmlzdGljLgorCitSUCAyMDIwLzIvMTkKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBnc3RyZWFtZXItMS4xNi4xL2xpYnMvZ3N0L2hlbHBlcnMvbWVzb24uYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3RyZWFtZXItMS4xNi4xLm9yaWcvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorKysrIGdzdHJlYW1lci0xLjE2LjEvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorQEAgLTczLDcgKzczLDEyIEBAIGlmIGhhdmVfcHRwCisgICAgIGVuZGlmCisgICBlbmRpZgorIAorLSAgc2V0Y2FwID0gZmluZF9wcm9ncmFtKCdzZXRjYXAnLCAnL3Vzci9zYmluL3NldGNhcCcsICcvc2Jpbi9zZXRjYXAnLCByZXF1aXJlZCA6IGZhbHNlKQorKyAgc2V0Y2FwX2ZlYXR1cmUgPSBnZXRfb3B0aW9uKCdzZXRjYXAnKQorKyAgaWYgc2V0Y2FwX2ZlYXR1cmUuZGlzYWJsZWQoKQorKyAgICBzZXRjYXAgPSBmaW5kX3Byb2dyYW0oJ2RvbnRleGlzdCcsIHJlcXVpcmVkIDogZmFsc2UpCisrICBlbHNlCisrICAgIHNldGNhcCA9IGZpbmRfcHJvZ3JhbSgnc2V0Y2FwJywgJy91c3Ivc2Jpbi9zZXRjYXAnLCAnL3NiaW4vc2V0Y2FwJywgcmVxdWlyZWQgOiBmYWxzZSkKKysgIGVuZGlmCisgCisgICAjIHVzZXIvZ3JvdXAgdG8gY2hhbmdlIHRvIGluIGdzdC1wdHAtaGVscGVyCisgICBwdHBfaGVscGVyX3NldHVpZF91c2VyID0gZ2V0X29wdGlvbigncHRwLWhlbHBlci1zZXR1aWQtdXNlcicpCitJbmRleDogZ3N0cmVhbWVyLTEuMTYuMS9tZXNvbl9vcHRpb25zLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdHJlYW1lci0xLjE2LjEub3JpZy9tZXNvbl9vcHRpb25zLnR4dAorKysrIGdzdHJlYW1lci0xLjE2LjEvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0yNiw2ICsyNiw3IEBAIG9wdGlvbignbGlidW53aW5kJywgdHlwZSA6ICdmZWF0dXJlJywgdmEKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorIG9wdGlvbignYmFzaC1jb21wbGV0aW9uJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ0luc3RhbGwgYmFzaCBjb21wbGV0aW9uIGZpbGVzJykKKytvcHRpb24oJ3NldGNhcCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2Ugc2V0Y2FwJykKKyAKKyAjIENvbW1vbiBmZWF0dXJlIG9wdGlvbnMKKyBvcHRpb24oJ2V4YW1wbGVzJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIHlpZWxkIDogdHJ1ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjkyZjYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciAxLjAgbXVsdGltZWRpYSBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJHU3RyZWFtZXIgaXMgYSBtdWx0aW1lZGlhIGZyYW1ld29yayBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHZpZGVvIGFuZCBzb3VuZC4gXAotSXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGZvcm1hdHMgaW5jbHVkaW5nIG1wMywgb2dnLCBhdmksIG1wZWcgYW5kIHF1aWNrdGltZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmNhcCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHB0ZXN0Ci0KLSMgVGhpcyB3YXkgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgd2lsbCBjb21lIGZpcnN0Ci0jIChpdCBoYXMgYSBjdXN0b20gSU5UUk9TUEVDVElPTl9JTklUIG1hY3JvLCBhbmQgc28gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygb3VyIGNvbW1vbiBpbnRyb3NwZWN0aW9uLm00IGZpbGUpCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCi0gICAgZmlsZTovL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTA1ZmI4MThiMzY5ODhkYWFhODQ2ZTllNjNlYWJlOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjIxMWMzNDQ3YzRkYWE1NTkxOWM1YzBmNDNhODJhNmZiYjUxNzQwZDU3ZmMzYWYwNjM5ZDQ2ZjFjZjQzNzdkIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCi1QQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyIKLQotIyBtdXNsIGxpYmMgZ2VuZXJhdGVzIHdhcm5pbmdzIGlmIDxzeXMvcG9sbC5oPiBpcyBpbmNsdWRlZCBkaXJlY3RseQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9zeXNfcG9sbF9oPW5vIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKLUZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLSAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQotICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgYnVpbGQtY2hlY2tzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMvY2hlY2sgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBpbnN0YWxsLXB0ZXN0Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vdGVzdHMvY2hlY2svTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAotICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCi0gICAgICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKQEAgLTAsMCArMSw3NyBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKK0l0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIrIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2ggXAorICAgIGZpbGU6Ly9jYXBmaXgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBlNjYxZWQ1YmRmMWQ4OTk2ZTQzMDIyOGQwMjI2MjhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZjA0NDI0Njc4M2ZkNjg1NDM5NjQ3MzczZmExM2JhMTRmN2FiMGIzNDZlYWRkMDY0MzcwOTJmODQxOWU5NGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgY2hlY2sgXAorICAgICAgICAgICAgICAgICAgIGRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICB0b29scyIKKworUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLURnc3RfZGVidWc9dHJ1ZSwtRGdzdF9kZWJ1Zz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdHJhY2VyLWhvb2tzXSA9ICItRHRyYWNlcl9ob29rcz10cnVlLC1EdHJhY2VyX2hvb2tzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjaGVja10gPSAiLURjaGVjaz1lbmFibGVkLC1EY2hlY2s9ZGlzYWJsZWQiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRHRlc3RzPWVuYWJsZWQgLURpbnN0YWxsZWQtdGVzdHM9dHJ1ZSwtRHRlc3RzPWRpc2FibGVkIC1EaW5zdGFsbGVkLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD1lbmFibGVkLC1EdmFsZ3JpbmQ9ZGlzYWJsZWQsdmFsZ3JpbmQsIgorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi1EbGlidW53aW5kPWVuYWJsZWQsLURsaWJ1bndpbmQ9ZGlzYWJsZWQsbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tkd10gPSAiLURsaWJkdz1lbmFibGVkLC1EbGliZHc9ZGlzYWJsZWQsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2Jhc2gtY29tcGxldGlvbl0gPSAiLURiYXNoLWNvbXBsZXRpb249ZW5hYmxlZCwtRGJhc2gtY29tcGxldGlvbj1kaXNhYmxlZCxiYXNoLWNvbXBsZXRpb24iCitQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItRHRvb2xzPWVuYWJsZWQsLUR0b29scz1kaXNhYmxlZCIKK1BBQ0tBR0VDT05GSUdbc2V0Y2FwXSA9ICItRHNldGNhcD1lbmFibGVkLC1Ec2V0Y2FwPWRpc2FibGVkLGxpYmNhcCBsaWJjYXAtbmF0aXZlIgorCisjIFRPRE86IHB1dCB0aGlzIGluIGEgZ2V0dGV4dC5iYmNsYXNzIHBhdGNoCitkZWYgZ2V0dGV4dF9vZW1lc29uKGQpOgorICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICAjIFJlbW92ZSB0aGUgTkxTIGJpdHMgaWYgVVNFX05MUyBpcyBubyBvciBJTkhJQklUX0RFRkFVTFRfREVQUyBpcyBzZXQKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKSBhbmQgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcy1jYW5hZGlhbicpOgorICAgICAgICByZXR1cm4gJy1EbmxzPWRpc2FibGVkJworICAgIHJldHVybiAnLURubHM9ZW5hYmxlZCcKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRGRiZ2hlbHA9ZGlzYWJsZWQgXAorICAgICR7QGdldHRleHRfb2VtZXNvbihkKX0gXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworUEFDS0FHRVMgKz0gIiR7UE59LWJhc2gtY29tcGxldGlvbiIKKworIyBBZGQgdGhlIGNvcmUgZWxlbWVudCBwbHVnaW5zIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKK0ZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKKworQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgorCityZXF1aXJlIGdzdHJlYW1lcjEuMC1wdGVzdC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9teGlsL2xpYm9teGlsXzAuOS4zLmJiCmluZGV4IGQ4M2ViNDUuLjI3MWMyYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvbXhpbC9saWJvbXhpbF8wLjkuMy5iYgpAQCAtMjQsNiArMjQsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2MgLS1kaXNhYmxlLVdlcnJvciIKIAorUFJPVklERVMgKz0gInZpcnR1YWwvbGlib214aWwiCisKICMKICMgVGhlIC5zbyBmaWxlcyB1bmRlciAke2xpYmRpcn0vYmVsbGFnaW8gYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB2ZXJzaW9uZWQgYW5kIHN5bWxpbmtlZC4KICMgTWFrZSBzdXJlIHRoZXkgZ2V0IHBhY2thZ2VkIGluIHRoZSBtYWluIHBhY2thZ2UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNy5iYgppbmRleCAyZWQ4N2E4Li44YzUzZDExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzcuYmIKQEAgLTIsMTggKzIsMTYgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIwMDg1MDUxYmYyNjViYWMyYmZjMzhiYzg5ZjUwMDAwXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PThhY2QyM2Q1NDQ2MjM4MTZiMDk3ZTA3YmUwMTM5NTA5XAotICAgICAgICAgICAgICAgICAgICAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMDA4NTA1MWJmMjY1YmFjMmJmYzM4YmM4OWY1MDAwMCIKIERFUEVORFMgPSAiemxpYiIKIAogTElCViA9ICIxNiIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke0JQfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZThlMTVkYjFlZWNkZTVmMmViOWViNWI2ZTU5ZTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA1ZTcwODM0ZDM1MzgzNTM3YjY0OTFlN2FlODY0MWYxYTRiZWQxODc2ZGJmZTM2MTIwMWZjODA4NjhkODhjYSIKIAotTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8gJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCmluZGV4IDc4NTUwMDguLmIxMDAxMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yOC5iYgpAQCAtMzIsNyArMzIsMTEgQEAKIFBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKIFBBQ0tBR0VDT05GSUdbcmVndGVzdF0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBzbmRmaWxlLmgKK30KIAogIyBUaGlzIGNhbid0IGJlIHJlcGxpY2F0ZWQgYW5kIGlzIGp1c3QgYSBtZW1vcnkgbGVhay4KICMgaHR0cHM6Ly9naXRodWIuY29tL2VyaWtkL2xpYnNuZGZpbGUvaXNzdWVzLzM5OApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCmluZGV4IGVjNTFkOGIuLmM3ZjNlNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTU2LDEzICs1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9maWx0ZXIvYmlxdWFkLmg7YmVnaW5saW5lPTE7ZW5kbGluZT00O21kNT02ZDQ2ZDEzNjUyMDY1MjhhMjAxMzczNTU5MjQyMzNjMSBcCiAiCiAKLURFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIGludGx0b29sLW5hdGl2ZSIKK0RFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIgogIyBvcHRpb25hbAogREVQRU5EUyArPSAidWRldiBhbHNhLWxpYiBnbGliLTIuMCIKIERFUEVORFMgKz0gInNwZWV4ZHNwIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgbGliY2FwIgogCiBpbmhlcml0IGF1dG90b29scyBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnIHVzZXJhZGQgZ2V0dGV4dCBwZXJsbmF0aXZlIHN5c3RlbWQgbWFucGFnZXMgZ3NldHRpbmdzCiAKKyMgV2hlbiBjb21waWxpbmcgZm9yIFRodW1iIG9yIFRodW1iMiwgZnJhbWUgcG9pbnRlcnMgX211c3RfIGJlIGRpc2FibGVkIHNpbmNlIHRoZQorIyBUaHVtYiBmcmFtZSBwb2ludGVyIGluIHI3IGNsYXNoZXMgd2l0aCBwdWxzZWF1ZGlvJ3MgdXNlIG9mIGlubGluZSBhc20gdG8gbWFrZSBzeXNjYWxscworIyAod2hlcmUgcjcgaXMgdXNlZCBmb3IgdGhlIHN5c2NhbGwgTlIpLiBJbiBtb3N0IGNhc2VzLCBmcmFtZSBwb2ludGVycyB3aWxsIGJlCisjIGRpc2FibGVkIGF1dG9tYXRpY2FsbHkgZHVlIHRvIHRoZSBvcHRpbWlzYXRpb24gbGV2ZWwsIGJ1dCBhcHBlbmQgYW4gZXhwbGljaXQKKyMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbiBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lCisjIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX2FybSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCiAjICouZGVza3RvcCBydWxlcyB3b250IGJlIGdlbmVyYXRlZCBkdXJpbmcgY29uZmlndXJlIGFuZCBidWlsZCB3aWxsIGZhaWwKICMgaWYgdXNpbmcgLS1kaXNhYmxlLW5scwogVVNFX05MUyA9ICJ5ZXMiCkBAIC0xNTgsMTIgKzE2NiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1ncm91cHMgYXVkaW8scHVsc2UgLS1naWQgcHVsc2UgcHVsc2UiCiAKK1BBQ0tBR0VTID0rICJcCisgICAgICAgICAgICAgbGlicHVsc2UgXAorICAgICAgICAgICAgIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAorICAgICAgICAgICAgIGxpYnB1bHNlLXNpbXBsZSBcCisgICAgICAgICAgICAgbGlicHVsc2Vjb21tb24gXAorICAgICAgICAgICAgIGxpYnB1bHNlY29yZSBcCisgICAgICAgICAgICAgJHtQTn0tcGEtaW5mbyBcCisgICAgICAgICAgICAgJHtQTn0tc2VydmVyIFwKKyAgICAgICAgICAgICAke1BOfS1taXNjIFwKKyAgICAgICAgICAgICAiCisKICMgVGhlIGNvbnNvbGUta2l0IG1vZHVsZSBpcyBpbmNsdWRlZCBoZXJlIGV4cGxpY2l0bHkgc28gYml0YmFrZSBjYW4gbWFwIHRvIHRoZQogIyBSREVQRU5EUyB3ZSBkZWZpbmUgZm9yIGl0IGluIHRoaXMgcmVjaXBlLCBhbmQgdGhlcmVieSBlbnN1cmUgdGhhdCB3aGVuCiAjIGFkZGluZyB0aGUgY29uc29sZS1raXQgbW9kdWxlIHRvIGFuIGltYWdlLCB3ZSBhbHNvIGdldCB0aGUgbmVjZXNzYXJ5CiAjIGNvbnNvbGVraXQgcGFja2FnZSBwcm9kdWNlZC4KLVBBQ0tBR0VTID0rICJsaWJwdWxzZWNvcmUgbGlicHVsc2Vjb21tb24gbGlicHVsc2UgbGlicHVsc2Utc2ltcGxlIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAotICAgICAgICAgICAgIHB1bHNlYXVkaW8tc2VydmVyIHB1bHNlYXVkaW8tbWlzYyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKIAogI3VwZ3JhZGUgcGF0aDoKIFJSRVBMQUNFU19wdWxzZWF1ZGlvLXNlcnZlciA9ICJsaWJwdWxzZS1iaW4gbGlicHVsc2UtY29uZiIKQEAgLTE4Myw2ICsyMDEsNyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcHVsc2UtJHtQVn0vbW9kdWxlcy8qLmxhICR7ZGF0YWRpcn0vdmFsYSAke2xpYmRpcn0vY21ha2UiICAgCiBGSUxFU18ke1BOfS1jb25mID0gIiR7c3lzY29uZmRpcn0iCiBGSUxFU18ke1BOfS1iaW4gKz0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjA0X3B1bHNlIgorRklMRVNfJHtQTn0tcGEtaW5mbyA9ICIke2JpbmRpcn0vcGEtaW5mbyIKIEZJTEVTXyR7UE59LXNlcnZlciA9ICIke2JpbmRpcn0vcHVsc2VhdWRpbyAke2JpbmRpcn0vc3RhcnQtKiAke3N5c2NvbmZkaXJ9ICR7YmluZGlyfS9wYWN0bCAqL3VkZXYvcnVsZXMuZC8qLnJ1bGVzICovKi91ZGV2L3J1bGVzLmQvKi5ydWxlcyAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS8qIgogCiAjU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIiCkBAIC0yMTQsNiArMjMzLDE2IEBACiAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCByJ15saWIoLiopXC5zbyQnLCAnJHtQTn0tbGliLSVzJywgJ1B1bHNlQXVkaW8gbGlicmFyeSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCiB9CiAKKyMgcGEtaW5mbyBpcyBhIGJhc2ggc2NyaXB0IHRoYXQgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF1ZGlvIHNldHVwLgorIyBJdCdzIHByaW1hcmlseSB1c2VmdWwgZm9yIGF0dGFjaGluZyBhbiBpbmZvcm1hdGlvbiBkdW1wIHdoZW4gcmVwb3J0aW5nIGJ1Z3MuCitSREVQRU5EU18ke1BOfS1wYS1pbmZvID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1zY3JpcHRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LXNlcnZlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIKKwogUkRFUEVORFNfcHVsc2VhdWRpby1zZXJ2ZXIgPSAiIFwKICAgICBwdWxzZWF1ZGlvLW1vZHVsZS1maWx0ZXItYXBwbHkgXAogICAgIHB1bHNlYXVkaW8tbW9kdWxlLWZpbHRlci1oZXVyaXN0aWNzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTAyNmEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGI4OWQzM2JiMTgyYzQyZGI1YWQzOTg3YjBlOTFiN2JmNjJmNDIxZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci1EYXRlOiBTdW4sIDIxIEFwciAyMDE5IDExOjU5OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc2E6IEZpeCBpbmNsdXNpb24gb2YgdXNlLWNhc2UuaAotCi1UaGUgcmVjZW50IGNoYW5nZSBpbiBBTFNBIHVwc3RyZWFtIHN0cmlwcGVkIC1JJGluY2x1ZGUvYWxzYSBwYXRoIGZyb20KLXBrZ2NvbmZpZy4gIFdlIGFscmVhZHkgZml4ZWQgZm9yIHRoaXMgY2hhbmdlIGluIHNvbWUgcGxhY2VzIGJ1dCBzdGlsbAotdGhlIGNvZGUgZm9yIFVDTSB3YXMgb3Zlcmxvb2tlZCwgYW5kIHRoaXMgcmVzdWx0ZWQgaW4gdGhlIHVucmVzb2x2ZWQKLXN5bWJvbHMgaW4gYWxzYSBjYXJkIG1vZHVsZS4gRml4IHRoZW0gYXMgd2VsbC4KLQotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS11Y20uaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzAwNGJkNzBkLi5iNDRlZDE1OTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgyNiw3ICs4MjYsNyBAQCBBU19JRihbdGVzdCAieCRlbmFibGVfYWxzYSIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX0FMU0EiID0gIngwIl0sCi0gQVNfSUYoW3Rlc3QgIngkSEFWRV9BTFNBIiA9ICJ4MSJdLAotICAgICBbCi0gICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiOyBDUFBGTEFHUz0iJENQUEZMQUdTICRBU09VTkRMSUJfQ0ZMQUdTIgotLSAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbdXNlLWNhc2UuaF0sIEhBVkVfQUxTQV9VQ009MSwgSEFWRV9BTFNBX1VDTT0wKQotKyAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbYWxzYS91c2UtY2FzZS5oXSwgSEFWRV9BTFNBX1VDTT0xLCBIQVZFX0FMU0FfVUNNPTApCi0gICAgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgIF0sCi0gICAgIEhBVkVfQUxTQV9VQ009MCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmggYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLWluZGV4IDUzYWJmM2Y5MC4uYzkyNmYzY2MzIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gKioqLwotIAotICNpZmRlZiBIQVZFX0FMU0FfVUNNCi0tI2luY2x1ZGUgPHVzZS1jYXNlLmg+Ci0rI2luY2x1ZGUgPGFsc2EvdXNlLWNhc2UuaD4KLSAjZWxzZQotIHR5cGVkZWYgdm9pZCBzbmRfdXNlX2Nhc2VfbWdyX3Q7Ci0gI2VuZGlmCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTljZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1pbnRyb2R1Y2UtYS1zcGVjaWFsLWJ1aWxkLWZsYWctdG8tZXhwbGljaXRseS1kaXNhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLUZyb20gMzZmZWI5OGU1NjgyMjFlMjQyODY2MTU3MzA4ODhkNWY2ZmYzMjNmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNyBEZWMgMjAxOCAxNToxMjozOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBpbnRyb2R1Y2UgYSBzcGVjaWFsIGJ1aWxkIGZsYWcgdG8gZXhwbGljaXRseSBkaXNhYmxlcyBydW5uaW5nCi0gZnJvbSBidWlsZCB0cmVlCi0KLUl0IGlzIGhlbHBmdWwgdG8gaW1wcm92ZSByZXByb2R1Y2liaWxpdHkgYnVpbGQgWzFdIHNpbmNlCi1QQV9TUkNESVIvUEFfQlVJTERESVIgY29udGFpbnMgYnVpbGQgcGF0aCwgZGlzYWJsZSBydW5uaW5nCi1mcm9tIGJ1aWxkIHRyZWUgY291bGQgZHJvcCB0aGVzZSBtYWNyb3MgYXQgcHJlY29tcGlsYXRpb24uCi0KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnLwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLUFja2VkLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIHNyYy9kYWVtb24vZGFlbW9uLWNvbmYuYyAgICAgICAgICAgICAgICAgfCAgNCArKystCi0gc3JjL2RhZW1vbi9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jICAgICAgICAgICAgfCAgNCArKysrCi0gc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMgICAgICAgICB8ICAyICstCi0gc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYyB8ICAyICstCi0gc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyAgICAgICAgICAgICAgICB8ICA0ICsrKy0KLSA3IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM5YzQxNGYuLjhiMzQ1ZWYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5OCw2ICs5OTgsMTYgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2FzeW5jbnMiID0gInh5ZXMiICYmIHRlc3QgIngkSEFWRV9MSUJBU1lOQ05TIiA9ICJ4MCJdLAotIEFNX0NPTkRJVElPTkFMKFtIQVZFX0xJQkFTWU5DTlNdLCBbdGVzdCAieCRIQVZFX0xJQkFTWU5DTlMiID0geDFdKQotIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfTElCQVNZTkNOUyIgPSAieDEiXSwgQUNfREVGSU5FKFtIQVZFX0xJQkFTWU5DTlNdLCAxLCBbSGF2ZSBsaWJhc3luY25zP10pKQotIAotKyMjIyMgUnVubmluZyBmcm9tIGJ1aWxkIHRyZWUgKG9wdGlvbmFsKSAjIyMjCi0rCi0rQUNfQVJHX0VOQUJMRShbcnVubmluZy1mcm9tLWJ1aWxkLXRyZWVdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXJ1bm5pbmctZnJvbS1idWlsZC10cmVlXSxbRGlzYWJsZSBydW5uaW5nIGZyb20gYnVpbGQgdHJlZV0pKQotKwotK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9ydW5uaW5nX2Zyb21fYnVpbGRfdHJlZSIgIT0gInhubyJdLAotKyAgICAgIEFDX0RFRklORShbSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRV0sIDEsIFtIYXZlIHJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlXSkpCi0rCi0rQUNfU1VCU1QoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSsKLSAjIyMjIFRDUCB3cmFwcGVycyAob3B0aW9uYWwpICMjIyMKLSAKLSBBQ19BUkdfRU5BQkxFKFt0Y3B3cmFwXSwKLWRpZmYgLS1naXQgYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMgYi9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLWluZGV4IDk4ODMxMjYuLmYwMWVmZjQgMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLSsrKyBiL3NyYy9kYWVtb24vZGFlbW9uLWNvbmYuYwotQEAgLTE1NSwxMiArMTU1LDE0IEBAIHBhX2RhZW1vbl9jb25mICpwYV9kYWVtb25fY29uZl9uZXcodm9pZCkgewotICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3NwcmludGZfbWFsbG9jKCIlcyIgUEFfUEFUSF9TRVAgImxpYiIgUEFfUEFUSF9TRVAgInB1bHNlLSVkLiVkIiBQQV9QQVRIX1NFUCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfd2luMzJfZ2V0X3RvcGxldmVsKE5VTEwpLCBQQV9NQUpPUiwgUEFfTUlOT1IpOwotICNlbHNlCi0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSAgICAgaWYgKHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSkgewotICAgICAgICAgcGFfbG9nX25vdGljZSgiRGV0ZWN0ZWQgdGhhdCB3ZSBhcmUgcnVuIGZyb20gdGhlIGJ1aWxkIHRyZWUsIGZpeGluZyBzZWFyY2ggcGF0aC4iKTsKLSAgICAgICAgIGMtPmRsX3NlYXJjaF9wYXRoID0gcGFfeHN0cmR1cChQQV9CVUlMRERJUik7Ci0gICAgIH0gZWxzZQotLSAgICAgICAgYy0+ZGxfc2VhcmNoX3BhdGggPSBwYV94c3RyZHVwKFBBX0RMU0VBUkNIUEFUSCk7Ci0gI2VuZGlmCi0rICAgICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3hzdHJkdXAoUEFfRExTRUFSQ0hQQVRIKTsKLSsjZW5kaWYgLy9FbmRvZiAjaWZkZWYgT1NfSVNfV0lOMzIKLSAKLSAgICAgcmV0dXJuIGM7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vbWFpbi5jIGIvc3JjL2RhZW1vbi9tYWluLmMKLWluZGV4IGM4MGZhOTQuLjFlMDAzODggMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL21haW4uYwotKysrIGIvc3JjL2RhZW1vbi9tYWluLmMKLUBAIC05MzIsNiArOTMyLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAKLSAgICAgcGFfbG9nX2RlYnVnKCJSdW5uaW5nIGluIFZNOiAlcyIsIHBhX3llc19ubyhwYV9ydW5uaW5nX2luX3ZtKCkpKTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiAlcyIsIHBhX3llc19ubyhwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkpKTsKLSsjZWxzZQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiBubyIpOwotKyNlbmRpZgotKwotICNpZmRlZiBfX09QVElNSVpFX18KLSAgICAgcGFfbG9nX2RlYnVnKCJPcHRpbWl6ZWQgYnVpbGQ6IHllcyIpOwotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotaW5kZXggYTUyNGQ2ZC4uNjcwZjY0NiAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotQEAgLTI1NzEsOSArMjU3MSwxMSBAQCBzdGF0aWMgaW50IHBhdGhfdmVyaWZ5KHBhX2Fsc2FfcGF0aCAqcCkgewotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2RlZmF1bHRfcGF0aHNfZGlyKHZvaWQpIHsKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotICAgICBpZiAocGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpKQotICAgICAgICAgcmV0dXJuIFBBX1NSQ0RJUiAiL21vZHVsZXMvYWxzYS9taXhlci9wYXRocy8iOwotICAgICBlbHNlCi0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gUEFfQUxTQV9QQVRIU19ESVI7Ci0gfQotIAotQEAgLTQ0NTUsNyArNDQ1Nyw5IEBAIHBhX2Fsc2FfcHJvZmlsZV9zZXQqIHBhX2Fsc2FfcHJvZmlsZV9zZXRfbmV3KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBwYV9jaGFubmVsCi0gICAgICAgICBmbmFtZSA9ICJkZWZhdWx0LmNvbmYiOwotIAotICAgICBmbiA9IHBhX21heWJlX3ByZWZpeF9wYXRoKGZuYW1lLAotKyNpZmRlZiBIQVZFX1JVTk5JTkdfRlJPTV9CVUlMRF9UUkVFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfU1JDRElSICIvbW9kdWxlcy9hbHNhL21peGVyL3Byb2ZpbGUtc2V0cy8iIDoKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQV9BTFNBX1BST0ZJTEVfU0VUU19ESVIpOwotIAotICAgICByID0gcGFfY29uZmlnX3BhcnNlKGZuLCBOVUxMLCBpdGVtcywgTlVMTCwgZmFsc2UsIHBzKTsKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nY29uZi9tb2R1bGUtZ2NvbmYuYyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1pbmRleCBjMGY0ZGRlLi43NmExZjE5IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1AQCAtNTEsNyArNTEsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlKm0pIHsKLSAgICAgdS0+YnVmX2ZpbGwgPSAwOwotIAotICAgICBpZiAoKHUtPmZkID0gcGFfc3RhcnRfY2hpbGRfZm9yX3JlYWQoCi0tI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX09QVElNSVpFX18pCi0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfQlVJTERESVIgIi9nY29uZi1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dDT05GX0hFTFBFUiwgTlVMTCwgJnUtPnBpZCkpIDwgMCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nc2V0dGluZ3MvbW9kdWxlLWdzZXR0aW5ncy5jIGIvc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYwotaW5kZXggMzMwZWNhMS4uMjA5Yzg1NyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLUBAIC01MSw3ICs1MSw3IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUqbSkgewotICAgICB1LT5idWZfZmlsbCA9IDA7Ci0gCi0gICAgIGlmICgodS0+ZmQgPSBwYV9zdGFydF9jaGlsZF9mb3JfcmVhZCgKLS0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fT1BUSU1JWkVfXykKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkgPyBQQV9CVUlMRERJUiAiL2dzZXR0aW5ncy1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dTRVRUSU5HU19IRUxQRVIsIE5VTEwsICZ1LT5waWQpKSA8IDApCi1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyBiL3NyYy9wdWxzZWNvcmUvY29yZS11dGlsLmMKLWluZGV4IDY0ZTlmMjEuLmY4NWRkMjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi0rKysgYi9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi1AQCAtMzQzNiwxNSArMzQzNiwxNyBAQCB2b2lkIHBhX3Jlc2V0X3BlcnNvbmFsaXR5KHZvaWQpIHsKLSB9Ci0gCi0gYm9vbCBwYV9ydW5fZnJvbV9idWlsZF90cmVlKHZvaWQpIHsKLS0gICAgY2hhciAqcnA7Ci0gICAgIHN0YXRpYyBib29sIGIgPSBmYWxzZTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBjaGFyICpycDsKLSAgICAgUEFfT05DRV9CRUdJTiB7Ci0gICAgICAgICBpZiAoKHJwID0gcGFfcmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIikpKSB7Ci0gICAgICAgICAgICAgYiA9IHBhX3N0YXJ0c3dpdGgocnAsIFBBX0JVSUxERElSKTsKLSAgICAgICAgICAgICBwYV94ZnJlZShycCk7Ci0gICAgICAgICB9Ci0gICAgIH0gUEFfT05DRV9FTkQ7Ci0rI2VuZGlmCi0gCi0gICAgIHJldHVybiBiOwotIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTEzM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gMzQ1MGQxZmNmZThhOGY4NDU1M2FiMjk5Y2Q5NmFlMDcwNWRkZmZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTE6NDg6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtYXAvYXJtOiBBZGp1c3QgaW5saW5lIGFzbSBjb25zdHJhaW50cworCitnY2MxMCBjYW4gZWZmZWN0aXZlbHkgZW1pdCBzaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVycyBpZiByaWdodAorb3BlcmFuZCBtb2RpZmllciBjb25zdHJhaW50IGlzIG5vdCBpbiB1c2UKKworVGhpcyByZXN1bHRzIGluIGFzc2VtYmxlciByZWplY3RpbmcgdGhlIGNvZGUKKworL3RtcC9jY0VHNFFwSS5zOjY0NjogRXJyb3I6IFZGUC9OZW9uIGRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIgZXhwZWN0ZWQgLS0gYHZ0YmwuOCBkMyx7ZDAsZDF9LHM4JworL3RtcC9jY0VHNFFwSS5zOjY3ODogRXJyb3I6IGludmFsaWQgaW5zdHJ1Y3Rpb24gc2hhcGUgLS0gYHZtdWwuZjMyIGQwLGQwLHM4JworCitUaGVyZWZvcmUgYWRkICVQIHF1YWxpZmllciB0byByZXF1ZXN0IGRvdWJsZSByZWdpc3RlcnMgc2luZWNlICd3JyBjb3VsZAorbWVhbiB2YXJpYWJsZSBjb3VsZCBiZSBzdG9yZWQgaW4gczAuLnMxNCBhbmQgR0NDIGRlZmF1bHRzIHRvIHByaW50aW5nIG91dCBzMC4uczE0LgorTm90ZSB0aG9zZSByZWdpc3RlcnMgbWFwIHRvIGQwLi5kNyBhbHNvLgorCitPdXRwdXQgZ2VuZXJhdGVkIGlzIGV4YWN0bHkgc2FtZSB3aXRoIGdjYzksIGFuZCBpdCBhbHNvIG5vdyBjb21waWxlcword2l0aCBnY2MxMAorCitJdHMgbm90IGRvY3VtZW50ZWQgd2VsbCBpbiBnY2MgZG9jcyBhbmQgdGhlcmUgaXMgYSB0aWNrZXQgZm9yIHRoYXQKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTg0MzQzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLy0vbWVyZ2VfcmVxdWVzdHMvMjYxXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIGIvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKK2luZGV4IDQxMjA4OTg2ZC4uY2EzYjk1YjQ4IDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKKysrKyBiL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jCitAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2NoNF90b19tb25vX2Zsb2F0MzJuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGZsb2F0ICpkc3QsIGNvbnN0IGZsCisgICAgICAgICAgICAgInZhZGQuZjMyICAgZDAsIGQwLCBkMSAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidmFkZC5mMzIgICBkMiwgZDIsIGQzICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2YWRkLmYzMiAgIGQwLCBkMCwgZDIgICAgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZtdWwuZjMyICAgZDAsIGQwLCAlW3F1YXJ0XSAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidm11bC5mMzIgICBkMCwgZDAsICVQW3F1YXJ0XSAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3F1YXJ0XSAidyIgKHF1YXJ0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QgaQorICAgICBmb3IgKDsgbiA+PSAyOyBuIC09IDIpIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5zMTYgICBkMCwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlW3RdICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVQW3RdICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0XSAidyIgKHQpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2Vfc3RlcmVvX3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpCisgICAgIGlmIChuID4gMCkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgZDBbMF0sIFslW3NyY11dISAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgZDBbMF0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zMDIsOCArMzAyLDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgIGQwWzBdLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogIm1lbW9yeSIsICJkMCIgLyogY2xvYmJlciBsaXN0ICovCitAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpbnQxCisgICAgIGZvciAoOyBuID4gMDsgbi0tKSB7CisgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgInZsZDEuczE2ICAgZDAsIFslW3NyY11dISAgICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19mbG9hdDMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLnMxNiAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNDksOCArMzQ5LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X2FueTMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDEsIHtkMH0sICVbdDBdICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwfSwgJVt0MV0gICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQxLCB7ZDB9LCAlUFt0MF0gICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDIsIHtkMH0sICVQW3QxXSAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICB7ZDEsZDJ9LCBbJVtkc3RdXSEgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0MF0gInciICh0MCksIFt0MV0gInciICh0MSkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNjYsOCArMzY2LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDRfZmxvYXQzMm5lX25lb24ocGFfcmVtYXBfdCAqbSwgZmxvYXQgKmRzdCwgY29uc3QgZmwKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5mMzIgICB7ZDAsZDF9LCBbJVtzcmNdXSEgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQyLCB7ZDAsZDF9LCAlW3QwXSAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDMsIHtkMCxkMX0sICVbdDFdICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwLGQxfSwgJVBbdDBdICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQzLCB7ZDAsZDF9LCAlUFt0MV0gICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAge2QyLGQzfSwgWyVbZHN0XV0hICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdDBdICJ3IiAodDApLCBbdDFdICJ3IiAodDEpIC8qIGlucHV0IG9wZXJhbmRzICovCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiNDk3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9kdWNlLWEtc3BlY2lhbC1idWlsZC1mbGFnLXRvLWV4cGxpY2l0bHktZGlzYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzQyZjFmMTQ2NWU4ZGY5ODU5ZDAyM2RjMTg0NzM0YmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA5NjY4ZmZjMjk2MDQzNzc5Yzk4NGY1MzQ2MWMyYjM5ODdhNDViN2EyNWViMmYwYTFkMTFkOWYyM2JhNDA1NSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAotICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxNDk5YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBwdWxzZWF1ZGlvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQxZDYwNmY5MDI1NGVkNDVjOTA1MjBmYWY4M2Q5NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYxYjIzY2ExYWNmZDI4ZjJiYzg3NDE0YzI3YmI0MGUxMjQzNmVmY2YyMTU4ZDI5NzIxYjFlODlmM2YyODA1NyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3AvMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDY3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gYzczMzcwY2VhZmQxMzhiZWNlZThjYTNjNjg4YmE3NTc1NjgzMGJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnUua2Fza2luZW5AbGludXguaW50ZWwuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDE3OjQ4OjE2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHJlbHkgb24gSEFWRV9TVERJTlRfSCBldCBhbC4gYmVpbmcgZGVmaW5lZAotCi1Ob3QgZXZlcnlvbmUgd2hvIGluY2x1ZGVzIHNwZWV4ZHNwX2NvbmZpZ190eXBlcy5oIHdpbGwgaGF2ZSBhIHRlc3QKLXdoaWNoIGRlZmluZXMgdGhvc2UsIGFuZCBpZiB3ZSd2ZSBjaG9zZW4gdG8gdXNlIHRoZSBzdGRpbnQgdHlwZXMgYXQKLWNvbmZpZ3VyZSB0aW1lIHRoZW4gd2Uga25vdyBleGFjdGx5IHdoaWNoIGhlYWRlcihzKSBhcmUgYXZhaWxhYmxlLCBzbwotanVzdCBjaG9vc2UgdGhlIGJlc3Qgb25lIHRoZW4gYW5kIGdlbmVyYXRlIHRoZSBoZWFkZXIgdG8gdXNlIGl0LgotCi1UaGlzIHBhdGNoLCBpbmNsdWRpbmcgdGhlIGFib3ZlIHRleHQsIGlzIGNvcGllZCBmcm9tIGEgY29tbWl0IGluIHRoZQotc3BlZXggcmVwb3NpdG9yeVsxXS4gVGhlIG9yaWdpbmFsIGNvbW1pdCBmb3Igc3BlZXggd2FzIG1hZGUgYnkgUm9uCi08cm9uQGRlYmlhbi5vcmc+LgotCi1bMV0gaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9c3BlZXguZ2l0O2E9Y29tbWl0ZGlmZjtoPTc3NGM4N2Q2Y2I3ZGQ4ZGFiZGQxNzY3N2ZjNmRhNzUzZWNmNGFhODcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51Lmthc2tpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKysrKwotIGluY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4gfCA4ICstLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjZDJkMWUuLjFkZTBjMjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMzNCw2ICszMzQsMTIgQEAgQUNfU1VCU1QoW1VTSVpFMTZdKQotIEFDX1NVQlNUKFtTSVpFMzJdKQotIEFDX1NVQlNUKFtVU0laRTMyXSkKLSAKLStBU19JRihbdGVzdCAiJGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSAieWVzIl0sICAgIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN0ZGludC5oPiJdLAotKyAgICAgIFt0ZXN0ICIkYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2giID0gInllcyJdLCAgW0lOQ0xVREVfU1RESU5UPSIjaW5jbHVkZSA8aW50dHlwZXMuaD4iXSwKLSsgICAgICBbdGVzdCAiJGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaCIgPSAieWVzIl0sIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN5cy90eXBlcy5oPiJdKQotKwotK0FDX1NVQlNUKFtJTkNMVURFX1NURElOVF0pCi0rCi0gQUNfQ09ORklHX0ZJTEVTKFsKLSAgICAgICAgICAgIE1ha2VmaWxlIGxpYnNwZWV4ZHNwL01ha2VmaWxlIGRvYy9NYWtlZmlsZSBTcGVleERTUC5zcGVjCi0gICAgICAgICAgICBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvc3BlZXgvTWFrZWZpbGUgc3BlZXhkc3AucGMKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluIGIvaW5jbHVkZS9zcGVleC9zcGVleGRzcF9jb25maWdfdHlwZXMuaC5pbgotaW5kZXggMDJiODJmZC4uNWVhN2I1NSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLSsrKyBiL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLUBAIC0xLDEzICsxLDcgQEAKLSAjaWZuZGVmIF9fU1BFRVhfVFlQRVNfSF9fCi0gI2RlZmluZSBfX1NQRUVYX1RZUEVTX0hfXwotIAotLSNpZiBkZWZpbmVkIEhBVkVfU1RESU5UX0gKLS0jICBpbmNsdWRlIDxzdGRpbnQuaD4KLS0jZWxpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSAotLSMgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2VsaWYgZGVmaW5lZCBIQVZFX1NZU19UWVBFU19ICi0tIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2VuZGlmCi0rQElOQ0xVREVfU1RESU5UQAotIAotIHR5cGVkZWYgQFNJWkUxNkAgc3B4X2ludDE2X3Q7Ci0gdHlwZWRlZiBAVVNJWkUxNkAgc3B4X3VpbnQxNl90OwotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4ZHNwXzEuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzY5NjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic3BlZXhkc3AtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzIyZGYzNDE1NzZkYzE4NWQ4OTcxMzEzMjEwMDhmYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODIwNDJmYzZmOWJlZTYyOTRlYzQ1M2Y0NzBkYWRjMjZjNmZmMjliOWM5ZTlhZDJmZmMxZjQzMTJmZDY0NzcxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKKyAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWVuYWJsZS1maXhlZC1wb2ludCAtLWRpc2FibGUtZmxvYXQtYXBpJywgJycsIGQpfSBcCisiCisKKyMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKKyMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KK1JDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKK1JDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCitSQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4ycmMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzk0OWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwZDlkMzExODRmN2ViNzYxMTkyZmQxZWYwYjczMzMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZTY4ODYwMDAzOWY1ZDIyNGJkZjJlMjIyZDJmYmRlNjU2MDg0NDdlNGMyZjY4MTU4NWU0ZGNhNmRmNjkyZjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgICAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0tZW5hYmxlLWZpeGVkLXBvaW50IC0tZGlzYWJsZS1mbG9hdC1hcGknLCAnJywgZCl9IFwKLSIKLQotIyBXb3JrYXJvdW5kIGZvciBhIGJ1aWxkIGZhaWx1cmUgd2hlbiBidWlsZGluZyB3aXRoIE1BQ0hJTkU9cWVtdWFybTY0LiBJIHRoaW5rCi0jIGFhcmNoNjQgaXMgc3VwcG9zZWQgdG8gc3VwcG9ydCBORU9OIGp1c3QgZmluZSwgYnV0IGJ1aWxkaW5nIGZvciBxZW11YXJtNjQKLSMgZmFpbHMgaW4gTkVPTiBjb2RlOgotIwotIyAuLi4vc3BlZXhkc3AtMS4ycmMzL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlX25lb24uaDoxNDg6NTogZXJyb3I6IGltcG9zc2libGUgY29uc3RyYWludCBpbiAnYXNtJwotIyAgICAgIGFzbSB2b2xhdGlsZSAoIiAgY21wICVbbGVuXSwgIzBcbiIKLSMgICAgICBeCi0jCi0jIEkgc2VudCBhbiBlbWFpbCBhYm91dCB0aGUgaXNzdWUgdG8gc3BlZXgtZGV2LiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZXJlCi0jIGFyZSBubyByZXNwb25zZXMgeWV0OgotIyBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmF1ZGlvLmNvbXByZXNzaW9uLnNwZWV4LmRldmVsLzczNjAKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWFyY2g2NCcsICctLWRpc2FibGUtbmVvbicsICcnLCBkKX0iCi0KLSMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKLSMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KLVJDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKLVJDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCi1SQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwODJiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgotREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAotICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAotICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKLSAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCi0gICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAotICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAotICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTA2YWQ4NWRhYWFhMmVhYzk3YzhhYTJkZWM5ZThiNzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIwYTA3ODY1Yzg2OTdiYmEwMGFlYmNjYzZmNTQ5MTJkNmJjMzMzYmI0ZDYwNGU2YjA3NDkxYzFhMjI2YjM0ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXdpYyBcCi0gICAgLS1lbmFibGUtbGlid2VicG11eCBcCi0gICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKLSAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAotIgotCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX0FSTSA9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCi1QQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKLQotIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLQotIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKLVBBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKLQotREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCi1GSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgorREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAorICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKKyAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCisgICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAorICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAorICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiN2UwNDdmMmNiYWY1ODRkZmY3YThhN2UwZjg1NzJmMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThhMDUyMjY4Y2M0ZDVlY2UyN2Y3NjU3MmE3ZjUwMjkzZjQzOWMxN2E5OGU2N2M0ZWEwYzdlZDZmNTBlZjA0MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXdpYyBcCisgICAgLS1lbmFibGUtbGlid2VicG11eCBcCisgICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKKyAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAorIgorCisjIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgorIworRVhUUkFfT0VDT05GX0FSTSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2gKaW5kZXggMDg3YTQ0OC4uY2I3NzFmYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjZiMTIwMDc5ZmIyMWVkMzhjYWIwOTAwYzYzMzYwYjBhNzg1M2VhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2JjMjVmNGQxYWFhNTE4NmQyZWZmM2UyMzI2YzcyNDVmY2Q3ZTdmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBEYXRlOiBUdWUsIDEzIERlYyAyMDE2IDE0OjIyOjMyIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBYMzIgYnVpbGQgYnkgZGlzYWJsaW5nIGFzbQpAQCAtMTIsMTUgKzEyLDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCiAgY29uZmlndXJlIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMzEwOWVjNC4uODQ0YWVhZSAxMDA3NTUKK2luZGV4IDUxYjEyOGQuLjZlYTk0NjkgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTcwMyw3ICs3MDMsMTMgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NTQsNyArNzU0LDEzIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICBBU19FWFQ9Ii5hc20iCiAgICAgICAgICBBU0ZMQUdTPSIkQVNGTEFHUyAtREFSQ0hfWDg2XzY0PTEgLUlcJChTUkNQQVRIKS9jb21tb24veDg2LyIKICAgICAgICAgIHN0YWNrX2FsaWdubWVudD0xNgpAQCAtMzMsOSArMzQsOSBAQAogKyAgICAgICAgICAgIGZpCiArICAgICAgICBmaQogICAgICAgICAgaWYgWyAiJFNZUyIgPSBNQUNPU1ggXTsgdGhlbgotICAgICAgICAgICAgIEFTRkxBR1M9IiRBU0ZMQUdTIC1mIG1hY2hvNjQgLURQSUMgLURQUkVGSVgiCisgICAgICAgICAgICAgQVNGTEFHUz0iJEFTRkxBR1MgLWYgbWFjaG82NCAtRFBSRUZJWCIKICAgICAgICAgICAgICBpZiBjY19jaGVjayAnJyAiLWFyY2ggeDg2XzY0IjsgdGhlbgotQEAgLTcyMiw3ICs3MjgsMTEgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NzMsNyArNzc5LDExIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICAgICAgICAgIFJDRkxBR1M9Ii0tdGFyZ2V0PXBlLXg4Ni02NCAkUkNGTEFHUyIKICAgICAgICAgICAgICBmaQogICAgICAgICAgZWxzZQpAQCAtNDgsNiArNDksMyBAQAogICAgICAgICAgZmkKICAgICAgICAgIDs7CiAgICAgIHBvd2VycGMqKQotLS0gCi0yLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKaW5kZXggZjIyOTMwYS4uMzk0MjlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICI3MmRiNDM3NzcwZmQxY2UzOTYxZjYyNGRkNTdhOGU3NWZmNjVhZTBiIgorU1JDUkVWID0gIjE3NzFiNTU2ZWU0NTIwN2Y4NzExNzQ0Y2NiZDVkNDJhMzk0OWIxNGMiCiAKLVBWID0gInIyOTE3K2dpdCR7U1JDUFZ9IgorUFYgPSAicjI5OTErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKaW5kZXggNTdiMzliNS4uM2I4NDQ0NyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKQEAgLTE2NiwxMiArMTY2LDEyIEBACiAgICAgICAgIGxvZygiICBDb21tYW5kOiAnIiwgc3RyZXNzX2NtZF9zdHIsICInIikKICAgICAgICAgbG9nKCkKIAotICAgICAgICAjIHByZWV4ZWNfZm49b3Muc2V0c2lkIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQorICAgICAgICAjIHN0YXJ0X25ld19zZXNzaW9uIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQogICAgICAgICAjIHNlc3Npb24sID0+IGl0IGdldHMgYSBuZXcgcHJvY2VzcyBncm91cCAoaW5jbC4gY2hpbGRyZW4pLiBJdAogICAgICAgICAjIGNhbiB0aGVuIGJlIHRlcm1pbmF0ZWQgdXNpbmcgb3Mua2lsbHBnIGluIGVuZF9zdHJlc3Mgd2l0aG91dAogICAgICAgICAjIHRlcm1pbmF0aW5nIHRoaXMgc2NyaXB0LgogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKHN0cmVzc19jbWQsIHByZWV4ZWNfZm49b3Muc2V0c2lkKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihzdHJlc3NfY21kLCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlKQogCiAgICAgICAgIHJldHVybiBwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmFmYmJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMtMS4xLzAwMDEtZ3ppcC13aXRoLW4tZm9yLWJ1aWxkLXJlcHJvZHVjaWJpbHR5LnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gYWFiZjUxOGUyZTYxYTg4MmI5MjVmOWQyYWM1M2RhZmE3YTA0MWEwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogVHVlLCAyNSBGZWIgMjAyMCAyMjo1ODo1OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBnemlwIHdpdGggLW4gZm9yIGJ1aWxkIHJlcHJvZHVjaWJpbHR5CisKK1RoZSBkYXRlIGNhbiBnZXQgZW5jb2RlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBneiBmaWxlLCB3aGljaAorY2F1c2VzIHRoZSBiaW5hcnkgZmlsZXMgYmV0d2VlbiB0d28gZGlmZmVyZW50IGJ1aWxkcyBvZiB0aGUKK3NhbWUgZGF0YSB0byBiZSBkaWZmZXJlbnQuIEFkZCAtbiBmb3IgcmVwcm9kdWNpYmlsdHkKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttYWlsaW5nbGlzdF0KKworLS0tCisgTWFrZWZpbGUgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBhNTRkODJiLi5lOWYwZDVhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTY4LDE3ICsxNjgsMTcgQEAgaW5zdGFsbDogYWxsIGluc3RhbGxfaHdsYXRkZXRlY3QKKyAJY3AgJChUQVJHRVRTKSAiJChERVNURElSKSQoYmluZGlyKSIKKyAJaW5zdGFsbCAtRCAtbSA2NDQgc3JjL2JhY2tmaXJlL2JhY2tmaXJlLmMgIiQoREVTVERJUikkKHNyY2RpcikvYmFja2ZpcmUvYmFja2ZpcmUuYyIKKyAJaW5zdGFsbCAtbSA2NDQgc3JjL2JhY2tmaXJlL01ha2VmaWxlICIkKERFU1RESVIpJChzcmNkaXIpL2JhY2tmaXJlL01ha2VmaWxlIgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCistCWd6aXAgLWMgc3JjL2N5Y2xpY3Rlc3QvY3ljbGljdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2N5Y2xpY3Rlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcGlfdGVzdHMvcGlfc3RyZXNzLjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcGlfc3RyZXNzLjguZ3oiCistCWd6aXAgLWMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcnQtbWlncmF0ZS10ZXN0L3J0LW1pZ3JhdGUtdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3J0LW1pZ3JhdGUtdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWd3YWl0dGVzdC9zaWd3YWl0dGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NpZ3dhaXR0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcG1xdGVzdC9wbXF0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcG1xdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9zZW5kbWUuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zZW5kbWUuOC5neiIKKy0JZ3ppcCAtYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWduYWx0ZXN0L3NpZ25hbHRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zaWduYWx0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCisrCWd6aXAgLW5jIHNyYy9jeWNsaWN0ZXN0L2N5Y2xpY3Rlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9jeWNsaWN0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9waV90ZXN0cy9waV9zdHJlc3MuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9waV9zdHJlc3MuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3J0LW1pZ3JhdGUtdGVzdC9ydC1taWdyYXRlLXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9ydC1taWdyYXRlLXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3NpZ3dhaXR0ZXN0L3NpZ3dhaXR0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnd2FpdHRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3BtcXRlc3QvcG1xdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3BtcXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL2JhY2tmaXJlL3NlbmRtZS44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NlbmRtZS44Lmd6IgorKwlnemlwIC1uYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorKwlnemlwIC1uYyBzcmMvc2lnbmFsdGVzdC9zaWduYWx0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnbmFsdGVzdC44Lmd6IgorIAorIC5QSE9OWTogaW5zdGFsbF9od2xhdGRldGVjdAorIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CitAQCAtMTg3LDcgKzE4Nyw3IEBAIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CisgCQlpbnN0YWxsIC1EIC1tIDc1NSBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QucHkgJChERVNURElSKSQoUFlMSUIpL2h3bGF0ZGV0ZWN0LnB5IDsgXAorIAkJcm0gLWYgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorIAkJbG4gLXMgJChQWUxJQikvaHdsYXRkZXRlY3QucHkgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorLQkJZ3ppcCAtYyBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9od2xhdGRldGVjdC44Lmd6IiA7IFwKKysJCWd6aXAgLW5jIHNyYy9od2xhdGRldGVjdC9od2xhdGRldGVjdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2h3bGF0ZGV0ZWN0LjguZ3oiIDsgXAorIAlmaQorIAorIC5QSE9OWTogdGFyYmFsbAorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCmluZGV4IDIyN2ViOTkuLjNhYzM5ZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKQEAgLTQsNyArNCw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9ydC10ZXN0cy9ydC10ZXN0cy5naXQiCiAjIDEuMiB0byAxLjUgc2VlbSB0byBiZSBkZXZlbG9wbWVudCB2ZXJzaW9ucwotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTVdKShcZCsoXC5cZCspKykpIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTZdKShcZCsoXC5cZCspKykpIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKaW5kZXggNWFhMGFhMS4uZGFkMjUyYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgpAQCAtMTMsNiArMTMsNyBAQAogU1JDX1VSSSArPSAiIFwKICAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICAgZmlsZTovL3J0X2JtYXJrLnB5IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogIyBydC10ZXN0cyBuZWVkcyBQSSBtdXRleCBzdXBwb3J0IGluIGxpYmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKaW5kZXggYjc5NGE3ZC4uMzY0MTIxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKQEAgLTE0LDMgKzE0LDYgQEAKIAogIyBwdGVzdHMgbmVlZCBtb3JlIG1lbW9yeSB0aGFuIHN0YW5kYXJkIHRvIGF2b2lkIHRoZSBPT00ga2lsbGVyCiBRQl9NRU0gPSAiLW0gMTAyNCIKKworIyBTYWRseSBhdCB0aGUgbW9tZW50IHRoZSBmYXN0IHNldCBvZiBwdGVzdHMgaXMgbm90IHJvYnVzdCBlbm91Z2ggYW5kIHNwb3JhZGljYWxseSBmYWlscyBpbiBhIGNvdXBsZSBvZiBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgppbmRleCBmZjI5N2ZlLi5iZjc0OWFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKQEAgLTMsOCArMyw2IEBACiAKIERFU0NSSVBUSU9OICs9ICJBbHNvIGluY2x1ZGVzIHB0ZXN0IHBhY2thZ2VzLiIKIAotSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCi0KIFBST1ZJREVTICs9ICJjb3JlLWltYWdlLXNhdG8tcHRlc3QiCiAKICMgQWxzbyBpbmNsdWRlIHB0ZXN0cyB3aGljaCBtYXkgbm90IG90aGVyd2lzZSBiZSBpbmNsdWRlZCBpbiBhIHNhdG8gaW1hZ2UKQEAgLTE4LDQgKzE2LDggQEAKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICIxMTI0Mjg4IgogCiAjIHB0ZXN0cyBuZWVkIG1vcmUgbWVtb3J5IHRoYW4gc3RhbmRhcmQgdG8gYXZvaWQgdGhlIE9PTSBraWxsZXIKLVFCX01FTSA9ICItbSAxMDI0IgorIyBhbHNvIGx0dG5nLXRvb2xzIG5lZWRzIC90bXAgdGhhdCBoYXMgYXQgbGVhc3QgMUcKK1FCX01FTSA9ICItbSAyMDQ4IgorCisjIFNhZGx5IGF0IHRoZSBtb21lbnQgdGhlIGZ1bGwgc2V0IG9mIHB0ZXN0cyBpcyBub3Qgcm9idXN0IGVub3VnaCBhbmQgc3BvcmFkaWNhbGx5IGZhaWxzIGluIHJhbmRvbSBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIKaW5kZXggODkwNmM3NC4uNmZkY2MzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbDNhZnBhZC9sM2FmcGFkX2dpdC5iYgpAQCAtMTcsNyArMTcsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgppbmRleCBjODhlMWVkLi43ODg1ZTBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wY21hbmZtL2ZpbGVzL1BDTWFuRk0lMjAlMkIlMjBMaWJmbSUyMCUyOHRhcmJhbGwlMjByZWxlYXNlJTI5L1BDTWFuRk0vIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiAjIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzZDFkZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gOTgwOGRjMDllMDg5MzdjOWJmZmQ4NThkM2RlZDQyODIyNWE0MzEyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDk6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGxhYnMgaW5zdGVhZCBvZiBhYnMKLQotY2x1ZXZhbHMgaXMgYXJyYXkgb2YgbG9uZ3Mgc28gd2UgaGF2ZSB0byB1c2UgbGFicygpIGluc3RlYWQgb2YgYWJzKCkKLXNpbmNlIGFicygpIHJldHVybnMgaW50Ci0KLUZpeGVzCi0KLWtlZW4uYzoxNDU4OjE3OiBlcnJvcjogYWJzb2x1dGUgdmFsdWUgZnVuY3Rpb24gJ2FicycgZ2l2ZW4gYW4gYXJndW1lbnQKLW9mIHR5cGUgJ2xvbmcnIGJ1dCBoYXMgcGFyYW1ldGVyIG9mIHR5cGUgJ2ludCcgd2hpY2ggbWF5IGNhdXNlCi10cnVuY2F0aW9uIG9mIHZhbHVlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0ga2Vlbi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tlZW4uYyBiL2tlZW4uYwotaW5kZXggYTZhNzIzOC4uMTYzMTk5MiAxMDA2NDQKLS0tLSBhL2tlZW4uYwotKysrIGIva2Vlbi5jCi1AQCAtMTA0Myw3ICsxMDQzLDcgQEAgZG9uZQotIAkJICAgIGNsdWV2YWxzW2pdICo9IGdyaWRbaV07Ci0gCQkgICAgYnJlYWs7Ci0gCQkgIGNhc2UgQ19TVUI6Ci0tCQkgICAgY2x1ZXZhbHNbal0gPSBhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSsJCSAgICBjbHVldmFsc1tqXSA9IGxhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSAJCSAgICBicmVhazsKLSAJCSAgY2FzZSBDX0RJVjoKLSAJCSAgICB7Ci1AQCAtMTQ1NSw3ICsxNDU1LDcgQEAgc3RhdGljIGludCBjaGVja19lcnJvcnMoY29uc3QgZ2FtZV9zdGF0ZSAqc3RhdGUsIGxvbmcgKmVycm9ycykKLSAJCWNsdWV2YWxzW2pdICo9IHN0YXRlLT5ncmlkW2ldOwotIAkJYnJlYWs7Ci0gCSAgICAgIGNhc2UgQ19TVUI6Ci0tCQljbHVldmFsc1tqXSA9IGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSsJCWNsdWV2YWxzW2pdID0gbGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSAJCWJyZWFrOwotIAkgICAgICBjYXNlIENfRElWOgotIAkJewotLS0gCi0yLjUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2gKaW5kZXggNTM1MWY4ZS4uMTQzZTg5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmQ4MzI2Mjc1ODAyYTJlNmU2MWQzZTk5NDYwYWY2ODkxYWU4MzYyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDUzNTg3ZDcxNDQ3M2I4MDY0NzNiMzA5NzI3Zjg2NWI2NzNjYmMwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEzIEphbiAyMDE2IDIzOjEwOjE5IC0wODAwCi1TdWJqZWN0OiBbcHV6emxlc11bUEFUQ0hdIHBhbGlzYWRlOiBGaXggd2FybmluZ3Mgd2l0aCBjbGFuZyBvbiBhcm0KK1N1YmplY3Q6IFtQQVRDSF0gcGFsaXNhZGU6IEZpeCB3YXJuaW5ncyB3aXRoIGNsYW5nIG9uIGFybQogCiBBUk0gdHJlYXRzICdjaGFyJyBhcyB1bnNpZ25lZCBjaGFyIHdoZW4gJ2NoYXInIGlzIG5vdCBxdWFsaWZpZWQgd2l0aAogJ3NpZ25lZCcgb3IgJ3Vuc2lnbmVkJyBleHBsaWNpdGx5LgpAQCAtMTYsMTcgKzE2LDE2IEBACiBUaGVyZWZvcmUsIHR5cGNhc3QgdGhlIGNvbnRhbnQgdG8gY2hhciBpbiBzdWNoIHBsYWNlcyB0byBiZSBleHBsaWNpdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCistLS0KICBwYWxpc2FkZS5jIHwgMTAgKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9wYWxpc2FkZS5jIGIvcGFsaXNhZGUuYwotaW5kZXggOTg0ZTYxNi4uMmI5YzI1YyAxMDA2NDQKK2luZGV4IDZmZmJmMmQuLjhiNTRkNDIgMTAwNjQ0CiAtLS0gYS9wYWxpc2FkZS5jCiArKysgYi9wYWxpc2FkZS5jCi1AQCAtMjk1LDExICsyOTUsMTEgQEAgc3RhdGljIHZvaWQgc29sdmVyX2Nvbm5lY3RlZF9jbHVlc192ZXJzdXNfcmVnaW9uX3NpemUoc29sdmVyX2N0eCAqY3R4KQorQEAgLTMwNCwxMSArMzA0LDExIEBAIHN0YXRpYyB2b2lkIHNvbHZlcl9jb25uZWN0ZWRfY2x1ZXNfdmVyc3VzX3JlZ2lvbl9zaXplKHNvbHZlcl9jdHggKmN0eCkKICAgICAgICogSWYgcCA9IHEgPSAzIHRoZW4gdGhlIHJlZ2lvbiBoYXMgc2l6ZSBleGFjdGx5IDIuICovCiAgCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC00MCw4ICszOSw4IEBACiAgICAgICAgICAgICAgaWYgKCg4IC0gY3R4LT5jbHVlc1tpXSAtIGN0eC0+Y2x1ZXNbal0gPiBjdHgtPnBhcmFtcy0+aykgfHwKICAgICAgICAgICAgICAgICAgKGN0eC0+Y2x1ZXNbaV0gPT0gMyAmJiBjdHgtPmNsdWVzW2pdID09IDMgJiYKICAgICAgICAgICAgICAgICAgIGN0eC0+cGFyYW1zLT5rICE9IDIpKQotQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgaW50IHNvbHZlcl9udW1iZXJfZXhoYXVzdGVkKHNvbHZlcl9jdHggKmN0eCkKLSAgICAgaW50IGNoYW5nZWQgPSBGQUxTRTsKK0BAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIGJvb2wgc29sdmVyX251bWJlcl9leGhhdXN0ZWQoc29sdmVyX2N0eCAqY3R4KQorICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAKICAgICAgZm9yIChpID0gMDsgaSA8IHdoOyArK2kpIHsKIC0gICAgICAgIGlmIChjdHgtPmNsdWVzW2ldID09IEVNUFRZKSBjb250aW51ZTsKQEAgLTQ5LDE2ICs0OCwxNiBAQAogIAogICAgICAgICAgaWYgKGJpdGNvdW50WyhjdHgtPmJvcmRlcnNbaV0gJiBCT1JERVJfTUFTSyldID09IGN0eC0+Y2x1ZXNbaV0pIHsKICAgICAgICAgICAgICBmb3IgKGRpciA9IDA7IGRpciA8IDQ7ICsrZGlyKSB7Ci1AQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbnQgaXNfc29sdmVkKGNvbnN0IGdhbWVfcGFyYW1zICpwYXJhbXMsIGNsdWUgKmNsdWVzLAorQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgYm9vbCBpc19zb2x2ZWQoY29uc3QgZ2FtZV9wYXJhbXMgKnBhcmFtcywgY2x1ZSAqY2x1ZXMsCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZHNmW2ldID09IFVOVklTSVRFRCkgZGZzX2RzZihpLCBwYXJhbXMtPncsIGJvcmRlciwgZHNmLCBUUlVFKTsKKyAgICAgICAgIGlmIChkc2ZbaV0gPT0gVU5WSVNJVEVEKSBkZnNfZHNmKGksIHBhcmFtcy0+dywgYm9yZGVyLCBkc2YsIHRydWUpOwogICAgICAgICAgaWYgKGRzZl9zaXplKGRzZiwgaSkgIT0gaykgZ290byBlcnJvcjsKIC0gICAgICAgIGlmIChjbHVlc1tpXSA9PSBFTVBUWSkgY29udGludWU7CiArICAgICAgICBpZiAoY2x1ZXNbaV0gPT0gKGNoYXIpRU1QVFkpIGNvbnRpbnVlOwogICAgICAgICAgaWYgKGNsdWVzW2ldICE9IGJpdGNvdW50W2JvcmRlcltpXSAmIEJPUkRFUl9NQVNLXSkgZ290byBlcnJvcjsKICAgICAgfQogIAotQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAorQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAogICAgICBwID0gbnVtYmVyczsKICAgICAgciA9IDA7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC02Nyw2ICs2NiwzIEBACiAgICAgICAgICAgICAgd2hpbGUgKHIpIHsKICAgICAgICAgICAgICAgICAgd2hpbGUgKHIgPiAyNikgewogICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd6JzsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2gKaW5kZXggOWFjNjIwMS4uN2NhNTgyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYXR0ZXJuLmMtQ2hhbmdlLXN0cmluZy1sZW5naHQtcGFyYW1ldGVyLXRvLWJlLXNpemVfLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwMzU0NjdhYTBhYmZiYzBkZTdlNWQyNDU0M2Q0YWFiMzczMDE1OTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYWY1YTFlNTc5ZTMzMjRhMTNiYTFmODkyYzdiZWZiM2FiMzJkODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBNYXIgMjAxOSAyMTo1Njo1NyAtMDgwMAogU3ViamVjdDogW1BBVENIXSBwYXR0ZXJuLmM6IENoYW5nZSBzdHJpbmcgbGVuZ2h0IHBhcmFtZXRlciB0byBiZSBzaXplX3QgaW4KQEAgLTExLDIzICsxMSwyNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHBhdHRlcm4uYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3BhdHRlcm4uYyBiL3BhdHRlcm4uYwotaW5kZXggNDViMWIwYy4uZjczYTRjMiAxMDA2NDQKK2luZGV4IGZmYWRkM2YuLjRlNWYxODcgMTAwNjQ0CiAtLS0gYS9wYXR0ZXJuLmMKICsrKyBiL3BhdHRlcm4uYwotQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgaW50IGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyb3csCi0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWlucG9zX2RvbmUsIHVuc2lnbmVkIGNoYXIgKm1heHBvc19kb25lLAotIAkJICB1bnNpZ25lZCBjaGFyICptaW5wb3Nfb2ssIHVuc2lnbmVkIGNoYXIgKm1heHBvc19vaywKLS0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSsgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgc2l6ZV90IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSAJCSAgdW5zaWduZWQgaW50ICpjaGFuZ2VkCitAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBib29sIGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcm93LAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptaW5wb3NfZG9uZSwgdW5zaWduZWQgY2hhciAqbWF4cG9zX2RvbmUsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1pbnBvc19vaywgdW5zaWduZWQgY2hhciAqbWF4cG9zX29rLAorLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKKysgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIHNpemVfdCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqY2hhbmdlZAogICNpZmRlZiBTVEFOREFMT05FX1NPTFZFUgotIAkJICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAorICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAogLS0gCi0yLjIxLjAKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCmluZGV4IGMxMzRhY2QuLjI4MDQwNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotZ3RrLmM6IGZpeCBjb21waWxpbmcgZmFpbHVyZSB3aXRoIG9wdGlvbiAtZyAtTworRnJvbSA4NzZjNmZmMWUyMGY1MWIwOTIxYWNkYTk5ODYxZjQ3NmI2NDIzZjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMSBBdWcgMjAxNCAxMjozOTo1MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBndGsuYzogZml4IGNvbXBpbGluZyBmYWlsdXJlIHdpdGggb3B0aW9uIC1nIC1PCiAKIFRoZXJlIHdlcmUgY29tcGlsaW5nIGZhaWx1cmUgd2l0aCBvcHRpb24gLWcgLU8KIC4uLgpAQCAtMjEsMjMgKzI0LDIxIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBndGsuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ3RrLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ndGsuYyBiL2d0ay5jCi1pbmRleCBhMmViYTJjLi5jNTRiZjYzIDEwMDY0NAoraW5kZXggNDU2NTgzNi4uNWU4M2I0OCAxMDA2NDQKIC0tLSBhL2d0ay5jCiArKysgYi9ndGsuYwotQEAgLTI0ODEsNyArMjQ4MSw3IEBAIGNoYXIgKmZnZXRsaW5lKEZJTEUgKmZwKQorQEAgLTI5NDQsNyArMjk0NCw3IEBAIHN0YXRpYyB2b2lkIGxpc3RfcHJlc2V0c19mcm9tX21lbnUoc3RydWN0IHByZXNldF9tZW51ICptZW51KQogIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICB7CiAgICAgIGNoYXIgKnBuYW1lID0gYXJndlswXTsKIC0gICAgY2hhciAqZXJyb3I7CiArICAgIGNoYXIgKmVycm9yID0gTlVMTDsKLSAgICAgaW50IG5nZW5lcmF0ZSA9IDAsIHByaW50ID0gRkFMU0UsIHB4ID0gMSwgcHkgPSAxOwotICAgICBpbnQgdGltZV9nZW5lcmF0aW9uID0gRkFMU0UsIHRlc3Rfc29sdmUgPSBGQUxTRSwgbGlzdF9wcmVzZXRzID0gRkFMU0U7Ci0gICAgIGludCBzb2xuID0gRkFMU0UsIGNvbG91ciA9IEZBTFNFOwotLS0gCi0xLjkuMQotCisgICAgIGludCBuZ2VuZXJhdGUgPSAwLCBweCA9IDEsIHB5ID0gMTsKKyAgICAgYm9vbCBwcmludCA9IGZhbHNlOworICAgICBib29sIHRpbWVfZ2VuZXJhdGlvbiA9IGZhbHNlLCB0ZXN0X3NvbHZlID0gZmFsc2UsIGxpc3RfcHJlc2V0cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IDVlZTkxNjQuLjQxYjc4ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIlNpbW9uIFRhdGhhbSdzIFBvcnRhYmxlIFB1enpsZSBDb2xsZWN0aW9uIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9wdXp6bGVzLyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT02MDk5ZjQ5ODFmOTQ2MWQ3ZjQxMTA5MWU2OWE3ZjA3YSIKIAogREVQRU5EUyA9ICJsaWJ4dCIKIApAQCAtMTAsNyArMTAsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC50YXJ0YXJ1cy5vcmcvc2ltb24vcHV6emxlcy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2ggXApAQCAtMTgsNyArMTcsNyBAQAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICJjNmUwMTYxZGQ0NzU0MTUzMTZlZDY2ZGM4Mjc5NGQ2OGU1MmYwMDI1IgorU1JDUkVWID0gIjc5YTUzNzhiNWFkYzQ2ZWUzM2JhMzRkNTU3MzhmOTE2ZmI4YWRmYzkiCiBQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2xpYndwZV8xLjQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDk5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSBsaWJyYXJ5IHNwZWNpZmljYWxseSBkZXZlbG9wZWQgZm9yIHRoZSBXUEUtZmxhdm9yZWQgcG9ydCBvZiBXZWJLaXQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1dlYlBsYXRmb3JtRm9yRW1iZWRkZWQvbGlid3BlIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vV2ViUGxhdGZvcm1Gb3JFbWJlZGRlZC9saWJ3cGUvaXNzdWVzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM3MWE2MTZlYjQ5MDNjNmNiNzllOTg5M2E1ZjYxNWNjIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2VnbCBsaWJ4a2Jjb21tb24iCisKKyMgV29ya2Fyb3VuZCBidWlsZCBpc3N1ZSB3aXRoIFJQaSB1c2VybGFuZCBFR0wgbGlicmFyaWVzLgorQ0ZMQUdTX2FwcGVuZF9ycGkgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICctRF9HTlVfU09VUkNFJywgZCl9IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93cGV3ZWJraXQub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NDlkZmIzNDg3NzM1NGYzNGYzMThlMTM4OTcxY2YyMmU2NzdiMjE3OWUxZjBhOGVhMDBhYjBiN2JkOGU5YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUVuYWJsZS1USFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODExOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOGVlNzgwNmFkMmQ1NjA2OTY3ZjdhMTUyOWExMTNmYjlkMWEzODZkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTc6MDY6MjcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRworCitGaXhlcyBidWlsZCBmYWlsdXJlcyBvbiByaXN2NjQKKworVGFrZW4gZnJvbSBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjMxODQzL3dlYmtpdAorCisgRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy4gVGhpcyB1c2VzIC1wdGhyZWFkIGluc3RlYWQgb2YKKy1scHRocmVhZCwgZml4aW5nIHRoZSA2NC1iaXQgUklTQy1WIGJ1aWxkIG9mIHRoZSBHVEsrIHBvcnQgZHVlIHRvCittaXNzaW5nIGF0b21pYyBwcmltaXRpdmVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzMTg0My93ZWJraXRdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgICAgIHwgMiArKworIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitpbmRleCBkM2JlZWYxOS4uNmE5Mjg1NmYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKK0BAIC0xNyw2ICsxNyw4IEBAIHNldChXRUJLSVRHVEtfSEVBREVSX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vd2Via2l0Z3RrLSR7V0VCS0lUCisgc2V0KElOVFJPU1BFQ1RJT05fSU5TVEFMTF9HSVJESVIgIiR7Q01BS0VfSU5TVEFMTF9GVUxMX0RBVEFESVJ9L2dpci0xLjAiKQorIHNldChJTlRST1NQRUNUSU9OX0lOU1RBTExfVFlQRUxJQkRJUiAiJHtMSUJfSU5TVEFMTF9ESVJ9L2dpcmVwb3NpdG9yeS0xLjAiKQorIAorK3NldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisrCisgZmluZF9wYWNrYWdlKENhaXJvIDEuMTQuMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRm9udGNvbmZpZyAyLjguMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRnJlZXR5cGUgMi40LjIgUkVRVUlSRUQpCitkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCitpbmRleCBiMmU4NzQxOC4uMzI2YWRlMjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorQEAgLTEsMyArMSw0IEBACisrc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBPTikKKyBmaW5kX3BhY2thZ2UoVGhyZWFkcyBSRVFVSVJFRCkKKyAKKyBpZiAoTVNWQykKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM5ZjAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNEICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1BUFBMRTttZDU9NDY0NmY5MDA4MmM0MGJjZjI5OGMyODVmOGJhYjBiMTIgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yO21kNT0zNjM1N2ZmZGUyYjY0YWUxNzdiMjQ5NDQ0NWI3OWQyMSBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTIuMTttZDU9YTc3OGEzM2VmMzM4YWJiYWY4YjhhN2MzNmI2ZWVjODAgXAotCQkgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR09iamVjdEludHJvc3BlY3Rpb24uY21ha2UtcHJlZml4LXZhcmlhYmxlcy1vYnRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWUwNmZlNzNlZTE2NjQ0Nzg5NGFhZWE5NTAzOGUzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjgwZjA2MzdhODA4MTg1NTlhYzhmZDUwZGIzYjM5NGY0MWNiNjE5MDRmYjliM2VkNjVmYTUxNjM1ODA2NTEyIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKLQotQ1ZFX1BST0RVQ1QgPSAid2Via2l0Z3RrIHdlYmtpdGd0a1wrIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLSMgU291cmNlIGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvd29mZjIKLVBBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbjNgIFwKLSAgICAgICAgICAgICAgICAtREVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1g9T0ZGIFwKLQkJIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gQVJDCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcmMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotIyBCeSBkZWZhdWx0IDI1LWJpdCAibWVkaXVtIiBjYWxscyBhcmUgdXNlZCBvbiBBUkMKLSMgd2hpY2ggaXMgbm90IGVub3VnaCBmb3IgYmluYXJpZXMgbGFyZ2VyIHRoYW4gMzIgTWlCCi1DRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotQ1hYRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaG4zMiA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAtREVOQUJMRV9DX0xPT1A9T04gIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKLQotIyBDYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZQotQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MTk3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy53ZWJraXRndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIgorCitMSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAorCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKKwkJICAgIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjBmODgxNzI5ZjNiNzEyNDRiN2Y2ZTU4NzkwMDczZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM4NjkwMDcxM2RmYWRmOTc0MTE3NzIxMGIzMjYyM2NhYjIyNTYyYTc5ZmZkMGQ0NDZiNjY1Njk5MzRiMTEzZiIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ29wZW5nbCcsICcnLCBkKX0iCisKK0NWRV9QUk9EVUNUID0gIndlYmtpdGd0ayB3ZWJraXRndGtcKyIKKworREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIGxpYnJzdmcgbGlidGhlb3JhIGxpYnZvcmJpcyBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3dlYmdsIG9wZW5nbCcsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICd3ZWJnbCBnbGVzMicgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCBsaWJ3cGUgd3BlYmFja2VuZC1mZG8gd2F5bGFuZC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURFTkFCTEVfWDExX1RBUkdFVD1PTiwtREVOQUJMRV9YMTFfVEFSR0VUPU9GRix2aXJ0dWFsL2xpYngxMSBsaWJ4Y29tcG9zaXRlIGxpYnhkYW1hZ2UgbGlieHJlbmRlciBsaWJ4dCIKK1BBQ0tBR0VDT05GSUdbZ2VvY2x1ZV0gPSAiLURFTkFCTEVfR0VPTE9DQVRJT049T04sLURFTkFCTEVfR0VPTE9DQVRJT049T0ZGLGdlb2NsdWUiCitQQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi1ERU5BQkxFX1NQRUxMQ0hFQ0s9T04sLURFTkFCTEVfU1BFTExDSEVDSz1PRkYsZW5jaGFudDIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKK1BBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKKworIyB3ZWJraXRndGsgaXMgZnVsbCBvZiAvdXNyL2Jpbi9lbnYgcHl0aG9uLCBwYXJ0aWN1bGFyIGZvciBnZW5lcmF0aW5nIGRvY3MKK2RvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJzZXR1cF9weXRob25fbGluayIKK3NldHVwX3B5dGhvbl9saW5rKCkgeworCWlmIFsgISAtZSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uIF07IHRoZW4KKwkJbG4gLXMgYHdoaWNoIHB5dGhvbjNgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24KKwlmaQorfQorCitFWFRSQV9PRUNNQUtFID0gIiBcCisJCS1EUE9SVD1HVEsgXAorCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAorCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCisgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uM2AgXAorICAgICAgICAgICAgICAgIC1ERU5BQkxFX0JVQkJMRVdSQVBfU0FOREJPWD1PRkYgXAorCQkiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBBUkMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FyYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisjIEJ5IGRlZmF1bHQgMjUtYml0ICJtZWRpdW0iIGNhbGxzIGFyZSB1c2VkIG9uIEFSQworIyB3aGljaCBpcyBub3QgZW5vdWdoIGZvciBiaW5hcmllcyBsYXJnZXIgdGhhbiAzMiBNaUIKK0NGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCitDWFhGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gTUlQUyBlaXRoZXIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtREVOQUJMRV9KSVQ9T0ZGIC1ERU5BQkxFX0NfTE9PUD1PTiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCisjIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCisjIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAorIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCisjIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCisKKyMgaW50cm9zcGVjdGlvbiBpbnNpZGUgcWVtdS1hcm0gaGFuZ3MgZm9yZXZlciBvbiBtdXNsL2FybSBidWlsZHMKKyMgdGhlcmVmb3JlIGRpc2FibGUgR0lfREFUQQorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbF9hcm12N2EgPSAiRmFsc2UiCitHSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsX2FybXY3dmUgPSAiRmFsc2UiCisKKyMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKK0NDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dwZWJhY2tlbmQtZmRvXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMmY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIldQRSdzIGJhY2tlbmQgYmFzZWQgb24gYSBmcmVlZGVza3RvcC5vcmcgc3RhY2suIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkbyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkby9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWY2MmNlZjJlMzY0NWUzZTc0ZWIwNWZkMzg5ZDdhNjYiCitERVBFTkRTID0gImdsaWItMi4wIGxpYnhrYmNvbW1vbiB3YXlsYW5kIHZpcnR1YWwvZWdsIGxpYndwZSIKKworREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB3YXlsYW5kLW5hdGl2ZSIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyNDlhMGI3Y2JmYTY2MjIwNmE4ZDJmYTI0ZTJjNTc0ZTc1YzY4MWFkMGU5MzQ2ODA5MWYxZGM2OGRkYjI5OWQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKaW5kZXggMWY5ZmVhMi4uMzg5NmM5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKQEAgLTI4LDcgKzI4LDkgQEAKIAkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCiAKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHUtMS1jb25maWciCiAKIE9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtQWRkLW9wdGlvbi10by1kaXNhYmxlLXRpbWVkLWRlcGVuZGFudC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmZjRlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAyYmJlMjBiNGY2OWU4NGU3YTE4YmM3OWQzODI0ODY5NTNmNDc5MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDI2IE1hciAyMDIwIDE4OjMwOjM2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBvcHRpb24gdG8gZGlzYWJsZSB0aW1lZCBkZXBlbmRhbnQgdGVzdHMKKworVGhlIGRpc2FibGVkIHRlc3RzIHJlbHkgb24gdGltaW5nIHRvIHBhc3MgY29ycmVjdGx5LiBPbiBhIHZpcnR1YWxpemVkIAorc3lzdGVtIHVuZGVyIGhlYXZ5IGxvYWQsIHRoZXNlIHRlc3RzIHJhbmRvbWx5IGZhaWwgYmVjYXVzZSB0aGV5IG1pc3MKK2EgdGltZXIgb3Igb3RoZXIgdGltaW5nIHJlbGF0ZWQgaXNzdWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgY29uZmlndXJlLmluICAgICB8IDYgKysrKysrCisgaW5jbHVkZS9hcHIuaC5pbiB8IDEgKworIHRlc3QvdGVzdGxvY2suYyAgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZDlmMzJkNi4uZjBjNTY2MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjg4Niw2ICsyODg2LDEyIEBAIEFDX0FSR19FTkFCTEUodGltZWRsb2NrcywKKyApCisgQUNfU1VCU1QoYXByX2hhc190aW1lZGxvY2tzKQorIAorK0FDX0FSR19FTkFCTEUodGltZWQtdGVzdHMsCisrICBbICAtLWRpc2FibGUtdGltZWQtdGVzdHMJICBEaXNhYmxlIHRpbWVkIHRlc3RzIF0sCisrICBbYXByX2hhc190aW1lZHRlc3RzPSIwIl0sIFthcHJfaGFzX3RpbWVkdGVzdHM9IjEiXQorKykKKytBQ19TVUJTVChhcHJfaGFzX3RpbWVkdGVzdHMpCisrCisgIyBoc3RyZXJyb3IgaXMgb25seSBuZWVkZWQgaWYgSVB2NiBpcyBub3QgZW5hYmxlZCwKKyAjIHNvIGdldGFkZHJpbmZvL2dhaV9zdHJlcnJvciBhcmUgbm90IHVzZWQuCisgaWYgdGVzdCAkaGF2ZV9pcHY2ID0gMDsgdGhlbgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXByLmguaW4gYi9pbmNsdWRlL2Fwci5oLmluCitpbmRleCBlZTk5ZGVmLi5jNDZhNWY0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9hcHIuaC5pbgorKysrIGIvaW5jbHVkZS9hcHIuaC5pbgorQEAgLTI5OCw2ICsyOTgsNyBAQCBleHRlcm4gIkMiIHsKKyAjZGVmaW5lIEFQUl9IQVNfWFRIUkVBRF9GSUxFUyAgICAgQGFwcl9oYXNfeHRocmVhZF9maWxlc0AKKyAjZGVmaW5lIEFQUl9IQVNfT1NfVVVJRCAgICAgICAgICAgQG9zdXVpZEAKKyAjZGVmaW5lIEFQUl9IQVNfVElNRURMT0NLUyAgICAgICAgQGFwcl9oYXNfdGltZWRsb2Nrc0AKKysjZGVmaW5lIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTICAgICAgICBAYXByX2hhc190aW1lZHRlc3RzQAorIAorICNkZWZpbmUgQVBSX1BST0NBVFRSX1VTRVJfU0VUX1JFUVVJUkVTX1BBU1NXT1JEIEBhcHJfcHJvY2F0dHJfdXNlcl9zZXRfcmVxdWlyZXNfcGFzc3dvcmRACisgCitkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0bG9jay5jIGIvdGVzdC90ZXN0bG9jay5jCitpbmRleCBhNDNmNDc3Li42MjMzZDBiIDEwMDY0NAorLS0tIGEvdGVzdC90ZXN0bG9jay5jCisrKysgYi90ZXN0L3Rlc3Rsb2NrLmMKK0BAIC0zOTYsMTMgKzM5NiwxMyBAQCBhYnRzX3N1aXRlICp0ZXN0bG9jayhhYnRzX3N1aXRlICpzdWl0ZSkKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGhyZWFkc19ub3RfaW1wbCwgTlVMTCk7CisgI2Vsc2UKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aHJlYWRfbXV0ZXgsIE5VTEwpOworLSNpZiBBUFJfSEFTX1RJTUVETE9DS1MKKysjaWYgQVBSX0hBU19USU1FRExPQ0tTICYmIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTCisgICAgIGFidHNfcnVuX3Rlc3Qoc3VpdGUsIHRlc3RfdGhyZWFkX3RpbWVkbXV0ZXgsIE5VTEwpOworICNlbmRpZgorICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RocmVhZF9yd2xvY2ssIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X2NvbmQsIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRjb25kLCBOVUxMKTsKKy0jaWYgQVBSX0hBU19USU1FRExPQ0tTCisrI2lmIEFQUl9IQVNfVElNRURMT0NLUyAmJiBBUFJfSEFWRV9USU1FX0RFUEVOREFOVF9URVNUUworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRtdXRleCwgTlVMTCk7CisgI2VuZGlmCisgI2VuZGlmCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIKaW5kZXggZWNhOWNkZS4uNzA3M2FmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjcuMC5iYgpAQCAtMTgsMTIgKzE4LDEzIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xpYnRvb2xpemVfY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtb3B0aW9uLXRvLWRpc2FibGUtdGltZWQtZGVwZW5kYW50LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2ExNGE4M2Q2NjRlODc1OTllYTI1ZmY0NDMyZTQ4YTciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJlMTQ4ZjBiMmU5OWI4ZTVjNmNhYTA5ZjZkNGZiNGRkM2U4M2Y3NDRhYTcyYTk1MmY5NGY1YTE0NDM2ZjdlYSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0IG11bHRpbGliX3NjcmlwdAogCiBPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCiAKQEAgLTM5LDYgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1t0aW1lZC10ZXN0c10gPSAiLS1lbmFibGUtdGltZWQtdGVzdHMsLS1kaXNhYmxlLXRpbWVkLXRlc3RzLCIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKQEAgLTUxLDYgKzUzLDkgQEAKIAkuL2J1aWxkY29uZiAyCiB9CiAKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1kZXY6JHtkYXRhZGlyfS9idWlsZC0xL2Fwcl9ydWxlcy5tayIKKwogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXByLmV4cCAke2RhdGFkaXJ9L2J1aWxkLTEvKiIKIFJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2E5ZGUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmE0YjI3YmFjZTNiOTM1MjcyMWVkNDYyYjk1ZjYyOTEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYjUxZTZkMzM5ZmEyYmNjYTNhM2UzMTU5Y2NlYTU3NGM2N2IxMDdmMWFjOGIwMDA0N2ZhNjBlMzRjZTdhNDVjIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUgbGlieG1sMiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2MmFlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzQuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjU4Y2QyNzg1NzRlMTAxMzYzYjE4ZDlhOGI3MDUzZDY3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTAxMzIzY2VlMGVlZjA1YzAxZWM0ZGVlMDZjNzAxYWVlY2E4MWEzMTRhN2Q2MDIxNmZhMzYzMDA1ZTI3ZjRmMCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIGxpYnhtbDIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjMxOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiN2ZhMGFhMDBiMDdlMDNlMzM4ZGQwMmFmNTY0NDMxYmYyZjJiMTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+CitEYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE1OjI0OjAyIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBzb3VyY2UgcmVwcm9kdWNpYmlsaXR5CisKK1RoZSBnZW5lcmF0ZWQgZW51bSB0eXBlIGZpbGVzIGNhbiBiZSBpbmNsdWRlZCBpbiBzb3VyY2UgcGFja2FnZXMgbWVhbnQKK2ZvciBkZWJ1Z2dpbmcsIGFuZCB0aHVzIG5lZWQgdG8gYmUgcmVwcm9kdWNpYmxlLiBSZXBsYWNlIHRoZSBhYnNvbHV0ZQoraW5jbHVkZSBvZiB0aGUgaGVhZGVyIHdpdGggdGhlIGJhc2VuYW1lLiBUaGlzIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3RhcmdldCBpbmNsdWRlIGZpbGVzIGFyZSBhbHdheXMgaW4gdGhlIGluY2x1ZGUgcGF0aCBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hdC1zcGkyLWNvcmUvbWVyZ2VfcmVxdWVzdHMvMjVdCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8Sm9zaHVhLldhdHRAZ2FybWluLmNvbT4KKy0tLQorIGF0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSBiL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQoraW5kZXggMzg1ZDBlZS4uOTJlNDkzNyAxMDA2NDQKKy0tLSBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorKysrIGIvYXRzcGkvYXRzcGktZW51bS10eXBlcy5jLnRlbXBsYXRlCitAQCAtNSw3ICs1LDcgQEAKKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCisgLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCistI2luY2x1ZGUgIkBmaWxlbmFtZUAiCisrI2luY2x1ZGUgIkBiYXNlbmFtZUAiCisgCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA1MmE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk5OGZkOWQ4NThmOGZhMjJjNGM4YzE1NTY3YmY2MjU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjMmFhOTM3ZWJmYWNhMmM4NjU2OWJjZTliMTZhMzRmYmUyMGQ2OWVmMGM1ODg0NjMxM2IxYzQyZjUzYjBkNTMiCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCi0KLWluaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCi0iCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKLQotR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwotR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKLUdJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCi0gICAgICAgICAgICAgICAgIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzYzIxNTY1NTA3MTA1ZmI2ODAzMWNkOWMyMWE1NTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MjljZGJkNjc0ZTUzOWY4OTEyMDI4NTEyYWY1ODM5OTA5MzhjN2I0OWUyNTE4NGMxMjZiMDAxMjFlZjExYzYiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCisKK2luaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCisiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKKworR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCisgICAgICAgICAgICAgICAgIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiMDhiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNDRkNDZiYWE1ZTE1MTljNmMzZGY3ZTRkMzRmYjMzM2UyNDdiNWJjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDYgQXByIDIwMTggMTI6MDQ6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGVuYWJsZSBpbnRyb3NwZWN0aW9uIGZvciBjcm9zcy1jb21waWxlCi0KLUl0IHdvcmtzIGZpbmUgaW4gT0UtY29yZSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGRpc2FibGVkLiBMZXQgdGhlIHVzZXIgZGVjaWRlCi1pZiBpdCBzaG91bGQgYmUgZGlzYWJsZWQgb3Igbm90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gYXRrL21lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXRrL21lc29uLmJ1aWxkIGIvYXRrL21lc29uLmJ1aWxkCi1pbmRleCAwYWQ2N2U1Li4xZDJhNDljIDEwMDY0NAotLS0tIGEvYXRrL21lc29uLmJ1aWxkCi0rKysgYi9hdGsvbWVzb24uYnVpbGQKLUBAIC0xMzcsNyArMTM3LDcgQEAgbGliYXRrX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGxpYmF0aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llczogZ2xpYl9kZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzOiBhdGtfZW51bV9oKQotIAotLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIGFuZCBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLStpZiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLSAgIGdub21lLmdlbmVyYXRlX2dpcihsaWJhdGssCi0gICAgICAgICAgICAgICAgICAgICAgc291cmNlczogYXRrX3NvdXJjZXMgKyBhdGtfaGVhZGVycyArIFsgYXRrX2VudW1faCBdICsgWyBhdGtfdmVyc2lvbl9oIF0sCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiAnQXRrJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzIyMzcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLSMgTmVlZCBnZXR0ZXh0LW5hdGl2ZSBhcyBNZXNvbiBjYW4ndCB0dXJuIG9mZiBpMThuCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGdsaWItMi4wIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzEwYjBiMmFmM2MxOTllNDJjYWE2Mjc1Yjg0NWM0OWQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYjQxZmVkYTdmZTRlZjBkYWEwMjQ0NzE0MzhlYTAyMTk1OTJiYWY3YzI5MTM0N2U1YTg1OGJiNjRlNDA5MWNjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjM0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzM5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworIyBOZWVkIGdldHRleHQtbmF0aXZlIGFzIE1lc29uIGNhbid0IHR1cm4gb2ZmIGkxOG4KK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmNjBiYmFmOGJkZDA4YjkzZDk4NzM2YjU0YjJmYzhlOSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ0ZjBlM2IzZDIxMjY1ZmNmMmJjMzcxZTExN2RhNTFjNDJlZGUxYTcxZjZkYjFjODM0ZTY5NzZiYjIwOTk3Y2IiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyZmZlZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA5ZTA4MjE5ZTBlOTllZTI1ODljZjM1ZmE4ZDUyY2VmMzUxNWFjY2NlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDE1OjQ3OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IHBhdGNoIG91dCBmYWlsaW5nIGJpdHMKKworSSBoYXZlIGNvbmZpcm1lZCBvbiB0aGUgaG9zdCBkaXN0cm8gKFVidW50dSAxOC4wNCkgdGhhdCB0aGV5CitmYWlsIGFzIHdlbGw7IHVwc3RyZWFtIHByb2JhYmx5IGhhdmVuJ3Qgbm90aWNlZCBiZWNhdXNlIHRoZQordGVzdCBpcyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHN1ZG8uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsaW5nIHRlc3RzIGluc3RlYWQgb2YgZml4aW5nIHRoZW0gcHJvcGVybHldCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMTMgLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK2luZGV4IDhmOGY4MjUuLjIxZThhOTUgMTAwNjQ0CistLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAorKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK0BAIC01MCwxMCArNTAsNiBAQCBVc2VyIGRhZW1vbiBpcyBhIG1lbWJlciBpbiB0aGUgb3duaW5nIGdyb3VwLCB3aGljaCBoYXMgb25seSByZWFkIGFjY2Vzcy4KKyBWZXJpZnkgdGhpcy4KKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBjYXQgZgorLQk+IHJvb3QKKy0JPiBiaW4KKy0KKyAJJCBlY2hvIGRhZW1vbiA+PiBmCisgCT5+IC4qZjogUGVybWlzc2lvbiBkZW5pZWQkCisgCitAQCAtMTQ2LDggKzE0Miw2IEBAIHRoZSBvd25pbmcgZ3JvdXAsIGhlIHNob3VsZCBzdGlsbCBoYXZlIG5vIHdyaXRlIGFjY2Vzcy4KKyAJJCBzZXRmYWNsIC14IGc6ZGFlbW9uIGYKKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBlY2hvIGRhZW1vbjQgPj4gZgorLQk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorIAorIAorIENoYW5nZSB0aGUgb3duaW5nIGdyb3VwLiBUaGUgb3RoZXIgcGVybWlzc2lvbnMgc2hvdWxkIG5vdyBncmFudCB1c2VyCitAQCAtMTU4LDEyICsxNTIsNiBAQCBkYWVtb24gd3JpdGUgYWNjZXNzLgorIAorIAkkIHN1IGRhZW1vbgorIAkkIGVjaG8gZGFlbW9uNSA+PiBmCistCSQgY2F0IGYKKy0JPiByb290CistCT4gYmluCistCT4gZGFlbW9uCistCT4gZGFlbW9uMgorLQk+IGRhZW1vbjUKKyAKKyAKKyBWZXJpZnkgdGhhdCBwZXJtaXNzaW9ucyBpbiBzZXBhcmF0ZSBtYXRjaGluZyBBQ0wgZW50cmllcyBkbyBub3QKK0BAIC0xNzMsNyArMTYxLDYgQEAgYWNjdW11bGF0ZS4KKyAJJCBzZXRmYWNsIC1tIGc6YmluOnIsZzpkYWVtb246dyBmCisgCisgCSQgc3UgZGFlbW9uCistCSQgOiA8IGYKKyAJJCA6ID4gZgorIAkkIDogPD4gZgorIAk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2VmMGJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAzOWQzMzJhODgwMWRlNWQ5ZWYwOWRhY2IzZGJhODVjMjA4YjdiMmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDEzOjQ1OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3QgaGFyZGNvZGUgdGhlIGJ1aWxkIHBhdGggaW50byBhIGhlbHBlciBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9NYWtlbW9kdWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9NYWtlbW9kdWxlLmFtIGIvdGVzdC9NYWtlbW9kdWxlLmFtCitpbmRleCAxN2Q0OTI3Li4wMTVkZTdmIDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlbW9kdWxlLmFtCisrKysgYi90ZXN0L01ha2Vtb2R1bGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEVYVFJBX0RJU1QgKz0gXAorIGNoZWNrX0xUTElCUkFSSUVTID0gbGlidGVzdGxvb2t1cC5sYQorIAorIGxpYnRlc3Rsb29rdXBfbGFfU09VUkNFUyA9IHRlc3QvdGVzdF9wYXNzd2QuYyB0ZXN0L3Rlc3RfZ3JvdXAuYworLWxpYnRlc3Rsb29rdXBfbGFfQ0ZMQUdTID0gLURCQVNFRElSPVwiJChhYnNfc3JjZGlyKVwiCisrbGlidGVzdGxvb2t1cF9sYV9DRkxBR1MgPSAtREJBU0VESVI9XCIvdG1wL2FjbC1wdGVzdFwiCisgbGlidGVzdGxvb2t1cF9sYV9MREZMQUdTID0gLXJwYXRoICQoYWJzX2J1aWxkZGlyKQorIAorIEFNX1RFU1RTX0VOVklST05NRU5UID0gUEFUSD0iJChhYnNfdG9wX2J1aWxkZGlyKTokJFBBVEgiOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzdjYmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gZDgyNDU3Y2U1Y2E3NDU1ZTMzNmRhNWUyNDRkOTVmOTBlNTJhYWVmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwMToxNzoyNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogbGliYWNsIHNob3VsZCBkZXBlbmQgb24gaW5jbHVkZQotCi1GaXhlZCByYWNlIGlzc3VlOgotIEluIGZpbGUgaW5jbHVkZWQgZnJvbSBhY2xfY29weV9lbnRyeS5jOjIyOjA6Ci0gbGliYWNsLmg6MTk6MjE6IGZhdGFsIGVycm9yOiBzeXMvYWNsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgI2luY2x1ZGUgPHN5cy9hY2wuaD4KLQotW3NuaXBdCi0KLSBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgotIGFjbF9nZXRfZmlsZS5jOjI3OjI0OiBmYXRhbCBlcnJvcjogYWNsL2xpYmFjbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0gICNpbmNsdWRlIDxhY2wvbGliYWNsLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgXgotCi1UaGUgYWNsLmggaXMgaW4gImluY2x1ZGUiIGRpcmVjdG9yeSwgYW5kIGluY2x1ZGUvTWFrZWZpbGUgY3JlYXRlcwotc3ltbGluayAic3lzIiBhbmQgImFjbCIgcG9pbnN0IHRvIGN1cnJlbnQgZGlyY3Rvcnk6Ci0kIGxzIGluY2x1ZGUvIC1sCi1hY2wgLT4gLgotc3lzIC0+IC4KLQotU28gaWYgImxpYmFjbCIgdGFyZ2V0IHJ1bnMgYmVmb3JlICJpbmNsdWRlIiwgdGhlIGVycm9yIHdvdWxkIGhhcHBlbgotc2luY2Ugbm8gImFjbCIgb3IgInN5cyIgZGlyZWN0b3J5LgotCi1MZXQgbGliYWNsIGRlcGVuZCBvbiBpbmNsdWRlIGNhbiBmaXggdGhlIHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZGNlMzJkMy4uOGE3OTM3OSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTQ4LDcgKzQ4LDcgQEAgZWxzZQotIGVuZGlmCi0gCi0gIyB0b29sL2xpYiBkZXBlbmRlbmNpZXMKLS1saWJhY2w6IGxpYm1pc2MKLStsaWJhY2w6IGluY2x1ZGUgbGlibWlzYwotIGdldGZhY2wgc2V0ZmFjbCBjaGFjbDogbGliYWNsCi0gCi0gaWZlcSAoJChIQVZFX0JVSUxEREVGUyksIHllcykKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjc2NWZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotYWNsOiBmaXggdGhlIG9yZGVyIG9mIGV4cGVjdGVkIG91dHB1dCBvZiBnZXRmYWNsCi0KLVRoZSByZXN1bHQgb2YgZ2V0ZmFjbCBpcyBzb3J0ZWQgYnkgdXNlciBpZC4KLUluIENlbnRvcyBvciBSSEVMLCBiaW4gdXNlciBpZCBpcyAxIGFuZCBkYWVtb24gdXNlciBpZCBpcyAyLgotQnV0IGluIG91ciBpbWFnZSwgYmluIHVzZXIgaWQgaXMgMiBhbmQgZGFlbW9uIHVzZXIgaWQgaXMgMS4KLVRoZSBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIHRvIG1ha2UgcHRlc3QgcGFzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L21pc2MudGVzdCB8ICAgMzggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L21pc2MudGVzdCBiL3Rlc3QvbWlzYy50ZXN0Ci1pbmRleCA2ZTk4MDUzLi41M2FlNWIwIDEwMDY0NAotLS0tIGEvdGVzdC9taXNjLnRlc3QKLSsrKyBiL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtNzksOCArNzksOCBAQCBNdWx0aXBsZSB1c2VycwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IG1hc2s6OnJ3LQotIAk+IG90aGVyOjpyLS0KLUBAIC05NCw4ICs5NCw4IEBAIE11bHRpcGxlIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBncm91cDp1c2Vyczpydy0KLUBAIC0xMTEsOCArMTExLDggQEAgUmVtb3ZlIG9uZSBncm91cAotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBtYXNrOjpydy0KLUBAIC0xNDYsOCArMTQ2LDggQEAgRGVmYXVsdCBBQ0wKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnJ3eAotIAk+IHVzZXI6ZGFlbW9uOnJ3LQotKwk+IHVzZXI6YmluOnJ3eAotIAk+IGdyb3VwOjpyLXgKLSAJPiBtYXNrOjpyd3gKLSAJPiBvdGhlcjo6LS0tCi1AQCAtMjM2LDE2ICsyMzYsMTYgQEAgQWRkIHNvbWUgdXNlcnMgYW5kIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkL2QKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyLXgKLSsJPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDo6ci14Ci0gCT4gZ3JvdXA6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGdyb3VwOnVzZXJzOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyLXgKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnIteAotIAk+IGRlZmF1bHQ6bWFzazo6ci14Ci0gCT4gZGVmYXVsdDpvdGhlcjo6LS0tCi1AQCAtMjYyLDE2ICsyNjIsMTYgQEAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9sCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTI4NywxNiArMjg3LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMwOCwxNiArMzA4LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMzMyw4ICszMzMsOCBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gKLSAJPiB1c2VyOmRhZW1vbjpydy0KLSsJPiB1c2VyOmJpbjpyd3gKLSAJPiBncm91cDo6ci14Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6Oi0tLQotQEAgLTM3MywxNCArMzczLDE0IEBAIE5vdywgY2htb2Qgc2hvdWxkIGNoYW5nZSB0aGUgZ3JvdXBfb2JqIGVudHJ5Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyd3gKLSsJPiB1c2VyOmJpbjpyLXgKLSAJPiBncm91cDo6cnd4Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6OnIteAotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnJ3eAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6cnd4Ci0gCT4gZGVmYXVsdDptYXNrOjpyd3gKLSAJPiBkZWZhdWx0Om90aGVyOjpyLXgKLUBAIC0zOTIsMTQgKzM5MiwxNCBAQCBOb3csIGNobW9kIHNob3VsZCBjaGFuZ2UgdGhlIGdyb3VwX29iaiBlbnRyeQotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246cnd4CSNlZmZlY3RpdmU6ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyd3gKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnJ3eAotIAk+IGRlZmF1bHQ6bWFzazo6cnd4Ci0gCT4gZGVmYXVsdDpvdGhlcjo6ci14Ci1AQCAtNDExLDE0ICs0MTEsMTQgQEAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246cnd4Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyd3gKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6OnIteAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvY29uZmlndXJlLmFjIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjJlOGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIwotQUNfSU5JVChpbmNsdWRlL2FjbC5oKQotQUNfQ09ORklHX0FVWF9ESVIoWy5dKQotQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL2NvbmZpZy5oKQotQUNfUFJFRklYX0RFRkFVTFQoL3VzcikKLQotQUNfUFJPR19MSUJUT09MCi0KLUFDX0FSR19FTkFCTEUoc2hhcmVkLAotWyAtLWVuYWJsZS1zaGFyZWQ9W3llcy9ub10gRW5hYmxlIHVzZSBvZiBzaGFyZWQgbGlicmFyaWVzIFtkZWZhdWx0PXllc11dLCwKLQllbmFibGVfc2hhcmVkPXllcykKLUFDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0KLUFDX0FSR19FTkFCTEUoZ2V0dGV4dCwKLVsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotCWVuYWJsZV9nZXR0ZXh0PXllcykKLUFDX1NVQlNUKGVuYWJsZV9nZXR0ZXh0KQotCi1BQ19BUkdfRU5BQkxFKGxpYjY0LAotWyAtLWVuYWJsZS1saWI2ND1beWVzL25vXSBFbmFibGUgbGliNjQgc3VwcG9ydCBbZGVmYXVsdD1ub11dLCwKLQllbmFibGVfbGliNjQ9bm8pCi1BQ19TVUJTVChlbmFibGVfbGliNjQpCi0KLUFDX1BBQ0tBR0VfR0xPQkFMUyhhY2wpCi1BQ19QQUNLQUdFX1VUSUxJVElFUyhhY2wpCi1BQ19QQUNLQUdFX05FRURfQVRUUl9YQVRUUl9ICi1BQ19QQUNLQUdFX05FRURfQVRUUl9FUlJPUl9ICi1BQ19NVUxUSUxJQigkZW5hYmxlX2xpYjY0KQotQUNfUEFDS0FHRV9ORUVEX0dFVFhBVFRSX0xJQkFUVFIKLUFDX01BTlVBTF9GT1JNQVQKLQotQUNfRlVOQ19HQ0NfVklTSUJJTElUWQotCi1BQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CmluZGV4IGE1Njk0NmQuLjQzMTI4MjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CkBAIC00LDYxICs0LDcgQEAKIAogI3VtYXNrIDA3NwogCi1FWFQzX0lNQUdFPWV4dDMuaW1nCi1FWFQzX01PVU5UX1BPSU5UPS9tbnQvZXh0MworbWtkaXIgLXAgL3RtcC9hY2wtcHRlc3QvdGVzdAorY3AgdGVzdC90ZXN0LiogL3RtcC9hY2wtcHRlc3QvdGVzdAogCi10cmFwICdybSAtZiAke0VYVDNfSU1BR0V9JyBFWElUCi0KLWRkIGlmPS9kZXYvemVybyBvZj0ke0VYVDNfSU1BR0V9IGJzPTFNIGNvdW50PTEKLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogZHVtcCBleHQzLmltZyIKLWVsc2UKLQllY2hvICJGQUlMOiBkdW1wIGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotbWtmcy5leHQzIC1GICR7RVhUM19JTUFHRX0KLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogbWtmcy5leHQzIC1GIGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1rZnMuZXh0MyAtRiBleHQzLmltZyIKLQlleGl0IDEKLWZpCi0KLWlmIFsgLWQgJEVYVDNfTU9VTlRfUE9JTlQgXTsgdGhlbgotCWVjaG8gIm1vdW50IHBvaW50IGV4aXN0IgotZWxzZQotCW1rZGlyIC1wICRFWFQzX01PVU5UX1BPSU5UCi1maQotCi0KLW1vdW50IC1vIGxvb3AscncsYWNsICAke0VYVDNfSU1BR0V9ICRFWFQzX01PVU5UX1BPSU5UCi1pZiBbICIkPyIgLWVxIDAgXTsgdGhlbgotCWVjaG8gIlBBU1M6IG1vdW50IGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1vdW50IGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotY3AgLXJmIC4vdGVzdC8gJEVYVDNfTU9VTlRfUE9JTlQKLQotY2QgJEVYVDNfTU9VTlRfUE9JTlQvdGVzdC8KLQotaWYJc2VkIC1lICdzIV5iaW46eDoyOiQhYmluOng6MjpkYWVtb24hJyA8IC9ldGMvZ3JvdXAgPiBndG1wCi10aGVuCWlmCWNwIC9ldGMvZ3JvdXAgZ3JvdXAub3JpZzsKLQl0aGVuCWNwIGd0bXAgL2V0Yy9ncm91cAotCQltYWtlICAtayB0ZXN0cyByb290LXRlc3RzIHwgc2VkIFwKLQkJCS1lICdzfF5cWy4qXF0gXCguKlwpIC0tIG9rJHxQQVNTOiBcMXwnIFwKLQkgIAkJLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gZmFpbGVkfEZBSUw6IFwxfCcKLQkJY3AgZ3JvdXAub3JpZyAvZXRjL2dyb3VwCi0JZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBzYXZlIG9yaWdpbmFsIGdyb3VwIGZpbGUuIgotCQlleGl0IDEKLQlmaQotZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBjcmVhdGUgbW9kaWZpZWQgZ3JvdXAgZmlsZS4iCi0JZXhpdCAxCi1maQotCi1jZCAtCi11bW91bnQgJEVYVDNfTU9VTlRfUE9JTlQKLXJtIC1yZiAkRVhUM19NT1VOVF9QT0lOVAotcm0gJEVYVDNfSU1BR0UKK21ha2UgdGVzdC1zdWl0ZS5sb2cKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDk5MGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDMxMTU4OWZlZGYxOTYxNjgzODJkOGYwZGIzMDNhYjMyOGJjZjlkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDExIE1heSAyMDE2IDE1OjE2OjA2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFjbC5pbmMsIHJ1bi1wdGVzdDogaW1wcm92ZSBwdGVzdCBmdW5jdGlvbmFsaXR5IG9uIGxpbWl0ZWQKLQotY29tbWl0IGM0NWJhZTg0ODE3YTcwZmVmNmMyYjY2MWEwN2E0OTJhMGQyM2FlODUKLQotICAgIEZpeCBwZXJtaXNzaW9ucyBvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0KLSAgICBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGhhdmUgdG8gYWxsb3cgb3RoZXIgdXNlcnMgdG8KLSAgICB2aWV3IHRoZSBkaXJlY3RvcnkuIEEgZGVmYXVsdCB1bWFzayBvZiAwMjIgaXMgY29tbW9uLCBidXQgbm90IG1hbmRhdG9yeSwKLSAgICBhbmQgc2VjdXJlIHN5c3RlbXMgbWF5IGhhdmUgbW9yZSByZXN0cmljdGl2ZSBkZWZhdWx0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1jNjc3MmE5NTg4MDBkZTA2NDQ4MjYzNGY3N2MyMGEwZmFhZmM1YWY2IF0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1pbmRleCA0MjYxNWY1Li4wOThiNTJhIDEwMDY0NAotLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1AQCAtMTYsNiArMTYsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gRmlyc3QsIHNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZSB3aXRoCi0gZGVmaW5lZCBwZXJtaXNzaW9ucy4KLSAKLSsJJCB1bWFzayAwMjIKLSAJJCBta2RpciBkCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM5MjQ2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gZTk4Y2U4YWNmODRkMTJlYTY3YTNhYzc2YmY2M2M2ZDg3ZDlhZjg2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjAgTWF5IDIwMTMgMTY6Mzg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4IGluc3VmZmljaWVudCBxdW90aW5nIG9mICdcJwotCi1UaGlzIGlzIGEgZm9sbG93LXVwIHRvIDdmMmM5MWI4MzY5MjQyYThkYmMyYjMwNGE1YjcxYjJhODVmNWI4NTUsIHdoaWNoCi1jYXVzZWQgc2JpdHMtcmVzdG9yZS50ZXN0IHRvIGZhaWwgaW4gdGhlIGZvbGxvd2luZyB3YXkgaW4gY2FzZSBTRUxpbnV4Ci13YXMgZGlzYWJsZWQ6Ci0KLSoqKiBzYml0cy1yZXN0b3JlLnRlc3QgKioqCi1bM10gJCB1bWFzayAwMjIgLS0gb2sKLVs0XSAkIG1rZGlyIGQgLS0gb2sKLVs1XSAkIHRvdWNoIGQvZyAtLSBvawotWzZdICQgdG91Y2ggZC91IC0tIG9rCi1bN10gJCBjaG1vZCB1K3MgZC91IC0tIG9rCi1bOF0gJCBjaG1vZCBnK3MgZC9nIC0tIG9rCi1bOV0gJCBjaG1vZCArdCBkIC0tIG9rCi1bMTBdICQgZ2V0ZmFjbCAtUiBkID4gZC5hY2wgLS0gb2sKLVsxMV0gJCBybSAtUiBkIC0tIG9rCi1bMTJdICQgbWtkaXIgZCAtLSBvawotWzEzXSAkIHRvdWNoIGQvZyAtLSBvawotWzE0XSAkIHRvdWNoIGQvdSAtLSBvawotWzE1XSAkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsIC0tIG9rCi1bMTZdICQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLWRyd3hyLXhyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gZHJ3eHIteHItdAotWzE4XSAkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1yd1NyLS1yLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3U3ItLXItLQotWzIwXSAkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1ydy1yLVNyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3LXItU3ItLQotWzIyXSAkIHJtIC1SZiBkIC0tIG9rCi0xNyBjb21tYW5kcyAoMTQgcGFzc2VkLCAzIGZhaWxlZCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvYWNsLmdpdC9jb21taXQvP2lkPWU5OGNlOGFjZjg0ZDEyZWE2N2EzYWM3NmJmNjNjNmQ4N2Q5YWY4NmQKLQotU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvY3AudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmCi0gCT4gLXJ3LXJ3LXItLSsKLSAJCi0gCSQgY3AgZiBnCi0tCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLS1yLS0KLSAJCi0gCSQgcm0gZwotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9taXNjLnRlc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9taXNjLnRlc3QKLSsrKyBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtMjU0LDcgKzI1NCw3IEBAIEFkZCBzb21lIHVzZXJzIGFuZCBncm91cHMKLSBTeW1saW5rIGluIGRpcmVjdG9yeSB3aXRoIGRlZmF1bHQgQUNMPwotIAkgCi0gCSQgbG4gLXMgZCBkL2wKLS0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBscnd4cnd4cnd4Ci0gCi0gCSQgbHMgLWRsIC1MIGQvbCB8IGF3ayAne3ByaW50ICQxfScKLUBAIC0zNDMsNyArMzQzLDcgQEAgUmVtb3ZlIHRoZSBkZWZhdWx0IEFDTAotIFJlc2V0IHRvIGJhc2UgZW50cmllcwotIAkgCi0gCSQgc2V0ZmFjbCAtYiBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14LS0tCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLUBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0gTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAJIAotIAkkIGNobW9kIDc3NSBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4cnd4ci14Ci0gCQotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi1JbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQotIAkkIHRvdWNoIGQvZwotIAkkIHRvdWNoIGQvdQotIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14ci10Ci0tCSQgbHMgLWRsIGQvdSB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwotKwkkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gLXJ3U3ItLXItLQotLQkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZC9nIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLVNyLS0KLSAJJCBybSAtUmYgZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzExYTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gZDJmNDllZTZmZTQ4NTBiOGRkYTViMDg2NzZiMzYyMDFkM2M0MzcxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIgTWFyIDIwMTYgMTU6NDY6NTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4dXBzIG9uIFNFTGludXggbWFjaGluZXMgZm9yIHJvb3QgdGVzdGNhc2VzCi0KLWxzIGFkZHMgYSAnLicgYXQgdGhlIGVuZCBvZiB0aGUgcGVybWlzc2lvbiBmaWVsZCBsaXN0IG9uIFNFTGludXgKLW1hY2hpbmVzLCBmaWx0ZXIgdGhpcyBvdXQgc28gcm9vdCB0ZXN0cyB3b3JrIG9uIFNFTGludXggbWFjaGluZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD0yNmE4N2QzNmY4MGQ1ZTk4YmNjYjU4Nzg4MzRkOWU2OWRhZGZlM2U5Ci0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCB8IDggKysrKy0tLS0KLSB0ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0ICAgICB8IDIgKy0KLSB0ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0ICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLWluZGV4IDliOWUzZGUuLjY2NTMzOWEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAotKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLUBAIC0xOSw3ICsxOSw3IEBAIGRlZmluZWQgcGVybWlzc2lvbnMuCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotIAkkIHRvdWNoIGYKLS0JJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScKLSsJJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0KLQotQEAgLTM5LDcgKzM5LDcgQEAgTm93LCBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiB0aGUgZmlsZSB0byBiaW46YmluIGFuZCB2ZXJpZnkgdGhhdCB0aGlzCi0gZ2l2ZXMgdXNlciBiaW4gd3JpdGUgYWNjZXNzLgotCi0gCSQgY2hvd24gYmluOmJpbiBmCi0tCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIGJpbiBiaW4KLSAJJCBzdSBiaW4KLSAJJCBlY2hvIGJpbiA+PiBmCi1AQCAtMjU2LDEyICsyNTYsMTIgQEAgZGlyZWN0b3JpZXMgaWYgdGhlIGZpbGUgaGFzIGFuIEFDTCBhbmQgb25seSBDQVBfRk9XTkVSIHdvdWxkIGdyYW50IHRoZW0uCi0gCSQgbWtkaXIgLW0gNjAwIHgKLSAJJCBjaG93biBkYWVtb246ZGFlbW9uIHgKLSAJJCBlY2hvIGogPiB4L2oKLS0JJCBscyAtbCB4L2ogfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JwotKwkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIHJvb3Qgcm9vdAotCi0gCSQgc2V0ZmFjbCAtbSB1OmRhZW1vbjpyIHgKLQotLQkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgeC9qIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0gCShXaXRoIHRoZSBidWcgdGhpcyBnaXZlczogYGxzOiB4L2o6IFBlcm1pc3Npb24gZGVuaWVkJy4pCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0IGIvdGVzdC9yb290L3Jlc3RvcmUudGVzdAotaW5kZXggNjNhOWQwMS4uYzg1MDk3YyAxMDA2NDQKLS0tLSBhL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLUBAIC0yMSw3ICsyMSw3IEBAIENyeSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYXMgcm9vdC4KLSAJJCBjaG93biBiaW4gcGFzc3dkCi0gCSQgY2htb2QgdStzIHBhc3N3ZAotIAkkIHNldGZhY2wgLS1yZXN0b3JlIHBhc3N3ZC5hY2wKLS0JJCBscyAtZGwgcGFzc3dkIHwgYXdrICd7cHJpbnQgJDEgIiAiICQzICIgIiAkNH0nCi0rCSQgbHMgLWRsIHBhc3N3ZCB8IGF3ayAne3ByaW50ICQxICIgIiAkMyAiICIgJDR9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3c3IteHIteCByb290IHJvb3QKLQotIAkkIHJtIHBhc3N3ZCBwYXNzd2QuYWNsCi1kaWZmIC0tZ2l0IGEvdGVzdC9yb290L3NldGZhY2wudGVzdCBiL3Rlc3Qvcm9vdC9zZXRmYWNsLnRlc3QKLWluZGV4IGE0NmE5ZjQuLjdlZmJhZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci0rKysgYi90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci1AQCAtMTIsNyArMTIsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gCSQgc2cgYmluCi0gCSQgdW1hc2sgMDI3Ci0gCSQgdG91Y2ggZwotLQkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JwotKwkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3LXItLS0tLQotCi0gCSQgc2V0ZmFjbCAtbSBtOi0gZwotLS0KLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzc3ZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9hY2wvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWIke0JQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM3ODFkNzBlZDJiNGQ0ODk5NWI3OTA0MDMyMTdhMjQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxHUEw7bWQ1PTllOWEyMDY5MTdmOGFmMTEyZGE2MzRjZTNhYjQxNzY0IgotCi1ERVBFTkRTID0gImF0dHIiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hY2wvJHtCUH0uc3JjLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWM7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2wtZml4LXRoZS1vcmRlci1vZi1leHBlY3RlZC1vdXRwdXQtb2YtZ2V0ZmFjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNjE0MTUzMTI0MjZlOWMyMjEyYmQ3ZGM3OTI5YWJkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkwNzRiYjA1ODBjMDZjNGI0MTM3YmU0YzVhOTJhNzAxNTgzMjc3OTY3YWNkYjU1NDYwNDNjNzg3NGUwZDIzIgotCi1yZXF1aXJlIGVhLWFjbC5pbmMKLQotIyBhdm9pZCBSUEFUSCBoYXJkY29kZSB0byBzdGFnaW5nIGRpcgotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtTfS9jb25maWcuc3RhdHVzIC1lIHMsXlxcXChoYXJkY29kZV9pbnRvX2xpYnM9XFxcKS4qJCxcXDFcJ25vXCcsCi0JJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLSMgbGliZGlyIHNob3VsZCBwb2ludCB0byAubGEKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXNlZCAtaSAke0R9JHtsaWJkaXJ9L2xpYmFjbC5sYSAtZSBcCi0JICAgIHMsXmxpYmRpcj1cJyR7YmFzZV9saWJkaXJ9XCckLGxpYmRpcj1cJyR7bGliZGlyfVwnLAotfQotCi1pbmhlcml0IHB0ZXN0Ci0KLVBURVNUX0JVSUxEX0hPU1RfRklMRVMgPSAiYnVpbGRkZWZzIgotUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl5SUE0iCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9bmZzIHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9idWlsZGRlZnMgJHtTfS9pbmNsdWRlL2J1aWxkbWFjcm9zICR7U30vaW5jbHVkZS9idWlsZHJ1bGVzICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImFjbCBiYXNoIGNvcmV1dGlscyBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCBzaGFkb3ciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiNTBmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL2FjbC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIrIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9Yzc4MWQ3MGVkMmI0ZDQ4OTk1Yjc5MDQwMzIxN2EyNDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEdQTDttZDU9OWU5YTIwNjkxN2Y4YWYxMTJkYTYzNGNlM2FiNDE3NjQiCisKK0RFUEVORFMgPSAiYXR0ciIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2FjbC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwN2FhYmYxZGJiNTUwYmNkZGRlNTJhMjQ0Y2QxMDcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2YmU5ODY1YzZmNDE4ZDg1MWZmNDQ5NGUxMjQwNjU2ODM1M2I4OTFmZmUxZjU5NmIzNDY5M2MzODdhZjI2YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitQVEVTVF9CVUlMRF9IT1NUX0ZJTEVTID0gImJ1aWxkZGVmcyIKK1BURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGxpYnRlc3Rsb29rdXAubGEKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtcmYgJHtTfS90ZXN0LyAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMKKwljcCAtcmYgJHtCfS8ubGlicy9saWJ0ZXN0bG9va3VwKiAke0R9JHtQVEVTVF9QQVRIfS8ubGlicworICAgICAgICBjcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICAgICBzZWQgLWkgInN8XnNyY2RpciA9Lip8c3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfc3JjZGlyID0uKnxhYnNfc3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeTWFrZWZpbGU6Lip8TWFrZWZpbGU6fGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKyAgICAgICAgcm0gJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMvbGlidGVzdGxvb2t1cC5sYWkKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYWNsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdyBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdhd2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKaW5kZXggMzUwM2Q2Ni4uZjEzYTgzYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtOCwyMiArOCwxOCBAQAogTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCiBMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MmQwYWExNGIzZmNlNDY5NGU0ZjYxNWUzMDE4NjMzNWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXR0ci9hdHRyLmM7ZW5kbGluZT0xNzttZDU9YmUwNDAzMjYxZjA4NDdlNWY0M2VkNWIwOGQxOTU5M2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PWJlMDQwMzI2MWYwODQ3ZTVmNDNlZDViMDhkMTk1OTNjIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmF0dHIvbGliYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PTc5NzBmNzcwNDlmOGZhMTE5OWZmZjYyYTdhYjcyNGZiIgogCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYXR0ci8ke0JQfS5zcmMudGFyLmd6IFwKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hdHRyLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogIgogCi1yZXF1aXJlIGVhLWFjbC5pbmMKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcyBhdXRvdG9vbHMgZ2V0dGV4dAogCi0jIGxpYmRpciBzaG91bGQgcG9pbnQgdG8gLmxhCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtEfSR7bGliZGlyfS9saWJhdHRyLmxhIC1lIFwKLQkgICAgcyxebGliZGlyPVwnJHtiYXNlX2xpYmRpcn1cJyQsbGliZGlyPVwnJHtsaWJkaXJ9XCcsCi19CitQQUNLQUdFUyA9KyAibGliJHtCUE59IgogCi1pbmhlcml0IHB0ZXN0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogQUxURVJOQVRJVkVfJHtQTn0gPSAic2V0ZmF0dHIiCkBAIC0zMywxNCArMjksMzQgQEAKIFBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9ZXh0IHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUKLQlmb3IgaSBpbiBidWlsZGRlZnMgYnVpbGRtYWNyb3MgYnVpbGRydWxlczsgXAotCSAgZG8gY3AgJHtTfS9pbmNsdWRlLyRpICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3w7IEBlY2hvfDsgZWNob3wnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKyAgICAgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisgICAgICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgICAgIHNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic19zcmNkaXIgPS4qfGFic19zcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic190b3Bfc3JjZGlyID0uKnxhYnNfdG9wX3NyY2RpciA9IFwuXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKwljcCAtcmYgJHtTfS9idWlsZC1hdXgvICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXJmICR7U30vdGVzdC8gJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYXR0ciBjb3JldXRpbHMgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIHBlcmwtbW9kdWxlLXBvc2l4IG1ha2UgcGVybCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImF0dHIgXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZ2F3ayBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZDY1MDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gMzdhMjdiNmZkMDllY2IzNzA5N2I4NWU1ZGI3NGU0Zjc3YjgwZmUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDE2IDIyOjIwOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBzdGRpbnQgdHlwZXMgY29uc2lzdGVudGx5Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGluY2x1ZGUvYXR0cmlidXRlcy5oIHwgNiArKysrLS0KLSBtYW4vbWFuMy9hdHRyX2xpc3QuMyB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL2F0dHJpYnV0ZXMuaAotKysrIGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi1AQCAtMjIsNiArMjIsNyBAQAotIGV4dGVybiAiQyIgewotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAvKgotICAqCUFuIGFsbW9zdC1JUklYLWNvbXBhdGlibGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBBUEkKLSAgKgkodGhlIElSSVggYXR0cmlidXRlICJsaXN0IiBvcGVyYXRpb24gaXMgbWlzc2luZywgYWRkZWQgQVRUUl9TRUNVUkUpLgotQEAgLTY5LDcgKzcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3QgewotICAqIGFsX29mZnNldFtpXSBlbnRyeSBwb2ludHMgdG8uCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcm9tIGF0dHJfbGlzdCgpICovCi0tCXVfaW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotKwl1aW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotIAljaGFyCQlhX25hbWVbMV07CS8qIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSAqLwotIH0gYXR0cmxpc3RfZW50X3Q7Ci0gCi1AQCAtOTAsNyArOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBhdHRybGlzdF9lbnQgewkvKiBkYXRhIGZyCi0gICogb3BlcmF0aW9uIG9uIGEgY3Vyc29yIGlzIHRvIGJ6ZXJvKCkgaXQuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfY3Vyc29yIHsKLS0JdV9pbnQzMl90CW9wYXF1ZVs0XTsJLyogYW4gb3BhcXVlIGNvb2tpZSAqLwotKwl1aW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KLSB9IGF0dHJsaXN0X2N1cnNvcl90OwotIAotIC8qCi1JbmRleDogYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdHRyLTIuNC40Ny5vcmlnL21hbi9tYW4zL2F0dHJfbGlzdC4zCi0rKysgYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLUBAIC03Miw5ICs3Miw5IEBAIFRoZSBjb250ZW50cyBvZiBhbiBcZjRhdHRybGlzdF90XGZQIHN0cnUKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS1fX2ludDMyX3QgYWxfY291bnQ7IC9cKCoqIG51bWJlciBvZiBlbnRyaWVzIGluIGF0dHJsaXN0IFwoKiovCi0tX19pbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KLS1fX2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLStpbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLwotK2ludDMyX3QgYWxfbW9yZTsgL1woKiogVC9GOiBtb3JlIGF0dHJzIChkbyBzeXNjYWxsIGFnYWluKSBcKCoqLwotK2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLSAuZnQgMQotIC5maQotIC5SRQotQEAgLTExMyw3ICsxMTMsNyBAQCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS11X2ludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KLSt1aW50MzJfdCBhX3ZhbHVlbGVuOyAvXCgqKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciBcKCoqLwotIGNoYXIgYV9uYW1lW107IC9cKCoqIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSBcKCoqLwotIC5mdCAxCi0gLmZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvYXR0ci1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmY2MzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBhdHRyOiBNaXNzaW5nIGNvbmZpZ3VyZS5hYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtVcHN0cmVhbSByZWxlYXNlZCB0YXJiYWxsIG1pc3NpbmcgdGhpcyBmaWxlXQotU2lnbmVkLW9mZi1ieTogTmF0aGFuIFJvc3NpIDxuYXRoYW4ucm9zc2lAeGlsaW54LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlndXJlLmFjCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOTY2ZDBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0wLDAgKzEsNDggQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsjCi0rQUNfSU5JVChpbmNsdWRlL2F0dHJpYnV0ZXMuaCkKLStBQ19DT05GSUdfQVVYX0RJUihbLl0pCi0rQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotK0FDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9jb25maWcuaCkKLStBQ19QUkVGSVhfREVGQVVMVCgvdXNyKQotKwotK0FDX1BST0dfTElCVE9PTAotKwotK0FDX0FSR19FTkFCTEUoc2hhcmVkLAotK1sgLS1lbmFibGUtc2hhcmVkPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zaGFyZWQ9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0rCi0rQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotK1sgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotKwllbmFibGVfZ2V0dGV4dD15ZXMpCi0rQUNfU1VCU1QoZW5hYmxlX2dldHRleHQpCi0rCi0rQUNfQVJHX0VOQUJMRShsaWI2NCwKLStbIC0tZW5hYmxlLWxpYjY0PVt5ZXMvbm9dIEVuYWJsZSBsaWI2NCBzdXBwb3J0IFtkZWZhdWx0PW5vXV0sLAotKwllbmFibGVfbGliNjQ9bm8pCi0rQUNfU1VCU1QoZW5hYmxlX2xpYjY0KQotKwotK0FDX1BBQ0tBR0VfR0xPQkFMUyhhdHRyKQotK0FDX1BBQ0tBR0VfVVRJTElUSUVTKGF0dHIpCi0rQUNfTUFOVUFMX0ZPUk1BVAotK0FDX01VTFRJTElCKCRlbmFibGVfbGliNjQpCi0rCi0rQUNfQ19DT05TVAotK0FDX1RZUEVfTU9ERV9UCi0rQUNfRlVOQ19BTExPQ0EKLSsKLStBQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDRiODkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotVXNlIGV4dGVybiAiQyIgaW5zdGVhZCBvZiBfX0JFR0lOX0RFQ0wvX19FTkRfREVDTCBtYWNyb3MKLXRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCBpbiBzeXMvY2RlZnMuaCBmb3IgZ2xpYmMgYW5kIHRoaXMgaGVhZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIGxpYmMKLQotYW55d2F5IHRoZXkgZGVmaW5lZCBsaWtlIGJlbG93Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyBkZWZpbmUgX19CRUdJTl9ERUNMUyBleHRlcm4gIkMiIHsKLSMgZGVmaW5lIF9fRU5EX0RFQ0xTIH0KLSNlbHNlCi0jIGRlZmluZSBfX0JFR0lOX0RFQ0xTIC8qIGVtcHR5ICovCi0jIGRlZmluZSBfX0VORF9ERUNMUyAvKiBlbXB0eSAqLwotI2VuZGlmCi0KLV9fVEhST1cgbWFjcm8gaXMgYWxzbyBub3QgYXZhaWxhYmxlIG9uIG11c2wsIGRlZmluZWQgdGh1c2x5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogYXR0ci0yLjQuNDcvaW5jbHVkZS94YXR0ci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDowMTozMC4yNTIwOTEyODAgLTA3MDAKLSsrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDoxMjo1Ny45ODU0MjgwOTkgLTA3MDAKLUBAIC0zMCw4ICszMCwyMCBAQAotICNkZWZpbmUgWEFUVFJfQ1JFQVRFICAweDEgICAgICAgLyogc2V0IHZhbHVlLCBmYWlsIGlmIGF0dHIgYWxyZWFkeSBleGlzdHMgKi8KLSAjZGVmaW5lIFhBVFRSX1JFUExBQ0UgMHgyICAgICAgIC8qIHNldCB2YWx1ZSwgZmFpbCBpZiBhdHRyIGRvZXMgbm90IGV4aXN0ICovCi0gCi0tCi0tX19CRUdJTl9ERUNMUwotKyNpZm5kZWYgX19USFJPVwotKyMgaWZuZGVmIF9fR05VQ19QUkVSRVEKLSsjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgKDApCi0rIyBlbmRpZgotKyMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBfX0dOVUNfUFJFUkVRICgyLDgpCi0rIyAgZGVmaW5lIF9fVEhST1cgICAgICAgdGhyb3cgKCkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX19USFJPVwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSBleHRlcm4gaW50IHNldHhhdHRyIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fbmFtZSwKLSAJCSAgICAgIGNvbnN0IHZvaWQgKl9fdmFsdWUsIHNpemVfdCBfX3NpemUsIGludCBfX2ZsYWdzKSBfX1RIUk9XOwotQEAgLTU4LDYgKzcwLDggQEAKLSBleHRlcm4gaW50IGxyZW1vdmV4YXR0ciAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX25hbWUpIF9fVEhST1c7Ci0gZXh0ZXJuIGludCBmcmVtb3ZleGF0dHIgKGludCBfX2ZpbGVkZXMsICAgY29uc3QgY2hhciAqX19uYW1lKSBfX1RIUk9XOwotIAotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotIAotICNlbmRpZgkvKiBfX1hBVFRSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSB0ZXN0LXN1aXRlLmxvZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzg4YmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgYXR0ci5pbmMKLQotIyBjb25maWd1cmUuYWMgd2FzIG1pc3NpbmcgZnJvbSB0aGUgcmVsZWFzZSB0YXJiYWxsLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbgotIyBmdXR1cmUgcmVsZWFzZXMgb2YgYXR0ciwgcmVtb3ZlIHRoaXMgd2hlbiB1cGRhdGluZyB0aGUgcmVjaXBlLgotU1JDX1VSSSArPSAiZmlsZTovL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjU4ZGVjMDBiNjBmMmRjOGZkMWM5NzA5MjkxY2M3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1NzcyZjY1M2FjNWIyZTNjZWViODlkZjUwZTQ2ODg4OTFlMjFmNzIzYzQ2MDYzNjU0ODk3MTY1MmFmMGE4NTkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzBkNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ4LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBhdHRyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmMxZTVjYjVjOTZkOTliMjQ4ODZmMWY1MjdkM2JiM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWVhZDcyYjM1OGVjNzA5ZWQwMGJiZjdhOWVhZWYxNjU0YmFhZDkzN2MwMDFjMDQ0ZmU4Yjc0YzU3ZjUzMjRlNyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzNmZmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLSMgdGhpcyBidWlsZCBzeXN0ZW0gaXMgbW9zdGx5IHNoYXJlZCBieSBhdHRyIGFuZCBhY2wKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbGF0aXZlLWxpYmRpci5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICAiCi0jIFRoaXMgcGF0Y2ggc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgJyhhdHRyXHxhY2wpLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoJyAKLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAotCi0jIFdoZW4gdXBzdHJlYW0gaXMgdXNpbmcgYXV0b21ha2UgcHJvcGVybHksIHRoaXMgY2FuIGJlIHJlbW92ZWQKLUNMRUFOQlJPS0VOID0gIjEiCi0KLSMgdGhlIHBhY2thZ2UgY29tZXMgd2l0aCBhIGN1c3RvbSBjb25maWcuaC5pbiwgaXQgY2Fubm90IGJlCi0jIG92ZXJ3cml0dGVuIGJ5IGF1dG9oZWFkZXIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgotRVhUUkFfT0VDT05GID0gIklOU1RBTExfVVNFUj1yb290IElOU1RBTExfR1JPVVA9cm9vdCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1nZXR0ZXh0PW5vIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAWycnLCAnIC0tZGlzYWJsZS1nZXR0ZXh0ICddWyhkLmdldFZhcignVVNFX05MUycpID09ICdubycpXX0iCi0KLUVYVFJBX09FTUFLRSA9ICJQS0dfTElCX0RJUj0ke2Jhc2VfbGliZGlyfSBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlpZiB0ZXN0ICIke2xpYmRpcn0iID0gIiR7YmFzZV9saWJkaXJ9IiA7IHRoZW4KLQkJcmV0dXJuCi0JZmkKLQlsaWJyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJyksIGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpKX0KLQliYXNlbGlicmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJyksIGQuZ2V0VmFyKCdsaWJkaXInKSl9Ci0KLQkjIFJlbW92ZSBiYWQgc3ltbGlua3MgJiBjcmVhdGUgdGhlIGNvcnJlY3Qgc3ltbGlua3MKLQlpZiB0ZXN0IC1MICR7RH0ke2xpYmRpcn0vbGliJHtCUE59LnNvIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQkJbG4gLXNmICRiYXNlbGlicmVscGF0aC9saWIke0JQTn0uc28gJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQlmaQotCWlmIHRlc3QgLUwgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0uYSAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmEKLQlmaQotCWlmIHRlc3QgLUwgICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0ubGEgOyB0aGVuCi0JCXJtIC1yZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmxhCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0ubGEgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5sYQotCWZpCi19Ci0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi0KLUZJTEVTX2xpYiR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzExNTlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDAxMjU2YzYxYmExMjY0NDljNDZkZDRhYjVkNWUxNDU0ODhiOTgxZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjMgSmFuIDIwMTcgMTM6MjU6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkZWQgY29uZmlndXJlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBzdGF0aWMgbGlicmFyeQotCi1DcmVhdGUgc3RhdGljIGxpYnJhcnkgYXJjaGl2ZSBvbmx5IGluIGNhc2Ugb2YgLS1lbmFibGUtc3RhdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICB8IDYgKysrKysrCi0gaW5jbHVkZS9idWlsZGRlZnMuaW4gfCAxICsKLSBpbmNsdWRlL2J1aWxkbWFjcm9zICB8IDMgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI5NjZkMGUuLmU0ODI2OGIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI2LDYgKzI2LDEyIEBAIEFDX0FSR19FTkFCTEUoc2hhcmVkLAotIAllbmFibGVfc2hhcmVkPXllcykKLSBBQ19TVUJTVChlbmFibGVfc2hhcmVkKQotIAotK0FDX0FSR19FTkFCTEUoc3RhdGljLAotK1sgLS1lbmFibGUtc3RhdGljPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc3RhdGljIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zdGF0aWM9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0rCi0rCi0gQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotIFsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotIAllbmFibGVfZ2V0dGV4dD15ZXMpCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZGRlZnMuaW4gYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotaW5kZXggZDk5MzFkYi4uM2IzZGJkMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnVpbGRkZWZzLmluCi0rKysgYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotQEAgLTcxLDYgKzcxLDcgQEAgUlBNQlVJTEQJPSBAcnBtYnVpbGRACi0gUlBNX1ZFUlNJT04JPSBAcnBtX3ZlcnNpb25ACi0gCi0gRU5BQkxFX1NIQVJFRAk9IEBlbmFibGVfc2hhcmVkQAotK0VOQUJMRV9TVEFUSUMgCT0gQGVuYWJsZV9zdGF0aWNACi0gRU5BQkxFX0dFVFRFWFQJPSBAZW5hYmxlX2dldHRleHRACi0gCi0gSEFWRV9aSVBQRURfTUFOUEFHRVMgPSBAaGF2ZV96aXBwZWRfbWFucGFnZXNACi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZG1hY3JvcyBiL2luY2x1ZGUvYnVpbGRtYWNyb3MKLWluZGV4IDM5ZmE3ZTIuLmIwZjI1YzUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2J1aWxkbWFjcm9zCi0rKysgYi9pbmNsdWRlL2J1aWxkbWFjcm9zCi1AQCAtODAsNiArODAsNyBAQCBlbmRpZgotICMgL3Vzci9saWIuCi0gaWZlcSAoJChFTkFCTEVfU0hBUkVEKSx5ZXMpCi0gSU5TVEFMTF9MVExJQl9ERVYgPSBcCi0rCXNldCAteDsgXAotIAljZCAkKFRPUERJUikvJChMSUJOQU1FKS8ubGliczsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDc1NSAtZCAkKFBLR19ERVZMSUJfRElSKTsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDY0NCAtVCBvbGRfbGliICQoTElCTkFNRSkubGFpICQoUEtHX0RFVkxJQl9ESVIpOyBcCi1AQCAtODgsNyArODksOSBAQCBJTlNUQUxMX0xUTElCX0RFViA9IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLSAJcmVsX2xpYl9wcmVmaXg9JCQoZWNobyAkKFBLR19MSUJfRElSKSB8IHNlZCAncyxcKF4vXHxcKVteL11bXi9dKiwuLixnJyk7IFwKLSsJaWYgdGVzdCAiJChFTkFCTEVfU1RBVElDKSIgPSAieWVzIiA7IHRoZW4gXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2xpYl9wcmVmaXgkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0rCWZpIDtcCi0gCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkubGEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5sYTsgXAotIAlyZWxfZGV2bGliX3ByZWZpeD0kJChlY2hvICQoUEtHX0RFVkxJQl9ESVIpIHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnKTsgXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2RldmxpYl9wcmVmaXgkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLnNvICQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuc287IFwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWI4M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi1Gcm9tIDYwNDdjODUyMmI5MTIzNWFkMWU4MzVmNDRmNWUzNjQ3MmQ5ZDQ5YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTE6NDY6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSB0aGUgYXR0ci41IG1hbiBwYWdlIChtb3ZlZCB0byBtYW4tcGFnZXMpCi0KLUNvbW1pdCBkY2U5YjQ0NDhjN2YyYjIyYmQyMDZjZDA2OGZiMDVjYjJmMzI1NWI5IGZyb20KLWh0dHBzOi8vZ2l0LnNhdmFubmFoLm5vbmdudS5vcmcvZ2l0L2F0dHIuZ2l0Ci0KLVRoZSBhdHRyLjUgcGFnZSBpcyBwYXJ0IG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3lzdGVtIGNhbGwgZG9jdW1lbnRhdGlvbiwKLXdoaWNoIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlLiBNb3ZlIHRoZSBhdHRyLjUgcGFnZSB0aGVyZQotYXMgd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1bTUE6IHVwZGF0ZWQgdG8gYXBwbHkgZGlyZWN0bHkgdG8gdjIuNC40N10KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtYW4vTWFrZWZpbGUgICAgICB8ICAgMiArLQotIG1hbi9tYW41L01ha2VmaWxlIHwgIDM1IC0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuNS9hdHRyLjUgICB8IDE1MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxODkgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L2F0dHIuNQotCi1kaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlIGIvbWFuL01ha2VmaWxlCi1pbmRleCA3NTVkYWVkLi45MzAxZjA5IDEwMDY0NAotLS0tIGEvbWFuL01ha2VmaWxlCi0rKysgYi9tYW4vTWFrZWZpbGUKLUBAIC0xOSw3ICsxOSw3IEBACi0gVE9QRElSID0gLi4KLSBpbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotIAotLVNVQkRJUlMgPSBtYW4xIG1hbjMgbWFuNQotK1NVQkRJUlMgPSBtYW4xIG1hbjMKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW41L01ha2VmaWxlIGIvbWFuL21hbjUvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNmI3MGQzZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDIgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0jCi0tCi0tVE9QRElSID0gLi4vLi4KLS1pbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotLQotLU1BTl9TRUNUSU9OCT0gNQotLQotLU1BTl9QQUdFUwk9ICQoc2hlbGwgZWNobyAqLiQoTUFOX1NFQ1RJT04pKQotLU1BTl9ERVNUCT0gJChQS0dfTUFOX0RJUikvbWFuJChNQU5fU0VDVElPTikKLS1MU1JDRklMRVMJPSAkKE1BTl9QQUdFUykKLS0KLS1kZWZhdWx0IDogJChNQU5fUEFHRVMpCi0tCi0taW5jbHVkZSAkKEJVSUxEUlVMRVMpCi0tCi0taW5zdGFsbCA6IGRlZmF1bHQKLS0JJChJTlNUQUxMKSAtbSA3NTUgLWQgJChNQU5fREVTVCkKLS0JJChJTlNUQUxMX01BTikKLS1pbnN0YWxsLWRldiBpbnN0YWxsLWxpYjoKLWRpZmYgLS1naXQgYS9tYW4vbWFuNS9hdHRyLjUgYi9tYW4vbWFuNS9hdHRyLjUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTAyNzU3ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvYXR0ci41Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwxNTMgKzAsMCBAQAotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIG1hbnVhbCBwYWdlCi0tLlwiCi0tLlwiIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMiwgMjAwNyAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tLlwiIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwNCwgMjAwNyBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0tLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEFUVFIgNQotLS5TSCBOQU1FCi0tYXR0ciAtIEV4dGVuZGVkIGF0dHJpYnV0ZXMKLS0uU0ggREVTQ1JJUFRJT04KLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuYW1lOnZhbHVlIHBhaXJzIGFzc29jaWF0ZWQgcGVybWFuZW50bHkgd2l0aAotLWZpbGVzIGFuZCBkaXJlY3Rvcmllcywgc2ltaWxhciB0byB0aGUgZW52aXJvbm1lbnQgc3RyaW5ncyBhc3NvY2lhdGVkCi0td2l0aCBhIHByb2Nlc3MuCi0tQW4gYXR0cmlidXRlIG1heSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZC4KLS1JZiBpdCBpcyBkZWZpbmVkLCBpdHMgdmFsdWUgbWF5IGJlIGVtcHR5IG9yIG5vbi1lbXB0eS4KLS0uUFAKLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUKLS1hc3NvY2lhdGVkIHdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLVRoZXkgYXJlIG9mdGVuIHVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKLS10byBhIGZpbGVzeXN0ZW0gXC0gZm9yIGV4YW1wbGUsIGFkZGl0aW9uYWwgc2VjdXJpdHkgZmVhdHVyZXMgc3VjaCBhcwotLUFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcy4KLS0uUFAKLS1Vc2VycyB3aXRoIHNlYXJjaCBhY2Nlc3MgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBtYXkgcmV0cmlldmUgYSBsaXN0IG9mCi0tYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgZm9yIHRoYXQgZmlsZSBvciBkaXJlY3RvcnkuCi0tLlBQCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQgYXMgYXRvbWljIG9iamVjdHMuCi0tUmVhZGluZyByZXRyaWV2ZXMgdGhlIHdob2xlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBhbmQgc3RvcmVzIGl0IGluIGEgYnVmZmVyLgotLVdyaXRpbmcgcmVwbGFjZXMgYW55IHByZXZpb3VzIHZhbHVlIHdpdGggdGhlIG5ldyB2YWx1ZS4KLS0uUFAKLS1TcGFjZSBjb25zdW1lZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBjb3VudGVkIHRvd2FyZHMgdGhlIGRpc2sgcXVvdGFzCi0tb2YgdGhlIGZpbGUgb3duZXIgYW5kIGZpbGUgZ3JvdXAuCi0tLlBQCi0tQ3VycmVudGx5LCBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzIGlzIGltcGxlbWVudGVkIG9uIExpbnV4IGJ5IHRoZQotLWV4dDIsIGV4dDMsIGV4dDQsIFhGUywgSkZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtcy4KLS0uU0ggRVhURU5ERUQgQVRUUklCVVRFIE5BTUVTUEFDRVMKLS1BdHRyaWJ1dGUgbmFtZXMgYXJlIHplcm8tdGVybWluYXRlZCBzdHJpbmdzLgotLVRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBmdWxseSBxdWFsaWZpZWQKLS0uSVIgbmFtZXNwYWNlLmF0dHJpYnV0ZQotLWZvcm0sIGVnLgotLS5JUiB1c2VyLm1pbWVfdHlwZSAsCi0tLklSIHRydXN0ZWQubWQ1c3VtICwKLS0uSVIgc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MgLAotLW9yCi0tLklSIHNlY3VyaXR5LnNlbGludXggLgotLS5QUAotLVRoZSBuYW1lc3BhY2UgbWVjaGFuaXNtIGlzIHVzZWQgdG8gZGVmaW5lIGRpZmZlcmVudCBjbGFzc2VzIG9mIGV4dGVuZGVkCi0tYXR0cmlidXRlcy4KLS1UaGVzZSBkaWZmZXJlbnQgY2xhc3NlcyBleGlzdCBmb3Igc2V2ZXJhbCByZWFzb25zLCBlLmcuIHRoZSBwZXJtaXNzaW9ucwotLWFuZCBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIG1hbmlwdWxhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG9uZQotLW5hbWVzcGFjZSBtYXkgZGlmZmVyIHRvIGFub3RoZXIuCi0tLlBQCi0tQ3VycmVudGx5IHRoZQotLS5JUiBzZWN1cml0eSAsCi0tLklSIHN5c3RlbSAsCi0tLklSIHRydXN0ZWQgLAotLWFuZAotLS5JUiB1c2VyCi0tZXh0ZW5kZWQgYXR0cmlidXRlIGNsYXNzZXMgYXJlIGRlZmluZWQgYXMgZGVzY3JpYmVkIGJlbG93LiBBZGRpdGlvbmFsCi0tY2xhc3NlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KLS0uU1MgRXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcwotLVRoZSBzZWN1cml0eSBhdHRyaWJ1dGUgbmFtZXNwYWNlIGlzIHVzZWQgYnkga2VybmVsIHNlY3VyaXR5IG1vZHVsZXMsCi0tc3VjaCBhcyBTZWN1cml0eSBFbmhhbmNlZCBMaW51eC4gIAotLVJlYWQgYW5kIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBzZWN1cml0eSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUKLS1wb2xpY3kgaW1wbGVtZW50ZWQgZm9yIGVhY2ggc2VjdXJpdHkgYXR0cmlidXRlIGJ5IHRoZSBzZWN1cml0eSBtb2R1bGUuCi0tV2hlbiBubyBzZWN1cml0eSBtb2R1bGUgaXMgbG9hZGVkLCBhbGwgcHJvY2Vzc2VzIGhhdmUgcmVhZCBhY2Nlc3MgdG8KLS1leHRlbmRlZCBzZWN1cml0eSBhdHRyaWJ1dGVzLCBhbmQgd3JpdGUgYWNjZXNzIGlzIGxpbWl0ZWQgdG8gcHJvY2Vzc2VzCi0tdGhhdCBoYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkuCi0tLlNTIEV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzCi0tRXh0ZW5kZWQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCB0byBzdG9yZSBzeXN0ZW0KLS1vYmplY3RzIHN1Y2ggYXMgQWNjZXNzIENvbnRyb2wgTGlzdHMgYW5kIENhcGFiaWxpdGllcy4gIFJlYWQgYW5kIHdyaXRlCi0tYWNjZXNzIHBlcm1pc3Npb25zIHRvIHN5c3RlbSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUgcG9saWN5IGltcGxlbWVudGVkCi0tZm9yIGVhY2ggc3lzdGVtIGF0dHJpYnV0ZSBpbXBsZW1lbnRlZCBieSBmaWxlc3lzdGVtcyBpbiB0aGUga2VybmVsLgotLS5TUyBUcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1UcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHZpc2libGUgYW5kIGFjY2Vzc2libGUgb25seSB0byBwcm9jZXNzZXMgdGhhdAotLWhhdmUgdGhlIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSAodGhlIHN1cGVyIHVzZXIgdXN1YWxseSBoYXMgdGhpcwotLWNhcGFiaWxpdHkpLgotLUF0dHJpYnV0ZXMgaW4gdGhpcyBjbGFzcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgbWVjaGFuaXNtcyBpbiB1c2VyCi0tc3BhY2UgKGkuZS4sIG91dHNpZGUgdGhlIGtlcm5lbCkgd2hpY2gga2VlcCBpbmZvcm1hdGlvbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGVzCi0tdG8gd2hpY2ggb3JkaW5hcnkgcHJvY2Vzc2VzIHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MuCi0tLlNTIEV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcwotLUV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBtYXkgYmUgYXNzaWduZWQgdG8gZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZvcgotLXN0b3JpbmcgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbWltZSB0eXBlLAotLWNoYXJhY3RlciBzZXQgb3IgZW5jb2Rpbmcgb2YgYSBmaWxlLiBUaGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciB1c2VyCi0tYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBieSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMuCi0tLlBQCi0tVGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHJlZ3VsYXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZQotLWludGVycHJldGVkIGRpZmZlcmVudGx5IGZyb20gdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHNwZWNpYWwgZmlsZXMKLS1hbmQgc3ltYm9saWMgbGlua3MuIEZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGUgZmlsZQotLXBlcm1pc3Npb24gYml0cyBkZWZpbmUgYWNjZXNzIHRvIHRoZSBmaWxlJ3MgY29udGVudHMsIHdoaWxlIGZvciBkZXZpY2Ugc3BlY2lhbAotLWZpbGVzIHRoZXkgZGVmaW5lIGFjY2VzcyB0byB0aGUgZGV2aWNlIGRlc2NyaWJlZCBieSB0aGUgc3BlY2lhbCBmaWxlLgotLVRoZSBmaWxlIHBlcm1pc3Npb25zIG9mIHN5bWJvbGljIGxpbmtzIGFyZSBub3QgdXNlZCBpbiBhY2Nlc3MKLS1jaGVja3MuIFRoZXNlIGRpZmZlcmVuY2VzIHdvdWxkIGFsbG93IHVzZXJzIHRvIGNvbnN1bWUgZmlsZXN5c3RlbSByZXNvdXJjZXMgaW4KLS1hIHdheSBub3QgY29udHJvbGxhYmxlIGJ5IGRpc2sgcXVvdGFzIGZvciBncm91cCBvciB3b3JsZCB3cml0YWJsZSBzcGVjaWFsIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KLS0uUFAKLS1Gb3IgdGhpcyByZWFzb24sIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBhcmUgb25seSBhbGxvd2VkIGZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGFjY2VzcyB0byBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgaXMgcmVzdHJpY3RlZCB0byB0aGUKLS1vd25lciBhbmQgdG8gdXNlcnMgd2l0aCBhcHByb3ByaWF0ZSBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdG9yaWVzIHdpdGggdGhlCi0tc3RpY2t5IGJpdCBzZXQgKHNlZSB0aGUKLS0uQlIgY2htb2QgKDEpCi0tbWFudWFsIHBhZ2UgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFN0aWNreSBEaXJlY3RvcmllcykuCi0tLlNIIEZJTEVTWVNURU0gRElGRkVSRU5DRVMKLS1UaGUga2VybmVsIGFuZCB0aGUgZmlsZXN5c3RlbSBtYXkgcGxhY2UgbGltaXRzIG9uIHRoZSBtYXhpbXVtIG51bWJlcgotLWFuZCBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4KLS1Tb21lIGZpbGUgc3lzdGVtcywgc3VjaCBhcyBleHQyLzMgYW5kIHJlaXNlcmZzLCByZXF1aXJlIHRoZSBmaWxlc3lzdGVtCi0tdG8gYmUgbW91bnRlZCB3aXRoIHRoZQotLS5CIHVzZXJfeGF0dHIKLS1tb3VudCBvcHRpb24gaW4gb3JkZXIgZm9yIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyB0byBiZSB1c2VkLgotLS5QUAotLUluIHRoZSBjdXJyZW50IGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIGVhY2gKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbXVzdCBmaXQgb24gYSBzaW5nbGUgZmlsZXN5c3RlbSBibG9jayAoMTAyNCwgMjA0OAotLW9yIDQwOTYgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmxvY2sgc2l6ZSBzcGVjaWZpZWQgd2hlbiB0aGUKLS1maWxlc3lzdGVtIHdhcyBjcmVhdGVkKS4KLS0uUFAKLS1JbiB0aGUgWEZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucywgdGhlcmUgaXMgbm8KLS1wcmFjdGljYWwgbGltaXQgb24gdGhlIG51bWJlciBvciBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1hc3NvY2lhdGVkIHdpdGggYSBmaWxlLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCB0byBzdG9yZSBleHRlbmRlZAotLWF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBvbiBkaXNrIGFyZSBzY2FsYWJsZS4KLS0uUFAKLS1JbiB0aGUgSkZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24sIG5hbWVzIGNhbiBiZSB1cCB0byAyNTUgYnl0ZXMgYW5kCi0tdmFsdWVzIHVwIHRvIDY1LDUzNSBieXRlcy4KLS0uU0ggQURESVRJT05BTCBOT1RFUwotLVNpbmNlIHRoZSBmaWxlc3lzdGVtcyBvbiB3aGljaCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgbWlnaHQgYWxzbwotLWJlIHVzZWQgb24gYXJjaGl0ZWN0dXJlcyB3aXRoIGEgZGlmZmVyZW50IGJ5dGUgb3JkZXIgYW5kIG1hY2hpbmUgd29yZAotLXNpemUsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIHN0b3JlIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gYW4gYXJjaGl0ZWN0dXJlCi0taW5kZXBlbmRlbnQgZm9ybWF0LgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS0uU0ggU0VFIEFMU08KLS1nZXRmYXR0cigxKSwKLS1zZXRmYXR0cigxKS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NGM1YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2NiArMCwwIEBACi1Gcm9tIGI5NzI2MDBhMjZmM2E5MzBlNTNlMmZjZTI2MjUyNjZhNWQyOTgxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMjM6NTM6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSB0aGUgc2VjdGlvbiAyIG1hbiBwYWdlcwotCi1Db21taXQgOGQxMjYzYmNhOTU3MjJkNjZhNmY4ZTgzNDUwZjQ5ZDA5NTZlYTUzNCBmcm9tIHVwc3RyZWFtCi1odHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdC8KLQotVGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMgaGF2ZSBsb25nIHNpbmNlIGJlZW4gYWRkZWQgdG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlCi13aGljaCBkb2N1bWVudHMgYWxsIHN5c3RlbSBjYWxsczsgdGhleSB3ZXJlIGRpc2FibGVkIGluIGF0dHIgYnkgZGVmYXVsdCBzaW5jZQotSmFudWFyeSAyMDE0LiAgR2V0IHJpZCBvZiB0aGVtIGhlcmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotW01BOiBtb2RpZmllZCB0byBhcHBseSBkaXJlY3RseSB0byB2Mi40LjQ3XQotU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLS0tLQotIG1hbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KLSBtYW4vbWFuMi9NYWtlZmlsZSAgICAgIHwgIDM1IC0tLS0tLS0tLS0tCi0gbWFuL21hbjIvZ2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL2xpc3R4YXR0ci4yICAgfCAxNTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3NldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1OTEgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2dldHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvbGlzdHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9zZXR4YXR0ci4yCi0KLWRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUgYi9tYW4vTWFrZWZpbGUKLWluZGV4IDk1MzU0MjYuLjc1NWRhZWQgMTAwNjQ0Ci0tLS0gYS9tYW4vTWFrZWZpbGUKLSsrKyBiL21hbi9NYWtlZmlsZQotQEAgLTE5LDcgKzE5LDcgQEAKLSBUT1BESVIgPSAuLgotIGluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0gCi0tU1VCRElSUyA9IG1hbjEgbWFuMiBtYW4zIG1hbjUKLStTVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW4yL01ha2VmaWxlIGIvbWFuL21hbjIvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZDc3MzA5ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotLSMgQ29weXJpZ2h0IChDKSAyMDA5ICBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5Ac3VzZS5kZT4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLSMKLS0KLS1UT1BESVIgPSAuLi8uLgotLWluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0tCi0tTUFOX1NFQ1RJT04JPSAyCi0tCi0tTUFOX1BBR0VTCT0gJChzaGVsbCBlY2hvICouJChNQU5fU0VDVElPTikpCi0tTUFOX0RFU1QJPSAkKFBLR19NQU5fRElSKS9tYW4kKE1BTl9TRUNUSU9OKQotLUxTUkNGSUxFUwk9ICQoTUFOX1BBR0VTKQotLQotLWRlZmF1bHQgaW5zdGFsbCA6ICQoTUFOX1BBR0VTKQotLQotLWluY2x1ZGUgJChCVUlMRFJVTEVTKQotLQotLWluc3RhbGwtZGV2IDogZGVmYXVsdAotLQkkKElOU1RBTEwpIC1tIDc1NSAtZCAkKE1BTl9ERVNUKQotLQkkKElOU1RBTExfTUFOKQotLWluc3RhbGwtbGliOgotZGlmZiAtLWdpdCBhL21hbi9tYW4yL2dldHhhdHRyLjIgYi9tYW4vbWFuMi9nZXR4YXR0ci4yCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDQwNWFkODkuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW4yL2dldHhhdHRyLjIKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE0MyArMCwwIEBACi0tLlwiCi0tLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcwotLS5cIgotLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQotLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEdFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWdldHhhdHRyLCBsZ2V0eGF0dHIsIGZnZXR4YXR0ciBcLSByZXRyaWV2ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgInNzaXplX3QgZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBmZ2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBnZXR4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSB2YWx1ZQotLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQotLS5JIG5hbWUKLS1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgotLS5JIHBhdGgKLS1pbiB0aGUgZmlsZXN5c3RlbS4KLS1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUKLS0uSSB2YWx1ZQotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgZ2V0eGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaW5rIGl0c2VsZiBpcwotLWludGVycm9nYXRlZCwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5QUAotLS5CIGZnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBnZXR4YXR0ciAsCi0tb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKLS0uSSBmaWxlZGVzCi0tKGFzIHJldHVybmVkIGJ5Ci0tLkJSIG9wZW4gKDIpKQotLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUKLS0uSSBuYW1lCi0taXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKLS1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgotLS5QUAotLUFuIGVtcHR5IGJ1ZmZlciBvZgotLS5JIHNpemUKLS16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKLS1uYW1lZCBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIGEKLS1idWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aAotLXRoZSBleHRlbmRlZCBhdHRyaWJ1dGUuCi0tLlBQCi0tVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBhbGxvdyBndWVzc2luZyBvZiBpbml0aWFsIGJ1ZmZlcgotLXNpemVzLCBhbmQgdG8gZW5sYXJnZSBidWZmZXJzIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKLS10aGF0IHRoZSBidWZmZXIgcHJvdmlkZWQgd2FzIHRvbyBzbWFsbC4KLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHByb2Nlc3MgaGFzIG5vIGFjY2VzcyB0bwotLXRoaXMgYXR0cmlidXRlLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT0FUVFIuCi0tLlBQCi0tSWYgdGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGxpc3R4YXR0ciAoMiksCi0tLkJSIHJlbW92ZXhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvbGlzdHhhdHRyLjIgYi9tYW4vbWFuMi9saXN0eGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4YjQzNzFjLi4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9saXN0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTU4ICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggTElTVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWxpc3R4YXR0ciwgbGxpc3R4YXR0ciwgZmxpc3R4YXR0ciBcLSBsaXN0IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcwotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAic3NpemVfdCBsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKLS0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCi0tLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgZmxpc3R4YXR0ciAoaW50ICIgZmlsZWRlcyAiLAotLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZQotLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCi0tVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKLS13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKLS0uQlIgc3RhdCAoMikKLS1kYXRhKS4KLS1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCi0tLkJSIGF0dHIgKDUpLgotLS5QUAotLS5CIGxpc3R4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSBsaXN0Ci0tb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlIGxpc3QgaXMgdGhlIHNldCBvZiAoTlVMTC10ZXJtaW5hdGVkKSBuYW1lcywgb25lIGFmdGVyIHRoZSBvdGhlci4KLS1OYW1lcyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHdoaWNoIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QKLS1oYXZlIGFjY2VzcyBtYXkgYmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0LgotLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZSBuYW1lCi0tLkkgbGlzdAotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxsaXN0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgbGlzdHhhdHRyICwKLS1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGlzdCBvZiBuYW1lcyBvZgotLWV4dGVuZGVkIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rIGl0c2VsZiBpcyByZXRyaWV2ZWQsCi0tbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5JIGxpc3QKLS1pcyBhIGNhbGxlci1hbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUKLS0uSVIgc2l6ZSAuCi0tLlBQCi0tLkIgZmxpc3R4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBsaXN0eGF0dHIgLAotLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQSBzaW5nbGUgZXh0ZW5kZWQgYXR0cmlidXRlCi0tLkkgbmFtZQotLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCi0tVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlBQCi0tQW4gZW1wdHkgYnVmZmVyIG9mCi0tLkkgc2l6ZQotLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQotLWxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUKLS1zaXplIG9mIGEgYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSBsaXN0IG9mIG5hbWVzLgotLS5TSCBFWEFNUExFUwotLVRoZQotLS5JIGxpc3QKLS1vZiBuYW1lcyBpcyByZXR1cm5lZCBhcyBhbiB1bm9yZGVyZWQgYXJyYXkgb2YgTlVMTC10ZXJtaW5hdGVkIGNoYXJhY3RlcgotLXN0cmluZ3MgKGF0dHJpYnV0ZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGJ5IE5VTEwgY2hhcmFjdGVycyksIGxpa2UgdGhpczoKLS0uZmFtIEMKLS0uUlMKLS0ubmYKLS11c2VyLm5hbWUxXFwwc3lzdGVtLm5hbWUxXFwwdXNlci5uYW1lMlxcMAotLS5maQotLS5SRQotLS5mYW0gVAotLS5QCi0tRmlsZXN5c3RlbXMgbGlrZSBleHQyLCBleHQzIGFuZCBYRlMgd2hpY2ggaW1wbGVtZW50IFBPU0lYIEFDTHMgdXNpbmcKLS1leHRlbmRlZCBhdHRyaWJ1dGVzLCBtaWdodCByZXR1cm4gYQotLS5JIGxpc3QKLS1saWtlIHRoaXM6Ci0tLmZhbSBDCi0tLlJTCi0tLm5mCi0tc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3NcXDBzeXN0ZW0ucG9zaXhfYWNsX2RlZmF1bHRcXDAKLS0uZmkKLS0uUkUKLS0uZmFtIFQKLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBsaXN0LgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIHRoZQotLS5JIHNpemUKLS1vZiB0aGUKLS0uSSBsaXN0Ci0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBnZXR4YXR0ciAoMiksCi0tLkJSIHNldHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLWRpZmYgLS1naXQgYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yIGIvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyYzdkOTM0Li4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTEgKzAsMCBAQAotLS5cIgotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKLS0uXCIKLS0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKLS0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQotLS5cIgotLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0tLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0tLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLS5cIgotLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKLS0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55Ci0tLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKLS0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KLS0uXCIKLS0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLS5cIgotLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKLS0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLS5cIgotLS5USCBSRU1PVkVYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCi0tLlNIIE5BTUUKLS1yZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIgXC0gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZQotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAiaW50IHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKLS0uQkkgImludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOwotLS5CSSAiaW50IGZyZW1vdmV4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKLS0uSVIgbmFtZSA6XGMKLS12YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiByZW1vdmV4YXR0cgotLXJlbW92ZXMgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5Ci0tLkkgbmFtZQotLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCi0tLkkgcGF0aAotLWluIHRoZSBmaWxlc3lzdGVtLgotLS5QUAotLS5CIGxyZW1vdmV4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgcmVtb3ZleGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKLS1yZW1vdmVkIGZyb20gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCi0tLlBQCi0tLkIgZnJlbW92ZXhhdHRyCi0taXMgaWRlbnRpY2FsIHRvCi0tLkJSIHJlbW92ZXhhdHRyICwKLS1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQotLS5JIGZpbGVkZXMKLS0oYXMgcmV0dXJuZWQgYnkKLS0uQlIgb3BlbiAoMikpCi0taW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUKLS0uSSBuYW1lCi0taW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlNIIFJFVFVSTiBWQUxVRQotLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9BVFRSLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvc2V0eGF0dHIuMiBiL21hbi9tYW4yL3NldHhhdHRyLjIKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYjIwZGM5Zi4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvc2V0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTQzICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggU0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgotLS5TSCBOQU1FCi0tc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyIFwtIHNldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgImludCBzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGxzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGZzZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBzZXR4YXR0cgotLXNldHMgdGhlCi0tLkkgdmFsdWUKLS1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKLS0uSSBuYW1lCi0tYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tbXVzdCBiZSBzcGVjaWZpZWQuCi0tLlBQCi0tLkIgbHNldHhhdHRyCi0taXMgaWRlbnRpY2FsIHRvIAotLS5CUiBzZXR4YXR0ciAsCi0tZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcwotLXNldCBvbiB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KLS0uUFAKLS0uQiBmc2V0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgc2V0eGF0dHIgLAotLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgotLVRoZQotLS5JIG5hbWUKLS1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUKLS0uSSB2YWx1ZQotLW9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCi0tYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KLS0uUFAKLS1UaGUKLS0uSSBmbGFncwotLXBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZWZpbmUgdGhlIHNlbWFudGljcyBvZiB0aGUgb3BlcmF0aW9uLgotLVhBVFRSX0NSRUFURSBzcGVjaWZpZXMgYSBwdXJlIGNyZWF0ZSwgd2hpY2ggZmFpbHMgaWYgdGhlIG5hbWVkCi0tYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LgotLVhBVFRSX1JFUExBQ0Ugc3BlY2lmaWVzIGEgcHVyZSByZXBsYWNlIG9wZXJhdGlvbiwgd2hpY2ggZmFpbHMgaWYgdGhlCi0tbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCi0tQnkgZGVmYXVsdCAobm8gZmxhZ3MpLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZgotLW5lZWQgYmUsIG9yIHdpbGwgc2ltcGx5IHJlcGxhY2UgdGhlIHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLgotLS5TSCBSRVRVUk4gVkFMVUUKLS1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIFhBVFRSX0NSRUFURSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVFWElTVC4KLS1JZiBYQVRUUl9SRVBMQUNFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PQVRUUi4KLS0uUFAKLS1JZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgcmVtYWluaW5nIHRvIHN0b3JlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gZWl0aGVyIEVOT1NQQywgb3IgRURRVU9UIGlmIHF1b3RhIGVuZm9yY2VtZW50IHdhcyB0aGUgY2F1c2UuCi0tLlBQCi0tSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT1RTVVAuCi0tLlBQCi0tVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKLS0uQlIgc3RhdCAoMikKLS1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCi0tLlNIIEFVVEhPUlMKLS1BbmRyZWFzIEdydWVuYmFjaGVyLAotLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgotLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAotLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgotLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCi0tLlNIIFNFRSBBTFNPCi0tLkJSIGdldGZhdHRyICgxKSwKLS0uQlIgc2V0ZmF0dHIgKDEpLAotLS5CUiBvcGVuICgyKSwKLS0uQlIgc3RhdCAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9yZWxhdGl2ZS1saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MmJmMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi11c2UgcmVsYXRpdmUgcGF0aCBpbiBzeW1ib2xpYyBsaW5rcywgb3IgaXQgZmFpbHMgaW4gc3RhZ2luZwotc2VkIGV4cHJlc3Npb24gZnJvbSB1ZGV2Ci0KLTcvMjkvMjAxMCAtIGNyZWF0ZWQgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgaW5jbHVkZS5vcmlnL2J1aWxkbWFjcm9zIGluY2x1ZGUvYnVpbGRtYWNyb3MKLS0tLSBpbmNsdWRlLm9yaWcvYnVpbGRtYWNyb3MJMjAxMC0wNy0yOSAxNzozOTo0OC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBpbmNsdWRlL2J1aWxkbWFjcm9zCTIwMTAtMDctMjkgMTg6MjA6MzQuMDAwMDAwMDAwICswODAwCi1AQCAtODgsOSArODgsMTEgQEAKLSAJLi4vJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfTElCX0RJUik7IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLS0JLi4vJChJTlNUQUxMKSAtUyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5zbyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLnNvOyBcCi0rCXJlbF9saWJfcHJlZml4PSQkKGVjaG8gJChQS0dfTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmE7IFwKLSsJLi4vJChJTlNUQUxMKSAtUyAkJHJlbF9saWJfcHJlZml4JChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0rCXJlbF9kZXZsaWJfcHJlZml4PSQkKGVjaG8gJChQS0dfREVWTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfZGV2bGliX3ByZWZpeCQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuc28gJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5zbzsgXAotIAlmaQotIGVsc2UKLSBJTlNUQUxMX0xUTElCX0RFViA9ICQoSU5TVEFMTF9MVExJQl9TVEFUSUMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNjg2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0IC1rIHRlc3RzIHJvb3QtdGVzdHMgfHNlZCBcCi0gLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gb2skfFBBU1M6IFwxfCcgXAotIC1lICdzfF5cWy4qXF0gXCguKlwpIC0tIGZhaWxlZHxGQUlMOiBcMXwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWFmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCitIT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImYzNzZhZTMyNjZjYzcwMDE3YWE4MzNjMzliNzZmOTg0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyM2MxNzk5OGUzNGI5MzdjZTU3YmIxYjExMWNkODE3YmMzNjkzMDllOWE4MDQ3YzBiY2YwNmVhZDRhM2VjOTIiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIGNvbXBhdGRpcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCisJZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KKworfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCisjIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcworUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDJjNGNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCi1IT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwMTM5MzMzYjI1YzRkNTRhZDQwMzIzYjcwMWJlMTMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0OGZlMzc4ZTczMTA2MmY0NzljNWY4ODAyZmZhOWQzYzQwYTI3NWExOWU2ZTBmNmY2Y2M0YjkwZmExMmIyZjUiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIGNvbXBhdGRpcgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCi0JZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KLQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjcyLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTY0ZDBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kbC5iaW50cmF5LmNvbS9ib29zdG9yZy9yZWxlYXNlLyR7UFZ9L3NvdXJjZS8ke0JPT1NUX1B9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGNkZjliNWMyZGMwMWZiMmI3YjczM2Q1YWYzMGU1NTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDczYThkYTAxZThiZjhjN2VkYTQwYjRjODQ5MTUwNzFhOGM4YTBkZjRhNjczNDUzN2RkZGU0YTg1ODA1MjRlZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTA5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzIuMC5pbmMKQEAgLTAsMCArMSwyMSBAQAorIyBUaGUgQm9vc3Qgd2ViIHNpdGUgcHJvdmlkZXMgZnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlCisjIEMrKyBzb3VyY2UgbGlicmFyaWVzLiBUaGUgZW1waGFzaXMgaXMgb24gbGlicmFyaWVzIHdoaWNoCisjIHdvcmsgd2VsbCB3aXRoIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeS4gVGhlIGxpYnJhcmllcyBhcmUKKyMgaW50ZW5kZWQgdG8gYmUgd2lkZWx5IHVzZWZ1bCwgYW5kIGFyZSBpbiByZWd1bGFyIHVzZSBieQorIyB0aG91c2FuZHMgb2YgcHJvZ3JhbW1lcnMgYWNyb3NzIGEgYnJvYWQgc3BlY3RydW0gb2YgYXBwbGljYXRpb25zLgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvIgorTElDRU5TRSA9ICJCU0wtMS4wICYgTUlUICYgUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCisKK0JPT1NUX1ZFUiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpKX0iCitCT09TVF9NQUogPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKVswOjJdKX0iCitCT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKKworU1JDX1VSSSA9ICJodHRwczovL2RsLmJpbnRyYXkuY29tL2Jvb3N0b3JnL3JlbGVhc2UvJHtQVn0vc291cmNlLyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjQwOTQzZDJhMmNiOGNlMDhkNDJiYzQ4YjBmODRmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWM5YjI3NGJjNDUxY2Y5MWE5YmExZGQyYzdmZGNhZjVkNjBiMWIzYWE4M2YyYzlmYTE0MzQxN2NjNjYwNzIyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IGUxNWRjZTQuLjhlYjk0OTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCkBAIC0yMDIsNiArMjAyLDExIEBACiAJCWZpCiAJZG9uZQogCisgICAgICAgICMgQ21ha2UgZmlsZXMgcmVmZXJlbmNlIGZ1bGwgcGF0aHMgdG8gaW1hZ2UKKyAgICAgICAgZmluZCAke0R9JHtsaWJkaXJ9L2NtYWtlIC10eXBlIGYgfCBcCisgICAgICAgICAgICAgZ3JlcCAnY21ha2UkJyB8IFwKKyAgICAgICAgICAgICB4YXJncyAtbiAxIHNlZCAtZSAncywke0R9JHtsaWJkaXJ9L2NtYWtlLCR7bGliZGlyfS9jbWFrZSwnIC1pCisKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5ZTBkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI3YmFkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDA5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtcmV2ZXJ0LWNlYXNlLWRlcGVuZGVuY2Utb24tcmFuZ2UucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA0MzZlMWRiZTZmY2QzMTUyM2QyNjFkMThhZDAxMTM5MmYxZDZmYmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xpdmVyIEtvd2Fsa2UgPG9saXZlci5rb3dhbGtlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMSBEZWMgMjAxOSAyMDo0MDoyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIkNlYXNlIGRlcGVuZGVuY2Ugb24gUmFuZ2UiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgMGM1NTZiYjU5MjQxZTY4MmJiY2QzZjU3MjgxNTE0OWM1YTliMTdkYi4KKworc2VlICM0NCAoT25lIHRlc3QgZmFpbHMgdG8gY29tcGlsZSBhZnRlciBib29zdG9yZy9jb3JvdXRpbmUgc3VibW9kdWxlIHVwZGF0ZWQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ib29zdG9yZy9jb3JvdXRpbmUvY29tbWl0LzljNzNiMmY3YzE3NTlhOTUwOGJhODc4MGIzOGRjMTVmMDdmMWE0NDddCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBHZWlzc2xlciA8Z2Vpc3NvbmF0b3JAZ21haWwuY29tPgorLS0tCisgYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcCB8IDEyICsrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ib29zdC9jb3JvdXRpbmUvYXN5bW1ldHJpY19jb3JvdXRpbmUuaHBwIGIvYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcAoraW5kZXggZWE5Njk4MS4uNjQwODk2ZiAxMDA2NDQKKy0tLSBhL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKKysrKyBiL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKK0BAIC0xNCw2ICsxNCw3IEBACisgI2luY2x1ZGUgPGJvb3N0L2Fzc2VydC5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L2NvbmZpZy5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L21vdmUvbW92ZS5ocHA+CisrI2luY2x1ZGUgPGJvb3N0L3JhbmdlLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdXRpbGl0eS9leHBsaWNpdF9vcGVyYXRvcl9ib29sLmhwcD4KKworQEAgLTIzNTQsMTkgKzIzNTUsMTIgQEAgZW5kKCBwdXNoX2Nvcm91dGluZTwgUiA+ICYgYykKKworIH0KKworLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgQm9vc3QuUmFuZ2UgdHJhaXRzIHRvIGJyZWFrIGRlcGVuZGVuY3kgb24gaXQKKy10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yOworLQorLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIEVuYWJsZXI+Cistc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yOworLQorIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4gPgorIHsgdHlwZWRlZiB0eXBlbmFtZSBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID46Oml0ZXJhdG9yIHR5cGU7IH07CisKKyB0ZW1wbGF0ZTwgdHlwZW5hbWUgUiA+Cistc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8IGNvcm91dGluZXM6OnB1bGxfY29yb3V0aW5lPCBSID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdWxsX2Nvcm91dGluZTwgUiA+ID4KKyB7IHR5cGVkZWYgdHlwZW5hbWUgY29yb3V0aW5lczo6cHVsbF9jb3JvdXRpbmU8IFIgPjo6aXRlcmF0b3IgdHlwZTsgfTsKKworIH0KKy0tCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDhlMDhlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJlNWQ5ZTE0MTljNDM2M2Y0YjMyMDM3YTJkM2I3ZmZhIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2JlMjg4ZjZmZDViN2I1ZTQwMmVmM2IzNmE0NjFhMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQ1ZjY5NTY4MjFhNTQ4YmY0YjQ0ZjA2N2E1MzBjZTk0NDVjYzgwOTRmZDNlN2UzZmM3ODU0ODE1ODU4NTg2YyIKLQotQ1ZFX1BST0RVQ1QgPSAiY3VybCBsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIGxpYmlkbiBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi0KLSMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKLVBBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCi1QQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKLVBBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCi1QQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgotUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCi1QQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbdmVyYm9zZV0gPSAiLS1lbmFibGUtdmVyYm9zZSwtLWRpc2FibGUtdmVyYm9zZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1saWJjdXJsLW9wdGlvbiBcCi0gICAgLS1kaXNhYmxlLW50bG0td2IgXAotICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKLSAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAotICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCi0gICAgLS13aXRob3V0LWxpYnBzbCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCi0Jc2VkIC1pIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKLX0KLQotUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKLQotRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgotCi1pbmhlcml0IG11bHRpbGliX3NjcmlwdAotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cmwtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1NGU4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjkuMS5iYgpAQCAtMCwwICsxLDgwIEBACitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTlmYjM1ODY3MzE0ZmUzMWM2YTQ5NzdlZjdkZDUzMSIKKworU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImVjNWZjMjYzZjg5OGEzZGZlZjA4ZTgwNWYxZWNjYTQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmZjVlNWJkNTA3YWRmNmFhODhmZjRiYmFmZDRjN2FmNDY0ODY3ZmZiNjg4YmU5M2I5OTMwNzE3YTU2YzRkZTgiCisKK0NWRV9QUk9EVUNUID0gImN1cmwgbGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBsaWJpZG4gcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorCisjICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCitQQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzLCwsdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKK1BBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCitQQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCitQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgorUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKK1BBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCitQQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciwsLCxhcmVzIgorUEFDS0FHRUNPTkZJR1t2ZXJib3NlXSA9ICItLWVuYWJsZS12ZXJib3NlLC0tZGlzYWJsZS12ZXJib3NlIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWxpYmN1cmwtb3B0aW9uIFwKKyAgICAtLWRpc2FibGUtbnRsbS13YiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vY3VybC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDUxYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi8wMDAxLWNsb2NrLURvLW5vdC1kZWZpbmUtb3duLXRpbWVzcGVjLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOTZiMzAzY2FmNzBhNzYzNTk1M2MzNmU1YmZiOWFkNmU3NWNiNzYzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDE0OjEyOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNsb2NrOiBEbyBub3QgZGVmaW5lIG93biB0aW1lc3BlYworCit0aW1lc3BlYyBpcyBwcm92aWRlZCBieSBsaWJjIGFuZCBpdHMgYmVzdCBsZWZ0IHRvIGxpYmMKK29zX2dldHRpbWUgdGFrZXMgYSBkYl90aW1lc3BlYyBhbmQgcGFzc2VkIGl0cyBhZGRyZXNzIHRvIGNsb2NrX2dldHRpbWUKK3doaWNoIGFzc3VtZXMgdGhhdCBkYl90aW1lc3BlYyBhbmQgdGltZXNwZWMgYXJlIHNhbWUgYnV0IGFjdHVhbGx5CitpdHMgMTItYnl0ZXMgaGVyZSBhbmQgbGliYyBoYXMgMTYtYnl0ZXMKKworVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZXNwZWNpYWxseSB3aXRoIDY0Yml0IHRpbWVfdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvZGJpbmMvY2xvY2suaCB8IDE3ICstLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxNiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2RiaW5jL2Nsb2NrLmgKKysrKyBiL3NyYy9kYmluYy9jbG9jay5oCitAQCAtNDQsMjIgKzQ0LDggQEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKy0vKgorLSAqIFRoaXMgZGVjbGFyYXRpb24gaXMgUE9TSVgtY29tcGF0aWJsZS4gIEJlY2F1c2UgdGhlcmUgYXJlIGxvdHMgb2YgZGlmZmVyZW50CistICogdGltZS5oIGluY2x1ZGUgZmlsZSBwYXR0ZXJucyBvdXQgdGhlcmUsIGl0J3MgZWFzaWVyIHRvIGRlY2xhcmUgb3VyIG93biBuYW1lCistICogaW4gYWxsIGNhc2VzIHRoYW4gdG8gdHJ5IGFuZCBkaXNjb3ZlciBpZiBhIHN5c3RlbSBoYXMgYSBzdHJ1Y3QgdGltZXNwZWMuCistICogRm9yIHRoZSBzYW1lIHJlYXNvbiwgYW5kIGJlY2F1c2Ugd2UnZCBoYXZlIHRvICNpbmNsdWRlIDxzeXMvdGltZS5oPiBpbiBkYi5oLAorLSAqIHdlIGRvbid0IGV4cG9ydCBhbnkgdGltZXNwZWMgc3RydWN0dXJlcyBpbiB0aGUgREIgQVBJLCBldmVuIGluIHBsYWNlcyB3aGVyZQorLSAqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UsIGxpa2UgdGhlIHJlcGxpY2F0aW9uIHN0YXRpc3RpY3MgaW5mb3JtYXRpb24uCistICovCistdHlwZWRlZiBzdHJ1Y3QgeworLQl0aW1lX3QJdHZfc2VjOwkJCQkvKiBzZWNvbmRzICovCistI2lmZGVmIEhBVkVfTUlYRURfU0laRV9BRERSRVNTSU5HCistCWludDMyX3QgdHZfbnNlYzsKKy0jZWxzZQorLQlsb25nCXR2X25zZWM7CQkJLyogbmFub3NlY29uZHMgKi8KKy0jZW5kaWYKKy19IGRiX3RpbWVzcGVjOworKyNpbmNsdWRlIDx0aW1lLmg+CisrI2RlZmluZSBkYl90aW1lc3BlYyBzdHJ1Y3QgdGltZXNwZWMKKyAKKyAvKiBPcGVyYXRpb25zIG9uIHRpbWVzcGVjcyAqLworICN1bmRlZgl0aW1lc3BlY2NsZWFyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCmluZGV4IDc2MWQ4MGMuLjNhMDkyM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIHNhbWUgc3lzdGVtIGF0IHRoZSBzYW1lIHRpbWUgaWYgcmVhbGx5IG5lY2Vzc2FyeS4KIFNFQ1RJT04gPSAibGlicyIKIFNVTU1BUlkgPSAiQmVya2VsZXkgRGF0YWJhc2UgdjUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvZGF0YWJhc2UvZGF0YWJhc2UtdGVjaG5vbG9naWVzL2JlcmtlbGV5ZGIvb3ZlcnZpZXcvaW5kZXguaHRtbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vZGF0YWJhc2UvdGVjaG5vbG9naWVzL3JlbGF0ZWQvYmVya2VsZXlkYi5odG1sIgogTElDRU5TRSA9ICJTbGVlcHljYXQiCiBSQ09ORkxJQ1RTXyR7UE59ID0gImRiMyIKIApAQCAtMjAsMTIgKzIwLDEzIEBACiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgogU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdG9taWMtUmVuYW1lLWxvY2FsLV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UtdG8tYXZvLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL3NlcXVlbmNlLXR5cGUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYmMtY29tcGF0aWJpbGl0eS1ieS1yZW5hbWluZy1hdG9taWNfaW5pdC1BUEkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY2xvY2stRG8tbm90LWRlZmluZS1vd24tdGltZXNwZWMucGF0Y2ggXAogICAgICAgICAgICAiCiAjIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiBvZmZpY2lhbCBsYXRlc3QgNi54IHZlcnNpb25zOwogIyBsZXQncyB0cmFjayB3aGF0IGRlYmlhbiBpcyB1c2luZy4KQEAgLTYwLDcgKzYxLDkgQEAKIAogRVhUUkFfT0VDT05GID0gIiR7REI1X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCBTVFJJUD10cnVlIgogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1t2ZXJpZnldID0gIi0tZW5hYmxlLXZlcmlmeSwgLS1kaXNhYmxlLXZlcmlmeSIKK1BBQ0tBR0VDT05GSUdbZGJtXSA9ICItLWVuYWJsZS1kYm0sLS1kaXNhYmxlLWRibSwiCiAKIEVYVFJBX09FTUFLRSArPSAiTElCVE9PTD0nLi8ke0hPU1RfU1lTfS1saWJ0b29sJyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjlkMDFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTkwNzE3VDIxMzQ0NFovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImNhNTdjYzY2MjEyNzUzNDZkN2Q1MTZhYjBiNWZhMWY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYzdkZTNhZmM2ZGYxY2Y2ZDAwYWY5OTM4ZWZhYzdlZThmNzM5MjI4ZTU0OGU1MTJkZGMxODZiNmE3YmUyMjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDRjNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE5MTIxMlQxNDU2MTJaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NTYzMzQxNjY4MGJmZDI0OWI3Y2IwN2Q5NDEzNzA0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjgyNjY4NWQ5YzU2YWJmYTg3M2U4NGNkMzkyNTM5Y2QzNjNjYjBiYTA0YTA5ZDIxMTg3Mzc3ZTFiNzY0MDkxIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlM2UxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RpZmZvc2NvcGUvZGlmZm9zY29wZV8xMzYuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJpbi1kZXB0aCBjb21wYXJpc29uIG9mIGZpbGVzLCBhcmNoaXZlcywgYW5kIGRpcmVjdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kaWZmb3Njb3BlLm9yZy8iCitMSUNFTlNFID0gIkdQTC0zLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BZUElfUEFDS0FHRSA9ICJkaWZmb3Njb3BlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImM4NGQ4ZDMwOGE0MDE3NmJhMmY1ZGM0YWJkYmY2ZjczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNjQ4NmQ2ZWI2ZTA0NDViYTIxZmVlMmU4YmRkM2EzNjZjZTc4NmJmYWM5OGUwMGU1YTk1MDM4Yjc4MTVmMTUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiaW51dGlscyB2aW0gc3F1YXNoZnMtdG9vbHMgcHl0aG9uMy1saWJhcmNoaXZlLWMgcHl0aG9uMy1tYWdpYyIKKworIyBEZXBlbmRlbmNpZXMgZG9uJ3QgYnVpbGQgZm9yIG11c2wKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3MTI3MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJDb252ZXJ0IHRleHQgZmlsZSBsaW5lIGVuZGluZ3MgYmV0d2VlbiBDUkxGIGFuZCBMRiIKLURFU0NSSVBUSU9OID0gIlRoZSBEb3MydW5peCBwYWNrYWdlIGluY2x1ZGVzIHV0aWxpdGllcyBkb3MydW5peCBhbmQgXAotdW5peDJkb3MgdG8gY29udmVydCBwbGFpbiB0ZXh0IGZpbGVzIGluIERPUyBvciBNYWMgZm9ybWF0IHRvIFVuaXggXAotZm9ybWF0IGFuZCB2aWNlIHZlcnNhLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXRlcmxhbi5ob21lLnhzNGFsbC5ubC9kb3MydW5peC5odG1sIgotU0VDVElPTiA9ICJzdXBwb3J0IgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0xYjc4ZmNhNzg0ZGIyNGY0YTQwZTMwYjMwMDc4N2YzZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9kb3MydW5peC9kb3MydW5peCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImRvczJ1bml4LSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi0jIFJlbGVhc2UgNy40LjAKLVNSQ1JFViA9ICIxMTgyNTMzYmRlM2MxZmU2NWJlMmVhZDQ2NWU4NzY3MWZhYTJjMDI3IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgotCi1pbmhlcml0IGdldHRleHQgcGVybG5hdGl2ZQotCi0jIFRoZSBkb3MydW5peCBOTFMgcmVsaWVzIG9uIHBvNGEtbmF0aXZlLCB3aGlsZSBwbzRhIHJlY2lwZSBpcwotIyBwcm92aWRlZCBieSBtZXRhLXBlcmwgbGF5ZXIsIHNvIG1ha2UgaXQgb3B0aW9uYWwgaGVyZSwgeW91Ci0jIG5lZWQgaGF2ZSBtZXRhLXBlcmwgaW4gYmJsYXllcnMuY29uZiBiZWZvcmUgZW5hYmxpbmcgbmxzIGluCi0jIFBBQ0tBR0VDT05GSUcuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tubHNdID0gIkVOQUJMRV9OTFM9MSxFTkFCTEVfTkxTPSxwbzRhLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gTERGTEFHU19VU0VSPScke0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiRU5BQkxFX05MUz0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSR7YmFzZV9wcmVmaXh9IiBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MjMyODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCitERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKK3VuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKK2Zvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKK1NFQ1RJT04gPSAic3VwcG9ydCIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MGM5NzdiMThmMGEzODRkMDM1OTdhNTE3ZDdkMDNlMzIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJkb3MydW5peC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjA0OTBmMDcyM2IxYTA4NTFiMTczNDNmNjE2NDkxNWYzNDc0YjUxOTciCisKK1MgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCisKK2luaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCisKKyMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCisjIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKKyMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KKyMgUEFDS0FHRUNPTkZJRy4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZGJlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudDJfMi4yLjguYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCitTRUNUSU9OID0gImxpYnMiCitIT01FUEFHRSA9ICJodHRwczovL2FiaXdvcmQuZ2l0aHViLmlvL2VuY2hhbnQvIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BYmlXb3JkL2VuY2hhbnQvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImM3YjlkNmEzOTJlY2I4NzU4ZTQ5OWY3ODNlOGRjODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3YjVlMjg1M2YwZGQwYjFhYWZlYTJmOWUwNzE5NDFhZmZlZWMzYTc2ZGY4ZTNmNmQ2N2E3MThjODkyOTM1NTUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQWJpV29yZC9lbmNoYW50L3JlbGVhc2VzIgorCitTID0gIiR7V09SS0RJUn0vZW5jaGFudC0ke1BWfSIKKworRVhUUkFfT0VNQUtFID0gInBrZ2RhdGFkaXI9JHtkYXRhZGlyfS9lbmNoYW50LTIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhc3BlbGwiCitQQUNLQUdFQ09ORklHW2FzcGVsbF0gID0gIi0td2l0aC1hc3BlbGwsLS13aXRob3V0LWFzcGVsbCxhc3BlbGwsYXNwZWxsIgorUEFDS0FHRUNPTkZJR1todW5zcGVsbF0gID0gIi0td2l0aC1odW5zcGVsbCwtLXdpdGhvdXQtaHVuc3BlbGwsaHVuc3BlbGwsaHVuc3BlbGwiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZW5jaGFudC0yIFwKKyAgICAke2xpYmRpcn0vZW5jaGFudC0yIFwKKyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2VuY2hhbnQtMi8qLmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGViMmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFiaXNvdXJjZS5jb20vcHJvamVjdHMvZW5jaGFudC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5hYmlzb3VyY2UuY29tL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1FbmNoYW50IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kZmNiYWJmOTEzMWRjOWE5NWZlYmVmNjc1M2EyOTU4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5jaGFudC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PThkODgxY2FhMWQzNzUyMzU2N2UxZDhmNzI2Njc1YTE4IgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LyR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGUxMTAxMWFmZjgwMWRjNjEwNDI4MjgwNDFmYjU5YzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmZhYzllN2JlN2U5NDI0YjJjNTU3MGQ4YWZmZTU2OGRiMzlmNzU3MmMxMGVkNDhkNGUxM2NkZGYwM2Y3MDk3ZiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImFzcGVsbCIKLVBBQ0tBR0VDT05GSUdbYXNwZWxsXSAgPSAiIC0td2l0aC1hc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWFzcGVsbCwgIC0tZGlzYWJsZS1hc3BlbGwsICBhc3BlbGwsICBhc3BlbGwiCi1QQUNLQUdFQ09ORklHW2lzcGVsbF0gID0gIiAtLXdpdGgtaXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1pc3BlbGwsICAtLWRpc2FibGUtaXNwZWxsLCAgaXNwZWxsLCAgaXNwZWxsIgotUEFDS0FHRUNPTkZJR1t1c3BlbGxdICA9ICIgLS13aXRoLXVzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAgLS1lbmFibGUtdXNwZWxsLCAgLS1kaXNhYmxlLXVzcGVsbCwgIHVzcGVsbCwgIHVzcGVsbCIKLVBBQ0tBR0VDT05GSUdbaHNwZWxsXSAgPSAiIC0td2l0aC1oc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWhzcGVsbCwgIC0tZGlzYWJsZS1oc3BlbGwsICBoc3BlbGwsICBoc3BlbGwiCi1QQUNLQUdFQ09ORklHW215c3BlbGxdID0gIi0td2l0aC1teXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0tZW5hYmxlLW15c3BlbGwsIC0tZGlzYWJsZS1teXNwZWxsLCBteXNwZWxsLCBteXNwZWxsIgotCi1FWFRSQV9PRUNPTkYgPSAiYnJfY3ZfYmlucmVsb2M9bm8iCi0KLWV4cG9ydCBDWFhGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gLWxzdGRjKysgIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9Lyoke1NPTElCU30gJHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59Lyp7U09MSUJTREVWfSAke2xpYmRpcn0vJHtCUE59LyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5hIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczODg4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pY29kZSBCaWRpcmVjdGlvbmFsIEFsZ29yaXRobSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMwMjBiMGY1MTM2ZGQwMTJlZTAwZjFlMTEyMmY2YWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWFiNWYyMWU5ZjJmYzU3YjRiNDBmOGVhOGYxNGRiYTc4YTVjYzQ2ZDljZjk0YmM1ZTAwYTU4ZTY4ODZhOTM1ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotCi1pbmhlcml0IG1lc29uIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1DVkVfUFJPRFVDVCA9ICJnbnVfZnJpYmlkaSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTIxN2FiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJGcmVlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmljb2RlIEJpZGlyZWN0aW9uYWwgQWxnb3JpdGhtIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjFiNzY3YzI1OWMzY2Q4ZTBjODQ5Njk3MGY2M2MyMmRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1ZTQ3ZWE5MDI2ZmI2MGRhMTk0NGRhOTg4OGI0ZTBhMTg4NTRhMGUyNDEwYmJmZTdhZDkwYTA1NGQzNmUwYzciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBsaWJfcGFja2FnZSBwa2djb25maWcKKworQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYgppbmRleCAxNmVjYzUwLi41Y2I3YzU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xOC4xLmJiCkBAIC0xNiwxMyArMTYsMTUgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAogCiAjIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWxpYmdkYm0tY29tcGF0IC0td2l0aG91dC1yZWFkbGluZSIKIAogIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorQ0ZMQUdTICs9ICItZmNvbW1vbiIKKwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKICAgICAjIHRoZXNlIGhlYWRlcnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDc5MjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGFlMWE0YzM3NDE3YTNiYmJmOGVhMWNhYjE5ODk4MmIwY2FkNDdlMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBBdWcgMjAxNiAxNzowODoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBjb25maXVyZS5hYzogQmVsaWV2ZSB0aGUgY2ZsYWdzIGZyb20gZW52aXJvbm1lbnQKLQotSW4gc29tZSB0b29sY2hhaW5zIGUuZy4gT3BlbkVtYmVkZGVkIC1tYXJjaCBvcHRpb25zCi1hcmUgcGFzc2VkIG9uIGNvbXBpbGVyIGNtZGxpbmUsIGl0IGRvZXMgbm90IHVzZQotdGhlIGV4cGVjdGVkIHRhcmdldCB0cmlwbGV0cyB0byBtYWtlIHRoZXNlIGRlY2lzaW9uCi1kdXJpbmcgY29uZmlndXJlLgotCi1TZWNvbmRseSwgZG9udCBzZXQgYXJtdjQgZm9yIG1hcmNoIHdoZW4gbm8gc2VsZWN0aW9uCi1pcyBtYWRlLCBzaW5jZSBpdCBpcyBwYXNzZWQgZnJvbSBjbWRsaW5lCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KLQotIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKLUBAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgotICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCi0gCi0tICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgotLSAgICAjIGFsb25lLgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKi0qLSplYWJpKQotLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKLS0gICAgICAqLSotKmVhYmloZikKLS0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OwotLSAgICBlc2FjCi0tCi0gICAgICMgRklYTUU6IFdlIG1ha2UgbWFuZGF0b3J5IGNvbXBpbGVyIG9wdGlvbnMgb3B0aW9uYWwgaGVyZS4gIFdlIHNob3VsZAotICAgICAjIGVpdGhlciBlbmZvcmNlIHRoZW0sIG9yIG9yZ2FuaXNlIHRvIHN0cmlwIHBhdGhzIGFzIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICMgb3B0aW9ucyBmYWlsLgotQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCi0gCTs7Ci0gICAgICAgKikKLSAJcGF0aD0iYXJtIgotLQlnY2NfY2ZsYWdzX2FyY2g9Ii1tYXJjaD1hcm12NCIKLS0JR01QX0RFRklORV9SQVcoWyJkZWZpbmUoPE5PVEhVTUI+LDEpIl0pCi0gCTs7Ci0gICAgIGVzYWMKLSAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNTU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdtcC02LjEuMi9sb25nbG9uZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvbG9uZ2xvbmcuaAotKysrIGdtcC02LjEuMi9sb25nbG9uZy5oCi1AQCAtMTAzNiw4ICsxMDM2LDEwIEBAIGV4dGVybiBVV3R5cGUgX19NUE4odWRpdl9xcm5uZCkgKFVXdHlwZQotICAgIGNvdW50IGlzIG9ubHkgYW4gaW50LiAqLwotICNkZWZpbmUgY291bnRfdHJhaWxpbmdfemVyb3MoY291bnQsIHgpCQkJCQlcCi0gICBkbyB7CQkJCQkJCQkJXAotKyAgICBVREl0eXBlIF9fY2J0bXA7CQkJCQkJCVwKLSAgICAgQVNTRVJUICgoeCkgIT0gMCk7CQkJCQkJCVwKLS0gICAgX19hc21fXyAoImJzZnEgJTEsJXEwIiA6ICI9ciIgKGNvdW50KSA6ICJybSIgKChVREl0eXBlKSh4KSkpOwlcCi0rICAgIF9fYXNtX18gKCJic2ZxICUxLCUwIiA6ICI9ciIgKF9fY2J0bXApIDogInJtIiAoKFVESXR5cGUpKHgpKSk7CVwKLSsgICAgKGNvdW50KSA9IF9fY2J0bXA7CQkJCQkJCVwKLSAgIH0gd2hpbGUgKDApCi0gI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjA4OWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ21wLTYuMS4yL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KLUBAIC0xMzAsNyArMTMwLDcgQEAgRVhUUkFfRElTVCArPSBnbXB4eC5oCi0gIyBidXQgYW55b25lIGtub3dsZWRnZWFibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKLSAjIHRvIGFkZHJlc3MgdGhhdC4KLSAjCi0taW5jbHVkZWV4ZWNkaXIgPSAkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCi0raW5jbHVkZWV4ZWNkaXIgPSAkKGluY2x1ZGVkaXIpCi0gaW5jbHVkZV9IRUFERVJTID0gJChHTVBYWF9IRUFERVJTX09QVElPTikKLSBub2Rpc3RfaW5jbHVkZWV4ZWNfSEVBREVSUyA9IGdtcC5oCi0gbGliX0xUTElCUkFSSUVTID0gbGliZ21wLmxhICQoR01QWFhfTFRMSUJSQVJJRVNfT1BUSU9OKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1NjRkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYWUxYTRjMzc0MTdhM2JiYmY4ZWExY2FiMTk4OTgyYjBjYWQ0N2UyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEyIEF1ZyAyMDE2IDE3OjA4OjEzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpdXJlLmFjOiBCZWxpZXZlIHRoZSBjZmxhZ3MgZnJvbSBlbnZpcm9ubWVudAorCitJbiBzb21lIHRvb2xjaGFpbnMgZS5nLiBPcGVuRW1iZWRkZWQgLW1hcmNoIG9wdGlvbnMKK2FyZSBwYXNzZWQgb24gY29tcGlsZXIgY21kbGluZSwgaXQgZG9lcyBub3QgdXNlCit0aGUgZXhwZWN0ZWQgdGFyZ2V0IHRyaXBsZXRzIHRvIG1ha2UgdGhlc2UgZGVjaXNpb24KK2R1cmluZyBjb25maWd1cmUuCisKK1NlY29uZGx5LCBkb250IHNldCBhcm12NCBmb3IgbWFyY2ggd2hlbiBubyBzZWxlY3Rpb24KK2lzIG1hZGUsIHNpbmNlIGl0IGlzIHBhc3NlZCBmcm9tIGNtZGxpbmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQorCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjI1LDE3ICs2MjUsNiBAQCBjYXNlICRob3N0IGluCisgICAgIGFueV8zMl90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTQiCisgICAgIGFueV82NF90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTgiCisgCistICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgorLSAgICAjIGFsb25lLgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKi0qLSplYWJpKQorLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKKy0gICAgICAqLSotKmVhYmloZikKKy0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OworLSAgICAgICotKi1taW5ndyopCistICAgICAgICBsaW1iXzY0PWxvbmdsb25nIDs7CistICAgIGVzYWMKKy0KKyAgICAgIyBGSVhNRTogV2UgbWFrZSBtYW5kYXRvcnkgY29tcGlsZXIgb3B0aW9ucyBvcHRpb25hbCBoZXJlLiAgV2Ugc2hvdWxkCisgICAgICMgZWl0aGVyIGVuZm9yY2UgdGhlbSwgb3Igb3JnYW5pc2UgdG8gc3RyaXAgcGF0aHMgYXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIyBvcHRpb25zIGZhaWwuCitAQCAtNzgwLDggKzc2OSw2IEBAIGNhc2UgJGhvc3QgaW4KKyAJOzsKKyAgICAgICAqKQorIAlwYXRoPSJhcm0iCistCWdjY19jZmxhZ3NfYXJjaD0iLW1hcmNoPWFybXY0IgorLQlHTVBfREVGSU5FX1JBVyhbImRlZmluZSg8Tk9USFVNQj4sMSkiXSkKKyAJOzsKKyAgICAgZXNhYworICAgICA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzMxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvdXNlLWluY2x1ZGVkaXIucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorZXhlYyBpbmNsdWRlZGlyIHNob3VsZCBiZSBwb2ludGluZyB0byBnZW5lcmFsIHlvY3RvIGluY2x1ZGRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQorICMgdG8gYWRkcmVzcyB0aGF0LgorICMKKy1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKKytpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKKyBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NDVkYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotcmVxdWlyZSBnbXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIHwgTEdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotIgotCi1SRVZJU0lPTiA9ICIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ21wbGliLm9yZy9kb3dubG9hZC8ke0JQTn0vJHtCUH0ke1JFVklTSU9OfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2FtZDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkZGJiMjZkYzNiZDRlMjMwMjk4NGRlYmJhMTQwNmE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNzViYjA0ZjQ4NjNhMTM1MTZiMmYzOTM5MmFjNWUyNzJmNWUxYmI4MDU3YjE4YWVjMWM5Yjc5ZDczZDhmYjIiCi0KLWFjcGF0aHMgPSAiIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWVuYWJsZS1jeHg9ZGV0ZWN0IgotRVhUUkFfT0VDT05GX21pcHNhcmNocjZfYXBwZW5kID0gIiAtLWRpc2FibGUtYXNzZW1ibHkiCi0KLVBBQ0tBR0VTID0rICJsaWJnbXB4eCIKLUZJTEVTX2xpYmdtcHh4ID0gIiR7bGliZGlyfS9saWJnbXB4eCR7U09MSUJTfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGdtcC5oCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCi0gICAgICAgIC1lICJzfCR7REVCVUdfUFJFRklYX01BUH18fGciIFwKLSAgICAgICAgICR7Qn0vZ21wLmgKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgotCi0jIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KLSMgYXNzZW1ibHkKLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTljNzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK3JlcXVpcmUgZ21wLmluYworCitMSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyIKKworUkVWSVNJT04gPSAiIgorU1JDX1VSSSA9ICJodHRwczovL2dtcGxpYi5vcmcvZG93bmxvYWQvJHtCUE59LyR7QlB9JHtSRVZJU0lPTn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjQxNjFlMGRkNDRjYWU3OGNkNWY2NzE5MzQ5MmEyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTFjOTljYjExNGRlYjIxYTYwMDc1ZmZiNDk0YzFhMjEwZWI5ZDdjYjcyOWVkMDQyZGRiN2RlOTUzNDQ1MWVhIgorCithY3BhdGhzID0gIiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKK0VYVFJBX09FQ09ORl9taXBzYXJjaHI2X2FwcGVuZCA9ICIgLS1kaXNhYmxlLWFzc2VtYmx5IgorCitQQUNLQUdFUyA9KyAibGliZ21weHgiCitGSUxFU19saWJnbXB4eCA9ICIke2xpYmRpcn0vbGliZ21weHgke1NPTElCU30iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBnbXAuaAorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXAorICAgICAgICAtZSAic3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnIiBcCisgICAgICAgICAke0J9L2dtcC5oCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnbXAuaCIKKworIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjg4ODVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCi0KLURFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3ZlcnJpZGUtaW5pdC1pcy1ub3QtbmVlZGVkLXdpdGgtZ2NjLTkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmEyZDliNzBjMzc3ZjhlOTY3NzQyMDY0YzI3YTE5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZmEyNjI4NjhlMzliNjUxYTJkYjRjMDcxZmJhOTA0MTUxNTQyNDNlODNhODMwY2EwMDUxNmY5YTgwN2ZkNTE0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAotCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAotCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKLSAgICAgICAgICAgICAgICIKLQotIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgotRklMRVNfJHtQTn0tZ3BnID0gIiBcCi0JJHtiaW5kaXJ9L2dwZyBcCi0JJHtiaW5kaXJ9L2dwZzIgXAotCSR7YmluZGlyfS9ncGctYWdlbnQgXAotIgotCi0jIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKLSMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKLSMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKLSMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KLVJERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L2dwZzIgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnY29uZiBHTlVQR19CSU5ESVI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGctYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnLWNvbm5lY3QtYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1NDU3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV292ZXJyaWRlLWluaXQtaXMtbm90LW5lZWRlZC13aXRoLWdjYy05LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmY4ODkyMGNmNTJiMzVkYjBkZWRhZWU4N2JkYmJiMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGE3YzlkNDhiNzRjMzk5MTY4ZWU4MjcwZTU0ODU4OGRkYmU1MjIxOGMzMzc3MDNkN2YwNjM3M2QzMjZjYTMwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAorCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAorCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKKyAgICAgICAgICAgICAgICIKKworIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCitQQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgorRklMRVNfJHtQTn0tZ3BnID0gIiBcCisJJHtiaW5kaXJ9L2dwZyBcCisJJHtiaW5kaXJ9L2dwZzIgXAorCSR7YmluZGlyfS9ncGctYWdlbnQgXAorIgorCisjIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKKyMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKKyMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKKyMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KK1JERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9rc2JhLm00CisJcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKKwlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30KK30KKworY3JlYXRlX3dyYXBwZXJzKCkgeworCWZvciBpIGluIGdwZzIgZ3BnY29uZiBncGctYWdlbnQgZ3BnLWNvbm5lY3QtYWdlbnQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vJGkgR05VUEdfQklORElSPSQxCisJZG9uZQorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4ZTJkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvcG9zaXgtc2hlbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Eb24ndCBlbWJlZCB0aGUgcGF0aCB0byB0aGUgYnVpbGQtdGltZSBQT1NJWCBzaGVsbCBhcyB0aGlzIHdpbGwgYmUKLSRUTVBESVIvaG9zdHRvb2xzL2Jhc2gsIHdoaWNoIGlzIG5vIGdvb2Qgb24gdGhlIHRhcmdldC4KLQotSW5zdGVhZCBkZWZhdWx0IHRvIC9iaW4vc2ggYnV0IGFsbG93IGl0IHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCi0KLVRoaXMgaXNuJ3QgcmVhbGx5IHVwc3RyZWFtYWJsZSBidXQgSSBmaWxlZCBhIGJ1ZyBhdAotaHR0cHM6Ly9naXRsYWIuY29tL2dudXRscy9nbnV0bHMvaXNzdWVzLzgwNyBhbmQgaG9wZSBhIHByb3BlciBmaXggd2lsbCBiZQotaW50ZWdyYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYm9wdHMvbTQvbGlib3B0cy5tNCBiL3NyYy9saWJvcHRzL200L2xpYm9wdHMubTQKLWluZGV4IGM2YWQ3MzguLmE2MmZhY2EgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci0rKysgYi9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci1AQCAtMTEyLDIxICsxMTIsNyBAQCBBQ19ERUZVTihbSU5WT0tFX0xJQk9QVFNfTUFDUk9TX0ZJUlNUXSxbCi0gICBBQ19DSEVDS19GVU5DUyhbbW1hcCBjYW5vbmljYWxpemVfZmlsZV9uYW1lIHNucHJpbnRmIHN0cmR1cCBzdHJjaHIgXAotICAgICAgICAgICAgICAgICAgc3RycmNociBzdHJzaWduYWwgZmNobW9kIGZzdGF0IGNobW9kXSkKLSAgIEFDX1BST0dfU0VECi0tICBbd2hpbGUgOgotLSAgZG8KLS0gICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggYmFzaGAKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGRhc2hgCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIFBPU0lYX1NIRUxMPS91c3IveHBnNC9iaW4vc2gKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YC9iaW4vc2ggLWMgJwotLSAgICAgICAgICBleGVjIDI+L2Rldi9udWxsCi0tICAgICAgICAgIGlmICEgdHJ1ZSA7IHRoZW4gZXhpdCAxIDsgZmkKLS0gICAgICAgICAgZWNobyAvYmluL3NoJ2AKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgXUFDX01TR19FUlJPUihbY2Fubm90IGxvY2F0ZSBhIHdvcmtpbmcgUE9TSVggc2hlbGxdKVsKLS0gIGRvbmVdCi0rICBQT1NJWF9TSEVMTD0iJHtQT1NJWF9TSEVMTDotL2Jpbi9zaH0iCi0gICBBQ19ERUZJTkVfVU5RVU9URUQoW1BPU0lYX1NIRUxMXSwgWyIke1BPU0lYX1NIRUxMfSJdLAotICAgICAgICAgICAgW2RlZmluZSB0byBhIHdvcmtpbmcgUE9TSVggY29tcGxpYW50IHNoZWxsXSkKLSAgIEFDX1NVQlNUKFtQT1NJWF9TSEVMTF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTZkNDJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkdOVSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/Z3JvdXA9Z251dGxzIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS14eCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0L2dudXRscy92JHtTSFJUX1ZFUn0vZ251dGxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYjFmZTY5NmExMTU0MzQzMzc4NWI0ZmM3MGNhMjI1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjA0MWRmNDQ3ZDlmNDY0NDU3MGNmNTczYzlmNjAzNThlODY1NjM3ZDY5YjdlNTlkMTE1OWI3MjQwYjUyZjM4IgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmlkbiIKKworIyBZb3UgbXVzdCBhbHNvIGhhdmUgQ09ORklHX1NFQ0NPTVAgZW5hYmxlZCBpbiB0aGUga2VybmVsIGZvcgorIyBzZWNjb21wIHRvIHdvcmsuCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gImFjX2N2X2xpYnNlY2NvbXA9eWVzLGFjX2N2X2xpYnNlY2NvbXA9bm8sbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtaWRuLC0td2l0aG91dC1pZG4sbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCitQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCitQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1kb2MgXAorICAgIC0tZGlzYWJsZS1saWJkYW5lIFwKKyAgICAtLWRpc2FibGUtZ3VpbGUgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS1lbmFibGUtbG9jYWwtbGlib3B0cyBcCisgICAgLS1lbmFibGUtb3BlbnNzbC1jb21wYXRpYmlsaXR5IFwKKyAgICAtLXdpdGgtbGlicHRocmVhZC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgLS13aXRoLWRlZmF1bHQtdHJ1c3Qtc3RvcmUtZmlsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKKyIKKworIyBPdGhlcndpc2UgdGhlIHRvb2xzIHRyeSBhbmQgdXNlIEhPU1RUT09MU19ESVIvYmFzaCBhcyBhIHNoZWxsLgorZXhwb3J0IFBPU0lYX1NIRUxMPSIke2Jhc2VfYmluZGlyfS9zaCIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWZvciBkaXIgaW4gLiBsaWI7IGRvCisJCXJtIC1mICR7ZGlyfS9hY2xvY2FsLm00ICR7ZGlyfS9tNC9saWJ0b29sLm00ICR7ZGlyfS9tNC9sdCoubTQKKwlkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1vcGVuc3NsICR7UE59LXh4IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9nbnV0bHMtY2xpLWRlYnVnIgorRklMRVNfJHtQTn0tb3BlbnNzbCA9ICIke2xpYmRpcn0vbGliZ251dGxzLW9wZW5zc2wuc28uKiIKK0ZJTEVTXyR7UE59LXh4ID0gIiR7bGliZGlyfS9saWJnbnV0bHN4eC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjcwNjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvP2dyb3VwPWdudXRscyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0teHggPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfS1vcGVuc3NsID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzEzOTFjOGUwYzFjZmU2ODA3N2U3ZmNlM2I1ODYyODMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLURFUEVORFMgPSAibmV0dGxlIGdtcCB2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcG9zaXgtc2hlbGwucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWRjZjBhYTQ1ZDFhNDJlMWIzY2E1ZDM5ZWM3YzYxYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE4MTk0NGU1NjM1ZGU5ODExNzE3NzI4NTdlNzJiZTIzMWE3ZTBmNTU5YWUwMjkyZDI3MzdkZTQ3NTM4M2U4MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCi0KLSMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKLSMgc2VjY29tcCB0byB3b3JrLgotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICJhY19jdl9saWJzZWNjb21wPXllcyxhY19jdl9saWJzZWNjb21wPW5vLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbjIiCi1QQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgotUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgotUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtZG9jIFwKLSAgICAtLWRpc2FibGUtbGliZGFuZSBcCi0gICAgLS1kaXNhYmxlLWd1aWxlIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAotICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0td2l0aC1kZWZhdWx0LXRydXN0LXN0b3JlLWZpbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0iCi0KLSMgT3RoZXJ3aXNlIHRoZSB0b29scyB0cnkgYW5kIHVzZSBIT1NUVE9PTFNfRElSL2Jhc2ggYXMgYSBzaGVsbC4KLWV4cG9ydCBQT1NJWF9TSEVMTD0iJHtiYXNlX2JpbmRpcn0vc2giCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlmb3IgZGlyIGluIC4gbGliOyBkbwotCQlybSAtZiAke2Rpcn0vYWNsb2NhbC5tNCAke2Rpcn0vbTQvbGlidG9vbC5tNCAke2Rpcn0vbTQvbHQqLm00Ci0JZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tb3BlbnNzbCAke1BOfS14eCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKLUZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCi1GSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1ndGtkb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzliOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmNvbS9nbnV0bHMvbGlidGFzbjEvbWVyZ2VfcmVxdWVzdHMvNDldCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGViZDRmODcxYjUyNDE4MDlmNmE1YjQ2MTQ0NGE2ZDMzMWUxNWM5NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCA5IFNlcCAyMDE5IDEzOjExOjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRvYy9yZWZlcmVuY2U6IGRvbid0IGFkZCBlbXB0eSBvYmplY3QgaGllcmFyY2h5IGNoYXB0ZXIKLQotVGhlIG9iamVjdCBoaWVyYXJjaHkgc2VjdGlvbiBpcyBlbXB0eSBiZWNhdXNlIHRoZXJlIGFyZSBubyBHT2JqZWN0cyBpbiB0aGUKLWxpYnRhc24xIEFQSS4gIFdpdGggZ3RrLWRvYyAxLjMwIG9ud2FyZHMgaWYgdGhlcmUgYXJlIG5vIG9iamVjdHMgdGhlbiB0aGUgb2JqZWN0Ci1oaWVyYXJjaHkgZmlsZSB3b24ndCBleGlzdCwgcmVzdWx0aW5nIGluIGEgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIHRoZQotZG9jdW1lbnRhdGlvbjoKLQotfCAuLi9saWJ0YXNuMS1kb2NzLnhtbDozOTogZWxlbWVudCBpbmNsdWRlOiBYSW5jbHVkZSBlcnJvciA6IGNvdWxkIG5vdCBsb2FkIC4uL3htbC90cmVlX2luZGV4LnNnbWwsIGFuZCBubyBmYWxsYmFjayB3YXMgZm91bmQKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGRvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgYi9kb2MvcmVmZXJlbmNlL2xpYnRhc24xLWRvY3MueG1sCi1pbmRleCBhY2NkYjg1Li5mODhiODg4IDEwMDY0NAotLS0tIGEvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotKysrIGIvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotQEAgLTM0LDEwICszNCw2IEBACi0gICAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvbGlidGFzbjEueG1sIi8+Ci0gCi0gICA8L2NoYXB0ZXI+Ci0tICA8Y2hhcHRlciBpZD0ib2JqZWN0LXRyZWUiPgotLSAgICA8dGl0bGU+T2JqZWN0IEhpZXJhcmNoeTwvdGl0bGU+Ci0tICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC90cmVlX2luZGV4LnNnbWwiLz4KLS0gIDwvY2hhcHRlcj4KLSAgIDxpbmRleCBpZD0iYXBpLWluZGV4LWZ1bGwiPgotICAgICA8dGl0bGU+QVBJIEluZGV4PC90aXRsZT4KLSAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC1mdWxsLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWxkZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4ZjNjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYTZmOTNiN2FjZTM0N2JjNGZlMjllYjRhOGZlNDM4M2Q3ODZjYzhkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBUdWUsIDIzIEp1bCAyMDE5IDIwOjQ0OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBMREZMQUdTIHRvIEFNX0xERkxBR1MgaW4gc3JjL01ha2VmaWxlLmFtCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNpZ25lZC1vZmYtYnk6IFRpbSBSw7xoc2VuIDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1YmYzNjIyLi40NDU5NzY3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yMSw3ICsyMSw3IEBAIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9idWlsZGRpcikvbGliL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKS9saWIvaW5jbHVkZXMgXAotICAtSSQodG9wX2J1aWxkZGlyKS9saWIvZ2wgLUkkKHRvcF9zcmNkaXIpL2xpYi9nbCAkKENPREVfQ09WRVJBR0VfQ1BQRkxBR1MpCi0gCi0gTERBREQgPSAuLi9saWIvbGlidGFzbjEubGEKLS1MREZMQUdTID0gJChDT0RFX0NPVkVSQUdFX0xERkxBR1MpCi0rQU1fTERGTEFHUyA9ICQoQ09ERV9DT1ZFUkFHRV9MREZMQUdTKQotIAotIGJpbl9QUk9HUkFNUyA9IGFzbjFQYXJzZXIgYXNuMUNvZGluZyBhc24xRGVjb2RpbmcKLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjJjMTk1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTc1YWMxMDBlYzkyM2Y5NTk4OTgxODIzMDc5NzBjMzYwIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ndGtkb2MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTk5MTgyMDBlZDRhNzc4ZTJiM2NiZTM0YzFiZTQyMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU2MDRiYTVjNWM4ZWE0MDM0ODc2OTVjMmU0MDc0MDU4MjBkOTg1NDBkOWRlODg0ZDZlODQ0ZjlhOWM1YmEwOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzM3YjcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xNi4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NzVhYzEwMGVjOTIzZjk1OTg5ODE4MjMwNzk3MGMzNjAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTMxMjA4ZGUzNzI5ZDQyZTJhZjBhMzI4OTBmMDg3MzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUwZmIwOTAzODM5MTE3Y2I2ZTNiNTZlNjgyMjI3NzFiZWJmMjJhZDdmYzIyOTVhMGVkN2Q1NzZlOGQ0MzI5ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCisKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtc3RkPWdudTk5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCmluZGV4IGVmYjI3YWUuLjkxZDY4ODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCkBAIC02LDIzICs2LDIzIEBACiBCdWctcmVwb3J0OiBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0yMDUzMwogUGF0Y2ggdGFrZW4gZnJvbTogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNjgyMTcwCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworaXQgaXMgYXBwbGllZCB1cHN0cmVhbSBhbmQgd2lsbCBiZSBpbiB2ZXJzaW9uIDY3KworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC80YTNhNDU3YjM4Y2Q4MjhiN2IzZmE0ZmRiYzZlMjUwNGE1NzI3NWU5XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBkYXRhL01ha2VmaWxlLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9zb3VyY2UvZGF0YS9NYWtlZmlsZS5pbiBiL3NvdXJjZS9kYXRhL01ha2VmaWxlLmluCi1pbmRleCA3NzhiNmM3Li42NzIwM2U3IDEwMDY0NAogLS0tIGEvZGF0YS9NYWtlZmlsZS5pbgogKysrIGIvZGF0YS9NYWtlZmlsZS5pbgotQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoc3JjZGlyKS9pbi8kKElDVURBVEFfQkFTRU5BTUVfVkVSU0lPTgotICMgYW5kIGNvbnZlcnQgaXQgdG8gdGhlIGN1cnJlbnQgdHlwZS4KLSBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkKLSBJQ1VEQVRBX1NPVVJDRV9BUkNISVZFID0gJChPVVRESVIpLyQoSUNVREFUQV9QTEFURk9STV9OQU1FKS5kYXQKLS0kKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpOiAkKElDVURBVEFfQVJDSElWRSkgJChPVVRESVIpCi0rJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpCi0rCSQoTUtJTlNUQUxMRElSUykgJChPVVRESVIpCi0gCSQoSU5WT0tFKSAkKFRPT0xCSU5ESVIpL2ljdXBrZyAtdCQoSUNVREFUQV9DSEFSKSAkKElDVURBVEFfQVJDSElWRSkgJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKQotIGVuZGlmCi0gZWxzZQorQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkCisgIyBhbmQgY29udmVydCBpdCB0byB0aGUgY3VycmVudCB0eXBlLg0KKyBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkNCisgSUNVREFUQV9TT1VSQ0VfQVJDSElWRSA9ICQoT1VURElSKS8kKElDVURBVEFfUExBVEZPUk1fTkFNRSkuZGF0DQorLSQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSk6ICQoSUNVREFUQV9BUkNISVZFKSAkKE9VVERJUikNCisrJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpDQorKwkkKE1LSU5TVEFMTERJUlMpICQoT1VURElSKQ0KKyAJJChJTlZPS0UpICQoVE9PTEJJTkRJUikvaWN1cGtnIC10JChJQ1VEQVRBX0NIQVIpICQoSUNVREFUQV9BUkNISVZFKSAkKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpDQorIGVuZGlmDQorIGVsc2UNCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2M2MwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maWx0ZXIuanNvbgpAQCAtMCwwICsxLDIgQEAKK3sKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82NC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmFjN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIGljdS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9OGJjNWQzMjA1MmE5NmYyMTRjYmRkMWU1M2RmYzkzNWQiCi0KLWRlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1JQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUJBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhM2QxODIxM2JlZWM0NTRlM2NkZWM5YTMxMTZkNmIwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjdkNWQ4NDc4ZTZkOTZmYzhjOTBmZWQ0ODUxMjM5MDc5YTU2MWE2YThiOWU0OGIwODkyZjI0ZTgyZDMxZDZjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmJiMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIKQEAgLTAsMCArMSw2NiBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWEzODA4YTViNzAwNzFiMDdmODdmZjIyMDVlNGQ3NWEwIgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworZGVmIGljdV9kb3dubG9hZF9mb2xkZXIoZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICItIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKK0lDVV9GT0xERVIgPSAiJHtAaWN1X2Rvd25sb2FkX2ZvbGRlcihkKX0iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkFTRV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgorREFUQV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1kYXRhLnppcCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9O25hbWU9Y29kZSBcCisgICAgICAgICAgICR7REFUQV9TUkNfVVJJfTtuYW1lPWRhdGEgXAorICAgICAgICAgICBmaWxlOi8vZmlsdGVyLmpzb24gXAorICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaDthcHBseT1ubyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbY29kZS5zaGEyNTZzdW1dID0gIjUyYTNmMjIwOWFiOTU1NTljMWNmMGExNGYyNDMzODAwMWYzODk2MTViZjAwZTI1ODVlZjNkYmM0M2VjZjBhMmUiCitTUkNfVVJJW2RhdGEuc2hhMjU2c3VtXSA9ICI4YmU2NDdmNzM4ODkxZDJiZWI3OWQ0OGY5OTA3N2IzNDk5OTQ4NDMwZWFlNmYxYmUxMTI1NTNiMTVhYjAyNDNlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpY3U0Yy0oP1A8cHZlcj5cZCsoX1xkKykrKS1zcmMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9yZWxlYXNlcyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIGFjX2N2X2Z1bmNfc3RydG9kX2w9bm8iCisKK2RvX21ha2VfaWN1ZGF0YV9jbGFzcy10YXJnZXQgKCkgeworICAgIGNkICR7U30KKyAgICBybSAtcmYgZGF0YQorICAgIGNwIC1hICR7V09SS0RJUn0vZGF0YSAuCisgICAgcGF0Y2ggLXAxIDwgJHtXT1JLRElSfS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisgICAgQVI9JyR7QlVJTERfQVJ9JyBcCisgICAgQ0M9JyR7QlVJTERfQ0N9JyBcCisgICAgQ1BQPScke0JVSUxEX0NQUH0nIFwKKyAgICBDWFg9JyR7QlVJTERfQ1hYfScgXAorICAgIFJBTkxJQj0nJHtCVUlMRF9SQU5MSUJ9JyBcCisgICAgQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKKyAgICBDUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIFwKKyAgICBDWFhGTEFHUz0nJHtCVUlMRF9DWFhGTEFHU30nIFwKKyAgICBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyBcCisgICAgSUNVX0RBVEFfRklMVEVSX0ZJTEU9JHtXT1JLRElSfS9maWx0ZXIuanNvbiBcCisgICAgLi9ydW5Db25maWd1cmVJQ1UgTGludXggLS13aXRoLWRhdGEtcGFja2FnaW5nPWFyY2hpdmUKKyAgICBvZV9ydW5tYWtlICR7UEFSQUxMRUxfTUFLRX0KKyAgICBpbnN0YWxsIC1EbTY0NCAke1N9L2RhdGEvb3V0L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWwuZGF0ICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdAorfQorCitkb19tYWtlX2ljdWRhdGEoKSB7CisgICAgOgorfQorCithZGR0YXNrIG1ha2VfaWN1ZGF0YSBiZWZvcmUgZG9fY29uZmlndXJlIGFmdGVyIGRvX3BhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhODU4YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sLzAwMDEtTmF0aXZlLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDMzNWVmMTRmYzgwMWM5ZGZiZTdlNTY5MmRjNzFjZmJlNzIwNDlkMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyNyBPY3QgMjAxOSAxNjozODo1MiArMDEwMAorU3ViamVjdDogW1BBVENIXSBOYXRpdmU6IERvbid0IHVzZSBidWlsZCB0aW1lIGhhcmRjb2RlZCBweXRob24gYmluYXJ5IHBhdGguCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoaXMgaXMgc2FtZSBwYXRjaCBhcyB1c2VkIGZvciB0YXJnZXQgYnVpbGQgZXhjZXB0IHRoYXQgd2UgZG8gbm90IHVzZSB0aGUKKyctUycgYW5kICctcycgb3B0aW9uIGJlY2F1c2UgJy1TJyBpcyByZWxhdGl2ZWx5IHlvdW5nIFsxXSBhbmQgZWxkZXIgYnVpbGQtaG9zdAorZG9uJ3Qgc3VwcG9ydCBpdCBbMl0KKworWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9jb3JldXRpbHMvY29yZXV0aWxzL2NvbW1pdC82NjgzMDZlZDg2YzhjNzliMGFmMGRiOGI5Yzg4MjY1NGViYjY2ZGIyI2RpZmYtODNkOWQ1MmIxZjEyYWM1ODk3MzlhYjEzMzRhZTRmMzAKK1syXSBodHRwczovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzI3NDc0My8KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGl0c3Rvb2wuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pdHN0b29sLmluIGIvaXRzdG9vbC5pbgoraW5kZXggZTY0Y2QzNC4uMDVkMjY0ZiAxMDA3NTUKKy0tLSBhL2l0c3Rvb2wuaW4KKysrKyBiL2l0c3Rvb2wuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTkAgLXMKKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTggU2hhdW4gTWNDYW5jZSA8c2hhdW5tQGdub21lLm9yZz4KKyAjCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkxMTA1MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sLzAwMDItRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktcGF0aC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGNkOWI1NjIyNDg5NTU3NjEyNWU5MWNjYTMxN2FjZThhODBmM2ViNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQaW90ciBUd29yZWsgPHR3b3JhekB0d29yYXoubmV0PgorRGF0ZTogU2F0LCAyNyBKdWwgMjAxOSAxMDoxOToxMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgYnVpbGQgdGltZSBoYXJkY29kZWQgcHl0aG9uIGJpbmFyeSBwYXRoLgorCitUaGlzIHBhdGggb2J2aW91c2x5IHdvbid0IHdvcmsgb24gdGFyZ2V0IHNpbmNlIHRoZXkgcmVmZXIgdG8gYnVpbGQKK21hY2hpbmUgZGlyZWN0b3J5IHN0cnVjdHVyZS4gTmF0aXZlIGJ1aWxkcyB3aWxsIGFsc28gZmFpbCBpZiBsb2NhbC5jb25mCitoYXMgSU5IRVJJVCs9cm1fd29yay4gSW5zdHJlYWQgb2YgaGFyZGNvZGluZyBwYXRoIHRvIHB5dGhvbiBiaW5hcnkgdXNlCit3aGF0ZXZlciBpcyBmb3VuZCBpbiBQQVRIIGZpcnN0LiBUaGlzIHNob3VsZCBhbHNvIGFsbG93IHRoZSB0b29sIHRvIHVzZQorcHl0aG9uMyBiaW5hcnkgcHJvdmlkZWQgaW4gcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorLS0tCisgaXRzdG9vbC5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2l0c3Rvb2wuaW4gYi9pdHN0b29sLmluCitpbmRleCBiM2MwMDMzLi43ZGYyNDc2IDEwMDc1NQorLS0tIGEvaXRzdG9vbC5pbgorKysrIGIvaXRzdG9vbC5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OQCAtcworKyMhL3Vzci9iaW4vZW52IC1TIHB5dGhvbjMgLXMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxOCBTaGF1biBNY0NhbmNlIDxzaGF1bm1AZ25vbWUub3JnPgorICMKKy0tCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjM1OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJJVFMgVG9vbCBhbGxvd3MgeW91IHRvIHRyYW5zbGF0ZSB5b3VyIFhNTCBkb2N1bWVudHMgd2l0aCBQTyBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9pdHN0b29sLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTljNTdiOTVmZDdkMGU5ZTIzOGViYmM3YWQ0N2M1YTUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZmlsZXMuaXRzdG9vbC5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMi1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS1wYXRoLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDMwNmVlYmE0ZjRhZWU2YjM5M2QxNGY5YzNjNTdjYTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIzM2NjMjI3MjZhOWE1YTgzNjY0YmY2N2QxYWY3OTU0OWEyOThjMjMxODVkOTI2YzM2NzdhZmE5MTdiOTJhOSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfSArPSAibGlieG1sMi1weXRob24iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiCmluZGV4IDZmYjNkMmYuLjUyYjRjMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjMuYmIKQEAgLTIyLDExICsyMiwxNSBAQAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmFzc3Vhbi1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200LyoubTQKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBhc3N1YW4uaAorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgppbmRleCBlYWYyNDRhLi4zYjlhYzVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKQEAgLTcsNyArNyw3IEBACiAgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKICAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgogCi1IT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKICMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgogIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0IC11CiAjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQpAQCAtMzEsNyArMzEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjEyMGJlMDE3MzQ2OWEwNmVkMTg1YjY4OGUwZTFhZTAiCiBTRUNUSU9OID0gImxpYnMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlYWQ5NmQyNDBkMDJmYWE1YjkyMWMwYWE1MGM4MTJiNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNGI4YWRjNzI2ODgzZDBlODViMzExOGZhMTM2MDVlMTc5YTYyYjMxYmE1MWY2NzYxMzZlY2IyZDBiYzFhODg3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy5pbmMKaW5kZXggYWVjODM4OS4uMDAyOTE1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcuaW5jCkBAIC05LDYgKzksOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9zZ3J1YmIvbGliY2FwLW5nL2xpYmNhcC1uZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVdyYXAtcHRocmVhZF9hdGZvcmstdXNhZ2UtaW4tSEFWRV9QVEhSRUFEX0gucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNTdkYzI2N2UyOTQ5Y2RlY2I2NTFhOTI5ZjkyMDY1NzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMS1jb25maWd1cmUuYWMtYWRkLWxpYnJhcnktaWYtaGVhZGVyLWZvdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjE1NWNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDAyMzBlMmUzNzRiYjcxYWVkMDE4MWNjZDllYmQxM2MwYzUxMjVhNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUcmV2b3IgV29lcm5lciA8dHdvZXJuZXJAZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNSBPY3QgMjAxOSAxNzowMToyMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBsaWJyYXJ5IGlmIGhlYWRlciBmb3VuZAorCitJZiB0aGUgcHRocmVhZC5oIGhlYWRlciBpcyBmb3VuZCwgbWFrZSBzdXJlIGxpYnJhcnkgY29udGFpbmluZworInB0aHJlYWRfYXRmb3JrIiBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMgYWdhaW5zdCB3aGljaCB0byBsaW5rLgorT24gc29tZSBob3N0cyAoZS5nLiBvcGVuU1VTRSAxNS4xKSAiLWxwdGhyZWFkIiBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGFkZGVkCitpbiBvcmRlciBmb3IgdGhlIGNvZGUgdG8gY29tcGlsZSBjb3JyZWN0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3RldmVncnViYi9saWJjYXAtbmcvcHVsbC8xMF0KK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBXb2VybmVyIDx0d29lcm5lckBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDYzMDg4ZjQuLjYzOWI0NjQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU2LDcgKzU2LDkgQEAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMveGF0dHIuaCwgW10sIFsKKyAJQUNfQ0hFQ0tfSEVBREVSUyhhdHRyL3hhdHRyLmgsIFtdLCBbQUNfTVNHX1dBUk4oYXR0ci94YXR0ci5oIG5vdCBmb3VuZCwgZGlzYWJsaW5nIGZpbGUgc3lzdGVtIGNhcGFiaWxpdGllcy4pXSkKKyAJXSkKKyBBQ19DSEVDS19IRUFERVJTKGxpbnV4L3NlY3VyZWJpdHMuaCwgW10sIFtdKQorLUFDX0NIRUNLX0hFQURFUlMocHRocmVhZC5oLCBbXSwgW0FDX01TR19XQVJOKHB0aHJlYWQuaCBub3QgZm91bmQsIGRpc2FibGluZyBwdGhyZWFkX2F0Zm9yay4pXSkKKytBQ19DSEVDS19IRUFERVJTKHB0aHJlYWQuaCwKKysJW0FDX1NFQVJDSF9MSUJTKHB0aHJlYWRfYXRmb3JrLCBwdGhyZWFkKV0sCisrCVtBQ19NU0dfV0FSTihwdGhyZWFkLmggbm90IGZvdW5kLCBkaXNhYmxpbmcgcHRocmVhZF9hdGZvcmsuKV0pCisgCisgQUNfQ19DT05TVAorIEFDX0NfSU5MSU5FCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMi1XcmFwLXB0aHJlYWRfYXRmb3JrLXVzYWdlLWluLUhBVkVfUFRIUkVBRF9ILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjgyNTRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGQ5NWM0MDE4YWQ1N2MzN2Y2MjcyZGJlZGZhNTIxNzc3NjU2N2MzMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAyNiBOb3YgMjAxOSAyMjozNDozNCArMDUwMAorU3ViamVjdDogW1BBVENIXSBXcmFwIHB0aHJlYWRfYXRmb3JrIHVzYWdlIGluIEhBVkVfUFRIUkVBRF9ICisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKy0tLQorIHNyYy9jYXAtbmcuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY2FwLW5nLmMgYi9zcmMvY2FwLW5nLmMKK2luZGV4IDM1ZmNkN2EuLjk3YTNkYmQgMTAwNjQ0CistLS0gYS9zcmMvY2FwLW5nLmMKKysrKyBiL3NyYy9jYXAtbmcuYworQEAgLTE2Niw3ICsxNjYsOSBAQCBzdGF0aWMgdm9pZCBkZWluaXQodm9pZCkKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKSBfX2F0dHJpYnV0ZV9fICgoY29uc3RydWN0b3IpKTsKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKQorIHsKKysjaWZkZWYgSEFWRV9QVEhSRUFEX0gKKyAJcHRocmVhZF9hdGZvcmsoTlVMTCwgTlVMTCwgZGVpbml0KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIHZvaWQgaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuMTAuYmIKaW5kZXggYTlhMDQ2NS4uNmU2ZGU0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjEwLmJiCkBAIC0zLDcgKzMsNiBAQAogaW5oZXJpdCBsaWJfcGFja2FnZSBhdXRvdG9vbHMKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1weXRob24zIgotTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtcHRocmVhZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLXRlc3RzLWRvLW5vdC1zdGF0aWNhbGx5LWxpbmstYS10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTY4Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDExNzliNDIzY2NlOGQxMTliNDJjZWJmYjNkYWE3N2M1NDBmZGNhNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgSmFuIDIwMjAgMTc6MTY6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBzdGF0aWNhbGx5IGxpbmsgYSB0ZXN0CisKK1RoaXMgZmFpbHMgb24gZS5nLiBjZW50b3MgNworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUgYi90ZXN0cy9NYWtlZmlsZQoraW5kZXggNzE2MmNmMC4uNmFmNDdhZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0cy9NYWtlZmlsZQorQEAgLTI5LDcgKzI5LDcgQEAgcHN4X3Rlc3Rfd3JhcDogcHN4X3Rlc3QuYyAkKERFUFMpCisgcnVuX2xpYmNhcF9wc3hfdGVzdDogbGliY2FwX3BzeF90ZXN0CisgCisgbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QuYyAkKERFUFMpCistCSQoQ0MpICQoQ0ZMQUdTKSAkKElQQVRIKSAkPCAtbyAkQCAkKExJQkNBUExJQikgJChMSUJQU1hMSUIpIC1XbCwtd3JhcCxwdGhyZWFkX2NyZWF0ZSAtLXN0YXRpYworKwkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgJDwgLW8gJEAgJChMSUJDQVBMSUIpICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBjbGVhbjoKKyAJcm0gLWYgcHN4X3Rlc3QgcHN4X3Rlc3Rfd3JhcCBsaWJjYXBfcHN4X3Rlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDItdGVzdHMtZG8tbm90LXJ1bi10YXJnZXQtZXhlY3V0YWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZDEwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNjMwOTU1NDIyNWUwNWU3NjE2N2VkYTRlMGRmMzgzZmIzZDFhNjJjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNjo1NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHJ1biB0YXJnZXQgZXhlY3V0YWJsZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDk1ZTRjYTYuLjcxNjJjZjAgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0xOSw4ICsxOSw2IEBAIHN1ZG90ZXN0OiB0ZXN0CisgaW5zdGFsbDogYWxsCisgCisgcnVuX3BzeF90ZXN0OiBwc3hfdGVzdCBwc3hfdGVzdF93cmFwCistCS4vcHN4X3Rlc3QKKy0JLi9wc3hfdGVzdF93cmFwCisgCisgcHN4X3Rlc3Q6IHBzeF90ZXN0LmMgJChERVBTKQorIAkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgLUROT1dSQVAgJDwgLW8gJEAgJChMSUJQU1hMSUIpCitAQCAtMjksNyArMjcsNiBAQCBwc3hfdGVzdF93cmFwOiBwc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBydW5fbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QKKy0JLi9saWJjYXBfcHN4X3Rlc3QKKyAKKyBsaWJjYXBfcHN4X3Rlc3Q6IGxpYmNhcF9wc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCQ0FQTElCKSAkKExJQlBTWExJQikgLVdsLC13cmFwLHB0aHJlYWRfY3JlYXRlIC0tc3RhdGljCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjY0ZmY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBnZXR0aW5nL3NldHRpbmcgUE9TSVguMWUgY2FwYWJpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS9mdWxseWNhcGFibGUvIgotCi0jIG5vIHNwZWNpZmljIEdQTCB2ZXJzaW9uIHJlcXVpcmVkCi1MSUNFTlNFID0gIkJTRCB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZTttZDU9M2Y4NGZkNmYyOWQ0NTNhNTY1MTRjYjdlNGVhZDI1ZjEiCi0KLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnN1cmUtdGhlLVhBVFRSX05BTUVfQ0FQUy1pcy1kZWZpbmVkLXdoZW4taXQtaXMtdXNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjJlOGY5ZmFiMzJlYjVjY2IzNzk2OWZlMzE3ZmQxN2FhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhYzE3OTJkMDExOGJlZTZhYWU2YmE3ZmI5M2ZmMTYwMmM2YTliZGE4MTJmZDYzOTE2ZWVlMTQzNWI5YzQ4NmEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzL3NlY3VyaXR5L2xpbnV4LXByaXZzLyR7QlBOfTIvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlCi0KLSMgZG8gTk9UIHBhc3MgdGFyZ2V0IGNmbGFncyB0byBob3N0IGNvbXBpbGF0aW9ucwotIwotZG9fY29uZmlndXJlKCkgewotCSMgbGliY2FwIHVzZXMgOj0gZm9yIGNvbXBpbGVycywgZm9ydHVuYXRlbHksIGl0IGdpdmVzIHVzIGEgaGludAotCSMgb24gd2hhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA/PQotCXNlZCAtZSAncyw6PSw/PSxnJyAtaSBNYWtlLlJ1bGVzCi0Jc2VkIC1lICdzLF5CVUlMRF9DRkxBR1MgPz0gJCguKkNGTEFHUyksQlVJTERfQ0ZMQUdTIDo9ICQoQlVJTERfQ0ZMQUdTKSwnIC1pIE1ha2UuUnVsZXMKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiUEFNX0NBUD15ZXMsUEFNX0NBUD1ubyxsaWJwYW0iCi0KLUVYVFJBX09FTUFLRSA9ICIgXAotICBJTkRFTlQ9ICBcCi0gIGxpYj0nJHtiYXNlbGlifScgXAotICBSQUlTRV9TRVRGQ0FQPW5vIFwKLSAgRFlOQU1JQz15ZXMgXAotICBCVUlMRF9HUEVSRj15ZXMgXAotIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLSMgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGxpYmNhcCBkZWZhdWx0cywgc28gaW5jbHVkZSBpbiBvdXIgQ0ZMQUdTIHRvbwotQ0ZMQUdTICs9ICItRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgXAotCQkke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLQkJREVTVERJUj0iJHtEfSIgXAotCQlwcmVmaXg9IiR7cHJlZml4fSIgXAotCQlTQklORElSPSIke3NiaW5kaXJ9IgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgdGhlIGxpYnJhcnkgdG8gYmFzZV9saWJkaXIKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfQotCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgotCQltdiAke0R9JHtsaWJkaXJ9L2xpYmNhcCogJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5IF07IHRoZW4KLQkJCW12ICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JCWZpCi0JZmkKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvIgotCi0jIHBhbSBmaWxlcwotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4YTU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiCkBAIC0wLDAgKzEsNzcgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgZ2V0dGluZy9zZXR0aW5nIFBPU0lYLjFlIGNhcGFiaWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvZnVsbHljYXBhYmxlLyIKKworIyBubyBzcGVjaWZpYyBHUEwgdmVyc2lvbiByZXF1aXJlZAorTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2U7bWQ1PTNmODRmZDZmMjlkNDUzYTU2NTE0Y2I3ZTRlYWQyNWYxIgorCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LXN0YXRpY2FsbHktbGluay1hLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNzQxNjExOWM5ZmRjZmQwZThkZDE5MGE0MzJjNjY4ZTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTAwNWUzZDIyN2YyMzQwYWQxZTMzNjBlZjhiNjlkMTVlM2M3MmEyOWMwOWY0ODk0ZDdhYWMwMzhiZDI2ZTJiZSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UKKworIyBkbyBOT1QgcGFzcyB0YXJnZXQgY2ZsYWdzIHRvIGhvc3QgY29tcGlsYXRpb25zCisjCitkb19jb25maWd1cmUoKSB7CisJIyBsaWJjYXAgdXNlcyA6PSBmb3IgY29tcGlsZXJzLCBmb3J0dW5hdGVseSwgaXQgZ2l2ZXMgdXMgYSBoaW50CisJIyBvbiB3aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoID89CisJc2VkIC1lICdzLDo9LD89LGcnIC1pIE1ha2UuUnVsZXMKKwlzZWQgLWUgJ3MsXkJVSUxEX0NGTEFHUyA/PSAkKC4qQ0ZMQUdTKSxCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpLCcgLWkgTWFrZS5SdWxlcworfQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICJQQU1fQ0FQPXllcyxQQU1fQ0FQPW5vLGxpYnBhbSIKKworRVhUUkFfT0VNQUtFID0gIiBcCisgIElOREVOVD0gIFwKKyAgbGliPScke2Jhc2VsaWJ9JyBcCisgIFJBSVNFX1NFVEZDQVA9bm8gXAorICBEWU5BTUlDPXllcyBcCisgIEJVSUxEX0dQRVJGPXllcyBcCisiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKKworIyB0aGVzZSBhcmUgcHJlc2VudCBpbiB0aGUgbGliY2FwIGRlZmF1bHRzLCBzbyBpbmNsdWRlIGluIG91ciBDRkxBR1MgdG9vCitDRkxBR1MgKz0gIi1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBcCisJCSR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorCQlERVNURElSPSIke0R9IiBcCisJCXByZWZpeD0iJHtwcmVmaXh9IiBcCisJCVNCSU5ESVI9IiR7c2JpbmRpcn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSB0aGUgbGlicmFyeSB0byBiYXNlX2xpYmRpcgorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9CisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCW12ICR7RH0ke2xpYmRpcn0vbGliY2FwKiAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgXTsgdGhlbgorCQkJbXYgJHtEfSR7bGliZGlyfS9zZWN1cml0eSAke0R9JHtiYXNlX2xpYmRpcn0KKwkJZmkKKwlmaQorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28iCisKKyMgcGFtIGZpbGVzCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2NDE3Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJjaGVjay5naXRodWIuaW8vY2hlY2svIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSAgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vY2hlY2svcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vY2hlY2stJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMmM3MzBjNDBiMDg0ODJlYWViMTAxMzI1MTc5NzA1OTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQzMzZiMzE0NDdhY2M3ZTMyNjY4NTRmNzNlYzE4OGNkYjE1NTU0ZDBlZGQ0NDczOTYzMWRhMTc0YTU2OTkwOSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgotCi1TID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAiY2hlY2ttayIKLQotRklMRVNfY2hlY2ttayA9ICIke2JpbmRpcn0vY2hlY2ttayIKLQotUkRFUEVORFNfY2hlY2ttayA9ICJnYXdrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OGYwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZICA9ICJDaGVjayAtIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgY29kZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliY2hlY2suZ2l0aHViLmlvL2NoZWNrLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ub3QtZWNoby1jb21waWxlci1pbmZvLXRvLWNoZWNrX3N0ZGludC5oLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjI3MGU4MmE0NDViZTYwMjYwNDAyNjdhNWUxMWNjOTRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMGYwY2ExYmU2NWI3MDIzOGIzMmY4ZTlmZTVkMzZkYzJmYmY3YTc1OWI3ZWRmMjhlNzUzMjNhN2Q3NGYzMGIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmNoZWNrL2NoZWNrL3JlbGVhc2VzLyIKKworUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbworCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKKworUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgImNoZWNrbWsiCisKK0ZJTEVTX2NoZWNrbWsgPSAiJHtiaW5kaXJ9L2NoZWNrbWsiCisKK1JERVBFTkRTX2NoZWNrbWsgPSAiZ2F3ayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldi9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhNjA3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVGhlIG9yZGVyIG9mIGRpY3QgdmFsdWVzIGlzIG5vdCBkZXRlcm1pbmlzdGljIGxlYWRpbmcgdG8gZGlmZmVyaW5nIGhlYWRlciBmaWxlIGdlbmVyYXRpb24uCitTb3J0IHRvIHJlbW92ZSB0aGlzIGluY29uc2lzdGVuY3kuCisKK1JQIDIwMjAvMi83CisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKysrKyBiL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKK0BAIC02NywxMCArNjcsMTAgQEAgZGVmIHByaW50X2JpdHMoYml0cywgcHJlZml4KToKKyAJaWYgIG5vdCBoYXNhdHRyKGJpdHMsIHByZWZpeCk6CisgCQlyZXR1cm4KKyAJcHJpbnQoInN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgJXNfbWFwWyVzX01BWCArIDFdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkpCistCWZvciB2YWwsIG5hbWUgaW4gbGlzdChnZXRhdHRyKGJpdHMsIHByZWZpeCkuaXRlbXMoKSk6CisrCWZvciB2YWwsIG5hbWUgaW4gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKToKKyAJCXByaW50KCIJWyVzXSA9IFwiJXNcIiwiICUgKG5hbWUsIG5hbWUpKQorIAlpZiBwcmVmaXggPT0gImtleSI6CistCQlmb3IgdmFsLCBuYW1lIGluIGxpc3QoZ2V0YXR0cihiaXRzLCAiYnRuIikuaXRlbXMoKSk6CisrCQlmb3IgdmFsLCBuYW1lIGluIHNvcnRlZChsaXN0KGdldGF0dHIoYml0cywgImJ0biIpLml0ZW1zKCkpKToKKyAJCQlwcmludCgiCVslc10gPSBcIiVzXCIsIiAlIChuYW1lLCBuYW1lKSkKKyAJcHJpbnQoIn07IikKKyAJcHJpbnQoIiIpCitAQCAtMTExLDcgKzExMSw3IEBAIGRlZiBwcmludF9sb29rdXAoYml0cywgcHJlZml4KToKKyAJaWYgbm90IGhhc2F0dHIoYml0cywgcHJlZml4KToKKyAJCXJldHVybgorIAorLQluYW1lcyA9IGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpCisrCW5hbWVzID0gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKQorIAlpZiBwcmVmaXggPT0gImJ0biI6CisgCQluYW1lcyA9IG5hbWVzICsgYnRuX2FkZGl0aW9uYWw7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgppbmRleCA4NDI3NDk4Li4zNTIzZGMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS44LjAuYmIKQEAgLTYsOCArNiwxMSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4Nzk2MzEwODBiZTE4NTI2NzM3ZTMzYjYzZDg0ODAzOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGQzY2FlNGVmZDI3N2Y0ODVhYmRmOGYyYTdjNDY1ODhlNTM5OTk4YjVhMDhjMmM0ZDM2ODIxODM3OWQ0MjExIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZXZkZXYtKD9QPHB2ZXI+KFxkK1wuKSsoPyE5MFxkKylcZCspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDUxNTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA3YzE3OTY3YjhmZDJkMThiNzRhODkzNGZkOWJiODIxMmViZDZhMjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDkgSmFuIDIwMjAgMTM6MjI6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC9yZWdyZXNzX2Rucy5jOiBwYXRjaCBvdXQgdGVzdHMgdGhhdCByZXF1aXJlIGEgd29ya2luZworIEROUworCitUaGlzIGlzIG5vdCBndWFyYW50ZWVkIGZvciBwdGVzdHMgdW5kZXIgcWVtdSwgYW5kIGluIHRoZSBhYnNlbmNlCitvZiBhIEROUyB0aGF0IGNhbiByZWFjaCB0byB0aGUgaW50ZXJuZXQsIHRoZXNlIHRlc3RzIGZhaWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9yZWdyZXNzX2Rucy5jIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlZ3Jlc3NfZG5zLmMgYi90ZXN0L3JlZ3Jlc3NfZG5zLmMKK2luZGV4IGQyMDg0YjcuLmExYThmM2IgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfZG5zLmMKKysrKyBiL3Rlc3QvcmVncmVzc19kbnMuYworQEAgLTIzOTQsOCArMjM5NCw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAicmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmUiLCBkbnNfcmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmVfdGVzdCwKKyAJICBUVF9GT1JLfFRUX05FRURfQkFTRXxUVF9OT19MT0dTLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAJeyAiaW5mbGlnaHQiLCBkbnNfaW5mbGlnaHRfdGVzdCwgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorLQl7ICJidWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorLQkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAjaWZkZWYgRVZFTlRfX0hBVkVfU0VUUkxJTUlUCisgCXsgImJ1ZmZlcmV2ZW50X2Nvbm5lY3RfaG9zdG5hbWVfZW1maWxlIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIChjaGFyKikiZW1maWxlIiB9LAorQEAgLTI0MDUsOCArMjQwMyw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAiZGlzYWJsZV93aGVuX2luYWN0aXZlX25vX25zIiwgZG5zX2Rpc2FibGVfd2hlbl9pbmFjdGl2ZV9ub19uc190ZXN0LAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFfFRUX05PX0xPR1MsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorIAorLQl7ICJpbml0aWFsaXplX25hbWVzZXJ2ZXJzIiwgZG5zX2luaXRpYWxpemVfbmFtZXNlcnZlcnNfdGVzdCwKKy0JICBUVF9GT1JLfFRUX05FRURfQkFTRSwgJmJhc2ljX3NldHVwLCBOVUxMIH0sCisgI2lmbmRlZiBfV0lOMzIKKyAJeyAibmFtZXNlcnZlcnNfbm9fZGVmYXVsdCIsIGRuc19uYW1lc2VydmVyc19ub19kZWZhdWx0X3Rlc3QsCisgCSAgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgppbmRleCA4YzdjNDllLi5mYjE4NmViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgpAQCAtNiwxMSArNiwxMSBAQAogTElDRU5TRSA9ICJCU0QgJiBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xN2YyMDU3NGMwYjE1NGQxMjIzNmQ1ZmJlOTY0ZjU0OSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKLSAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdmMzVjZmU2OWI4MmQ4NzkxMTFlYzBkN2I3YjFjNTMxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2NWJhYzYyMDJlYThjNTYwOWZkNWM3ZTQ4MGU2ZDI1ZGU0NjdlYTE5MTdjMDgyOTBjNTIxNzUyZjE0NzI4M2QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjViN2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitGaXhlcyByZW1haW5pbmcgcGllY2VzIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL2NvbW1pdC82NjYzMDQ3ZjU2YzI5MzJhNmIxMGE3OTBmNGFjNjY2NmRkMTgxMzI2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYy5vcmcJMjAxOS0xMi0wNSAxNDo0ODozMy4xNDA1Nzk0MzEgLTA4MDAKKysrKyBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMJMjAxOS0xMi0wNSAxNDo1Mzo1OC44MjcyNDQ0OTUgLTA4MDAKK0BAIC02ODAsOSArNjgwLDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVucworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVjYXJnX2NvdW50IDwgTlVNX1ZFQ19BUkdfUkVHSVNURVJTNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp2ZWNfYmFzZS5mMTI4KysgPSAqYXJnLmYxMjgrKzsKKysJCSAgICAgICAgbWVtY3B5ICh2ZWNfYmFzZS5mMTI4KyssIGFyZy5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAqbmV4dF9hcmcuZjEyOCA9ICphcmcuZjEyOCsrOworKwkJICAgICAgICBtZW1jcHkgKG5leHRfYXJnLmYxMjgsIGFyZy5mMTI4KyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbmV4dF9hcmcuZjEyOCA9PSBncHJfZW5kLmYxMjgpCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgICAgICAgICAgdmVjYXJnX2NvdW50Kys7CitAQCAtOTg2LDkgKzk4Niw5IEBAIGZmaV9jbG9zdXJlX2hlbHBlcl9MSU5VWDY0IChmZmlfY2lmICpjaWYKKyAgICAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAocHZlYyA8IGVuZF9wdmVjICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKnB2ZWMrKzsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBwdmVjKyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKmZyb20uZjEyODsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBmcm9tLmYxMjgsIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgdG8uZjEyOCsrOworICAgICAgICAgICAgICAgICAgICAgICBmcm9tLmYxMjgrKzsKKyAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMzJhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNjhmNDViOTA0OWRmZmI1NGY1YTI5YTNhNDk1YWIzZGZjZjAxMDYzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorRGF0ZTogRnJpLCAyOSBOb3YgMjAxOSAwNzowMDozNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvNjY2MzA0N2Y1NmMyOTMyYTZiMTBhNzkwZjRhYzY2NjZkZDE4MTMyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jIGIvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYworaW5kZXggZGUwZDAzMy4uNzM2NDc3MCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKK0BAIC01NDcsOSArNTQ3LDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrKQorICAgICAgICAgICAgICAgaWYgKG5leHRfYXJnLnVsID09IGdwcl9lbmQudWwpCisgICAgICAgICAgICAgICAgIG5leHRfYXJnLnVsID0gcmVzdC51bDsKKyAgICAgICAgICAgICAgIGlmICh2ZWNhcmdfY291bnQgPCBOVU1fVkVDX0FSR19SRUdJU1RFUlM2NCAmJiBpIDwgbmZpeGVkYXJncykKKy0gICAgICAgICAgICAgICAgKnZlY19iYXNlLmYxMjgrKyA9ICoqcF9hcmd2LmYxMjg7CisrCQltZW1jcHkgKHZlY19iYXNlLmYxMjgrKywgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICpuZXh0X2FyZy5mMTI4ID0gKipwX2FyZ3YuZjEyODsKKysJCW1lbWNweSAobmV4dF9hcmcuZjEyOCwgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBpZiAoKytuZXh0X2FyZy5mMTI4ID09IGdwcl9lbmQuZjEyOCkKKyAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgIHZlY2FyZ19jb3VudCsrOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAppbmRleCAwMGEzMGEzLi4zOTcxOTRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaApAQCAtMSwxMiArMSwxMSBAQAotRnJvbSA0MTQ5YTc2MjdhOTk4NzMxY2MyNDZkM2Y1OGEzNjgwODc0NWQwNGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNGUyZTc0NjgyZGIzYmZjZjA1NzY4OGY3MzhmZGQ4NDJhMDJmZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2FybCBIdXJkIDxjYXJsQENhcmxzLU1hY0Jvb2stUHJvLmxvY2FsPgogRGF0ZTogV2VkLCAxOCBKdWwgMjAxOCAwOTowNDozMiAtMDQwMAogU3ViamVjdDogW1BBVENIXSBGaXhlZCBtaXNzZWQgI2lmbmRlZiBmb3IgX19taXBzX3NvZnRfZmxvYXQKIAogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9wdWxsLzQ0Ml0KLQorLS0tCiAgc3JjL21pcHMvbzMyLlMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCkBAIC0yNiw2ICsyNSwzIEBACiAgMToKICAJIyBwcmVwYXJlIGFyZ3VtZW50cyBmb3IgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9PMzIKICAJUkVHX0wJYTAsIDQoJDE1KQkgIyBjaWYgCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlNmU0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWZmaV9wb3dlcnBjLmgtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1wb3dlcnBjNy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGRlOTNhZGZiNmY0ODEwMDk0NmJiYTJjM2FiYWQyYTc3YTBjZmRlMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJyaWNlIEZvbnRhaW5lIDxmb250YWluZS5mYWJyaWNlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjQgTm92IDIwMTkgMDk6NTI6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmZpX3Bvd2VycGMuaDogZml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBwb3dlcnBjNworCitUaGlzIGlzIGEgcGF0Y2ggcHVsbGVkIGRvd24gZnJvbSB0aGUgZm9sbG93aW5nOgoraHR0cHM6Ly9naXRodWIuY29tL2J1aWxkcm9vdC9idWlsZHJvb3QvYmxvYi83ODkyNmY2MTBiMTQxMWIwMzQ2NDE1MjQ3MmZkNDMwMDEyZGViOWFjL3BhY2thZ2UvbGliZmZpLzAwMDQtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoCisKK1RoaXMgaXNzdWUgaXMgYmVpbmcgaGl0IG9uIE9wZW5CTUMgY29kZSB3aGVuIHB1bGxpbmcgdGhlIGxhdGVzdAorbGliZmZpIHRhZyBhbmQgYnVpbGRpbmcgb24gYSBQOCBwcGM2NGxlIG1hY2hpbmUuIEkgdmVyaWZpZWQgdGhpcworcGF0Y2ggZml4ZXMgdGhlIGlzc3VlIHdlIGFyZSBzZWVpbmcuCisKK0JlbG93IGlzIHRoZSBvcmlnaW5hbCBjb21taXQgbWVzc2FnZToKKworU2ljbmUgY29tbWl0IDczZGQ0M2FmYzhhNDQ3YmE5OGVhMDJlOWFhZDRjNjg5OGRjNzdmYjAsIGJ1aWxkIG9uIHBvd2VycGM3CitmYWlscyBvbjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9wb3dlcnBjL2ZmaS5jOjMzOjA6CisuLi9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oOjYxOjk6IGVycm9yOiAnX0Zsb2F0MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgdHlwZWRlZiBfRmxvYXQxMjggZmxvYXQxMjg7CisgICAgICAgICBefn5+fn5+fn4KKworRml4IHRoaXMgYnVpbGQgZmFpbHVyZSBieSBjaGVja2luZyBmb3IgX19IQVZFX0ZMT0FUMTI4IGJlZm9yZSB1c2luZworX0Zsb2F0MTI4LCBhcyBfRmxvYXQxMjggaXMgZW5hYmxlZCBvbmx5IG9uIHNwZWNpZmljIGNvbmRpdGlvbnMsIHNlZQorb3V0cHV0L2hvc3QvcG93ZXJwYzY0LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi5oOgorCisgLyogRGVmaW5lZCB0byAxIGlmIHRoZSBjdXJyZW50IGNvbXBpbGVyIGludm9jYXRpb24gcHJvdmlkZXMgYQorICAgIGZsb2F0aW5nLXBvaW50IHR5cGUgd2l0aCB0aGUgSUVFRSA3NTQgYmluYXJ5MTI4IGZvcm1hdCwgYW5kIHRoaXMgZ2xpYmMKKyAgICBpbmNsdWRlcyBjb3JyZXNwb25kaW5nICpmMTI4IGludGVyZmFjZXMgZm9yIGl0LiAgKi8KKyAjaWYgZGVmaW5lZCBfQVJDSF9QV1I4ICYmIGRlZmluZWQgX19MSVRUTEVfRU5ESUFOX18gJiYgKF9DQUxMX0VMRiA9PSAyKSBcCisgICAgICYmIGRlZmluZWQgX19GTE9BVDEyOF9fICYmICFkZWZpbmVkIF9fTk9fTE9OR19ET1VCTEVfTUFUSAorICMgZGVmaW5lIF9fSEFWRV9GTE9BVDEyOCAxCisgI2Vsc2UKKyAjIGRlZmluZSBfX0hBVkVfRkxPQVQxMjggMAorICNlbmRpZgorCitGaXhlczoKKyAtIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzVjOWRkOGZiM2I2YTEyODg4MmI2MjUwZjE5N2M4MDIzMmQ4YTNiNTMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3B1bGwvNTYxXQorU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgR2Vpc3NsZXIgPGdlaXNzb25hdG9yQHlhaG9vLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggOGUyZjJmMC4uOTYwYTVjNCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdW5pb24KKyAgIGRvdWJsZSBkOworIH0gZmZpX2RibGZsOworCistI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pCisrI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pICYmIGRlZmluZWQoX19IQVZFX0ZMT0FUMTI4KQorIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKy0tCisyLjIxLjAgKEFwcGxlIEdpdC0xMjIpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLXBvd2VycGMtZml4LWJ1aWxkLWZhaWx1cmUtb24tcG93ZXI3LWFuZC1vbGRlci01MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhN2FlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNGRjNmNjOTYxMzAwYjlkZWZmYjY0OGIxMjM3MzkwYTViZWExYzZkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDEyOjQyOjQxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBvd2VycGM6IGZpeCBidWlsZCBmYWlsdXJlIG9uIHBvd2VyNyBhbmQgb2xkZXIgKCM1MzIpCisKK0J1aWxkIGZhaWx1cmUgbG9va3MgYXM6CitgYGAKK2xpYnRvb2w6IGNvbXBpbGU6ICBwb3dlcnBjLXVua25vd24tbGludXgtZ251LWdjYyBcCisgICAgLU8yIC1tY3B1PXBvd2VycGMgLW10dW5lPXBvd2VycGMgLXBpcGUgLi4uIC1jIHNyYy9wb3dlcnBjL2ZmaS5jIC4uLgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9wb3dlcnBjL2ZmaS5jOjMzOgorc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaDo2NTo5OiBlcnJvcjogJ19faW50MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgICA2NSB8IHR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisgICAgICB8ICAgICAgICAgXn5+fn5+fn4KK2BgYAorCitUaGUgZml4IGF2b2lkcyB1c2luZyBfX2ludDEyOCBpbiBmYXZvdXIgb2YgYWxpZ25lZCBjaGFyWzE2XS4KKworQ2xvc2VzOiBodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9pc3N1ZXMvNTMxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvMDFhNzVlZDc2ZWE3ZTU3ZjFiN2E1YzE4M2UyYjFlODkwZTZhYTBmZF0KK1NpZ25lZC1vZmYtYnk6IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggNWVlMmE3MC4uOGUyZjJmMCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKyAjZWxzZQorLXR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisrdHlwZWRlZiBjaGFyIGZsb2F0MTI4WzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOworICNlbmRpZgorIAorIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9TWVNWICh2b2lkKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCmluZGV4IDg2YTdmYzkuLjYyZGFhZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2NzE5MzY5YTBkMzYwOGI0ZmYyNzM3ZGU3NGFlMjg0Nzg4YTE0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDQgRmViIDIwMTYgMTY6MjI6NTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZmZpOiBlbnN1cmUgc3lzcm9vdCBwYXRocyBhcmUgbm90IGluIGxpYmZmaS5wYworCiBsaWJmZmkncyBjb25maWd1cmUgYXNzdW1lcyB0aGF0IGNyb3NzLWNvbXBpbGVkIGJ1aWxkcyBhcmUgY29tcGxpY2F0ZWQgYW5kCiBpbnRyb2R1Y2VzIGNvbnZvbHV0ZWQgcGF0aCBtYW5pcHVsYXRpb24gaW52b2x2aW5nIGdjYyBzZWFyY2ggcGF0aHMgdG8gdGhlCiBpbnN0YWxsIHBhdGhzLCByZXN1bHRpbmcgaW4gcGF0aHMgbGlrZSAtTC91c3IvbGliLy4uL2xpYi8gYXBwZWFyaW5nIGluCkBAIC0xMSw5ICsxNiwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI3NjQzNjguLmQ1MWNlOTEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1MCw3ICszNTAsNyBAQCBBQ19BUkdfRU5BQkxFKG11bHRpLW9zLWRpcmVjdG9yeSwKK0BAIC0zNTQsNyArMzU0LDcgQEAgQUNfQVJHX0VOQUJMRShtdWx0aS1vcy1kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCiAgIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCkBAIC0yMSw0ICszMiw0IEBACiAraWYgZmFsc2U7IHRoZW4KICAgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCiAgICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgICAgdG9vbGV4ZWNkaXI9IiR7ZXhlY19wcmVmaXh9Ii8nJCh0YXJnZXRfYWxpYXMpJworICAgICB0b29sZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0nLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWJlYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgorREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKK2NvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCit0aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKK2ludGVyZmFjZSB0aGF0IGFsbG93cyBjb2RlIHdyaXR0ZW4gaW4gb25lIGxhbmd1YWdlIHRvIGNhbGwgY29kZSB3cml0dGVuIGluIGFub3RoZXIgbGFuZ3VhZ2UuICBUaGUgYGxpYmZmaScgXAorbGlicmFyeSByZWFsbHkgb25seSBwcm92aWRlcyB0aGUgbG93ZXN0LCBtYWNoaW5lIGRlcGVuZGVudCBsYXllciBvZiBhIGZ1bGx5IGZlYXR1cmVkIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlLiAgXAorQSBsYXllciBtdXN0IGV4aXN0IGFib3ZlIGBsaWJmZmknIHRoYXQgaGFuZGxlcyB0eXBlIGNvbnZlcnNpb25zIGZvciB2YWx1ZXMgcGFzc2VkIGJldHdlZW4gdGhlIHR3byBsYW5ndWFnZXMuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ5MjM4NWZlMjIxOTU5NTJmNWI5YjE5Nzg2OGJhMjY4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcG93ZXJwYy1maXgtYnVpbGQtZmFpbHVyZS1vbi1wb3dlcjctYW5kLW9sZGVyLTUzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzMTMyODllMzJmMWQzOGE5ZGY0NzcwYjAxNGEyY2E3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZmJhNzkyMjcwM2RkZmE3YTAyOGQ1MTNhYzE1YTg1YzhkNTRjOGQ2N2Y1NWZhNWE0ODAyODg1ZGM2NTIwNTYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1idWlsZGRpciIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG11bHRpbGliX2hlYWRlcgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZmZpLmgKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZmZpLSR7UFZ9IgorCisjIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KKyMgYXNzZW1ibHkKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYjY5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwb3J0YWJsZSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZXdhcmUub3JnL2xpYmZmaS8iCi1ERVNDUklQVElPTiA9ICJUaGUgYGxpYmZmaScgbGlicmFyeSBwcm92aWRlcyBhIHBvcnRhYmxlLCBoaWdoIGxldmVsIHByb2dyYW1taW5nIGludGVyZmFjZSB0byB2YXJpb3VzIGNhbGxpbmcgXAotY29udmVudGlvbnMuICBUaGlzIGFsbG93cyBhIHByb2dyYW1tZXIgdG8gY2FsbCBhbnkgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGEgY2FsbCBpbnRlcmZhY2UgZGVzY3JpcHRpb24gYXQgcnVuIFwKLXRpbWUuIEZGSSBzdGFuZHMgZm9yIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlLiAgQSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBpcyB0aGUgcG9wdWxhciBuYW1lIGZvciB0aGUgXAotaW50ZXJmYWNlIHRoYXQgYWxsb3dzIGNvZGUgd3JpdHRlbiBpbiBvbmUgbGFuZ3VhZ2UgdG8gY2FsbCBjb2RlIHdyaXR0ZW4gaW4gYW5vdGhlciBsYW5ndWFnZS4gIFRoZSBgbGliZmZpJyBcCi1saWJyYXJ5IHJlYWxseSBvbmx5IHByb3ZpZGVzIHRoZSBsb3dlc3QsIG1hY2hpbmUgZGVwZW5kZW50IGxheWVyIG9mIGEgZnVsbHkgZmVhdHVyZWQgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UuICBcCi1BIGxheWVyIG11c3QgZXhpc3QgYWJvdmUgYGxpYmZmaScgdGhhdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbnMgZm9yIHZhbHVlcyBwYXNzZWQgYmV0d2VlbiB0aGUgdHdvIGxhbmd1YWdlcy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYxMGJiMTc2ODNhMDA4OWVkNjQwNTU0MTZiMmFlMWIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvZG93bmxvYWQvdjMuMy1yYzAvbGliZmZpLTMuMy1yYzAudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkMmE4MmE3OGZhZjEwYTVlNTNjMjdkOTg2ZThmMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwM2Q2N2FhYmYxYzA1MTU3ODU1ZWEyYjFkOTk1MDI2M2ZiNjMxNjUzNmM4YzMzM2Y1YjlhYjFlYjJmMjBlY2YiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWJ1aWxkZGlyIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbXVsdGlsaWJfaGVhZGVyCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMy4zLXJjMCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGZmaS5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKLQotIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCi0jIGFzc2VtYmx5Ci1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4xLmJiCmluZGV4IDkxOGZlM2UuLjYzYWU3ODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMS5iYgpAQCAtMTksNyArMTksNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImMxNWVjZDJjOTMxN2UyYzM4NWNkM2YwNDZkMGI2MWJhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YjEyNDRiZGU0MWNhMGVlZjAzMzJjZmI1YzY3YmIxNjcyNWRmZDEwMjEyOGYzZTZmNzRmYWRjMTNhMWNmZTQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgbWltZSBtaW1lLXhkZwogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitnbnV0bHMgZGV0ZWN0cyBvdXIgb3V0ZXIgZ2l0IHRyZWVzIGFuZCBpbmplY3RzIHRoYXQgcmV2aXNpb24gaW50byBpdHMgb2JqZWN0cy4KK1RoYXQgaXNuJ3QgZGV0ZXJtaW5pc3RpYyBzbyBzdG9wIGl0LiBBbHNvIGVuc3VyZSB3ZSdyZSBub3QgbWFya2VkIGFzIGEgZGV2ZWxvcG1lbnQKK2J1aWxkIGFzIGl0cyBnaXQgZGV0ZWN0aW9uIGlzIGZhdWx0eS4KKworUlAgMjAyMC8yLzYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworCitJbmRleDogbGliZ2NyeXB0LTEuOC41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmdjcnlwdC0xLjguNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmdjcnlwdC0xLjguNS9jb25maWd1cmUuYWMKK0BAIC00NSw3ICs0NSw3IEBAIG00X2RlZmluZShbbXltNF9yZXZpc2lvbl9kZWNdLAorIG00X2RlZmluZShbbXltNF9iZXRhc3RyaW5nXSwKKyAgICAgICAgICAgbTRfZXN5c2NtZF9zKFtnaXQgZGVzY3JpYmUgLS1tYXRjaCAnbGliZ2NyeXB0LVswLTldLipbMC05XScgLS1sb25nfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhd2sgLUYtICckMyE9MHtwcmludCItYmV0YSIkM30nXSkpCistbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxtNF9pZihteW00X2JldGFzdHJpbmcsW10sW25vXSxbeWVzXSkpCisrbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxbbm9dKQorIG00X2RlZmluZShbbXltNF9mdWxsX3ZlcnNpb25dLFtteW00X3ZlcnNpb25bXW15bTRfYmV0YXN0cmluZ10pCisgCisgQUNfSU5JVChbbGliZ2NyeXB0XSxbbXltNF9mdWxsX3ZlcnNpb25dLFtodHRwOi8vYnVncy5nbnVwZy5vcmddKQorQEAgLTI1NzUsNyArMjU3NSw3IEBAIEFNX0NPTkRJVElPTkFMKFtCVUlMRF9ET0NdLCBbdGVzdCAieCRidWkKKyAjCisgIyBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZC4KKyAjCistQlVJTERfUkVWSVNJT049Im15bTRfcmV2aXNpb24iCisrQlVJTERfUkVWSVNJT049Ik5vbmUiCisgQUNfU1VCU1QoQlVJTERfUkVWSVNJT04pCisgQUNfREVGSU5FX1VOUVVPVEVEKEJVSUxEX1JFVklTSU9OLCAiJEJVSUxEX1JFVklTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgW0dJVCBjb21taXQgaWQgcmV2aXNpb24gdXNlZCB0byBidWlsZCB0aGlzIHBhY2thZ2VdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiCmluZGV4IDA0Nzg1NTcuLjRlMGViMGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjUuYmIKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtUHJlZmV0Y2gtR0NNLWxvb2stdXAtdGFibGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItQUVTLW1vdmUtbG9vay11cC10YWJsZXMtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUdDTS1tb3ZlLWxvb2stdXAtdGFibGUtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjM0OGNjNDYwMWNhMzQzMDdmYzZjZDZjOTQ1NDY3NzQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNGEyYTk0Y2I2MzdlZmY1YmRlYmJjYWY0NmY0ZDk1YzRmMjUyMDZmNDU5ODA5MzM5Y2RhZGEwZWI1NzdhYzMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhYjRmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLURvLW5vdC1mYWlsLXdoZW4tdGVzdGluZy1jb25maWctc2NyaXB0cy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDEzNzgwNTg5MDk1MWI2YjU4NWMxZDIzMDk3ZTBhNTFlOGM3YThhNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjggRmViIDIwMjAgMDk6MTk6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGZhaWwgd2hlbiB0ZXN0aW5nIGNvbmZpZyBzY3JpcHRzCisKK0luIHByZXZpb3VzIHZlcnNpb25zIHRoaXMgd2FzIG5vdCBhIGhhcmQgYSBmYWlsdXJlLCBhbmQgc28gd2VudAordW5ub3RpY2VkLiBUaGUgdGVzdCBpcyB1bnN1aXRhYmxlIGZvciBidWlsZGluZyB3aXRoIHN5c3Jvb3RzIGFueXdheSBhcyB0aGUKK2ZhaWx1cmUgaXMgZHVlIHRvIHRoYXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTMwMzk1NC4uNzYzMDU0MCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMzQ0LDcgKzM0NCw2IEBAIGdwZy1lcnJvci1jb25maWc6IGdwZ3J0LWNvbmZpZyBncGctZXJyb3ItY29uZmlnLW9sZAorIAllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIm5vIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIioqKiAgUGxlYXNlIHJlcG9ydCB0byA8aHR0cHM6Ly9idWdzLmdudXBnLm9yZz4gd2l0aCBncGctZXJyb3ItY29uZmlnLXRlc3QubG9nIjsgXAorLQkgIGV4aXQgMTsgXAorIAlmaQorIAljcCBncGctZXJyb3ItY29uZmlnLW9sZCAkQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzNmQxMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Rldi5nbnVwZy5vcmcvVDQ0NTldCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1Gcm9tIDc4NjUwNDFjNzdmNGY3MDA1MjgyZjEwZjliNjY2NmIxOTA3MmZiZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IE1vbiwgMTUgQXByIDIwMTkgMTU6MTA6NDQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXdrOiBQcmVwYXJlIGZvciBHYXdrIDUuMC4KLQotKiBzcmMvTWFrZWZpbGUuYW06IFVzZSBwa2dfbmFtZXNwYWNlIChpbnN0ZWFkIG9mIG5hbWVzcGFjZSkuCi0qIHNyYy9ta2Vycm5vcy5hd2s6IExpa2V3aXNlLgotKiBsYW5nL2NsL21rZXJyY29kZXMuYXdrOiBEb24ndCBlc2NhcGUgIyBpbiByZWdleHAuCi0qIHNyYy9ta2VycmNvZGVzLmF3aywgc3JjL21rZXJyY29kZXMxLmF3aywgc3JjL21rZXJyY29kZXMyLmF3azogRGl0dG8uCi0KLS0tCi0KLUluIEdhd2sgNS4wLCByZWdleHAgcm91dGluZXMgYXJlIHJlcGxhY2VkIGJ5IEdudWxpYiBpbXBsZW1lbnRhdGlvbiwKLXdoaWNoIG9ubHkgYWxsb3dzIGVzY2FwaW5nIHNwZWNpZmljIGNoYXJhY3RlcnMuCi0KLUdudVBHLWJ1Zy1pZDogNDQ1OQotUmVwb3J0ZWQtYnk6IE1hcml1cyBTY2hhbXNjaHVsYQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0tLS0KLSBsYW5nL2NsL21rZXJyY29kZXMuYXdrIHwgIDIgKy0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2Rlcy5hd2sgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczEuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczIuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJub3MuYXdrICAgICAgIHwgIDIgKy0KLSBzcmMvbWtzdHJ0YWJsZS5hd2sgICAgIHwgMTAgKysrKystLS0tLQotIDcgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLUBAIC0xMjIsNyArMTIyLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yOTMsNyArMjkzLDcgQEAgY29kZS1mcm9tLWVycm5vLmg6IG1rZXJyY29kZXMkKEVYRUVYVF9GTwotIAotIGVycm5vcy1zeW0uaDogTWFrZWZpbGUgbWtzdHJ0YWJsZS5hd2sgZXJybm9zLmluCi0gCSQoQVdLKSAtZiAkKHNyY2RpcikvbWtzdHJ0YWJsZS5hd2sgLXYgdGV4dGlkeD0yIC12IG5vZ2V0dGV4dD0xIFwKLS0JCS12IHByZWZpeD1HUEdfRVJSXyAtdiBuYW1lc3BhY2U9ZXJybm9zXyBcCi0rCQktdiBwcmVmaXg9R1BHX0VSUl8gLXYgcGtnX25hbWVzcGFjZT1lcnJub3NfIFwKLSAJCSQoc3JjZGlyKS9lcnJub3MuaW4gPiRACi0gCi0gCi0tLS0gYS9zcmMvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL3NyYy9ta2VycmNvZGVzLmF3awotQEAgLTg1LDcgKzg1LDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMxLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMxLmF3awotQEAgLTgxLDcgKzgxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMyLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMyLmF3awotQEAgLTkxLDcgKzkxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJybm9zLmF3awotKysrIGIvc3JjL21rZXJybm9zLmF3awotQEAgLTgzLDcgKzgzLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rc3RydGFibGUuYXdrCi0rKysgYi9zcmMvbWtzdHJ0YWJsZS5hd2sKLUBAIC03Nyw3ICs3Nyw3IEBACi0gIwotICMgVGhlIHZhcmlhYmxlIHByZWZpeCBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2ggbWVzc2FnZS4KLSAjCi0tIyBUaGUgdmFyaWFibGUgbmFtZXNwYWNlIGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaAotKyMgVGhlIHZhcmlhYmxlIHBrZ19uYW1lc3BhY2UgY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoCi0gIyB2YXJpYWJsZSBhbmQgbWFjcm8gbmFtZS4KLSAKLSBCRUdJTiB7Ci1AQCAtMTAyLDcgKzEwMiw3IEBAIGhlYWRlciB7Ci0gICAgICAgcHJpbnQgIi8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29tcGxleCBzdHJpbmcgdGFibGUgaXMgdG8gcHJvZHVjZSI7Ci0gICAgICAgcHJpbnQgIiAgIG9wdGltYWwgY29kZSB3aXRoIGEgbWluaW11bSBvZiByZWxvY2F0aW9ucy4gICovIjsKLSAgICAgICBwcmludCAiIjsKLS0gICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBuYW1lc3BhY2UgIm1zZ3N0cltdID0gIjsKLSsgICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBwa2dfbmFtZXNwYWNlICJtc2dzdHJbXSA9ICI7Ci0gICAgICAgaGVhZGVyID0gMDsKLSAgICAgfQotICAgZWxzZQotQEAgLTExMCw3ICsxMTAsNyBAQCBoZWFkZXIgewotIH0KLSAKLSAhaGVhZGVyIHsKLS0gIHN1YiAoL1wjLisvLCAiIik7Ci0rICBzdWIgKC8jLisvLCAiIik7Ci0gICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgotIAotICAgaWYgKC9eJC8pCi1AQCAtMTUwLDcgKzE1MCw3IEBAIEVORCB7Ci0gICBlbHNlCi0gICAgIHByaW50ICIgIGdldHRleHRfbm9vcCAoXCIiIGxhc3RfbXNnc3RyICJcIik7IjsKLSAgIHByaW50ICIiOwotLSAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBuYW1lc3BhY2UgIm1zZ2lkeFtdID0iOwotKyAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBwa2dfbmFtZXNwYWNlICJtc2dpZHhbXSA9IjsKLSAgIHByaW50ICIgIHsiOwotICAgZm9yIChpID0gMDsgaSA8IGNvZGVkX21zZ3M7IGkrKykKLSAgICAgcHJpbnQgIiAgICAiIHBvc1tpXSAiLCI7Ci1AQCAtMTU4LDcgKzE1OCw3IEBAIEVORCB7Ci0gICBwcmludCAiICB9OyI7Ci0gICBwcmludCAiIjsKLSAgIHByaW50ICJzdGF0aWMgR1BHX0VSUl9JTkxJTkUgaW50IjsKLS0gIHByaW50IG5hbWVzcGFjZSAibXNnaWR4b2YgKGludCBjb2RlKSI7Ci0rICBwcmludCBwa2dfbmFtZXNwYWNlICJtc2dpZHhvZiAoaW50IGNvZGUpIjsKLSAgIHByaW50ICJ7IjsKLSAgIHByaW50ICIgIHJldHVybiAoMCA/IDAiOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExYWIwNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWNkOTFlM2FkMTI2NWEwYzI2OGVmYWQ1NDFhMzkzNDVlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9ZjAxY2RmY2Y3NDdhZjUzODA1OTBjZmQ5YmJmZWFhZjciCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmY0MzdmMzk3ZTg1OGE5MTI3Yjc2YzBkODdmYTVlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWJkOTg0MzcyMDhjMTYzMTc1YzI5NDUzZjg2ODEwOTRiY2FmOTI5NjhhMTVjYWZiMWEyNzYwNzZiMzNjOTdjIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9ncGdydC1jb25maWciCi0KLUNQUEZMQUdTICs9ICItUCIKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlUQVJHRVRfRklMRT1saW51eC1nbnUKLQlpZiBbICR7VEFSR0VUX09TfSA9ICJtaW5ndzMyIiBdOyB0aGVuCi0JCSMgVGhlcmUgYXJlIG5vIGFyY2ggc3BlY2lmaWMgc3lzY2ZnIGZpbGVzIGZvciBtaW5ndzMyCi0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9BUkNIfSA9ICJhcmMiIF07IHRoZW4KLQkJIyBBUkMgc3lzY2ZnIGZpbGUgaXMgYXV0b21hdGljYWxseSBhbGlhc2VkIHRvIGk2ODYtcGMtbGludXgtZ251Ci0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCi0JCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQotCWZpCi0KLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtdW5rbm93bi1saW51eC1nbnU7OwotCSAgbWlwczY0KikgICAgVFVQTEU9bWlwczY0ZWwtdW5rbm93bi1saW51eC1nbnVhYmk2NCA7OwotCSAgbWlwcyplbCkgICAgVFVQTEU9bWlwc2VsLXVua25vd24tbGludXgtZ251IDs7Ci0JICBtaXBzKikgICAgICBUVVBMRT1taXBzLXVua25vd24tbGludXgtZ251IDs7Ci0JICB4ODZfNjQpICAgICBUVVBMRT14ODZfNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYykgICAgICAgIFRVUExFPXBvd2VycGMtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYzY0KSAgICAgIFRVUExFPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgcHBjNjRsZSkgICAgVFVQTEU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7Ci0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGctZXJyb3IvZXJyb3JyZWYudHh0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1jZDkxZTNhZDEyNjVhMGMyNjhlZmFkNTQxYTM5MzQ1ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWYwMWNkZmNmNzQ3YWY1MzgwNTkwY2ZkOWJiZmVhYWY3IgorCisKK1NFQ1RJT04gPSAibGlicyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWZhaWwtd2hlbi10ZXN0aW5nLWNvbmZpZy1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzI5ZjIyZDkxNzQ5NGZkYzRiNTRmY2U1YWE2NTQ3YzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMyZDZmZjcyYTczY2Y3OTc5N2Y3ZjJkMDM5ZTk1ZTljNmY5MmYwYzE0NTAyMTU0MTA4NDBhYjYyYWVhOTc2MyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZ3BncnQtY29uZmlnIgorCitDUFBGTEFHUyArPSAiLVAiCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJVEFSR0VUX0ZJTEU9bGludXgtZ251CisJaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgorCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfQVJDSH0gPSAiYXJjIiBdOyB0aGVuCisJCSMgQVJDIHN5c2NmZyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgYWxpYXNlZCB0byBpNjg2LXBjLWxpbnV4LWdudQorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgorCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KKwlmaQorCisJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXVua25vd24tbGludXgtZ251OzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGMpICAgICAgICBUVVBMRT1wb3dlcnBjLXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NCkgICAgICBUVVBMRT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHBwYzY0bGUpICAgIFRVUExFPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OworCWVzYWMKKworCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgorCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKKwkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZ3BnLWVycm9yLmggZ3BncnQuaAorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliZTg5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT05NzQxYzM0NmVlZjU2MTMxMTYzZTEzYjlkYjEyNDFiMyIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDYzYTU5MjQ0YzY3NjdiOGU2N2IyOTM3OTQwNWUyOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM4YTIxYzJiNzMyZWNlNGEzM2U1Yzg2Mjk3MGI0ZjM1YTg1NDhiYmNkYTUwZGU1Njk1ZjZmYzIxMWFjNGQ5NyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5Ci0JTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgotCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCi0JJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCi1QQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCi0jIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCi0KLSMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KLUVYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKLSMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0Ci1FWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotICAgIHNlZCAtaSBcCi0gICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKLSAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNDczZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT1mNzVkMjkyN2QzYzFlZDI0MTRlZjcyMDQ4ZjVhZDY0MCBcCisgICAgICAgICAgICAgICAgICAgICIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOGE1ZDA3YTdmYmE5ZTczYTg1ZTY3Zjc2MjU4YmYwNDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGFiZTY2ZGYxZWE4MjZlNTdkYjdmMjgxYzcwNGVkZTgzNGM4NDEzOTAxMmU2YzY4NmVhN2FkYWZkNGU3NjNmYyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5CisJTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgorCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCisJJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUworfQorCitQQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCitQQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCisjIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCisKKyMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KK0VYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKKyMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0CitFWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworICAgIHNlZCAtaSBcCisgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKKyAgICAgICAtZSAncywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGcnIFwKKyAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZmZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gY2UwOTE3MTg3MTY0MDAxMTlkNmJlNmJkNjM3YzBlM2Y0ZjZjYTMxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgTm92IDIwMTkgMDg6MDc6NDEgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBtYW4gcGFnZXMgcmVwcm9kdWNpYmxlCisKK0luc3RydWN0cyB0aGUgbWFuIHBhZ2UgdG8gYmUgZ3ppcCdlZCB3aXRob3V0IHRoZSBmaWxlIG5hbWUgb3IgdGltZXN0YW1wCitzbyB0aGF0IGl0IGJ1aWxkcyByZXByb2R1Y2libHkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS9wdWxsLzE0XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAyZTc4NjA3Li44NjBiNzIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNjAsNyArNjAsNyBAQCBjcHBjaGVjazoKKyBpbnN0YWxsOgorIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMworIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCistCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKysJZ3ppcCAtbiAtZiAtOSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLyQoTkFNRSkuMworIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikKKyAJJChJTlNUQUxMX1NUUklQKSAtbSAwNzU1IGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS8KKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTliMjUyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDA2MGI5YjQxNDdmNmU1ZmYzODZhOGIwMTc3OTYxMThkNzgzZTU5ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IFdlYmVyIDxtYXR0aGV3LndlYmVyQHJvY2t3ZWxsY29sbGlucy5jb20+CitEYXRlOiBUdWUsIDIyIE9jdCAyMDE5IDEyOjQ0OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBjbGVhbnVwIGluc3RhbGwgZm9yIHJlYnVpbGRzCisKK1N1cHBvcnQgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBhbmQgcmVkZXBsb3kgd2l0aG91dCBhIGNsZWFuLiBUaGlzCityZXF1aXJlZCBzb21lIGZvcmNlIGxpbmtpbmcgYW5kIG1hbiBhcmNoaXZlIGNyZWF0aW9uLgorCitQcm92aWRlIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBzdHJpcHBpbmcgb2YgdGhlIHNoYXJlZCBsaWIgZm9yCitjYXNlcyB3aGVyZSBhIGVtYmVkZGVkIHRhcmdldCBidWlsZCBtYXkgd2FudCB0byBjb250cm9sIHN0cmlwcGluZworb3IgcHJvdmlkZSBjcm9zcyBhcmNoIHRvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFswNjBiOWI0MTQ3ZjZlNWZmMzg2YThiMDE3Nzk2MTE4ZDc4M2U1OWZhXQorU2lnbmVkLW9mZi1ieTogTWF0dGhldyBXZWJlciA8bWF0dGhldy53ZWJlckByb2Nrd2VsbGNvbGxpbnMuY29tPgorU2lnbmVkLW9mZi1ieTogU3RlcGhhbiBNdWVsbGVyIDxzbXVlbGxlckBjaHJvbm94LmRlPgorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAxMCArKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRmZjA2OWIuLjJlNzg2MDcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNCw2ICsxNCw4IEBAIExJQkRJUiA6PSBsaWIKKyAjIGluY2x1ZGUgdGFyZ2V0IGRpcmVjdG9yeQorIElOQ0RJUiA6PSBpbmNsdWRlCisgCisrSU5TVEFMTF9TVFJJUCA/PSBpbnN0YWxsIC1zCisrCisgTkFNRSA6PSBqaXR0ZXJlbnRyb3B5CisgTElCTUFKT1I9JChzaGVsbCBjYXQgaml0dGVyZW50cm9weS1iYXNlLmMgfCBncmVwIGRlZmluZSB8IGdyZXAgTUFKVkVSU0lPTiB8IGF3ayAne3ByaW50ICQkM30nKQorIExJQk1JTk9SPSQoc2hlbGwgY2F0IGppdHRlcmVudHJvcHktYmFzZS5jIHwgZ3JlcCBkZWZpbmUgfCBncmVwIE1JTlZFUlNJT04gfCBhd2sgJ3twcmludCAkJDN9JykKK0BAIC01OCwxNSArNjAsMTUgQEAgY3BwY2hlY2s6CisgaW5zdGFsbDoKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMKKyAJaW5zdGFsbCAtbSA2NDQgZG9jLyQoTkFNRSkuMyAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLworLQlnemlwIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCisrCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCistCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisrCSQoSU5TVEFMTF9TVFJJUCkgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKQorIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS5oICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpLworIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS1iYXNlLXVzZXIuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KKyAJJChSTSkgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKysJbG4gLXNmIGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpCisrCWxuIC1zZiBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKyAKKyBjbGVhbjoKKyAJQC0gJChSTSkgJChOQU1FKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZmY0ZmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMDBjZWZjYTBlZWZlY2VjNjU3OTY5YjUwY2Q0ZTFlZDViMDU3YTg1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjUgT2N0IDIwMTggMTY6MzA6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGRvX2luc3RhbGwgZmFpbHVyZSBvbiBvZQotCi0tIERvIG5vdCBzdHJpcCBhdCBkb19pbnN0YWxsCi0KLS0gQ3JlYXRlIGluY2x1ZGVkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1ZTMxMjc2Li43NmZjYmZhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNTEsNyArNTEsOCBAQCBpbnN0YWxsOgotIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCi0gCWd6aXAgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKLSAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCi0tCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHkuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHktYmFzZS11c2VyLmggJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCi0gCSQoUk0pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28uJChMSUJNQUpPUikKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1YjRlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgUk5HIGJhc2VkIG9uIENQVSB0aW1pbmcgaml0dGVyIgotREVTQ1JJUFRJT04gPSAiVGhlIEppdHRlciBSTkcgcHJvdmlkZXMgYSBub2lzZSBzb3VyY2UgdXNpbmcgdGhlIENQVSBleGVjdXRpb24gdGltaW5nIGppdHRlci4gXAotSXQgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBzeXN0ZW0gcmVzb3VyY2Ugb3RoZXIgdGhhbiBhIGhpZ2gtcmVzb2x1dGlvbiB0aW1lIFwKLXN0YW1wLiBJdCBpcyBhIHNtYWxsLXNjYWxlLCB5ZXQgZmFzdCBlbnRyb3B5IHNvdXJjZSB0aGF0IGlzIHZpYWJsZSBpbiBhbG1vc3QgXAotYWxsIGVudmlyb25tZW50cyBhbmQgb24gYSBsb3Qgb2YgQ1BVIGFyY2hpdGVjdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaHJvbm94LmRlL2plbnQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIrIHwgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTUyMzY1NzUyYjM2Y2ZjZDdmOTYwMWQ4MGRlN2Q4YzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ncGx2MjttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ic2Q7bWQ1PTY2YTVjZWRhZjYyYzRiMjYzNzAyNWYwNDlmOWI4MjZmIFwKLSAgICAgICAgICAgICAgICAgICAiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc211ZWxsZXJERC9qaXR0ZXJlbnRyb3B5LWxpYnJhcnkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gImY1YTgwYzZmM2ZjYzZkZWViZDBlYWJmNzUzMjRmNDhhZWQxYWZiY2UiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1MREZMQUdTICs9ICItV2wsLU8wIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAotICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IgotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9saWJqaXR0ZXJlbnRyb3B5XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMGVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIFJORyBiYXNlZCBvbiBDUFUgdGltaW5nIGppdHRlciIKK0RFU0NSSVBUSU9OID0gIlRoZSBKaXR0ZXIgUk5HIHByb3ZpZGVzIGEgbm9pc2Ugc291cmNlIHVzaW5nIHRoZSBDUFUgZXhlY3V0aW9uIHRpbWluZyBqaXR0ZXIuIFwKK0l0IGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgc3lzdGVtIHJlc291cmNlIG90aGVyIHRoYW4gYSBoaWdoLXJlc29sdXRpb24gdGltZSBcCitzdGFtcC4gSXQgaXMgYSBzbWFsbC1zY2FsZSwgeWV0IGZhc3QgZW50cm9weSBzb3VyY2UgdGhhdCBpcyB2aWFibGUgaW4gYWxtb3N0IFwKK2FsbCBlbnZpcm9ubWVudHMgYW5kIG9uIGEgbG90IG9mIENQVSBhcmNoaXRlY3R1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hyb25veC5kZS9qZW50Lmh0bWwiCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5NWFhZGJkZmFlN2VkODEyYmIyYjdiODZlYjU5ODFjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuZ3BsdjI7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuYnNkO21kNT02NmE1Y2VkYWY2MmM0YjI2MzcwMjVmMDQ5ZjliODI2ZiBcCisgICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoIgorU1JDUkVWID0gIjkzM2E0NGYzM2VkM2Q2NjEyZjdjZmFhN2FkMTIwN2M4ZGE0ODg2YmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitMREZMQUdTICs9ICItV2wsLU8wIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAorICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTExfU1RSSVA9Imluc3RhbGwiCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlL291dC1vZi10cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Njc4OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1JbiBvdXQtb2YtdHJlZSBidWlsZHMgdGhlICNpbmNsdWRlIGZhaWxzIGJlY2F1c2UgJHNyY2RpciBpc24ndCBpbiB0aGUgaW5jbHVkZSBwYXRoLiAgU2V0IENQUEZMQUdTIHNvIHRoYXQgaXQgaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3IxNzUwXQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotSW5kZXg6IGNvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvY29uZmlndXJlLmFjCShyZXZpc2lvbiAxNzQ5KQotKysrIGIvY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCi1AQCAtMTU5LDYgKzE1OSw4IEBACi0gCi0gaWYgdGVzdCAiJGVuYWJsZV9qaXQiID0gImF1dG8iOyB0aGVuCi0gICBBQ19MQU5HKEMpCi0rICBTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotKyAgQ1BQRkxBR1M9LUkkc3JjZGlyCi0gICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLSAgICNkZWZpbmUgU0xKSVRfQ09ORklHX0FVVE8gMQotICAgI2luY2x1ZGUgInNsaml0L3Nsaml0Q29uZmlnSW50ZXJuYWwuaCIKLUBAIC0xNjUsNiArMTY3LDcgQEAKLSAgICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfVU5TVVBQT1JURUQgJiYgU0xKSVRfQ09ORklHX1VOU1VQUE9SVEVEKQotICAgI2Vycm9yIHVuc3VwcG9ydGVkCi0gICAjZW5kaWZdXSldLCBlbmFibGVfaml0PXllcywgZW5hYmxlX2ppdD1ubykKLSsgIENQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0gZmkKLSAKLSAjIEhhbmRsZSAtLWRpc2FibGUtcGNyZWdyZXAtaml0IChlbmFibGVkIGJ5IGRlZmF1bHQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGEzMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iMTU4OGQzYmI0Y2IwZTFmNWE1OTdkOTA4ZjhjNWIzNyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODBiMzU1ZjJkY2U5MDlhMmUyNDI0ZjVjNzllZGRiNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzU1MTRkZmYwY2NkZjAyYjU1YmQyZTlmYTU4NmExYjlkMDFmNjIzMzJjMzM1NmUzNzllYWJiNzVmNzg5ZDhhYSIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotICAgIC0tZW5hYmxlLXBjcmUyLTE2IFwKLSAgICAtLWVuYWJsZS1wY3JlMi0zMiBcCi0iCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmUyLTE2IGxpYnBjcmUyLTMyIHBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlMi0xNiA9ICIke2xpYmRpcn0vbGlicGNyZTItMTYuc28uKiIKLUZJTEVTX2xpYnBjcmUyLTMyID0gIiR7bGliZGlyfS9saWJwY3JlMi0zMi5zby4qIgotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zNC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWIxNTg4ZDNiYjRjYjBlMWY1YTU5N2Q5MDhmOGM1YjM3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjgwYjYyZGVkMTNmOWNjZjJmYWMxNmVlNTI4NjM2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NGM0NzNmZmFiYTllMTNkYjY5NTFmZDE0NmUwMTQzZmU5ODg3ODUyY2U3MzQwNmEwMzI3N2FmMWQ5Yjc5OGNhIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWEyMmZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKLWV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAotaGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAotdG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgotU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT05MWJlZTU5ZDFiMzI3ZWIxNTk5YjRjNjczZTJmYjNkMSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL291dC1vZi10cmVlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MzYyMjJlNzllMzkyYzNkOTVkY2M1NDVmMjRmOThjNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWU3NjI1MjAwMDMwMTM4MzRhYzFhZGI0YTkzOGQ1M2IyMmEyMTYzNDFjMDYxYjBjZjA1NjAzYjI5MGZhZjZiIgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIGppdCIKLQotUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgotUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgotUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgotUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKLVBBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKLVBBQ0tBR0VDT05GSUdbaml0XSA9ICItLWVuYWJsZS1qaXQ9YXV0bywtLWRpc2FibGUtaml0IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXV0ZiIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCi0KLVNVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgotU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKLVNVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgotRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKLUZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKLUZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgotRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgotRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAotCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKLQlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCi0JICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCi0JZG9uZQotCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKLQkgIGRvIGNwICR7U30vJGkgJHQ7IFwKLQlkb25lCi0JIyBTa2lwIHRoZSBmcl9GUiBsb2NhbGUgdGVzdC4gSWYgdGhlIGxvY2FsZSBmcl9GUiBpcyBmb3VuZCwgaXQgaXMgdGVzdGVkLgotCSMgSWYgbm90IGZvdW5kLCB0aGUgdGVzdCBpcyBza2lwcGVkLiBUaGUgdGVzdCBwcm9ncmFtIGFzc3VtZXMgZnJfRlIgaXMgbm9uLVVURi04Ci0JIyBsb2NhbGUgc28gdGhlIHRlc3QgZmFpbHMgaWYgZnJfRlIgaXMgVVRGLTggbG9jYWxlLgotCXNlZCAtaSAtZSAnczpkbzM9eWVzOmRvMz1ubzpnJyAke0R9JHtQVEVTVF9QQVRIfS9SdW5UZXN0IAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDcxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCkBAIC0wLDAgKzEsNzUgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTNiYjM4MWE2NmE1Mzg1YjI0NmQ0ODc3OTIyZTc1MTFlIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjcmUtbmFtZS1jb2xsaXNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Y3MzI2MjA0Y2M0NmM3NTViNWIyNjA4MDMzZDlkMjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkxMDg2NThiMjNiM2VjNTA1OGVkYzlmNjZhYzU0NWVhMTlmOTUzNzIzNGJlMWVjNjJiNzE0Yzg0Mzk5MzY2ZCIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyBqaXQiCisKK1BBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKK1BBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKK1BBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKK1BBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCitQQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCitQQUNLQUdFQ09ORklHW2ppdF0gPSAiLS1lbmFibGUtaml0PWF1dG8sLS1kaXNhYmxlLWppdCIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS11dGYiCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgorCitTVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKK1NVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCitTVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK1NVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKK0ZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCitGSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCitGSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKK0ZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKK0ZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKKwljcCAtciAke1N9L3Rlc3RkYXRhICR0CisJZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAorCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAorCWRvbmUKKwlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCisJICBkbyBjcCAke1N9LyRpICR0OyBcCisJZG9uZQorCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KKwkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAorCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KKwlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MzQ0NTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40LzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4NWY3Yjc0ZmM2MDIyMTQyOTc5MjhhZmUwOTM0N2MzMWQ2OTYxNzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEZlYiAyMDE5IDE0OjIxOjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBlbmZvcmNlIG5vLWludHJvc3BlY3Rpb24gd2hlbiBjcm9zcy1idWlsZGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC9jb21taXQvN2VmNWVjNjBjMzNlMjU0YmNkOTE1OTM2YmVhM2YwNGJhMGZlMjI3M10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMjU4ODdmOS4uNjI2MWE3YyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTI4MSw3ICsyODEsNyBAQCBlbmFibGVfZ25vbWUgPSBnZXRfb3B0aW9uKCdnbm9tZScpIGFuZCBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnCi0gIyBGSVhNRTogb25jZSB3ZSBzdGFydCB0byByZXF1aXJlIG1lc29uIDAuNDkuMCsgYW5kIGdub21lLWludHJvc3BlY3Rpb24gMS41OC4xKwotICMgdGhlIHdlIGNhbiBlbmFibGUgdGhlIGludHJvc3BlY3Rpb24gZXZlbiBmb3IgdGhlIHN0YXRpYyBidWlsZC4gU2VlCi0gIyBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9wdWxsLzQ0NzguCi0tZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBhbmQgbm90IGlzX3N0YXRpY19saWJyYXJ5Ci0rZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgaXNfc3RhdGljX2xpYnJhcnkKLSAKLSAjIyMjIyMjIyMjIyMKLSAjIFZhbGEgQVBJICMKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Ni40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVmOTEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSBsaWJwc2wiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyMDE2ZDgwZWNhZTRjZjhlYjQxNjYzMTA0OWEyNzNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMDg5ODRmMWVlZTFjNGY4YzExM2E5YzE3NjNiMmIyMmQ5ODFiZDgxMWIwY2M4MmE5ZjNmMWFhNjMyMjg3NzkiCi0KLUNWRV9QUk9EVUNUID0gImxpYnNvdXAiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgotCi1pbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRGdub21lPXRydWUsLURnbm9tZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItRGdzc2FwaT10cnVlLC1EZ3NzYXBpPWZhbHNlLGtyYjUiCi0KLUVYVFJBX09FTUVTT05fYXBwZW5kID0gIiAtRHZhcGk9ZmFsc2UiCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKLQotIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKLSMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50Ci0jIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgotCi0jIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY4LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzFiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIGxpYnBzbCIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNjAzZjNhOTQ1Y2Q2ZWNjMWZkYTY0NGQ3ODUzYjNiODEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmQ1MGIxMjkyMmNjNTE2YWI2YTdjMzU4NDRkNDJmOWM4YTMzMTY2OGJiZGYxMzkyMzI3NDNkODI1ODJiMzI5NCIKKworQ1ZFX1BST0RVQ1QgPSAibGlic291cCIKKworUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCisKK2luaGVyaXQgbWVzb24gZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICdlbmFibGVkJworR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICdkaXNhYmxlZCcKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURnbm9tZT10cnVlLC1EZ25vbWU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURnc3NhcGk9ZW5hYmxlZCwtRGdzc2FwaT1kaXNhYmxlZCxrcmI1IgorCitFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgLUR2YXBpPWRpc2FibGVkIC1EdGxzX2NoZWNrPWZhbHNlIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKKyMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCisjIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAorIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKKyMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKKworIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KK1JSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTE3ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxYzc1ZDU5MDIxMjdmOTRhYjU1NmNlMDM5YjM2OWNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYjk5NzFiZjNmMWM0NDNlZGQ2YzA5ZTdiZjVmZjNiNDM1MzFlNzc4ODQxZjE2Mzc3YTgxMmM4ZmVlYjMzNTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjBhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEyLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ5MjNhNDJjZTM4ZTMzZTg4MzMxMzAwM2M4YWZkNTU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwOWIxYmU1MDY5ODllMWQyNjU0MzE5NGRmMWE3OTIxMmJlOTkwZmU1ZDRmZDg0ZjM0ZjAxOWVmZWQ5ODlmOTciCisKK1MgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgoraW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9uby1kbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU2YmI4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUFzIGFsbCBpbnZva2VzIGFsbC1yZWN1cnNpdmUgd2hpY2ggdXNlcyBzdWItbWFrZXMgdG8gaW52b2tlIGFsbC1hbSwgdGhlCi1yZXN1bHRpbmcgbWFrZWZpbGUgd2FudHMgdG8gYnVpbGQgbGlidXNiLTEuMC5sYSB0d2ljZS4gSW4gbm9uLXBhcmFsbGVsIGJ1aWxkcwotdGhlIHNlY29uZCBhdHRlbXB0IGlzIHNraXBwZWQgYXMgdGhlIHRhcmdldCBhbHJlYWR5IGV4aXN0cywgYnV0IGluIGhpZ2hseQotcGFyYWxsZWwgYnVpbGRzIGl0J3MgbGlrZWx5IHRoYXQgdHdvIG1ha2VzIHdpbGwgYmUgYnVpbGRpbmcgbGlidXNiLTEuMC5sYSBhdCB0aGUKLXNhbWUgdGltZS4KLQotU29sdmUgdGhpcyBieSByZW1vdmluZyB0aGUgZXhwbGljaXQgYWxsIHRhcmdldCwgd2hpY2ggYXMgbGlidXNiLTEuMC5kbGwgaXNuJ3QKLWJ1aWx0IHVuZGVyIExpbnV4IGlzIHJlZHVuZGFudCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xpYnVzYi9NYWtlZmlsZS5hbSBiL2xpYnVzYi9NYWtlZmlsZS5hbQotaW5kZXggMGNhYjBhMC4uYzg4MDIxMyAxMDA2NDQKLS0tLSBhL2xpYnVzYi9NYWtlZmlsZS5hbQotKysrIGIvbGlidXNiL01ha2VmaWxlLmFtCi1AQCAtMSwyICswLDAgQEAKLS1hbGw6IGxpYnVzYi0xLjAubGEgbGlidXNiLTEuMC5kbGwKLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOWQ3NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjYyNjc4ODlkYWVhZDQ3Njc0ZGY5MzNjZWE5Y2FjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWFlYjlkNTlhNGZkYjgwMGQzMjlhNTQ1YzJlNjc5OWY3MzIzNjIxOTNiNDY1ZWExOThmMmFhMjc1NTE4MTU3IgotCi1TID0gIiR7V09SS0RJUn0vbGlidXNiLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ1ZGV2IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgc3RyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotZG9faW5zdGFsbF9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS90ZXN0cy8ubGlicy9zdHJlc3MgJHtEfSR7UFRFU1RfUEFUSH0gICAgICAgICAKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28uKiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvICR7YmFzZV9saWJkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDY1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJlNzllZDRhNGE0NDAxNjlkZWVjOGJlYWFjNmFhZTMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmYzE3YjJlZjM1MDI3NTc2NDFiZjhmZTJjMTRhZDg2ZWM4NjMwMmEyYjc4NWFiY2IwODA2ZmQwM2FhMTIwMWYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ1c2ItJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInVkZXYiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsdWRldiIKKworRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBzdHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitkb19pbnN0YWxsX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3Rlc3RzLy5saWJzL3N0cmVzcyAke0R9JHtQVEVTVF9QQVRIfSAgICAgICAgIAorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vKi5zby4qIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28gJHtiYXNlX2xpYmRpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYgppbmRleCBhZDM3YjVhLi4xOTYxYmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjM0LmJiCkBAIC0yMCw3ICsyMCw3IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0veHNsdC1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAkjIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIuCkBAIC00Myw2ICs0MywxMCBAQAogICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgb2VfbXVsdGlsaWJfaGVhZGVyIGxpYnhzbHQveHNsdGNvbmZpZy5oCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4yLjIuYmIKaW5kZXggZmJkMTk5MjAuLjUxMDVjZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCkBAIC0xLDEzICsxLDEzIEBACiBTVU1NQVJZID0gIkxpYllBTUwgaXMgYSBZQU1MIDEuMSBwYXJzZXIgYW5kIGVtaXR0ZXIgd3JpdHRlbiBpbiBDLiIKIERFU0NSSVBUSU9OID0gIkxpYllBTUwgaXMgYSBDIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIGVtaXR0aW5nIGRhdGEgaW4gWUFNTCAxLjEsIFwKIGEgaHVtYW4tcmVhZGFibGUgZGF0YSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5eWFtbC5vcmcvd2lraS9MaWJZQU1MIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKIFNFQ1RJT04gPSAibGlicy9kZXZlbCIKIAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNzZiNGM2OWJmY2Y4MjMxM2JiZGMwMzkzYjA0NDM4YSIKIAotU1JDX1VSSSA9ICJodHRwOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9saWJ5YW1sL3lhbWwtJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI1NGJmMTFjY2I4YmM0ODhiNWIzYmVjOTMxZjViNzBkYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTkxMDBhYjYxMDQ3ZmQ5YmQzOTViY2VmM2NlNTQwMzM2NWNhZmQ1NWMxZTBkMDI5OWNkZTE0OTU4ZTQ3YmU5IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCmluZGV4IDAzMDU5MTcuLjAwYzJkYzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvIgogTElDRU5TRSA9ICJMR1BMdjMrIgogU0VDVElPTiA9ICJkZXZlbCIKIApAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAiCiBERVBFTkRTID0gImdtcCBhdXRvY29uZi1hcmNoaXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMjBmYmM0NDYzZDRjOGNiMWU1NjY5MjlkOGFkYzRmOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDNiZTcwODYwNGVhZTBlNDJkNTc4YmE5M2IzOTBjMmExNDVmMTc3NDNhNzQ0ZDhmM2Y4YzJhZDU4NTVhMzhhIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzY2Q2NzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAxNDdmM2MyYWNiZDk2ZDQ0MDI1Y2VjMTE4MDBkZWQwMjgyMzI3NzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggU2VwIDIwMTcgMTc6MjI6NDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWQ6IEZpeCBidWlsZCB3aXRoIG11c2wKLQotVGhlIE1JUFMgc3BlY2lmaWMgaGVhZGVyIDxzZ2lkZWZzLmg+IGlzIG5vdCBwcm92aWRlZCBieSBtdXNsCi1saW51eCBrZXJuZWwgaGVhZGVycyBwcm92aWRlIDxhc20vc2dpZGVmcy5oPiB3aGljaCBoYXMgc2FtZSBkZWZpbml0aW9ucwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotaW5kZXggNjQwYjE5Yy4uMzEyOTZhOCAxMDA2NDQKLS0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi1AQCAtNDk5LDcgKzQ5OSw3IEBACi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAKLSAvKiBGb3IgX0FCSTY0ICovCi0tI2luY2x1ZGUgPHNnaWRlZnMuaD4KLSsjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KLSAKLSAjaWZkZWYgX19NSVBTRUJfXwotICNkZWZpbmUgSVNfQklHX0VORElBTiAxCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EwNGQ0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gOTViZGE2NGZiNGNmMTgyNWZlYTc0NWU5MThjZmU4MjAyODQzZjBiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotRGF0ZTogU2F0LCAzMCBKYW4gMjAxNiAwNzoxODowMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBBZGQgbmlvczIgc3VwcG9ydAotCi1BZGQgc3VwcG9ydCBmb3IgdGhlIG5pb3MyIENQVS4KLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDQ0MjEgXQotLS0tCi0gbnNwci9wci9pbmNsdWRlL21kL19saW51eC5jZmcgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gbnNwci9wci9pbmNsdWRlL21kL19saW51eC5oICAgfCAxNCArKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogbnNwci9wci9pbmNsdWRlL21kL19saW51eC5jZmcKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3ByLm9yaWcvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi0rKysgbnNwci9wci9pbmNsdWRlL21kL19saW51eC5jZmcKLUBAIC05NzUsNiArOTc1LDUxIEBACi0gI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRF9MT0cyICAgMgotICNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEX0xPRzIgIDMKLSAKLSsjZWxpZiBkZWZpbmVkKF9fbmlvczJfXykKLSsKLSsjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gICAgMQotKyN1bmRlZiAgSVNfQklHX0VORElBTgotKwotKyNkZWZpbmUgUFJfQllURVNfUEVSX0JZVEUgICAxCi0rI2RlZmluZSBQUl9CWVRFU19QRVJfU0hPUlQgIDIKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQgICAgNAotKyNkZWZpbmUgUFJfQllURVNfUEVSX0lOVDY0ICA4Ci0rI2RlZmluZSBQUl9CWVRFU19QRVJfTE9ORyAgIDQKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9GTE9BVCAgNAotKyNkZWZpbmUgUFJfQllURVNfUEVSX0RPVUJMRSA4Ci0rI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRCAgIDQKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRCAgOAotKwotKyNkZWZpbmUgUFJfQklUU19QRVJfQllURSAgICA4Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVCAgIDE2Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQgICAgIDMyCi0rI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NCAgIDY0Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HICAgIDMyCi0rI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVCAgIDMyCi0rI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEUgIDY0Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEICAgIDMyCi0rCi0rI2RlZmluZSBQUl9CSVRTX1BFUl9CWVRFX0xPRzIgICAzCi0rI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVF9MT0cyICA0Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9JTlRfTE9HMiAgICA1Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NF9MT0cyICA2Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HX0xPRzIgICA1Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVF9MT0cyICA1Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEVfTE9HMiA2Ci0rI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEX0xPRzIgICA1Ci0rCi0rI2RlZmluZSBQUl9BTElHTl9PRl9TSE9SVCAgIDIKLSsjZGVmaW5lIFBSX0FMSUdOX09GX0lOVCAgICAgNAotKyNkZWZpbmUgUFJfQUxJR05fT0ZfTE9ORyAgICA0Ci0rI2RlZmluZSBQUl9BTElHTl9PRl9JTlQ2NCAgIDQKLSsjZGVmaW5lIFBSX0FMSUdOX09GX0ZMT0FUICAgNAotKyNkZWZpbmUgUFJfQUxJR05fT0ZfRE9VQkxFICA0Ci0rI2RlZmluZSBQUl9BTElHTl9PRl9QT0lOVEVSIDQKLSsjZGVmaW5lIFBSX0FMSUdOX09GX1dPUkQgICAgNAotKwotKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgIDIKLSsjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyICAzCi0rCi0gI2VsaWYgZGVmaW5lZChfX29yMWtfXykKLSAKLSAjdW5kZWYgIElTX0xJVFRMRV9FTkRJQU4KLUluZGV4OiBuc3ByL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3ByLm9yaWcvcHIvaW5jbHVkZS9tZC9fbGludXguaAotKysrIG5zcHIvcHIvaW5jbHVkZS9tZC9fbGludXguaAotQEAgLTU1LDYgKzU1LDggQEAKLSAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgImF2cjMyIgotICNlbGlmIGRlZmluZWQoX19tMzJyX18pCi0gI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJtMzJyIgotKyNlbGlmIGRlZmluZWQoX19uaW9zMl9fKQotKyNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAibmlvczIiCi0gI2VsaWYgZGVmaW5lZChfX29yMWtfXykKLSAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgIm9yMWsiCi0gI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiAoX19yaXNjdl94bGVuID09IDMyKQotQEAgLTEyOSw2ICsxMzEsMTggQEAgZXh0ZXJuIFBSSW50MzIgX1BSX3g4Nl82NF9BdG9taWNTZXQoUFJJbgotICNkZWZpbmUgX01EX0FUT01JQ19TRVQgICAgICAgICAgICAgICAgX1BSX3g4Nl82NF9BdG9taWNTZXQKLSAjZW5kaWYKLSAKLSsjaWYgZGVmaW5lZChfX25pb3MyX18pCi0rI2lmIGRlZmluZWQoX19HTlVDX18pCi0rLyogVXNlIEdDQyBidWlsdC1pbiBmdW5jdGlvbnMgKi8KLSsjZGVmaW5lIF9QUl9IQVZFX0FUT01JQ19PUFMKLSsjZGVmaW5lIF9NRF9JTklUX0FUT01JQygpCi0rI2RlZmluZSBfTURfQVRPTUlDX0lOQ1JFTUVOVChwdHIpIF9fc3luY19hZGRfYW5kX2ZldGNoKHB0ciwgMSkKLSsjZGVmaW5lIF9NRF9BVE9NSUNfREVDUkVNRU5UKHB0cikgX19zeW5jX3N1Yl9hbmRfZmV0Y2gocHRyLCAxKQotKyNkZWZpbmUgX01EX0FUT01JQ19BREQocHRyLCBpKSBfX3N5bmNfYWRkX2FuZF9mZXRjaChwdHIsIGkpCi0rI2RlZmluZSBfTURfQVRPTUlDX1NFVChwdHIsIG52KSBfX3N5bmNfbG9ja190ZXN0X2FuZF9zZXQocHRyLCBudikKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjaWYgZGVmaW5lZChfX29yMWtfXykKLSAjaWYgZGVmaW5lZChfX0dOVUNfXykKLSAvKiBVc2UgR0NDIGJ1aWx0LWluIGZ1bmN0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGZlNDVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1Gcm9tIDhhNTkyZTRlYWQ0ZWQ2YmVmZTYwNDRkYTNkZDJkYzc1MjNjMzM5MDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxNiBOb3YgMjAxOCAxMzo1Mjo0OSArMDgwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5pbjogcmVtb3ZlIF9CVUlMRF9TVFJJTkcgYW5kIF9CVUlMRF9USU1FCi0KLVJlbW92ZSBfQlVJTERfU1RSSU5HIGFuZCBfQlVJTERfVElNRSB0byBhdm9pZAotYWRkaW5nIHRpbWVzdGFtcCB0byBfcGxfYmxkLmggd2hpY2ggY2FuIHJlc3VsdAotaW4gYWRkaW5nIHRpbWVzdGFtcCBpbiBsaWJyYXJ5IGZpbGUgc3VjaCBhcwotbGlibnNwcjQuc28uCi0gJCByZWFkZWxmIC0td2lkZSAtLWRlY29tcHJlc3MgLS1oZXgtZHVtcD0ucm9kYXRhIGxpYm5zcHI0LnNvCi0gW3NuaXBdCi0gIDB4MDAwMDQwMDAgMzIzMDMxMzggMmQzMTMxMmQgMzEzNTIwMzAgMzUzYTM0MzkgMjAxOC0xMS0xNSAwNTo0OQotIFtzbmlwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9kcy9NYWtlZmlsZS5pbiAgICAgICAgfCA4ICstLS0tLS0tCi0gbGliL2xpYmMvc3JjL01ha2VmaWxlLmluICB8IDggKy0tLS0tLS0KLSBsaWIvcHJzdHJlYW1zL01ha2VmaWxlLmluIHwgOCArLS0tLS0tLQotIHByL3NyYy9NYWtlZmlsZS5pbiAgICAgICAgfCA4ICstLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2RzL01ha2VmaWxlLmluIGIvbGliL2RzL01ha2VmaWxlLmluCi1pbmRleCBlNzM3NzkxLi5iNTc4NDc2IDEwMDY0NAotLS0tIGEvbGliL2RzL01ha2VmaWxlLmluCi0rKysgYi9saWIvZHMvTWFrZWZpbGUuaW4KLUBAIC0xMTQsMTMgKzExNCw3IEBAIEdBUkJBR0UgKz0gJChUSU5DKQotIAotICQoVElOQyk6Ci0gCUAkKE1BS0VfT0JKRElSKQotLQlAJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfU1RSSU5HICIkKFNIX0RBVEUpIicgPiAkKFRJTkMpCi0tCUBpZiB0ZXN0ICEgLXogIiQoU0hfTk9XKSI7IHRoZW4gXAotLQkgICAgJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfVElNRSAkKFNIX05PVykkKFNVRiknID4+ICQoVElOQyk7IFwKLS0JZWxzZSBcCi0tCSAgICB0cnVlOyBcCi0tCWZpCi0tCUAkKEVDSE8pICcjZGVmaW5lIF9QUk9EVUNUSU9OICIkKFBST0QpIicgPj4gJChUSU5DKQotKwlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4gJChUSU5DKQotIAotIAotICQoT0JKRElSKS9wbHZyc2lvbi4kKE9CSl9TVUZGSVgpOiBwbHZyc2lvbi5jICQoVElOQykKLWRpZmYgLS1naXQgYS9saWIvbGliYy9zcmMvTWFrZWZpbGUuaW4gYi9saWIvbGliYy9zcmMvTWFrZWZpbGUuaW4KLWluZGV4IGU4YTZkOWYuLjk3OGVkMjggMTAwNjQ0Ci0tLS0gYS9saWIvbGliYy9zcmMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYi9saWJjL3NyYy9NYWtlZmlsZS5pbgotQEAgLTExNiwxMyArMTE2LDcgQEAgR0FSQkFHRSArPSAkKFRJTkMpCi0gCi0gJChUSU5DKToKLSAJQCQoTUFLRV9PQkpESVIpCi0tCUAkKEVDSE8pICcjZGVmaW5lIF9CVUlMRF9TVFJJTkcgIiQoU0hfREFURSkiJyA+ICQoVElOQykKLS0JQGlmIHRlc3QgISAteiAiJChTSF9OT1cpIjsgdGhlbiBcCi0tCSAgICAkKEVDSE8pICcjZGVmaW5lIF9CVUlMRF9USU1FICQoU0hfTk9XKSQoU1VGKScgPj4gJChUSU5DKTsgXAotLQllbHNlIFwKLS0JICAgIHRydWU7IFwKLS0JZmkKLS0JQCQoRUNITykgJyNkZWZpbmUgX1BST0RVQ1RJT04gIiQoUFJPRCkiJyA+PiAkKFRJTkMpCi0rCUAkKEVDSE8pICcjZGVmaW5lIF9QUk9EVUNUSU9OICIkKFBST0QpIicgPiAkKFRJTkMpCi0gCi0gCi0gJChPQkpESVIpL3BsdnJzaW9uLiQoT0JKX1NVRkZJWCk6IHBsdnJzaW9uLmMgJChUSU5DKQotZGlmZiAtLWdpdCBhL2xpYi9wcnN0cmVhbXMvTWFrZWZpbGUuaW4gYi9saWIvcHJzdHJlYW1zL01ha2VmaWxlLmluCi1pbmRleCBhZWIyOTQ0Li5mMzE4MDk3IDEwMDY0NAotLS0tIGEvbGliL3Byc3RyZWFtcy9NYWtlZmlsZS5pbgotKysrIGIvbGliL3Byc3RyZWFtcy9NYWtlZmlsZS5pbgotQEAgLTExNiwxMyArMTE2LDcgQEAgZW5kaWYKLSAKLSAkKFRJTkMpOgotIAlAJChNQUtFX09CSkRJUikKLS0JQCQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1NUUklORyAiJChTSF9EQVRFKSInID4gJChUSU5DKQotLQlAaWYgdGVzdCAhIC16ICIkKFNIX05PVykiOyB0aGVuIFwKLS0JICAgICQoRUNITykgJyNkZWZpbmUgX0JVSUxEX1RJTUUgJChTSF9OT1cpJChTVUYpJyA+PiAkKFRJTkMpOyBcCi0tCWVsc2UgXAotLQkgICAgdHJ1ZTsgXAotLQlmaQotLQlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4+ICQoVElOQykKLSsJQCQoRUNITykgJyNkZWZpbmUgX1BST0RVQ1RJT04gIiQoUFJPRCkiJyA+ICQoVElOQykKLSAKLSAKLSAkKE9CSkRJUikvcGx2cnNpb24uJChPQkpfU1VGRklYKTogcGx2cnNpb24uYyAkKFRJTkMpCi1kaWZmIC0tZ2l0IGEvcHIvc3JjL01ha2VmaWxlLmluIGIvcHIvc3JjL01ha2VmaWxlLmluCi1pbmRleCAxOWM1YTY5Li5iNGFjMzFjIDEwMDY0NAotLS0tIGEvcHIvc3JjL01ha2VmaWxlLmluCi0rKysgYi9wci9zcmMvTWFrZWZpbGUuaW4KLUBAIC0zMjYsMTMgKzMyNiw3IEBAIEdBUkJBR0UgKz0gJChUSU5DKQotIAotICQoVElOQyk6Ci0gCUAkKE1BS0VfT0JKRElSKQotLQlAJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfU1RSSU5HICIkKFNIX0RBVEUpIicgPiAkKFRJTkMpCi0tCUBpZiB0ZXN0ICEgLXogIiQoU0hfTk9XKSI7IHRoZW4gXAotLQkgICAgJChFQ0hPKSAnI2RlZmluZSBfQlVJTERfVElNRSAkKFNIX05PVykkKFNVRiknID4+ICQoVElOQyk7IFwKLS0JZWxzZSBcCi0tCSAgICB0cnVlOyBcCi0tCWZpCi0tCUAkKEVDSE8pICcjZGVmaW5lIF9QUk9EVUNUSU9OICIkKFBST0QpIicgPj4gJChUSU5DKQotKwlAJChFQ0hPKSAnI2RlZmluZSBfUFJPRFVDVElPTiAiJChQUk9EKSInID4gJChUSU5DKQotIAotIAotICQoT0JKRElSKS9wcnZyc2lvbi4kKE9CSl9TVUZGSVgpOiBwcnZyc2lvbi5jICQoVElOQykKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxMmFjYzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZpeCBidWlsZCBmYWlsdXJlIG9uIHg4Nl82NAotCi1XaGVuIHRoZSB0YXJnZXRfY3B1IGlzIHg4Nl82NCwgd2Ugc2hvdWxkIGFzc3VtZSB0aGF0IHRoZSBwa2cgdXNlcyA2NGJpdCwKLW9ubHkgaWYgVVNFX04zMiBpcyBzZXQsIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGUgcGtnIHVzZXMgMzJiaXQuIEl0IHVzZWQgYQotb3Bwb3NpdGUgbG9naWMgYmVmb3JlLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuaW4gfCAgIDEyICsrKysrKy0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogbnNwci9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3ByLm9yaWcvY29uZmlndXJlLmluCi0rKysgbnNwci9jb25maWd1cmUuaW4KLUBAIC0xODc1LDI4ICsxODc1LDI0IEBAIHRvb2xzIGFyZSBzZWxlY3RlZCBkdXJpbmcgdGhlIFhjb2RlL0RldmUKLSAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfaWE2NC5zCi0gICAgICAgICA7OwotICAgICB4ODZfNjQpCi0tICAgICAgICBpZiB0ZXN0IC1uICIkVVNFXzY0IjsgdGhlbgotLSAgICAgICAgICAgIFBSX01EX0FTRklMRVM9b3NfTGludXhfeDg2XzY0LnMKLS0gICAgICAgIGVsaWYgdGVzdCAtbiAiJFVTRV9YMzIiOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0IC1uICIkVVNFX1gzMiI7IHRoZW4KLSsgICAgICAgICAgICBBQ19ERUZJTkUoaTM4NikKLSAgICAgICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X3g4Nl82NC5zCi0gICAgICAgICAgICAgQ0M9IiRDQyAtbXgzMiIKLSAgICAgICAgICAgICBDWFg9IiRDWFggLW14MzIiCi0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgQUNfREVGSU5FKGkzODYpCi0tICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF94ODYucwotLSAgICAgICAgICAgIENDPSIkQ0MgLW0zMiIKLS0gICAgICAgICAgICBDWFg9IiRDWFggLW0zMiIKLSsgICAgICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X3g4Nl82NC5zCi0gICAgICAgICBmaQotICAgICAgICAgOzsKLSAgICAgcHBjfHBvd2VycGMpCi0gICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X3BwYy5zCi0gICAgICAgICA7OwotICAgICBwb3dlcnBjNjQpCi0tICAgICAgICBpZiB0ZXN0IC1uICIkVVNFXzY0IjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAtbiAiJFVTRV9OMzIiOyB0aGVuCi0rICAgICAgICAgICAgUFJfTURfQVNGSUxFUz1vc19MaW51eF9wcGMucwotKyAgICAgICAgZWxzZQotICAgICAgICAgICAgIENDPSIkQ0MgLW02NCIKLSAgICAgICAgICAgICBDWFg9IiRDWFggLW02NCIKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgICBQUl9NRF9BU0ZJTEVTPW9zX0xpbnV4X3BwYy5zCi0gICAgICAgICBmaQotICAgICAgICAgOzsKLSAgICAgZXNhYyAgICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzRjYWFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1vc19saWJzPS1scHRocmVhZCAtbGRsCi1wcmVmaXg9T0VQUkVGSVgKLWV4ZWNfcHJlZml4PU9FRVhFQ1BSRUZJWAotbGliZGlyPU9FTElCRElSCi1pbmNsdWRlZGlyPU9FSU5DRElSCi0KLU5hbWU6IE5TUFIKLURlc2NyaXB0aW9uOiBUaGUgTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZQotVmVyc2lvbjogTlNQUlZFUlNJT04KLUxpYnM6IC1MJHtsaWJkaXJ9IC1scGxkczQgLWxwbGM0IC1sbnNwcjQgLWxwdGhyZWFkIC1sZGwKLUNmbGFnczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiYTU5ZWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1BdXRob3I6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLURhdGU6ICAgVGh1IEZlYiA5IDAwOjAzOjM4IDIwMTIgKzAyMDAKLQotQXZvaWQgUUEgd2FybmluZ3MgYnkgcmVtb3ZpbmcgaGFyZGNvZGVkIHJwYXRoIGZyb20gYmluYXJpZXMuCi0KLVsuLi5dCi1XQVJOSU5HOiBRQSBJc3N1ZTogcGFja2FnZSBuc3ByIGNvbnRhaW5zIGJhZCBSUEFUSCB7YnVpbGRkaXJ9L3RtcC93b3JrL2FybXY1dGUtcG9reS1saW51eC1nbnVlYWJpL25zcHItNC44LjktcjEvbnNwci00LjguOS9tb3ppbGxhL25zcHJwdWIvcHIvdGVzdHMvLi4vLi4vZGlzdC9saWIKLWluIGZpbGUge2J1aWxkZGlyfS90bXAvd29yay9hcm12NXRlLXBva3ktbGludXgtZ251ZWFiaS9uc3ByLTQuOC45LXIxL3BhY2thZ2VzLXNwbGl0L25zcHIvdXNyL2xpYi9uc3ByL3Rlc3RzL211bHRpd2FpdAotWy4uLl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBuc3ByL3ByL3Rlc3RzL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwci5vcmlnL3ByL3Rlc3RzL01ha2VmaWxlLmluCi0rKysgbnNwci9wci90ZXN0cy9NYWtlZmlsZS5pbgotQEAgLTMxNiw3ICszMTYsNyBAQCBpZmVxICgkKE9TX0FSQ0gpLCBTdW5PUykKLSBlbmRpZiAjIFN1bk9TCi0gCi0gaWZlcSAoLCQoZmlsdGVyLW91dCBMaW51eCBHTlUgR05VXyUsJChPU19BUkNIKSkpCi0tICAgIExET1BUUyArPSAtWGxpbmtlciAtcnBhdGggJChBQlNPTFVURV9MSUJfRElSKQotKyAgICBMRE9QVFMgKz0gLVhsaW5rZXIKLSAgICAgaWZlcSAoJChVU0VfUFRIUkVBRFMpLDEpCi0gICAgICAgICBFWFRSQV9MSUJTID0gLWxwdGhyZWFkCi0gICAgIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRlNzE1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotdGhlICRzcmNkaXIgaXMgbm90IGRlZmluZWQgYXQgdGhlIHRpbWUgb2YgZ251LWNvbmZpZ3VyaXplLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLUNvcmUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IG5zcHIvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNwci5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIG5zcHIvY29uZmlndXJlLmluCi1AQCAtOCw3ICs4LDcgQEAgQUNfUFJFUkVRKDIuNjEpCi0gQUNfSU5JVAotIEFDX0NPTkZJR19TUkNESVIoW3ByL2luY2x1ZGUvbnNwci5oXSkKLSAKLS1BQ19DT05GSUdfQVVYX0RJUigke3NyY2Rpcn0vYnVpbGQvYXV0b2NvbmYpCi0rQUNfQ09ORklHX0FVWF9ESVIoYnVpbGQvYXV0b2NvbmYpCi0gQUNfQ0FOT05JQ0FMX1RBUkdFVAotIAotIGRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMjc2MWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi1TVU1NQVJZID0gIk5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUgTGlicmFyeSIKLUhPTUVQQUdFID0gICJodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25zcHIvIgotTElDRU5TRSA9ICJHUEwtMi4wIHwgTVBMLTIuMCB8IExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlndXJlLmluO2JlZ2lubGluZT0zO2VuZGxpbmU9NjttZDU9OTBjMmZkZWUzOGU0NWQ2MzAyYWJjZmU0NzVjOGI1YzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW47YmVnaW5saW5lPTQ7ZW5kbGluZT0zODttZDU9YmVkYTFkYmI5OGE1MTVmNTU3ZDNlNThlZjA2YmNhOTkiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzL3Yke1BWfS9zcmMvbnNwci0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3ByLnBjLmluIFwKLSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgQ0ZMQUdTPScke0NGTEFHU30gLURfUFJfUE9MTF9BVkFJTEFCTEUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9PRkY2NF9UIC1EX1BSX0lORVQ2IC1EX1BSX0hBVkVfSU5FVF9OVE9QIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfR0VUSE9TVEJZTkFNRTIgLURfUFJfSEFWRV9HRVRBRERSSU5GTyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9JTkVUNl9QUk9CRSAtRE5PX0RMT1BFTl9OVUxMJyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MGFmMDQ1MDQyM2IwNTg4ZjBlYmE2MjU1YzA3YWI3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YjlkODIxMDM3ZmFmNTcyM2RhOTAxNTE1ZWQ5Y2FjOGIyM2VmMWVhMzcyOTAyMjI1OTc3NzM5MzQ1MzQ3N2E0IgotCi1DVkVfUFJPRFVDVCA9ICJuZXRzY2FwZV9wb3J0YWJsZV9ydW50aW1lIgotCi1TID0gIiR7V09SS0RJUn0vbnNwci0ke1BWfS9uc3ByIgotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gInBlcmwiCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotVEVTVFMgPSAiIFwKLSAgICBhY2NlcHQgXAotICAgIGFjY2VwdHJlYWQgXAotICAgIGFjY2VwdHJlYWRlbXUgXAotICAgIGFmZmluaXR5IFwKLSAgICBhbGFybSBcCi0gICAgYW5vbmZtIFwKLSAgICBhdG9taWMgXAotICAgIGF0dGFjaCBcCi0gICAgYmlnZmlsZSBcCi0gICAgY2xlYW51cCBcCi0gICAgY2x0c3J2ICBcCi0gICAgY29uY3VyIFwKLSAgICBjdmFyIFwKLSAgICBjdmFyMiBcCi0gICAgZGxsdGVzdCBcCi0gICAgZHRvYSBcCi0gICAgZXJyY29kZXMgXAotICAgIGV4aXQgXAotICAgIGZkY2FjaCBcCi0gICAgZmlsZWlvIFwKLSAgICBmb3JlaWduIFwKLSAgICBmb3JtYXR0bSBcCi0gICAgZnN5bmMgXAotICAgIGdldGhvc3QgXAotICAgIGdldHByb3RvIFwKLSAgICBpMmwgXAotICAgIGluaXRjbGsgXAotICAgIGlucnZhbCBcCi0gICAgaW5zdHJ1bXQgXAotICAgIGludHJpbyBcCi0gICAgaW50cnVwdCBcCi0gICAgaW9fdGltZW91dCBcCi0gICAgaW9jb250aHIgXAotICAgIGpvaW4gXAotICAgIGpvaW5rayBcCi0gICAgam9pbmt1IFwKLSAgICBqb2ludWsgXAotICAgIGpvaW51dSBcCi0gICAgbGF5ZXIgXAotICAgIGxhenlpbml0IFwKLSAgICBsaWJmaWxlbmFtZSBcCi0gICAgbGx0ZXN0IFwKLSAgICBsb2NrIFwKLSAgICBsb2NrZmlsZSBcCi0gICAgbG9nZmlsZSBcCi0gICAgbG9nZ2VyIFwKLSAgICBtYW55X2N2IFwKLSAgICBtdWx0aXdhaXQgXAotICAgIG5hbWVzaG0xIFwKLSAgICBuYmxheWVyIFwKLSAgICBub25ibG9jayBcCi0gICAgbnRpb3RvIFwKLSAgICBudG9oIFwKLSAgICBvcF8ybG9uZyBcCi0gICAgb3BfZXhjbCBcCi0gICAgb3BfZmlsbmYgXAotICAgIG9wX2ZpbG9rIFwKLSAgICBvcF9ub2ZpbCBcCi0gICAgcGFyZW50IFwKLSAgICBwYXJzZXRtIFwKLSAgICBwZWVrIFwKLSAgICBwZXJmIFwKLSAgICBwaXBlcGluZyBcCi0gICAgcGlwZXBpbmcyIFwKLSAgICBwaXBlc2VsZiBcCi0gICAgcG9sbF9ubSBcCi0gICAgcG9sbF90byBcCi0gICAgcG9sbGFibGUgXAotICAgIHByZnRlc3QgXAotICAgIHByaW1ibG9rIFwKLSAgICBwcm92aWRlciBcCi0gICAgcHJwb2xsbWwgXAotICAgIHJhbmZpbGUgXAotICAgIHJhbmRzZWVkIFwKLSAgICByZWluaXQgXAotICAgIHJ3bG9ja3Rlc3QgXAotICAgIHNlbF9zcGQgXAotICAgIHNlbGN0X2VyIFwKLSAgICBzZWxjdF9ubSBcCi0gICAgc2VsY3RfdG8gXAotICAgIHNlbGludHIgXAotICAgIHNlbWEgXAotICAgIHNlbWFlcnIgXAotICAgIHNlbWFwaW5nIFwKLSAgICBzZW5kemxmIFwKLSAgICBzZXJ2ZXJfdGVzdCBcCi0gICAgc2VydnJfa2sgXAotICAgIHNlcnZyX3VrIFwKLSAgICBzZXJ2cl9rdSBcCi0gICAgc2VydnJfdXUgXAotICAgIHNob3J0X3RocmVhZCBcCi0gICAgc2lncGlwZSBcCi0gICAgc29ja2V0IFwKLSAgICBzb2Nrb3B0IFwKLSAgICBzb2NrcGluZyBcCi0gICAgc3ByaW50ZiBcCi0gICAgc3RhY2sgXAotICAgIHN0ZGlvIFwKLSAgICBzdHIyYWRkciBcCi0gICAgc3Ryb2QgXAotICAgIHN3aXRjaCBcCi0gICAgc3lzdGVtIFwKLSAgICB0ZXN0Yml0IFwKLSAgICB0ZXN0ZmlsZSBcCi0gICAgdGhyZWFkcyBcCi0gICAgdGltZW1hYyBcCi0gICAgdGltZXRlc3QgXAotICAgIHRwZCBcCi0gICAgdWRwc3J2IFwKLSAgICB2ZXJjaGVjayBcCi0gICAgdmVyc2lvbiBcCi0gICAgd3JpdGV2IFwKLSAgICB4bm90aWZ5IFwKLSAgICB6ZXJvbGVuIgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L25zcHItY29uZmlnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlvZV9ydW5tYWtlIENST1NTX0NPTVBJTEU9MSBDRkxBR1M9Ii1EWFBfVU5JWCAke0JVSUxEX0NGTEFHU30iIExERkxBR1M9IiIgQ0M9IiR7QlVJTERfQ0N9IiAtQyBjb25maWcgZXhwb3J0Ci19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotCW9lX3J1bm1ha2UgLUMgcHIvdGVzdHMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAke1dPUktESVJ9L25zcHIucGMuaW4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYwotICAgIHNlZCAtaSAgXAotICAgIC1lICdzOk5TUFJWRVJTSU9OOiR7UFZ9OmcnIFwKLSAgICAtZSAnczpPRVBSRUZJWDoke3ByZWZpeH06ZycgXAotICAgIC1lICdzOk9FTElCRElSOiR7bGliZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VJTkNESVI6JHtpbmNsdWRlZGlyfTpnJyBcCi0gICAgLWUgJ3M6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcnIFwKLSAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0KLSAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5wbCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9wci90ZXN0cy9ydW50ZXN0cy5zaCAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKLSAgICBjZCAke0J9L3ByL3Rlc3RzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7VEVTVFN9ICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotCi0gICAgIyBkZWxldGUgY29tcGlsZS1ldC5wbCBhbmQgcGVyci5wcm9wZXJ0aWVzIGZyb20gJHtiaW5kaXJ9IGJlY2F1c2UgdGhlc2UgYXJlCi0gICAgIyBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgcHJlcnIuYyBhbmQgcHJlcnIuaCBmaWxlcyBmcm9tIHByZXJyLmV0IGF0IGNvbXBpbGUKLSAgICAjIHRpbWUKLSAgICBybSAke0R9JHtiaW5kaXJ9L2NvbXBpbGUtZXQucGwgJHtEfSR7YmluZGlyfS9wcmVyci5wcm9wZXJ0aWVzCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9uc3ByL3Rlc3RzLyogJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8qICR7ZGF0YWRpcn0vYWNsb2NhbC8qICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NDAzMzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMGNmNDdlZTQzMmNjMjZhNzA2ODY0ZmNjMDliMmMzYWRjMzQyYTY3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxMTozNjoxMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBuc3M6IGZpeCBzdXBwb3J0IGNyb3NzIGNvbXBpbGluZwotCi1MZXQgc29tZSBtYWtlIHZhcmlhYmxlcyBiZSBhc3NpZ25lZCBmcm9tIG91dHNpZGUgbWFrZWZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbnNzL2NvcmVjb25mL2FyY2gubWsgICAgfCAyICstCi0gbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUgfCA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9uc3MvY29yZWNvbmYvYXJjaC5tayBiL25zcy9jb3JlY29uZi9hcmNoLm1rCi1pbmRleCAwNmMyNzZmLi45YzFlYjUxIDEwMDY0NAotLS0tIGEvbnNzL2NvcmVjb25mL2FyY2gubWsKLSsrKyBiL25zcy9jb3JlY29uZi9hcmNoLm1rCi1AQCAtMzAsNyArMzAsNyBAQCBPU19URVNUIDo9ICQoc2hlbGwgdW5hbWUgLW0pCi0gaWZlcSAoJChPU19URVNUKSxpODZwYykKLSAgICAgT1NfUkVMRUFTRSA6PSAkKHNoZWxsIHVuYW1lIC1yKV8kKE9TX1RFU1QpCi0gZWxzZQotLSAgICBPU19SRUxFQVNFIDo9ICQoc2hlbGwgdW5hbWUgLXIpCi0rICAgIE9TX1JFTEVBU0UgPz0gJChzaGVsbCB1bmFtZSAtcikKLSBlbmRpZgotIAotICMKLWRpZmYgLS1naXQgYS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZSBiL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCi1pbmRleCAwY2UxNDI1Li5lYmViNDExIDEwMDY0NAotLS0tIGEvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKLSsrKyBiL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCi1AQCAtMzYsNiArMzYsMTIgQEAgaWZkZWYgVVNFXzY0Ci0gCURFRklORVMgKz0gLUROU1NfVVNFXzY0Ci0gZW5kaWYKLSAKLStpZmVxICgkKE9TX1RFU1QpLG1pcHMpCi0raWZuZGVmIFVTRV82NAotKyAgICAgICBERUZJTkVTICs9IC1ETlNfUFRSX0xFXzMyCi0rZW5kaWYKLStlbmRpZgotKwotIGlmZGVmIFVTRV9BQkkzMl9GUFUKLSAJREVGSU5FUyArPSAtRE5TU19VU0VfQUJJMzJfRlBVCi0gZW5kaWYKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1jZXJ0OS5kYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1jZXJ0OS5kYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0YmNmMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDdmMDhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlODEyZDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLWNsYW5nIDMuOSBhZGQgdGhpcyB3YXJuaW5nIHRvIHJpZ2h0bHkgZmxhZyB1bmRlZmluZWQKLWJlaGF2aW9yLCB3ZSByZWxlZ2F0ZSB0aGlzIHRvIGJlIGp1c3QgYSB3YXJuaW5nIGluc3RlYWQKLW9mIGVycm9yIGFuZCBrZWVwIHRoZSBiZWhhdmlvciBhcyBpdCB3YXMuIFJpZ2h0IGZpeCB3b3VsZAotYmUgdG8gbm90IHBhc3MgZW51bSB0byB0aGUgZnVuY3Rpb24gd2l0aCB2YXJpYWRpYyBhcmd1bWVudHMKLWFzIGxhc3QgbmFtZWQgYXJndW1lbnQKLQotRml4ZXMgZXJyb3JzIGxpa2UKLW9jc3AuYzoyMjIwOjIyOiBlcnJvcjogcGFzc2luZyBhbiBvYmplY3QgdGhhdCB1bmRlcmdvZXMgZGVmYXVsdCBhcmd1bWVudCBwcm9tb3Rpb24gdG8gJ3ZhX3N0YXJ0JyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIFstV2Vycm9yLC1XdmFyYXJnc10KLSAgICAgICAgdmFfc3RhcnQoYXAsIHJlc3BvbnNlVHlwZTApOwotICAgICAgICAgICAgICAgICAgICAgXgotb2NzcC5jOjIyMDA6NDM6IG5vdGU6IHBhcmFtZXRlciBvZiB0eXBlICdTRUNPaWRUYWcnIGlzIGRlY2xhcmVkIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VDT2lkVGFnIHJlc3BvbnNlVHlwZTAsIC4uLikKLQotc2VlCi1odHRwczovL3d3dy5zZWN1cmVjb2RpbmcuY2VydC5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L2NwbHVzcGx1cy9FWFA1OC1DUFAuK1Bhc3MrYW4rb2JqZWN0K29mK3RoZStjb3JyZWN0K3R5cGUrdG8rdmFfc3RhcnQKLWZvciBtb3JlIGRldGFpbHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogbnNzLTMuMzcuMS9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMzcuMS5vcmlnL25zcy9jb3JlY29uZi9XZXJyb3IubWsKLSsrKyBuc3MtMy4zNy4xL25zcy9jb3JlY29uZi9XZXJyb3IubWsKLUBAIC01Niw3ICs1Niw3IEBAIGlmbmRlZiBXQVJOSU5HX0NGTEFHUwotICAgICBpZmRlZiBDQ19JU19DTEFORwotICAgICAgICMgLVF1bnVzZWQtYXJndW1lbnRzIDogY2xhbmcgb2JqZWN0cyB0byBhcmd1bWVudHMgdGhhdCBpdCBkb2Vzbid0IHVuZGVyc3RhbmQKLSAgICAgICAjICAgIGFuZCBmaXhpbmcgdGhpcyB3b3VsZCByZXF1aXJlIHJlYXJjaGl0ZWN0dXJlCi0tICAgICAgV0FSTklOR19DRkxBR1MgKz0gLVF1bnVzZWQtYXJndW1lbnRzCi0rICAgICAgV0FSTklOR19DRkxBR1MgKz0gLVF1bnVzZWQtYXJndW1lbnRzIC1Xbm8tZXJyb3I9dmFyYXJncwotICAgICAgICMgLVduby1wYXJlbnRoZXNlcy1lcXVhbGl0eSA6IGJlY2F1c2UgY2xhbmcgd2FybnMgYWJvdXQgbWFjcm8gZXhwYW5zaW9ucwotICAgICAgIFdBUk5JTkdfQ0ZMQUdTICs9ICQoY2FsbCBkaXNhYmxlX3dhcm5pbmcscGFyZW50aGVzZXMtZXF1YWxpdHkpCi0gICAgICAgaWZkZWYgQlVJTERfT1BUCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ3NTk0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLW5zczogZml4IGluY29ycmVjdCBzaGViYW5nIG9mIHBlcmwKLQotUmVwbGFjZSBpbmNvcnJlY3Qgc2hlYmFuZyBvZiBwZXJsIHdpdGggYCMhL3Vzci9iaW4vZW52IHBlcmwnLgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIG5zcy9jbWQvc21pbWV0b29scy9zbWltZSAgfCAyICstCi0gbnNzL2NvcmVjb25mL2NwZGlzdC5wbCAgICB8IDIgKy0KLSBuc3MvY29yZWNvbmYvaW1wb3J0LnBsICAgIHwgMiArLQotIG5zcy9jb3JlY29uZi9qbmlyZWdlbi5wbCAgfCAyICstCi0gbnNzL2NvcmVjb25mL291dG9mZGF0ZS5wbCB8IDIgKy0KLSBuc3MvY29yZWNvbmYvcmVsZWFzZS5wbCAgIHwgMiArLQotIG5zcy9jb3JlY29uZi92ZXJzaW9uLnBsICAgfCAyICstCi0gbnNzL3Rlc3RzL2NsZWFuX3RieCAgICAgICB8IDIgKy0KLSBuc3MvdGVzdHMvcGF0aF91bmlxICAgICAgIHwgMiArLQotIDkgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNzL2NtZC9zbWltZXRvb2xzL3NtaW1lIGIvbnNzL2NtZC9zbWltZXRvb2xzL3NtaW1lCi0tLS0gYS9uc3MvY21kL3NtaW1ldG9vbHMvc21pbWUKLSsrKyBiL25zcy9jbWQvc21pbWV0b29scy9zbWltZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2xvY2FsL2Jpbi9wZXJsCi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotIAotICMgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotZGlmZiAtLWdpdCBhL25zcy9jb3JlY29uZi9jcGRpc3QucGwgYi9uc3MvY29yZWNvbmYvY3BkaXN0LnBsCi1pbmRleCA4MDBlZGZiLi42NTIxODdmIDEwMDc1NQotLS0tIGEvbnNzL2NvcmVjb25mL2NwZGlzdC5wbAotKysrIGIvbnNzL2NvcmVjb25mL2NwZGlzdC5wbAotQEAgLTEsNCArMSw0IEBACi0tIyEgL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL2ltcG9ydC5wbCBiL25zcy9jb3JlY29uZi9pbXBvcnQucGwKLWluZGV4IGRkMmQxNzcuLjQyOGVhYTUgMTAwNzU1Ci0tLS0gYS9uc3MvY29yZWNvbmYvaW1wb3J0LnBsCi0rKysgYi9uc3MvY29yZWNvbmYvaW1wb3J0LnBsCi1AQCAtMSw0ICsxLDQgQEAKLS0jISAvdXNyL2xvY2FsL2Jpbi9wZXJsCi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMKLSAjIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLWRpZmYgLS1naXQgYS9uc3MvY29yZWNvbmYvam5pcmVnZW4ucGwgYi9uc3MvY29yZWNvbmYvam5pcmVnZW4ucGwKLWluZGV4IDIwMzkxODAuLjVmNGY2OWMgMTAwNzU1Ci0tLS0gYS9uc3MvY29yZWNvbmYvam5pcmVnZW4ucGwKLSsrKyBiL25zcy9jb3JlY29uZi9qbmlyZWdlbi5wbAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2xvY2FsL2Jpbi9wZXJsCi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotICMKLSAjIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKLSAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKLWRpZmYgLS1naXQgYS9uc3MvY29yZWNvbmYvb3V0b2ZkYXRlLnBsIGIvbnNzL2NvcmVjb25mL291dG9mZGF0ZS5wbAotaW5kZXggMzNkODBiYi4uMDFmYzA5NyAxMDA3NTUKLS0tLSBhL25zcy9jb3JlY29uZi9vdXRvZmRhdGUucGwKLSsrKyBiL25zcy9jb3JlY29uZi9vdXRvZmRhdGUucGwKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL3JlbGVhc2UucGwgYi9uc3MvY29yZWNvbmYvcmVsZWFzZS5wbAotaW5kZXggN2NkZTE5ZC4uYjVkZjJmNiAxMDA3NTUKLS0tLSBhL25zcy9jb3JlY29uZi9yZWxlYXNlLnBsCi0rKysgYi9uc3MvY29yZWNvbmYvcmVsZWFzZS5wbAotQEAgLTEsNCArMSw0IEBACi0tIyEgL3Vzci9sb2NhbC9iaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL2NvcmVjb25mL3ZlcnNpb24ucGwgYi9uc3MvY29yZWNvbmYvdmVyc2lvbi5wbAotaW5kZXggZDJhNDk0Mi4uNzkzNTlmZSAxMDA2NDQKLS0tLSBhL25zcy9jb3JlY29uZi92ZXJzaW9uLnBsCi0rKysgYi9uc3MvY29yZWNvbmYvdmVyc2lvbi5wbAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL3NiaW4vcGVybAotKyMhL3Vzci9iaW4vZW52IHBlcmwKLSAjCi0gIyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0gIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi1kaWZmIC0tZ2l0IGEvbnNzL3Rlc3RzL2NsZWFuX3RieCBiL25zcy90ZXN0cy9jbGVhbl90YngKLWluZGV4IDRkZTk1NTUuLmE3ZGVmOWYgMTAwNzU1Ci0tLS0gYS9uc3MvdGVzdHMvY2xlYW5fdGJ4Ci0rKysgYi9uc3MvdGVzdHMvY2xlYW5fdGJ4Ci1AQCAtMSw0ICsxLDQgQEAKLS0jISAvYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjCi1kaWZmIC0tZ2l0IGEvbnNzL3Rlc3RzL3BhdGhfdW5pcSBiL25zcy90ZXN0cy9wYXRoX3VuaXEKLWluZGV4IGYyOWY2MGEuLjA4ZmJmZmEgMTAwNzU1Ci0tLS0gYS9uc3MvdGVzdHMvcGF0aF91bmlxCi0rKysgYi9uc3MvdGVzdHMvcGF0aF91bmlxCi1AQCAtMSw0ICsxLDQgQEAKLS0jISAvYmluL3BlcmwKLSsjIS91c3IvYmluL2VudiBwZXJsCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIwotLS0gCi0xLjguMS4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxYzY5YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1GaXggbnNzIG11bHRpbGliIGJ1aWxkIG9uIG9wZW5TVVNFIDExLnggMzJiaXQKLQotV2hpbGUgYnVpbGRpbmcgbGliNjQtbnNzIG9uIG9wZW5TVVNFIDExLnggMzJiaXQsIHRoZSBuc2luc3RhbGwgd2lsbAotZmFpbCB3aXRoIGVycm9yOgotCi0qIG5zaW5zdGFsbC5jOjE6MDogc29ycnksIHVuaW1wbGVtZW50ZWQ6IDY0LWJpdCBtb2RlIG5vdCBjb21waWxlZAotCi1JdCBjYXVzZWQgYnkgdGhlICctbTY0JyBvcHRpb24gd2hpY2ggcGFzc2VkIHRvIGhvc3QgZ2NjLgotCi1UaGUgbnNpbnN0YWxsIHdhcyBidWlsdCBmaXJzdCB3aGlsZSBuc3Mgc3RhcnRpbmcgdG8gYnVpbGQsIGl0IG9ubHkgcnVucwotb24gaG9zdCB0byBpbnN0YWxsIGJ1aWx0IGZpbGVzLCBpdCBkb2Vzbid0IG5lZWQgYW55IGNyb3NzLWNvbXBsaW5nIG9yCi1tdWx0aWxpYiBidWlsZCBvcHRpb25zLiBKdXN0IGNsZWFuIHRoZSBBUkNIRkxBRyBhbmQgTERGTEFHUyB0byBmaXggdGhpcwotZXJyb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotSW5kZXg6IG5zcy0zLjI0L25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3MtMy4yNC5vcmlnL25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKLSsrKyBuc3MtMy4yNC9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi1AQCAtMTgsNiArMTgsMTMgQEAgSU5URVJOQUxfVE9PTFMgID0gMQotIAotIGluY2x1ZGUgJChERVBUSCkvY29yZWNvbmYvY29uZmlnLm1rCi0gCi0rIyBuc2luc3RhbGwgaXMgdW5maXQgZm9yIGNyb3NzLWNvbXBpbGluZy9tdWx0aWxpYi1idWlsZCBzaW5jZSBpdCB3YXMKLSsjIGFsd2F5cyBydW4gb24gbG9jYWwgaG9zdCB0byBpbnN0YWxsIGJ1aWx0IGZpbGVzLiBUaGlzIGNoYW5nZSBpbnRlbmRzCi0rIyB0byBjbGVhbiB0aGUgJy1tNjQnIGZyb20gQVJDSEZMQUcgYW5kIExERkxBR1MuCi0rQVJDSEZMQUcgPQotK0xERkxBR1MgPQotK0NGTEFHUyA9Ci0rCi0gaWZlcSAoLCQoZmlsdGVyLW91dCBPUzIgV0lOJSwkKE9TX1RBUkdFVCkpKQotIFBST0dSQU0JCT0KLSBlbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjFkYzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotbnNzOm5vIHJwYXRoIGZvciBjcm9zcyBjb21waWxpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gbnNzL2NtZC9wbGF0bGlicy5tayB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uc3MvY21kL3BsYXRsaWJzLm1rIGIvbnNzL2NtZC9wbGF0bGlicy5tawotLS0tIGEvbnNzL2NtZC9wbGF0bGlicy5tawotKysrIGIvbnNzL2NtZC9wbGF0bGlicy5tawotQEAgLTE4LDkgKzE4LDkgQEAgZW5kaWYKLSAKLSBpZmVxICgkKE9TX0FSQ0gpLCBMaW51eCkKLSBpZmVxICgkKFVTRV82NCksIDEpCi0tRVhUUkFfU0hBUkVEX0xJQlMgKz0gLVdsLC1ycGF0aCwnJCRPUklHSU4vLi4vbGliNjQ6L29wdC9zdW4vcHJpdmF0ZS9saWI2NDokJE9SSUdJTi8uLi9saWInCi0rI0VYVFJBX1NIQVJFRF9MSUJTICs9IC1XbCwtcnBhdGgsJyQkT1JJR0lOLy4uL2xpYjY0Oi9vcHQvc3VuL3ByaXZhdGUvbGliNjQ6JCRPUklHSU4vLi4vbGliJwotIGVsc2UKLS1FWFRSQV9TSEFSRURfTElCUyArPSAtV2wsLXJwYXRoLCckJE9SSUdJTi8uLi9saWI6L29wdC9zdW4vcHJpdmF0ZS9saWInCi0rI0VYVFJBX1NIQVJFRF9MSUJTICs9IC1XbCwtcnBhdGgsJyQkT1JJR0lOLy4uL2xpYjovb3B0L3N1bi9wcml2YXRlL2xpYicKLSBlbmRpZgotIGVuZGlmCi0gCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MucGMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGY2MzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXByZWZpeD1PRVBSRUZJWAotZXhlY19wcmVmaXg9T0VFWEVDUFJFRklYCi1saWJkaXI9T0VMSUJESVIKLWluY2x1ZGVkaXI9T0VJTkNESVIKLQotTmFtZTogTlNTCi1EZXNjcmlwdGlvbjogTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcwotVmVyc2lvbjogJU5TU19WRVJTSU9OJQotUmVxdWlyZXM6IG5zcHIgPj0gJU5TUFJfVkVSU0lPTiUKLUxpYnM6IC1sc3NsMyAtbHNtaW1lMyAtbG5zczMgLWxzb2Z0b2tuMyAtbG5zc3V0aWwzCi1DZmxhZ3M6IC1JT0VJTkNESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhODE3ZmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1uc3MgZG9lcyBub3QgYnVpbGQgb24gbWlwcyB3aXRoIGNsYW5nIGJlY2F1c2Ugd3JvbmcgdHlwZXMgYXJlIHVzZWQ/Ci0KLXBxZy5jOjMzOToxNjogZXJyb3I6IGNvbXBhcmlzb24gb2YgY29uc3RhbnQgMTg0NDY3NDQwNzM3MDk1NTE2MTUgd2l0aCBleHByZXNzaW9uIG9mIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnIGlzIGFsd2F5cyB0cnVlIFstV2Vycm9yLC1XdGF1dG9sb2dpY2FsLWNvbnN0YW50LW91dC1vZi1yYW5nZS1jb21wYXJlXQotICAgICBpZiAoYWRkZW5kIDwgTVBfRElHSVRfTUFYKSB7Ci0gICAgICAgfn5+fn5+IF4gfn5+fn5+fn5+fn5+Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBuc3MtMy4zNy4xL25zcy9saWIvZnJlZWJsL3BxZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMzcuMS5vcmlnL25zcy9saWIvZnJlZWJsL3BxZy5jCi0rKysgbnNzLTMuMzcuMS9uc3MvbGliL2ZyZWVibC9wcWcuYwotQEAgLTMyNiw4ICszMjYsOCBAQCBnZW5lcmF0ZV9oX2NhbmRpZGF0ZShTRUNJdGVtICpoaXQsIG1wX2luCi0gCi0gc3RhdGljIFNFQ1N0YXR1cwotIGFkZFRvU2VlZChjb25zdCBTRUNJdGVtICpzZWVkLAotLSAgICAgICAgICB1bnNpZ25lZCBsb25nIGFkZGVuZCwKLS0gICAgICAgICAgaW50IHNlZWRsZW4sIC8qIGcgaW4gMTg2LTEgKi8KLSsgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICBhZGRlbmQsCi0rICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgc2VlZGxlbiwgLyogZyBpbiAxODYtMSAqLwotICAgICAgICAgICBTRUNJdGVtICpzZWVkb3V0KQotIHsKLSAgICAgbXBfaW50IHMsIHN1bSwgbW9kdWx1cywgdG1wOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3NpZ25saWJzLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3NpZ25saWJzLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRlNDk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLSMhL2Jpbi9zaAotCi0jIHNpZ25saWJzLnNoCi0jCi0jIChjKTIwMTAgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi0jIHJlZ2VuZXJhdGVzIHRoZSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyB0aGF0IHJlcXVpcmUgaXQKLSMgc2luY2UgdGhlIG9uZXMgdGhhdCBhcmUgYnVpbHQgaGF2ZSBpbmNvcnJlY3QgY2hlY2tzdW1zIHRoYXQgd2VyZQotIyBjYWxjdWxhdGVkIG9uIHRoZSBob3N0IHdoZXJlIHRoZXkgcmVhbGx5IG5lZWQgdG8gYmUgZG9uZSBvbiB0aGUKLSMgdGFyZ2V0Ci0KLUNIS19GSUxFUz1gbHMgL2xpYiovKi5jaGsgL3Vzci9saWIqLyouY2hrIDI+L2Rldi9udWxsYAotU0lHTl9CSU5BUlk9YHdoaWNoIHNobGlic2lnbmAKLWZvciBJIGluICRDSEtfRklMRVMKLWRvCi0gICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCi0gICAgICAgRk49JEROLyRCTi5zbwotICAgICAgICRTSUdOX0JJTkFSWSAtaSAkRk4KLWRvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEyNjRlOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc3lzdGVtLXBrY3MxMS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWxpYnJhcnk9Ci1uYW1lPU5TUyBJbnRlcm5hbCBQS0NTICMxMSBNb2R1bGUKLXBhcmFtZXRlcnM9Y29uZmlnZGlyPSdzcWw6L2V0Yy9wa2kvbnNzZGInIGNlcnRQcmVmaXg9Jycga2V5UHJlZml4PScnIHNlY21vZD0nc2VjbW9kLmRiJyBmbGFncz0gdXBkYXRlZGlyPScnIHVwZGF0ZUNlcnRQcmVmaXg9JycgdXBkYXRlS2V5UHJlZml4PScnIHVwZGF0ZWlkPScnIHVwZGF0ZVRva2VuRGVzY3JpcHRpb249JycgCi1OU1M9RmxhZ3M9aW50ZXJuYWwsY3JpdGljYWwgdHJ1c3RPcmRlcj03NSBjaXBoZXJPcmRlcj0xMDAgc2xvdFBhcmFtcz0oMT17c2xvdEZsYWdzPVtFQ0MsUlNBLERTQSxESCxSQzIsUkM0LERFUyxSQU5ET00sU0hBMSxNRDUsTUQyLFNTTCxUTFMsQUVTLENhbWVsbGlhLFNFRUQsU0hBMjU2LFNIQTUxMl0gYXNrcHc9YW55IHRpbWVvdXQ9MzB9KQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy40NS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjQ1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODllN2Q2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjQ1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAic3FsaXRlMyBuc3ByIHpsaWIgbnNzLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInNxbGl0ZTMtbmF0aXZlIG5zcHItbmF0aXZlIHpsaWItbmF0aXZlIgotCi1MSUNFTlNFID0gIk1QTC0yLjAgfCAoTVBMLTIuMCAmIEdQTC0yLjArKSB8IChNUEwtMi4wICYgTEdQTC0yLjErKSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbnNzL0NPUFlJTkc7bWQ1PTNiMWU4OGUxYjljMGI1YTRiMjg4MWQ0NmNjZTA2YTE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRTttZDU9NDkxZjE1OGQwOWQ5NDg0NjZhZmNlODVkNmYxZmUxOGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFLU1QTDttZDU9NWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCi0KLVZFUlNJT05fRElSID0gIiR7QGQuZ2V0VmFyKCdCUCcpLnVwcGVyKCkucmVwbGFjZSgnLScsICdfJykucmVwbGFjZSgnLicsICdfJykgKyAnX1JUTSd9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL21vemlsbGEub3JnL3NlY3VyaXR5L25zcy9yZWxlYXNlcy8ke1ZFUlNJT05fRElSfS9zcmMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25zcy5wYy5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9zaWdubGlicy5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLW5vLXJwYXRoLWZvci1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1pbmNvcnJlY3Qtc2hlYmFuZy1vZi1wZXJsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcWcuYy1VTExfYWRkZW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JsYW5rLWNlcnQ5LmRiIFwKLSAgICAgICAgICAgZmlsZTovL2JsYW5rLWtleTQuZGIgXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtLXBrY3MxMS50eHQgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMTc1MmQ3MjIzZWU5ZDkxMGQ1NTFlNTcyNjRiYWZhOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMTJmMDUyMjNkMWZkZTkwMmMxNzA5NjZiZmM2ZjAxMWIyNGE4MzhiZTE2OTY5YjExMGVjZjJiYjdiYzI0ZThiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCi0KLWluaGVyaXQgc2l0ZWluZm8KLQotVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKLVREUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgewotICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNQUl9MSUJfRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX1dFUlJPUj0wCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5Ci0gICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBOQVRJVkVfRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLSAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD0iYWFyY2g2NCIKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0KLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KLSAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQotICAgICMKLSAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCi0gICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgotICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCi0gICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgotICAgICMKLSAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKLSAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCi0gICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCi0gICAgICAgIFJQQVRIPSIke1JQQVRIfSIKLX0KLQotZG9fY29tcGlsZVt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiYWFyY2g2NF9iZSIgXTsgdGhlbgotICAgICAgICBDUFVfQVJDSD1hYXJjaDY0Ci0gICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICBtYWtlIC1DIC4vbnNzIFwKLSAgICAgICAgQ0NDPSIke0NYWH0iIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAotICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCi0gICAgICAgIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCi0gICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbwotICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCi0gICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KLSAgICBkb25lCi0KLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMwotICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQ3JlYXRlIGVtcHR5IC5jaGsgZmlsZXMgZm9yIHRoZSBOU1MgbGlicmFyaWVzIGF0IGJ1aWxkIHRpbWUuIFRoZXkgY291bGQKLSAgICAjIGJlIHJlZ2VuZXJhdGVkIGF0IHRhcmdldCdzIGJvb3QgdGltZS4KLSAgICBmb3IgZmlsZSBpbiBsaWJzb2Z0b2tuMy5jaGsgbGliZnJlZWJsMy5jaGsgbGlibnNzZGJtMy5jaGs7IGRvCi0gICAgICAgIHRvdWNoICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgICAgIGNobW9kIDc1NSAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgIGRvbmUKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1dPUktESVJ9L3NpZ25saWJzLnNoICR7RH0vJHtiaW5kaXJ9L3NpZ25saWJzLnNoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotICAgIHNlZCAncy8lTlNTX1ZFUlNJT04lLyR7UFZ9LycgJHtXT1JLRElSfS9uc3MucGMuaW4gfCBzZWQgJ3MvJU5TUFJfVkVSU0lPTiUvNC45LjIvJyA+ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FUFJFRklYOiR7cHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FTElCRElSOiR7bGliZGlyfTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn0vbnNzMzpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgIyBJdCB1c2VkIHRvIGNhbGwgY2VydHV0aWwgdG8gY3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUgd2l0aCBlbXB0eSBwYXNzd29yZCBhdAotICAgICMgYnVpbGQgdGltZSwgYnV0IHRoZSBjaGVja3N1bSBvZiBrZXk0LmRiIGNoYW5nZXMgZXZlcnkgdGltZSB3aGVuIGNlcnR1dGlsIGlzIGNhbGxlZC4KLSAgICAjIEl0IGNhdXNlcyBub24tZGV0ZXJtaW5pc20gaXNzdWUsIHNvIHByb3ZpZGUgZGF0YWJhc2VzIHdpdGggYSBibGFuayBjZXJ0aWZpY2F0ZQotICAgICMgd2hpY2ggYXJlIG9yaWdpbmFsbHkgZnJvbSBvdXRwdXQgb2YgbnNzIGluIHFlbXV4ODYtNjQgYnVpbGQuIFlvdSBjYW4gZ2V0IHRoZXNlCi0gICAgIyBkYXRhYmFzZXMgYnk6Ci0gICAgIyBjZXJ0dXRpbCAtTiAtZCBzcWw6L2RhdGFiYXNlL3BhdGgvIC0tZW1wdHktcGFzc3dvcmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ibGFuay1jZXJ0OS5kYiAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvY2VydDkuZGIKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ibGFuay1rZXk0LmRiICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9rZXk0LmRiCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzdGVtLXBrY3MxMS50eHQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL3BrY3MxMS50eHQKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgotICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KLSAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAotICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCi0gICAgICAgICAgICBGTj0kRE4vJEJOLnNvCi0gICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCi0gICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBlbHNlCi0gICAgICAgIHNpZ25saWJzLnNoCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgotRklMRVNfJHtQTn0tc21pbWUgPSAiXAotICAgICR7YmluZGlyfS9zbWltZSBcCi0iCi0KLUZJTEVTXyR7UE59ID0gIlwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9saWIqLmNoayBcCi0gICAgJHtsaWJkaXJ9L2xpYiouc28gXAotICAgICIKLQotRklMRVNfJHtQTn0tZGV2ID0gIlwKLSAgICAke2xpYmRpcn0vbnNzIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAotICAgICR7aW5jbHVkZWRpcn0vKiBcCi0gICAgIgotCi1SREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOTNhMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4xOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBhIHdheSB0byBsb2FkIGFuZCBlbnVtZXJhdGUgUEtDUyMxMSBtb2R1bGVzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMjkzMzg4N2Y2MDk4MDdmYmI1N2FhNDIzN2QxNGE1MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYwotCi1ERVBFTkRTID0gImxpYnRhc24xIGxpYmZmaSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3AxMS1nbHVlL3AxMS1raXQiCi1TUkNSRVYgPSAiYjBlYmU3NTU1YzI5MTgwOGRiMjkzNzdiYTc5Y2I4MzI2MzAxZjBhNiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUFVVE9UT09MU19BVVhESVIgPSAiJHtTfS9idWlsZC9saXR0ZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3RydXN0LXBhdGhzXSA9ICItLXdpdGgtdHJ1c3QtcGF0aHM9L2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwtLXdpdGhvdXQtdHJ1c3QtcGF0aHMsLGNhLWNlcnRpZmljYXRlcyIKLQotIyBUaGlzIHJlY2lwZSBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbTQgbWFjcm9zLCBhbmQgc28gdGhlIC4vY29uZmlndXJlIGZsYWdzCi0jIHRoYXQgY29udHJvbCBndGstZG9jIGJ1aWxkIGFyZSBub24tc3RhbmRhcmQKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLXRhcmdldCA9ICIke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1kb2MgLS1lbmFibGUtZG9jLWh0bWwgLS1kaXNhYmxlLWRvYy1wZGYnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRvYycsIGQpfSAiCi0KLSMgV2hlbiBidWlsZGluZyBuYXRpdmUgcmVjaXBlcywgZGlzYWJsZSBndGtkb2MsIGFzIGl0IGlzIG5vdCBuZWNlc3NhcnksCi0jIHB1bGxzIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzLCBhbmQgbWFrZXMgYnVpbGQgdGltZXMgbG9uZ2VyCi1FWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvYyAiCi1FWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLS1kaXNhYmxlLWRvYyAiCi0KLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWd0ay1kb2MtaHRtbCAtLWRpc2FibGUtZ3RrLWRvYy1wZGYgLS1lbmFibGUtZ3RrLWRvYyAtLWRpc2FibGUtZ3RrLWRvYyIKLQotIyBwMTEta2l0IHJlbGllcyBvbiB0aGVzZSB0d28gYmVpbmcgY29waWVkIGZyb20gc291cmNlIHRyZWUKLSMgaW5zdGVhZCBvZiBiZWluZyByZWdlbmVyYXRlZCBieSBndGtkb2Mtc2NhbiwgYnV0IGRvZXNuJ3Qgc2V0dXAKLSMgZGVwZW5kZW5jaWVzIGNvcnJlY3RseSB3aGVuIHRoZXJlIGlzIGEgcGFyYWxsZWwgYnVpbGQuIExldCdzIHByZS1jb3B5Ci0jIHRoZW0gaW5zdGVhZC4KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIGNwICR7U30vZG9jL21hbnVhbC9wMTEta2l0LW92ZXJyaWRlcy50eHQgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtc2VjdGlvbnMudHh0ICR7Qn0vZG9jL21hbnVhbC8KLX0KLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3AxMS1raXQtcHJveHkuc28gXAotICAgICR7bGliZGlyfS9wa2NzMTEvKi5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS8qLmxhIgotCi0jIFBOIGNvbnRhaW5zIHAxMS1raXQtcHJveHkuc28sIGEgc3ltbGluayB0byBhIGxvYWRhYmxlIG1vZHVsZQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJhOTNmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMjAuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJQcm92aWRlcyBhIHdheSB0byBsb2FkIGFuZCBlbnVtZXJhdGUgUEtDUyMxMSBtb2R1bGVzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMjkzMzg4N2Y2MDk4MDdmYmI1N2FhNDIzN2QxNGE1MCIKKworaW5oZXJpdCBtZXNvbiBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jIGJhc2gtY29tcGxldGlvbgorCitERVBFTkRTID0gImxpYnRhc24xIGxpYnRhc24xLW5hdGl2ZSBsaWJmZmkiCisKK0RFUEVORFNfYXBwZW5kID0gIiR7QCcgZ2xpYi0yLjAnIGlmIGQuZ2V0VmFyKCdHVEtET0NfRU5BQkxFRCcpID09ICdUcnVlJyBlbHNlICcnfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3AxMS1nbHVlL3AxMS1raXQiCitTUkNSRVYgPSAiNzYyY2RhYTJjZDVjNWVjMDljYzg0NGY5YTZiZGM1NTFjN2Y2YzhlZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3RydXN0LXBhdGhzXSA9ICItRHRydXN0X3BhdGhzPS9ldGMvc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQsLCxjYS1jZXJ0aWZpY2F0ZXMiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAnZ3RrX2RvYycKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3AxMS1raXQtcHJveHkuc28gXAorICAgICR7bGliZGlyfS9wa2NzMTEvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLmxhIFwKKyAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS8qIgorCisjIFBOIGNvbnRhaW5zIHAxMS1raXQtcHJveHkuc28sIGEgc3ltbGluayB0byBhIGxvYWRhYmxlIG1vZHVsZQorSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCmluZGV4IGFhYWFhMjkuLjA1NTliOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQpAQCAtOCw2ICs4LDI1IEBACiBbU2VydmljZV0KIEVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL2RlZmF1bHQvcm5nLXRvb2xzCiBFeGVjU3RhcnQ9QFNCSU5ESVJAL3JuZ2QgLWYgJEVYVFJBX0FSR1MKK0NhcGFiaWxpdHlCb3VuZGluZ1NldD1DQVBfU1lTX0FETUlOCitJUEFkZHJlc3NEZW55PWFueQorTG9ja1BlcnNvbmFsaXR5PXllcworTWVtb3J5RGVueVdyaXRlRXhlY3V0ZT15ZXMKK05vTmV3UHJpdmlsZWdlcz15ZXMKK1ByaXZhdGVUbXA9eWVzCitQcm90ZWN0Q29udHJvbEdyb3Vwcz15ZXMKK1Byb3RlY3RIb21lPXllcworUHJvdGVjdEhvc3RuYW1lPXllcworUHJvdGVjdEtlcm5lbE1vZHVsZXM9eWVzCitQcm90ZWN0S2VybmVsTG9ncz15ZXMKK1Byb3RlY3RTeXN0ZW09c3RyaWN0CitSZXN0cmljdEFkZHJlc3NGYW1pbGllcz1BRl9VTklYCitSZXN0cmljdE5hbWVzcGFjZXM9eWVzCitSZXN0cmljdFJlYWx0aW1lPXllcworUmVzdHJpY3RTVUlEU0dJRD15ZXMKK1N5c3RlbUNhbGxBcmNoaXRlY3R1cmVzPW5hdGl2ZQorU3lzdGVtQ2FsbEVycm9yTnVtYmVyPUVQRVJNCitTeXN0ZW1DYWxsRmlsdGVyPUBzeXN0ZW0tc2VydmljZQogCiBbSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitXYW50ZWRCeT1zeXNpbml0LnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzYTQ4YTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZGFlbW9uIgotREVTQ1JJUFRJT04gPSAiQ2hlY2sgYW5kIGZlZWQgcmFuZG9tIGRhdGEgZnJvbSBoYXJkd2FyZSBkZXZpY2UgdG8ga2VybmVsIgotQVVUSE9SID0gIlBoaWxpcHAgUnVtcGYsIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4sIFwKLSAgICAgICAgICBIZW5yaXF1ZSBkZSBNb3JhZXMgSG9sc2NodWggPGhtaEBkZWJpYW4ub3JnPiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzL2lzc3VlcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAic3lzZnN1dGlscyIKLQotU1JDX1VSSSA9ICJcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scy5naXQgXAotICAgIGZpbGU6Ly9pbml0IFwKLSAgICBmaWxlOi8vZGVmYXVsdCBcCi0gICAgZmlsZTovL3JuZ2Quc2VydmljZSBcCi0iCi1TUkNSRVYgPSAiZWI1ZTM0YzdmYjA1NTk0NzYwZjk5ZDg2M2ZiZTA0MDFmZTI5N2I5MyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmdjcnlwdCBsaWJqaXR0ZXJlbnRyb3B5IgotUEFDS0FHRUNPTkZJR19saWJjLW11c2wgPSAibGliYXJncCBsaWJqaXR0ZXJlbnRyb3B5IgotCi1QQUNLQUdFQ09ORklHW2xpYmFyZ3BdID0gIi0td2l0aC1saWJhcmdwLC0td2l0aG91dC1saWJhcmdwLGFyZ3Atc3RhbmRhbG9uZSwiCi1QQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLS13aXRoLWxpYmdjcnlwdCwtLXdpdGhvdXQtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCi1QQUNLQUdFQ09ORklHW2xpYmppdHRlcmVudHJvcHldID0gIi0tZW5hYmxlLWppdHRlcmVudHJvcHksLS1kaXNhYmxlLWppdHRlcmVudHJvcHksbGliaml0dGVyZW50cm9weSIKLVBBQ0tBR0VDT05GSUdbbGlicDExXSA9ICItLXdpdGgtcGtjczExLC0td2l0aG91dC1wa2NzMTEsbGlicDExIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW25pc3RiZWFjb25dID0gIi0td2l0aC1uaXN0YmVhY29uLC0td2l0aG91dC1uaXN0YmVhY29uLGN1cmwgbGlieG1sMiBvcGVuc3NsIgotCi1JTklUU0NSSVBUX05BTUUgPSAicm5nLXRvb2xzIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDMgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJuZ2Quc2VydmljZSIKLQotIyBSZWZlciBhdXRvZ2VuLnNoIGluIHJuZy10b29scwotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgY3AgJHtTfS9SRUFETUUubWQgJHtTfS9SRUFETUUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9ybmctdG9vbHMKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcm5nLXRvb2xzCi0gICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L3JuZ2Quc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKLSAgICBzZWQgLWkgXAotICAgICAgICAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JuZy10b29scyBcCi0gICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5OGE5YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc182LjkuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBkYWVtb24iCitERVNDUklQVElPTiA9ICJDaGVjayBhbmQgZmVlZCByYW5kb20gZGF0YSBmcm9tIGhhcmR3YXJlIGRldmljZSB0byBrZXJuZWwiCitBVVRIT1IgPSAiUGhpbGlwcCBSdW1wZiwgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPiwgXAorICAgICAgICAgIEhlbnJpcXVlIGRlIE1vcmFlcyBIb2xzY2h1aCA8aG1oQGRlYmlhbi5vcmc+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJzeXNmc3V0aWxzIgorCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzLmdpdCBcCisgICAgZmlsZTovL2luaXQgXAorICAgIGZpbGU6Ly9kZWZhdWx0IFwKKyAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKKyIKK1NSQ1JFViA9ICI0YTg2NTc5N2E2OWRkMzhjNjRhODZhYTMyODg0ZWNjOWJhN2I0ZDA4IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IGxpYmppdHRlcmVudHJvcHkiCitQQUNLQUdFQ09ORklHX2xpYmMtbXVzbCA9ICJsaWJhcmdwIGxpYmppdHRlcmVudHJvcHkiCisKK1BBQ0tBR0VDT05GSUdbbGliYXJncF0gPSAiLS13aXRoLWxpYmFyZ3AsLS13aXRob3V0LWxpYmFyZ3AsYXJncC1zdGFuZGFsb25lLCIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLXdpdGgtbGliZ2NyeXB0LC0td2l0aG91dC1saWJnY3J5cHQsbGliZ2NyeXB0LCIKK1BBQ0tBR0VDT05GSUdbbGliaml0dGVyZW50cm9weV0gPSAiLS1lbmFibGUtaml0dGVyZW50cm9weSwtLWRpc2FibGUtaml0dGVyZW50cm9weSxsaWJqaXR0ZXJlbnRyb3B5IgorUEFDS0FHRUNPTkZJR1tsaWJwMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxsaWJwMTEgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbmlzdGJlYWNvbl0gPSAiLS13aXRoLW5pc3RiZWFjb24sLS13aXRob3V0LW5pc3RiZWFjb24sY3VybCBsaWJ4bWwyIG9wZW5zc2wiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJybmctdG9vbHMiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMyAyIDMgNCA1IC4gc3RvcCAzMCAwIDYgMSAuIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicm5nZC5zZXJ2aWNlIgorCisjIFJlZmVyIGF1dG9nZW4uc2ggaW4gcm5nLXRvb2xzCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBjcCAke1N9L1JFQURNRS5tZCAke1N9L1JFQURNRQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JuZy10b29scworICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMKKyAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vcm5nZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQorICAgIHNlZCAtaSBcCisgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcm5nLXRvb2xzIFwKKyAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCisKKyAgICBpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduaXN0YmVhY29uJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgICAtZSAnL15JUEFkZHJlc3NEZW55PWFueS9kJyBcCisgICAgICAgICAgICAtZSAnL15SZXN0cmljdEFkZHJlc3NGYW1pbGllcz0vIHMvJC8gQUZfSU5FVCBBRl9JTkVUNi8nIFwKKyAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQorICAgIGZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZTFhNDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJTaGFyZWQgTUlNRSB0eXBlIGRhdGFiYXNlIGFuZCBzcGVjaWZpY2F0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3NoYXJlZC1taW1lLWluZm8iCi1TRUNUSU9OID0gImJhc2UiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMCBzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL35oYWRlc3Mvc2hhcmVkLW1pbWUtaW5mby0ke1BWfS50YXIueHoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdXBkYXRlLW1pbWVkYiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWltZSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvc2hhcmVkLW1pbWUtaW5mby5wYyIKLQotIyBmcmVlZGVza3RvcC5vcmcueG1sIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB1cGRhdGluZyB0aGUgbWltZSBkYXRhYmFzZSwKLSMgcGFja2FnZSBpdCBzZXBhcmF0ZWx5Ci1QQUNLQUdFUyA9KyAic2hhcmVkLW1pbWUtaW5mby1kYXRhIgotRklMRVNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gIiR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9mcmVlZGVza3RvcC5vcmcueG1sIgotUkRFUEVORFNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gInNoYXJlZC1taW1lLWluZm8iCi0KLWRvX2luc3RhbGwgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQl1cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JJHtCfS91cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MmZmNzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1maXggc2hhcmVkLW1pbWUtaW5mbyBidWlsZCByYWNlIGNvbmRpdGlvbgotCi1UaGUgZGVmaW5pdGlvbiBvZiBpbnN0YWxsLWRhdGEtaG9vayBpbiBNYWtlZmlsZS5hbSBsZWFkcwotdG8gbXVsdGlwbGUsIG92ZXJsYXBwaW5nLCBleGVjdXRpb25zIG9mIGluc3RhbGwtYmluUFJPR1JBTVMKLXRhcmdldC4gIFdlIG1vZGlmeSB0aGUgZGVmaW5pdGlvbiB0byBhdm9pZCB0aGF0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzaGFyZWQtbWltZS1pbmZvLTEuOS5vcmlnL01ha2VmaWxlLmFtCi0rKysgc2hhcmVkLW1pbWUtaW5mby0xLjkvTWFrZWZpbGUuYW0KLUBAIC01MCw3ICs1MCw5IEBAIGVsc2UKLSAgIHVwZGF0ZV9taW1lX2RhdGFiYXNlPSIkKHRvcF9idWlsZGRpcikvdXBkYXRlLW1pbWUtZGF0YWJhc2UkKEVYRUVYVCkiCi0gZW5kaWYKLSAKLS1pbnN0YWxsLWRhdGEtaG9vazogaW5zdGFsbC1iaW5QUk9HUkFNUwotKyMgZG8gTk9UIG1ha2UgdGhpcyBkZXBlbmRlbnQgb24gYW55dGhpbmchCi0rIwotK2luc3RhbGwtZGF0YS1ob29rOgotIGlmIEVOQUJMRV9VUERBVEVfTUlNRURCCi0gCSQodXBkYXRlX21pbWVfZGF0YWJhc2UpIC1WICIkKERFU1RESVIpJChkYXRhZGlyKS9taW1lIgotIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYTM0YTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vcGFyYWxsZWxtYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhlIE1ha2VmaWxlIHVzZWQgYnkgc2hhcmVkLW1pbWUtaW5mbyBpcyBvbmUgYmlnIHJhY2Ugd2l0aCB0aGUgU1VCRElSUyAKLW9wdGlvbiBhbmQgdGhlIGRlcGVuZGVuY3kgc3BlY2lmaWNhbGx5IGNhbGxpbmcgbWFrZSBhbGwgY29tYmluaW5nIHRvCi1jcmVhdGUgbXVsdGlwbGUgbWFrZSBpbnN0YW5jZXMgYWxsIG9mIHdoaWNoIG1heSB0cnkgYW5kIGJ1aWxkIHRhcmdldHMKLWxpa2UgdXBkYXRlLW1pbWUtZGF0YWJhc2UuCi0KLVRoaXMgcGF0Y2ggcmVtb3ZlcyB0aG9zZSBvcHRpb25zIG1lYW5pbmcgbWFrZSBjYW4gY29ycmVjdGx5IGlkZW50aWZ5Ci1kZXBlbmRlbmNpZXMgYW5kIHN0b3AgaXRzZWxmIHJhY2luZyBpdHNlbGYuCi0KLVJQIDEwLzEwLzIwMTEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNoYXJlZC1taW1lLWluZm8tMS45Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotQEAgLTEsNSArMSwzIEBACi0tU1VCRElSUz0uIHBvCi0tCi0gQU1fQ1BQRkxBR1MgPSAkKEFMTF9DRkxBR1MpCi0gCi0gcGFja2FnZXNkaXIgPSAkKGRhdGFkaXIpL21pbWUvcGFja2FnZXMKLUBAIC04MSw4ICs3OSw3IEBAIGVuZGlmCi0gCi0gYWxsOiAkKGRlZmF1bHRtYWtlZGVwcykKLSAKLS1jcmVhdGUtcG90OgotLQkkKEFNX1ZfR0VOKSAkKE1BS0UpIC1DIHBvIHNoYXJlZC1taW1lLWluZm8ucG90Ci0rY3JlYXRlLXBvdDogcG8KLSAKLSBsb2NhbC10ZXN0OiBjcmVhdGUtcG90IGZyZWVkZXNrdG9wLm9yZy54bWwgdXBkYXRlLW1pbWUtZGF0YWJhc2UkKEVYRUVYVCkKLSBpZiBDUk9TU19DT01QSUxJTkcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb18xLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmMyMTBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgc2hhcmVkLW1pbWUtaW5mby5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3BhcmFsbGVsbWFrZS5wYXRjaCBcCi0JICAgIGZpbGU6Ly9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxOGMyY2VkOWRjNGRkNWNhOGIwNmE3NTVlNmQ2NGU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM2MjVhODNiNDgzOGJlZmM4Y2FmY2Q1NGUzNjE5OTQ2NTE1ZDllNDRkNjNkNjFjNGFkZjdmNTUxM2RkZmJlYmYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mb19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EwNjBiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvX2dpdC5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlNoYXJlZCBNSU1FIHR5cGUgZGF0YWJhc2UgYW5kIHNwZWNpZmljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc2hhcmVkLW1pbWUtaW5mbyIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImxpYnhtbDIgaXRzdG9vbC1uYXRpdmUgZ2xpYi0yLjAgc2hhcmVkLW1pbWUtaW5mby1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94ZGcvc2hhcmVkLW1pbWUtaW5mby5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNSRVYgPSAiODI5YjI2ZDg1ZTdkODlhMGNhZWUwMzA0NmMzYmNlMzczZjA0YzgwYSIKK1BWID0gIjEuMTUiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJSZWxlYXNlLSg/UDxwdmVyPihcZCsoXC1cZCspKykpIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUgbWltZQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXVwZGF0ZS1taW1lZGIiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pbWUiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3NoYXJlZC1taW1lLWluZm8ucGMiCisKKyMgZnJlZWRlc2t0b3Aub3JnLnhtbCBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdXBkYXRpbmcgdGhlIG1pbWUgZGF0YWJhc2UsCisjIHBhY2thZ2UgaXQgc2VwYXJhdGVseQorUEFDS0FHRVMgPSsgInNoYXJlZC1taW1lLWluZm8tZGF0YSIKK0ZJTEVTX3NoYXJlZC1taW1lLWluZm8tZGF0YSA9ICIke2RhdGFkaXJ9L21pbWUvcGFja2FnZXMvZnJlZWRlc2t0b3Aub3JnLnhtbCIKK1JERVBFTkRTX3NoYXJlZC1taW1lLWluZm8tZGF0YSA9ICJzaGFyZWQtbWltZS1pbmZvIgorCitkb19pbnN0YWxsICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJdXBkYXRlLW1pbWUtZGF0YWJhc2UgJHtEfSR7ZGF0YWRpcn0vbWltZQorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSR7Qn0vdXBkYXRlLW1pbWUtZGF0YWJhc2UgJHtEfSR7ZGF0YWRpcn0vbWltZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAyMC05MzI3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvQ1ZFLTIwMjAtOTMyNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWNiYmFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvQ1ZFLTIwMjAtOTMyNy5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAorRnJvbSA0NWQ0OTE4NTFlMWJjYTM3OGRlMTU4YTVlMjc5ZmQ1ODRjZTU0OGU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkQuIFJpY2hhcmQgSGlwcCIgPGRyaEBod2FjaS5jb20+CitEYXRlOiBNb24sIDE3IEZlYiAyMDIwIDAwOjEyOjA0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtQQVRDSCAxLzJdICBUYWtlIGNhcmUgd2hlbiBjaGVja2luZyB0aGUgdGFibGUgb2YgYSBUS19DT0xVTU4KKyAgZXhwcmVzc2lvbiBub2RlIHRvIHNlZSBpZiB0aGUgdGFibGUgaXMgYSB2aXJ0dWFsIHRhYmxlIHRvIGZpcnN0IGVuc3VyZSB0aGF0IAorIHRoZSBFeHByLnkucFRhYiBwb2ludGVyIGlzIG5vdCBudWxsIGR1ZSB0byBnZW5lcmF0ZWQgY29sdW1uIG9wdGltaXphdGlvbnMuIAorIFRpY2tldCBbNDM3NDg2MGIyOTM4MzM4MF0uCisKK0Zvc3NpbE9yaWdpbi1OYW1lOiA5ZDBkNGFiOTVkYzBjNTZlMDUzYzI5MjRlZDMyMmE5ZWE3YjI1NDM5ZTZmNzQ1OTlmNzA2OTA1YTE5OTRlNDU0CisKK1tQQVRDSCAyLzJdIEEgYmV0dGVyIChzbWFsbGVyIGFuZCBmYXN0ZXIpIHNvbHV0aW9uIHRvIHRpY2tldAorIFs0Mzc0ODYwYjI5MzgzMzgwXS4KKworRm9zc2lsT3JpZ2luLU5hbWU6IGFiYzQ3M2ZiOGZiOTk5MDA1ZGM3OWEzNjBlMzRmOTdiM2IyNTQyOWRlY2YxODIwZGQyYWZhNWMxOTU3Nzc1M2QKKworVGhlIHR3byBwYXRjaGVzIHdlcmUgY29udmVydGVkIHRvIGFtYWxnYW1hdGlvbiBmb3JtYXQKKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMjAtOTMyNworLS0tCisgc3FsaXRlMy5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBzcWxpdGUzLmggfCAgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcWxpdGUzLmMgYi9zcWxpdGUzLmMKK2luZGV4IDU1ZGM2ODYuLjY0ZmFlMDQgMTAwNjQ0CistLS0gYS9zcWxpdGUzLmMKKysrKyBiL3NxbGl0ZTMuYworQEAgLTExNjcsNyArMTE2Nyw3IEBAIGV4dGVybiAiQyIgeworICovCisgI2RlZmluZSBTUUxJVEVfVkVSU0lPTiAgICAgICAgIjMuMzEuMSIKKyAjZGVmaW5lIFNRTElURV9WRVJTSU9OX05VTUJFUiAzMDMxMDAxCistI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYjRkNiIKKysjZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JhbHQxIgorIAorIC8qCisgKiogQ0FQSTNSRUY6IFJ1bi1UaW1lIExpYnJhcnkgVmVyc2lvbiBOdW1iZXJzCitAQCAtMTc0MjgsOCArMTc0MjgsMTEgQEAgc3RydWN0IFRhYmxlIHsKKyAqLworICNpZm5kZWYgU1FMSVRFX09NSVRfVklSVFVBTFRBQkxFCisgIyAgZGVmaW5lIElzVmlydHVhbChYKSAgICAgICgoWCktPm5Nb2R1bGVBcmcpCisrIyAgZGVmaW5lIEV4cHJJc1Z0YWIoWCkgIFwKKysgICAgICAgICAgICAgICgoWCktPm9wPT1US19DT0xVTU4gJiYgKFgpLT55LnBUYWIhPTAgJiYgKFgpLT55LnBUYWItPm5Nb2R1bGVBcmcpCisgI2Vsc2UKKyAjICBkZWZpbmUgSXNWaXJ0dWFsKFgpICAgICAgMAorKyMgIGRlZmluZSBFeHBySXNWdGFiKFgpICAgICAwCisgI2VuZGlmCisgCisgLyoKK0BAIC0xMDQxMzMsMTkgKzEwNDEzNiwyNSBAQCBzdGF0aWMgaW50IGltcGxpZXNOb3ROdWxsUm93KFdhbGtlciAqcFdhbGtlciwgRXhwciAqcEV4cHIpeworICAgICBjYXNlIFRLX0xUOgorICAgICBjYXNlIFRLX0xFOgorICAgICBjYXNlIFRLX0dUOgorLSAgICBjYXNlIFRLX0dFOgorKyAgICBjYXNlIFRLX0dFOiB7CisrICAgICAgRXhwciAqcExlZnQgPSBwRXhwci0+cExlZnQ7CisrICAgICAgRXhwciAqcFJpZ2h0ID0gcEV4cHItPnBSaWdodDsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19FUSApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX05FICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfTFQgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19MRSApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0dUICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfR0UgKTsKKy0gICAgICBpZiggKHBFeHByLT5wTGVmdC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocEV4cHItPnBMZWZ0LT55LnBUYWIpKQorLSAgICAgICB8fCAocEV4cHItPnBSaWdodC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocEV4cHItPnBSaWdodC0+eS5wVGFiKSkKKysgICAgICAvKiBUaGUgeS5wVGFiPTAgYXNzaWdubWVudCBpbiB3aGVyZWNvZGUuYyBhbHdheXMgaGFwcGVucyBhZnRlciB0aGUKKysgICAgICAqKiBpbXBsaWVzTm90TnVsbFJvdygpIHRlc3QgKi8KKysgICAgICBpZiggKHBMZWZ0LT5vcD09VEtfQ09MVU1OICYmIEFMV0FZUyhwTGVmdC0+eS5wVGFiIT0wKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBJc1ZpcnR1YWwocExlZnQtPnkucFRhYikpCisrICAgICAgIHx8IChwUmlnaHQtPm9wPT1US19DT0xVTU4gJiYgQUxXQVlTKHBSaWdodC0+eS5wVGFiIT0wKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBJc1ZpcnR1YWwocFJpZ2h0LT55LnBUYWIpKQorICAgICAgICl7CistICAgICAgIHJldHVybiBXUkNfUHJ1bmU7CisrICAgICAgICByZXR1cm4gV1JDX1BydW5lOworICAgICAgIH0KKy0KKysgICAgfQorICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBXUkNfQ29udGludWU7CisgICB9CitAQCAtMTQyNTkxLDcgKzE0MjYwMCw4IEBAIHN0YXRpYyBpbnQgaXNBdXhpbGlhcnlWdGFiT3BlcmF0b3IoCisgICAgICoqICAgICAgIE1BVENIKGV4cHJlc3Npb24sdnRhYl9jb2x1bW4pCisgICAgICovCisgICAgIHBDb2wgPSBwTGlzdC0+YVsxXS5wRXhwcjsKKy0gICAgaWYoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBDb2wtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgcENvbC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBFeHBySXNWdGFiKHBDb2wpICl7CisgICAgICAgZm9yKGk9MDsgaTxBcnJheVNpemUoYU9wKTsgaSsrKXsKKyAgICAgICAgIGlmKCBzcWxpdGUzU3RySUNtcChwRXhwci0+dS56VG9rZW4sIGFPcFtpXS56T3ApPT0wICl7CisgICAgICAgICAgICpwZU9wMiA9IGFPcFtpXS5lT3AyOworQEAgLTE0MjYxMyw3ICsxNDI2MjMsOCBAQCBzdGF0aWMgaW50IGlzQXV4aWxpYXJ5VnRhYk9wZXJhdG9yKAorICAgICAqKiB3aXRoIGZ1bmN0aW9uIG5hbWVzIGluIGFuIGFyYml0cmFyeSBjYXNlLgorICAgICAqLworICAgICBwQ29sID0gcExpc3QtPmFbMF0ucEV4cHI7CistICAgIGlmKCBwQ29sLT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwQ29sLT55LnBUYWIpICl7CisrICAgIHRlc3RjYXNlKCBwQ29sLT5vcD09VEtfQ09MVU1OICYmIHBDb2wtPnkucFRhYj09MCApOworKyAgICBpZiggRXhwcklzVnRhYihwQ29sKSApeworICAgICAgIHNxbGl0ZTNfdnRhYiAqcFZ0YWI7CisgICAgICAgc3FsaXRlM19tb2R1bGUgKnBNb2Q7CisgICAgICAgdm9pZCAoKnhOb3RVc2VkKShzcWxpdGUzX2NvbnRleHQqLGludCxzcWxpdGUzX3ZhbHVlKiopOworQEAgLTE0MjYzNiwxMCArMTQyNjQ3LDEyIEBAIHN0YXRpYyBpbnQgaXNBdXhpbGlhcnlWdGFiT3BlcmF0b3IoCisgICAgIGludCByZXMgPSAwOworICAgICBFeHByICpwTGVmdCA9IHBFeHByLT5wTGVmdDsKKyAgICAgRXhwciAqcFJpZ2h0ID0gcEV4cHItPnBSaWdodDsKKy0gICAgaWYoIHBMZWZ0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwTGVmdC0+eS5wVGFiKSApeworKyAgICB0ZXN0Y2FzZSggcExlZnQtPm9wPT1US19DT0xVTU4gJiYgcExlZnQtPnkucFRhYj09MCApOworKyAgICBpZiggRXhwcklzVnRhYihwTGVmdCkgKXsKKyAgICAgICByZXMrKzsKKyAgICAgfQorLSAgICBpZiggcFJpZ2h0ICYmIHBSaWdodC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocFJpZ2h0LT55LnBUYWIpICl7CisrICAgIHRlc3RjYXNlKCBwUmlnaHQgJiYgcFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIHBSaWdodC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBwUmlnaHQgJiYgRXhwcklzVnRhYihwUmlnaHQpICl7CisgICAgICAgcmVzKys7CisgICAgICAgU1dBUChFeHByKiwgcExlZnQsIHBSaWdodCk7CisgICAgIH0KK0BAIC0yMjg0NDAsNyArMjI4NDUzLDcgQEAgU1FMSVRFX0FQSSBpbnQgc3FsaXRlM19zdG10X2luaXQoCisgI2VuZGlmIC8qICFkZWZpbmVkKFNRTElURV9DT1JFKSB8fCBkZWZpbmVkKFNRTElURV9FTkFCTEVfU1RNVFZUQUIpICovCisgCisgLyoqKioqKioqKioqKioqIEVuZCBvZiBzdG10LmMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLSNpZiBfX0xJTkVfXyE9MjI4NDQzCisrI2lmIF9fTElORV9fIT0yMjg0NTYKKyAjdW5kZWYgU1FMSVRFX1NPVVJDRV9JRAorICNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmFsdDIiCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3FsaXRlMy5oIGIvc3FsaXRlMy5oCitpbmRleCBjZWY2ZWVhLi41Yjk3OTZjIDEwMDY0NAorLS0tIGEvc3FsaXRlMy5oCisrKysgYi9zcWxpdGUzLmgKK0BAIC0xMjUsNyArMTI1LDcgQEAgZXh0ZXJuICJDIiB7CisgKi8KKyAjZGVmaW5lIFNRTElURV9WRVJTSU9OICAgICAgICAiMy4zMS4xIgorICNkZWZpbmUgU1FMSVRFX1ZFUlNJT05fTlVNQkVSIDMwMzEwMDEKKy0jZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JiNGQ2IgorKyNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmFsdDEiCisgCisgLyoKKyAqKiBDQVBJM1JFRjogUnVuLVRpbWUgTGlicmFyeSBWZXJzaW9uIE51bWJlcnMKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxOGVlYjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3FsaXRlMy5pbmMKLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT03ODZkM2RjNTgxZWZmMDNmNGZkOWU0YTc3ZWQwMGM2NiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvMjAxOS9zcWxpdGUtYXV0b2NvbmYtJHtTUUxJVEVfUFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTI1MmRjNmJjOTA5NGJhMTFhYjE1MWJhNjUwZmYzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YzVhNTBkYjA4OWJkMmExYjA4ZGJjNWIwMGQyMDI3NjAyY2E3ZmYyMzhiYTc2NThmYWJjYTQ1NGQ0Mjk4ZTYwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMxLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU2NGUyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMxLjEuYmIKQEAgLTAsMCArMSwxMyBAQAorcmVxdWlyZSBzcWxpdGUzLmluYworCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDIwL3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTkzMjcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMmQwYTU1MzUzNGM1MjE1MDRlM2FjM2FkM2I5MGYxMjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIyODRlZmViYzA1YTc2ZjkwOWM1ODBmZmE1YzAwOGE3ZDIyYTEyODcyODVkNjhiNzgyNWEyYjZiNTE5NDlhZSIKKworIyAtMTkyNDIgaXMgb25seSBhbiBpc3N1ZSBpbiBzcGVjaWZpYyBkZXZlbG9wbWVudCBicmFuY2ggY29tbWl0cworQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktMTkyNDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9uby1wYXRoLWFkanVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL25vLXBhdGgtYWRqdXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzJkODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9uby1wYXRoLWFkanVzdC5wYXRjaApAQCAtMCwwICsxLDI3IEBACit2aW06IGRvIG5vdCBhZGp1c3Qgc2NyaXB0IHBhdGhuYW1lcworCitXaGVuIGNyb3NzLWNvbXBpbGluZywgd2UgZG8gbm90IHdhbnQgdG8gcmVmZXJlbmNlIHRoZSBob3N0IHZlcnNpb25zIG9mCit0aGluZ3MgbGlrZSBwZXJsIGFuZCBhd2suCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL3NyYy9NYWtlZmlsZQorKysrIGIvc3JjL01ha2VmaWxlCitAQCAtMjUwNywxMSArMjUwNywxNCBAQCBpbnN0YWxsdG9vbHM6ICQoVE9PTFMpICQoREVTVERJUikkKGV4ZWNfCisgCQkgcm0gLXJmICQkY3ZzOyBcCisgCSAgICAgIGZpCisgCS1jaG1vZCAkKEZJTEVNT0QpICQoREVTVF9UT09MUykvKgorLSMgcmVwbGFjZSB0aGUgcGF0aCBpbiBzb21lIHRvb2xzCisrCisrIyByZXBsYWNlIHRoZSBwYXRoIGluIHNvbWUgdG9vbHMsIGJ1dCBub3Qgd2hlbiBjcm9zcy1jb21waWxpbmcKKytpZm5lcSAoJChDUk9TU19DT01QSUxJTkcpLDEpCisgCXBlcmxwYXRoPWAuL3doaWNoLnNoIHBlcmxgICYmIHNlZCAtZSAicysvdXNyL2Jpbi9wZXJsKyQkcGVybHBhdGgrIiAkKFRPT0xTU09VUkNFKS9lZm1fcGVybC5wbCA+JChERVNUX1RPT0xTKS9lZm1fcGVybC5wbAorIAlhd2twYXRoPWAuL3doaWNoLnNoIG5hd2tgICYmIHNlZCAtZSAicysvdXNyL2Jpbi9uYXdrKyQkYXdrcGF0aCsiICQoVE9PTFNTT1VSQ0UpL212ZS5hd2sgPiQoREVTVF9UT09MUykvbXZlLmF3azsgaWYgdGVzdCAteiAiJCRhd2twYXRoIjsgdGhlbiBcCisgCQlhd2twYXRoPWAuL3doaWNoLnNoIGdhd2tgICYmIHNlZCAtZSAicysvdXNyL2Jpbi9uYXdrKyQkYXdrcGF0aCsiICQoVE9PTFNTT1VSQ0UpL212ZS5hd2sgPiQoREVTVF9UT09MUykvbXZlLmF3azsgaWYgdGVzdCAteiAiJCRhd2twYXRoIjsgdGhlbiBcCisgCQlhd2twYXRoPWAuL3doaWNoLnNoIGF3a2AgJiYgc2VkIC1lICJzKy91c3IvYmluL25hd2srJCRhd2twYXRoKyIgJChUT09MU1NPVVJDRSkvbXZlLmF3ayA+JChERVNUX1RPT0xTKS9tdmUuYXdrOyBmaTsgZmkKKytlbmRpZgorIAktY2htb2QgJChTQ1JJUFRNT0QpIGBncmVwIC1sICJeIyEiICQoREVTVF9UT09MUykvKmAKKyAKKyAjIGluc3RhbGwgdGhlIGxhbmd1YWdlIHNwZWNpZmljIGZpbGVzIGZvciB0b29scywgaWYgdGhleSB3ZXJlIHVucGFja2VkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjEuMTUxOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4xLjE1MTguYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS5pbmMKaW5kZXggMGEzMWU2OC4uOWYzZGMwOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jCkBAIC01LDIwICs1LDI0IEBACiAjIHZpbWRpZmYgZG9lc24ndCBsaWtlIGJ1c3lib3ggZGlmZgogUlNVR0dFU1RTXyR7UE59ID0gImRpZmZ1dGlscyIKIExJQ0VOU0UgPSAidmltIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcnVudGltZS9kb2MvdWdhbmRhLnR4dDtlbmRsaW5lPTI4NzttZDU9ZjFmODJiNDIzNjAwMDVjNzBiOGMxOWIwZWY0OTNmNzIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ydW50aW1lL2RvYy91Z2FuZGEudHh0O2VuZGxpbmU9Mjg3O21kNT1hMTllZGQ3ZWM3MGQ1NzNhMDA1ZDllNTA5Mzc1YTk5YSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZpbS92aW0uZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1NYWtlZmlsZS1pbXByb3ZlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uby1wYXRoLWFkanVzdC5wYXRjaCBcCiAiCi1TUkNSRVYgPSAiMjAyZDk4MmIzNmQ4N2NmOTFkOTkyYmQ3ZTMwZDMyMjNiZGM3MmNkOSIKK1NSQ1JFViA9ICI5ODA1NjUzM2I5NmI2YjVkODg0OTY0MWRlOTMxODVkZDdiY2FkYzQ0IgorCisjIERvIG5vdCBjb25zaWRlciAueiBpbiB4LnkueiwgYXMgdGhhdCBpcyB1cGRhdGVkIHdpdGggZXZlcnkgY29tbWl0CitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKylcLjAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFZJTURJUiA9ICJ2aW0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbWltZS14ZGcKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIApAQCAtNzksMTIgKzgzLDYgQEAKIGRvX2luc3RhbGwoKSB7CiAgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKIAotICAgICMgV29yayBhcm91bmQgZmlsZS1yZGVwcyBwaWNraW5nIHVwIGNzaCwgYXdrLCBwZXJsIG9yIHB5dGhvbiBhcyBhIGRlcAotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvdmltMTMyCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy9tdmUuYXdrCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnBsCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnB5Ci0KICAgICAjIEluc3RhbGwgZXhhbXBsZSB2aW1yYyBmcm9tIHJ1bnRpbWUgZmlsZXMKICAgICBpbnN0YWxsIC1tIDA2NDQgcnVudGltZS92aW1yY19leGFtcGxlLnZpbSAke0R9LyR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjCiAKQEAgLTEwNyw3ICsxMDUsMTIgQEAKIEZJTEVTXyR7UE59LXR1dG9yID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90dXRvciAke2JpbmRpcn0vJHtCUE59dHV0b3IiCiBGSUxFU18ke1BOfS12aW1yYyA9ICIke2RhdGFkaXJ9LyR7QlBOfS92aW1yYyIKIEZJTEVTXyR7UE59LWRhdGEgPSAiJHtkYXRhZGlyfS8ke0JQTn0iCisKKyMgV2UgZG8gbm90IHdhbnQgdG8gY29tcGxhaW4gaWYgcGVybCBvciBnYXdrIGFyZSBub3Qgb24gdGhlIHRhcmdldC4KKyMKIEZJTEVTXyR7UE59LXRvb2xzID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scyIKK0lOU0FORV9TS0lQXyR7UE59LXRvb2xzID0gImZpbGUtcmRlcHMiCisKIEZJTEVTXyR7UE59LWNvbW1vbiA9ICIgXAogICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS8qLnZpbSBcCiAgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2F1dG9sb2FkIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjEuMTUxOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjEuMTUxOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZDM4MmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMrICYgTEdQTHYyLjErIgotTElDRU5TRV9saWJ2dGUgPSAiTEdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDM7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MR1BMMjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1iNTJmMmQ1N2QxMGM0ZjdlZTY3YTdlYjk2MTVkNWQyNCBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotR0lSX01FU09OX09QVElPTiA9ICdnaXInCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi0jIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1hcHAuY2MtdXNlLW9sZC1zY2hvb2wtYXNpZ25tZW50LXRvLWF2b2lkLWdjYy00LjgtZXJyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1XX0VYSVRDT0RFLW1hY3JvLWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRhZGJmMmMxZDk4NjRkM2VhMTg1NzM4Zjk3YWI2M2FmIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMzNjOTY2ZDJiMWYyYzNiMGY5NDE2ZGJjYTg4M2ZkNzQ2MTU5YjViZDA0MDM1MGUzYjc4ZjgxMDRiMmE0MmJjMCIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCi19Ci0KLSMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3ZhbGFdID0gIi1EdmFwaT10cnVlLC1EdmFwaT1mYWxzZSx2YWxhLW5hdGl2ZSB2YWxhIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgotIyB2YWxhIHJlcXVpcmVzIGdpcgotUEFDS0FHRUNPTkZJR19yZW1vdmVfY2xhc3MtbmF0aXZlID0gInZhbGEiCi0KLUNGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKLQotUEFDS0FHRVMgPSsgImxpYnZ0ZSAke1BOfS1wcm9tcHQiCi1GSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgotRklMRVNfJHtQTn0tcHJvbXB0ID0gIiR7c3lzY29uZmRpcn0vcHJvZmlsZS5kIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWRjMmU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMy5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIlZpcnR1YWwgdGVybWluYWwgZW11bGF0b3IgR1RLKyB3aWRnZXQgbGlicmFyeSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD12dGUiCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfbGlidnRlID0gIkxHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORy5HUEwzO21kNT0yZjMxYjI2NmQzNDQwZGQ3ZWU1MGY5MmNmNjdkOGU2YyBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YjUyZjJkNTdkMTBjNGY3ZWU2N2E3ZWI5NjE1ZDVkMjQgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGxpYnhtbDItbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK0dJUl9NRVNPTl9PUFRJT04gPSAnZ2lyJworCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtYXBwLmNjLXVzZS1vbGQtc2Nob29sLWFzaWdubWVudC10by1hdm9pZC1nY2MtNC44LWVyci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtV19FWElUQ09ERS1tYWNyby1mb3Itbm9uLWdsaWJjLXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmNTllYjA3ODRhMzYxYzA5MzljMDNkNDU2NjI1NTkxNiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjIyZGNiNTRhYzJhZDFhNTZhYjBhNzQ1ZTE2Y2NmZWIzODNmMGI1ODYwYjViZmExNzg0NTYxMjE2Zjk4ZDQ5NzUiCisKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgorCisjIEluc3RlYWQgb2YgImluaGVyaXQgdmFsYSIgd2UgZG8gdGhlIHJlbGV2YW50IHNldHRpbmdzIGhlcmUgc28gd2UgY2FuCisjIHNldCBERVBFTkRTIGJhc2VkIG9uIFBBQ0tBR0VDT05GSUcuCisKKyMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBTVEFHSU5HX0RBVEFESVIKKyMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCisKKyMgSGVscCBnLWlyLXNjYW5uZXIgZmluZCB0aGUgLnNvIGZvciBsaW5raW5nCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgorfQorCisjIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItRHZhcGk9dHJ1ZSwtRHZhcGk9ZmFsc2UsdmFsYS1uYXRpdmUgdmFsYSIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz10cnVlLC1EZ251dGxzPWZhbHNlLGdudXRscyIKKyMgdmFsYSByZXF1aXJlcyBnaXIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2NsYXNzLW5hdGl2ZSA9ICJ2YWxhIgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKK1BBQ0tBR0VTID0rICJsaWJ2dGUgJHtQTn0tcHJvbXB0IgorRklMRVNfbGlidnRlID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvKiIKK0ZJTEVTXyR7UE59LXByb21wdCA9ICIke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbiBiL3Bva3kvbWV0YS9zaXRlL2FybS1jb21tb24KaW5kZXggMTk4Yzk4Yy4uOGMzN2YzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbgorKysgYi9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uCkBAIC00LDkgKzQsNiBAQAogYWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQogYWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KIGFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm99Ci1hY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ub30KLWFjX2N2X3NjdHA9JHthY19jdl9zY3RwPW5vfQogCiAjIGJhc2gKIGFjX2N2X2NfbG9uZ19kb3VibGU9JHthY19jdl9jX2xvbmdfZG91YmxlPXllc30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1nbGliYyBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1nbGliYwppbmRleCAxNDQzZjhlLi5hMDY4MGJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tZ2xpYmMKKysrIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjCkBAIC0xLDUgKzEsNiBAQAogIyBnZW5lcmFsCiBhY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9JHthY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9eWVzfQorYWNfY3ZfZnVuY19jYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19jYWxsb2NfMF9ub25udWxsPXllc30KIGFjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfcmVhbGxvY193b3Jrcz15ZXN9CiBhY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD15ZXN9CiBhY19jdl9mdW5jX21hbGxvY193b3Jrcz0ke2FjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPXllc30KQEAgLTE0LDYgKzE1LDcgQEAKIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl90eXBlX3VpZF90PXthY19jdl90eXBlX3VpZF90PXllc30KIGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm89JHthY19jdl9mdW5jX2dldGFkZHJpbmZvPXllc30KK2FjX2N2X2Z1bmNfc3RydG9kPSR7YWNfY3ZfZnVuY19zdHJ0b2Q9eWVzfQogCiAjIGJhc2gKIGJhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3Q9JHtiYXNoX2N2X3VuZGVyX3N5c19zaWdsaXN0PXllc30KQEAgLTI4LDYgKzMwLDE0IEBACiAKICMgY29yZXV0aWxzCiBmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPSR7ZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT15ZXN9CitnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9idWc9JHtnbF9jdl9mdW5jX2dldGN3ZF9hYm9ydF9idWc9bm99CitnbF9jdl9mdW5jX2dldGN3ZF9udWxsPSR7Z2xfY3ZfZnVuY19nZXRjd2RfbnVsbD15ZXN9CitnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PXllc30KK2FjX2N2X2Z1bmNfZ2V0Z3JvdXBzX3dvcmtzPSR7YWNfY3ZfZnVuY19nZXRncm91cHNfd29ya3M9eWVzfQorZ2xfY3ZfZnVuY19uYW5vc2xlZXA9JHtnbF9jdl9mdW5jX25hbm9zbGVlcD0nbm8gKG1pc2hhbmRsZXMgbGFyZ2UgYXJndW1lbnRzKSd9CitnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9JHtnbF9jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9JHtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPXllc30KIAogIyBnbGliCiBnbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXggYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKaW5kZXggNzFlYzk2MS4uMWMxZmRhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4CisrKyBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eApAQCAtNDcsOCArNDcsMTMgQEAKIGh3X2N2X2Z1bmNfdnNucHJpbnRmX2M5OT0ke2h3X2N2X2Z1bmNfdnNucHJpbnRmX2M5OT15ZXN9CiAKICMgY29yZXV0aWxzCithY19jdl9mdW5jX2Nob3duX3dvcmtzPSR7YWNfY3ZfZnVuY19jaG93bl93b3Jrcz15ZXN9CithY19jdl9mdW5jX3V0aW1lX251bGw9JHthY19jdl9mdW5jX3V0aW1lX251bGw9eWVzfQogZ2xfY3ZfZnVuY19mc3RhdGF0X3plcm9fZmxhZz0ke2dsX2N2X2Z1bmNfZnN0YXRhdF96ZXJvX2ZsYWc9eWVzfQorZ2xfY3ZfZnVuY19saW5rX2ZvbGxvd3Nfc3ltbGluaz0ke2dsX2N2X2Z1bmNfbGlua19mb2xsb3dzX3N5bWxpbms9bm99CitnbF9jdl9mdW5jX3VubGlua19idXN5X3RleHQ9JHtnbF9jdl9mdW5jX3VubGlua19idXN5X3RleHQ9eWVzfQogZ2xfY3ZfaGF2ZV9wcm9jX3VwdGltZT0ke2dsX2N2X2hhdmVfcHJvY191cHRpbWU9eWVzfQorZ2xfY3ZfcGlwZXNfYXJlX2ZpZm9zPSR7Z2xfY3ZfcGlwZXNfYXJlX2ZpZm9zPSd5ZXMgKDEpJ30KIAogIyBteXNxbAogYWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPSR7YWNfY3Zfc3lzX3Jlc3RhcnRhYmxlX3N5c2NhbGxzPXllc30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1tdXNsIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKaW5kZXggMWI0ZmMzMi4uNGJlOGQwMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKKysrIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wKQEAgLTEsOSArMSwxMSBAQAogIyBnZW5lcmFsCiBhY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9JHthY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9bm99CithY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPXllc30KIGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPXllc30KIGFjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9eWVzfQogYWNfY3ZfZnVuY19tYWxsb2NfMF9ub25udWxsPSR7YWNfY3ZfZnVuY19tYWxsb2NfMF9ub25udWxsPXllc30KK2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9JHthY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllc30KIGFjX2N2X2Z1bmNfZ2V0cGdycF92b2lkPXllcwogYWNfY3ZfZnVuY19zZXRwZ3JwX3ZvaWQ9eWVzCiBhY19jdl9mdW5jX3NldGdyZW50X3ZvaWQ9eWVzCkBAIC0xMyw2ICsxNSw3IEBACiBhY19jdl9mdW5jX3Bvc2l4X2dldGdyZ2lkX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldGdyZ2lkX3I9eWVzfQogYWNfY3ZfZnVuY19nZXRhZGRyaW5mbz0ke2FjX2N2X2Z1bmNfZ2V0YWRkcmluZm89eWVzfQogYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD0ke2FjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzfQorYWNfY3ZfZnVuY19zdHJ0b2Q9JHthY19jdl9mdW5jX3N0cnRvZD15ZXN9CiAKICMgZ2xpYgogZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQpAQCAtMzIsOSArMzUsMTggQEAKIAogIyBjb3JldXRpbHMKIGZ1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9JHtmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz1ub30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9JHtnbF9jdl9mdW5jX2dldGN3ZF9udWxsPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PSR7Z2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9J25vLCBidXQgaXQgaXMgcGFydGx5IHdvcmtpbmcnfQorYWNfY3ZfZnVuY19nZXRncm91cHNfd29ya3M9JHthY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz15ZXN9CiBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPSR7Z2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfY2xvYmJlcj1ub30KK2dsX2N2X2Z1bmNfbmFub3NsZWVwPSR7Z2xfY3ZfZnVuY19uYW5vc2xlZXA9eWVzfQorZ2xfY3ZfZnVuY19zdHJ0b2Rfd29ya3M9JHtnbF9jdl9mdW5jX3N0cnRvZF93b3Jrcz15ZXN9CiBnbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX3R6c2V0X2Nsb2JiZXI9bm99CiBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9wb3NpeF9zaWduYXR1cmU9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXA9JHtnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPSR7Z2xfY3ZfZnVuY193b3JraW5nX21rdGltZT15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPSR7Z2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz15ZXN9CiBhY19jdl9mdW5jX3Bvc2l4X3NwYXduPSR7YWNfY3ZfZnVuY19wb3NpeF9zcGF3bj15ZXN9CiBhY19jdl9mdW5jX3Bvc2l4X3NwYXduX3dvcmtzPSR7YWNfY3ZfZnVuY19wb3NpeF9zcGF3bl93b3Jrcz15ZXN9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uIGIvcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KaW5kZXggYzVlMzU0Yy4uYTIzODQzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KKysrIGIvcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KQEAgLTI3LDEwICsyNyw3IEBACiBhY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD0ke2FjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPW5vfQogYWNfY3ZfdmFfdmFsX2NvcHk9JHthY19jdl92YV92YWxfY29weT15ZXN9CiAKLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQogYWNfY3ZfbGludXhfdmVycz0ke2FjX2N2X2xpbnV4X3ZlcnM9Mn0KLWFjX2N2X3NjdHA9JHthY19jdl9zY3RwPW5vfQogCiBhY19jdl9wYXRoX0VTRF9DT05GSUc9bm8KIGxmX2N2X3NhbmVfcmVhbGxvYz15ZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4IGIvcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKaW5kZXggNjdhM2ZjOC4uOGFjMTk4YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKKysrIGIvcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKQEAgLTIsOSArMiw2IEBACiBhY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQogYWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9JHthY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99CiAKICMgYXBhY2hlCiBhY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zc2l6ZV90PTR9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXggYi9wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXgKaW5kZXggZjM3ZTkxNS4uMTcyYTA2YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CisrKyBiL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eApAQCAtMzksMTAgKzM5LDYgQEAKICMgYXBhY2hlCiBhY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zc2l6ZV90PTR9CiAKLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99Ci0KICMgc3NoCiBhY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfZGlyZW50X2hhdmVfc3BhY2VfZF9uYW1lPXllc30KIGFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24gYi9wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KaW5kZXggOTdjOTY5My4uNmJkYTFjMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uCisrKyBiL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgpAQCAtMzEsMTAgKzMxLDYgQEAKICMgYXBhY2hlCiBhY19jdl9zaXplb2Zfc3NpemVfdD0ke2FjX2N2X3NpemVvZl9zc2l6ZV90PTR9CiAKLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99Ci0KICMgc3NoCiBhY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfZGlyZW50X2hhdmVfc3BhY2VfZF9uYW1lPXllc30KIGFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvYnVpbGRhbGwtcWVtdSBiL3Bva3kvc2NyaXB0cy9idWlsZGFsbC1xZW11Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNhOWFhZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvYnVpbGRhbGwtcWVtdQpAQCAtMCwwICsxLDEyMCBAQAorIyEvYmluL3NoCisjICBDb3B5cmlnaHQgKGMpIDIwMjAgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgYnVpbGRhbGwtcWVtdTogYSB0b29sIGZvciBhdXRvbWF0aW5nIGJ1aWxkIHRlc3Rpbmcgb2YgcmVjaXBlcworIyBUT0RPOiBBZGQgc3VwcG9ydCBmb3Igc2VsZWN0aW5nIHdoaWNoIHFlbXUgYXJjaGl0ZWN0dXJlcyB0byBidWlsZAorIyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgcXVldWVpbmcgdXAgbXVsdGlwbGUgcmVjaXBlIGJ1aWxkcworIyBUT0RPOiBBZGQgbW9yZSBsb2dnaW5nIG9wdGlvbnMgKGUuZy4gbG9jYWwuY29uZiBpbmZvLCBiaXRiYWtlIGVudiBpbmZvKQorCit1c2FnZSAoKQoreworICAgIGJhc2U9JChiYXNlbmFtZSAiJDAiKQorICAgIGVjaG8gIlVzYWdlOiAkYmFzZSBbb3B0aW9uc10gW3JlY2lwZW5hbWUvdGFyZ2V0XSIKKyAgICBlY2hvICJFeGVjdXRlcyBhIGJ1aWxkIG9mIGEgZ2l2ZW4gdGFyZ2V0IGZvciBzZWxlY3RlZCBMSUJDcy4gV2l0aCBubyBvcHRpb25zLCBkZWZhdWx0IHRvIGJvdGggbGliYyBhbmQgbXVzbC4iCisgICAgZWNobyAiT3B0aW9uczoiCisgICAgZWNobyAiLWwsIC0tbGliYyAgICAgICAgICAgIFNwZWNpZnkgb25lIG9mIFwiZ2xpYmNcIiBvciBcIm11c2xcIiIKK30KKworCitidWlsZGFsbCAoKQoreworICAgICMgR2V0IHBhdGggdG8gb2UtY29yZSBkaXJlY3RvcnkuIFNpbmNlIG9lLWluaXQtYnVpbGQtZW52IHByZXBlbmRzICRQQVRIIHdpdGgKKyAgICAjIHRoZSBwYXRoIHRvIHRoZSBzY3JpcHRzIGRpcmVjdG9yeSwgZ2V0IGl0IGZyb20gdGhlcmUKKyAgICBTQ1JJUFRTX1BBVEg9IiQoZWNobyAiJFBBVEgiIHwgY3V0IC1kICI6IiAtZiAxKSIKKyAgICBPRV9DT1JFX1BBVEg9JChlY2hvICIkU0NSSVBUU19QQVRIIiB8IHNlZCAnc3xcKC4qXCkvLip8XDF8JykgCisKKyAgICAjIEdldCB0YXJnZXQgbGlzdCBhbmQgaG9zdCBtYWNoaW5lIGluZm9ybWF0aW9uCisgICAgVEFSR0VUX0xJU1Q9JChmaW5kICIkT0VfQ09SRV9QQVRIIi9tZXRhL2NvbmYvbWFjaGluZSAtbWF4ZGVwdGggMSAtdHlwZSBmIHwgZ3JlcCBxZW11IHwgc2VkICdzfC4qL3x8JyB8IHNlZCAtZSAncy9cLmNvbmYvLycpCisKKyAgICAjIFNldCBMSUJDIHZhbHVlIHRvIHVzZSBmb3IgdGhlIGJ1aWxkcyBiYXNlZCBvbiBvcHRpb25zIHByb3ZpZGVkIGJ5IHRoZSB1c2VyCisgICAgaWYgWyAtbiAiJDIiIF0KKyAgICB0aGVuCisJTElCQ19MSVNUPSIkMiIKKwllY2hvICIkTElCQ19MSVNUIgorICAgIGVsc2UKKwlMSUJDX0xJU1Q9ImdsaWJjIG11c2wiCisJZWNobyAiJExJQkNfTElTVCIKKyAgICBmaQorCisgICAgU1RBUlRfVElNRT0kKGRhdGUgIislWS0lbS0lZF8lSDolTTolUyIpCisgICAgTE9HX0ZJTEU9IiQxLWJ1aWxkYWxsLmxvZyIKKyAgICBPU19JTkZPPSQoZ3JlcCAiUFJFVFRZX05BTUU9IiAvZXRjL29zLXJlbGVhc2UgfCBhd2sgLUYgIj0iICd7cHJpbnQgJDJ9JyB8IHNlZCAtZSAncy9eIi8vJyAtZSAncy8iJC8vJykKKworICAgICMgQXBwZW5kIGFuIGV4aXN0aW5nIGxvZyBmaWxlIGZvciB0aGlzIGJ1aWxkIHdpdGggLm9sZCBpZiBvbmUgZXhpc3RzCisgICAgaWYgWyAtZiAiJHtMT0dfRklMRX0iIF0gCisgICAgdGhlbgorICAgICAgIG12ICIke0xPR19GSUxFfSIgIiR7TE9HX0ZJTEV9Lm9sZCIKKyAgICBlbHNlCisJICAgdG91Y2ggIiR7TE9HX0ZJTEV9IgorICAgIGZpCisKKyAgICAjIEZpbGwgdGhlIGxvZyBmaWxlIHdpdGggYnVpbGQgYW5kIGhvc3QgaW5mbworICAgIGVjaG8gIkJVSUxEQUxMLVFFTVUgTE9HIEZPUiAkMSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIlNUQVJUIFRJTUU6ICR7U1RBUlRfVElNRX0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJIT1NUTkFNRTogJCh1bmFtZSAtbikiID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJIT1NUIE9TOiAke09TX0lORk99IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiSE9TVCBLRVJORUw6ICQodW5hbWUgLXIpIiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiPT09PT09PT09PT09PT09IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiQlVJTEQgUkVTVUxUUzoiID4+ICIke0xPR19GSUxFfSIKKworICAgICMgc3RhcnQgdGhlIGJ1aWxkcyBmb3IgZWFjaCBNQUNISU5FIGFuZCBUQ0xJQkMKKyAgICBmb3IgaiBpbiAke0xJQkNfTElTVH0gCisgICAgZG8KKwllY2hvICJbJGpdIiA+PiAiJHtMT0dfRklMRX0iCisJZm9yIGkgaW4gJHtUQVJHRVRfTElTVH0gCisJZG8KKwkgICAgZWNobyAiJGkiICIkaiI7IFwKKwkgICAgVENMSUJDPSRqIE1BQ0hJTkU9JGkgYml0YmFrZSAiJDEiICYmIGVjaG8gIlBBU1M6ICRpIiA+PiAiJHtMT0dfRklMRX0iIHx8IGVjaG8gIkZBSUw6ICRpIiA+PiAiJHtMT0dfRklMRX0iCisJZG9uZQorICAgIGRvbmUKKworICAgICMgR2V0IHBhc3MvZmFpbCB0b3RhbHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxvZworICAgIFBBU1NFRD0kKGdyZXAgIlBBU1M6IiAiJHtMT0dfRklMRX0iIHwgd2MgLWwpCisgICAgRkFJTEVEPSQoZ3JlcCAiRkFJTDoiICIke0xPR19GSUxFfSIgfCB3YyAtbCkKKworICAgIGVjaG8gIj09PT09PT09PT09PT09PSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIlBBU1NFRDogJHtQQVNTRUR9IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiRkFJTEVEOiAke0ZBSUxFRH0iID4+ICIke0xPR19GSUxFfSIKK30KKworCisjIGZhaWwgZW50aXJlIHNjcmlwdCBpZiBhbnkgY29tbWFuZCBmYWlscworc2V0IC1lCisKKyMgcHJpbnQgdXNhZ2UgYW5kIGV4aXQgaWYgbm90IGVub3VnaCBhcmdzIGdpdmVuCitbICQjIC1lcSAwIF0gJiYgdXNhZ2UgJiYgZXhpdCAxCisKKyMgaGFuZGxlIGFyZ3VtZW50cworUkVDSVBFPQord2hpbGUgWyAkIyAtZ3QgMCBdCitkbworICAgIGFyZz0kMQorICAgIGNhc2UgJGFyZyBpbgorCS1sfC0tbGliYykKKwlpZiBbICIkMiIgPSAiZ2xpYmMiIF0gfHwgWyAiJDIiID0gIm11c2wiIF0KKwl0aGVuCisJICAgIExJQkNfTElTVD0iJDIiCisJZWxzZQorCSAgICBlY2hvICJVbnJlY29nbml6ZWQgbGliYyBvcHRpb24uIgorCSAgICB1c2FnZSAmJiBleGl0IDEKKwlmaQorCXNoaWZ0CisJc2hpZnQKKwk7OworCSopCisgICAgICAgIFJFQ0lQRT0iJDEiCisJc2hpZnQKKwk7OworICAgIGVzYWMKK2RvbmUKKworc2V0IC0tICIkUkVDSVBFIgorCisjIHJ1biBidWlsZGFsbCBmb3IgdGhlIGdpdmVuIHJlY2lwZSBhbmQgTElCQworaWYgWyAtbiAiJDEiIF0KK3RoZW4KKwlidWlsZGFsbCAiJDEiICIkTElCQ19MSVNUIgorZmkKKwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyIGIvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCmluZGV4IDliNTBlOTguLmE2MzRkZDYgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgorKysgYi9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAgbG9nZ2VyLmRlYnVnKCJMb2FkaW5nIGNvbmZpZyBmaWxlICVzIiAlIHNlbGYuY29uZmZpbGUpCiAgICAgICAgIHNlbGYucGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmNvbmZmaWxlKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVhZGZwKGYpCisgICAgICAgICAgICBzZWxmLnBhcnNlci5yZWFkX2ZpbGUoZikKIAogICAgICAgICAjIGluaXRpYWxpemUgZGVmYXVsdCB2YWx1ZXMKICAgICAgICAgc2VsZi5jb21taXRfbXNnX3RlbXBsYXRlID0gIkF1dG9tYXRpYyBjb21taXQgdG8gdXBkYXRlIGxhc3RfcmV2aXNpb24iCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMtcGxvdC5zaCBiL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy1wbG90LnNoCmluZGV4IDg5ODgzNGUuLjQ1YzI3ZDAgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy1wbG90LnNoCisrKyBiL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy1wbG90LnNoCkBAIC0zOSw3ICszOSwxMCBAQAogCiBCU19ESVI9InRtcC9idWlsZHN0YXRzIgogTj0xMAorUkVDSVBFPSIiCitUQVNLUz0iY29tcGlsZTpjb25maWd1cmU6ZmV0Y2g6aW5zdGFsbDpwYXRjaDpwb3B1bGF0ZV9saWM6cG9wdWxhdGVfc3lzcm9vdDp1bnBhY2siCiBTVEFUUz0idXRpbWUiCitBQ0NVTVVMQVRFPSIiCiBTVU09IiIKIE9VVERBVEFfRklMRT0iJFBXRC9idWlsZHN0YXRzLXBsb3Qub3V0IgogCkBAIC01MSwxMSArNTQsMTUgQEAKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRCU19ESVIiKQogICAtbiBOICAgICAgICAgIFRvcCBOIHJlY2lwZXMgdG8gZGlzcGxheS4gSWdub3JlZCBpZiAtUyBpcyBwcmVzZW50CiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkTiIpCisgIC1yIHJlY2lwZSAgICAgVGhlIHJlY2lwZSBtYXNrIHRvIGJlIHNlYXJjaGVkCisgIC10IHRhc2tzICAgICAgVGhlIHRhc2tzIHRvIGJlIGNvbXB1dGVkCisgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkVEFTS1MiKQogICAtcyBzdGF0cyAgICAgIFRoZSBzdGF0cyB0byBiZSBtYXRjaGVkLiBJZiBtb3JlIHRoYXQgb25lIHN0YXQsIHVuaXRzCiAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHRoZSBzYW1lIGJlY2F1c2UgZGF0YSBpcyBwbG90IGFzIGhpc3RvZ3JhbS4KICAgICAgICAgICAgICAgICAoc2VlIGJ1aWxkc3RhdHMuc2ggLWggZm9yIGFsbCBvcHRpb25zKSBvciBhbnkgb3RoZXIgZGVmaW5lZAogICAgICAgICAgICAgICAgIChidWlsZClzdGF0IHNlcGFyYXRlZCBieSBjb2xvbnMsIGkuZS4gc3RpbWU6dXRpbWUKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRTVEFUUyIpCisgIC1hICAgICAgICAgICAgQWNjdW11bGF0ZSBhbGwgc3RhdHMgdmFsdWVzIGZvciBmb3VuZCByZWNpcGVzCiAgIC1TICAgICAgICAgICAgU3VtIHZhbHVlcyBmb3IgYSBwYXJ0aWN1bGFyIHN0YXQgZm9yIGZvdW5kIHJlY2lwZXMKICAgLW8gICAgICAgICAgICBPdXRwdXQgZGF0YSBmaWxlLgogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJE9VVERBVEFfRklMRSIpCkBAIC02NCwzMiArNzEsNDEgQEAKIH0KIAogIyBQYXJzZSBhbmQgdmFsaWRhdGUgYXJndW1lbnRzCi13aGlsZSBnZXRvcHRzICJiOm46czpvOlNoIiBPUFQ7IGRvCi0JY2FzZSAkT1BUIGluCi0JYikKLQkJQlNfRElSPSIkT1BUQVJHIgotCQk7OwotCW4pCi0JCU49IiRPUFRBUkciCi0JCTs7Ci0JcykKLQkgICAgICAgIFNUQVRTPSIkT1BUQVJHIgotCSAgICAgICAgOzsKLQlTKQotCSAgICAgICAgU1VNPSJ5IgotCSAgICAgICAgOzsKLQlvKQotCSAgICAgICAgT1VUREFUQV9GSUxFPSIkT1BUQVJHIgotCSAgICAgICAgOzsKLQloKQotCQl1c2FnZQotCQlleGl0IDAKLQkJOzsKLQkqKQotCQl1c2FnZQotCQlleGl0IDEKLQkJOzsKLQllc2FjCit3aGlsZSBnZXRvcHRzICJiOm46cjp0OnM6bzphU2giIE9QVDsgZG8KKyAgICBjYXNlICRPUFQgaW4KKyAgICBiKQorICAgICAgICBCU19ESVI9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgbikKKyAgICAgICAgTj0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICByKQorICAgICAgICBSRUNJUEU9Ii1yICRPUFRBUkciCisgICAgICAgIDs7CisgICAgdCkKKyAgICAgICAgVEFTS1M9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgcykKKyAgICAgICAgU1RBVFM9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgYSkKKyAgICAgICAgQUNDVU1VTEFURT0iLWEiCisgICAgICAgIDs7CisgICAgUykKKyAgICAgICAgU1VNPSJ5IgorICAgICAgICA7OworICAgIG8pCisgICAgICAgIE9VVERBVEFfRklMRT0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBoKQorICAgICAgICB1c2FnZQorICAgICAgICBleGl0IDAKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICB1c2FnZQorICAgICAgICBleGl0IDEKKyAgICAgICAgOzsKKyAgICBlc2FjCiBkb25lCiAKICMgR2V0IG51bWJlciBvZiBzdGF0cwpAQCAtMTAxLDEwICsxMTcsMTAgQEAKIAogIyBQYXJzZSBidWlsZHN0YXRzIHJlY2lwZXMgdG8gcHJvZHVjZSBhIHNpbmdsZSB0YWJsZQogT1VUQlVJTERTVEFUUz0iJFBXRC9idWlsZHN0YXRzLmxvZyIKLSRDRC9idWlsZHN0YXRzLnNoIC1IIC1zICIkU1RBVFMiIC1IID4gJE9VVEJVSUxEU1RBVFMKKyRDRC9idWlsZHN0YXRzLnNoIC1iICIkQlNfRElSIiAtcyAiJFNUQVRTIiAtdCAiJFRBU0tTIiAkUkVDSVBFICRBQ0NVTVVMQVRFIC1IID4gJE9VVEJVSUxEU1RBVFMKIAogIyBHZXQgaGVhZGVycwotSEVBREVSUz0kKGNhdCAkT1VUQlVJTERTVEFUUyB8IHNlZCAtbiAtZSAnMXMvIC8tL2cnIC1lICcxcy86LyAvZ3AnKQorSEVBREVSUz0kKGNhdCAkT1VUQlVJTERTVEFUUyB8IHNlZCAtbiAtZSAncy9cKC4qXCkvIlwxIi8nIC1lICcxcy8gL1xcXFxcXFxcIC9nJyAtZSAncy9fL1xcXFxcXFxcXy9nJyAtZSAnMXMvOi8iICIvZ3AnKQogCiBlY2hvIC1lICJzZXQgYm94d2lkdGggMC45IHJlbGF0aXZlIgogZWNobyAtZSAic2V0IHN0eWxlIGRhdGEgaGlzdG9ncmFtcyIKQEAgLTExMyw3ICsxMjksNyBAQAogCiAjIEdldCBvdXRwdXQgZGF0YQogaWYgWyAteiAiJFNVTSIgXTsgdGhlbgotICAgIGNhdCAkT1VUQlVJTERTVEFUUyB8IHNlZCAtZSAnMWQnIHwgc29ydCAtazMgLW4gLXIgfCBoZWFkIC0kTiA+ICRPVVREQVRBX0ZJTEUKKyAgICBjYXQgJE9VVEJVSUxEU1RBVFMgfCBzZWQgLWUgJzFkJyAtZSAncy9fL1xcXFxfL2cnIHwgc29ydCAtazMgLW4gLXIgfCBoZWFkIC0kTiA+ICRPVVREQVRBX0ZJTEUKICAgICAjIGluY2x1ZGUgdGFzayBhdCByZWNpcGUgY29sdW1uCiAgICAgc2VkIC1pIC1lICIxaVwKICR7SEVBREVSU30iICRPVVREQVRBX0ZJTEUKQEAgLTEyNSw4ICsxNDEsOCBAQAogICAgIGRlY2xhcmUgLWEgc3VtYXJncwogICAgIGo9MAogICAgIGZvciBpIGluIGBzZXEgJG5zdGF0c2A7IGRvCi0Jc3VtYXJnc1tqXT1zdW07IGo9JCgoICRqICsgMSApKQotCXN1bWFyZ3Nbal09YGV4cHIgMyArICRpIC0gMWA7ICBqPSQoKCAkaiArIDEgKSkKKyAgICAgICAgc3VtYXJnc1tqXT1zdW07IGo9JCgoICRqICsgMSApKQorICAgICAgICBzdW1hcmdzW2pdPWBleHByIDMgKyAkaSAtIDFgOyAgaj0kKCggJGogKyAxICkpCiAgICAgZG9uZQogCiAgICAgIyBEbyB0aGUgcHJvY2Vzc2luZyB3aXRoIGRhdGFtYXNoCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMuc2ggYi9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMuc2gKaW5kZXggZTllYzJkNC4uZTQ1Y2ZjMSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLnNoCisrKyBiL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaApAQCAtMzYsOCArMzYsMTAgQEAKIENoaWxkIHJ1c2FnZSBydV9uaXZjc3ciCiAKIEJTX0RJUj0idG1wL2J1aWxkc3RhdHMiCitSRUNJUEU9IiIKIFRBU0tTPSJjb21waWxlOmNvbmZpZ3VyZTpmZXRjaDppbnN0YWxsOnBhdGNoOnBvcHVsYXRlX2xpYzpwb3B1bGF0ZV9zeXNyb290OnVucGFjayIKIFNUQVRTPSIkVElNRSIKK0FDQ1VNVUxBVEU9IiIKIEhFQURFUj0iIiAjIE5vIGhlYWRlciBieSBkZWZhdWx0CiAKIGZ1bmN0aW9uIHVzYWdlIHsKQEAgLTQ2LDYgKzQ4LDcgQEAKIFVzYWdlOiAkQ01EIFstYiBidWlsZHN0YXRzX2Rpcl0gWy10IGRvX3Rhc2tdCiAgIC1iIGJ1aWxkc3RhdHMgVGhlIHBhdGggd2hlcmUgdGhlIGZvbGRlciByZXNpZGVzCiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkQlNfRElSIikKKyAgLXIgcmVjaXBlICAgICBUaGUgcmVjaXBlIHRvIGJlIGNvbXB1dGVkCiAgIC10IHRhc2tzICAgICAgVGhlIHRhc2tzIHRvIGJlIGNvbXB1dGVkCiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkVEFTS1MiKQogICAtcyBzdGF0cyAgICAgIFRoZSBzdGF0cyB0byBiZSBtYXRjaGVkLiBPcHRpb25zOiBUSU1FLCBJTywgUlVTQUdFLCBDSElMRF9SVVNBR0UKQEAgLTU2LDg3ICs1OSwxMDkgQEAKICAgICAgICAgICAgICAgICAgICAgSU89JElPCiAgICAgICAgICAgICAgICAgICAgIFJVU0FHRT0kUlVTQUdFCiAgICAgICAgICAgICAgICAgICAgIENISUxEX1JVU0FHRT0kQ0hJTERfUlVTQUdFCisgIC1hICAgICAgICAgICAgQWNjdW11bGF0ZSBhbGwgc3RhdHMgdmFsdWVzIGZvciBmb3VuZCByZWNpcGVzCiAgIC1oICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZQogRU9NCiB9CiAKICMgUGFyc2UgYW5kIHZhbGlkYXRlIGFyZ3VtZW50cwotd2hpbGUgZ2V0b3B0cyAiYjp0OnM6SGgiIE9QVDsgZG8KLQljYXNlICRPUFQgaW4KLQliKQotCQlCU19ESVI9IiRPUFRBUkciCi0JCTs7Ci0JdCkKLQkJVEFTS1M9IiRPUFRBUkciCi0JCTs7Ci0JcykKLQkJU1RBVFM9IiRPUFRBUkciCi0JCTs7Ci0JSCkKLQkgICAgICAgIEhFQURFUj0ieSIKLQkgICAgICAgIDs7Ci0JaCkKLQkJdXNhZ2UKLQkJZXhpdCAwCi0JCTs7Ci0JKikKLQkJdXNhZ2UKLQkJZXhpdCAxCi0JCTs7Ci0JZXNhYword2hpbGUgZ2V0b3B0cyAiYjpyOnQ6czphSGgiIE9QVDsgZG8KKyAgICBjYXNlICRPUFQgaW4KKyAgICBiKQorICAgICAgICBCU19ESVI9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgcikKKyAgICAgICAgUkVDSVBFPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHQpCisgICAgICAgIFRBU0tTPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHMpCisgICAgICAgIFNUQVRTPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIGEpCisgICAgICAgIEFDQ1VNVUxBVEU9InkiCisgICAgICAgIDs7CisgICAgSCkKKyAgICAgICAgSEVBREVSPSJ5IgorICAgICAgICA7OworICAgIGgpCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMAorICAgICAgICA7OworICAgICopCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMQorICAgICAgICA7OworICAgIGVzYWMKIGRvbmUKIAogIyBFbnN1cmUgdGhlIGJ1aWxkc3RhdHMgZm9sZGVyIGV4aXN0cwogaWYgWyAhIC1kICIkQlNfRElSIiBdOyB0aGVuCi0JZWNobyAiRVJST1I6ICRCU19ESVIgZG9lcyBub3QgZXhpc3QiCi0JdXNhZ2UKLQlleGl0IDEKKyAgICBlY2hvICJFUlJPUjogJEJTX0RJUiBkb2VzIG5vdCBleGlzdCIKKyAgICB1c2FnZQorICAgIGV4aXQgMQogZmkKIAogc3RhdHM9IiIKIElGUz0iOiIKIGZvciBzdGF0IGluICR7U1RBVFN9OyBkbwotCWNhc2UgJHN0YXQgaW4KLQkgICAgVElNRSkKLQkJc3RhdHM9IiR7c3RhdHN9OiR7VElNRX0iCi0JCTs7Ci0JICAgIElPKQotCQlzdGF0cz0iJHtzdGF0c306JHtJT30iCi0JCTs7Ci0JICAgIFJVU0FHRSkKLQkJc3RhdHM9IiR7c3RhdHN9OiR7UlVTQUdFfSIKLQkJOzsKLQkgICAgQ0hJTERfUlVTQUdFKQotCQlzdGF0cz0iJHtzdGF0c306JHtDSElMRF9SVVNBR0V9IgotCQk7OwotCSAgICAqKQotCQlzdGF0cz0iJHtTVEFUU30iCi0JZXNhYworICAgIGNhc2UgJHN0YXQgaW4KKyAgICAgICAgVElNRSkKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke1RJTUV9IgorICAgICAgICAgICAgOzsKKyAgICAgICAgSU8pCisgICAgICAgICAgICBzdGF0cz0iJHtzdGF0c306JHtJT30iCisgICAgICAgICAgICA7OworICAgICAgICBSVVNBR0UpCisgICAgICAgICAgICBzdGF0cz0iJHtzdGF0c306JHtSVVNBR0V9IgorICAgICAgICAgICAgOzsKKyAgICAgICAgQ0hJTERfUlVTQUdFKQorICAgICAgICAgICAgc3RhdHM9IiR7c3RhdHN9OiR7Q0hJTERfUlVTQUdFfSIKKyAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICBzdGF0cz0iJHtTVEFUU30iCisgICAgICAgICAgICA7OworICAgIGVzYWMKIGRvbmUKIAogIyByZW1vdmUgcG9zc2libGUgY29sb24gYXQgdGhlIGJlZ2lubmluZwogc3RhdHM9IiQoZWNobyAiJHN0YXRzIiB8IHNlZCAtZSAncy9eOi8vMScpIgogCiAjIFByb3ZpZGUgYSBoZWFkZXIgaWYgcmVxdWlyZWQgYnkgdGhlIHVzZXIKLVsgLW4gIiRIRUFERVIiIF0gJiYgeyBlY2hvICJ0YXNrOnJlY2lwZTokc3RhdHMiOyB9CitpZiBbIC1uICIkSEVBREVSIiBdIDsgdGhlbgorICAgIGlmIFsgLW4gIiRBQ0NVTVVMQVRFIiBdOyB0aGVuCisgICAgICAgIGVjaG8gInRhc2s6cmVjaXBlOmFjY3VtdWxhdGVkKCR7c3RhdHMvLzovO30pIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAidGFzazpyZWNpcGU6JHN0YXRzIgorICAgIGZpCitmaQogCiBmb3IgdGFzayBpbiAke1RBU0tTfTsgZG8KICAgICB0YXNrPSJkb18ke3Rhc2t9IgotICAgIGZvciBmaWxlIGluICQoZmluZCAke0JTX0RJUn0gLXR5cGUgZiAtbmFtZSAke3Rhc2t9IHwgYXdrICdCRUdJTnsgT1JTPSIiOyBPRlM9IjoiIH0geyBwcmludCAkMCwiIiB9Jyk7IGRvCisgICAgZm9yIGZpbGUgaW4gJChmaW5kICR7QlNfRElSfSAtdHlwZSBmIC1wYXRoICoke1JFQ0lQRX0qLyR7dGFza30gfCBhd2sgJ0JFR0lOeyBPUlM9IiI7IE9GUz0iOiIgfSB7IHByaW50ICQwLCIiIH0nKTsgZG8KICAgICAgICAgcmVjaXBlPSIkKGJhc2VuYW1lICQoZGlybmFtZSAkZmlsZSkpIgotCXRpbWVzPSIiCi0JZm9yIHN0YXQgaW4gJHtzdGF0c307IGRvCi0JICAgIFsgLXogIiRzdGF0IiBdICYmIHsgZWNobyAiZW1wdHkgc3RhdHMiOyB9Ci0JICAgIHRpbWU9JChzZWQgLW4gLWUgInMvXlwoJHN0YXRcKTogXFwoLipcXCkvXFwyL3AiICRmaWxlKQotCSAgICAjIGluIGNhc2UgdGhlIHN0YXQgaXMgbm90IHByZXNlbnQsIHNldCB0aGUgdmFsdWUgYXMgTkEKLQkgICAgWyAteiAiJHRpbWUiIF0gJiYgeyB0aW1lPSJOQSI7IH0KLQkgICAgIyBBcHBlbmQgaXQgdG8gdGltZXMKLQkgICAgaWYgWyAteiAiJHRpbWVzIiBdOyB0aGVuCi0JCXRpbWVzPSIke3RpbWV9IgotCSAgICBlbHNlCi0JCXRpbWVzPSIke3RpbWVzfSAke3RpbWV9IgotCSAgICBmaQotCWRvbmUKKyAgICAgICAgdGltZXM9IiIKKyAgICAgICAgZm9yIHN0YXQgaW4gJHtzdGF0c307IGRvCisgICAgICAgICAgICBbIC16ICIkc3RhdCIgXSAmJiB7IGVjaG8gImVtcHR5IHN0YXRzIjsgfQorICAgICAgICAgICAgdGltZT0kKHNlZCAtbiAtZSAicy9eXCgkc3RhdFwpOiBcXCguKlxcKS9cXDIvcCIgJGZpbGUpCisgICAgICAgICAgICAjIGluIGNhc2UgdGhlIHN0YXQgaXMgbm90IHByZXNlbnQsIHNldCB0aGUgdmFsdWUgYXMgTkEKKyAgICAgICAgICAgIFsgLXogIiR0aW1lIiBdICYmIHsgdGltZT0iTkEiOyB9CisgICAgICAgICAgICAjIEFwcGVuZCBpdCB0byB0aW1lcworICAgICAgICAgICAgaWYgWyAteiAiJHRpbWVzIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgdGltZXM9IiR7dGltZX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGltZXM9IiR7dGltZXN9ICR7dGltZX0iCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgICAgIGlmIFsgLW4gIiRBQ0NVTVVMQVRFIiBdOyB0aGVuCisgICAgICAgICAgICBJRlM9JyAnOyB2YWx1ZXNhcnJheT0oJHt0aW1lc30pOyBJRlM9JzonCisgICAgICAgICAgICB0aW1lcz0wCisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gIiR7dmFsdWVzYXJyYXlbQF19IjsgZG8KKyAgICAgICAgICAgICAgICBbICIkdmFsdWUiID09ICJOQSIgXSAmJiB7IGVjaG8gIkVSUk9SOiBzdGF0IGlzIG5vdCBwcmVzZW50LiI7IHVzYWdlOyBleGl0IDE7IH0KKyAgICAgICAgICAgICAgICB0aW1lcz0kKCggJHRpbWVzICsgJHZhbHVlICkpCisgICAgICAgICAgICBkb25lCisgICAgICAgIGZpCiAgICAgICAgIGVjaG8gIiR7dGFza30gJHtyZWNpcGV9ICR7dGltZXN9IgogICAgIGRvbmUKIGRvbmUKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9nZW4tbG9ja2Vkc2lnLWNhY2hlIGIvcG9reS9zY3JpcHRzL2dlbi1sb2NrZWRzaWctY2FjaGUKaW5kZXggOWJmYWU5ZC4uY2Q4ZjlhNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2dlbi1sb2NrZWRzaWctY2FjaGUKKysrIGIvcG9reS9zY3JpcHRzL2dlbi1sb2NrZWRzaWctY2FjaGUKQEAgLTc4LDExICs3OCwxNSBAQAogc3N0YXRlX2NvbnRlbnRfY2FjaGUgPSB7fQogZm9yIHMgaW4gc2lnczoKICAgICBwcmVmaXggPSBzWzoyXQorICAgIHByZWZpeDIgPSBzWzI6NF0KICAgICBpZiBwcmVmaXggbm90IGluIHNzdGF0ZV9jb250ZW50X2NhY2hlOgotICAgICAgICBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdID0gYnVpbGRfc2hhX2NhY2hlKHByZWZpeCkKKyAgICAgICAgc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XSA9IHt9CisgICAgaWYgcHJlZml4MiBub3QgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XToKKyAgICAgICAgc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XVtwcmVmaXgyXSA9IGJ1aWxkX3NoYV9jYWNoZShwcmVmaXggKyAiLyIgKyBwcmVmaXgyKQogCi0gICAgZm9yIGYgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGVbcHJlZml4XVtzXToKLSAgICAgICAgZmlsZXMuYWRkKGYpCisgICAgaWYgcyBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3ByZWZpeDJdOgorICAgICAgICBmb3IgZiBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3ByZWZpeDJdW3NdOgorICAgICAgICAgICAgZmlsZXMuYWRkKGYpCiAKIGVsYXBzZWQgPSB0aW1lLnBlcmZfY291bnRlcigpIC0gc3RhcnRfdGltZQogcHJpbnQoIkdhdGhlcmluZyBmaWxlIGxpc3QgdG9vayAlLjFmcyIgJSBlbGFwc2VkKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyBiL3Bva3kvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzZiM2ExZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMKQEAgLTAsMCArMSwzMzkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIyBCdWlsZHRvb2xzIGFuZCBidWlsZHRvb2xzIGV4dGVuZGVkIGluc3RhbGxlciBoZWxwZXIgc2NyaXB0CisjCisjIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEludGVsIENvcnBvcmF0aW9uCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgIE5PVEU6IC0td2l0aC1leHRlbmRlZC1idWlsZHRvb2xzIGlzIG9uIGJ5IGRlZmF1bHQKKyMKKyMgIEV4YW1wbGUgdXNhZ2UgKGV4dGVuZGVkIGJ1aWxkdG9vbHMgZnJvbSBtaWxlc3RvbmUpOgorIyAgICAoMSkgdXNpbmcgLS11cmwgYW5kIC0tZmlsZW5hbWUKKyMgICAgICAgICQgaW5zdGFsbC1idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS11cmwgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3lvY3RvL21pbGVzdG9uZXMveW9jdG8tMy4xX00zL2J1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWZpbGVuYW1lIHg4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLTMuMCtzbmFwc2hvdC0yMDIwMDMxNS5zaAorIyAgICAoMikgdXNpbmcgLS1iYXNlLXVybCwgLS1yZWxlYXNlLCAtLWluc3RhbGxlci12ZXJzaW9uIGFuZCAtLWJ1aWxkLWRhdGUKKyMgICAgICAgICQgaW5zdGFsbC1idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS1iYXNlLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8gXAorIyAgICAgICAgICAtLXJlbGVhc2UgeW9jdG8tMy4xX00zIFwKKyMgICAgICAgICAgLS1pbnN0YWxsZXItdmVyc2lvbiAzLjArc25hcHNob3QKKyMgICAgICAgICAgLS1idWlsZC1kYXRlIDIwMjAwMDMxNQorIworIyAgRXhhbXBsZSB1c2FnZSAoc3RhbmRhcmQgYnVpbGR0b29scyBmcm9tIHJlbGVhc2UpOgorIyAgICAoMykgdXNpbmcgLS11cmwgYW5kIC0tZmlsZW5hbWUKKyMgICAgICAgICQgaW5zdGFsbC1idWlsZHRvb2xzIC0td2l0aG91dC1leHRlbmRlZC1idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS11cmwgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3lvY3RvL3lvY3RvLTMuMC4yL2J1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWZpbGVuYW1lIHg4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLTMuMC4yLnNoCisjICAgICg0KSB1c2luZyAtLWJhc2UtdXJsLCAtLXJlbGVhc2UgYW5kIC0taW5zdGFsbGVyLXZlcnNpb24KKyMgICAgICAgICQgaW5zdGFsbC1idWlsZHRvb2xzIC0td2l0aG91dC1leHRlbmRlZC1idWlsZHRvb2xzIFwKKyMgICAgICAgICAgLS1iYXNlLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8gXAorIyAgICAgICAgICAtLXJlbGVhc2UgeW9jdG8tMy4wLjIgXAorIyAgICAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uIDMuMC4yCisjCisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc2hsZXgKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgcXVvdGUKKworc2NyaXB0c19wYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQorbGliX3BhdGggPSBzY3JpcHRzX3BhdGggKyAnL2xpYicKK3N5cy5wYXRoID0gc3lzLnBhdGggKyBbbGliX3BhdGhdCitpbXBvcnQgc2NyaXB0dXRpbHMKK2ltcG9ydCBzY3JpcHRwYXRoCisKKworUFJPR05BTUUgPSAnaW5zdGFsbC1idWlsZHRvb2xzJworbG9nZ2VyID0gc2NyaXB0dXRpbHMubG9nZ2VyX2NyZWF0ZShQUk9HTkFNRSwgc3RyZWFtPXN5cy5zdGRvdXQpCisKK0RFRkFVTFRfSU5TVEFMTF9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChzY3JpcHRzX3BhdGgpWzBdLCdidWlsZHRvb2xzJykKK0RFRkFVTFRfQkFTRV9VUkwgPSAnaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3lvY3RvJworREVGQVVMVF9SRUxFQVNFID0gJ3lvY3RvLTMuMScKK0RFRkFVTFRfSU5TVEFMTEVSX1ZFUlNJT04gPSAnMy4xJworREVGQVVMVF9CVUlMRERBVEUgPSAnJworCisjIFB5dGhvbiB2ZXJzaW9uIHNhbml0eSBjaGVjaworaWYgbm90IChzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDMgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWlub3IgPj0gNCk6CisgICAgbG9nZ2VyLmVycm9yKCJUaGlzIHNjcmlwdCByZXF1aXJlcyBQeXRob24gMy40IG9yIGdyZWF0ZXIiKQorICAgIGxvZ2dlci5lcnJvcigiWW91IGhhdmUgUHl0aG9uICVzLiVzIiAlCisJICAoc3lzLnZlcnNpb25faW5mby5tYWpvciwgc3lzLnZlcnNpb25faW5mby5taW5vcikpCisgICAgc3lzLmV4aXQoMSkKKworIyBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgY29waWVkIGRpcmVjdGx5IGZyb20KKyMgYml0YmFrZS9saWIvYmIvdXRpbHMucHksIGluIG9yZGVyIHRvIGFsbG93IHRoaXMgc2NyaXB0CisjIHRvIHJ1biBvbiB2ZXJzaW9ucyBvZiBweXRob24gZWFybGllciB0aGFuIHdoYXQgYml0YmFrZQorIyBzdXBwb3J0cyAoZS5nLiBsZXNzIHRoYW4gUHl0aG9uIDMuNSBmb3IgWVAgMy4xIHJlbGVhc2UpCisKK2RlZiBfaGFzaGVyKG1ldGhvZCwgZmlsZW5hbWUpOgorICAgIGltcG9ydCBtbWFwCisKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggbW1hcC5tbWFwKGYuZmlsZW5vKCksIDAsIGFjY2Vzcz1tbWFwLkFDQ0VTU19SRUFEKSBhcyBtbToKKyAgICAgICAgICAgICAgICBmb3IgY2h1bmsgaW4gaXRlcihsYW1iZGE6IG1tLnJlYWQoODE5MiksIGInJyk6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZC51cGRhdGUoY2h1bmspCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBZb3UgY2FuJ3QgbW1hcCgpIGFuIGVtcHR5IGZpbGUgc28gc2lsZW5jZSB0aGlzIGV4Y2VwdGlvbgorICAgICAgICAgICAgcGFzcworICAgIHJldHVybiBtZXRob2QuaGV4ZGlnZXN0KCkKKworCitkZWYgbWQ1X2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgTUQ1IGNoZWNrc3VtIG9mIGZpbGVuYW1lLgorICAgICIiIgorICAgIGltcG9ydCBoYXNobGliCisgICAgcmV0dXJuIF9oYXNoZXIoaGFzaGxpYi5tZDUoKSwgZmlsZW5hbWUpCisKK2RlZiBzaGEyNTZfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBoZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAyNTYtYml0IFNIQSBjaGVja3N1bSBvZgorICAgIGZpbGVuYW1lLgorICAgICIiIgorICAgIGltcG9ydCBoYXNobGliCisgICAgcmV0dXJuIF9oYXNoZXIoaGFzaGxpYi5zaGEyNTYoKSwgZmlsZW5hbWUpCisKKworZGVmIG1haW4oKToKKyAgICBnbG9iYWwgREVGQVVMVF9JTlNUQUxMX0RJUgorICAgIGdsb2JhbCBERUZBVUxUX0JBU0VfVVJMCisgICAgZ2xvYmFsIERFRkFVTFRfUkVMRUFTRQorICAgIGdsb2JhbCBERUZBVUxUX0lOU1RBTExFUl9WRVJTSU9OCisgICAgZ2xvYmFsIERFRkFVTFRfQlVJTEREQVRFCisgICAgZmlsZW5hbWUgPSAiIgorICAgIHJlbGVhc2UgPSAiIgorICAgIGJ1aWxkdG9vbHNfdXJsID0gIiIKKyAgICBpbnN0YWxsX2RpciA9ICIiCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgZGVzY3JpcHRpb249IkJ1aWxkdG9vbHMgaW5zdGFsbGF0aW9uIGhlbHBlciIsCisgICAgICAgIGFkZF9oZWxwPUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgJy0tdXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1VSTCBmcm9tIHdoZXJlIHRvIGZldGNoIGJ1aWxkdG9vbHMgU0RLIGluc3RhbGxlciwgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGluZyBmaWxlbmFtZSAob3B0aW9uYWwpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXF1aXJlcyAtLWZpbGVuYW1lLicsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZicsICctLWZpbGVuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGVuYW1lIGZvciB0aGUgYnVpbGR0b29scyBTREsgaW5zdGFsbGVyIHRvIGJlIGluc3RhbGxlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcob3B0aW9uYWwpXG5SZXF1aXJlcyAtLXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsICctLWRpcmVjdG9yeScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfSU5TVEFMTF9ESVIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgYnVpbGR0b29scyBTREsgd2lsbCBiZSBpbnN0YWxsZWQgKG9wdGlvbmFsKScsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcicsICctLXJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX1JFTEVBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdZb2N0byBQcm9qZWN0IHJlbGVhc2Ugc3RyaW5nIGZvciBTREsgd2hpY2ggd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN0YWxsZWQgKG9wdGlvbmFsKScsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctVicsICctLWluc3RhbGxlci12ZXJzaW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9JTlNUQUxMRVJfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ZlcnNpb24gc3RyaW5nIGZvciB0aGUgU0RLIHRvIGJlIGluc3RhbGxlZCAob3B0aW9uYWwpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYmFzZS11cmwnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX0JBU0VfVVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYmFzZSBVUkwgZnJvbSB3aGljaCB0byBmZXRjaCBTREsgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tYnVpbGQtZGF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfQlVJTEREQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQnVpbGQgZGF0ZSBvZiBwcmUtcmVsZWFzZSBTREsgKG9wdGlvbmFsKScsIGFjdGlvbj0nc3RvcmUnKQorICAgIGdyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13aXRoLWV4dGVuZGVkLWJ1aWxkdG9vbHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHMnLAorICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBleHRlbmRlZCBidWlsZHRvb2xzIHRhcmJhbGwgKG9uIGJ5IGRlZmF1bHQpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2l0aG91dC1leHRlbmRlZC1idWlsZHRvb2xzJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dpdGhfZXh0ZW5kZWRfYnVpbGR0b29scycsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc2FibGUgZXh0ZW5kZWQgYnVpbGR0b29scyAodHJhZGl0aW9uYWwgYnVpbGR0b29scyB0YXJiYWxsKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jaGVjaycsIGhlbHA9J2VuYWJsZSBtZDUgY2hlY2tzdW0gY2hlY2tpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctRCcsICctLWRlYnVnJywgaGVscD0nZW5hYmxlIGRlYnVnIG91dHB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBoZWxwPSdwcmludCBvbmx5IGVycm9ycycsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9YXJncGFyc2UuU1VQUFJFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBhcmdzLmRlYnVnOgorICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICBlbGlmIGFyZ3MucXVpZXQ6CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQorCisgICAgaWYgYXJncy51cmwgYW5kIGFyZ3MuZmlsZW5hbWU6CisgICAgICAgIGxvZ2dlci5kZWJ1ZygiLS11cmwgYW5kIC0tZmlsZW5hbWUgZGV0ZWN0ZWQuIElnbm9yaW5nIC0tYmFzZS11cmwgIgorICAgICAgICAgICAgICAgICAgICAgIi0tcmVsZWFzZSAtLWluc3RhbGxlci12ZXJzaW9uICBhcmd1bWVudHMuIikKKyAgICAgICAgZmlsZW5hbWUgPSBhcmdzLmZpbGVuYW1lCisgICAgICAgIGJ1aWxkdG9vbHNfdXJsID0gIiVzLyVzIiAlIChhcmdzLnVybCwgZmlsZW5hbWUpCisgICAgZWxzZToKKyAgICAgICAgaWYgYXJncy5iYXNlX3VybDoKKyAgICAgICAgICAgIGJhc2VfdXJsID0gYXJncy5iYXNlX3VybAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmFzZV91cmwgPSBERUZBVUxUX0JBU0VfVVJMCisgICAgICAgIGlmIGFyZ3MucmVsZWFzZToKKyAgICAgICAgICAgICMgY2hlY2sgaWYgdGhpcyBpcyBhIHByZS1yZWxlYXNlICJtaWxlc3RvbmUiIFNESworICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyIl4oP1A8ZGlzdHJvPlthLXpBLVpcLV0rKSg/UDx2ZXJzaW9uPlswLTkuXSspKD9QPG1pbGVzdG9uZT5fTVsxLTldKSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJlbGVhc2UpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIm1pbGVzdG9uZSByZWdleDogJXMiICUgbSkKKyAgICAgICAgICAgIGlmIG0gYW5kIG0uZ3JvdXAoJ21pbGVzdG9uZScpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicmVsZWFzZVtkaXN0cm9dOiAlcyIgJSBtLmdyb3VwKCdkaXN0cm8nKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInJlbGVhc2VbdmVyc2lvbl06ICVzIiAlIG0uZ3JvdXAoJ3ZlcnNpb24nKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInJlbGVhc2VbbWlsZXN0b25lXTogJXMiICUgbS5ncm91cCgnbWlsZXN0b25lJykpCisgICAgICAgICAgICAgICAgaWYgbm90IGFyZ3MuYnVpbGRfZGF0ZToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJNaWxlc3RvbmUgaW5zdGFsbGVycyByZXF1aXJlIC0tYnVpbGQtZGF0ZSIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJncy53aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJ4ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0lcy0lcy5zaCIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5pbnN0YWxsZXJfdmVyc2lvbiwgYXJncy5idWlsZF9kYXRlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAieDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJXMtJXMuc2giICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24sIGFyZ3MuYnVpbGRfZGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2FmZV9maWxlbmFtZSA9IHF1b3RlKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBidWlsZHRvb2xzX3VybCA9ICIlcy9taWxlc3RvbmVzLyVzL2J1aWxkdG9vbHMvJXMiICUgKGJhc2VfdXJsLCBhcmdzLnJlbGVhc2UsIHNhZmVfZmlsZW5hbWUpCisgICAgICAgICAgICAjIHJlZ3VsYXIgcmVsZWFzZSBTREsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgYXJncy53aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHM6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLnNoIiAlIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJ4ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0lcy5zaCIgJSBhcmdzLmluc3RhbGxlcl92ZXJzaW9uCisgICAgICAgICAgICAgICAgc2FmZV9maWxlbmFtZSA9IHF1b3RlKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHNfdXJsID0gIiVzLyVzL2J1aWxkdG9vbHMvJXMiICUgKGJhc2VfdXJsLCBhcmdzLnJlbGVhc2UsIHNhZmVfZmlsZW5hbWUpCisKKyAgICB0bXBzZGtfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgdHJ5OgorICAgICAgICAjIEZldGNoIGluc3RhbGxlcgorICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgYnVpbGR0b29scyBpbnN0YWxsZXIiKQorICAgICAgICB0bXBidWlsZHRvb2xzID0gb3MucGF0aC5qb2luKHRtcHNka19kaXIsIGZpbGVuYW1lKQorICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIndnZXQgLXEgLU8gJXMgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0bXBidWlsZHRvb2xzLCBidWlsZHRvb2xzX3VybCksIHNoZWxsPVRydWUpCisgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZCBub3QgZG93bmxvYWQgZmlsZSBmcm9tICVzIiAlIGJ1aWxkdG9vbHNfdXJsKQorICAgICAgICAgICAgcmV0dXJuIHJldAorCisgICAgICAgICMgVmVyaWZ5IGNoZWNrc3VtCisgICAgICAgIGlmIGFyZ3MuY2hlY2s6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgYnVpbGR0b29scyBpbnN0YWxsZXIgY2hlY2tzdW0iKQorICAgICAgICAgICAgY2hlY2tzdW1fdHlwZSA9ICIiCisgICAgICAgICAgICBmb3IgY2hlY2tzdW1fdHlwZSBpbiBbIm1kNXN1bSIsICJzaGEyNTYiXToKKyAgICAgICAgICAgICAgICBjaGVja191cmwgPSAie30ue30iLmZvcm1hdChidWlsZHRvb2xzX3VybCwgY2hlY2tzdW1fdHlwZSkKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9maWxlbmFtZSA9ICJ7fS57fSIuZm9ybWF0KGZpbGVuYW1lLCBjaGVja3N1bV90eXBlKQorICAgICAgICAgICAgICAgIHRtcGJ1aWxkdG9vbHNfY2hlY2tzdW0gPSBvcy5wYXRoLmpvaW4odG1wc2RrX2RpciwgY2hlY2tzdW1fZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCJ3Z2V0IC1xIC1PICVzICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0bXBidWlsZHRvb2xzX2NoZWNrc3VtLCBjaGVja191cmwpLCBzaGVsbD1UcnVlKQorICAgICAgICAgICAgICAgIGlmIHJldCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZCBub3QgZG93bmxvYWQgZmlsZSBmcm9tICVzIiAlIGNoZWNrX3VybCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldAorICAgICAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHIiXig/UDxjaGVja3N1bT5bMC05YS1mXSspXHNccyg/UDxwYXRoPi4qLyk/KD9QPGZpbGVuYW1lPi4qKSQiKQorICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGJ1aWxkdG9vbHNfY2hlY2tzdW0sICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSBmLnJlYWQoKQorICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2gocmVnZXgsIG9yaWdpbmFsLmRlY29kZSgidXRmLTgiKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImNoZWNrc3VtIHJlZ2V4IG1hdGNoOiAlcyIgJSBtKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiY2hlY2tzdW06ICVzIiAlIG0uZ3JvdXAoJ2NoZWNrc3VtJykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJwYXRoOiAlcyIgJSBtLmdyb3VwKCdwYXRoJykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJmaWxlbmFtZTogJXMiICUgbS5ncm91cCgnZmlsZW5hbWUnKSkKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSAhPSBtLmdyb3VwKCdmaWxlbmFtZScpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZpbGVuYW1lIGRvZXMgbm90IG1hdGNoIG5hbWUgaW4gY2hlY2tzdW0iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gbS5ncm91cCgnY2hlY2tzdW0nKQorICAgICAgICAgICAgaWYgY2hlY2tzdW1fdHlwZSA9PSAibWQ1c3VtIjoKKyAgICAgICAgICAgICAgICBjaGVja3N1bV92YWx1ZSA9IG1kNV9maWxlKHRtcGJ1aWxkdG9vbHMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX3ZhbHVlID0gc2hhMjU2X2ZpbGUodG1wYnVpbGR0b29scykKKyAgICAgICAgICAgIGlmIGNoZWNrc3VtID09IGNoZWNrc3VtX3ZhbHVlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ2hlY2tzdW0gc3VjY2VzcyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ2hlY2tzdW0gJXMgZXhwZWN0ZWQuIEFjdHVhbCBjaGVja3N1bSBpcyAlcy4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrc3VtLCBjaGVja3N1bV92YWx1ZSkpCisKKyAgICAgICAgIyBNYWtlIGluc3RhbGxlciBleGVjdXRhYmxlCisgICAgICAgIGxvZ2dlci5pbmZvKCJNYWtpbmcgaW5zdGFsbGVyIGV4ZWN1dGFibGUiKQorICAgICAgICBzdCA9IG9zLnN0YXQodG1wYnVpbGR0b29scykKKyAgICAgICAgb3MuY2htb2QodG1wYnVpbGR0b29scywgc3Quc3RfbW9kZSB8IHN0YXQuU19JRVhFQykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKG9zLnN0YXQodG1wYnVpbGR0b29scykpCisgICAgICAgIGlmIGFyZ3MuZGlyZWN0b3J5OgorICAgICAgICAgICAgaW5zdGFsbF9kaXIgPSBhcmdzLmRpcmVjdG9yeQorICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCIlcyAtZCAlcyAteSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0bXBidWlsZHRvb2xzLCBpbnN0YWxsX2RpciksIHNoZWxsPVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnN0YWxsX2RpciA9ICIvb3B0L3Bva3kvJXMiICUgYXJncy5pbnN0YWxsZXJfdmVyc2lvbgorICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKCIlcyAteSIgJSB0bXBidWlsZHRvb2xzLCBzaGVsbD1UcnVlKQorICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGQgbm90IHJ1biBidWlsZHRvb2xzIGluc3RhbGxlciIpCisKKyAgICAgICAgIyBTZXR1cCB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IikKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXig/UDxleHBvcnQ+ZXhwb3J0ICk/KD9QPGVudl92YXI+W0EtWl9dKyk9KD9QPGVudl92YWw+LispJCcpCisgICAgICAgIHdpdGggb3BlbigiJXMvZW52aXJvbm1lbnQtc2V0dXAteDg2XzY0LXBva3lzZGstbGludXgiICUKKyAgICAgICAgICAgICAgICAgIGluc3RhbGxfZGlyLCAncmInKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlZ2V4LnNlYXJjaChsaW5lLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImV4cG9ydCByZWdleDogJXMiICUgbWF0Y2gpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGVudl92YXIgPSBtYXRjaC5ncm91cCgnZW52X3ZhcicpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZW52X3ZhcjogJXMiICUgZW52X3ZhcikKKyAgICAgICAgICAgICAgICAgICAgZW52X3ZhbCA9IG1hdGNoLmdyb3VwKCdlbnZfdmFsJykKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJlbnZfdmFsOiAlcyIgJSBlbnZfdmFsKQorICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2Vudl92YXJdID0gZW52X3ZhbAorCisgICAgICAgICMgVGVzdCBpbnN0YWxsYXRpb24KKyAgICAgICAgbG9nZ2VyLmluZm8oIlRlc3RpbmcgaW5zdGFsbGF0aW9uIikKKyAgICAgICAgdG9vbCA9ICIiCisgICAgICAgIG0gPSByZS5zZWFyY2goImV4dGVuZGVkIiwgdG1wYnVpbGR0b29scykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJleHRlbmRlZCByZWdleDogJXMiICUgbSkKKyAgICAgICAgaWYgYXJncy53aXRoX2V4dGVuZGVkX2J1aWxkdG9vbHMgYW5kIG5vdCBtOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIklnbm9yaW5nIC0td2l0aC1leHRlbmRlZC1idWlsZHRvb2xzIGFzIGZpbGVuYW1lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBjb250YWluICdleHRlbmRlZCciKQorICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29scyBhbmQgbToKKyAgICAgICAgICAgIHRvb2wgPSAnZ2NjJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9vbCA9ICd0YXInCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiaW5zdGFsbF9kaXI6ICVzIiAlIGluc3RhbGxfZGlyKQorICAgICAgICBjbWQgPSBzaGxleC5zcGxpdCgiL3Vzci9iaW4vd2hpY2ggJXMiICUgdG9vbCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJjbWQ6ICVzIiAlIGNtZCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJ0b29sOiAlcyIgJSB0b29sKQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dHB1dCwgZXJyb3JzID0gcHJvYy5jb21tdW5pY2F0ZSgpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygicHJvYy5hcmdzOiAlcyIgJSBwcm9jLmFyZ3MpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygicHJvYy5jb21tdW5pY2F0ZSgpOiBvdXRwdXQgJXMiICUgb3V0cHV0KQorICAgICAgICBsb2dnZXIuZGVidWcoInByb2MuY29tbXVuaWNhdGUoKTogZXJyb3JzICVzIiAlIGVycm9ycykKKyAgICAgICAgd2hpY2hfdG9vbCA9IG91dHB1dC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJ3aGljaCAlczogJXMiICUgKHRvb2wsIHdoaWNoX3Rvb2wpKQorICAgICAgICByZXQgPSBwcm9jLnJldHVybmNvZGUKKyAgICAgICAgaWYgbm90IHdoaWNoX3Rvb2wuc3RhcnRzd2l0aChpbnN0YWxsX2Rpcik6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlNvbWV0aGluZyB3ZW50IHdyb25nOiAlcyBub3QgZm91bmQgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAodG9vbCwgaW5zdGFsbF9kaXIpKQorICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jvbmc6IGluc3RhbGxhdGlvbiBmYWlsZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkluc3RhbGxhdGlvbiBzdWNjZXNzZnVsLiBSZW1lbWJlciB0byBzb3VyY2UgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgbm93IGFuZCBpbiBhbnkgbmV3IHNlc3Npb24uIikKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZmluYWxseToKKyAgICAgICAgIyBjbGVhbnVwIHRtcCBkaXJlY3RvcnkKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBzZGtfZGlyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdHJ5OgorICAgICAgICByZXQgPSBtYWluKCkKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICByZXQgPSAxCisgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKworICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICBzeXMuZXhpdChyZXQpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKaW5kZXggMWMwY2Q4YS4uYmFiNjQ0YiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQpAQCAtMTQ1LDggKzE0NSw4IEBACiAgICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tc3JjLXN1YmRpciAiJXMiJyAlIGFyZ3Muc3JjX3N1YmRpcgogICAgIGlmIGFyZ3MuYXV0b3JldjoKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLWEnCi0gICAgaWYgYXJncy5mZXRjaF9kZXY6Ci0gICAgICAgIGV4dHJhY21kb3B0cyArPSAnIC0tZmV0Y2gtZGV2JworICAgIGlmIGFyZ3MubnBtX2RldjoKKyAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1ucG0tZGV2JwogICAgIGlmIGFyZ3MubWlycm9yczoKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1taXJyb3JzJwogICAgIGlmIGFyZ3Muc3JjcmV2OgpAQCAtMjYwLDE0ICsyNjAsMTAgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCd9XG4nKQogCiAgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCducG0nLCByZCk6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAjIFJlbW92ZSBmaWxlcyBhZGRlZCB0byBzb3VyY2UgZGlyIGJ5IGRldnRvb2wvZXh0ZXJuYWxzcmNcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIHJtIC1mICR7TlBNX0lOU1RBTExESVJ9L3NpbmdsZXRhc2subG9ja1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcm0gLXJmICR7TlBNX0lOU1RBTExESVJ9Ly5naXRcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIHJtIC1yZiAke05QTV9JTlNUQUxMRElSfS9vZS1sb2NhbC1maWxlc1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgZm9yIHN5bWxpbmsgaW4gJHtFWFRFUk5BTFNSQ19TWU1MSU5LU30gOyBkb1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIHJtIC1mICR7TlBNX0lOU1RBTExESVJ9LyR7c3ltbGluayUlOip9XG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBkb25lXG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJ3B5dGhvbiBkb19jb25maWd1cmVfYXBwZW5kKCkge1xuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcGtnZGlyID0gZC5nZXRWYXIoIk5QTV9QQUNLQUdFIilcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGxvY2tmaWxlID0gb3MucGF0aC5qb2luKHBrZ2RpciwgInNpbmdsZXRhc2subG9jayIpXG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBiYi51dGlscy5yZW1vdmUobG9ja2ZpbGUpXG4nKQogICAgICAgICAgICAgICAgIGYud3JpdGUoJ31cbicpCiAKICAgICAgICAgIyBDaGVjayBpZiB0aGUgbmV3IGxheWVyIHByb3ZpZGVzIHJlY2lwZXMgd2hvc2UgcHJpb3JpdGllcyBoYXZlIGJlZW4KQEAgLTk0MCw4ICs5MzYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nKQogICAgICAgICAgICAgaWYgcmQuZ2V0VmFyRmxhZygnZG9fbWVudWNvbmZpZycsJ3Rhc2snKToKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbmRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7XG4nCi0gICAgICAgICAgICAgICAgJyAgICBjcCAke0J9Ly5jb25maWcgJHtTfS8uY29uZmlnLmJhc2VsaW5lXG4nCi0gICAgICAgICAgICAgICAgJyAgICBsbiAtc2ZUICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcubmV3XG4nCisgICAgICAgICAgICAgICAgJyAgICBpZiBbICEgJHtERVZUT09MX0RJU0FCTEVfTUVOVUNPTkZJR30gXTsgdGhlblxuJworICAgICAgICAgICAgICAgICcgICAgICAgIGNwICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcuYmFzZWxpbmVcbicKKyAgICAgICAgICAgICAgICAnICAgICAgICBsbiAtc2ZUICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcubmV3XG4nCisgICAgICAgICAgICAgICAgJyAgICBmaVxuJwogICAgICAgICAgICAgICAgICd9XG4nKQogICAgICAgICAgICAgaWYgaW5pdGlhbF9yZXY6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgnXG4jIGluaXRpYWxfcmV2OiAlc1xuJyAlIGluaXRpYWxfcmV2KQpAQCAtMjE5Nyw3ICsyMTk1LDcgQEAKICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2FtZS1kaXInLCAnLXMnLCBoZWxwPSdCdWlsZCBpbiBzYW1lIGRpcmVjdG9yeSBhcyBzb3VyY2UnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1uby1zYW1lLWRpcicsIGhlbHA9J0ZvcmNlIGJ1aWxkIGluIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1mZXRjaCcsICctZicsIGhlbHA9J0ZldGNoIHRoZSBzcGVjaWZpZWQgVVJJIGFuZCBleHRyYWN0IGl0IHRvIGNyZWF0ZSB0aGUgc291cmNlIHRyZWUgKGRlcHJlY2F0ZWQgLSBwYXNzIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgaW5zdGVhZCknLCBtZXRhdmFyPSdVUkknKQotICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLWZldGNoLWRldicsIGhlbHA9J0ZvciBucG0sIGFsc28gZmV0Y2ggZGV2RGVwZW5kZW5jaWVzJywgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXJfYWRkLmFkZF9hcmd1bWVudCgnLS1ucG0tZGV2JywgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCAnLVYnLCBoZWxwPSdWZXJzaW9uIHRvIHVzZSB3aXRoaW4gcmVjaXBlIChQViknKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLW5vLWdpdCcsICctZycsIGhlbHA9J0lmIGZldGNoaW5nIHNvdXJjZSwgZG8gbm90IHNldCB1cCBzb3VyY2UgdHJlZSBhcyBhIGdpdCByZXBvc2l0b3J5JywgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgICBncm91cCA9IHBhcnNlcl9hZGQuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQppbmRleCA0YzRiYmFkLi42Y2JmNGRlIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKQEAgLTQ3Nyw4ICs0NzcsNiBAQAogICAgICAgICAgICAgc3RvcmVUYWdOYW1lID0gcGFyYW1zWyd0YWcnXQogICAgICAgICAgICAgcGFyYW1zWydub2JyYW5jaCddID0gJzEnCiAgICAgICAgICAgICBkZWwgcGFyYW1zWyd0YWcnXQotICAgICAgICBpZiBzY2hlbWUgPT0gJ25wbSc6Ci0gICAgICAgICAgICBwYXJhbXNbJ25vdmVyaWZ5J10gPSAnMScKICAgICAgICAgZmV0Y2h1cmkgPSBiYi5mZXRjaDIuZW5jb2RldXJsKChzY2hlbWUsIG5ldHdvcmssIHBhdGgsIHVzZXIsIHBhc3N3ZCwgcGFyYW1zKSkKIAogICAgICAgICB0bXBwYXJlbnQgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkFTRV9XT1JLRElSJykKQEAgLTcxNCwxMCArNzEyLDggQEAKICAgICAgICAgbGluZXNfYWZ0ZXIuYXBwZW5kKCdJTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCInKQogICAgICAgICBsaW5lc19hZnRlci5hcHBlbmQoJycpCiAKLSAgICBpZiBhcmdzLmZldGNoX2RldjoKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2ZldGNoZGV2J10gPSBUcnVlCi0gICAgZWxzZToKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2ZldGNoZGV2J10gPSBOb25lCisgICAgaWYgYXJncy5ucG1fZGV2OgorICAgICAgICBleHRyYXZhbHVlc1snTlBNX0lOU1RBTExfREVWJ10gPSAxCiAKICAgICAjIEZpbmQgYWxsIHBsdWdpbnMgdGhhdCB3YW50IHRvIHJlZ2lzdGVyIGhhbmRsZXJzCiAgICAgbG9nZ2VyLmRlYnVnKCdMb2FkaW5nIHJlY2lwZSBoYW5kbGVycycpCkBAIC0xMzEzLDcgKzEzMDksNyBAQAogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVMnLCAnLS1zcmNyZXYnLCBoZWxwPSdTb3VyY2UgcmV2aXNpb24gdG8gZmV0Y2ggaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00gc3VjaCBhcyBnaXQgKGRlZmF1bHQgbGF0ZXN0KScpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy1CJywgJy0tc3JjYnJhbmNoJywgaGVscD0nQnJhbmNoIGluIHNvdXJjZSByZXBvc2l0b3J5IGlmIGZldGNoaW5nIGZyb20gYW4gU0NNIHN1Y2ggYXMgZ2l0IChkZWZhdWx0IG1hc3RlciknKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLWtlZXAtdGVtcCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0tlZXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSAoZm9yIGRlYnVnZ2luZyknKQotICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLWZldGNoLWRldicsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0ZvciBucG0sIGFsc28gZmV0Y2ggZGV2RGVwZW5kZW5jaWVzJykKKyAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLS1ucG0tZGV2JywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLWRldnRvb2wnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPWFyZ3BhcnNlLlNVUFBSRVNTKQogICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLW1pcnJvcnMnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdFbmFibGUgUFJFTUlSUk9SUyBhbmQgTUlSUk9SUyBmb3Igc291cmNlIHRyZWUgZmV0Y2hpbmcgKGRpc2FibGVkIGJ5IGRlZmF1bHQpLicpCiAgICAgcGFyc2VyX2NyZWF0ZS5zZXRfZGVmYXVsdHMoZnVuYz1jcmVhdGVfcmVjaXBlKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKaW5kZXggM2NiMDI3Ni4uMzVhOTdjOSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CkBAIC0yMjYsOSArMjI2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGtnID09ICdQa2dDb25maWcnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncGtnY29uZmlnJykKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcGtnID09ICdQeXRob25JbnRlcnAnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncHl0aG9ubmF0aXZlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3B5dGhvbjNuYXRpdmUnKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cgPT0gJ1B5dGhvbkxpYnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncHl0aG9uLWRpcicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob24zLWRpcicpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHJ5IHRvIG1hcCB2aWEgbG9va2luZyBhdCBpbnN0YWxsZWQgQ01ha2UgcGFja2FnZXMgaW4gcGtnZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGZpbmRfY21ha2VfcGFja2FnZShwa2cpCkBAIC00MTcsNyArNDE3LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgIHByb2djbGFzc21hcCA9IHsnZ2NvbmZ0b29sLTInOiAnZ2NvbmYnLAogICAgICAgICAgICAgICAgICdwa2ctY29uZmlnJzogJ3BrZ2NvbmZpZycsCi0gICAgICAgICAgICAgICAgJ3B5dGhvbic6ICdweXRob25uYXRpdmUnLAorICAgICAgICAgICAgICAgICdweXRob24nOiAncHl0aG9uM25hdGl2ZScsCiAgICAgICAgICAgICAgICAgJ3B5dGhvbjMnOiAncHl0aG9uM25hdGl2ZScsCiAgICAgICAgICAgICAgICAgJ3BlcmwnOiAncGVybG5hdGl2ZScsCiAgICAgICAgICAgICAgICAgJ21ha2VpbmZvJzogJ3RleGluZm8nLApAQCAtNTY2LDE2ICs1NjYsNyBAQAogICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICdBWF9QUk9HX1hTTFRQUk9DJzoKICAgICAgICAgICAgICAgICBkZXBzLmFwcGVuZCgnbGlieHNsdC1uYXRpdmUnKQogICAgICAgICAgICAgZWxpZiBrZXl3b3JkIGluIFsnQUNfUFlUSE9OX0RFVkVMJywgJ0FYX1BZVEhPTl9ERVZFTCcsICdBTV9QQVRIX1BZVEhPTiddOgotICAgICAgICAgICAgICAgIHB5dGhvbmNsYXNzID0gJ3B5dGhvbm5hdGl2ZScKLSAgICAgICAgICAgICAgICByZXMgPSB2ZXJzaW9uX3JlLnNlYXJjaCh2YWx1ZSkKLSAgICAgICAgICAgICAgICBpZiByZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJlcy5ncm91cCgxKS5zdGFydHN3aXRoKCczJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBweXRob25jbGFzcyA9ICdweXRob24zbmF0aXZlJwotICAgICAgICAgICAgICAgICMgQXZvaWQgcmVwbGFjaW5nIHB5dGhvbjNuYXRpdmUgd2l0aCBweXRob25uYXRpdmUKLSAgICAgICAgICAgICAgICBpZiBub3QgcHl0aG9uY2xhc3MgaW4gaW5oZXJpdHMgYW5kIG5vdCAncHl0aG9uM25hdGl2ZScgaW4gaW5oZXJpdHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmICdweXRob25uYXRpdmUnIGluIGluaGVyaXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMucmVtb3ZlKCdweXRob25uYXRpdmUnKQotICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQocHl0aG9uY2xhc3MpCisgICAgICAgICAgICAgICAgcHl0aG9uY2xhc3MgPSAncHl0aG9uM25hdGl2ZScKICAgICAgICAgICAgIGVsaWYga2V5d29yZCA9PSAnQVhfV0lUSF9DVVJTRVMnOgogICAgICAgICAgICAgICAgIGRlcHMuYXBwZW5kKCduY3Vyc2VzJykKICAgICAgICAgICAgIGVsaWYga2V5d29yZCA9PSAnQVhfUEFUSF9CREInOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9ucG0ucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQppbmRleCAzOTQyOWViLi41NzliN2FlIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weQpAQCAtMSwzMjEgKzEsMjU1IEBACi0jIFJlY2lwZSBjcmVhdGlvbiB0b29sIC0gbm9kZS5qcyBOUE0gbW9kdWxlIHN1cHBvcnQgcGx1Z2luCi0jCiAjIENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgU2F2b2lyLUZhaXJlIExpbnV4CiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKKyIiIlJlY2lwZSBjcmVhdGlvbiB0b29sIC0gbnBtIG1vZHVsZSBzdXBwb3J0IHBsdWdpbiIiIgogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQganNvbgotZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgUmVjaXBlSGFuZGxlciwgc3BsaXRfcGtnX2xpY2Vuc2VzLCBoYW5kbGVfbGljZW5zZV92YXJzCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgYmIKK2Zyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgTnBtRW52aXJvbm1lbnQKK2Zyb20gYmIuZmV0Y2gyLm5wbXN3IGltcG9ydCBmb3JlYWNoX2RlcGVuZGVuY2llcworZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgUmVjaXBlSGFuZGxlcgorZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgZ3Vlc3NfbGljZW5zZQorZnJvbSByZWNpcGV0b29sLmNyZWF0ZSBpbXBvcnQgc3BsaXRfcGtnX2xpY2Vuc2VzCiAKLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdyZWNpcGV0b29sJykKLQotCi10aW5mb2lsID0gTm9uZQorVElORk9JTCA9IE5vbmUKIAogZGVmIHRpbmZvaWxfaW5pdChpbnN0YW5jZSk6Ci0gICAgZ2xvYmFsIHRpbmZvaWwKLSAgICB0aW5mb2lsID0gaW5zdGFuY2UKLQorICAgICIiIkluaXRpYWxpemUgdGluZm9pbCIiIgorICAgIGdsb2JhbCBUSU5GT0lMCisgICAgVElORk9JTCA9IGluc3RhbmNlCiAKIGNsYXNzIE5wbVJlY2lwZUhhbmRsZXIoUmVjaXBlSGFuZGxlcik6Ci0gICAgbG9ja2Rvd25wYXRoID0gTm9uZQorICAgICIiIkNsYXNzIHRvIGhhbmRsZSB0aGUgbnBtIHJlY2lwZSBjcmVhdGlvbiIiIgogCi0gICAgZGVmIF9lbnN1cmVfbnBtKHNlbGYsIGZpeGVkX3NldHVwPUZhbHNlKToKLSAgICAgICAgaWYgbm90IHRpbmZvaWwucmVjaXBlc19wYXJzZWQ6Ci0gICAgICAgICAgICB0aW5mb2lsLnBhcnNlX3JlY2lwZXMoKQorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX25wbV9uYW1lKG5hbWUpOgorICAgICAgICAiIiJHZW5lcmF0ZSBhIFlvY3RvIGZyaWVuZGx5IG5wbSBuYW1lIiIiCisgICAgICAgIG5hbWUgPSByZS5zdWIoIi8iLCAiLSIsIG5hbWUpCisgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKKyAgICAgICAgbmFtZSA9IHJlLnN1YihyIlteXC1hLXowLTldIiwgIiIsIG5hbWUpCisgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCItIikKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9yZWdpc3RyeShsaW5lcyk6CisgICAgICAgICIiIkdldCB0aGUgcmVnaXN0cnkgdmFsdWUgZnJvbSB0aGUgJ25wbTovL3JlZ2lzdHJ5JyB1cmwiIiIKKyAgICAgICAgcmVnaXN0cnkgPSBOb25lCisKKyAgICAgICAgZGVmIF9oYW5kbGVfcmVnaXN0cnkodmFybmFtZSwgb3JpZ3ZhbHVlLCBvcCwgbmV3bGluZXMpOgorICAgICAgICAgICAgbm9ubG9jYWwgcmVnaXN0cnkKKyAgICAgICAgICAgIGlmIG9yaWd2YWx1ZS5zdGFydHN3aXRoKCJucG06Ly8iKToKKyAgICAgICAgICAgICAgICByZWdpc3RyeSA9IHJlLnN1YihyIl5ucG06Ly8iLCAiaHR0cDovLyIsIG9yaWd2YWx1ZS5zcGxpdCgiOyIpWzBdKQorICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQorCisgICAgICAgIGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXMsIFsiU1JDX1VSSSJdLCBfaGFuZGxlX3JlZ2lzdHJ5KQorCisgICAgICAgIHJldHVybiByZWdpc3RyeQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZW5zdXJlX25wbSgpOgorICAgICAgICAiIiJDaGVjayBpZiB0aGUgJ25wbScgY29tbWFuZCBpcyBhdmFpbGFibGUgaW4gdGhlIHJlY2lwZXMiIiIKKyAgICAgICAgaWYgbm90IFRJTkZPSUwucmVjaXBlc19wYXJzZWQ6CisgICAgICAgICAgICBUSU5GT0lMLnBhcnNlX3JlY2lwZXMoKQorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGUoJ25vZGVqcy1uYXRpdmUnKQorICAgICAgICAgICAgZCA9IFRJTkZPSUwucGFyc2VfcmVjaXBlKCJub2RlanMtbmF0aXZlIikKICAgICAgICAgZXhjZXB0IGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyOgotICAgICAgICAgICAgaWYgZml4ZWRfc2V0dXA6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBTREsnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1zZyA9ICdub2RlanMtbmF0aXZlIGlzIHJlcXVpcmVkIGZvciBucG0gYnV0IGlzIG5vdCBhdmFpbGFibGUgLSB5b3Ugd2lsbCBsaWtlbHkgbmVlZCB0byBhZGQgYSBsYXllciB0aGF0IHByb3ZpZGVzIG5vZGVqcycKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBiaW5kaXIgPSByZC5nZXRWYXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpCi0gICAgICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAnbnBtJykKKyAgICAgICAgICAgIGJiLmVycm9yKCJOb3RoaW5nIHByb3ZpZGVzICdub2RlanMtbmF0aXZlJyB3aGljaCBpcyByZXF1aXJlZCBmb3IgdGhlIGJ1aWxkIikKKyAgICAgICAgICAgIGJiLm5vdGUoIllvdSB3aWxsIGxpa2VseSBuZWVkIHRvIGFkZCBhIGxheWVyIHRoYXQgcHJvdmlkZXMgbm9kZWpzIikKKyAgICAgICAgICAgIHN5cy5leGl0KDE0KQorCisgICAgICAgIGJpbmRpciA9IGQuZ2V0VmFyKCJTVEFHSU5HX0JJTkRJUl9OQVRJVkUiKQorICAgICAgICBucG1wYXRoID0gb3MucGF0aC5qb2luKGJpbmRpciwgIm5wbSIpCisKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpOgotICAgICAgICAgICAgdGluZm9pbC5idWlsZF90YXJnZXRzKCdub2RlanMtbmF0aXZlJywgJ2FkZHRvX3JlY2lwZV9zeXNyb290JykKKyAgICAgICAgICAgIFRJTkZPSUwuYnVpbGRfdGFyZ2V0cygibm9kZWpzLW5hdGl2ZSIsICJhZGR0b19yZWNpcGVfc3lzcm9vdCIpCisKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhucG1wYXRoKToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ25wbSByZXF1aXJlZCB0byBwcm9jZXNzIHNwZWNpZmllZCBzb3VyY2UsIGJ1dCBub2RlanMtbmF0aXZlIGRpZCBub3Qgc2VlbSB0byBwb3B1bGF0ZSBpdCcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICBiYi5lcnJvcigiRmFpbGVkIHRvIGFkZCAnbnBtJyB0byBzeXNyb290IikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxNCkKKwogICAgICAgICByZXR1cm4gYmluZGlyCiAKLSAgICBkZWYgX2hhbmRsZV9saWNlbnNlKHNlbGYsIGRhdGEpOgotICAgICAgICAnJycKLSAgICAgICAgSGFuZGxlIHRoZSBsaWNlbnNlIHZhbHVlIGZyb20gYW4gbnBtIHBhY2thZ2UuanNvbiBmaWxlCi0gICAgICAgICcnJwotICAgICAgICBsaWNlbnNlID0gTm9uZQotICAgICAgICBpZiAnbGljZW5zZScgaW4gZGF0YToKLSAgICAgICAgICAgIGxpY2Vuc2UgPSBkYXRhWydsaWNlbnNlJ10KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGljZW5zZSwgZGljdCk6Ci0gICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UuZ2V0KCd0eXBlJywgTm9uZSkKLSAgICAgICAgICAgIGlmIGxpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgaWYgJ09SJyBpbiBsaWNlbnNlOgotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdPUicsICd8JykKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnQU5EJywgJyYnKQotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCcgJywgJ18nKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGljZW5zZVswXSA9PSAnKCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gJygnICsgbGljZW5zZSArICcpJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ0FORCcsICcmJykKLSAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZVswXSA9PSAnKCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZVsxOl0KLSAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZVstMV0gPT0gJyknOgotICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2VbOi0xXQotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ01JVC9YMTEnLCAnTUlUJykKLSAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdQdWJsaWMgRG9tYWluJywgJ1BEJykKLSAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdTRUUgTElDRU5TRSBJTiBFVUxBJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTRUUtTElDRU5TRS1JTi1FVUxBJykKLSAgICAgICAgcmV0dXJuIGxpY2Vuc2UKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9ucG1fZ2xvYmFsX2NvbmZpZ3MoZGV2KToKKyAgICAgICAgIiIiR2V0IHRoZSBucG0gZ2xvYmFsIGNvbmZpZ3VyYXRpb24iIiIKKyAgICAgICAgY29uZmlncyA9IFtdCiAKLSAgICBkZWYgX3Nocmlua3dyYXAoc2VsZiwgc3JjdHJlZSwgbG9jYWxmaWxlc2RpciwgZXh0cmF2YWx1ZXMsIGxpbmVzX2JlZm9yZSwgZCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJ1bmVudiA9IGRpY3Qob3MuZW52aXJvbiwgUEFUSD1kLmdldFZhcignUEFUSCcpKQotICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ25wbSBzaHJpbmt3cmFwJywgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCducG0gc2hyaW5rd3JhcCBmYWlsZWQ6XG4lcycgJSBlLnN0ZG91dCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBkZXY6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoImFsc28iLCAiZGV2ZWxvcG1lbnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgib25seSIsICJwcm9kdWN0aW9uIikpCiAKLSAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihsb2NhbGZpbGVzZGlyLCAnbnBtLXNocmlua3dyYXAuanNvbicpCi0gICAgICAgIHNodXRpbC5tb3ZlKG9zLnBhdGguam9pbihzcmN0cmVlLCAnbnBtLXNocmlua3dyYXAuanNvbicpLCB0bXBmaWxlKQotICAgICAgICBleHRyYXZhbHVlcy5zZXRkZWZhdWx0KCdleHRyYWZpbGVzJywge30pCi0gICAgICAgIGV4dHJhdmFsdWVzWydleHRyYWZpbGVzJ11bJ25wbS1zaHJpbmt3cmFwLmpzb24nXSA9IHRtcGZpbGUKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTlBNX1NIUklOS1dSQVAgOj0gIiR7VEhJU0RJUn0vJHtQTn0vbnBtLXNocmlua3dyYXAuanNvbiInKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInNhdmUiLCAiZmFsc2UiKSkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJwYWNrYWdlLWxvY2siLCAiZmFsc2UiKSkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJzaHJpbmt3cmFwIiwgImZhbHNlIikpCisgICAgICAgIHJldHVybiBjb25maWdzCiAKLSAgICBkZWYgX2xvY2tkb3duKHNlbGYsIHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpOgotICAgICAgICBydW5lbnYgPSBkaWN0KG9zLmVudmlyb24sIFBBVEg9ZC5nZXRWYXIoJ1BBVEgnKSkKLSAgICAgICAgaWYgbm90IE5wbVJlY2lwZUhhbmRsZXIubG9ja2Rvd25wYXRoOgotICAgICAgICAgICAgTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCdyZWNpcGV0b29sLW5wbS1sb2NrZG93bicpCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbnBtIGluc3RhbGwgbG9ja2Rvd24gLS1wcmVmaXggJXMnICUgTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQotICAgICAgICByZWxvY2tiaW4gPSBvcy5wYXRoLmpvaW4oTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGgsICdub2RlX21vZHVsZXMnLCAnbG9ja2Rvd24nLCAncmVsb2NrLmpzJykKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJlbG9ja2Jpbik6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnQ291bGQgbm90IGZpbmQgcmVsb2NrLmpzIHdpdGhpbiBsb2NrZG93biBkaXJlY3Rvcnk7IHNraXBwaW5nIGxvY2tkb3duJykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbm9kZSAlcycgJSByZWxvY2tiaW4sIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCi0gICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybmluZygnbG9ja2Rvd24tcmVsb2NrIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgZGVmIF9ydW5fbnBtX2luc3RhbGwoc2VsZiwgZCwgc3JjdHJlZSwgcmVnaXN0cnksIGRldik6CisgICAgICAgICIiIlJ1biB0aGUgJ25wbSBpbnN0YWxsJyBjb21tYW5kIHdpdGhvdXQgYnVpbGRpbmcgdGhlIGFkZG9ucyIiIgorICAgICAgICBjb25maWdzID0gc2VsZi5fbnBtX2dsb2JhbF9jb25maWdzKGRldikKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJpZ25vcmUtc2NyaXB0cyIsICJ0cnVlIikpCiAKLSAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihsb2NhbGZpbGVzZGlyLCAnbG9ja2Rvd24uanNvbicpCi0gICAgICAgIHNodXRpbC5tb3ZlKG9zLnBhdGguam9pbihzcmN0cmVlLCAnbG9ja2Rvd24uanNvbicpLCB0bXBmaWxlKQotICAgICAgICBleHRyYXZhbHVlcy5zZXRkZWZhdWx0KCdleHRyYWZpbGVzJywge30pCi0gICAgICAgIGV4dHJhdmFsdWVzWydleHRyYWZpbGVzJ11bJ2xvY2tkb3duLmpzb24nXSA9IHRtcGZpbGUKLSAgICAgICAgbGluZXNfYmVmb3JlLmFwcGVuZCgnTlBNX0xPQ0tET1dOIDo9ICIke1RISVNESVJ9LyR7UE59L2xvY2tkb3duLmpzb24iJykKKyAgICAgICAgaWYgcmVnaXN0cnk6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoInJlZ2lzdHJ5IiwgcmVnaXN0cnkpKQogCi0gICAgZGVmIF9oYW5kbGVfZGVwZW5kZW5jaWVzKHNlbGYsIGQsIGRlcHMsIG9wdGRlcHMsIGRldmRlcHMsIGxpbmVzX2JlZm9yZSwgc3JjdHJlZSk6Ci0gICAgICAgIGltcG9ydCBzY3JpcHR1dGlscwotICAgICAgICAjIElmIHRoaXMgaXNuJ3QgYSBzaW5nbGUgbW9kdWxlIHdlIG5lZWQgdG8gZ2V0IHRoZSBkZXBlbmRlbmNpZXMKLSAgICAgICAgIyBhbmQgYWRkIHRoZW0gdG8gU1JDX1VSSQotICAgICAgICBkZWYgdmFyZnVuYyh2YXJuYW1lLCBvcmlndmFsdWUsIG9wLCBuZXdsaW5lcyk6Ci0gICAgICAgICAgICBpZiB2YXJuYW1lID09ICdTUkNfVVJJJzoKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3JpZ3ZhbHVlLnN0YXJ0c3dpdGgoJ25wbTovLycpOgotICAgICAgICAgICAgICAgICAgICBzcmNfdXJpID0gb3JpZ3ZhbHVlLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgZGVwbGlzdCA9IHt9Ci0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcHZlciBpbiBvcHRkZXBzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXBkYXRhID0gc2VsZi5nZXRfbnBtX2RhdGEoZGVwLCBkZXB2ZXIsIGQpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNoZWNrX25wbV9vcHRpb25hbF9kZXBlbmRlbmN5KGRlcGRhdGEpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxpc3RbZGVwXSA9IGRlcGRhdGEKLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwdmVyIGluIGRldmRlcHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY2hlY2tfbnBtX29wdGlvbmFsX2RlcGVuZGVuY3koZGVwZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbGlzdFtkZXBdID0gZGVwZGF0YQotICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gZGVwcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQotICAgICAgICAgICAgICAgICAgICAgICAgZGVwbGlzdFtkZXBdID0gZGVwZGF0YQorICAgICAgICBiYi51dGlscy5yZW1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICJub2RlX21vZHVsZXMiKSwgcmVjdXJzZT1UcnVlKQogCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhX3VybHMgPSBbXQotICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXBkYXRhIGluIGRlcGxpc3QuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBkZXBkYXRhLmdldCgndmVyc2lvbicsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT0lczt2ZXJzaW9uPSVzO3N1YmRpcj1ub2RlX21vZHVsZXMvJXMnICUgKGRlcCwgdmVyc2lvbiwgZGVwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3VybHMuYXBwZW5kKHVybCkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmFfdXJsczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHV0aWxzLmZldGNoX3VybCh0aW5mb2lsLCAnICcuam9pbihleHRyYV91cmxzKSwgTm9uZSwgc3JjdHJlZSwgbG9nZ2VyKQotICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3VyaS5leHRlbmQoZXh0cmFfdXJscykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmNfdXJpLCBOb25lLCAtMSwgVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIG9yaWd2YWx1ZSwgTm9uZSwgMCwgVHJ1ZQotICAgICAgICB1cGRhdGVkLCBuZXdsaW5lcyA9IGJiLnV0aWxzLmVkaXRfbWV0YWRhdGEobGluZXNfYmVmb3JlLCBbJ1NSQ19VUkknXSwgdmFyZnVuYykKLSAgICAgICAgaWYgdXBkYXRlZDoKLSAgICAgICAgICAgIGRlbCBsaW5lc19iZWZvcmVbOl0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIG5ld2xpbmVzOgotICAgICAgICAgICAgICAgICMgSGFjayB0byBhdm9pZCBuZXdsaW5lcyB0aGF0IGVkaXRfbWV0YWRhdGEgaW5zZXJ0cwotICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoJ1xuJyk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMV0KLSAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiB1cGRhdGVkCisgICAgICAgIGVudiA9IE5wbUVudmlyb25tZW50KGQsIGNvbmZpZ3M9Y29uZmlncykKKyAgICAgICAgZW52LnJ1bigibnBtIGluc3RhbGwiLCB3b3JrZGlyPXNyY3RyZWUpCisKKyAgICBkZWYgX2dlbmVyYXRlX3Nocmlua3dyYXAoc2VsZiwgZCwgc3JjdHJlZSwgZGV2KToKKyAgICAgICAgIiIiQ2hlY2sgYW5kIGdlbmVyYXRlIHRoZSAnbnBtLXNocmlua3dyYXAuanNvbicgZmlsZSBpZiBuZWVkZWQiIiIKKyAgICAgICAgY29uZmlncyA9IHNlbGYuX25wbV9nbG9iYWxfY29uZmlncyhkZXYpCisKKyAgICAgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCwgY29uZmlncz1jb25maWdzKQorICAgICAgICBlbnYucnVuKCJucG0gc2hyaW5rd3JhcCIsIHdvcmtkaXI9c3JjdHJlZSkKKworICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNyY3RyZWUsICJucG0tc2hyaW5rd3JhcC5qc29uIikKKworICAgIGRlZiBfaGFuZGxlX2xpY2Vuc2VzKHNlbGYsIHNyY3RyZWUsIHNocmlua3dyYXBfZmlsZSwgZGV2KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBleHRyYSBsaWNlbnNlIGZpbGVzIGFuZCB0aGUgbGlzdCBvZiBwYWNrYWdlcyIiIgorICAgICAgICBsaWNmaWxlcyA9IFtdCisgICAgICAgIHBhY2thZ2VzID0ge30KKworICAgICAgICBkZWYgX2xpY2ZpbGVzX2FwcGVuZChsaWNmaWxlKToKKyAgICAgICAgICAgICIiIkFwcGVuZCAnbGljZmlsZScgdG8gdGhlIGxpY2Vuc2UgZmlsZXMgbGlzdCIiIgorICAgICAgICAgICAgbGljZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgbGljZmlsZSkKKyAgICAgICAgICAgIGxpY21kNSA9IGJiLnV0aWxzLm1kNV9maWxlKGxpY2ZpbGVwYXRoKQorICAgICAgICAgICAgbGljZmlsZXMuYXBwZW5kKCJmaWxlOi8vJXM7bWQ1PSVzIiAlIChsaWNmaWxlLCBsaWNtZDUpKQorCisgICAgICAgICMgSGFuZGxlIHRoZSBwYXJlbnQgcGFja2FnZQorICAgICAgICBfbGljZmlsZXNfYXBwZW5kKCJwYWNrYWdlLmpzb24iKQorICAgICAgICBwYWNrYWdlc1siJHtQTn0iXSA9ICIiCisKKyAgICAgICAgIyBIYW5kbGUgdGhlIGRlcGVuZGVuY2llcworICAgICAgICBkZWYgX2hhbmRsZV9kZXBlbmRlbmN5KG5hbWUsIHBhcmFtcywgZGVwdHJlZSk6CisgICAgICAgICAgICBzdWZmaXggPSAiLSIuam9pbihbc2VsZi5fbnBtX25hbWUoZGVwKSBmb3IgZGVwIGluIGRlcHRyZWVdKQorICAgICAgICAgICAgZGVzdGRpcnMgPSBbb3MucGF0aC5qb2luKCJub2RlX21vZHVsZXMiLCBkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0KKyAgICAgICAgICAgIGRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oKmRlc3RkaXJzKQorICAgICAgICAgICAgX2xpY2ZpbGVzX2FwcGVuZChvcy5wYXRoLmpvaW4oZGVzdGRpciwgInBhY2thZ2UuanNvbiIpKQorICAgICAgICAgICAgcGFja2FnZXNbIiR7UE59LSIgKyBzdWZmaXhdID0gZGVzdGRpcgorCisgICAgICAgIHdpdGggb3BlbihzaHJpbmt3cmFwX2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKworICAgICAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBfaGFuZGxlX2RlcGVuZGVuY3ksIGRldikKKworICAgICAgICByZXR1cm4gbGljZmlsZXMsIHBhY2thZ2VzCiAKICAgICBkZWYgcHJvY2VzcyhzZWxmLCBzcmN0cmVlLCBjbGFzc2VzLCBsaW5lc19iZWZvcmUsIGxpbmVzX2FmdGVyLCBoYW5kbGVkLCBleHRyYXZhbHVlcyk6Ci0gICAgICAgIGltcG9ydCBiYi51dGlscwotICAgICAgICBpbXBvcnQgb2UucGFja2FnZQotICAgICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorICAgICAgICAiIiJIYW5kbGUgdGhlIG5wbSByZWNpcGUgY3JlYXRpb24iIiIKIAotICAgICAgICBpZiAnYnVpbGRzeXN0ZW0nIGluIGhhbmRsZWQ6CisgICAgICAgIGlmICJidWlsZHN5c3RlbSIgaW4gaGFuZGxlZDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIGRlZiByZWFkX3BhY2thZ2VfanNvbihmbik6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZm4sICdyJywgZXJyb3JzPSdzdXJyb2dhdGVlc2NhcGUnKSBhcyBmOgotICAgICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKGYucmVhZCgpKQorICAgICAgICBmaWxlcyA9IFJlY2lwZUhhbmRsZXIuY2hlY2tmaWxlcyhzcmN0cmVlLCBbInBhY2thZ2UuanNvbiJdKQogCi0gICAgICAgIGZpbGVzID0gUmVjaXBlSGFuZGxlci5jaGVja2ZpbGVzKHNyY3RyZWUsIFsncGFja2FnZS5qc29uJ10pCi0gICAgICAgIGlmIGZpbGVzOgotICAgICAgICAgICAgZCA9IGJiLmRhdGEuY3JlYXRlQ29weSh0aW5mb2lsLmNvbmZpZ19kYXRhKQotICAgICAgICAgICAgbnBtX2JpbmRpciA9IHNlbGYuX2Vuc3VyZV9ucG0oKQotICAgICAgICAgICAgaWYgbm90IG5wbV9iaW5kaXI6Ci0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMTQpCi0gICAgICAgICAgICBkLnByZXBlbmRWYXIoJ1BBVEgnLCAnJXM6JyAlIG5wbV9iaW5kaXIpCisgICAgICAgIGlmIG5vdCBmaWxlczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgICAgICBkYXRhID0gcmVhZF9wYWNrYWdlX2pzb24oZmlsZXNbMF0pCi0gICAgICAgICAgICBpZiAnbmFtZScgaW4gZGF0YSBhbmQgJ3ZlcnNpb24nIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ1BOJ10gPSBkYXRhWyduYW1lJ10KLSAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snUFYnXSA9IGRhdGFbJ3ZlcnNpb24nXQotICAgICAgICAgICAgICAgIGNsYXNzZXMuYXBwZW5kKCducG0nKQotICAgICAgICAgICAgICAgIGhhbmRsZWQuYXBwZW5kKCdidWlsZHN5c3RlbScpCi0gICAgICAgICAgICAgICAgaWYgJ2Rlc2NyaXB0aW9uJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snU1VNTUFSWSddID0gZGF0YVsnZGVzY3JpcHRpb24nXQotICAgICAgICAgICAgICAgIGlmICdob21lcGFnZScgaW4gZGF0YToKLSAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ0hPTUVQQUdFJ10gPSBkYXRhWydob21lcGFnZSddCisgICAgICAgIHdpdGggb3BlbihmaWxlc1swXSwgInIiKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChmKQogCi0gICAgICAgICAgICAgICAgZmV0Y2hkZXYgPSBleHRyYXZhbHVlc1snZmV0Y2hkZXYnXSBvciBOb25lCi0gICAgICAgICAgICAgICAgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcyA9IHNlbGYuZ2V0X25wbV9wYWNrYWdlX2RlcGVuZGVuY2llcyhkYXRhLCBmZXRjaGRldikKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZGVwZW5kZW5jaWVzKGQsIGRlcHMsIG9wdGRlcHMsIGRldmRlcHMsIGxpbmVzX2JlZm9yZSwgc3JjdHJlZSkKKyAgICAgICAgaWYgIm5hbWUiIG5vdCBpbiBkYXRhIG9yICJ2ZXJzaW9uIiBub3QgaW4gZGF0YToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgICAgICAgICAgIyBTaHJpbmt3cmFwCi0gICAgICAgICAgICAgICAgbG9jYWxmaWxlc2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29sLW5wbScpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2hyaW5rd3JhcChzcmN0cmVlLCBsb2NhbGZpbGVzZGlyLCBleHRyYXZhbHVlcywgbGluZXNfYmVmb3JlLCBkKQorICAgICAgICBleHRyYXZhbHVlc1siUE4iXSA9IHNlbGYuX25wbV9uYW1lKGRhdGFbIm5hbWUiXSkKKyAgICAgICAgZXh0cmF2YWx1ZXNbIlBWIl0gPSBkYXRhWyJ2ZXJzaW9uIl0KIAotICAgICAgICAgICAgICAgICMgTG9ja2Rvd24KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2NrZG93bihzcmN0cmVlLCBsb2NhbGZpbGVzZGlyLCBleHRyYXZhbHVlcywgbGluZXNfYmVmb3JlLCBkKQorICAgICAgICBpZiAiZGVzY3JpcHRpb24iIGluIGRhdGE6CisgICAgICAgICAgICBleHRyYXZhbHVlc1siU1VNTUFSWSJdID0gZGF0YVsiZGVzY3JpcHRpb24iXQogCi0gICAgICAgICAgICAgICAgIyBTcGxpdCBlYWNoIG5wbSBtb2R1bGUgb3V0IHRvIGlzIG93biBwYWNrYWdlCi0gICAgICAgICAgICAgICAgbnBtcGFja2FnZXMgPSBvZS5wYWNrYWdlLm5wbV9zcGxpdF9wYWNrYWdlX2RpcnMoc3JjdHJlZSkKLSAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBOb25lCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaGFuZGxlZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtWzBdID09ICdsaWNlbnNlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBpdGVtWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiBub3QgbGljdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICBsaWN2YWx1ZXMgPSBoYW5kbGVfbGljZW5zZV92YXJzKHNyY3RyZWUsIGxpbmVzX2JlZm9yZSwgaGFuZGxlZCwgZXh0cmF2YWx1ZXMsIGQpCi0gICAgICAgICAgICAgICAgaWYgbGljdmFsdWVzOgotICAgICAgICAgICAgICAgICAgICAjIEF1Z21lbnQgdGhlIGxpY2Vuc2UgbGlzdCB3aXRoIGluZm9ybWF0aW9uIHdlIGhhdmUgaW4gdGhlIHBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzID0ge30KLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IHNlbGYuX2hhbmRsZV9saWNlbnNlKGRhdGEpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlc1snJHtQTn0nXSA9IGxpY2Vuc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIHBrZ25hbWUsIHBrZ2l0ZW0gaW4gbnBtcGFja2FnZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIF8sIHBkYXRhID0gcGtnaXRlbQotICAgICAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IHNlbGYuX2hhbmRsZV9saWNlbnNlKHBkYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlc1twa2duYW1lXSA9IGxpY2Vuc2UKLSAgICAgICAgICAgICAgICAgICAgIyBOb3cgd3JpdGUgb3V0IHRoZSBwYWNrYWdlLXNwZWNpZmljIGxpY2Vuc2UgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBzdHJpcCBvdXQgdGhlIGpzb24gZGF0YSBkaWN0cyBmb3IgdGhpcyBzaW5jZSBzcGxpdF9wa2dfbGljZW5zZXMKLSAgICAgICAgICAgICAgICAgICAgIyBpc24ndCBleHBlY3RpbmcgaXQKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZXMgPSBPcmRlcmVkRGljdCgoeCx5WzBdKSBmb3IgeCx5IGluIG5wbXBhY2thZ2VzLml0ZW1zKCkpCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzWycke1BOfSddID0gJycKLSAgICAgICAgICAgICAgICAgICAgcGtnbGljZW5zZXMgPSBzcGxpdF9wa2dfbGljZW5zZXMobGljdmFsdWVzLCBwYWNrYWdlcywgbGluZXNfYWZ0ZXIsIGxpY2Vuc2VzKQotICAgICAgICAgICAgICAgICAgICBhbGxfbGljZW5zZXMgPSBsaXN0KHNldChbaXRlbS5yZXBsYWNlKCdfJywgJyAnKSBmb3IgcGtnbGljZW5zZSBpbiBwa2dsaWNlbnNlcy52YWx1ZXMoKSBmb3IgaXRlbSBpbiBwa2dsaWNlbnNlXSkpCi0gICAgICAgICAgICAgICAgICAgIGlmICcmJyBpbiBhbGxfbGljZW5zZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGxfbGljZW5zZXMucmVtb3ZlKCcmJykKLSAgICAgICAgICAgICAgICAgICAgZXh0cmF2YWx1ZXNbJ0xJQ0VOU0UnXSA9ICcgJiAnLmpvaW4oYWxsX2xpY2Vuc2VzKQorICAgICAgICBpZiAiaG9tZXBhZ2UiIGluIGRhdGE6CisgICAgICAgICAgICBleHRyYXZhbHVlc1siSE9NRVBBR0UiXSA9IGRhdGFbImhvbWVwYWdlIl0KIAotICAgICAgICAgICAgICAgICMgTmVlZCB0byBtb3ZlIFMgc2V0dGluZyBhZnRlciBpbmhlcml0IG5wbQotICAgICAgICAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lc19iZWZvcmUpOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1MgPScpOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNfYmVmb3JlLnBvcChpKQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNfYWZ0ZXIuaW5zZXJ0KDAsICcjIE11c3QgYmUgc2V0IGFmdGVyIGluaGVyaXQgbnBtIHNpbmNlIHRoYXQgaXRzZWxmIHNldHMgUycpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19hZnRlci5pbnNlcnQoMSwgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGRldiA9IGJiLnV0aWxzLnRvX2Jvb2xlYW4oc3RyKGV4dHJhdmFsdWVzLmdldCgiTlBNX0lOU1RBTExfREVWIiwgIjAiKSksIEZhbHNlKQorICAgICAgICByZWdpc3RyeSA9IHNlbGYuX2dldF9yZWdpc3RyeShsaW5lc19iZWZvcmUpCiAKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBiYi5ub3RlKCJDaGVja2luZyBpZiBucG0gaXMgYXZhaWxhYmxlIC4uLiIpCisgICAgICAgICMgVGhlIG5hdGl2ZSBucG0gaXMgdXNlZCBoZXJlIChhbmQgbm90IHRoZSBob3N0IG9uZSkgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAgICMgbnBtIHZlcnNpb24gaXMgaGlnaCBlbm91Z2ggdG8gZW5zdXJlIGFuIGVmZmljaWVudCBkZXBlbmRlbmN5IHRyZWUKKyAgICAgICAgIyByZXNvbHV0aW9uIGFuZCBhdm9pZCBpc3N1ZSB3aXRoIHRoZSBzaHJpbmt3cmFwIGZpbGUgZm9ybWF0LgorICAgICAgICAjIE1vcmVvdmVyIHRoZSBuYXRpdmUgbnBtIGlzIG1hbmRhdG9yeSBmb3IgdGhlIGJ1aWxkLgorICAgICAgICBiaW5kaXIgPSBzZWxmLl9lbnN1cmVfbnBtKCkKIAotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZCA9IGJiLmRhdGEuY3JlYXRlQ29weShUSU5GT0lMLmNvbmZpZ19kYXRhKQorICAgICAgICBkLnByZXBlbmRWYXIoIlBBVEgiLCBiaW5kaXIgKyAiOiIpCisgICAgICAgIGQuc2V0VmFyKCJTIiwgc3JjdHJlZSkKIAotICAgICMgRklYTUUgdGhpcyBpcyBkdXBsaWNhdGVkIGZyb20gbGliL2JiL2ZldGNoMi9ucG0ucHkKLSAgICBkZWYgX3BhcnNlX3ZpZXcoc2VsZiwgb3V0cHV0KToKLSAgICAgICAgJycnCi0gICAgICAgIFBhcnNlIHRoZSBvdXRwdXQgb2YgbnBtIHZpZXcgLS1qc29uOyB0aGUgbGFzdCBKU09OIHJlc3VsdAotICAgICAgICBpcyBhc3N1bWVkIHRvIGJlIHRoZSBvbmUgdGhhdCB3ZSdyZSBpbnRlcmVzdGVkIGluLgotICAgICAgICAnJycKLSAgICAgICAgcGRhdGEgPSBOb25lCi0gICAgICAgIG91dGRlcHMgPSB7fQotICAgICAgICBkYXRhbGluZXMgPSBbXQotICAgICAgICBicmFjZWxldmVsID0gMAotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgYnJhY2VsZXZlbDoKLSAgICAgICAgICAgICAgICBkYXRhbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICBlbGlmICd7JyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIGRhdGFsaW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgZGF0YWxpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICAgICAgYnJhY2VsZXZlbCA9IGJyYWNlbGV2ZWwgKyBsaW5lLmNvdW50KCd7JykgLSBsaW5lLmNvdW50KCd9JykKLSAgICAgICAgaWYgZGF0YWxpbmVzOgotICAgICAgICAgICAgcGRhdGEgPSBqc29uLmxvYWRzKCdcbicuam9pbihkYXRhbGluZXMpKQotICAgICAgICByZXR1cm4gcGRhdGEKKyAgICAgICAgYmIubm90ZSgiR2VuZXJhdGluZyBzaHJpbmt3cmFwIGZpbGUgLi4uIikKKyAgICAgICAgIyBUbyBnZW5lcmF0ZSB0aGUgc2hyaW5rd3JhcCBmaWxlIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZSB0byBiZSBpbnN0YWxsZWQKKyAgICAgICAgIyBmaXJzdC4gRHVyaW5nIHRoZSBnZW5lcmF0aW9uIHByb2Nlc3Mgc29tZSBmaWxlcyBtYXkgYmUgdXBkYXRlZCAvCisgICAgICAgICMgZGVsZXRlZC4gQnkgZGVmYXVsdCBkZXZ0b29sIHRyYWNrcyB0aGUgZGlmZnMgaW4gdGhlIHNyY3RyZWUgYW5kIHJhaXNlcworICAgICAgICAjIGVycm9ycyB3aGVuIGZpbmlzaGluZyB0aGUgcmVjaXBlIGlmIHNvbWUgZGlmZnMgYXJlIGZvdW5kLgorICAgICAgICBnaXRfZXhjbHVkZV9maWxlID0gb3MucGF0aC5qb2luKHNyY3RyZWUsICIuZ2l0IiwgImluZm8iLCAiZXhjbHVkZSIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGdpdF9leGNsdWRlX2ZpbGUpOgorICAgICAgICAgICAgd2l0aCBvcGVuKGdpdF9leGNsdWRlX2ZpbGUsICJyKyIpIGFzIGY6CisgICAgICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gWyIvbm9kZV9tb2R1bGVzLyIsICIvbnBtLXNocmlua3dyYXAuanNvbiJdOgorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIG5vdCBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUobGluZSArICJcbiIpCiAKLSAgICAjIEZJWE1FIHRoaXMgaXMgZWZmZWN0aXZlbHkgZHVwbGljYXRlZCBmcm9tIGxpYi9iYi9mZXRjaDIvbnBtLnB5Ci0gICAgIyAoc3BsaXQgb3V0IGZyb20gX2dldGRlcGVuZGVuY2llcygpKQotICAgIGRlZiBnZXRfbnBtX2RhdGEoc2VsZiwgcGtnLCB2ZXJzaW9uLCBkKToKLSAgICAgICAgaW1wb3J0IGJiLmZldGNoMgotICAgICAgICBwa2dmdWxsbmFtZSA9IHBrZwotICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgbm90ICcvJyBpbiB2ZXJzaW9uOgotICAgICAgICAgICAgcGtnZnVsbG5hbWUgKz0gIkAnJXMnIiAlIHZlcnNpb24KLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJDYWxsaW5nIGdldGRlcHMgb24gJXMiICUgcGtnKQotICAgICAgICBydW5lbnYgPSBkaWN0KG9zLmVudmlyb24sIFBBVEg9ZC5nZXRWYXIoJ1BBVEgnKSkKLSAgICAgICAgZmV0Y2hjbWQgPSAibnBtIHZpZXcgJXMgLS1qc29uIiAlIHBrZ2Z1bGxuYW1lCi0gICAgICAgIG91dHB1dCwgXyA9IGJiLnByb2Nlc3MucnVuKGZldGNoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCi0gICAgICAgIGRhdGEgPSBzZWxmLl9wYXJzZV92aWV3KG91dHB1dCkKLSAgICAgICAgcmV0dXJuIGRhdGEKKyAgICAgICAgbG9ja19maWxlID0gb3MucGF0aC5qb2luKHNyY3RyZWUsICJwYWNrYWdlLWxvY2suanNvbiIpCisgICAgICAgIGxvY2tfY29weSA9IGxvY2tfZmlsZSArICIuY29weSIKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9ja19maWxlKToKKyAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGxvY2tfZmlsZSwgbG9ja19jb3B5KQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGVmZmVjdGl2ZWx5IGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgICMgKHNwbGl0IG91dCBmcm9tIF9nZXRkZXBlbmRlbmNpZXMoKSkKLSAgICBkZWYgZ2V0X25wbV9wYWNrYWdlX2RlcGVuZGVuY2llcyhzZWxmLCBwZGF0YSwgZmV0Y2hkZXYpOgotICAgICAgICBkZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ2RlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnb3B0aW9uYWxEZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShvcHRpb25hbERlcGVuZGVuY2llcykKLSAgICAgICAgaWYgZmV0Y2hkZXY6Ci0gICAgICAgICAgICBkZXZEZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ2RldkRlcGVuZGVuY2llcycsIHt9KQotICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShkZXZEZXBlbmRlbmNpZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZXZEZXBlbmRlbmNpZXMgPSB7fQotICAgICAgICBkZXBzZm91bmQgPSB7fQotICAgICAgICBvcHRkZXBzZm91bmQgPSB7fQotICAgICAgICBkZXZkZXBzZm91bmQgPSB7fQotICAgICAgICBmb3IgZGVwIGluIGRlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGlmIGRlcCBpbiBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBvcHRkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbGlmIGRlcCBpbiBkZXZEZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICAgICAgZGV2ZGVwc2ZvdW5kW2RlcF0gPSBkZXBlbmRlbmNpZXNbZGVwXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgIHJldHVybiBkZXBzZm91bmQsIG9wdGRlcHNmb3VuZCwgZGV2ZGVwc2ZvdW5kCisgICAgICAgIHNlbGYuX3J1bl9ucG1faW5zdGFsbChkLCBzcmN0cmVlLCByZWdpc3RyeSwgZGV2KQorICAgICAgICBzaHJpbmt3cmFwX2ZpbGUgPSBzZWxmLl9nZW5lcmF0ZV9zaHJpbmt3cmFwKGQsIHNyY3RyZWUsIGRldikKIAotICAgICMgRklYTUUgdGhpcyBpcyBlZmZlY3RpdmVseSBkdXBsaWNhdGVkIGZyb20gbGliL2JiL2ZldGNoMi9ucG0ucHkKLSAgICAjIChzcGxpdCBvdXQgZnJvbSBfZ2V0ZGVwZW5kZW5jaWVzKCkpCi0gICAgZGVmIGNoZWNrX25wbV9vcHRpb25hbF9kZXBlbmRlbmN5KHNlbGYsIHBkYXRhKToKLSAgICAgICAgcGtnX29zID0gcGRhdGEuZ2V0KCdvcycsIE5vbmUpCi0gICAgICAgIGlmIHBrZ19vczoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBrZ19vcywgbGlzdCk6Ci0gICAgICAgICAgICAgICAgcGtnX29zID0gW3BrZ19vc10KLSAgICAgICAgICAgIGJsYWNrbGlzdCA9IEZhbHNlCi0gICAgICAgICAgICBmb3IgaXRlbSBpbiBwa2dfb3M6Ci0gICAgICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCchJyk6Ci0gICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIChub3QgYmxhY2tsaXN0IGFuZCAnbGludXgnIG5vdCBpbiBwa2dfb3MpIG9yICchbGludXgnIGluIHBrZ19vczoKLSAgICAgICAgICAgICAgICBwa2cgPSBwZGF0YS5nZXQoJ25hbWUnLCAnVW5uYW1lZCBwYWNrYWdlJykKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlNraXBwaW5nICVzIHNpbmNlIGl0J3MgaW5jb21wYXRpYmxlIHdpdGggTGludXgiICUgcGtnKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NrX2NvcHkpOgorICAgICAgICAgICAgYmIudXRpbHMubW92ZWZpbGUobG9ja19jb3B5LCBsb2NrX2ZpbGUpCisKKyAgICAgICAgIyBBZGQgdGhlIHNocmlua3dyYXAgZmlsZSBhcyAnZXh0cmFmaWxlcycKKyAgICAgICAgc2hyaW5rd3JhcF9jb3B5ID0gc2hyaW5rd3JhcF9maWxlICsgIi5jb3B5IgorICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShzaHJpbmt3cmFwX2ZpbGUsIHNocmlua3dyYXBfY29weSkKKyAgICAgICAgZXh0cmF2YWx1ZXMuc2V0ZGVmYXVsdCgiZXh0cmFmaWxlcyIsIHt9KQorICAgICAgICBleHRyYXZhbHVlc1siZXh0cmFmaWxlcyJdWyJucG0tc2hyaW5rd3JhcC5qc29uIl0gPSBzaHJpbmt3cmFwX2NvcHkKKworICAgICAgICB1cmxfbG9jYWwgPSAibnBtc3c6Ly8lcyIgJSBzaHJpbmt3cmFwX2ZpbGUKKyAgICAgICAgdXJsX3JlY2lwZT0gIm5wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbiIKKworICAgICAgICBpZiBkZXY6CisgICAgICAgICAgICB1cmxfbG9jYWwgKz0gIjtkZXY9MSIKKyAgICAgICAgICAgIHVybF9yZWNpcGUgKz0gIjtkZXY9MSIKKworICAgICAgICAjIEFkZCB0aGUgbnBtc3cgdXJsIGluIHRoZSBTUkNfVVJJIG9mIHRoZSBnZW5lcmF0ZWQgcmVjaXBlCisgICAgICAgIGRlZiBfaGFuZGxlX3NyY3VyaSh2YXJuYW1lLCBvcmlndmFsdWUsIG9wLCBuZXdsaW5lcyk6CisgICAgICAgICAgICAiIiJVcGRhdGUgdGhlIHZlcnNpb24gdmFsdWUgYW5kIGFkZCB0aGUgJ25wbXN3Oi8vJyB1cmwiIiIKKyAgICAgICAgICAgIHZhbHVlID0gb3JpZ3ZhbHVlLnJlcGxhY2UoInZlcnNpb249IiArIGRhdGFbInZlcnNpb24iXSwgInZlcnNpb249JHtQVn0iKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJ2ZXJzaW9uPWxhdGVzdCIsICJ2ZXJzaW9uPSR7UFZ9IikKKyAgICAgICAgICAgIHZhbHVlcyA9IFtsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gdmFsdWUuc3RyaXAoJ1xuJykuc3BsaXRsaW5lcygpXQorICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh1cmxfcmVjaXBlKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlcywgTm9uZSwgNCwgRmFsc2UKKworICAgICAgICAoXywgbmV3bGluZXMpID0gYmIudXRpbHMuZWRpdF9tZXRhZGF0YShsaW5lc19iZWZvcmUsIFsiU1JDX1VSSSJdLCBfaGFuZGxlX3NyY3VyaSkKKyAgICAgICAgbGluZXNfYmVmb3JlWzpdID0gW2xpbmUucnN0cmlwKCdcbicpIGZvciBsaW5lIGluIG5ld2xpbmVzXQorCisgICAgICAgICMgSW4gb3JkZXIgdG8gZ2VuZXJhdGUgY29ycmVjdCBsaWNlbmNlIGNoZWNrc3VtcyBpbiB0aGUgcmVjaXBlIHRoZQorICAgICAgICAjIGRlcGVuZGVuY2llcyBoYXZlIHRvIGJlIGZldGNoZWQgYWdhaW4gdXNpbmcgdGhlIG5wbXN3IHVybAorICAgICAgICBiYi5ub3RlKCJGZXRjaGluZyBucG0gZGVwZW5kZW5jaWVzIC4uLiIpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIm5vZGVfbW9kdWxlcyIpLCByZWN1cnNlPVRydWUpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VybF9sb2NhbF0sIGQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzcmN0cmVlKQorCisgICAgICAgIGJiLm5vdGUoIkhhbmRsaW5nIGxpY2VuY2VzIC4uLiIpCisgICAgICAgIChsaWNmaWxlcywgcGFja2FnZXMpID0gc2VsZi5faGFuZGxlX2xpY2Vuc2VzKHNyY3RyZWUsIHNocmlua3dyYXBfZmlsZSwgZGV2KQorICAgICAgICBleHRyYXZhbHVlc1siTElDX0ZJTEVTX0NIS1NVTSJdID0gbGljZmlsZXMKKyAgICAgICAgc3BsaXRfcGtnX2xpY2Vuc2VzKGd1ZXNzX2xpY2Vuc2Uoc3JjdHJlZSwgZCksIHBhY2thZ2VzLCBsaW5lc19hZnRlciwgW10pCisKKyAgICAgICAgY2xhc3Nlcy5hcHBlbmQoIm5wbSIpCisgICAgICAgIGhhbmRsZWQuYXBwZW5kKCJidWlsZHN5c3RlbSIpCisKICAgICAgICAgcmV0dXJuIFRydWUKIAotCiBkZWYgcmVnaXN0ZXJfcmVjaXBlX2hhbmRsZXJzKGhhbmRsZXJzKToKKyAgICAiIiJSZWdpc3RlciB0aGUgbnBtIGhhbmRsZXIiIiIKICAgICBoYW5kbGVycy5hcHBlbmQoKE5wbVJlY2lwZUhhbmRsZXIoKSwgNjApKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKaW5kZXggNjkyZGQ3YS4uN2NlY2VhYyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CkBAIC0yMTIsNyArMjEyLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsZW49bWF4bGVuKQogICAgICAgICBwcmludChvdXRwdXQpCiAKLSAgICBkZWYgdmlld190ZXN0X3JlcG9ydChzZWxmLCBsb2dnZXIsIHNvdXJjZV9kaXIsIGJyYW5jaCwgY29tbWl0LCB0YWcsIHVzZV9yZWdyZXNzaW9uX21hcCwgcmF3X3Rlc3QpOgorICAgIGRlZiB2aWV3X3Rlc3RfcmVwb3J0KHNlbGYsIGxvZ2dlciwgc291cmNlX2RpciwgYnJhbmNoLCBjb21taXQsIHRhZywgdXNlX3JlZ3Jlc3Npb25fbWFwLCByYXdfdGVzdCwgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHkpOgorICAgICAgICBkZWYgcHJpbnRfc2VsZWN0ZWRfdGVzdGNhc2VfcmVzdWx0KHRlc3RyZXN1bHRzLCBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSk6CisgICAgICAgICAgICBmb3IgdGVzdHN1aXRlIGluIHRlc3RyZXN1bHRzOgorICAgICAgICAgICAgICAgIGZvciByZXN1bHRpZCBpbiB0ZXN0cmVzdWx0c1t0ZXN0c3VpdGVdOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXN0cmVzdWx0c1t0ZXN0c3VpdGVdW3Jlc3VsdGlkXVsncmVzdWx0J10KKyAgICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlX3Jlc3VsdCA9IHJlc3VsdC5nZXQoc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHksIHt9KQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X2Nhc2VfcmVzdWx0LmdldCgnc3RhdHVzJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnRm91bmQgc2VsZWN0ZWQgdGVzdCBjYXNlIHJlc3VsdCBmb3IgJXMgZnJvbSAlcycgJSAoc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodGVzdF9jYXNlX3Jlc3VsdFsnc3RhdHVzJ10pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGZpbmQgc2VsZWN0ZWQgdGVzdCBjYXNlIHJlc3VsdCBmb3IgJXMgZnJvbSAlcycgJSAoc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0aWQpKQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X2Nhc2VfcmVzdWx0LmdldCgnbG9nJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCh0ZXN0X2Nhc2VfcmVzdWx0Wydsb2cnXSkKICAgICAgICAgdGVzdF9jb3VudF9yZXBvcnRzID0gW10KICAgICAgICAgY29uZmlnbWFwID0gcmVzdWx0dXRpbHMuc3RvcmVfbWFwCiAgICAgICAgIGlmIHVzZV9yZWdyZXNzaW9uX21hcDoKQEAgLTIzNSwxMiArMjQ5LDE4IEBACiAgICAgICAgICAgICBmb3IgdGVzdHN1aXRlIGluIHRlc3RyZXN1bHRzOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV0uZ2V0KHJhd190ZXN0LCB7fSkKICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhd19yZXN1bHRzW3Rlc3RzdWl0ZV0gPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgcmF3X3Jlc3VsdHNbdGVzdHN1aXRlXSA9IHtyYXdfdGVzdDogcmVzdWx0fQogICAgICAgICAgICAgaWYgcmF3X3Jlc3VsdHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyYXdfcmVzdWx0cywgc29ydF9rZXlzPVRydWUsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICBpZiBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRfc2VsZWN0ZWRfdGVzdGNhc2VfcmVzdWx0KHJhd19yZXN1bHRzLCBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJhd19yZXN1bHRzLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGZpbmQgcmF3IHRlc3QgcmVzdWx0IGZvciAlcycgJSByYXdfdGVzdCkKICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGlmIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5OgorICAgICAgICAgICAgcHJpbnRfc2VsZWN0ZWRfdGVzdGNhc2VfcmVzdWx0KHRlc3RyZXN1bHRzLCBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSkKKyAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgIGZvciB0ZXN0c3VpdGUgaW4gdGVzdHJlc3VsdHM6CiAgICAgICAgICAgICBmb3IgcmVzdWx0aWQgaW4gdGVzdHJlc3VsdHNbdGVzdHN1aXRlXToKICAgICAgICAgICAgICAgICBza2lwID0gRmFsc2UKQEAgLTI2OCw3ICsyODgsNyBAQAogZGVmIHJlcG9ydChhcmdzLCBsb2dnZXIpOgogICAgIHJlcG9ydCA9IFJlc3VsdHNUZXh0UmVwb3J0KCkKICAgICByZXBvcnQudmlld190ZXN0X3JlcG9ydChsb2dnZXIsIGFyZ3Muc291cmNlX2RpciwgYXJncy5icmFuY2gsIGFyZ3MuY29tbWl0LCBhcmdzLnRhZywgYXJncy51c2VfcmVncmVzc2lvbl9tYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5yYXdfdGVzdF9vbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmF3X3Rlc3Rfb25seSwgYXJncy5zZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSkKICAgICByZXR1cm4gMAogCiBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2Vycyk6CkBAIC0yODcsNCArMzA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2luc3RlYWQgb2YgdGhlIGRlZmF1bHQgInN0b3JlX21hcCIsIHVzZSB0aGUgInJlZ3Jlc3Npb25fbWFwIiBmb3IgcmVwb3J0JykKICAgICBwYXJzZXJfYnVpbGQuYWRkX2FyZ3VtZW50KCctcicsICctLXJhd190ZXN0X29ubHknLCBkZWZhdWx0PScnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IHJhdyB0ZXN0IHJlc3VsdCBvbmx5IGZvciB0aGUgdXNlciBwcm92aWRlZCB0ZXN0IHJlc3VsdCBpZCcpCi0KKyAgICBwYXJzZXJfYnVpbGQuYWRkX2FyZ3VtZW50KCctcycsICctLXNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5JywgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J291dHB1dCBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0IGZvciB0aGUgdXNlciBwcm92aWRlZCB0ZXN0IGNhc2UgaWQsIGlmIGJvdGggdGVzdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQgaWQgYW5kIHRlc3QgY2FzZSBpZCBhcmUgcHJvdmlkZWQgdGhlbiBvdXRwdXQgdGhlIHNlbGVjdGVkIHRlc3QgY2FzZSByZXN1bHQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSB0aGUgcHJvdmlkZWQgdGVzdCByZXN1bHQgaWQnKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3Jlc3VsdHV0aWxzLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3Jlc3VsdHV0aWxzLnB5CmluZGV4IGYwYWU4ZWMuLjVmZWMwMWYgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXN1bHR1dGlscy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkKQEAgLTEyNywxMCArMTI3LDcgQEAKICAgICAgICAgICAgIGRhdGEgPSBsb2dkYXRhLmdldCgiY29tcHJlc3NlZCIpCiAgICAgICAgICAgICBkYXRhID0gYmFzZTY0LmI2NGRlY29kZShkYXRhLmVuY29kZSgidXRmLTgiKSkKICAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoZGF0YSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEKKyAgICAgICAgICAgIHJldHVybiBkYXRhLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J2lnbm9yZScpCiAgICAgcmV0dXJuIE5vbmUKIAogZGVmIHB0ZXN0cmVzdWx0X2dldF9sb2cocmVzdWx0cywgc2VjdGlvbik6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQppbmRleCA0NWJkYWY1Li5mOTIyNTVkIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKQEAgLTc3LDcgKzc3LDYgQEAKIAogCiBkZWYgbG9hZF9wbHVnaW5zKGxvZ2dlciwgcGx1Z2lucywgcGx1Z2lucGF0aCk6Ci0gICAgaW1wb3J0IGltcAogCiAgICAgZGVmIGxvYWRfcGx1Z2luKG5hbWUpOgogICAgICAgICBsb2dnZXIuZGVidWcoJ0xvYWRpbmcgcGx1Z2luICVzJyAlIG5hbWUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKaW5kZXggYzhkOWYxMi4uMjJiNDUyMSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzCisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcwpAQCAtNCw1ICs0LDUgQEAKIAogaW5jbHVkZSBjb21tb24ud2tzLmluYwogCi1ib290bG9hZGVyICAtLXRpbWVvdXQ9MCAgLS1hcHBlbmQ9InZnYT0wIHJ3IG9wcm9maWxlLnRpbWVyPTEgcm9vdGZzdHlwZT1leHQ0ICIKK2Jvb3Rsb2FkZXIgIC0tdGltZW91dD0wICAtLWFwcGVuZD0icncgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKaW5kZXggN2U2NjIwNy4uMDE4ODE1YiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQpAQCAtMjgwLDcgKzI4MCw3IEBACiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICAiIiJHZXQgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSBpbiBhIGxhenkgd2F5LiIiIgogICAgICAgICBpZiBuYW1lIGluICgibWRpciIsICJtY29weSIsICJtZGVsIiwgIm1kZWx0cmVlIiwgInNmZGlzayIsICJlMmZzY2siLAotICAgICAgICAgICAgICAgICAgICAicmVzaXplMmZzIiwgIm1rc3dhcCIsICJta2Rvc2ZzIiwgImRlYnVnZnMiKToKKyAgICAgICAgICAgICAgICAgICAgInJlc2l6ZTJmcyIsICJta3N3YXAiLCAibWtkb3NmcyIsICJkZWJ1Z2ZzIiwiYmxraWQiKToKICAgICAgICAgICAgIGFuYW1lID0gIl8lcyIgJSBuYW1lCiAgICAgICAgICAgICBpZiBhbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXzoKICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGFuYW1lLCBmaW5kX2V4ZWN1dGFibGUobmFtZSwgc2VsZi5wYXRocykpCkBAIC0yOTEsNyArMjkxLDcgQEAKIAogICAgIGRlZiBfZ2V0X3BhcnRfaW1hZ2Uoc2VsZiwgcG51bSk6CiAgICAgICAgIGlmIHBudW0gbm90IGluIHNlbGYucGFydGl0aW9uczoKLSAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJQYXJ0aXRpb24gJXMgaXMgbm90IGluIHRoZSBpbWFnZSIpCisgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiUGFydGl0aW9uICVzIGlzIG5vdCBpbiB0aGUgaW1hZ2UiICUgcG51bSkKICAgICAgICAgcGFydCA9IHNlbGYucGFydGl0aW9uc1twbnVtXQogICAgICAgICAjIGNoZWNrIGlmIGZzdHlwZSBpcyBzdXBwb3J0ZWQKICAgICAgICAgZm9yIGZzdHlwZSBpbiBzZWxmLmZzdHlwZXM6CkBAIC0zMTQsNiArMzE0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgc2Vlaz1zZWxmLnBhcnRpdGlvbnNbcG51bV0uc3RhcnQpCiAKICAgICBkZWYgZGlyKHNlbGYsIHBudW0sIHBhdGgpOgorICAgICAgICBpZiBwbnVtIG5vdCBpbiBzZWxmLnBhcnRpdGlvbnM6CisgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiUGFydGl0aW9uICVzIGlzIG5vdCBpbiB0aGUgaW1hZ2UiICUgcG51bSkKKwogICAgICAgICBpZiBzZWxmLnBhcnRpdGlvbnNbcG51bV0uZnN0eXBlLnN0YXJ0c3dpdGgoJ2V4dCcpOgogICAgICAgICAgICAgcmV0dXJuIGV4ZWNfY21kKCJ7fSB7fSAtUiAnbHMgLWwge30nIi5mb3JtYXQoc2VsZi5kZWJ1Z2ZzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCkBAIC0zMjMsMTYgKzMyNiwzMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKSkKIAotICAgIGRlZiBjb3B5KHNlbGYsIHNyYywgcG51bSwgcGF0aCk6CisgICAgZGVmIGNvcHkoc2VsZiwgc3JjLCBkZXN0KToKICAgICAgICAgIiIiQ29weSBwYXJ0aXRpb24gaW1hZ2UgaW50byB3aWMgaW1hZ2UuIiIiCisgICAgICAgIHBudW0gPSAgZGVzdC5wYXJ0IGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpIGVsc2Ugc3JjLnBhcnQKKwogICAgICAgICBpZiBzZWxmLnBhcnRpdGlvbnNbcG51bV0uZnN0eXBlLnN0YXJ0c3dpdGgoJ2V4dCcpOgotICAgICAgICAgICAgY21kID0gInByaW50ZiAnY2Qge31cbndyaXRlIHt9IHt9XG4nIHwge30gLXcge30iLlwKLSAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQocGF0aCwgc3JjLCBvcy5wYXRoLmJhc2VuYW1lKHNyYyksCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKKyAgICAgICAgICAgICAgICBjbWQgPSAicHJpbnRmICdjZCB7fVxud3JpdGUge30ge31cbicgfCB7fSAtdyB7fSIuXAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChvcy5wYXRoLmRpcm5hbWUoZGVzdC5wYXRoKSwgc3JjLCBvcy5wYXRoLmJhc2VuYW1lKHNyYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdmcywgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpCisgICAgICAgICAgICBlbHNlOiAjIGNvcHkgZnJvbSB3aWMKKyAgICAgICAgICAgICAgICAjIHJ1biBib3RoIGR1bXAgYW5kIHJkdW1wIHRvIHN1cHBvcnQgYm90aCBmaWxlcyBhbmQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgY21kID0gInByaW50ZiAnY2Qge31cbmR1bXAgL3t9IHt9XG5yZHVtcCAve30ge31cbicgfCB7fSB7fSIuXAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChvcy5wYXRoLmRpcm5hbWUoc3JjLnBhdGgpLCBzcmMucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgc3JjLnBhdGgsIGRlc3QsIHNlbGYuZGVidWdmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpCiAgICAgICAgIGVsc2U6ICMgZmF0Ci0gICAgICAgICAgICBjbWQgPSAie30gLWkge30gLXNub3Age30gOjp7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKKyAgICAgICAgICAgICAgICBjbWQgPSAie30gLWkge30gLXNub3Age30gOjp7fSIuZm9ybWF0KHNlbGYubWNvcHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywgZGVzdC5wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjbWQgPSAie30gLWkge30gLXNub3AgOjp7fSB7fSIuZm9ybWF0KHNlbGYubWNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMucGF0aCwgZGVzdCkKKwogICAgICAgICBleGVjX2NtZChjbWQsIGFzX3NoZWxsPVRydWUpCiAgICAgICAgIHNlbGYuX3B1dF9wYXJ0X2ltYWdlKHBudW0pCiAKQEAgLTQyNCw3ICs0NDIsNyBAQAogICAgICAgICAgICAgb3V0Zi5mbHVzaCgpCiAKICAgICAgICAgZGVmIHJlYWRfcHRhYmxlKHBhdGgpOgotICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoInt9IC1kSiB7fSIuZm9ybWF0KHNlbGYuc2ZkaXNrLCBwYXRoKSkKKyAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCJ7fSAtSiB7fSIuZm9ybWF0KHNlbGYuc2ZkaXNrLCBwYXRoKSkKICAgICAgICAgICAgIHJldHVybiBqc29uLmxvYWRzKG91dCkKIAogICAgICAgICBkZWYgd3JpdGVfcHRhYmxlKHBhcnRzLCB0YXJnZXQpOgpAQCAtNTI1LDcgKzU0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgc3dhcCBwYXJ0aXRpb24ge30iLmZvcm1hdChwbnVtKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gcGFydC5nZXQoIm5hbWUiKQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxfc3RyID0gIi1MIHt9Ii5mb3JtYXQobGFiZWwpIGlmIGxhYmVsIGVsc2UgJycKLSAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQgPSBwYXJ0LmdldCgidXVpZCIpCisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLS1wcm9iZSB7fSIuZm9ybWF0KHNlbGYuYmxraWQsIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQgPSBvdXRbb3V0LmluZGV4KCJVVUlEPVwiIikrNjpvdXQuaW5kZXgoIlVVSUQ9XCIiKSs0Ml0KICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWRfc3RyID0gIi1VIHt9Ii5mb3JtYXQodXVpZCkgaWYgdXVpZCBlbHNlICcnCiAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGFydGZuYW1lLCAndycpIGFzIHNwYXJzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mdHJ1bmNhdGUoc3BhcnNlLmZpbGVubygpLCBwYXJ0WydzaXplJ10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCkBAIC01NTEsMTEgKzU3MCwxNSBAQAogCiBkZWYgd2ljX2NwKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKICAgICAiIiIKLSAgICBDb3B5IGxvY2FsIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSB2ZmF0IHBhcnRpdGlvbiBvZgorICAgIENvcHkgZmlsZSBvciBkaXJlY3RvcnkgdG8vZnJvbSB0aGUgdmZhdC9leHQgcGFydGl0aW9uIG9mCiAgICAgcGFydGl0aW9uZWQgaW1hZ2UuCiAgICAgIiIiCi0gICAgZGlzayA9IERpc2soYXJncy5kZXN0LmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKLSAgICBkaXNrLmNvcHkoYXJncy5zcmMsIGFyZ3MuZGVzdC5wYXJ0LCBhcmdzLmRlc3QucGF0aCkKKyAgICBpZiBpc2luc3RhbmNlKGFyZ3MuZGVzdCwgc3RyKToKKyAgICAgICAgZGlzayA9IERpc2soYXJncy5zcmMuaW1hZ2UsIG5hdGl2ZV9zeXNyb290KQorICAgIGVsc2U6CisgICAgICAgIGRpc2sgPSBEaXNrKGFyZ3MuZGVzdC5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZGlzay5jb3B5KGFyZ3Muc3JjLCBhcmdzLmRlc3QpCisKIAogZGVmIHdpY19ybShhcmdzLCBuYXRpdmVfc3lzcm9vdCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQppbmRleCA4MTJlYmUzLi5iZDNhMmI5IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKQEAgLTM0MSwxMiArMzQxLDE1IEBACiAKIHdpY19jcF91c2FnZSA9ICIiIgogCi0gQ29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24KKyBDb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0by9mcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uCiAKLSB1c2FnZTogd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj5bPHBhdGg+XSBbLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD5dCisgdXNhZ2U6IHdpYyBjcCA8c3JjPiA8ZGVzdD4gWy0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+XQogCi0gVGhpcyBjb21tYW5kICBjb3BpZXMgbG9jYWwgZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCi1vZiBwYXJ0aXRpb25lZCAgaW1hZ2UuCisgc291cmNlL2Rlc3RpbmF0aW9uIGltYWdlIGluIGZvcm1hdCA8aW1hZ2U+OjxwYXJ0aXRpb24+WzxwYXRoPl0KKworIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZWl0aGVyCisgIC0gZnJvbSBsb2NhbCB0byB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZQorICAtIGZyb20gdmZhdCBvciBleHQqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgaW1hZ2UgdG8gbG9jYWwKIAogIFNlZSAnd2ljIGhlbHAgY3AnIGZvciBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucy4KIApAQCAtMzU1LDE2ICszNTgsMTggQEAKIHdpY19jcF9oZWxwID0gIiIiCiAKIE5BTUUKLSAgICB3aWMgY3AgLSBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbnMKKyAgICB3aWMgY3AgLSBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0by9mcm9tIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucwogCiBTWU5PUFNJUwotICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+Ci0gICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj48cGF0aD4KLSAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPjxwYXRoPiAtLW5hdGl2ZS1zeXNyb290IDxwYXRoPgorICAgIHdpYyBjcCA8c3JjPiA8ZGVzdD46PHBhcnRpdGlvbj4KKyAgICB3aWMgY3AgPHNyYz46PHBhcnRpdGlvbj4gPGRlc3Q+CisgICAgd2ljIGNwIDxzcmM+IDxkZXN0LWltYWdlPjo8cGFydGl0aW9uPjxwYXRoPgorICAgIHdpYyBjcCA8c3JjPiA8ZGVzdC1pbWFnZT46PHBhcnRpdGlvbj48cGF0aD4gLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD4KIAogREVTQ1JJUFRJT04KLSAgICBUaGlzIGNvbW1hbmQgY29waWVzIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbiBvZgotICAgIHRoZSBwYXJ0aXRpb25lZCBpbWFnZS4KKyAgICBUaGlzIGNvbW1hbmQgY29waWVzIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGVpdGhlcgorICAgICAgLSBmcm9tIGxvY2FsIHRvIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIGltYWdlCisgICAgICAtIGZyb20gdmZhdCBvciBleHQqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgaW1hZ2UgdG8gbG9jYWwKIAogICAgIFRoZSBmaXJzdCBmb3JtIG9mIGl0IGNvcGllcyBmaWxlIG9yIGRpcmVjdG9yeSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YKICAgICB0aGUgcGFydGl0aW9uOgpAQCAtMzk3LDYgKzQwMiwxMCBAQAogICAgICAgICAgICAgICAgNCBmaWxlcyAgICAgICAgICAgICAgICAgICAwIGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDY3NSAzOTIgYnl0ZXMgZnJlZQogCisgICAgVGhlIHRoaXJkIGZvcm0gb2YgdGhlIGNvbW1hbmQgY29waWVzIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkKKyAgICBvbiB0aGUgcGFydGl0aW9uIHRvIGxvY2FsOgorICAgICAgICQgd2ljIGNwIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljOjEvdm1saW51eiB0ZXN0CisKICAgICBUaGUgLW4gb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgbmF0aXZlIHN5c3Jvb3QKICAgICBjb250YWluaW5nIHRoZSB0b29scyhwYXJ0ZWQgYW5kIG10b29scykgdG8gdXNlLgogIiIiCkBAIC01MjcsNyArNTM2LDggQEAKIAogICAgIFNvdXJjZSBwbHVnaW5zIGNhbiBhbHNvIGJlIGltcGxlbWVudGVkIGFuZCBhZGRlZCBieSBleHRlcm5hbAogICAgIGxheWVycyAtIGFueSBwbHVnaW5zIGZvdW5kIGluIGEgc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlLwotICAgIGRpcmVjdG9yeSBpbiBhbiBleHRlcm5hbCBsYXllciB3aWxsIGFsc28gYmUgbWFkZSBhdmFpbGFibGUuCisgICAgb3IgbGliL3dpYy9wbHVnaW5zL3NvdXJjZS8gZGlyZWN0b3J5IGluIGFuIGV4dGVybmFsIGxheWVyIHdpbGwKKyAgICBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlLgogCiAgICAgV2hlbiB0aGUgd2ljIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGludm9rZSBhIHBhcnRpdGlvbi1zcGVjaWZpYwogICAgIGltcGxlbWVudGF0aW9uLCBpdCBsb29rcyBmb3IgdGhlIHBsdWdpbiB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzCkBAIC05NjAsNiArOTcwLDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgb21pdHRlZCwgbm90IHRoZSBkaXJlY3RvcnkgaXRzZWxmLiBUaGlzIG9wdGlvbiBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGFuIGVmZmVjdCB3aXRoIHRoZSByb290ZnMgc291cmNlIHBsdWdpbi4KIAorICAgICAgICAgLS1pbmNsdWRlLXBhdGg6IFRoaXMgb3B0aW9uIGlzIHNwZWNpZmljIHRvIHdpYy4gSXQgYWRkcyB0aGUgY29udGVudHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgZ2l2ZW4gcGF0aCBvciBhIHJvb3RmcyB0byB0aGUgcmVzdWx0aW5nIGltYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcHRpb24gY29udGFpbnMgdHdvIGZpZWxkcywgdGhlIG9yaWdpbiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uIFdoZW4gdGhlIG9yaWdpbiBpcyBhIHJvb3RmcywgaXQgZm9sbG93cworICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGxvZ2ljIGFzIHRoZSByb290ZnMtZGlyIGFyZ3VtZW50IGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyBhbmQgb3duZXJzIGFyZSBrZXB0LiBXaGVuIHRoZSBvcmlnaW4gaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggd2ljIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyBub3QgdGhlIHJvb3RmcyBpdHNlbGYgc28gdXNlIG9mIGFuIGFic29sdXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBpcyByZWNvbW1lbmRlZCwgYW5kIHRoZSBvd25lciBhbmQgZ3JvdXAgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdDpyb290LiBJZiBubyBkZXN0aW5hdGlvbiBpcyBnaXZlbiBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSByb290IG9mIHRoZSByb290ZnMuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gb25seSBoYXMgYW4gZWZmZWN0IHdpdGggdGhlIHJvb3RmcyBzb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW4uCisKKyAgICAgICAgIC0tY2hhbmdlLWRpcmVjdG9yeTogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBjaGFuZ2VzIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBkaXJlY3RvcnkgYmVmb3JlIGNvcHlpbmcgdGhlIGZpbGVzLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBpcyB1c2VmdWwgd2hlbiB3ZSB3YW50IHRvIHNwbGl0IGEgcm9vdGZzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHBhcnRpdGlvbnMgYW5kIHdlIHdhbnQgdG8ga2VlcCB0aGUgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMgYW5kIHVzZXJuYW1lcyBpbiBhbGwgdGhlIHBhcnRpdGlvbnMuCisKICAgICAgICAgIC0tZXh0cmEtc3BhY2U6IFRoaXMgb3B0aW9uIGlzIHNwZWNpZmljIHRvIHdpYy4gSXQgYWRkcyBleHRyYQogICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UgYWZ0ZXIgdGhlIHNwYWNlIGZpbGxlZCBieSB0aGUgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHBhcnRpdGlvbi4gVGhlIGZpbmFsIHNpemUgY2FuIGdvCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CmluZGV4IDZhNjQzYmEuLmI4YmVmZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5CkBAIC0xMzcsNiArMTM3LDggQEAKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tYWN0aXZlJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tYWxpZ24nLCB0eXBlPWludCkKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tZXhjbHVkZS1wYXRoJywgbmFyZ3M9JysnKQorICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1pbmNsdWRlLXBhdGgnLCBuYXJncz0nKycsIGFjdGlvbj0nYXBwZW5kJykKKyAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tY2hhbmdlLWRpcmVjdG9yeScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCItLWV4dHJhLXNwYWNlIiwgdHlwZT1zaXpldHlwZSkKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tZnNvcHRpb25zJywgZGVzdD0nZnNvcHRzJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tZnN0eXBlJywgZGVmYXVsdD0ndmZhdCcsCkBAIC0yNDUsNiArMjQ3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdib290bG9hZGVyJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ib290bG9hZGVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9vdGxvYWRlciA9IHBhcnNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ29uY2F0ZW5hdGUgdGhlIHN0cmluZ3Mgc2V0IGluIEFQUEVORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZF92YXIgPSBnZXRfYml0YmFrZV92YXIoIkFQUEVORCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXBwZW5kX3ZhcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib290bG9hZGVyLmFwcGVuZCA9ICcgJy5qb2luKGZpbHRlcihOb25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ib290bG9hZGVyLmFwcGVuZCwgYXBwZW5kX3ZhcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IG1vcmUgdGhhbiBvbmUgYm9vdGxvYWRlciBzcGVjaWZpZWQiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29uZnBhdGgsIGxpbmVubykKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9taXNjLnB5CmluZGV4IDFmMTk5YjkuLjkxOTc1YmEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQpAQCAtNDUsNyArNDUsOCBAQAogICAgICAgICAgICAgICAgICAgInBhcnRlZCI6ICJwYXJ0ZWQiLAogICAgICAgICAgICAgICAgICAgInNmZGlzayI6ICJ1dGlsLWxpbnV4IiwKICAgICAgICAgICAgICAgICAgICJzZ2Rpc2siOiAiZ3B0ZmRpc2siLAotICAgICAgICAgICAgICAgICAgInN5c2xpbnV4IjogInN5c2xpbnV4IgorICAgICAgICAgICAgICAgICAgInN5c2xpbnV4IjogInN5c2xpbnV4IiwKKyAgICAgICAgICAgICAgICAgICJ0YXIiOiAidGFyIgogICAgICAgICAgICAgICAgICB9CiAKIGRlZiBydW50b29sKGNtZGxuX29yX2FyZ3MpOgpAQCAtMTEyLDYgKzExMywxNSBAQAogICAgICIiIgogICAgIHJldHVybiBfZXhlY19jbWQoY21kX2FuZF9hcmdzLCBhc19zaGVsbClbMV0KIAorZGVmIGZpbmRfZXhlY3V0YWJsZShjbWQsIHBhdGhzKToKKyAgICByZWNpcGUgPSBjbWQKKyAgICBpZiByZWNpcGUgaW4gTkFUSVZFX1JFQ0lQRVM6CisgICAgICAgIHJlY2lwZSA9ICBOQVRJVkVfUkVDSVBFU1tyZWNpcGVdCisgICAgcHJvdmlkZWQgPSBnZXRfYml0YmFrZV92YXIoIkFTU1VNRV9QUk9WSURFRCIpCisgICAgaWYgcHJvdmlkZWQgYW5kICIlcy1uYXRpdmUiICUgcmVjaXBlIGluIHByb3ZpZGVkOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgcmV0dXJuIHNwYXduLmZpbmRfZXhlY3V0YWJsZShjbWQsIHBhdGhzKQogCiBkZWYgZXhlY19uYXRpdmVfY21kKGNtZF9hbmRfYXJncywgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbz0iIik6CiAgICAgIiIiCkBAIC0xMzYsNyArMTQ2LDcgQEAKICAgICBsb2dnZXIuZGVidWcoImV4ZWNfbmF0aXZlX2NtZDogJXMiLCBuYXRpdmVfY21kX2FuZF9hcmdzKQogCiAgICAgIyBJZiB0aGUgY29tbWFuZCBpc24ndCBpbiB0aGUgbmF0aXZlIHN5c3Jvb3Qgc2F5IHdlIGZhaWxlZC4KLSAgICBpZiBzcGF3bi5maW5kX2V4ZWN1dGFibGUoYXJnc1swXSwgbmF0aXZlX3BhdGhzKToKKyAgICBpZiBmaW5kX2V4ZWN1dGFibGUoYXJnc1swXSwgbmF0aXZlX3BhdGhzKToKICAgICAgICAgcmV0LCBvdXQgPSBfZXhlY19jbWQobmF0aXZlX2NtZF9hbmRfYXJncywgVHJ1ZSkKICAgICBlbHNlOgogICAgICAgICByZXQgPSAxMjcKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQppbmRleCBkODA5NDA4Li43ZDlkZDYxIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC0zMCw2ICszMCw4IEBACiAgICAgICAgIHNlbGYuZGV2aWNlID0gTm9uZQogICAgICAgICBzZWxmLmV4dHJhX3NwYWNlID0gYXJncy5leHRyYV9zcGFjZQogICAgICAgICBzZWxmLmV4Y2x1ZGVfcGF0aCA9IGFyZ3MuZXhjbHVkZV9wYXRoCisgICAgICAgIHNlbGYuaW5jbHVkZV9wYXRoID0gYXJncy5pbmNsdWRlX3BhdGgKKyAgICAgICAgc2VsZi5jaGFuZ2VfZGlyZWN0b3J5ID0gYXJncy5jaGFuZ2VfZGlyZWN0b3J5CiAgICAgICAgIHNlbGYuZnNvcHRzID0gYXJncy5mc29wdHMKICAgICAgICAgc2VsZi5mc3R5cGUgPSBhcmdzLmZzdHlwZQogICAgICAgICBzZWxmLmxhYmVsID0gYXJncy5sYWJlbApAQCAtMTg5LDcgKzE5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb3VudHBvaW50LCBzZWxmLnNpemUsIHNlbGYuZml4ZWRfc2l6ZSkpCiAKICAgICBkZWYgcHJlcGFyZV9yb290ZnMoc2VsZiwgY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIHJvb3Rmc19kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290LCByZWFsX3Jvb3RmcyA9IFRydWUpOgorICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCwgcmVhbF9yb290ZnMgPSBUcnVlLCBwc2V1ZG9fZGlyID0gTm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBQcmVwYXJlIGNvbnRlbnQgZm9yIGEgcm9vdGZzIHBhcnRpdGlvbiBpLmUuIGNyZWF0ZSBhIHBhcnRpdGlvbgogICAgICAgICBhbmQgZmlsbCBpdCBmcm9tIGEgL3Jvb3RmcyBkaXIuCkBAIC0xOTcsMTUgKzE5OSwxNCBAQAogICAgICAgICBDdXJyZW50bHkgaGFuZGxlcyBleHQyLzMvNCwgYnRyZnMsIHZmYXQgYW5kIHNxdWFzaGZzLgogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCi0gICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy8uLi9wc2V1ZG8iICUgIHJvb3Rmc19kaXIpCi0gICAgICAgIHBfcGFzc3dkID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19QQVNTV0QiLCByb290ZnNfZGlyKQotICAgICAgICBwX25vc3ltbGlua2V4cCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTk9TWU1MSU5LRVhQIiwgIjEiKQotICAgICAgICBwc2V1ZG8gPSAiZXhwb3J0IFBTRVVET19QUkVGSVg9JXM7IiAlIHBfcHJlZml4Ci0gICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19MT0NBTFNUQVRFRElSPSVzOyIgJSBwX2xvY2Fsc3RhdGVkaXIKLSAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX1BBU1NXRD0lczsiICUgcF9wYXNzd2QKLSAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX05PU1lNTElOS0VYUD0lczsiICUgcF9ub3N5bWxpbmtleHAKLSAgICAgICAgcHNldWRvICs9ICIlcyAiICUgZ2V0X2JpdGJha2VfdmFyKCJGQUtFUk9PVENNRCIpCisgICAgICAgIGlmIChwc2V1ZG9fZGlyKToKKyAgICAgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKKyAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19MT0NBTFNUQVRFRElSPSVzOyIgJSBwc2V1ZG9fZGlyCisgICAgICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fUEFTU1dEPSVzOyIgJSByb290ZnNfZGlyCisgICAgICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPTE7IgorICAgICAgICAgICAgcHNldWRvICs9ICIlcyAiICUgZ2V0X2JpdGJha2VfdmFyKCJGQUtFUk9PVENNRCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwc2V1ZG8gPSBOb25lCiAKICAgICAgICAgcm9vdGZzID0gIiVzL3Jvb3Rmc18lcy4lcy4lcyIgJSAoY3Jfd29ya2Rpciwgc2VsZi5sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8sIHNlbGYuZnN0eXBlKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKaW5kZXggZjc0ZDY0My4uZDliNGU1NyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CkBAIC0xOCw3ICsxOCw3IEBACiAKIFBMVUdJTl9UWVBFUyA9IFsiaW1hZ2VyIiwgInNvdXJjZSJdCiAKLVNDUklQVFNfUExVR0lOX0RJUiA9ICJzY3JpcHRzL2xpYi93aWMvcGx1Z2lucyIKK1NDUklQVFNfUExVR0lOX0RJUiA9IFsic2NyaXB0cy9saWIvd2ljL3BsdWdpbnMiLCAibGliL3dpYy9wbHVnaW5zIl0KIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dpYycpCiAKQEAgLTM4LDEwICszOCwxMSBAQAogICAgICAgICAgICAgY2xzLl9wbHVnaW5fZGlycyA9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3BsdWdpbnMnKV0KICAgICAgICAgICAgIGxheWVycyA9IGdldF9iaXRiYWtlX3ZhcigiQkJMQVlFUlMiKSBvciAnJwogICAgICAgICAgICAgZm9yIGxheWVyX3BhdGggaW4gbGF5ZXJzLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsYXllcl9wYXRoLCBTQ1JJUFRTX1BMVUdJTl9ESVIpCi0gICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmV4cGFuZHVzZXIocGF0aCkpCi0gICAgICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gY2xzLl9wbHVnaW5fZGlycyBhbmQgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgY2xzLl9wbHVnaW5fZGlycy5pbnNlcnQoMCwgcGF0aCkKKyAgICAgICAgICAgICAgICBmb3Igc2NyaXB0X3BsdWdpbl9kaXIgaW4gU0NSSVBUU19QTFVHSU5fRElSOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsIHNjcmlwdF9wbHVnaW5fZGlyKQorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZXhwYW5kdXNlcihwYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBub3QgaW4gY2xzLl9wbHVnaW5fZGlycyBhbmQgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fcGx1Z2luX2RpcnMuaW5zZXJ0KDAsIHBhdGgpCiAKICAgICAgICAgaWYgcHR5cGUgbm90IGluIFBMVUdJTlM6CiAgICAgICAgICAgICAjIGxvYWQgYWxsIHB0eXBlIHBsdWdpbnMKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQppbmRleCAyNDQxY2MzLi4yZDA2YzI0IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CkBAIC00MDMsNyArNDAzLDcgQEAKICAgICAgICAgICAgICAgICAjIFJlc2VydmUgYSBzZWN0b3IgZm9yIEVCUiBmb3IgZXZlcnkgbG9naWNhbCBwYXJ0aXRpb24KICAgICAgICAgICAgICAgICAjIGJlZm9yZSBhbGlnbm1lbnQgaXMgcGVyZm9ybWVkLgogICAgICAgICAgICAgICAgIGlmIHBhcnQudHlwZSA9PSAnbG9naWNhbCc6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gMgogCiAgICAgICAgICAgICBhbGlnbl9zZWN0b3JzID0gMAogICAgICAgICAgICAgaWYgcGFydC5hbGlnbjoKQEAgLTQ0Niw3ICs0NDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZHBhcnQgPSBwYXJ0Lm51bQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zaXplX3NlYyArPSBhbGlnbl9zZWN0b3JzCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc2l6ZV9zZWMgKz0gcGFydC5zaXplX3NlYyArIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zaXplX3NlYyArPSBwYXJ0LnNpemVfc2VjICsgMgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbWFyeV9wYXJ0X251bSArPSAxCiAgICAgICAgICAgICAgICAgICAgIHBhcnQubnVtID0gc2VsZi5wcmltYXJ5X3BhcnRfbnVtCkBAIC01MTIsNyArNTEyLDcgQEAKICAgICAgICAgICAgICAgICAjIGFkZCBhIHNlY3RvciBhdCB0aGUgYmFjaywgc28gdGhhdCB0aGVyZSBpcyBlbm91Z2gKICAgICAgICAgICAgICAgICAjIHJvb20gZm9yIGFsbCBsb2dpY2FsIHBhcnRpdGlvbnMuCiAgICAgICAgICAgICAgICAgc2VsZi5fY3JlYXRlX3BhcnRpdGlvbihzZWxmLnBhdGgsICJleHRlbmRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBwYXJ0LnN0YXJ0IC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHBhcnQuc3RhcnQgLSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zaXplX3NlYykKIAogICAgICAgICAgICAgaWYgcGFydC5mc3R5cGUgPT0gInN3YXAiOgpAQCAtNTgwLDkgKzU4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmF0aXZlX3N5c3Jvb3QpCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKLSAgICAgICAgIyByZW1vdmUgcGFydGl0aW9uIGltYWdlcwotICAgICAgICBmb3IgaW1hZ2UgaW4gc2V0KHNlbGYucGFydGltYWdlcyk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoaW1hZ2UpCisgICAgICAgIHBhc3MKIAogICAgIGRlZiBhc3NlbWJsZShzZWxmKToKICAgICAgICAgbG9nZ2VyLmRlYnVnKCJJbnN0YWxsaW5nIHBhcnRpdGlvbnMiKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKaW5kZXggODI5NzBjZS4uM2M0OTk3ZCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiTm8gZmlsZSBzcGVjaWZpZWQiKQogCiAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihrZXJuZWxfZGlyLCBzb3VyY2VfcGFyYW1zWydmaWxlJ10pCi0gICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAiJXMuJXMiICUgKHNvdXJjZV9wYXJhbXNbJ2ZpbGUnXSwgcGFydC5saW5lbm8pKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgIiVzLiVzIiAlIChvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZV9wYXJhbXNbJ2ZpbGUnXSksIHBhcnQubGluZW5vKSkKIAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5kaXJuYW1lKGRzdCkpOgogICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGRzdCkpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKaW5kZXggZTI2ZTk1Yi4uZjFkYjgzZiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weQpAQCAtMTcsMTAgKzE3LDExIEBACiBpbXBvcnQgc3lzCiAKIGZyb20gb2UucGF0aCBpbXBvcnQgY29weWhhcmRsaW5rdHJlZQorZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMucGx1Z2luYmFzZSBpbXBvcnQgU291cmNlUGx1Z2luCi1mcm9tIHdpYy5taXNjIGltcG9ydCBnZXRfYml0YmFrZV92YXIKK2Zyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhciwgZXhlY19uYXRpdmVfY21kCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd3aWMnKQogCkBAIC0zMiw2ICszMywyMiBAQAogICAgIG5hbWUgPSAncm9vdGZzJwogCiAgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfX3ZhbGlkYXRlX3BhdGgoY21kLCByb290ZnNfZGlyLCBwYXRoKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2FicyhwYXRoKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IE11c3QgYmUgcmVsYXRpdmU6ICVzIiAlIChjbWQsIG9yaWdfcGF0aCkpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgICMgRGlzYWxsb3cgY2xpbWJpbmcgb3V0c2lkZSBvZiBwYXJlbnQgZGlyZWN0b3J5IHVzaW5nICcuLicsCisgICAgICAgICMgYmVjYXVzZSBkb2luZyBzbyBjb3VsZCBiZSBxdWl0ZSBkaXNhc3Ryb3VzICh3ZSB3aWxsIGRlbGV0ZSB0aGUKKyAgICAgICAgIyBkaXJlY3RvcnksIG9yIG1vZGlmeSBhIGRpcmVjdG9yeSBvdXRzaWRlIE9wZW5FbWJlZGRlZCkuCisgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHJvb3Rmc19kaXIsIHBhdGgpKQorICAgICAgICBpZiBub3QgZnVsbF9wYXRoLnN0YXJ0c3dpdGgob3MucGF0aC5yZWFscGF0aChyb290ZnNfZGlyKSk6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzOiBNdXN0IHBvaW50IGluc2lkZSB0aGUgcm9vdGZzOiIgJSAoY21kLCBwYXRoKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgcmV0dXJuIGZ1bGxfcGF0aAorCisgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfX2dldF9yb290ZnNfZGlyKHJvb3Rmc19kaXIpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHJvb3Rmc19kaXIpOgogICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgocm9vdGZzX2RpcikKQEAgLTQ0LDYgKzYxLDE1IEBACiAKICAgICAgICAgcmV0dXJuIG9zLnBhdGgucmVhbHBhdGgoaW1hZ2Vfcm9vdGZzX2RpcikKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX19nZXRfcHNldWRvKG5hdGl2ZV9zeXNyb290LCByb290ZnMsIHBzZXVkb19kaXIpOgorICAgICAgICBwc2V1ZG8gPSAiZXhwb3J0IFBTRVVET19QUkVGSVg9JXMvdXNyOyIgJSBuYXRpdmVfc3lzcm9vdAorICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTE9DQUxTVEFURURJUj0lczsiICUgcHNldWRvX2RpcgorICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fUEFTU1dEPSVzOyIgJSByb290ZnMKKyAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX05PU1lNTElOS0VYUD0xOyIKKyAgICAgICAgcHNldWRvICs9ICIlcyAiICUgZ2V0X2JpdGJha2VfdmFyKCJGQUtFUk9PVENNRCIpCisgICAgICAgIHJldHVybiBwc2V1ZG8KKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyLCBjcl93b3JrZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZV9idWlsZGRpciwgYm9vdGltZ19kaXIsIGtlcm5lbF9kaXIsCkBAIC02OCwxMCArOTQsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbm90IGEgdmFsaWQgcGF0aCwgZXhpdGluZyIgJSBwYXJ0LnJvb3Rmc19kaXIpCiAKICAgICAgICAgcGFydC5yb290ZnNfZGlyID0gY2xzLl9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2RpcikKKyAgICAgICAgcHNldWRvX2RpciA9IG9zLnBhdGguam9pbihwYXJ0LnJvb3Rmc19kaXIsICIuLi9wc2V1ZG8iKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5sZXhpc3RzKHBzZXVkb19kaXIpOgorICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIGZvbGRlciBkb2VzIG5vdCBleGlzdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIlVzZXJuYW1lcyBhbmQgcGVybWlzc2lvbnMgd2lsbCBiZSBpbnZhbGlkICIgJSBwc2V1ZG9fZGlyKQorICAgICAgICAgICAgcHNldWRvX2RpciA9IE5vbmUKIAogICAgICAgICBuZXdfcm9vdGZzID0gTm9uZQorICAgICAgICBuZXdfcHNldWRvID0gTm9uZQogICAgICAgICAjIEhhbmRsZSBleGNsdWRlZCBwYXRocy4KLSAgICAgICAgaWYgcGFydC5leGNsdWRlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHBhcnQuZXhjbHVkZV9wYXRoIG9yIHBhcnQuaW5jbHVkZV9wYXRoIG9yIHBhcnQuY2hhbmdlX2RpcmVjdG9yeToKICAgICAgICAgICAgICMgV2UgbmVlZCBhIG5ldyByb290ZnMgZGlyZWN0b3J5IHdlIGNhbiBkZWxldGUgZmlsZXMgZnJvbS4gQ29weSB0bwogICAgICAgICAgICAgIyB3b3JrZGlyLgogICAgICAgICAgICAgbmV3X3Jvb3RmcyA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJyb290ZnMlZCIgJSBwYXJ0LmxpbmVubykpCkBAIC03OSwyMiArMTExLDkzIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMobmV3X3Jvb3Rmcyk6CiAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcykpCiAKLSAgICAgICAgICAgIGNvcHloYXJkbGlua3RyZWUocGFydC5yb290ZnNfZGlyLCBuZXdfcm9vdGZzKQorICAgICAgICAgICAgaWYgcGFydC5jaGFuZ2VfZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIGNkID0gcGFydC5jaGFuZ2VfZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgaWYgY2RbLTFdID09ICcvJzoKKyAgICAgICAgICAgICAgICAgICAgY2QgPSBjZFs6LTFdCisgICAgICAgICAgICAgICAgb3JpZ19kaXIgPSBjbHMuX192YWxpZGF0ZV9wYXRoKCItLWNoYW5nZS1kaXJlY3RvcnkiLCBwYXJ0LnJvb3Rmc19kaXIsIGNkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcmlnX2RpciA9IHBhcnQucm9vdGZzX2RpcgorICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShvcmlnX2RpciwgbmV3X3Jvb3RmcykKIAotICAgICAgICAgICAgZm9yIG9yaWdfcGF0aCBpbiBwYXJ0LmV4Y2x1ZGVfcGF0aDoKKyAgICAgICAgICAgICMgQ29udmVydCB0aGUgcHNldWRvIGRpcmVjdG9yeSB0byBpdHMgbmV3IGxvY2F0aW9uCisgICAgICAgICAgICBpZiAocHNldWRvX2Rpcik6CisgICAgICAgICAgICAgICAgbmV3X3BzZXVkbyA9IG9zLnBhdGgucmVhbHBhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAicHNldWRvJWQiICUgcGFydC5saW5lbm8pKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhuZXdfcHNldWRvKToKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShuZXdfcHNldWRvKQorICAgICAgICAgICAgICAgIG9zLm1rZGlyKG5ld19wc2V1ZG8pCisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkob3MucGF0aC5qb2luKHBzZXVkb19kaXIsICJmaWxlcy5kYiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihuZXdfcHNldWRvLCAiZmlsZXMuZGIiKSkKKworICAgICAgICAgICAgICAgIHBzZXVkb19jbWQgPSAiJXMgLUIgLW0gJXMgLU0gJXMiICUgKGNscy5fX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm9vdGZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3BzZXVkbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ19kaXIsIG5ld19yb290ZnMpCisgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKHBzZXVkb19jbWQsIG5hdGl2ZV9zeXNyb290KQorCisgICAgICAgICAgICBmb3IgaW5fcGF0aCBpbiBwYXJ0LmluY2x1ZGVfcGF0aCBvciBbXToKKyAgICAgICAgICAgICAgICAjcGFyc2UgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gaW5fcGF0aFswXQorICAgICAgICAgICAgICAgIGlmIGxlbihpbl9wYXRoKSA+IDI6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJ0ludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgaW5jbHVkZS1wYXRoIikKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgICAgICBpZiBsZW4oaW5fcGF0aCkgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGluX3BhdGhbMV0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gTm9uZQorCisgICAgICAgICAgICAgICAgIyBQYWNrIGZpbGVzIHRvIGJlIGluY2x1ZGVkIGludG8gYSB0YXIgZmlsZS4KKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gY3JlYXRlIGEgdGFyIGZpbGUsIGJlY2F1c2UgdGhhdCB3YXkgd2UgY2FuIGtlZXAgdGhlCisgICAgICAgICAgICAgICAgIyBwZXJtaXNzaW9ucyBmcm9tIHRoZSBmaWxlcyBldmVuIHdoZW4gdGhleSBiZWxvbmcgdG8gZGlmZmVyZW50CisgICAgICAgICAgICAgICAgIyBwc2V1ZG8gZW52aXJvbWVudHMuCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBzaW1wbHkgY29weSBmaWxlcyB1c2luZyBjb3B5aGFyZGxpbmt0cmVlL2NvcHl0cmVlLi4uIHRoZQorICAgICAgICAgICAgICAgICMgY29waWVkIGZpbGVzIHdpbGwgYmVsb25nIHRvIHRoZSB1c2VyIHJ1bm5pbmcgd2ljLgorICAgICAgICAgICAgICAgIHRhcl9maWxlID0gb3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAiaW5jbHVkZS1wYXRoJWQudGFyIiAlIHBhcnQubGluZW5vKSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbmNsdWRlX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChpbmNsdWRlX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICB0YXJfY21kID0gInRhciBjIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgLWYgJXMgLUMgJXMgJXMiICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfZmlsZSwgcGFyZW50LCBvcy5wYXRoLnJlbHBhdGgoaW5jbHVkZV9wYXRoLCBwYXJlbnQpKQorICAgICAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQodGFyX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9wYXRoIGluIGtyb290ZnNfZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0ga3Jvb3Rmc19kaXJbaW5jbHVkZV9wYXRoXQorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBjbHMuX19nZXRfcm9vdGZzX2RpcihpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcHNldWRvID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgIi4uL3BzZXVkbyIpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhpbmNsdWRlX3BzZXVkbyk6CisgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG8gPSBjbHMuX19nZXRfcHNldWRvKG5hdGl2ZV9zeXNyb290LCBpbmNsdWRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcHNldWRvKQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyX2NtZCA9ICJ0YXIgY2YgJXMgLUMgJXMgLiIgJSAodGFyX2ZpbGUsIGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkbyA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9jbWQgPSAidGFyIGMgLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAtZiAlcyAtQyAlcyAuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyX2ZpbGUsIGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKHRhcl9jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG8pCisKKyAgICAgICAgICAgICAgICAjY3JlYXRlIGRlc3RpbmF0aW9uCisgICAgICAgICAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjbHMuX192YWxpZGF0ZV9wYXRoKCItLWluY2x1ZGUtcGF0aCIsIG5ld19yb290ZnMsIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIFBhdGgoZGVzdGluYXRpb24pLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG5ld19yb290ZnMKKworICAgICAgICAgICAgICAgICNleHRyYWN0IGRlc3RpbmF0aW9uCisgICAgICAgICAgICAgICAgdW50YXJfY21kID0gInRhciB4ZiAlcyAtQyAlcyIgJSAodGFyX2ZpbGUsIGRlc3RpbmF0aW9uKQorICAgICAgICAgICAgICAgIGlmIG5ld19wc2V1ZG86CisgICAgICAgICAgICAgICAgICAgIHBzZXVkbyA9IGNscy5fX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsIG5ld19yb290ZnMsIG5ld19wc2V1ZG8pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gTm9uZQorICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZCh1bnRhcl9jbWQsIG5hdGl2ZV9zeXNyb290LCBwc2V1ZG8pCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHRhcl9maWxlKQorCisgICAgICAgICAgICBmb3Igb3JpZ19wYXRoIGluIHBhcnQuZXhjbHVkZV9wYXRoIG9yIFtdOgogICAgICAgICAgICAgICAgIHBhdGggPSBvcmlnX3BhdGgKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk11c3QgYmUgcmVsYXRpdmU6IC0tZXhjbHVkZS1wYXRoPSVzIiAlIG9yaWdfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKG5ld19yb290ZnMsIHBhdGgpKQorICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IGNscy5fX3ZhbGlkYXRlX3BhdGgoIi0tZXhjbHVkZS1wYXRoIiwgbmV3X3Jvb3RmcywgcGF0aCkKIAotICAgICAgICAgICAgICAgICMgRGlzYWxsb3cgY2xpbWJpbmcgb3V0c2lkZSBvZiBwYXJlbnQgZGlyZWN0b3J5IHVzaW5nICcuLicsCi0gICAgICAgICAgICAgICAgIyBiZWNhdXNlIGRvaW5nIHNvIGNvdWxkIGJlIHF1aXRlIGRpc2FzdHJvdXMgKHdlIHdpbGwgZGVsZXRlIHRoZQotICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5KS4KLSAgICAgICAgICAgICAgICBpZiBub3QgZnVsbF9wYXRoLnN0YXJ0c3dpdGgobmV3X3Jvb3Rmcyk6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJyVzJyBwb2ludHMgdG8gYSBwYXRoIG91dHNpZGUgdGhlIHJvb3RmcyIgJSBvcmlnX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGgubGV4aXN0cyhmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aChvcy5zZXApOgogICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSBjb250ZW50IG9ubHkuCkBAIC0xMDksNCArMjEyLDUgQEAKICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShmdWxsX3BhdGgpCiAKICAgICAgICAgcGFydC5wcmVwYXJlX3Jvb3Rmcyhjcl93b3JrZGlyLCBvZV9idWlsZGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm9vdGZzIG9yIHBhcnQucm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvb3RmcyBvciBwYXJ0LnJvb3Rmc19kaXIsIG5hdGl2ZV9zeXNyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkb19kaXIgPSBuZXdfcHNldWRvIG9yIHBzZXVkb19kaXIpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKaW5kZXggMjFiZGU3ZS4uZTc4MWY0ZiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydApAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnRfb3B0cz1jaGFydF9vcHRzKSkKIAogCi1kZWYgZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCByZXZzLCBvdXRkaXI9Tm9uZSk6CitkZWYgZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCBub3Rlc19yZWYyLCByZXZzLCBvdXRkaXI9Tm9uZSk6CiAgICAgIiIiR2V0IHRoZSBidWlsZHN0YXRzIGZyb20gZ2l0IG5vdGVzIiIiCiAgICAgZnVsbF9yZWYgPSAncmVmcy9ub3Rlcy8nICsgbm90ZXNfcmVmCiAgICAgaWYgbm90IHJlcG8ucmV2X3BhcnNlKGZ1bGxfcmVmKToKQEAgLTM5MSw4ICszOTEsMTMgQEAKICAgICAgICAgZm9yIHRhZyBpbiByZXYudGFnczoKICAgICAgICAgICAgIGxvZy5kZWJ1ZygnICAgICVzJywgdGFnKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJzX2FsbCA9IGpzb24ubG9hZHMocmVwby5ydW5fY21kKFsnbm90ZXMnLCAnLS1yZWYnLCBub3Rlc19yZWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaG93JywgdGFnICsgJ14wJ10pKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYnNfYWxsID0ganNvbi5sb2FkcyhyZXBvLnJ1bl9jbWQoWydub3RlcycsICctLXJlZicsIG5vdGVzX3JlZiwgJ3Nob3cnLCB0YWcgKyAnXjAnXSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IEdpdEVycm9yOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Rlc19yZWYyOgorICAgICAgICAgICAgICAgICAgICAgICAgYnNfYWxsID0ganNvbi5sb2FkcyhyZXBvLnJ1bl9jbWQoWydub3RlcycsICctLXJlZicsIG5vdGVzX3JlZjIsICdzaG93JywgdGFnICsgJ14wJ10pKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKICAgICAgICAgICAgICAgICBsb2cud2FybmluZygiQnVpbGRzdGF0cyBub3QgZm91bmQgZm9yICVzIiwgdGFnKQogICAgICAgICAgICAgICAgIGJzX2FsbCA9IHt9CkBAIC01ODksOSArNTk0LDEyIEBACiAgICAgYnVpbGRzdGF0cyA9IE5vbmUKICAgICBpZiBhcmdzLmR1bXBfYnVpbGRzdGF0cyBvciBhcmdzLmh0bWw6CiAgICAgICAgIG91dGRpciA9ICdvZS1idWlsZC1wZXJmLWJ1aWxkc3RhdHMnIGlmIGFyZ3MuZHVtcF9idWlsZHN0YXRzIGVsc2UgTm9uZQotICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubWFjaGluZSkKLSAgICAgICAgYnVpbGRzdGF0cyA9IGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgW3Jldl9sLCByZXZfcl0sIG91dGRpcikKKyAgICAgICAgbm90ZXNfcmVmID0gJ2J1aWxkc3RhdHMve30ve30ve30nLmZvcm1hdChhcmdzLmhvc3RuYW1lLCBhcmdzLmJyYW5jaCwgYXJncy5tYWNoaW5lKQorICAgICAgICBub3Rlc19yZWYyID0gTm9uZQorICAgICAgICBpZiBhcmdzLmJyYW5jaDI6CisgICAgICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoMiwgYXJncy5tYWNoaW5lKQorICAgICAgICAgICAgbm90ZXNfcmVmMiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gsIGFyZ3MubWFjaGluZSkKKyAgICAgICAgYnVpbGRzdGF0cyA9IGdldF9idWlsZHN0YXRzKHJlcG8sIG5vdGVzX3JlZiwgbm90ZXNfcmVmMiwgW3Jldl9sLCByZXZfcl0sIG91dGRpcikKIAogICAgICMgUHJpbnQgcmVwb3J0CiAgICAgaWYgbm90IGFyZ3MuaHRtbDoKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXRlc3QgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi10ZXN0CmluZGV4IDBiMTNmMjQuLjAwZTAwYjQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXRlc3QKKysrIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdApAQCAtMSw0ICsxLDQgQEAKLSMhL3Vzci9iaW4vcHl0aG9uMworIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogIwogIyBCdWlsZCBwZXJmb3JtYW5jZSB0ZXN0IHNjcmlwdAogIwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCmluZGV4IDk2YmIwYzMuLmJhMGE5YjQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTI5LDIyICsyOSwxNSBAQAogICAgIHJldHVybiAxCiBmaQogCi1weV92MjdfY2hlY2s9JChweXRob24yIC1jICdpbXBvcnQgc3lzOyBwcmludCBzeXMudmVyc2lvbl9pbmZvID49ICgyLDcsMyknKQotaWYgWyAiJHB5X3YyN19jaGVjayIgIT0gIlRydWUiIF07IHRoZW4KLSAgICBlY2hvID4mMiAiT3BlbkVtYmVkZGVkIHJlcXVpcmVzICdweXRob24nIHRvIGJlIHB5dGhvbiB2MiAoPj0gMi43LjMpLCBub3QgcHl0aG9uIHYzLiIKLSAgICBlY2hvID4mMiAiUGxlYXNlIHVwZ3JhZGUgeW91ciBweXRob24gdjIuIgotZmkKLXVuc2V0IHB5X3YyN19jaGVjawotCiAjIFdlIHBvdGVudGlhbGx5IGhhdmUgY29kZSB0aGF0IGRvZXNuJ3QgcGFyc2UgY29ycmVjdGx5IHdpdGggb2xkZXIgdmVyc2lvbnMgCiAjIG9mIFB5dGhvbiwgYW5kIHJhdGhlciB0aGFuIGZpeGluZyB0aGF0IGFuZCBiZWluZyBldGVybmFsbHkgdmlnaWxhbnQgZm9yIAogIyBhbnkgb3RoZXIgbmV3IGZlYXR1cmUgdXNlLCBqdXN0IGNoZWNrIHRoZSB2ZXJzaW9uIGhlcmUuCi1weV92MzRfY2hlY2s9JChweXRob24zIC1jICdpbXBvcnQgc3lzOyBwcmludChzeXMudmVyc2lvbl9pbmZvID49ICgzLDQsMCkpJykKLWlmIFsgIiRweV92MzRfY2hlY2siICE9ICJUcnVlIiBdOyB0aGVuCi0gICAgZWNobyA+JjIgIkJpdEJha2UgcmVxdWlyZXMgUHl0aG9uIDMuNC4wIG9yIGxhdGVyIGFzICdweXRob24zJyIKK3B5X3YzNV9jaGVjaz0kKHB5dGhvbjMgLWMgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsNSwwKSknKQoraWYgWyAiJHB5X3YzNV9jaGVjayIgIT0gIlRydWUiIF07IHRoZW4KKyAgICBlY2hvID4mMiAiQml0QmFrZSByZXF1aXJlcyBQeXRob24gMy41LjAgb3IgbGF0ZXIgYXMgJ3B5dGhvbjMgKHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzIGNhbiBiZSB1c2VkIGlmIG5lZWRlZCknIgogICAgIHJldHVybiAxCiBmaQotdW5zZXQgcHlfdjM0X2NoZWNrCit1bnNldCBweV92MzVfY2hlY2sKIAogaWYgWyAteiAiJEJESVIiIF07IHRoZW4KICAgICBpZiBbIC16ICIkMSIgXTsgdGhlbgpAQCAtMTEzLDcgKzEwNiw4IEBACiBIVFRQU19QUk9YWSBodHRwc19wcm94eSBGVFBfUFJPWFkgZnRwX3Byb3h5IEZUUFNfUFJPWFkgZnRwc19wcm94eSBBTExfUFJPWFkgXAogYWxsX3Byb3h5IE5PX1BST1hZIG5vX3Byb3h5IFNTSF9BR0VOVF9QSUQgU1NIX0FVVEhfU09DSyBCQl9TUkNSRVZfUE9MSUNZIFwKIFNES01BQ0hJTkUgQkJfTlVNQkVSX1RIUkVBRFMgQkJfTk9fTkVUV09SSyBQQVJBTExFTF9NQUtFIEdJVF9QUk9YWV9DT01NQU5EIFwKLVNPQ0tTNV9QQVNTV0QgU09DS1M1X1VTRVIgU0NSRUVORElSIFNUQU1QU19ESVIgQkJQQVRIX0VYVFJBIEJCX1NFVFNDRU5FX0VORk9SQ0UiCitTT0NLUzVfUEFTU1dEIFNPQ0tTNV9VU0VSIFNDUkVFTkRJUiBTVEFNUFNfRElSIEJCUEFUSF9FWFRSQSBCQl9TRVRTQ0VORV9FTkZPUkNFIFwKK0JCX0xPR0NPTkZJRyIKIAogQkJfRU5WX0VYVFJBV0hJVEU9IiQoZWNobyAkQkJfRU5WX0VYVFJBV0hJVEUgJEJCX0VOVl9FWFRSQVdISVRFX09FIHwgdHIgJyAnICdcbicgfCBMQ19BTEw9QyBzb3J0IC0tdW5pcXVlIHwgdHIgJ1xuJyAnICcpIgogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3NlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZDIyMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3NlcgpAQCAtMCwwICsxLDI1MyBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zLCBzeXMsIGVudW0sIGFzdAorCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJworc3lzLnBhdGggPSBzeXMucGF0aCArIFtsaWJfcGF0aF0KKworaW1wb3J0IHNjcmlwdHBhdGgKK2JpdGJha2VwYXRoID0gc2NyaXB0cGF0aC5hZGRfYml0YmFrZV9saWJfcGF0aCgpCitpZiBub3QgYml0YmFrZXBhdGg6CisgICAgcHJpbnQoIlVuYWJsZSB0byBmaW5kIGJpdGJha2UgYnkgc2VhcmNoaW5nIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhpcyBzY3JpcHQgb3IgUEFUSCIpCisgICAgc3lzLmV4aXQoMSkKK2ltcG9ydCBiYgorCitpbXBvcnQgZ2kKK2dpLnJlcXVpcmVfdmVyc2lvbignR3RrJywgJzMuMCcpCitmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEd0aywgR2RrLCBHT2JqZWN0CisKK1JlY2lwZUNvbHVtbnMgPSBlbnVtLkludEVudW0oIlJlY2lwZUNvbHVtbnMiLCB7IlJlY2lwZSI6IDB9KQorUGFja2FnZUNvbHVtbnMgPSBlbnVtLkludEVudW0oIlBhY2thZ2VDb2x1bW5zIiwgeyJQYWNrYWdlIjogMCwgIlNpemUiOiAxfSkKK0ZpbGVDb2x1bW5zID0gZW51bS5JbnRFbnVtKCJGaWxlQ29sdW1ucyIsIHsiRmlsZW5hbWUiOiAwLCAiU2l6ZSI6IDF9KQorCitpbXBvcnQgdGltZQorZGVmIHRpbWVpdChmKToKKyAgICBkZWYgdGltZWQoKmFyZ3MsICoqa3cpOgorICAgICAgICB0cyA9IHRpbWUudGltZSgpCisgICAgICAgIHByaW50ICgiZnVuYzolciBjYWxsaW5nIiAlIGYuX19uYW1lX18pCisgICAgICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCisgICAgICAgIHRlID0gdGltZS50aW1lKCkKKyAgICAgICAgcHJpbnQgKCdmdW5jOiVyIGFyZ3M6WyVyLCAlcl0gdG9vazogJTIuNGYgc2VjJyAlIFwKKyAgICAgICAgICAoZi5fX25hbWVfXywgYXJncywga3csIHRlLXRzKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIHJldHVybiB0aW1lZAorCitkZWYgaHVtYW5fc2l6ZShuYnl0ZXMpOgorICAgIGltcG9ydCBtYXRoCisgICAgc3VmZml4ZXMgPSBbJ0InLCAna0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInXQorICAgIGh1bWFuID0gbmJ5dGVzCisgICAgcmFuayA9IDAKKyAgICBpZiBuYnl0ZXMgIT0gMDoKKyAgICAgICAgcmFuayA9IGludCgobWF0aC5sb2cxMChuYnl0ZXMpKSAvIDMpCisgICAgICAgIHJhbmsgPSBtaW4ocmFuaywgbGVuKHN1ZmZpeGVzKSAtIDEpCisgICAgICAgIGh1bWFuID0gbmJ5dGVzIC8gKDEwMDAuMCAqKiByYW5rKQorICAgIGYgPSAoJyUuMmYnICUgaHVtYW4pLnJzdHJpcCgnMCcpLnJzdHJpcCgnLicpCisgICAgcmV0dXJuICclcyAlcycgJSAoZiwgc3VmZml4ZXNbcmFua10pCisKK2RlZiBsb2FkKGZpbGVuYW1lLCBzdWZmaXg9Tm9uZSk6CisgICAgZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgorICAgIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgorCisgICAgcGFyc2VyID0gQ29uZmlnUGFyc2VyKCkKKyAgICBpZiBzdWZmaXg6CisgICAgICAgIHBhcnNlci5vcHRpb254Zm9ybSA9IGxhbWJkYSBvcHRpb246IG9wdGlvbi5yZXBsYWNlKCJfIiArIHN1ZmZpeCwgIiIpCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBsaW5lczoKKyAgICAgICAgbGluZXMgPSBjaGFpbigoIltmYWtlXSIsKSwgbGluZXMpCisgICAgICAgIHBhcnNlci5yZWFkX2ZpbGUobGluZXMpCisKKyAgICAjIFRPRE8gZXh0cmFjdCB0aGUgZGF0YSBhbmQgcHV0IGl0IGludG8gYSByZWFsIGRpY3Qgc28gd2UgY2FuIHRyYW5zZm9ybSBzb21lCisgICAgIyB2YWx1ZXMgdG8gaW50cz8KKyAgICByZXR1cm4gcGFyc2VyWyJmYWtlIl0KKworZGVmIGZpbmRfcGtnZGF0YSgpOgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJiaXRiYWtlIiwgIi1lIiksIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEtHREFUQV9ESVI9Iik6CisgICAgICAgICAgICByZXR1cm4gbGluZS5zcGxpdCgiPSIsIDEpWzFdLnN0cmlwKCJcJ1wiIikKKyAgICAjIFRPRE8gZXhjZXB0aW9uIG9yIHNvbWV0aGluZworICAgIHJldHVybiBOb25lCisKK2RlZiBwYWNrYWdlc19pbl9yZWNpcGUocGtnZGF0YSwgcmVjaXBlKToKKyAgICAiIiIKKyAgICBMb2FkIHRoZSByZWNpcGUgcGtnZGF0YSB0byBkZXRlcm1pbmUgdGhlIGxpc3Qgb2YgcnVudGltZSBwYWNrYWdlcy4KKyAgICAiIiIKKyAgICBkYXRhID0gbG9hZChvcy5wYXRoLmpvaW4ocGtnZGF0YSwgcmVjaXBlKSkKKyAgICBwYWNrYWdlcyA9IGRhdGFbIlBBQ0tBR0VTIl0uc3BsaXQoKQorICAgIHJldHVybiBwYWNrYWdlcworCitkZWYgbG9hZF9ydW50aW1lX3BhY2thZ2UocGtnZGF0YSwgcGFja2FnZSk6CisgICAgcmV0dXJuIGxvYWQob3MucGF0aC5qb2luKHBrZ2RhdGEsICJydW50aW1lIiwgcGFja2FnZSksIHN1ZmZpeD1wYWNrYWdlKQorCitkZWYgcmVjaXBlX2Zyb21fcGFja2FnZShwa2dkYXRhLCBwYWNrYWdlKToKKyAgICBkYXRhID0gbG9hZChvcy5wYXRoLmpvaW4ocGtnZGF0YSwgInJ1bnRpbWUiLCBwYWNrYWdlKSwgc3VmZml4PXBhY2thZ2UpCisgICAgcmV0dXJuIGRhdGFbIlBOIl0KKworZGVmIHN1bW1hcnkoZGF0YSk6CisgICAgcyA9ICIiCisgICAgcyArPSAiezBbUEtHXX0gezBbUEtHVl19LXswW1BLR1JdfVxuezBbTElDRU5TRV19XG57MFtTVU1NQVJZXX1cbiIuZm9ybWF0KGRhdGEpCisKKyAgICByZXR1cm4gcworCisKK2NsYXNzIFBrZ1VpKCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBrZ2RhdGEpOgorICAgICAgICBzZWxmLnBrZ2RhdGEgPSBwa2dkYXRhCisgICAgICAgIHNlbGYuY3VycmVudF9yZWNpcGUgPSBOb25lCisgICAgICAgIHNlbGYucmVjaXBlX2l0ZXJzID0ge30KKyAgICAgICAgc2VsZi5wYWNrYWdlX2l0ZXJzID0ge30KKworICAgICAgICBidWlsZGVyID0gR3RrLkJ1aWxkZXIoKQorICAgICAgICBidWlsZGVyLmFkZF9mcm9tX2ZpbGUob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJvZS1wa2dkYXRhLWJyb3dzZXIuZ2xhZGUiKSkKKworICAgICAgICBzZWxmLndpbmRvdyA9IGJ1aWxkZXIuZ2V0X29iamVjdCgid2luZG93IikKKyAgICAgICAgc2VsZi53aW5kb3cuY29ubmVjdCgiZGVsZXRlLWV2ZW50IiwgR3RrLm1haW5fcXVpdCkKKworICAgICAgICBzZWxmLnJlY2lwZV9zdG9yZSA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicmVjaXBlX3N0b3JlIikKKyAgICAgICAgc2VsZi5yZWNpcGVfdmlldyA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicmVjaXBlX3ZpZXciKQorICAgICAgICBzZWxmLnBhY2thZ2Vfc3RvcmUgPSBidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2Vfc3RvcmUiKQorICAgICAgICBzZWxmLnBhY2thZ2VfdmlldyA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV92aWV3IikKKworICAgICAgICAjIFNvbWVob3cgcmVzaXphYmxlIGRvZXMgbm90IGdldCBzZXQgdmlhIGJ1aWxkZXIgeG1sCisgICAgICAgIHBhY2thZ2VfbmFtZV9jb2x1bW4gPSBidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2VfbmFtZV9jb2x1bW4iKQorICAgICAgICBwYWNrYWdlX25hbWVfY29sdW1uLnNldF9yZXNpemFibGUoVHJ1ZSkKKyAgICAgICAgZmlsZV9uYW1lX2NvbHVtbiA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZV9uYW1lX2NvbHVtbiIpCisgICAgICAgIGZpbGVfbmFtZV9jb2x1bW4uc2V0X3Jlc2l6YWJsZShUcnVlKQorCisgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcuZ2V0X3NlbGVjdGlvbigpLmNvbm5lY3QoImNoYW5nZWQiLCBzZWxmLm9uX3JlY2lwZV9jaGFuZ2VkKQorICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5nZXRfc2VsZWN0aW9uKCkuY29ubmVjdCgiY2hhbmdlZCIsIHNlbGYub25fcGFja2FnZV9jaGFuZ2VkKQorCisgICAgICAgIHNlbGYucGFja2FnZV9zdG9yZS5zZXRfc29ydF9jb2x1bW5faWQoUGFja2FnZUNvbHVtbnMuUGFja2FnZSwgR3RrLlNvcnRUeXBlLkFTQ0VORElORykKKyAgICAgICAgYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3NpemVfY29sdW1uIikuc2V0X2NlbGxfZGF0YV9mdW5jKGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9zaXplX2NlbGwiKSwgbGFtYmRhIGNvbHVtbiwgY2VsbCwgbW9kZWwsIGl0ZXIsIGRhdGE6IGNlbGwuc2V0X3Byb3BlcnR5KCJ0ZXh0IiwgaHVtYW5fc2l6ZShtb2RlbFtpdGVyXVtQYWNrYWdlQ29sdW1ucy5TaXplXSkpKQorCisgICAgICAgIHNlbGYubGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoImxhYmVsMSIpCisgICAgICAgIHNlbGYuZGVwZW5kc19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZGVwZW5kc19sYWJlbCIpCisgICAgICAgIHNlbGYucmVjb21tZW5kc19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicmVjb21tZW5kc19sYWJlbCIpCisgICAgICAgIHNlbGYuc3VnZ2VzdHNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoInN1Z2dlc3RzX2xhYmVsIikKKyAgICAgICAgc2VsZi5wcm92aWRlc19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicHJvdmlkZXNfbGFiZWwiKQorCisgICAgICAgIHNlbGYuZGVwZW5kc19sYWJlbC5jb25uZWN0KCJhY3RpdmF0ZS1saW5rIiwgc2VsZi5vbl9saW5rX2FjdGl2YXRlKQorICAgICAgICBzZWxmLnJlY29tbWVuZHNfbGFiZWwuY29ubmVjdCgiYWN0aXZhdGUtbGluayIsIHNlbGYub25fbGlua19hY3RpdmF0ZSkKKyAgICAgICAgc2VsZi5zdWdnZXN0c19sYWJlbC5jb25uZWN0KCJhY3RpdmF0ZS1saW5rIiwgc2VsZi5vbl9saW5rX2FjdGl2YXRlKQorCisgICAgICAgIHNlbGYuZmlsZV9zdG9yZSA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZV9zdG9yZSIpCisgICAgICAgIHNlbGYuZmlsZV9zdG9yZS5zZXRfc29ydF9jb2x1bW5faWQoRmlsZUNvbHVtbnMuRmlsZW5hbWUsIEd0ay5Tb3J0VHlwZS5BU0NFTkRJTkcpCisgICAgICAgIGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZV9zaXplX2NvbHVtbiIpLnNldF9jZWxsX2RhdGFfZnVuYyhidWlsZGVyLmdldF9vYmplY3QoImZpbGVfc2l6ZV9jZWxsIiksIGxhbWJkYSBjb2x1bW4sIGNlbGwsIG1vZGVsLCBpdGVyLCBkYXRhOiBjZWxsLnNldF9wcm9wZXJ0eSgidGV4dCIsIGh1bWFuX3NpemUobW9kZWxbaXRlcl1bRmlsZUNvbHVtbnMuU2l6ZV0pKSkKKworICAgICAgICBzZWxmLmZpbGVzX3ZpZXcgPSBidWlsZGVyLmdldF9vYmplY3QoImZpbGVzX3Njcm9sbHZpZXciKQorICAgICAgICBzZWxmLmZpbGVzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlc19sYWJlbCIpCisKKyAgICAgICAgc2VsZi5sb2FkX3JlY2lwZXMoKQorCisgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcuc2V0X2N1cnNvcihHdGsuVHJlZVBhdGgubmV3X2ZpcnN0KCkpCisKKyAgICAgICAgc2VsZi53aW5kb3cuc2hvdygpCisKKyAgICBkZWYgb25fbGlua19hY3RpdmF0ZShzZWxmLCBsYWJlbCwgdXJsX3N0cmluZyk6CisgICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorICAgICAgICB1cmwgPSB1cmxwYXJzZSh1cmxfc3RyaW5nKQorICAgICAgICBpZiB1cmwuc2NoZW1lID09ICJwYWNrYWdlIjoKKyAgICAgICAgICAgIHBhY2thZ2UgPSB1cmwucGF0aAorICAgICAgICAgICAgcmVjaXBlID0gcmVjaXBlX2Zyb21fcGFja2FnZShzZWxmLnBrZ2RhdGEsIHBhY2thZ2UpCisKKyAgICAgICAgICAgIGl0ID0gc2VsZi5yZWNpcGVfaXRlcnNbcmVjaXBlXQorICAgICAgICAgICAgcGF0aCA9IHNlbGYucmVjaXBlX3N0b3JlLmdldF9wYXRoKGl0KQorICAgICAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5zZXRfY3Vyc29yKHBhdGgpCisgICAgICAgICAgICBzZWxmLnJlY2lwZV92aWV3LnNjcm9sbF90b19jZWxsKHBhdGgpCisKKyAgICAgICAgICAgIHNlbGYub25fcmVjaXBlX2NoYW5nZWQoc2VsZi5yZWNpcGVfdmlldy5nZXRfc2VsZWN0aW9uKCkpCisKKyAgICAgICAgICAgIGl0ID0gc2VsZi5wYWNrYWdlX2l0ZXJzW3BhY2thZ2VdCisgICAgICAgICAgICBwYXRoID0gc2VsZi5wYWNrYWdlX3N0b3JlLmdldF9wYXRoKGl0KQorICAgICAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuc2V0X2N1cnNvcihwYXRoKQorICAgICAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuc2Nyb2xsX3RvX2NlbGwocGF0aCkKKworICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIG9uX3JlY2lwZV9jaGFuZ2VkKHNlbGYsIHNlbGVjdGlvbik6CisgICAgICAgIHNlbGYucGFja2FnZV9zdG9yZS5jbGVhcigpCisgICAgICAgIHNlbGYucGFja2FnZV9pdGVycyA9IHt9CisKKyAgICAgICAgKG1vZGVsLCBpdCkgPSBzZWxlY3Rpb24uZ2V0X3NlbGVjdGVkKCkKKyAgICAgICAgaWYgbm90IGl0OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgcmVjaXBlID0gbW9kZWxbaXRdW1JlY2lwZUNvbHVtbnMuUmVjaXBlXQorICAgICAgICBwYWNrYWdlcyA9IHBhY2thZ2VzX2luX3JlY2lwZShzZWxmLnBrZ2RhdGEsIHJlY2lwZSkKKyAgICAgICAgZm9yIHBhY2thZ2UgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFRPRE8gYWxzbyBzaG93IFBLRyBhZnRlciBkZWJpYW4tcmVuYW1pbmc/CisgICAgICAgICAgICBkYXRhID0gbG9hZF9ydW50aW1lX3BhY2thZ2Uoc2VsZi5wa2dkYXRhLCBwYWNrYWdlKQorICAgICAgICAgICAgIyBUT0RPIHN0YXNoIGRhdGEgdG8gYXZvaWQgcmVhZGluZyBpbiBvbl9wYWNrYWdlX2NoYW5nZWQKKyAgICAgICAgICAgIHNlbGYucGFja2FnZV9pdGVyc1twYWNrYWdlXSA9IHNlbGYucGFja2FnZV9zdG9yZS5hcHBlbmQoW3BhY2thZ2UsIGludChkYXRhWyJQS0dTSVpFIl0pXSkKKworICAgICAgICBwYWNrYWdlID0gcmVjaXBlIGlmIHJlY2lwZSBpbiBwYWNrYWdlcyBlbHNlIHNvcnRlZChwYWNrYWdlcylbMF0KKyAgICAgICAgcGF0aCA9IHNlbGYucGFja2FnZV9zdG9yZS5nZXRfcGF0aChzZWxmLnBhY2thZ2VfaXRlcnNbcGFja2FnZV0pCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3LnNldF9jdXJzb3IocGF0aCkKKyAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuc2Nyb2xsX3RvX2NlbGwocGF0aCkKKworICAgIGRlZiBvbl9wYWNrYWdlX2NoYW5nZWQoc2VsZiwgc2VsZWN0aW9uKToKKyAgICAgICAgc2VsZi5sYWJlbC5zZXRfdGV4dCgiIikKKyAgICAgICAgc2VsZi5maWxlX3N0b3JlLmNsZWFyKCkKKyAgICAgICAgc2VsZi5kZXBlbmRzX2xhYmVsLmhpZGUoKQorICAgICAgICBzZWxmLnJlY29tbWVuZHNfbGFiZWwuaGlkZSgpCisgICAgICAgIHNlbGYuc3VnZ2VzdHNfbGFiZWwuaGlkZSgpCisgICAgICAgIHNlbGYucHJvdmlkZXNfbGFiZWwuaGlkZSgpCisgICAgICAgIHNlbGYuZmlsZXNfdmlldy5oaWRlKCkKKyAgICAgICAgc2VsZi5maWxlc19sYWJlbC5oaWRlKCkKKworICAgICAgICAobW9kZWwsIGl0KSA9IHNlbGVjdGlvbi5nZXRfc2VsZWN0ZWQoKQorICAgICAgICBpZiBpdCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgcGFja2FnZSA9IG1vZGVsW2l0XVtQYWNrYWdlQ29sdW1ucy5QYWNrYWdlXQorICAgICAgICBkYXRhID0gbG9hZF9ydW50aW1lX3BhY2thZ2Uoc2VsZi5wa2dkYXRhLCBwYWNrYWdlKQorCisgICAgICAgIHNlbGYubGFiZWwuc2V0X3RleHQoc3VtbWFyeShkYXRhKSkKKworICAgICAgICBmaWxlcyA9IGFzdC5saXRlcmFsX2V2YWwoZGF0YVsiRklMRVNfSU5GTyJdKQorICAgICAgICBpZiBmaWxlczoKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwuc2V0X3RleHQoInswfSBmaWxlcyB0YWtlIHsxfS4iLmZvcm1hdChsZW4oZmlsZXMpLCBodW1hbl9zaXplKGludChkYXRhWyJQS0dTSVpFIl0pKSkpCisgICAgICAgICAgICBzZWxmLmZpbGVzX3ZpZXcuc2hvdygpCisgICAgICAgICAgICBmb3IgZmlsZW5hbWUsIHNpemUgaW4gZmlsZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVfc3RvcmUuYXBwZW5kKFtmaWxlbmFtZSwgc2l6ZV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZpbGVzX3ZpZXcuaGlkZSgpCisgICAgICAgICAgICBzZWxmLmZpbGVzX2xhYmVsLnNldF90ZXh0KCJUaGlzIHBhY2thZ2UgaGFzIG5vIGZpbGVzLiIpCisgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwuc2hvdygpCisKKyAgICAgICAgZGVmIHVwZGF0ZV9kZXBzKGZpZWxkLCBwcmVmaXgsIGxhYmVsLCBjbGlja2FibGU9VHJ1ZSk6CisgICAgICAgICAgICBpZiBmaWVsZCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGwgPSBbXQorICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2ZXJzaW9uIGluIGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkYXRhW2ZpZWxkXSkuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgY2xpY2thYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQoIjxhIGhyZWY9J3BhY2thZ2U6ezB9Jz57MH08L2E+IHsxfSIuZm9ybWF0KG5hbWUsICIgIi5qb2luKHZlcnNpb24pKS5zdHJpcCgpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQoInswfSB7MX0iLmZvcm1hdChuYW1lLCAiICIuam9pbih2ZXJzaW9uKSkuc3RyaXAoKSkKKyAgICAgICAgICAgICAgICBsYWJlbC5zZXRfbWFya3VwKHByZWZpeCArICIsICIuam9pbihsKSkKKyAgICAgICAgICAgICAgICBsYWJlbC5zaG93KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGFiZWwuaGlkZSgpCisgICAgICAgIHVwZGF0ZV9kZXBzKCJSREVQRU5EUyIsICJEZXBlbmRzOiAiLCBzZWxmLmRlcGVuZHNfbGFiZWwpCisgICAgICAgIHVwZGF0ZV9kZXBzKCJSUkVDT01NRU5EUyIsICJSZWNvbW1lbmRzOiAiLCBzZWxmLnJlY29tbWVuZHNfbGFiZWwpCisgICAgICAgIHVwZGF0ZV9kZXBzKCJSU1VHR0VTVFMiLCAiU3VnZ2VzdHM6ICIsIHNlbGYuc3VnZ2VzdHNfbGFiZWwpCisgICAgICAgIHVwZGF0ZV9kZXBzKCJSUFJPVklERVMiLCAiUHJvdmlkZXM6ICIsIHNlbGYucHJvdmlkZXNfbGFiZWwsIGNsaWNrYWJsZT1GYWxzZSkKKworICAgIGRlZiBsb2FkX3JlY2lwZXMoc2VsZik6CisgICAgICAgIGZvciByZWNpcGUgaW4gc29ydGVkKG9zLmxpc3RkaXIocGtnZGF0YSkpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBrZ2RhdGEsIHJlY2lwZSkpOgorICAgICAgICAgICAgICAgIHNlbGYucmVjaXBlX2l0ZXJzW3JlY2lwZV0gPSBzZWxmLnJlY2lwZV9zdG9yZS5hcHBlbmQoW3JlY2lwZV0pCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0ncGtnZGF0YSBicm93c2VyJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcCcsICctLXBrZ2RhdGEnLCBoZWxwPSJPcHRpb25hbCBsb2NhdGlvbiBvZiBwa2dkYXRhIikKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgcGtnZGF0YSA9IGFyZ3MucGtnZGF0YSBpZiBhcmdzLnBrZ2RhdGEgZWxzZSBmaW5kX3BrZ2RhdGEoKQorICAgICMgVE9ETyBhc3NlcnQgcGtnZGF0YSBpcyBhIGRpcmVjdG9yeQorICAgIHdpbmRvdyA9IFBrZ1VpKHBrZ2RhdGEpCisgICAgR3RrLm1haW4oKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZSBiL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIuZ2xhZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwNmM4MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIuZ2xhZGUKQEAgLTAsMCArMSwzMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIEdlbmVyYXRlZCB3aXRoIGdsYWRlIDMuMTguMyAtLT4KKzxpbnRlcmZhY2U+CisgIDxyZXF1aXJlcyBsaWI9Imd0aysiIHZlcnNpb249IjMuMTIiLz4KKyAgPG9iamVjdCBjbGFzcz0iR3RrTGlzdFN0b3JlIiBpZD0iZmlsZV9zdG9yZSI+CisgICAgPGNvbHVtbnM+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIEZpbGVuYW1lIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFNpemUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9Imdsb25nIi8+CisgICAgPC9jb2x1bW5zPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBjbGFzcz0iR3RrTGlzdFN0b3JlIiBpZD0icGFja2FnZV9zdG9yZSI+CisgICAgPGNvbHVtbnM+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFBhY2thZ2UgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgU2l6ZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2xvbmciLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJwa2dkYXRhX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgTmFtZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBQYXRoIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgPC9jb2x1bW5zPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBjbGFzcz0iR3RrTGlzdFN0b3JlIiBpZD0icmVjaXBlX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgUmVjaXBlIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgPC9jb2x1bW5zPgorICA8L29iamVjdD4KKyAgPG9iamVjdCBjbGFzcz0iR3RrV2luZG93IiBpZD0id2luZG93Ij4KKyAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+UGFja2FnZSBEYXRhIEJyb3dzZXI8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkZWZhdWx0X3dpZHRoIj4xMjAwPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iZGVmYXVsdF9oZWlnaHQiPjkwMDwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9Imljb25fbmFtZSI+YWNjZXNzb3JpZXMtZGljdGlvbmFyeTwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9Imhhc19yZXNpemVfZ3JpcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgPGNoaWxkPgorICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQm94IiBpZD0iYm94MSI+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX2xlZnQiPjQ8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX3JpZ2h0Ij40PC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1hcmdpbl90b3AiPjQ8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX2JvdHRvbSI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+dmVydGljYWw8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+NDwvcHJvcGVydHk+CisgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDb21ib0JveCIgaWQ9InBrZ2RhdGFfY29tYm8iPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5wa2dkYXRhX3N0b3JlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJpZF9jb2x1bW4iPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iY2VsbHJlbmRlcmVydGV4dDUiLz4KKyAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgPGNoaWxkPgorICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1BhbmVkIiBpZD0icGFuZWQxIj4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj40MDA8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uX3NldCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1Njcm9sbGVkV2luZG93IiBpZD0ic2Nyb2xsZWR3aW5kb3cxIj4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNoYWRvd190eXBlIj5pbjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1pbl9jb250ZW50X3dpZHRoIj4xMDA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3IiBpZD0icmVjaXBlX3ZpZXciPgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPnJlY2lwZV9zdG9yZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzZWFyY2hfY29sdW1uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpeGVkX2hlaWdodF9tb2RlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNob3dfZXhwYW5kZXJzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZCBpbnRlcm5hbC1jaGlsZD0ic2VsZWN0aW9uIj4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlU2VsZWN0aW9uIiBpZD0idHJlZXZpZXctc2VsZWN0aW9uMSIvPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXdDb2x1bW4iIGlkPSJ0cmVldmlld2NvbHVtbjEiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemluZyI+Zml4ZWQ8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+UmVjaXBlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQxIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MDwvYXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrUGFuZWQiIGlkPSJwYW5lZDIiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjQwMDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uX3NldCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrU2Nyb2xsZWRXaW5kb3ciIGlkPSJzY3JvbGxlZHdpbmRvdzIiPgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPmluPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1pbl9jb250ZW50X3dpZHRoIj4xMDA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXciIGlkPSJwYWNrYWdlX3ZpZXciPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPnBhY2thZ2Vfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNlYXJjaF9jb2x1bW4iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNob3dfZXhwYW5kZXJzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQgaW50ZXJuYWwtY2hpbGQ9InNlbGVjdGlvbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVTZWxlY3Rpb24iIGlkPSJ0cmVldmlldy1zZWxlY3Rpb24yIi8+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9InBhY2thZ2VfbmFtZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemFibGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXppbmciPmF1dG9zaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5QYWNrYWdlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJjZWxscmVuZGVyZXJ0ZXh0MiIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MDwvYXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXdDb2x1bW4iIGlkPSJwYWNrYWdlX3NpemVfY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXphYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6aW5nIj5hdXRvc2l6ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+U2l6ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfY29sdW1uX2lkIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0icGFja2FnZV9zaXplX2NlbGwiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXplIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQm94IiBpZD0iYm94MiI+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX2xlZnQiPjQ8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ib3JpZW50YXRpb24iPnZlcnRpY2FsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjQ8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJsYWJlbDEiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0iZGVwZW5kc19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPmRlcGVuZHNfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRyYWNrX3Zpc2l0ZWRfbGlua3MiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJyZWNvbW1lbmRzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+cmVjc19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9InN1Z2dlc3RzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+c3VnZ2VzdHNfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRyYWNrX3Zpc2l0ZWRfbGlua3MiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJwcm92aWRlc19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPnByb3ZpZGVzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0cmFja192aXNpdGVkX2xpbmtzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjQ8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0iZmlsZXNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5maWxlc19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZWxsaXBzaXplIj5lbmQ8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj41PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIgaWQ9ImZpbGVzX3Njcm9sbHZpZXciPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPmluPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXciIGlkPSJmaWxlc192aWV3Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVsIj5maWxlX3N0b3JlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icnVsZXNfaGludCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNlYXJjaF9jb2x1bW4iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaG93X2V4cGFuZGVycyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZCBpbnRlcm5hbC1jaGlsZD0ic2VsZWN0aW9uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVTZWxlY3Rpb24iIGlkPSJ0cmVldmlldy1zZWxlY3Rpb24zIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9ImZpbGVfbmFtZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5OYW1lPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfY29sdW1uX2lkIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJjZWxscmVuZGVyZXJ0ZXh0MyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYmFja2dyb3VuZF9yZ2JhIj5yZ2JhKDAsMCwwLDApPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MDwvYXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXdDb2x1bW4iIGlkPSJmaWxlX3NpemVfY29sdW1uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRpdGxlIiB0cmFuc2xhdGFibGU9InllcyI+U2l6ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2luZGljYXRvciI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2NvbHVtbl9pZCI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iZmlsZV9zaXplX2NlbGwiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCI+MTwvYXR0cmlidXRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj42PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVzaXplIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgorICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgPC9jaGlsZD4KKyAgICAgIDwvb2JqZWN0PgorICAgIDwvY2hpbGQ+CisgIDwvb2JqZWN0PgorPC9pbnRlcmZhY2U+CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZSBiL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCmluZGV4IGJlYTVkNjkuLjRlNjNlNjkgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgZWNobyAnT3BlbkVtYmVkZGVkIHJ1bi1uYXRpdmUgLSBydW5zIG5hdGl2ZSB0b29scycKICAgICBlY2hvICcnCiAgICAgZWNobyAnYXJndW1lbnRzOicKLSAgICBlY2hvICcgIG5hdGl2ZS1yZWNpcGUgICAgICAgVGhlIHJlY2lwZSB3aGljaCBwcm92b2lkZXMgdG9vbCcKKyAgICBlY2hvICcgIG5hdGl2ZS1yZWNpcGUgICAgICAgVGhlIHJlY2lwZSB3aGljaCBwcm92aWRlcyB0b29sJwogICAgIGVjaG8gJyAgdG9vbCAgICAgICAgICAgICAgICBOYXRpdmUgdG9vbCB0byBydW4nCiAgICAgZWNobyAnJwogICAgIGV4aXQgMgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2Rlc2t0b3BfZGF0YWJhc2UgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZGVza3RvcF9kYXRhYmFzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTAzYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2Rlc2t0b3BfZGF0YWJhc2UKQEAgLTAsMCArMSw4IEBACisjIS9iaW4vc2gKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworIyBQb3N0LWluc3RhbGwgaW50ZXJjZXB0IGZvciBtaW1lLXhkZy5iYmNsYXNzCisKK3VwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlICREJHtkZXNrdG9wX2Rpcn0KKwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2ZvbnRfY2FjaGUgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQppbmRleCAzMDUzYzcwLi40NmJkYjhjIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZQpAQCAtNiw0ICs2LDYgQEAKIHNldCAtZQogCiBQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgLUUgJHtmb250Y29uZmlnY2FjaGVlbnZ9ICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1mYy1jYWNoZSAtLXN5c3Jvb3Q9JEQgLS1zeXN0ZW0tb25seSAke2ZvbnRjb25maWdjYWNoZXBhcmFtc30KKwogY2hvd24gLVIgcm9vdDpyb290ICREJHtmb250Y29uZmlnY2FjaGVkaXJ9CitmaW5kICREIC10eXBlIGYgLW5hbWUgLnV1aWQgLWV4ZWMgY2hvd24gcm9vdDpyb290ICd7fScgKwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX21pbWVfZGF0YWJhc2UgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfbWltZV9kYXRhYmFzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODJkMWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX21pbWVfZGF0YWJhc2UKQEAgLTAsMCArMSw5IEBACisjIS9iaW4vc2gKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworIyBQb3N0LWluc3RhbGwgaW50ZXJjZXB0IGZvciBtaW1lLmJiY2xhc3MKKworZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgordXBkYXRlLW1pbWUtZGF0YWJhc2UgJEQke21pbWVkaXJ9CisKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCmluZGV4IGM0ZmIyYmYuLjEwMmU5OWIgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYgpAQCAtNSw1ICs1LDE3IEBACiAKIHNldCAtZQogCi1QU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fXVkZXZhZG0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKLWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorY2FzZSAiJHtQUkVGRVJSRURfUFJPVklERVJfdWRldn0iIGluCisJc3lzdGVtZCkKKwkJVURFVl9FWFRSQV9BUkdTPSItLXVzciIKKwkJVURFVkxJQkRJUj0iJHtyb290bGliZXhlY2Rpcn0iCisJCTs7CisKKwkqKQorCQlVREVWX0VYVFJBX0FSR1M9IiIKKwkJVURFVkxJQkRJUj0iJHtzeXNjb25mZGlyfSIKKwkJOzsKK2VzYWMKKworUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH11ZGV2YWRtIGh3ZGIgLS11cGRhdGUgLS1yb290ICREICR7VURFVl9FWFRSQV9BUkdTfQorY2hvd24gcm9vdDpyb290ICREJHtVREVWTElCRElSfS91ZGV2L2h3ZGIuYmluCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvZHJhdy5weSBiL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9kcmF3LnB5CmluZGV4IGFkZDVjNTMuLjUzMzI0YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9kcmF3LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9kcmF3LnB5CkBAIC0zMDgsNyArMzA4LDcgQEAKIHByb2NfaCA9IDE2ICMgdGhlIGhlaWdodCBvZiBhIHByb2Nlc3MKIGxlZ19zID0gMTAKIE1JTl9JTUdfVyA9IDgwMAotQ1VNTF9IRUlHSFQgPSAyMDAwICMgSW5jcmVhc2VkIHZhbHVlIHRvIGFjY29tb2RhdGUgQ1BVIGFuZCBJL08gR3JhcGhzCitDVU1MX0hFSUdIVCA9IDIwMDAgIyBJbmNyZWFzZWQgdmFsdWUgdG8gYWNjb21tb2RhdGUgQ1BVIGFuZCBJL08gR3JhcGhzCiBPUFRJT05TID0gTm9uZQogCiBkZWYgZXh0ZW50cyhvcHRpb25zLCB4c2NhbGUsIHRyYWNlKToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9wYXJzaW5nLnB5IGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL3BhcnNpbmcucHkKaW5kZXggZWYyZDNkMy4uYjQyZGFjNiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL3BhcnNpbmcucHkKKysrIGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL3BhcnNpbmcucHkKQEAgLTE4LDcgKzE4LDcgQEAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRhcmZpbGUKLWZyb20gdGltZSBpbXBvcnQgY2xvY2sKK2ltcG9ydCB0aW1lCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQogCkBAIC03MjMsNyArNzIzLDcgQEAKIAogZGVmIF9kb19wYXJzZSh3cml0ZXIsIHN0YXRlLCBmaWxlbmFtZSwgZmlsZSk6CiAgICAgd3JpdGVyLmluZm8oInBhcnNpbmcgJyVzJyIgJSBmaWxlbmFtZSkKLSAgICB0MSA9IGNsb2NrKCkKKyAgICB0MSA9IHRpbWUucHJvY2Vzc190aW1lKCkKICAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICBpZiBuYW1lID09ICJwcm9jX2Rpc2tzdGF0cy5sb2ciOgogICAgICAgICBzdGF0ZS5kaXNrX3N0YXRzID0gX3BhcnNlX3Byb2NfZGlza19zdGF0X2xvZyhmaWxlKQpAQCAtNzQzLDcgKzc0Myw3IEBACiAgICAgICAgIHN0YXRlLm1vbml0b3JfZGlzayA9IF9wYXJzZV9tb25pdG9yX2Rpc2tfbG9nKGZpbGUpCiAgICAgZWxpZiBub3QgZmlsZW5hbWUuZW5kc3dpdGgoJy5sb2cnKToKICAgICAgICAgX3BhcnNlX2JpdGJha2VfYnVpbGRzdGF0cyh3cml0ZXIsIHN0YXRlLCBmaWxlbmFtZSwgZmlsZSkKLSAgICB0MiA9IGNsb2NrKCkKKyAgICB0MiA9IHRpbWUucHJvY2Vzc190aW1lKCkKICAgICB3cml0ZXIuaW5mbygiICAlcyBzZWNvbmRzIiAlIHN0cih0Mi10MSkpCiAgICAgcmV0dXJuIHN0YXRlCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ycG0yY3Bpby5zaCBiL3Bva3kvc2NyaXB0cy9ycG0yY3Bpby5zaAppbmRleCA4NzZjNTNjLi43Y2Q3NzFiIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnBtMmNwaW8uc2gKKysrIGIvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoCkBAIC0yMiw3ICsyMiw4IEBACiAKIAlpPTAKIAl3aGlsZSBbICRpIC1sdCA4IF07IGRvCi0JCWI9IiQoX2RkICQoKCRvZmZzZXQgKyAkaSkpIGJzPTEgY291bnQ9MSkiCisgCQliPSQoX2RkICQoKCRvZmZzZXQgKyAkaSkpIGJzPTEgY291bnQ9MTsgZWNobyBYKQorIAkJYj0ke2IlWH0KIAkJWyAteiAiJGIiIF0gJiYKIAkJCWI9IjAiIHx8CiAJCQliPSIkKGV4ZWMgcHJpbnRmICcldVxuJyAiJyRiIikiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcnVucWVtdSBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CmluZGV4IDVjNTZjM2YuLjMxMGQ3OWYgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CkBAIC0xMzUsNiArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICdERVBMT1lfRElSX0lNQUdFJywKICAgICAgICAgICAgICAgICAgICAgICAgICdPRV9UTVBESVInLAogICAgICAgICAgICAgICAgICAgICAgICAgJ09FQ09SRV9OQVRJVkVfU1lTUk9PVCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnTVVMVElDT05GSUcnLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogCiAgICAgICAgIHNlbGYucWVtdV9vcHQgPSAnJwpAQCAtMTY0LDYgKzE2NSw3IEBACiAgICAgICAgIHNlbGYua3ZtX2VuYWJsZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnZob3N0X2VuYWJsZWQgPSBGYWxzZQogICAgICAgICBzZWxmLnNsaXJwX2VuYWJsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLm5ldF9icmlkZ2UgPSBOb25lCiAgICAgICAgIHNlbGYubmZzX2luc3RhbmNlID0gMAogICAgICAgICBzZWxmLm5mc19ydW5uaW5nID0gRmFsc2UKICAgICAgICAgc2VsZi5zZXJpYWxjb25zb2xlID0gRmFsc2UKQEAgLTE4Myw2ICsxODUsOCBAQAogICAgICAgICBzZWxmLnZtdHlwZXMgPSAoJ2hkZGltZycsICdpc28nKQogICAgICAgICBzZWxmLmZzaW5mbyA9IHt9CiAgICAgICAgIHNlbGYubmV0d29ya19kZXZpY2UgPSAiLWRldmljZSBlMTAwMCxuZXRkZXY9bmV0MCxtYWM9QE1BQ0AiCisgICAgICAgIHNlbGYuY21kbGluZV9pcF9zbGlycCA9ICJpcD1kaGNwIgorICAgICAgICBzZWxmLmNtZGxpbmVfaXBfdGFwID0gImlwPTE5Mi4xNjguNy5AQ0xJRU5UQDo6MTkyLjE2OC43LkBHQVRFV0FZQDoyNTUuMjU1LjI1NS4wIgogICAgICAgICAjIFVzZSBkaWZmZXJlbnQgbWFjIHNlY3Rpb24gZm9yIHRhcCBhbmQgc2xpcnAgdG8gYXZvaWQKICAgICAgICAgIyBjb25mbGljdHMsIGUuZy4sIHdoZW4gb25lIGlzIHJ1bm5pbmcgd2l0aCB0YXAsIHRoZSBvdGhlciBpcwogICAgICAgICAjIHJ1bm5pbmcgd2l0aCBzbGlycC4KQEAgLTQwMSw5ICs0MDUsNyBAQAogICAgICAgICAgICAgc2VsZi5zZXQoIk1BQ0hJTkUiLCBhcmcpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBjbWQgPSAnTUFDSElORT0lcyBiaXRiYWtlIC1lJyAlIGFyZwotICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCi0gICAgICAgIHNlbGYuYml0YmFrZV9lID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzZWxmLnJ1bl9iaXRiYWtlX2VudihhcmcpCiAgICAgICAgICMgYml0YmFrZSAtZSBkb2Vzbid0IHJlcG9ydCBpbnZhbGlkIE1BQ0hJTkUgYXMgYW4gZXJyb3IsIHNvCiAgICAgICAgICMgbGV0J3MgY2hlY2sgREVQTE9ZX0RJUl9JTUFHRSB0byBtYWtlIHN1cmUgdGhhdCBpdCBpcyBhIHZhbGlkCiAgICAgICAgICMgTUFDSElORS4KQEAgLTQ4Niw2ICs0ODgsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYudmhvc3RfZW5hYmxlZCA9IFRydWUKICAgICAgICAgICAgIGVsaWYgYXJnID09ICdzbGlycCc6CiAgICAgICAgICAgICAgICAgc2VsZi5zbGlycF9lbmFibGVkID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBhcmcuc3RhcnRzd2l0aCgnYnJpZGdlPScpOgorICAgICAgICAgICAgICAgIHNlbGYubmV0X2JyaWRnZSA9ICclcycgJSBhcmdbbGVuKCdicmlkZ2U9Jyk6XQogICAgICAgICAgICAgZWxpZiBhcmcgPT0gJ3NuYXBzaG90JzoKICAgICAgICAgICAgICAgICBzZWxmLnNuYXBzaG90ID0gVHJ1ZQogICAgICAgICAgICAgZWxpZiBhcmcgPT0gJ3B1YmxpY3ZuYyc6CkBAIC04MDMsNyArODA3LDcgQEAKICAgICBkZWYgY2hlY2tfYW5kX3NldChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgY29uZmlncyBzYW5pdHkgYW5kIHNldCB3aGVuIG5lZWRlZCIiIgogICAgICAgICBzZWxmLnZhbGlkYXRlX3BhdGhzKCkKLSAgICAgICAgaWYgbm90IHNlbGYuc2xpcnBfZW5hYmxlZDoKKyAgICAgICAgaWYgbm90IHNlbGYuc2xpcnBfZW5hYmxlZCBhbmQgbm90IHNlbGYubmV0X2JyaWRnZToKICAgICAgICAgICAgIGNoZWNrX3R1bigpCiAgICAgICAgICMgQ2hlY2sgYXVkaW8KICAgICAgICAgaWYgc2VsZi5hdWRpb19lbmFibGVkOgpAQCAtOTMzLDI5ICs5MzcsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoJ1NUQUdJTkdfQklORElSX05BVElWRScsICclcy91c3IvYmluJyAlIHNlbGYuZ2V0KCdTVEFHSU5HX0RJUl9OQVRJVkUnKSkKIAogICAgIGRlZiBwcmludF9jb25maWcoc2VsZik6Ci0gICAgICAgIGxvZ2dlci5pbmZvKCdDb250aW51aW5nIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOlxuJykKKyAgICAgICAgbG9nb3V0cHV0ID0gWydDb250aW51aW5nIHdpdGggdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOiddCiAgICAgICAgIGlmIG5vdCBzZWxmLmZzdHlwZSBpbiBzZWxmLnZtdHlwZXM6Ci0gICAgICAgICAgICBwcmludCgnS0VSTkVMOiBbJXNdJyAlIHNlbGYua2VybmVsKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnS0VSTkVMOiBbJXNdJyAlIHNlbGYua2VybmVsKQogICAgICAgICAgICAgaWYgc2VsZi5iaW9zOgotICAgICAgICAgICAgICAgIHByaW50KCdCSU9TOiBbJXNdJyAlIHNlbGYuYmlvcykKKyAgICAgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdCSU9TOiBbJXNdJyAlIHNlbGYuYmlvcykKICAgICAgICAgICAgIGlmIHNlbGYuZHRiOgotICAgICAgICAgICAgICAgIHByaW50KCdEVEI6IFslc10nICUgc2VsZi5kdGIpCi0gICAgICAgIHByaW50KCdNQUNISU5FOiBbJXNdJyAlIHNlbGYuZ2V0KCdNQUNISU5FJykpCisgICAgICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnRFRCOiBbJXNdJyAlIHNlbGYuZHRiKQorICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdNQUNISU5FOiBbJXNdJyAlIHNlbGYuZ2V0KCdNQUNISU5FJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZzdHlwZV9mbGFncyA9ICcgKCcgKyAnLCAnLmpvaW4oc2VsZi5mc2luZm9bc2VsZi5mc3R5cGVdKSArICcpJwogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBmc3R5cGVfZmxhZ3MgPSAnJwotICAgICAgICBwcmludCgnRlNUWVBFOiBbJXMlc10nICUgKHNlbGYuZnN0eXBlLCBmc3R5cGVfZmxhZ3MpKQorICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdGU1RZUEU6IFslcyVzXScgJSAoc2VsZi5mc3R5cGUsIGZzdHlwZV9mbGFncykpCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlICA9PSAnbmZzJzoKLSAgICAgICAgICAgIHByaW50KCdORlNfRElSOiBbJXNdJyAlIHNlbGYucm9vdGZzKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnTkZTX0RJUjogWyVzXScgJSBzZWxmLnJvb3RmcykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdST09URlM6IFslc10nICUgc2VsZi5yb290ZnMpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdST09URlM6IFslc10nICUgc2VsZi5yb290ZnMpCiAgICAgICAgIGlmIHNlbGYub3ZtZl9iaW9zOgotICAgICAgICAgICAgcHJpbnQoJ09WTUY6ICVzJyAlIHNlbGYub3ZtZl9iaW9zKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnT1ZNRjogJXMnICUgc2VsZi5vdm1mX2Jpb3MpCiAgICAgICAgIGlmIChzZWxmLm92bWZfc2VjYm9vdF9wa2tlazEpOgotICAgICAgICAgICAgcHJpbnQoJ1NFQ0JPT1QgUEtLRUsxOiBbJXMuLi5dJyAlIHNlbGYub3ZtZl9zZWNib290X3Bra2VrMVswOjEwMF0pCi0gICAgICAgIHByaW50KCdDT05GRklMRTogWyVzXScgJSBzZWxmLnFlbXVib290KQotICAgICAgICBwcmludCgnJykKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ1NFQ0JPT1QgUEtLRUsxOiBbJXMuLi5dJyAlIHNlbGYub3ZtZl9zZWNib290X3Bra2VrMVswOjEwMF0pCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0NPTkZGSUxFOiBbJXNdJyAlIHNlbGYucWVtdWJvb3QpCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJycpCisgICAgICAgIGxvZ2dlci5pbmZvKCdcbicuam9pbihsb2dvdXRwdXQpKQogCiAgICAgZGVmIHNldHVwX25mcyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYubmZzX3NlcnZlcjoKQEAgLTk4NSw3ICs5OTAsNyBAQAogICAgICAgICAgICAgIyBVc2UgJyVzJyBzaW5jZSB0aGV5IGFyZSBpbnRlZ2VycwogICAgICAgICAgICAgb3MucHV0ZW52KGssICclcycgJSB2KQogCi0gICAgICAgIHNlbGYudW5mc19vcHRzPSJuZnN2ZXJzPTMscG9ydD0lcyx1ZHAsbW91bnRwb3J0PSVzIiAlIChuZnNkX3BvcnQsIG1vdW50ZF9wb3J0KQorICAgICAgICBzZWxmLnVuZnNfb3B0cz0ibmZzdmVycz0zLHBvcnQ9JXMsdGNwLG1vdW50cG9ydD0lcyIgJSAobmZzZF9wb3J0LCBtb3VudGRfcG9ydCkKIAogICAgICAgICAjIEV4dHJhY3QgLnRhci5iejIgb3IgLnRhci5ieiBpZiBubyBuZnMgZGlyCiAgICAgICAgIGlmIG5vdCAoc2VsZi5yb290ZnMgYW5kIG9zLnBhdGguaXNkaXIoc2VsZi5yb290ZnMpKToKQEAgLTEwMjAsMTIgKzEwMjUsMTggQEAKIAogICAgICAgICBzZWxmLm5mc19ydW5uaW5nID0gVHJ1ZQogCisgICAgZGVmIHNldHVwX25ldF9icmlkZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuc2V0KCdORVRXT1JLX0NNRCcsICctbmV0ZGV2IGJyaWRnZSxicj0lcyxpZD1uZXQwLGhlbHBlcj0lcyAtZGV2aWNlIHZpcnRpby1uZXQtcGNpLG5ldGRldj1uZXQwICcgJSAoCisgICAgICAgICAgICBzZWxmLm5ldF9icmlkZ2UsIG9zLnBhdGguam9pbihzZWxmLmJpbmRpcl9uYXRpdmUsICdxZW11LW9lLWJyaWRnZS1oZWxwZXInKSkpCisKICAgICBkZWYgc2V0dXBfc2xpcnAoc2VsZik6CiAgICAgICAgICIiIlNldHVwIHVzZXIgbmV0d29ya2luZyIiIgogCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgc2VsZi5zZXR1cF9uZnMoKQotICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSAnIGlwPWRoY3AnCisgICAgICAgIG5ldGNvbmYgPSAiICIgKyBzZWxmLmNtZGxpbmVfaXBfc2xpcnAKKyAgICAgICAgbG9nZ2VyLmluZm8oIk5ldHdvcmsgY29uZmlndXJhdGlvbjolcyIsIG5ldGNvbmYpCisgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9IG5ldGNvbmYKICAgICAgICAgIyBQb3J0IG1hcHBpbmcKICAgICAgICAgaG9zdGZ3ZCA9ICIsaG9zdGZ3ZD10Y3A6OjIyMjItOjIyLGhvc3Rmd2Q9dGNwOjoyMzIzLToyMyIKICAgICAgICAgcWJfc2xpcnBfb3B0X2RlZmF1bHQgPSAiLW5ldGRldiB1c2VyLGlkPW5ldDAlcyx0ZnRwPSVzIiAlIChob3N0ZndkLCBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpKQpAQCAtMTEyMCw3ICsxMTMxLDExIEBACiAgICAgICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQogICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNldHRpbmcgdXAgdGFwIGludGVyZmFjZSB1bmRlciBzdWRvIikKICAgICAgICAgICAgIGNtZCA9ICgnc3VkbycsIHNlbGYucWVtdWlmdXAsIHN0cih1aWQpLCBzdHIoZ2lkKSwgc2VsZi5iaW5kaXJfbmF0aXZlKQotICAgICAgICAgICAgdGFwID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRhcCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignU2V0dGluZyB1cCB0YXAgZGV2aWNlIGZhaWxlZDpcbiVzXG5SdW4gcnVucWVtdS1nZW4tdGFwZGV2cyB0byBtYW51YWxseSBjcmVhdGUgb25lLicgJSBzdHIoZSkpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKICAgICAgICAgICAgIGxvY2tmaWxlID0gb3MucGF0aC5qb2luKGxvY2tkaXIsIHRhcCkKICAgICAgICAgICAgIHNlbGYudGFwbG9jayA9IGxvY2tmaWxlICsgJy5sb2NrJwogICAgICAgICAgICAgc2VsZi5hY3F1aXJlX3RhcGxvY2soKQpAQCAtMTEyOSwxNiArMTE0NCwxOCBAQAogCiAgICAgICAgIGlmIG5vdCB0YXA6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBzZXR1cCB0YXAgZGV2aWNlLiBSdW4gcnVucWVtdS1nZW4tdGFwZGV2cyB0byBtYW51YWxseSBjcmVhdGUuIikKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBzZWxmLnRhcCA9IHRhcAogICAgICAgICB0YXBudW0gPSBpbnQodGFwWzM6XSkKICAgICAgICAgZ2F0ZXdheSA9IHRhcG51bSAqIDIgKyAxCiAgICAgICAgIGNsaWVudCA9IGdhdGV3YXkgKyAxCiAgICAgICAgIGlmIHNlbGYuZnN0eXBlID09ICduZnMnOgogICAgICAgICAgICAgc2VsZi5zZXR1cF9uZnMoKQotICAgICAgICBuZXRjb25mID0gIjE5Mi4xNjguNy4lczo6MTkyLjE2OC43LiVzOjI1NS4yNTUuMjU1LjAiICUgKGNsaWVudCwgZ2F0ZXdheSkKLSAgICAgICAgbG9nZ2VyLmluZm8oIk5ldHdvcmsgY29uZmlndXJhdGlvbjogJXMiLCBuZXRjb25mKQotICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSAiIGlwPSVzIiAlIG5ldGNvbmYKKyAgICAgICAgbmV0Y29uZiA9ICIgIiArIHNlbGYuY21kbGluZV9pcF90YXAKKyAgICAgICAgbmV0Y29uZiA9IG5ldGNvbmYucmVwbGFjZSgnQENMSUVOVEAnLCBzdHIoY2xpZW50KSkKKyAgICAgICAgbmV0Y29uZiA9IG5ldGNvbmYucmVwbGFjZSgnQEdBVEVXQVlAJywgc3RyKGdhdGV3YXkpKQorICAgICAgICBsb2dnZXIuaW5mbygiTmV0d29yayBjb25maWd1cmF0aW9uOiVzIiwgbmV0Y29uZikKKyAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gbmV0Y29uZgogICAgICAgICBtYWMgPSAiJXMlMDJ4IiAlIChzZWxmLm1hY190YXAsIGNsaWVudCkKICAgICAgICAgcWJfdGFwX29wdCA9IHNlbGYuZ2V0KCdRQl9UQVBfT1BUJykKICAgICAgICAgaWYgcWJfdGFwX29wdDoKQEAgLTExNTcsOSArMTE3NCwxMyBAQAogICAgICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCk6CiAgICAgICAgICAgICBzZWxmLnNhdmVkX3N0dHkgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoInN0dHkiLCAiLWciKSkuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkKICAgICAgICAgc2VsZi5uZXR3b3JrX2RldmljZSA9IHNlbGYuZ2V0KCdRQl9ORVRXT1JLX0RFVklDRScpIG9yIHNlbGYubmV0d29ya19kZXZpY2UKLSAgICAgICAgaWYgc2VsZi5zbGlycF9lbmFibGVkOgorICAgICAgICBpZiBzZWxmLm5ldF9icmlkZ2U6CisgICAgICAgICAgICBzZWxmLnNldHVwX25ldF9icmlkZ2UoKQorICAgICAgICBlbGlmIHNlbGYuc2xpcnBfZW5hYmxlZDoKKyAgICAgICAgICAgIHNlbGYuY21kbGluZV9pcF9zbGlycCA9IHNlbGYuZ2V0KCdRQl9DTURMSU5FX0lQX1NMSVJQJykgb3Igc2VsZi5jbWRsaW5lX2lwX3NsaXJwCiAgICAgICAgICAgICBzZWxmLnNldHVwX3NsaXJwKCkKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY21kbGluZV9pcF90YXAgPSBzZWxmLmdldCgnUUJfQ01ETElORV9JUF9UQVAnKSBvciBzZWxmLmNtZGxpbmVfaXBfdGFwCiAgICAgICAgICAgICBzZWxmLnNldHVwX3RhcCgpCiAKICAgICBkZWYgc2V0dXBfcm9vdGZzKHNlbGYpOgpAQCAtMTE3NSw2ICsxMTk2LDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnJvb3Rmc19vcHRpb25zID0gJy1kcml2ZSBmaWxlPSVzLGlmPXZpcnRpbyxmb3JtYXQ9JXMnICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0KQogCisgICAgICAgIHFiX3Jvb3Rmc19leHRyYV9vcHQgPSBzZWxmLmdldCgiUUJfUk9PVEZTX0VYVFJBX09QVCIpCisgICAgICAgIGlmIHFiX3Jvb3Rmc19leHRyYV9vcHQgYW5kIG5vdCBxYl9yb290ZnNfZXh0cmFfb3B0LnN0YXJ0c3dpdGgoIiwiKToKKyAgICAgICAgICAgIHFiX3Jvb3Rmc19leHRyYV9vcHQgPSAiLCIgKyBxYl9yb290ZnNfZXh0cmFfb3B0CisKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgaW4gKCdjcGlvLmd6JywgJ2NwaW8nKToKICAgICAgICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmUgPSAncm9vdD0vZGV2L3JhbTAgcncgZGVidWdzaGVsbCcKICAgICAgICAgICAgIHNlbGYucm9vdGZzX29wdGlvbnMgPSAnLWluaXRyZCAlcycgJSBzZWxmLnJvb3RmcwpAQCAtMTE4NywxMSArMTIxMiwxNSBAQAogICAgICAgICAgICAgICAgICAgICBkcml2ZV90eXBlID0gc2VsZi5nZXQoJ1FCX0RSSVZFX1RZUEUnKQogICAgICAgICAgICAgICAgICAgICBpZiBkcml2ZV90eXBlLnN0YXJ0c3dpdGgoIi9kZXYvc2QiKToKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBzY3NpIGRyaXZlJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gJy1kcml2ZSBpZj1ub25lLGlkPWhkLGZpbGU9JXMsZm9ybWF0PSVzIC1kZXZpY2UgdmlydGlvLXNjc2ktcGNpLGlkPXNjc2kgLWRldmljZSBzY3NpLWhkLGRyaXZlPWhkJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gJy1kcml2ZSBpZj1ub25lLGlkPWhkLGZpbGU9JXMsZm9ybWF0PSVzIC1kZXZpY2UgdmlydGlvLXNjc2ktcGNpLGlkPXNjc2kgLWRldmljZSBzY3NpLWhkLGRyaXZlPWhkJXMnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0LCBxYl9yb290ZnNfZXh0cmFfb3B0KQogICAgICAgICAgICAgICAgICAgICBlbGlmIGRyaXZlX3R5cGUuc3RhcnRzd2l0aCgiL2Rldi9oZCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIGlkZSBkcml2ZScpCiAgICAgICAgICAgICAgICAgICAgICAgICB2bV9kcml2ZSA9ICItZHJpdmUgZmlsZT0lcyxmb3JtYXQ9JXMiICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICBlbGlmIGRyaXZlX3R5cGUuc3RhcnRzd2l0aCgiL2Rldi92ZGIiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdVc2luZyBibG9jayB2aXJ0aW8gZHJpdmUnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gJy1kcml2ZSBpZD1kaXNrMCxmaWxlPSVzLGlmPW5vbmUsZm9ybWF0PSVzIC1kZXZpY2UgdmlydGlvLWJsay1kZXZpY2UsZHJpdmU9ZGlzazAlcycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQscWJfcm9vdGZzX2V4dHJhX29wdCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgdmlydGlvIG1pZ2h0IGhhdmUgYmVlbiBzZWxlY3RlZCBleHBsaWNpdGx5IChqdXN0IHVzZSBpdCksIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgYXMgZmFsbGJhY2sgKHRoZW4gd2FybiBhYm91dCB0aGF0KS4KQEAgLTE0MDUsMTAgKzE0MzQsNyBAQAogCiAgICAgICAgIHNlbGYuY2xlYW5lZCA9IFRydWUKIAotICAgIGRlZiBsb2FkX2JpdGJha2VfZW52KHNlbGYsIG1hY2g9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYuYml0YmFrZV9lOgotICAgICAgICAgICAgcmV0dXJuCi0KKyAgICBkZWYgcnVuX2JpdGJha2VfZW52KHNlbGYsIG1hY2g9Tm9uZSk6CiAgICAgICAgIGJpdGJha2UgPSBzaHV0aWwud2hpY2goJ2JpdGJha2UnKQogICAgICAgICBpZiBub3QgYml0YmFrZToKICAgICAgICAgICAgIHJldHVybgpAQCAtMTQxNiwxNCArMTQ0MiwyNCBAQAogICAgICAgICBpZiBub3QgbWFjaDoKICAgICAgICAgICAgIG1hY2ggPSBzZWxmLmdldCgnTUFDSElORScpCiAKKyAgICAgICAgbXVsdGljb25maWcgPSBzZWxmLmdldCgnTVVMVElDT05GSUcnKQorICAgICAgICBpZiBtdWx0aWNvbmZpZzoKKyAgICAgICAgICAgIG11bHRpY29uZmlnID0gIm1jOiVzIiAlIG11bHRpY29uZmlnCisKICAgICAgICAgaWYgbWFjaDoKLSAgICAgICAgICAgIGNtZCA9ICdNQUNISU5FPSVzIGJpdGJha2UgLWUnICUgbWFjaAorICAgICAgICAgICAgY21kID0gJ01BQ0hJTkU9JXMgYml0YmFrZSAtZSAlcycgJSAobWFjaCwgbXVsdGljb25maWcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbWQgPSAnYml0YmFrZSAtZScKKyAgICAgICAgICAgIGNtZCA9ICdiaXRiYWtlIC1lICVzJyAlIG11bHRpY29uZmlnCiAKICAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgY21kKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlKS5kZWNvZGUoJ3V0Zi04JykKKworICAgIGRlZiBsb2FkX2JpdGJha2VfZW52KHNlbGYsIG1hY2g9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuYml0YmFrZV9lOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzZWxmLnJ1bl9iaXRiYWtlX2VudihtYWNoPW1hY2gpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9ICcnCiAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ291bGRuJ3QgcnVuICdiaXRiYWtlIC1lJyB0byBnYXRoZXIgZW52aXJvbm1lbnQgaW5mb3JtYXRpb246XG4lcyIgJSBlcnIub3V0cHV0LmRlY29kZSgndXRmLTgnKSkKQEAgLTE0MzgsNyArMTQ3NCwxMyBAQAogICAgICAgICBpZiByZXN1bHQgYW5kIG9zLnBhdGguZXhpc3RzKHJlc3VsdCk6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgY21kID0gKCdiaXRiYWtlJywgJ3FlbXUtaGVscGVyLW5hdGl2ZScsICctZScpCisgICAgICAgIGNtZCA9IFsnYml0YmFrZScsICctZSddCisgICAgICAgIG11bHRpY29uZmlnID0gc2VsZi5nZXQoJ01VTFRJQ09ORklHJykKKyAgICAgICAgaWYgbXVsdGljb25maWc6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCdtYzolczpxZW11LWhlbHBlci1uYXRpdmUnICUgbXVsdGljb25maWcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbWQuYXBwZW5kKCdxZW11LWhlbHBlci1uYXRpdmUnKQorCiAgICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIHN0cihjbWQpKQogICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgndXRmLTgnKQogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkayBiL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrCmluZGV4IDhhNGVlOTAuLjliYzBjMDcgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrCisrKyBiL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrCkBAIC02OSw3ICs2OSw3IEBACiBwc2V1ZG9fc3RhdGVfZGlyPSIkU0RLX1JPT1RGU19ESVIvLi4vJChiYXNlbmFtZSAiJFNES19ST09URlNfRElSIikucHNldWRvX3N0YXRlIgogcHNldWRvX3N0YXRlX2Rpcj0iJChyZWFkbGluayAtZiAkcHNldWRvX3N0YXRlX2RpcikiCiAKLWRlYnVnX2ltYWdlPSJgZWNobyAkUk9PVEZTX1RBUkJBTEwgfCBncmVwICdcLWRiZ1wudGFyXC4nYCIKK2RlYnVnX2ltYWdlPSJgZWNobyAkUk9PVEZTX1RBUkJBTEwgfCBncmVwICdcLWRiZ1wucm9vdGZzXC50YXInYCIKIAogaWYgWyAtZSAiJHBzZXVkb19zdGF0ZV9kaXIiIC1hIC16ICIkZGVidWdfaW1hZ2UiIF07IHRoZW4KIAllY2hvICJFcnJvcjogJHBzZXVkb19zdGF0ZV9kaXIgYWxyZWFkeSBleGlzdHMhIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Rpbnkva3NpemUucHkgYi9wb2t5L3NjcmlwdHMvdGlueS9rc2l6ZS5weQppbmRleCBiYzExOTE5Li44MzE2Yjg1IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvdGlueS9rc2l6ZS5weQorKysgYi9wb2t5L3NjcmlwdHMvdGlueS9rc2l6ZS5weQpAQCAtMjcsNyArMjcsNyBAQAogY2xhc3MgU2l6ZXM6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdsb2IpOgogICAgICAgICBzZWxmLnRpdGxlID0gZ2xvYgotICAgICAgICBwID0gUG9wZW4oInNpemUgLXQgIiArIHN0cihnbG9iKSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQorICAgICAgICBwID0gUG9wZW4oInNpemUgLXQgIiArIHN0cihnbG9iKSwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgb3V0cHV0ID0gcC5jb21tdW5pY2F0ZSgpWzBdLnNwbGl0bGluZXMoKQogICAgICAgICBpZiBsZW4ob3V0cHV0KSA+IDI6CiAgICAgICAgICAgICBzaXplcyA9IG91dHB1dFstMV0uc3BsaXQoKVswOjRdCkBAIC00OSwxNCArNDksMTQgQEAKICAgICAgICAgcGF0aCA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKIAogICAgICAgICBwID0gUG9wZW4oImxzICIgKyBzdHIocGF0aCkgKyAiLyoubyB8IGdyZXAgLXYgYnVpbHQtaW4ubyIsCi0gICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQogICAgICAgICBnbG9iID0gJyAnLmpvaW4ocC5jb21tdW5pY2F0ZSgpWzBdLnNwbGl0bGluZXMoKSkKICAgICAgICAgb3JlcG9ydCA9IFJlcG9ydChnbG9iLCBzdHIocGF0aCkgKyAiLyoubyIpCiAgICAgICAgIG9yZXBvcnQuc2l6ZXMudGl0bGUgPSBzdHIocGF0aCkgKyAiLyoubyIKICAgICAgICAgci5wYXJ0cy5hcHBlbmQob3JlcG9ydCkKIAogICAgICAgICBpZiBzdWJnbG9iOgotICAgICAgICAgICAgcCA9IFBvcGVuKCJscyAiICsgc3ViZ2xvYiwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQorICAgICAgICAgICAgcCA9IFBvcGVuKCJscyAiICsgc3ViZ2xvYiwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgICAgIGZvciBmIGluIHAuY29tbXVuaWNhdGUoKVswXS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguZGlybmFtZShmKQogICAgICAgICAgICAgICAgIHIucGFydHMuYXBwZW5kKFJlcG9ydC5jcmVhdGUoZiwgcGF0aCwgc3RyKHBhdGgpICsgIi8qL2J1aWx0LWluLm8iKSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy93aWMgYi9wb2t5L3NjcmlwdHMvd2ljCmluZGV4IGVhNjE0MTAuLjI0NzAwZjMgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy93aWMKKysrIGIvcG9reS9zY3JpcHRzL3dpYwpAQCAtMzkyLDkgKzM5Miw5IEBACiAKIGRlZiB3aWNfaW5pdF9wYXJzZXJfY3Aoc3VicGFyc2VyKToKICAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJzcmMiLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ic291cmNlIHNwZWMiKQotICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoImRlc3QiLCB0eXBlPWltZ3BhdGh0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPjo8dmZhdCBwYXJ0aXRpb24+WzxwYXRoPl0iKQorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPjo8dmZhdCBwYXJ0aXRpb24+WzxwYXRoPl0gb3IgPGZpbGU+IikKKyAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCJkZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImltYWdlIHNwZWM6IDxpbWFnZT46PHZmYXQgcGFydGl0aW9uPls8cGF0aD5dIG9yIDxmaWxlPiIpCiAgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLW4iLCAiLS1uYXRpdmUtc3lzcm9vdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdCBjb250YWluaW5nIHRoZSB0b29scyIpCiAKQEAgLTUyMiw2ICs1MjIsMTYgQEAKICAgICAgICAgICAgICAgICBobHB0WzBdKGhscHRbMV0sIGhscHRbMl0pCiAgICAgICAgICAgICByZXR1cm4gMAogCisgICAgIyB2YWxpZGF0ZSB3aWMgY3Agc3JjIGFuZCBkZXN0IHBhcmFtZXRlciB0byBpZGVudGlmeSB3aGljaCBvbmUgb2YgaXQgaXMKKyAgICAjIGltYWdlIGFuZCBjYXN0IGl0IGludG8gaW1ndHlwZQorICAgIGlmIGFyZ3MuY29tbWFuZCA9PSAiY3AiOgorICAgICAgICBpZiAiOiIgaW4gYXJncy5kZXN0OgorICAgICAgICAgICAgYXJncy5kZXN0ID0gaW1ndHlwZShhcmdzLmRlc3QpCisgICAgICAgIGVsaWYgIjoiIGluIGFyZ3Muc3JjOgorICAgICAgICAgICAgYXJncy5zcmMgPSBpbWd0eXBlKGFyZ3Muc3JjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoIm5vIGltYWdlIG9yIHBhcnRpdGlvbiBudW1iZXIgc3BlY2lmaWVkLiIpCisKICAgICByZXR1cm4gaGxwLmludm9rZV9zdWJjb21tYW5kKGFyZ3MsIHBhcnNlciwgaGxwLndpY19oZWxwX3VzYWdlLCBzdWJjb21tYW5kcykKIAogCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIgYi9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKaW5kZXggMDEwODMwZi4uY2E2Yzc5YiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCisrKyBiL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgpAQCAtODQsNyArODQsNyBAQAogICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5FUlJPUikKIAogICAgIGlmIG5vdCAnQlVJTERESVInIGluIG9zLmVudmlyb246Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiWW91IG11c3Qgc291cmNlIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgcnVuIHRoaXMgc2NyaXB0LiIpCisgICAgICAgIGxvZ2dlci5lcnJvcigiWW91IG11c3Qgc291cmNlIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgcnVubmluZyB0aGlzIHNjcmlwdC4iKQogICAgICAgICBsb2dnZXIuZXJyb3IoIiQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52IikKICAgICAgICAgcmV0dXJuIDEKICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KQEAgLTkyLDcgKzkyLDcgQEAKIAogICAgIGxheWVycyA9IGRldGVjdF9sYXllcnMoYXJncy5sYXllcnMsIGFyZ3Mubm9fYXV0bykKICAgICBpZiBub3QgbGF5ZXJzOgotICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWwgdG8gZGV0ZWN0IGxheWVycyIpCisgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGRldGVjdCBsYXllcnMiKQogICAgICAgICByZXR1cm4gMQogICAgIGlmIGFyZ3MuYWRkaXRpb25hbF9sYXllcnM6CiAgICAgICAgIGFkZGl0aW9uYWxfbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmFkZGl0aW9uYWxfbGF5ZXJzLCBhcmdzLm5vX2F1dG8pCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgogICAgICAgICBpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9CU1BfRElTVFJPOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogQ2FuJ3QgYmUgRElTVFJPIGFuZCBCU1AgdHlwZSBhdCB0aGUgc2FtZSB0aW1lLiJcCi0gICAgICAgICAgICAgICAgICAgICAiIFRoZSBjb25mL2Rpc3RybyBhbmQgY29uZi9tYWNoaW5lIGZvbGRlcnMgd2FzIGZvdW5kLiJcCisgICAgICAgICAgICAgICAgICAgICAiIEJvdGggY29uZi9kaXN0cm8gYW5kIGNvbmYvbWFjaGluZSBmb2xkZXJzIHdlcmUgZm91bmQuIlwKICAgICAgICAgICAgICAgICAgICAgICUgbGF5ZXJbJ25hbWUnXSkKICAgICAgICAgICAgIGxheWVycy5yZW1vdmUobGF5ZXIpCiAgICAgICAgIGVsaWYgbGF5ZXJbJ3R5cGUnXSA9PSBMYXllclR5cGUuRVJST1JfTk9fTEFZRVJfQ09ORjoK